OpenCores
URL https://opencores.org/ocsvn/or1200_soc/or1200_soc/trunk

Subversion Repositories or1200_soc

[/] [or1200_soc/] [trunk/] [sw/] [u-boot-2009.03_diff.txt] - Rev 18

Go to most recent revision | Compare with Previous | Blame | View Log

diff -Naur u-boot-2009.03_orig/CVS/Entries u-boot-2009.03/CVS/Entries
--- u-boot-2009.03_orig/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/CVS/Entries  2009-03-25 17:51:54.217001800 -0700
@@ -0,0 +1,55 @@
+D/api////
+D/api_examples////
+D/board////
+D/common////
+D/cpu////
+D/disk////
+D/doc////
+D/drivers////
+D/examples////
+D/fs////
+D/include////
+D/lib_arm////
+D/lib_avr32////
+D/lib_blackfin////
+D/lib_generic////
+D/lib_i386////
+D/lib_m68k////
+D/lib_microblaze////
+D/lib_mips////
+D/lib_nios////
+D/lib_nios2////
+D/lib_ppc////
+D/lib_sh////
+D/lib_sparc////
+D/libfdt////
+D/nand_spl////
+D/net////
+D/onenand_ipl////
+D/post////
+D/tools////
+/README/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/.gitignore/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/CHANGELOG/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/CHANGELOG-before-U-Boot-1.1.5/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/COPYING/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/CREDITS/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MAINTAINERS/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MAKEALL/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/arm_config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/avr32_config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/blackfin_config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/i386_config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/m68k_config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/microblaze_config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mips_config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mkconfig/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nios2_config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nios_config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ppc_config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/rules.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sh_config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sparc_config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D/lib_or1200////
+/Makefile/1.2/Wed Mar 25 22:43:49 2009//
diff -Naur u-boot-2009.03_orig/CVS/Entries.Extra u-boot-2009.03/CVS/Entries.Extra
--- u-boot-2009.03_orig/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/CVS/Entries.Extra    2009-03-25 17:51:54.232626700 -0700
@@ -0,0 +1,55 @@
+D/api////
+D/api_examples////
+D/board////
+D/common////
+D/cpu////
+D/disk////
+D/doc////
+D/drivers////
+D/examples////
+D/fs////
+D/include////
+D/lib_arm////
+D/lib_avr32////
+D/lib_blackfin////
+D/lib_generic////
+D/lib_i386////
+D/lib_m68k////
+D/lib_microblaze////
+D/lib_mips////
+D/lib_nios////
+D/lib_nios2////
+D/lib_ppc////
+D/lib_sh////
+D/lib_sparc////
+D/libfdt////
+D/nand_spl////
+D/net////
+D/onenand_ipl////
+D/post////
+D/tools////
+/README///1238019686/
+/.gitignore///1238019686/
+/CHANGELOG///1238019686/
+/CHANGELOG-before-U-Boot-1.1.5///1238019686/
+/COPYING///1238019686/
+/CREDITS///1238019686/
+/MAINTAINERS///1238019686/
+/MAKEALL///1238019686/
+/arm_config.mk///1238019686/
+/avr32_config.mk///1238019686/
+/blackfin_config.mk///1238019686/
+/config.mk///1238019686/
+/i386_config.mk///1238019686/
+/m68k_config.mk///1238019686/
+/microblaze_config.mk///1238019686/
+/mips_config.mk///1238019686/
+/mkconfig///1238019686/
+/nios2_config.mk///1238019686/
+/nios_config.mk///1238019686/
+/ppc_config.mk///1238019686/
+/rules.mk///1238019686/
+/sh_config.mk///1238019686/
+/sparc_config.mk///1238019686/
+D/lib_or1200////
+/Makefile///1238028695/
diff -Naur u-boot-2009.03_orig/CVS/Entries.Extra.Old u-boot-2009.03/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/CVS/Entries.Extra.Old        2009-03-25 17:48:29.000000000 -0700
@@ -0,0 +1,55 @@
+/Makefile///1238019686/
+D/api////
+D/api_examples////
+D/board////
+D/common////
+D/cpu////
+D/disk////
+D/doc////
+D/drivers////
+D/examples////
+D/fs////
+D/include////
+D/lib_arm////
+D/lib_avr32////
+D/lib_blackfin////
+D/lib_generic////
+D/lib_i386////
+D/lib_m68k////
+D/lib_microblaze////
+D/lib_mips////
+D/lib_nios////
+D/lib_nios2////
+D/lib_ppc////
+D/lib_sh////
+D/lib_sparc////
+D/libfdt////
+D/nand_spl////
+D/net////
+D/onenand_ipl////
+D/post////
+D/tools////
+/README///1238019686/
+/.gitignore///1238019686/
+/CHANGELOG///1238019686/
+/CHANGELOG-before-U-Boot-1.1.5///1238019686/
+/COPYING///1238019686/
+/CREDITS///1238019686/
+/MAINTAINERS///1238019686/
+/MAKEALL///1238019686/
+/arm_config.mk///1238019686/
+/avr32_config.mk///1238019686/
+/blackfin_config.mk///1238019686/
+/config.mk///1238019686/
+/i386_config.mk///1238019686/
+/m68k_config.mk///1238019686/
+/microblaze_config.mk///1238019686/
+/mips_config.mk///1238019686/
+/mkconfig///1238019686/
+/nios2_config.mk///1238019686/
+/nios_config.mk///1238019686/
+/ppc_config.mk///1238019686/
+/rules.mk///1238019686/
+/sh_config.mk///1238019686/
+/sparc_config.mk///1238019686/
+D/lib_or1200////
diff -Naur u-boot-2009.03_orig/CVS/Entries.Old u-boot-2009.03/CVS/Entries.Old
--- u-boot-2009.03_orig/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/CVS/Entries.Old      2009-03-25 17:48:29.000000000 -0700
@@ -0,0 +1,55 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:26 2009//
+D/api////
+D/api_examples////
+D/board////
+D/common////
+D/cpu////
+D/disk////
+D/doc////
+D/drivers////
+D/examples////
+D/fs////
+D/include////
+D/lib_arm////
+D/lib_avr32////
+D/lib_blackfin////
+D/lib_generic////
+D/lib_i386////
+D/lib_m68k////
+D/lib_microblaze////
+D/lib_mips////
+D/lib_nios////
+D/lib_nios2////
+D/lib_ppc////
+D/lib_sh////
+D/lib_sparc////
+D/libfdt////
+D/nand_spl////
+D/net////
+D/onenand_ipl////
+D/post////
+D/tools////
+/README/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/.gitignore/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/CHANGELOG/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/CHANGELOG-before-U-Boot-1.1.5/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/COPYING/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/CREDITS/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MAINTAINERS/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MAKEALL/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/arm_config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/avr32_config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/blackfin_config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/i386_config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/m68k_config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/microblaze_config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mips_config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mkconfig/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nios2_config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nios_config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ppc_config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/rules.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sh_config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sparc_config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D/lib_or1200////
diff -Naur u-boot-2009.03_orig/CVS/Repository u-boot-2009.03/CVS/Repository
--- u-boot-2009.03_orig/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/CVS/Repository       2009-03-25 15:23:57.557075800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03
diff -Naur u-boot-2009.03_orig/CVS/Root u-boot-2009.03/CVS/Root
--- u-boot-2009.03_orig/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/CVS/Root     2009-03-25 15:23:57.557075800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/Makefile u-boot-2009.03/Makefile
--- u-boot-2009.03_orig/Makefile        2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/Makefile     2009-03-25 15:43:49.455339700 -0700
@@ -182,7 +182,10 @@
 endif
 ifeq ($(ARCH),sparc)
 CROSS_COMPILE = sparc-elf-
-endif  # sparc
+endif
+ifeq ($(ARCH),or1200)
+CROSS_COMPILE = or32-uclinux-
+endif  # or1200
 endif  # HOSTARCH,ARCH
 endif  # CROSS_COMPILE
 
@@ -279,7 +282,7 @@
 # The "tools" are needed early, so put this first
 # Don't include stuff already done in $(LIBS)
 SUBDIRS        = tools \
-         examples \
+#        examples \
          api_examples
 
 .PHONY : $(SUBDIRS)
@@ -3456,6 +3459,21 @@
 # Gaisler LEON2 GRSIM simulator
 grsim_leon2_config : unconfig
        @$(MKCONFIG) $(@:_config=) sparc leon2 grsim_leon2 gaisler
+       
+       
+#========================================================================
+# qaz
+#========================================================================
+de1_or1k_config:       unconfig
+       @mkdir -p $(obj)include
+       @echo "#define CONFIG_DE1_OR1K" > $(obj)include/config.h
+       @$(MKCONFIG) -a $(@:_config=) or1200 or1200 de1_or1k qaz
+       
+Dev_Kit_060804_config: unconfig
+       @mkdir -p $(obj)include
+       @echo "#define CONFIG_DEV_KIT_060804" > $(obj)include/config.h
+       @$(MKCONFIG) -a $(@:_config=) or1200 or1200 Dev_Kit_060804 qaz
+       
 
 #########################################################################
 #########################################################################
diff -Naur u-boot-2009.03_orig/api/CVS/Entries u-boot-2009.03/api/CVS/Entries
--- u-boot-2009.03_orig/api/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/api/CVS/Entries      2009-03-25 15:57:09.012722500 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/api.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/api_net.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/api_platform-arm.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/api_platform-ppc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/api_private.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/api_storage.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/api/CVS/Entries.Extra u-boot-2009.03/api/CVS/Entries.Extra
--- u-boot-2009.03_orig/api/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/api/CVS/Entries.Extra        2009-03-25 15:57:09.012722500 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019686/
+/README///1238019686/
+/api.c///1238019686/
+/api_net.c///1238019686/
+/api_platform-arm.c///1238019686/
+/api_platform-ppc.c///1238019686/
+/api_private.h///1238019686/
+/api_storage.c///1238019686/
diff -Naur u-boot-2009.03_orig/api/CVS/Entries.Extra.Old u-boot-2009.03/api/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/api/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/api/CVS/Entries.Extra.Old    2009-03-25 15:23:58.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019686/
+/README///1238019686/
+/api.c///1238019686/
+/api_net.c///1238019686/
+/api_platform-arm.c///1238019686/
+/api_platform-ppc.c///1238019686/
+/api_private.h///1238019686/
+/api_storage.c///1238019686/
diff -Naur u-boot-2009.03_orig/api/CVS/Entries.Old u-boot-2009.03/api/CVS/Entries.Old
--- u-boot-2009.03_orig/api/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/api/CVS/Entries.Old  2009-03-25 15:23:58.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:26 2009//
+/README/1.1.1.1/Wed Mar 25 22:21:26 2009//
+/api.c/1.1.1.1/Wed Mar 25 22:21:26 2009//
+/api_net.c/1.1.1.1/Wed Mar 25 22:21:26 2009//
+/api_platform-arm.c/1.1.1.1/Wed Mar 25 22:21:26 2009//
+/api_platform-ppc.c/1.1.1.1/Wed Mar 25 22:21:26 2009//
+/api_private.h/1.1.1.1/Wed Mar 25 22:21:26 2009//
+/api_storage.c/1.1.1.1/Wed Mar 25 22:21:26 2009//
+D
diff -Naur u-boot-2009.03_orig/api/CVS/Repository u-boot-2009.03/api/CVS/Repository
--- u-boot-2009.03_orig/api/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/api/CVS/Repository   2009-03-25 15:23:58.025819800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/api
diff -Naur u-boot-2009.03_orig/api/CVS/Root u-boot-2009.03/api/CVS/Root
--- u-boot-2009.03_orig/api/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/api/CVS/Root 2009-03-25 15:23:58.025819800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/api_examples/CVS/Entries u-boot-2009.03/api_examples/CVS/Entries
--- u-boot-2009.03_orig/api_examples/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/api_examples/CVS/Entries     2009-03-25 15:57:09.106471900 -0700
@@ -0,0 +1,8 @@
+/.gitignore/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/crt0.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/demo.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/glue.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/glue.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/libgenwrap.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/api_examples/CVS/Entries.Extra u-boot-2009.03/api_examples/CVS/Entries.Extra
--- u-boot-2009.03_orig/api_examples/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/api_examples/CVS/Entries.Extra       2009-03-25 15:57:09.106471900 -0700
@@ -0,0 +1,7 @@
+/.gitignore///1238019686/
+/Makefile///1238019686/
+/crt0.S///1238019686/
+/demo.c///1238019686/
+/glue.c///1238019686/
+/glue.h///1238019686/
+/libgenwrap.c///1238019686/
diff -Naur u-boot-2009.03_orig/api_examples/CVS/Entries.Extra.Old u-boot-2009.03/api_examples/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/api_examples/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/api_examples/CVS/Entries.Extra.Old   2009-03-25 15:23:58.000000000 -0700
@@ -0,0 +1,7 @@
+/.gitignore///1238019686/
+/Makefile///1238019686/
+/crt0.S///1238019686/
+/demo.c///1238019686/
+/glue.c///1238019686/
+/glue.h///1238019686/
+/libgenwrap.c///1238019686/
diff -Naur u-boot-2009.03_orig/api_examples/CVS/Entries.Old u-boot-2009.03/api_examples/CVS/Entries.Old
--- u-boot-2009.03_orig/api_examples/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/api_examples/CVS/Entries.Old 2009-03-25 15:23:58.000000000 -0700
@@ -0,0 +1,8 @@
+/.gitignore/1.1.1.1/Wed Mar 25 22:21:26 2009//
+/Makefile/1.1.1.1/Wed Mar 25 22:21:26 2009//
+/crt0.S/1.1.1.1/Wed Mar 25 22:21:26 2009//
+/demo.c/1.1.1.1/Wed Mar 25 22:21:26 2009//
+/glue.c/1.1.1.1/Wed Mar 25 22:21:26 2009//
+/glue.h/1.1.1.1/Wed Mar 25 22:21:26 2009//
+/libgenwrap.c/1.1.1.1/Wed Mar 25 22:21:26 2009//
+D
diff -Naur u-boot-2009.03_orig/api_examples/CVS/Repository u-boot-2009.03/api_examples/CVS/Repository
--- u-boot-2009.03_orig/api_examples/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/api_examples/CVS/Repository  2009-03-25 15:23:58.182067800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/api_examples
diff -Naur u-boot-2009.03_orig/api_examples/CVS/Root u-boot-2009.03/api_examples/CVS/Root
--- u-boot-2009.03_orig/api_examples/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/api_examples/CVS/Root        2009-03-25 15:23:58.182067800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/AtmarkTechno/CVS/Entries u-boot-2009.03/board/AtmarkTechno/CVS/Entries
--- u-boot-2009.03_orig/board/AtmarkTechno/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/AtmarkTechno/CVS/Entries       2009-03-25 15:23:58.525813400 -0700
@@ -0,0 +1 @@
+D/suzaku////
diff -Naur u-boot-2009.03_orig/board/AtmarkTechno/CVS/Entries.Extra u-boot-2009.03/board/AtmarkTechno/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/AtmarkTechno/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/AtmarkTechno/CVS/Entries.Extra 2009-03-25 15:23:58.525813400 -0700
@@ -0,0 +1 @@
+D/suzaku////
diff -Naur u-boot-2009.03_orig/board/AtmarkTechno/CVS/Repository u-boot-2009.03/board/AtmarkTechno/CVS/Repository
--- u-boot-2009.03_orig/board/AtmarkTechno/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/AtmarkTechno/CVS/Repository    2009-03-25 15:23:58.353940600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/AtmarkTechno
diff -Naur u-boot-2009.03_orig/board/AtmarkTechno/CVS/Root u-boot-2009.03/board/AtmarkTechno/CVS/Root
--- u-boot-2009.03_orig/board/AtmarkTechno/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/AtmarkTechno/CVS/Root  2009-03-25 15:23:58.353940600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/AtmarkTechno/suzaku/CVS/Entries u-boot-2009.03/board/AtmarkTechno/suzaku/CVS/Entries
--- u-boot-2009.03_orig/board/AtmarkTechno/suzaku/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/AtmarkTechno/suzaku/CVS/Entries        2009-03-25 15:57:09.215846200 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/suzaku.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/AtmarkTechno/suzaku/CVS/Entries.Extra u-boot-2009.03/board/AtmarkTechno/suzaku/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/AtmarkTechno/suzaku/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/AtmarkTechno/suzaku/CVS/Entries.Extra  2009-03-25 15:57:09.231471100 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019688/
+/config.mk///1238019688/
+/flash.c///1238019688/
+/suzaku.c///1238019688/
+/u-boot.lds///1238019688/
diff -Naur u-boot-2009.03_orig/board/AtmarkTechno/suzaku/CVS/Entries.Extra.Old u-boot-2009.03/board/AtmarkTechno/suzaku/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/AtmarkTechno/suzaku/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/AtmarkTechno/suzaku/CVS/Entries.Extra.Old      2009-03-25 15:23:58.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019688/
+/config.mk///1238019688/
+/flash.c///1238019688/
+/suzaku.c///1238019688/
+/u-boot.lds///1238019688/
diff -Naur u-boot-2009.03_orig/board/AtmarkTechno/suzaku/CVS/Entries.Old u-boot-2009.03/board/AtmarkTechno/suzaku/CVS/Entries.Old
--- u-boot-2009.03_orig/board/AtmarkTechno/suzaku/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/AtmarkTechno/suzaku/CVS/Entries.Old    2009-03-25 15:23:58.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/suzaku.c/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:28 2009//
+D
diff -Naur u-boot-2009.03_orig/board/AtmarkTechno/suzaku/CVS/Repository u-boot-2009.03/board/AtmarkTechno/suzaku/CVS/Repository
--- u-boot-2009.03_orig/board/AtmarkTechno/suzaku/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/AtmarkTechno/suzaku/CVS/Repository     2009-03-25 15:23:58.416439800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/AtmarkTechno/suzaku
diff -Naur u-boot-2009.03_orig/board/AtmarkTechno/suzaku/CVS/Root u-boot-2009.03/board/AtmarkTechno/suzaku/CVS/Root
--- u-boot-2009.03_orig/board/AtmarkTechno/suzaku/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/AtmarkTechno/suzaku/CVS/Root   2009-03-25 15:23:58.416439800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/BuS/CVS/Entries u-boot-2009.03/board/BuS/CVS/Entries
--- u-boot-2009.03_orig/board/BuS/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/BuS/CVS/Entries        2009-03-25 15:23:58.728935800 -0700
@@ -0,0 +1 @@
+D/EB+MCF-EV123////
diff -Naur u-boot-2009.03_orig/board/BuS/CVS/Entries.Extra u-boot-2009.03/board/BuS/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/BuS/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/BuS/CVS/Entries.Extra  2009-03-25 15:23:58.728935800 -0700
@@ -0,0 +1 @@
+D/EB+MCF-EV123////
diff -Naur u-boot-2009.03_orig/board/BuS/CVS/Repository u-boot-2009.03/board/BuS/CVS/Repository
--- u-boot-2009.03_orig/board/BuS/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/BuS/CVS/Repository     2009-03-25 15:23:58.557063000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/BuS
diff -Naur u-boot-2009.03_orig/board/BuS/CVS/Root u-boot-2009.03/board/BuS/CVS/Root
--- u-boot-2009.03_orig/board/BuS/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/BuS/CVS/Root   2009-03-25 15:23:58.557063000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/BuS/EB+MCF-EV123/CVS/Entries u-boot-2009.03/board/BuS/EB+MCF-EV123/CVS/Entries
--- u-boot-2009.03_orig/board/BuS/EB+MCF-EV123/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/BuS/EB+MCF-EV123/CVS/Entries   2009-03-25 15:57:09.309595600 -0700
@@ -0,0 +1,11 @@
+/EB+MCF-EV123.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/VCxK.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/VCxK.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cfm_flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cfm_flash.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/textbase.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/BuS/EB+MCF-EV123/CVS/Entries.Extra u-boot-2009.03/board/BuS/EB+MCF-EV123/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/BuS/EB+MCF-EV123/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/BuS/EB+MCF-EV123/CVS/Entries.Extra     2009-03-25 15:57:09.325220500 -0700
@@ -0,0 +1,10 @@
+/EB+MCF-EV123.c///1238019689/
+/Makefile///1238019689/
+/VCxK.c///1238019689/
+/VCxK.h///1238019689/
+/cfm_flash.c///1238019689/
+/cfm_flash.h///1238019689/
+/config.mk///1238019689/
+/flash.c///1238019689/
+/textbase.mk///1238019689/
+/u-boot.lds///1238019689/
diff -Naur u-boot-2009.03_orig/board/BuS/EB+MCF-EV123/CVS/Entries.Extra.Old u-boot-2009.03/board/BuS/EB+MCF-EV123/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/BuS/EB+MCF-EV123/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/BuS/EB+MCF-EV123/CVS/Entries.Extra.Old 2009-03-25 15:23:58.000000000 -0700
@@ -0,0 +1,10 @@
+/EB+MCF-EV123.c///1238019689/
+/Makefile///1238019689/
+/VCxK.c///1238019689/
+/VCxK.h///1238019689/
+/cfm_flash.c///1238019689/
+/cfm_flash.h///1238019689/
+/config.mk///1238019689/
+/flash.c///1238019689/
+/textbase.mk///1238019689/
+/u-boot.lds///1238019689/
diff -Naur u-boot-2009.03_orig/board/BuS/EB+MCF-EV123/CVS/Entries.Old u-boot-2009.03/board/BuS/EB+MCF-EV123/CVS/Entries.Old
--- u-boot-2009.03_orig/board/BuS/EB+MCF-EV123/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/BuS/EB+MCF-EV123/CVS/Entries.Old       2009-03-25 15:23:58.000000000 -0700
@@ -0,0 +1,11 @@
+/EB+MCF-EV123.c/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/Makefile/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/VCxK.c/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/VCxK.h/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/cfm_flash.c/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/cfm_flash.h/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/textbase.mk/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:29 2009//
+D
diff -Naur u-boot-2009.03_orig/board/BuS/EB+MCF-EV123/CVS/Repository u-boot-2009.03/board/BuS/EB+MCF-EV123/CVS/Repository
--- u-boot-2009.03_orig/board/BuS/EB+MCF-EV123/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/BuS/EB+MCF-EV123/CVS/Repository        2009-03-25 15:23:58.588312600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/BuS/EB+MCF-EV123
diff -Naur u-boot-2009.03_orig/board/BuS/EB+MCF-EV123/CVS/Root u-boot-2009.03/board/BuS/EB+MCF-EV123/CVS/Root
--- u-boot-2009.03_orig/board/BuS/EB+MCF-EV123/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/BuS/EB+MCF-EV123/CVS/Root      2009-03-25 15:23:58.588312600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/CVS/Entries u-boot-2009.03/board/CVS/Entries
--- u-boot-2009.03_orig/board/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/CVS/Entries    2009-03-25 17:49:08.139939700 -0700
@@ -0,0 +1,252 @@
+D/AtmarkTechno////
+D/BuS////
+D/LEOX////
+D/MAI////
+D/Marvell////
+D/RPXClassic////
+D/RPXlite////
+D/RPXlite_dw////
+D/RRvision////
+D/a3000////
+D/actux1////
+D/actux2////
+D/actux3////
+D/actux4////
+D/adder////
+D/ads5121////
+D/afeb9260////
+D/alaska////
+D/altera////
+D/amcc////
+D/amirix////
+D/apollon////
+D/armadillo////
+D/armltd////
+D/assabet////
+D/atc////
+D/atmel////
+D/atum8548////
+D/avnet////
+D/barco////
+D/bc3450////
+D/bf533-ezkit////
+D/bf533-stamp////
+D/bf537-stamp////
+D/bf561-ezkit////
+D/bmw////
+D/c2mon////
+D/canmb////
+D/cerf250////
+D/cm4008////
+D/cm41xx////
+D/cm5200////
+D/cmc_pu2////
+D/cmi////
+D/cobra5272////
+D/cogent////
+D/cpc45////
+D/cpu86////
+D/cpu87////
+D/cradle////
+D/cray////
+D/csb226////
+D/csb272////
+D/csb472////
+D/csb637////
+D/cu824////
+D/dave////
+D/davedenx////
+D/davinci////
+D/dbau1x00////
+D/delta////
+D/dnp1110////
+D/eNET////
+D/eXalion////
+D/earthlcd////
+D/eltec////
+D/emk////
+D/ep7312////
+D/ep8248////
+D/ep8260////
+D/ep82xxm////
+D/ep88x////
+D/eric////
+D/esd////
+D/esteem192e////
+D/etin////
+D/etx094////
+D/evb4510////
+D/evb64260////
+D/exbitgen////
+D/fads////
+D/flagadm////
+D/freescale////
+D/funkwerk////
+D/g2000////
+D/gaisler////
+D/gcplus////
+D/gdsys////
+D/gen860t////
+D/genietv////
+D/gth////
+D/gth2////
+D/gw8260////
+D/hermes////
+D/hidden_dragon////
+D/hmi1001////
+D/hymod////
+D/icecube////
+D/icu862////
+D/idmr////
+D/ids8247////
+D/impa7////
+D/imx31_litekit////
+D/imx31_phycore////
+D/incaip////
+D/inka4x0////
+D/innokom////
+D/ip860////
+D/iphase4539////
+D/ispan////
+D/ivm////
+D/ixdp425////
+D/jse////
+D/jupiter////
+D/kb9202////
+D/keymile////
+D/korat////
+D/kup////
+D/lantec////
+D/lart////
+D/linkstation////
+D/logodl////
+D/lpc2292sodimm////
+D/lpd7a40x////
+D/lubbock////
+D/lwmon////
+D/lwmon5////
+D/m501sk////
+D/matrix_vision////
+D/mbx8xx////
+D/mcc200////
+D/micronas////
+D/mimc////
+D/miromico////
+D/ml2////
+D/modnet50////
+D/motionpro////
+D/mousse////
+D/mp2usb////
+D/mpc8540eval////
+D/mpl////
+D/mpr2////
+D/ms7720se////
+D/ms7722se////
+D/ms7750se////
+D/muas3001////
+D/mucmc52////
+D/munices////
+D/musenki////
+D/mvblue////
+D/mx1ads////
+D/mx1fs2////
+D/nc650////
+D/netphone////
+D/netstal////
+D/netstar////
+D/netta////
+D/netta2////
+D/netvia////
+D/ns9750dev////
+D/nx823////
+D/o2dnt////
+D/omap1510inn////
+D/omap1610inn////
+D/omap2420h4////
+D/omap3////
+D/omap5912osk////
+D/omap730p2////
+D/oxc////
+D/pb1x00////
+D/pcippc2////
+D/pcs440ep////
+D/pleb2////
+D/pm520////
+D/pm826////
+D/pm828////
+D/pm854////
+D/pm856////
+D/pn62////
+D/ppmc7xx////
+D/ppmc8260////
+D/prodrive////
+D/psyent////
+D/purple////
+D/pxa255_idp////
+D/qemu-mips////
+D/quad100hd////
+D/quantum////
+D/r360mpi////
+D/rattler////
+D/rbc823////
+D/renesas////
+D/rmu////
+D/rpxsuper////
+D/rsdproto////
+D/sacsng////
+D/samsung////
+D/sandburst////
+D/sandpoint////
+D/sbc2410x////
+D/sbc405////
+D/sbc8240////
+D/sbc8260////
+D/sbc8349////
+D/sbc8548////
+D/sbc8560////
+D/sbc8641d////
+D/sc3////
+D/sc520_cdp////
+D/sc520_spunk////
+D/scb9328////
+D/shannon////
+D/sheldon////
+D/siemens////
+D/sixnet////
+D/sl8245////
+D/snmc////
+D/socrates////
+D/sorcery////
+D/spc1920////
+D/spd8xx////
+D/ssv////
+D/st////
+D/stxgp3////
+D/stxssa////
+D/stxxtc////
+D/svm_sc8xx////
+D/sx1////
+D/tb0229////
+D/total5200////
+D/tqc////
+D/trab////
+D/trizepsiv////
+D/uc100////
+D/uc101////
+D/utx8245////
+D/v37////
+D/v38b////
+D/voiceblue////
+D/w7o////
+D/wepep250////
+D/westel////
+D/xaeniax////
+D/xes////
+D/xilinx////
+D/xm250////
+D/xpedite1k////
+D/xsengine////
+D/zeus////
+D/zpc1900////
+D/zylonite////
+D/qaz////
diff -Naur u-boot-2009.03_orig/board/CVS/Entries.Extra u-boot-2009.03/board/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/CVS/Entries.Extra      2009-03-25 17:49:08.139939700 -0700
@@ -0,0 +1,252 @@
+D/AtmarkTechno////
+D/BuS////
+D/LEOX////
+D/MAI////
+D/Marvell////
+D/RPXClassic////
+D/RPXlite////
+D/RPXlite_dw////
+D/RRvision////
+D/a3000////
+D/actux1////
+D/actux2////
+D/actux3////
+D/actux4////
+D/adder////
+D/ads5121////
+D/afeb9260////
+D/alaska////
+D/altera////
+D/amcc////
+D/amirix////
+D/apollon////
+D/armadillo////
+D/armltd////
+D/assabet////
+D/atc////
+D/atmel////
+D/atum8548////
+D/avnet////
+D/barco////
+D/bc3450////
+D/bf533-ezkit////
+D/bf533-stamp////
+D/bf537-stamp////
+D/bf561-ezkit////
+D/bmw////
+D/c2mon////
+D/canmb////
+D/cerf250////
+D/cm4008////
+D/cm41xx////
+D/cm5200////
+D/cmc_pu2////
+D/cmi////
+D/cobra5272////
+D/cogent////
+D/cpc45////
+D/cpu86////
+D/cpu87////
+D/cradle////
+D/cray////
+D/csb226////
+D/csb272////
+D/csb472////
+D/csb637////
+D/cu824////
+D/dave////
+D/davedenx////
+D/davinci////
+D/dbau1x00////
+D/delta////
+D/dnp1110////
+D/eNET////
+D/eXalion////
+D/earthlcd////
+D/eltec////
+D/emk////
+D/ep7312////
+D/ep8248////
+D/ep8260////
+D/ep82xxm////
+D/ep88x////
+D/eric////
+D/esd////
+D/esteem192e////
+D/etin////
+D/etx094////
+D/evb4510////
+D/evb64260////
+D/exbitgen////
+D/fads////
+D/flagadm////
+D/freescale////
+D/funkwerk////
+D/g2000////
+D/gaisler////
+D/gcplus////
+D/gdsys////
+D/gen860t////
+D/genietv////
+D/gth////
+D/gth2////
+D/gw8260////
+D/hermes////
+D/hidden_dragon////
+D/hmi1001////
+D/hymod////
+D/icecube////
+D/icu862////
+D/idmr////
+D/ids8247////
+D/impa7////
+D/imx31_litekit////
+D/imx31_phycore////
+D/incaip////
+D/inka4x0////
+D/innokom////
+D/ip860////
+D/iphase4539////
+D/ispan////
+D/ivm////
+D/ixdp425////
+D/jse////
+D/jupiter////
+D/kb9202////
+D/keymile////
+D/korat////
+D/kup////
+D/lantec////
+D/lart////
+D/linkstation////
+D/logodl////
+D/lpc2292sodimm////
+D/lpd7a40x////
+D/lubbock////
+D/lwmon////
+D/lwmon5////
+D/m501sk////
+D/matrix_vision////
+D/mbx8xx////
+D/mcc200////
+D/micronas////
+D/mimc////
+D/miromico////
+D/ml2////
+D/modnet50////
+D/motionpro////
+D/mousse////
+D/mp2usb////
+D/mpc8540eval////
+D/mpl////
+D/mpr2////
+D/ms7720se////
+D/ms7722se////
+D/ms7750se////
+D/muas3001////
+D/mucmc52////
+D/munices////
+D/musenki////
+D/mvblue////
+D/mx1ads////
+D/mx1fs2////
+D/nc650////
+D/netphone////
+D/netstal////
+D/netstar////
+D/netta////
+D/netta2////
+D/netvia////
+D/ns9750dev////
+D/nx823////
+D/o2dnt////
+D/omap1510inn////
+D/omap1610inn////
+D/omap2420h4////
+D/omap3////
+D/omap5912osk////
+D/omap730p2////
+D/oxc////
+D/pb1x00////
+D/pcippc2////
+D/pcs440ep////
+D/pleb2////
+D/pm520////
+D/pm826////
+D/pm828////
+D/pm854////
+D/pm856////
+D/pn62////
+D/ppmc7xx////
+D/ppmc8260////
+D/prodrive////
+D/psyent////
+D/purple////
+D/pxa255_idp////
+D/qemu-mips////
+D/quad100hd////
+D/quantum////
+D/r360mpi////
+D/rattler////
+D/rbc823////
+D/renesas////
+D/rmu////
+D/rpxsuper////
+D/rsdproto////
+D/sacsng////
+D/samsung////
+D/sandburst////
+D/sandpoint////
+D/sbc2410x////
+D/sbc405////
+D/sbc8240////
+D/sbc8260////
+D/sbc8349////
+D/sbc8548////
+D/sbc8560////
+D/sbc8641d////
+D/sc3////
+D/sc520_cdp////
+D/sc520_spunk////
+D/scb9328////
+D/shannon////
+D/sheldon////
+D/siemens////
+D/sixnet////
+D/sl8245////
+D/snmc////
+D/socrates////
+D/sorcery////
+D/spc1920////
+D/spd8xx////
+D/ssv////
+D/st////
+D/stxgp3////
+D/stxssa////
+D/stxxtc////
+D/svm_sc8xx////
+D/sx1////
+D/tb0229////
+D/total5200////
+D/tqc////
+D/trab////
+D/trizepsiv////
+D/uc100////
+D/uc101////
+D/utx8245////
+D/v37////
+D/v38b////
+D/voiceblue////
+D/w7o////
+D/wepep250////
+D/westel////
+D/xaeniax////
+D/xes////
+D/xilinx////
+D/xm250////
+D/xpedite1k////
+D/xsengine////
+D/zeus////
+D/zpc1900////
+D/zylonite////
+D/qaz////
diff -Naur u-boot-2009.03_orig/board/CVS/Entries.Extra.Old u-boot-2009.03/board/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/CVS/Entries.Extra.Old  2009-03-25 15:25:09.000000000 -0700
@@ -0,0 +1,251 @@
+D/AtmarkTechno////
+D/BuS////
+D/LEOX////
+D/MAI////
+D/Marvell////
+D/RPXClassic////
+D/RPXlite////
+D/RPXlite_dw////
+D/RRvision////
+D/a3000////
+D/actux1////
+D/actux2////
+D/actux3////
+D/actux4////
+D/adder////
+D/ads5121////
+D/afeb9260////
+D/alaska////
+D/altera////
+D/amcc////
+D/amirix////
+D/apollon////
+D/armadillo////
+D/armltd////
+D/assabet////
+D/atc////
+D/atmel////
+D/atum8548////
+D/avnet////
+D/barco////
+D/bc3450////
+D/bf533-ezkit////
+D/bf533-stamp////
+D/bf537-stamp////
+D/bf561-ezkit////
+D/bmw////
+D/c2mon////
+D/canmb////
+D/cerf250////
+D/cm4008////
+D/cm41xx////
+D/cm5200////
+D/cmc_pu2////
+D/cmi////
+D/cobra5272////
+D/cogent////
+D/cpc45////
+D/cpu86////
+D/cpu87////
+D/cradle////
+D/cray////
+D/csb226////
+D/csb272////
+D/csb472////
+D/csb637////
+D/cu824////
+D/dave////
+D/davedenx////
+D/davinci////
+D/dbau1x00////
+D/delta////
+D/dnp1110////
+D/eNET////
+D/eXalion////
+D/earthlcd////
+D/eltec////
+D/emk////
+D/ep7312////
+D/ep8248////
+D/ep8260////
+D/ep82xxm////
+D/ep88x////
+D/eric////
+D/esd////
+D/esteem192e////
+D/etin////
+D/etx094////
+D/evb4510////
+D/evb64260////
+D/exbitgen////
+D/fads////
+D/flagadm////
+D/freescale////
+D/funkwerk////
+D/g2000////
+D/gaisler////
+D/gcplus////
+D/gdsys////
+D/gen860t////
+D/genietv////
+D/gth////
+D/gth2////
+D/gw8260////
+D/hermes////
+D/hidden_dragon////
+D/hmi1001////
+D/hymod////
+D/icecube////
+D/icu862////
+D/idmr////
+D/ids8247////
+D/impa7////
+D/imx31_litekit////
+D/imx31_phycore////
+D/incaip////
+D/inka4x0////
+D/innokom////
+D/ip860////
+D/iphase4539////
+D/ispan////
+D/ivm////
+D/ixdp425////
+D/jse////
+D/jupiter////
+D/kb9202////
+D/keymile////
+D/korat////
+D/kup////
+D/lantec////
+D/lart////
+D/linkstation////
+D/logodl////
+D/lpc2292sodimm////
+D/lpd7a40x////
+D/lubbock////
+D/lwmon////
+D/lwmon5////
+D/m501sk////
+D/matrix_vision////
+D/mbx8xx////
+D/mcc200////
+D/micronas////
+D/mimc////
+D/miromico////
+D/ml2////
+D/modnet50////
+D/motionpro////
+D/mousse////
+D/mp2usb////
+D/mpc8540eval////
+D/mpl////
+D/mpr2////
+D/ms7720se////
+D/ms7722se////
+D/ms7750se////
+D/muas3001////
+D/mucmc52////
+D/munices////
+D/musenki////
+D/mvblue////
+D/mx1ads////
+D/mx1fs2////
+D/nc650////
+D/netphone////
+D/netstal////
+D/netstar////
+D/netta////
+D/netta2////
+D/netvia////
+D/ns9750dev////
+D/nx823////
+D/o2dnt////
+D/omap1510inn////
+D/omap1610inn////
+D/omap2420h4////
+D/omap3////
+D/omap5912osk////
+D/omap730p2////
+D/oxc////
+D/pb1x00////
+D/pcippc2////
+D/pcs440ep////
+D/pleb2////
+D/pm520////
+D/pm826////
+D/pm828////
+D/pm854////
+D/pm856////
+D/pn62////
+D/ppmc7xx////
+D/ppmc8260////
+D/prodrive////
+D/psyent////
+D/purple////
+D/pxa255_idp////
+D/qemu-mips////
+D/quad100hd////
+D/quantum////
+D/r360mpi////
+D/rattler////
+D/rbc823////
+D/renesas////
+D/rmu////
+D/rpxsuper////
+D/rsdproto////
+D/sacsng////
+D/samsung////
+D/sandburst////
+D/sandpoint////
+D/sbc2410x////
+D/sbc405////
+D/sbc8240////
+D/sbc8260////
+D/sbc8349////
+D/sbc8548////
+D/sbc8560////
+D/sbc8641d////
+D/sc3////
+D/sc520_cdp////
+D/sc520_spunk////
+D/scb9328////
+D/shannon////
+D/sheldon////
+D/siemens////
+D/sixnet////
+D/sl8245////
+D/snmc////
+D/socrates////
+D/sorcery////
+D/spc1920////
+D/spd8xx////
+D/ssv////
+D/st////
+D/stxgp3////
+D/stxssa////
+D/stxxtc////
+D/svm_sc8xx////
+D/sx1////
+D/tb0229////
+D/total5200////
+D/tqc////
+D/trab////
+D/trizepsiv////
+D/uc100////
+D/uc101////
+D/utx8245////
+D/v37////
+D/v38b////
+D/voiceblue////
+D/w7o////
+D/wepep250////
+D/westel////
+D/xaeniax////
+D/xes////
+D/xilinx////
+D/xm250////
+D/xpedite1k////
+D/xsengine////
+D/zeus////
+D/zpc1900////
+D/zylonite////
diff -Naur u-boot-2009.03_orig/board/CVS/Entries.Old u-boot-2009.03/board/CVS/Entries.Old
--- u-boot-2009.03_orig/board/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/CVS/Entries.Old        2009-03-25 15:25:09.000000000 -0700
@@ -0,0 +1,251 @@
+D/AtmarkTechno////
+D/BuS////
+D/LEOX////
+D/MAI////
+D/Marvell////
+D/RPXClassic////
+D/RPXlite////
+D/RPXlite_dw////
+D/RRvision////
+D/a3000////
+D/actux1////
+D/actux2////
+D/actux3////
+D/actux4////
+D/adder////
+D/ads5121////
+D/afeb9260////
+D/alaska////
+D/altera////
+D/amcc////
+D/amirix////
+D/apollon////
+D/armadillo////
+D/armltd////
+D/assabet////
+D/atc////
+D/atmel////
+D/atum8548////
+D/avnet////
+D/barco////
+D/bc3450////
+D/bf533-ezkit////
+D/bf533-stamp////
+D/bf537-stamp////
+D/bf561-ezkit////
+D/bmw////
+D/c2mon////
+D/canmb////
+D/cerf250////
+D/cm4008////
+D/cm41xx////
+D/cm5200////
+D/cmc_pu2////
+D/cmi////
+D/cobra5272////
+D/cogent////
+D/cpc45////
+D/cpu86////
+D/cpu87////
+D/cradle////
+D/cray////
+D/csb226////
+D/csb272////
+D/csb472////
+D/csb637////
+D/cu824////
+D/dave////
+D/davedenx////
+D/davinci////
+D/dbau1x00////
+D/delta////
+D/dnp1110////
+D/eNET////
+D/eXalion////
+D/earthlcd////
+D/eltec////
+D/emk////
+D/ep7312////
+D/ep8248////
+D/ep8260////
+D/ep82xxm////
+D/ep88x////
+D/eric////
+D/esd////
+D/esteem192e////
+D/etin////
+D/etx094////
+D/evb4510////
+D/evb64260////
+D/exbitgen////
+D/fads////
+D/flagadm////
+D/freescale////
+D/funkwerk////
+D/g2000////
+D/gaisler////
+D/gcplus////
+D/gdsys////
+D/gen860t////
+D/genietv////
+D/gth////
+D/gth2////
+D/gw8260////
+D/hermes////
+D/hidden_dragon////
+D/hmi1001////
+D/hymod////
+D/icecube////
+D/icu862////
+D/idmr////
+D/ids8247////
+D/impa7////
+D/imx31_litekit////
+D/imx31_phycore////
+D/incaip////
+D/inka4x0////
+D/innokom////
+D/ip860////
+D/iphase4539////
+D/ispan////
+D/ivm////
+D/ixdp425////
+D/jse////
+D/jupiter////
+D/kb9202////
+D/keymile////
+D/korat////
+D/kup////
+D/lantec////
+D/lart////
+D/linkstation////
+D/logodl////
+D/lpc2292sodimm////
+D/lpd7a40x////
+D/lubbock////
+D/lwmon////
+D/lwmon5////
+D/m501sk////
+D/matrix_vision////
+D/mbx8xx////
+D/mcc200////
+D/micronas////
+D/mimc////
+D/miromico////
+D/ml2////
+D/modnet50////
+D/motionpro////
+D/mousse////
+D/mp2usb////
+D/mpc8540eval////
+D/mpl////
+D/mpr2////
+D/ms7720se////
+D/ms7722se////
+D/ms7750se////
+D/muas3001////
+D/mucmc52////
+D/munices////
+D/musenki////
+D/mvblue////
+D/mx1ads////
+D/mx1fs2////
+D/nc650////
+D/netphone////
+D/netstal////
+D/netstar////
+D/netta////
+D/netta2////
+D/netvia////
+D/ns9750dev////
+D/nx823////
+D/o2dnt////
+D/omap1510inn////
+D/omap1610inn////
+D/omap2420h4////
+D/omap3////
+D/omap5912osk////
+D/omap730p2////
+D/oxc////
+D/pb1x00////
+D/pcippc2////
+D/pcs440ep////
+D/pleb2////
+D/pm520////
+D/pm826////
+D/pm828////
+D/pm854////
+D/pm856////
+D/pn62////
+D/ppmc7xx////
+D/ppmc8260////
+D/prodrive////
+D/psyent////
+D/purple////
+D/pxa255_idp////
+D/qemu-mips////
+D/quad100hd////
+D/quantum////
+D/r360mpi////
+D/rattler////
+D/rbc823////
+D/renesas////
+D/rmu////
+D/rpxsuper////
+D/rsdproto////
+D/sacsng////
+D/samsung////
+D/sandburst////
+D/sandpoint////
+D/sbc2410x////
+D/sbc405////
+D/sbc8240////
+D/sbc8260////
+D/sbc8349////
+D/sbc8548////
+D/sbc8560////
+D/sbc8641d////
+D/sc3////
+D/sc520_cdp////
+D/sc520_spunk////
+D/scb9328////
+D/shannon////
+D/sheldon////
+D/siemens////
+D/sixnet////
+D/sl8245////
+D/snmc////
+D/socrates////
+D/sorcery////
+D/spc1920////
+D/spd8xx////
+D/ssv////
+D/st////
+D/stxgp3////
+D/stxssa////
+D/stxxtc////
+D/svm_sc8xx////
+D/sx1////
+D/tb0229////
+D/total5200////
+D/tqc////
+D/trab////
+D/trizepsiv////
+D/uc100////
+D/uc101////
+D/utx8245////
+D/v37////
+D/v38b////
+D/voiceblue////
+D/w7o////
+D/wepep250////
+D/westel////
+D/xaeniax////
+D/xes////
+D/xilinx////
+D/xm250////
+D/xpedite1k////
+D/xsengine////
+D/zeus////
+D/zpc1900////
+D/zylonite////
diff -Naur u-boot-2009.03_orig/board/CVS/Repository u-boot-2009.03/board/CVS/Repository
--- u-boot-2009.03_orig/board/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/CVS/Repository 2009-03-25 15:23:58.307066200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board
diff -Naur u-boot-2009.03_orig/board/CVS/Root u-boot-2009.03/board/CVS/Root
--- u-boot-2009.03_orig/board/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/CVS/Root       2009-03-25 15:23:58.307066200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/LEOX/CVS/Entries u-boot-2009.03/board/LEOX/CVS/Entries
--- u-boot-2009.03_orig/board/LEOX/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/LEOX/CVS/Entries       2009-03-25 15:23:58.932058200 -0700
@@ -0,0 +1 @@
+D/elpt860////
diff -Naur u-boot-2009.03_orig/board/LEOX/CVS/Entries.Extra u-boot-2009.03/board/LEOX/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/LEOX/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/LEOX/CVS/Entries.Extra 2009-03-25 15:23:58.932058200 -0700
@@ -0,0 +1 @@
+D/elpt860////
diff -Naur u-boot-2009.03_orig/board/LEOX/CVS/Repository u-boot-2009.03/board/LEOX/CVS/Repository
--- u-boot-2009.03_orig/board/LEOX/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/LEOX/CVS/Repository    2009-03-25 15:23:58.760185400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/LEOX
diff -Naur u-boot-2009.03_orig/board/LEOX/CVS/Root u-boot-2009.03/board/LEOX/CVS/Root
--- u-boot-2009.03_orig/board/LEOX/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/LEOX/CVS/Root  2009-03-25 15:23:58.760185400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/LEOX/elpt860/CVS/Entries u-boot-2009.03/board/LEOX/elpt860/CVS/Entries
--- u-boot-2009.03_orig/board/LEOX/elpt860/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/LEOX/elpt860/CVS/Entries       2009-03-25 15:57:09.403345000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.LEOX/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/elpt860.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.debug/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/LEOX/elpt860/CVS/Entries.Extra u-boot-2009.03/board/LEOX/elpt860/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/LEOX/elpt860/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/LEOX/elpt860/CVS/Entries.Extra 2009-03-25 15:57:09.403345000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019701/
+/README.LEOX///1238019701/
+/config.mk///1238019701/
+/elpt860.c///1238019701/
+/flash.c///1238019701/
+/u-boot.lds///1238019701/
+/u-boot.lds.debug///1238019701/
diff -Naur u-boot-2009.03_orig/board/LEOX/elpt860/CVS/Entries.Extra.Old u-boot-2009.03/board/LEOX/elpt860/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/LEOX/elpt860/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/LEOX/elpt860/CVS/Entries.Extra.Old     2009-03-25 15:23:58.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019701/
+/README.LEOX///1238019701/
+/config.mk///1238019701/
+/elpt860.c///1238019701/
+/flash.c///1238019701/
+/u-boot.lds///1238019701/
+/u-boot.lds.debug///1238019701/
diff -Naur u-boot-2009.03_orig/board/LEOX/elpt860/CVS/Entries.Old u-boot-2009.03/board/LEOX/elpt860/CVS/Entries.Old
--- u-boot-2009.03_orig/board/LEOX/elpt860/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/LEOX/elpt860/CVS/Entries.Old   2009-03-25 15:23:58.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/README.LEOX/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/elpt860.c/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/u-boot.lds.debug/1.1.1.1/Wed Mar 25 22:21:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/LEOX/elpt860/CVS/Repository u-boot-2009.03/board/LEOX/elpt860/CVS/Repository
--- u-boot-2009.03_orig/board/LEOX/elpt860/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/LEOX/elpt860/CVS/Repository    2009-03-25 15:23:58.791435000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/LEOX/elpt860
diff -Naur u-boot-2009.03_orig/board/LEOX/elpt860/CVS/Root u-boot-2009.03/board/LEOX/elpt860/CVS/Root
--- u-boot-2009.03_orig/board/LEOX/elpt860/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/LEOX/elpt860/CVS/Root  2009-03-25 15:23:58.791435000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/MAI/AmigaOneG3SE/CVS/Entries u-boot-2009.03/board/MAI/AmigaOneG3SE/CVS/Entries
--- u-boot-2009.03_orig/board/MAI/AmigaOneG3SE/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/MAI/AmigaOneG3SE/CVS/Entries   2009-03-25 15:57:09.575218900 -0700
@@ -0,0 +1,34 @@
+/AmigaOneG3SE.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/articiaS.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/articiaS.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/articiaS_pci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/board_asm_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_boota.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/enet.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash_new.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/i8259.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/i8259.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupts.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/macros.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/memio.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/memio.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/memory_dump/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nvram.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ps2kbd.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ps2kbd.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/short_types.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/smbus.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/smbus.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/start.txt/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/todo.txt/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usb_uhci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usb_uhci.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/via686.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/via686.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/video.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/MAI/AmigaOneG3SE/CVS/Entries.Extra u-boot-2009.03/board/MAI/AmigaOneG3SE/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/MAI/AmigaOneG3SE/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/MAI/AmigaOneG3SE/CVS/Entries.Extra     2009-03-25 15:57:09.575218900 -0700
@@ -0,0 +1,33 @@
+/AmigaOneG3SE.c///1238019701/
+/Makefile///1238019702/
+/articiaS.c///1238019701/
+/articiaS.h///1238019701/
+/articiaS_pci.c///1238019701/
+/board_asm_init.S///1238019702/
+/cmd_boota.c///1238019702/
+/config.mk///1238019702/
+/enet.c///1238019702/
+/flash.c///1238019702/
+/flash_new.c///1238019702/
+/i8259.c///1238019702/
+/i8259.h///1238019702/
+/interrupts.c///1238019702/
+/macros.h///1238019702/
+/memio.S///1238019702/
+/memio.h///1238019702/
+/memory_dump///1238019702/
+/nvram.c///1238019702/
+/ps2kbd.c///1238019702/
+/ps2kbd.h///1238019702/
+/serial.c///1238019702/
+/short_types.h///1238019702/
+/smbus.c///1238019702/
+/smbus.h///1238019702/
+/start.txt///1238019702/
+/todo.txt///1238019702/
+/u-boot.lds///1238019702/
+/usb_uhci.c///1238019702/
+/usb_uhci.h///1238019702/
+/via686.c///1238019702/
+/via686.h///1238019702/
+/video.c///1238019702/
diff -Naur u-boot-2009.03_orig/board/MAI/AmigaOneG3SE/CVS/Entries.Extra.Old u-boot-2009.03/board/MAI/AmigaOneG3SE/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/MAI/AmigaOneG3SE/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/MAI/AmigaOneG3SE/CVS/Entries.Extra.Old 2009-03-25 15:23:59.000000000 -0700
@@ -0,0 +1,33 @@
+/AmigaOneG3SE.c///1238019701/
+/Makefile///1238019702/
+/articiaS.c///1238019701/
+/articiaS.h///1238019701/
+/articiaS_pci.c///1238019701/
+/board_asm_init.S///1238019702/
+/cmd_boota.c///1238019702/
+/config.mk///1238019702/
+/enet.c///1238019702/
+/flash.c///1238019702/
+/flash_new.c///1238019702/
+/i8259.c///1238019702/
+/i8259.h///1238019702/
+/interrupts.c///1238019702/
+/macros.h///1238019702/
+/memio.S///1238019702/
+/memio.h///1238019702/
+/memory_dump///1238019702/
+/nvram.c///1238019702/
+/ps2kbd.c///1238019702/
+/ps2kbd.h///1238019702/
+/serial.c///1238019702/
+/short_types.h///1238019702/
+/smbus.c///1238019702/
+/smbus.h///1238019702/
+/start.txt///1238019702/
+/todo.txt///1238019702/
+/u-boot.lds///1238019702/
+/usb_uhci.c///1238019702/
+/usb_uhci.h///1238019702/
+/via686.c///1238019702/
+/via686.h///1238019702/
+/video.c///1238019702/
diff -Naur u-boot-2009.03_orig/board/MAI/AmigaOneG3SE/CVS/Entries.Old u-boot-2009.03/board/MAI/AmigaOneG3SE/CVS/Entries.Old
--- u-boot-2009.03_orig/board/MAI/AmigaOneG3SE/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/MAI/AmigaOneG3SE/CVS/Entries.Old       2009-03-25 15:23:59.000000000 -0700
@@ -0,0 +1,34 @@
+/AmigaOneG3SE.c/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/Makefile/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/articiaS.c/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/articiaS.h/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/articiaS_pci.c/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/board_asm_init.S/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/cmd_boota.c/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/enet.c/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/flash_new.c/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/i8259.c/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/i8259.h/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/interrupts.c/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/macros.h/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/memio.S/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/memio.h/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/memory_dump/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/nvram.c/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/ps2kbd.c/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/ps2kbd.h/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/serial.c/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/short_types.h/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/smbus.c/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/smbus.h/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/start.txt/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/todo.txt/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/usb_uhci.c/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/usb_uhci.h/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/via686.c/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/via686.h/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/video.c/1.1.1.1/Wed Mar 25 22:21:42 2009//
+D
diff -Naur u-boot-2009.03_orig/board/MAI/AmigaOneG3SE/CVS/Repository u-boot-2009.03/board/MAI/AmigaOneG3SE/CVS/Repository
--- u-boot-2009.03_orig/board/MAI/AmigaOneG3SE/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/MAI/AmigaOneG3SE/CVS/Repository        2009-03-25 15:23:59.010182200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/MAI/AmigaOneG3SE
diff -Naur u-boot-2009.03_orig/board/MAI/AmigaOneG3SE/CVS/Root u-boot-2009.03/board/MAI/AmigaOneG3SE/CVS/Root
--- u-boot-2009.03_orig/board/MAI/AmigaOneG3SE/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/MAI/AmigaOneG3SE/CVS/Root      2009-03-25 15:23:59.010182200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/MAI/CVS/Entries u-boot-2009.03/board/MAI/CVS/Entries
--- u-boot-2009.03_orig/board/MAI/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/MAI/CVS/Entries        2009-03-25 15:23:59.478926200 -0700
@@ -0,0 +1,2 @@
+D/AmigaOneG3SE////
+D/menu////
diff -Naur u-boot-2009.03_orig/board/MAI/CVS/Entries.Extra u-boot-2009.03/board/MAI/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/MAI/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/MAI/CVS/Entries.Extra  2009-03-25 15:23:59.478926200 -0700
@@ -0,0 +1,2 @@
+D/AmigaOneG3SE////
+D/menu////
diff -Naur u-boot-2009.03_orig/board/MAI/CVS/Repository u-boot-2009.03/board/MAI/CVS/Repository
--- u-boot-2009.03_orig/board/MAI/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/MAI/CVS/Repository     2009-03-25 15:23:58.994557400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/MAI
diff -Naur u-boot-2009.03_orig/board/MAI/CVS/Root u-boot-2009.03/board/MAI/CVS/Root
--- u-boot-2009.03_orig/board/MAI/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/MAI/CVS/Root   2009-03-25 15:23:58.978932600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/MAI/menu/CVS/Entries u-boot-2009.03/board/MAI/menu/CVS/Entries
--- u-boot-2009.03_orig/board/MAI/menu/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/MAI/menu/CVS/Entries   2009-03-25 15:57:09.653343400 -0700
@@ -0,0 +1,2 @@
+/cmd_menu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/MAI/menu/CVS/Entries.Extra u-boot-2009.03/board/MAI/menu/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/MAI/menu/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/MAI/menu/CVS/Entries.Extra     2009-03-25 15:57:09.653343400 -0700
@@ -0,0 +1 @@
+/cmd_menu.c///1238019702/
diff -Naur u-boot-2009.03_orig/board/MAI/menu/CVS/Entries.Extra.Old u-boot-2009.03/board/MAI/menu/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/MAI/menu/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/MAI/menu/CVS/Entries.Extra.Old 2009-03-25 15:23:59.000000000 -0700
@@ -0,0 +1 @@
+/cmd_menu.c///1238019702/
diff -Naur u-boot-2009.03_orig/board/MAI/menu/CVS/Entries.Old u-boot-2009.03/board/MAI/menu/CVS/Entries.Old
--- u-boot-2009.03_orig/board/MAI/menu/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/MAI/menu/CVS/Entries.Old       2009-03-25 15:23:59.000000000 -0700
@@ -0,0 +1,2 @@
+/cmd_menu.c/1.1.1.1/Wed Mar 25 22:21:42 2009//
+D
diff -Naur u-boot-2009.03_orig/board/MAI/menu/CVS/Repository u-boot-2009.03/board/MAI/menu/CVS/Repository
--- u-boot-2009.03_orig/board/MAI/menu/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/MAI/menu/CVS/Repository        2009-03-25 15:23:59.400802200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/MAI/menu
diff -Naur u-boot-2009.03_orig/board/MAI/menu/CVS/Root u-boot-2009.03/board/MAI/menu/CVS/Root
--- u-boot-2009.03_orig/board/MAI/menu/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/MAI/menu/CVS/Root      2009-03-25 15:23:59.369552600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/Marvell/CVS/Entries u-boot-2009.03/board/Marvell/CVS/Entries
--- u-boot-2009.03_orig/board/Marvell/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/Marvell/CVS/Entries    2009-03-25 15:24:00.275791000 -0700
@@ -0,0 +1,4 @@
+D/common////
+D/db64360////
+D/db64460////
+D/include////
diff -Naur u-boot-2009.03_orig/board/Marvell/CVS/Entries.Extra u-boot-2009.03/board/Marvell/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/Marvell/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/Marvell/CVS/Entries.Extra      2009-03-25 15:24:00.275791000 -0700
@@ -0,0 +1,4 @@
+D/common////
+D/db64360////
+D/db64460////
+D/include////
diff -Naur u-boot-2009.03_orig/board/Marvell/CVS/Repository u-boot-2009.03/board/Marvell/CVS/Repository
--- u-boot-2009.03_orig/board/Marvell/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/Marvell/CVS/Repository 2009-03-25 15:23:59.525800600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/Marvell
diff -Naur u-boot-2009.03_orig/board/Marvell/CVS/Root u-boot-2009.03/board/Marvell/CVS/Root
--- u-boot-2009.03_orig/board/Marvell/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/Marvell/CVS/Root       2009-03-25 15:23:59.525800600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/Marvell/common/CVS/Entries u-boot-2009.03/board/Marvell/common/CVS/Entries
--- u-boot-2009.03_orig/board/Marvell/common/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/Marvell/common/CVS/Entries     2009-03-25 15:57:09.778342600 -0700
@@ -0,0 +1,15 @@
+/bootseq.txt/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ecctest.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/i2c.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/i2c.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/intel_flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/intel_flash.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/memory.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/misc.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ns16550.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ns16550.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ppc_error_no.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/Marvell/common/CVS/Entries.Extra u-boot-2009.03/board/Marvell/common/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/Marvell/common/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/Marvell/common/CVS/Entries.Extra       2009-03-25 15:57:09.778342600 -0700
@@ -0,0 +1,14 @@
+/bootseq.txt///1238019702/
+/ecctest.c///1238019702/
+/flash.c///1238019702/
+/i2c.c///1238019702/
+/i2c.h///1238019702/
+/intel_flash.c///1238019702/
+/intel_flash.h///1238019702/
+/memory.c///1238019702/
+/misc.S///1238019702/
+/ns16550.c///1238019702/
+/ns16550.h///1238019702/
+/ppc_error_no.h///1238019702/
+/serial.c///1238019702/
+/serial.h///1238019702/
diff -Naur u-boot-2009.03_orig/board/Marvell/common/CVS/Entries.Extra.Old u-boot-2009.03/board/Marvell/common/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/Marvell/common/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/Marvell/common/CVS/Entries.Extra.Old   2009-03-25 15:23:59.000000000 -0700
@@ -0,0 +1,14 @@
+/bootseq.txt///1238019702/
+/ecctest.c///1238019702/
+/flash.c///1238019702/
+/i2c.c///1238019702/
+/i2c.h///1238019702/
+/intel_flash.c///1238019702/
+/intel_flash.h///1238019702/
+/memory.c///1238019702/
+/misc.S///1238019702/
+/ns16550.c///1238019702/
+/ns16550.h///1238019702/
+/ppc_error_no.h///1238019702/
+/serial.c///1238019702/
+/serial.h///1238019702/
diff -Naur u-boot-2009.03_orig/board/Marvell/common/CVS/Entries.Old u-boot-2009.03/board/Marvell/common/CVS/Entries.Old
--- u-boot-2009.03_orig/board/Marvell/common/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/Marvell/common/CVS/Entries.Old 2009-03-25 15:23:59.000000000 -0700
@@ -0,0 +1,15 @@
+/bootseq.txt/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/ecctest.c/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/i2c.c/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/i2c.h/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/intel_flash.c/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/intel_flash.h/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/memory.c/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/misc.S/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/ns16550.c/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/ns16550.h/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/ppc_error_no.h/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/serial.c/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/serial.h/1.1.1.1/Wed Mar 25 22:21:42 2009//
+D
diff -Naur u-boot-2009.03_orig/board/Marvell/common/CVS/Repository u-boot-2009.03/board/Marvell/common/CVS/Repository
--- u-boot-2009.03_orig/board/Marvell/common/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/Marvell/common/CVS/Repository  2009-03-25 15:23:59.557050200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/Marvell/common
diff -Naur u-boot-2009.03_orig/board/Marvell/common/CVS/Root u-boot-2009.03/board/Marvell/common/CVS/Root
--- u-boot-2009.03_orig/board/Marvell/common/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/Marvell/common/CVS/Root        2009-03-25 15:23:59.557050200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/Marvell/db64360/CVS/Entries u-boot-2009.03/board/Marvell/db64360/CVS/Entries
--- u-boot-2009.03_orig/board/Marvell/db64360/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/Marvell/db64360/CVS/Entries    2009-03-25 15:57:09.903341800 -0700
@@ -0,0 +1,14 @@
+/64360.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/db64360.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/eth.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpsc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpsc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mv_eth.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mv_eth.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mv_regs.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sdram_init.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/Marvell/db64360/CVS/Entries.Extra u-boot-2009.03/board/Marvell/db64360/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/Marvell/db64360/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/Marvell/db64360/CVS/Entries.Extra      2009-03-25 15:57:09.903341800 -0700
@@ -0,0 +1,13 @@
+/64360.h///1238019702/
+/Makefile///1238019702/
+/config.mk///1238019702/
+/db64360.c///1238019702/
+/eth.h///1238019702/
+/mpsc.c///1238019702/
+/mpsc.h///1238019702/
+/mv_eth.c///1238019702/
+/mv_eth.h///1238019702/
+/mv_regs.h///1238019702/
+/pci.c///1238019702/
+/sdram_init.c///1238019702/
+/u-boot.lds///1238019702/
diff -Naur u-boot-2009.03_orig/board/Marvell/db64360/CVS/Entries.Extra.Old u-boot-2009.03/board/Marvell/db64360/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/Marvell/db64360/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/Marvell/db64360/CVS/Entries.Extra.Old  2009-03-25 15:23:59.000000000 -0700
@@ -0,0 +1,13 @@
+/64360.h///1238019702/
+/Makefile///1238019702/
+/config.mk///1238019702/
+/db64360.c///1238019702/
+/eth.h///1238019702/
+/mpsc.c///1238019702/
+/mpsc.h///1238019702/
+/mv_eth.c///1238019702/
+/mv_eth.h///1238019702/
+/mv_regs.h///1238019702/
+/pci.c///1238019702/
+/sdram_init.c///1238019702/
+/u-boot.lds///1238019702/
diff -Naur u-boot-2009.03_orig/board/Marvell/db64360/CVS/Entries.Old u-boot-2009.03/board/Marvell/db64360/CVS/Entries.Old
--- u-boot-2009.03_orig/board/Marvell/db64360/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/Marvell/db64360/CVS/Entries.Old        2009-03-25 15:23:59.000000000 -0700
@@ -0,0 +1,14 @@
+/64360.h/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/Makefile/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/db64360.c/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/eth.h/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/mpsc.c/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/mpsc.h/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/mv_eth.c/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/mv_eth.h/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/mv_regs.h/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/pci.c/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/sdram_init.c/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:42 2009//
+D
diff -Naur u-boot-2009.03_orig/board/Marvell/db64360/CVS/Repository u-boot-2009.03/board/Marvell/db64360/CVS/Repository
--- u-boot-2009.03_orig/board/Marvell/db64360/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/Marvell/db64360/CVS/Repository 2009-03-25 15:23:59.760172600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/Marvell/db64360
diff -Naur u-boot-2009.03_orig/board/Marvell/db64360/CVS/Root u-boot-2009.03/board/Marvell/db64360/CVS/Root
--- u-boot-2009.03_orig/board/Marvell/db64360/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/Marvell/db64360/CVS/Root       2009-03-25 15:23:59.760172600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/Marvell/db64460/CVS/Entries u-boot-2009.03/board/Marvell/db64460/CVS/Entries
--- u-boot-2009.03_orig/board/Marvell/db64460/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/Marvell/db64460/CVS/Entries    2009-03-25 15:57:09.997091200 -0700
@@ -0,0 +1,14 @@
+/64460.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/db64460.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/eth.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpsc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpsc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mv_eth.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mv_eth.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mv_regs.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sdram_init.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/Marvell/db64460/CVS/Entries.Extra u-boot-2009.03/board/Marvell/db64460/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/Marvell/db64460/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/Marvell/db64460/CVS/Entries.Extra      2009-03-25 15:57:09.997091200 -0700
@@ -0,0 +1,13 @@
+/64460.h///1238019702/
+/Makefile///1238019702/
+/config.mk///1238019702/
+/db64460.c///1238019702/
+/eth.h///1238019702/
+/mpsc.c///1238019702/
+/mpsc.h///1238019702/
+/mv_eth.c///1238019702/
+/mv_eth.h///1238019702/
+/mv_regs.h///1238019702/
+/pci.c///1238019702/
+/sdram_init.c///1238019702/
+/u-boot.lds///1238019702/
diff -Naur u-boot-2009.03_orig/board/Marvell/db64460/CVS/Entries.Extra.Old u-boot-2009.03/board/Marvell/db64460/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/Marvell/db64460/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/Marvell/db64460/CVS/Entries.Extra.Old  2009-03-25 15:24:00.000000000 -0700
@@ -0,0 +1,13 @@
+/64460.h///1238019702/
+/Makefile///1238019702/
+/config.mk///1238019702/
+/db64460.c///1238019702/
+/eth.h///1238019702/
+/mpsc.c///1238019702/
+/mpsc.h///1238019702/
+/mv_eth.c///1238019702/
+/mv_eth.h///1238019702/
+/mv_regs.h///1238019702/
+/pci.c///1238019702/
+/sdram_init.c///1238019702/
+/u-boot.lds///1238019702/
diff -Naur u-boot-2009.03_orig/board/Marvell/db64460/CVS/Entries.Old u-boot-2009.03/board/Marvell/db64460/CVS/Entries.Old
--- u-boot-2009.03_orig/board/Marvell/db64460/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/Marvell/db64460/CVS/Entries.Old        2009-03-25 15:24:00.000000000 -0700
@@ -0,0 +1,14 @@
+/64460.h/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/Makefile/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/db64460.c/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/eth.h/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/mpsc.c/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/mpsc.h/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/mv_eth.c/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/mv_eth.h/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/mv_regs.h/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/pci.c/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/sdram_init.c/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:42 2009//
+D
diff -Naur u-boot-2009.03_orig/board/Marvell/db64460/CVS/Repository u-boot-2009.03/board/Marvell/db64460/CVS/Repository
--- u-boot-2009.03_orig/board/Marvell/db64460/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/Marvell/db64460/CVS/Repository 2009-03-25 15:23:59.963295000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/Marvell/db64460
diff -Naur u-boot-2009.03_orig/board/Marvell/db64460/CVS/Root u-boot-2009.03/board/Marvell/db64460/CVS/Root
--- u-boot-2009.03_orig/board/Marvell/db64460/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/Marvell/db64460/CVS/Root       2009-03-25 15:23:59.963295000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/Marvell/include/CVS/Entries u-boot-2009.03/board/Marvell/include/CVS/Entries
--- u-boot-2009.03_orig/board/Marvell/include/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/Marvell/include/CVS/Entries    2009-03-25 15:57:10.075215700 -0700
@@ -0,0 +1,5 @@
+/core.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/memory.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mv_gen_reg.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/Marvell/include/CVS/Entries.Extra u-boot-2009.03/board/Marvell/include/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/Marvell/include/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/Marvell/include/CVS/Entries.Extra      2009-03-25 15:57:10.075215700 -0700
@@ -0,0 +1,4 @@
+/core.h///1238019702/
+/memory.h///1238019702/
+/mv_gen_reg.h///1238019702/
+/pci.h///1238019702/
diff -Naur u-boot-2009.03_orig/board/Marvell/include/CVS/Entries.Extra.Old u-boot-2009.03/board/Marvell/include/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/Marvell/include/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/Marvell/include/CVS/Entries.Extra.Old  2009-03-25 15:24:00.000000000 -0700
@@ -0,0 +1,4 @@
+/core.h///1238019702/
+/memory.h///1238019702/
+/mv_gen_reg.h///1238019702/
+/pci.h///1238019702/
diff -Naur u-boot-2009.03_orig/board/Marvell/include/CVS/Entries.Old u-boot-2009.03/board/Marvell/include/CVS/Entries.Old
--- u-boot-2009.03_orig/board/Marvell/include/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/Marvell/include/CVS/Entries.Old        2009-03-25 15:24:00.000000000 -0700
@@ -0,0 +1,5 @@
+/core.h/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/memory.h/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/mv_gen_reg.h/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/pci.h/1.1.1.1/Wed Mar 25 22:21:42 2009//
+D
diff -Naur u-boot-2009.03_orig/board/Marvell/include/CVS/Repository u-boot-2009.03/board/Marvell/include/CVS/Repository
--- u-boot-2009.03_orig/board/Marvell/include/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/Marvell/include/CVS/Repository 2009-03-25 15:24:00.166417400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/Marvell/include
diff -Naur u-boot-2009.03_orig/board/Marvell/include/CVS/Root u-boot-2009.03/board/Marvell/include/CVS/Root
--- u-boot-2009.03_orig/board/Marvell/include/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/Marvell/include/CVS/Root       2009-03-25 15:24:00.166417400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/RPXClassic/CVS/Entries u-boot-2009.03/board/RPXClassic/CVS/Entries
--- u-boot-2009.03_orig/board/RPXClassic/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/RPXClassic/CVS/Entries 2009-03-25 15:57:10.153340200 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/RPXClassic.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/eccx.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.debug/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/RPXClassic/CVS/Entries.Extra u-boot-2009.03/board/RPXClassic/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/RPXClassic/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/RPXClassic/CVS/Entries.Extra   2009-03-25 15:57:10.153340200 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019710/
+/RPXClassic.c///1238019710/
+/config.mk///1238019710/
+/eccx.c///1238019710/
+/flash.c///1238019710/
+/u-boot.lds///1238019710/
+/u-boot.lds.debug///1238019710/
diff -Naur u-boot-2009.03_orig/board/RPXClassic/CVS/Entries.Extra.Old u-boot-2009.03/board/RPXClassic/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/RPXClassic/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/RPXClassic/CVS/Entries.Extra.Old       2009-03-25 15:24:00.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019710/
+/RPXClassic.c///1238019710/
+/config.mk///1238019710/
+/eccx.c///1238019710/
+/flash.c///1238019710/
+/u-boot.lds///1238019710/
+/u-boot.lds.debug///1238019710/
diff -Naur u-boot-2009.03_orig/board/RPXClassic/CVS/Entries.Old u-boot-2009.03/board/RPXClassic/CVS/Entries.Old
--- u-boot-2009.03_orig/board/RPXClassic/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/RPXClassic/CVS/Entries.Old     2009-03-25 15:24:00.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/RPXClassic.c/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/eccx.c/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/u-boot.lds.debug/1.1.1.1/Wed Mar 25 22:21:50 2009//
+D
diff -Naur u-boot-2009.03_orig/board/RPXClassic/CVS/Repository u-boot-2009.03/board/RPXClassic/CVS/Repository
--- u-boot-2009.03_orig/board/RPXClassic/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/RPXClassic/CVS/Repository      2009-03-25 15:24:00.322665400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/RPXClassic
diff -Naur u-boot-2009.03_orig/board/RPXClassic/CVS/Root u-boot-2009.03/board/RPXClassic/CVS/Root
--- u-boot-2009.03_orig/board/RPXClassic/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/RPXClassic/CVS/Root    2009-03-25 15:24:00.322665400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/RPXlite/CVS/Entries u-boot-2009.03/board/RPXlite/CVS/Entries
--- u-boot-2009.03_orig/board/RPXlite/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/RPXlite/CVS/Entries    2009-03-25 15:57:10.231464700 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/RPXlite.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.debug/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/RPXlite/CVS/Entries.Extra u-boot-2009.03/board/RPXlite/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/RPXlite/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/RPXlite/CVS/Entries.Extra      2009-03-25 15:57:10.231464700 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019710/
+/RPXlite.c///1238019710/
+/config.mk///1238019710/
+/flash.c///1238019710/
+/u-boot.lds///1238019710/
+/u-boot.lds.debug///1238019710/
diff -Naur u-boot-2009.03_orig/board/RPXlite/CVS/Entries.Extra.Old u-boot-2009.03/board/RPXlite/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/RPXlite/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/RPXlite/CVS/Entries.Extra.Old  2009-03-25 15:24:00.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019710/
+/RPXlite.c///1238019710/
+/config.mk///1238019710/
+/flash.c///1238019710/
+/u-boot.lds///1238019710/
+/u-boot.lds.debug///1238019710/
diff -Naur u-boot-2009.03_orig/board/RPXlite/CVS/Entries.Old u-boot-2009.03/board/RPXlite/CVS/Entries.Old
--- u-boot-2009.03_orig/board/RPXlite/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/RPXlite/CVS/Entries.Old        2009-03-25 15:24:00.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/RPXlite.c/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/u-boot.lds.debug/1.1.1.1/Wed Mar 25 22:21:50 2009//
+D
diff -Naur u-boot-2009.03_orig/board/RPXlite/CVS/Repository u-boot-2009.03/board/RPXlite/CVS/Repository
--- u-boot-2009.03_orig/board/RPXlite/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/RPXlite/CVS/Repository 2009-03-25 15:24:00.494538200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/RPXlite
diff -Naur u-boot-2009.03_orig/board/RPXlite/CVS/Root u-boot-2009.03/board/RPXlite/CVS/Root
--- u-boot-2009.03_orig/board/RPXlite/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/RPXlite/CVS/Root       2009-03-25 15:24:00.494538200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/RPXlite_dw/CVS/Entries u-boot-2009.03/board/RPXlite_dw/CVS/Entries
--- u-boot-2009.03_orig/board/RPXlite_dw/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/RPXlite_dw/CVS/Entries 2009-03-25 15:57:10.293964300 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/RPXlite_dw.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.debug/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/RPXlite_dw/CVS/Entries.Extra u-boot-2009.03/board/RPXlite_dw/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/RPXlite_dw/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/RPXlite_dw/CVS/Entries.Extra   2009-03-25 15:57:10.293964300 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019710/
+/README///1238019710/
+/RPXlite_dw.c///1238019710/
+/config.mk///1238019710/
+/flash.c///1238019710/
+/u-boot.lds///1238019710/
+/u-boot.lds.debug///1238019710/
diff -Naur u-boot-2009.03_orig/board/RPXlite_dw/CVS/Entries.Extra.Old u-boot-2009.03/board/RPXlite_dw/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/RPXlite_dw/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/RPXlite_dw/CVS/Entries.Extra.Old       2009-03-25 15:24:00.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019710/
+/README///1238019710/
+/RPXlite_dw.c///1238019710/
+/config.mk///1238019710/
+/flash.c///1238019710/
+/u-boot.lds///1238019710/
+/u-boot.lds.debug///1238019710/
diff -Naur u-boot-2009.03_orig/board/RPXlite_dw/CVS/Entries.Old u-boot-2009.03/board/RPXlite_dw/CVS/Entries.Old
--- u-boot-2009.03_orig/board/RPXlite_dw/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/RPXlite_dw/CVS/Entries.Old     2009-03-25 15:24:00.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/README/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/RPXlite_dw.c/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/u-boot.lds.debug/1.1.1.1/Wed Mar 25 22:21:50 2009//
+D
diff -Naur u-boot-2009.03_orig/board/RPXlite_dw/CVS/Repository u-boot-2009.03/board/RPXlite_dw/CVS/Repository
--- u-boot-2009.03_orig/board/RPXlite_dw/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/RPXlite_dw/CVS/Repository      2009-03-25 15:24:00.603911800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/RPXlite_dw
diff -Naur u-boot-2009.03_orig/board/RPXlite_dw/CVS/Root u-boot-2009.03/board/RPXlite_dw/CVS/Root
--- u-boot-2009.03_orig/board/RPXlite_dw/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/RPXlite_dw/CVS/Root    2009-03-25 15:24:00.603911800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/RRvision/CVS/Entries u-boot-2009.03/board/RRvision/CVS/Entries
--- u-boot-2009.03_orig/board/RRvision/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/RRvision/CVS/Entries   2009-03-25 15:57:10.372088800 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/RRvision.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/video_ad7179.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/RRvision/CVS/Entries.Extra u-boot-2009.03/board/RRvision/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/RRvision/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/RRvision/CVS/Entries.Extra     2009-03-25 15:57:10.372088800 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019710/
+/RRvision.c///1238019710/
+/config.mk///1238019710/
+/flash.c///1238019710/
+/u-boot.lds///1238019710/
+/video_ad7179.h///1238019710/
diff -Naur u-boot-2009.03_orig/board/RRvision/CVS/Entries.Extra.Old u-boot-2009.03/board/RRvision/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/RRvision/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/RRvision/CVS/Entries.Extra.Old 2009-03-25 15:24:00.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019710/
+/RRvision.c///1238019710/
+/config.mk///1238019710/
+/flash.c///1238019710/
+/u-boot.lds///1238019710/
+/video_ad7179.h///1238019710/
diff -Naur u-boot-2009.03_orig/board/RRvision/CVS/Entries.Old u-boot-2009.03/board/RRvision/CVS/Entries.Old
--- u-boot-2009.03_orig/board/RRvision/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/RRvision/CVS/Entries.Old       2009-03-25 15:24:00.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/RRvision.c/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/video_ad7179.h/1.1.1.1/Wed Mar 25 22:21:50 2009//
+D
diff -Naur u-boot-2009.03_orig/board/RRvision/CVS/Repository u-boot-2009.03/board/RRvision/CVS/Repository
--- u-boot-2009.03_orig/board/RRvision/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/RRvision/CVS/Repository        2009-03-25 15:24:00.744535000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/RRvision
diff -Naur u-boot-2009.03_orig/board/RRvision/CVS/Root u-boot-2009.03/board/RRvision/CVS/Root
--- u-boot-2009.03_orig/board/RRvision/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/RRvision/CVS/Root      2009-03-25 15:24:00.744535000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/a3000/CVS/Entries u-boot-2009.03/board/a3000/CVS/Entries
--- u-boot-2009.03_orig/board/a3000/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/a3000/CVS/Entries      2009-03-25 15:57:10.434588400 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/a3000.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/a3000/CVS/Entries.Extra u-boot-2009.03/board/a3000/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/a3000/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/a3000/CVS/Entries.Extra        2009-03-25 15:57:10.434588400 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019686/
+/README///1238019686/
+/a3000.c///1238019686/
+/config.mk///1238019686/
+/flash.c///1238019686/
diff -Naur u-boot-2009.03_orig/board/a3000/CVS/Entries.Extra.Old u-boot-2009.03/board/a3000/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/a3000/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/a3000/CVS/Entries.Extra.Old    2009-03-25 15:24:00.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019686/
+/README///1238019686/
+/a3000.c///1238019686/
+/config.mk///1238019686/
+/flash.c///1238019686/
diff -Naur u-boot-2009.03_orig/board/a3000/CVS/Entries.Old u-boot-2009.03/board/a3000/CVS/Entries.Old
--- u-boot-2009.03_orig/board/a3000/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/a3000/CVS/Entries.Old  2009-03-25 15:24:00.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:26 2009//
+/README/1.1.1.1/Wed Mar 25 22:21:26 2009//
+/a3000.c/1.1.1.1/Wed Mar 25 22:21:26 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:26 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:26 2009//
+D
diff -Naur u-boot-2009.03_orig/board/a3000/CVS/Repository u-boot-2009.03/board/a3000/CVS/Repository
--- u-boot-2009.03_orig/board/a3000/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/a3000/CVS/Repository   2009-03-25 15:24:00.869533400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/a3000
diff -Naur u-boot-2009.03_orig/board/a3000/CVS/Root u-boot-2009.03/board/a3000/CVS/Root
--- u-boot-2009.03_orig/board/a3000/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/a3000/CVS/Root 2009-03-25 15:24:00.853908600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/actux1/CVS/Entries u-boot-2009.03/board/actux1/CVS/Entries
--- u-boot-2009.03_orig/board/actux1/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/actux1/CVS/Entries     2009-03-25 15:57:10.497088000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/actux1.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/actux1_hw.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/actux1/CVS/Entries.Extra u-boot-2009.03/board/actux1/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/actux1/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/actux1/CVS/Entries.Extra       2009-03-25 15:57:10.497088000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019686/
+/actux1.c///1238019686/
+/actux1_hw.h///1238019686/
+/config.mk///1238019686/
+/u-boot.lds///1238019686/
diff -Naur u-boot-2009.03_orig/board/actux1/CVS/Entries.Extra.Old u-boot-2009.03/board/actux1/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/actux1/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/actux1/CVS/Entries.Extra.Old   2009-03-25 15:24:01.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019686/
+/actux1.c///1238019686/
+/actux1_hw.h///1238019686/
+/config.mk///1238019686/
+/u-boot.lds///1238019686/
diff -Naur u-boot-2009.03_orig/board/actux1/CVS/Entries.Old u-boot-2009.03/board/actux1/CVS/Entries.Old
--- u-boot-2009.03_orig/board/actux1/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/actux1/CVS/Entries.Old 2009-03-25 15:24:01.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:26 2009//
+/actux1.c/1.1.1.1/Wed Mar 25 22:21:26 2009//
+/actux1_hw.h/1.1.1.1/Wed Mar 25 22:21:26 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:26 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:26 2009//
+D
diff -Naur u-boot-2009.03_orig/board/actux1/CVS/Repository u-boot-2009.03/board/actux1/CVS/Repository
--- u-boot-2009.03_orig/board/actux1/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/actux1/CVS/Repository  2009-03-25 15:24:00.978907000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/actux1
diff -Naur u-boot-2009.03_orig/board/actux1/CVS/Root u-boot-2009.03/board/actux1/CVS/Root
--- u-boot-2009.03_orig/board/actux1/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/actux1/CVS/Root        2009-03-25 15:24:00.978907000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/actux2/CVS/Entries u-boot-2009.03/board/actux2/CVS/Entries
--- u-boot-2009.03_orig/board/actux2/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/actux2/CVS/Entries     2009-03-25 15:57:10.590837400 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/actux2.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/actux2_hw.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/actux2/CVS/Entries.Extra u-boot-2009.03/board/actux2/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/actux2/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/actux2/CVS/Entries.Extra       2009-03-25 15:57:10.590837400 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019686/
+/actux2.c///1238019686/
+/actux2_hw.h///1238019686/
+/config.mk///1238019686/
+/u-boot.lds///1238019686/
diff -Naur u-boot-2009.03_orig/board/actux2/CVS/Entries.Extra.Old u-boot-2009.03/board/actux2/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/actux2/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/actux2/CVS/Entries.Extra.Old   2009-03-25 15:24:01.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019686/
+/actux2.c///1238019686/
+/actux2_hw.h///1238019686/
+/config.mk///1238019686/
+/u-boot.lds///1238019686/
diff -Naur u-boot-2009.03_orig/board/actux2/CVS/Entries.Old u-boot-2009.03/board/actux2/CVS/Entries.Old
--- u-boot-2009.03_orig/board/actux2/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/actux2/CVS/Entries.Old 2009-03-25 15:24:01.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:26 2009//
+/actux2.c/1.1.1.1/Wed Mar 25 22:21:26 2009//
+/actux2_hw.h/1.1.1.1/Wed Mar 25 22:21:26 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:26 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:26 2009//
+D
diff -Naur u-boot-2009.03_orig/board/actux2/CVS/Repository u-boot-2009.03/board/actux2/CVS/Repository
--- u-boot-2009.03_orig/board/actux2/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/actux2/CVS/Repository  2009-03-25 15:24:01.088280600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/actux2
diff -Naur u-boot-2009.03_orig/board/actux2/CVS/Root u-boot-2009.03/board/actux2/CVS/Root
--- u-boot-2009.03_orig/board/actux2/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/actux2/CVS/Root        2009-03-25 15:24:01.088280600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/actux3/CVS/Entries u-boot-2009.03/board/actux3/CVS/Entries
--- u-boot-2009.03_orig/board/actux3/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/actux3/CVS/Entries     2009-03-25 15:57:10.653337000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/actux3.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/actux3_hw.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/actux3/CVS/Entries.Extra u-boot-2009.03/board/actux3/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/actux3/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/actux3/CVS/Entries.Extra       2009-03-25 15:57:10.653337000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019686/
+/actux3.c///1238019686/
+/actux3_hw.h///1238019686/
+/config.mk///1238019686/
+/u-boot.lds///1238019686/
diff -Naur u-boot-2009.03_orig/board/actux3/CVS/Entries.Extra.Old u-boot-2009.03/board/actux3/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/actux3/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/actux3/CVS/Entries.Extra.Old   2009-03-25 15:24:01.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019686/
+/actux3.c///1238019686/
+/actux3_hw.h///1238019686/
+/config.mk///1238019686/
+/u-boot.lds///1238019686/
diff -Naur u-boot-2009.03_orig/board/actux3/CVS/Entries.Old u-boot-2009.03/board/actux3/CVS/Entries.Old
--- u-boot-2009.03_orig/board/actux3/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/actux3/CVS/Entries.Old 2009-03-25 15:24:01.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:26 2009//
+/actux3.c/1.1.1.1/Wed Mar 25 22:21:26 2009//
+/actux3_hw.h/1.1.1.1/Wed Mar 25 22:21:26 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:26 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:26 2009//
+D
diff -Naur u-boot-2009.03_orig/board/actux3/CVS/Repository u-boot-2009.03/board/actux3/CVS/Repository
--- u-boot-2009.03_orig/board/actux3/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/actux3/CVS/Repository  2009-03-25 15:24:01.197654200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/actux3
diff -Naur u-boot-2009.03_orig/board/actux3/CVS/Root u-boot-2009.03/board/actux3/CVS/Root
--- u-boot-2009.03_orig/board/actux3/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/actux3/CVS/Root        2009-03-25 15:24:01.197654200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/actux4/CVS/Entries u-boot-2009.03/board/actux4/CVS/Entries
--- u-boot-2009.03_orig/board/actux4/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/actux4/CVS/Entries     2009-03-25 15:57:10.731461500 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/actux4.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/actux4_hw.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/actux4/CVS/Entries.Extra u-boot-2009.03/board/actux4/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/actux4/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/actux4/CVS/Entries.Extra       2009-03-25 15:57:10.731461500 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019686/
+/actux4.c///1238019686/
+/actux4_hw.h///1238019686/
+/config.mk///1238019686/
+/u-boot.lds///1238019686/
diff -Naur u-boot-2009.03_orig/board/actux4/CVS/Entries.Extra.Old u-boot-2009.03/board/actux4/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/actux4/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/actux4/CVS/Entries.Extra.Old   2009-03-25 15:24:01.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019686/
+/actux4.c///1238019686/
+/actux4_hw.h///1238019686/
+/config.mk///1238019686/
+/u-boot.lds///1238019686/
diff -Naur u-boot-2009.03_orig/board/actux4/CVS/Entries.Old u-boot-2009.03/board/actux4/CVS/Entries.Old
--- u-boot-2009.03_orig/board/actux4/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/actux4/CVS/Entries.Old 2009-03-25 15:24:01.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:26 2009//
+/actux4.c/1.1.1.1/Wed Mar 25 22:21:26 2009//
+/actux4_hw.h/1.1.1.1/Wed Mar 25 22:21:26 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:26 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:26 2009//
+D
diff -Naur u-boot-2009.03_orig/board/actux4/CVS/Repository u-boot-2009.03/board/actux4/CVS/Repository
--- u-boot-2009.03_orig/board/actux4/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/actux4/CVS/Repository  2009-03-25 15:24:01.307027800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/actux4
diff -Naur u-boot-2009.03_orig/board/actux4/CVS/Root u-boot-2009.03/board/actux4/CVS/Root
--- u-boot-2009.03_orig/board/actux4/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/actux4/CVS/Root        2009-03-25 15:24:01.307027800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/adder/CVS/Entries u-boot-2009.03/board/adder/CVS/Entries
--- u-boot-2009.03_orig/board/adder/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/adder/CVS/Entries      2009-03-25 15:57:10.793961100 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/adder.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/adder/CVS/Entries.Extra u-boot-2009.03/board/adder/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/adder/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/adder/CVS/Entries.Extra        2009-03-25 15:57:10.793961100 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019686/
+/adder.c///1238019686/
+/config.mk///1238019686/
+/u-boot.lds///1238019686/
diff -Naur u-boot-2009.03_orig/board/adder/CVS/Entries.Extra.Old u-boot-2009.03/board/adder/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/adder/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/adder/CVS/Entries.Extra.Old    2009-03-25 15:24:01.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019686/
+/adder.c///1238019686/
+/config.mk///1238019686/
+/u-boot.lds///1238019686/
diff -Naur u-boot-2009.03_orig/board/adder/CVS/Entries.Old u-boot-2009.03/board/adder/CVS/Entries.Old
--- u-boot-2009.03_orig/board/adder/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/adder/CVS/Entries.Old  2009-03-25 15:24:01.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:26 2009//
+/adder.c/1.1.1.1/Wed Mar 25 22:21:26 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:26 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:26 2009//
+D
diff -Naur u-boot-2009.03_orig/board/adder/CVS/Repository u-boot-2009.03/board/adder/CVS/Repository
--- u-boot-2009.03_orig/board/adder/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/adder/CVS/Repository   2009-03-25 15:24:01.510150200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/adder
diff -Naur u-boot-2009.03_orig/board/adder/CVS/Root u-boot-2009.03/board/adder/CVS/Root
--- u-boot-2009.03_orig/board/adder/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/adder/CVS/Root 2009-03-25 15:24:01.510150200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/ads5121/CVS/Entries u-boot-2009.03/board/ads5121/CVS/Entries
--- u-boot-2009.03_orig/board/ads5121/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ads5121/CVS/Entries    2009-03-25 15:57:10.872085600 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ads5121.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ads5121_diu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/ads5121/CVS/Entries.Extra u-boot-2009.03/board/ads5121/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/ads5121/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ads5121/CVS/Entries.Extra      2009-03-25 15:57:10.872085600 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019687/
+/README///1238019687/
+/ads5121.c///1238019687/
+/ads5121_diu.c///1238019687/
+/config.mk///1238019687/
+/pci.c///1238019687/
+/u-boot.lds///1238019687/
diff -Naur u-boot-2009.03_orig/board/ads5121/CVS/Entries.Extra.Old u-boot-2009.03/board/ads5121/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/ads5121/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ads5121/CVS/Entries.Extra.Old  2009-03-25 15:24:01.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019687/
+/README///1238019687/
+/ads5121.c///1238019687/
+/ads5121_diu.c///1238019687/
+/config.mk///1238019687/
+/pci.c///1238019687/
+/u-boot.lds///1238019687/
diff -Naur u-boot-2009.03_orig/board/ads5121/CVS/Entries.Old u-boot-2009.03/board/ads5121/CVS/Entries.Old
--- u-boot-2009.03_orig/board/ads5121/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ads5121/CVS/Entries.Old        2009-03-25 15:24:01.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/README/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/ads5121.c/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/ads5121_diu.c/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/pci.c/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:27 2009//
+D
diff -Naur u-boot-2009.03_orig/board/ads5121/CVS/Repository u-boot-2009.03/board/ads5121/CVS/Repository
--- u-boot-2009.03_orig/board/ads5121/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ads5121/CVS/Repository 2009-03-25 15:24:01.603899000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/ads5121
diff -Naur u-boot-2009.03_orig/board/ads5121/CVS/Root u-boot-2009.03/board/ads5121/CVS/Root
--- u-boot-2009.03_orig/board/ads5121/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ads5121/CVS/Root       2009-03-25 15:24:01.603899000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/afeb9260/CVS/Entries u-boot-2009.03/board/afeb9260/CVS/Entries
--- u-boot-2009.03_orig/board/afeb9260/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/afeb9260/CVS/Entries   2009-03-25 15:57:10.934585200 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/afeb9260.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nand.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/partition.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/afeb9260/CVS/Entries.Extra u-boot-2009.03/board/afeb9260/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/afeb9260/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/afeb9260/CVS/Entries.Extra     2009-03-25 15:57:10.934585200 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019687/
+/afeb9260.c///1238019687/
+/config.mk///1238019687/
+/nand.c///1238019687/
+/partition.c///1238019687/
diff -Naur u-boot-2009.03_orig/board/afeb9260/CVS/Entries.Extra.Old u-boot-2009.03/board/afeb9260/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/afeb9260/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/afeb9260/CVS/Entries.Extra.Old 2009-03-25 15:24:01.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019687/
+/afeb9260.c///1238019687/
+/config.mk///1238019687/
+/nand.c///1238019687/
+/partition.c///1238019687/
diff -Naur u-boot-2009.03_orig/board/afeb9260/CVS/Entries.Old u-boot-2009.03/board/afeb9260/CVS/Entries.Old
--- u-boot-2009.03_orig/board/afeb9260/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/afeb9260/CVS/Entries.Old       2009-03-25 15:24:01.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/afeb9260.c/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/nand.c/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/partition.c/1.1.1.1/Wed Mar 25 22:21:27 2009//
+D
diff -Naur u-boot-2009.03_orig/board/afeb9260/CVS/Repository u-boot-2009.03/board/afeb9260/CVS/Repository
--- u-boot-2009.03_orig/board/afeb9260/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/afeb9260/CVS/Repository        2009-03-25 15:24:01.744522200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/afeb9260
diff -Naur u-boot-2009.03_orig/board/afeb9260/CVS/Root u-boot-2009.03/board/afeb9260/CVS/Root
--- u-boot-2009.03_orig/board/afeb9260/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/afeb9260/CVS/Root      2009-03-25 15:24:01.744522200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/alaska/CVS/Entries u-boot-2009.03/board/alaska/CVS/Entries
--- u-boot-2009.03_orig/board/alaska/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/alaska/CVS/Entries     2009-03-25 15:57:10.997084800 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/alaska.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/alaska/CVS/Entries.Extra u-boot-2009.03/board/alaska/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/alaska/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/alaska/CVS/Entries.Extra       2009-03-25 15:57:10.997084800 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019687/
+/alaska.c///1238019687/
+/config.mk///1238019687/
+/flash.c///1238019687/
diff -Naur u-boot-2009.03_orig/board/alaska/CVS/Entries.Extra.Old u-boot-2009.03/board/alaska/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/alaska/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/alaska/CVS/Entries.Extra.Old   2009-03-25 15:24:01.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019687/
+/alaska.c///1238019687/
+/config.mk///1238019687/
+/flash.c///1238019687/
diff -Naur u-boot-2009.03_orig/board/alaska/CVS/Entries.Old u-boot-2009.03/board/alaska/CVS/Entries.Old
--- u-boot-2009.03_orig/board/alaska/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/alaska/CVS/Entries.Old 2009-03-25 15:24:01.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/alaska.c/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:27 2009//
+D
diff -Naur u-boot-2009.03_orig/board/alaska/CVS/Repository u-boot-2009.03/board/alaska/CVS/Repository
--- u-boot-2009.03_orig/board/alaska/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/alaska/CVS/Repository  2009-03-25 15:24:01.853895800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/alaska
diff -Naur u-boot-2009.03_orig/board/alaska/CVS/Root u-boot-2009.03/board/alaska/CVS/Root
--- u-boot-2009.03_orig/board/alaska/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/alaska/CVS/Root        2009-03-25 15:24:01.853895800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/altera/CVS/Entries u-boot-2009.03/board/altera/CVS/Entries
--- u-boot-2009.03_orig/board/altera/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/altera/CVS/Entries     2009-03-25 15:24:02.853883000 -0700
@@ -0,0 +1,6 @@
+D/common////
+D/dk1c20////
+D/dk1s10////
+D/ep1c20////
+D/ep1s10////
+D/ep1s40////
diff -Naur u-boot-2009.03_orig/board/altera/CVS/Entries.Extra u-boot-2009.03/board/altera/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/altera/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/altera/CVS/Entries.Extra       2009-03-25 15:24:02.869507800 -0700
@@ -0,0 +1,6 @@
+D/common////
+D/dk1c20////
+D/dk1s10////
+D/ep1c20////
+D/ep1s10////
+D/ep1s40////
diff -Naur u-boot-2009.03_orig/board/altera/CVS/Repository u-boot-2009.03/board/altera/CVS/Repository
--- u-boot-2009.03_orig/board/altera/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/altera/CVS/Repository  2009-03-25 15:24:01.947644600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/altera
diff -Naur u-boot-2009.03_orig/board/altera/CVS/Root u-boot-2009.03/board/altera/CVS/Root
--- u-boot-2009.03_orig/board/altera/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/altera/CVS/Root        2009-03-25 15:24:01.947644600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/altera/common/CVS/Entries u-boot-2009.03/board/altera/common/CVS/Entries
--- u-boot-2009.03_orig/board/altera/common/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/altera/common/CVS/Entries      2009-03-25 15:57:11.122084000 -0700
@@ -0,0 +1,6 @@
+/AMDLV065D.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/epled.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sevenseg.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sevenseg.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/altera/common/CVS/Entries.Extra u-boot-2009.03/board/altera/common/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/altera/common/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/altera/common/CVS/Entries.Extra        2009-03-25 15:57:11.122084000 -0700
@@ -0,0 +1,5 @@
+/AMDLV065D.c///1238019687/
+/epled.c///1238019687/
+/flash.c///1238019687/
+/sevenseg.c///1238019687/
+/sevenseg.h///1238019687/
diff -Naur u-boot-2009.03_orig/board/altera/common/CVS/Entries.Extra.Old u-boot-2009.03/board/altera/common/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/altera/common/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/altera/common/CVS/Entries.Extra.Old    2009-03-25 15:24:02.000000000 -0700
@@ -0,0 +1,5 @@
+/AMDLV065D.c///1238019687/
+/epled.c///1238019687/
+/flash.c///1238019687/
+/sevenseg.c///1238019687/
+/sevenseg.h///1238019687/
diff -Naur u-boot-2009.03_orig/board/altera/common/CVS/Entries.Old u-boot-2009.03/board/altera/common/CVS/Entries.Old
--- u-boot-2009.03_orig/board/altera/common/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/altera/common/CVS/Entries.Old  2009-03-25 15:24:02.000000000 -0700
@@ -0,0 +1,6 @@
+/AMDLV065D.c/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/epled.c/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/sevenseg.c/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/sevenseg.h/1.1.1.1/Wed Mar 25 22:21:27 2009//
+D
diff -Naur u-boot-2009.03_orig/board/altera/common/CVS/Repository u-boot-2009.03/board/altera/common/CVS/Repository
--- u-boot-2009.03_orig/board/altera/common/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/altera/common/CVS/Repository   2009-03-25 15:24:01.978894200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/altera/common
diff -Naur u-boot-2009.03_orig/board/altera/common/CVS/Root u-boot-2009.03/board/altera/common/CVS/Root
--- u-boot-2009.03_orig/board/altera/common/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/altera/common/CVS/Root 2009-03-25 15:24:01.963269400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/altera/dk1c20/CVS/Entries u-boot-2009.03/board/altera/dk1c20/CVS/Entries
--- u-boot-2009.03_orig/board/altera/dk1c20/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/altera/dk1c20/CVS/Entries      2009-03-25 15:57:11.184583600 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dk1c20.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/misc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/vectors.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/altera/dk1c20/CVS/Entries.Extra u-boot-2009.03/board/altera/dk1c20/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/altera/dk1c20/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/altera/dk1c20/CVS/Entries.Extra        2009-03-25 15:57:11.200208500 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019687/
+/config.mk///1238019687/
+/dk1c20.c///1238019687/
+/flash.c///1238019687/
+/misc.c///1238019687/
+/u-boot.lds///1238019687/
+/vectors.S///1238019687/
diff -Naur u-boot-2009.03_orig/board/altera/dk1c20/CVS/Entries.Extra.Old u-boot-2009.03/board/altera/dk1c20/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/altera/dk1c20/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/altera/dk1c20/CVS/Entries.Extra.Old    2009-03-25 15:24:02.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019687/
+/config.mk///1238019687/
+/dk1c20.c///1238019687/
+/flash.c///1238019687/
+/misc.c///1238019687/
+/u-boot.lds///1238019687/
+/vectors.S///1238019687/
diff -Naur u-boot-2009.03_orig/board/altera/dk1c20/CVS/Entries.Old u-boot-2009.03/board/altera/dk1c20/CVS/Entries.Old
--- u-boot-2009.03_orig/board/altera/dk1c20/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/altera/dk1c20/CVS/Entries.Old  2009-03-25 15:24:02.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/dk1c20.c/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/misc.c/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/vectors.S/1.1.1.1/Wed Mar 25 22:21:27 2009//
+D
diff -Naur u-boot-2009.03_orig/board/altera/dk1c20/CVS/Repository u-boot-2009.03/board/altera/dk1c20/CVS/Repository
--- u-boot-2009.03_orig/board/altera/dk1c20/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/altera/dk1c20/CVS/Repository   2009-03-25 15:24:02.119517400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/altera/dk1c20
diff -Naur u-boot-2009.03_orig/board/altera/dk1c20/CVS/Root u-boot-2009.03/board/altera/dk1c20/CVS/Root
--- u-boot-2009.03_orig/board/altera/dk1c20/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/altera/dk1c20/CVS/Root 2009-03-25 15:24:02.119517400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/altera/dk1s10/CVS/Entries u-boot-2009.03/board/altera/dk1s10/CVS/Entries
--- u-boot-2009.03_orig/board/altera/dk1s10/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/altera/dk1s10/CVS/Entries      2009-03-25 15:57:11.262708100 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dk1s10.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/misc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/vectors.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/altera/dk1s10/CVS/Entries.Extra u-boot-2009.03/board/altera/dk1s10/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/altera/dk1s10/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/altera/dk1s10/CVS/Entries.Extra        2009-03-25 15:57:11.262708100 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019687/
+/config.mk///1238019687/
+/dk1s10.c///1238019687/
+/flash.c///1238019687/
+/misc.c///1238019687/
+/u-boot.lds///1238019687/
+/vectors.S///1238019687/
diff -Naur u-boot-2009.03_orig/board/altera/dk1s10/CVS/Entries.Extra.Old u-boot-2009.03/board/altera/dk1s10/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/altera/dk1s10/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/altera/dk1s10/CVS/Entries.Extra.Old    2009-03-25 15:24:02.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019687/
+/config.mk///1238019687/
+/dk1s10.c///1238019687/
+/flash.c///1238019687/
+/misc.c///1238019687/
+/u-boot.lds///1238019687/
+/vectors.S///1238019687/
diff -Naur u-boot-2009.03_orig/board/altera/dk1s10/CVS/Entries.Old u-boot-2009.03/board/altera/dk1s10/CVS/Entries.Old
--- u-boot-2009.03_orig/board/altera/dk1s10/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/altera/dk1s10/CVS/Entries.Old  2009-03-25 15:24:02.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/dk1s10.c/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/misc.c/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/vectors.S/1.1.1.1/Wed Mar 25 22:21:27 2009//
+D
diff -Naur u-boot-2009.03_orig/board/altera/dk1s10/CVS/Repository u-boot-2009.03/board/altera/dk1s10/CVS/Repository
--- u-boot-2009.03_orig/board/altera/dk1s10/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/altera/dk1s10/CVS/Repository   2009-03-25 15:24:02.260140600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/altera/dk1s10
diff -Naur u-boot-2009.03_orig/board/altera/dk1s10/CVS/Root u-boot-2009.03/board/altera/dk1s10/CVS/Root
--- u-boot-2009.03_orig/board/altera/dk1s10/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/altera/dk1s10/CVS/Root 2009-03-25 15:24:02.260140600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/altera/ep1c20/CVS/Entries u-boot-2009.03/board/altera/ep1c20/CVS/Entries
--- u-boot-2009.03_orig/board/altera/ep1c20/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/altera/ep1c20/CVS/Entries      2009-03-25 15:57:11.356457500 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ep1c20.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/altera/ep1c20/CVS/Entries.Extra u-boot-2009.03/board/altera/ep1c20/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/altera/ep1c20/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/altera/ep1c20/CVS/Entries.Extra        2009-03-25 15:57:11.356457500 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019687/
+/config.mk///1238019687/
+/ep1c20.c///1238019687/
+/u-boot.lds///1238019687/
diff -Naur u-boot-2009.03_orig/board/altera/ep1c20/CVS/Entries.Extra.Old u-boot-2009.03/board/altera/ep1c20/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/altera/ep1c20/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/altera/ep1c20/CVS/Entries.Extra.Old    2009-03-25 15:24:02.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019687/
+/config.mk///1238019687/
+/ep1c20.c///1238019687/
+/u-boot.lds///1238019687/
diff -Naur u-boot-2009.03_orig/board/altera/ep1c20/CVS/Entries.Old u-boot-2009.03/board/altera/ep1c20/CVS/Entries.Old
--- u-boot-2009.03_orig/board/altera/ep1c20/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/altera/ep1c20/CVS/Entries.Old  2009-03-25 15:24:02.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/ep1c20.c/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:27 2009//
+D
diff -Naur u-boot-2009.03_orig/board/altera/ep1c20/CVS/Repository u-boot-2009.03/board/altera/ep1c20/CVS/Repository
--- u-boot-2009.03_orig/board/altera/ep1c20/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/altera/ep1c20/CVS/Repository   2009-03-25 15:24:02.494512600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/altera/ep1c20
diff -Naur u-boot-2009.03_orig/board/altera/ep1c20/CVS/Root u-boot-2009.03/board/altera/ep1c20/CVS/Root
--- u-boot-2009.03_orig/board/altera/ep1c20/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/altera/ep1c20/CVS/Root 2009-03-25 15:24:02.494512600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/altera/ep1s10/CVS/Entries u-boot-2009.03/board/altera/ep1s10/CVS/Entries
--- u-boot-2009.03_orig/board/altera/ep1s10/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/altera/ep1s10/CVS/Entries      2009-03-25 15:57:11.418957100 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ep1s10.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/altera/ep1s10/CVS/Entries.Extra u-boot-2009.03/board/altera/ep1s10/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/altera/ep1s10/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/altera/ep1s10/CVS/Entries.Extra        2009-03-25 15:57:11.418957100 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019687/
+/config.mk///1238019687/
+/ep1s10.c///1238019687/
+/u-boot.lds///1238019687/
diff -Naur u-boot-2009.03_orig/board/altera/ep1s10/CVS/Entries.Extra.Old u-boot-2009.03/board/altera/ep1s10/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/altera/ep1s10/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/altera/ep1s10/CVS/Entries.Extra.Old    2009-03-25 15:24:02.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019687/
+/config.mk///1238019687/
+/ep1s10.c///1238019687/
+/u-boot.lds///1238019687/
diff -Naur u-boot-2009.03_orig/board/altera/ep1s10/CVS/Entries.Old u-boot-2009.03/board/altera/ep1s10/CVS/Entries.Old
--- u-boot-2009.03_orig/board/altera/ep1s10/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/altera/ep1s10/CVS/Entries.Old  2009-03-25 15:24:02.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/ep1s10.c/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:27 2009//
+D
diff -Naur u-boot-2009.03_orig/board/altera/ep1s10/CVS/Repository u-boot-2009.03/board/altera/ep1s10/CVS/Repository
--- u-boot-2009.03_orig/board/altera/ep1s10/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/altera/ep1s10/CVS/Repository   2009-03-25 15:24:02.666385400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/altera/ep1s10
diff -Naur u-boot-2009.03_orig/board/altera/ep1s10/CVS/Root u-boot-2009.03/board/altera/ep1s10/CVS/Root
--- u-boot-2009.03_orig/board/altera/ep1s10/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/altera/ep1s10/CVS/Root 2009-03-25 15:24:02.666385400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/altera/ep1s40/CVS/Entries u-boot-2009.03/board/altera/ep1s40/CVS/Entries
--- u-boot-2009.03_orig/board/altera/ep1s40/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/altera/ep1s40/CVS/Entries      2009-03-25 15:57:11.497081600 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ep1s40.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/altera/ep1s40/CVS/Entries.Extra u-boot-2009.03/board/altera/ep1s40/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/altera/ep1s40/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/altera/ep1s40/CVS/Entries.Extra        2009-03-25 15:57:11.497081600 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019687/
+/config.mk///1238019687/
+/ep1s40.c///1238019687/
+/u-boot.lds///1238019687/
diff -Naur u-boot-2009.03_orig/board/altera/ep1s40/CVS/Entries.Extra.Old u-boot-2009.03/board/altera/ep1s40/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/altera/ep1s40/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/altera/ep1s40/CVS/Entries.Extra.Old    2009-03-25 15:24:02.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019687/
+/config.mk///1238019687/
+/ep1s40.c///1238019687/
+/u-boot.lds///1238019687/
diff -Naur u-boot-2009.03_orig/board/altera/ep1s40/CVS/Entries.Old u-boot-2009.03/board/altera/ep1s40/CVS/Entries.Old
--- u-boot-2009.03_orig/board/altera/ep1s40/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/altera/ep1s40/CVS/Entries.Old  2009-03-25 15:24:02.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/ep1s40.c/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:27 2009//
+D
diff -Naur u-boot-2009.03_orig/board/altera/ep1s40/CVS/Repository u-boot-2009.03/board/altera/ep1s40/CVS/Repository
--- u-boot-2009.03_orig/board/altera/ep1s40/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/altera/ep1s40/CVS/Repository   2009-03-25 15:24:02.760134200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/altera/ep1s40
diff -Naur u-boot-2009.03_orig/board/altera/ep1s40/CVS/Root u-boot-2009.03/board/altera/ep1s40/CVS/Root
--- u-boot-2009.03_orig/board/altera/ep1s40/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/altera/ep1s40/CVS/Root 2009-03-25 15:24:02.760134200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/amcc/CVS/Entries u-boot-2009.03/board/amcc/CVS/Entries
--- u-boot-2009.03_orig/board/amcc/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/CVS/Entries       2009-03-25 15:24:05.572598200 -0700
@@ -0,0 +1,18 @@
+D/acadia////
+D/bamboo////
+D/bubinga////
+D/canyonlands////
+D/common////
+D/ebony////
+D/katmai////
+D/kilauea////
+D/luan////
+D/makalu////
+D/ocotea////
+D/redwood////
+D/sequoia////
+D/taihu////
+D/taishan////
+D/walnut////
+D/yosemite////
+D/yucca////
diff -Naur u-boot-2009.03_orig/board/amcc/CVS/Entries.Extra u-boot-2009.03/board/amcc/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/amcc/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/CVS/Entries.Extra 2009-03-25 15:24:05.572598200 -0700
@@ -0,0 +1,18 @@
+D/acadia////
+D/bamboo////
+D/bubinga////
+D/canyonlands////
+D/common////
+D/ebony////
+D/katmai////
+D/kilauea////
+D/luan////
+D/makalu////
+D/ocotea////
+D/redwood////
+D/sequoia////
+D/taihu////
+D/taishan////
+D/walnut////
+D/yosemite////
+D/yucca////
diff -Naur u-boot-2009.03_orig/board/amcc/CVS/Repository u-boot-2009.03/board/amcc/CVS/Repository
--- u-boot-2009.03_orig/board/amcc/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/CVS/Repository    2009-03-25 15:24:02.900757400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/amcc
diff -Naur u-boot-2009.03_orig/board/amcc/CVS/Root u-boot-2009.03/board/amcc/CVS/Root
--- u-boot-2009.03_orig/board/amcc/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/CVS/Root  2009-03-25 15:24:02.900757400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/amcc/acadia/CVS/Entries u-boot-2009.03/board/amcc/acadia/CVS/Entries
--- u-boot-2009.03_orig/board/amcc/acadia/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/acadia/CVS/Entries        2009-03-25 15:57:11.590831000 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/acadia.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_acadia.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/memory.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pll.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot-nand.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/amcc/acadia/CVS/Entries.Extra u-boot-2009.03/board/amcc/acadia/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/amcc/acadia/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/acadia/CVS/Entries.Extra  2009-03-25 15:57:11.590831000 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019687/
+/acadia.c///1238019687/
+/cmd_acadia.c///1238019687/
+/config.mk///1238019687/
+/memory.c///1238019687/
+/pll.c///1238019687/
+/u-boot-nand.lds///1238019687/
+/u-boot.lds///1238019687/
diff -Naur u-boot-2009.03_orig/board/amcc/acadia/CVS/Entries.Extra.Old u-boot-2009.03/board/amcc/acadia/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/amcc/acadia/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/acadia/CVS/Entries.Extra.Old      2009-03-25 15:24:03.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019687/
+/acadia.c///1238019687/
+/cmd_acadia.c///1238019687/
+/config.mk///1238019687/
+/memory.c///1238019687/
+/pll.c///1238019687/
+/u-boot-nand.lds///1238019687/
+/u-boot.lds///1238019687/
diff -Naur u-boot-2009.03_orig/board/amcc/acadia/CVS/Entries.Old u-boot-2009.03/board/amcc/acadia/CVS/Entries.Old
--- u-boot-2009.03_orig/board/amcc/acadia/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/acadia/CVS/Entries.Old    2009-03-25 15:24:03.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/acadia.c/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/cmd_acadia.c/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/memory.c/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/pll.c/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/u-boot-nand.lds/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:27 2009//
+D
diff -Naur u-boot-2009.03_orig/board/amcc/acadia/CVS/Repository u-boot-2009.03/board/amcc/acadia/CVS/Repository
--- u-boot-2009.03_orig/board/amcc/acadia/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/acadia/CVS/Repository     2009-03-25 15:24:02.916382200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/amcc/acadia
diff -Naur u-boot-2009.03_orig/board/amcc/acadia/CVS/Root u-boot-2009.03/board/amcc/acadia/CVS/Root
--- u-boot-2009.03_orig/board/amcc/acadia/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/acadia/CVS/Root   2009-03-25 15:24:02.916382200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/amcc/bamboo/CVS/Entries u-boot-2009.03/board/amcc/bamboo/CVS/Entries
--- u-boot-2009.03_orig/board/amcc/bamboo/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/bamboo/CVS/Entries        2009-03-25 15:57:11.668955500 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bamboo.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bamboo.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot-nand.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/amcc/bamboo/CVS/Entries.Extra u-boot-2009.03/board/amcc/bamboo/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/amcc/bamboo/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/bamboo/CVS/Entries.Extra  2009-03-25 15:57:11.668955500 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019687/
+/bamboo.c///1238019687/
+/bamboo.h///1238019687/
+/config.mk///1238019687/
+/flash.c///1238019687/
+/init.S///1238019687/
+/u-boot-nand.lds///1238019687/
+/u-boot.lds///1238019687/
diff -Naur u-boot-2009.03_orig/board/amcc/bamboo/CVS/Entries.Extra.Old u-boot-2009.03/board/amcc/bamboo/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/amcc/bamboo/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/bamboo/CVS/Entries.Extra.Old      2009-03-25 15:24:03.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019687/
+/bamboo.c///1238019687/
+/bamboo.h///1238019687/
+/config.mk///1238019687/
+/flash.c///1238019687/
+/init.S///1238019687/
+/u-boot-nand.lds///1238019687/
+/u-boot.lds///1238019687/
diff -Naur u-boot-2009.03_orig/board/amcc/bamboo/CVS/Entries.Old u-boot-2009.03/board/amcc/bamboo/CVS/Entries.Old
--- u-boot-2009.03_orig/board/amcc/bamboo/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/bamboo/CVS/Entries.Old    2009-03-25 15:24:03.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/bamboo.c/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/bamboo.h/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/init.S/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/u-boot-nand.lds/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:27 2009//
+D
diff -Naur u-boot-2009.03_orig/board/amcc/bamboo/CVS/Repository u-boot-2009.03/board/amcc/bamboo/CVS/Repository
--- u-boot-2009.03_orig/board/amcc/bamboo/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/bamboo/CVS/Repository     2009-03-25 15:24:03.041380600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/amcc/bamboo
diff -Naur u-boot-2009.03_orig/board/amcc/bamboo/CVS/Root u-boot-2009.03/board/amcc/bamboo/CVS/Root
--- u-boot-2009.03_orig/board/amcc/bamboo/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/bamboo/CVS/Root   2009-03-25 15:24:03.041380600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/amcc/bubinga/CVS/Entries u-boot-2009.03/board/amcc/bubinga/CVS/Entries
--- u-boot-2009.03_orig/board/amcc/bubinga/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/bubinga/CVS/Entries       2009-03-25 15:57:11.747080000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bubinga.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/amcc/bubinga/CVS/Entries.Extra u-boot-2009.03/board/amcc/bubinga/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/amcc/bubinga/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/bubinga/CVS/Entries.Extra 2009-03-25 15:57:11.747080000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019687/
+/bubinga.c///1238019687/
+/config.mk///1238019687/
+/flash.c///1238019687/
+/u-boot.lds///1238019687/
diff -Naur u-boot-2009.03_orig/board/amcc/bubinga/CVS/Entries.Extra.Old u-boot-2009.03/board/amcc/bubinga/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/amcc/bubinga/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/bubinga/CVS/Entries.Extra.Old     2009-03-25 15:24:03.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019687/
+/bubinga.c///1238019687/
+/config.mk///1238019687/
+/flash.c///1238019687/
+/u-boot.lds///1238019687/
diff -Naur u-boot-2009.03_orig/board/amcc/bubinga/CVS/Entries.Old u-boot-2009.03/board/amcc/bubinga/CVS/Entries.Old
--- u-boot-2009.03_orig/board/amcc/bubinga/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/bubinga/CVS/Entries.Old   2009-03-25 15:24:03.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/bubinga.c/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:27 2009//
+D
diff -Naur u-boot-2009.03_orig/board/amcc/bubinga/CVS/Repository u-boot-2009.03/board/amcc/bubinga/CVS/Repository
--- u-boot-2009.03_orig/board/amcc/bubinga/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/bubinga/CVS/Repository    2009-03-25 15:24:03.197628600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/amcc/bubinga
diff -Naur u-boot-2009.03_orig/board/amcc/bubinga/CVS/Root u-boot-2009.03/board/amcc/bubinga/CVS/Root
--- u-boot-2009.03_orig/board/amcc/bubinga/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/bubinga/CVS/Root  2009-03-25 15:24:03.197628600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/amcc/canyonlands/CVS/Entries u-boot-2009.03/board/amcc/canyonlands/CVS/Entries
--- u-boot-2009.03_orig/board/amcc/canyonlands/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/canyonlands/CVS/Entries   2009-03-25 15:57:11.809579600 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bootstrap.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/canyonlands.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot-nand.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/amcc/canyonlands/CVS/Entries.Extra u-boot-2009.03/board/amcc/canyonlands/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/amcc/canyonlands/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/canyonlands/CVS/Entries.Extra     2009-03-25 15:57:11.809579600 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019687/
+/bootstrap.c///1238019687/
+/canyonlands.c///1238019687/
+/config.mk///1238019687/
+/init.S///1238019687/
+/u-boot-nand.lds///1238019687/
+/u-boot.lds///1238019687/
diff -Naur u-boot-2009.03_orig/board/amcc/canyonlands/CVS/Entries.Extra.Old u-boot-2009.03/board/amcc/canyonlands/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/amcc/canyonlands/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/canyonlands/CVS/Entries.Extra.Old 2009-03-25 15:24:03.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019687/
+/bootstrap.c///1238019687/
+/canyonlands.c///1238019687/
+/config.mk///1238019687/
+/init.S///1238019687/
+/u-boot-nand.lds///1238019687/
+/u-boot.lds///1238019687/
diff -Naur u-boot-2009.03_orig/board/amcc/canyonlands/CVS/Entries.Old u-boot-2009.03/board/amcc/canyonlands/CVS/Entries.Old
--- u-boot-2009.03_orig/board/amcc/canyonlands/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/canyonlands/CVS/Entries.Old       2009-03-25 15:24:03.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/bootstrap.c/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/canyonlands.c/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/init.S/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/u-boot-nand.lds/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:27 2009//
+D
diff -Naur u-boot-2009.03_orig/board/amcc/canyonlands/CVS/Repository u-boot-2009.03/board/amcc/canyonlands/CVS/Repository
--- u-boot-2009.03_orig/board/amcc/canyonlands/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/canyonlands/CVS/Repository        2009-03-25 15:24:03.322627000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/amcc/canyonlands
diff -Naur u-boot-2009.03_orig/board/amcc/canyonlands/CVS/Root u-boot-2009.03/board/amcc/canyonlands/CVS/Root
--- u-boot-2009.03_orig/board/amcc/canyonlands/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/canyonlands/CVS/Root      2009-03-25 15:24:03.307002200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/amcc/common/CVS/Entries u-boot-2009.03/board/amcc/common/CVS/Entries
--- u-boot-2009.03_orig/board/amcc/common/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/common/CVS/Entries        2009-03-25 15:57:11.872079200 -0700
@@ -0,0 +1,2 @@
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/amcc/common/CVS/Entries.Extra u-boot-2009.03/board/amcc/common/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/amcc/common/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/common/CVS/Entries.Extra  2009-03-25 15:57:11.872079200 -0700
@@ -0,0 +1 @@
+/flash.c///1238019687/
diff -Naur u-boot-2009.03_orig/board/amcc/common/CVS/Entries.Extra.Old u-boot-2009.03/board/amcc/common/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/amcc/common/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/common/CVS/Entries.Extra.Old      2009-03-25 15:24:03.000000000 -0700
@@ -0,0 +1 @@
+/flash.c///1238019687/
diff -Naur u-boot-2009.03_orig/board/amcc/common/CVS/Entries.Old u-boot-2009.03/board/amcc/common/CVS/Entries.Old
--- u-boot-2009.03_orig/board/amcc/common/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/common/CVS/Entries.Old    2009-03-25 15:24:03.000000000 -0700
@@ -0,0 +1,2 @@
+/flash.c/1.1.1.1/Wed Mar 25 22:21:27 2009//
+D
diff -Naur u-boot-2009.03_orig/board/amcc/common/CVS/Repository u-boot-2009.03/board/amcc/common/CVS/Repository
--- u-boot-2009.03_orig/board/amcc/common/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/common/CVS/Repository     2009-03-25 15:24:03.478875000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/amcc/common
diff -Naur u-boot-2009.03_orig/board/amcc/common/CVS/Root u-boot-2009.03/board/amcc/common/CVS/Root
--- u-boot-2009.03_orig/board/amcc/common/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/common/CVS/Root   2009-03-25 15:24:03.478875000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/amcc/ebony/CVS/Entries u-boot-2009.03/board/amcc/ebony/CVS/Entries
--- u-boot-2009.03_orig/board/amcc/ebony/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/ebony/CVS/Entries 2009-03-25 15:57:11.934578800 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ebony.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/amcc/ebony/CVS/Entries.Extra u-boot-2009.03/board/amcc/ebony/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/amcc/ebony/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/ebony/CVS/Entries.Extra   2009-03-25 15:57:11.934578800 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019687/
+/config.mk///1238019687/
+/ebony.c///1238019687/
+/flash.c///1238019687/
+/init.S///1238019687/
+/u-boot.lds///1238019687/
diff -Naur u-boot-2009.03_orig/board/amcc/ebony/CVS/Entries.Extra.Old u-boot-2009.03/board/amcc/ebony/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/amcc/ebony/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/ebony/CVS/Entries.Extra.Old       2009-03-25 15:24:03.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019687/
+/config.mk///1238019687/
+/ebony.c///1238019687/
+/flash.c///1238019687/
+/init.S///1238019687/
+/u-boot.lds///1238019687/
diff -Naur u-boot-2009.03_orig/board/amcc/ebony/CVS/Entries.Old u-boot-2009.03/board/amcc/ebony/CVS/Entries.Old
--- u-boot-2009.03_orig/board/amcc/ebony/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/ebony/CVS/Entries.Old     2009-03-25 15:24:03.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/ebony.c/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/init.S/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:27 2009//
+D
diff -Naur u-boot-2009.03_orig/board/amcc/ebony/CVS/Repository u-boot-2009.03/board/amcc/ebony/CVS/Repository
--- u-boot-2009.03_orig/board/amcc/ebony/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/ebony/CVS/Repository      2009-03-25 15:24:03.572623800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/amcc/ebony
diff -Naur u-boot-2009.03_orig/board/amcc/ebony/CVS/Root u-boot-2009.03/board/amcc/ebony/CVS/Root
--- u-boot-2009.03_orig/board/amcc/ebony/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/ebony/CVS/Root    2009-03-25 15:24:03.556999000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/amcc/katmai/CVS/Entries u-boot-2009.03/board/amcc/katmai/CVS/Entries
--- u-boot-2009.03_orig/board/amcc/katmai/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/katmai/CVS/Entries        2009-03-25 15:57:11.997078400 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_katmai.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/katmai.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/amcc/katmai/CVS/Entries.Extra u-boot-2009.03/board/amcc/katmai/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/amcc/katmai/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/katmai/CVS/Entries.Extra  2009-03-25 15:57:11.997078400 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019687/
+/cmd_katmai.c///1238019687/
+/config.mk///1238019687/
+/init.S///1238019687/
+/katmai.c///1238019687/
+/u-boot.lds///1238019687/
diff -Naur u-boot-2009.03_orig/board/amcc/katmai/CVS/Entries.Extra.Old u-boot-2009.03/board/amcc/katmai/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/amcc/katmai/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/katmai/CVS/Entries.Extra.Old      2009-03-25 15:24:03.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019687/
+/cmd_katmai.c///1238019687/
+/config.mk///1238019687/
+/init.S///1238019687/
+/katmai.c///1238019687/
+/u-boot.lds///1238019687/
diff -Naur u-boot-2009.03_orig/board/amcc/katmai/CVS/Entries.Old u-boot-2009.03/board/amcc/katmai/CVS/Entries.Old
--- u-boot-2009.03_orig/board/amcc/katmai/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/katmai/CVS/Entries.Old    2009-03-25 15:24:03.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/cmd_katmai.c/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/init.S/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/katmai.c/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:27 2009//
+D
diff -Naur u-boot-2009.03_orig/board/amcc/katmai/CVS/Repository u-boot-2009.03/board/amcc/katmai/CVS/Repository
--- u-boot-2009.03_orig/board/amcc/katmai/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/katmai/CVS/Repository     2009-03-25 15:24:03.697622200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/amcc/katmai
diff -Naur u-boot-2009.03_orig/board/amcc/katmai/CVS/Root u-boot-2009.03/board/amcc/katmai/CVS/Root
--- u-boot-2009.03_orig/board/amcc/katmai/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/katmai/CVS/Root   2009-03-25 15:24:03.681997400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/amcc/kilauea/CVS/Entries u-boot-2009.03/board/amcc/kilauea/CVS/Entries
--- u-boot-2009.03_orig/board/amcc/kilauea/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/kilauea/CVS/Entries       2009-03-25 15:57:12.090827800 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_pll.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/kilauea.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot-nand.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/amcc/kilauea/CVS/Entries.Extra u-boot-2009.03/board/amcc/kilauea/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/amcc/kilauea/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/kilauea/CVS/Entries.Extra 2009-03-25 15:57:12.090827800 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019687/
+/cmd_pll.c///1238019687/
+/config.mk///1238019687/
+/kilauea.c///1238019687/
+/u-boot-nand.lds///1238019687/
+/u-boot.lds///1238019687/
diff -Naur u-boot-2009.03_orig/board/amcc/kilauea/CVS/Entries.Extra.Old u-boot-2009.03/board/amcc/kilauea/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/amcc/kilauea/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/kilauea/CVS/Entries.Extra.Old     2009-03-25 15:24:03.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019687/
+/cmd_pll.c///1238019687/
+/config.mk///1238019687/
+/kilauea.c///1238019687/
+/u-boot-nand.lds///1238019687/
+/u-boot.lds///1238019687/
diff -Naur u-boot-2009.03_orig/board/amcc/kilauea/CVS/Entries.Old u-boot-2009.03/board/amcc/kilauea/CVS/Entries.Old
--- u-boot-2009.03_orig/board/amcc/kilauea/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/kilauea/CVS/Entries.Old   2009-03-25 15:24:03.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/cmd_pll.c/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/kilauea.c/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/u-boot-nand.lds/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:27 2009//
+D
diff -Naur u-boot-2009.03_orig/board/amcc/kilauea/CVS/Repository u-boot-2009.03/board/amcc/kilauea/CVS/Repository
--- u-boot-2009.03_orig/board/amcc/kilauea/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/kilauea/CVS/Repository    2009-03-25 15:24:03.806995800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/amcc/kilauea
diff -Naur u-boot-2009.03_orig/board/amcc/kilauea/CVS/Root u-boot-2009.03/board/amcc/kilauea/CVS/Root
--- u-boot-2009.03_orig/board/amcc/kilauea/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/kilauea/CVS/Root  2009-03-25 15:24:03.806995800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/amcc/luan/CVS/Entries u-boot-2009.03/board/amcc/luan/CVS/Entries
--- u-boot-2009.03_orig/board/amcc/luan/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/luan/CVS/Entries  2009-03-25 15:57:12.168952300 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/epld.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/luan.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/amcc/luan/CVS/Entries.Extra u-boot-2009.03/board/amcc/luan/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/amcc/luan/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/luan/CVS/Entries.Extra    2009-03-25 15:57:12.184577200 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019687/
+/config.mk///1238019687/
+/epld.h///1238019687/
+/flash.c///1238019687/
+/init.S///1238019687/
+/luan.c///1238019687/
+/u-boot.lds///1238019687/
diff -Naur u-boot-2009.03_orig/board/amcc/luan/CVS/Entries.Extra.Old u-boot-2009.03/board/amcc/luan/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/amcc/luan/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/luan/CVS/Entries.Extra.Old        2009-03-25 15:24:04.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019687/
+/config.mk///1238019687/
+/epld.h///1238019687/
+/flash.c///1238019687/
+/init.S///1238019687/
+/luan.c///1238019687/
+/u-boot.lds///1238019687/
diff -Naur u-boot-2009.03_orig/board/amcc/luan/CVS/Entries.Old u-boot-2009.03/board/amcc/luan/CVS/Entries.Old
--- u-boot-2009.03_orig/board/amcc/luan/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/luan/CVS/Entries.Old      2009-03-25 15:24:04.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/epld.h/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/init.S/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/luan.c/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:27 2009//
+D
diff -Naur u-boot-2009.03_orig/board/amcc/luan/CVS/Repository u-boot-2009.03/board/amcc/luan/CVS/Repository
--- u-boot-2009.03_orig/board/amcc/luan/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/luan/CVS/Repository       2009-03-25 15:24:03.947619000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/amcc/luan
diff -Naur u-boot-2009.03_orig/board/amcc/luan/CVS/Root u-boot-2009.03/board/amcc/luan/CVS/Root
--- u-boot-2009.03_orig/board/amcc/luan/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/luan/CVS/Root     2009-03-25 15:24:03.947619000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/amcc/makalu/CVS/Entries u-boot-2009.03/board/amcc/makalu/CVS/Entries
--- u-boot-2009.03_orig/board/amcc/makalu/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/makalu/CVS/Entries        2009-03-25 15:57:12.262701700 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_pll.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/makalu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/amcc/makalu/CVS/Entries.Extra u-boot-2009.03/board/amcc/makalu/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/amcc/makalu/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/makalu/CVS/Entries.Extra  2009-03-25 15:57:12.262701700 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019687/
+/cmd_pll.c///1238019687/
+/config.mk///1238019687/
+/init.S///1238019687/
+/makalu.c///1238019687/
+/u-boot.lds///1238019687/
diff -Naur u-boot-2009.03_orig/board/amcc/makalu/CVS/Entries.Extra.Old u-boot-2009.03/board/amcc/makalu/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/amcc/makalu/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/makalu/CVS/Entries.Extra.Old      2009-03-25 15:24:04.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019687/
+/cmd_pll.c///1238019687/
+/config.mk///1238019687/
+/init.S///1238019687/
+/makalu.c///1238019687/
+/u-boot.lds///1238019687/
diff -Naur u-boot-2009.03_orig/board/amcc/makalu/CVS/Entries.Old u-boot-2009.03/board/amcc/makalu/CVS/Entries.Old
--- u-boot-2009.03_orig/board/amcc/makalu/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/makalu/CVS/Entries.Old    2009-03-25 15:24:04.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/cmd_pll.c/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/init.S/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/makalu.c/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:27 2009//
+D
diff -Naur u-boot-2009.03_orig/board/amcc/makalu/CVS/Repository u-boot-2009.03/board/amcc/makalu/CVS/Repository
--- u-boot-2009.03_orig/board/amcc/makalu/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/makalu/CVS/Repository     2009-03-25 15:24:04.103867000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/amcc/makalu
diff -Naur u-boot-2009.03_orig/board/amcc/makalu/CVS/Root u-boot-2009.03/board/amcc/makalu/CVS/Root
--- u-boot-2009.03_orig/board/amcc/makalu/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/makalu/CVS/Root   2009-03-25 15:24:04.103867000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/amcc/ocotea/CVS/Entries u-boot-2009.03/board/amcc/ocotea/CVS/Entries
--- u-boot-2009.03_orig/board/amcc/ocotea/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/ocotea/CVS/Entries        2009-03-25 15:57:12.356451100 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ocotea.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ocotea.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/amcc/ocotea/CVS/Entries.Extra u-boot-2009.03/board/amcc/ocotea/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/amcc/ocotea/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/ocotea/CVS/Entries.Extra  2009-03-25 15:57:12.356451100 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019687/
+/config.mk///1238019687/
+/flash.c///1238019687/
+/init.S///1238019687/
+/ocotea.c///1238019687/
+/ocotea.h///1238019687/
+/u-boot.lds///1238019687/
diff -Naur u-boot-2009.03_orig/board/amcc/ocotea/CVS/Entries.Extra.Old u-boot-2009.03/board/amcc/ocotea/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/amcc/ocotea/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/ocotea/CVS/Entries.Extra.Old      2009-03-25 15:24:04.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019687/
+/config.mk///1238019687/
+/flash.c///1238019687/
+/init.S///1238019687/
+/ocotea.c///1238019687/
+/ocotea.h///1238019687/
+/u-boot.lds///1238019687/
diff -Naur u-boot-2009.03_orig/board/amcc/ocotea/CVS/Entries.Old u-boot-2009.03/board/amcc/ocotea/CVS/Entries.Old
--- u-boot-2009.03_orig/board/amcc/ocotea/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/ocotea/CVS/Entries.Old    2009-03-25 15:24:04.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/init.S/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/ocotea.c/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/ocotea.h/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:27 2009//
+D
diff -Naur u-boot-2009.03_orig/board/amcc/ocotea/CVS/Repository u-boot-2009.03/board/amcc/ocotea/CVS/Repository
--- u-boot-2009.03_orig/board/amcc/ocotea/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/ocotea/CVS/Repository     2009-03-25 15:24:04.228865400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/amcc/ocotea
diff -Naur u-boot-2009.03_orig/board/amcc/ocotea/CVS/Root u-boot-2009.03/board/amcc/ocotea/CVS/Root
--- u-boot-2009.03_orig/board/amcc/ocotea/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/ocotea/CVS/Root   2009-03-25 15:24:04.228865400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/amcc/redwood/CVS/Entries u-boot-2009.03/board/amcc/redwood/CVS/Entries
--- u-boot-2009.03_orig/board/amcc/redwood/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/redwood/CVS/Entries       2009-03-25 15:57:12.434575600 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/redwood.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/redwood.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/amcc/redwood/CVS/Entries.Extra u-boot-2009.03/board/amcc/redwood/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/amcc/redwood/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/redwood/CVS/Entries.Extra 2009-03-25 15:57:12.450200500 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019688/
+/config.mk///1238019687/
+/init.S///1238019687/
+/redwood.c///1238019688/
+/redwood.h///1238019688/
+/u-boot.lds///1238019688/
diff -Naur u-boot-2009.03_orig/board/amcc/redwood/CVS/Entries.Extra.Old u-boot-2009.03/board/amcc/redwood/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/amcc/redwood/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/redwood/CVS/Entries.Extra.Old     2009-03-25 15:24:04.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019688/
+/config.mk///1238019687/
+/init.S///1238019687/
+/redwood.c///1238019688/
+/redwood.h///1238019688/
+/u-boot.lds///1238019688/
diff -Naur u-boot-2009.03_orig/board/amcc/redwood/CVS/Entries.Old u-boot-2009.03/board/amcc/redwood/CVS/Entries.Old
--- u-boot-2009.03_orig/board/amcc/redwood/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/redwood/CVS/Entries.Old   2009-03-25 15:24:04.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/init.S/1.1.1.1/Wed Mar 25 22:21:27 2009//
+/redwood.c/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/redwood.h/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:28 2009//
+D
diff -Naur u-boot-2009.03_orig/board/amcc/redwood/CVS/Repository u-boot-2009.03/board/amcc/redwood/CVS/Repository
--- u-boot-2009.03_orig/board/amcc/redwood/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/redwood/CVS/Repository    2009-03-25 15:24:04.556986200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/amcc/redwood
diff -Naur u-boot-2009.03_orig/board/amcc/redwood/CVS/Root u-boot-2009.03/board/amcc/redwood/CVS/Root
--- u-boot-2009.03_orig/board/amcc/redwood/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/redwood/CVS/Root  2009-03-25 15:24:04.556986200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/amcc/sequoia/CVS/Entries u-boot-2009.03/board/amcc/sequoia/CVS/Entries
--- u-boot-2009.03_orig/board/amcc/sequoia/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/sequoia/CVS/Entries       2009-03-25 15:57:12.512700100 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_sequoia.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sdram.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sequoia.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot-nand.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/amcc/sequoia/CVS/Entries.Extra u-boot-2009.03/board/amcc/sequoia/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/amcc/sequoia/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/sequoia/CVS/Entries.Extra 2009-03-25 15:57:12.512700100 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019688/
+/cmd_sequoia.c///1238019688/
+/config.mk///1238019688/
+/init.S///1238019688/
+/sdram.c///1238019688/
+/sequoia.c///1238019688/
+/u-boot-nand.lds///1238019688/
+/u-boot.lds///1238019688/
diff -Naur u-boot-2009.03_orig/board/amcc/sequoia/CVS/Entries.Extra.Old u-boot-2009.03/board/amcc/sequoia/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/amcc/sequoia/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/sequoia/CVS/Entries.Extra.Old     2009-03-25 15:24:04.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019688/
+/cmd_sequoia.c///1238019688/
+/config.mk///1238019688/
+/init.S///1238019688/
+/sdram.c///1238019688/
+/sequoia.c///1238019688/
+/u-boot-nand.lds///1238019688/
+/u-boot.lds///1238019688/
diff -Naur u-boot-2009.03_orig/board/amcc/sequoia/CVS/Entries.Old u-boot-2009.03/board/amcc/sequoia/CVS/Entries.Old
--- u-boot-2009.03_orig/board/amcc/sequoia/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/sequoia/CVS/Entries.Old   2009-03-25 15:24:04.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/cmd_sequoia.c/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/init.S/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/sdram.c/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/sequoia.c/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/u-boot-nand.lds/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:28 2009//
+D
diff -Naur u-boot-2009.03_orig/board/amcc/sequoia/CVS/Repository u-boot-2009.03/board/amcc/sequoia/CVS/Repository
--- u-boot-2009.03_orig/board/amcc/sequoia/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/sequoia/CVS/Repository    2009-03-25 15:24:04.681984600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/amcc/sequoia
diff -Naur u-boot-2009.03_orig/board/amcc/sequoia/CVS/Root u-boot-2009.03/board/amcc/sequoia/CVS/Root
--- u-boot-2009.03_orig/board/amcc/sequoia/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/sequoia/CVS/Root  2009-03-25 15:24:04.681984600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/amcc/taihu/CVS/Entries u-boot-2009.03/board/amcc/taihu/CVS/Entries
--- u-boot-2009.03_orig/board/amcc/taihu/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/taihu/CVS/Entries 2009-03-25 15:57:12.590824600 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lcd.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/taihu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/update.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/amcc/taihu/CVS/Entries.Extra u-boot-2009.03/board/amcc/taihu/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/amcc/taihu/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/taihu/CVS/Entries.Extra   2009-03-25 15:57:12.590824600 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019688/
+/config.mk///1238019688/
+/flash.c///1238019688/
+/lcd.c///1238019688/
+/taihu.c///1238019688/
+/u-boot.lds///1238019688/
+/update.c///1238019688/
diff -Naur u-boot-2009.03_orig/board/amcc/taihu/CVS/Entries.Extra.Old u-boot-2009.03/board/amcc/taihu/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/amcc/taihu/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/taihu/CVS/Entries.Extra.Old       2009-03-25 15:24:04.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019688/
+/config.mk///1238019688/
+/flash.c///1238019688/
+/lcd.c///1238019688/
+/taihu.c///1238019688/
+/u-boot.lds///1238019688/
+/update.c///1238019688/
diff -Naur u-boot-2009.03_orig/board/amcc/taihu/CVS/Entries.Old u-boot-2009.03/board/amcc/taihu/CVS/Entries.Old
--- u-boot-2009.03_orig/board/amcc/taihu/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/taihu/CVS/Entries.Old     2009-03-25 15:24:04.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/lcd.c/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/taihu.c/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/update.c/1.1.1.1/Wed Mar 25 22:21:28 2009//
+D
diff -Naur u-boot-2009.03_orig/board/amcc/taihu/CVS/Repository u-boot-2009.03/board/amcc/taihu/CVS/Repository
--- u-boot-2009.03_orig/board/amcc/taihu/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/taihu/CVS/Repository      2009-03-25 15:24:04.838232600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/amcc/taihu
diff -Naur u-boot-2009.03_orig/board/amcc/taihu/CVS/Root u-boot-2009.03/board/amcc/taihu/CVS/Root
--- u-boot-2009.03_orig/board/amcc/taihu/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/taihu/CVS/Root    2009-03-25 15:24:04.838232600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/amcc/taishan/CVS/Entries u-boot-2009.03/board/amcc/taishan/CVS/Entries
--- u-boot-2009.03_orig/board/amcc/taishan/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/taishan/CVS/Entries       2009-03-25 15:57:12.668949100 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lcd.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/showinfo.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/taishan.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/update.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/amcc/taishan/CVS/Entries.Extra u-boot-2009.03/board/amcc/taishan/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/amcc/taishan/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/taishan/CVS/Entries.Extra 2009-03-25 15:57:12.668949100 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019688/
+/config.mk///1238019688/
+/init.S///1238019688/
+/lcd.c///1238019688/
+/showinfo.c///1238019688/
+/taishan.c///1238019688/
+/u-boot.lds///1238019688/
+/update.c///1238019688/
diff -Naur u-boot-2009.03_orig/board/amcc/taishan/CVS/Entries.Extra.Old u-boot-2009.03/board/amcc/taishan/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/amcc/taishan/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/taishan/CVS/Entries.Extra.Old     2009-03-25 15:24:05.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019688/
+/config.mk///1238019688/
+/init.S///1238019688/
+/lcd.c///1238019688/
+/showinfo.c///1238019688/
+/taishan.c///1238019688/
+/u-boot.lds///1238019688/
+/update.c///1238019688/
diff -Naur u-boot-2009.03_orig/board/amcc/taishan/CVS/Entries.Old u-boot-2009.03/board/amcc/taishan/CVS/Entries.Old
--- u-boot-2009.03_orig/board/amcc/taishan/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/taishan/CVS/Entries.Old   2009-03-25 15:24:05.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/init.S/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/lcd.c/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/showinfo.c/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/taishan.c/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/update.c/1.1.1.1/Wed Mar 25 22:21:28 2009//
+D
diff -Naur u-boot-2009.03_orig/board/amcc/taishan/CVS/Repository u-boot-2009.03/board/amcc/taishan/CVS/Repository
--- u-boot-2009.03_orig/board/amcc/taishan/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/taishan/CVS/Repository    2009-03-25 15:24:04.978855800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/amcc/taishan
diff -Naur u-boot-2009.03_orig/board/amcc/taishan/CVS/Root u-boot-2009.03/board/amcc/taishan/CVS/Root
--- u-boot-2009.03_orig/board/amcc/taishan/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/taishan/CVS/Root  2009-03-25 15:24:04.978855800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/amcc/walnut/CVS/Entries u-boot-2009.03/board/amcc/walnut/CVS/Entries
--- u-boot-2009.03_orig/board/amcc/walnut/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/walnut/CVS/Entries        2009-03-25 15:57:12.731448700 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/walnut.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/amcc/walnut/CVS/Entries.Extra u-boot-2009.03/board/amcc/walnut/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/amcc/walnut/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/walnut/CVS/Entries.Extra  2009-03-25 15:57:12.731448700 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019688/
+/config.mk///1238019688/
+/flash.c///1238019688/
+/u-boot.lds///1238019688/
+/walnut.c///1238019688/
diff -Naur u-boot-2009.03_orig/board/amcc/walnut/CVS/Entries.Extra.Old u-boot-2009.03/board/amcc/walnut/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/amcc/walnut/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/walnut/CVS/Entries.Extra.Old      2009-03-25 15:24:05.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019688/
+/config.mk///1238019688/
+/flash.c///1238019688/
+/u-boot.lds///1238019688/
+/walnut.c///1238019688/
diff -Naur u-boot-2009.03_orig/board/amcc/walnut/CVS/Entries.Old u-boot-2009.03/board/amcc/walnut/CVS/Entries.Old
--- u-boot-2009.03_orig/board/amcc/walnut/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/walnut/CVS/Entries.Old    2009-03-25 15:24:05.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/walnut.c/1.1.1.1/Wed Mar 25 22:21:28 2009//
+D
diff -Naur u-boot-2009.03_orig/board/amcc/walnut/CVS/Repository u-boot-2009.03/board/amcc/walnut/CVS/Repository
--- u-boot-2009.03_orig/board/amcc/walnut/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/walnut/CVS/Repository     2009-03-25 15:24:05.135103800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/amcc/walnut
diff -Naur u-boot-2009.03_orig/board/amcc/walnut/CVS/Root u-boot-2009.03/board/amcc/walnut/CVS/Root
--- u-boot-2009.03_orig/board/amcc/walnut/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/walnut/CVS/Root   2009-03-25 15:24:05.119479000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/amcc/yosemite/CVS/Entries u-boot-2009.03/board/amcc/yosemite/CVS/Entries
--- u-boot-2009.03_orig/board/amcc/yosemite/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/yosemite/CVS/Entries      2009-03-25 15:57:12.793948300 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yosemite.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/amcc/yosemite/CVS/Entries.Extra u-boot-2009.03/board/amcc/yosemite/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/amcc/yosemite/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/yosemite/CVS/Entries.Extra        2009-03-25 15:57:12.793948300 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019688/
+/config.mk///1238019688/
+/init.S///1238019688/
+/u-boot.lds///1238019688/
+/yosemite.c///1238019688/
diff -Naur u-boot-2009.03_orig/board/amcc/yosemite/CVS/Entries.Extra.Old u-boot-2009.03/board/amcc/yosemite/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/amcc/yosemite/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/yosemite/CVS/Entries.Extra.Old    2009-03-25 15:24:05.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019688/
+/config.mk///1238019688/
+/init.S///1238019688/
+/u-boot.lds///1238019688/
+/yosemite.c///1238019688/
diff -Naur u-boot-2009.03_orig/board/amcc/yosemite/CVS/Entries.Old u-boot-2009.03/board/amcc/yosemite/CVS/Entries.Old
--- u-boot-2009.03_orig/board/amcc/yosemite/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/yosemite/CVS/Entries.Old  2009-03-25 15:24:05.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/init.S/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/yosemite.c/1.1.1.1/Wed Mar 25 22:21:28 2009//
+D
diff -Naur u-boot-2009.03_orig/board/amcc/yosemite/CVS/Repository u-boot-2009.03/board/amcc/yosemite/CVS/Repository
--- u-boot-2009.03_orig/board/amcc/yosemite/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/yosemite/CVS/Repository   2009-03-25 15:24:05.228852600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/amcc/yosemite
diff -Naur u-boot-2009.03_orig/board/amcc/yosemite/CVS/Root u-boot-2009.03/board/amcc/yosemite/CVS/Root
--- u-boot-2009.03_orig/board/amcc/yosemite/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/yosemite/CVS/Root 2009-03-25 15:24:05.228852600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/amcc/yucca/CVS/Entries u-boot-2009.03/board/amcc/yucca/CVS/Entries
--- u-boot-2009.03_orig/board/amcc/yucca/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/yucca/CVS/Entries 2009-03-25 15:57:12.872072800 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_yucca.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yucca.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yucca.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/amcc/yucca/CVS/Entries.Extra u-boot-2009.03/board/amcc/yucca/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/amcc/yucca/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/yucca/CVS/Entries.Extra   2009-03-25 15:57:12.872072800 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019688/
+/cmd_yucca.c///1238019688/
+/config.mk///1238019688/
+/flash.c///1238019688/
+/init.S///1238019688/
+/u-boot.lds///1238019688/
+/yucca.c///1238019688/
+/yucca.h///1238019688/
diff -Naur u-boot-2009.03_orig/board/amcc/yucca/CVS/Entries.Extra.Old u-boot-2009.03/board/amcc/yucca/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/amcc/yucca/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/yucca/CVS/Entries.Extra.Old       2009-03-25 15:24:05.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019688/
+/cmd_yucca.c///1238019688/
+/config.mk///1238019688/
+/flash.c///1238019688/
+/init.S///1238019688/
+/u-boot.lds///1238019688/
+/yucca.c///1238019688/
+/yucca.h///1238019688/
diff -Naur u-boot-2009.03_orig/board/amcc/yucca/CVS/Entries.Old u-boot-2009.03/board/amcc/yucca/CVS/Entries.Old
--- u-boot-2009.03_orig/board/amcc/yucca/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/yucca/CVS/Entries.Old     2009-03-25 15:24:05.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/cmd_yucca.c/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/init.S/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/yucca.c/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/yucca.h/1.1.1.1/Wed Mar 25 22:21:28 2009//
+D
diff -Naur u-boot-2009.03_orig/board/amcc/yucca/CVS/Repository u-boot-2009.03/board/amcc/yucca/CVS/Repository
--- u-boot-2009.03_orig/board/amcc/yucca/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/yucca/CVS/Repository      2009-03-25 15:24:05.338226200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/amcc/yucca
diff -Naur u-boot-2009.03_orig/board/amcc/yucca/CVS/Root u-boot-2009.03/board/amcc/yucca/CVS/Root
--- u-boot-2009.03_orig/board/amcc/yucca/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amcc/yucca/CVS/Root    2009-03-25 15:24:05.322601400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/amirix/CVS/Entries u-boot-2009.03/board/amirix/CVS/Entries
--- u-boot-2009.03_orig/board/amirix/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amirix/CVS/Entries     2009-03-25 15:24:05.806970200 -0700
@@ -0,0 +1 @@
+D/ap1000////
diff -Naur u-boot-2009.03_orig/board/amirix/CVS/Entries.Extra u-boot-2009.03/board/amirix/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/amirix/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amirix/CVS/Entries.Extra       2009-03-25 15:24:05.806970200 -0700
@@ -0,0 +1 @@
+D/ap1000////
diff -Naur u-boot-2009.03_orig/board/amirix/CVS/Repository u-boot-2009.03/board/amirix/CVS/Repository
--- u-boot-2009.03_orig/board/amirix/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amirix/CVS/Repository  2009-03-25 15:24:05.619472600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/amirix
diff -Naur u-boot-2009.03_orig/board/amirix/CVS/Root u-boot-2009.03/board/amirix/CVS/Root
--- u-boot-2009.03_orig/board/amirix/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amirix/CVS/Root        2009-03-25 15:24:05.619472600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/amirix/ap1000/CVS/Entries u-boot-2009.03/board/amirix/ap1000/CVS/Entries
--- u-boot-2009.03_orig/board/amirix/ap1000/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amirix/ap1000/CVS/Entries      2009-03-25 15:57:12.965822200 -0700
@@ -0,0 +1,12 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ap1000.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ap1000.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/powerspan.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/powerspan.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/amirix/ap1000/CVS/Entries.Extra u-boot-2009.03/board/amirix/ap1000/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/amirix/ap1000/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amirix/ap1000/CVS/Entries.Extra        2009-03-25 15:57:12.981447100 -0700
@@ -0,0 +1,11 @@
+/Makefile///1238019688/
+/ap1000.c///1238019688/
+/ap1000.h///1238019688/
+/config.mk///1238019688/
+/flash.c///1238019688/
+/init.S///1238019688/
+/pci.c///1238019688/
+/powerspan.c///1238019688/
+/powerspan.h///1238019688/
+/serial.c///1238019688/
+/u-boot.lds///1238019688/
diff -Naur u-boot-2009.03_orig/board/amirix/ap1000/CVS/Entries.Extra.Old u-boot-2009.03/board/amirix/ap1000/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/amirix/ap1000/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amirix/ap1000/CVS/Entries.Extra.Old    2009-03-25 15:24:05.000000000 -0700
@@ -0,0 +1,11 @@
+/Makefile///1238019688/
+/ap1000.c///1238019688/
+/ap1000.h///1238019688/
+/config.mk///1238019688/
+/flash.c///1238019688/
+/init.S///1238019688/
+/pci.c///1238019688/
+/powerspan.c///1238019688/
+/powerspan.h///1238019688/
+/serial.c///1238019688/
+/u-boot.lds///1238019688/
diff -Naur u-boot-2009.03_orig/board/amirix/ap1000/CVS/Entries.Old u-boot-2009.03/board/amirix/ap1000/CVS/Entries.Old
--- u-boot-2009.03_orig/board/amirix/ap1000/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amirix/ap1000/CVS/Entries.Old  2009-03-25 15:24:05.000000000 -0700
@@ -0,0 +1,12 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/ap1000.c/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/ap1000.h/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/init.S/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/pci.c/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/powerspan.c/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/powerspan.h/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/serial.c/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:28 2009//
+D
diff -Naur u-boot-2009.03_orig/board/amirix/ap1000/CVS/Repository u-boot-2009.03/board/amirix/ap1000/CVS/Repository
--- u-boot-2009.03_orig/board/amirix/ap1000/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amirix/ap1000/CVS/Repository   2009-03-25 15:24:05.650722200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/amirix/ap1000
diff -Naur u-boot-2009.03_orig/board/amirix/ap1000/CVS/Root u-boot-2009.03/board/amirix/ap1000/CVS/Root
--- u-boot-2009.03_orig/board/amirix/ap1000/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/amirix/ap1000/CVS/Root 2009-03-25 15:24:05.635097400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/apollon/CVS/Entries u-boot-2009.03/board/apollon/CVS/Entries
--- u-boot-2009.03_orig/board/apollon/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/apollon/CVS/Entries    2009-03-25 15:57:13.122071200 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/apollon.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mem.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mem.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sys_info.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/apollon/CVS/Entries.Extra u-boot-2009.03/board/apollon/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/apollon/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/apollon/CVS/Entries.Extra      2009-03-25 15:57:13.122071200 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019688/
+/apollon.c///1238019688/
+/config.mk///1238019688/
+/lowlevel_init.S///1238019688/
+/mem.c///1238019688/
+/mem.h///1238019688/
+/sys_info.c///1238019688/
+/u-boot.lds///1238019688/
diff -Naur u-boot-2009.03_orig/board/apollon/CVS/Entries.Extra.Old u-boot-2009.03/board/apollon/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/apollon/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/apollon/CVS/Entries.Extra.Old  2009-03-25 15:24:05.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019688/
+/apollon.c///1238019688/
+/config.mk///1238019688/
+/lowlevel_init.S///1238019688/
+/mem.c///1238019688/
+/mem.h///1238019688/
+/sys_info.c///1238019688/
+/u-boot.lds///1238019688/
diff -Naur u-boot-2009.03_orig/board/apollon/CVS/Entries.Old u-boot-2009.03/board/apollon/CVS/Entries.Old
--- u-boot-2009.03_orig/board/apollon/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/apollon/CVS/Entries.Old        2009-03-25 15:24:05.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/apollon.c/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/mem.c/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/mem.h/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/sys_info.c/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:28 2009//
+D
diff -Naur u-boot-2009.03_orig/board/apollon/CVS/Repository u-boot-2009.03/board/apollon/CVS/Repository
--- u-boot-2009.03_orig/board/apollon/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/apollon/CVS/Repository 2009-03-25 15:24:05.853844600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/apollon
diff -Naur u-boot-2009.03_orig/board/apollon/CVS/Root u-boot-2009.03/board/apollon/CVS/Root
--- u-boot-2009.03_orig/board/apollon/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/apollon/CVS/Root       2009-03-25 15:24:05.853844600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/armadillo/CVS/Entries u-boot-2009.03/board/armadillo/CVS/Entries
--- u-boot-2009.03_orig/board/armadillo/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/armadillo/CVS/Entries  2009-03-25 15:57:13.200195700 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/armadillo.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/armadillo/CVS/Entries.Extra u-boot-2009.03/board/armadillo/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/armadillo/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/armadillo/CVS/Entries.Extra    2009-03-25 15:57:13.200195700 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019688/
+/armadillo.c///1238019688/
+/config.mk///1238019688/
+/flash.c///1238019688/
+/lowlevel_init.S///1238019688/
+/u-boot.lds///1238019688/
diff -Naur u-boot-2009.03_orig/board/armadillo/CVS/Entries.Extra.Old u-boot-2009.03/board/armadillo/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/armadillo/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/armadillo/CVS/Entries.Extra.Old        2009-03-25 15:24:06.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019688/
+/armadillo.c///1238019688/
+/config.mk///1238019688/
+/flash.c///1238019688/
+/lowlevel_init.S///1238019688/
+/u-boot.lds///1238019688/
diff -Naur u-boot-2009.03_orig/board/armadillo/CVS/Entries.Old u-boot-2009.03/board/armadillo/CVS/Entries.Old
--- u-boot-2009.03_orig/board/armadillo/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/armadillo/CVS/Entries.Old      2009-03-25 15:24:06.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/armadillo.c/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:28 2009//
+D
diff -Naur u-boot-2009.03_orig/board/armadillo/CVS/Repository u-boot-2009.03/board/armadillo/CVS/Repository
--- u-boot-2009.03_orig/board/armadillo/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/armadillo/CVS/Repository       2009-03-25 15:24:05.994467800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/armadillo
diff -Naur u-boot-2009.03_orig/board/armadillo/CVS/Root u-boot-2009.03/board/armadillo/CVS/Root
--- u-boot-2009.03_orig/board/armadillo/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/armadillo/CVS/Root     2009-03-25 15:24:05.994467800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/armltd/CVS/Entries u-boot-2009.03/board/armltd/CVS/Entries
--- u-boot-2009.03_orig/board/armltd/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/armltd/CVS/Entries     2009-03-25 15:57:13.512693700 -0700
@@ -0,0 +1,4 @@
+D/integratorap////
+D/integratorcp////
+D/versatile////
+/.gitignore/1.1.1.1/Sat Mar 21 21:04:41 2009//
diff -Naur u-boot-2009.03_orig/board/armltd/CVS/Entries.Extra u-boot-2009.03/board/armltd/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/armltd/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/armltd/CVS/Entries.Extra       2009-03-25 15:57:13.512693700 -0700
@@ -0,0 +1,4 @@
+D/integratorap////
+D/integratorcp////
+D/versatile////
+/.gitignore///1238019688/
diff -Naur u-boot-2009.03_orig/board/armltd/CVS/Entries.Extra.Old u-boot-2009.03/board/armltd/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/armltd/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/armltd/CVS/Entries.Extra.Old   2009-03-25 15:24:06.000000000 -0700
@@ -0,0 +1,4 @@
+/.gitignore///1238019688/
+D/integratorap////
+D/integratorcp////
+D/versatile////
diff -Naur u-boot-2009.03_orig/board/armltd/CVS/Entries.Old u-boot-2009.03/board/armltd/CVS/Entries.Old
--- u-boot-2009.03_orig/board/armltd/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/armltd/CVS/Entries.Old 2009-03-25 15:24:06.000000000 -0700
@@ -0,0 +1,4 @@
+/.gitignore/1.1.1.1/Wed Mar 25 22:21:28 2009//
+D/integratorap////
+D/integratorcp////
+D/versatile////
diff -Naur u-boot-2009.03_orig/board/armltd/CVS/Repository u-boot-2009.03/board/armltd/CVS/Repository
--- u-boot-2009.03_orig/board/armltd/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/armltd/CVS/Repository  2009-03-25 15:24:06.103841400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/armltd
diff -Naur u-boot-2009.03_orig/board/armltd/CVS/Root u-boot-2009.03/board/armltd/CVS/Root
--- u-boot-2009.03_orig/board/armltd/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/armltd/CVS/Root        2009-03-25 15:24:06.103841400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/armltd/integratorap/CVS/Entries u-boot-2009.03/board/armltd/integratorap/CVS/Entries
--- u-boot-2009.03_orig/board/armltd/integratorap/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/armltd/integratorap/CVS/Entries        2009-03-25 15:57:13.293945100 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/integratorap.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/split_by_variant.sh/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.template/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/armltd/integratorap/CVS/Entries.Extra u-boot-2009.03/board/armltd/integratorap/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/armltd/integratorap/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/armltd/integratorap/CVS/Entries.Extra  2009-03-25 15:57:13.293945100 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019688/
+/config.mk///1238019688/
+/flash.c///1238019688/
+/integratorap.c///1238019688/
+/lowlevel_init.S///1238019688/
+/split_by_variant.sh///1238019688/
+/u-boot.lds.template///1238019688/
diff -Naur u-boot-2009.03_orig/board/armltd/integratorap/CVS/Entries.Extra.Old u-boot-2009.03/board/armltd/integratorap/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/armltd/integratorap/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/armltd/integratorap/CVS/Entries.Extra.Old      2009-03-25 15:24:06.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019688/
+/config.mk///1238019688/
+/flash.c///1238019688/
+/integratorap.c///1238019688/
+/lowlevel_init.S///1238019688/
+/split_by_variant.sh///1238019688/
+/u-boot.lds.template///1238019688/
diff -Naur u-boot-2009.03_orig/board/armltd/integratorap/CVS/Entries.Old u-boot-2009.03/board/armltd/integratorap/CVS/Entries.Old
--- u-boot-2009.03_orig/board/armltd/integratorap/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/armltd/integratorap/CVS/Entries.Old    2009-03-25 15:24:06.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/integratorap.c/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/split_by_variant.sh/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/u-boot.lds.template/1.1.1.1/Wed Mar 25 22:21:28 2009//
+D
diff -Naur u-boot-2009.03_orig/board/armltd/integratorap/CVS/Repository u-boot-2009.03/board/armltd/integratorap/CVS/Repository
--- u-boot-2009.03_orig/board/armltd/integratorap/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/armltd/integratorap/CVS/Repository     2009-03-25 15:24:06.135091000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/armltd/integratorap
diff -Naur u-boot-2009.03_orig/board/armltd/integratorap/CVS/Root u-boot-2009.03/board/armltd/integratorap/CVS/Root
--- u-boot-2009.03_orig/board/armltd/integratorap/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/armltd/integratorap/CVS/Root   2009-03-25 15:24:06.135091000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/armltd/integratorcp/CVS/Entries u-boot-2009.03/board/armltd/integratorcp/CVS/Entries
--- u-boot-2009.03_orig/board/armltd/integratorcp/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/armltd/integratorcp/CVS/Entries        2009-03-25 15:57:13.372069600 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/integratorcp.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/split_by_variant.sh/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.template/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/armltd/integratorcp/CVS/Entries.Extra u-boot-2009.03/board/armltd/integratorcp/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/armltd/integratorcp/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/armltd/integratorcp/CVS/Entries.Extra  2009-03-25 15:57:13.372069600 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019688/
+/config.mk///1238019688/
+/flash.c///1238019688/
+/integratorcp.c///1238019688/
+/lowlevel_init.S///1238019688/
+/split_by_variant.sh///1238019688/
+/u-boot.lds.template///1238019688/
diff -Naur u-boot-2009.03_orig/board/armltd/integratorcp/CVS/Entries.Extra.Old u-boot-2009.03/board/armltd/integratorcp/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/armltd/integratorcp/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/armltd/integratorcp/CVS/Entries.Extra.Old      2009-03-25 15:24:06.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019688/
+/config.mk///1238019688/
+/flash.c///1238019688/
+/integratorcp.c///1238019688/
+/lowlevel_init.S///1238019688/
+/split_by_variant.sh///1238019688/
+/u-boot.lds.template///1238019688/
diff -Naur u-boot-2009.03_orig/board/armltd/integratorcp/CVS/Entries.Old u-boot-2009.03/board/armltd/integratorcp/CVS/Entries.Old
--- u-boot-2009.03_orig/board/armltd/integratorcp/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/armltd/integratorcp/CVS/Entries.Old    2009-03-25 15:24:06.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/integratorcp.c/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/split_by_variant.sh/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/u-boot.lds.template/1.1.1.1/Wed Mar 25 22:21:28 2009//
+D
diff -Naur u-boot-2009.03_orig/board/armltd/integratorcp/CVS/Repository u-boot-2009.03/board/armltd/integratorcp/CVS/Repository
--- u-boot-2009.03_orig/board/armltd/integratorcp/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/armltd/integratorcp/CVS/Repository     2009-03-25 15:24:06.275714200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/armltd/integratorcp
diff -Naur u-boot-2009.03_orig/board/armltd/integratorcp/CVS/Root u-boot-2009.03/board/armltd/integratorcp/CVS/Root
--- u-boot-2009.03_orig/board/armltd/integratorcp/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/armltd/integratorcp/CVS/Root   2009-03-25 15:24:06.275714200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/armltd/versatile/CVS/Entries u-boot-2009.03/board/armltd/versatile/CVS/Entries
--- u-boot-2009.03_orig/board/armltd/versatile/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/armltd/versatile/CVS/Entries   2009-03-25 15:57:13.450194100 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/split_by_variant.sh/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/versatile.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/armltd/versatile/CVS/Entries.Extra u-boot-2009.03/board/armltd/versatile/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/armltd/versatile/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/armltd/versatile/CVS/Entries.Extra     2009-03-25 15:57:13.450194100 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019688/
+/config.mk///1238019688/
+/flash.c///1238019688/
+/lowlevel_init.S///1238019688/
+/split_by_variant.sh///1238019688/
+/u-boot.lds///1238019688/
+/versatile.c///1238019688/
diff -Naur u-boot-2009.03_orig/board/armltd/versatile/CVS/Entries.Extra.Old u-boot-2009.03/board/armltd/versatile/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/armltd/versatile/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/armltd/versatile/CVS/Entries.Extra.Old 2009-03-25 15:24:06.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019688/
+/config.mk///1238019688/
+/flash.c///1238019688/
+/lowlevel_init.S///1238019688/
+/split_by_variant.sh///1238019688/
+/u-boot.lds///1238019688/
+/versatile.c///1238019688/
diff -Naur u-boot-2009.03_orig/board/armltd/versatile/CVS/Entries.Old u-boot-2009.03/board/armltd/versatile/CVS/Entries.Old
--- u-boot-2009.03_orig/board/armltd/versatile/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/armltd/versatile/CVS/Entries.Old       2009-03-25 15:24:06.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/split_by_variant.sh/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/versatile.c/1.1.1.1/Wed Mar 25 22:21:28 2009//
+D
diff -Naur u-boot-2009.03_orig/board/armltd/versatile/CVS/Repository u-boot-2009.03/board/armltd/versatile/CVS/Repository
--- u-boot-2009.03_orig/board/armltd/versatile/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/armltd/versatile/CVS/Repository        2009-03-25 15:24:06.603835000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/armltd/versatile
diff -Naur u-boot-2009.03_orig/board/armltd/versatile/CVS/Root u-boot-2009.03/board/armltd/versatile/CVS/Root
--- u-boot-2009.03_orig/board/armltd/versatile/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/armltd/versatile/CVS/Root      2009-03-25 15:24:06.603835000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/assabet/CVS/Entries u-boot-2009.03/board/assabet/CVS/Entries
--- u-boot-2009.03_orig/board/assabet/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/assabet/CVS/Entries    2009-03-25 15:57:13.575193300 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/assabet.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/setup.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/assabet/CVS/Entries.Extra u-boot-2009.03/board/assabet/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/assabet/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/assabet/CVS/Entries.Extra      2009-03-25 15:57:13.575193300 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019688/
+/assabet.c///1238019688/
+/config.mk///1238019688/
+/setup.S///1238019688/
+/u-boot.lds///1238019688/
diff -Naur u-boot-2009.03_orig/board/assabet/CVS/Entries.Extra.Old u-boot-2009.03/board/assabet/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/assabet/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/assabet/CVS/Entries.Extra.Old  2009-03-25 15:24:06.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019688/
+/assabet.c///1238019688/
+/config.mk///1238019688/
+/setup.S///1238019688/
+/u-boot.lds///1238019688/
diff -Naur u-boot-2009.03_orig/board/assabet/CVS/Entries.Old u-boot-2009.03/board/assabet/CVS/Entries.Old
--- u-boot-2009.03_orig/board/assabet/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/assabet/CVS/Entries.Old        2009-03-25 15:24:06.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/assabet.c/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/setup.S/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:28 2009//
+D
diff -Naur u-boot-2009.03_orig/board/assabet/CVS/Repository u-boot-2009.03/board/assabet/CVS/Repository
--- u-boot-2009.03_orig/board/assabet/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/assabet/CVS/Repository 2009-03-25 15:24:06.775707800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/assabet
diff -Naur u-boot-2009.03_orig/board/assabet/CVS/Root u-boot-2009.03/board/assabet/CVS/Root
--- u-boot-2009.03_orig/board/assabet/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/assabet/CVS/Root       2009-03-25 15:24:06.775707800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/atc/CVS/Entries u-boot-2009.03/board/atc/CVS/Entries
--- u-boot-2009.03_orig/board/atc/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atc/CVS/Entries        2009-03-25 15:57:13.637692900 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/atc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ti113x.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/atc/CVS/Entries.Extra u-boot-2009.03/board/atc/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/atc/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atc/CVS/Entries.Extra  2009-03-25 15:57:13.637692900 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019688/
+/atc.c///1238019688/
+/config.mk///1238019688/
+/flash.c///1238019688/
+/ti113x.c///1238019688/
diff -Naur u-boot-2009.03_orig/board/atc/CVS/Entries.Extra.Old u-boot-2009.03/board/atc/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/atc/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atc/CVS/Entries.Extra.Old      2009-03-25 15:24:06.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019688/
+/atc.c///1238019688/
+/config.mk///1238019688/
+/flash.c///1238019688/
+/ti113x.c///1238019688/
diff -Naur u-boot-2009.03_orig/board/atc/CVS/Entries.Old u-boot-2009.03/board/atc/CVS/Entries.Old
--- u-boot-2009.03_orig/board/atc/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atc/CVS/Entries.Old    2009-03-25 15:24:06.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/atc.c/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/ti113x.c/1.1.1.1/Wed Mar 25 22:21:28 2009//
+D
diff -Naur u-boot-2009.03_orig/board/atc/CVS/Repository u-boot-2009.03/board/atc/CVS/Repository
--- u-boot-2009.03_orig/board/atc/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atc/CVS/Repository     2009-03-25 15:24:06.869456600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/atc
diff -Naur u-boot-2009.03_orig/board/atc/CVS/Root u-boot-2009.03/board/atc/CVS/Root
--- u-boot-2009.03_orig/board/atc/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atc/CVS/Root   2009-03-25 15:24:06.869456600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/atmel/CVS/Entries u-boot-2009.03/board/atmel/CVS/Entries
--- u-boot-2009.03_orig/board/atmel/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atmel/CVS/Entries      2009-03-25 15:24:08.166315000 -0700
@@ -0,0 +1,8 @@
+D/at91cap9adk////
+D/at91rm9200dk////
+D/at91sam9260ek////
+D/at91sam9261ek////
+D/at91sam9263ek////
+D/at91sam9rlek////
+D/atngw100////
+D/atstk1000////
diff -Naur u-boot-2009.03_orig/board/atmel/CVS/Entries.Extra u-boot-2009.03/board/atmel/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/atmel/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atmel/CVS/Entries.Extra        2009-03-25 15:24:08.166315000 -0700
@@ -0,0 +1,8 @@
+D/at91cap9adk////
+D/at91rm9200dk////
+D/at91sam9260ek////
+D/at91sam9261ek////
+D/at91sam9263ek////
+D/at91sam9rlek////
+D/atngw100////
+D/atstk1000////
diff -Naur u-boot-2009.03_orig/board/atmel/CVS/Repository u-boot-2009.03/board/atmel/CVS/Repository
--- u-boot-2009.03_orig/board/atmel/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atmel/CVS/Repository   2009-03-25 15:24:06.978830200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/atmel
diff -Naur u-boot-2009.03_orig/board/atmel/CVS/Root u-boot-2009.03/board/atmel/CVS/Root
--- u-boot-2009.03_orig/board/atmel/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atmel/CVS/Root 2009-03-25 15:24:06.978830200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/atmel/at91cap9adk/CVS/Entries u-boot-2009.03/board/atmel/at91cap9adk/CVS/Entries
--- u-boot-2009.03_orig/board/atmel/at91cap9adk/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atmel/at91cap9adk/CVS/Entries  2009-03-25 15:57:13.715817400 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/at91cap9adk.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/led.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nand.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/partition.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/atmel/at91cap9adk/CVS/Entries.Extra u-boot-2009.03/board/atmel/at91cap9adk/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/atmel/at91cap9adk/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atmel/at91cap9adk/CVS/Entries.Extra    2009-03-25 15:57:13.715817400 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019688/
+/at91cap9adk.c///1238019688/
+/config.mk///1238019688/
+/led.c///1238019688/
+/nand.c///1238019688/
+/partition.c///1238019688/
diff -Naur u-boot-2009.03_orig/board/atmel/at91cap9adk/CVS/Entries.Extra.Old u-boot-2009.03/board/atmel/at91cap9adk/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/atmel/at91cap9adk/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atmel/at91cap9adk/CVS/Entries.Extra.Old        2009-03-25 15:24:07.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019688/
+/at91cap9adk.c///1238019688/
+/config.mk///1238019688/
+/led.c///1238019688/
+/nand.c///1238019688/
+/partition.c///1238019688/
diff -Naur u-boot-2009.03_orig/board/atmel/at91cap9adk/CVS/Entries.Old u-boot-2009.03/board/atmel/at91cap9adk/CVS/Entries.Old
--- u-boot-2009.03_orig/board/atmel/at91cap9adk/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atmel/at91cap9adk/CVS/Entries.Old      2009-03-25 15:24:07.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/at91cap9adk.c/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/led.c/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/nand.c/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/partition.c/1.1.1.1/Wed Mar 25 22:21:28 2009//
+D
diff -Naur u-boot-2009.03_orig/board/atmel/at91cap9adk/CVS/Repository u-boot-2009.03/board/atmel/at91cap9adk/CVS/Repository
--- u-boot-2009.03_orig/board/atmel/at91cap9adk/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atmel/at91cap9adk/CVS/Repository       2009-03-25 15:24:07.010079800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/atmel/at91cap9adk
diff -Naur u-boot-2009.03_orig/board/atmel/at91cap9adk/CVS/Root u-boot-2009.03/board/atmel/at91cap9adk/CVS/Root
--- u-boot-2009.03_orig/board/atmel/at91cap9adk/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atmel/at91cap9adk/CVS/Root     2009-03-25 15:24:07.010079800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/atmel/at91rm9200dk/CVS/Entries u-boot-2009.03/board/atmel/at91rm9200dk/CVS/Entries
--- u-boot-2009.03_orig/board/atmel/at91rm9200dk/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atmel/at91rm9200dk/CVS/Entries 2009-03-25 15:57:13.793941900 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/at91rm9200dk.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/led.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mux.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/partition.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/atmel/at91rm9200dk/CVS/Entries.Extra u-boot-2009.03/board/atmel/at91rm9200dk/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/atmel/at91rm9200dk/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atmel/at91rm9200dk/CVS/Entries.Extra   2009-03-25 15:57:13.793941900 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019688/
+/at91rm9200dk.c///1238019688/
+/config.mk///1238019688/
+/flash.c///1238019688/
+/led.c///1238019688/
+/mux.c///1238019688/
+/partition.c///1238019689/
+/u-boot.lds///1238019689/
diff -Naur u-boot-2009.03_orig/board/atmel/at91rm9200dk/CVS/Entries.Extra.Old u-boot-2009.03/board/atmel/at91rm9200dk/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/atmel/at91rm9200dk/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atmel/at91rm9200dk/CVS/Entries.Extra.Old       2009-03-25 15:24:07.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019688/
+/at91rm9200dk.c///1238019688/
+/config.mk///1238019688/
+/flash.c///1238019688/
+/led.c///1238019688/
+/mux.c///1238019688/
+/partition.c///1238019689/
+/u-boot.lds///1238019689/
diff -Naur u-boot-2009.03_orig/board/atmel/at91rm9200dk/CVS/Entries.Old u-boot-2009.03/board/atmel/at91rm9200dk/CVS/Entries.Old
--- u-boot-2009.03_orig/board/atmel/at91rm9200dk/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atmel/at91rm9200dk/CVS/Entries.Old     2009-03-25 15:24:07.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/at91rm9200dk.c/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/led.c/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/mux.c/1.1.1.1/Wed Mar 25 22:21:28 2009//
+/partition.c/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:29 2009//
+D
diff -Naur u-boot-2009.03_orig/board/atmel/at91rm9200dk/CVS/Repository u-boot-2009.03/board/atmel/at91rm9200dk/CVS/Repository
--- u-boot-2009.03_orig/board/atmel/at91rm9200dk/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atmel/at91rm9200dk/CVS/Repository      2009-03-25 15:24:07.135078200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/atmel/at91rm9200dk
diff -Naur u-boot-2009.03_orig/board/atmel/at91rm9200dk/CVS/Root u-boot-2009.03/board/atmel/at91rm9200dk/CVS/Root
--- u-boot-2009.03_orig/board/atmel/at91rm9200dk/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atmel/at91rm9200dk/CVS/Root    2009-03-25 15:24:07.119453400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/atmel/at91sam9260ek/CVS/Entries u-boot-2009.03/board/atmel/at91sam9260ek/CVS/Entries
--- u-boot-2009.03_orig/board/atmel/at91sam9260ek/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atmel/at91sam9260ek/CVS/Entries        2009-03-25 15:57:13.872066400 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/at91sam9260ek.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/led.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nand.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/partition.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/atmel/at91sam9260ek/CVS/Entries.Extra u-boot-2009.03/board/atmel/at91sam9260ek/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/atmel/at91sam9260ek/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atmel/at91sam9260ek/CVS/Entries.Extra  2009-03-25 15:57:13.872066400 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019689/
+/at91sam9260ek.c///1238019689/
+/config.mk///1238019689/
+/led.c///1238019689/
+/nand.c///1238019689/
+/partition.c///1238019689/
diff -Naur u-boot-2009.03_orig/board/atmel/at91sam9260ek/CVS/Entries.Extra.Old u-boot-2009.03/board/atmel/at91sam9260ek/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/atmel/at91sam9260ek/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atmel/at91sam9260ek/CVS/Entries.Extra.Old      2009-03-25 15:24:07.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019689/
+/at91sam9260ek.c///1238019689/
+/config.mk///1238019689/
+/led.c///1238019689/
+/nand.c///1238019689/
+/partition.c///1238019689/
diff -Naur u-boot-2009.03_orig/board/atmel/at91sam9260ek/CVS/Entries.Old u-boot-2009.03/board/atmel/at91sam9260ek/CVS/Entries.Old
--- u-boot-2009.03_orig/board/atmel/at91sam9260ek/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atmel/at91sam9260ek/CVS/Entries.Old    2009-03-25 15:24:07.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/at91sam9260ek.c/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/led.c/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/nand.c/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/partition.c/1.1.1.1/Wed Mar 25 22:21:29 2009//
+D
diff -Naur u-boot-2009.03_orig/board/atmel/at91sam9260ek/CVS/Repository u-boot-2009.03/board/atmel/at91sam9260ek/CVS/Repository
--- u-boot-2009.03_orig/board/atmel/at91sam9260ek/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atmel/at91sam9260ek/CVS/Repository     2009-03-25 15:24:07.275701400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/atmel/at91sam9260ek
diff -Naur u-boot-2009.03_orig/board/atmel/at91sam9260ek/CVS/Root u-boot-2009.03/board/atmel/at91sam9260ek/CVS/Root
--- u-boot-2009.03_orig/board/atmel/at91sam9260ek/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atmel/at91sam9260ek/CVS/Root   2009-03-25 15:24:07.275701400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/atmel/at91sam9261ek/CVS/Entries u-boot-2009.03/board/atmel/at91sam9261ek/CVS/Entries
--- u-boot-2009.03_orig/board/atmel/at91sam9261ek/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atmel/at91sam9261ek/CVS/Entries        2009-03-25 15:57:13.950190900 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/at91sam9261ek.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/led.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nand.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/partition.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/atmel/at91sam9261ek/CVS/Entries.Extra u-boot-2009.03/board/atmel/at91sam9261ek/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/atmel/at91sam9261ek/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atmel/at91sam9261ek/CVS/Entries.Extra  2009-03-25 15:57:13.950190900 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019689/
+/at91sam9261ek.c///1238019689/
+/config.mk///1238019689/
+/led.c///1238019689/
+/nand.c///1238019689/
+/partition.c///1238019689/
diff -Naur u-boot-2009.03_orig/board/atmel/at91sam9261ek/CVS/Entries.Extra.Old u-boot-2009.03/board/atmel/at91sam9261ek/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/atmel/at91sam9261ek/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atmel/at91sam9261ek/CVS/Entries.Extra.Old      2009-03-25 15:24:07.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019689/
+/at91sam9261ek.c///1238019689/
+/config.mk///1238019689/
+/led.c///1238019689/
+/nand.c///1238019689/
+/partition.c///1238019689/
diff -Naur u-boot-2009.03_orig/board/atmel/at91sam9261ek/CVS/Entries.Old u-boot-2009.03/board/atmel/at91sam9261ek/CVS/Entries.Old
--- u-boot-2009.03_orig/board/atmel/at91sam9261ek/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atmel/at91sam9261ek/CVS/Entries.Old    2009-03-25 15:24:07.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/at91sam9261ek.c/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/led.c/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/nand.c/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/partition.c/1.1.1.1/Wed Mar 25 22:21:29 2009//
+D
diff -Naur u-boot-2009.03_orig/board/atmel/at91sam9261ek/CVS/Repository u-boot-2009.03/board/atmel/at91sam9261ek/CVS/Repository
--- u-boot-2009.03_orig/board/atmel/at91sam9261ek/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atmel/at91sam9261ek/CVS/Repository     2009-03-25 15:24:07.556947800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/atmel/at91sam9261ek
diff -Naur u-boot-2009.03_orig/board/atmel/at91sam9261ek/CVS/Root u-boot-2009.03/board/atmel/at91sam9261ek/CVS/Root
--- u-boot-2009.03_orig/board/atmel/at91sam9261ek/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atmel/at91sam9261ek/CVS/Root   2009-03-25 15:24:07.556947800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/atmel/at91sam9263ek/CVS/Entries u-boot-2009.03/board/atmel/at91sam9263ek/CVS/Entries
--- u-boot-2009.03_orig/board/atmel/at91sam9263ek/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atmel/at91sam9263ek/CVS/Entries        2009-03-25 15:57:14.028315400 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/at91sam9263ek.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/led.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nand.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/partition.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/atmel/at91sam9263ek/CVS/Entries.Extra u-boot-2009.03/board/atmel/at91sam9263ek/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/atmel/at91sam9263ek/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atmel/at91sam9263ek/CVS/Entries.Extra  2009-03-25 15:57:14.028315400 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019689/
+/at91sam9263ek.c///1238019689/
+/config.mk///1238019689/
+/led.c///1238019689/
+/nand.c///1238019689/
+/partition.c///1238019689/
diff -Naur u-boot-2009.03_orig/board/atmel/at91sam9263ek/CVS/Entries.Extra.Old u-boot-2009.03/board/atmel/at91sam9263ek/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/atmel/at91sam9263ek/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atmel/at91sam9263ek/CVS/Entries.Extra.Old      2009-03-25 15:24:07.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019689/
+/at91sam9263ek.c///1238019689/
+/config.mk///1238019689/
+/led.c///1238019689/
+/nand.c///1238019689/
+/partition.c///1238019689/
diff -Naur u-boot-2009.03_orig/board/atmel/at91sam9263ek/CVS/Entries.Old u-boot-2009.03/board/atmel/at91sam9263ek/CVS/Entries.Old
--- u-boot-2009.03_orig/board/atmel/at91sam9263ek/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atmel/at91sam9263ek/CVS/Entries.Old    2009-03-25 15:24:07.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/at91sam9263ek.c/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/led.c/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/nand.c/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/partition.c/1.1.1.1/Wed Mar 25 22:21:29 2009//
+D
diff -Naur u-boot-2009.03_orig/board/atmel/at91sam9263ek/CVS/Repository u-boot-2009.03/board/atmel/at91sam9263ek/CVS/Repository
--- u-boot-2009.03_orig/board/atmel/at91sam9263ek/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atmel/at91sam9263ek/CVS/Repository     2009-03-25 15:24:07.713195800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/atmel/at91sam9263ek
diff -Naur u-boot-2009.03_orig/board/atmel/at91sam9263ek/CVS/Root u-boot-2009.03/board/atmel/at91sam9263ek/CVS/Root
--- u-boot-2009.03_orig/board/atmel/at91sam9263ek/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atmel/at91sam9263ek/CVS/Root   2009-03-25 15:24:07.697571000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/atmel/at91sam9rlek/CVS/Entries u-boot-2009.03/board/atmel/at91sam9rlek/CVS/Entries
--- u-boot-2009.03_orig/board/atmel/at91sam9rlek/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atmel/at91sam9rlek/CVS/Entries 2009-03-25 15:57:14.106439900 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/at91sam9rlek.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/led.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nand.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/partition.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/atmel/at91sam9rlek/CVS/Entries.Extra u-boot-2009.03/board/atmel/at91sam9rlek/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/atmel/at91sam9rlek/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atmel/at91sam9rlek/CVS/Entries.Extra   2009-03-25 15:57:14.122064800 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019689/
+/at91sam9rlek.c///1238019689/
+/config.mk///1238019689/
+/led.c///1238019689/
+/nand.c///1238019689/
+/partition.c///1238019689/
diff -Naur u-boot-2009.03_orig/board/atmel/at91sam9rlek/CVS/Entries.Extra.Old u-boot-2009.03/board/atmel/at91sam9rlek/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/atmel/at91sam9rlek/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atmel/at91sam9rlek/CVS/Entries.Extra.Old       2009-03-25 15:24:07.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019689/
+/at91sam9rlek.c///1238019689/
+/config.mk///1238019689/
+/led.c///1238019689/
+/nand.c///1238019689/
+/partition.c///1238019689/
diff -Naur u-boot-2009.03_orig/board/atmel/at91sam9rlek/CVS/Entries.Old u-boot-2009.03/board/atmel/at91sam9rlek/CVS/Entries.Old
--- u-boot-2009.03_orig/board/atmel/at91sam9rlek/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atmel/at91sam9rlek/CVS/Entries.Old     2009-03-25 15:24:07.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/at91sam9rlek.c/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/led.c/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/nand.c/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/partition.c/1.1.1.1/Wed Mar 25 22:21:29 2009//
+D
diff -Naur u-boot-2009.03_orig/board/atmel/at91sam9rlek/CVS/Repository u-boot-2009.03/board/atmel/at91sam9rlek/CVS/Repository
--- u-boot-2009.03_orig/board/atmel/at91sam9rlek/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atmel/at91sam9rlek/CVS/Repository      2009-03-25 15:24:07.838194200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/atmel/at91sam9rlek
diff -Naur u-boot-2009.03_orig/board/atmel/at91sam9rlek/CVS/Root u-boot-2009.03/board/atmel/at91sam9rlek/CVS/Root
--- u-boot-2009.03_orig/board/atmel/at91sam9rlek/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atmel/at91sam9rlek/CVS/Root    2009-03-25 15:24:07.838194200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/atmel/atngw100/CVS/Entries u-boot-2009.03/board/atmel/atngw100/CVS/Entries
--- u-boot-2009.03_orig/board/atmel/atngw100/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atmel/atngw100/CVS/Entries     2009-03-25 15:57:14.184564400 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/atngw100.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/atmel/atngw100/CVS/Entries.Extra u-boot-2009.03/board/atmel/atngw100/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/atmel/atngw100/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atmel/atngw100/CVS/Entries.Extra       2009-03-25 15:57:14.184564400 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019689/
+/atngw100.c///1238019689/
+/config.mk///1238019689/
+/u-boot.lds///1238019689/
diff -Naur u-boot-2009.03_orig/board/atmel/atngw100/CVS/Entries.Extra.Old u-boot-2009.03/board/atmel/atngw100/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/atmel/atngw100/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atmel/atngw100/CVS/Entries.Extra.Old   2009-03-25 15:24:08.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019689/
+/atngw100.c///1238019689/
+/config.mk///1238019689/
+/u-boot.lds///1238019689/
diff -Naur u-boot-2009.03_orig/board/atmel/atngw100/CVS/Entries.Old u-boot-2009.03/board/atmel/atngw100/CVS/Entries.Old
--- u-boot-2009.03_orig/board/atmel/atngw100/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atmel/atngw100/CVS/Entries.Old 2009-03-25 15:24:08.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/atngw100.c/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:29 2009//
+D
diff -Naur u-boot-2009.03_orig/board/atmel/atngw100/CVS/Repository u-boot-2009.03/board/atmel/atngw100/CVS/Repository
--- u-boot-2009.03_orig/board/atmel/atngw100/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atmel/atngw100/CVS/Repository  2009-03-25 15:24:07.963192600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/atmel/atngw100
diff -Naur u-boot-2009.03_orig/board/atmel/atngw100/CVS/Root u-boot-2009.03/board/atmel/atngw100/CVS/Root
--- u-boot-2009.03_orig/board/atmel/atngw100/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atmel/atngw100/CVS/Root        2009-03-25 15:24:07.963192600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/atmel/atstk1000/CVS/Entries u-boot-2009.03/board/atmel/atstk1000/CVS/Entries
--- u-boot-2009.03_orig/board/atmel/atstk1000/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atmel/atstk1000/CVS/Entries    2009-03-25 15:57:14.247064000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/atstk1000.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/atmel/atstk1000/CVS/Entries.Extra u-boot-2009.03/board/atmel/atstk1000/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/atmel/atstk1000/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atmel/atstk1000/CVS/Entries.Extra      2009-03-25 15:57:14.247064000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019689/
+/atstk1000.c///1238019689/
+/config.mk///1238019689/
+/flash.c///1238019689/
+/u-boot.lds///1238019689/
diff -Naur u-boot-2009.03_orig/board/atmel/atstk1000/CVS/Entries.Extra.Old u-boot-2009.03/board/atmel/atstk1000/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/atmel/atstk1000/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atmel/atstk1000/CVS/Entries.Extra.Old  2009-03-25 15:24:08.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019689/
+/atstk1000.c///1238019689/
+/config.mk///1238019689/
+/flash.c///1238019689/
+/u-boot.lds///1238019689/
diff -Naur u-boot-2009.03_orig/board/atmel/atstk1000/CVS/Entries.Old u-boot-2009.03/board/atmel/atstk1000/CVS/Entries.Old
--- u-boot-2009.03_orig/board/atmel/atstk1000/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atmel/atstk1000/CVS/Entries.Old        2009-03-25 15:24:08.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/atstk1000.c/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:29 2009//
+D
diff -Naur u-boot-2009.03_orig/board/atmel/atstk1000/CVS/Repository u-boot-2009.03/board/atmel/atstk1000/CVS/Repository
--- u-boot-2009.03_orig/board/atmel/atstk1000/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atmel/atstk1000/CVS/Repository 2009-03-25 15:24:08.056941400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/atmel/atstk1000
diff -Naur u-boot-2009.03_orig/board/atmel/atstk1000/CVS/Root u-boot-2009.03/board/atmel/atstk1000/CVS/Root
--- u-boot-2009.03_orig/board/atmel/atstk1000/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atmel/atstk1000/CVS/Root       2009-03-25 15:24:08.056941400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/atum8548/CVS/Entries u-boot-2009.03/board/atum8548/CVS/Entries
--- u-boot-2009.03_orig/board/atum8548/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atum8548/CVS/Entries   2009-03-25 15:57:14.325188500 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/atum8548.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ddr.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/law.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tlb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/atum8548/CVS/Entries.Extra u-boot-2009.03/board/atum8548/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/atum8548/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atum8548/CVS/Entries.Extra     2009-03-25 15:57:14.325188500 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019689/
+/atum8548.c///1238019689/
+/config.mk///1238019689/
+/ddr.c///1238019689/
+/law.c///1238019689/
+/tlb.c///1238019689/
+/u-boot.lds///1238019689/
diff -Naur u-boot-2009.03_orig/board/atum8548/CVS/Entries.Extra.Old u-boot-2009.03/board/atum8548/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/atum8548/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atum8548/CVS/Entries.Extra.Old 2009-03-25 15:24:08.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019689/
+/atum8548.c///1238019689/
+/config.mk///1238019689/
+/ddr.c///1238019689/
+/law.c///1238019689/
+/tlb.c///1238019689/
+/u-boot.lds///1238019689/
diff -Naur u-boot-2009.03_orig/board/atum8548/CVS/Entries.Old u-boot-2009.03/board/atum8548/CVS/Entries.Old
--- u-boot-2009.03_orig/board/atum8548/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atum8548/CVS/Entries.Old       2009-03-25 15:24:08.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/atum8548.c/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/ddr.c/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/law.c/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/tlb.c/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:29 2009//
+D
diff -Naur u-boot-2009.03_orig/board/atum8548/CVS/Repository u-boot-2009.03/board/atum8548/CVS/Repository
--- u-boot-2009.03_orig/board/atum8548/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atum8548/CVS/Repository        2009-03-25 15:24:08.213189400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/atum8548
diff -Naur u-boot-2009.03_orig/board/atum8548/CVS/Root u-boot-2009.03/board/atum8548/CVS/Root
--- u-boot-2009.03_orig/board/atum8548/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/atum8548/CVS/Root      2009-03-25 15:24:08.213189400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/avnet/CVS/Entries u-boot-2009.03/board/avnet/CVS/Entries
--- u-boot-2009.03_orig/board/avnet/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/avnet/CVS/Entries      2009-03-25 15:24:08.728807800 -0700
@@ -0,0 +1,2 @@
+D/fx12mm////
+D/v5fx30teval////
diff -Naur u-boot-2009.03_orig/board/avnet/CVS/Entries.Extra u-boot-2009.03/board/avnet/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/avnet/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/avnet/CVS/Entries.Extra        2009-03-25 15:24:08.728807800 -0700
@@ -0,0 +1,2 @@
+D/fx12mm////
+D/v5fx30teval////
diff -Naur u-boot-2009.03_orig/board/avnet/CVS/Repository u-boot-2009.03/board/avnet/CVS/Repository
--- u-boot-2009.03_orig/board/avnet/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/avnet/CVS/Repository   2009-03-25 15:24:08.338187800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/avnet
diff -Naur u-boot-2009.03_orig/board/avnet/CVS/Root u-boot-2009.03/board/avnet/CVS/Root
--- u-boot-2009.03_orig/board/avnet/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/avnet/CVS/Root 2009-03-25 15:24:08.338187800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/avnet/fx12mm/CVS/Entries u-boot-2009.03/board/avnet/fx12mm/CVS/Entries
--- u-boot-2009.03_orig/board/avnet/fx12mm/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/avnet/fx12mm/CVS/Entries       2009-03-25 15:57:14.387688100 -0700
@@ -0,0 +1,6 @@
+/.gitignore/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fx12mm.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xparameters.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/avnet/fx12mm/CVS/Entries.Extra u-boot-2009.03/board/avnet/fx12mm/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/avnet/fx12mm/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/avnet/fx12mm/CVS/Entries.Extra 2009-03-25 15:57:14.403313000 -0700
@@ -0,0 +1,5 @@
+/.gitignore///1238019689/
+/Makefile///1238019689/
+/config.mk///1238019689/
+/fx12mm.c///1238019689/
+/xparameters.h///1238019689/
diff -Naur u-boot-2009.03_orig/board/avnet/fx12mm/CVS/Entries.Extra.Old u-boot-2009.03/board/avnet/fx12mm/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/avnet/fx12mm/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/avnet/fx12mm/CVS/Entries.Extra.Old     2009-03-25 15:24:08.000000000 -0700
@@ -0,0 +1,5 @@
+/.gitignore///1238019689/
+/Makefile///1238019689/
+/config.mk///1238019689/
+/fx12mm.c///1238019689/
+/xparameters.h///1238019689/
diff -Naur u-boot-2009.03_orig/board/avnet/fx12mm/CVS/Entries.Old u-boot-2009.03/board/avnet/fx12mm/CVS/Entries.Old
--- u-boot-2009.03_orig/board/avnet/fx12mm/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/avnet/fx12mm/CVS/Entries.Old   2009-03-25 15:24:08.000000000 -0700
@@ -0,0 +1,6 @@
+/.gitignore/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/Makefile/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/fx12mm.c/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/xparameters.h/1.1.1.1/Wed Mar 25 22:21:29 2009//
+D
diff -Naur u-boot-2009.03_orig/board/avnet/fx12mm/CVS/Repository u-boot-2009.03/board/avnet/fx12mm/CVS/Repository
--- u-boot-2009.03_orig/board/avnet/fx12mm/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/avnet/fx12mm/CVS/Repository    2009-03-25 15:24:08.369437400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/avnet/fx12mm
diff -Naur u-boot-2009.03_orig/board/avnet/fx12mm/CVS/Root u-boot-2009.03/board/avnet/fx12mm/CVS/Root
--- u-boot-2009.03_orig/board/avnet/fx12mm/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/avnet/fx12mm/CVS/Root  2009-03-25 15:24:08.353812600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/avnet/v5fx30teval/CVS/Entries u-boot-2009.03/board/avnet/v5fx30teval/CVS/Entries
--- u-boot-2009.03_orig/board/avnet/v5fx30teval/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/avnet/v5fx30teval/CVS/Entries  2009-03-25 15:57:14.450187700 -0700
@@ -0,0 +1,6 @@
+/.gitignore/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/v5fx30teval.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xparameters.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/avnet/v5fx30teval/CVS/Entries.Extra u-boot-2009.03/board/avnet/v5fx30teval/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/avnet/v5fx30teval/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/avnet/v5fx30teval/CVS/Entries.Extra    2009-03-25 15:57:14.465812600 -0700
@@ -0,0 +1,5 @@
+/.gitignore///1238019689/
+/Makefile///1238019689/
+/config.mk///1238019689/
+/v5fx30teval.c///1238019689/
+/xparameters.h///1238019689/
diff -Naur u-boot-2009.03_orig/board/avnet/v5fx30teval/CVS/Entries.Extra.Old u-boot-2009.03/board/avnet/v5fx30teval/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/avnet/v5fx30teval/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/avnet/v5fx30teval/CVS/Entries.Extra.Old        2009-03-25 15:24:08.000000000 -0700
@@ -0,0 +1,5 @@
+/.gitignore///1238019689/
+/Makefile///1238019689/
+/config.mk///1238019689/
+/v5fx30teval.c///1238019689/
+/xparameters.h///1238019689/
diff -Naur u-boot-2009.03_orig/board/avnet/v5fx30teval/CVS/Entries.Old u-boot-2009.03/board/avnet/v5fx30teval/CVS/Entries.Old
--- u-boot-2009.03_orig/board/avnet/v5fx30teval/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/avnet/v5fx30teval/CVS/Entries.Old      2009-03-25 15:24:08.000000000 -0700
@@ -0,0 +1,6 @@
+/.gitignore/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/Makefile/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/v5fx30teval.c/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/xparameters.h/1.1.1.1/Wed Mar 25 22:21:29 2009//
+D
diff -Naur u-boot-2009.03_orig/board/avnet/v5fx30teval/CVS/Repository u-boot-2009.03/board/avnet/v5fx30teval/CVS/Repository
--- u-boot-2009.03_orig/board/avnet/v5fx30teval/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/avnet/v5fx30teval/CVS/Repository       2009-03-25 15:24:08.619434200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/avnet/v5fx30teval
diff -Naur u-boot-2009.03_orig/board/avnet/v5fx30teval/CVS/Root u-boot-2009.03/board/avnet/v5fx30teval/CVS/Root
--- u-boot-2009.03_orig/board/avnet/v5fx30teval/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/avnet/v5fx30teval/CVS/Root     2009-03-25 15:24:08.619434200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/barco/CVS/Entries u-boot-2009.03/board/barco/CVS/Entries
--- u-boot-2009.03_orig/board/barco/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/barco/CVS/Entries      2009-03-31 14:43:04.230651200 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/early_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/barco.c/1.1.1.1/Tue Mar 31 21:43:04 2009//T1.1.1.1
+/flash.c/1.1.1.1/Tue Mar 31 21:43:04 2009//T1.1.1.1
+/barco_svc.h/1.1.1.1/Tue Mar 31 21:43:04 2009//T1.1.1.1
+/speed.h/1.1.1.1/Tue Mar 31 21:43:04 2009//T1.1.1.1
+D
diff -Naur u-boot-2009.03_orig/board/barco/CVS/Entries.Extra u-boot-2009.03/board/barco/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/barco/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/barco/CVS/Entries.Extra        2009-03-31 14:43:04.230651200 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019689/
+/README///1238019689/
+/config.mk///1238019689/
+/early_init.S///1238019689/
+/barco.c///1238019689/
+/flash.c///1238019689/
+/barco_svc.h///1238019689/
+/speed.h///1238019689/
diff -Naur u-boot-2009.03_orig/board/barco/CVS/Entries.Extra.Old u-boot-2009.03/board/barco/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/barco/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/barco/CVS/Entries.Extra.Old    2009-03-25 17:51:36.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019689/
+/README///1238019689/
+/config.mk///1238019689/
+/early_init.S///1238019689/
+/barco.c///1238028695/
+/barco_svc.h///1238028696/
+/flash.c///1238028696/
+/speed.h///1238028696/
diff -Naur u-boot-2009.03_orig/board/barco/CVS/Entries.Old u-boot-2009.03/board/barco/CVS/Entries.Old
--- u-boot-2009.03_orig/board/barco/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/barco/CVS/Entries.Old  2009-03-25 17:51:36.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/early_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/barco.c/1.2/Thu Mar 26 00:51:35 2009//
+/barco_svc.h/1.2/Thu Mar 26 00:51:36 2009//
+/flash.c/1.2/Thu Mar 26 00:51:36 2009//
+/speed.h/1.2/Thu Mar 26 00:51:36 2009//
+D
diff -Naur u-boot-2009.03_orig/board/barco/CVS/Repository u-boot-2009.03/board/barco/CVS/Repository
--- u-boot-2009.03_orig/board/barco/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/barco/CVS/Repository   2009-03-25 15:24:08.775682200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/barco
diff -Naur u-boot-2009.03_orig/board/barco/CVS/Root u-boot-2009.03/board/barco/CVS/Root
--- u-boot-2009.03_orig/board/barco/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/barco/CVS/Root 2009-03-25 15:24:08.775682200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/barco/barco.c u-boot-2009.03/board/barco/barco.c
--- u-boot-2009.03_orig/board/barco/barco.c     2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/board/barco/barco.c  2009-03-31 14:43:04.011904000 -0700
@@ -1,363 +1,366 @@
-/********************************************************************
- *
- * Unless otherwise specified, Copyright (C) 2004-2005 Barco Control Rooms
- *
- * $Source: /home/services/cvs/firmware/ppc/u-boot-1.1.2/board/barco/barco.c,v $
- * $Revision: 1.4 $
- * $Author: mleeman $
- * $Date: 2005/03/02 16:40:20 $
- *
- * Last ChangeLog Entry
- * $Log: barco.c,v $
- * Revision 1.4  2005/03/02 16:40:20  mleeman
- * remove empty labels (3.4 complains)
- *
- * Revision 1.3  2005/02/21 12:48:58  mleeman
- * update of copyright years (feedback wd)
- *
- * Revision 1.2  2005/02/21 10:10:53  mleeman
- * - split up switch statement to a function call (Linux kernel coding guidelines)
- *   ( feedback wd)
- *
- * Revision 1.1  2005/02/14 09:31:07  mleeman
- * renaming of files
- *
- * Revision 1.1  2005/02/14 09:23:46  mleeman
- * - moved 'barcohydra' directory to a more generic barco; since we will be
- *   supporting and adding multiple boards
- *
- * Revision 1.3  2005/02/10 13:57:32  mleeman
- * fixed flash corruption: I should exit from the moment I find the correct value
- *
- * Revision 1.2  2005/02/09 12:56:23  mleeman
- * add generic header to track changes in sources
- *
- *
- *******************************************************************/
-
-/*
- * (C) Copyright 2004
- * Marc Leeman <marc.leeman@barco.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
-
-#include <common.h>
-#include <mpc824x.h>
-#include <pci.h>
-#include <malloc.h>
-#include <command.h>
-
-#include "config.h"
-#include "barco_svc.h"
-
-#define TRY_WORKING  (3)
-#define BOOT_DEFAULT (2)
-#define BOOT_WORKING (1)
-
-int checkboard (void)
-{
-       /*TODO: Check processor type */
-
-       puts (  "Board: Streaming Video Card for Hydra systems "
-#ifdef CONFIG_MPC8240
-               "8240"
-#endif
-#ifdef CONFIG_MPC8245
-               "8245"
-#endif
-               " Unity ##Test not implemented yet##\n");
-       return 0;
-}
-
-phys_size_t initdram (int board_type)
-{
-       long size;
-       long new_bank0_end;
-       long mear1;
-       long emear1;
-
-       size = get_ram_size (CONFIG_SYS_SDRAM_BASE, CONFIG_SYS_MAX_RAM_SIZE);
-
-       new_bank0_end = size - 1;
-       mear1 = mpc824x_mpc107_getreg (MEAR1);
-       emear1 = mpc824x_mpc107_getreg (EMEAR1);
-       mear1 = (mear1  & 0xFFFFFF00) |
-               ((new_bank0_end & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT);
-       emear1 = (emear1 & 0xFFFFFF00) |
-               ((new_bank0_end & MICR_ADDR_MASK) >> MICR_EADDR_SHIFT);
-       mpc824x_mpc107_setreg (MEAR1, mear1);
-       mpc824x_mpc107_setreg (EMEAR1, emear1);
-
-       return (size);
-}
-
-/*
- * Initialize PCI Devices, report devices found.
- */
-#ifndef CONFIG_PCI_PNP
-static struct pci_config_table pci_barcohydra_config_table[] = {
-       { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 0x0f, PCI_ANY_ID,
-         pci_cfgfunc_config_device, { PCI_ENET0_IOADDR,
-                                      PCI_ENET0_MEMADDR,
-                                      PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER } },
-       { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 0x10, PCI_ANY_ID,
-         pci_cfgfunc_config_device, { PCI_ENET1_IOADDR,
-                                      PCI_ENET1_MEMADDR,
-                                      PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER } },
-       { }
-};
-#endif
-
-struct pci_controller hose = {
-#ifndef CONFIG_PCI_PNP
-       config_table: pci_barcohydra_config_table,
-#endif
-};
-
-void pci_init_board (void)
-{
-       pci_mpc824x_init (&hose);
-}
-
-int write_flash (char *addr, char value)
-{
-       char *adr = (char *)0xFF800000;
-       int cnt = 0;
-       char status,oldstatus;
-
-       *(adr+0x55) = 0xAA; udelay (1);
-       *(adr+0xAA) = 0x55; udelay (1);
-       *(adr+0x55) = 0xA0; udelay (1);
-       *addr = value;
-
-       status = *addr;
-       do {
-               oldstatus = status;
-               status = *addr;
-
-               if ((oldstatus & 0x40) == (status & 0x40)) {
-                       return 4;
-               }
-               cnt++;
-               if (cnt > 10000) {
-                       return 2;
-               }
-       } while ( (status & 0x20) == 0 );
-
-       oldstatus = *addr;
-       status = *addr;
-
-       if ((oldstatus & 0x40) == (status & 0x40)) {
-               return 0;
-       } else {
-               *(adr+0x55) = 0xF0;
-               return 1;
-       }
-}
-
-unsigned update_flash (unsigned char *buf)
-{
-       switch ((*buf) & 0x3) {
-       case TRY_WORKING:
-               printf ("found 3 and converted it to 2\n");
-               write_flash ((char *)buf, (*buf) & 0xFE);
-               *((unsigned char *)0xFF800000) = 0xF0;
-               udelay (100);
-               printf ("buf [%#010x] %#010x\n", (unsigned)buf, (*buf));
-               /* XXX - fall through??? */
-       case BOOT_WORKING :
-               return BOOT_WORKING;
-       }
-       return BOOT_DEFAULT;
-}
-
-unsigned scan_flash (void)
-{
-       char section[] =  "kernel";
-       int cfgFileLen  =  (CONFIG_SYS_FLASH_ERASE_SECTOR_LENGTH >> 1);
-       int sectionPtr  = 0;
-       int foundItem   = 0; /* 0: None, 1: section found, 2: "=" found */
-       int bufPtr;
-       unsigned char *buf;
-
-       buf = (unsigned char*)(CONFIG_SYS_FLASH_RANGE_BASE + CONFIG_SYS_FLASH_RANGE_SIZE \
-                       - CONFIG_SYS_FLASH_ERASE_SECTOR_LENGTH);
-       for (bufPtr = 0; bufPtr < cfgFileLen; ++bufPtr) {
-               if ((buf[bufPtr]==0xFF) && (*(int*)(buf+bufPtr)==0xFFFFFFFF)) {
-                       return BOOT_DEFAULT;
-               }
-               /* This is the scanning loop, we try to find a particular
-                * quoted value
-                */
-               switch (foundItem) {
-               case 0:
-                       if ((section[sectionPtr] == 0)) {
-                               ++foundItem;
-                       } else if (buf[bufPtr] == section[sectionPtr]) {
-                               ++sectionPtr;
-                       } else {
-                               sectionPtr = 0;
-                       }
-                       break;
-               case 1:
-                       ++foundItem;
-                       break;
-               case 2:
-                       ++foundItem;
-                       break;
-               case 3:
-               default:
-                       return update_flash (&buf[bufPtr - 1]);
-               }
-       }
-
-       printf ("Failed to read %s\n",section);
-       return BOOT_DEFAULT;
-}
-
-TSBootInfo* find_boot_info (void)
-{
-       unsigned bootimage = scan_flash ();
-       TSBootInfo* info = (TSBootInfo*)malloc (sizeof(TSBootInfo));
-
-       switch (bootimage) {
-       case TRY_WORKING:
-               info->address = CONFIG_SYS_WORKING_KERNEL_ADDRESS;
-               break;
-       case BOOT_WORKING :
-               info->address = CONFIG_SYS_WORKING_KERNEL_ADDRESS;
-               break;
-       case BOOT_DEFAULT:
-       default:
-               info->address= CONFIG_SYS_DEFAULT_KERNEL_ADDRESS;
-
-       }
-       info->size = *((unsigned int *)(info->address ));
-
-       return info;
-}
-
-void barcobcd_boot (void)
-{
-       TSBootInfo* start;
-       char *bootm_args[2];
-       char *buf;
-       int cnt;
-       extern int do_bootm (cmd_tbl_t *, int, int, char *[]);
-
-       buf = (char *)(0x00800000);
-       /* make certain there are enough chars to print the command line here!
-        */
-       bootm_args[0] = (char *)malloc (16*sizeof(char));
-       bootm_args[1] = (char *)malloc (16*sizeof(char));
-
-       start = find_boot_info ();
-
-       printf ("Booting kernel at address %#10x with size %#10x\n",
-                       start->address, start->size);
-
-       /* give length of the kernel image to bootm */
-       sprintf (bootm_args[0],"%x",start->size);
-       /* give address of the kernel image to bootm */
-       sprintf (bootm_args[1],"%x",(unsigned)buf);
-
-       printf ("flash address: %#10x\n",start->address+8);
-       printf ("buf address: %#10x\n",(unsigned)buf);
-
-       /* aha, we reserve 8 bytes here... */
-       for (cnt = 0; cnt < start->size ; cnt++) {
-               buf[cnt] = ((char *)start->address)[cnt+8];
-       }
-
-       /* initialise RAM memory */
-       *((unsigned int *)0xFEC00000) = 0x00141A98;
-       do_bootm (NULL,0,2,bootm_args);
-}
-
-int barcobcd_boot_image (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
-#if 0
-       if (argc > 1) {
-               cmd_usage(cmdtp);
-               return 1;
-       }
-#endif
-       barcobcd_boot ();
-
-       return 0;
-}
-
-/* Currently, boot_working and boot_default are the same command. This is
- * left in here to see what we'll do in the future */
-
-U_BOOT_CMD (
-               try_working, 1, 1, barcobcd_boot_image,
-               "check flash value and boot the appropriate image",
-               "\n"
-         );
-
-U_BOOT_CMD (
-               boot_working, 1, 1, barcobcd_boot_image,
-               "check flash value and boot the appropriate image",
-               "\n"
-         );
-
-U_BOOT_CMD (
-               boot_default, 1, 1, barcobcd_boot_image,
-               "check flash value and boot the appropriate image",
-               "\n"
-         );
-/*
- * We are not using serial communication, so just provide empty functions
- */
-int serial_init (void)
-{
-       return 0;
-}
-void serial_setbrg (void)
-{
-       return;
-}
-void serial_putc (const char c)
-{
-       return;
-}
-void serial_puts (const char *c)
-{
-       return;
-}
-void serial_addr (unsigned int i)
-{
-       return;
-}
-int serial_getc (void)
-{
-       return 0;
-}
-int serial_tstc (void)
-{
-       return 0;
-}
-
-unsigned long post_word_load (void)
-{
-       return 0l;
-}
-void post_word_store (unsigned long val)
-{
-       return;
-}
+/********************************************************************
+ *
+ * Unless otherwise specified, Copyright (C) 2004-2005 Barco Control Rooms
+ *
+ * $Source: C:/qaz/__CVS_ROOT/units/or1200_soc/sw/u-boot-2009.03/board/barco/barco.c,v $
+ * $Revision: 1.1.1.1 $
+ * $Author: kenagy $
+ * $Date: 2009/03/25 22:21:29 $
+ *
+ * Last ChangeLog Entry
+ * $Log: barco.c,v $
+ * Revision 1.1.1.1  2009/03/25 22:21:29  kenagy
+ * no message
+ *
+ * Revision 1.4  2005/03/02 16:40:20  mleeman
+ * remove empty labels (3.4 complains)
+ *
+ * Revision 1.3  2005/02/21 12:48:58  mleeman
+ * update of copyright years (feedback wd)
+ *
+ * Revision 1.2  2005/02/21 10:10:53  mleeman
+ * - split up switch statement to a function call (Linux kernel coding guidelines)
+ *   ( feedback wd)
+ *
+ * Revision 1.1  2005/02/14 09:31:07  mleeman
+ * renaming of files
+ *
+ * Revision 1.1  2005/02/14 09:23:46  mleeman
+ * - moved 'barcohydra' directory to a more generic barco; since we will be
+ *   supporting and adding multiple boards
+ *
+ * Revision 1.3  2005/02/10 13:57:32  mleeman
+ * fixed flash corruption: I should exit from the moment I find the correct value
+ *
+ * Revision 1.2  2005/02/09 12:56:23  mleeman
+ * add generic header to track changes in sources
+ *
+ *
+ *******************************************************************/
+
+/*
+ * (C) Copyright 2004
+ * Marc Leeman <marc.leeman@barco.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <common.h>
+#include <mpc824x.h>
+#include <pci.h>
+#include <malloc.h>
+#include <command.h>
+
+#include "config.h"
+#include "barco_svc.h"
+
+#define TRY_WORKING  (3)
+#define BOOT_DEFAULT (2)
+#define BOOT_WORKING (1)
+
+int checkboard (void)
+{
+       /*TODO: Check processor type */
+
+       puts (  "Board: Streaming Video Card for Hydra systems "
+#ifdef CONFIG_MPC8240
+               "8240"
+#endif
+#ifdef CONFIG_MPC8245
+               "8245"
+#endif
+               " Unity ##Test not implemented yet##\n");
+       return 0;
+}
+
+phys_size_t initdram (int board_type)
+{
+       long size;
+       long new_bank0_end;
+       long mear1;
+       long emear1;
+
+       size = get_ram_size (CONFIG_SYS_SDRAM_BASE, CONFIG_SYS_MAX_RAM_SIZE);
+
+       new_bank0_end = size - 1;
+       mear1 = mpc824x_mpc107_getreg (MEAR1);
+       emear1 = mpc824x_mpc107_getreg (EMEAR1);
+       mear1 = (mear1  & 0xFFFFFF00) |
+               ((new_bank0_end & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT);
+       emear1 = (emear1 & 0xFFFFFF00) |
+               ((new_bank0_end & MICR_ADDR_MASK) >> MICR_EADDR_SHIFT);
+       mpc824x_mpc107_setreg (MEAR1, mear1);
+       mpc824x_mpc107_setreg (EMEAR1, emear1);
+
+       return (size);
+}
+
+/*
+ * Initialize PCI Devices, report devices found.
+ */
+#ifndef CONFIG_PCI_PNP
+static struct pci_config_table pci_barcohydra_config_table[] = {
+       { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 0x0f, PCI_ANY_ID,
+         pci_cfgfunc_config_device, { PCI_ENET0_IOADDR,
+                                      PCI_ENET0_MEMADDR,
+                                      PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER } },
+       { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 0x10, PCI_ANY_ID,
+         pci_cfgfunc_config_device, { PCI_ENET1_IOADDR,
+                                      PCI_ENET1_MEMADDR,
+                                      PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER } },
+       { }
+};
+#endif
+
+struct pci_controller hose = {
+#ifndef CONFIG_PCI_PNP
+       config_table: pci_barcohydra_config_table,
+#endif
+};
+
+void pci_init_board (void)
+{
+       pci_mpc824x_init (&hose);
+}
+
+int write_flash (char *addr, char value)
+{
+       char *adr = (char *)0xFF800000;
+       int cnt = 0;
+       char status,oldstatus;
+
+       *(adr+0x55) = 0xAA; udelay (1);
+       *(adr+0xAA) = 0x55; udelay (1);
+       *(adr+0x55) = 0xA0; udelay (1);
+       *addr = value;
+
+       status = *addr;
+       do {
+               oldstatus = status;
+               status = *addr;
+
+               if ((oldstatus & 0x40) == (status & 0x40)) {
+                       return 4;
+               }
+               cnt++;
+               if (cnt > 10000) {
+                       return 2;
+               }
+       } while ( (status & 0x20) == 0 );
+
+       oldstatus = *addr;
+       status = *addr;
+
+       if ((oldstatus & 0x40) == (status & 0x40)) {
+               return 0;
+       } else {
+               *(adr+0x55) = 0xF0;
+               return 1;
+       }
+}
+
+unsigned update_flash (unsigned char *buf)
+{
+       switch ((*buf) & 0x3) {
+       case TRY_WORKING:
+               printf ("found 3 and converted it to 2\n");
+               write_flash ((char *)buf, (*buf) & 0xFE);
+               *((unsigned char *)0xFF800000) = 0xF0;
+               udelay (100);
+               printf ("buf [%#010x] %#010x\n", (unsigned)buf, (*buf));
+               /* XXX - fall through??? */
+       case BOOT_WORKING :
+               return BOOT_WORKING;
+       }
+       return BOOT_DEFAULT;
+}
+
+unsigned scan_flash (void)
+{
+       char section[] =  "kernel";
+       int cfgFileLen  =  (CONFIG_SYS_FLASH_ERASE_SECTOR_LENGTH >> 1);
+       int sectionPtr  = 0;
+       int foundItem   = 0; /* 0: None, 1: section found, 2: "=" found */
+       int bufPtr;
+       unsigned char *buf;
+
+       buf = (unsigned char*)(CONFIG_SYS_FLASH_RANGE_BASE + CONFIG_SYS_FLASH_RANGE_SIZE \
+                       - CONFIG_SYS_FLASH_ERASE_SECTOR_LENGTH);
+       for (bufPtr = 0; bufPtr < cfgFileLen; ++bufPtr) {
+               if ((buf[bufPtr]==0xFF) && (*(int*)(buf+bufPtr)==0xFFFFFFFF)) {
+                       return BOOT_DEFAULT;
+               }
+               /* This is the scanning loop, we try to find a particular
+                * quoted value
+                */
+               switch (foundItem) {
+               case 0:
+                       if ((section[sectionPtr] == 0)) {
+                               ++foundItem;
+                       } else if (buf[bufPtr] == section[sectionPtr]) {
+                               ++sectionPtr;
+                       } else {
+                               sectionPtr = 0;
+                       }
+                       break;
+               case 1:
+                       ++foundItem;
+                       break;
+               case 2:
+                       ++foundItem;
+                       break;
+               case 3:
+               default:
+                       return update_flash (&buf[bufPtr - 1]);
+               }
+       }
+
+       printf ("Failed to read %s\n",section);
+       return BOOT_DEFAULT;
+}
+
+TSBootInfo* find_boot_info (void)
+{
+       unsigned bootimage = scan_flash ();
+       TSBootInfo* info = (TSBootInfo*)malloc (sizeof(TSBootInfo));
+
+       switch (bootimage) {
+       case TRY_WORKING:
+               info->address = CONFIG_SYS_WORKING_KERNEL_ADDRESS;
+               break;
+       case BOOT_WORKING :
+               info->address = CONFIG_SYS_WORKING_KERNEL_ADDRESS;
+               break;
+       case BOOT_DEFAULT:
+       default:
+               info->address= CONFIG_SYS_DEFAULT_KERNEL_ADDRESS;
+
+       }
+       info->size = *((unsigned int *)(info->address ));
+
+       return info;
+}
+
+void barcobcd_boot (void)
+{
+       TSBootInfo* start;
+       char *bootm_args[2];
+       char *buf;
+       int cnt;
+       extern int do_bootm (cmd_tbl_t *, int, int, char *[]);
+
+       buf = (char *)(0x00800000);
+       /* make certain there are enough chars to print the command line here!
+        */
+       bootm_args[0] = (char *)malloc (16*sizeof(char));
+       bootm_args[1] = (char *)malloc (16*sizeof(char));
+
+       start = find_boot_info ();
+
+       printf ("Booting kernel at address %#10x with size %#10x\n",
+                       start->address, start->size);
+
+       /* give length of the kernel image to bootm */
+       sprintf (bootm_args[0],"%x",start->size);
+       /* give address of the kernel image to bootm */
+       sprintf (bootm_args[1],"%x",(unsigned)buf);
+
+       printf ("flash address: %#10x\n",start->address+8);
+       printf ("buf address: %#10x\n",(unsigned)buf);
+
+       /* aha, we reserve 8 bytes here... */
+       for (cnt = 0; cnt < start->size ; cnt++) {
+               buf[cnt] = ((char *)start->address)[cnt+8];
+       }
+
+       /* initialise RAM memory */
+       *((unsigned int *)0xFEC00000) = 0x00141A98;
+       do_bootm (NULL,0,2,bootm_args);
+}
+
+int barcobcd_boot_image (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+#if 0
+       if (argc > 1) {
+               cmd_usage(cmdtp);
+               return 1;
+       }
+#endif
+       barcobcd_boot ();
+
+       return 0;
+}
+
+/* Currently, boot_working and boot_default are the same command. This is
+ * left in here to see what we'll do in the future */
+
+U_BOOT_CMD (
+               try_working, 1, 1, barcobcd_boot_image,
+               "check flash value and boot the appropriate image",
+               "\n"
+         );
+
+U_BOOT_CMD (
+               boot_working, 1, 1, barcobcd_boot_image,
+               "check flash value and boot the appropriate image",
+               "\n"
+         );
+
+U_BOOT_CMD (
+               boot_default, 1, 1, barcobcd_boot_image,
+               "check flash value and boot the appropriate image",
+               "\n"
+         );
+/*
+ * We are not using serial communication, so just provide empty functions
+ */
+int serial_init (void)
+{
+       return 0;
+}
+void serial_setbrg (void)
+{
+       return;
+}
+void serial_putc (const char c)
+{
+       return;
+}
+void serial_puts (const char *c)
+{
+       return;
+}
+void serial_addr (unsigned int i)
+{
+       return;
+}
+int serial_getc (void)
+{
+       return 0;
+}
+int serial_tstc (void)
+{
+       return 0;
+}
+
+unsigned long post_word_load (void)
+{
+       return 0l;
+}
+void post_word_store (unsigned long val)
+{
+       return;
+}
diff -Naur u-boot-2009.03_orig/board/barco/barco_svc.h u-boot-2009.03/board/barco/barco_svc.h
--- u-boot-2009.03_orig/board/barco/barco_svc.h 2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/board/barco/barco_svc.h      2009-03-31 14:43:04.199401600 -0700
@@ -1,68 +1,71 @@
-/********************************************************************
- *
- * Unless otherwise specified, Copyright (C) 2004-2005 Barco Control Rooms
- *
- * $Source: /home/services/cvs/firmware/ppc/u-boot-1.1.2/board/barco/barco_svc.h,v $
- * $Revision: 1.2 $
- * $Author: mleeman $
- * $Date: 2005/02/21 12:48:58 $
- *
- * Last ChangeLog Entry
- * $Log: barco_svc.h,v $
- * Revision 1.2  2005/02/21 12:48:58  mleeman
- * update of copyright years (feedback wd)
- *
- * Revision 1.1  2005/02/14 09:31:07  mleeman
- * renaming of files
- *
- * Revision 1.1  2005/02/14 09:23:46  mleeman
- * - moved 'barcohydra' directory to a more generic barco; since we will be
- *   supporting and adding multiple boards
- *
- * Revision 1.1  2005/02/08 15:40:19  mleeman
- * modified and added platform files
- *
- * Revision 1.2  2005/01/25 08:05:04  mleeman
- * more cleanup of the code
- *
- * Revision 1.1  2004/07/20 08:49:55  mleeman
- * Working version of the default and nfs kernel booting.
- *
- *
- *******************************************************************/
-
-#ifndef _LOCAL_BARCOHYDRA_H_
-#define _LOCAL_BARCOHYDRA_H_
-
-#include <flash.h>
-#include <asm/io.h>
-
-/* Defines for the barcohydra board */
-#ifndef CONFIG_SYS_FLASH_ERASE_SECTOR_LENGTH
-#define CONFIG_SYS_FLASH_ERASE_SECTOR_LENGTH (0x10000)
-#endif
-
-#ifndef CONFIG_SYS_DEFAULT_KERNEL_ADDRESS
-#define CONFIG_SYS_DEFAULT_KERNEL_ADDRESS (CONFIG_SYS_FLASH_BASE + 0x30000)
-#endif
-
-#ifndef CONFIG_SYS_WORKING_KERNEL_ADDRESS
-#define CONFIG_SYS_WORKING_KERNEL_ADDRESS (0xFFE00000)
-#endif
-
-
-typedef struct SBootInfo {
-       unsigned int address;
-       unsigned int size;
-       unsigned char state;
-}TSBootInfo;
-
-/* barcohydra.c */
-int checkboard(void);
-phys_size_t initdram(int board_type);
-void pci_init_board(void);
-void check_flash(void);
-int write_flash(char *addr, char value);
-TSBootInfo* find_boot_info(void);
-void final_boot(void);
-#endif
+/********************************************************************
+ *
+ * Unless otherwise specified, Copyright (C) 2004-2005 Barco Control Rooms
+ *
+ * $Source: C:/qaz/__CVS_ROOT/units/or1200_soc/sw/u-boot-2009.03/board/barco/barco_svc.h,v $
+ * $Revision: 1.1.1.1 $
+ * $Author: kenagy $
+ * $Date: 2009/03/25 22:21:29 $
+ *
+ * Last ChangeLog Entry
+ * $Log: barco_svc.h,v $
+ * Revision 1.1.1.1  2009/03/25 22:21:29  kenagy
+ * no message
+ *
+ * Revision 1.2  2005/02/21 12:48:58  mleeman
+ * update of copyright years (feedback wd)
+ *
+ * Revision 1.1  2005/02/14 09:31:07  mleeman
+ * renaming of files
+ *
+ * Revision 1.1  2005/02/14 09:23:46  mleeman
+ * - moved 'barcohydra' directory to a more generic barco; since we will be
+ *   supporting and adding multiple boards
+ *
+ * Revision 1.1  2005/02/08 15:40:19  mleeman
+ * modified and added platform files
+ *
+ * Revision 1.2  2005/01/25 08:05:04  mleeman
+ * more cleanup of the code
+ *
+ * Revision 1.1  2004/07/20 08:49:55  mleeman
+ * Working version of the default and nfs kernel booting.
+ *
+ *
+ *******************************************************************/
+
+#ifndef _LOCAL_BARCOHYDRA_H_
+#define _LOCAL_BARCOHYDRA_H_
+
+#include <flash.h>
+#include <asm/io.h>
+
+/* Defines for the barcohydra board */
+#ifndef CONFIG_SYS_FLASH_ERASE_SECTOR_LENGTH
+#define CONFIG_SYS_FLASH_ERASE_SECTOR_LENGTH (0x10000)
+#endif
+
+#ifndef CONFIG_SYS_DEFAULT_KERNEL_ADDRESS
+#define CONFIG_SYS_DEFAULT_KERNEL_ADDRESS (CONFIG_SYS_FLASH_BASE + 0x30000)
+#endif
+
+#ifndef CONFIG_SYS_WORKING_KERNEL_ADDRESS
+#define CONFIG_SYS_WORKING_KERNEL_ADDRESS (0xFFE00000)
+#endif
+
+
+typedef struct SBootInfo {
+       unsigned int address;
+       unsigned int size;
+       unsigned char state;
+}TSBootInfo;
+
+/* barcohydra.c */
+int checkboard(void);
+phys_size_t initdram(int board_type);
+void pci_init_board(void);
+void check_flash(void);
+int write_flash(char *addr, char value);
+TSBootInfo* find_boot_info(void);
+void final_boot(void);
+#endif
diff -Naur u-boot-2009.03_orig/board/barco/flash.c u-boot-2009.03/board/barco/flash.c
--- u-boot-2009.03_orig/board/barco/flash.c     2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/board/barco/flash.c  2009-03-31 14:43:04.168152000 -0700
@@ -1,611 +1,614 @@
-/********************************************************************
- *
- * Unless otherwise specified, Copyright (C) 2004-2005 Barco Control Rooms
- *
- * $Source: /home/services/cvs/firmware/ppc/u-boot-1.1.2/board/barco/flash.c,v $
- * $Revision: 1.3 $
- * $Author: mleeman $
- * $Date: 2005/02/21 12:48:58 $
- *
- * Last ChangeLog Entry
- * $Log: flash.c,v $
- * Revision 1.3  2005/02/21 12:48:58  mleeman
- * update of copyright years (feedback wd)
- *
- * Revision 1.2  2005/02/21 11:04:04  mleeman
- * remove dead code and Coding style (feedback wd)
- *
- * Revision 1.1  2005/02/14 09:23:46  mleeman
- * - moved 'barcohydra' directory to a more generic barco; since we will be
- *   supporting and adding multiple boards
- *
- * Revision 1.2  2005/02/09 12:56:23  mleeman
- * add generic header to track changes in sources
- *
- *
- *******************************************************************/
-
-/*
- * (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
- */
-
-#include <common.h>
-#include <mpc824x.h>
-#include <asm/processor.h>
-#include <flash.h>
-
-#define ROM_CS0_START  0xFF800000
-#define ROM_CS1_START  0xFF000000
-
-flash_info_t flash_info[CONFIG_SYS_MAX_FLASH_BANKS]; /* info for FLASH chips    */
-
-#if defined(CONFIG_ENV_IS_IN_FLASH)
-# ifndef  CONFIG_ENV_ADDR
-#  define CONFIG_ENV_ADDR  (CONFIG_SYS_FLASH_BASE + CONFIG_ENV_OFFSET)
-# endif
-# ifndef  CONFIG_ENV_SIZE
-#  define CONFIG_ENV_SIZE  CONFIG_ENV_SECT_SIZE
-# endif
-# ifndef  CONFIG_ENV_SECT_SIZE
-#  define CONFIG_ENV_SECT_SIZE  CONFIG_ENV_SIZE
-# endif
-#endif
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-
-/*flash command address offsets*/
-
-#define ADDR0          (0xAAA)
-#define ADDR1          (0x555)
-#define ADDR3          (0x001)
-
-#define FLASH_WORD_SIZE unsigned char
-
-/*-----------------------------------------------------------------------
- */
-
-static unsigned long flash_id(unsigned char mfct, unsigned char chip) __attribute__ ((const));
-
-typedef struct{
-  FLASH_WORD_SIZE extval;
-  unsigned short intval;
-} map_entry;
-
-static unsigned long flash_id(unsigned char mfct, unsigned char chip)
-{
-       static const map_entry mfct_map[] = {
-               {(FLASH_WORD_SIZE) AMD_MANUFACT,        (unsigned short) ((unsigned long) FLASH_MAN_AMD >> 16)},
-               {(FLASH_WORD_SIZE) FUJ_MANUFACT,        (unsigned short) ((unsigned long) FLASH_MAN_FUJ >> 16)},
-               {(FLASH_WORD_SIZE) STM_MANUFACT,        (unsigned short) ((unsigned long) FLASH_MAN_STM >> 16)},
-               {(FLASH_WORD_SIZE) MT_MANUFACT, (unsigned short) ((unsigned long) FLASH_MAN_MT >> 16)},
-               {(FLASH_WORD_SIZE) INTEL_MANUFACT,(unsigned short) ((unsigned long) FLASH_MAN_INTEL >> 16)},
-               {(FLASH_WORD_SIZE) INTEL_ALT_MANU,(unsigned short) ((unsigned long) FLASH_MAN_INTEL >> 16)}
-       };
-
-       static const map_entry chip_map[] = {
-               {AMD_ID_F040B,  FLASH_AM040},
-               {AMD_ID_F033C,  FLASH_AM033},
-               {AMD_ID_F065D,  FLASH_AM065},
-               {ATM_ID_LV040,  FLASH_AT040},
-               {(FLASH_WORD_SIZE) STM_ID_x800AB,       FLASH_STM800AB}
-       };
-
-       const map_entry *p;
-       unsigned long result = FLASH_UNKNOWN;
-
-       /* find chip id */
-       for(p = &chip_map[0]; p < &chip_map[sizeof chip_map / sizeof chip_map[0]]; p++){
-               if(p->extval == chip){
-                       result = FLASH_VENDMASK | p->intval;
-                       break;
-               }
-       }
-
-       /* find vendor id */
-       for(p = &mfct_map[0]; p < &mfct_map[sizeof mfct_map / sizeof mfct_map[0]]; p++){
-               if(p->extval == mfct){
-                       result &= ~FLASH_VENDMASK;
-                       result |= (unsigned long) p->intval << 16;
-                       break;
-               }
-       }
-
-       return result;
-}
-
-
-unsigned long flash_init(void)
-{
-       unsigned long i;
-       unsigned char j;
-       static const ulong flash_banks[] = CONFIG_SYS_FLASH_BANKS;
-
-       /* Init: no FLASHes known */
-       for (i = 0; i < CONFIG_SYS_MAX_FLASH_BANKS; i++){
-               flash_info_t * const pflinfo = &flash_info[i];
-               pflinfo->flash_id = FLASH_UNKNOWN;
-               pflinfo->size = 0;
-               pflinfo->sector_count = 0;
-       }
-
-       /* Enable writes to Hydra/Argus flash */
-       {
-               register unsigned int temp;
-               CONFIG_READ_WORD(PICR1,temp);
-               temp |= PICR1_FLASH_WR_EN;
-               CONFIG_WRITE_WORD(PICR1,temp);
-       }
-
-       for(i = 0; i < sizeof flash_banks / sizeof flash_banks[0]; i++){
-               flash_info_t * const pflinfo = &flash_info[i];
-               const unsigned long base_address = flash_banks[i];
-               volatile FLASH_WORD_SIZE * const flash = (FLASH_WORD_SIZE *) base_address;
-
-               /* write autoselect sequence */
-               flash[0x5555] = 0xaa;
-               flash[0x2aaa] = 0x55;
-               flash[0x5555] = 0x90;
-               __asm__ __volatile__("sync");
-
-               pflinfo->flash_id = flash_id(flash[0x0], flash[0x1]);
-
-               switch(pflinfo->flash_id & FLASH_TYPEMASK){
-                       case FLASH_AM033:
-                               pflinfo->size = 0x00200000;
-                               pflinfo->sector_count = 64;
-                               for(j = 0; j < 64; j++){
-                                       pflinfo->start[j] = base_address + 0x00010000 * j;
-                                       pflinfo->protect[j] = flash[(j << 16) | 0x2];
-                               }
-                               break;
-                       case FLASH_AM065:
-                               pflinfo->size = 0x00800000;
-                               pflinfo->sector_count =128;
-                               for(j = 0; j < 128; j++){
-                                       pflinfo->start[j] = base_address + 0x00010000 * j;
-                                       pflinfo->protect[j] = flash[(j << 16) | 0x2];
-                               }
-                               break;
-                       case FLASH_AT040:
-                               pflinfo->size = 0x00080000;
-                               pflinfo->sector_count = 2;
-                               pflinfo->start[0] = base_address ;
-                               pflinfo->start[1] = base_address + 0x00004000;
-                               pflinfo->protect[0] = ((flash[0x02] & 0X01)==0) ? 0X02 : 0X01;
-                               pflinfo->protect[1] = 0X02;
-                               break;
-                       case FLASH_AM040:
-                               pflinfo->size = 0x00080000;
-                               pflinfo->sector_count = 8;
-                               for(j = 0; j < 8; j++){
-                                       pflinfo->start[j] = base_address + 0x00010000 * j;
-                                       pflinfo->protect[j] = flash[(j << 16) | 0x2];
-                               }
-                               break;
-                       case FLASH_STM800AB:
-                               pflinfo->size = 0x00100000;
-                               pflinfo->sector_count = 19;
-                               pflinfo->start[0] = base_address;
-                               pflinfo->start[1] = base_address + 0x4000;
-                               pflinfo->start[2] = base_address + 0x6000;
-                               pflinfo->start[3] = base_address + 0x8000;
-                               for(j = 1; j < 16; j++){
-                                       pflinfo->start[j+3] = base_address + 0x00010000 * j;
-                               }
-                               break;
-               }
-               /* Protect monitor and environment sectors */
-#if CONFIG_SYS_MONITOR_BASE >= CONFIG_SYS_FLASH_BASE
-               flash_protect(FLAG_PROTECT_SET,
-                               CONFIG_SYS_MONITOR_BASE,
-                               CONFIG_SYS_MONITOR_BASE + monitor_flash_len - 1,
-                               &flash_info[0]);
-#endif
-
-#if defined(CONFIG_ENV_IS_IN_FLASH) && defined(CONFIG_ENV_ADDR)
-               flash_protect(FLAG_PROTECT_SET,
-                               CONFIG_ENV_ADDR,
-                               CONFIG_ENV_ADDR + CONFIG_ENV_SIZE - 1,
-                               &flash_info[0]);
-#endif
-
-               /* reset device to read mode */
-               flash[0x0000] = 0xf0;
-               __asm__ __volatile__("sync");
-       }
-
-       return flash_info[0].size + flash_info[1].size;
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info(flash_info_t *info)
-{
-       static const char unk[] = "Unknown";
-       const char *mfct = unk, *type = unk;
-       unsigned int i;
-
-       if(info->flash_id != FLASH_UNKNOWN){
-               switch(info->flash_id & FLASH_VENDMASK){
-                       case FLASH_MAN_ATM:
-                               mfct = "Atmel";
-                               break;
-                       case FLASH_MAN_AMD:
-                               mfct = "AMD";
-                               break;
-                       case FLASH_MAN_FUJ:
-                               mfct = "FUJITSU";
-                               break;
-                       case FLASH_MAN_STM:
-                               mfct = "STM";
-                               break;
-                       case FLASH_MAN_SST:
-                               mfct = "SST";
-                               break;
-                       case FLASH_MAN_BM:
-                               mfct = "Bright Microelectonics";
-                               break;
-                       case FLASH_MAN_INTEL:
-                               mfct = "Intel";
-                               break;
-               }
-
-               switch(info->flash_id & FLASH_TYPEMASK){
-                       case FLASH_AT040:
-                               type = "AT49LV040 (512K * 8, uniform sector size)";
-                               break;
-                       case FLASH_AM033:
-                               type = "AM29F033C (4 Mbit * 8, uniform sector size)";
-                               break;
-                       case FLASH_AM040:
-                               type = "AM29F040B (512K * 8, uniform sector size)";
-                               break;
-                       case FLASH_AM065:
-                               type = "AM29F0465D ( 8 MBit * 8, uniform sector size) or part of AM29F652D( 16 MB)";
-                               break;
-                       case FLASH_AM400B:
-                               type = "AM29LV400B (4 Mbit, bottom boot sect)";
-                               break;
-                       case FLASH_AM400T:
-                               type = "AM29LV400T (4 Mbit, top boot sector)";
-                               break;
-                       case FLASH_AM800B:
-                               type = "AM29LV800B (8 Mbit, bottom boot sect)";
-                               break;
-                       case FLASH_AM800T:
-                               type = "AM29LV800T (8 Mbit, top boot sector)";
-                               break;
-                       case FLASH_AM160T:
-                               type = "AM29LV160T (16 Mbit, top boot sector)";
-                               break;
-                       case FLASH_AM320B:
-                               type = "AM29LV320B (32 Mbit, bottom boot sect)";
-                               break;
-                       case FLASH_AM320T:
-                               type = "AM29LV320T (32 Mbit, top boot sector)";
-                               break;
-                       case FLASH_STM800AB:
-                               type = "M29W800AB (8 Mbit, bottom boot sect)";
-                               break;
-                       case FLASH_SST800A:
-                               type = "SST39LF/VF800 (8 Mbit, uniform sector size)";
-                               break;
-                       case FLASH_SST160A:
-                               type = "SST39LF/VF160 (16 Mbit, uniform sector size)";
-                               break;
-               }
-       }
-
-       printf(
-                       "\n  Brand: %s Type: %s\n"
-                       "  Size: %lu KB in %d Sectors\n",
-                       mfct,
-                       type,
-                       info->size >> 10,
-                       info->sector_count
-             );
-
-       printf ("  Sector Start Addresses:");
-
-       for (i = 0; i < info->sector_count; i++){
-               unsigned long size;
-               unsigned int erased;
-               unsigned long * flash = (unsigned long *) info->start[i];
-
-               /*
-                * Check if whole sector is erased
-                */
-               size =
-                       (i != (info->sector_count - 1)) ?
-                       (info->start[i + 1] - info->start[i]) >> 2 :
-                       (info->start[0] + info->size - info->start[i]) >> 2;
-
-               for(
-                               flash = (unsigned long *) info->start[i], erased = 1;
-                               (flash != (unsigned long *) info->start[i] + size) && erased;
-                               flash++
-                  ){
-                       erased = *flash == ~0x0UL;
-               }
-
-               printf(
-                               "%s %08lX %s %s",
-                               (i % 5) ? "" : "\n   ",
-                               info->start[i],
-                               erased ? "E" : " ",
-                               info->protect[i] ? "RO" : "  "
-                     );
-       }
-
-       puts("\n");
-       return;
-}
-
-int flash_erase(flash_info_t *info, int s_first, int s_last)
-{
-       volatile FLASH_WORD_SIZE *addr = (FLASH_WORD_SIZE *)(info->start[0]);
-       int flag, prot, sect, l_sect;
-       ulong start, now, last;
-       unsigned char sh8b;
-
-       if ((s_first < 0) || (s_first > s_last)) {
-               if (info->flash_id == FLASH_UNKNOWN) {
-                       printf ("- missing\n");
-               } else {
-                       printf ("- no sectors to erase\n");
-               }
-               return 1;
-       }
-
-       if ((info->flash_id == FLASH_UNKNOWN) ||
-                       (info->flash_id > (FLASH_MAN_STM | FLASH_AMD_COMP))) {
-               printf ("Can't erase unknown flash type - aborted\n");
-               return 1;
-       }
-
-       prot = 0;
-       for (sect=s_first; sect<=s_last; ++sect) {
-               if (info->protect[sect]) {
-                       prot++;
-               }
-       }
-
-       if (prot) {
-               printf ("- Warning: %d protected sectors will not be erased!\n",
-                               prot);
-       } else {
-               printf ("\n");
-       }
-
-       l_sect = -1;
-
-       /* Check the ROM CS */
-       if ((info->start[0] >= ROM_CS1_START) && (info->start[0] < ROM_CS0_START)){
-               sh8b = 3;
-       }
-       else{
-               sh8b = 0;
-       }
-
-       /* Disable interrupts which might cause a timeout here */
-       flag = disable_interrupts();
-
-       addr[ADDR0 << sh8b] = (FLASH_WORD_SIZE)0x00AA00AA;
-       addr[ADDR1 << sh8b] = (FLASH_WORD_SIZE)0x00550055;
-       addr[ADDR0 << sh8b] = (FLASH_WORD_SIZE)0x00800080;
-       addr[ADDR0 << sh8b] = (FLASH_WORD_SIZE)0x00AA00AA;
-       addr[ADDR1 << sh8b] = (FLASH_WORD_SIZE)0x00550055;
-
-       /* Start erase on unprotected sectors */
-       for (sect = s_first; sect<=s_last; sect++) {
-               if (info->protect[sect] == 0) { /* not protected */
-                       addr = (FLASH_WORD_SIZE *)(info->start[0] + (
-                                               (info->start[sect] - info->start[0]) << sh8b));
-                       if (info->flash_id & FLASH_MAN_SST){
-                               addr[ADDR0 << sh8b] = (FLASH_WORD_SIZE)0x00AA00AA;
-                               addr[ADDR1 << sh8b] = (FLASH_WORD_SIZE)0x00550055;
-                               addr[ADDR0 << sh8b] = (FLASH_WORD_SIZE)0x00800080;
-                               addr[ADDR0 << sh8b] = (FLASH_WORD_SIZE)0x00AA00AA;
-                               addr[ADDR1 << sh8b] = (FLASH_WORD_SIZE)0x00550055;
-                               addr[0] = (FLASH_WORD_SIZE)0x00500050;  /* block erase */
-                               udelay(30000);  /* wait 30 ms */
-                       }
-                       else
-                               addr[0] = (FLASH_WORD_SIZE)0x00300030;  /* sector erase */
-                       l_sect = sect;
-               }
-       }
-
-       /* re-enable interrupts if necessary */
-       if (flag){
-               enable_interrupts();
-       }
-
-       /* wait at least 80us - let's wait 1 ms */
-       udelay (1000);
-
-       /*
-        * We wait for the last triggered sector
-        */
-       if (l_sect < 0){
-               goto DONE;
-       }
-
-       start = get_timer (0);
-       last  = start;
-       addr = (FLASH_WORD_SIZE *)(info->start[0] + (
-                               (info->start[l_sect] - info->start[0]) << sh8b));
-       while ((addr[0] & (FLASH_WORD_SIZE)0x00800080) != (FLASH_WORD_SIZE)0x00800080) {
-               if ((now = get_timer(start)) > CONFIG_SYS_FLASH_ERASE_TOUT) {
-                       printf ("Timeout\n");
-                       return 1;
-               }
-               /* show that we're waiting */
-               if ((now - last) > 1000) {  /* every second */
-                       serial_putc ('.');
-                       last = now;
-               }
-       }
-
-DONE:
-       /* reset to read mode */
-       addr = (FLASH_WORD_SIZE *)info->start[0];
-       addr[0] = (FLASH_WORD_SIZE)0x00F000F0;  /* reset bank */
-
-       printf (" done\n");
-       return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
-       ulong cp, wp, data;
-       int i, l, rc;
-
-       wp = (addr & ~3);   /* get lower word aligned address */
-
-       /*
-        * handle unaligned start bytes
-        */
-       if ((l = addr - wp) != 0) {
-               data = 0;
-               for (i=0, cp=wp; i<l; ++i, ++cp) {
-                       data = (data << 8) | (*(uchar *)cp);
-               }
-               for (; i<4 && cnt>0; ++i) {
-                       data = (data << 8) | *src++;
-                       --cnt;
-                       ++cp;
-               }
-               for (; cnt==0 && i<4; ++i, ++cp) {
-                       data = (data << 8) | (*(uchar *)cp);
-               }
-
-               if ((rc = write_word(info, wp, data)) != 0) {
-                       return (rc);
-               }
-               wp += 4;
-       }
-
-       /*
-        * handle word aligned part
-        */
-       while (cnt >= 4) {
-               data = 0;
-               for (i=0; i<4; ++i) {
-                       data = (data << 8) | *src++;
-               }
-               if ((rc = write_word(info, wp, data)) != 0) {
-                       return (rc);
-               }
-               wp  += 4;
-               cnt -= 4;
-       }
-
-       if (cnt == 0) {
-               return (0);
-       }
-
-       /*
-        * handle unaligned tail bytes
-        */
-       data = 0;
-       for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
-               data = (data << 8) | *src++;
-               --cnt;
-       }
-       for (; i<4; ++i, ++cp) {
-               data = (data << 8) | (*(uchar *)cp);
-       }
-
-       return (write_word(info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
-       volatile FLASH_WORD_SIZE *addr2 = (FLASH_WORD_SIZE *)info->start[0];
-       volatile FLASH_WORD_SIZE *dest2;
-       volatile FLASH_WORD_SIZE *data2 = (FLASH_WORD_SIZE *)&data;
-       ulong start;
-       int flag;
-       int i;
-       unsigned char sh8b;
-
-       /* Check the ROM CS */
-       if ((info->start[0] >= ROM_CS1_START) && (info->start[0] < ROM_CS0_START)){
-               sh8b = 3;
-       }
-       else{
-               sh8b = 0;
-       }
-
-       dest2 = (FLASH_WORD_SIZE *)(((dest - info->start[0]) << sh8b) +
-                       info->start[0]);
-
-       /* Check if Flash is (sufficiently) erased */
-       if ((*dest2 & (FLASH_WORD_SIZE)data) != (FLASH_WORD_SIZE)data) {
-               return (2);
-       }
-       /* Disable interrupts which might cause a timeout here */
-       flag = disable_interrupts();
-
-       for (i=0; i<4/sizeof(FLASH_WORD_SIZE); i++){
-               addr2[ADDR0 << sh8b] = (FLASH_WORD_SIZE)0x00AA00AA;
-               addr2[ADDR1 << sh8b] = (FLASH_WORD_SIZE)0x00550055;
-               addr2[ADDR0 << sh8b] = (FLASH_WORD_SIZE)0x00A000A0;
-
-               dest2[i << sh8b] = data2[i];
-
-               /* re-enable interrupts if necessary */
-               if (flag){
-                       enable_interrupts();
-               }
-
-               /* data polling for D7 */
-               start = get_timer (0);
-               while ((dest2[i << sh8b] & (FLASH_WORD_SIZE)0x00800080) !=
-                               (data2[i] & (FLASH_WORD_SIZE)0x00800080)) {
-                       if (get_timer(start) > CONFIG_SYS_FLASH_WRITE_TOUT) {
-                               return (1);
-                       }
-               }
-       }
-
-       return (0);
-}
-
-/*----------------------------------------------------------------------- */
+/********************************************************************
+ *
+ * Unless otherwise specified, Copyright (C) 2004-2005 Barco Control Rooms
+ *
+ * $Source: C:/qaz/__CVS_ROOT/units/or1200_soc/sw/u-boot-2009.03/board/barco/flash.c,v $
+ * $Revision: 1.1.1.1 $
+ * $Author: kenagy $
+ * $Date: 2009/03/25 22:21:29 $
+ *
+ * Last ChangeLog Entry
+ * $Log: flash.c,v $
+ * Revision 1.1.1.1  2009/03/25 22:21:29  kenagy
+ * no message
+ *
+ * Revision 1.3  2005/02/21 12:48:58  mleeman
+ * update of copyright years (feedback wd)
+ *
+ * Revision 1.2  2005/02/21 11:04:04  mleeman
+ * remove dead code and Coding style (feedback wd)
+ *
+ * Revision 1.1  2005/02/14 09:23:46  mleeman
+ * - moved 'barcohydra' directory to a more generic barco; since we will be
+ *   supporting and adding multiple boards
+ *
+ * Revision 1.2  2005/02/09 12:56:23  mleeman
+ * add generic header to track changes in sources
+ *
+ *
+ *******************************************************************/
+
+/*
+ * (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
+ */
+
+#include <common.h>
+#include <mpc824x.h>
+#include <asm/processor.h>
+#include <flash.h>
+
+#define ROM_CS0_START  0xFF800000
+#define ROM_CS1_START  0xFF000000
+
+flash_info_t flash_info[CONFIG_SYS_MAX_FLASH_BANKS]; /* info for FLASH chips    */
+
+#if defined(CONFIG_ENV_IS_IN_FLASH)
+# ifndef  CONFIG_ENV_ADDR
+#  define CONFIG_ENV_ADDR  (CONFIG_SYS_FLASH_BASE + CONFIG_ENV_OFFSET)
+# endif
+# ifndef  CONFIG_ENV_SIZE
+#  define CONFIG_ENV_SIZE  CONFIG_ENV_SECT_SIZE
+# endif
+# ifndef  CONFIG_ENV_SECT_SIZE
+#  define CONFIG_ENV_SECT_SIZE  CONFIG_ENV_SIZE
+# endif
+#endif
+
+/*-----------------------------------------------------------------------
+ * Functions
+ */
+static int write_word (flash_info_t *info, ulong dest, ulong data);
+
+/*flash command address offsets*/
+
+#define ADDR0          (0xAAA)
+#define ADDR1          (0x555)
+#define ADDR3          (0x001)
+
+#define FLASH_WORD_SIZE unsigned char
+
+/*-----------------------------------------------------------------------
+ */
+
+static unsigned long flash_id(unsigned char mfct, unsigned char chip) __attribute__ ((const));
+
+typedef struct{
+  FLASH_WORD_SIZE extval;
+  unsigned short intval;
+} map_entry;
+
+static unsigned long flash_id(unsigned char mfct, unsigned char chip)
+{
+       static const map_entry mfct_map[] = {
+               {(FLASH_WORD_SIZE) AMD_MANUFACT,        (unsigned short) ((unsigned long) FLASH_MAN_AMD >> 16)},
+               {(FLASH_WORD_SIZE) FUJ_MANUFACT,        (unsigned short) ((unsigned long) FLASH_MAN_FUJ >> 16)},
+               {(FLASH_WORD_SIZE) STM_MANUFACT,        (unsigned short) ((unsigned long) FLASH_MAN_STM >> 16)},
+               {(FLASH_WORD_SIZE) MT_MANUFACT, (unsigned short) ((unsigned long) FLASH_MAN_MT >> 16)},
+               {(FLASH_WORD_SIZE) INTEL_MANUFACT,(unsigned short) ((unsigned long) FLASH_MAN_INTEL >> 16)},
+               {(FLASH_WORD_SIZE) INTEL_ALT_MANU,(unsigned short) ((unsigned long) FLASH_MAN_INTEL >> 16)}
+       };
+
+       static const map_entry chip_map[] = {
+               {AMD_ID_F040B,  FLASH_AM040},
+               {AMD_ID_F033C,  FLASH_AM033},
+               {AMD_ID_F065D,  FLASH_AM065},
+               {ATM_ID_LV040,  FLASH_AT040},
+               {(FLASH_WORD_SIZE) STM_ID_x800AB,       FLASH_STM800AB}
+       };
+
+       const map_entry *p;
+       unsigned long result = FLASH_UNKNOWN;
+
+       /* find chip id */
+       for(p = &chip_map[0]; p < &chip_map[sizeof chip_map / sizeof chip_map[0]]; p++){
+               if(p->extval == chip){
+                       result = FLASH_VENDMASK | p->intval;
+                       break;
+               }
+       }
+
+       /* find vendor id */
+       for(p = &mfct_map[0]; p < &mfct_map[sizeof mfct_map / sizeof mfct_map[0]]; p++){
+               if(p->extval == mfct){
+                       result &= ~FLASH_VENDMASK;
+                       result |= (unsigned long) p->intval << 16;
+                       break;
+               }
+       }
+
+       return result;
+}
+
+
+unsigned long flash_init(void)
+{
+       unsigned long i;
+       unsigned char j;
+       static const ulong flash_banks[] = CONFIG_SYS_FLASH_BANKS;
+
+       /* Init: no FLASHes known */
+       for (i = 0; i < CONFIG_SYS_MAX_FLASH_BANKS; i++){
+               flash_info_t * const pflinfo = &flash_info[i];
+               pflinfo->flash_id = FLASH_UNKNOWN;
+               pflinfo->size = 0;
+               pflinfo->sector_count = 0;
+       }
+
+       /* Enable writes to Hydra/Argus flash */
+       {
+               register unsigned int temp;
+               CONFIG_READ_WORD(PICR1,temp);
+               temp |= PICR1_FLASH_WR_EN;
+               CONFIG_WRITE_WORD(PICR1,temp);
+       }
+
+       for(i = 0; i < sizeof flash_banks / sizeof flash_banks[0]; i++){
+               flash_info_t * const pflinfo = &flash_info[i];
+               const unsigned long base_address = flash_banks[i];
+               volatile FLASH_WORD_SIZE * const flash = (FLASH_WORD_SIZE *) base_address;
+
+               /* write autoselect sequence */
+               flash[0x5555] = 0xaa;
+               flash[0x2aaa] = 0x55;
+               flash[0x5555] = 0x90;
+               __asm__ __volatile__("sync");
+
+               pflinfo->flash_id = flash_id(flash[0x0], flash[0x1]);
+
+               switch(pflinfo->flash_id & FLASH_TYPEMASK){
+                       case FLASH_AM033:
+                               pflinfo->size = 0x00200000;
+                               pflinfo->sector_count = 64;
+                               for(j = 0; j < 64; j++){
+                                       pflinfo->start[j] = base_address + 0x00010000 * j;
+                                       pflinfo->protect[j] = flash[(j << 16) | 0x2];
+                               }
+                               break;
+                       case FLASH_AM065:
+                               pflinfo->size = 0x00800000;
+                               pflinfo->sector_count =128;
+                               for(j = 0; j < 128; j++){
+                                       pflinfo->start[j] = base_address + 0x00010000 * j;
+                                       pflinfo->protect[j] = flash[(j << 16) | 0x2];
+                               }
+                               break;
+                       case FLASH_AT040:
+                               pflinfo->size = 0x00080000;
+                               pflinfo->sector_count = 2;
+                               pflinfo->start[0] = base_address ;
+                               pflinfo->start[1] = base_address + 0x00004000;
+                               pflinfo->protect[0] = ((flash[0x02] & 0X01)==0) ? 0X02 : 0X01;
+                               pflinfo->protect[1] = 0X02;
+                               break;
+                       case FLASH_AM040:
+                               pflinfo->size = 0x00080000;
+                               pflinfo->sector_count = 8;
+                               for(j = 0; j < 8; j++){
+                                       pflinfo->start[j] = base_address + 0x00010000 * j;
+                                       pflinfo->protect[j] = flash[(j << 16) | 0x2];
+                               }
+                               break;
+                       case FLASH_STM800AB:
+                               pflinfo->size = 0x00100000;
+                               pflinfo->sector_count = 19;
+                               pflinfo->start[0] = base_address;
+                               pflinfo->start[1] = base_address + 0x4000;
+                               pflinfo->start[2] = base_address + 0x6000;
+                               pflinfo->start[3] = base_address + 0x8000;
+                               for(j = 1; j < 16; j++){
+                                       pflinfo->start[j+3] = base_address + 0x00010000 * j;
+                               }
+                               break;
+               }
+               /* Protect monitor and environment sectors */
+#if CONFIG_SYS_MONITOR_BASE >= CONFIG_SYS_FLASH_BASE
+               flash_protect(FLAG_PROTECT_SET,
+                               CONFIG_SYS_MONITOR_BASE,
+                               CONFIG_SYS_MONITOR_BASE + monitor_flash_len - 1,
+                               &flash_info[0]);
+#endif
+
+#if defined(CONFIG_ENV_IS_IN_FLASH) && defined(CONFIG_ENV_ADDR)
+               flash_protect(FLAG_PROTECT_SET,
+                               CONFIG_ENV_ADDR,
+                               CONFIG_ENV_ADDR + CONFIG_ENV_SIZE - 1,
+                               &flash_info[0]);
+#endif
+
+               /* reset device to read mode */
+               flash[0x0000] = 0xf0;
+               __asm__ __volatile__("sync");
+       }
+
+       return flash_info[0].size + flash_info[1].size;
+}
+
+/*-----------------------------------------------------------------------
+ */
+void flash_print_info(flash_info_t *info)
+{
+       static const char unk[] = "Unknown";
+       const char *mfct = unk, *type = unk;
+       unsigned int i;
+
+       if(info->flash_id != FLASH_UNKNOWN){
+               switch(info->flash_id & FLASH_VENDMASK){
+                       case FLASH_MAN_ATM:
+                               mfct = "Atmel";
+                               break;
+                       case FLASH_MAN_AMD:
+                               mfct = "AMD";
+                               break;
+                       case FLASH_MAN_FUJ:
+                               mfct = "FUJITSU";
+                               break;
+                       case FLASH_MAN_STM:
+                               mfct = "STM";
+                               break;
+                       case FLASH_MAN_SST:
+                               mfct = "SST";
+                               break;
+                       case FLASH_MAN_BM:
+                               mfct = "Bright Microelectonics";
+                               break;
+                       case FLASH_MAN_INTEL:
+                               mfct = "Intel";
+                               break;
+               }
+
+               switch(info->flash_id & FLASH_TYPEMASK){
+                       case FLASH_AT040:
+                               type = "AT49LV040 (512K * 8, uniform sector size)";
+                               break;
+                       case FLASH_AM033:
+                               type = "AM29F033C (4 Mbit * 8, uniform sector size)";
+                               break;
+                       case FLASH_AM040:
+                               type = "AM29F040B (512K * 8, uniform sector size)";
+                               break;
+                       case FLASH_AM065:
+                               type = "AM29F0465D ( 8 MBit * 8, uniform sector size) or part of AM29F652D( 16 MB)";
+                               break;
+                       case FLASH_AM400B:
+                               type = "AM29LV400B (4 Mbit, bottom boot sect)";
+                               break;
+                       case FLASH_AM400T:
+                               type = "AM29LV400T (4 Mbit, top boot sector)";
+                               break;
+                       case FLASH_AM800B:
+                               type = "AM29LV800B (8 Mbit, bottom boot sect)";
+                               break;
+                       case FLASH_AM800T:
+                               type = "AM29LV800T (8 Mbit, top boot sector)";
+                               break;
+                       case FLASH_AM160T:
+                               type = "AM29LV160T (16 Mbit, top boot sector)";
+                               break;
+                       case FLASH_AM320B:
+                               type = "AM29LV320B (32 Mbit, bottom boot sect)";
+                               break;
+                       case FLASH_AM320T:
+                               type = "AM29LV320T (32 Mbit, top boot sector)";
+                               break;
+                       case FLASH_STM800AB:
+                               type = "M29W800AB (8 Mbit, bottom boot sect)";
+                               break;
+                       case FLASH_SST800A:
+                               type = "SST39LF/VF800 (8 Mbit, uniform sector size)";
+                               break;
+                       case FLASH_SST160A:
+                               type = "SST39LF/VF160 (16 Mbit, uniform sector size)";
+                               break;
+               }
+       }
+
+       printf(
+                       "\n  Brand: %s Type: %s\n"
+                       "  Size: %lu KB in %d Sectors\n",
+                       mfct,
+                       type,
+                       info->size >> 10,
+                       info->sector_count
+             );
+
+       printf ("  Sector Start Addresses:");
+
+       for (i = 0; i < info->sector_count; i++){
+               unsigned long size;
+               unsigned int erased;
+               unsigned long * flash = (unsigned long *) info->start[i];
+
+               /*
+                * Check if whole sector is erased
+                */
+               size =
+                       (i != (info->sector_count - 1)) ?
+                       (info->start[i + 1] - info->start[i]) >> 2 :
+                       (info->start[0] + info->size - info->start[i]) >> 2;
+
+               for(
+                               flash = (unsigned long *) info->start[i], erased = 1;
+                               (flash != (unsigned long *) info->start[i] + size) && erased;
+                               flash++
+                  ){
+                       erased = *flash == ~0x0UL;
+               }
+
+               printf(
+                               "%s %08lX %s %s",
+                               (i % 5) ? "" : "\n   ",
+                               info->start[i],
+                               erased ? "E" : " ",
+                               info->protect[i] ? "RO" : "  "
+                     );
+       }
+
+       puts("\n");
+       return;
+}
+
+int flash_erase(flash_info_t *info, int s_first, int s_last)
+{
+       volatile FLASH_WORD_SIZE *addr = (FLASH_WORD_SIZE *)(info->start[0]);
+       int flag, prot, sect, l_sect;
+       ulong start, now, last;
+       unsigned char sh8b;
+
+       if ((s_first < 0) || (s_first > s_last)) {
+               if (info->flash_id == FLASH_UNKNOWN) {
+                       printf ("- missing\n");
+               } else {
+                       printf ("- no sectors to erase\n");
+               }
+               return 1;
+       }
+
+       if ((info->flash_id == FLASH_UNKNOWN) ||
+                       (info->flash_id > (FLASH_MAN_STM | FLASH_AMD_COMP))) {
+               printf ("Can't erase unknown flash type - aborted\n");
+               return 1;
+       }
+
+       prot = 0;
+       for (sect=s_first; sect<=s_last; ++sect) {
+               if (info->protect[sect]) {
+                       prot++;
+               }
+       }
+
+       if (prot) {
+               printf ("- Warning: %d protected sectors will not be erased!\n",
+                               prot);
+       } else {
+               printf ("\n");
+       }
+
+       l_sect = -1;
+
+       /* Check the ROM CS */
+       if ((info->start[0] >= ROM_CS1_START) && (info->start[0] < ROM_CS0_START)){
+               sh8b = 3;
+       }
+       else{
+               sh8b = 0;
+       }
+
+       /* Disable interrupts which might cause a timeout here */
+       flag = disable_interrupts();
+
+       addr[ADDR0 << sh8b] = (FLASH_WORD_SIZE)0x00AA00AA;
+       addr[ADDR1 << sh8b] = (FLASH_WORD_SIZE)0x00550055;
+       addr[ADDR0 << sh8b] = (FLASH_WORD_SIZE)0x00800080;
+       addr[ADDR0 << sh8b] = (FLASH_WORD_SIZE)0x00AA00AA;
+       addr[ADDR1 << sh8b] = (FLASH_WORD_SIZE)0x00550055;
+
+       /* Start erase on unprotected sectors */
+       for (sect = s_first; sect<=s_last; sect++) {
+               if (info->protect[sect] == 0) { /* not protected */
+                       addr = (FLASH_WORD_SIZE *)(info->start[0] + (
+                                               (info->start[sect] - info->start[0]) << sh8b));
+                       if (info->flash_id & FLASH_MAN_SST){
+                               addr[ADDR0 << sh8b] = (FLASH_WORD_SIZE)0x00AA00AA;
+                               addr[ADDR1 << sh8b] = (FLASH_WORD_SIZE)0x00550055;
+                               addr[ADDR0 << sh8b] = (FLASH_WORD_SIZE)0x00800080;
+                               addr[ADDR0 << sh8b] = (FLASH_WORD_SIZE)0x00AA00AA;
+                               addr[ADDR1 << sh8b] = (FLASH_WORD_SIZE)0x00550055;
+                               addr[0] = (FLASH_WORD_SIZE)0x00500050;  /* block erase */
+                               udelay(30000);  /* wait 30 ms */
+                       }
+                       else
+                               addr[0] = (FLASH_WORD_SIZE)0x00300030;  /* sector erase */
+                       l_sect = sect;
+               }
+       }
+
+       /* re-enable interrupts if necessary */
+       if (flag){
+               enable_interrupts();
+       }
+
+       /* wait at least 80us - let's wait 1 ms */
+       udelay (1000);
+
+       /*
+        * We wait for the last triggered sector
+        */
+       if (l_sect < 0){
+               goto DONE;
+       }
+
+       start = get_timer (0);
+       last  = start;
+       addr = (FLASH_WORD_SIZE *)(info->start[0] + (
+                               (info->start[l_sect] - info->start[0]) << sh8b));
+       while ((addr[0] & (FLASH_WORD_SIZE)0x00800080) != (FLASH_WORD_SIZE)0x00800080) {
+               if ((now = get_timer(start)) > CONFIG_SYS_FLASH_ERASE_TOUT) {
+                       printf ("Timeout\n");
+                       return 1;
+               }
+               /* show that we're waiting */
+               if ((now - last) > 1000) {  /* every second */
+                       serial_putc ('.');
+                       last = now;
+               }
+       }
+
+DONE:
+       /* reset to read mode */
+       addr = (FLASH_WORD_SIZE *)info->start[0];
+       addr[0] = (FLASH_WORD_SIZE)0x00F000F0;  /* reset bank */
+
+       printf (" done\n");
+       return 0;
+}
+
+/*-----------------------------------------------------------------------
+ * Copy memory to flash, returns:
+ * 0 - OK
+ * 1 - write timeout
+ * 2 - Flash not erased
+ */
+
+int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
+{
+       ulong cp, wp, data;
+       int i, l, rc;
+
+       wp = (addr & ~3);   /* get lower word aligned address */
+
+       /*
+        * handle unaligned start bytes
+        */
+       if ((l = addr - wp) != 0) {
+               data = 0;
+               for (i=0, cp=wp; i<l; ++i, ++cp) {
+                       data = (data << 8) | (*(uchar *)cp);
+               }
+               for (; i<4 && cnt>0; ++i) {
+                       data = (data << 8) | *src++;
+                       --cnt;
+                       ++cp;
+               }
+               for (; cnt==0 && i<4; ++i, ++cp) {
+                       data = (data << 8) | (*(uchar *)cp);
+               }
+
+               if ((rc = write_word(info, wp, data)) != 0) {
+                       return (rc);
+               }
+               wp += 4;
+       }
+
+       /*
+        * handle word aligned part
+        */
+       while (cnt >= 4) {
+               data = 0;
+               for (i=0; i<4; ++i) {
+                       data = (data << 8) | *src++;
+               }
+               if ((rc = write_word(info, wp, data)) != 0) {
+                       return (rc);
+               }
+               wp  += 4;
+               cnt -= 4;
+       }
+
+       if (cnt == 0) {
+               return (0);
+       }
+
+       /*
+        * handle unaligned tail bytes
+        */
+       data = 0;
+       for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
+               data = (data << 8) | *src++;
+               --cnt;
+       }
+       for (; i<4; ++i, ++cp) {
+               data = (data << 8) | (*(uchar *)cp);
+       }
+
+       return (write_word(info, wp, data));
+}
+
+/*-----------------------------------------------------------------------
+ * Write a word to Flash, returns:
+ * 0 - OK
+ * 1 - write timeout
+ * 2 - Flash not erased
+ */
+static int write_word (flash_info_t *info, ulong dest, ulong data)
+{
+       volatile FLASH_WORD_SIZE *addr2 = (FLASH_WORD_SIZE *)info->start[0];
+       volatile FLASH_WORD_SIZE *dest2;
+       volatile FLASH_WORD_SIZE *data2 = (FLASH_WORD_SIZE *)&data;
+       ulong start;
+       int flag;
+       int i;
+       unsigned char sh8b;
+
+       /* Check the ROM CS */
+       if ((info->start[0] >= ROM_CS1_START) && (info->start[0] < ROM_CS0_START)){
+               sh8b = 3;
+       }
+       else{
+               sh8b = 0;
+       }
+
+       dest2 = (FLASH_WORD_SIZE *)(((dest - info->start[0]) << sh8b) +
+                       info->start[0]);
+
+       /* Check if Flash is (sufficiently) erased */
+       if ((*dest2 & (FLASH_WORD_SIZE)data) != (FLASH_WORD_SIZE)data) {
+               return (2);
+       }
+       /* Disable interrupts which might cause a timeout here */
+       flag = disable_interrupts();
+
+       for (i=0; i<4/sizeof(FLASH_WORD_SIZE); i++){
+               addr2[ADDR0 << sh8b] = (FLASH_WORD_SIZE)0x00AA00AA;
+               addr2[ADDR1 << sh8b] = (FLASH_WORD_SIZE)0x00550055;
+               addr2[ADDR0 << sh8b] = (FLASH_WORD_SIZE)0x00A000A0;
+
+               dest2[i << sh8b] = data2[i];
+
+               /* re-enable interrupts if necessary */
+               if (flag){
+                       enable_interrupts();
+               }
+
+               /* data polling for D7 */
+               start = get_timer (0);
+               while ((dest2[i << sh8b] & (FLASH_WORD_SIZE)0x00800080) !=
+                               (data2[i] & (FLASH_WORD_SIZE)0x00800080)) {
+                       if (get_timer(start) > CONFIG_SYS_FLASH_WRITE_TOUT) {
+                               return (1);
+                       }
+               }
+       }
+
+       return (0);
+}
+
+/*----------------------------------------------------------------------- */
diff -Naur u-boot-2009.03_orig/board/barco/speed.h u-boot-2009.03/board/barco/speed.h
--- u-boot-2009.03_orig/board/barco/speed.h     2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/board/barco/speed.h  2009-03-31 14:43:04.215026400 -0700
@@ -1,78 +1,81 @@
-/********************************************************************
- *
- * Unless otherwise specified, Copyright (C) 2004-2005 Barco Control Rooms
- *
- * $Source: /home/services/cvs/firmware/ppc/u-boot-1.1.2/board/barco/speed.h,v $
- * $Revision: 1.2 $
- * $Author: mleeman $
- * $Date: 2005/02/21 12:48:58 $
- *
- * Last ChangeLog Entry
- * $Log: speed.h,v $
- * Revision 1.2  2005/02/21 12:48:58  mleeman
- * update of copyright years (feedback wd)
- *
- * Revision 1.1  2005/02/14 09:23:46  mleeman
- * - moved 'barcohydra' directory to a more generic barco; since we will be
- *   supporting and adding multiple boards
- *
- * Revision 1.2  2005/02/09 12:56:23  mleeman
- * add generic header to track changes in sources
- *
- *
- *******************************************************************/
-
-/*
- * (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
- */
-
-/*-----------------------------------------------------------------------
- * Timer value for timer 2, ICLK = 10
- *
- * SPEED_FCOUNT2 =  GCLK / (16 * (TIMER_TMR_PS + 1))
- * SPEED_TMR3_PS = (GCLK / (16 * SPEED_FCOUNT3)) - 1
- *
- * SPEED_FCOUNT2       timer 2 counting frequency
- * GCLK                        CPU clock
- * SPEED_TMR2_PS       prescaler
- */
-#define SPEED_TMR2_PS  (250 - 1)       /* divide by 250        */
-
-/*-----------------------------------------------------------------------
- * Timer value for PIT
- *
- * PIT_TIME = SPEED_PITC / PITRTCLK
- * PITRTCLK = 8192
- */
-#define SPEED_PITC     (82 << 16)      /* start counting from 82       */
-
-/*
- * The new value for PTA is calculated from
- *
- *     PTA = (gclk * Trefresh) / (2 ^ (2 * DFBRG) * PTP * NCS)
- *
- * gclk                CPU clock (not bus clock !)
- * Trefresh    Refresh cycle * 4 (four word bursts used)
- * DFBRG       For normal mode (no clock reduction) always 0
- * PTP         Prescaler (already adjusted for no. of banks and 4K / 8K refresh)
- * NCS         Number of SDRAM banks (chip selects) on this UPM.
- */
+/********************************************************************
+ *
+ * Unless otherwise specified, Copyright (C) 2004-2005 Barco Control Rooms
+ *
+ * $Source: C:/qaz/__CVS_ROOT/units/or1200_soc/sw/u-boot-2009.03/board/barco/speed.h,v $
+ * $Revision: 1.1.1.1 $
+ * $Author: kenagy $
+ * $Date: 2009/03/25 22:21:29 $
+ *
+ * Last ChangeLog Entry
+ * $Log: speed.h,v $
+ * Revision 1.1.1.1  2009/03/25 22:21:29  kenagy
+ * no message
+ *
+ * Revision 1.2  2005/02/21 12:48:58  mleeman
+ * update of copyright years (feedback wd)
+ *
+ * Revision 1.1  2005/02/14 09:23:46  mleeman
+ * - moved 'barcohydra' directory to a more generic barco; since we will be
+ *   supporting and adding multiple boards
+ *
+ * Revision 1.2  2005/02/09 12:56:23  mleeman
+ * add generic header to track changes in sources
+ *
+ *
+ *******************************************************************/
+
+/*
+ * (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
+ */
+
+/*-----------------------------------------------------------------------
+ * Timer value for timer 2, ICLK = 10
+ *
+ * SPEED_FCOUNT2 =  GCLK / (16 * (TIMER_TMR_PS + 1))
+ * SPEED_TMR3_PS = (GCLK / (16 * SPEED_FCOUNT3)) - 1
+ *
+ * SPEED_FCOUNT2       timer 2 counting frequency
+ * GCLK                        CPU clock
+ * SPEED_TMR2_PS       prescaler
+ */
+#define SPEED_TMR2_PS  (250 - 1)       /* divide by 250        */
+
+/*-----------------------------------------------------------------------
+ * Timer value for PIT
+ *
+ * PIT_TIME = SPEED_PITC / PITRTCLK
+ * PITRTCLK = 8192
+ */
+#define SPEED_PITC     (82 << 16)      /* start counting from 82       */
+
+/*
+ * The new value for PTA is calculated from
+ *
+ *     PTA = (gclk * Trefresh) / (2 ^ (2 * DFBRG) * PTP * NCS)
+ *
+ * gclk                CPU clock (not bus clock !)
+ * Trefresh    Refresh cycle * 4 (four word bursts used)
+ * DFBRG       For normal mode (no clock reduction) always 0
+ * PTP         Prescaler (already adjusted for no. of banks and 4K / 8K refresh)
+ * NCS         Number of SDRAM banks (chip selects) on this UPM.
+ */
diff -Naur u-boot-2009.03_orig/board/bc3450/CVS/Entries u-boot-2009.03/board/bc3450/CVS/Entries
--- u-boot-2009.03_orig/board/bc3450/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/bc3450/CVS/Entries     2009-03-25 15:57:14.606436700 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bc3450.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_bc3450.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mt48lc16m16a2-75.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/bc3450/CVS/Entries.Extra u-boot-2009.03/board/bc3450/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/bc3450/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/bc3450/CVS/Entries.Extra       2009-03-25 15:57:14.622061600 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019689/
+/bc3450.c///1238019689/
+/cmd_bc3450.c///1238019689/
+/config.mk///1238019689/
+/mt48lc16m16a2-75.h///1238019689/
diff -Naur u-boot-2009.03_orig/board/bc3450/CVS/Entries.Extra.Old u-boot-2009.03/board/bc3450/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/bc3450/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/bc3450/CVS/Entries.Extra.Old   2009-03-25 15:24:08.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019689/
+/bc3450.c///1238019689/
+/cmd_bc3450.c///1238019689/
+/config.mk///1238019689/
+/mt48lc16m16a2-75.h///1238019689/
diff -Naur u-boot-2009.03_orig/board/bc3450/CVS/Entries.Old u-boot-2009.03/board/bc3450/CVS/Entries.Old
--- u-boot-2009.03_orig/board/bc3450/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/bc3450/CVS/Entries.Old 2009-03-25 15:24:08.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/bc3450.c/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/cmd_bc3450.c/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/mt48lc16m16a2-75.h/1.1.1.1/Wed Mar 25 22:21:29 2009//
+D
diff -Naur u-boot-2009.03_orig/board/bc3450/CVS/Repository u-boot-2009.03/board/bc3450/CVS/Repository
--- u-boot-2009.03_orig/board/bc3450/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/bc3450/CVS/Repository  2009-03-25 15:24:08.916305400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/bc3450
diff -Naur u-boot-2009.03_orig/board/bc3450/CVS/Root u-boot-2009.03/board/bc3450/CVS/Root
--- u-boot-2009.03_orig/board/bc3450/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/bc3450/CVS/Root        2009-03-25 15:24:08.916305400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/bf533-ezkit/CVS/Entries u-boot-2009.03/board/bf533-ezkit/CVS/Entries
--- u-boot-2009.03_orig/board/bf533-ezkit/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/bf533-ezkit/CVS/Entries        2009-03-25 15:57:14.700186100 -0700
@@ -0,0 +1,9 @@
+/.gitignore/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bf533-ezkit.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash-defines.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/psd4256.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/bf533-ezkit/CVS/Entries.Extra u-boot-2009.03/board/bf533-ezkit/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/bf533-ezkit/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/bf533-ezkit/CVS/Entries.Extra  2009-03-25 15:57:14.715811000 -0700
@@ -0,0 +1,8 @@
+/.gitignore///1238019689/
+/Makefile///1238019689/
+/bf533-ezkit.c///1238019689/
+/config.mk///1238019689/
+/flash-defines.h///1238019689/
+/flash.c///1238019689/
+/psd4256.h///1238019689/
+/u-boot.lds.S///1238019689/
diff -Naur u-boot-2009.03_orig/board/bf533-ezkit/CVS/Entries.Extra.Old u-boot-2009.03/board/bf533-ezkit/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/bf533-ezkit/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/bf533-ezkit/CVS/Entries.Extra.Old      2009-03-25 15:24:09.000000000 -0700
@@ -0,0 +1,8 @@
+/.gitignore///1238019689/
+/Makefile///1238019689/
+/bf533-ezkit.c///1238019689/
+/config.mk///1238019689/
+/flash-defines.h///1238019689/
+/flash.c///1238019689/
+/psd4256.h///1238019689/
+/u-boot.lds.S///1238019689/
diff -Naur u-boot-2009.03_orig/board/bf533-ezkit/CVS/Entries.Old u-boot-2009.03/board/bf533-ezkit/CVS/Entries.Old
--- u-boot-2009.03_orig/board/bf533-ezkit/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/bf533-ezkit/CVS/Entries.Old    2009-03-25 15:24:09.000000000 -0700
@@ -0,0 +1,9 @@
+/.gitignore/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/Makefile/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/bf533-ezkit.c/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/flash-defines.h/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/psd4256.h/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/u-boot.lds.S/1.1.1.1/Wed Mar 25 22:21:29 2009//
+D
diff -Naur u-boot-2009.03_orig/board/bf533-ezkit/CVS/Repository u-boot-2009.03/board/bf533-ezkit/CVS/Repository
--- u-boot-2009.03_orig/board/bf533-ezkit/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/bf533-ezkit/CVS/Repository     2009-03-25 15:24:09.041303800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/bf533-ezkit
diff -Naur u-boot-2009.03_orig/board/bf533-ezkit/CVS/Root u-boot-2009.03/board/bf533-ezkit/CVS/Root
--- u-boot-2009.03_orig/board/bf533-ezkit/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/bf533-ezkit/CVS/Root   2009-03-25 15:24:09.041303800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/bf533-stamp/CVS/Entries u-boot-2009.03/board/bf533-stamp/CVS/Entries
--- u-boot-2009.03_orig/board/bf533-stamp/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/bf533-stamp/CVS/Entries        2009-03-25 15:57:14.793935500 -0700
@@ -0,0 +1,10 @@
+/.gitignore/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bf533-stamp.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bf533-stamp.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/spi_flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/video.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/video.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/bf533-stamp/CVS/Entries.Extra u-boot-2009.03/board/bf533-stamp/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/bf533-stamp/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/bf533-stamp/CVS/Entries.Extra  2009-03-25 15:57:14.793935500 -0700
@@ -0,0 +1,9 @@
+/.gitignore///1238019689/
+/Makefile///1238019689/
+/bf533-stamp.c///1238019689/
+/bf533-stamp.h///1238019689/
+/config.mk///1238019689/
+/spi_flash.c///1238019689/
+/u-boot.lds.S///1238019689/
+/video.c///1238019689/
+/video.h///1238019689/
diff -Naur u-boot-2009.03_orig/board/bf533-stamp/CVS/Entries.Extra.Old u-boot-2009.03/board/bf533-stamp/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/bf533-stamp/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/bf533-stamp/CVS/Entries.Extra.Old      2009-03-25 15:24:09.000000000 -0700
@@ -0,0 +1,9 @@
+/.gitignore///1238019689/
+/Makefile///1238019689/
+/bf533-stamp.c///1238019689/
+/bf533-stamp.h///1238019689/
+/config.mk///1238019689/
+/spi_flash.c///1238019689/
+/u-boot.lds.S///1238019689/
+/video.c///1238019689/
+/video.h///1238019689/
diff -Naur u-boot-2009.03_orig/board/bf533-stamp/CVS/Entries.Old u-boot-2009.03/board/bf533-stamp/CVS/Entries.Old
--- u-boot-2009.03_orig/board/bf533-stamp/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/bf533-stamp/CVS/Entries.Old    2009-03-25 15:24:09.000000000 -0700
@@ -0,0 +1,10 @@
+/.gitignore/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/Makefile/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/bf533-stamp.c/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/bf533-stamp.h/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/spi_flash.c/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/u-boot.lds.S/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/video.c/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/video.h/1.1.1.1/Wed Mar 25 22:21:29 2009//
+D
diff -Naur u-boot-2009.03_orig/board/bf533-stamp/CVS/Repository u-boot-2009.03/board/bf533-stamp/CVS/Repository
--- u-boot-2009.03_orig/board/bf533-stamp/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/bf533-stamp/CVS/Repository     2009-03-25 15:24:09.181927000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/bf533-stamp
diff -Naur u-boot-2009.03_orig/board/bf533-stamp/CVS/Root u-boot-2009.03/board/bf533-stamp/CVS/Root
--- u-boot-2009.03_orig/board/bf533-stamp/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/bf533-stamp/CVS/Root   2009-03-25 15:24:09.166302200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/bf537-stamp/CVS/Entries u-boot-2009.03/board/bf537-stamp/CVS/Entries
--- u-boot-2009.03_orig/board/bf537-stamp/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/bf537-stamp/CVS/Entries        2009-03-25 15:57:14.887684900 -0700
@@ -0,0 +1,10 @@
+/.gitignore/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bf537-stamp.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_bf537led.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nand.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/post-memory.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/spi_flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/bf537-stamp/CVS/Entries.Extra u-boot-2009.03/board/bf537-stamp/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/bf537-stamp/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/bf537-stamp/CVS/Entries.Extra  2009-03-25 15:57:14.887684900 -0700
@@ -0,0 +1,9 @@
+/.gitignore///1238019689/
+/Makefile///1238019689/
+/bf537-stamp.c///1238019689/
+/cmd_bf537led.c///1238019689/
+/config.mk///1238019689/
+/nand.c///1238019689/
+/post-memory.c///1238019689/
+/spi_flash.c///1238019689/
+/u-boot.lds.S///1238019689/
diff -Naur u-boot-2009.03_orig/board/bf537-stamp/CVS/Entries.Extra.Old u-boot-2009.03/board/bf537-stamp/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/bf537-stamp/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/bf537-stamp/CVS/Entries.Extra.Old      2009-03-25 15:24:09.000000000 -0700
@@ -0,0 +1,9 @@
+/.gitignore///1238019689/
+/Makefile///1238019689/
+/bf537-stamp.c///1238019689/
+/cmd_bf537led.c///1238019689/
+/config.mk///1238019689/
+/nand.c///1238019689/
+/post-memory.c///1238019689/
+/spi_flash.c///1238019689/
+/u-boot.lds.S///1238019689/
diff -Naur u-boot-2009.03_orig/board/bf537-stamp/CVS/Entries.Old u-boot-2009.03/board/bf537-stamp/CVS/Entries.Old
--- u-boot-2009.03_orig/board/bf537-stamp/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/bf537-stamp/CVS/Entries.Old    2009-03-25 15:24:09.000000000 -0700
@@ -0,0 +1,10 @@
+/.gitignore/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/Makefile/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/bf537-stamp.c/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/cmd_bf537led.c/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/nand.c/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/post-memory.c/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/spi_flash.c/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/u-boot.lds.S/1.1.1.1/Wed Mar 25 22:21:29 2009//
+D
diff -Naur u-boot-2009.03_orig/board/bf537-stamp/CVS/Repository u-boot-2009.03/board/bf537-stamp/CVS/Repository
--- u-boot-2009.03_orig/board/bf537-stamp/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/bf537-stamp/CVS/Repository     2009-03-25 15:24:09.338175000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/bf537-stamp
diff -Naur u-boot-2009.03_orig/board/bf537-stamp/CVS/Root u-boot-2009.03/board/bf537-stamp/CVS/Root
--- u-boot-2009.03_orig/board/bf537-stamp/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/bf537-stamp/CVS/Root   2009-03-25 15:24:09.338175000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/bf561-ezkit/CVS/Entries u-boot-2009.03/board/bf561-ezkit/CVS/Entries
--- u-boot-2009.03_orig/board/bf561-ezkit/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/bf561-ezkit/CVS/Entries        2009-03-25 15:57:14.950184500 -0700
@@ -0,0 +1,6 @@
+/.gitignore/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bf561-ezkit.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/bf561-ezkit/CVS/Entries.Extra u-boot-2009.03/board/bf561-ezkit/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/bf561-ezkit/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/bf561-ezkit/CVS/Entries.Extra  2009-03-25 15:57:14.950184500 -0700
@@ -0,0 +1,5 @@
+/.gitignore///1238019689/
+/Makefile///1238019689/
+/bf561-ezkit.c///1238019689/
+/config.mk///1238019689/
+/u-boot.lds.S///1238019689/
diff -Naur u-boot-2009.03_orig/board/bf561-ezkit/CVS/Entries.Extra.Old u-boot-2009.03/board/bf561-ezkit/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/bf561-ezkit/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/bf561-ezkit/CVS/Entries.Extra.Old      2009-03-25 15:24:09.000000000 -0700
@@ -0,0 +1,5 @@
+/.gitignore///1238019689/
+/Makefile///1238019689/
+/bf561-ezkit.c///1238019689/
+/config.mk///1238019689/
+/u-boot.lds.S///1238019689/
diff -Naur u-boot-2009.03_orig/board/bf561-ezkit/CVS/Entries.Old u-boot-2009.03/board/bf561-ezkit/CVS/Entries.Old
--- u-boot-2009.03_orig/board/bf561-ezkit/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/bf561-ezkit/CVS/Entries.Old    2009-03-25 15:24:09.000000000 -0700
@@ -0,0 +1,6 @@
+/.gitignore/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/Makefile/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/bf561-ezkit.c/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/u-boot.lds.S/1.1.1.1/Wed Mar 25 22:21:29 2009//
+D
diff -Naur u-boot-2009.03_orig/board/bf561-ezkit/CVS/Repository u-boot-2009.03/board/bf561-ezkit/CVS/Repository
--- u-boot-2009.03_orig/board/bf561-ezkit/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/bf561-ezkit/CVS/Repository     2009-03-25 15:24:09.619421400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/bf561-ezkit
diff -Naur u-boot-2009.03_orig/board/bf561-ezkit/CVS/Root u-boot-2009.03/board/bf561-ezkit/CVS/Root
--- u-boot-2009.03_orig/board/bf561-ezkit/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/bf561-ezkit/CVS/Root   2009-03-25 15:24:09.619421400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/bmw/CVS/Entries u-boot-2009.03/board/bmw/CVS/Entries
--- u-boot-2009.03_orig/board/bmw/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/bmw/CVS/Entries        2009-03-25 15:57:15.028309000 -0700
@@ -0,0 +1,13 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bmw.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bmw.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/early_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/m48t59y.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/m48t59y.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ns16550.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ns16550.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/bmw/CVS/Entries.Extra u-boot-2009.03/board/bmw/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/bmw/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/bmw/CVS/Entries.Extra  2009-03-25 15:57:15.028309000 -0700
@@ -0,0 +1,12 @@
+/Makefile///1238019689/
+/README///1238019689/
+/bmw.c///1238019689/
+/bmw.h///1238019689/
+/config.mk///1238019689/
+/early_init.S///1238019689/
+/flash.c///1238019689/
+/m48t59y.c///1238019689/
+/m48t59y.h///1238019689/
+/ns16550.c///1238019689/
+/ns16550.h///1238019689/
+/serial.c///1238019689/
diff -Naur u-boot-2009.03_orig/board/bmw/CVS/Entries.Extra.Old u-boot-2009.03/board/bmw/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/bmw/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/bmw/CVS/Entries.Extra.Old      2009-03-25 15:24:09.000000000 -0700
@@ -0,0 +1,12 @@
+/Makefile///1238019689/
+/README///1238019689/
+/bmw.c///1238019689/
+/bmw.h///1238019689/
+/config.mk///1238019689/
+/early_init.S///1238019689/
+/flash.c///1238019689/
+/m48t59y.c///1238019689/
+/m48t59y.h///1238019689/
+/ns16550.c///1238019689/
+/ns16550.h///1238019689/
+/serial.c///1238019689/
diff -Naur u-boot-2009.03_orig/board/bmw/CVS/Entries.Old u-boot-2009.03/board/bmw/CVS/Entries.Old
--- u-boot-2009.03_orig/board/bmw/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/bmw/CVS/Entries.Old    2009-03-25 15:24:09.000000000 -0700
@@ -0,0 +1,13 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/README/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/bmw.c/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/bmw.h/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/early_init.S/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/m48t59y.c/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/m48t59y.h/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/ns16550.c/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/ns16550.h/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/serial.c/1.1.1.1/Wed Mar 25 22:21:29 2009//
+D
diff -Naur u-boot-2009.03_orig/board/bmw/CVS/Repository u-boot-2009.03/board/bmw/CVS/Repository
--- u-boot-2009.03_orig/board/bmw/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/bmw/CVS/Repository     2009-03-25 15:24:09.744419800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/bmw
diff -Naur u-boot-2009.03_orig/board/bmw/CVS/Root u-boot-2009.03/board/bmw/CVS/Root
--- u-boot-2009.03_orig/board/bmw/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/bmw/CVS/Root   2009-03-25 15:24:09.744419800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/c2mon/CVS/Entries u-boot-2009.03/board/c2mon/CVS/Entries
--- u-boot-2009.03_orig/board/c2mon/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/c2mon/CVS/Entries      2009-03-25 15:57:15.122058400 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/c2mon.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pcmcia.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.debug/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/c2mon/CVS/Entries.Extra u-boot-2009.03/board/c2mon/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/c2mon/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/c2mon/CVS/Entries.Extra        2009-03-25 15:57:15.137683300 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019689/
+/c2mon.c///1238019689/
+/config.mk///1238019689/
+/flash.c///1238019689/
+/pcmcia.c///1238019689/
+/u-boot.lds///1238019689/
+/u-boot.lds.debug///1238019689/
diff -Naur u-boot-2009.03_orig/board/c2mon/CVS/Entries.Extra.Old u-boot-2009.03/board/c2mon/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/c2mon/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/c2mon/CVS/Entries.Extra.Old    2009-03-25 15:24:09.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019689/
+/c2mon.c///1238019689/
+/config.mk///1238019689/
+/flash.c///1238019689/
+/pcmcia.c///1238019689/
+/u-boot.lds///1238019689/
+/u-boot.lds.debug///1238019689/
diff -Naur u-boot-2009.03_orig/board/c2mon/CVS/Entries.Old u-boot-2009.03/board/c2mon/CVS/Entries.Old
--- u-boot-2009.03_orig/board/c2mon/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/c2mon/CVS/Entries.Old  2009-03-25 15:24:09.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/c2mon.c/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/pcmcia.c/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/u-boot.lds.debug/1.1.1.1/Wed Mar 25 22:21:29 2009//
+D
diff -Naur u-boot-2009.03_orig/board/c2mon/CVS/Repository u-boot-2009.03/board/c2mon/CVS/Repository
--- u-boot-2009.03_orig/board/c2mon/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/c2mon/CVS/Repository   2009-03-25 15:24:09.916292600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/c2mon
diff -Naur u-boot-2009.03_orig/board/c2mon/CVS/Root u-boot-2009.03/board/c2mon/CVS/Root
--- u-boot-2009.03_orig/board/c2mon/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/c2mon/CVS/Root 2009-03-25 15:24:09.916292600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/canmb/CVS/Entries u-boot-2009.03/board/canmb/CVS/Entries
--- u-boot-2009.03_orig/board/canmb/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/canmb/CVS/Entries      2009-03-25 15:57:15.184558000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/canmb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mt48lc16m32s2-75.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/canmb/CVS/Entries.Extra u-boot-2009.03/board/canmb/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/canmb/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/canmb/CVS/Entries.Extra        2009-03-25 15:57:15.184558000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019690/
+/canmb.c///1238019689/
+/config.mk///1238019689/
+/mt48lc16m32s2-75.h///1238019690/
diff -Naur u-boot-2009.03_orig/board/canmb/CVS/Entries.Extra.Old u-boot-2009.03/board/canmb/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/canmb/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/canmb/CVS/Entries.Extra.Old    2009-03-25 15:24:10.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019690/
+/canmb.c///1238019689/
+/config.mk///1238019689/
+/mt48lc16m32s2-75.h///1238019690/
diff -Naur u-boot-2009.03_orig/board/canmb/CVS/Entries.Old u-boot-2009.03/board/canmb/CVS/Entries.Old
--- u-boot-2009.03_orig/board/canmb/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/canmb/CVS/Entries.Old  2009-03-25 15:24:10.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/canmb.c/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:29 2009//
+/mt48lc16m32s2-75.h/1.1.1.1/Wed Mar 25 22:21:30 2009//
+D
diff -Naur u-boot-2009.03_orig/board/canmb/CVS/Repository u-boot-2009.03/board/canmb/CVS/Repository
--- u-boot-2009.03_orig/board/canmb/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/canmb/CVS/Repository   2009-03-25 15:24:10.041291000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/canmb
diff -Naur u-boot-2009.03_orig/board/canmb/CVS/Root u-boot-2009.03/board/canmb/CVS/Root
--- u-boot-2009.03_orig/board/canmb/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/canmb/CVS/Root 2009-03-25 15:24:10.041291000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/cerf250/CVS/Entries u-boot-2009.03/board/cerf250/CVS/Entries
--- u-boot-2009.03_orig/board/cerf250/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cerf250/CVS/Entries    2009-03-25 15:57:15.309557200 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cerf250.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/cerf250/CVS/Entries.Extra u-boot-2009.03/board/cerf250/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/cerf250/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cerf250/CVS/Entries.Extra      2009-03-25 15:57:15.309557200 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019690/
+/cerf250.c///1238019690/
+/config.mk///1238019690/
+/flash.c///1238019690/
+/lowlevel_init.S///1238019690/
+/u-boot.lds///1238019690/
diff -Naur u-boot-2009.03_orig/board/cerf250/CVS/Entries.Extra.Old u-boot-2009.03/board/cerf250/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/cerf250/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cerf250/CVS/Entries.Extra.Old  2009-03-25 15:24:10.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019690/
+/cerf250.c///1238019690/
+/config.mk///1238019690/
+/flash.c///1238019690/
+/lowlevel_init.S///1238019690/
+/u-boot.lds///1238019690/
diff -Naur u-boot-2009.03_orig/board/cerf250/CVS/Entries.Old u-boot-2009.03/board/cerf250/CVS/Entries.Old
--- u-boot-2009.03_orig/board/cerf250/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cerf250/CVS/Entries.Old        2009-03-25 15:24:10.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/cerf250.c/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:30 2009//
+D
diff -Naur u-boot-2009.03_orig/board/cerf250/CVS/Repository u-boot-2009.03/board/cerf250/CVS/Repository
--- u-boot-2009.03_orig/board/cerf250/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cerf250/CVS/Repository 2009-03-25 15:24:10.135039800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/cerf250
diff -Naur u-boot-2009.03_orig/board/cerf250/CVS/Root u-boot-2009.03/board/cerf250/CVS/Root
--- u-boot-2009.03_orig/board/cerf250/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cerf250/CVS/Root       2009-03-25 15:24:10.135039800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/cm4008/CVS/Entries u-boot-2009.03/board/cm4008/CVS/Entries
--- u-boot-2009.03_orig/board/cm4008/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cm4008/CVS/Entries     2009-03-25 15:57:15.372056800 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cm4008.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/cm4008/CVS/Entries.Extra u-boot-2009.03/board/cm4008/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/cm4008/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cm4008/CVS/Entries.Extra       2009-03-25 15:57:15.387681700 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019690/
+/cm4008.c///1238019690/
+/config.mk///1238019690/
+/flash.c///1238019690/
+/u-boot.lds///1238019690/
diff -Naur u-boot-2009.03_orig/board/cm4008/CVS/Entries.Extra.Old u-boot-2009.03/board/cm4008/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/cm4008/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cm4008/CVS/Entries.Extra.Old   2009-03-25 15:24:10.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019690/
+/cm4008.c///1238019690/
+/config.mk///1238019690/
+/flash.c///1238019690/
+/u-boot.lds///1238019690/
diff -Naur u-boot-2009.03_orig/board/cm4008/CVS/Entries.Old u-boot-2009.03/board/cm4008/CVS/Entries.Old
--- u-boot-2009.03_orig/board/cm4008/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cm4008/CVS/Entries.Old 2009-03-25 15:24:10.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/cm4008.c/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:30 2009//
+D
diff -Naur u-boot-2009.03_orig/board/cm4008/CVS/Repository u-boot-2009.03/board/cm4008/CVS/Repository
--- u-boot-2009.03_orig/board/cm4008/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cm4008/CVS/Repository  2009-03-25 15:24:10.244413400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/cm4008
diff -Naur u-boot-2009.03_orig/board/cm4008/CVS/Root u-boot-2009.03/board/cm4008/CVS/Root
--- u-boot-2009.03_orig/board/cm4008/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cm4008/CVS/Root        2009-03-25 15:24:10.244413400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/cm41xx/CVS/Entries u-boot-2009.03/board/cm41xx/CVS/Entries
--- u-boot-2009.03_orig/board/cm41xx/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cm41xx/CVS/Entries     2009-03-25 15:57:15.465806200 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cm41xx.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/cm41xx/CVS/Entries.Extra u-boot-2009.03/board/cm41xx/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/cm41xx/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cm41xx/CVS/Entries.Extra       2009-03-25 15:57:15.465806200 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019690/
+/cm41xx.c///1238019690/
+/config.mk///1238019690/
+/flash.c///1238019690/
+/u-boot.lds///1238019690/
diff -Naur u-boot-2009.03_orig/board/cm41xx/CVS/Entries.Extra.Old u-boot-2009.03/board/cm41xx/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/cm41xx/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cm41xx/CVS/Entries.Extra.Old   2009-03-25 15:24:10.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019690/
+/cm41xx.c///1238019690/
+/config.mk///1238019690/
+/flash.c///1238019690/
+/u-boot.lds///1238019690/
diff -Naur u-boot-2009.03_orig/board/cm41xx/CVS/Entries.Old u-boot-2009.03/board/cm41xx/CVS/Entries.Old
--- u-boot-2009.03_orig/board/cm41xx/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cm41xx/CVS/Entries.Old 2009-03-25 15:24:10.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/cm41xx.c/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:30 2009//
+D
diff -Naur u-boot-2009.03_orig/board/cm41xx/CVS/Repository u-boot-2009.03/board/cm41xx/CVS/Repository
--- u-boot-2009.03_orig/board/cm41xx/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cm41xx/CVS/Repository  2009-03-25 15:24:10.369411800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/cm41xx
diff -Naur u-boot-2009.03_orig/board/cm41xx/CVS/Root u-boot-2009.03/board/cm41xx/CVS/Root
--- u-boot-2009.03_orig/board/cm41xx/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cm41xx/CVS/Root        2009-03-25 15:24:10.369411800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/cm5200/CVS/Entries u-boot-2009.03/board/cm5200/CVS/Entries
--- u-boot-2009.03_orig/board/cm5200/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cm5200/CVS/Entries     2009-03-25 15:57:15.543930700 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cm5200.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cm5200.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_cm5200.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fwupdate.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fwupdate.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/cm5200/CVS/Entries.Extra u-boot-2009.03/board/cm5200/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/cm5200/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cm5200/CVS/Entries.Extra       2009-03-25 15:57:15.543930700 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019690/
+/cm5200.c///1238019690/
+/cm5200.h///1238019690/
+/cmd_cm5200.c///1238019690/
+/config.mk///1238019690/
+/fwupdate.c///1238019690/
+/fwupdate.h///1238019690/
+/u-boot.lds///1238019690/
diff -Naur u-boot-2009.03_orig/board/cm5200/CVS/Entries.Extra.Old u-boot-2009.03/board/cm5200/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/cm5200/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cm5200/CVS/Entries.Extra.Old   2009-03-25 15:24:10.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019690/
+/cm5200.c///1238019690/
+/cm5200.h///1238019690/
+/cmd_cm5200.c///1238019690/
+/config.mk///1238019690/
+/fwupdate.c///1238019690/
+/fwupdate.h///1238019690/
+/u-boot.lds///1238019690/
diff -Naur u-boot-2009.03_orig/board/cm5200/CVS/Entries.Old u-boot-2009.03/board/cm5200/CVS/Entries.Old
--- u-boot-2009.03_orig/board/cm5200/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cm5200/CVS/Entries.Old 2009-03-25 15:24:10.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/cm5200.c/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/cm5200.h/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/cmd_cm5200.c/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/fwupdate.c/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/fwupdate.h/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:30 2009//
+D
diff -Naur u-boot-2009.03_orig/board/cm5200/CVS/Repository u-boot-2009.03/board/cm5200/CVS/Repository
--- u-boot-2009.03_orig/board/cm5200/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cm5200/CVS/Repository  2009-03-25 15:24:10.635033400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/cm5200
diff -Naur u-boot-2009.03_orig/board/cm5200/CVS/Root u-boot-2009.03/board/cm5200/CVS/Root
--- u-boot-2009.03_orig/board/cm5200/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cm5200/CVS/Root        2009-03-25 15:24:10.635033400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/cmc_pu2/CVS/Entries u-boot-2009.03/board/cmc_pu2/CVS/Entries
--- u-boot-2009.03_orig/board/cmc_pu2/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cmc_pu2/CVS/Entries    2009-03-25 15:57:15.622055200 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmc_pu2.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/load_sernum_ethaddr.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/cmc_pu2/CVS/Entries.Extra u-boot-2009.03/board/cmc_pu2/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/cmc_pu2/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cmc_pu2/CVS/Entries.Extra      2009-03-25 15:57:15.637680100 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019690/
+/cmc_pu2.c///1238019690/
+/config.mk///1238019690/
+/flash.c///1238019690/
+/load_sernum_ethaddr.c///1238019690/
+/u-boot.lds///1238019690/
diff -Naur u-boot-2009.03_orig/board/cmc_pu2/CVS/Entries.Extra.Old u-boot-2009.03/board/cmc_pu2/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/cmc_pu2/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cmc_pu2/CVS/Entries.Extra.Old  2009-03-25 15:24:10.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019690/
+/cmc_pu2.c///1238019690/
+/config.mk///1238019690/
+/flash.c///1238019690/
+/load_sernum_ethaddr.c///1238019690/
+/u-boot.lds///1238019690/
diff -Naur u-boot-2009.03_orig/board/cmc_pu2/CVS/Entries.Old u-boot-2009.03/board/cmc_pu2/CVS/Entries.Old
--- u-boot-2009.03_orig/board/cmc_pu2/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cmc_pu2/CVS/Entries.Old        2009-03-25 15:24:10.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/cmc_pu2.c/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/load_sernum_ethaddr.c/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:30 2009//
+D
diff -Naur u-boot-2009.03_orig/board/cmc_pu2/CVS/Repository u-boot-2009.03/board/cmc_pu2/CVS/Repository
--- u-boot-2009.03_orig/board/cmc_pu2/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cmc_pu2/CVS/Repository 2009-03-25 15:24:10.775656600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/cmc_pu2
diff -Naur u-boot-2009.03_orig/board/cmc_pu2/CVS/Root u-boot-2009.03/board/cmc_pu2/CVS/Root
--- u-boot-2009.03_orig/board/cmc_pu2/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cmc_pu2/CVS/Root       2009-03-25 15:24:10.775656600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/cmi/CVS/Entries u-boot-2009.03/board/cmi/CVS/Entries
--- u-boot-2009.03_orig/board/cmi/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cmi/CVS/Entries        2009-03-25 15:57:15.700179700 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmi.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/cmi/CVS/Entries.Extra u-boot-2009.03/board/cmi/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/cmi/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cmi/CVS/Entries.Extra  2009-03-25 15:57:15.700179700 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019690/
+/cmi.c///1238019690/
+/config.mk///1238019690/
+/flash.c///1238019690/
diff -Naur u-boot-2009.03_orig/board/cmi/CVS/Entries.Extra.Old u-boot-2009.03/board/cmi/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/cmi/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cmi/CVS/Entries.Extra.Old      2009-03-25 15:24:10.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019690/
+/cmi.c///1238019690/
+/config.mk///1238019690/
+/flash.c///1238019690/
diff -Naur u-boot-2009.03_orig/board/cmi/CVS/Entries.Old u-boot-2009.03/board/cmi/CVS/Entries.Old
--- u-boot-2009.03_orig/board/cmi/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cmi/CVS/Entries.Old    2009-03-25 15:24:10.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/cmi.c/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:30 2009//
+D
diff -Naur u-boot-2009.03_orig/board/cmi/CVS/Repository u-boot-2009.03/board/cmi/CVS/Repository
--- u-boot-2009.03_orig/board/cmi/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cmi/CVS/Repository     2009-03-25 15:24:10.900655000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/cmi
diff -Naur u-boot-2009.03_orig/board/cmi/CVS/Root u-boot-2009.03/board/cmi/CVS/Root
--- u-boot-2009.03_orig/board/cmi/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cmi/CVS/Root   2009-03-25 15:24:10.900655000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/cobra5272/CVS/Entries u-boot-2009.03/board/cobra5272/CVS/Entries
--- u-boot-2009.03_orig/board/cobra5272/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cobra5272/CVS/Entries  2009-03-25 15:57:15.840803800 -0700
@@ -0,0 +1,6 @@
+D/bdm////
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cobra5272.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
diff -Naur u-boot-2009.03_orig/board/cobra5272/CVS/Entries.Extra u-boot-2009.03/board/cobra5272/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/cobra5272/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cobra5272/CVS/Entries.Extra    2009-03-25 15:57:15.840803800 -0700
@@ -0,0 +1,6 @@
+D/bdm////
+/Makefile///1238019690/
+/cobra5272.c///1238019690/
+/config.mk///1238019690/
+/flash.c///1238019690/
+/u-boot.lds///1238019690/
diff -Naur u-boot-2009.03_orig/board/cobra5272/CVS/Entries.Extra.Old u-boot-2009.03/board/cobra5272/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/cobra5272/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cobra5272/CVS/Entries.Extra.Old        2009-03-25 15:24:11.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019690/
+/cobra5272.c///1238019690/
+/config.mk///1238019690/
+/flash.c///1238019690/
+/u-boot.lds///1238019690/
+D/bdm////
diff -Naur u-boot-2009.03_orig/board/cobra5272/CVS/Entries.Old u-boot-2009.03/board/cobra5272/CVS/Entries.Old
--- u-boot-2009.03_orig/board/cobra5272/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cobra5272/CVS/Entries.Old      2009-03-25 15:24:11.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/cobra5272.c/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:30 2009//
+D/bdm////
diff -Naur u-boot-2009.03_orig/board/cobra5272/CVS/Repository u-boot-2009.03/board/cobra5272/CVS/Repository
--- u-boot-2009.03_orig/board/cobra5272/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cobra5272/CVS/Repository       2009-03-25 15:24:10.994403800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/cobra5272
diff -Naur u-boot-2009.03_orig/board/cobra5272/CVS/Root u-boot-2009.03/board/cobra5272/CVS/Root
--- u-boot-2009.03_orig/board/cobra5272/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cobra5272/CVS/Root     2009-03-25 15:24:10.994403800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/cobra5272/bdm/CVS/Entries u-boot-2009.03/board/cobra5272/bdm/CVS/Entries
--- u-boot-2009.03_orig/board/cobra5272/bdm/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cobra5272/bdm/CVS/Entries      2009-03-25 15:57:15.793929100 -0700
@@ -0,0 +1,5 @@
+/cobra5272_uboot.gdb/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/gdbinit.reset/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/load-cobra_uboot/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/reset/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/cobra5272/bdm/CVS/Entries.Extra u-boot-2009.03/board/cobra5272/bdm/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/cobra5272/bdm/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cobra5272/bdm/CVS/Entries.Extra        2009-03-25 15:57:15.793929100 -0700
@@ -0,0 +1,4 @@
+/cobra5272_uboot.gdb///1238019690/
+/gdbinit.reset///1238019690/
+/load-cobra_uboot///1238019690/
+/reset///1238019690/
diff -Naur u-boot-2009.03_orig/board/cobra5272/bdm/CVS/Entries.Extra.Old u-boot-2009.03/board/cobra5272/bdm/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/cobra5272/bdm/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cobra5272/bdm/CVS/Entries.Extra.Old    2009-03-25 15:24:11.000000000 -0700
@@ -0,0 +1,4 @@
+/cobra5272_uboot.gdb///1238019690/
+/gdbinit.reset///1238019690/
+/load-cobra_uboot///1238019690/
+/reset///1238019690/
diff -Naur u-boot-2009.03_orig/board/cobra5272/bdm/CVS/Entries.Old u-boot-2009.03/board/cobra5272/bdm/CVS/Entries.Old
--- u-boot-2009.03_orig/board/cobra5272/bdm/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cobra5272/bdm/CVS/Entries.Old  2009-03-25 15:24:11.000000000 -0700
@@ -0,0 +1,5 @@
+/cobra5272_uboot.gdb/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/gdbinit.reset/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/load-cobra_uboot/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/reset/1.1.1.1/Wed Mar 25 22:21:30 2009//
+D
diff -Naur u-boot-2009.03_orig/board/cobra5272/bdm/CVS/Repository u-boot-2009.03/board/cobra5272/bdm/CVS/Repository
--- u-boot-2009.03_orig/board/cobra5272/bdm/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cobra5272/bdm/CVS/Repository   2009-03-25 15:24:11.072527800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/cobra5272/bdm
diff -Naur u-boot-2009.03_orig/board/cobra5272/bdm/CVS/Root u-boot-2009.03/board/cobra5272/bdm/CVS/Root
--- u-boot-2009.03_orig/board/cobra5272/bdm/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cobra5272/bdm/CVS/Root 2009-03-25 15:24:11.072527800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/cogent/CVS/Entries u-boot-2009.03/board/cogent/CVS/Entries
--- u-boot-2009.03_orig/board/cogent/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cogent/CVS/Entries     2009-03-25 15:57:15.965803000 -0700
@@ -0,0 +1,25 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.cma286/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dipsw.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dipsw.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/kbm.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/kbm.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lcd.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lcd.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mb.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/par.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/par.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/rtc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/rtc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.debug/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/cogent/CVS/Entries.Extra u-boot-2009.03/board/cogent/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/cogent/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cogent/CVS/Entries.Extra       2009-03-25 15:57:15.965803000 -0700
@@ -0,0 +1,24 @@
+/Makefile///1238019690/
+/README///1238019690/
+/README.cma286///1238019690/
+/config.mk///1238019690/
+/dipsw.c///1238019690/
+/dipsw.h///1238019690/
+/flash.c///1238019690/
+/flash.h///1238019690/
+/kbm.c///1238019690/
+/kbm.h///1238019690/
+/lcd.c///1238019690/
+/lcd.h///1238019690/
+/mb.c///1238019690/
+/mb.h///1238019690/
+/par.c///1238019690/
+/par.h///1238019690/
+/pci.c///1238019690/
+/pci.h///1238019690/
+/rtc.c///1238019690/
+/rtc.h///1238019690/
+/serial.c///1238019690/
+/serial.h///1238019690/
+/u-boot.lds///1238019690/
+/u-boot.lds.debug///1238019690/
diff -Naur u-boot-2009.03_orig/board/cogent/CVS/Entries.Extra.Old u-boot-2009.03/board/cogent/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/cogent/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cogent/CVS/Entries.Extra.Old   2009-03-25 15:24:11.000000000 -0700
@@ -0,0 +1,24 @@
+/Makefile///1238019690/
+/README///1238019690/
+/README.cma286///1238019690/
+/config.mk///1238019690/
+/dipsw.c///1238019690/
+/dipsw.h///1238019690/
+/flash.c///1238019690/
+/flash.h///1238019690/
+/kbm.c///1238019690/
+/kbm.h///1238019690/
+/lcd.c///1238019690/
+/lcd.h///1238019690/
+/mb.c///1238019690/
+/mb.h///1238019690/
+/par.c///1238019690/
+/par.h///1238019690/
+/pci.c///1238019690/
+/pci.h///1238019690/
+/rtc.c///1238019690/
+/rtc.h///1238019690/
+/serial.c///1238019690/
+/serial.h///1238019690/
+/u-boot.lds///1238019690/
+/u-boot.lds.debug///1238019690/
diff -Naur u-boot-2009.03_orig/board/cogent/CVS/Entries.Old u-boot-2009.03/board/cogent/CVS/Entries.Old
--- u-boot-2009.03_orig/board/cogent/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cogent/CVS/Entries.Old 2009-03-25 15:24:11.000000000 -0700
@@ -0,0 +1,25 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/README/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/README.cma286/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/dipsw.c/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/dipsw.h/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/flash.h/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/kbm.c/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/kbm.h/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/lcd.c/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/lcd.h/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/mb.c/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/mb.h/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/par.c/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/par.h/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/pci.c/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/pci.h/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/rtc.c/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/rtc.h/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/serial.c/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/serial.h/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/u-boot.lds.debug/1.1.1.1/Wed Mar 25 22:21:30 2009//
+D
diff -Naur u-boot-2009.03_orig/board/cogent/CVS/Repository u-boot-2009.03/board/cogent/CVS/Repository
--- u-boot-2009.03_orig/board/cogent/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cogent/CVS/Repository  2009-03-25 15:24:11.213151000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/cogent
diff -Naur u-boot-2009.03_orig/board/cogent/CVS/Root u-boot-2009.03/board/cogent/CVS/Root
--- u-boot-2009.03_orig/board/cogent/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cogent/CVS/Root        2009-03-25 15:24:11.213151000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/cpc45/CVS/Entries u-boot-2009.03/board/cpc45/CVS/Entries
--- u-boot-2009.03_orig/board/cpc45/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cpc45/CVS/Entries      2009-03-25 15:57:16.043927500 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpc45.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pd67290.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/plx9030.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/cpc45/CVS/Entries.Extra u-boot-2009.03/board/cpc45/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/cpc45/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cpc45/CVS/Entries.Extra        2009-03-25 15:57:16.043927500 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019690/
+/config.mk///1238019690/
+/cpc45.c///1238019690/
+/flash.c///1238019690/
+/pd67290.c///1238019690/
+/plx9030.c///1238019690/
diff -Naur u-boot-2009.03_orig/board/cpc45/CVS/Entries.Extra.Old u-boot-2009.03/board/cpc45/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/cpc45/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cpc45/CVS/Entries.Extra.Old    2009-03-25 15:24:11.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019690/
+/config.mk///1238019690/
+/cpc45.c///1238019690/
+/flash.c///1238019690/
+/pd67290.c///1238019690/
+/plx9030.c///1238019690/
diff -Naur u-boot-2009.03_orig/board/cpc45/CVS/Entries.Old u-boot-2009.03/board/cpc45/CVS/Entries.Old
--- u-boot-2009.03_orig/board/cpc45/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cpc45/CVS/Entries.Old  2009-03-25 15:24:11.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/cpc45.c/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/pd67290.c/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/plx9030.c/1.1.1.1/Wed Mar 25 22:21:30 2009//
+D
diff -Naur u-boot-2009.03_orig/board/cpc45/CVS/Repository u-boot-2009.03/board/cpc45/CVS/Repository
--- u-boot-2009.03_orig/board/cpc45/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cpc45/CVS/Repository   2009-03-25 15:24:11.603771000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/cpc45
diff -Naur u-boot-2009.03_orig/board/cpc45/CVS/Root u-boot-2009.03/board/cpc45/CVS/Root
--- u-boot-2009.03_orig/board/cpc45/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cpc45/CVS/Root 2009-03-25 15:24:11.603771000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/cpu86/CVS/Entries u-boot-2009.03/board/cpu86/CVS/Entries
--- u-boot-2009.03_orig/board/cpu86/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cpu86/CVS/Entries      2009-03-25 15:57:16.122052000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu86.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu86.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/cpu86/CVS/Entries.Extra u-boot-2009.03/board/cpu86/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/cpu86/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cpu86/CVS/Entries.Extra        2009-03-25 15:57:16.122052000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019690/
+/config.mk///1238019690/
+/cpu86.c///1238019690/
+/cpu86.h///1238019690/
+/flash.c///1238019690/
diff -Naur u-boot-2009.03_orig/board/cpu86/CVS/Entries.Extra.Old u-boot-2009.03/board/cpu86/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/cpu86/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cpu86/CVS/Entries.Extra.Old    2009-03-25 15:24:11.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019690/
+/config.mk///1238019690/
+/cpu86.c///1238019690/
+/cpu86.h///1238019690/
+/flash.c///1238019690/
diff -Naur u-boot-2009.03_orig/board/cpu86/CVS/Entries.Old u-boot-2009.03/board/cpu86/CVS/Entries.Old
--- u-boot-2009.03_orig/board/cpu86/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cpu86/CVS/Entries.Old  2009-03-25 15:24:11.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/cpu86.c/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/cpu86.h/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:30 2009//
+D
diff -Naur u-boot-2009.03_orig/board/cpu86/CVS/Repository u-boot-2009.03/board/cpu86/CVS/Repository
--- u-boot-2009.03_orig/board/cpu86/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cpu86/CVS/Repository   2009-03-25 15:24:11.728769400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/cpu86
diff -Naur u-boot-2009.03_orig/board/cpu86/CVS/Root u-boot-2009.03/board/cpu86/CVS/Root
--- u-boot-2009.03_orig/board/cpu86/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cpu86/CVS/Root 2009-03-25 15:24:11.728769400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/cpu87/CVS/Entries u-boot-2009.03/board/cpu87/CVS/Entries
--- u-boot-2009.03_orig/board/cpu87/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cpu87/CVS/Entries      2009-03-25 15:57:16.215801400 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu87.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu87.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/cpu87/CVS/Entries.Extra u-boot-2009.03/board/cpu87/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/cpu87/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cpu87/CVS/Entries.Extra        2009-03-25 15:57:16.215801400 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019690/
+/config.mk///1238019690/
+/cpu87.c///1238019690/
+/cpu87.h///1238019690/
+/flash.c///1238019690/
diff -Naur u-boot-2009.03_orig/board/cpu87/CVS/Entries.Extra.Old u-boot-2009.03/board/cpu87/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/cpu87/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cpu87/CVS/Entries.Extra.Old    2009-03-25 15:24:11.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019690/
+/config.mk///1238019690/
+/cpu87.c///1238019690/
+/cpu87.h///1238019690/
+/flash.c///1238019690/
diff -Naur u-boot-2009.03_orig/board/cpu87/CVS/Entries.Old u-boot-2009.03/board/cpu87/CVS/Entries.Old
--- u-boot-2009.03_orig/board/cpu87/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cpu87/CVS/Entries.Old  2009-03-25 15:24:11.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/cpu87.c/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/cpu87.h/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:30 2009//
+D
diff -Naur u-boot-2009.03_orig/board/cpu87/CVS/Repository u-boot-2009.03/board/cpu87/CVS/Repository
--- u-boot-2009.03_orig/board/cpu87/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cpu87/CVS/Repository   2009-03-25 15:24:11.853767800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/cpu87
diff -Naur u-boot-2009.03_orig/board/cpu87/CVS/Root u-boot-2009.03/board/cpu87/CVS/Root
--- u-boot-2009.03_orig/board/cpu87/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cpu87/CVS/Root 2009-03-25 15:24:11.838143000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/cradle/CVS/Entries u-boot-2009.03/board/cradle/CVS/Entries
--- u-boot-2009.03_orig/board/cradle/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cradle/CVS/Entries     2009-03-25 15:57:16.293925900 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cradle.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/cradle/CVS/Entries.Extra u-boot-2009.03/board/cradle/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/cradle/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cradle/CVS/Entries.Extra       2009-03-25 15:57:16.293925900 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019690/
+/config.mk///1238019690/
+/cradle.c///1238019690/
+/flash.c///1238019690/
+/lowlevel_init.S///1238019690/
+/u-boot.lds///1238019690/
diff -Naur u-boot-2009.03_orig/board/cradle/CVS/Entries.Extra.Old u-boot-2009.03/board/cradle/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/cradle/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cradle/CVS/Entries.Extra.Old   2009-03-25 15:24:12.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019690/
+/config.mk///1238019690/
+/cradle.c///1238019690/
+/flash.c///1238019690/
+/lowlevel_init.S///1238019690/
+/u-boot.lds///1238019690/
diff -Naur u-boot-2009.03_orig/board/cradle/CVS/Entries.Old u-boot-2009.03/board/cradle/CVS/Entries.Old
--- u-boot-2009.03_orig/board/cradle/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cradle/CVS/Entries.Old 2009-03-25 15:24:12.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/cradle.c/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:30 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:30 2009//
+D
diff -Naur u-boot-2009.03_orig/board/cradle/CVS/Repository u-boot-2009.03/board/cradle/CVS/Repository
--- u-boot-2009.03_orig/board/cradle/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cradle/CVS/Repository  2009-03-25 15:24:11.963141400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/cradle
diff -Naur u-boot-2009.03_orig/board/cradle/CVS/Root u-boot-2009.03/board/cradle/CVS/Root
--- u-boot-2009.03_orig/board/cradle/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cradle/CVS/Root        2009-03-25 15:24:11.963141400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/cray/CVS/Entries u-boot-2009.03/board/cray/CVS/Entries
--- u-boot-2009.03_orig/board/cray/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cray/CVS/Entries       2009-03-25 15:24:12.260012600 -0700
@@ -0,0 +1 @@
+D/L1////
diff -Naur u-boot-2009.03_orig/board/cray/CVS/Entries.Extra u-boot-2009.03/board/cray/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/cray/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cray/CVS/Entries.Extra 2009-03-25 15:24:12.260012600 -0700
@@ -0,0 +1 @@
+D/L1////
diff -Naur u-boot-2009.03_orig/board/cray/CVS/Repository u-boot-2009.03/board/cray/CVS/Repository
--- u-boot-2009.03_orig/board/cray/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cray/CVS/Repository    2009-03-25 15:24:12.088139800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/cray
diff -Naur u-boot-2009.03_orig/board/cray/CVS/Root u-boot-2009.03/board/cray/CVS/Root
--- u-boot-2009.03_orig/board/cray/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cray/CVS/Root  2009-03-25 15:24:12.088139800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/cray/L1/CVS/Entries u-boot-2009.03/board/cray/L1/CVS/Entries
--- u-boot-2009.03_orig/board/cray/L1/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cray/L1/CVS/Entries    2009-03-31 14:44:12.807898400 -0700
@@ -0,0 +1,12 @@
+/L1.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/L1.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/patchme/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.debug/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/x2c.awk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bootscript.hush/1.1.1.1/Tue Mar 31 21:44:12 2009//T1.1.1.1
+D
diff -Naur u-boot-2009.03_orig/board/cray/L1/CVS/Entries.Extra u-boot-2009.03/board/cray/L1/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/cray/L1/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cray/L1/CVS/Entries.Extra      2009-03-31 14:44:12.807898400 -0700
@@ -0,0 +1,11 @@
+/L1.c///1238019690/
+/L1.h///1238019691/
+/Makefile///1238019691/
+/config.mk///1238019690/
+/flash.c///1238019690/
+/init.S///1238019690/
+/patchme///1238019691/
+/u-boot.lds///1238019691/
+/u-boot.lds.debug///1238019691/
+/x2c.awk///1238019691/
+/bootscript.hush///1238019690/
diff -Naur u-boot-2009.03_orig/board/cray/L1/CVS/Entries.Extra.Old u-boot-2009.03/board/cray/L1/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/cray/L1/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cray/L1/CVS/Entries.Extra.Old  2009-03-25 17:51:36.000000000 -0700
@@ -0,0 +1,11 @@
+/L1.c///1238019690/
+/L1.h///1238019691/
+/Makefile///1238019691/
+/config.mk///1238019690/
+/flash.c///1238019690/
+/init.S///1238019690/
+/patchme///1238019691/
+/u-boot.lds///1238019691/
+/u-boot.lds.debug///1238019691/
+/x2c.awk///1238019691/
+/bootscript.hush///1238028696/
diff -Naur u-boot-2009.03_orig/board/cray/L1/CVS/Entries.Old u-boot-2009.03/board/cray/L1/CVS/Entries.Old
--- u-boot-2009.03_orig/board/cray/L1/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cray/L1/CVS/Entries.Old        2009-03-25 17:51:36.000000000 -0700
@@ -0,0 +1,12 @@
+/L1.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/L1.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/patchme/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.debug/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/x2c.awk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bootscript.hush/1.2/Thu Mar 26 00:51:36 2009//
+D
diff -Naur u-boot-2009.03_orig/board/cray/L1/CVS/Repository u-boot-2009.03/board/cray/L1/CVS/Repository
--- u-boot-2009.03_orig/board/cray/L1/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cray/L1/CVS/Repository 2009-03-25 15:24:12.103764600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/cray/L1
diff -Naur u-boot-2009.03_orig/board/cray/L1/CVS/Root u-boot-2009.03/board/cray/L1/CVS/Root
--- u-boot-2009.03_orig/board/cray/L1/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cray/L1/CVS/Root       2009-03-25 15:24:12.103764600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/cray/L1/bootscript.hush u-boot-2009.03/board/cray/L1/bootscript.hush
--- u-boot-2009.03_orig/board/cray/L1/bootscript.hush   2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/board/cray/L1/bootscript.hush        2009-03-31 14:44:12.667275200 -0700
@@ -1,117 +1,117 @@
-# $Header$
-# hush bootscript for PPCBOOT on L1
-# note: all #s are in hex, do _NOT_ prefix it with 0x
-
-flash_rfs=ffc00000
-flash_krl=fff00000
-tftp_addr=100000
-tftp2_addr=1000000
-
-if printenv booted
-then
-       echo already booted before
-else
-       echo first boot in environment, create and save settings
-       setenv booted OK
-       saveenv
-fi
-
-setenv autoload no
-# clear out stale env stuff, so we get fresh from dhcp.
-for setting in initrd fromflash kernel rootfs rootpath
-do
-setenv $setting
-done
-
-dhcp
-
-# if host provides us with a different bootscript, us it.
-if printenv bootscript
-       then
-       tftp $tftp_addr $bootcript
-       if imi $tftp_addr
-       then
-               autoscript $tftp_addr
-       fi
-fi
-
-# default base kernel arguments.
-setenv bootargs $xbootargs devfs=mount ip=$ipaddr:$serverip:$gatewayip:$netmask:L1:eth0:off wdt=120
-
-# Have a kernel in flash?
-if imi $flash_krl
-then
-       echo ok kernel to boot from $flash_krl
-       setenv kernel $flash_krl
-else
-       echo no kernel to boot from $flash_krl, need tftp
-fi
-
-# Have a rootfs in flash? 
-echo test for SQUASHfs at $flash_rfs
-
-if imi $flash_rfs
-then
-       echo appears to be a good initrd image at base of flash OK
-       setenv rootfs $flash_rfs
-else
-       echo no image at base of flash, need nfsroot or initrd
-fi
-
-# I boot from flash if told to and I can.
-if printenv fromflash && printenv kernel && printenv rootfs
-then
-       echo booting entirely from flash
-       setenv bootargs root=/dev/ram0 rw $bootargs
-       bootm $kernel $rootfs
-       echo oh no failed so I try some other stuff
-fi
-
-# TFTP down a kernel
-if printenv bootfile
-then 
-       tftp $tftp_addr $bootfile
-       setenv kernel $tftp_addr
-       echo I will boot the TFTP kernel
-else
-       if printenv kernel
-       then
-               echo no bootfile specified, will use one from flash
-       else
-               setenv bootfile /opt/crayx1/craymcu/l1/flash/linux.image
-               echo OH NO! we have no bootfile,nor flash kernel! try default: $bootfile
-               tftp $tftp_addr $bootfile
-               setenv kernel $tftp_addr
-       fi
-fi
-
-# the rootfs.
-if printenv rootpath
-then
-       echo rootpath is $rootpath
-       if printenv initrd
-       then 
-               echo initrd is also specified, so use $initrd
-               tftp $tftp2_addr $initrd
-               setenv bootargs root=/dev/ram0 rw cwsroot=$serverip:$rootpath $bootargs
-               bootm $kernel $tftp2_addr
-       else
-               echo initrd is not specified, so use NFSROOT $rootpat
-               setenv bootargs root=/dev/nfs ro nfsroot=$serverip:$rootpath $bootargs
-               bootm $kernel
-       fi
-else
-       echo we have no rootpath check for one in flash
-       if printenv rootfs
-       then
-               echo I will use the one in flash
-               setenv bootargs root=/dev/mtdblock/0 ro rootfstype=squashfs $bootargs
-               bootm $kernel
-       else
-               setenv rootpath /export/crayl1
-               echo OH NO! we have no rootpath,nor flash kernel! try default: $rootpath
-               setenv bootargs root=/dev/mtdblock/0 ro rootfstype=squashfs $bootargs
-               bootm $kernel
-       fi
-fi
-reset
+# $Header: C:\qaz\__CVS_ROOT/units/or1200_soc/sw/u-boot-2009.03/board/cray/L1/bootscript.hush,v 1.1.1.1 2009/03/25 22:21:30 kenagy Exp $
+# hush bootscript for PPCBOOT on L1
+# note: all #s are in hex, do _NOT_ prefix it with 0x
+
+flash_rfs=ffc00000
+flash_krl=fff00000
+tftp_addr=100000
+tftp2_addr=1000000
+
+if printenv booted
+then
+       echo already booted before
+else
+       echo first boot in environment, create and save settings
+       setenv booted OK
+       saveenv
+fi
+
+setenv autoload no
+# clear out stale env stuff, so we get fresh from dhcp.
+for setting in initrd fromflash kernel rootfs rootpath
+do
+setenv $setting
+done
+
+dhcp
+
+# if host provides us with a different bootscript, us it.
+if printenv bootscript
+       then
+       tftp $tftp_addr $bootcript
+       if imi $tftp_addr
+       then
+               autoscript $tftp_addr
+       fi
+fi
+
+# default base kernel arguments.
+setenv bootargs $xbootargs devfs=mount ip=$ipaddr:$serverip:$gatewayip:$netmask:L1:eth0:off wdt=120
+
+# Have a kernel in flash?
+if imi $flash_krl
+then
+       echo ok kernel to boot from $flash_krl
+       setenv kernel $flash_krl
+else
+       echo no kernel to boot from $flash_krl, need tftp
+fi
+
+# Have a rootfs in flash? 
+echo test for SQUASHfs at $flash_rfs
+
+if imi $flash_rfs
+then
+       echo appears to be a good initrd image at base of flash OK
+       setenv rootfs $flash_rfs
+else
+       echo no image at base of flash, need nfsroot or initrd
+fi
+
+# I boot from flash if told to and I can.
+if printenv fromflash && printenv kernel && printenv rootfs
+then
+       echo booting entirely from flash
+       setenv bootargs root=/dev/ram0 rw $bootargs
+       bootm $kernel $rootfs
+       echo oh no failed so I try some other stuff
+fi
+
+# TFTP down a kernel
+if printenv bootfile
+then 
+       tftp $tftp_addr $bootfile
+       setenv kernel $tftp_addr
+       echo I will boot the TFTP kernel
+else
+       if printenv kernel
+       then
+               echo no bootfile specified, will use one from flash
+       else
+               setenv bootfile /opt/crayx1/craymcu/l1/flash/linux.image
+               echo OH NO! we have no bootfile,nor flash kernel! try default: $bootfile
+               tftp $tftp_addr $bootfile
+               setenv kernel $tftp_addr
+       fi
+fi
+
+# the rootfs.
+if printenv rootpath
+then
+       echo rootpath is $rootpath
+       if printenv initrd
+       then 
+               echo initrd is also specified, so use $initrd
+               tftp $tftp2_addr $initrd
+               setenv bootargs root=/dev/ram0 rw cwsroot=$serverip:$rootpath $bootargs
+               bootm $kernel $tftp2_addr
+       else
+               echo initrd is not specified, so use NFSROOT $rootpat
+               setenv bootargs root=/dev/nfs ro nfsroot=$serverip:$rootpath $bootargs
+               bootm $kernel
+       fi
+else
+       echo we have no rootpath check for one in flash
+       if printenv rootfs
+       then
+               echo I will use the one in flash
+               setenv bootargs root=/dev/mtdblock/0 ro rootfstype=squashfs $bootargs
+               bootm $kernel
+       else
+               setenv rootpath /export/crayl1
+               echo OH NO! we have no rootpath,nor flash kernel! try default: $rootpath
+               setenv bootargs root=/dev/mtdblock/0 ro rootfstype=squashfs $bootargs
+               bootm $kernel
+       fi
+fi
+reset
diff -Naur u-boot-2009.03_orig/board/csb226/CVS/Entries u-boot-2009.03/board/csb226/CVS/Entries
--- u-boot-2009.03_orig/board/csb226/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/csb226/CVS/Entries     2009-03-25 15:57:16.497049600 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/csb226.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/csb226/CVS/Entries.Extra u-boot-2009.03/board/csb226/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/csb226/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/csb226/CVS/Entries.Extra       2009-03-25 15:57:16.497049600 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019691/
+/config.mk///1238019691/
+/csb226.c///1238019691/
+/flash.c///1238019691/
+/lowlevel_init.S///1238019691/
+/u-boot.lds///1238019691/
diff -Naur u-boot-2009.03_orig/board/csb226/CVS/Entries.Extra.Old u-boot-2009.03/board/csb226/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/csb226/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/csb226/CVS/Entries.Extra.Old   2009-03-25 15:24:12.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019691/
+/config.mk///1238019691/
+/csb226.c///1238019691/
+/flash.c///1238019691/
+/lowlevel_init.S///1238019691/
+/u-boot.lds///1238019691/
diff -Naur u-boot-2009.03_orig/board/csb226/CVS/Entries.Old u-boot-2009.03/board/csb226/CVS/Entries.Old
--- u-boot-2009.03_orig/board/csb226/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/csb226/CVS/Entries.Old 2009-03-25 15:24:12.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/csb226.c/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:31 2009//
+D
diff -Naur u-boot-2009.03_orig/board/csb226/CVS/Repository u-boot-2009.03/board/csb226/CVS/Repository
--- u-boot-2009.03_orig/board/csb226/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/csb226/CVS/Repository  2009-03-25 15:24:12.306887000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/csb226
diff -Naur u-boot-2009.03_orig/board/csb226/CVS/Root u-boot-2009.03/board/csb226/CVS/Root
--- u-boot-2009.03_orig/board/csb226/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/csb226/CVS/Root        2009-03-25 15:24:12.291262200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/csb272/CVS/Entries u-boot-2009.03/board/csb272/CVS/Entries
--- u-boot-2009.03_orig/board/csb272/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/csb272/CVS/Entries     2009-03-25 15:57:16.575174100 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/csb272.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/csb272/CVS/Entries.Extra u-boot-2009.03/board/csb272/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/csb272/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/csb272/CVS/Entries.Extra       2009-03-25 15:57:16.575174100 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019691/
+/config.mk///1238019691/
+/csb272.c///1238019691/
+/init.S///1238019691/
+/u-boot.lds///1238019691/
diff -Naur u-boot-2009.03_orig/board/csb272/CVS/Entries.Extra.Old u-boot-2009.03/board/csb272/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/csb272/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/csb272/CVS/Entries.Extra.Old   2009-03-25 15:24:12.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019691/
+/config.mk///1238019691/
+/csb272.c///1238019691/
+/init.S///1238019691/
+/u-boot.lds///1238019691/
diff -Naur u-boot-2009.03_orig/board/csb272/CVS/Entries.Old u-boot-2009.03/board/csb272/CVS/Entries.Old
--- u-boot-2009.03_orig/board/csb272/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/csb272/CVS/Entries.Old 2009-03-25 15:24:12.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/csb272.c/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/init.S/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:31 2009//
+D
diff -Naur u-boot-2009.03_orig/board/csb272/CVS/Repository u-boot-2009.03/board/csb272/CVS/Repository
--- u-boot-2009.03_orig/board/csb272/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/csb272/CVS/Repository  2009-03-25 15:24:12.588133400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/csb272
diff -Naur u-boot-2009.03_orig/board/csb272/CVS/Root u-boot-2009.03/board/csb272/CVS/Root
--- u-boot-2009.03_orig/board/csb272/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/csb272/CVS/Root        2009-03-25 15:24:12.572508600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/csb472/CVS/Entries u-boot-2009.03/board/csb472/CVS/Entries
--- u-boot-2009.03_orig/board/csb472/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/csb472/CVS/Entries     2009-03-25 15:57:16.637673700 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/csb472.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/csb472/CVS/Entries.Extra u-boot-2009.03/board/csb472/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/csb472/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/csb472/CVS/Entries.Extra       2009-03-25 15:57:16.653298600 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019691/
+/config.mk///1238019691/
+/csb472.c///1238019691/
+/init.S///1238019691/
+/u-boot.lds///1238019691/
diff -Naur u-boot-2009.03_orig/board/csb472/CVS/Entries.Extra.Old u-boot-2009.03/board/csb472/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/csb472/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/csb472/CVS/Entries.Extra.Old   2009-03-25 15:24:12.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019691/
+/config.mk///1238019691/
+/csb472.c///1238019691/
+/init.S///1238019691/
+/u-boot.lds///1238019691/
diff -Naur u-boot-2009.03_orig/board/csb472/CVS/Entries.Old u-boot-2009.03/board/csb472/CVS/Entries.Old
--- u-boot-2009.03_orig/board/csb472/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/csb472/CVS/Entries.Old 2009-03-25 15:24:12.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/csb472.c/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/init.S/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:31 2009//
+D
diff -Naur u-boot-2009.03_orig/board/csb472/CVS/Repository u-boot-2009.03/board/csb472/CVS/Repository
--- u-boot-2009.03_orig/board/csb472/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/csb472/CVS/Repository  2009-03-25 15:24:12.697507000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/csb472
diff -Naur u-boot-2009.03_orig/board/csb472/CVS/Root u-boot-2009.03/board/csb472/CVS/Root
--- u-boot-2009.03_orig/board/csb472/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/csb472/CVS/Root        2009-03-25 15:24:12.697507000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/csb637/CVS/Entries u-boot-2009.03/board/csb637/CVS/Entries
--- u-boot-2009.03_orig/board/csb637/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/csb637/CVS/Entries     2009-03-25 15:57:16.715798200 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/csb637.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/csb637/CVS/Entries.Extra u-boot-2009.03/board/csb637/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/csb637/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/csb637/CVS/Entries.Extra       2009-03-25 15:57:16.715798200 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019691/
+/config.mk///1238019691/
+/csb637.c///1238019691/
+/u-boot.lds///1238019691/
diff -Naur u-boot-2009.03_orig/board/csb637/CVS/Entries.Extra.Old u-boot-2009.03/board/csb637/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/csb637/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/csb637/CVS/Entries.Extra.Old   2009-03-25 15:24:12.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019691/
+/config.mk///1238019691/
+/csb637.c///1238019691/
+/u-boot.lds///1238019691/
diff -Naur u-boot-2009.03_orig/board/csb637/CVS/Entries.Old u-boot-2009.03/board/csb637/CVS/Entries.Old
--- u-boot-2009.03_orig/board/csb637/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/csb637/CVS/Entries.Old 2009-03-25 15:24:12.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/csb637.c/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:31 2009//
+D
diff -Naur u-boot-2009.03_orig/board/csb637/CVS/Repository u-boot-2009.03/board/csb637/CVS/Repository
--- u-boot-2009.03_orig/board/csb637/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/csb637/CVS/Repository  2009-03-25 15:24:12.791255800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/csb637
diff -Naur u-boot-2009.03_orig/board/csb637/CVS/Root u-boot-2009.03/board/csb637/CVS/Root
--- u-boot-2009.03_orig/board/csb637/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/csb637/CVS/Root        2009-03-25 15:24:12.791255800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/cu824/CVS/Entries u-boot-2009.03/board/cu824/CVS/Entries
--- u-boot-2009.03_orig/board/cu824/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cu824/CVS/Entries      2009-03-25 15:57:16.778297800 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cu824.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/cu824/CVS/Entries.Extra u-boot-2009.03/board/cu824/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/cu824/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cu824/CVS/Entries.Extra        2009-03-25 15:57:16.793922700 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019691/
+/README///1238019691/
+/config.mk///1238019691/
+/cu824.c///1238019691/
+/flash.c///1238019691/
diff -Naur u-boot-2009.03_orig/board/cu824/CVS/Entries.Extra.Old u-boot-2009.03/board/cu824/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/cu824/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cu824/CVS/Entries.Extra.Old    2009-03-25 15:24:12.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019691/
+/README///1238019691/
+/config.mk///1238019691/
+/cu824.c///1238019691/
+/flash.c///1238019691/
diff -Naur u-boot-2009.03_orig/board/cu824/CVS/Entries.Old u-boot-2009.03/board/cu824/CVS/Entries.Old
--- u-boot-2009.03_orig/board/cu824/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cu824/CVS/Entries.Old  2009-03-25 15:24:12.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/README/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/cu824.c/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:31 2009//
+D
diff -Naur u-boot-2009.03_orig/board/cu824/CVS/Repository u-boot-2009.03/board/cu824/CVS/Repository
--- u-boot-2009.03_orig/board/cu824/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cu824/CVS/Repository   2009-03-25 15:24:12.885004600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/cu824
diff -Naur u-boot-2009.03_orig/board/cu824/CVS/Root u-boot-2009.03/board/cu824/CVS/Root
--- u-boot-2009.03_orig/board/cu824/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/cu824/CVS/Root 2009-03-25 15:24:12.885004600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/dave/B2/CVS/Entries u-boot-2009.03/board/dave/B2/CVS/Entries
--- u-boot-2009.03_orig/board/dave/B2/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/dave/B2/CVS/Entries    2009-03-25 15:57:16.856422300 -0700
@@ -0,0 +1,7 @@
+/B2.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/dave/B2/CVS/Entries.Extra u-boot-2009.03/board/dave/B2/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/dave/B2/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/dave/B2/CVS/Entries.Extra      2009-03-25 15:57:16.856422300 -0700
@@ -0,0 +1,6 @@
+/B2.c///1238019691/
+/Makefile///1238019691/
+/config.mk///1238019691/
+/flash.c///1238019691/
+/lowlevel_init.S///1238019691/
+/u-boot.lds///1238019691/
diff -Naur u-boot-2009.03_orig/board/dave/B2/CVS/Entries.Extra.Old u-boot-2009.03/board/dave/B2/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/dave/B2/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/dave/B2/CVS/Entries.Extra.Old  2009-03-25 15:24:13.000000000 -0700
@@ -0,0 +1,6 @@
+/B2.c///1238019691/
+/Makefile///1238019691/
+/config.mk///1238019691/
+/flash.c///1238019691/
+/lowlevel_init.S///1238019691/
+/u-boot.lds///1238019691/
diff -Naur u-boot-2009.03_orig/board/dave/B2/CVS/Entries.Old u-boot-2009.03/board/dave/B2/CVS/Entries.Old
--- u-boot-2009.03_orig/board/dave/B2/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/dave/B2/CVS/Entries.Old        2009-03-25 15:24:13.000000000 -0700
@@ -0,0 +1,7 @@
+/B2.c/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/Makefile/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:31 2009//
+D
diff -Naur u-boot-2009.03_orig/board/dave/B2/CVS/Repository u-boot-2009.03/board/dave/B2/CVS/Repository
--- u-boot-2009.03_orig/board/dave/B2/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/dave/B2/CVS/Repository 2009-03-25 15:24:13.025627800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/dave/B2
diff -Naur u-boot-2009.03_orig/board/dave/B2/CVS/Root u-boot-2009.03/board/dave/B2/CVS/Root
--- u-boot-2009.03_orig/board/dave/B2/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/dave/B2/CVS/Root       2009-03-25 15:24:13.025627800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/dave/CVS/Entries u-boot-2009.03/board/dave/CVS/Entries
--- u-boot-2009.03_orig/board/dave/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/dave/CVS/Entries       2009-03-25 15:24:13.572495800 -0700
@@ -0,0 +1,3 @@
+D/B2////
+D/PPChameleonEVB////
+D/common////
diff -Naur u-boot-2009.03_orig/board/dave/CVS/Entries.Extra u-boot-2009.03/board/dave/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/dave/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/dave/CVS/Entries.Extra 2009-03-25 15:24:13.572495800 -0700
@@ -0,0 +1,3 @@
+D/B2////
+D/PPChameleonEVB////
+D/common////
diff -Naur u-boot-2009.03_orig/board/dave/CVS/Repository u-boot-2009.03/board/dave/CVS/Repository
--- u-boot-2009.03_orig/board/dave/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/dave/CVS/Repository    2009-03-25 15:24:13.010003000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/dave
diff -Naur u-boot-2009.03_orig/board/dave/CVS/Root u-boot-2009.03/board/dave/CVS/Root
--- u-boot-2009.03_orig/board/dave/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/dave/CVS/Root  2009-03-25 15:24:12.994378200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/dave/PPChameleonEVB/CVS/Entries u-boot-2009.03/board/dave/PPChameleonEVB/CVS/Entries
--- u-boot-2009.03_orig/board/dave/PPChameleonEVB/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/dave/PPChameleonEVB/CVS/Entries        2009-03-25 15:57:16.934546800 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/PPChameleonEVB.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fpgadata.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nand.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/dave/PPChameleonEVB/CVS/Entries.Extra u-boot-2009.03/board/dave/PPChameleonEVB/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/dave/PPChameleonEVB/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/dave/PPChameleonEVB/CVS/Entries.Extra  2009-03-25 15:57:16.934546800 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019691/
+/PPChameleonEVB.c///1238019691/
+/config.mk///1238019691/
+/flash.c///1238019691/
+/fpgadata.c///1238019691/
+/nand.c///1238019691/
+/u-boot.lds///1238019691/
diff -Naur u-boot-2009.03_orig/board/dave/PPChameleonEVB/CVS/Entries.Extra.Old u-boot-2009.03/board/dave/PPChameleonEVB/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/dave/PPChameleonEVB/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/dave/PPChameleonEVB/CVS/Entries.Extra.Old      2009-03-25 15:24:13.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019691/
+/PPChameleonEVB.c///1238019691/
+/config.mk///1238019691/
+/flash.c///1238019691/
+/fpgadata.c///1238019691/
+/nand.c///1238019691/
+/u-boot.lds///1238019691/
diff -Naur u-boot-2009.03_orig/board/dave/PPChameleonEVB/CVS/Entries.Old u-boot-2009.03/board/dave/PPChameleonEVB/CVS/Entries.Old
--- u-boot-2009.03_orig/board/dave/PPChameleonEVB/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/dave/PPChameleonEVB/CVS/Entries.Old    2009-03-25 15:24:13.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/PPChameleonEVB.c/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/fpgadata.c/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/nand.c/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:31 2009//
+D
diff -Naur u-boot-2009.03_orig/board/dave/PPChameleonEVB/CVS/Repository u-boot-2009.03/board/dave/PPChameleonEVB/CVS/Repository
--- u-boot-2009.03_orig/board/dave/PPChameleonEVB/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/dave/PPChameleonEVB/CVS/Repository     2009-03-25 15:24:13.150626200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/dave/PPChameleonEVB
diff -Naur u-boot-2009.03_orig/board/dave/PPChameleonEVB/CVS/Root u-boot-2009.03/board/dave/PPChameleonEVB/CVS/Root
--- u-boot-2009.03_orig/board/dave/PPChameleonEVB/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/dave/PPChameleonEVB/CVS/Root   2009-03-25 15:24:13.150626200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/dave/common/CVS/Entries u-boot-2009.03/board/dave/common/CVS/Entries
--- u-boot-2009.03_orig/board/dave/common/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/dave/common/CVS/Entries        2009-03-25 15:57:16.981421500 -0700
@@ -0,0 +1,4 @@
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fpga.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/dave/common/CVS/Entries.Extra u-boot-2009.03/board/dave/common/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/dave/common/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/dave/common/CVS/Entries.Extra  2009-03-25 15:57:16.981421500 -0700
@@ -0,0 +1,3 @@
+/flash.c///1238019691/
+/fpga.c///1238019691/
+/pci.c///1238019691/
diff -Naur u-boot-2009.03_orig/board/dave/common/CVS/Entries.Extra.Old u-boot-2009.03/board/dave/common/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/dave/common/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/dave/common/CVS/Entries.Extra.Old      2009-03-25 15:24:13.000000000 -0700
@@ -0,0 +1,3 @@
+/flash.c///1238019691/
+/fpga.c///1238019691/
+/pci.c///1238019691/
diff -Naur u-boot-2009.03_orig/board/dave/common/CVS/Entries.Old u-boot-2009.03/board/dave/common/CVS/Entries.Old
--- u-boot-2009.03_orig/board/dave/common/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/dave/common/CVS/Entries.Old    2009-03-25 15:24:13.000000000 -0700
@@ -0,0 +1,4 @@
+/flash.c/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/fpga.c/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/pci.c/1.1.1.1/Wed Mar 25 22:21:31 2009//
+D
diff -Naur u-boot-2009.03_orig/board/dave/common/CVS/Repository u-boot-2009.03/board/dave/common/CVS/Repository
--- u-boot-2009.03_orig/board/dave/common/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/dave/common/CVS/Repository     2009-03-25 15:24:13.291249400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/dave/common
diff -Naur u-boot-2009.03_orig/board/dave/common/CVS/Root u-boot-2009.03/board/dave/common/CVS/Root
--- u-boot-2009.03_orig/board/dave/common/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/dave/common/CVS/Root   2009-03-25 15:24:13.291249400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/davedenx/CVS/Entries u-boot-2009.03/board/davedenx/CVS/Entries
--- u-boot-2009.03_orig/board/davedenx/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/davedenx/CVS/Entries   2009-03-25 15:24:13.900616600 -0700
@@ -0,0 +1 @@
+D/qong////
diff -Naur u-boot-2009.03_orig/board/davedenx/CVS/Entries.Extra u-boot-2009.03/board/davedenx/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/davedenx/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/davedenx/CVS/Entries.Extra     2009-03-25 15:24:13.900616600 -0700
@@ -0,0 +1 @@
+D/qong////
diff -Naur u-boot-2009.03_orig/board/davedenx/CVS/Repository u-boot-2009.03/board/davedenx/CVS/Repository
--- u-boot-2009.03_orig/board/davedenx/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/davedenx/CVS/Repository        2009-03-25 15:24:13.759993400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/davedenx
diff -Naur u-boot-2009.03_orig/board/davedenx/CVS/Root u-boot-2009.03/board/davedenx/CVS/Root
--- u-boot-2009.03_orig/board/davedenx/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/davedenx/CVS/Root      2009-03-25 15:24:13.759993400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/davedenx/qong/CVS/Entries u-boot-2009.03/board/davedenx/qong/CVS/Entries
--- u-boot-2009.03_orig/board/davedenx/qong/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/davedenx/qong/CVS/Entries      2009-03-25 15:57:17.090795800 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/qong.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/qong_fpga.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/davedenx/qong/CVS/Entries.Extra u-boot-2009.03/board/davedenx/qong/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/davedenx/qong/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/davedenx/qong/CVS/Entries.Extra        2009-03-25 15:57:17.090795800 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019691/
+/config.mk///1238019691/
+/lowlevel_init.S///1238019691/
+/qong.c///1238019691/
+/qong_fpga.h///1238019691/
+/u-boot.lds///1238019691/
diff -Naur u-boot-2009.03_orig/board/davedenx/qong/CVS/Entries.Extra.Old u-boot-2009.03/board/davedenx/qong/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/davedenx/qong/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/davedenx/qong/CVS/Entries.Extra.Old    2009-03-25 15:24:13.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019691/
+/config.mk///1238019691/
+/lowlevel_init.S///1238019691/
+/qong.c///1238019691/
+/qong_fpga.h///1238019691/
+/u-boot.lds///1238019691/
diff -Naur u-boot-2009.03_orig/board/davedenx/qong/CVS/Entries.Old u-boot-2009.03/board/davedenx/qong/CVS/Entries.Old
--- u-boot-2009.03_orig/board/davedenx/qong/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/davedenx/qong/CVS/Entries.Old  2009-03-25 15:24:13.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/qong.c/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/qong_fpga.h/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:31 2009//
+D
diff -Naur u-boot-2009.03_orig/board/davedenx/qong/CVS/Repository u-boot-2009.03/board/davedenx/qong/CVS/Repository
--- u-boot-2009.03_orig/board/davedenx/qong/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/davedenx/qong/CVS/Repository   2009-03-25 15:24:13.791243000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/davedenx/qong
diff -Naur u-boot-2009.03_orig/board/davedenx/qong/CVS/Root u-boot-2009.03/board/davedenx/qong/CVS/Root
--- u-boot-2009.03_orig/board/davedenx/qong/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/davedenx/qong/CVS/Root 2009-03-25 15:24:13.775618200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/davinci/CVS/Entries u-boot-2009.03/board/davinci/CVS/Entries
--- u-boot-2009.03_orig/board/davinci/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/davinci/CVS/Entries    2009-03-25 15:24:14.822479800 -0700
@@ -0,0 +1,5 @@
+D/common////
+D/dvevm////
+D/schmoogie////
+D/sffsdr////
+D/sonata////
diff -Naur u-boot-2009.03_orig/board/davinci/CVS/Entries.Extra u-boot-2009.03/board/davinci/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/davinci/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/davinci/CVS/Entries.Extra      2009-03-25 15:24:14.822479800 -0700
@@ -0,0 +1,5 @@
+D/common////
+D/dvevm////
+D/schmoogie////
+D/sffsdr////
+D/sonata////
diff -Naur u-boot-2009.03_orig/board/davinci/CVS/Repository u-boot-2009.03/board/davinci/CVS/Repository
--- u-boot-2009.03_orig/board/davinci/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/davinci/CVS/Repository 2009-03-25 15:24:13.931866200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/davinci
diff -Naur u-boot-2009.03_orig/board/davinci/CVS/Root u-boot-2009.03/board/davinci/CVS/Root
--- u-boot-2009.03_orig/board/davinci/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/davinci/CVS/Root       2009-03-25 15:24:13.931866200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/davinci/common/CVS/Entries u-boot-2009.03/board/davinci/common/CVS/Entries
--- u-boot-2009.03_orig/board/davinci/common/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/davinci/common/CVS/Entries     2009-03-25 15:57:17.184545200 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/misc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/misc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/psc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/psc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/davinci/common/CVS/Entries.Extra u-boot-2009.03/board/davinci/common/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/davinci/common/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/davinci/common/CVS/Entries.Extra       2009-03-25 15:57:17.200170100 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019691/
+/misc.c///1238019691/
+/misc.h///1238019691/
+/psc.c///1238019691/
+/psc.h///1238019691/
diff -Naur u-boot-2009.03_orig/board/davinci/common/CVS/Entries.Extra.Old u-boot-2009.03/board/davinci/common/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/davinci/common/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/davinci/common/CVS/Entries.Extra.Old   2009-03-25 15:24:14.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019691/
+/misc.c///1238019691/
+/misc.h///1238019691/
+/psc.c///1238019691/
+/psc.h///1238019691/
diff -Naur u-boot-2009.03_orig/board/davinci/common/CVS/Entries.Old u-boot-2009.03/board/davinci/common/CVS/Entries.Old
--- u-boot-2009.03_orig/board/davinci/common/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/davinci/common/CVS/Entries.Old 2009-03-25 15:24:14.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/misc.c/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/misc.h/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/psc.c/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/psc.h/1.1.1.1/Wed Mar 25 22:21:31 2009//
+D
diff -Naur u-boot-2009.03_orig/board/davinci/common/CVS/Repository u-boot-2009.03/board/davinci/common/CVS/Repository
--- u-boot-2009.03_orig/board/davinci/common/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/davinci/common/CVS/Repository  2009-03-25 15:24:13.963115800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/davinci/common
diff -Naur u-boot-2009.03_orig/board/davinci/common/CVS/Root u-boot-2009.03/board/davinci/common/CVS/Root
--- u-boot-2009.03_orig/board/davinci/common/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/davinci/common/CVS/Root        2009-03-25 15:24:13.963115800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/davinci/dvevm/CVS/Entries u-boot-2009.03/board/davinci/dvevm/CVS/Entries
--- u-boot-2009.03_orig/board/davinci/dvevm/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/davinci/dvevm/CVS/Entries      2009-03-25 15:57:17.278294600 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/board_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dvevm.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/davinci/dvevm/CVS/Entries.Extra u-boot-2009.03/board/davinci/dvevm/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/davinci/dvevm/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/davinci/dvevm/CVS/Entries.Extra        2009-03-25 15:57:17.278294600 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019691/
+/board_init.S///1238019691/
+/config.mk///1238019691/
+/dvevm.c///1238019691/
+/u-boot.lds///1238019691/
diff -Naur u-boot-2009.03_orig/board/davinci/dvevm/CVS/Entries.Extra.Old u-boot-2009.03/board/davinci/dvevm/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/davinci/dvevm/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/davinci/dvevm/CVS/Entries.Extra.Old    2009-03-25 15:24:14.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019691/
+/board_init.S///1238019691/
+/config.mk///1238019691/
+/dvevm.c///1238019691/
+/u-boot.lds///1238019691/
diff -Naur u-boot-2009.03_orig/board/davinci/dvevm/CVS/Entries.Old u-boot-2009.03/board/davinci/dvevm/CVS/Entries.Old
--- u-boot-2009.03_orig/board/davinci/dvevm/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/davinci/dvevm/CVS/Entries.Old  2009-03-25 15:24:14.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/board_init.S/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/dvevm.c/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:31 2009//
+D
diff -Naur u-boot-2009.03_orig/board/davinci/dvevm/CVS/Repository u-boot-2009.03/board/davinci/dvevm/CVS/Repository
--- u-boot-2009.03_orig/board/davinci/dvevm/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/davinci/dvevm/CVS/Repository   2009-03-25 15:24:14.056864600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/davinci/dvevm
diff -Naur u-boot-2009.03_orig/board/davinci/dvevm/CVS/Root u-boot-2009.03/board/davinci/dvevm/CVS/Root
--- u-boot-2009.03_orig/board/davinci/dvevm/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/davinci/dvevm/CVS/Root 2009-03-25 15:24:14.056864600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/davinci/schmoogie/CVS/Entries u-boot-2009.03/board/davinci/schmoogie/CVS/Entries
--- u-boot-2009.03_orig/board/davinci/schmoogie/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/davinci/schmoogie/CVS/Entries  2009-03-25 15:57:17.340794200 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/board_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/schmoogie.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/davinci/schmoogie/CVS/Entries.Extra u-boot-2009.03/board/davinci/schmoogie/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/davinci/schmoogie/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/davinci/schmoogie/CVS/Entries.Extra    2009-03-25 15:57:17.340794200 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019691/
+/board_init.S///1238019691/
+/config.mk///1238019691/
+/schmoogie.c///1238019691/
+/u-boot.lds///1238019691/
diff -Naur u-boot-2009.03_orig/board/davinci/schmoogie/CVS/Entries.Extra.Old u-boot-2009.03/board/davinci/schmoogie/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/davinci/schmoogie/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/davinci/schmoogie/CVS/Entries.Extra.Old        2009-03-25 15:24:14.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019691/
+/board_init.S///1238019691/
+/config.mk///1238019691/
+/schmoogie.c///1238019691/
+/u-boot.lds///1238019691/
diff -Naur u-boot-2009.03_orig/board/davinci/schmoogie/CVS/Entries.Old u-boot-2009.03/board/davinci/schmoogie/CVS/Entries.Old
--- u-boot-2009.03_orig/board/davinci/schmoogie/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/davinci/schmoogie/CVS/Entries.Old      2009-03-25 15:24:14.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/board_init.S/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/schmoogie.c/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:31 2009//
+D
diff -Naur u-boot-2009.03_orig/board/davinci/schmoogie/CVS/Repository u-boot-2009.03/board/davinci/schmoogie/CVS/Repository
--- u-boot-2009.03_orig/board/davinci/schmoogie/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/davinci/schmoogie/CVS/Repository       2009-03-25 15:24:14.166238200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/davinci/schmoogie
diff -Naur u-boot-2009.03_orig/board/davinci/schmoogie/CVS/Root u-boot-2009.03/board/davinci/schmoogie/CVS/Root
--- u-boot-2009.03_orig/board/davinci/schmoogie/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/davinci/schmoogie/CVS/Root     2009-03-25 15:24:14.166238200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/davinci/sffsdr/CVS/Entries u-boot-2009.03/board/davinci/sffsdr/CVS/Entries
--- u-boot-2009.03_orig/board/davinci/sffsdr/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/davinci/sffsdr/CVS/Entries     2009-03-25 15:57:17.434543600 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/board_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sffsdr.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/davinci/sffsdr/CVS/Entries.Extra u-boot-2009.03/board/davinci/sffsdr/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/davinci/sffsdr/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/davinci/sffsdr/CVS/Entries.Extra       2009-03-25 15:57:17.434543600 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019691/
+/board_init.S///1238019691/
+/config.mk///1238019691/
+/sffsdr.c///1238019691/
+/u-boot.lds///1238019691/
diff -Naur u-boot-2009.03_orig/board/davinci/sffsdr/CVS/Entries.Extra.Old u-boot-2009.03/board/davinci/sffsdr/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/davinci/sffsdr/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/davinci/sffsdr/CVS/Entries.Extra.Old   2009-03-25 15:24:14.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019691/
+/board_init.S///1238019691/
+/config.mk///1238019691/
+/sffsdr.c///1238019691/
+/u-boot.lds///1238019691/
diff -Naur u-boot-2009.03_orig/board/davinci/sffsdr/CVS/Entries.Old u-boot-2009.03/board/davinci/sffsdr/CVS/Entries.Old
--- u-boot-2009.03_orig/board/davinci/sffsdr/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/davinci/sffsdr/CVS/Entries.Old 2009-03-25 15:24:14.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/board_init.S/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/sffsdr.c/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:31 2009//
+D
diff -Naur u-boot-2009.03_orig/board/davinci/sffsdr/CVS/Repository u-boot-2009.03/board/davinci/sffsdr/CVS/Repository
--- u-boot-2009.03_orig/board/davinci/sffsdr/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/davinci/sffsdr/CVS/Repository  2009-03-25 15:24:14.291236600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/davinci/sffsdr
diff -Naur u-boot-2009.03_orig/board/davinci/sffsdr/CVS/Root u-boot-2009.03/board/davinci/sffsdr/CVS/Root
--- u-boot-2009.03_orig/board/davinci/sffsdr/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/davinci/sffsdr/CVS/Root        2009-03-25 15:24:14.291236600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/davinci/sonata/CVS/Entries u-boot-2009.03/board/davinci/sonata/CVS/Entries
--- u-boot-2009.03_orig/board/davinci/sonata/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/davinci/sonata/CVS/Entries     2009-03-25 15:57:17.497043200 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/board_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sonata.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/davinci/sonata/CVS/Entries.Extra u-boot-2009.03/board/davinci/sonata/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/davinci/sonata/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/davinci/sonata/CVS/Entries.Extra       2009-03-25 15:57:17.497043200 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019691/
+/board_init.S///1238019691/
+/config.mk///1238019691/
+/sonata.c///1238019691/
+/u-boot.lds///1238019691/
diff -Naur u-boot-2009.03_orig/board/davinci/sonata/CVS/Entries.Extra.Old u-boot-2009.03/board/davinci/sonata/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/davinci/sonata/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/davinci/sonata/CVS/Entries.Extra.Old   2009-03-25 15:24:14.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019691/
+/board_init.S///1238019691/
+/config.mk///1238019691/
+/sonata.c///1238019691/
+/u-boot.lds///1238019691/
diff -Naur u-boot-2009.03_orig/board/davinci/sonata/CVS/Entries.Old u-boot-2009.03/board/davinci/sonata/CVS/Entries.Old
--- u-boot-2009.03_orig/board/davinci/sonata/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/davinci/sonata/CVS/Entries.Old 2009-03-25 15:24:14.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/board_init.S/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/sonata.c/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:31 2009//
+D
diff -Naur u-boot-2009.03_orig/board/davinci/sonata/CVS/Repository u-boot-2009.03/board/davinci/sonata/CVS/Repository
--- u-boot-2009.03_orig/board/davinci/sonata/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/davinci/sonata/CVS/Repository  2009-03-25 15:24:14.681856600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/davinci/sonata
diff -Naur u-boot-2009.03_orig/board/davinci/sonata/CVS/Root u-boot-2009.03/board/davinci/sonata/CVS/Root
--- u-boot-2009.03_orig/board/davinci/sonata/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/davinci/sonata/CVS/Root        2009-03-25 15:24:14.666231800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/dbau1x00/CVS/Entries u-boot-2009.03/board/dbau1x00/CVS/Entries
--- u-boot-2009.03_orig/board/dbau1x00/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/dbau1x00/CVS/Entries   2009-03-25 15:57:17.575167700 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dbau1x00.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/dbau1x00/CVS/Entries.Extra u-boot-2009.03/board/dbau1x00/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/dbau1x00/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/dbau1x00/CVS/Entries.Extra     2009-03-25 15:57:17.590792600 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019691/
+/README///1238019691/
+/config.mk///1238019691/
+/dbau1x00.c///1238019691/
+/flash.c///1238019691/
+/lowlevel_init.S///1238019691/
+/u-boot.lds///1238019691/
diff -Naur u-boot-2009.03_orig/board/dbau1x00/CVS/Entries.Extra.Old u-boot-2009.03/board/dbau1x00/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/dbau1x00/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/dbau1x00/CVS/Entries.Extra.Old 2009-03-25 15:24:14.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019691/
+/README///1238019691/
+/config.mk///1238019691/
+/dbau1x00.c///1238019691/
+/flash.c///1238019691/
+/lowlevel_init.S///1238019691/
+/u-boot.lds///1238019691/
diff -Naur u-boot-2009.03_orig/board/dbau1x00/CVS/Entries.Old u-boot-2009.03/board/dbau1x00/CVS/Entries.Old
--- u-boot-2009.03_orig/board/dbau1x00/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/dbau1x00/CVS/Entries.Old       2009-03-25 15:24:14.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/README/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/dbau1x00.c/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:31 2009//
+D
diff -Naur u-boot-2009.03_orig/board/dbau1x00/CVS/Repository u-boot-2009.03/board/dbau1x00/CVS/Repository
--- u-boot-2009.03_orig/board/dbau1x00/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/dbau1x00/CVS/Repository        2009-03-25 15:24:14.853729400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/dbau1x00
diff -Naur u-boot-2009.03_orig/board/dbau1x00/CVS/Root u-boot-2009.03/board/dbau1x00/CVS/Root
--- u-boot-2009.03_orig/board/dbau1x00/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/dbau1x00/CVS/Root      2009-03-25 15:24:14.853729400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/delta/CVS/Entries u-boot-2009.03/board/delta/CVS/Entries
--- u-boot-2009.03_orig/board/delta/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/delta/CVS/Entries      2009-03-25 15:57:17.653292200 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/delta.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nand.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/delta/CVS/Entries.Extra u-boot-2009.03/board/delta/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/delta/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/delta/CVS/Entries.Extra        2009-03-25 15:57:17.653292200 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019691/
+/config.mk///1238019691/
+/delta.c///1238019691/
+/lowlevel_init.S///1238019691/
+/nand.c///1238019691/
+/u-boot.lds///1238019691/
diff -Naur u-boot-2009.03_orig/board/delta/CVS/Entries.Extra.Old u-boot-2009.03/board/delta/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/delta/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/delta/CVS/Entries.Extra.Old    2009-03-25 15:24:15.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019691/
+/config.mk///1238019691/
+/delta.c///1238019691/
+/lowlevel_init.S///1238019691/
+/nand.c///1238019691/
+/u-boot.lds///1238019691/
diff -Naur u-boot-2009.03_orig/board/delta/CVS/Entries.Old u-boot-2009.03/board/delta/CVS/Entries.Old
--- u-boot-2009.03_orig/board/delta/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/delta/CVS/Entries.Old  2009-03-25 15:24:15.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/delta.c/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/nand.c/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:31 2009//
+D
diff -Naur u-boot-2009.03_orig/board/delta/CVS/Repository u-boot-2009.03/board/delta/CVS/Repository
--- u-boot-2009.03_orig/board/delta/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/delta/CVS/Repository   2009-03-25 15:24:14.994352600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/delta
diff -Naur u-boot-2009.03_orig/board/delta/CVS/Root u-boot-2009.03/board/delta/CVS/Root
--- u-boot-2009.03_orig/board/delta/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/delta/CVS/Root 2009-03-25 15:24:14.994352600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/dnp1110/CVS/Entries u-boot-2009.03/board/dnp1110/CVS/Entries
--- u-boot-2009.03_orig/board/dnp1110/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/dnp1110/CVS/Entries    2009-03-25 15:57:17.715791800 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dnp1110.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/dnp1110/CVS/Entries.Extra u-boot-2009.03/board/dnp1110/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/dnp1110/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/dnp1110/CVS/Entries.Extra      2009-03-25 15:57:17.715791800 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019692/
+/config.mk///1238019691/
+/dnp1110.c///1238019692/
+/flash.c///1238019692/
+/lowlevel_init.S///1238019692/
+/u-boot.lds///1238019692/
diff -Naur u-boot-2009.03_orig/board/dnp1110/CVS/Entries.Extra.Old u-boot-2009.03/board/dnp1110/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/dnp1110/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/dnp1110/CVS/Entries.Extra.Old  2009-03-25 15:24:15.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019692/
+/config.mk///1238019691/
+/dnp1110.c///1238019692/
+/flash.c///1238019692/
+/lowlevel_init.S///1238019692/
+/u-boot.lds///1238019692/
diff -Naur u-boot-2009.03_orig/board/dnp1110/CVS/Entries.Old u-boot-2009.03/board/dnp1110/CVS/Entries.Old
--- u-boot-2009.03_orig/board/dnp1110/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/dnp1110/CVS/Entries.Old        2009-03-25 15:24:15.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:31 2009//
+/dnp1110.c/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:32 2009//
+D
diff -Naur u-boot-2009.03_orig/board/dnp1110/CVS/Repository u-boot-2009.03/board/dnp1110/CVS/Repository
--- u-boot-2009.03_orig/board/dnp1110/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/dnp1110/CVS/Repository 2009-03-25 15:24:15.119351000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/dnp1110
diff -Naur u-boot-2009.03_orig/board/dnp1110/CVS/Root u-boot-2009.03/board/dnp1110/CVS/Root
--- u-boot-2009.03_orig/board/dnp1110/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/dnp1110/CVS/Root       2009-03-25 15:24:15.119351000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/eNET/CVS/Entries u-boot-2009.03/board/eNET/CVS/Entries
--- u-boot-2009.03_orig/board/eNET/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/eNET/CVS/Entries       2009-03-25 15:57:17.793916300 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/eNET.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/eNET_start.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/eNET_start16.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/hardware.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/eNET/CVS/Entries.Extra u-boot-2009.03/board/eNET/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/eNET/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/eNET/CVS/Entries.Extra 2009-03-25 15:57:17.793916300 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019692/
+/config.mk///1238019692/
+/eNET.c///1238019692/
+/eNET_start.S///1238019692/
+/eNET_start16.S///1238019692/
+/hardware.h///1238019692/
+/u-boot.lds///1238019692/
diff -Naur u-boot-2009.03_orig/board/eNET/CVS/Entries.Extra.Old u-boot-2009.03/board/eNET/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/eNET/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/eNET/CVS/Entries.Extra.Old     2009-03-25 15:24:15.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019692/
+/config.mk///1238019692/
+/eNET.c///1238019692/
+/eNET_start.S///1238019692/
+/eNET_start16.S///1238019692/
+/hardware.h///1238019692/
+/u-boot.lds///1238019692/
diff -Naur u-boot-2009.03_orig/board/eNET/CVS/Entries.Old u-boot-2009.03/board/eNET/CVS/Entries.Old
--- u-boot-2009.03_orig/board/eNET/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/eNET/CVS/Entries.Old   2009-03-25 15:24:15.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/eNET.c/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/eNET_start.S/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/eNET_start16.S/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/hardware.h/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:32 2009//
+D
diff -Naur u-boot-2009.03_orig/board/eNET/CVS/Repository u-boot-2009.03/board/eNET/CVS/Repository
--- u-boot-2009.03_orig/board/eNET/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/eNET/CVS/Repository    2009-03-25 15:24:15.322473400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/eNET
diff -Naur u-boot-2009.03_orig/board/eNET/CVS/Root u-boot-2009.03/board/eNET/CVS/Root
--- u-boot-2009.03_orig/board/eNET/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/eNET/CVS/Root  2009-03-25 15:24:15.322473400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/eXalion/CVS/Entries u-boot-2009.03/board/eXalion/CVS/Entries
--- u-boot-2009.03_orig/board/eXalion/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/eXalion/CVS/Entries    2009-03-25 15:57:17.856415900 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/eXalion.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/eXalion.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/piix_pci.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/eXalion/CVS/Entries.Extra u-boot-2009.03/board/eXalion/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/eXalion/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/eXalion/CVS/Entries.Extra      2009-03-25 15:57:17.856415900 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019695/
+/config.mk///1238019695/
+/eXalion.c///1238019695/
+/eXalion.h///1238019695/
+/piix_pci.h///1238019695/
diff -Naur u-boot-2009.03_orig/board/eXalion/CVS/Entries.Extra.Old u-boot-2009.03/board/eXalion/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/eXalion/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/eXalion/CVS/Entries.Extra.Old  2009-03-25 15:24:15.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019695/
+/config.mk///1238019695/
+/eXalion.c///1238019695/
+/eXalion.h///1238019695/
+/piix_pci.h///1238019695/
diff -Naur u-boot-2009.03_orig/board/eXalion/CVS/Entries.Old u-boot-2009.03/board/eXalion/CVS/Entries.Old
--- u-boot-2009.03_orig/board/eXalion/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/eXalion/CVS/Entries.Old        2009-03-25 15:24:15.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/eXalion.c/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/eXalion.h/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/piix_pci.h/1.1.1.1/Wed Mar 25 22:21:35 2009//
+D
diff -Naur u-boot-2009.03_orig/board/eXalion/CVS/Repository u-boot-2009.03/board/eXalion/CVS/Repository
--- u-boot-2009.03_orig/board/eXalion/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/eXalion/CVS/Repository 2009-03-25 15:24:15.634969400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/eXalion
diff -Naur u-boot-2009.03_orig/board/eXalion/CVS/Root u-boot-2009.03/board/eXalion/CVS/Root
--- u-boot-2009.03_orig/board/eXalion/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/eXalion/CVS/Root       2009-03-25 15:24:15.634969400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/earthlcd/CVS/Entries u-boot-2009.03/board/earthlcd/CVS/Entries
--- u-boot-2009.03_orig/board/earthlcd/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/earthlcd/CVS/Entries   2009-03-25 15:24:15.869341400 -0700
@@ -0,0 +1 @@
+D/favr-32-ezkit////
diff -Naur u-boot-2009.03_orig/board/earthlcd/CVS/Entries.Extra u-boot-2009.03/board/earthlcd/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/earthlcd/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/earthlcd/CVS/Entries.Extra     2009-03-25 15:24:15.869341400 -0700
@@ -0,0 +1 @@
+D/favr-32-ezkit////
diff -Naur u-boot-2009.03_orig/board/earthlcd/CVS/Repository u-boot-2009.03/board/earthlcd/CVS/Repository
--- u-boot-2009.03_orig/board/earthlcd/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/earthlcd/CVS/Repository        2009-03-25 15:24:15.744343000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/earthlcd
diff -Naur u-boot-2009.03_orig/board/earthlcd/CVS/Root u-boot-2009.03/board/earthlcd/CVS/Root
--- u-boot-2009.03_orig/board/earthlcd/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/earthlcd/CVS/Root      2009-03-25 15:24:15.744343000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/earthlcd/favr-32-ezkit/CVS/Entries u-boot-2009.03/board/earthlcd/favr-32-ezkit/CVS/Entries
--- u-boot-2009.03_orig/board/earthlcd/favr-32-ezkit/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/earthlcd/favr-32-ezkit/CVS/Entries     2009-03-25 15:57:17.934540400 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/favr-32-ezkit.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/earthlcd/favr-32-ezkit/CVS/Entries.Extra u-boot-2009.03/board/earthlcd/favr-32-ezkit/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/earthlcd/favr-32-ezkit/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/earthlcd/favr-32-ezkit/CVS/Entries.Extra       2009-03-25 15:57:17.934540400 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019692/
+/config.mk///1238019692/
+/favr-32-ezkit.c///1238019692/
+/flash.c///1238019692/
+/u-boot.lds///1238019692/
diff -Naur u-boot-2009.03_orig/board/earthlcd/favr-32-ezkit/CVS/Entries.Extra.Old u-boot-2009.03/board/earthlcd/favr-32-ezkit/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/earthlcd/favr-32-ezkit/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/earthlcd/favr-32-ezkit/CVS/Entries.Extra.Old   2009-03-25 15:24:15.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019692/
+/config.mk///1238019692/
+/favr-32-ezkit.c///1238019692/
+/flash.c///1238019692/
+/u-boot.lds///1238019692/
diff -Naur u-boot-2009.03_orig/board/earthlcd/favr-32-ezkit/CVS/Entries.Old u-boot-2009.03/board/earthlcd/favr-32-ezkit/CVS/Entries.Old
--- u-boot-2009.03_orig/board/earthlcd/favr-32-ezkit/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/earthlcd/favr-32-ezkit/CVS/Entries.Old 2009-03-25 15:24:15.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/favr-32-ezkit.c/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:32 2009//
+D
diff -Naur u-boot-2009.03_orig/board/earthlcd/favr-32-ezkit/CVS/Repository u-boot-2009.03/board/earthlcd/favr-32-ezkit/CVS/Repository
--- u-boot-2009.03_orig/board/earthlcd/favr-32-ezkit/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/earthlcd/favr-32-ezkit/CVS/Repository  2009-03-25 15:24:15.775592600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/earthlcd/favr-32-ezkit
diff -Naur u-boot-2009.03_orig/board/earthlcd/favr-32-ezkit/CVS/Root u-boot-2009.03/board/earthlcd/favr-32-ezkit/CVS/Root
--- u-boot-2009.03_orig/board/earthlcd/favr-32-ezkit/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/earthlcd/favr-32-ezkit/CVS/Root        2009-03-25 15:24:15.759967800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/eltec/CVS/Entries u-boot-2009.03/board/eltec/CVS/Entries
--- u-boot-2009.03_orig/board/eltec/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/eltec/CVS/Entries      2009-03-25 15:24:16.572457400 -0700
@@ -0,0 +1,3 @@
+D/bab7xx////
+D/elppc////
+D/mhpc////
diff -Naur u-boot-2009.03_orig/board/eltec/CVS/Entries.Extra u-boot-2009.03/board/eltec/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/eltec/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/eltec/CVS/Entries.Extra        2009-03-25 15:24:16.588082200 -0700
@@ -0,0 +1,3 @@
+D/bab7xx////
+D/elppc////
+D/mhpc////
diff -Naur u-boot-2009.03_orig/board/eltec/CVS/Repository u-boot-2009.03/board/eltec/CVS/Repository
--- u-boot-2009.03_orig/board/eltec/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/eltec/CVS/Repository   2009-03-25 15:24:15.900591000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/eltec
diff -Naur u-boot-2009.03_orig/board/eltec/CVS/Root u-boot-2009.03/board/eltec/CVS/Root
--- u-boot-2009.03_orig/board/eltec/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/eltec/CVS/Root 2009-03-25 15:24:15.900591000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/eltec/bab7xx/CVS/Entries u-boot-2009.03/board/eltec/bab7xx/CVS/Entries
--- u-boot-2009.03_orig/board/eltec/bab7xx/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/eltec/bab7xx/CVS/Entries       2009-03-25 15:57:18.043914700 -0700
@@ -0,0 +1,13 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/asm_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bab7xx.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dc_srom.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/el_srom.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/l2cache.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/misc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/srom.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/eltec/bab7xx/CVS/Entries.Extra u-boot-2009.03/board/eltec/bab7xx/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/eltec/bab7xx/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/eltec/bab7xx/CVS/Entries.Extra 2009-03-25 15:57:18.043914700 -0700
@@ -0,0 +1,12 @@
+/Makefile///1238019692/
+/asm_init.S///1238019692/
+/bab7xx.c///1238019692/
+/config.mk///1238019692/
+/dc_srom.c///1238019692/
+/el_srom.c///1238019692/
+/flash.c///1238019692/
+/l2cache.c///1238019692/
+/misc.c///1238019692/
+/pci.c///1238019692/
+/srom.h///1238019692/
+/u-boot.lds///1238019692/
diff -Naur u-boot-2009.03_orig/board/eltec/bab7xx/CVS/Entries.Extra.Old u-boot-2009.03/board/eltec/bab7xx/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/eltec/bab7xx/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/eltec/bab7xx/CVS/Entries.Extra.Old     2009-03-25 15:24:16.000000000 -0700
@@ -0,0 +1,12 @@
+/Makefile///1238019692/
+/asm_init.S///1238019692/
+/bab7xx.c///1238019692/
+/config.mk///1238019692/
+/dc_srom.c///1238019692/
+/el_srom.c///1238019692/
+/flash.c///1238019692/
+/l2cache.c///1238019692/
+/misc.c///1238019692/
+/pci.c///1238019692/
+/srom.h///1238019692/
+/u-boot.lds///1238019692/
diff -Naur u-boot-2009.03_orig/board/eltec/bab7xx/CVS/Entries.Old u-boot-2009.03/board/eltec/bab7xx/CVS/Entries.Old
--- u-boot-2009.03_orig/board/eltec/bab7xx/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/eltec/bab7xx/CVS/Entries.Old   2009-03-25 15:24:16.000000000 -0700
@@ -0,0 +1,13 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/asm_init.S/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/bab7xx.c/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/dc_srom.c/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/el_srom.c/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/l2cache.c/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/misc.c/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/pci.c/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/srom.h/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:32 2009//
+D
diff -Naur u-boot-2009.03_orig/board/eltec/bab7xx/CVS/Repository u-boot-2009.03/board/eltec/bab7xx/CVS/Repository
--- u-boot-2009.03_orig/board/eltec/bab7xx/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/eltec/bab7xx/CVS/Repository    2009-03-25 15:24:15.931840600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/eltec/bab7xx
diff -Naur u-boot-2009.03_orig/board/eltec/bab7xx/CVS/Root u-boot-2009.03/board/eltec/bab7xx/CVS/Root
--- u-boot-2009.03_orig/board/eltec/bab7xx/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/eltec/bab7xx/CVS/Root  2009-03-25 15:24:15.916215800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/eltec/elppc/CVS/Entries u-boot-2009.03/board/eltec/elppc/CVS/Entries
--- u-boot-2009.03_orig/board/eltec/elppc/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/eltec/elppc/CVS/Entries        2009-03-25 15:57:18.200163700 -0700
@@ -0,0 +1,12 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/asm_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/eepro100_srom.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/elppc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/misc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc107_i2c.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/srom.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/eltec/elppc/CVS/Entries.Extra u-boot-2009.03/board/eltec/elppc/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/eltec/elppc/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/eltec/elppc/CVS/Entries.Extra  2009-03-25 15:57:18.200163700 -0700
@@ -0,0 +1,11 @@
+/Makefile///1238019692/
+/asm_init.S///1238019692/
+/config.mk///1238019692/
+/eepro100_srom.c///1238019692/
+/elppc.c///1238019692/
+/flash.c///1238019692/
+/misc.c///1238019692/
+/mpc107_i2c.c///1238019692/
+/pci.c///1238019692/
+/srom.h///1238019692/
+/u-boot.lds///1238019692/
diff -Naur u-boot-2009.03_orig/board/eltec/elppc/CVS/Entries.Extra.Old u-boot-2009.03/board/eltec/elppc/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/eltec/elppc/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/eltec/elppc/CVS/Entries.Extra.Old      2009-03-25 15:24:16.000000000 -0700
@@ -0,0 +1,11 @@
+/Makefile///1238019692/
+/asm_init.S///1238019692/
+/config.mk///1238019692/
+/eepro100_srom.c///1238019692/
+/elppc.c///1238019692/
+/flash.c///1238019692/
+/misc.c///1238019692/
+/mpc107_i2c.c///1238019692/
+/pci.c///1238019692/
+/srom.h///1238019692/
+/u-boot.lds///1238019692/
diff -Naur u-boot-2009.03_orig/board/eltec/elppc/CVS/Entries.Old u-boot-2009.03/board/eltec/elppc/CVS/Entries.Old
--- u-boot-2009.03_orig/board/eltec/elppc/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/eltec/elppc/CVS/Entries.Old    2009-03-25 15:24:16.000000000 -0700
@@ -0,0 +1,12 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/asm_init.S/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/eepro100_srom.c/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/elppc.c/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/misc.c/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/mpc107_i2c.c/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/pci.c/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/srom.h/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:32 2009//
+D
diff -Naur u-boot-2009.03_orig/board/eltec/elppc/CVS/Repository u-boot-2009.03/board/eltec/elppc/CVS/Repository
--- u-boot-2009.03_orig/board/eltec/elppc/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/eltec/elppc/CVS/Repository     2009-03-25 15:24:16.103713400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/eltec/elppc
diff -Naur u-boot-2009.03_orig/board/eltec/elppc/CVS/Root u-boot-2009.03/board/eltec/elppc/CVS/Root
--- u-boot-2009.03_orig/board/eltec/elppc/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/eltec/elppc/CVS/Root   2009-03-25 15:24:16.103713400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/eltec/mhpc/CVS/Entries u-boot-2009.03/board/eltec/mhpc/CVS/Entries
--- u-boot-2009.03_orig/board/eltec/mhpc/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/eltec/mhpc/CVS/Entries 2009-03-25 15:57:18.278288200 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mhpc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.debug/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/eltec/mhpc/CVS/Entries.Extra u-boot-2009.03/board/eltec/mhpc/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/eltec/mhpc/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/eltec/mhpc/CVS/Entries.Extra   2009-03-25 15:57:18.278288200 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019692/
+/config.mk///1238019692/
+/flash.c///1238019692/
+/mhpc.c///1238019692/
+/u-boot.lds///1238019692/
+/u-boot.lds.debug///1238019692/
diff -Naur u-boot-2009.03_orig/board/eltec/mhpc/CVS/Entries.Extra.Old u-boot-2009.03/board/eltec/mhpc/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/eltec/mhpc/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/eltec/mhpc/CVS/Entries.Extra.Old       2009-03-25 15:24:16.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019692/
+/config.mk///1238019692/
+/flash.c///1238019692/
+/mhpc.c///1238019692/
+/u-boot.lds///1238019692/
+/u-boot.lds.debug///1238019692/
diff -Naur u-boot-2009.03_orig/board/eltec/mhpc/CVS/Entries.Old u-boot-2009.03/board/eltec/mhpc/CVS/Entries.Old
--- u-boot-2009.03_orig/board/eltec/mhpc/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/eltec/mhpc/CVS/Entries.Old     2009-03-25 15:24:16.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/mhpc.c/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/u-boot.lds.debug/1.1.1.1/Wed Mar 25 22:21:32 2009//
+D
diff -Naur u-boot-2009.03_orig/board/eltec/mhpc/CVS/Repository u-boot-2009.03/board/eltec/mhpc/CVS/Repository
--- u-boot-2009.03_orig/board/eltec/mhpc/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/eltec/mhpc/CVS/Repository      2009-03-25 15:24:16.275586200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/eltec/mhpc
diff -Naur u-boot-2009.03_orig/board/eltec/mhpc/CVS/Root u-boot-2009.03/board/eltec/mhpc/CVS/Root
--- u-boot-2009.03_orig/board/eltec/mhpc/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/eltec/mhpc/CVS/Root    2009-03-25 15:24:16.275586200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/emk/CVS/Entries u-boot-2009.03/board/emk/CVS/Entries
--- u-boot-2009.03_orig/board/emk/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/emk/CVS/Entries        2009-03-25 15:24:17.041201400 -0700
@@ -0,0 +1,3 @@
+D/common////
+D/top5200////
+D/top860////
diff -Naur u-boot-2009.03_orig/board/emk/CVS/Entries.Extra u-boot-2009.03/board/emk/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/emk/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/emk/CVS/Entries.Extra  2009-03-25 15:24:17.041201400 -0700
@@ -0,0 +1,3 @@
+D/common////
+D/top5200////
+D/top860////
diff -Naur u-boot-2009.03_orig/board/emk/CVS/Repository u-boot-2009.03/board/emk/CVS/Repository
--- u-boot-2009.03_orig/board/emk/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/emk/CVS/Repository     2009-03-25 15:24:16.713080600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/emk
diff -Naur u-boot-2009.03_orig/board/emk/CVS/Root u-boot-2009.03/board/emk/CVS/Root
--- u-boot-2009.03_orig/board/emk/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/emk/CVS/Root   2009-03-25 15:24:16.713080600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/emk/common/CVS/Entries u-boot-2009.03/board/emk/common/CVS/Entries
--- u-boot-2009.03_orig/board/emk/common/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/emk/common/CVS/Entries 2009-03-25 15:57:18.340787800 -0700
@@ -0,0 +1,4 @@
+/am79c874.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/vpd.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/emk/common/CVS/Entries.Extra u-boot-2009.03/board/emk/common/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/emk/common/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/emk/common/CVS/Entries.Extra   2009-03-25 15:57:18.356412700 -0700
@@ -0,0 +1,3 @@
+/am79c874.c///1238019692/
+/flash.c///1238019692/
+/vpd.c///1238019692/
diff -Naur u-boot-2009.03_orig/board/emk/common/CVS/Entries.Extra.Old u-boot-2009.03/board/emk/common/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/emk/common/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/emk/common/CVS/Entries.Extra.Old       2009-03-25 15:24:16.000000000 -0700
@@ -0,0 +1,3 @@
+/am79c874.c///1238019692/
+/flash.c///1238019692/
+/vpd.c///1238019692/
diff -Naur u-boot-2009.03_orig/board/emk/common/CVS/Entries.Old u-boot-2009.03/board/emk/common/CVS/Entries.Old
--- u-boot-2009.03_orig/board/emk/common/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/emk/common/CVS/Entries.Old     2009-03-25 15:24:16.000000000 -0700
@@ -0,0 +1,4 @@
+/am79c874.c/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/vpd.c/1.1.1.1/Wed Mar 25 22:21:32 2009//
+D
diff -Naur u-boot-2009.03_orig/board/emk/common/CVS/Repository u-boot-2009.03/board/emk/common/CVS/Repository
--- u-boot-2009.03_orig/board/emk/common/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/emk/common/CVS/Repository      2009-03-25 15:24:16.744330200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/emk/common
diff -Naur u-boot-2009.03_orig/board/emk/common/CVS/Root u-boot-2009.03/board/emk/common/CVS/Root
--- u-boot-2009.03_orig/board/emk/common/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/emk/common/CVS/Root    2009-03-25 15:24:16.744330200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/emk/top5200/CVS/Entries u-boot-2009.03/board/emk/top5200/CVS/Entries
--- u-boot-2009.03_orig/board/emk/top5200/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/emk/top5200/CVS/Entries        2009-03-25 15:57:18.403287400 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/top5200.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/emk/top5200/CVS/Entries.Extra u-boot-2009.03/board/emk/top5200/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/emk/top5200/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/emk/top5200/CVS/Entries.Extra  2009-03-25 15:57:18.418912300 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019692/
+/config.mk///1238019692/
+/top5200.c///1238019692/
diff -Naur u-boot-2009.03_orig/board/emk/top5200/CVS/Entries.Extra.Old u-boot-2009.03/board/emk/top5200/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/emk/top5200/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/emk/top5200/CVS/Entries.Extra.Old      2009-03-25 15:24:16.000000000 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019692/
+/config.mk///1238019692/
+/top5200.c///1238019692/
diff -Naur u-boot-2009.03_orig/board/emk/top5200/CVS/Entries.Old u-boot-2009.03/board/emk/top5200/CVS/Entries.Old
--- u-boot-2009.03_orig/board/emk/top5200/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/emk/top5200/CVS/Entries.Old    2009-03-25 15:24:16.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/top5200.c/1.1.1.1/Wed Mar 25 22:21:32 2009//
+D
diff -Naur u-boot-2009.03_orig/board/emk/top5200/CVS/Repository u-boot-2009.03/board/emk/top5200/CVS/Repository
--- u-boot-2009.03_orig/board/emk/top5200/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/emk/top5200/CVS/Repository     2009-03-25 15:24:16.822454200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/emk/top5200
diff -Naur u-boot-2009.03_orig/board/emk/top5200/CVS/Root u-boot-2009.03/board/emk/top5200/CVS/Root
--- u-boot-2009.03_orig/board/emk/top5200/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/emk/top5200/CVS/Root   2009-03-25 15:24:16.822454200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/emk/top860/CVS/Entries u-boot-2009.03/board/emk/top860/CVS/Entries
--- u-boot-2009.03_orig/board/emk/top860/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/emk/top860/CVS/Entries 2009-03-25 15:57:18.465787000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/top860.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.debug/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/emk/top860/CVS/Entries.Extra u-boot-2009.03/board/emk/top860/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/emk/top860/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/emk/top860/CVS/Entries.Extra   2009-03-25 15:57:18.465787000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019692/
+/config.mk///1238019692/
+/top860.c///1238019692/
+/u-boot.lds///1238019692/
+/u-boot.lds.debug///1238019692/
diff -Naur u-boot-2009.03_orig/board/emk/top860/CVS/Entries.Extra.Old u-boot-2009.03/board/emk/top860/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/emk/top860/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/emk/top860/CVS/Entries.Extra.Old       2009-03-25 15:24:16.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019692/
+/config.mk///1238019692/
+/top860.c///1238019692/
+/u-boot.lds///1238019692/
+/u-boot.lds.debug///1238019692/
diff -Naur u-boot-2009.03_orig/board/emk/top860/CVS/Entries.Old u-boot-2009.03/board/emk/top860/CVS/Entries.Old
--- u-boot-2009.03_orig/board/emk/top860/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/emk/top860/CVS/Entries.Old     2009-03-25 15:24:16.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/top860.c/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/u-boot.lds.debug/1.1.1.1/Wed Mar 25 22:21:32 2009//
+D
diff -Naur u-boot-2009.03_orig/board/emk/top860/CVS/Repository u-boot-2009.03/board/emk/top860/CVS/Repository
--- u-boot-2009.03_orig/board/emk/top860/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/emk/top860/CVS/Repository      2009-03-25 15:24:16.916203000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/emk/top860
diff -Naur u-boot-2009.03_orig/board/emk/top860/CVS/Root u-boot-2009.03/board/emk/top860/CVS/Root
--- u-boot-2009.03_orig/board/emk/top860/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/emk/top860/CVS/Root    2009-03-25 15:24:16.916203000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/ep7312/CVS/Entries u-boot-2009.03/board/ep7312/CVS/Entries
--- u-boot-2009.03_orig/board/ep7312/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ep7312/CVS/Entries     2009-03-25 15:57:18.528286600 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ep7312.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/ep7312/CVS/Entries.Extra u-boot-2009.03/board/ep7312/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/ep7312/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ep7312/CVS/Entries.Extra       2009-03-25 15:57:18.543911500 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019692/
+/config.mk///1238019692/
+/ep7312.c///1238019692/
+/flash.c///1238019692/
+/lowlevel_init.S///1238019692/
+/u-boot.lds///1238019692/
diff -Naur u-boot-2009.03_orig/board/ep7312/CVS/Entries.Extra.Old u-boot-2009.03/board/ep7312/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/ep7312/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ep7312/CVS/Entries.Extra.Old   2009-03-25 15:24:17.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019692/
+/config.mk///1238019692/
+/ep7312.c///1238019692/
+/flash.c///1238019692/
+/lowlevel_init.S///1238019692/
+/u-boot.lds///1238019692/
diff -Naur u-boot-2009.03_orig/board/ep7312/CVS/Entries.Old u-boot-2009.03/board/ep7312/CVS/Entries.Old
--- u-boot-2009.03_orig/board/ep7312/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ep7312/CVS/Entries.Old 2009-03-25 15:24:17.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/ep7312.c/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:32 2009//
+D
diff -Naur u-boot-2009.03_orig/board/ep7312/CVS/Repository u-boot-2009.03/board/ep7312/CVS/Repository
--- u-boot-2009.03_orig/board/ep7312/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ep7312/CVS/Repository  2009-03-25 15:24:17.088075800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/ep7312
diff -Naur u-boot-2009.03_orig/board/ep7312/CVS/Root u-boot-2009.03/board/ep7312/CVS/Root
--- u-boot-2009.03_orig/board/ep7312/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ep7312/CVS/Root        2009-03-25 15:24:17.088075800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/ep8248/CVS/Entries u-boot-2009.03/board/ep8248/CVS/Entries
--- u-boot-2009.03_orig/board/ep8248/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ep8248/CVS/Entries     2009-03-25 15:57:18.590786200 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ep8248.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/ep8248/CVS/Entries.Extra u-boot-2009.03/board/ep8248/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/ep8248/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ep8248/CVS/Entries.Extra       2009-03-25 15:57:18.590786200 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019692/
+/config.mk///1238019692/
+/ep8248.c///1238019692/
diff -Naur u-boot-2009.03_orig/board/ep8248/CVS/Entries.Extra.Old u-boot-2009.03/board/ep8248/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/ep8248/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ep8248/CVS/Entries.Extra.Old   2009-03-25 15:24:17.000000000 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019692/
+/config.mk///1238019692/
+/ep8248.c///1238019692/
diff -Naur u-boot-2009.03_orig/board/ep8248/CVS/Entries.Old u-boot-2009.03/board/ep8248/CVS/Entries.Old
--- u-boot-2009.03_orig/board/ep8248/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ep8248/CVS/Entries.Old 2009-03-25 15:24:17.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/ep8248.c/1.1.1.1/Wed Mar 25 22:21:32 2009//
+D
diff -Naur u-boot-2009.03_orig/board/ep8248/CVS/Repository u-boot-2009.03/board/ep8248/CVS/Repository
--- u-boot-2009.03_orig/board/ep8248/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ep8248/CVS/Repository  2009-03-25 15:24:17.213074200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/ep8248
diff -Naur u-boot-2009.03_orig/board/ep8248/CVS/Root u-boot-2009.03/board/ep8248/CVS/Root
--- u-boot-2009.03_orig/board/ep8248/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ep8248/CVS/Root        2009-03-25 15:24:17.213074200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/ep8260/CVS/Entries u-boot-2009.03/board/ep8260/CVS/Entries
--- u-boot-2009.03_orig/board/ep8260/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ep8260/CVS/Entries     2009-03-25 15:57:18.668910700 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ep8260.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ep8260.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mii_phy.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/ep8260/CVS/Entries.Extra u-boot-2009.03/board/ep8260/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/ep8260/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ep8260/CVS/Entries.Extra       2009-03-25 15:57:18.668910700 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019692/
+/config.mk///1238019692/
+/ep8260.c///1238019692/
+/ep8260.h///1238019692/
+/flash.c///1238019692/
+/mii_phy.c///1238019692/
diff -Naur u-boot-2009.03_orig/board/ep8260/CVS/Entries.Extra.Old u-boot-2009.03/board/ep8260/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/ep8260/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ep8260/CVS/Entries.Extra.Old   2009-03-25 15:24:17.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019692/
+/config.mk///1238019692/
+/ep8260.c///1238019692/
+/ep8260.h///1238019692/
+/flash.c///1238019692/
+/mii_phy.c///1238019692/
diff -Naur u-boot-2009.03_orig/board/ep8260/CVS/Entries.Old u-boot-2009.03/board/ep8260/CVS/Entries.Old
--- u-boot-2009.03_orig/board/ep8260/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ep8260/CVS/Entries.Old 2009-03-25 15:24:17.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/ep8260.c/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/ep8260.h/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/mii_phy.c/1.1.1.1/Wed Mar 25 22:21:32 2009//
+D
diff -Naur u-boot-2009.03_orig/board/ep8260/CVS/Repository u-boot-2009.03/board/ep8260/CVS/Repository
--- u-boot-2009.03_orig/board/ep8260/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ep8260/CVS/Repository  2009-03-25 15:24:17.306823000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/ep8260
diff -Naur u-boot-2009.03_orig/board/ep8260/CVS/Root u-boot-2009.03/board/ep8260/CVS/Root
--- u-boot-2009.03_orig/board/ep8260/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ep8260/CVS/Root        2009-03-25 15:24:17.306823000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/ep82xxm/CVS/Entries u-boot-2009.03/board/ep82xxm/CVS/Entries
--- u-boot-2009.03_orig/board/ep82xxm/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ep82xxm/CVS/Entries    2009-03-25 15:57:18.731410300 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ep82xxm.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/ep82xxm/CVS/Entries.Extra u-boot-2009.03/board/ep82xxm/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/ep82xxm/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ep82xxm/CVS/Entries.Extra      2009-03-25 15:57:18.747035200 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019692/
+/config.mk///1238019692/
+/ep82xxm.c///1238019692/
diff -Naur u-boot-2009.03_orig/board/ep82xxm/CVS/Entries.Extra.Old u-boot-2009.03/board/ep82xxm/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/ep82xxm/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ep82xxm/CVS/Entries.Extra.Old  2009-03-25 15:24:17.000000000 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019692/
+/config.mk///1238019692/
+/ep82xxm.c///1238019692/
diff -Naur u-boot-2009.03_orig/board/ep82xxm/CVS/Entries.Old u-boot-2009.03/board/ep82xxm/CVS/Entries.Old
--- u-boot-2009.03_orig/board/ep82xxm/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ep82xxm/CVS/Entries.Old        2009-03-25 15:24:17.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/ep82xxm.c/1.1.1.1/Wed Mar 25 22:21:32 2009//
+D
diff -Naur u-boot-2009.03_orig/board/ep82xxm/CVS/Repository u-boot-2009.03/board/ep82xxm/CVS/Repository
--- u-boot-2009.03_orig/board/ep82xxm/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ep82xxm/CVS/Repository 2009-03-25 15:24:17.603694200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/ep82xxm
diff -Naur u-boot-2009.03_orig/board/ep82xxm/CVS/Root u-boot-2009.03/board/ep82xxm/CVS/Root
--- u-boot-2009.03_orig/board/ep82xxm/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ep82xxm/CVS/Root       2009-03-25 15:24:17.603694200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/ep88x/CVS/Entries u-boot-2009.03/board/ep88x/CVS/Entries
--- u-boot-2009.03_orig/board/ep88x/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ep88x/CVS/Entries      2009-03-25 15:57:18.809534800 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ep88x.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/ep88x/CVS/Entries.Extra u-boot-2009.03/board/ep88x/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/ep88x/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ep88x/CVS/Entries.Extra        2009-03-25 15:57:18.809534800 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019692/
+/config.mk///1238019692/
+/ep88x.c///1238019692/
+/u-boot.lds///1238019692/
diff -Naur u-boot-2009.03_orig/board/ep88x/CVS/Entries.Extra.Old u-boot-2009.03/board/ep88x/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/ep88x/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ep88x/CVS/Entries.Extra.Old    2009-03-25 15:24:17.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019692/
+/config.mk///1238019692/
+/ep88x.c///1238019692/
+/u-boot.lds///1238019692/
diff -Naur u-boot-2009.03_orig/board/ep88x/CVS/Entries.Old u-boot-2009.03/board/ep88x/CVS/Entries.Old
--- u-boot-2009.03_orig/board/ep88x/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ep88x/CVS/Entries.Old  2009-03-25 15:24:17.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/ep88x.c/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:32 2009//
+D
diff -Naur u-boot-2009.03_orig/board/ep88x/CVS/Repository u-boot-2009.03/board/ep88x/CVS/Repository
--- u-boot-2009.03_orig/board/ep88x/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ep88x/CVS/Repository   2009-03-25 15:24:17.681818200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/ep88x
diff -Naur u-boot-2009.03_orig/board/ep88x/CVS/Root u-boot-2009.03/board/ep88x/CVS/Root
--- u-boot-2009.03_orig/board/ep88x/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ep88x/CVS/Root 2009-03-25 15:24:17.681818200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/eric/CVS/Entries u-boot-2009.03/board/eric/CVS/Entries
--- u-boot-2009.03_orig/board/eric/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/eric/CVS/Entries       2009-03-25 15:57:18.887659300 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/eric.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/eric.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/eric/CVS/Entries.Extra u-boot-2009.03/board/eric/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/eric/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/eric/CVS/Entries.Extra 2009-03-25 15:57:18.887659300 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019692/
+/config.mk///1238019692/
+/eric.c///1238019692/
+/eric.h///1238019692/
+/flash.c///1238019692/
+/init.S///1238019692/
+/u-boot.lds///1238019692/
diff -Naur u-boot-2009.03_orig/board/eric/CVS/Entries.Extra.Old u-boot-2009.03/board/eric/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/eric/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/eric/CVS/Entries.Extra.Old     2009-03-25 15:24:17.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019692/
+/config.mk///1238019692/
+/eric.c///1238019692/
+/eric.h///1238019692/
+/flash.c///1238019692/
+/init.S///1238019692/
+/u-boot.lds///1238019692/
diff -Naur u-boot-2009.03_orig/board/eric/CVS/Entries.Old u-boot-2009.03/board/eric/CVS/Entries.Old
--- u-boot-2009.03_orig/board/eric/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/eric/CVS/Entries.Old   2009-03-25 15:24:17.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/eric.c/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/eric.h/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/init.S/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:32 2009//
+D
diff -Naur u-boot-2009.03_orig/board/eric/CVS/Repository u-boot-2009.03/board/eric/CVS/Repository
--- u-boot-2009.03_orig/board/eric/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/eric/CVS/Repository    2009-03-25 15:24:17.775567000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/eric
diff -Naur u-boot-2009.03_orig/board/eric/CVS/Root u-boot-2009.03/board/eric/CVS/Root
--- u-boot-2009.03_orig/board/eric/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/eric/CVS/Root  2009-03-25 15:24:17.775567000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/esd/CVS/Entries u-boot-2009.03/board/esd/CVS/Entries
--- u-boot-2009.03_orig/board/esd/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/CVS/Entries        2009-03-25 15:24:23.025499800 -0700
@@ -0,0 +1,29 @@
+D/adciop////
+D/apc405////
+D/ar405////
+D/ash405////
+D/canbt////
+D/cms700////
+D/common////
+D/cpci2dp////
+D/cpci405////
+D/cpci5200////
+D/cpci750////
+D/cpciiser4////
+D/dasa_sim////
+D/dp405////
+D/du405////
+D/du440////
+D/hh405////
+D/hub405////
+D/mecp5200////
+D/ocrtc////
+D/pci405////
+D/pf5200////
+D/plu405////
+D/pmc405////
+D/pmc440////
+D/tasreg////
+D/voh405////
+D/vom405////
+D/wuh405////
diff -Naur u-boot-2009.03_orig/board/esd/CVS/Entries.Extra u-boot-2009.03/board/esd/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/esd/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/CVS/Entries.Extra  2009-03-25 15:24:23.025499800 -0700
@@ -0,0 +1,29 @@
+D/adciop////
+D/apc405////
+D/ar405////
+D/ash405////
+D/canbt////
+D/cms700////
+D/common////
+D/cpci2dp////
+D/cpci405////
+D/cpci5200////
+D/cpci750////
+D/cpciiser4////
+D/dasa_sim////
+D/dp405////
+D/du405////
+D/du440////
+D/hh405////
+D/hub405////
+D/mecp5200////
+D/ocrtc////
+D/pci405////
+D/pf5200////
+D/plu405////
+D/pmc405////
+D/pmc440////
+D/tasreg////
+D/voh405////
+D/vom405////
+D/wuh405////
diff -Naur u-boot-2009.03_orig/board/esd/CVS/Repository u-boot-2009.03/board/esd/CVS/Repository
--- u-boot-2009.03_orig/board/esd/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/CVS/Repository     2009-03-25 15:24:17.931815000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/esd
diff -Naur u-boot-2009.03_orig/board/esd/CVS/Root u-boot-2009.03/board/esd/CVS/Root
--- u-boot-2009.03_orig/board/esd/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/CVS/Root   2009-03-25 15:24:17.931815000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/esd/adciop/CVS/Entries u-boot-2009.03/board/esd/adciop/CVS/Entries
--- u-boot-2009.03_orig/board/esd/adciop/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/adciop/CVS/Entries 2009-03-25 15:57:18.981408700 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/adciop.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/adciop.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/adciop/CVS/Entries.Extra u-boot-2009.03/board/esd/adciop/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/esd/adciop/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/adciop/CVS/Entries.Extra   2009-03-25 15:57:18.981408700 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019692/
+/adciop.c///1238019692/
+/adciop.h///1238019692/
+/config.mk///1238019692/
+/flash.c///1238019692/
+/u-boot.lds///1238019692/
diff -Naur u-boot-2009.03_orig/board/esd/adciop/CVS/Entries.Extra.Old u-boot-2009.03/board/esd/adciop/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/esd/adciop/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/adciop/CVS/Entries.Extra.Old       2009-03-25 15:24:18.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019692/
+/adciop.c///1238019692/
+/adciop.h///1238019692/
+/config.mk///1238019692/
+/flash.c///1238019692/
+/u-boot.lds///1238019692/
diff -Naur u-boot-2009.03_orig/board/esd/adciop/CVS/Entries.Old u-boot-2009.03/board/esd/adciop/CVS/Entries.Old
--- u-boot-2009.03_orig/board/esd/adciop/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/adciop/CVS/Entries.Old     2009-03-25 15:24:18.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/adciop.c/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/adciop.h/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:32 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/adciop/CVS/Repository u-boot-2009.03/board/esd/adciop/CVS/Repository
--- u-boot-2009.03_orig/board/esd/adciop/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/adciop/CVS/Repository      2009-03-25 15:24:17.947439800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/esd/adciop
diff -Naur u-boot-2009.03_orig/board/esd/adciop/CVS/Root u-boot-2009.03/board/esd/adciop/CVS/Root
--- u-boot-2009.03_orig/board/esd/adciop/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/adciop/CVS/Root    2009-03-25 15:24:17.947439800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/esd/apc405/CVS/Entries u-boot-2009.03/board/esd/apc405/CVS/Entries
--- u-boot-2009.03_orig/board/esd/apc405/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/apc405/CVS/Entries 2009-03-25 15:57:19.059533200 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/apc405.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fpgadata.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/logo_640_480_24bpp.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/apc405/CVS/Entries.Extra u-boot-2009.03/board/esd/apc405/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/esd/apc405/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/apc405/CVS/Entries.Extra   2009-03-25 15:57:19.059533200 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019692/
+/apc405.c///1238019692/
+/config.mk///1238019692/
+/fpgadata.c///1238019692/
+/logo_640_480_24bpp.c///1238019692/
+/u-boot.lds///1238019692/
diff -Naur u-boot-2009.03_orig/board/esd/apc405/CVS/Entries.Extra.Old u-boot-2009.03/board/esd/apc405/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/esd/apc405/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/apc405/CVS/Entries.Extra.Old       2009-03-25 15:24:18.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019692/
+/apc405.c///1238019692/
+/config.mk///1238019692/
+/fpgadata.c///1238019692/
+/logo_640_480_24bpp.c///1238019692/
+/u-boot.lds///1238019692/
diff -Naur u-boot-2009.03_orig/board/esd/apc405/CVS/Entries.Old u-boot-2009.03/board/esd/apc405/CVS/Entries.Old
--- u-boot-2009.03_orig/board/esd/apc405/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/apc405/CVS/Entries.Old     2009-03-25 15:24:18.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/apc405.c/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/fpgadata.c/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/logo_640_480_24bpp.c/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:32 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/apc405/CVS/Repository u-boot-2009.03/board/esd/apc405/CVS/Repository
--- u-boot-2009.03_orig/board/esd/apc405/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/apc405/CVS/Repository      2009-03-25 15:24:18.072438200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/esd/apc405
diff -Naur u-boot-2009.03_orig/board/esd/apc405/CVS/Root u-boot-2009.03/board/esd/apc405/CVS/Root
--- u-boot-2009.03_orig/board/esd/apc405/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/apc405/CVS/Root    2009-03-25 15:24:18.072438200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/esd/ar405/CVS/Entries u-boot-2009.03/board/esd/ar405/CVS/Entries
--- u-boot-2009.03_orig/board/esd/ar405/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/ar405/CVS/Entries  2009-03-25 15:57:19.153282600 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ar405.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ar405.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fpgadata.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fpgadata_xl30.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/ar405/CVS/Entries.Extra u-boot-2009.03/board/esd/ar405/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/esd/ar405/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/ar405/CVS/Entries.Extra    2009-03-25 15:57:19.153282600 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019693/
+/ar405.c///1238019692/
+/ar405.h///1238019692/
+/config.mk///1238019692/
+/flash.c///1238019692/
+/fpgadata.c///1238019692/
+/fpgadata_xl30.c///1238019693/
+/u-boot.lds///1238019693/
diff -Naur u-boot-2009.03_orig/board/esd/ar405/CVS/Entries.Extra.Old u-boot-2009.03/board/esd/ar405/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/esd/ar405/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/ar405/CVS/Entries.Extra.Old        2009-03-25 15:24:18.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019693/
+/ar405.c///1238019692/
+/ar405.h///1238019692/
+/config.mk///1238019692/
+/flash.c///1238019692/
+/fpgadata.c///1238019692/
+/fpgadata_xl30.c///1238019693/
+/u-boot.lds///1238019693/
diff -Naur u-boot-2009.03_orig/board/esd/ar405/CVS/Entries.Old u-boot-2009.03/board/esd/ar405/CVS/Entries.Old
--- u-boot-2009.03_orig/board/esd/ar405/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/ar405/CVS/Entries.Old      2009-03-25 15:24:18.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/ar405.c/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/ar405.h/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/fpgadata.c/1.1.1.1/Wed Mar 25 22:21:32 2009//
+/fpgadata_xl30.c/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:33 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/ar405/CVS/Repository u-boot-2009.03/board/esd/ar405/CVS/Repository
--- u-boot-2009.03_orig/board/esd/ar405/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/ar405/CVS/Repository       2009-03-25 15:24:18.213061400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/esd/ar405
diff -Naur u-boot-2009.03_orig/board/esd/ar405/CVS/Root u-boot-2009.03/board/esd/ar405/CVS/Root
--- u-boot-2009.03_orig/board/esd/ar405/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/ar405/CVS/Root     2009-03-25 15:24:18.213061400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/esd/ash405/CVS/Entries u-boot-2009.03/board/esd/ash405/CVS/Entries
--- u-boot-2009.03_orig/board/esd/ash405/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/ash405/CVS/Entries 2009-03-25 15:57:19.247032000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ash405.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fpgadata.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/ash405/CVS/Entries.Extra u-boot-2009.03/board/esd/ash405/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/esd/ash405/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/ash405/CVS/Entries.Extra   2009-03-25 15:57:19.247032000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019693/
+/ash405.c///1238019693/
+/config.mk///1238019693/
+/flash.c///1238019693/
+/fpgadata.c///1238019693/
+/u-boot.lds///1238019693/
diff -Naur u-boot-2009.03_orig/board/esd/ash405/CVS/Entries.Extra.Old u-boot-2009.03/board/esd/ash405/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/esd/ash405/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/ash405/CVS/Entries.Extra.Old       2009-03-25 15:24:18.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019693/
+/ash405.c///1238019693/
+/config.mk///1238019693/
+/flash.c///1238019693/
+/fpgadata.c///1238019693/
+/u-boot.lds///1238019693/
diff -Naur u-boot-2009.03_orig/board/esd/ash405/CVS/Entries.Old u-boot-2009.03/board/esd/ash405/CVS/Entries.Old
--- u-boot-2009.03_orig/board/esd/ash405/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/ash405/CVS/Entries.Old     2009-03-25 15:24:18.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/ash405.c/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/fpgadata.c/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:33 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/ash405/CVS/Repository u-boot-2009.03/board/esd/ash405/CVS/Repository
--- u-boot-2009.03_orig/board/esd/ash405/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/ash405/CVS/Repository      2009-03-25 15:24:18.384934200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/esd/ash405
diff -Naur u-boot-2009.03_orig/board/esd/ash405/CVS/Root u-boot-2009.03/board/esd/ash405/CVS/Root
--- u-boot-2009.03_orig/board/esd/ash405/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/ash405/CVS/Root    2009-03-25 15:24:18.384934200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/esd/canbt/CVS/Entries u-boot-2009.03/board/esd/canbt/CVS/Entries
--- u-boot-2009.03_orig/board/esd/canbt/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/canbt/CVS/Entries  2009-03-25 15:57:19.309531600 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/canbt.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/canbt.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fpgadata.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/canbt/CVS/Entries.Extra u-boot-2009.03/board/esd/canbt/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/esd/canbt/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/canbt/CVS/Entries.Extra    2009-03-25 15:57:19.325156500 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019693/
+/canbt.c///1238019693/
+/canbt.h///1238019693/
+/config.mk///1238019693/
+/flash.c///1238019693/
+/fpgadata.c///1238019693/
+/u-boot.lds///1238019693/
diff -Naur u-boot-2009.03_orig/board/esd/canbt/CVS/Entries.Extra.Old u-boot-2009.03/board/esd/canbt/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/esd/canbt/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/canbt/CVS/Entries.Extra.Old        2009-03-25 15:24:18.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019693/
+/canbt.c///1238019693/
+/canbt.h///1238019693/
+/config.mk///1238019693/
+/flash.c///1238019693/
+/fpgadata.c///1238019693/
+/u-boot.lds///1238019693/
diff -Naur u-boot-2009.03_orig/board/esd/canbt/CVS/Entries.Old u-boot-2009.03/board/esd/canbt/CVS/Entries.Old
--- u-boot-2009.03_orig/board/esd/canbt/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/canbt/CVS/Entries.Old      2009-03-25 15:24:18.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/canbt.c/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/canbt.h/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/fpgadata.c/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:33 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/canbt/CVS/Repository u-boot-2009.03/board/esd/canbt/CVS/Repository
--- u-boot-2009.03_orig/board/esd/canbt/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/canbt/CVS/Repository       2009-03-25 15:24:18.681805400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/esd/canbt
diff -Naur u-boot-2009.03_orig/board/esd/canbt/CVS/Root u-boot-2009.03/board/esd/canbt/CVS/Root
--- u-boot-2009.03_orig/board/esd/canbt/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/canbt/CVS/Root     2009-03-25 15:24:18.681805400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/esd/cms700/CVS/Entries u-boot-2009.03/board/esd/cms700/CVS/Entries
--- u-boot-2009.03_orig/board/esd/cms700/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/cms700/CVS/Entries 2009-03-25 15:57:19.387656100 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cms700.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fpgadata.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/cms700/CVS/Entries.Extra u-boot-2009.03/board/esd/cms700/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/esd/cms700/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/cms700/CVS/Entries.Extra   2009-03-25 15:57:19.387656100 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019693/
+/cms700.c///1238019693/
+/config.mk///1238019693/
+/flash.c///1238019693/
+/fpgadata.c///1238019693/
+/u-boot.lds///1238019693/
diff -Naur u-boot-2009.03_orig/board/esd/cms700/CVS/Entries.Extra.Old u-boot-2009.03/board/esd/cms700/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/esd/cms700/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/cms700/CVS/Entries.Extra.Old       2009-03-25 15:24:18.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019693/
+/cms700.c///1238019693/
+/config.mk///1238019693/
+/flash.c///1238019693/
+/fpgadata.c///1238019693/
+/u-boot.lds///1238019693/
diff -Naur u-boot-2009.03_orig/board/esd/cms700/CVS/Entries.Old u-boot-2009.03/board/esd/cms700/CVS/Entries.Old
--- u-boot-2009.03_orig/board/esd/cms700/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/cms700/CVS/Entries.Old     2009-03-25 15:24:18.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/cms700.c/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/fpgadata.c/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:33 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/cms700/CVS/Repository u-boot-2009.03/board/esd/cms700/CVS/Repository
--- u-boot-2009.03_orig/board/esd/cms700/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/cms700/CVS/Repository      2009-03-25 15:24:18.822428600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/esd/cms700
diff -Naur u-boot-2009.03_orig/board/esd/cms700/CVS/Root u-boot-2009.03/board/esd/cms700/CVS/Root
--- u-boot-2009.03_orig/board/esd/cms700/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/cms700/CVS/Root    2009-03-25 15:24:18.822428600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/esd/common/CVS/Entries u-boot-2009.03/board/esd/common/CVS/Entries
--- u-boot-2009.03_orig/board/esd/common/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/common/CVS/Entries 2009-03-25 15:57:19.575154900 -0700
@@ -0,0 +1,18 @@
+D/xilinx_jtag////
+/auto_update.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/auto_update.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_loadpci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/esd405ep_nand.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fpga.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lcd.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lcd.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/misc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/s1d13505_640_480_16bpp.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/s1d13704_320_240_4bpp.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/s1d13705_320_240_8bpp.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/s1d13806_1024_768_8bpp.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/s1d13806_320_240_4bpp.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/s1d13806_640_480_16bpp.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/s1d13806_640_480_8bpp.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
diff -Naur u-boot-2009.03_orig/board/esd/common/CVS/Entries.Extra u-boot-2009.03/board/esd/common/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/esd/common/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/common/CVS/Entries.Extra   2009-03-25 15:57:19.590779800 -0700
@@ -0,0 +1,18 @@
+D/xilinx_jtag////
+/auto_update.c///1238019693/
+/auto_update.h///1238019693/
+/cmd_loadpci.c///1238019693/
+/esd405ep_nand.c///1238019693/
+/flash.c///1238019693/
+/fpga.c///1238019693/
+/lcd.c///1238019693/
+/lcd.h///1238019693/
+/misc.c///1238019693/
+/pci.c///1238019693/
+/s1d13505_640_480_16bpp.h///1238019693/
+/s1d13704_320_240_4bpp.h///1238019693/
+/s1d13705_320_240_8bpp.h///1238019693/
+/s1d13806_1024_768_8bpp.h///1238019693/
+/s1d13806_320_240_4bpp.h///1238019693/
+/s1d13806_640_480_16bpp.h///1238019693/
+/s1d13806_640_480_8bpp.h///1238019693/
diff -Naur u-boot-2009.03_orig/board/esd/common/CVS/Entries.Extra.Old u-boot-2009.03/board/esd/common/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/esd/common/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/common/CVS/Entries.Extra.Old       2009-03-25 15:24:19.000000000 -0700
@@ -0,0 +1,18 @@
+/auto_update.c///1238019693/
+/auto_update.h///1238019693/
+/cmd_loadpci.c///1238019693/
+/esd405ep_nand.c///1238019693/
+/flash.c///1238019693/
+/fpga.c///1238019693/
+/lcd.c///1238019693/
+/lcd.h///1238019693/
+/misc.c///1238019693/
+/pci.c///1238019693/
+/s1d13505_640_480_16bpp.h///1238019693/
+/s1d13704_320_240_4bpp.h///1238019693/
+/s1d13705_320_240_8bpp.h///1238019693/
+/s1d13806_1024_768_8bpp.h///1238019693/
+/s1d13806_320_240_4bpp.h///1238019693/
+/s1d13806_640_480_16bpp.h///1238019693/
+/s1d13806_640_480_8bpp.h///1238019693/
+D/xilinx_jtag////
diff -Naur u-boot-2009.03_orig/board/esd/common/CVS/Entries.Old u-boot-2009.03/board/esd/common/CVS/Entries.Old
--- u-boot-2009.03_orig/board/esd/common/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/common/CVS/Entries.Old     2009-03-25 15:24:19.000000000 -0700
@@ -0,0 +1,18 @@
+/auto_update.c/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/auto_update.h/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/cmd_loadpci.c/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/esd405ep_nand.c/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/fpga.c/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/lcd.c/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/lcd.h/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/misc.c/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/pci.c/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/s1d13505_640_480_16bpp.h/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/s1d13704_320_240_4bpp.h/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/s1d13705_320_240_8bpp.h/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/s1d13806_1024_768_8bpp.h/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/s1d13806_320_240_4bpp.h/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/s1d13806_640_480_16bpp.h/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/s1d13806_640_480_8bpp.h/1.1.1.1/Wed Mar 25 22:21:33 2009//
+D/xilinx_jtag////
diff -Naur u-boot-2009.03_orig/board/esd/common/CVS/Repository u-boot-2009.03/board/esd/common/CVS/Repository
--- u-boot-2009.03_orig/board/esd/common/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/common/CVS/Repository      2009-03-25 15:24:18.947427000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/esd/common
diff -Naur u-boot-2009.03_orig/board/esd/common/CVS/Root u-boot-2009.03/board/esd/common/CVS/Root
--- u-boot-2009.03_orig/board/esd/common/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/common/CVS/Root    2009-03-25 15:24:18.947427000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/esd/common/xilinx_jtag/CVS/Entries u-boot-2009.03/board/esd/common/xilinx_jtag/CVS/Entries
--- u-boot-2009.03_orig/board/esd/common/xilinx_jtag/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/common/xilinx_jtag/CVS/Entries     2009-03-25 15:57:19.528280200 -0700
@@ -0,0 +1,7 @@
+/lenval.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lenval.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/micro.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/micro.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ports.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ports.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/common/xilinx_jtag/CVS/Entries.Extra u-boot-2009.03/board/esd/common/xilinx_jtag/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/esd/common/xilinx_jtag/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/common/xilinx_jtag/CVS/Entries.Extra       2009-03-25 15:57:19.528280200 -0700
@@ -0,0 +1,6 @@
+/lenval.c///1238019693/
+/lenval.h///1238019693/
+/micro.c///1238019693/
+/micro.h///1238019693/
+/ports.c///1238019693/
+/ports.h///1238019693/
diff -Naur u-boot-2009.03_orig/board/esd/common/xilinx_jtag/CVS/Entries.Extra.Old u-boot-2009.03/board/esd/common/xilinx_jtag/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/esd/common/xilinx_jtag/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/common/xilinx_jtag/CVS/Entries.Extra.Old   2009-03-25 15:24:19.000000000 -0700
@@ -0,0 +1,6 @@
+/lenval.c///1238019693/
+/lenval.h///1238019693/
+/micro.c///1238019693/
+/micro.h///1238019693/
+/ports.c///1238019693/
+/ports.h///1238019693/
diff -Naur u-boot-2009.03_orig/board/esd/common/xilinx_jtag/CVS/Entries.Old u-boot-2009.03/board/esd/common/xilinx_jtag/CVS/Entries.Old
--- u-boot-2009.03_orig/board/esd/common/xilinx_jtag/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/common/xilinx_jtag/CVS/Entries.Old 2009-03-25 15:24:19.000000000 -0700
@@ -0,0 +1,7 @@
+/lenval.c/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/lenval.h/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/micro.c/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/micro.h/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/ports.c/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/ports.h/1.1.1.1/Wed Mar 25 22:21:33 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/common/xilinx_jtag/CVS/Repository u-boot-2009.03/board/esd/common/xilinx_jtag/CVS/Repository
--- u-boot-2009.03_orig/board/esd/common/xilinx_jtag/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/common/xilinx_jtag/CVS/Repository  2009-03-25 15:24:19.119299800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/esd/common/xilinx_jtag
diff -Naur u-boot-2009.03_orig/board/esd/common/xilinx_jtag/CVS/Root u-boot-2009.03/board/esd/common/xilinx_jtag/CVS/Root
--- u-boot-2009.03_orig/board/esd/common/xilinx_jtag/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/common/xilinx_jtag/CVS/Root        2009-03-25 15:24:19.119299800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/esd/cpci2dp/CVS/Entries u-boot-2009.03/board/esd/cpci2dp/CVS/Entries
--- u-boot-2009.03_orig/board/esd/cpci2dp/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/cpci2dp/CVS/Entries        2009-03-25 15:57:19.668904300 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpci2dp.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/cpci2dp/CVS/Entries.Extra u-boot-2009.03/board/esd/cpci2dp/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/esd/cpci2dp/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/cpci2dp/CVS/Entries.Extra  2009-03-25 15:57:19.668904300 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019693/
+/config.mk///1238019693/
+/cpci2dp.c///1238019693/
+/flash.c///1238019693/
+/u-boot.lds///1238019693/
diff -Naur u-boot-2009.03_orig/board/esd/cpci2dp/CVS/Entries.Extra.Old u-boot-2009.03/board/esd/cpci2dp/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/esd/cpci2dp/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/cpci2dp/CVS/Entries.Extra.Old      2009-03-25 15:24:19.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019693/
+/config.mk///1238019693/
+/cpci2dp.c///1238019693/
+/flash.c///1238019693/
+/u-boot.lds///1238019693/
diff -Naur u-boot-2009.03_orig/board/esd/cpci2dp/CVS/Entries.Old u-boot-2009.03/board/esd/cpci2dp/CVS/Entries.Old
--- u-boot-2009.03_orig/board/esd/cpci2dp/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/cpci2dp/CVS/Entries.Old    2009-03-25 15:24:19.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/cpci2dp.c/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:33 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/cpci2dp/CVS/Repository u-boot-2009.03/board/esd/cpci2dp/CVS/Repository
--- u-boot-2009.03_orig/board/esd/cpci2dp/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/cpci2dp/CVS/Repository     2009-03-25 15:24:19.322422200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/esd/cpci2dp
diff -Naur u-boot-2009.03_orig/board/esd/cpci2dp/CVS/Root u-boot-2009.03/board/esd/cpci2dp/CVS/Root
--- u-boot-2009.03_orig/board/esd/cpci2dp/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/cpci2dp/CVS/Root   2009-03-25 15:24:19.322422200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/esd/cpci405/CVS/Entries u-boot-2009.03/board/esd/cpci405/CVS/Entries
--- u-boot-2009.03_orig/board/esd/cpci405/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/cpci405/CVS/Entries        2009-03-25 15:57:19.762653700 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpci405.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fpgadata_cpci405.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fpgadata_cpci4052.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fpgadata_cpci405ab.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/cpci405/CVS/Entries.Extra u-boot-2009.03/board/esd/cpci405/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/esd/cpci405/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/cpci405/CVS/Entries.Extra  2009-03-25 15:57:19.762653700 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019693/
+/config.mk///1238019693/
+/cpci405.c///1238019693/
+/flash.c///1238019693/
+/fpgadata_cpci405.c///1238019693/
+/fpgadata_cpci4052.c///1238019693/
+/fpgadata_cpci405ab.c///1238019693/
+/u-boot.lds///1238019693/
diff -Naur u-boot-2009.03_orig/board/esd/cpci405/CVS/Entries.Extra.Old u-boot-2009.03/board/esd/cpci405/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/esd/cpci405/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/cpci405/CVS/Entries.Extra.Old      2009-03-25 15:24:19.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019693/
+/config.mk///1238019693/
+/cpci405.c///1238019693/
+/flash.c///1238019693/
+/fpgadata_cpci405.c///1238019693/
+/fpgadata_cpci4052.c///1238019693/
+/fpgadata_cpci405ab.c///1238019693/
+/u-boot.lds///1238019693/
diff -Naur u-boot-2009.03_orig/board/esd/cpci405/CVS/Entries.Old u-boot-2009.03/board/esd/cpci405/CVS/Entries.Old
--- u-boot-2009.03_orig/board/esd/cpci405/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/cpci405/CVS/Entries.Old    2009-03-25 15:24:19.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/cpci405.c/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/fpgadata_cpci405.c/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/fpgadata_cpci4052.c/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/fpgadata_cpci405ab.c/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:33 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/cpci405/CVS/Repository u-boot-2009.03/board/esd/cpci405/CVS/Repository
--- u-boot-2009.03_orig/board/esd/cpci405/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/cpci405/CVS/Repository     2009-03-25 15:24:19.572419000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/esd/cpci405
diff -Naur u-boot-2009.03_orig/board/esd/cpci405/CVS/Root u-boot-2009.03/board/esd/cpci405/CVS/Root
--- u-boot-2009.03_orig/board/esd/cpci405/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/cpci405/CVS/Root   2009-03-25 15:24:19.572419000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/esd/cpci5200/CVS/Entries u-boot-2009.03/board/esd/cpci5200/CVS/Entries
--- u-boot-2009.03_orig/board/esd/cpci5200/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/cpci5200/CVS/Entries       2009-03-25 15:57:19.840778200 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpci5200.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mt46v16m16-75.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/strataflash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/cpci5200/CVS/Entries.Extra u-boot-2009.03/board/esd/cpci5200/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/esd/cpci5200/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/cpci5200/CVS/Entries.Extra 2009-03-25 15:57:19.840778200 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019693/
+/config.mk///1238019693/
+/cpci5200.c///1238019693/
+/mt46v16m16-75.h///1238019693/
+/strataflash.c///1238019693/
diff -Naur u-boot-2009.03_orig/board/esd/cpci5200/CVS/Entries.Extra.Old u-boot-2009.03/board/esd/cpci5200/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/esd/cpci5200/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/cpci5200/CVS/Entries.Extra.Old     2009-03-25 15:24:19.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019693/
+/config.mk///1238019693/
+/cpci5200.c///1238019693/
+/mt46v16m16-75.h///1238019693/
+/strataflash.c///1238019693/
diff -Naur u-boot-2009.03_orig/board/esd/cpci5200/CVS/Entries.Old u-boot-2009.03/board/esd/cpci5200/CVS/Entries.Old
--- u-boot-2009.03_orig/board/esd/cpci5200/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/cpci5200/CVS/Entries.Old   2009-03-25 15:24:19.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/cpci5200.c/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/mt46v16m16-75.h/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/strataflash.c/1.1.1.1/Wed Mar 25 22:21:33 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/cpci5200/CVS/Repository u-boot-2009.03/board/esd/cpci5200/CVS/Repository
--- u-boot-2009.03_orig/board/esd/cpci5200/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/cpci5200/CVS/Repository    2009-03-25 15:24:19.744291800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/esd/cpci5200
diff -Naur u-boot-2009.03_orig/board/esd/cpci5200/CVS/Root u-boot-2009.03/board/esd/cpci5200/CVS/Root
--- u-boot-2009.03_orig/board/esd/cpci5200/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/cpci5200/CVS/Root  2009-03-25 15:24:19.728667000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/esd/cpci750/CVS/Entries u-boot-2009.03/board/esd/cpci750/CVS/Entries
--- u-boot-2009.03_orig/board/esd/cpci750/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/cpci750/CVS/Entries        2009-03-25 15:57:19.981402300 -0700
@@ -0,0 +1,21 @@
+/64360.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpci750.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/eth.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/i2c.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/i2c.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ide.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/local.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/misc.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpsc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpsc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mv_eth.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mv_eth.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mv_regs.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sdram_init.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/cpci750/CVS/Entries.Extra u-boot-2009.03/board/esd/cpci750/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/esd/cpci750/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/cpci750/CVS/Entries.Extra  2009-03-25 15:57:19.981402300 -0700
@@ -0,0 +1,20 @@
+/64360.h///1238019693/
+/Makefile///1238019693/
+/config.mk///1238019693/
+/cpci750.c///1238019693/
+/eth.h///1238019693/
+/i2c.c///1238019693/
+/i2c.h///1238019693/
+/ide.c///1238019693/
+/local.h///1238019693/
+/misc.S///1238019693/
+/mpsc.c///1238019693/
+/mpsc.h///1238019693/
+/mv_eth.c///1238019693/
+/mv_eth.h///1238019693/
+/mv_regs.h///1238019693/
+/pci.c///1238019693/
+/sdram_init.c///1238019693/
+/serial.c///1238019693/
+/serial.h///1238019693/
+/u-boot.lds///1238019693/
diff -Naur u-boot-2009.03_orig/board/esd/cpci750/CVS/Entries.Extra.Old u-boot-2009.03/board/esd/cpci750/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/esd/cpci750/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/cpci750/CVS/Entries.Extra.Old      2009-03-25 15:24:20.000000000 -0700
@@ -0,0 +1,20 @@
+/64360.h///1238019693/
+/Makefile///1238019693/
+/config.mk///1238019693/
+/cpci750.c///1238019693/
+/eth.h///1238019693/
+/i2c.c///1238019693/
+/i2c.h///1238019693/
+/ide.c///1238019693/
+/local.h///1238019693/
+/misc.S///1238019693/
+/mpsc.c///1238019693/
+/mpsc.h///1238019693/
+/mv_eth.c///1238019693/
+/mv_eth.h///1238019693/
+/mv_regs.h///1238019693/
+/pci.c///1238019693/
+/sdram_init.c///1238019693/
+/serial.c///1238019693/
+/serial.h///1238019693/
+/u-boot.lds///1238019693/
diff -Naur u-boot-2009.03_orig/board/esd/cpci750/CVS/Entries.Old u-boot-2009.03/board/esd/cpci750/CVS/Entries.Old
--- u-boot-2009.03_orig/board/esd/cpci750/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/cpci750/CVS/Entries.Old    2009-03-25 15:24:20.000000000 -0700
@@ -0,0 +1,21 @@
+/64360.h/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/Makefile/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/cpci750.c/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/eth.h/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/i2c.c/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/i2c.h/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/ide.c/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/local.h/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/misc.S/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/mpsc.c/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/mpsc.h/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/mv_eth.c/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/mv_eth.h/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/mv_regs.h/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/pci.c/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/sdram_init.c/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/serial.c/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/serial.h/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:33 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/cpci750/CVS/Repository u-boot-2009.03/board/esd/cpci750/CVS/Repository
--- u-boot-2009.03_orig/board/esd/cpci750/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/cpci750/CVS/Repository     2009-03-25 15:24:19.853665400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/esd/cpci750
diff -Naur u-boot-2009.03_orig/board/esd/cpci750/CVS/Root u-boot-2009.03/board/esd/cpci750/CVS/Root
--- u-boot-2009.03_orig/board/esd/cpci750/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/cpci750/CVS/Root   2009-03-25 15:24:19.853665400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/esd/cpciiser4/CVS/Entries u-boot-2009.03/board/esd/cpciiser4/CVS/Entries
--- u-boot-2009.03_orig/board/esd/cpciiser4/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/cpciiser4/CVS/Entries      2009-03-25 15:57:20.106401500 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpciiser4.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpciiser4.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fpgadata.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/cpciiser4/CVS/Entries.Extra u-boot-2009.03/board/esd/cpciiser4/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/esd/cpciiser4/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/cpciiser4/CVS/Entries.Extra        2009-03-25 15:57:20.106401500 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019693/
+/config.mk///1238019693/
+/cpciiser4.c///1238019693/
+/cpciiser4.h///1238019693/
+/flash.c///1238019693/
+/fpgadata.c///1238019693/
+/u-boot.lds///1238019693/
diff -Naur u-boot-2009.03_orig/board/esd/cpciiser4/CVS/Entries.Extra.Old u-boot-2009.03/board/esd/cpciiser4/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/esd/cpciiser4/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/cpciiser4/CVS/Entries.Extra.Old    2009-03-25 15:24:20.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019693/
+/config.mk///1238019693/
+/cpciiser4.c///1238019693/
+/cpciiser4.h///1238019693/
+/flash.c///1238019693/
+/fpgadata.c///1238019693/
+/u-boot.lds///1238019693/
diff -Naur u-boot-2009.03_orig/board/esd/cpciiser4/CVS/Entries.Old u-boot-2009.03/board/esd/cpciiser4/CVS/Entries.Old
--- u-boot-2009.03_orig/board/esd/cpciiser4/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/cpciiser4/CVS/Entries.Old  2009-03-25 15:24:20.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/cpciiser4.c/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/cpciiser4.h/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/fpgadata.c/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:33 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/cpciiser4/CVS/Repository u-boot-2009.03/board/esd/cpciiser4/CVS/Repository
--- u-boot-2009.03_orig/board/esd/cpciiser4/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/cpciiser4/CVS/Repository   2009-03-25 15:24:20.119287000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/esd/cpciiser4
diff -Naur u-boot-2009.03_orig/board/esd/cpciiser4/CVS/Root u-boot-2009.03/board/esd/cpciiser4/CVS/Root
--- u-boot-2009.03_orig/board/esd/cpciiser4/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/cpciiser4/CVS/Root 2009-03-25 15:24:20.119287000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/esd/dasa_sim/CVS/Entries u-boot-2009.03/board/esd/dasa_sim/CVS/Entries
--- u-boot-2009.03_orig/board/esd/dasa_sim/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/dasa_sim/CVS/Entries       2009-03-25 15:57:20.184526000 -0700
@@ -0,0 +1,10 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_dasa_sim.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dasa_sim.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dasa_sim.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/eeprom.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fpgadata.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/dasa_sim/CVS/Entries.Extra u-boot-2009.03/board/esd/dasa_sim/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/esd/dasa_sim/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/dasa_sim/CVS/Entries.Extra 2009-03-25 15:57:20.184526000 -0700
@@ -0,0 +1,9 @@
+/Makefile///1238019693/
+/cmd_dasa_sim.c///1238019693/
+/config.mk///1238019693/
+/dasa_sim.c///1238019693/
+/dasa_sim.h///1238019693/
+/eeprom.c///1238019693/
+/flash.c///1238019693/
+/fpgadata.c///1238019693/
+/u-boot.lds///1238019694/
diff -Naur u-boot-2009.03_orig/board/esd/dasa_sim/CVS/Entries.Extra.Old u-boot-2009.03/board/esd/dasa_sim/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/esd/dasa_sim/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/dasa_sim/CVS/Entries.Extra.Old     2009-03-25 15:24:20.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile///1238019693/
+/cmd_dasa_sim.c///1238019693/
+/config.mk///1238019693/
+/dasa_sim.c///1238019693/
+/dasa_sim.h///1238019693/
+/eeprom.c///1238019693/
+/flash.c///1238019693/
+/fpgadata.c///1238019693/
+/u-boot.lds///1238019694/
diff -Naur u-boot-2009.03_orig/board/esd/dasa_sim/CVS/Entries.Old u-boot-2009.03/board/esd/dasa_sim/CVS/Entries.Old
--- u-boot-2009.03_orig/board/esd/dasa_sim/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/dasa_sim/CVS/Entries.Old   2009-03-25 15:24:20.000000000 -0700
@@ -0,0 +1,10 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/cmd_dasa_sim.c/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/dasa_sim.c/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/dasa_sim.h/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/eeprom.c/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/fpgadata.c/1.1.1.1/Wed Mar 25 22:21:33 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:34 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/dasa_sim/CVS/Repository u-boot-2009.03/board/esd/dasa_sim/CVS/Repository
--- u-boot-2009.03_orig/board/esd/dasa_sim/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/dasa_sim/CVS/Repository    2009-03-25 15:24:20.259910200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/esd/dasa_sim
diff -Naur u-boot-2009.03_orig/board/esd/dasa_sim/CVS/Root u-boot-2009.03/board/esd/dasa_sim/CVS/Root
--- u-boot-2009.03_orig/board/esd/dasa_sim/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/dasa_sim/CVS/Root  2009-03-25 15:24:20.259910200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/esd/dp405/CVS/Entries u-boot-2009.03/board/esd/dp405/CVS/Entries
--- u-boot-2009.03_orig/board/esd/dp405/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/dp405/CVS/Entries  2009-03-25 15:57:20.262650500 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dp405.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fpgadata.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/dp405/CVS/Entries.Extra u-boot-2009.03/board/esd/dp405/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/esd/dp405/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/dp405/CVS/Entries.Extra    2009-03-25 15:57:20.262650500 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019694/
+/config.mk///1238019694/
+/dp405.c///1238019694/
+/flash.c///1238019694/
+/fpgadata.c///1238019694/
+/u-boot.lds///1238019694/
diff -Naur u-boot-2009.03_orig/board/esd/dp405/CVS/Entries.Extra.Old u-boot-2009.03/board/esd/dp405/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/esd/dp405/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/dp405/CVS/Entries.Extra.Old        2009-03-25 15:24:20.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019694/
+/config.mk///1238019694/
+/dp405.c///1238019694/
+/flash.c///1238019694/
+/fpgadata.c///1238019694/
+/u-boot.lds///1238019694/
diff -Naur u-boot-2009.03_orig/board/esd/dp405/CVS/Entries.Old u-boot-2009.03/board/esd/dp405/CVS/Entries.Old
--- u-boot-2009.03_orig/board/esd/dp405/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/dp405/CVS/Entries.Old      2009-03-25 15:24:20.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/dp405.c/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/fpgadata.c/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:34 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/dp405/CVS/Repository u-boot-2009.03/board/esd/dp405/CVS/Repository
--- u-boot-2009.03_orig/board/esd/dp405/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/dp405/CVS/Repository       2009-03-25 15:24:20.525531800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/esd/dp405
diff -Naur u-boot-2009.03_orig/board/esd/dp405/CVS/Root u-boot-2009.03/board/esd/dp405/CVS/Root
--- u-boot-2009.03_orig/board/esd/dp405/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/dp405/CVS/Root     2009-03-25 15:24:20.525531800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/esd/du405/CVS/Entries u-boot-2009.03/board/esd/du405/CVS/Entries
--- u-boot-2009.03_orig/board/esd/du405/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/du405/CVS/Entries  2009-03-25 15:57:20.340775000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/du405.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/du405.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fpgadata.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/du405/CVS/Entries.Extra u-boot-2009.03/board/esd/du405/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/esd/du405/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/du405/CVS/Entries.Extra    2009-03-25 15:57:20.340775000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019694/
+/config.mk///1238019694/
+/du405.c///1238019694/
+/du405.h///1238019694/
+/flash.c///1238019694/
+/fpgadata.c///1238019694/
+/u-boot.lds///1238019694/
diff -Naur u-boot-2009.03_orig/board/esd/du405/CVS/Entries.Extra.Old u-boot-2009.03/board/esd/du405/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/esd/du405/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/du405/CVS/Entries.Extra.Old        2009-03-25 15:24:20.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019694/
+/config.mk///1238019694/
+/du405.c///1238019694/
+/du405.h///1238019694/
+/flash.c///1238019694/
+/fpgadata.c///1238019694/
+/u-boot.lds///1238019694/
diff -Naur u-boot-2009.03_orig/board/esd/du405/CVS/Entries.Old u-boot-2009.03/board/esd/du405/CVS/Entries.Old
--- u-boot-2009.03_orig/board/esd/du405/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/du405/CVS/Entries.Old      2009-03-25 15:24:20.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/du405.c/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/du405.h/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/fpgadata.c/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:34 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/du405/CVS/Repository u-boot-2009.03/board/esd/du405/CVS/Repository
--- u-boot-2009.03_orig/board/esd/du405/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/du405/CVS/Repository       2009-03-25 15:24:20.650530200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/esd/du405
diff -Naur u-boot-2009.03_orig/board/esd/du405/CVS/Root u-boot-2009.03/board/esd/du405/CVS/Root
--- u-boot-2009.03_orig/board/esd/du405/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/du405/CVS/Root     2009-03-25 15:24:20.650530200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/esd/du440/CVS/Entries u-boot-2009.03/board/esd/du440/CVS/Entries
--- u-boot-2009.03_orig/board/esd/du440/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/du440/CVS/Entries  2009-03-25 15:57:20.418899500 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/du440.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/du440.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/du440/CVS/Entries.Extra u-boot-2009.03/board/esd/du440/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/esd/du440/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/du440/CVS/Entries.Extra    2009-03-25 15:57:20.418899500 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019694/
+/config.mk///1238019694/
+/du440.c///1238019694/
+/du440.h///1238019694/
+/init.S///1238019694/
+/u-boot.lds///1238019694/
diff -Naur u-boot-2009.03_orig/board/esd/du440/CVS/Entries.Extra.Old u-boot-2009.03/board/esd/du440/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/esd/du440/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/du440/CVS/Entries.Extra.Old        2009-03-25 15:24:20.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019694/
+/config.mk///1238019694/
+/du440.c///1238019694/
+/du440.h///1238019694/
+/init.S///1238019694/
+/u-boot.lds///1238019694/
diff -Naur u-boot-2009.03_orig/board/esd/du440/CVS/Entries.Old u-boot-2009.03/board/esd/du440/CVS/Entries.Old
--- u-boot-2009.03_orig/board/esd/du440/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/du440/CVS/Entries.Old      2009-03-25 15:24:20.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/du440.c/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/du440.h/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/init.S/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:34 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/du440/CVS/Repository u-boot-2009.03/board/esd/du440/CVS/Repository
--- u-boot-2009.03_orig/board/esd/du440/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/du440/CVS/Repository       2009-03-25 15:24:20.759903800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/esd/du440
diff -Naur u-boot-2009.03_orig/board/esd/du440/CVS/Root u-boot-2009.03/board/esd/du440/CVS/Root
--- u-boot-2009.03_orig/board/esd/du440/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/du440/CVS/Root     2009-03-25 15:24:20.759903800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/esd/hh405/CVS/Entries u-boot-2009.03/board/esd/hh405/CVS/Entries
--- u-boot-2009.03_orig/board/esd/hh405/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/hh405/CVS/Entries  2009-03-25 15:57:20.543898700 -0700
@@ -0,0 +1,11 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fpgadata.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/hh405.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/logo_1024_768_8bpp.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/logo_320_240_4bpp.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/logo_320_240_8bpp.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/logo_640_480_24bpp.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/hh405/CVS/Entries.Extra u-boot-2009.03/board/esd/hh405/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/esd/hh405/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/hh405/CVS/Entries.Extra    2009-03-25 15:57:20.543898700 -0700
@@ -0,0 +1,10 @@
+/Makefile///1238019694/
+/config.mk///1238019694/
+/flash.c///1238019694/
+/fpgadata.c///1238019694/
+/hh405.c///1238019694/
+/logo_1024_768_8bpp.c///1238019694/
+/logo_320_240_4bpp.c///1238019694/
+/logo_320_240_8bpp.c///1238019694/
+/logo_640_480_24bpp.c///1238019694/
+/u-boot.lds///1238019694/
diff -Naur u-boot-2009.03_orig/board/esd/hh405/CVS/Entries.Extra.Old u-boot-2009.03/board/esd/hh405/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/esd/hh405/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/hh405/CVS/Entries.Extra.Old        2009-03-25 15:24:21.000000000 -0700
@@ -0,0 +1,10 @@
+/Makefile///1238019694/
+/config.mk///1238019694/
+/flash.c///1238019694/
+/fpgadata.c///1238019694/
+/hh405.c///1238019694/
+/logo_1024_768_8bpp.c///1238019694/
+/logo_320_240_4bpp.c///1238019694/
+/logo_320_240_8bpp.c///1238019694/
+/logo_640_480_24bpp.c///1238019694/
+/u-boot.lds///1238019694/
diff -Naur u-boot-2009.03_orig/board/esd/hh405/CVS/Entries.Old u-boot-2009.03/board/esd/hh405/CVS/Entries.Old
--- u-boot-2009.03_orig/board/esd/hh405/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/hh405/CVS/Entries.Old      2009-03-25 15:24:21.000000000 -0700
@@ -0,0 +1,11 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/fpgadata.c/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/hh405.c/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/logo_1024_768_8bpp.c/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/logo_320_240_4bpp.c/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/logo_320_240_8bpp.c/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/logo_640_480_24bpp.c/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:34 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/hh405/CVS/Repository u-boot-2009.03/board/esd/hh405/CVS/Repository
--- u-boot-2009.03_orig/board/esd/hh405/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/hh405/CVS/Repository       2009-03-25 15:24:20.884902200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/esd/hh405
diff -Naur u-boot-2009.03_orig/board/esd/hh405/CVS/Root u-boot-2009.03/board/esd/hh405/CVS/Root
--- u-boot-2009.03_orig/board/esd/hh405/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/hh405/CVS/Root     2009-03-25 15:24:20.884902200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/esd/hub405/CVS/Entries u-boot-2009.03/board/esd/hub405/CVS/Entries
--- u-boot-2009.03_orig/board/esd/hub405/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/hub405/CVS/Entries 2009-03-25 15:57:20.622023200 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/hub405.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/hub405/CVS/Entries.Extra u-boot-2009.03/board/esd/hub405/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/esd/hub405/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/hub405/CVS/Entries.Extra   2009-03-25 15:57:20.622023200 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019694/
+/config.mk///1238019694/
+/flash.c///1238019694/
+/hub405.c///1238019694/
+/u-boot.lds///1238019694/
diff -Naur u-boot-2009.03_orig/board/esd/hub405/CVS/Entries.Extra.Old u-boot-2009.03/board/esd/hub405/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/esd/hub405/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/hub405/CVS/Entries.Extra.Old       2009-03-25 15:24:21.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019694/
+/config.mk///1238019694/
+/flash.c///1238019694/
+/hub405.c///1238019694/
+/u-boot.lds///1238019694/
diff -Naur u-boot-2009.03_orig/board/esd/hub405/CVS/Entries.Old u-boot-2009.03/board/esd/hub405/CVS/Entries.Old
--- u-boot-2009.03_orig/board/esd/hub405/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/hub405/CVS/Entries.Old     2009-03-25 15:24:21.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/hub405.c/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:34 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/hub405/CVS/Repository u-boot-2009.03/board/esd/hub405/CVS/Repository
--- u-boot-2009.03_orig/board/esd/hub405/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/hub405/CVS/Repository      2009-03-25 15:24:21.103649400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/esd/hub405
diff -Naur u-boot-2009.03_orig/board/esd/hub405/CVS/Root u-boot-2009.03/board/esd/hub405/CVS/Root
--- u-boot-2009.03_orig/board/esd/hub405/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/hub405/CVS/Root    2009-03-25 15:24:21.088024600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/esd/mecp5200/CVS/Entries u-boot-2009.03/board/esd/mecp5200/CVS/Entries
--- u-boot-2009.03_orig/board/esd/mecp5200/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/mecp5200/CVS/Entries       2009-03-25 15:57:20.684522800 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mecp5200.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mt46v16m16-75.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/mecp5200/CVS/Entries.Extra u-boot-2009.03/board/esd/mecp5200/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/esd/mecp5200/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/mecp5200/CVS/Entries.Extra 2009-03-25 15:57:20.700147700 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019694/
+/config.mk///1238019694/
+/mecp5200.c///1238019694/
+/mt46v16m16-75.h///1238019694/
diff -Naur u-boot-2009.03_orig/board/esd/mecp5200/CVS/Entries.Extra.Old u-boot-2009.03/board/esd/mecp5200/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/esd/mecp5200/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/mecp5200/CVS/Entries.Extra.Old     2009-03-25 15:24:21.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019694/
+/config.mk///1238019694/
+/mecp5200.c///1238019694/
+/mt46v16m16-75.h///1238019694/
diff -Naur u-boot-2009.03_orig/board/esd/mecp5200/CVS/Entries.Old u-boot-2009.03/board/esd/mecp5200/CVS/Entries.Old
--- u-boot-2009.03_orig/board/esd/mecp5200/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/mecp5200/CVS/Entries.Old   2009-03-25 15:24:21.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/mecp5200.c/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/mt46v16m16-75.h/1.1.1.1/Wed Mar 25 22:21:34 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/mecp5200/CVS/Repository u-boot-2009.03/board/esd/mecp5200/CVS/Repository
--- u-boot-2009.03_orig/board/esd/mecp5200/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/mecp5200/CVS/Repository    2009-03-25 15:24:21.213023000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/esd/mecp5200
diff -Naur u-boot-2009.03_orig/board/esd/mecp5200/CVS/Root u-boot-2009.03/board/esd/mecp5200/CVS/Root
--- u-boot-2009.03_orig/board/esd/mecp5200/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/mecp5200/CVS/Root  2009-03-25 15:24:21.197398200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/esd/ocrtc/CVS/Entries u-boot-2009.03/board/esd/ocrtc/CVS/Entries
--- u-boot-2009.03_orig/board/esd/ocrtc/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/ocrtc/CVS/Entries  2009-03-25 15:57:20.778272200 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_ocrtc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ocrtc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ocrtc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/ocrtc/CVS/Entries.Extra u-boot-2009.03/board/esd/ocrtc/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/esd/ocrtc/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/ocrtc/CVS/Entries.Extra    2009-03-25 15:57:20.778272200 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019694/
+/cmd_ocrtc.c///1238019694/
+/config.mk///1238019694/
+/flash.c///1238019694/
+/ocrtc.c///1238019694/
+/ocrtc.h///1238019694/
+/u-boot.lds///1238019694/
diff -Naur u-boot-2009.03_orig/board/esd/ocrtc/CVS/Entries.Extra.Old u-boot-2009.03/board/esd/ocrtc/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/esd/ocrtc/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/ocrtc/CVS/Entries.Extra.Old        2009-03-25 15:24:21.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019694/
+/cmd_ocrtc.c///1238019694/
+/config.mk///1238019694/
+/flash.c///1238019694/
+/ocrtc.c///1238019694/
+/ocrtc.h///1238019694/
+/u-boot.lds///1238019694/
diff -Naur u-boot-2009.03_orig/board/esd/ocrtc/CVS/Entries.Old u-boot-2009.03/board/esd/ocrtc/CVS/Entries.Old
--- u-boot-2009.03_orig/board/esd/ocrtc/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/ocrtc/CVS/Entries.Old      2009-03-25 15:24:21.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/cmd_ocrtc.c/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/ocrtc.c/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/ocrtc.h/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:34 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/ocrtc/CVS/Repository u-boot-2009.03/board/esd/ocrtc/CVS/Repository
--- u-boot-2009.03_orig/board/esd/ocrtc/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/ocrtc/CVS/Repository       2009-03-25 15:24:21.306771800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/esd/ocrtc
diff -Naur u-boot-2009.03_orig/board/esd/ocrtc/CVS/Root u-boot-2009.03/board/esd/ocrtc/CVS/Root
--- u-boot-2009.03_orig/board/esd/ocrtc/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/ocrtc/CVS/Root     2009-03-25 15:24:21.306771800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/esd/pci405/CVS/Entries u-boot-2009.03/board/esd/pci405/CVS/Entries
--- u-boot-2009.03_orig/board/esd/pci405/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/pci405/CVS/Entries 2009-03-25 15:57:20.872021600 -0700
@@ -0,0 +1,10 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_pci405.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fpgadata.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci405.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci405.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/writeibm.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/pci405/CVS/Entries.Extra u-boot-2009.03/board/esd/pci405/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/esd/pci405/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/pci405/CVS/Entries.Extra   2009-03-25 15:57:20.872021600 -0700
@@ -0,0 +1,9 @@
+/Makefile///1238019694/
+/cmd_pci405.c///1238019694/
+/config.mk///1238019694/
+/flash.c///1238019694/
+/fpgadata.c///1238019694/
+/pci405.c///1238019694/
+/pci405.h///1238019694/
+/u-boot.lds///1238019694/
+/writeibm.S///1238019694/
diff -Naur u-boot-2009.03_orig/board/esd/pci405/CVS/Entries.Extra.Old u-boot-2009.03/board/esd/pci405/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/esd/pci405/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/pci405/CVS/Entries.Extra.Old       2009-03-25 15:24:21.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile///1238019694/
+/cmd_pci405.c///1238019694/
+/config.mk///1238019694/
+/flash.c///1238019694/
+/fpgadata.c///1238019694/
+/pci405.c///1238019694/
+/pci405.h///1238019694/
+/u-boot.lds///1238019694/
+/writeibm.S///1238019694/
diff -Naur u-boot-2009.03_orig/board/esd/pci405/CVS/Entries.Old u-boot-2009.03/board/esd/pci405/CVS/Entries.Old
--- u-boot-2009.03_orig/board/esd/pci405/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/pci405/CVS/Entries.Old     2009-03-25 15:24:21.000000000 -0700
@@ -0,0 +1,10 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/cmd_pci405.c/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/fpgadata.c/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/pci405.c/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/pci405.h/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/writeibm.S/1.1.1.1/Wed Mar 25 22:21:34 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/pci405/CVS/Repository u-boot-2009.03/board/esd/pci405/CVS/Repository
--- u-boot-2009.03_orig/board/esd/pci405/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/pci405/CVS/Repository      2009-03-25 15:24:21.556768600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/esd/pci405
diff -Naur u-boot-2009.03_orig/board/esd/pci405/CVS/Root u-boot-2009.03/board/esd/pci405/CVS/Root
--- u-boot-2009.03_orig/board/esd/pci405/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/pci405/CVS/Root    2009-03-25 15:24:21.556768600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/esd/pf5200/CVS/Entries u-boot-2009.03/board/esd/pf5200/CVS/Entries
--- u-boot-2009.03_orig/board/esd/pf5200/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/pf5200/CVS/Entries 2009-03-25 15:57:20.934521200 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mt46v16m16-75.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pf5200.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/pf5200/CVS/Entries.Extra u-boot-2009.03/board/esd/pf5200/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/esd/pf5200/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/pf5200/CVS/Entries.Extra   2009-03-25 15:57:20.934521200 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019694/
+/config.mk///1238019694/
+/flash.c///1238019694/
+/mt46v16m16-75.h///1238019694/
+/pf5200.c///1238019694/
diff -Naur u-boot-2009.03_orig/board/esd/pf5200/CVS/Entries.Extra.Old u-boot-2009.03/board/esd/pf5200/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/esd/pf5200/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/pf5200/CVS/Entries.Extra.Old       2009-03-25 15:24:21.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019694/
+/config.mk///1238019694/
+/flash.c///1238019694/
+/mt46v16m16-75.h///1238019694/
+/pf5200.c///1238019694/
diff -Naur u-boot-2009.03_orig/board/esd/pf5200/CVS/Entries.Old u-boot-2009.03/board/esd/pf5200/CVS/Entries.Old
--- u-boot-2009.03_orig/board/esd/pf5200/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/pf5200/CVS/Entries.Old     2009-03-25 15:24:21.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/mt46v16m16-75.h/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/pf5200.c/1.1.1.1/Wed Mar 25 22:21:34 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/pf5200/CVS/Repository u-boot-2009.03/board/esd/pf5200/CVS/Repository
--- u-boot-2009.03_orig/board/esd/pf5200/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/pf5200/CVS/Repository      2009-03-25 15:24:21.728641400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/esd/pf5200
diff -Naur u-boot-2009.03_orig/board/esd/pf5200/CVS/Root u-boot-2009.03/board/esd/pf5200/CVS/Root
--- u-boot-2009.03_orig/board/esd/pf5200/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/pf5200/CVS/Root    2009-03-25 15:24:21.713016600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/esd/plu405/CVS/Entries u-boot-2009.03/board/esd/plu405/CVS/Entries
--- u-boot-2009.03_orig/board/esd/plu405/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/plu405/CVS/Entries 2009-03-25 15:57:21.012645700 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fpgadata.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/plu405.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/plu405/CVS/Entries.Extra u-boot-2009.03/board/esd/plu405/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/esd/plu405/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/plu405/CVS/Entries.Extra   2009-03-25 15:57:21.028270600 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019694/
+/config.mk///1238019694/
+/flash.c///1238019694/
+/fpgadata.c///1238019694/
+/plu405.c///1238019694/
+/u-boot.lds///1238019694/
diff -Naur u-boot-2009.03_orig/board/esd/plu405/CVS/Entries.Extra.Old u-boot-2009.03/board/esd/plu405/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/esd/plu405/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/plu405/CVS/Entries.Extra.Old       2009-03-25 15:24:21.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019694/
+/config.mk///1238019694/
+/flash.c///1238019694/
+/fpgadata.c///1238019694/
+/plu405.c///1238019694/
+/u-boot.lds///1238019694/
diff -Naur u-boot-2009.03_orig/board/esd/plu405/CVS/Entries.Old u-boot-2009.03/board/esd/plu405/CVS/Entries.Old
--- u-boot-2009.03_orig/board/esd/plu405/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/plu405/CVS/Entries.Old     2009-03-25 15:24:21.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/fpgadata.c/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/plu405.c/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:34 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/plu405/CVS/Repository u-boot-2009.03/board/esd/plu405/CVS/Repository
--- u-boot-2009.03_orig/board/esd/plu405/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/plu405/CVS/Repository      2009-03-25 15:24:21.838015000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/esd/plu405
diff -Naur u-boot-2009.03_orig/board/esd/plu405/CVS/Root u-boot-2009.03/board/esd/plu405/CVS/Root
--- u-boot-2009.03_orig/board/esd/plu405/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/plu405/CVS/Root    2009-03-25 15:24:21.838015000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/esd/pmc405/CVS/Entries u-boot-2009.03/board/esd/pmc405/CVS/Entries
--- u-boot-2009.03_orig/board/esd/pmc405/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/pmc405/CVS/Entries 2009-03-25 15:57:21.137644900 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fpgadata.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pmc405.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/pmc405/CVS/Entries.Extra u-boot-2009.03/board/esd/pmc405/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/esd/pmc405/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/pmc405/CVS/Entries.Extra   2009-03-25 15:57:21.153269800 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019694/
+/config.mk///1238019694/
+/fpgadata.c///1238019694/
+/pmc405.c///1238019694/
+/u-boot.lds///1238019694/
diff -Naur u-boot-2009.03_orig/board/esd/pmc405/CVS/Entries.Extra.Old u-boot-2009.03/board/esd/pmc405/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/esd/pmc405/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/pmc405/CVS/Entries.Extra.Old       2009-03-25 15:24:22.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019694/
+/config.mk///1238019694/
+/fpgadata.c///1238019694/
+/pmc405.c///1238019694/
+/u-boot.lds///1238019694/
diff -Naur u-boot-2009.03_orig/board/esd/pmc405/CVS/Entries.Old u-boot-2009.03/board/esd/pmc405/CVS/Entries.Old
--- u-boot-2009.03_orig/board/esd/pmc405/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/pmc405/CVS/Entries.Old     2009-03-25 15:24:22.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/fpgadata.c/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/pmc405.c/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:34 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/pmc405/CVS/Repository u-boot-2009.03/board/esd/pmc405/CVS/Repository
--- u-boot-2009.03_orig/board/esd/pmc405/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/pmc405/CVS/Repository      2009-03-25 15:24:21.978638200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/esd/pmc405
diff -Naur u-boot-2009.03_orig/board/esd/pmc405/CVS/Root u-boot-2009.03/board/esd/pmc405/CVS/Root
--- u-boot-2009.03_orig/board/esd/pmc405/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/pmc405/CVS/Root    2009-03-25 15:24:21.978638200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/esd/pmc440/CVS/Entries u-boot-2009.03/board/esd/pmc440/CVS/Entries
--- u-boot-2009.03_orig/board/esd/pmc440/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/pmc440/CVS/Entries 2009-03-25 15:57:21.247019200 -0700
@@ -0,0 +1,12 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_pmc440.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fpga.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fpga.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pmc440.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pmc440.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sdram.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot-nand.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/pmc440/CVS/Entries.Extra u-boot-2009.03/board/esd/pmc440/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/esd/pmc440/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/pmc440/CVS/Entries.Extra   2009-03-25 15:57:21.247019200 -0700
@@ -0,0 +1,11 @@
+/Makefile///1238019694/
+/cmd_pmc440.c///1238019694/
+/config.mk///1238019694/
+/fpga.c///1238019694/
+/fpga.h///1238019694/
+/init.S///1238019694/
+/pmc440.c///1238019694/
+/pmc440.h///1238019694/
+/sdram.c///1238019694/
+/u-boot-nand.lds///1238019694/
+/u-boot.lds///1238019694/
diff -Naur u-boot-2009.03_orig/board/esd/pmc440/CVS/Entries.Extra.Old u-boot-2009.03/board/esd/pmc440/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/esd/pmc440/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/pmc440/CVS/Entries.Extra.Old       2009-03-25 15:24:22.000000000 -0700
@@ -0,0 +1,11 @@
+/Makefile///1238019694/
+/cmd_pmc440.c///1238019694/
+/config.mk///1238019694/
+/fpga.c///1238019694/
+/fpga.h///1238019694/
+/init.S///1238019694/
+/pmc440.c///1238019694/
+/pmc440.h///1238019694/
+/sdram.c///1238019694/
+/u-boot-nand.lds///1238019694/
+/u-boot.lds///1238019694/
diff -Naur u-boot-2009.03_orig/board/esd/pmc440/CVS/Entries.Old u-boot-2009.03/board/esd/pmc440/CVS/Entries.Old
--- u-boot-2009.03_orig/board/esd/pmc440/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/pmc440/CVS/Entries.Old     2009-03-25 15:24:22.000000000 -0700
@@ -0,0 +1,12 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/cmd_pmc440.c/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/fpga.c/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/fpga.h/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/init.S/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/pmc440.c/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/pmc440.h/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/sdram.c/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/u-boot-nand.lds/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:34 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/pmc440/CVS/Repository u-boot-2009.03/board/esd/pmc440/CVS/Repository
--- u-boot-2009.03_orig/board/esd/pmc440/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/pmc440/CVS/Repository      2009-03-25 15:24:22.088011800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/esd/pmc440
diff -Naur u-boot-2009.03_orig/board/esd/pmc440/CVS/Root u-boot-2009.03/board/esd/pmc440/CVS/Root
--- u-boot-2009.03_orig/board/esd/pmc440/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/pmc440/CVS/Root    2009-03-25 15:24:22.072387000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/esd/tasreg/CVS/Entries u-boot-2009.03/board/esd/tasreg/CVS/Entries
--- u-boot-2009.03_orig/board/esd/tasreg/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/tasreg/CVS/Entries 2009-03-25 15:57:21.340768600 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fpgadata.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tasreg.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/tasreg/CVS/Entries.Extra u-boot-2009.03/board/esd/tasreg/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/esd/tasreg/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/tasreg/CVS/Entries.Extra   2009-03-25 15:57:21.356393500 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019695/
+/config.mk///1238019694/
+/flash.c///1238019694/
+/fpgadata.c///1238019694/
+/tasreg.c///1238019695/
+/u-boot.lds///1238019695/
diff -Naur u-boot-2009.03_orig/board/esd/tasreg/CVS/Entries.Extra.Old u-boot-2009.03/board/esd/tasreg/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/esd/tasreg/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/tasreg/CVS/Entries.Extra.Old       2009-03-25 15:24:22.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019695/
+/config.mk///1238019694/
+/flash.c///1238019694/
+/fpgadata.c///1238019694/
+/tasreg.c///1238019695/
+/u-boot.lds///1238019695/
diff -Naur u-boot-2009.03_orig/board/esd/tasreg/CVS/Entries.Old u-boot-2009.03/board/esd/tasreg/CVS/Entries.Old
--- u-boot-2009.03_orig/board/esd/tasreg/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/tasreg/CVS/Entries.Old     2009-03-25 15:24:22.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/fpgadata.c/1.1.1.1/Wed Mar 25 22:21:34 2009//
+/tasreg.c/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:35 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/tasreg/CVS/Repository u-boot-2009.03/board/esd/tasreg/CVS/Repository
--- u-boot-2009.03_orig/board/esd/tasreg/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/tasreg/CVS/Repository      2009-03-25 15:24:22.259884600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/esd/tasreg
diff -Naur u-boot-2009.03_orig/board/esd/tasreg/CVS/Root u-boot-2009.03/board/esd/tasreg/CVS/Root
--- u-boot-2009.03_orig/board/esd/tasreg/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/tasreg/CVS/Root    2009-03-25 15:24:22.244259800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/esd/voh405/CVS/Entries u-boot-2009.03/board/esd/voh405/CVS/Entries
--- u-boot-2009.03_orig/board/esd/voh405/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/voh405/CVS/Entries 2009-03-25 15:57:21.465767800 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fpgadata.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/logo_320_240_4bpp.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/logo_640_480_24bpp.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/voh405.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/voh405/CVS/Entries.Extra u-boot-2009.03/board/esd/voh405/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/esd/voh405/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/voh405/CVS/Entries.Extra   2009-03-25 15:57:21.465767800 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019695/
+/config.mk///1238019695/
+/flash.c///1238019695/
+/fpgadata.c///1238019695/
+/logo_320_240_4bpp.c///1238019695/
+/logo_640_480_24bpp.c///1238019695/
+/u-boot.lds///1238019695/
+/voh405.c///1238019695/
diff -Naur u-boot-2009.03_orig/board/esd/voh405/CVS/Entries.Extra.Old u-boot-2009.03/board/esd/voh405/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/esd/voh405/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/voh405/CVS/Entries.Extra.Old       2009-03-25 15:24:22.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019695/
+/config.mk///1238019695/
+/flash.c///1238019695/
+/fpgadata.c///1238019695/
+/logo_320_240_4bpp.c///1238019695/
+/logo_640_480_24bpp.c///1238019695/
+/u-boot.lds///1238019695/
+/voh405.c///1238019695/
diff -Naur u-boot-2009.03_orig/board/esd/voh405/CVS/Entries.Old u-boot-2009.03/board/esd/voh405/CVS/Entries.Old
--- u-boot-2009.03_orig/board/esd/voh405/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/voh405/CVS/Entries.Old     2009-03-25 15:24:22.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/fpgadata.c/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/logo_320_240_4bpp.c/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/logo_640_480_24bpp.c/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/voh405.c/1.1.1.1/Wed Mar 25 22:21:35 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/voh405/CVS/Repository u-boot-2009.03/board/esd/voh405/CVS/Repository
--- u-boot-2009.03_orig/board/esd/voh405/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/voh405/CVS/Repository      2009-03-25 15:24:22.603630200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/esd/voh405
diff -Naur u-boot-2009.03_orig/board/esd/voh405/CVS/Root u-boot-2009.03/board/esd/voh405/CVS/Root
--- u-boot-2009.03_orig/board/esd/voh405/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/voh405/CVS/Root    2009-03-25 15:24:22.588005400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/esd/vom405/CVS/Entries u-boot-2009.03/board/esd/vom405/CVS/Entries
--- u-boot-2009.03_orig/board/esd/vom405/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/vom405/CVS/Entries 2009-03-25 15:57:21.559517200 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fpgadata.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/vom405.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/vom405/CVS/Entries.Extra u-boot-2009.03/board/esd/vom405/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/esd/vom405/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/vom405/CVS/Entries.Extra   2009-03-25 15:57:21.575142100 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019695/
+/config.mk///1238019695/
+/flash.c///1238019695/
+/fpgadata.c///1238019695/
+/u-boot.lds///1238019695/
+/vom405.c///1238019695/
diff -Naur u-boot-2009.03_orig/board/esd/vom405/CVS/Entries.Extra.Old u-boot-2009.03/board/esd/vom405/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/esd/vom405/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/vom405/CVS/Entries.Extra.Old       2009-03-25 15:24:22.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019695/
+/config.mk///1238019695/
+/flash.c///1238019695/
+/fpgadata.c///1238019695/
+/u-boot.lds///1238019695/
+/vom405.c///1238019695/
diff -Naur u-boot-2009.03_orig/board/esd/vom405/CVS/Entries.Old u-boot-2009.03/board/esd/vom405/CVS/Entries.Old
--- u-boot-2009.03_orig/board/esd/vom405/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/vom405/CVS/Entries.Old     2009-03-25 15:24:22.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/fpgadata.c/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/vom405.c/1.1.1.1/Wed Mar 25 22:21:35 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/vom405/CVS/Repository u-boot-2009.03/board/esd/vom405/CVS/Repository
--- u-boot-2009.03_orig/board/esd/vom405/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/vom405/CVS/Repository      2009-03-25 15:24:22.791127800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/esd/vom405
diff -Naur u-boot-2009.03_orig/board/esd/vom405/CVS/Root u-boot-2009.03/board/esd/vom405/CVS/Root
--- u-boot-2009.03_orig/board/esd/vom405/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/vom405/CVS/Root    2009-03-25 15:24:22.791127800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/esd/wuh405/CVS/Entries u-boot-2009.03/board/esd/wuh405/CVS/Entries
--- u-boot-2009.03_orig/board/esd/wuh405/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/wuh405/CVS/Entries 2009-03-25 15:57:21.668891500 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fpgadata.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/wuh405.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/wuh405/CVS/Entries.Extra u-boot-2009.03/board/esd/wuh405/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/esd/wuh405/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/wuh405/CVS/Entries.Extra   2009-03-25 15:57:21.668891500 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019695/
+/config.mk///1238019695/
+/flash.c///1238019695/
+/fpgadata.c///1238019695/
+/u-boot.lds///1238019695/
+/wuh405.c///1238019695/
diff -Naur u-boot-2009.03_orig/board/esd/wuh405/CVS/Entries.Extra.Old u-boot-2009.03/board/esd/wuh405/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/esd/wuh405/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/wuh405/CVS/Entries.Extra.Old       2009-03-25 15:24:22.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019695/
+/config.mk///1238019695/
+/flash.c///1238019695/
+/fpgadata.c///1238019695/
+/u-boot.lds///1238019695/
+/wuh405.c///1238019695/
diff -Naur u-boot-2009.03_orig/board/esd/wuh405/CVS/Entries.Old u-boot-2009.03/board/esd/wuh405/CVS/Entries.Old
--- u-boot-2009.03_orig/board/esd/wuh405/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/wuh405/CVS/Entries.Old     2009-03-25 15:24:22.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/fpgadata.c/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/wuh405.c/1.1.1.1/Wed Mar 25 22:21:35 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esd/wuh405/CVS/Repository u-boot-2009.03/board/esd/wuh405/CVS/Repository
--- u-boot-2009.03_orig/board/esd/wuh405/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/wuh405/CVS/Repository      2009-03-25 15:24:22.916126200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/esd/wuh405
diff -Naur u-boot-2009.03_orig/board/esd/wuh405/CVS/Root u-boot-2009.03/board/esd/wuh405/CVS/Root
--- u-boot-2009.03_orig/board/esd/wuh405/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esd/wuh405/CVS/Root    2009-03-25 15:24:22.900501400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/esteem192e/CVS/Entries u-boot-2009.03/board/esteem192e/CVS/Entries
--- u-boot-2009.03_orig/board/esteem192e/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esteem192e/CVS/Entries 2009-03-25 15:57:21.762640900 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/esteem192e.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esteem192e/CVS/Entries.Extra u-boot-2009.03/board/esteem192e/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/esteem192e/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esteem192e/CVS/Entries.Extra   2009-03-25 15:57:21.762640900 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019695/
+/config.mk///1238019695/
+/esteem192e.c///1238019695/
+/flash.c///1238019695/
+/u-boot.lds///1238019695/
diff -Naur u-boot-2009.03_orig/board/esteem192e/CVS/Entries.Extra.Old u-boot-2009.03/board/esteem192e/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/esteem192e/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esteem192e/CVS/Entries.Extra.Old       2009-03-25 15:24:23.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019695/
+/config.mk///1238019695/
+/esteem192e.c///1238019695/
+/flash.c///1238019695/
+/u-boot.lds///1238019695/
diff -Naur u-boot-2009.03_orig/board/esteem192e/CVS/Entries.Old u-boot-2009.03/board/esteem192e/CVS/Entries.Old
--- u-boot-2009.03_orig/board/esteem192e/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esteem192e/CVS/Entries.Old     2009-03-25 15:24:23.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/esteem192e.c/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:35 2009//
+D
diff -Naur u-boot-2009.03_orig/board/esteem192e/CVS/Repository u-boot-2009.03/board/esteem192e/CVS/Repository
--- u-boot-2009.03_orig/board/esteem192e/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esteem192e/CVS/Repository      2009-03-25 15:24:23.072374200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/esteem192e
diff -Naur u-boot-2009.03_orig/board/esteem192e/CVS/Root u-boot-2009.03/board/esteem192e/CVS/Root
--- u-boot-2009.03_orig/board/esteem192e/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/esteem192e/CVS/Root    2009-03-25 15:24:23.072374200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/etin/CVS/Entries u-boot-2009.03/board/etin/CVS/Entries
--- u-boot-2009.03_orig/board/etin/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/etin/CVS/Entries       2009-03-25 15:24:23.541118200 -0700
@@ -0,0 +1,2 @@
+D/debris////
+D/kvme080////
diff -Naur u-boot-2009.03_orig/board/etin/CVS/Entries.Extra u-boot-2009.03/board/etin/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/etin/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/etin/CVS/Entries.Extra 2009-03-25 15:24:23.541118200 -0700
@@ -0,0 +1,2 @@
+D/debris////
+D/kvme080////
diff -Naur u-boot-2009.03_orig/board/etin/CVS/Repository u-boot-2009.03/board/etin/CVS/Repository
--- u-boot-2009.03_orig/board/etin/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/etin/CVS/Repository    2009-03-25 15:24:23.181747800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/etin
diff -Naur u-boot-2009.03_orig/board/etin/CVS/Root u-boot-2009.03/board/etin/CVS/Root
--- u-boot-2009.03_orig/board/etin/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/etin/CVS/Root  2009-03-25 15:24:23.181747800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/etin/debris/CVS/Entries u-boot-2009.03/board/etin/debris/CVS/Entries
--- u-boot-2009.03_orig/board/etin/debris/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/etin/debris/CVS/Entries        2009-03-25 15:57:21.872015200 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/debris.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/phantom.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/speed.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/etin/debris/CVS/Entries.Extra u-boot-2009.03/board/etin/debris/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/etin/debris/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/etin/debris/CVS/Entries.Extra  2009-03-25 15:57:21.872015200 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019695/
+/config.mk///1238019695/
+/debris.c///1238019695/
+/flash.c///1238019695/
+/phantom.c///1238019695/
+/speed.h///1238019695/
diff -Naur u-boot-2009.03_orig/board/etin/debris/CVS/Entries.Extra.Old u-boot-2009.03/board/etin/debris/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/etin/debris/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/etin/debris/CVS/Entries.Extra.Old      2009-03-25 15:24:23.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019695/
+/config.mk///1238019695/
+/debris.c///1238019695/
+/flash.c///1238019695/
+/phantom.c///1238019695/
+/speed.h///1238019695/
diff -Naur u-boot-2009.03_orig/board/etin/debris/CVS/Entries.Old u-boot-2009.03/board/etin/debris/CVS/Entries.Old
--- u-boot-2009.03_orig/board/etin/debris/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/etin/debris/CVS/Entries.Old    2009-03-25 15:24:23.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/debris.c/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/phantom.c/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/speed.h/1.1.1.1/Wed Mar 25 22:21:35 2009//
+D
diff -Naur u-boot-2009.03_orig/board/etin/debris/CVS/Repository u-boot-2009.03/board/etin/debris/CVS/Repository
--- u-boot-2009.03_orig/board/etin/debris/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/etin/debris/CVS/Repository     2009-03-25 15:24:23.212997400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/etin/debris
diff -Naur u-boot-2009.03_orig/board/etin/debris/CVS/Root u-boot-2009.03/board/etin/debris/CVS/Root
--- u-boot-2009.03_orig/board/etin/debris/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/etin/debris/CVS/Root   2009-03-25 15:24:23.212997400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/etin/kvme080/CVS/Entries u-boot-2009.03/board/etin/kvme080/CVS/Entries
--- u-boot-2009.03_orig/board/etin/kvme080/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/etin/kvme080/CVS/Entries       2009-03-25 15:57:21.965764600 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/kvme080.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/multiverse.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/multiverse.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/etin/kvme080/CVS/Entries.Extra u-boot-2009.03/board/etin/kvme080/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/etin/kvme080/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/etin/kvme080/CVS/Entries.Extra 2009-03-25 15:57:21.965764600 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019695/
+/config.mk///1238019695/
+/kvme080.c///1238019695/
+/multiverse.c///1238019695/
+/multiverse.h///1238019695/
diff -Naur u-boot-2009.03_orig/board/etin/kvme080/CVS/Entries.Extra.Old u-boot-2009.03/board/etin/kvme080/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/etin/kvme080/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/etin/kvme080/CVS/Entries.Extra.Old     2009-03-25 15:24:23.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019695/
+/config.mk///1238019695/
+/kvme080.c///1238019695/
+/multiverse.c///1238019695/
+/multiverse.h///1238019695/
diff -Naur u-boot-2009.03_orig/board/etin/kvme080/CVS/Entries.Old u-boot-2009.03/board/etin/kvme080/CVS/Entries.Old
--- u-boot-2009.03_orig/board/etin/kvme080/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/etin/kvme080/CVS/Entries.Old   2009-03-25 15:24:23.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/kvme080.c/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/multiverse.c/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/multiverse.h/1.1.1.1/Wed Mar 25 22:21:35 2009//
+D
diff -Naur u-boot-2009.03_orig/board/etin/kvme080/CVS/Repository u-boot-2009.03/board/etin/kvme080/CVS/Repository
--- u-boot-2009.03_orig/board/etin/kvme080/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/etin/kvme080/CVS/Repository    2009-03-25 15:24:23.337995800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/etin/kvme080
diff -Naur u-boot-2009.03_orig/board/etin/kvme080/CVS/Root u-boot-2009.03/board/etin/kvme080/CVS/Root
--- u-boot-2009.03_orig/board/etin/kvme080/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/etin/kvme080/CVS/Root  2009-03-25 15:24:23.337995800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/etx094/CVS/Entries u-boot-2009.03/board/etx094/CVS/Entries
--- u-boot-2009.03_orig/board/etx094/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/etx094/CVS/Entries     2009-03-25 15:57:22.059514000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/etx094.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.debug/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/etx094/CVS/Entries.Extra u-boot-2009.03/board/etx094/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/etx094/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/etx094/CVS/Entries.Extra       2009-03-25 15:57:22.059514000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019695/
+/config.mk///1238019695/
+/etx094.c///1238019695/
+/flash.c///1238019695/
+/u-boot.lds///1238019695/
+/u-boot.lds.debug///1238019695/
diff -Naur u-boot-2009.03_orig/board/etx094/CVS/Entries.Extra.Old u-boot-2009.03/board/etx094/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/etx094/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/etx094/CVS/Entries.Extra.Old   2009-03-25 15:24:23.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019695/
+/config.mk///1238019695/
+/etx094.c///1238019695/
+/flash.c///1238019695/
+/u-boot.lds///1238019695/
+/u-boot.lds.debug///1238019695/
diff -Naur u-boot-2009.03_orig/board/etx094/CVS/Entries.Old u-boot-2009.03/board/etx094/CVS/Entries.Old
--- u-boot-2009.03_orig/board/etx094/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/etx094/CVS/Entries.Old 2009-03-25 15:24:23.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/etx094.c/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/u-boot.lds.debug/1.1.1.1/Wed Mar 25 22:21:35 2009//
+D
diff -Naur u-boot-2009.03_orig/board/etx094/CVS/Repository u-boot-2009.03/board/etx094/CVS/Repository
--- u-boot-2009.03_orig/board/etx094/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/etx094/CVS/Repository  2009-03-25 15:24:23.587992600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/etx094
diff -Naur u-boot-2009.03_orig/board/etx094/CVS/Root u-boot-2009.03/board/etx094/CVS/Root
--- u-boot-2009.03_orig/board/etx094/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/etx094/CVS/Root        2009-03-25 15:24:23.572367800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/evb4510/CVS/Entries u-boot-2009.03/board/evb4510/CVS/Entries
--- u-boot-2009.03_orig/board/evb4510/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/evb4510/CVS/Entries    2009-03-25 15:57:22.215763000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/evb4510.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/evb4510/CVS/Entries.Extra u-boot-2009.03/board/evb4510/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/evb4510/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/evb4510/CVS/Entries.Extra      2009-03-25 15:57:22.215763000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019695/
+/config.mk///1238019695/
+/evb4510.c///1238019695/
+/flash.c///1238019695/
+/lowlevel_init.S///1238019695/
+/u-boot.lds///1238019695/
diff -Naur u-boot-2009.03_orig/board/evb4510/CVS/Entries.Extra.Old u-boot-2009.03/board/evb4510/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/evb4510/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/evb4510/CVS/Entries.Extra.Old  2009-03-25 15:24:23.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019695/
+/config.mk///1238019695/
+/evb4510.c///1238019695/
+/flash.c///1238019695/
+/lowlevel_init.S///1238019695/
+/u-boot.lds///1238019695/
diff -Naur u-boot-2009.03_orig/board/evb4510/CVS/Entries.Old u-boot-2009.03/board/evb4510/CVS/Entries.Old
--- u-boot-2009.03_orig/board/evb4510/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/evb4510/CVS/Entries.Old        2009-03-25 15:24:23.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/evb4510.c/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:35 2009//
+D
diff -Naur u-boot-2009.03_orig/board/evb4510/CVS/Repository u-boot-2009.03/board/evb4510/CVS/Repository
--- u-boot-2009.03_orig/board/evb4510/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/evb4510/CVS/Repository 2009-03-25 15:24:23.697366200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/evb4510
diff -Naur u-boot-2009.03_orig/board/evb4510/CVS/Root u-boot-2009.03/board/evb4510/CVS/Root
--- u-boot-2009.03_orig/board/evb4510/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/evb4510/CVS/Root       2009-03-25 15:24:23.697366200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/evb64260/CVS/Entries u-boot-2009.03/board/evb64260/CVS/Entries
--- u-boot-2009.03_orig/board/evb64260/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/evb64260/CVS/Entries   2009-03-25 15:57:22.450136500 -0700
@@ -0,0 +1,30 @@
+/64260.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bootseq.txt/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ecctest.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/eth.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/eth.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/eth_addrtbl.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/eth_addrtbl.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/evb64260.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/i2c.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/i2c.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/intel_flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/intel_flash.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/local.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/memory.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/misc.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpsc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpsc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sdram_init.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/zuma_pbb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/zuma_pbb.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/zuma_pbb_mbox.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/zuma_pbb_mbox.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/evb64260/CVS/Entries.Extra u-boot-2009.03/board/evb64260/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/evb64260/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/evb64260/CVS/Entries.Extra     2009-03-25 15:57:22.450136500 -0700
@@ -0,0 +1,29 @@
+/64260.h///1238019695/
+/Makefile///1238019695/
+/bootseq.txt///1238019695/
+/config.mk///1238019695/
+/ecctest.c///1238019695/
+/eth.c///1238019695/
+/eth.h///1238019695/
+/eth_addrtbl.c///1238019695/
+/eth_addrtbl.h///1238019695/
+/evb64260.c///1238019695/
+/flash.c///1238019695/
+/i2c.c///1238019695/
+/i2c.h///1238019695/
+/intel_flash.c///1238019695/
+/intel_flash.h///1238019695/
+/local.h///1238019695/
+/memory.c///1238019695/
+/misc.S///1238019695/
+/mpsc.c///1238019695/
+/mpsc.h///1238019695/
+/pci.c///1238019695/
+/sdram_init.c///1238019695/
+/serial.c///1238019695/
+/serial.h///1238019695/
+/u-boot.lds///1238019695/
+/zuma_pbb.c///1238019695/
+/zuma_pbb.h///1238019695/
+/zuma_pbb_mbox.c///1238019695/
+/zuma_pbb_mbox.h///1238019695/
diff -Naur u-boot-2009.03_orig/board/evb64260/CVS/Entries.Extra.Old u-boot-2009.03/board/evb64260/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/evb64260/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/evb64260/CVS/Entries.Extra.Old 2009-03-25 15:24:24.000000000 -0700
@@ -0,0 +1,29 @@
+/64260.h///1238019695/
+/Makefile///1238019695/
+/bootseq.txt///1238019695/
+/config.mk///1238019695/
+/ecctest.c///1238019695/
+/eth.c///1238019695/
+/eth.h///1238019695/
+/eth_addrtbl.c///1238019695/
+/eth_addrtbl.h///1238019695/
+/evb64260.c///1238019695/
+/flash.c///1238019695/
+/i2c.c///1238019695/
+/i2c.h///1238019695/
+/intel_flash.c///1238019695/
+/intel_flash.h///1238019695/
+/local.h///1238019695/
+/memory.c///1238019695/
+/misc.S///1238019695/
+/mpsc.c///1238019695/
+/mpsc.h///1238019695/
+/pci.c///1238019695/
+/sdram_init.c///1238019695/
+/serial.c///1238019695/
+/serial.h///1238019695/
+/u-boot.lds///1238019695/
+/zuma_pbb.c///1238019695/
+/zuma_pbb.h///1238019695/
+/zuma_pbb_mbox.c///1238019695/
+/zuma_pbb_mbox.h///1238019695/
diff -Naur u-boot-2009.03_orig/board/evb64260/CVS/Entries.Old u-boot-2009.03/board/evb64260/CVS/Entries.Old
--- u-boot-2009.03_orig/board/evb64260/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/evb64260/CVS/Entries.Old       2009-03-25 15:24:24.000000000 -0700
@@ -0,0 +1,30 @@
+/64260.h/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/Makefile/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/bootseq.txt/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/ecctest.c/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/eth.c/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/eth.h/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/eth_addrtbl.c/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/eth_addrtbl.h/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/evb64260.c/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/i2c.c/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/i2c.h/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/intel_flash.c/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/intel_flash.h/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/local.h/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/memory.c/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/misc.S/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/mpsc.c/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/mpsc.h/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/pci.c/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/sdram_init.c/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/serial.c/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/serial.h/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/zuma_pbb.c/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/zuma_pbb.h/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/zuma_pbb_mbox.c/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/zuma_pbb_mbox.h/1.1.1.1/Wed Mar 25 22:21:35 2009//
+D
diff -Naur u-boot-2009.03_orig/board/evb64260/CVS/Repository u-boot-2009.03/board/evb64260/CVS/Repository
--- u-boot-2009.03_orig/board/evb64260/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/evb64260/CVS/Repository        2009-03-25 15:24:23.837989400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/evb64260
diff -Naur u-boot-2009.03_orig/board/evb64260/CVS/Root u-boot-2009.03/board/evb64260/CVS/Root
--- u-boot-2009.03_orig/board/evb64260/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/evb64260/CVS/Root      2009-03-25 15:24:23.837989400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/exbitgen/CVS/Entries u-boot-2009.03/board/exbitgen/CVS/Entries
--- u-boot-2009.03_orig/board/exbitgen/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/exbitgen/CVS/Entries   2009-03-25 15:57:22.543885900 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/exbitgen.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/exbitgen.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/exbitgen/CVS/Entries.Extra u-boot-2009.03/board/exbitgen/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/exbitgen/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/exbitgen/CVS/Entries.Extra     2009-03-25 15:57:22.543885900 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019695/
+/config.mk///1238019695/
+/exbitgen.c///1238019695/
+/exbitgen.h///1238019695/
+/flash.c///1238019695/
+/init.S///1238019695/
+/u-boot.lds///1238019695/
diff -Naur u-boot-2009.03_orig/board/exbitgen/CVS/Entries.Extra.Old u-boot-2009.03/board/exbitgen/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/exbitgen/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/exbitgen/CVS/Entries.Extra.Old 2009-03-25 15:24:24.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019695/
+/config.mk///1238019695/
+/exbitgen.c///1238019695/
+/exbitgen.h///1238019695/
+/flash.c///1238019695/
+/init.S///1238019695/
+/u-boot.lds///1238019695/
diff -Naur u-boot-2009.03_orig/board/exbitgen/CVS/Entries.Old u-boot-2009.03/board/exbitgen/CVS/Entries.Old
--- u-boot-2009.03_orig/board/exbitgen/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/exbitgen/CVS/Entries.Old       2009-03-25 15:24:24.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/exbitgen.c/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/exbitgen.h/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/init.S/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:35 2009//
+D
diff -Naur u-boot-2009.03_orig/board/exbitgen/CVS/Repository u-boot-2009.03/board/exbitgen/CVS/Repository
--- u-boot-2009.03_orig/board/exbitgen/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/exbitgen/CVS/Repository        2009-03-25 15:24:24.150485400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/exbitgen
diff -Naur u-boot-2009.03_orig/board/exbitgen/CVS/Root u-boot-2009.03/board/exbitgen/CVS/Root
--- u-boot-2009.03_orig/board/exbitgen/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/exbitgen/CVS/Root      2009-03-25 15:24:24.150485400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/fads/CVS/Entries u-boot-2009.03/board/fads/CVS/Entries
--- u-boot-2009.03_orig/board/fads/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/fads/CVS/Entries       2009-03-25 15:57:22.653260200 -0700
@@ -0,0 +1,10 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fads.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fads.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lamp.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pcmcia.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.debug/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/fads/CVS/Entries.Extra u-boot-2009.03/board/fads/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/fads/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/fads/CVS/Entries.Extra 2009-03-25 15:57:22.668885100 -0700
@@ -0,0 +1,9 @@
+/Makefile///1238019695/
+/config.mk///1238019695/
+/fads.c///1238019695/
+/fads.h///1238019695/
+/flash.c///1238019695/
+/lamp.c///1238019695/
+/pcmcia.c///1238019695/
+/u-boot.lds///1238019695/
+/u-boot.lds.debug///1238019695/
diff -Naur u-boot-2009.03_orig/board/fads/CVS/Entries.Extra.Old u-boot-2009.03/board/fads/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/fads/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/fads/CVS/Entries.Extra.Old     2009-03-25 15:24:24.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile///1238019695/
+/config.mk///1238019695/
+/fads.c///1238019695/
+/fads.h///1238019695/
+/flash.c///1238019695/
+/lamp.c///1238019695/
+/pcmcia.c///1238019695/
+/u-boot.lds///1238019695/
+/u-boot.lds.debug///1238019695/
diff -Naur u-boot-2009.03_orig/board/fads/CVS/Entries.Old u-boot-2009.03/board/fads/CVS/Entries.Old
--- u-boot-2009.03_orig/board/fads/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/fads/CVS/Entries.Old   2009-03-25 15:24:24.000000000 -0700
@@ -0,0 +1,10 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/fads.c/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/fads.h/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/lamp.c/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/pcmcia.c/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/u-boot.lds.debug/1.1.1.1/Wed Mar 25 22:21:35 2009//
+D
diff -Naur u-boot-2009.03_orig/board/fads/CVS/Repository u-boot-2009.03/board/fads/CVS/Repository
--- u-boot-2009.03_orig/board/fads/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/fads/CVS/Repository    2009-03-25 15:24:24.291108600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/fads
diff -Naur u-boot-2009.03_orig/board/fads/CVS/Root u-boot-2009.03/board/fads/CVS/Root
--- u-boot-2009.03_orig/board/fads/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/fads/CVS/Root  2009-03-25 15:24:24.291108600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/flagadm/CVS/Entries u-boot-2009.03/board/flagadm/CVS/Entries
--- u-boot-2009.03_orig/board/flagadm/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/flagadm/CVS/Entries    2009-03-25 15:57:22.762634500 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flagadm.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.debug/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/flagadm/CVS/Entries.Extra u-boot-2009.03/board/flagadm/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/flagadm/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/flagadm/CVS/Entries.Extra      2009-03-25 15:57:22.762634500 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019696/
+/config.mk///1238019695/
+/flagadm.c///1238019695/
+/flash.c///1238019696/
+/u-boot.lds///1238019696/
+/u-boot.lds.debug///1238019696/
diff -Naur u-boot-2009.03_orig/board/flagadm/CVS/Entries.Extra.Old u-boot-2009.03/board/flagadm/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/flagadm/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/flagadm/CVS/Entries.Extra.Old  2009-03-25 15:24:24.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019696/
+/config.mk///1238019695/
+/flagadm.c///1238019695/
+/flash.c///1238019696/
+/u-boot.lds///1238019696/
+/u-boot.lds.debug///1238019696/
diff -Naur u-boot-2009.03_orig/board/flagadm/CVS/Entries.Old u-boot-2009.03/board/flagadm/CVS/Entries.Old
--- u-boot-2009.03_orig/board/flagadm/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/flagadm/CVS/Entries.Old        2009-03-25 15:24:24.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/flagadm.c/1.1.1.1/Wed Mar 25 22:21:35 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/u-boot.lds.debug/1.1.1.1/Wed Mar 25 22:21:36 2009//
+D
diff -Naur u-boot-2009.03_orig/board/flagadm/CVS/Repository u-boot-2009.03/board/flagadm/CVS/Repository
--- u-boot-2009.03_orig/board/flagadm/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/flagadm/CVS/Repository 2009-03-25 15:24:24.712978200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/flagadm
diff -Naur u-boot-2009.03_orig/board/flagadm/CVS/Root u-boot-2009.03/board/flagadm/CVS/Root
--- u-boot-2009.03_orig/board/flagadm/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/flagadm/CVS/Root       2009-03-25 15:24:24.712978200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/freescale/CVS/Entries u-boot-2009.03/board/freescale/CVS/Entries
--- u-boot-2009.03_orig/board/freescale/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/CVS/Entries  2009-03-25 15:24:31.228519800 -0700
@@ -0,0 +1,42 @@
+D/common////
+D/m52277evb////
+D/m5235evb////
+D/m5249evb////
+D/m5253demo////
+D/m5253evbe////
+D/m5271evb////
+D/m5272c3////
+D/m5275evb////
+D/m5282evb////
+D/m53017evb////
+D/m5329evb////
+D/m5373evb////
+D/m54451evb////
+D/m54455evb////
+D/m547xevb////
+D/m548xevb////
+D/mpc7448hpc2////
+D/mpc8260ads////
+D/mpc8266ads////
+D/mpc8313erdb////
+D/mpc8315erdb////
+D/mpc8323erdb////
+D/mpc832xemds////
+D/mpc8349emds////
+D/mpc8349itx////
+D/mpc8360emds////
+D/mpc8360erdk////
+D/mpc837xemds////
+D/mpc837xerdb////
+D/mpc8536ds////
+D/mpc8540ads////
+D/mpc8541cds////
+D/mpc8544ds////
+D/mpc8548cds////
+D/mpc8555cds////
+D/mpc8560ads////
+D/mpc8568mds////
+D/mpc8572ds////
+D/mpc8610hpcd////
+D/mpc8641hpcn////
+D/mx31ads////
diff -Naur u-boot-2009.03_orig/board/freescale/CVS/Entries.Extra u-boot-2009.03/board/freescale/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/freescale/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/CVS/Entries.Extra    2009-03-25 15:24:31.228519800 -0700
@@ -0,0 +1,42 @@
+D/common////
+D/m52277evb////
+D/m5235evb////
+D/m5249evb////
+D/m5253demo////
+D/m5253evbe////
+D/m5271evb////
+D/m5272c3////
+D/m5275evb////
+D/m5282evb////
+D/m53017evb////
+D/m5329evb////
+D/m5373evb////
+D/m54451evb////
+D/m54455evb////
+D/m547xevb////
+D/m548xevb////
+D/mpc7448hpc2////
+D/mpc8260ads////
+D/mpc8266ads////
+D/mpc8313erdb////
+D/mpc8315erdb////
+D/mpc8323erdb////
+D/mpc832xemds////
+D/mpc8349emds////
+D/mpc8349itx////
+D/mpc8360emds////
+D/mpc8360erdk////
+D/mpc837xemds////
+D/mpc837xerdb////
+D/mpc8536ds////
+D/mpc8540ads////
+D/mpc8541cds////
+D/mpc8544ds////
+D/mpc8548cds////
+D/mpc8555cds////
+D/mpc8560ads////
+D/mpc8568mds////
+D/mpc8572ds////
+D/mpc8610hpcd////
+D/mpc8641hpcn////
+D/mx31ads////
diff -Naur u-boot-2009.03_orig/board/freescale/CVS/Repository u-boot-2009.03/board/freescale/CVS/Repository
--- u-boot-2009.03_orig/board/freescale/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/CVS/Repository       2009-03-25 15:24:24.837976600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/freescale
diff -Naur u-boot-2009.03_orig/board/freescale/CVS/Root u-boot-2009.03/board/freescale/CVS/Root
--- u-boot-2009.03_orig/board/freescale/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/CVS/Root     2009-03-25 15:24:24.837976600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/freescale/common/CVS/Entries u-boot-2009.03/board/freescale/common/CVS/Entries
--- u-boot-2009.03_orig/board/freescale/common/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/common/CVS/Entries   2009-03-25 15:57:22.950133300 -0700
@@ -0,0 +1,18 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cadmus.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cadmus.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cds_pci_ft.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cds_via.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/eeprom.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fsl_diu_fb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fsl_diu_fb.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fsl_logo_bmp.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pixis.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pixis.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pq-mds-pib.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pq-mds-pib.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sgmii_riser.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sgmii_riser.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sys_eeprom.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/via.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/common/CVS/Entries.Extra u-boot-2009.03/board/freescale/common/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/freescale/common/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/common/CVS/Entries.Extra     2009-03-25 15:57:22.950133300 -0700
@@ -0,0 +1,17 @@
+/Makefile///1238019696/
+/cadmus.c///1238019696/
+/cadmus.h///1238019696/
+/cds_pci_ft.c///1238019696/
+/cds_via.c///1238019696/
+/eeprom.h///1238019696/
+/fsl_diu_fb.c///1238019696/
+/fsl_diu_fb.h///1238019696/
+/fsl_logo_bmp.c///1238019696/
+/pixis.c///1238019696/
+/pixis.h///1238019696/
+/pq-mds-pib.c///1238019696/
+/pq-mds-pib.h///1238019696/
+/sgmii_riser.c///1238019696/
+/sgmii_riser.h///1238019696/
+/sys_eeprom.c///1238019696/
+/via.h///1238019696/
diff -Naur u-boot-2009.03_orig/board/freescale/common/CVS/Entries.Extra.Old u-boot-2009.03/board/freescale/common/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/freescale/common/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/common/CVS/Entries.Extra.Old 2009-03-25 15:24:25.000000000 -0700
@@ -0,0 +1,17 @@
+/Makefile///1238019696/
+/cadmus.c///1238019696/
+/cadmus.h///1238019696/
+/cds_pci_ft.c///1238019696/
+/cds_via.c///1238019696/
+/eeprom.h///1238019696/
+/fsl_diu_fb.c///1238019696/
+/fsl_diu_fb.h///1238019696/
+/fsl_logo_bmp.c///1238019696/
+/pixis.c///1238019696/
+/pixis.h///1238019696/
+/pq-mds-pib.c///1238019696/
+/pq-mds-pib.h///1238019696/
+/sgmii_riser.c///1238019696/
+/sgmii_riser.h///1238019696/
+/sys_eeprom.c///1238019696/
+/via.h///1238019696/
diff -Naur u-boot-2009.03_orig/board/freescale/common/CVS/Entries.Old u-boot-2009.03/board/freescale/common/CVS/Entries.Old
--- u-boot-2009.03_orig/board/freescale/common/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/common/CVS/Entries.Old       2009-03-25 15:24:25.000000000 -0700
@@ -0,0 +1,18 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/cadmus.c/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/cadmus.h/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/cds_pci_ft.c/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/cds_via.c/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/eeprom.h/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/fsl_diu_fb.c/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/fsl_diu_fb.h/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/fsl_logo_bmp.c/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/pixis.c/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/pixis.h/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/pq-mds-pib.c/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/pq-mds-pib.h/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/sgmii_riser.c/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/sgmii_riser.h/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/sys_eeprom.c/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/via.h/1.1.1.1/Wed Mar 25 22:21:36 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/common/CVS/Repository u-boot-2009.03/board/freescale/common/CVS/Repository
--- u-boot-2009.03_orig/board/freescale/common/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/common/CVS/Repository        2009-03-25 15:24:24.869226200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/freescale/common
diff -Naur u-boot-2009.03_orig/board/freescale/common/CVS/Root u-boot-2009.03/board/freescale/common/CVS/Root
--- u-boot-2009.03_orig/board/freescale/common/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/common/CVS/Root      2009-03-25 15:24:24.869226200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/freescale/m52277evb/CVS/Entries u-boot-2009.03/board/freescale/m52277evb/CVS/Entries
--- u-boot-2009.03_orig/board/freescale/m52277evb/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m52277evb/CVS/Entries        2009-03-25 15:57:23.028257800 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/m52277evb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.spa/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.stm/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/m52277evb/CVS/Entries.Extra u-boot-2009.03/board/freescale/m52277evb/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/freescale/m52277evb/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m52277evb/CVS/Entries.Extra  2009-03-25 15:57:23.043882700 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019696/
+/config.mk///1238019696/
+/m52277evb.c///1238019696/
+/u-boot.spa///1238019696/
+/u-boot.stm///1238019696/
diff -Naur u-boot-2009.03_orig/board/freescale/m52277evb/CVS/Entries.Extra.Old u-boot-2009.03/board/freescale/m52277evb/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/freescale/m52277evb/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m52277evb/CVS/Entries.Extra.Old      2009-03-25 15:24:25.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019696/
+/config.mk///1238019696/
+/m52277evb.c///1238019696/
+/u-boot.spa///1238019696/
+/u-boot.stm///1238019696/
diff -Naur u-boot-2009.03_orig/board/freescale/m52277evb/CVS/Entries.Old u-boot-2009.03/board/freescale/m52277evb/CVS/Entries.Old
--- u-boot-2009.03_orig/board/freescale/m52277evb/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m52277evb/CVS/Entries.Old    2009-03-25 15:24:25.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/m52277evb.c/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/u-boot.spa/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/u-boot.stm/1.1.1.1/Wed Mar 25 22:21:36 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/m52277evb/CVS/Repository u-boot-2009.03/board/freescale/m52277evb/CVS/Repository
--- u-boot-2009.03_orig/board/freescale/m52277evb/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m52277evb/CVS/Repository     2009-03-25 15:24:25.072348600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/freescale/m52277evb
diff -Naur u-boot-2009.03_orig/board/freescale/m52277evb/CVS/Root u-boot-2009.03/board/freescale/m52277evb/CVS/Root
--- u-boot-2009.03_orig/board/freescale/m52277evb/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m52277evb/CVS/Root   2009-03-25 15:24:25.072348600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/freescale/m5235evb/CVS/Entries u-boot-2009.03/board/freescale/m5235evb/CVS/Entries
--- u-boot-2009.03_orig/board/freescale/m5235evb/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5235evb/CVS/Entries 2009-03-25 15:57:23.168881900 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/m5235evb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.16/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.32/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/m5235evb/CVS/Entries.Extra u-boot-2009.03/board/freescale/m5235evb/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/freescale/m5235evb/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5235evb/CVS/Entries.Extra   2009-03-25 15:57:23.168881900 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019696/
+/config.mk///1238019696/
+/m5235evb.c///1238019696/
+/u-boot.16///1238019696/
+/u-boot.32///1238019696/
diff -Naur u-boot-2009.03_orig/board/freescale/m5235evb/CVS/Entries.Extra.Old u-boot-2009.03/board/freescale/m5235evb/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/freescale/m5235evb/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5235evb/CVS/Entries.Extra.Old       2009-03-25 15:24:25.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019696/
+/config.mk///1238019696/
+/m5235evb.c///1238019696/
+/u-boot.16///1238019696/
+/u-boot.32///1238019696/
diff -Naur u-boot-2009.03_orig/board/freescale/m5235evb/CVS/Entries.Old u-boot-2009.03/board/freescale/m5235evb/CVS/Entries.Old
--- u-boot-2009.03_orig/board/freescale/m5235evb/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5235evb/CVS/Entries.Old     2009-03-25 15:24:25.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/m5235evb.c/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/u-boot.16/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/u-boot.32/1.1.1.1/Wed Mar 25 22:21:36 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/m5235evb/CVS/Repository u-boot-2009.03/board/freescale/m5235evb/CVS/Repository
--- u-boot-2009.03_orig/board/freescale/m5235evb/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5235evb/CVS/Repository      2009-03-25 15:24:25.181722200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/freescale/m5235evb
diff -Naur u-boot-2009.03_orig/board/freescale/m5235evb/CVS/Root u-boot-2009.03/board/freescale/m5235evb/CVS/Root
--- u-boot-2009.03_orig/board/freescale/m5235evb/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5235evb/CVS/Root    2009-03-25 15:24:25.181722200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/freescale/m5249evb/CVS/Entries u-boot-2009.03/board/freescale/m5249evb/CVS/Entries
--- u-boot-2009.03_orig/board/freescale/m5249evb/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5249evb/CVS/Entries 2009-03-25 15:57:23.247006400 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/m5249evb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/m5249evb/CVS/Entries.Extra u-boot-2009.03/board/freescale/m5249evb/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/freescale/m5249evb/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5249evb/CVS/Entries.Extra   2009-03-25 15:57:23.247006400 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019696/
+/config.mk///1238019696/
+/m5249evb.c///1238019696/
+/u-boot.lds///1238019696/
diff -Naur u-boot-2009.03_orig/board/freescale/m5249evb/CVS/Entries.Extra.Old u-boot-2009.03/board/freescale/m5249evb/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/freescale/m5249evb/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5249evb/CVS/Entries.Extra.Old       2009-03-25 15:24:25.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019696/
+/config.mk///1238019696/
+/m5249evb.c///1238019696/
+/u-boot.lds///1238019696/
diff -Naur u-boot-2009.03_orig/board/freescale/m5249evb/CVS/Entries.Old u-boot-2009.03/board/freescale/m5249evb/CVS/Entries.Old
--- u-boot-2009.03_orig/board/freescale/m5249evb/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5249evb/CVS/Entries.Old     2009-03-25 15:24:25.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/m5249evb.c/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:36 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/m5249evb/CVS/Repository u-boot-2009.03/board/freescale/m5249evb/CVS/Repository
--- u-boot-2009.03_orig/board/freescale/m5249evb/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5249evb/CVS/Repository      2009-03-25 15:24:25.291095800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/freescale/m5249evb
diff -Naur u-boot-2009.03_orig/board/freescale/m5249evb/CVS/Root u-boot-2009.03/board/freescale/m5249evb/CVS/Root
--- u-boot-2009.03_orig/board/freescale/m5249evb/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5249evb/CVS/Root    2009-03-25 15:24:25.291095800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/freescale/m5253demo/CVS/Entries u-boot-2009.03/board/freescale/m5253demo/CVS/Entries
--- u-boot-2009.03_orig/board/freescale/m5253demo/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5253demo/CVS/Entries        2009-03-25 15:57:23.325130900 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/m5253demo.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/m5253demo/CVS/Entries.Extra u-boot-2009.03/board/freescale/m5253demo/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/freescale/m5253demo/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5253demo/CVS/Entries.Extra  2009-03-25 15:57:23.325130900 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019696/
+/config.mk///1238019696/
+/flash.c///1238019696/
+/m5253demo.c///1238019696/
+/u-boot.lds///1238019696/
diff -Naur u-boot-2009.03_orig/board/freescale/m5253demo/CVS/Entries.Extra.Old u-boot-2009.03/board/freescale/m5253demo/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/freescale/m5253demo/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5253demo/CVS/Entries.Extra.Old      2009-03-25 15:24:25.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019696/
+/config.mk///1238019696/
+/flash.c///1238019696/
+/m5253demo.c///1238019696/
+/u-boot.lds///1238019696/
diff -Naur u-boot-2009.03_orig/board/freescale/m5253demo/CVS/Entries.Old u-boot-2009.03/board/freescale/m5253demo/CVS/Entries.Old
--- u-boot-2009.03_orig/board/freescale/m5253demo/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5253demo/CVS/Entries.Old    2009-03-25 15:24:25.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/m5253demo.c/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:36 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/m5253demo/CVS/Repository u-boot-2009.03/board/freescale/m5253demo/CVS/Repository
--- u-boot-2009.03_orig/board/freescale/m5253demo/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5253demo/CVS/Repository     2009-03-25 15:24:25.556717400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/freescale/m5253demo
diff -Naur u-boot-2009.03_orig/board/freescale/m5253demo/CVS/Root u-boot-2009.03/board/freescale/m5253demo/CVS/Root
--- u-boot-2009.03_orig/board/freescale/m5253demo/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5253demo/CVS/Root   2009-03-25 15:24:25.556717400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/freescale/m5253evbe/CVS/Entries u-boot-2009.03/board/freescale/m5253evbe/CVS/Entries
--- u-boot-2009.03_orig/board/freescale/m5253evbe/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5253evbe/CVS/Entries        2009-03-25 15:57:23.387630500 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/m5253evbe.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/m5253evbe/CVS/Entries.Extra u-boot-2009.03/board/freescale/m5253evbe/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/freescale/m5253evbe/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5253evbe/CVS/Entries.Extra  2009-03-25 15:57:23.387630500 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019696/
+/config.mk///1238019696/
+/m5253evbe.c///1238019696/
+/u-boot.lds///1238019696/
diff -Naur u-boot-2009.03_orig/board/freescale/m5253evbe/CVS/Entries.Extra.Old u-boot-2009.03/board/freescale/m5253evbe/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/freescale/m5253evbe/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5253evbe/CVS/Entries.Extra.Old      2009-03-25 15:24:25.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019696/
+/config.mk///1238019696/
+/m5253evbe.c///1238019696/
+/u-boot.lds///1238019696/
diff -Naur u-boot-2009.03_orig/board/freescale/m5253evbe/CVS/Entries.Old u-boot-2009.03/board/freescale/m5253evbe/CVS/Entries.Old
--- u-boot-2009.03_orig/board/freescale/m5253evbe/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5253evbe/CVS/Entries.Old    2009-03-25 15:24:25.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/m5253evbe.c/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:36 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/m5253evbe/CVS/Repository u-boot-2009.03/board/freescale/m5253evbe/CVS/Repository
--- u-boot-2009.03_orig/board/freescale/m5253evbe/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5253evbe/CVS/Repository     2009-03-25 15:24:25.712965400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/freescale/m5253evbe
diff -Naur u-boot-2009.03_orig/board/freescale/m5253evbe/CVS/Root u-boot-2009.03/board/freescale/m5253evbe/CVS/Root
--- u-boot-2009.03_orig/board/freescale/m5253evbe/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5253evbe/CVS/Root   2009-03-25 15:24:25.697340600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/freescale/m5271evb/CVS/Entries u-boot-2009.03/board/freescale/m5271evb/CVS/Entries
--- u-boot-2009.03_orig/board/freescale/m5271evb/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5271evb/CVS/Entries 2009-03-25 15:57:23.465755000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/m5271evb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/m5271evb/CVS/Entries.Extra u-boot-2009.03/board/freescale/m5271evb/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/freescale/m5271evb/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5271evb/CVS/Entries.Extra   2009-03-25 15:57:23.465755000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019696/
+/config.mk///1238019696/
+/m5271evb.c///1238019696/
+/u-boot.lds///1238019696/
diff -Naur u-boot-2009.03_orig/board/freescale/m5271evb/CVS/Entries.Extra.Old u-boot-2009.03/board/freescale/m5271evb/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/freescale/m5271evb/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5271evb/CVS/Entries.Extra.Old       2009-03-25 15:24:25.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019696/
+/config.mk///1238019696/
+/m5271evb.c///1238019696/
+/u-boot.lds///1238019696/
diff -Naur u-boot-2009.03_orig/board/freescale/m5271evb/CVS/Entries.Old u-boot-2009.03/board/freescale/m5271evb/CVS/Entries.Old
--- u-boot-2009.03_orig/board/freescale/m5271evb/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5271evb/CVS/Entries.Old     2009-03-25 15:24:25.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/m5271evb.c/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:36 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/m5271evb/CVS/Repository u-boot-2009.03/board/freescale/m5271evb/CVS/Repository
--- u-boot-2009.03_orig/board/freescale/m5271evb/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5271evb/CVS/Repository      2009-03-25 15:24:25.806714200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/freescale/m5271evb
diff -Naur u-boot-2009.03_orig/board/freescale/m5271evb/CVS/Root u-boot-2009.03/board/freescale/m5271evb/CVS/Root
--- u-boot-2009.03_orig/board/freescale/m5271evb/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5271evb/CVS/Root    2009-03-25 15:24:25.806714200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/freescale/m5272c3/CVS/Entries u-boot-2009.03/board/freescale/m5272c3/CVS/Entries
--- u-boot-2009.03_orig/board/freescale/m5272c3/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5272c3/CVS/Entries  2009-03-25 15:57:23.543879500 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/m5272c3.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/m5272c3/CVS/Entries.Extra u-boot-2009.03/board/freescale/m5272c3/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/freescale/m5272c3/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5272c3/CVS/Entries.Extra    2009-03-25 15:57:23.543879500 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019696/
+/config.mk///1238019696/
+/m5272c3.c///1238019696/
+/u-boot.lds///1238019696/
diff -Naur u-boot-2009.03_orig/board/freescale/m5272c3/CVS/Entries.Extra.Old u-boot-2009.03/board/freescale/m5272c3/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/freescale/m5272c3/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5272c3/CVS/Entries.Extra.Old        2009-03-25 15:24:25.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019696/
+/config.mk///1238019696/
+/m5272c3.c///1238019696/
+/u-boot.lds///1238019696/
diff -Naur u-boot-2009.03_orig/board/freescale/m5272c3/CVS/Entries.Old u-boot-2009.03/board/freescale/m5272c3/CVS/Entries.Old
--- u-boot-2009.03_orig/board/freescale/m5272c3/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5272c3/CVS/Entries.Old      2009-03-25 15:24:25.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/m5272c3.c/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:36 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/m5272c3/CVS/Repository u-boot-2009.03/board/freescale/m5272c3/CVS/Repository
--- u-boot-2009.03_orig/board/freescale/m5272c3/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5272c3/CVS/Repository       2009-03-25 15:24:25.916087800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/freescale/m5272c3
diff -Naur u-boot-2009.03_orig/board/freescale/m5272c3/CVS/Root u-boot-2009.03/board/freescale/m5272c3/CVS/Root
--- u-boot-2009.03_orig/board/freescale/m5272c3/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5272c3/CVS/Root     2009-03-25 15:24:25.900463000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/freescale/m5275evb/CVS/Entries u-boot-2009.03/board/freescale/m5275evb/CVS/Entries
--- u-boot-2009.03_orig/board/freescale/m5275evb/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5275evb/CVS/Entries 2009-03-25 15:57:23.622004000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/m5275evb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/m5275evb/CVS/Entries.Extra u-boot-2009.03/board/freescale/m5275evb/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/freescale/m5275evb/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5275evb/CVS/Entries.Extra   2009-03-25 15:57:23.622004000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019696/
+/config.mk///1238019696/
+/m5275evb.c///1238019696/
+/u-boot.lds///1238019696/
diff -Naur u-boot-2009.03_orig/board/freescale/m5275evb/CVS/Entries.Extra.Old u-boot-2009.03/board/freescale/m5275evb/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/freescale/m5275evb/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5275evb/CVS/Entries.Extra.Old       2009-03-25 15:24:26.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019696/
+/config.mk///1238019696/
+/m5275evb.c///1238019696/
+/u-boot.lds///1238019696/
diff -Naur u-boot-2009.03_orig/board/freescale/m5275evb/CVS/Entries.Old u-boot-2009.03/board/freescale/m5275evb/CVS/Entries.Old
--- u-boot-2009.03_orig/board/freescale/m5275evb/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5275evb/CVS/Entries.Old     2009-03-25 15:24:26.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/m5275evb.c/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:36 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/m5275evb/CVS/Repository u-boot-2009.03/board/freescale/m5275evb/CVS/Repository
--- u-boot-2009.03_orig/board/freescale/m5275evb/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5275evb/CVS/Repository      2009-03-25 15:24:26.009836600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/freescale/m5275evb
diff -Naur u-boot-2009.03_orig/board/freescale/m5275evb/CVS/Root u-boot-2009.03/board/freescale/m5275evb/CVS/Root
--- u-boot-2009.03_orig/board/freescale/m5275evb/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5275evb/CVS/Root    2009-03-25 15:24:26.009836600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/freescale/m5282evb/CVS/Entries u-boot-2009.03/board/freescale/m5282evb/CVS/Entries
--- u-boot-2009.03_orig/board/freescale/m5282evb/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5282evb/CVS/Entries 2009-03-25 15:57:23.700128500 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/m5282evb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/m5282evb/CVS/Entries.Extra u-boot-2009.03/board/freescale/m5282evb/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/freescale/m5282evb/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5282evb/CVS/Entries.Extra   2009-03-25 15:57:23.700128500 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019696/
+/config.mk///1238019696/
+/m5282evb.c///1238019696/
+/u-boot.lds///1238019696/
diff -Naur u-boot-2009.03_orig/board/freescale/m5282evb/CVS/Entries.Extra.Old u-boot-2009.03/board/freescale/m5282evb/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/freescale/m5282evb/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5282evb/CVS/Entries.Extra.Old       2009-03-25 15:24:26.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019696/
+/config.mk///1238019696/
+/m5282evb.c///1238019696/
+/u-boot.lds///1238019696/
diff -Naur u-boot-2009.03_orig/board/freescale/m5282evb/CVS/Entries.Old u-boot-2009.03/board/freescale/m5282evb/CVS/Entries.Old
--- u-boot-2009.03_orig/board/freescale/m5282evb/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5282evb/CVS/Entries.Old     2009-03-25 15:24:26.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/m5282evb.c/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:36 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/m5282evb/CVS/Repository u-boot-2009.03/board/freescale/m5282evb/CVS/Repository
--- u-boot-2009.03_orig/board/freescale/m5282evb/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5282evb/CVS/Repository      2009-03-25 15:24:26.103585400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/freescale/m5282evb
diff -Naur u-boot-2009.03_orig/board/freescale/m5282evb/CVS/Root u-boot-2009.03/board/freescale/m5282evb/CVS/Root
--- u-boot-2009.03_orig/board/freescale/m5282evb/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5282evb/CVS/Root    2009-03-25 15:24:26.103585400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/freescale/m53017evb/CVS/Entries u-boot-2009.03/board/freescale/m53017evb/CVS/Entries
--- u-boot-2009.03_orig/board/freescale/m53017evb/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m53017evb/CVS/Entries        2009-03-25 15:57:23.793877900 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/m53017evb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/m53017evb/CVS/Entries.Extra u-boot-2009.03/board/freescale/m53017evb/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/freescale/m53017evb/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m53017evb/CVS/Entries.Extra  2009-03-25 15:57:23.793877900 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019696/
+/config.mk///1238019696/
+/m53017evb.c///1238019696/
+/u-boot.lds///1238019696/
diff -Naur u-boot-2009.03_orig/board/freescale/m53017evb/CVS/Entries.Extra.Old u-boot-2009.03/board/freescale/m53017evb/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/freescale/m53017evb/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m53017evb/CVS/Entries.Extra.Old      2009-03-25 15:24:26.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019696/
+/config.mk///1238019696/
+/m53017evb.c///1238019696/
+/u-boot.lds///1238019696/
diff -Naur u-boot-2009.03_orig/board/freescale/m53017evb/CVS/Entries.Old u-boot-2009.03/board/freescale/m53017evb/CVS/Entries.Old
--- u-boot-2009.03_orig/board/freescale/m53017evb/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m53017evb/CVS/Entries.Old    2009-03-25 15:24:26.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/m53017evb.c/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:36 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/m53017evb/CVS/Repository u-boot-2009.03/board/freescale/m53017evb/CVS/Repository
--- u-boot-2009.03_orig/board/freescale/m53017evb/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m53017evb/CVS/Repository     2009-03-25 15:24:26.181709400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/freescale/m53017evb
diff -Naur u-boot-2009.03_orig/board/freescale/m53017evb/CVS/Root u-boot-2009.03/board/freescale/m53017evb/CVS/Root
--- u-boot-2009.03_orig/board/freescale/m53017evb/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m53017evb/CVS/Root   2009-03-25 15:24:26.181709400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/freescale/m5329evb/CVS/Entries u-boot-2009.03/board/freescale/m5329evb/CVS/Entries
--- u-boot-2009.03_orig/board/freescale/m5329evb/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5329evb/CVS/Entries 2009-03-25 15:57:23.872002400 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/m5329evb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nand.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/m5329evb/CVS/Entries.Extra u-boot-2009.03/board/freescale/m5329evb/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/freescale/m5329evb/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5329evb/CVS/Entries.Extra   2009-03-25 15:57:23.872002400 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019696/
+/config.mk///1238019696/
+/m5329evb.c///1238019696/
+/nand.c///1238019696/
+/u-boot.lds///1238019696/
diff -Naur u-boot-2009.03_orig/board/freescale/m5329evb/CVS/Entries.Extra.Old u-boot-2009.03/board/freescale/m5329evb/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/freescale/m5329evb/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5329evb/CVS/Entries.Extra.Old       2009-03-25 15:24:26.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019696/
+/config.mk///1238019696/
+/m5329evb.c///1238019696/
+/nand.c///1238019696/
+/u-boot.lds///1238019696/
diff -Naur u-boot-2009.03_orig/board/freescale/m5329evb/CVS/Entries.Old u-boot-2009.03/board/freescale/m5329evb/CVS/Entries.Old
--- u-boot-2009.03_orig/board/freescale/m5329evb/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5329evb/CVS/Entries.Old     2009-03-25 15:24:26.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/m5329evb.c/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/nand.c/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:36 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/m5329evb/CVS/Repository u-boot-2009.03/board/freescale/m5329evb/CVS/Repository
--- u-boot-2009.03_orig/board/freescale/m5329evb/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5329evb/CVS/Repository      2009-03-25 15:24:26.291083000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/freescale/m5329evb
diff -Naur u-boot-2009.03_orig/board/freescale/m5329evb/CVS/Root u-boot-2009.03/board/freescale/m5329evb/CVS/Root
--- u-boot-2009.03_orig/board/freescale/m5329evb/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5329evb/CVS/Root    2009-03-25 15:24:26.291083000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/freescale/m5373evb/CVS/Entries u-boot-2009.03/board/freescale/m5373evb/CVS/Entries
--- u-boot-2009.03_orig/board/freescale/m5373evb/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5373evb/CVS/Entries 2009-03-25 15:57:23.965751800 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/m5373evb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nand.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/m5373evb/CVS/Entries.Extra u-boot-2009.03/board/freescale/m5373evb/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/freescale/m5373evb/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5373evb/CVS/Entries.Extra   2009-03-25 15:57:23.965751800 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019696/
+/config.mk///1238019696/
+/m5373evb.c///1238019696/
+/nand.c///1238019696/
+/u-boot.lds///1238019696/
diff -Naur u-boot-2009.03_orig/board/freescale/m5373evb/CVS/Entries.Extra.Old u-boot-2009.03/board/freescale/m5373evb/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/freescale/m5373evb/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5373evb/CVS/Entries.Extra.Old       2009-03-25 15:24:26.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019696/
+/config.mk///1238019696/
+/m5373evb.c///1238019696/
+/nand.c///1238019696/
+/u-boot.lds///1238019696/
diff -Naur u-boot-2009.03_orig/board/freescale/m5373evb/CVS/Entries.Old u-boot-2009.03/board/freescale/m5373evb/CVS/Entries.Old
--- u-boot-2009.03_orig/board/freescale/m5373evb/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5373evb/CVS/Entries.Old     2009-03-25 15:24:26.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/m5373evb.c/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/nand.c/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:36 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/m5373evb/CVS/Repository u-boot-2009.03/board/freescale/m5373evb/CVS/Repository
--- u-boot-2009.03_orig/board/freescale/m5373evb/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5373evb/CVS/Repository      2009-03-25 15:24:26.634828600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/freescale/m5373evb
diff -Naur u-boot-2009.03_orig/board/freescale/m5373evb/CVS/Root u-boot-2009.03/board/freescale/m5373evb/CVS/Root
--- u-boot-2009.03_orig/board/freescale/m5373evb/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m5373evb/CVS/Root    2009-03-25 15:24:26.634828600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/freescale/m54451evb/CVS/Entries u-boot-2009.03/board/freescale/m54451evb/CVS/Entries
--- u-boot-2009.03_orig/board/freescale/m54451evb/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m54451evb/CVS/Entries        2009-03-25 15:57:24.043876300 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/m54451evb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.spa/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.stm/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/m54451evb/CVS/Entries.Extra u-boot-2009.03/board/freescale/m54451evb/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/freescale/m54451evb/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m54451evb/CVS/Entries.Extra  2009-03-25 15:57:24.043876300 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019696/
+/config.mk///1238019696/
+/m54451evb.c///1238019696/
+/u-boot.spa///1238019696/
+/u-boot.stm///1238019696/
diff -Naur u-boot-2009.03_orig/board/freescale/m54451evb/CVS/Entries.Extra.Old u-boot-2009.03/board/freescale/m54451evb/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/freescale/m54451evb/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m54451evb/CVS/Entries.Extra.Old      2009-03-25 15:24:26.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019696/
+/config.mk///1238019696/
+/m54451evb.c///1238019696/
+/u-boot.spa///1238019696/
+/u-boot.stm///1238019696/
diff -Naur u-boot-2009.03_orig/board/freescale/m54451evb/CVS/Entries.Old u-boot-2009.03/board/freescale/m54451evb/CVS/Entries.Old
--- u-boot-2009.03_orig/board/freescale/m54451evb/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m54451evb/CVS/Entries.Old    2009-03-25 15:24:26.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/m54451evb.c/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/u-boot.spa/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/u-boot.stm/1.1.1.1/Wed Mar 25 22:21:36 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/m54451evb/CVS/Repository u-boot-2009.03/board/freescale/m54451evb/CVS/Repository
--- u-boot-2009.03_orig/board/freescale/m54451evb/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m54451evb/CVS/Repository     2009-03-25 15:24:26.884825400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/freescale/m54451evb
diff -Naur u-boot-2009.03_orig/board/freescale/m54451evb/CVS/Root u-boot-2009.03/board/freescale/m54451evb/CVS/Root
--- u-boot-2009.03_orig/board/freescale/m54451evb/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m54451evb/CVS/Root   2009-03-25 15:24:26.884825400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/freescale/m54455evb/CVS/Entries u-boot-2009.03/board/freescale/m54455evb/CVS/Entries
--- u-boot-2009.03_orig/board/freescale/m54455evb/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m54455evb/CVS/Entries        2009-03-25 15:57:24.200125300 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/m54455evb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.atm/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.int/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.stm/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/m54455evb/CVS/Entries.Extra u-boot-2009.03/board/freescale/m54455evb/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/freescale/m54455evb/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m54455evb/CVS/Entries.Extra  2009-03-25 15:57:24.200125300 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019696/
+/config.mk///1238019696/
+/m54455evb.c///1238019696/
+/u-boot.atm///1238019696/
+/u-boot.int///1238019696/
+/u-boot.stm///1238019697/
diff -Naur u-boot-2009.03_orig/board/freescale/m54455evb/CVS/Entries.Extra.Old u-boot-2009.03/board/freescale/m54455evb/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/freescale/m54455evb/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m54455evb/CVS/Entries.Extra.Old      2009-03-25 15:24:27.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019696/
+/config.mk///1238019696/
+/m54455evb.c///1238019696/
+/u-boot.atm///1238019696/
+/u-boot.int///1238019696/
+/u-boot.stm///1238019697/
diff -Naur u-boot-2009.03_orig/board/freescale/m54455evb/CVS/Entries.Old u-boot-2009.03/board/freescale/m54455evb/CVS/Entries.Old
--- u-boot-2009.03_orig/board/freescale/m54455evb/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m54455evb/CVS/Entries.Old    2009-03-25 15:24:27.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/m54455evb.c/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/u-boot.atm/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/u-boot.int/1.1.1.1/Wed Mar 25 22:21:36 2009//
+/u-boot.stm/1.1.1.1/Wed Mar 25 22:21:37 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/m54455evb/CVS/Repository u-boot-2009.03/board/freescale/m54455evb/CVS/Repository
--- u-boot-2009.03_orig/board/freescale/m54455evb/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m54455evb/CVS/Repository     2009-03-25 15:24:27.041073400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/freescale/m54455evb
diff -Naur u-boot-2009.03_orig/board/freescale/m54455evb/CVS/Root u-boot-2009.03/board/freescale/m54455evb/CVS/Root
--- u-boot-2009.03_orig/board/freescale/m54455evb/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m54455evb/CVS/Root   2009-03-25 15:24:27.041073400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/freescale/m547xevb/CVS/Entries u-boot-2009.03/board/freescale/m547xevb/CVS/Entries
--- u-boot-2009.03_orig/board/freescale/m547xevb/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m547xevb/CVS/Entries 2009-03-25 15:57:24.278249800 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/m547xevb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/m547xevb/CVS/Entries.Extra u-boot-2009.03/board/freescale/m547xevb/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/freescale/m547xevb/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m547xevb/CVS/Entries.Extra   2009-03-25 15:57:24.278249800 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019697/
+/config.mk///1238019697/
+/m547xevb.c///1238019697/
+/u-boot.lds///1238019697/
diff -Naur u-boot-2009.03_orig/board/freescale/m547xevb/CVS/Entries.Extra.Old u-boot-2009.03/board/freescale/m547xevb/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/freescale/m547xevb/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m547xevb/CVS/Entries.Extra.Old       2009-03-25 15:24:27.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019697/
+/config.mk///1238019697/
+/m547xevb.c///1238019697/
+/u-boot.lds///1238019697/
diff -Naur u-boot-2009.03_orig/board/freescale/m547xevb/CVS/Entries.Old u-boot-2009.03/board/freescale/m547xevb/CVS/Entries.Old
--- u-boot-2009.03_orig/board/freescale/m547xevb/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m547xevb/CVS/Entries.Old     2009-03-25 15:24:27.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:37 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:37 2009//
+/m547xevb.c/1.1.1.1/Wed Mar 25 22:21:37 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:37 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/m547xevb/CVS/Repository u-boot-2009.03/board/freescale/m547xevb/CVS/Repository
--- u-boot-2009.03_orig/board/freescale/m547xevb/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m547xevb/CVS/Repository      2009-03-25 15:24:27.166071800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/freescale/m547xevb
diff -Naur u-boot-2009.03_orig/board/freescale/m547xevb/CVS/Root u-boot-2009.03/board/freescale/m547xevb/CVS/Root
--- u-boot-2009.03_orig/board/freescale/m547xevb/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m547xevb/CVS/Root    2009-03-25 15:24:27.166071800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/freescale/m548xevb/CVS/Entries u-boot-2009.03/board/freescale/m548xevb/CVS/Entries
--- u-boot-2009.03_orig/board/freescale/m548xevb/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m548xevb/CVS/Entries 2009-03-25 15:57:24.356374300 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/m548xevb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/m548xevb/CVS/Entries.Extra u-boot-2009.03/board/freescale/m548xevb/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/freescale/m548xevb/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m548xevb/CVS/Entries.Extra   2009-03-25 15:57:24.356374300 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019697/
+/config.mk///1238019697/
+/m548xevb.c///1238019697/
+/u-boot.lds///1238019697/
diff -Naur u-boot-2009.03_orig/board/freescale/m548xevb/CVS/Entries.Extra.Old u-boot-2009.03/board/freescale/m548xevb/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/freescale/m548xevb/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m548xevb/CVS/Entries.Extra.Old       2009-03-25 15:24:27.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019697/
+/config.mk///1238019697/
+/m548xevb.c///1238019697/
+/u-boot.lds///1238019697/
diff -Naur u-boot-2009.03_orig/board/freescale/m548xevb/CVS/Entries.Old u-boot-2009.03/board/freescale/m548xevb/CVS/Entries.Old
--- u-boot-2009.03_orig/board/freescale/m548xevb/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m548xevb/CVS/Entries.Old     2009-03-25 15:24:27.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:37 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:37 2009//
+/m548xevb.c/1.1.1.1/Wed Mar 25 22:21:37 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:37 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/m548xevb/CVS/Repository u-boot-2009.03/board/freescale/m548xevb/CVS/Repository
--- u-boot-2009.03_orig/board/freescale/m548xevb/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m548xevb/CVS/Repository      2009-03-25 15:24:27.259820600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/freescale/m548xevb
diff -Naur u-boot-2009.03_orig/board/freescale/m548xevb/CVS/Root u-boot-2009.03/board/freescale/m548xevb/CVS/Root
--- u-boot-2009.03_orig/board/freescale/m548xevb/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/m548xevb/CVS/Root    2009-03-25 15:24:27.244195800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/freescale/mpc7448hpc2/CVS/Entries u-boot-2009.03/board/freescale/mpc7448hpc2/CVS/Entries
--- u-boot-2009.03_orig/board/freescale/mpc7448hpc2/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc7448hpc2/CVS/Entries      2009-03-25 15:57:24.450123700 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/asm_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc7448hpc2.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tsi108_init.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/mpc7448hpc2/CVS/Entries.Extra u-boot-2009.03/board/freescale/mpc7448hpc2/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/freescale/mpc7448hpc2/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc7448hpc2/CVS/Entries.Extra        2009-03-25 15:57:24.450123700 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019697/
+/asm_init.S///1238019697/
+/config.mk///1238019697/
+/mpc7448hpc2.c///1238019697/
+/tsi108_init.c///1238019697/
+/u-boot.lds///1238019697/
diff -Naur u-boot-2009.03_orig/board/freescale/mpc7448hpc2/CVS/Entries.Extra.Old u-boot-2009.03/board/freescale/mpc7448hpc2/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/freescale/mpc7448hpc2/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc7448hpc2/CVS/Entries.Extra.Old    2009-03-25 15:24:27.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019697/
+/asm_init.S///1238019697/
+/config.mk///1238019697/
+/mpc7448hpc2.c///1238019697/
+/tsi108_init.c///1238019697/
+/u-boot.lds///1238019697/
diff -Naur u-boot-2009.03_orig/board/freescale/mpc7448hpc2/CVS/Entries.Old u-boot-2009.03/board/freescale/mpc7448hpc2/CVS/Entries.Old
--- u-boot-2009.03_orig/board/freescale/mpc7448hpc2/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc7448hpc2/CVS/Entries.Old  2009-03-25 15:24:27.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:37 2009//
+/asm_init.S/1.1.1.1/Wed Mar 25 22:21:37 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:37 2009//
+/mpc7448hpc2.c/1.1.1.1/Wed Mar 25 22:21:37 2009//
+/tsi108_init.c/1.1.1.1/Wed Mar 25 22:21:37 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:37 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/mpc7448hpc2/CVS/Repository u-boot-2009.03/board/freescale/mpc7448hpc2/CVS/Repository
--- u-boot-2009.03_orig/board/freescale/mpc7448hpc2/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc7448hpc2/CVS/Repository   2009-03-25 15:24:27.353569400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/freescale/mpc7448hpc2
diff -Naur u-boot-2009.03_orig/board/freescale/mpc7448hpc2/CVS/Root u-boot-2009.03/board/freescale/mpc7448hpc2/CVS/Root
--- u-boot-2009.03_orig/board/freescale/mpc7448hpc2/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc7448hpc2/CVS/Root 2009-03-25 15:24:27.353569400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8260ads/CVS/Entries u-boot-2009.03/board/freescale/mpc8260ads/CVS/Entries
--- u-boot-2009.03_orig/board/freescale/mpc8260ads/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8260ads/CVS/Entries       2009-03-25 15:57:24.543873100 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc8260ads.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8260ads/CVS/Entries.Extra u-boot-2009.03/board/freescale/mpc8260ads/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/freescale/mpc8260ads/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8260ads/CVS/Entries.Extra 2009-03-25 15:57:24.543873100 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019697/
+/config.mk///1238019697/
+/flash.c///1238019697/
+/mpc8260ads.c///1238019697/
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8260ads/CVS/Entries.Extra.Old u-boot-2009.03/board/freescale/mpc8260ads/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/freescale/mpc8260ads/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8260ads/CVS/Entries.Extra.Old     2009-03-25 15:24:27.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019697/
+/config.mk///1238019697/
+/flash.c///1238019697/
+/mpc8260ads.c///1238019697/
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8260ads/CVS/Entries.Old u-boot-2009.03/board/freescale/mpc8260ads/CVS/Entries.Old
--- u-boot-2009.03_orig/board/freescale/mpc8260ads/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8260ads/CVS/Entries.Old   2009-03-25 15:24:27.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:37 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:37 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:37 2009//
+/mpc8260ads.c/1.1.1.1/Wed Mar 25 22:21:37 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8260ads/CVS/Repository u-boot-2009.03/board/freescale/mpc8260ads/CVS/Repository
--- u-boot-2009.03_orig/board/freescale/mpc8260ads/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8260ads/CVS/Repository    2009-03-25 15:24:27.619191000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/freescale/mpc8260ads
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8260ads/CVS/Root u-boot-2009.03/board/freescale/mpc8260ads/CVS/Root
--- u-boot-2009.03_orig/board/freescale/mpc8260ads/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8260ads/CVS/Root  2009-03-25 15:24:27.619191000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8266ads/CVS/Entries u-boot-2009.03/board/freescale/mpc8266ads/CVS/Entries
--- u-boot-2009.03_orig/board/freescale/mpc8266ads/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8266ads/CVS/Entries       2009-03-25 15:57:24.621997600 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc8266ads.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8266ads/CVS/Entries.Extra u-boot-2009.03/board/freescale/mpc8266ads/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/freescale/mpc8266ads/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8266ads/CVS/Entries.Extra 2009-03-25 15:57:24.621997600 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019697/
+/config.mk///1238019697/
+/flash.c///1238019697/
+/mpc8266ads.c///1238019697/
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8266ads/CVS/Entries.Extra.Old u-boot-2009.03/board/freescale/mpc8266ads/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/freescale/mpc8266ads/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8266ads/CVS/Entries.Extra.Old     2009-03-25 15:24:27.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019697/
+/config.mk///1238019697/
+/flash.c///1238019697/
+/mpc8266ads.c///1238019697/
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8266ads/CVS/Entries.Old u-boot-2009.03/board/freescale/mpc8266ads/CVS/Entries.Old
--- u-boot-2009.03_orig/board/freescale/mpc8266ads/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8266ads/CVS/Entries.Old   2009-03-25 15:24:27.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:37 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:37 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:37 2009//
+/mpc8266ads.c/1.1.1.1/Wed Mar 25 22:21:37 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8266ads/CVS/Repository u-boot-2009.03/board/freescale/mpc8266ads/CVS/Repository
--- u-boot-2009.03_orig/board/freescale/mpc8266ads/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8266ads/CVS/Repository    2009-03-25 15:24:27.728564600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/freescale/mpc8266ads
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8266ads/CVS/Root u-boot-2009.03/board/freescale/mpc8266ads/CVS/Root
--- u-boot-2009.03_orig/board/freescale/mpc8266ads/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8266ads/CVS/Root  2009-03-25 15:24:27.728564600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8313erdb/CVS/Entries u-boot-2009.03/board/freescale/mpc8313erdb/CVS/Entries
--- u-boot-2009.03_orig/board/freescale/mpc8313erdb/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8313erdb/CVS/Entries      2009-03-25 15:57:24.700122100 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc8313erdb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sdram.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8313erdb/CVS/Entries.Extra u-boot-2009.03/board/freescale/mpc8313erdb/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/freescale/mpc8313erdb/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8313erdb/CVS/Entries.Extra        2009-03-25 15:57:24.700122100 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019697/
+/config.mk///1238019697/
+/mpc8313erdb.c///1238019697/
+/sdram.c///1238019697/
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8313erdb/CVS/Entries.Extra.Old u-boot-2009.03/board/freescale/mpc8313erdb/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/freescale/mpc8313erdb/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8313erdb/CVS/Entries.Extra.Old    2009-03-25 15:24:27.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019697/
+/config.mk///1238019697/
+/mpc8313erdb.c///1238019697/
+/sdram.c///1238019697/
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8313erdb/CVS/Entries.Old u-boot-2009.03/board/freescale/mpc8313erdb/CVS/Entries.Old
--- u-boot-2009.03_orig/board/freescale/mpc8313erdb/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8313erdb/CVS/Entries.Old  2009-03-25 15:24:27.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:37 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:37 2009//
+/mpc8313erdb.c/1.1.1.1/Wed Mar 25 22:21:37 2009//
+/sdram.c/1.1.1.1/Wed Mar 25 22:21:37 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8313erdb/CVS/Repository u-boot-2009.03/board/freescale/mpc8313erdb/CVS/Repository
--- u-boot-2009.03_orig/board/freescale/mpc8313erdb/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8313erdb/CVS/Repository   2009-03-25 15:24:27.837938200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/freescale/mpc8313erdb
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8313erdb/CVS/Root u-boot-2009.03/board/freescale/mpc8313erdb/CVS/Root
--- u-boot-2009.03_orig/board/freescale/mpc8313erdb/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8313erdb/CVS/Root 2009-03-25 15:24:27.822313400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8315erdb/CVS/Entries u-boot-2009.03/board/freescale/mpc8315erdb/CVS/Entries
--- u-boot-2009.03_orig/board/freescale/mpc8315erdb/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8315erdb/CVS/Entries      2009-03-25 15:57:24.778246600 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc8315erdb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sdram.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8315erdb/CVS/Entries.Extra u-boot-2009.03/board/freescale/mpc8315erdb/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/freescale/mpc8315erdb/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8315erdb/CVS/Entries.Extra        2009-03-25 15:57:24.778246600 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019697/
+/config.mk///1238019697/
+/mpc8315erdb.c///1238019697/
+/sdram.c///1238019697/
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8315erdb/CVS/Entries.Extra.Old u-boot-2009.03/board/freescale/mpc8315erdb/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/freescale/mpc8315erdb/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8315erdb/CVS/Entries.Extra.Old    2009-03-25 15:24:27.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019697/
+/config.mk///1238019697/
+/mpc8315erdb.c///1238019697/
+/sdram.c///1238019697/
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8315erdb/CVS/Entries.Old u-boot-2009.03/board/freescale/mpc8315erdb/CVS/Entries.Old
--- u-boot-2009.03_orig/board/freescale/mpc8315erdb/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8315erdb/CVS/Entries.Old  2009-03-25 15:24:27.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:37 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:37 2009//
+/mpc8315erdb.c/1.1.1.1/Wed Mar 25 22:21:37 2009//
+/sdram.c/1.1.1.1/Wed Mar 25 22:21:37 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8315erdb/CVS/Repository u-boot-2009.03/board/freescale/mpc8315erdb/CVS/Repository
--- u-boot-2009.03_orig/board/freescale/mpc8315erdb/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8315erdb/CVS/Repository   2009-03-25 15:24:27.931687000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/freescale/mpc8315erdb
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8315erdb/CVS/Root u-boot-2009.03/board/freescale/mpc8315erdb/CVS/Root
--- u-boot-2009.03_orig/board/freescale/mpc8315erdb/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8315erdb/CVS/Root 2009-03-25 15:24:27.931687000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8323erdb/CVS/Entries u-boot-2009.03/board/freescale/mpc8323erdb/CVS/Entries
--- u-boot-2009.03_orig/board/freescale/mpc8323erdb/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8323erdb/CVS/Entries      2009-03-25 15:57:24.840746200 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc8323erdb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8323erdb/CVS/Entries.Extra u-boot-2009.03/board/freescale/mpc8323erdb/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/freescale/mpc8323erdb/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8323erdb/CVS/Entries.Extra        2009-03-25 15:57:24.840746200 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019697/
+/config.mk///1238019697/
+/mpc8323erdb.c///1238019697/
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8323erdb/CVS/Entries.Extra.Old u-boot-2009.03/board/freescale/mpc8323erdb/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/freescale/mpc8323erdb/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8323erdb/CVS/Entries.Extra.Old    2009-03-25 15:24:28.000000000 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019697/
+/config.mk///1238019697/
+/mpc8323erdb.c///1238019697/
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8323erdb/CVS/Entries.Old u-boot-2009.03/board/freescale/mpc8323erdb/CVS/Entries.Old
--- u-boot-2009.03_orig/board/freescale/mpc8323erdb/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8323erdb/CVS/Entries.Old  2009-03-25 15:24:28.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:37 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:37 2009//
+/mpc8323erdb.c/1.1.1.1/Wed Mar 25 22:21:37 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8323erdb/CVS/Repository u-boot-2009.03/board/freescale/mpc8323erdb/CVS/Repository
--- u-boot-2009.03_orig/board/freescale/mpc8323erdb/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8323erdb/CVS/Repository   2009-03-25 15:24:28.025435800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/freescale/mpc8323erdb
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8323erdb/CVS/Root u-boot-2009.03/board/freescale/mpc8323erdb/CVS/Root
--- u-boot-2009.03_orig/board/freescale/mpc8323erdb/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8323erdb/CVS/Root 2009-03-25 15:24:28.025435800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/freescale/mpc832xemds/CVS/Entries u-boot-2009.03/board/freescale/mpc832xemds/CVS/Entries
--- u-boot-2009.03_orig/board/freescale/mpc832xemds/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc832xemds/CVS/Entries      2009-03-25 15:57:24.918870700 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc832xemds.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/mpc832xemds/CVS/Entries.Extra u-boot-2009.03/board/freescale/mpc832xemds/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/freescale/mpc832xemds/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc832xemds/CVS/Entries.Extra        2009-03-25 15:57:24.918870700 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019697/
+/config.mk///1238019697/
+/mpc832xemds.c///1238019697/
+/pci.c///1238019697/
diff -Naur u-boot-2009.03_orig/board/freescale/mpc832xemds/CVS/Entries.Extra.Old u-boot-2009.03/board/freescale/mpc832xemds/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/freescale/mpc832xemds/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc832xemds/CVS/Entries.Extra.Old    2009-03-25 15:24:28.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019697/
+/config.mk///1238019697/
+/mpc832xemds.c///1238019697/
+/pci.c///1238019697/
diff -Naur u-boot-2009.03_orig/board/freescale/mpc832xemds/CVS/Entries.Old u-boot-2009.03/board/freescale/mpc832xemds/CVS/Entries.Old
--- u-boot-2009.03_orig/board/freescale/mpc832xemds/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc832xemds/CVS/Entries.Old  2009-03-25 15:24:28.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:37 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:37 2009//
+/mpc832xemds.c/1.1.1.1/Wed Mar 25 22:21:37 2009//
+/pci.c/1.1.1.1/Wed Mar 25 22:21:37 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/mpc832xemds/CVS/Repository u-boot-2009.03/board/freescale/mpc832xemds/CVS/Repository
--- u-boot-2009.03_orig/board/freescale/mpc832xemds/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc832xemds/CVS/Repository   2009-03-25 15:24:28.119184600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/freescale/mpc832xemds
diff -Naur u-boot-2009.03_orig/board/freescale/mpc832xemds/CVS/Root u-boot-2009.03/board/freescale/mpc832xemds/CVS/Root
--- u-boot-2009.03_orig/board/freescale/mpc832xemds/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc832xemds/CVS/Root 2009-03-25 15:24:28.119184600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8349emds/CVS/Entries u-boot-2009.03/board/freescale/mpc8349emds/CVS/Entries
--- u-boot-2009.03_orig/board/freescale/mpc8349emds/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8349emds/CVS/Entries      2009-03-25 15:57:24.996995200 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc8349emds.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8349emds/CVS/Entries.Extra u-boot-2009.03/board/freescale/mpc8349emds/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/freescale/mpc8349emds/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8349emds/CVS/Entries.Extra        2009-03-25 15:57:24.996995200 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019697/
+/config.mk///1238019697/
+/mpc8349emds.c///1238019697/
+/pci.c///1238019697/
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8349emds/CVS/Entries.Extra.Old u-boot-2009.03/board/freescale/mpc8349emds/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/freescale/mpc8349emds/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8349emds/CVS/Entries.Extra.Old    2009-03-25 15:24:28.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019697/
+/config.mk///1238019697/
+/mpc8349emds.c///1238019697/
+/pci.c///1238019697/
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8349emds/CVS/Entries.Old u-boot-2009.03/board/freescale/mpc8349emds/CVS/Entries.Old
--- u-boot-2009.03_orig/board/freescale/mpc8349emds/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8349emds/CVS/Entries.Old  2009-03-25 15:24:28.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:37 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:37 2009//
+/mpc8349emds.c/1.1.1.1/Wed Mar 25 22:21:37 2009//
+/pci.c/1.1.1.1/Wed Mar 25 22:21:37 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8349emds/CVS/Repository u-boot-2009.03/board/freescale/mpc8349emds/CVS/Repository
--- u-boot-2009.03_orig/board/freescale/mpc8349emds/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8349emds/CVS/Repository   2009-03-25 15:24:28.244183000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/freescale/mpc8349emds
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8349emds/CVS/Root u-boot-2009.03/board/freescale/mpc8349emds/CVS/Root
--- u-boot-2009.03_orig/board/freescale/mpc8349emds/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8349emds/CVS/Root 2009-03-25 15:24:28.244183000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8349itx/CVS/Entries u-boot-2009.03/board/freescale/mpc8349itx/CVS/Entries
--- u-boot-2009.03_orig/board/freescale/mpc8349itx/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8349itx/CVS/Entries       2009-03-25 15:57:25.106369500 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc8349itx.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8349itx/CVS/Entries.Extra u-boot-2009.03/board/freescale/mpc8349itx/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/freescale/mpc8349itx/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8349itx/CVS/Entries.Extra 2009-03-25 15:57:25.106369500 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019697/
+/config.mk///1238019697/
+/mpc8349itx.c///1238019697/
+/pci.c///1238019697/
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8349itx/CVS/Entries.Extra.Old u-boot-2009.03/board/freescale/mpc8349itx/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/freescale/mpc8349itx/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8349itx/CVS/Entries.Extra.Old     2009-03-25 15:24:28.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019697/
+/config.mk///1238019697/
+/mpc8349itx.c///1238019697/
+/pci.c///1238019697/
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8349itx/CVS/Entries.Old u-boot-2009.03/board/freescale/mpc8349itx/CVS/Entries.Old
--- u-boot-2009.03_orig/board/freescale/mpc8349itx/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8349itx/CVS/Entries.Old   2009-03-25 15:24:28.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:37 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:37 2009//
+/mpc8349itx.c/1.1.1.1/Wed Mar 25 22:21:37 2009//
+/pci.c/1.1.1.1/Wed Mar 25 22:21:37 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8349itx/CVS/Repository u-boot-2009.03/board/freescale/mpc8349itx/CVS/Repository
--- u-boot-2009.03_orig/board/freescale/mpc8349itx/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8349itx/CVS/Repository    2009-03-25 15:24:28.353556600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/freescale/mpc8349itx
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8349itx/CVS/Root u-boot-2009.03/board/freescale/mpc8349itx/CVS/Root
--- u-boot-2009.03_orig/board/freescale/mpc8349itx/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8349itx/CVS/Root  2009-03-25 15:24:28.353556600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8360emds/CVS/Entries u-boot-2009.03/board/freescale/mpc8360emds/CVS/Entries
--- u-boot-2009.03_orig/board/freescale/mpc8360emds/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8360emds/CVS/Entries      2009-03-25 15:57:25.184494000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc8360emds.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8360emds/CVS/Entries.Extra u-boot-2009.03/board/freescale/mpc8360emds/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/freescale/mpc8360emds/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8360emds/CVS/Entries.Extra        2009-03-25 15:57:25.184494000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019697/
+/config.mk///1238019697/
+/mpc8360emds.c///1238019697/
+/pci.c///1238019697/
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8360emds/CVS/Entries.Extra.Old u-boot-2009.03/board/freescale/mpc8360emds/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/freescale/mpc8360emds/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8360emds/CVS/Entries.Extra.Old    2009-03-25 15:24:28.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019697/
+/config.mk///1238019697/
+/mpc8360emds.c///1238019697/
+/pci.c///1238019697/
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8360emds/CVS/Entries.Old u-boot-2009.03/board/freescale/mpc8360emds/CVS/Entries.Old
--- u-boot-2009.03_orig/board/freescale/mpc8360emds/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8360emds/CVS/Entries.Old  2009-03-25 15:24:28.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:37 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:37 2009//
+/mpc8360emds.c/1.1.1.1/Wed Mar 25 22:21:37 2009//
+/pci.c/1.1.1.1/Wed Mar 25 22:21:37 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8360emds/CVS/Repository u-boot-2009.03/board/freescale/mpc8360emds/CVS/Repository
--- u-boot-2009.03_orig/board/freescale/mpc8360emds/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8360emds/CVS/Repository   2009-03-25 15:24:28.712927000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/freescale/mpc8360emds
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8360emds/CVS/Root u-boot-2009.03/board/freescale/mpc8360emds/CVS/Root
--- u-boot-2009.03_orig/board/freescale/mpc8360emds/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8360emds/CVS/Root 2009-03-25 15:24:28.712927000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8360erdk/CVS/Entries u-boot-2009.03/board/freescale/mpc8360erdk/CVS/Entries
--- u-boot-2009.03_orig/board/freescale/mpc8360erdk/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8360erdk/CVS/Entries      2009-03-25 15:57:25.262618500 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc8360erdk.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nand.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8360erdk/CVS/Entries.Extra u-boot-2009.03/board/freescale/mpc8360erdk/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/freescale/mpc8360erdk/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8360erdk/CVS/Entries.Extra        2009-03-25 15:57:25.278243400 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019697/
+/config.mk///1238019697/
+/mpc8360erdk.c///1238019697/
+/nand.c///1238019697/
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8360erdk/CVS/Entries.Extra.Old u-boot-2009.03/board/freescale/mpc8360erdk/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/freescale/mpc8360erdk/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8360erdk/CVS/Entries.Extra.Old    2009-03-25 15:24:28.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019697/
+/config.mk///1238019697/
+/mpc8360erdk.c///1238019697/
+/nand.c///1238019697/
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8360erdk/CVS/Entries.Old u-boot-2009.03/board/freescale/mpc8360erdk/CVS/Entries.Old
--- u-boot-2009.03_orig/board/freescale/mpc8360erdk/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8360erdk/CVS/Entries.Old  2009-03-25 15:24:28.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:37 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:37 2009//
+/mpc8360erdk.c/1.1.1.1/Wed Mar 25 22:21:37 2009//
+/nand.c/1.1.1.1/Wed Mar 25 22:21:37 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8360erdk/CVS/Repository u-boot-2009.03/board/freescale/mpc8360erdk/CVS/Repository
--- u-boot-2009.03_orig/board/freescale/mpc8360erdk/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8360erdk/CVS/Repository   2009-03-25 15:24:28.806675800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/freescale/mpc8360erdk
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8360erdk/CVS/Root u-boot-2009.03/board/freescale/mpc8360erdk/CVS/Root
--- u-boot-2009.03_orig/board/freescale/mpc8360erdk/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8360erdk/CVS/Root 2009-03-25 15:24:28.806675800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/freescale/mpc837xemds/CVS/Entries u-boot-2009.03/board/freescale/mpc837xemds/CVS/Entries
--- u-boot-2009.03_orig/board/freescale/mpc837xemds/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc837xemds/CVS/Entries      2009-03-25 15:57:25.356367900 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc837xemds.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/mpc837xemds/CVS/Entries.Extra u-boot-2009.03/board/freescale/mpc837xemds/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/freescale/mpc837xemds/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc837xemds/CVS/Entries.Extra        2009-03-25 15:57:25.371992800 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019697/
+/config.mk///1238019697/
+/mpc837xemds.c///1238019697/
+/pci.c///1238019697/
+/pci.h///1238019697/
diff -Naur u-boot-2009.03_orig/board/freescale/mpc837xemds/CVS/Entries.Extra.Old u-boot-2009.03/board/freescale/mpc837xemds/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/freescale/mpc837xemds/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc837xemds/CVS/Entries.Extra.Old    2009-03-25 15:24:28.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019697/
+/config.mk///1238019697/
+/mpc837xemds.c///1238019697/
+/pci.c///1238019697/
+/pci.h///1238019697/
diff -Naur u-boot-2009.03_orig/board/freescale/mpc837xemds/CVS/Entries.Old u-boot-2009.03/board/freescale/mpc837xemds/CVS/Entries.Old
--- u-boot-2009.03_orig/board/freescale/mpc837xemds/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc837xemds/CVS/Entries.Old  2009-03-25 15:24:28.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:37 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:37 2009//
+/mpc837xemds.c/1.1.1.1/Wed Mar 25 22:21:37 2009//
+/pci.c/1.1.1.1/Wed Mar 25 22:21:37 2009//
+/pci.h/1.1.1.1/Wed Mar 25 22:21:37 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/mpc837xemds/CVS/Repository u-boot-2009.03/board/freescale/mpc837xemds/CVS/Repository
--- u-boot-2009.03_orig/board/freescale/mpc837xemds/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc837xemds/CVS/Repository   2009-03-25 15:24:28.931674200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/freescale/mpc837xemds
diff -Naur u-boot-2009.03_orig/board/freescale/mpc837xemds/CVS/Root u-boot-2009.03/board/freescale/mpc837xemds/CVS/Root
--- u-boot-2009.03_orig/board/freescale/mpc837xemds/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc837xemds/CVS/Root 2009-03-25 15:24:28.916049400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/freescale/mpc837xerdb/CVS/Entries u-boot-2009.03/board/freescale/mpc837xerdb/CVS/Entries
--- u-boot-2009.03_orig/board/freescale/mpc837xerdb/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc837xerdb/CVS/Entries      2009-03-25 15:57:25.450117300 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc837xerdb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/mpc837xerdb/CVS/Entries.Extra u-boot-2009.03/board/freescale/mpc837xerdb/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/freescale/mpc837xerdb/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc837xerdb/CVS/Entries.Extra        2009-03-25 15:57:25.450117300 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019698/
+/config.mk///1238019698/
+/mpc837xerdb.c///1238019698/
+/pci.c///1238019698/
diff -Naur u-boot-2009.03_orig/board/freescale/mpc837xerdb/CVS/Entries.Extra.Old u-boot-2009.03/board/freescale/mpc837xerdb/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/freescale/mpc837xerdb/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc837xerdb/CVS/Entries.Extra.Old    2009-03-25 15:24:29.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019698/
+/config.mk///1238019698/
+/mpc837xerdb.c///1238019698/
+/pci.c///1238019698/
diff -Naur u-boot-2009.03_orig/board/freescale/mpc837xerdb/CVS/Entries.Old u-boot-2009.03/board/freescale/mpc837xerdb/CVS/Entries.Old
--- u-boot-2009.03_orig/board/freescale/mpc837xerdb/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc837xerdb/CVS/Entries.Old  2009-03-25 15:24:29.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/mpc837xerdb.c/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/pci.c/1.1.1.1/Wed Mar 25 22:21:38 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/mpc837xerdb/CVS/Repository u-boot-2009.03/board/freescale/mpc837xerdb/CVS/Repository
--- u-boot-2009.03_orig/board/freescale/mpc837xerdb/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc837xerdb/CVS/Repository   2009-03-25 15:24:29.041047800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/freescale/mpc837xerdb
diff -Naur u-boot-2009.03_orig/board/freescale/mpc837xerdb/CVS/Root u-boot-2009.03/board/freescale/mpc837xerdb/CVS/Root
--- u-boot-2009.03_orig/board/freescale/mpc837xerdb/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc837xerdb/CVS/Root 2009-03-25 15:24:29.041047800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8536ds/CVS/Entries u-boot-2009.03/board/freescale/mpc8536ds/CVS/Entries
--- u-boot-2009.03_orig/board/freescale/mpc8536ds/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8536ds/CVS/Entries        2009-03-25 15:57:25.543866700 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ddr.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/law.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc8536ds.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tlb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8536ds/CVS/Entries.Extra u-boot-2009.03/board/freescale/mpc8536ds/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/freescale/mpc8536ds/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8536ds/CVS/Entries.Extra  2009-03-25 15:57:25.543866700 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019698/
+/config.mk///1238019698/
+/ddr.c///1238019698/
+/law.c///1238019698/
+/mpc8536ds.c///1238019698/
+/tlb.c///1238019698/
+/u-boot.lds///1238019698/
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8536ds/CVS/Entries.Extra.Old u-boot-2009.03/board/freescale/mpc8536ds/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/freescale/mpc8536ds/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8536ds/CVS/Entries.Extra.Old      2009-03-25 15:24:29.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019698/
+/config.mk///1238019698/
+/ddr.c///1238019698/
+/law.c///1238019698/
+/mpc8536ds.c///1238019698/
+/tlb.c///1238019698/
+/u-boot.lds///1238019698/
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8536ds/CVS/Entries.Old u-boot-2009.03/board/freescale/mpc8536ds/CVS/Entries.Old
--- u-boot-2009.03_orig/board/freescale/mpc8536ds/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8536ds/CVS/Entries.Old    2009-03-25 15:24:29.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/ddr.c/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/law.c/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/mpc8536ds.c/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/tlb.c/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:38 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8536ds/CVS/Repository u-boot-2009.03/board/freescale/mpc8536ds/CVS/Repository
--- u-boot-2009.03_orig/board/freescale/mpc8536ds/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8536ds/CVS/Repository     2009-03-25 15:24:29.150421400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/freescale/mpc8536ds
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8536ds/CVS/Root u-boot-2009.03/board/freescale/mpc8536ds/CVS/Root
--- u-boot-2009.03_orig/board/freescale/mpc8536ds/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8536ds/CVS/Root   2009-03-25 15:24:29.150421400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8540ads/CVS/Entries u-boot-2009.03/board/freescale/mpc8540ads/CVS/Entries
--- u-boot-2009.03_orig/board/freescale/mpc8540ads/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8540ads/CVS/Entries       2009-03-25 15:57:25.653241000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ddr.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/law.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc8540ads.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tlb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8540ads/CVS/Entries.Extra u-boot-2009.03/board/freescale/mpc8540ads/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/freescale/mpc8540ads/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8540ads/CVS/Entries.Extra 2009-03-25 15:57:25.653241000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019698/
+/config.mk///1238019698/
+/ddr.c///1238019698/
+/law.c///1238019698/
+/mpc8540ads.c///1238019698/
+/tlb.c///1238019698/
+/u-boot.lds///1238019698/
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8540ads/CVS/Entries.Extra.Old u-boot-2009.03/board/freescale/mpc8540ads/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/freescale/mpc8540ads/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8540ads/CVS/Entries.Extra.Old     2009-03-25 15:24:29.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019698/
+/config.mk///1238019698/
+/ddr.c///1238019698/
+/law.c///1238019698/
+/mpc8540ads.c///1238019698/
+/tlb.c///1238019698/
+/u-boot.lds///1238019698/
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8540ads/CVS/Entries.Old u-boot-2009.03/board/freescale/mpc8540ads/CVS/Entries.Old
--- u-boot-2009.03_orig/board/freescale/mpc8540ads/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8540ads/CVS/Entries.Old   2009-03-25 15:24:29.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/ddr.c/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/law.c/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/mpc8540ads.c/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/tlb.c/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:38 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8540ads/CVS/Repository u-boot-2009.03/board/freescale/mpc8540ads/CVS/Repository
--- u-boot-2009.03_orig/board/freescale/mpc8540ads/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8540ads/CVS/Repository    2009-03-25 15:24:29.275419800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/freescale/mpc8540ads
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8540ads/CVS/Root u-boot-2009.03/board/freescale/mpc8540ads/CVS/Root
--- u-boot-2009.03_orig/board/freescale/mpc8540ads/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8540ads/CVS/Root  2009-03-25 15:24:29.275419800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8541cds/CVS/Entries u-boot-2009.03/board/freescale/mpc8541cds/CVS/Entries
--- u-boot-2009.03_orig/board/freescale/mpc8541cds/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8541cds/CVS/Entries       2009-03-25 15:57:25.746990400 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ddr.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/law.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc8541cds.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tlb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8541cds/CVS/Entries.Extra u-boot-2009.03/board/freescale/mpc8541cds/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/freescale/mpc8541cds/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8541cds/CVS/Entries.Extra 2009-03-25 15:57:25.762615300 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019698/
+/config.mk///1238019698/
+/ddr.c///1238019698/
+/law.c///1238019698/
+/mpc8541cds.c///1238019698/
+/tlb.c///1238019698/
+/u-boot.lds///1238019698/
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8541cds/CVS/Entries.Extra.Old u-boot-2009.03/board/freescale/mpc8541cds/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/freescale/mpc8541cds/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8541cds/CVS/Entries.Extra.Old     2009-03-25 15:24:29.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019698/
+/config.mk///1238019698/
+/ddr.c///1238019698/
+/law.c///1238019698/
+/mpc8541cds.c///1238019698/
+/tlb.c///1238019698/
+/u-boot.lds///1238019698/
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8541cds/CVS/Entries.Old u-boot-2009.03/board/freescale/mpc8541cds/CVS/Entries.Old
--- u-boot-2009.03_orig/board/freescale/mpc8541cds/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8541cds/CVS/Entries.Old   2009-03-25 15:24:29.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/ddr.c/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/law.c/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/mpc8541cds.c/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/tlb.c/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:38 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8541cds/CVS/Repository u-boot-2009.03/board/freescale/mpc8541cds/CVS/Repository
--- u-boot-2009.03_orig/board/freescale/mpc8541cds/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8541cds/CVS/Repository    2009-03-25 15:24:29.681664600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/freescale/mpc8541cds
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8541cds/CVS/Root u-boot-2009.03/board/freescale/mpc8541cds/CVS/Root
--- u-boot-2009.03_orig/board/freescale/mpc8541cds/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8541cds/CVS/Root  2009-03-25 15:24:29.681664600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8544ds/CVS/Entries u-boot-2009.03/board/freescale/mpc8544ds/CVS/Entries
--- u-boot-2009.03_orig/board/freescale/mpc8544ds/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8544ds/CVS/Entries        2009-03-25 15:57:25.840739800 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ddr.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/law.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc8544ds.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tlb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8544ds/CVS/Entries.Extra u-boot-2009.03/board/freescale/mpc8544ds/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/freescale/mpc8544ds/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8544ds/CVS/Entries.Extra  2009-03-25 15:57:25.840739800 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019698/
+/config.mk///1238019698/
+/ddr.c///1238019698/
+/law.c///1238019698/
+/mpc8544ds.c///1238019698/
+/tlb.c///1238019698/
+/u-boot.lds///1238019698/
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8544ds/CVS/Entries.Extra.Old u-boot-2009.03/board/freescale/mpc8544ds/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/freescale/mpc8544ds/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8544ds/CVS/Entries.Extra.Old      2009-03-25 15:24:29.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019698/
+/config.mk///1238019698/
+/ddr.c///1238019698/
+/law.c///1238019698/
+/mpc8544ds.c///1238019698/
+/tlb.c///1238019698/
+/u-boot.lds///1238019698/
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8544ds/CVS/Entries.Old u-boot-2009.03/board/freescale/mpc8544ds/CVS/Entries.Old
--- u-boot-2009.03_orig/board/freescale/mpc8544ds/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8544ds/CVS/Entries.Old    2009-03-25 15:24:29.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/ddr.c/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/law.c/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/mpc8544ds.c/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/tlb.c/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:38 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8544ds/CVS/Repository u-boot-2009.03/board/freescale/mpc8544ds/CVS/Repository
--- u-boot-2009.03_orig/board/freescale/mpc8544ds/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8544ds/CVS/Repository     2009-03-25 15:24:29.822287800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/freescale/mpc8544ds
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8544ds/CVS/Root u-boot-2009.03/board/freescale/mpc8544ds/CVS/Root
--- u-boot-2009.03_orig/board/freescale/mpc8544ds/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8544ds/CVS/Root   2009-03-25 15:24:29.822287800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8548cds/CVS/Entries u-boot-2009.03/board/freescale/mpc8548cds/CVS/Entries
--- u-boot-2009.03_orig/board/freescale/mpc8548cds/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8548cds/CVS/Entries       2009-03-25 15:57:25.934489200 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ddr.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/law.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc8548cds.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tlb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8548cds/CVS/Entries.Extra u-boot-2009.03/board/freescale/mpc8548cds/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/freescale/mpc8548cds/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8548cds/CVS/Entries.Extra 2009-03-25 15:57:25.934489200 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019698/
+/config.mk///1238019698/
+/ddr.c///1238019698/
+/law.c///1238019698/
+/mpc8548cds.c///1238019698/
+/tlb.c///1238019698/
+/u-boot.lds///1238019698/
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8548cds/CVS/Entries.Extra.Old u-boot-2009.03/board/freescale/mpc8548cds/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/freescale/mpc8548cds/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8548cds/CVS/Entries.Extra.Old     2009-03-25 15:24:30.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019698/
+/config.mk///1238019698/
+/ddr.c///1238019698/
+/law.c///1238019698/
+/mpc8548cds.c///1238019698/
+/tlb.c///1238019698/
+/u-boot.lds///1238019698/
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8548cds/CVS/Entries.Old u-boot-2009.03/board/freescale/mpc8548cds/CVS/Entries.Old
--- u-boot-2009.03_orig/board/freescale/mpc8548cds/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8548cds/CVS/Entries.Old   2009-03-25 15:24:30.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/ddr.c/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/law.c/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/mpc8548cds.c/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/tlb.c/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:38 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8548cds/CVS/Repository u-boot-2009.03/board/freescale/mpc8548cds/CVS/Repository
--- u-boot-2009.03_orig/board/freescale/mpc8548cds/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8548cds/CVS/Repository    2009-03-25 15:24:29.962911000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/freescale/mpc8548cds
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8548cds/CVS/Root u-boot-2009.03/board/freescale/mpc8548cds/CVS/Root
--- u-boot-2009.03_orig/board/freescale/mpc8548cds/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8548cds/CVS/Root  2009-03-25 15:24:29.962911000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8555cds/CVS/Entries u-boot-2009.03/board/freescale/mpc8555cds/CVS/Entries
--- u-boot-2009.03_orig/board/freescale/mpc8555cds/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8555cds/CVS/Entries       2009-03-25 15:57:26.028238600 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ddr.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/law.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc8555cds.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tlb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8555cds/CVS/Entries.Extra u-boot-2009.03/board/freescale/mpc8555cds/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/freescale/mpc8555cds/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8555cds/CVS/Entries.Extra 2009-03-25 15:57:26.028238600 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019698/
+/config.mk///1238019698/
+/ddr.c///1238019698/
+/law.c///1238019698/
+/mpc8555cds.c///1238019698/
+/tlb.c///1238019698/
+/u-boot.lds///1238019698/
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8555cds/CVS/Entries.Extra.Old u-boot-2009.03/board/freescale/mpc8555cds/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/freescale/mpc8555cds/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8555cds/CVS/Entries.Extra.Old     2009-03-25 15:24:30.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019698/
+/config.mk///1238019698/
+/ddr.c///1238019698/
+/law.c///1238019698/
+/mpc8555cds.c///1238019698/
+/tlb.c///1238019698/
+/u-boot.lds///1238019698/
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8555cds/CVS/Entries.Old u-boot-2009.03/board/freescale/mpc8555cds/CVS/Entries.Old
--- u-boot-2009.03_orig/board/freescale/mpc8555cds/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8555cds/CVS/Entries.Old   2009-03-25 15:24:30.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/ddr.c/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/law.c/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/mpc8555cds.c/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/tlb.c/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:38 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8555cds/CVS/Repository u-boot-2009.03/board/freescale/mpc8555cds/CVS/Repository
--- u-boot-2009.03_orig/board/freescale/mpc8555cds/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8555cds/CVS/Repository    2009-03-25 15:24:30.087909400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/freescale/mpc8555cds
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8555cds/CVS/Root u-boot-2009.03/board/freescale/mpc8555cds/CVS/Root
--- u-boot-2009.03_orig/board/freescale/mpc8555cds/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8555cds/CVS/Root  2009-03-25 15:24:30.087909400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8560ads/CVS/Entries u-boot-2009.03/board/freescale/mpc8560ads/CVS/Entries
--- u-boot-2009.03_orig/board/freescale/mpc8560ads/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8560ads/CVS/Entries       2009-03-25 15:57:26.168862700 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ddr.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/law.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc8560ads.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tlb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8560ads/CVS/Entries.Extra u-boot-2009.03/board/freescale/mpc8560ads/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/freescale/mpc8560ads/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8560ads/CVS/Entries.Extra 2009-03-25 15:57:26.168862700 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019698/
+/config.mk///1238019698/
+/ddr.c///1238019698/
+/law.c///1238019698/
+/mpc8560ads.c///1238019698/
+/tlb.c///1238019698/
+/u-boot.lds///1238019698/
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8560ads/CVS/Entries.Extra.Old u-boot-2009.03/board/freescale/mpc8560ads/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/freescale/mpc8560ads/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8560ads/CVS/Entries.Extra.Old     2009-03-25 15:24:30.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019698/
+/config.mk///1238019698/
+/ddr.c///1238019698/
+/law.c///1238019698/
+/mpc8560ads.c///1238019698/
+/tlb.c///1238019698/
+/u-boot.lds///1238019698/
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8560ads/CVS/Entries.Old u-boot-2009.03/board/freescale/mpc8560ads/CVS/Entries.Old
--- u-boot-2009.03_orig/board/freescale/mpc8560ads/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8560ads/CVS/Entries.Old   2009-03-25 15:24:30.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/ddr.c/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/law.c/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/mpc8560ads.c/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/tlb.c/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:38 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8560ads/CVS/Repository u-boot-2009.03/board/freescale/mpc8560ads/CVS/Repository
--- u-boot-2009.03_orig/board/freescale/mpc8560ads/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8560ads/CVS/Repository    2009-03-25 15:24:30.228532600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/freescale/mpc8560ads
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8560ads/CVS/Root u-boot-2009.03/board/freescale/mpc8560ads/CVS/Root
--- u-boot-2009.03_orig/board/freescale/mpc8560ads/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8560ads/CVS/Root  2009-03-25 15:24:30.228532600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8568mds/CVS/Entries u-boot-2009.03/board/freescale/mpc8568mds/CVS/Entries
--- u-boot-2009.03_orig/board/freescale/mpc8568mds/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8568mds/CVS/Entries       2009-03-25 15:57:26.278237000 -0700
@@ -0,0 +1,10 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bcsr.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bcsr.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ddr.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/law.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc8568mds.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tlb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8568mds/CVS/Entries.Extra u-boot-2009.03/board/freescale/mpc8568mds/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/freescale/mpc8568mds/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8568mds/CVS/Entries.Extra 2009-03-25 15:57:26.293861900 -0700
@@ -0,0 +1,9 @@
+/Makefile///1238019698/
+/bcsr.c///1238019698/
+/bcsr.h///1238019698/
+/config.mk///1238019698/
+/ddr.c///1238019698/
+/law.c///1238019698/
+/mpc8568mds.c///1238019698/
+/tlb.c///1238019698/
+/u-boot.lds///1238019698/
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8568mds/CVS/Entries.Extra.Old u-boot-2009.03/board/freescale/mpc8568mds/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/freescale/mpc8568mds/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8568mds/CVS/Entries.Extra.Old     2009-03-25 15:24:30.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile///1238019698/
+/bcsr.c///1238019698/
+/bcsr.h///1238019698/
+/config.mk///1238019698/
+/ddr.c///1238019698/
+/law.c///1238019698/
+/mpc8568mds.c///1238019698/
+/tlb.c///1238019698/
+/u-boot.lds///1238019698/
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8568mds/CVS/Entries.Old u-boot-2009.03/board/freescale/mpc8568mds/CVS/Entries.Old
--- u-boot-2009.03_orig/board/freescale/mpc8568mds/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8568mds/CVS/Entries.Old   2009-03-25 15:24:30.000000000 -0700
@@ -0,0 +1,10 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/bcsr.c/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/bcsr.h/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/ddr.c/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/law.c/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/mpc8568mds.c/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/tlb.c/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:38 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8568mds/CVS/Repository u-boot-2009.03/board/freescale/mpc8568mds/CVS/Repository
--- u-boot-2009.03_orig/board/freescale/mpc8568mds/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8568mds/CVS/Repository    2009-03-25 15:24:30.369155800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/freescale/mpc8568mds
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8568mds/CVS/Root u-boot-2009.03/board/freescale/mpc8568mds/CVS/Root
--- u-boot-2009.03_orig/board/freescale/mpc8568mds/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8568mds/CVS/Root  2009-03-25 15:24:30.353531000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8572ds/CVS/Entries u-boot-2009.03/board/freescale/mpc8572ds/CVS/Entries
--- u-boot-2009.03_orig/board/freescale/mpc8572ds/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8572ds/CVS/Entries        2009-03-25 15:57:26.403236200 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ddr.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/law.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc8572ds.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tlb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8572ds/CVS/Entries.Extra u-boot-2009.03/board/freescale/mpc8572ds/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/freescale/mpc8572ds/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8572ds/CVS/Entries.Extra  2009-03-25 15:57:26.403236200 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019698/
+/config.mk///1238019698/
+/ddr.c///1238019698/
+/law.c///1238019698/
+/mpc8572ds.c///1238019698/
+/tlb.c///1238019698/
+/u-boot.lds///1238019698/
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8572ds/CVS/Entries.Extra.Old u-boot-2009.03/board/freescale/mpc8572ds/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/freescale/mpc8572ds/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8572ds/CVS/Entries.Extra.Old      2009-03-25 15:24:30.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019698/
+/config.mk///1238019698/
+/ddr.c///1238019698/
+/law.c///1238019698/
+/mpc8572ds.c///1238019698/
+/tlb.c///1238019698/
+/u-boot.lds///1238019698/
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8572ds/CVS/Entries.Old u-boot-2009.03/board/freescale/mpc8572ds/CVS/Entries.Old
--- u-boot-2009.03_orig/board/freescale/mpc8572ds/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8572ds/CVS/Entries.Old    2009-03-25 15:24:30.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/ddr.c/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/law.c/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/mpc8572ds.c/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/tlb.c/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:38 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8572ds/CVS/Repository u-boot-2009.03/board/freescale/mpc8572ds/CVS/Repository
--- u-boot-2009.03_orig/board/freescale/mpc8572ds/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8572ds/CVS/Repository     2009-03-25 15:24:30.697276600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/freescale/mpc8572ds
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8572ds/CVS/Root u-boot-2009.03/board/freescale/mpc8572ds/CVS/Root
--- u-boot-2009.03_orig/board/freescale/mpc8572ds/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8572ds/CVS/Root   2009-03-25 15:24:30.697276600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8610hpcd/CVS/Entries u-boot-2009.03/board/freescale/mpc8610hpcd/CVS/Entries
--- u-boot-2009.03_orig/board/freescale/mpc8610hpcd/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8610hpcd/CVS/Entries      2009-03-25 15:57:26.496985600 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ddr.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/law.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc8610hpcd.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc8610hpcd_diu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8610hpcd/CVS/Entries.Extra u-boot-2009.03/board/freescale/mpc8610hpcd/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/freescale/mpc8610hpcd/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8610hpcd/CVS/Entries.Extra        2009-03-25 15:57:26.496985600 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019698/
+/config.mk///1238019698/
+/ddr.c///1238019698/
+/law.c///1238019698/
+/mpc8610hpcd.c///1238019698/
+/mpc8610hpcd_diu.c///1238019698/
+/u-boot.lds///1238019698/
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8610hpcd/CVS/Entries.Extra.Old u-boot-2009.03/board/freescale/mpc8610hpcd/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/freescale/mpc8610hpcd/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8610hpcd/CVS/Entries.Extra.Old    2009-03-25 15:24:30.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019698/
+/config.mk///1238019698/
+/ddr.c///1238019698/
+/law.c///1238019698/
+/mpc8610hpcd.c///1238019698/
+/mpc8610hpcd_diu.c///1238019698/
+/u-boot.lds///1238019698/
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8610hpcd/CVS/Entries.Old u-boot-2009.03/board/freescale/mpc8610hpcd/CVS/Entries.Old
--- u-boot-2009.03_orig/board/freescale/mpc8610hpcd/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8610hpcd/CVS/Entries.Old  2009-03-25 15:24:30.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/ddr.c/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/law.c/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/mpc8610hpcd.c/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/mpc8610hpcd_diu.c/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:38 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8610hpcd/CVS/Repository u-boot-2009.03/board/freescale/mpc8610hpcd/CVS/Repository
--- u-boot-2009.03_orig/board/freescale/mpc8610hpcd/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8610hpcd/CVS/Repository   2009-03-25 15:24:30.853524600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/freescale/mpc8610hpcd
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8610hpcd/CVS/Root u-boot-2009.03/board/freescale/mpc8610hpcd/CVS/Root
--- u-boot-2009.03_orig/board/freescale/mpc8610hpcd/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8610hpcd/CVS/Root 2009-03-25 15:24:30.853524600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8641hpcn/CVS/Entries u-boot-2009.03/board/freescale/mpc8641hpcn/CVS/Entries
--- u-boot-2009.03_orig/board/freescale/mpc8641hpcn/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8641hpcn/CVS/Entries      2009-03-25 15:57:26.590735000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ddr.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/law.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc8641hpcn.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8641hpcn/CVS/Entries.Extra u-boot-2009.03/board/freescale/mpc8641hpcn/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/freescale/mpc8641hpcn/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8641hpcn/CVS/Entries.Extra        2009-03-25 15:57:26.590735000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019698/
+/config.mk///1238019698/
+/ddr.c///1238019698/
+/law.c///1238019698/
+/mpc8641hpcn.c///1238019698/
+/u-boot.lds///1238019698/
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8641hpcn/CVS/Entries.Extra.Old u-boot-2009.03/board/freescale/mpc8641hpcn/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/freescale/mpc8641hpcn/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8641hpcn/CVS/Entries.Extra.Old    2009-03-25 15:24:31.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019698/
+/config.mk///1238019698/
+/ddr.c///1238019698/
+/law.c///1238019698/
+/mpc8641hpcn.c///1238019698/
+/u-boot.lds///1238019698/
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8641hpcn/CVS/Entries.Old u-boot-2009.03/board/freescale/mpc8641hpcn/CVS/Entries.Old
--- u-boot-2009.03_orig/board/freescale/mpc8641hpcn/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8641hpcn/CVS/Entries.Old  2009-03-25 15:24:31.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/ddr.c/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/law.c/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/mpc8641hpcn.c/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:38 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8641hpcn/CVS/Repository u-boot-2009.03/board/freescale/mpc8641hpcn/CVS/Repository
--- u-boot-2009.03_orig/board/freescale/mpc8641hpcn/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8641hpcn/CVS/Repository   2009-03-25 15:24:30.994147800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/freescale/mpc8641hpcn
diff -Naur u-boot-2009.03_orig/board/freescale/mpc8641hpcn/CVS/Root u-boot-2009.03/board/freescale/mpc8641hpcn/CVS/Root
--- u-boot-2009.03_orig/board/freescale/mpc8641hpcn/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mpc8641hpcn/CVS/Root 2009-03-25 15:24:30.994147800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/freescale/mx31ads/CVS/Entries u-boot-2009.03/board/freescale/mx31ads/CVS/Entries
--- u-boot-2009.03_orig/board/freescale/mx31ads/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mx31ads/CVS/Entries  2009-03-25 15:57:26.684484400 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mx31ads.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/mx31ads/CVS/Entries.Extra u-boot-2009.03/board/freescale/mx31ads/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/freescale/mx31ads/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mx31ads/CVS/Entries.Extra    2009-03-25 15:57:26.684484400 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019698/
+/config.mk///1238019698/
+/lowlevel_init.S///1238019698/
+/mx31ads.c///1238019698/
+/u-boot.lds///1238019698/
diff -Naur u-boot-2009.03_orig/board/freescale/mx31ads/CVS/Entries.Extra.Old u-boot-2009.03/board/freescale/mx31ads/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/freescale/mx31ads/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mx31ads/CVS/Entries.Extra.Old        2009-03-25 15:24:31.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019698/
+/config.mk///1238019698/
+/lowlevel_init.S///1238019698/
+/mx31ads.c///1238019698/
+/u-boot.lds///1238019698/
diff -Naur u-boot-2009.03_orig/board/freescale/mx31ads/CVS/Entries.Old u-boot-2009.03/board/freescale/mx31ads/CVS/Entries.Old
--- u-boot-2009.03_orig/board/freescale/mx31ads/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mx31ads/CVS/Entries.Old      2009-03-25 15:24:31.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/mx31ads.c/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:38 2009//
+D
diff -Naur u-boot-2009.03_orig/board/freescale/mx31ads/CVS/Repository u-boot-2009.03/board/freescale/mx31ads/CVS/Repository
--- u-boot-2009.03_orig/board/freescale/mx31ads/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mx31ads/CVS/Repository       2009-03-25 15:24:31.119146200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/freescale/mx31ads
diff -Naur u-boot-2009.03_orig/board/freescale/mx31ads/CVS/Root u-boot-2009.03/board/freescale/mx31ads/CVS/Root
--- u-boot-2009.03_orig/board/freescale/mx31ads/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/freescale/mx31ads/CVS/Root     2009-03-25 15:24:31.119146200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/funkwerk/CVS/Entries u-boot-2009.03/board/funkwerk/CVS/Entries
--- u-boot-2009.03_orig/board/funkwerk/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/funkwerk/CVS/Entries   2009-03-25 15:24:31.634764600 -0700
@@ -0,0 +1 @@
+D/vovpn-gw////
diff -Naur u-boot-2009.03_orig/board/funkwerk/CVS/Entries.Extra u-boot-2009.03/board/funkwerk/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/funkwerk/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/funkwerk/CVS/Entries.Extra     2009-03-25 15:24:31.634764600 -0700
@@ -0,0 +1 @@
+D/vovpn-gw////
diff -Naur u-boot-2009.03_orig/board/funkwerk/CVS/Repository u-boot-2009.03/board/funkwerk/CVS/Repository
--- u-boot-2009.03_orig/board/funkwerk/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/funkwerk/CVS/Repository        2009-03-25 15:24:31.275394200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/funkwerk
diff -Naur u-boot-2009.03_orig/board/funkwerk/CVS/Root u-boot-2009.03/board/funkwerk/CVS/Root
--- u-boot-2009.03_orig/board/funkwerk/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/funkwerk/CVS/Root      2009-03-25 15:24:31.259769400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/funkwerk/vovpn-gw/CVS/Entries u-boot-2009.03/board/funkwerk/vovpn-gw/CVS/Entries
--- u-boot-2009.03_orig/board/funkwerk/vovpn-gw/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/funkwerk/vovpn-gw/CVS/Entries  2009-03-25 15:57:26.793858700 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/m88e6060.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/m88e6060.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/vovpn-gw.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/funkwerk/vovpn-gw/CVS/Entries.Extra u-boot-2009.03/board/funkwerk/vovpn-gw/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/funkwerk/vovpn-gw/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/funkwerk/vovpn-gw/CVS/Entries.Extra    2009-03-25 15:57:26.793858700 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019698/
+/config.mk///1238019698/
+/flash.c///1238019698/
+/m88e6060.c///1238019698/
+/m88e6060.h///1238019698/
+/vovpn-gw.c///1238019698/
diff -Naur u-boot-2009.03_orig/board/funkwerk/vovpn-gw/CVS/Entries.Extra.Old u-boot-2009.03/board/funkwerk/vovpn-gw/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/funkwerk/vovpn-gw/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/funkwerk/vovpn-gw/CVS/Entries.Extra.Old        2009-03-25 15:24:31.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019698/
+/config.mk///1238019698/
+/flash.c///1238019698/
+/m88e6060.c///1238019698/
+/m88e6060.h///1238019698/
+/vovpn-gw.c///1238019698/
diff -Naur u-boot-2009.03_orig/board/funkwerk/vovpn-gw/CVS/Entries.Old u-boot-2009.03/board/funkwerk/vovpn-gw/CVS/Entries.Old
--- u-boot-2009.03_orig/board/funkwerk/vovpn-gw/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/funkwerk/vovpn-gw/CVS/Entries.Old      2009-03-25 15:24:31.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/m88e6060.c/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/m88e6060.h/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/vovpn-gw.c/1.1.1.1/Wed Mar 25 22:21:38 2009//
+D
diff -Naur u-boot-2009.03_orig/board/funkwerk/vovpn-gw/CVS/Repository u-boot-2009.03/board/funkwerk/vovpn-gw/CVS/Repository
--- u-boot-2009.03_orig/board/funkwerk/vovpn-gw/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/funkwerk/vovpn-gw/CVS/Repository       2009-03-25 15:24:31.291019000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/funkwerk/vovpn-gw
diff -Naur u-boot-2009.03_orig/board/funkwerk/vovpn-gw/CVS/Root u-boot-2009.03/board/funkwerk/vovpn-gw/CVS/Root
--- u-boot-2009.03_orig/board/funkwerk/vovpn-gw/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/funkwerk/vovpn-gw/CVS/Root     2009-03-25 15:24:31.291019000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/g2000/CVS/Entries u-boot-2009.03/board/g2000/CVS/Entries
--- u-boot-2009.03_orig/board/g2000/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/g2000/CVS/Entries      2009-03-25 15:57:26.871983200 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/g2000.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/strataflash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/g2000/CVS/Entries.Extra u-boot-2009.03/board/g2000/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/g2000/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/g2000/CVS/Entries.Extra        2009-03-25 15:57:26.887608100 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019698/
+/config.mk///1238019698/
+/g2000.c///1238019698/
+/strataflash.c///1238019698/
+/u-boot.lds///1238019698/
diff -Naur u-boot-2009.03_orig/board/g2000/CVS/Entries.Extra.Old u-boot-2009.03/board/g2000/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/g2000/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/g2000/CVS/Entries.Extra.Old    2009-03-25 15:24:31.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019698/
+/config.mk///1238019698/
+/g2000.c///1238019698/
+/strataflash.c///1238019698/
+/u-boot.lds///1238019698/
diff -Naur u-boot-2009.03_orig/board/g2000/CVS/Entries.Old u-boot-2009.03/board/g2000/CVS/Entries.Old
--- u-boot-2009.03_orig/board/g2000/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/g2000/CVS/Entries.Old  2009-03-25 15:24:31.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/g2000.c/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/strataflash.c/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:38 2009//
+D
diff -Naur u-boot-2009.03_orig/board/g2000/CVS/Repository u-boot-2009.03/board/g2000/CVS/Repository
--- u-boot-2009.03_orig/board/g2000/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/g2000/CVS/Repository   2009-03-25 15:24:31.728513400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/g2000
diff -Naur u-boot-2009.03_orig/board/g2000/CVS/Root u-boot-2009.03/board/g2000/CVS/Root
--- u-boot-2009.03_orig/board/g2000/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/g2000/CVS/Root 2009-03-25 15:24:31.728513400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/gaisler/CVS/Entries u-boot-2009.03/board/gaisler/CVS/Entries
--- u-boot-2009.03_orig/board/gaisler/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gaisler/CVS/Entries    2009-03-25 15:24:32.556627800 -0700
@@ -0,0 +1,5 @@
+D/gr_cpci_ax2000////
+D/gr_ep2s60////
+D/gr_xc3s_1500////
+D/grsim////
+D/grsim_leon2////
diff -Naur u-boot-2009.03_orig/board/gaisler/CVS/Entries.Extra u-boot-2009.03/board/gaisler/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/gaisler/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gaisler/CVS/Entries.Extra      2009-03-25 15:24:32.572252600 -0700
@@ -0,0 +1,5 @@
+D/gr_cpci_ax2000////
+D/gr_ep2s60////
+D/gr_xc3s_1500////
+D/grsim////
+D/grsim_leon2////
diff -Naur u-boot-2009.03_orig/board/gaisler/CVS/Repository u-boot-2009.03/board/gaisler/CVS/Repository
--- u-boot-2009.03_orig/board/gaisler/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gaisler/CVS/Repository 2009-03-25 15:24:31.837887000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/gaisler
diff -Naur u-boot-2009.03_orig/board/gaisler/CVS/Root u-boot-2009.03/board/gaisler/CVS/Root
--- u-boot-2009.03_orig/board/gaisler/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gaisler/CVS/Root       2009-03-25 15:24:31.837887000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/gaisler/gr_cpci_ax2000/CVS/Entries u-boot-2009.03/board/gaisler/gr_cpci_ax2000/CVS/Entries
--- u-boot-2009.03_orig/board/gaisler/gr_cpci_ax2000/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gaisler/gr_cpci_ax2000/CVS/Entries     2009-03-25 15:57:26.965732600 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/gr_cpci_ax2000.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/gaisler/gr_cpci_ax2000/CVS/Entries.Extra u-boot-2009.03/board/gaisler/gr_cpci_ax2000/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/gaisler/gr_cpci_ax2000/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gaisler/gr_cpci_ax2000/CVS/Entries.Extra       2009-03-25 15:57:26.965732600 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019699/
+/config.mk///1238019699/
+/gr_cpci_ax2000.c///1238019699/
+/u-boot.lds///1238019699/
diff -Naur u-boot-2009.03_orig/board/gaisler/gr_cpci_ax2000/CVS/Entries.Extra.Old u-boot-2009.03/board/gaisler/gr_cpci_ax2000/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/gaisler/gr_cpci_ax2000/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gaisler/gr_cpci_ax2000/CVS/Entries.Extra.Old   2009-03-25 15:24:31.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019699/
+/config.mk///1238019699/
+/gr_cpci_ax2000.c///1238019699/
+/u-boot.lds///1238019699/
diff -Naur u-boot-2009.03_orig/board/gaisler/gr_cpci_ax2000/CVS/Entries.Old u-boot-2009.03/board/gaisler/gr_cpci_ax2000/CVS/Entries.Old
--- u-boot-2009.03_orig/board/gaisler/gr_cpci_ax2000/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gaisler/gr_cpci_ax2000/CVS/Entries.Old 2009-03-25 15:24:31.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/gr_cpci_ax2000.c/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:39 2009//
+D
diff -Naur u-boot-2009.03_orig/board/gaisler/gr_cpci_ax2000/CVS/Repository u-boot-2009.03/board/gaisler/gr_cpci_ax2000/CVS/Repository
--- u-boot-2009.03_orig/board/gaisler/gr_cpci_ax2000/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gaisler/gr_cpci_ax2000/CVS/Repository  2009-03-25 15:24:31.869136600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/gaisler/gr_cpci_ax2000
diff -Naur u-boot-2009.03_orig/board/gaisler/gr_cpci_ax2000/CVS/Root u-boot-2009.03/board/gaisler/gr_cpci_ax2000/CVS/Root
--- u-boot-2009.03_orig/board/gaisler/gr_cpci_ax2000/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gaisler/gr_cpci_ax2000/CVS/Root        2009-03-25 15:24:31.869136600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/gaisler/gr_ep2s60/CVS/Entries u-boot-2009.03/board/gaisler/gr_ep2s60/CVS/Entries
--- u-boot-2009.03_orig/board/gaisler/gr_ep2s60/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gaisler/gr_ep2s60/CVS/Entries  2009-03-25 15:57:27.028232200 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/gr_ep2s60.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/gaisler/gr_ep2s60/CVS/Entries.Extra u-boot-2009.03/board/gaisler/gr_ep2s60/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/gaisler/gr_ep2s60/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gaisler/gr_ep2s60/CVS/Entries.Extra    2009-03-25 15:57:27.028232200 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019699/
+/config.mk///1238019699/
+/gr_ep2s60.c///1238019699/
+/u-boot.lds///1238019699/
diff -Naur u-boot-2009.03_orig/board/gaisler/gr_ep2s60/CVS/Entries.Extra.Old u-boot-2009.03/board/gaisler/gr_ep2s60/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/gaisler/gr_ep2s60/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gaisler/gr_ep2s60/CVS/Entries.Extra.Old        2009-03-25 15:24:32.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019699/
+/config.mk///1238019699/
+/gr_ep2s60.c///1238019699/
+/u-boot.lds///1238019699/
diff -Naur u-boot-2009.03_orig/board/gaisler/gr_ep2s60/CVS/Entries.Old u-boot-2009.03/board/gaisler/gr_ep2s60/CVS/Entries.Old
--- u-boot-2009.03_orig/board/gaisler/gr_ep2s60/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gaisler/gr_ep2s60/CVS/Entries.Old      2009-03-25 15:24:32.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/gr_ep2s60.c/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:39 2009//
+D
diff -Naur u-boot-2009.03_orig/board/gaisler/gr_ep2s60/CVS/Repository u-boot-2009.03/board/gaisler/gr_ep2s60/CVS/Repository
--- u-boot-2009.03_orig/board/gaisler/gr_ep2s60/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gaisler/gr_ep2s60/CVS/Repository       2009-03-25 15:24:31.978510200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/gaisler/gr_ep2s60
diff -Naur u-boot-2009.03_orig/board/gaisler/gr_ep2s60/CVS/Root u-boot-2009.03/board/gaisler/gr_ep2s60/CVS/Root
--- u-boot-2009.03_orig/board/gaisler/gr_ep2s60/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gaisler/gr_ep2s60/CVS/Root     2009-03-25 15:24:31.962885400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/gaisler/gr_xc3s_1500/CVS/Entries u-boot-2009.03/board/gaisler/gr_xc3s_1500/CVS/Entries
--- u-boot-2009.03_orig/board/gaisler/gr_xc3s_1500/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gaisler/gr_xc3s_1500/CVS/Entries       2009-03-25 15:57:27.246980800 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/gr_xc3s_1500.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/gaisler/gr_xc3s_1500/CVS/Entries.Extra u-boot-2009.03/board/gaisler/gr_xc3s_1500/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/gaisler/gr_xc3s_1500/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gaisler/gr_xc3s_1500/CVS/Entries.Extra 2009-03-25 15:57:27.246980800 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019699/
+/config.mk///1238019699/
+/gr_xc3s_1500.c///1238019699/
+/u-boot.lds///1238019699/
diff -Naur u-boot-2009.03_orig/board/gaisler/gr_xc3s_1500/CVS/Entries.Extra.Old u-boot-2009.03/board/gaisler/gr_xc3s_1500/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/gaisler/gr_xc3s_1500/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gaisler/gr_xc3s_1500/CVS/Entries.Extra.Old     2009-03-25 15:24:32.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019699/
+/config.mk///1238019699/
+/gr_xc3s_1500.c///1238019699/
+/u-boot.lds///1238019699/
diff -Naur u-boot-2009.03_orig/board/gaisler/gr_xc3s_1500/CVS/Entries.Old u-boot-2009.03/board/gaisler/gr_xc3s_1500/CVS/Entries.Old
--- u-boot-2009.03_orig/board/gaisler/gr_xc3s_1500/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gaisler/gr_xc3s_1500/CVS/Entries.Old   2009-03-25 15:24:32.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/gr_xc3s_1500.c/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:39 2009//
+D
diff -Naur u-boot-2009.03_orig/board/gaisler/gr_xc3s_1500/CVS/Repository u-boot-2009.03/board/gaisler/gr_xc3s_1500/CVS/Repository
--- u-boot-2009.03_orig/board/gaisler/gr_xc3s_1500/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gaisler/gr_xc3s_1500/CVS/Repository    2009-03-25 15:24:32.072259000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/gaisler/gr_xc3s_1500
diff -Naur u-boot-2009.03_orig/board/gaisler/gr_xc3s_1500/CVS/Root u-boot-2009.03/board/gaisler/gr_xc3s_1500/CVS/Root
--- u-boot-2009.03_orig/board/gaisler/gr_xc3s_1500/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gaisler/gr_xc3s_1500/CVS/Root  2009-03-25 15:24:32.072259000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/gaisler/grsim/CVS/Entries u-boot-2009.03/board/gaisler/grsim/CVS/Entries
--- u-boot-2009.03_orig/board/gaisler/grsim/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gaisler/grsim/CVS/Entries      2009-03-25 15:57:27.418854700 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/grsim.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/gaisler/grsim/CVS/Entries.Extra u-boot-2009.03/board/gaisler/grsim/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/gaisler/grsim/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gaisler/grsim/CVS/Entries.Extra        2009-03-25 15:57:27.418854700 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019698/
+/config.mk///1238019698/
+/grsim.c///1238019698/
+/u-boot.lds///1238019698/
diff -Naur u-boot-2009.03_orig/board/gaisler/grsim/CVS/Entries.Extra.Old u-boot-2009.03/board/gaisler/grsim/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/gaisler/grsim/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gaisler/grsim/CVS/Entries.Extra.Old    2009-03-25 15:24:32.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019698/
+/config.mk///1238019698/
+/grsim.c///1238019698/
+/u-boot.lds///1238019698/
diff -Naur u-boot-2009.03_orig/board/gaisler/grsim/CVS/Entries.Old u-boot-2009.03/board/gaisler/grsim/CVS/Entries.Old
--- u-boot-2009.03_orig/board/gaisler/grsim/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gaisler/grsim/CVS/Entries.Old  2009-03-25 15:24:32.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/grsim.c/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:38 2009//
+D
diff -Naur u-boot-2009.03_orig/board/gaisler/grsim/CVS/Repository u-boot-2009.03/board/gaisler/grsim/CVS/Repository
--- u-boot-2009.03_orig/board/gaisler/grsim/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gaisler/grsim/CVS/Repository   2009-03-25 15:24:32.197257400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/gaisler/grsim
diff -Naur u-boot-2009.03_orig/board/gaisler/grsim/CVS/Root u-boot-2009.03/board/gaisler/grsim/CVS/Root
--- u-boot-2009.03_orig/board/gaisler/grsim/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gaisler/grsim/CVS/Root 2009-03-25 15:24:32.197257400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/gaisler/grsim_leon2/CVS/Entries u-boot-2009.03/board/gaisler/grsim_leon2/CVS/Entries
--- u-boot-2009.03_orig/board/gaisler/grsim_leon2/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gaisler/grsim_leon2/CVS/Entries        2009-03-25 15:57:27.512604100 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/grsim_leon2.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/gaisler/grsim_leon2/CVS/Entries.Extra u-boot-2009.03/board/gaisler/grsim_leon2/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/gaisler/grsim_leon2/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gaisler/grsim_leon2/CVS/Entries.Extra  2009-03-25 15:57:27.512604100 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019698/
+/config.mk///1238019698/
+/grsim_leon2.c///1238019698/
+/u-boot.lds///1238019698/
diff -Naur u-boot-2009.03_orig/board/gaisler/grsim_leon2/CVS/Entries.Extra.Old u-boot-2009.03/board/gaisler/grsim_leon2/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/gaisler/grsim_leon2/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gaisler/grsim_leon2/CVS/Entries.Extra.Old      2009-03-25 15:24:32.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019698/
+/config.mk///1238019698/
+/grsim_leon2.c///1238019698/
+/u-boot.lds///1238019698/
diff -Naur u-boot-2009.03_orig/board/gaisler/grsim_leon2/CVS/Entries.Old u-boot-2009.03/board/gaisler/grsim_leon2/CVS/Entries.Old
--- u-boot-2009.03_orig/board/gaisler/grsim_leon2/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gaisler/grsim_leon2/CVS/Entries.Old    2009-03-25 15:24:32.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/grsim_leon2.c/1.1.1.1/Wed Mar 25 22:21:38 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:38 2009//
+D
diff -Naur u-boot-2009.03_orig/board/gaisler/grsim_leon2/CVS/Repository u-boot-2009.03/board/gaisler/grsim_leon2/CVS/Repository
--- u-boot-2009.03_orig/board/gaisler/grsim_leon2/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gaisler/grsim_leon2/CVS/Repository     2009-03-25 15:24:32.306631000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/gaisler/grsim_leon2
diff -Naur u-boot-2009.03_orig/board/gaisler/grsim_leon2/CVS/Root u-boot-2009.03/board/gaisler/grsim_leon2/CVS/Root
--- u-boot-2009.03_orig/board/gaisler/grsim_leon2/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gaisler/grsim_leon2/CVS/Root   2009-03-25 15:24:32.306631000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/gcplus/CVS/Entries u-boot-2009.03/board/gcplus/CVS/Entries
--- u-boot-2009.03_orig/board/gcplus/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gcplus/CVS/Entries     2009-03-25 15:57:27.606353500 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/gcplus.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/gcplus/CVS/Entries.Extra u-boot-2009.03/board/gcplus/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/gcplus/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gcplus/CVS/Entries.Extra       2009-03-25 15:57:27.606353500 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019699/
+/config.mk///1238019699/
+/flash.c///1238019699/
+/gcplus.c///1238019699/
+/lowlevel_init.S///1238019699/
+/u-boot.lds///1238019699/
diff -Naur u-boot-2009.03_orig/board/gcplus/CVS/Entries.Extra.Old u-boot-2009.03/board/gcplus/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/gcplus/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gcplus/CVS/Entries.Extra.Old   2009-03-25 15:24:32.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019699/
+/config.mk///1238019699/
+/flash.c///1238019699/
+/gcplus.c///1238019699/
+/lowlevel_init.S///1238019699/
+/u-boot.lds///1238019699/
diff -Naur u-boot-2009.03_orig/board/gcplus/CVS/Entries.Old u-boot-2009.03/board/gcplus/CVS/Entries.Old
--- u-boot-2009.03_orig/board/gcplus/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gcplus/CVS/Entries.Old 2009-03-25 15:24:32.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/gcplus.c/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:39 2009//
+D
diff -Naur u-boot-2009.03_orig/board/gcplus/CVS/Repository u-boot-2009.03/board/gcplus/CVS/Repository
--- u-boot-2009.03_orig/board/gcplus/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gcplus/CVS/Repository  2009-03-25 15:24:32.634751800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/gcplus
diff -Naur u-boot-2009.03_orig/board/gcplus/CVS/Root u-boot-2009.03/board/gcplus/CVS/Root
--- u-boot-2009.03_orig/board/gcplus/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gcplus/CVS/Root        2009-03-25 15:24:32.634751800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/gdsys/CVS/Entries u-boot-2009.03/board/gdsys/CVS/Entries
--- u-boot-2009.03_orig/board/gdsys/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gdsys/CVS/Entries      2009-03-25 15:24:32.994122200 -0700
@@ -0,0 +1,2 @@
+D/gdppc440etx////
+D/neo////
diff -Naur u-boot-2009.03_orig/board/gdsys/CVS/Entries.Extra u-boot-2009.03/board/gdsys/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/gdsys/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gdsys/CVS/Entries.Extra        2009-03-25 15:24:32.994122200 -0700
@@ -0,0 +1,2 @@
+D/gdppc440etx////
+D/neo////
diff -Naur u-boot-2009.03_orig/board/gdsys/CVS/Repository u-boot-2009.03/board/gdsys/CVS/Repository
--- u-boot-2009.03_orig/board/gdsys/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gdsys/CVS/Repository   2009-03-25 15:24:32.759750200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/gdsys
diff -Naur u-boot-2009.03_orig/board/gdsys/CVS/Root u-boot-2009.03/board/gdsys/CVS/Root
--- u-boot-2009.03_orig/board/gdsys/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gdsys/CVS/Root 2009-03-25 15:24:32.759750200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/gdsys/gdppc440etx/CVS/Entries u-boot-2009.03/board/gdsys/gdppc440etx/CVS/Entries
--- u-boot-2009.03_orig/board/gdsys/gdppc440etx/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gdsys/gdppc440etx/CVS/Entries  2009-03-25 15:57:27.700102900 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/gdppc440etx.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/gdsys/gdppc440etx/CVS/Entries.Extra u-boot-2009.03/board/gdsys/gdppc440etx/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/gdsys/gdppc440etx/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gdsys/gdppc440etx/CVS/Entries.Extra    2009-03-25 15:57:27.700102900 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019699/
+/config.mk///1238019699/
+/gdppc440etx.c///1238019699/
+/init.S///1238019699/
+/u-boot.lds///1238019699/
diff -Naur u-boot-2009.03_orig/board/gdsys/gdppc440etx/CVS/Entries.Extra.Old u-boot-2009.03/board/gdsys/gdppc440etx/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/gdsys/gdppc440etx/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gdsys/gdppc440etx/CVS/Entries.Extra.Old        2009-03-25 15:24:32.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019699/
+/config.mk///1238019699/
+/gdppc440etx.c///1238019699/
+/init.S///1238019699/
+/u-boot.lds///1238019699/
diff -Naur u-boot-2009.03_orig/board/gdsys/gdppc440etx/CVS/Entries.Old u-boot-2009.03/board/gdsys/gdppc440etx/CVS/Entries.Old
--- u-boot-2009.03_orig/board/gdsys/gdppc440etx/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gdsys/gdppc440etx/CVS/Entries.Old      2009-03-25 15:24:32.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/gdppc440etx.c/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/init.S/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:39 2009//
+D
diff -Naur u-boot-2009.03_orig/board/gdsys/gdppc440etx/CVS/Repository u-boot-2009.03/board/gdsys/gdppc440etx/CVS/Repository
--- u-boot-2009.03_orig/board/gdsys/gdppc440etx/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gdsys/gdppc440etx/CVS/Repository       2009-03-25 15:24:32.790999800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/gdsys/gdppc440etx
diff -Naur u-boot-2009.03_orig/board/gdsys/gdppc440etx/CVS/Root u-boot-2009.03/board/gdsys/gdppc440etx/CVS/Root
--- u-boot-2009.03_orig/board/gdsys/gdppc440etx/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gdsys/gdppc440etx/CVS/Root     2009-03-25 15:24:32.790999800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/gdsys/neo/CVS/Entries u-boot-2009.03/board/gdsys/neo/CVS/Entries
--- u-boot-2009.03_orig/board/gdsys/neo/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gdsys/neo/CVS/Entries  2009-03-25 15:57:27.793852300 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/neo.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/gdsys/neo/CVS/Entries.Extra u-boot-2009.03/board/gdsys/neo/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/gdsys/neo/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gdsys/neo/CVS/Entries.Extra    2009-03-25 15:57:27.793852300 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019699/
+/config.mk///1238019699/
+/neo.c///1238019699/
+/u-boot.lds///1238019699/
diff -Naur u-boot-2009.03_orig/board/gdsys/neo/CVS/Entries.Extra.Old u-boot-2009.03/board/gdsys/neo/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/gdsys/neo/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gdsys/neo/CVS/Entries.Extra.Old        2009-03-25 15:24:32.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019699/
+/config.mk///1238019699/
+/neo.c///1238019699/
+/u-boot.lds///1238019699/
diff -Naur u-boot-2009.03_orig/board/gdsys/neo/CVS/Entries.Old u-boot-2009.03/board/gdsys/neo/CVS/Entries.Old
--- u-boot-2009.03_orig/board/gdsys/neo/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gdsys/neo/CVS/Entries.Old      2009-03-25 15:24:32.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/neo.c/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:39 2009//
+D
diff -Naur u-boot-2009.03_orig/board/gdsys/neo/CVS/Repository u-boot-2009.03/board/gdsys/neo/CVS/Repository
--- u-boot-2009.03_orig/board/gdsys/neo/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gdsys/neo/CVS/Repository       2009-03-25 15:24:32.915998200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/gdsys/neo
diff -Naur u-boot-2009.03_orig/board/gdsys/neo/CVS/Root u-boot-2009.03/board/gdsys/neo/CVS/Root
--- u-boot-2009.03_orig/board/gdsys/neo/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gdsys/neo/CVS/Root     2009-03-25 15:24:32.900373400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/gen860t/CVS/Entries u-boot-2009.03/board/gen860t/CVS/Entries
--- u-boot-2009.03_orig/board/gen860t/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gen860t/CVS/Entries    2009-03-25 15:57:27.950101300 -0700
@@ -0,0 +1,14 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/beeper.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/beeper.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fpga.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fpga.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/gen860t.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ioport.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ioport.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot-flashenv.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/gen860t/CVS/Entries.Extra u-boot-2009.03/board/gen860t/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/gen860t/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gen860t/CVS/Entries.Extra      2009-03-25 15:57:27.950101300 -0700
@@ -0,0 +1,13 @@
+/Makefile///1238019699/
+/README///1238019699/
+/beeper.c///1238019699/
+/beeper.h///1238019699/
+/config.mk///1238019699/
+/flash.c///1238019699/
+/fpga.c///1238019699/
+/fpga.h///1238019699/
+/gen860t.c///1238019699/
+/ioport.c///1238019699/
+/ioport.h///1238019699/
+/u-boot-flashenv.lds///1238019699/
+/u-boot.lds///1238019699/
diff -Naur u-boot-2009.03_orig/board/gen860t/CVS/Entries.Extra.Old u-boot-2009.03/board/gen860t/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/gen860t/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gen860t/CVS/Entries.Extra.Old  2009-03-25 15:24:33.000000000 -0700
@@ -0,0 +1,13 @@
+/Makefile///1238019699/
+/README///1238019699/
+/beeper.c///1238019699/
+/beeper.h///1238019699/
+/config.mk///1238019699/
+/flash.c///1238019699/
+/fpga.c///1238019699/
+/fpga.h///1238019699/
+/gen860t.c///1238019699/
+/ioport.c///1238019699/
+/ioport.h///1238019699/
+/u-boot-flashenv.lds///1238019699/
+/u-boot.lds///1238019699/
diff -Naur u-boot-2009.03_orig/board/gen860t/CVS/Entries.Old u-boot-2009.03/board/gen860t/CVS/Entries.Old
--- u-boot-2009.03_orig/board/gen860t/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gen860t/CVS/Entries.Old        2009-03-25 15:24:33.000000000 -0700
@@ -0,0 +1,14 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/README/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/beeper.c/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/beeper.h/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/fpga.c/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/fpga.h/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/gen860t.c/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/ioport.c/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/ioport.h/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/u-boot-flashenv.lds/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:39 2009//
+D
diff -Naur u-boot-2009.03_orig/board/gen860t/CVS/Repository u-boot-2009.03/board/gen860t/CVS/Repository
--- u-boot-2009.03_orig/board/gen860t/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gen860t/CVS/Repository 2009-03-25 15:24:33.025371800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/gen860t
diff -Naur u-boot-2009.03_orig/board/gen860t/CVS/Root u-boot-2009.03/board/gen860t/CVS/Root
--- u-boot-2009.03_orig/board/gen860t/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gen860t/CVS/Root       2009-03-25 15:24:33.025371800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/genietv/CVS/Entries u-boot-2009.03/board/genietv/CVS/Entries
--- u-boot-2009.03_orig/board/genietv/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/genietv/CVS/Entries    2009-03-25 15:57:28.043850700 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/genietv.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/genietv.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.debug/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/genietv/CVS/Entries.Extra u-boot-2009.03/board/genietv/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/genietv/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/genietv/CVS/Entries.Extra      2009-03-25 15:57:28.059475600 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019699/
+/config.mk///1238019699/
+/flash.c///1238019699/
+/genietv.c///1238019699/
+/genietv.h///1238019699/
+/u-boot.lds///1238019699/
+/u-boot.lds.debug///1238019699/
diff -Naur u-boot-2009.03_orig/board/genietv/CVS/Entries.Extra.Old u-boot-2009.03/board/genietv/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/genietv/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/genietv/CVS/Entries.Extra.Old  2009-03-25 15:24:33.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019699/
+/config.mk///1238019699/
+/flash.c///1238019699/
+/genietv.c///1238019699/
+/genietv.h///1238019699/
+/u-boot.lds///1238019699/
+/u-boot.lds.debug///1238019699/
diff -Naur u-boot-2009.03_orig/board/genietv/CVS/Entries.Old u-boot-2009.03/board/genietv/CVS/Entries.Old
--- u-boot-2009.03_orig/board/genietv/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/genietv/CVS/Entries.Old        2009-03-25 15:24:33.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/genietv.c/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/genietv.h/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/u-boot.lds.debug/1.1.1.1/Wed Mar 25 22:21:39 2009//
+D
diff -Naur u-boot-2009.03_orig/board/genietv/CVS/Repository u-boot-2009.03/board/genietv/CVS/Repository
--- u-boot-2009.03_orig/board/genietv/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/genietv/CVS/Repository 2009-03-25 15:24:33.228494200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/genietv
diff -Naur u-boot-2009.03_orig/board/genietv/CVS/Root u-boot-2009.03/board/genietv/CVS/Root
--- u-boot-2009.03_orig/board/genietv/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/genietv/CVS/Root       2009-03-25 15:24:33.228494200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/gth/CVS/Entries u-boot-2009.03/board/gth/CVS/Entries
--- u-boot-2009.03_orig/board/gth/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gth/CVS/Entries        2009-03-31 14:45:13.947740800 -0700
@@ -0,0 +1,11 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ee_access.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ee_access.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/gth.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pcmcia.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ee_dev.h/1.1.1.1/Tue Mar 31 21:45:13 2009//T1.1.1.1
+D
diff -Naur u-boot-2009.03_orig/board/gth/CVS/Entries.Extra u-boot-2009.03/board/gth/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/gth/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gth/CVS/Entries.Extra  2009-03-31 14:45:13.947740800 -0700
@@ -0,0 +1,10 @@
+/Makefile///1238019699/
+/README///1238019699/
+/config.mk///1238019699/
+/ee_access.c///1238019699/
+/ee_access.h///1238019699/
+/flash.c///1238019699/
+/gth.c///1238019699/
+/pcmcia.c///1238019699/
+/u-boot.lds///1238019699/
+/ee_dev.h///1238019699/
diff -Naur u-boot-2009.03_orig/board/gth/CVS/Entries.Extra.Old u-boot-2009.03/board/gth/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/gth/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gth/CVS/Entries.Extra.Old      2009-03-25 17:51:37.000000000 -0700
@@ -0,0 +1,10 @@
+/Makefile///1238019699/
+/README///1238019699/
+/config.mk///1238019699/
+/ee_access.c///1238019699/
+/ee_access.h///1238019699/
+/flash.c///1238019699/
+/gth.c///1238019699/
+/pcmcia.c///1238019699/
+/u-boot.lds///1238019699/
+/ee_dev.h///1238028697/
diff -Naur u-boot-2009.03_orig/board/gth/CVS/Entries.Old u-boot-2009.03/board/gth/CVS/Entries.Old
--- u-boot-2009.03_orig/board/gth/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gth/CVS/Entries.Old    2009-03-25 17:51:37.000000000 -0700
@@ -0,0 +1,11 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ee_access.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ee_access.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/gth.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pcmcia.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ee_dev.h/1.2/Thu Mar 26 00:51:37 2009//
+D
diff -Naur u-boot-2009.03_orig/board/gth/CVS/Repository u-boot-2009.03/board/gth/CVS/Repository
--- u-boot-2009.03_orig/board/gth/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gth/CVS/Repository     2009-03-25 15:24:33.353492600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/gth
diff -Naur u-boot-2009.03_orig/board/gth/CVS/Root u-boot-2009.03/board/gth/CVS/Root
--- u-boot-2009.03_orig/board/gth/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gth/CVS/Root   2009-03-25 15:24:33.353492600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/gth/ee_dev.h u-boot-2009.03/board/gth/ee_dev.h
--- u-boot-2009.03_orig/board/gth/ee_dev.h      2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/board/gth/ee_dev.h   2009-03-31 14:45:13.791492800 -0700
@@ -1,85 +1,85 @@
-/* By Thomas.Lange@Corelatus.com 001025
-   $Revision: 1.6 $
-
-   Definitions for EEPROM/VOLT METER  DS2438
-   Copyright (C) 2000-2001 Corelatus AB */
-
-#ifndef INCeedevh
-#define INCeedevh
-
-#define E_DEBUG(fmt,args...) if( Debug ) printk(KERN_DEBUG"EE: " fmt, ##args)
-
-#define PORT_B_PAR ((volatile immap_t *)CONFIG_SYS_IMMR)->im_cpm.cp_pbpar
-#define PORT_B_ODR ((volatile immap_t *)CONFIG_SYS_IMMR)->im_cpm.cp_pbodr
-#define PORT_B_DIR ((volatile immap_t *)CONFIG_SYS_IMMR)->im_cpm.cp_pbdir
-#define PORT_B_DAT ((volatile immap_t *)CONFIG_SYS_IMMR)->im_cpm.cp_pbdat
-
-#define SET_PORT_B_INPUT(Mask)  PORT_B_DIR &= ~(Mask)
-#define SET_PORT_B_OUTPUT(Mask) PORT_B_DIR |= Mask
-
-#define WRITE_PORT_B(Mask,Value) { \
-                       if (Value) PORT_B_DAT |= Mask; \
-                       else PORT_B_DAT &= ~(Mask); \
-               }
-#define WRITE_PORT(Value) WRITE_PORT_B(PB_EEPROM,Value)
-
-#define READ_PORT (PORT_B_DAT&PB_EEPROM)
-
-/* 64 bytes chip */
-#define EE_CHIP_SIZE 64
-
-/* We use this resistor for measuring the current drain on 3.3V */
-#define CURRENT_RESISTOR 0.022
-
-/* microsecs
-   Pull line down at least this long for reset pulse */
-#define RESET_LOW_TIME    490
-
-/* Read presence pulse after we release reset pulse */
-#define PRESENCE_TIMEOUT  100
-#define PRESENCE_LOW_TIME 200
-
-#define WRITE_0_LOW 80
-#define WRITE_1_LOW 2
-#define TOTAL_WRITE_LOW 80
-
-#define READ_LOW        2
-#define READ_TIMEOUT   10
-#define TOTAL_READ_LOW 80
-
-/*** Rom function commands ***/
-#define READ_ROM   0x33
-#define MATCH_ROM  0x55
-#define SKIP_ROM   0xCC
-#define SEARCH_ROM 0xF0
-
-
-/*** Memory_command_function ***/
-#define WRITE_SCRATCHPAD 0x4E
-#define READ_SCRATCHPAD  0xBE
-#define COPY_SCRATCHPAD  0x48
-#define RECALL_MEMORY    0xB8
-#define CONVERT_TEMP     0x44
-#define CONVERT_VOLTAGE  0xB4
-
-/* Chip is divided in 8 pages, 8 bytes each */
-
-#define EE_PAGE_SIZE 8
-
-/* All chip data we want are in page 0 */
-
-/* Bytes in page 0 */
-#define EE_P0_STATUS   0
-#define EE_P0_TEMP_LSB 1
-#define EE_P0_TEMP_MSB 2
-#define EE_P0_VOLT_LSB 3
-#define EE_P0_VOLT_MSB 4
-#define EE_P0_CURRENT_LSB 5
-#define EE_P0_CURRENT_MSB 6
-
-
-/* 40 byte user data is located at page 3-7 */
-#define EE_USER_PAGE_0 3
-#define USER_PAGES 5
-
-#endif /* INCeedevh */
+/* By Thomas.Lange@Corelatus.com 001025
+   $Revision: 1.1.1.1 $
+
+   Definitions for EEPROM/VOLT METER  DS2438
+   Copyright (C) 2000-2001 Corelatus AB */
+
+#ifndef INCeedevh
+#define INCeedevh
+
+#define E_DEBUG(fmt,args...) if( Debug ) printk(KERN_DEBUG"EE: " fmt, ##args)
+
+#define PORT_B_PAR ((volatile immap_t *)CONFIG_SYS_IMMR)->im_cpm.cp_pbpar
+#define PORT_B_ODR ((volatile immap_t *)CONFIG_SYS_IMMR)->im_cpm.cp_pbodr
+#define PORT_B_DIR ((volatile immap_t *)CONFIG_SYS_IMMR)->im_cpm.cp_pbdir
+#define PORT_B_DAT ((volatile immap_t *)CONFIG_SYS_IMMR)->im_cpm.cp_pbdat
+
+#define SET_PORT_B_INPUT(Mask)  PORT_B_DIR &= ~(Mask)
+#define SET_PORT_B_OUTPUT(Mask) PORT_B_DIR |= Mask
+
+#define WRITE_PORT_B(Mask,Value) { \
+                       if (Value) PORT_B_DAT |= Mask; \
+                       else PORT_B_DAT &= ~(Mask); \
+               }
+#define WRITE_PORT(Value) WRITE_PORT_B(PB_EEPROM,Value)
+
+#define READ_PORT (PORT_B_DAT&PB_EEPROM)
+
+/* 64 bytes chip */
+#define EE_CHIP_SIZE 64
+
+/* We use this resistor for measuring the current drain on 3.3V */
+#define CURRENT_RESISTOR 0.022
+
+/* microsecs
+   Pull line down at least this long for reset pulse */
+#define RESET_LOW_TIME    490
+
+/* Read presence pulse after we release reset pulse */
+#define PRESENCE_TIMEOUT  100
+#define PRESENCE_LOW_TIME 200
+
+#define WRITE_0_LOW 80
+#define WRITE_1_LOW 2
+#define TOTAL_WRITE_LOW 80
+
+#define READ_LOW        2
+#define READ_TIMEOUT   10
+#define TOTAL_READ_LOW 80
+
+/*** Rom function commands ***/
+#define READ_ROM   0x33
+#define MATCH_ROM  0x55
+#define SKIP_ROM   0xCC
+#define SEARCH_ROM 0xF0
+
+
+/*** Memory_command_function ***/
+#define WRITE_SCRATCHPAD 0x4E
+#define READ_SCRATCHPAD  0xBE
+#define COPY_SCRATCHPAD  0x48
+#define RECALL_MEMORY    0xB8
+#define CONVERT_TEMP     0x44
+#define CONVERT_VOLTAGE  0xB4
+
+/* Chip is divided in 8 pages, 8 bytes each */
+
+#define EE_PAGE_SIZE 8
+
+/* All chip data we want are in page 0 */
+
+/* Bytes in page 0 */
+#define EE_P0_STATUS   0
+#define EE_P0_TEMP_LSB 1
+#define EE_P0_TEMP_MSB 2
+#define EE_P0_VOLT_LSB 3
+#define EE_P0_VOLT_MSB 4
+#define EE_P0_CURRENT_LSB 5
+#define EE_P0_CURRENT_MSB 6
+
+
+/* 40 byte user data is located at page 3-7 */
+#define EE_USER_PAGE_0 3
+#define USER_PAGES 5
+
+#endif /* INCeedevh */
diff -Naur u-boot-2009.03_orig/board/gth2/CVS/Entries u-boot-2009.03/board/gth2/CVS/Entries
--- u-boot-2009.03_orig/board/gth2/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gth2/CVS/Entries       2009-03-25 15:57:28.325098900 -0700
@@ -0,0 +1,10 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ee_access.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ee_access.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ee_dev.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/gth2.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/gth2/CVS/Entries.Extra u-boot-2009.03/board/gth2/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/gth2/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gth2/CVS/Entries.Extra 2009-03-25 15:57:28.325098900 -0700
@@ -0,0 +1,9 @@
+/Makefile///1238019699/
+/config.mk///1238019699/
+/ee_access.c///1238019699/
+/ee_access.h///1238019699/
+/ee_dev.h///1238019699/
+/flash.c///1238019699/
+/gth2.c///1238019699/
+/lowlevel_init.S///1238019699/
+/u-boot.lds///1238019699/
diff -Naur u-boot-2009.03_orig/board/gth2/CVS/Entries.Extra.Old u-boot-2009.03/board/gth2/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/gth2/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gth2/CVS/Entries.Extra.Old     2009-03-25 15:24:33.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile///1238019699/
+/config.mk///1238019699/
+/ee_access.c///1238019699/
+/ee_access.h///1238019699/
+/ee_dev.h///1238019699/
+/flash.c///1238019699/
+/gth2.c///1238019699/
+/lowlevel_init.S///1238019699/
+/u-boot.lds///1238019699/
diff -Naur u-boot-2009.03_orig/board/gth2/CVS/Entries.Old u-boot-2009.03/board/gth2/CVS/Entries.Old
--- u-boot-2009.03_orig/board/gth2/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gth2/CVS/Entries.Old   2009-03-25 15:24:33.000000000 -0700
@@ -0,0 +1,10 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/ee_access.c/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/ee_access.h/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/ee_dev.h/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/gth2.c/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:39 2009//
+D
diff -Naur u-boot-2009.03_orig/board/gth2/CVS/Repository u-boot-2009.03/board/gth2/CVS/Repository
--- u-boot-2009.03_orig/board/gth2/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gth2/CVS/Repository    2009-03-25 15:24:33.572239800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/gth2
diff -Naur u-boot-2009.03_orig/board/gth2/CVS/Root u-boot-2009.03/board/gth2/CVS/Root
--- u-boot-2009.03_orig/board/gth2/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gth2/CVS/Root  2009-03-25 15:24:33.572239800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/gw8260/CVS/Entries u-boot-2009.03/board/gw8260/CVS/Entries
--- u-boot-2009.03_orig/board/gw8260/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gw8260/CVS/Entries     2009-03-25 15:57:28.403223400 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/gw8260.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/gw8260/CVS/Entries.Extra u-boot-2009.03/board/gw8260/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/gw8260/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gw8260/CVS/Entries.Extra       2009-03-25 15:57:28.403223400 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019699/
+/config.mk///1238019699/
+/flash.c///1238019699/
+/gw8260.c///1238019699/
diff -Naur u-boot-2009.03_orig/board/gw8260/CVS/Entries.Extra.Old u-boot-2009.03/board/gw8260/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/gw8260/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gw8260/CVS/Entries.Extra.Old   2009-03-25 15:24:33.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019699/
+/config.mk///1238019699/
+/flash.c///1238019699/
+/gw8260.c///1238019699/
diff -Naur u-boot-2009.03_orig/board/gw8260/CVS/Entries.Old u-boot-2009.03/board/gw8260/CVS/Entries.Old
--- u-boot-2009.03_orig/board/gw8260/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gw8260/CVS/Entries.Old 2009-03-25 15:24:33.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/gw8260.c/1.1.1.1/Wed Mar 25 22:21:39 2009//
+D
diff -Naur u-boot-2009.03_orig/board/gw8260/CVS/Repository u-boot-2009.03/board/gw8260/CVS/Repository
--- u-boot-2009.03_orig/board/gw8260/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gw8260/CVS/Repository  2009-03-25 15:24:33.728487800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/gw8260
diff -Naur u-boot-2009.03_orig/board/gw8260/CVS/Root u-boot-2009.03/board/gw8260/CVS/Root
--- u-boot-2009.03_orig/board/gw8260/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/gw8260/CVS/Root        2009-03-25 15:24:33.728487800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/hermes/CVS/Entries u-boot-2009.03/board/hermes/CVS/Entries
--- u-boot-2009.03_orig/board/hermes/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/hermes/CVS/Entries     2009-03-25 15:57:28.481347900 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/hermes.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.debug/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/hermes/CVS/Entries.Extra u-boot-2009.03/board/hermes/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/hermes/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/hermes/CVS/Entries.Extra       2009-03-25 15:57:28.496972800 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019699/
+/config.mk///1238019699/
+/flash.c///1238019699/
+/hermes.c///1238019699/
+/u-boot.lds///1238019699/
+/u-boot.lds.debug///1238019699/
diff -Naur u-boot-2009.03_orig/board/hermes/CVS/Entries.Extra.Old u-boot-2009.03/board/hermes/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/hermes/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/hermes/CVS/Entries.Extra.Old   2009-03-25 15:24:33.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019699/
+/config.mk///1238019699/
+/flash.c///1238019699/
+/hermes.c///1238019699/
+/u-boot.lds///1238019699/
+/u-boot.lds.debug///1238019699/
diff -Naur u-boot-2009.03_orig/board/hermes/CVS/Entries.Old u-boot-2009.03/board/hermes/CVS/Entries.Old
--- u-boot-2009.03_orig/board/hermes/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/hermes/CVS/Entries.Old 2009-03-25 15:24:33.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/hermes.c/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/u-boot.lds.debug/1.1.1.1/Wed Mar 25 22:21:39 2009//
+D
diff -Naur u-boot-2009.03_orig/board/hermes/CVS/Repository u-boot-2009.03/board/hermes/CVS/Repository
--- u-boot-2009.03_orig/board/hermes/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/hermes/CVS/Repository  2009-03-25 15:24:33.837861400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/hermes
diff -Naur u-boot-2009.03_orig/board/hermes/CVS/Root u-boot-2009.03/board/hermes/CVS/Root
--- u-boot-2009.03_orig/board/hermes/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/hermes/CVS/Root        2009-03-25 15:24:33.822236600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/hidden_dragon/CVS/Entries u-boot-2009.03/board/hidden_dragon/CVS/Entries
--- u-boot-2009.03_orig/board/hidden_dragon/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/hidden_dragon/CVS/Entries      2009-03-25 15:57:28.575097300 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/early_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/hidden_dragon.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/speed.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/hidden_dragon/CVS/Entries.Extra u-boot-2009.03/board/hidden_dragon/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/hidden_dragon/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/hidden_dragon/CVS/Entries.Extra        2009-03-25 15:57:28.575097300 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019699/
+/README///1238019699/
+/config.mk///1238019699/
+/early_init.S///1238019699/
+/flash.c///1238019699/
+/hidden_dragon.c///1238019699/
+/speed.h///1238019699/
diff -Naur u-boot-2009.03_orig/board/hidden_dragon/CVS/Entries.Extra.Old u-boot-2009.03/board/hidden_dragon/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/hidden_dragon/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/hidden_dragon/CVS/Entries.Extra.Old    2009-03-25 15:24:34.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019699/
+/README///1238019699/
+/config.mk///1238019699/
+/early_init.S///1238019699/
+/flash.c///1238019699/
+/hidden_dragon.c///1238019699/
+/speed.h///1238019699/
diff -Naur u-boot-2009.03_orig/board/hidden_dragon/CVS/Entries.Old u-boot-2009.03/board/hidden_dragon/CVS/Entries.Old
--- u-boot-2009.03_orig/board/hidden_dragon/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/hidden_dragon/CVS/Entries.Old  2009-03-25 15:24:34.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/README/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/early_init.S/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/hidden_dragon.c/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/speed.h/1.1.1.1/Wed Mar 25 22:21:39 2009//
+D
diff -Naur u-boot-2009.03_orig/board/hidden_dragon/CVS/Repository u-boot-2009.03/board/hidden_dragon/CVS/Repository
--- u-boot-2009.03_orig/board/hidden_dragon/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/hidden_dragon/CVS/Repository   2009-03-25 15:24:33.962859800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/hidden_dragon
diff -Naur u-boot-2009.03_orig/board/hidden_dragon/CVS/Root u-boot-2009.03/board/hidden_dragon/CVS/Root
--- u-boot-2009.03_orig/board/hidden_dragon/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/hidden_dragon/CVS/Root 2009-03-25 15:24:33.962859800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/hmi1001/CVS/Entries u-boot-2009.03/board/hmi1001/CVS/Entries
--- u-boot-2009.03_orig/board/hmi1001/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/hmi1001/CVS/Entries    2009-03-25 15:57:28.668846700 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/hmi1001.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/hmi1001/CVS/Entries.Extra u-boot-2009.03/board/hmi1001/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/hmi1001/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/hmi1001/CVS/Entries.Extra      2009-03-25 15:57:28.668846700 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019699/
+/config.mk///1238019699/
+/hmi1001.c///1238019699/
diff -Naur u-boot-2009.03_orig/board/hmi1001/CVS/Entries.Extra.Old u-boot-2009.03/board/hmi1001/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/hmi1001/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/hmi1001/CVS/Entries.Extra.Old  2009-03-25 15:24:34.000000000 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019699/
+/config.mk///1238019699/
+/hmi1001.c///1238019699/
diff -Naur u-boot-2009.03_orig/board/hmi1001/CVS/Entries.Old u-boot-2009.03/board/hmi1001/CVS/Entries.Old
--- u-boot-2009.03_orig/board/hmi1001/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/hmi1001/CVS/Entries.Old        2009-03-25 15:24:34.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/hmi1001.c/1.1.1.1/Wed Mar 25 22:21:39 2009//
+D
diff -Naur u-boot-2009.03_orig/board/hmi1001/CVS/Repository u-boot-2009.03/board/hmi1001/CVS/Repository
--- u-boot-2009.03_orig/board/hmi1001/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/hmi1001/CVS/Repository 2009-03-25 15:24:34.087858200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/hmi1001
diff -Naur u-boot-2009.03_orig/board/hmi1001/CVS/Root u-boot-2009.03/board/hmi1001/CVS/Root
--- u-boot-2009.03_orig/board/hmi1001/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/hmi1001/CVS/Root       2009-03-25 15:24:34.087858200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/hymod/CVS/Entries u-boot-2009.03/board/hymod/CVS/Entries
--- u-boot-2009.03_orig/board/hymod/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/hymod/CVS/Entries      2009-03-25 15:57:28.825095700 -0700
@@ -0,0 +1,15 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bsp.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/eeprom.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/env.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fetch.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/global_env/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/hymod.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/hymod.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/input.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.debug/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/hymod/CVS/Entries.Extra u-boot-2009.03/board/hymod/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/hymod/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/hymod/CVS/Entries.Extra        2009-03-25 15:57:28.825095700 -0700
@@ -0,0 +1,14 @@
+/Makefile///1238019699/
+/bsp.c///1238019699/
+/config.mk///1238019699/
+/eeprom.c///1238019699/
+/env.c///1238019699/
+/fetch.c///1238019699/
+/flash.c///1238019699/
+/flash.h///1238019699/
+/global_env///1238019699/
+/hymod.c///1238019699/
+/hymod.h///1238019699/
+/input.c///1238019699/
+/u-boot.lds///1238019699/
+/u-boot.lds.debug///1238019699/
diff -Naur u-boot-2009.03_orig/board/hymod/CVS/Entries.Extra.Old u-boot-2009.03/board/hymod/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/hymod/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/hymod/CVS/Entries.Extra.Old    2009-03-25 15:24:34.000000000 -0700
@@ -0,0 +1,14 @@
+/Makefile///1238019699/
+/bsp.c///1238019699/
+/config.mk///1238019699/
+/eeprom.c///1238019699/
+/env.c///1238019699/
+/fetch.c///1238019699/
+/flash.c///1238019699/
+/flash.h///1238019699/
+/global_env///1238019699/
+/hymod.c///1238019699/
+/hymod.h///1238019699/
+/input.c///1238019699/
+/u-boot.lds///1238019699/
+/u-boot.lds.debug///1238019699/
diff -Naur u-boot-2009.03_orig/board/hymod/CVS/Entries.Old u-boot-2009.03/board/hymod/CVS/Entries.Old
--- u-boot-2009.03_orig/board/hymod/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/hymod/CVS/Entries.Old  2009-03-25 15:24:34.000000000 -0700
@@ -0,0 +1,15 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/bsp.c/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/eeprom.c/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/env.c/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/fetch.c/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/flash.h/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/global_env/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/hymod.c/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/hymod.h/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/input.c/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/u-boot.lds.debug/1.1.1.1/Wed Mar 25 22:21:39 2009//
+D
diff -Naur u-boot-2009.03_orig/board/hymod/CVS/Repository u-boot-2009.03/board/hymod/CVS/Repository
--- u-boot-2009.03_orig/board/hymod/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/hymod/CVS/Repository   2009-03-25 15:24:34.181607000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/hymod
diff -Naur u-boot-2009.03_orig/board/hymod/CVS/Root u-boot-2009.03/board/hymod/CVS/Root
--- u-boot-2009.03_orig/board/hymod/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/hymod/CVS/Root 2009-03-25 15:24:34.181607000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/icecube/CVS/Entries u-boot-2009.03/board/icecube/CVS/Entries
--- u-boot-2009.03_orig/board/icecube/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/icecube/CVS/Entries    2009-03-25 15:57:28.965719800 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/icecube.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mt46v16m16-75.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mt46v32m16.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mt48lc16m16a2-75.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/icecube/CVS/Entries.Extra u-boot-2009.03/board/icecube/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/icecube/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/icecube/CVS/Entries.Extra      2009-03-25 15:57:28.965719800 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019699/
+/config.mk///1238019699/
+/flash.c///1238019699/
+/icecube.c///1238019699/
+/mt46v16m16-75.h///1238019700/
+/mt46v32m16.h///1238019700/
+/mt48lc16m16a2-75.h///1238019700/
diff -Naur u-boot-2009.03_orig/board/icecube/CVS/Entries.Extra.Old u-boot-2009.03/board/icecube/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/icecube/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/icecube/CVS/Entries.Extra.Old  2009-03-25 15:24:34.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019699/
+/config.mk///1238019699/
+/flash.c///1238019699/
+/icecube.c///1238019699/
+/mt46v16m16-75.h///1238019700/
+/mt46v32m16.h///1238019700/
+/mt48lc16m16a2-75.h///1238019700/
diff -Naur u-boot-2009.03_orig/board/icecube/CVS/Entries.Old u-boot-2009.03/board/icecube/CVS/Entries.Old
--- u-boot-2009.03_orig/board/icecube/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/icecube/CVS/Entries.Old        2009-03-25 15:24:34.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/icecube.c/1.1.1.1/Wed Mar 25 22:21:39 2009//
+/mt46v16m16-75.h/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/mt46v32m16.h/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/mt48lc16m16a2-75.h/1.1.1.1/Wed Mar 25 22:21:40 2009//
+D
diff -Naur u-boot-2009.03_orig/board/icecube/CVS/Repository u-boot-2009.03/board/icecube/CVS/Repository
--- u-boot-2009.03_orig/board/icecube/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/icecube/CVS/Repository 2009-03-25 15:24:34.603476600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/icecube
diff -Naur u-boot-2009.03_orig/board/icecube/CVS/Root u-boot-2009.03/board/icecube/CVS/Root
--- u-boot-2009.03_orig/board/icecube/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/icecube/CVS/Root       2009-03-25 15:24:34.587851800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/icu862/CVS/Entries u-boot-2009.03/board/icu862/CVS/Entries
--- u-boot-2009.03_orig/board/icu862/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/icu862/CVS/Entries     2009-03-25 15:57:29.075094100 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/icu862.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pcmcia.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.debug/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/icu862/CVS/Entries.Extra u-boot-2009.03/board/icu862/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/icu862/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/icu862/CVS/Entries.Extra       2009-03-25 15:57:29.075094100 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019700/
+/config.mk///1238019700/
+/flash.c///1238019700/
+/icu862.c///1238019700/
+/pcmcia.c///1238019700/
+/u-boot.lds///1238019700/
+/u-boot.lds.debug///1238019700/
diff -Naur u-boot-2009.03_orig/board/icu862/CVS/Entries.Extra.Old u-boot-2009.03/board/icu862/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/icu862/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/icu862/CVS/Entries.Extra.Old   2009-03-25 15:24:34.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019700/
+/config.mk///1238019700/
+/flash.c///1238019700/
+/icu862.c///1238019700/
+/pcmcia.c///1238019700/
+/u-boot.lds///1238019700/
+/u-boot.lds.debug///1238019700/
diff -Naur u-boot-2009.03_orig/board/icu862/CVS/Entries.Old u-boot-2009.03/board/icu862/CVS/Entries.Old
--- u-boot-2009.03_orig/board/icu862/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/icu862/CVS/Entries.Old 2009-03-25 15:24:34.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/icu862.c/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/pcmcia.c/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/u-boot.lds.debug/1.1.1.1/Wed Mar 25 22:21:40 2009//
+D
diff -Naur u-boot-2009.03_orig/board/icu862/CVS/Repository u-boot-2009.03/board/icu862/CVS/Repository
--- u-boot-2009.03_orig/board/icu862/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/icu862/CVS/Repository  2009-03-25 15:24:34.790974200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/icu862
diff -Naur u-boot-2009.03_orig/board/icu862/CVS/Root u-boot-2009.03/board/icu862/CVS/Root
--- u-boot-2009.03_orig/board/icu862/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/icu862/CVS/Root        2009-03-25 15:24:34.790974200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/idmr/CVS/Entries u-boot-2009.03/board/idmr/CVS/Entries
--- u-boot-2009.03_orig/board/idmr/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/idmr/CVS/Entries       2009-03-25 15:57:29.246968000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/idmr.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/idmr/CVS/Entries.Extra u-boot-2009.03/board/idmr/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/idmr/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/idmr/CVS/Entries.Extra 2009-03-25 15:57:29.246968000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019700/
+/config.mk///1238019700/
+/flash.c///1238019700/
+/idmr.c///1238019700/
+/u-boot.lds///1238019700/
diff -Naur u-boot-2009.03_orig/board/idmr/CVS/Entries.Extra.Old u-boot-2009.03/board/idmr/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/idmr/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/idmr/CVS/Entries.Extra.Old     2009-03-25 15:24:34.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019700/
+/config.mk///1238019700/
+/flash.c///1238019700/
+/idmr.c///1238019700/
+/u-boot.lds///1238019700/
diff -Naur u-boot-2009.03_orig/board/idmr/CVS/Entries.Old u-boot-2009.03/board/idmr/CVS/Entries.Old
--- u-boot-2009.03_orig/board/idmr/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/idmr/CVS/Entries.Old   2009-03-25 15:24:34.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/idmr.c/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:40 2009//
+D
diff -Naur u-boot-2009.03_orig/board/idmr/CVS/Repository u-boot-2009.03/board/idmr/CVS/Repository
--- u-boot-2009.03_orig/board/idmr/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/idmr/CVS/Repository    2009-03-25 15:24:34.931597400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/idmr
diff -Naur u-boot-2009.03_orig/board/idmr/CVS/Root u-boot-2009.03/board/idmr/CVS/Root
--- u-boot-2009.03_orig/board/idmr/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/idmr/CVS/Root  2009-03-25 15:24:34.915972600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/ids8247/CVS/Entries u-boot-2009.03/board/ids8247/CVS/Entries
--- u-boot-2009.03_orig/board/ids8247/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ids8247/CVS/Entries    2009-03-25 15:57:29.325092500 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ids8247.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/ids8247/CVS/Entries.Extra u-boot-2009.03/board/ids8247/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/ids8247/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ids8247/CVS/Entries.Extra      2009-03-25 15:57:29.325092500 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019700/
+/config.mk///1238019700/
+/flash.c///1238019700/
+/ids8247.c///1238019700/
diff -Naur u-boot-2009.03_orig/board/ids8247/CVS/Entries.Extra.Old u-boot-2009.03/board/ids8247/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/ids8247/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ids8247/CVS/Entries.Extra.Old  2009-03-25 15:24:35.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019700/
+/config.mk///1238019700/
+/flash.c///1238019700/
+/ids8247.c///1238019700/
diff -Naur u-boot-2009.03_orig/board/ids8247/CVS/Entries.Old u-boot-2009.03/board/ids8247/CVS/Entries.Old
--- u-boot-2009.03_orig/board/ids8247/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ids8247/CVS/Entries.Old        2009-03-25 15:24:35.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/ids8247.c/1.1.1.1/Wed Mar 25 22:21:40 2009//
+D
diff -Naur u-boot-2009.03_orig/board/ids8247/CVS/Repository u-boot-2009.03/board/ids8247/CVS/Repository
--- u-boot-2009.03_orig/board/ids8247/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ids8247/CVS/Repository 2009-03-25 15:24:35.040971000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/ids8247
diff -Naur u-boot-2009.03_orig/board/ids8247/CVS/Root u-boot-2009.03/board/ids8247/CVS/Root
--- u-boot-2009.03_orig/board/ids8247/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ids8247/CVS/Root       2009-03-25 15:24:35.040971000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/impa7/CVS/Entries u-boot-2009.03/board/impa7/CVS/Entries
--- u-boot-2009.03_orig/board/impa7/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/impa7/CVS/Entries      2009-03-25 15:57:29.403217000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/impa7.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/impa7/CVS/Entries.Extra u-boot-2009.03/board/impa7/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/impa7/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/impa7/CVS/Entries.Extra        2009-03-25 15:57:29.403217000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019700/
+/config.mk///1238019700/
+/flash.c///1238019700/
+/impa7.c///1238019700/
+/lowlevel_init.S///1238019700/
+/u-boot.lds///1238019700/
diff -Naur u-boot-2009.03_orig/board/impa7/CVS/Entries.Extra.Old u-boot-2009.03/board/impa7/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/impa7/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/impa7/CVS/Entries.Extra.Old    2009-03-25 15:24:35.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019700/
+/config.mk///1238019700/
+/flash.c///1238019700/
+/impa7.c///1238019700/
+/lowlevel_init.S///1238019700/
+/u-boot.lds///1238019700/
diff -Naur u-boot-2009.03_orig/board/impa7/CVS/Entries.Old u-boot-2009.03/board/impa7/CVS/Entries.Old
--- u-boot-2009.03_orig/board/impa7/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/impa7/CVS/Entries.Old  2009-03-25 15:24:35.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/impa7.c/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:40 2009//
+D
diff -Naur u-boot-2009.03_orig/board/impa7/CVS/Repository u-boot-2009.03/board/impa7/CVS/Repository
--- u-boot-2009.03_orig/board/impa7/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/impa7/CVS/Repository   2009-03-25 15:24:35.150344600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/impa7
diff -Naur u-boot-2009.03_orig/board/impa7/CVS/Root u-boot-2009.03/board/impa7/CVS/Root
--- u-boot-2009.03_orig/board/impa7/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/impa7/CVS/Root 2009-03-25 15:24:35.134719800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/imx31_litekit/CVS/Entries u-boot-2009.03/board/imx31_litekit/CVS/Entries
--- u-boot-2009.03_orig/board/imx31_litekit/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/imx31_litekit/CVS/Entries      2009-03-25 15:57:29.481341500 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/imx31_litekit.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/imx31_litekit/CVS/Entries.Extra u-boot-2009.03/board/imx31_litekit/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/imx31_litekit/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/imx31_litekit/CVS/Entries.Extra        2009-03-25 15:57:29.496966400 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019700/
+/config.mk///1238019700/
+/imx31_litekit.c///1238019700/
+/lowlevel_init.S///1238019700/
+/u-boot.lds///1238019700/
diff -Naur u-boot-2009.03_orig/board/imx31_litekit/CVS/Entries.Extra.Old u-boot-2009.03/board/imx31_litekit/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/imx31_litekit/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/imx31_litekit/CVS/Entries.Extra.Old    2009-03-25 15:24:35.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019700/
+/config.mk///1238019700/
+/imx31_litekit.c///1238019700/
+/lowlevel_init.S///1238019700/
+/u-boot.lds///1238019700/
diff -Naur u-boot-2009.03_orig/board/imx31_litekit/CVS/Entries.Old u-boot-2009.03/board/imx31_litekit/CVS/Entries.Old
--- u-boot-2009.03_orig/board/imx31_litekit/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/imx31_litekit/CVS/Entries.Old  2009-03-25 15:24:35.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/imx31_litekit.c/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:40 2009//
+D
diff -Naur u-boot-2009.03_orig/board/imx31_litekit/CVS/Repository u-boot-2009.03/board/imx31_litekit/CVS/Repository
--- u-boot-2009.03_orig/board/imx31_litekit/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/imx31_litekit/CVS/Repository   2009-03-25 15:24:35.275343000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/imx31_litekit
diff -Naur u-boot-2009.03_orig/board/imx31_litekit/CVS/Root u-boot-2009.03/board/imx31_litekit/CVS/Root
--- u-boot-2009.03_orig/board/imx31_litekit/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/imx31_litekit/CVS/Root 2009-03-25 15:24:35.259718200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/imx31_phycore/CVS/Entries u-boot-2009.03/board/imx31_phycore/CVS/Entries
--- u-boot-2009.03_orig/board/imx31_phycore/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/imx31_phycore/CVS/Entries      2009-03-25 15:57:29.575090900 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/imx31_phycore.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/imx31_phycore/CVS/Entries.Extra u-boot-2009.03/board/imx31_phycore/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/imx31_phycore/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/imx31_phycore/CVS/Entries.Extra        2009-03-25 15:57:29.575090900 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019700/
+/config.mk///1238019700/
+/imx31_phycore.c///1238019700/
+/lowlevel_init.S///1238019700/
+/u-boot.lds///1238019700/
diff -Naur u-boot-2009.03_orig/board/imx31_phycore/CVS/Entries.Extra.Old u-boot-2009.03/board/imx31_phycore/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/imx31_phycore/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/imx31_phycore/CVS/Entries.Extra.Old    2009-03-25 15:24:35.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019700/
+/config.mk///1238019700/
+/imx31_phycore.c///1238019700/
+/lowlevel_init.S///1238019700/
+/u-boot.lds///1238019700/
diff -Naur u-boot-2009.03_orig/board/imx31_phycore/CVS/Entries.Old u-boot-2009.03/board/imx31_phycore/CVS/Entries.Old
--- u-boot-2009.03_orig/board/imx31_phycore/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/imx31_phycore/CVS/Entries.Old  2009-03-25 15:24:35.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/imx31_phycore.c/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:40 2009//
+D
diff -Naur u-boot-2009.03_orig/board/imx31_phycore/CVS/Repository u-boot-2009.03/board/imx31_phycore/CVS/Repository
--- u-boot-2009.03_orig/board/imx31_phycore/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/imx31_phycore/CVS/Repository   2009-03-25 15:24:35.431591000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/imx31_phycore
diff -Naur u-boot-2009.03_orig/board/imx31_phycore/CVS/Root u-boot-2009.03/board/imx31_phycore/CVS/Root
--- u-boot-2009.03_orig/board/imx31_phycore/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/imx31_phycore/CVS/Root 2009-03-25 15:24:35.400341400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/incaip/CVS/Entries u-boot-2009.03/board/incaip/CVS/Entries
--- u-boot-2009.03_orig/board/incaip/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/incaip/CVS/Entries     2009-03-25 15:57:29.668840300 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/incaip.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/incaip/CVS/Entries.Extra u-boot-2009.03/board/incaip/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/incaip/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/incaip/CVS/Entries.Extra       2009-03-25 15:57:29.668840300 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019700/
+/config.mk///1238019700/
+/flash.c///1238019700/
+/incaip.c///1238019700/
+/lowlevel_init.S///1238019700/
+/u-boot.lds///1238019700/
diff -Naur u-boot-2009.03_orig/board/incaip/CVS/Entries.Extra.Old u-boot-2009.03/board/incaip/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/incaip/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/incaip/CVS/Entries.Extra.Old   2009-03-25 15:24:35.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019700/
+/config.mk///1238019700/
+/flash.c///1238019700/
+/incaip.c///1238019700/
+/lowlevel_init.S///1238019700/
+/u-boot.lds///1238019700/
diff -Naur u-boot-2009.03_orig/board/incaip/CVS/Entries.Old u-boot-2009.03/board/incaip/CVS/Entries.Old
--- u-boot-2009.03_orig/board/incaip/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/incaip/CVS/Entries.Old 2009-03-25 15:24:35.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/incaip.c/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:40 2009//
+D
diff -Naur u-boot-2009.03_orig/board/incaip/CVS/Repository u-boot-2009.03/board/incaip/CVS/Repository
--- u-boot-2009.03_orig/board/incaip/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/incaip/CVS/Repository  2009-03-25 15:24:35.603463800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/incaip
diff -Naur u-boot-2009.03_orig/board/incaip/CVS/Root u-boot-2009.03/board/incaip/CVS/Root
--- u-boot-2009.03_orig/board/incaip/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/incaip/CVS/Root        2009-03-25 15:24:35.603463800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/inka4x0/CVS/Entries u-boot-2009.03/board/inka4x0/CVS/Entries
--- u-boot-2009.03_orig/board/inka4x0/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/inka4x0/CVS/Entries    2009-03-25 15:57:29.778214600 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/hyb25d512160bf-5.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/inka4x0.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/k4h511638c.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mt46v16m16-75.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mt46v32m16-75.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mt48lc16m16a2-75.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/inka4x0/CVS/Entries.Extra u-boot-2009.03/board/inka4x0/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/inka4x0/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/inka4x0/CVS/Entries.Extra      2009-03-25 15:57:29.778214600 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019700/
+/config.mk///1238019700/
+/hyb25d512160bf-5.h///1238019700/
+/inka4x0.c///1238019700/
+/k4h511638c.h///1238019700/
+/mt46v16m16-75.h///1238019700/
+/mt46v32m16-75.h///1238019700/
+/mt48lc16m16a2-75.h///1238019700/
diff -Naur u-boot-2009.03_orig/board/inka4x0/CVS/Entries.Extra.Old u-boot-2009.03/board/inka4x0/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/inka4x0/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/inka4x0/CVS/Entries.Extra.Old  2009-03-25 15:24:35.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019700/
+/config.mk///1238019700/
+/hyb25d512160bf-5.h///1238019700/
+/inka4x0.c///1238019700/
+/k4h511638c.h///1238019700/
+/mt46v16m16-75.h///1238019700/
+/mt46v32m16-75.h///1238019700/
+/mt48lc16m16a2-75.h///1238019700/
diff -Naur u-boot-2009.03_orig/board/inka4x0/CVS/Entries.Old u-boot-2009.03/board/inka4x0/CVS/Entries.Old
--- u-boot-2009.03_orig/board/inka4x0/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/inka4x0/CVS/Entries.Old        2009-03-25 15:24:35.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/hyb25d512160bf-5.h/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/inka4x0.c/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/k4h511638c.h/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/mt46v16m16-75.h/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/mt46v32m16-75.h/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/mt48lc16m16a2-75.h/1.1.1.1/Wed Mar 25 22:21:40 2009//
+D
diff -Naur u-boot-2009.03_orig/board/inka4x0/CVS/Repository u-boot-2009.03/board/inka4x0/CVS/Repository
--- u-boot-2009.03_orig/board/inka4x0/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/inka4x0/CVS/Repository 2009-03-25 15:24:35.728462200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/inka4x0
diff -Naur u-boot-2009.03_orig/board/inka4x0/CVS/Root u-boot-2009.03/board/inka4x0/CVS/Root
--- u-boot-2009.03_orig/board/inka4x0/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/inka4x0/CVS/Root       2009-03-25 15:24:35.728462200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/innokom/CVS/Entries u-boot-2009.03/board/innokom/CVS/Entries
--- u-boot-2009.03_orig/board/innokom/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/innokom/CVS/Entries    2009-03-25 15:57:29.871964000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/innokom.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/innokom/CVS/Entries.Extra u-boot-2009.03/board/innokom/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/innokom/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/innokom/CVS/Entries.Extra      2009-03-25 15:57:29.871964000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019700/
+/config.mk///1238019700/
+/flash.c///1238019700/
+/innokom.c///1238019700/
+/lowlevel_init.S///1238019700/
+/u-boot.lds///1238019700/
diff -Naur u-boot-2009.03_orig/board/innokom/CVS/Entries.Extra.Old u-boot-2009.03/board/innokom/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/innokom/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/innokom/CVS/Entries.Extra.Old  2009-03-25 15:24:35.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019700/
+/config.mk///1238019700/
+/flash.c///1238019700/
+/innokom.c///1238019700/
+/lowlevel_init.S///1238019700/
+/u-boot.lds///1238019700/
diff -Naur u-boot-2009.03_orig/board/innokom/CVS/Entries.Old u-boot-2009.03/board/innokom/CVS/Entries.Old
--- u-boot-2009.03_orig/board/innokom/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/innokom/CVS/Entries.Old        2009-03-25 15:24:35.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/innokom.c/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:40 2009//
+D
diff -Naur u-boot-2009.03_orig/board/innokom/CVS/Repository u-boot-2009.03/board/innokom/CVS/Repository
--- u-boot-2009.03_orig/board/innokom/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/innokom/CVS/Repository 2009-03-25 15:24:35.884710200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/innokom
diff -Naur u-boot-2009.03_orig/board/innokom/CVS/Root u-boot-2009.03/board/innokom/CVS/Root
--- u-boot-2009.03_orig/board/innokom/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/innokom/CVS/Root       2009-03-25 15:24:35.884710200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/ip860/CVS/Entries u-boot-2009.03/board/ip860/CVS/Entries
--- u-boot-2009.03_orig/board/ip860/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ip860/CVS/Entries      2009-03-25 15:57:29.965713400 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ip860.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.debug/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/ip860/CVS/Entries.Extra u-boot-2009.03/board/ip860/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/ip860/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ip860/CVS/Entries.Extra        2009-03-25 15:57:29.965713400 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019700/
+/config.mk///1238019700/
+/flash.c///1238019700/
+/ip860.c///1238019700/
+/u-boot.lds///1238019700/
+/u-boot.lds.debug///1238019700/
diff -Naur u-boot-2009.03_orig/board/ip860/CVS/Entries.Extra.Old u-boot-2009.03/board/ip860/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/ip860/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ip860/CVS/Entries.Extra.Old    2009-03-25 15:24:36.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019700/
+/config.mk///1238019700/
+/flash.c///1238019700/
+/ip860.c///1238019700/
+/u-boot.lds///1238019700/
+/u-boot.lds.debug///1238019700/
diff -Naur u-boot-2009.03_orig/board/ip860/CVS/Entries.Old u-boot-2009.03/board/ip860/CVS/Entries.Old
--- u-boot-2009.03_orig/board/ip860/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ip860/CVS/Entries.Old  2009-03-25 15:24:36.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/ip860.c/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/u-boot.lds.debug/1.1.1.1/Wed Mar 25 22:21:40 2009//
+D
diff -Naur u-boot-2009.03_orig/board/ip860/CVS/Repository u-boot-2009.03/board/ip860/CVS/Repository
--- u-boot-2009.03_orig/board/ip860/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ip860/CVS/Repository   2009-03-25 15:24:36.009708600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/ip860
diff -Naur u-boot-2009.03_orig/board/ip860/CVS/Root u-boot-2009.03/board/ip860/CVS/Root
--- u-boot-2009.03_orig/board/ip860/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ip860/CVS/Root 2009-03-25 15:24:36.009708600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/iphase4539/CVS/Entries u-boot-2009.03/board/iphase4539/CVS/Entries
--- u-boot-2009.03_orig/board/iphase4539/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/iphase4539/CVS/Entries 2009-03-25 15:57:30.059462800 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/iphase4539.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/iphase4539/CVS/Entries.Extra u-boot-2009.03/board/iphase4539/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/iphase4539/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/iphase4539/CVS/Entries.Extra   2009-03-25 15:57:30.059462800 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019700/
+/config.mk///1238019700/
+/flash.c///1238019700/
+/iphase4539.c///1238019700/
diff -Naur u-boot-2009.03_orig/board/iphase4539/CVS/Entries.Extra.Old u-boot-2009.03/board/iphase4539/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/iphase4539/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/iphase4539/CVS/Entries.Extra.Old       2009-03-25 15:24:36.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019700/
+/config.mk///1238019700/
+/flash.c///1238019700/
+/iphase4539.c///1238019700/
diff -Naur u-boot-2009.03_orig/board/iphase4539/CVS/Entries.Old u-boot-2009.03/board/iphase4539/CVS/Entries.Old
--- u-boot-2009.03_orig/board/iphase4539/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/iphase4539/CVS/Entries.Old     2009-03-25 15:24:36.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/iphase4539.c/1.1.1.1/Wed Mar 25 22:21:40 2009//
+D
diff -Naur u-boot-2009.03_orig/board/iphase4539/CVS/Repository u-boot-2009.03/board/iphase4539/CVS/Repository
--- u-boot-2009.03_orig/board/iphase4539/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/iphase4539/CVS/Repository      2009-03-25 15:24:36.150331800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/iphase4539
diff -Naur u-boot-2009.03_orig/board/iphase4539/CVS/Root u-boot-2009.03/board/iphase4539/CVS/Root
--- u-boot-2009.03_orig/board/iphase4539/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/iphase4539/CVS/Root    2009-03-25 15:24:36.150331800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/ispan/CVS/Entries u-boot-2009.03/board/ispan/CVS/Entries
--- u-boot-2009.03_orig/board/ispan/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ispan/CVS/Entries      2009-03-25 15:57:30.184462000 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ispan.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/ispan/CVS/Entries.Extra u-boot-2009.03/board/ispan/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/ispan/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ispan/CVS/Entries.Extra        2009-03-25 15:57:30.184462000 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019700/
+/config.mk///1238019700/
+/ispan.c///1238019700/
diff -Naur u-boot-2009.03_orig/board/ispan/CVS/Entries.Extra.Old u-boot-2009.03/board/ispan/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/ispan/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ispan/CVS/Entries.Extra.Old    2009-03-25 15:24:36.000000000 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019700/
+/config.mk///1238019700/
+/ispan.c///1238019700/
diff -Naur u-boot-2009.03_orig/board/ispan/CVS/Entries.Old u-boot-2009.03/board/ispan/CVS/Entries.Old
--- u-boot-2009.03_orig/board/ispan/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ispan/CVS/Entries.Old  2009-03-25 15:24:36.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/ispan.c/1.1.1.1/Wed Mar 25 22:21:40 2009//
+D
diff -Naur u-boot-2009.03_orig/board/ispan/CVS/Repository u-boot-2009.03/board/ispan/CVS/Repository
--- u-boot-2009.03_orig/board/ispan/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ispan/CVS/Repository   2009-03-25 15:24:36.259705400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/ispan
diff -Naur u-boot-2009.03_orig/board/ispan/CVS/Root u-boot-2009.03/board/ispan/CVS/Root
--- u-boot-2009.03_orig/board/ispan/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ispan/CVS/Root 2009-03-25 15:24:36.259705400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/ivm/CVS/Entries u-boot-2009.03/board/ivm/CVS/Entries
--- u-boot-2009.03_orig/board/ivm/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ivm/CVS/Entries        2009-03-25 15:57:30.278211400 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ivm.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.debug/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/ivm/CVS/Entries.Extra u-boot-2009.03/board/ivm/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/ivm/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ivm/CVS/Entries.Extra  2009-03-25 15:57:30.278211400 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019700/
+/config.mk///1238019700/
+/flash.c///1238019700/
+/ivm.c///1238019700/
+/u-boot.lds///1238019700/
+/u-boot.lds.debug///1238019700/
diff -Naur u-boot-2009.03_orig/board/ivm/CVS/Entries.Extra.Old u-boot-2009.03/board/ivm/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/ivm/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ivm/CVS/Entries.Extra.Old      2009-03-25 15:24:36.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019700/
+/config.mk///1238019700/
+/flash.c///1238019700/
+/ivm.c///1238019700/
+/u-boot.lds///1238019700/
+/u-boot.lds.debug///1238019700/
diff -Naur u-boot-2009.03_orig/board/ivm/CVS/Entries.Old u-boot-2009.03/board/ivm/CVS/Entries.Old
--- u-boot-2009.03_orig/board/ivm/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ivm/CVS/Entries.Old    2009-03-25 15:24:36.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/ivm.c/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/u-boot.lds.debug/1.1.1.1/Wed Mar 25 22:21:40 2009//
+D
diff -Naur u-boot-2009.03_orig/board/ivm/CVS/Repository u-boot-2009.03/board/ivm/CVS/Repository
--- u-boot-2009.03_orig/board/ivm/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ivm/CVS/Repository     2009-03-25 15:24:36.384703800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/ivm
diff -Naur u-boot-2009.03_orig/board/ivm/CVS/Root u-boot-2009.03/board/ivm/CVS/Root
--- u-boot-2009.03_orig/board/ivm/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ivm/CVS/Root   2009-03-25 15:24:36.384703800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/ixdp425/CVS/Entries u-boot-2009.03/board/ixdp425/CVS/Entries
--- u-boot-2009.03_orig/board/ixdp425/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ixdp425/CVS/Entries    2009-03-25 15:57:30.356335900 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ixdp425.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/ixdp425/CVS/Entries.Extra u-boot-2009.03/board/ixdp425/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/ixdp425/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ixdp425/CVS/Entries.Extra      2009-03-25 15:57:30.356335900 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019700/
+/config.mk///1238019700/
+/flash.c///1238019700/
+/ixdp425.c///1238019700/
+/u-boot.lds///1238019700/
diff -Naur u-boot-2009.03_orig/board/ixdp425/CVS/Entries.Extra.Old u-boot-2009.03/board/ixdp425/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/ixdp425/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ixdp425/CVS/Entries.Extra.Old  2009-03-25 15:24:36.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019700/
+/config.mk///1238019700/
+/flash.c///1238019700/
+/ixdp425.c///1238019700/
+/u-boot.lds///1238019700/
diff -Naur u-boot-2009.03_orig/board/ixdp425/CVS/Entries.Old u-boot-2009.03/board/ixdp425/CVS/Entries.Old
--- u-boot-2009.03_orig/board/ixdp425/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ixdp425/CVS/Entries.Old        2009-03-25 15:24:36.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/ixdp425.c/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:40 2009//
+D
diff -Naur u-boot-2009.03_orig/board/ixdp425/CVS/Repository u-boot-2009.03/board/ixdp425/CVS/Repository
--- u-boot-2009.03_orig/board/ixdp425/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ixdp425/CVS/Repository 2009-03-25 15:24:36.587826200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/ixdp425
diff -Naur u-boot-2009.03_orig/board/ixdp425/CVS/Root u-boot-2009.03/board/ixdp425/CVS/Root
--- u-boot-2009.03_orig/board/ixdp425/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ixdp425/CVS/Root       2009-03-25 15:24:36.587826200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/jse/CVS/Entries u-boot-2009.03/board/jse/CVS/Entries
--- u-boot-2009.03_orig/board/jse/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/jse/CVS/Entries        2009-03-31 14:46:36.415435200 -0700
@@ -0,0 +1,11 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.txt/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/jse.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/jse_priv.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sdram.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/host_bridge.c/1.1.1.1/Tue Mar 31 21:46:36 2009//T1.1.1.1
+D
diff -Naur u-boot-2009.03_orig/board/jse/CVS/Entries.Extra u-boot-2009.03/board/jse/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/jse/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/jse/CVS/Entries.Extra  2009-03-31 14:46:36.415435200 -0700
@@ -0,0 +1,10 @@
+/Makefile///1238019700/
+/README.txt///1238019700/
+/config.mk///1238019700/
+/flash.c///1238019700/
+/init.S///1238019700/
+/jse.c///1238019700/
+/jse_priv.h///1238019700/
+/sdram.c///1238019700/
+/u-boot.lds///1238019700/
+/host_bridge.c///1238019700/
diff -Naur u-boot-2009.03_orig/board/jse/CVS/Entries.Extra.Old u-boot-2009.03/board/jse/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/jse/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/jse/CVS/Entries.Extra.Old      2009-03-25 17:51:37.000000000 -0700
@@ -0,0 +1,10 @@
+/Makefile///1238019700/
+/README.txt///1238019700/
+/config.mk///1238019700/
+/flash.c///1238019700/
+/init.S///1238019700/
+/jse.c///1238019700/
+/jse_priv.h///1238019700/
+/sdram.c///1238019700/
+/u-boot.lds///1238019700/
+/host_bridge.c///1238028697/
diff -Naur u-boot-2009.03_orig/board/jse/CVS/Entries.Old u-boot-2009.03/board/jse/CVS/Entries.Old
--- u-boot-2009.03_orig/board/jse/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/jse/CVS/Entries.Old    2009-03-25 17:51:37.000000000 -0700
@@ -0,0 +1,11 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.txt/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/jse.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/jse_priv.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sdram.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/host_bridge.c/1.2/Thu Mar 26 00:51:37 2009//
+D
diff -Naur u-boot-2009.03_orig/board/jse/CVS/Repository u-boot-2009.03/board/jse/CVS/Repository
--- u-boot-2009.03_orig/board/jse/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/jse/CVS/Repository     2009-03-25 15:24:36.697199800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/jse
diff -Naur u-boot-2009.03_orig/board/jse/CVS/Root u-boot-2009.03/board/jse/CVS/Root
--- u-boot-2009.03_orig/board/jse/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/jse/CVS/Root   2009-03-25 15:24:36.681575000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/jse/host_bridge.c u-boot-2009.03/board/jse/host_bridge.c
--- u-boot-2009.03_orig/board/jse/host_bridge.c 2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/board/jse/host_bridge.c      2009-03-31 14:46:36.259187200 -0700
@@ -1,90 +1,90 @@
-/*
- * Copyright (c) 2004 Picture Elements, Inc.
- *    Stephen Williams (steve@icarus.com)
- *
- *    This source code is free software; you can redistribute it
- *    and/or modify it in source code form 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
- */
-#ident "$Id:$"
-
-# include  <common.h>
-# include  <pci.h>
-# include  "jse_priv.h"
-
-/*
- * The JSE board has an Intel 21555 non-transparent bridge for
- * communication with the host. We need to render it harmless on the
- * JSE side, but leave it alone on the host (primary) side. Normally,
- * this will all be done before the host BIOS can gain access to the
- * board, due to the Primary Access Lockout bit.
- *
- * The host_bridge_init function is called as a late initialization
- * function, after most of the board is set up, including a PCI scan.
- */
-
-void host_bridge_init (void)
-{
-       /* The bridge chip is at a fixed location. */
-       pci_dev_t dev = PCI_BDF (0, 10, 0);
-
-       /* Set PCI Class code --
-          The primary side sees this class code at 0x08 in the
-          primary config space. This must be something other then a
-          bridge, or MS Windows starts doing weird stuff to me. */
-       pci_write_config_dword (dev, 0x48, 0x04800000);
-
-       /* Set subsystem ID --
-          The primary side sees this value at 0x2c. We set it here so
-          that the host can tell what sort of device this is:
-          We are a Picture Elements [0x12c5] JSE [0x008a]. */
-       pci_write_config_dword (dev, 0x6c, 0x008a12c5);
-
-       /* Downstream (Primary-to-Secondary) BARs are set up mostly
-          off. We need only the Memory-0 Bar so that the host can get
-          at the CSR region to set up tables and the lot. */
-
-       /* Downstream Memory 0 setup (4K for CSR) */
-       pci_write_config_dword (dev, 0xac, 0xfffff000);
-       /* Downstream Memory 1 setup (off) */
-       pci_write_config_dword (dev, 0xb0, 0x00000000);
-       /* Downstream Memory 2 setup (off) */
-       pci_write_config_dword (dev, 0xb4, 0x00000000);
-       /* Downstream Memory 3 setup (off) */
-       pci_write_config_dword (dev, 0xb8, 0x00000000);
-
-       /* Upstream (Secondary-to-Primary) BARs are used to get at
-          host memory from the JSE card. Create two regions: a small
-          one to manage individual word reads/writes, and a larger
-          one for doing bulk frame moves. */
-
-       /* Upstream Memory 0 Setup -- (BAR2) 4K non-prefetchable */
-       pci_write_config_dword (dev, 0xc4, 0xfffff000);
-       /* Upstream Memory 1 setup -- (BAR3) 4K non-prefetchable */
-       pci_write_config_dword (dev, 0xc8, 0xfffff000);
-
-       /* Upstream Memory 2 (BAR4) uses page translation, and is set
-          up in CCR1. Configure for 4K pages. */
-
-       /* Set CCR1,0 reigsters. This clears the Primary PCI Lockout
-          bit as well, so we are done configuring after this
-          point. Therefore, this must be the last step.
-
-          CC1[15:12]= 0  (disable I2O message unit)
-          CC1[11:8] = 0x5 (4K page size)
-          CC0[11]   = 1  (Secondary Clock Disable: disable clock)
-          CC0[10]   = 0  (Primary Access Lockout: allow primary access)
-        */
-       pci_write_config_dword (dev, 0xcc, 0x05000800);
-}
+/*
+ * Copyright (c) 2004 Picture Elements, Inc.
+ *    Stephen Williams (steve@icarus.com)
+ *
+ *    This source code is free software; you can redistribute it
+ *    and/or modify it in source code form 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
+ */
+#ident "$Id: host_bridge.c,v 1.1.1.1 2009/03/25 22:21:40 kenagy Exp $"
+
+# include  <common.h>
+# include  <pci.h>
+# include  "jse_priv.h"
+
+/*
+ * The JSE board has an Intel 21555 non-transparent bridge for
+ * communication with the host. We need to render it harmless on the
+ * JSE side, but leave it alone on the host (primary) side. Normally,
+ * this will all be done before the host BIOS can gain access to the
+ * board, due to the Primary Access Lockout bit.
+ *
+ * The host_bridge_init function is called as a late initialization
+ * function, after most of the board is set up, including a PCI scan.
+ */
+
+void host_bridge_init (void)
+{
+       /* The bridge chip is at a fixed location. */
+       pci_dev_t dev = PCI_BDF (0, 10, 0);
+
+       /* Set PCI Class code --
+          The primary side sees this class code at 0x08 in the
+          primary config space. This must be something other then a
+          bridge, or MS Windows starts doing weird stuff to me. */
+       pci_write_config_dword (dev, 0x48, 0x04800000);
+
+       /* Set subsystem ID --
+          The primary side sees this value at 0x2c. We set it here so
+          that the host can tell what sort of device this is:
+          We are a Picture Elements [0x12c5] JSE [0x008a]. */
+       pci_write_config_dword (dev, 0x6c, 0x008a12c5);
+
+       /* Downstream (Primary-to-Secondary) BARs are set up mostly
+          off. We need only the Memory-0 Bar so that the host can get
+          at the CSR region to set up tables and the lot. */
+
+       /* Downstream Memory 0 setup (4K for CSR) */
+       pci_write_config_dword (dev, 0xac, 0xfffff000);
+       /* Downstream Memory 1 setup (off) */
+       pci_write_config_dword (dev, 0xb0, 0x00000000);
+       /* Downstream Memory 2 setup (off) */
+       pci_write_config_dword (dev, 0xb4, 0x00000000);
+       /* Downstream Memory 3 setup (off) */
+       pci_write_config_dword (dev, 0xb8, 0x00000000);
+
+       /* Upstream (Secondary-to-Primary) BARs are used to get at
+          host memory from the JSE card. Create two regions: a small
+          one to manage individual word reads/writes, and a larger
+          one for doing bulk frame moves. */
+
+       /* Upstream Memory 0 Setup -- (BAR2) 4K non-prefetchable */
+       pci_write_config_dword (dev, 0xc4, 0xfffff000);
+       /* Upstream Memory 1 setup -- (BAR3) 4K non-prefetchable */
+       pci_write_config_dword (dev, 0xc8, 0xfffff000);
+
+       /* Upstream Memory 2 (BAR4) uses page translation, and is set
+          up in CCR1. Configure for 4K pages. */
+
+       /* Set CCR1,0 reigsters. This clears the Primary PCI Lockout
+          bit as well, so we are done configuring after this
+          point. Therefore, this must be the last step.
+
+          CC1[15:12]= 0  (disable I2O message unit)
+          CC1[11:8] = 0x5 (4K page size)
+          CC0[11]   = 1  (Secondary Clock Disable: disable clock)
+          CC0[10]   = 0  (Primary Access Lockout: allow primary access)
+        */
+       pci_write_config_dword (dev, 0xcc, 0x05000800);
+}
diff -Naur u-boot-2009.03_orig/board/jupiter/CVS/Entries u-boot-2009.03/board/jupiter/CVS/Entries
--- u-boot-2009.03_orig/board/jupiter/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/jupiter/CVS/Entries    2009-03-25 15:57:30.528209800 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/jupiter.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/jupiter/CVS/Entries.Extra u-boot-2009.03/board/jupiter/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/jupiter/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/jupiter/CVS/Entries.Extra      2009-03-25 15:57:30.528209800 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019700/
+/config.mk///1238019700/
+/jupiter.c///1238019700/
diff -Naur u-boot-2009.03_orig/board/jupiter/CVS/Entries.Extra.Old u-boot-2009.03/board/jupiter/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/jupiter/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/jupiter/CVS/Entries.Extra.Old  2009-03-25 15:24:36.000000000 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019700/
+/config.mk///1238019700/
+/jupiter.c///1238019700/
diff -Naur u-boot-2009.03_orig/board/jupiter/CVS/Entries.Old u-boot-2009.03/board/jupiter/CVS/Entries.Old
--- u-boot-2009.03_orig/board/jupiter/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/jupiter/CVS/Entries.Old        2009-03-25 15:24:36.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/jupiter.c/1.1.1.1/Wed Mar 25 22:21:40 2009//
+D
diff -Naur u-boot-2009.03_orig/board/jupiter/CVS/Repository u-boot-2009.03/board/jupiter/CVS/Repository
--- u-boot-2009.03_orig/board/jupiter/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/jupiter/CVS/Repository 2009-03-25 15:24:36.869072600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/jupiter
diff -Naur u-boot-2009.03_orig/board/jupiter/CVS/Root u-boot-2009.03/board/jupiter/CVS/Root
--- u-boot-2009.03_orig/board/jupiter/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/jupiter/CVS/Root       2009-03-25 15:24:36.869072600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/kb9202/CVS/Entries u-boot-2009.03/board/kb9202/CVS/Entries
--- u-boot-2009.03_orig/board/kb9202/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/kb9202/CVS/Entries     2009-03-25 15:57:30.606334300 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/kb9202.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/kb9202/CVS/Entries.Extra u-boot-2009.03/board/kb9202/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/kb9202/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/kb9202/CVS/Entries.Extra       2009-03-25 15:57:30.606334300 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019700/
+/config.mk///1238019700/
+/kb9202.c///1238019700/
+/u-boot.lds///1238019700/
diff -Naur u-boot-2009.03_orig/board/kb9202/CVS/Entries.Extra.Old u-boot-2009.03/board/kb9202/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/kb9202/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/kb9202/CVS/Entries.Extra.Old   2009-03-25 15:24:37.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019700/
+/config.mk///1238019700/
+/kb9202.c///1238019700/
+/u-boot.lds///1238019700/
diff -Naur u-boot-2009.03_orig/board/kb9202/CVS/Entries.Old u-boot-2009.03/board/kb9202/CVS/Entries.Old
--- u-boot-2009.03_orig/board/kb9202/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/kb9202/CVS/Entries.Old 2009-03-25 15:24:37.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/kb9202.c/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:40 2009//
+D
diff -Naur u-boot-2009.03_orig/board/kb9202/CVS/Repository u-boot-2009.03/board/kb9202/CVS/Repository
--- u-boot-2009.03_orig/board/kb9202/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/kb9202/CVS/Repository  2009-03-25 15:24:36.962821400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/kb9202
diff -Naur u-boot-2009.03_orig/board/kb9202/CVS/Root u-boot-2009.03/board/kb9202/CVS/Root
--- u-boot-2009.03_orig/board/kb9202/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/kb9202/CVS/Root        2009-03-25 15:24:36.962821400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/keymile/CVS/Entries u-boot-2009.03/board/keymile/CVS/Entries
--- u-boot-2009.03_orig/board/keymile/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/keymile/CVS/Entries    2009-03-25 15:24:37.712811800 -0700
@@ -0,0 +1,4 @@
+D/common////
+D/km8xx////
+D/kmeter1////
+D/mgcoge////
diff -Naur u-boot-2009.03_orig/board/keymile/CVS/Entries.Extra u-boot-2009.03/board/keymile/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/keymile/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/keymile/CVS/Entries.Extra      2009-03-25 15:24:37.712811800 -0700
@@ -0,0 +1,4 @@
+D/common////
+D/km8xx////
+D/kmeter1////
+D/mgcoge////
diff -Naur u-boot-2009.03_orig/board/keymile/CVS/Repository u-boot-2009.03/board/keymile/CVS/Repository
--- u-boot-2009.03_orig/board/keymile/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/keymile/CVS/Repository 2009-03-25 15:24:37.072195000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/keymile
diff -Naur u-boot-2009.03_orig/board/keymile/CVS/Root u-boot-2009.03/board/keymile/CVS/Root
--- u-boot-2009.03_orig/board/keymile/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/keymile/CVS/Root       2009-03-25 15:24:37.072195000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/keymile/common/CVS/Entries u-boot-2009.03/board/keymile/common/CVS/Entries
--- u-boot-2009.03_orig/board/keymile/common/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/keymile/common/CVS/Entries     2009-03-25 15:57:30.700083700 -0700
@@ -0,0 +1,5 @@
+/common.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/common.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/keymile_hdlc_enet.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/keymile_hdlc_enet.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/keymile/common/CVS/Entries.Extra u-boot-2009.03/board/keymile/common/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/keymile/common/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/keymile/common/CVS/Entries.Extra       2009-03-25 15:57:30.700083700 -0700
@@ -0,0 +1,4 @@
+/common.c///1238019700/
+/common.h///1238019700/
+/keymile_hdlc_enet.c///1238019700/
+/keymile_hdlc_enet.h///1238019700/
diff -Naur u-boot-2009.03_orig/board/keymile/common/CVS/Entries.Extra.Old u-boot-2009.03/board/keymile/common/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/keymile/common/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/keymile/common/CVS/Entries.Extra.Old   2009-03-25 15:24:37.000000000 -0700
@@ -0,0 +1,4 @@
+/common.c///1238019700/
+/common.h///1238019700/
+/keymile_hdlc_enet.c///1238019700/
+/keymile_hdlc_enet.h///1238019700/
diff -Naur u-boot-2009.03_orig/board/keymile/common/CVS/Entries.Old u-boot-2009.03/board/keymile/common/CVS/Entries.Old
--- u-boot-2009.03_orig/board/keymile/common/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/keymile/common/CVS/Entries.Old 2009-03-25 15:24:37.000000000 -0700
@@ -0,0 +1,5 @@
+/common.c/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/common.h/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/keymile_hdlc_enet.c/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/keymile_hdlc_enet.h/1.1.1.1/Wed Mar 25 22:21:40 2009//
+D
diff -Naur u-boot-2009.03_orig/board/keymile/common/CVS/Repository u-boot-2009.03/board/keymile/common/CVS/Repository
--- u-boot-2009.03_orig/board/keymile/common/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/keymile/common/CVS/Repository  2009-03-25 15:24:37.087819800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/keymile/common
diff -Naur u-boot-2009.03_orig/board/keymile/common/CVS/Root u-boot-2009.03/board/keymile/common/CVS/Root
--- u-boot-2009.03_orig/board/keymile/common/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/keymile/common/CVS/Root        2009-03-25 15:24:37.087819800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/keymile/km8xx/CVS/Entries u-boot-2009.03/board/keymile/km8xx/CVS/Entries
--- u-boot-2009.03_orig/board/keymile/km8xx/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/keymile/km8xx/CVS/Entries      2009-03-25 15:57:30.793833100 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/km8xx.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/km8xx_hdlc_enet.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/keymile/km8xx/CVS/Entries.Extra u-boot-2009.03/board/keymile/km8xx/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/keymile/km8xx/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/keymile/km8xx/CVS/Entries.Extra        2009-03-25 15:57:30.793833100 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019700/
+/config.mk///1238019700/
+/km8xx.c///1238019700/
+/km8xx_hdlc_enet.c///1238019700/
+/u-boot.lds///1238019700/
diff -Naur u-boot-2009.03_orig/board/keymile/km8xx/CVS/Entries.Extra.Old u-boot-2009.03/board/keymile/km8xx/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/keymile/km8xx/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/keymile/km8xx/CVS/Entries.Extra.Old    2009-03-25 15:24:37.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019700/
+/config.mk///1238019700/
+/km8xx.c///1238019700/
+/km8xx_hdlc_enet.c///1238019700/
+/u-boot.lds///1238019700/
diff -Naur u-boot-2009.03_orig/board/keymile/km8xx/CVS/Entries.Old u-boot-2009.03/board/keymile/km8xx/CVS/Entries.Old
--- u-boot-2009.03_orig/board/keymile/km8xx/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/keymile/km8xx/CVS/Entries.Old  2009-03-25 15:24:37.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/km8xx.c/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/km8xx_hdlc_enet.c/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:40 2009//
+D
diff -Naur u-boot-2009.03_orig/board/keymile/km8xx/CVS/Repository u-boot-2009.03/board/keymile/km8xx/CVS/Repository
--- u-boot-2009.03_orig/board/keymile/km8xx/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/keymile/km8xx/CVS/Repository   2009-03-25 15:24:37.181568600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/keymile/km8xx
diff -Naur u-boot-2009.03_orig/board/keymile/km8xx/CVS/Root u-boot-2009.03/board/keymile/km8xx/CVS/Root
--- u-boot-2009.03_orig/board/keymile/km8xx/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/keymile/km8xx/CVS/Root 2009-03-25 15:24:37.181568600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/keymile/kmeter1/CVS/Entries u-boot-2009.03/board/keymile/kmeter1/CVS/Entries
--- u-boot-2009.03_orig/board/keymile/kmeter1/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/keymile/kmeter1/CVS/Entries    2009-03-25 15:57:30.871957600 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/kmeter1.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/keymile/kmeter1/CVS/Entries.Extra u-boot-2009.03/board/keymile/kmeter1/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/keymile/kmeter1/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/keymile/kmeter1/CVS/Entries.Extra      2009-03-25 15:57:30.887582500 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019701/
+/config.mk///1238019700/
+/kmeter1.c///1238019701/
diff -Naur u-boot-2009.03_orig/board/keymile/kmeter1/CVS/Entries.Extra.Old u-boot-2009.03/board/keymile/kmeter1/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/keymile/kmeter1/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/keymile/kmeter1/CVS/Entries.Extra.Old  2009-03-25 15:24:37.000000000 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019701/
+/config.mk///1238019700/
+/kmeter1.c///1238019701/
diff -Naur u-boot-2009.03_orig/board/keymile/kmeter1/CVS/Entries.Old u-boot-2009.03/board/keymile/kmeter1/CVS/Entries.Old
--- u-boot-2009.03_orig/board/keymile/kmeter1/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/keymile/kmeter1/CVS/Entries.Old        2009-03-25 15:24:37.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:40 2009//
+/kmeter1.c/1.1.1.1/Wed Mar 25 22:21:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/keymile/kmeter1/CVS/Repository u-boot-2009.03/board/keymile/kmeter1/CVS/Repository
--- u-boot-2009.03_orig/board/keymile/kmeter1/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/keymile/kmeter1/CVS/Repository 2009-03-25 15:24:37.306567000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/keymile/kmeter1
diff -Naur u-boot-2009.03_orig/board/keymile/kmeter1/CVS/Root u-boot-2009.03/board/keymile/kmeter1/CVS/Root
--- u-boot-2009.03_orig/board/keymile/kmeter1/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/keymile/kmeter1/CVS/Root       2009-03-25 15:24:37.306567000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/keymile/mgcoge/CVS/Entries u-boot-2009.03/board/keymile/mgcoge/CVS/Entries
--- u-boot-2009.03_orig/board/keymile/mgcoge/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/keymile/mgcoge/CVS/Entries     2009-03-25 15:57:30.965707000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mgcoge.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mgcoge_hdlc_enet.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/keymile/mgcoge/CVS/Entries.Extra u-boot-2009.03/board/keymile/mgcoge/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/keymile/mgcoge/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/keymile/mgcoge/CVS/Entries.Extra       2009-03-25 15:57:30.965707000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019701/
+/config.mk///1238019701/
+/mgcoge.c///1238019701/
+/mgcoge_hdlc_enet.c///1238019701/
diff -Naur u-boot-2009.03_orig/board/keymile/mgcoge/CVS/Entries.Extra.Old u-boot-2009.03/board/keymile/mgcoge/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/keymile/mgcoge/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/keymile/mgcoge/CVS/Entries.Extra.Old   2009-03-25 15:24:37.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019701/
+/config.mk///1238019701/
+/mgcoge.c///1238019701/
+/mgcoge_hdlc_enet.c///1238019701/
diff -Naur u-boot-2009.03_orig/board/keymile/mgcoge/CVS/Entries.Old u-boot-2009.03/board/keymile/mgcoge/CVS/Entries.Old
--- u-boot-2009.03_orig/board/keymile/mgcoge/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/keymile/mgcoge/CVS/Entries.Old 2009-03-25 15:24:37.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/mgcoge.c/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/mgcoge_hdlc_enet.c/1.1.1.1/Wed Mar 25 22:21:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/keymile/mgcoge/CVS/Repository u-boot-2009.03/board/keymile/mgcoge/CVS/Repository
--- u-boot-2009.03_orig/board/keymile/mgcoge/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/keymile/mgcoge/CVS/Repository  2009-03-25 15:24:37.587813400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/keymile/mgcoge
diff -Naur u-boot-2009.03_orig/board/keymile/mgcoge/CVS/Root u-boot-2009.03/board/keymile/mgcoge/CVS/Root
--- u-boot-2009.03_orig/board/keymile/mgcoge/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/keymile/mgcoge/CVS/Root        2009-03-25 15:24:37.587813400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/korat/CVS/Entries u-boot-2009.03/board/korat/CVS/Entries
--- u-boot-2009.03_orig/board/korat/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/korat/CVS/Entries      2009-03-25 15:57:31.075081300 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/korat.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot-F7FC.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/korat/CVS/Entries.Extra u-boot-2009.03/board/korat/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/korat/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/korat/CVS/Entries.Extra        2009-03-25 15:57:31.075081300 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019701/
+/config.mk///1238019701/
+/init.S///1238019701/
+/korat.c///1238019701/
+/u-boot-F7FC.lds///1238019701/
+/u-boot.lds///1238019701/
diff -Naur u-boot-2009.03_orig/board/korat/CVS/Entries.Extra.Old u-boot-2009.03/board/korat/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/korat/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/korat/CVS/Entries.Extra.Old    2009-03-25 15:24:37.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019701/
+/config.mk///1238019701/
+/init.S///1238019701/
+/korat.c///1238019701/
+/u-boot-F7FC.lds///1238019701/
+/u-boot.lds///1238019701/
diff -Naur u-boot-2009.03_orig/board/korat/CVS/Entries.Old u-boot-2009.03/board/korat/CVS/Entries.Old
--- u-boot-2009.03_orig/board/korat/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/korat/CVS/Entries.Old  2009-03-25 15:24:37.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/init.S/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/korat.c/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/u-boot-F7FC.lds/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/korat/CVS/Repository u-boot-2009.03/board/korat/CVS/Repository
--- u-boot-2009.03_orig/board/korat/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/korat/CVS/Repository   2009-03-25 15:24:37.759686200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/korat
diff -Naur u-boot-2009.03_orig/board/korat/CVS/Root u-boot-2009.03/board/korat/CVS/Root
--- u-boot-2009.03_orig/board/korat/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/korat/CVS/Root 2009-03-25 15:24:37.759686200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/kup/CVS/Entries u-boot-2009.03/board/kup/CVS/Entries
--- u-boot-2009.03_orig/board/kup/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/kup/CVS/Entries        2009-03-25 15:57:31.465703800 -0700
@@ -0,0 +1,4 @@
+D/common////
+D/kup4k////
+D/kup4x////
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
diff -Naur u-boot-2009.03_orig/board/kup/CVS/Entries.Extra u-boot-2009.03/board/kup/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/kup/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/kup/CVS/Entries.Extra  2009-03-25 15:57:31.465703800 -0700
@@ -0,0 +1,4 @@
+D/common////
+D/kup4k////
+D/kup4x////
+/Makefile///1238019701/
diff -Naur u-boot-2009.03_orig/board/kup/CVS/Entries.Extra.Old u-boot-2009.03/board/kup/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/kup/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/kup/CVS/Entries.Extra.Old      2009-03-25 15:24:38.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019701/
+D/common////
+D/kup4k////
+D/kup4x////
diff -Naur u-boot-2009.03_orig/board/kup/CVS/Entries.Old u-boot-2009.03/board/kup/CVS/Entries.Old
--- u-boot-2009.03_orig/board/kup/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/kup/CVS/Entries.Old    2009-03-25 15:24:38.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:41 2009//
+D/common////
+D/kup4k////
+D/kup4x////
diff -Naur u-boot-2009.03_orig/board/kup/CVS/Repository u-boot-2009.03/board/kup/CVS/Repository
--- u-boot-2009.03_orig/board/kup/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/kup/CVS/Repository     2009-03-25 15:24:37.900309400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/kup
diff -Naur u-boot-2009.03_orig/board/kup/CVS/Root u-boot-2009.03/board/kup/CVS/Root
--- u-boot-2009.03_orig/board/kup/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/kup/CVS/Root   2009-03-25 15:24:37.900309400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/kup/common/CVS/Entries u-boot-2009.03/board/kup/common/CVS/Entries
--- u-boot-2009.03_orig/board/kup/common/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/kup/common/CVS/Entries 2009-03-25 15:57:31.246955200 -0700
@@ -0,0 +1,6 @@
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/kup.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/kup.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/load_sernum_ethaddr.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pcmcia.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/kup/common/CVS/Entries.Extra u-boot-2009.03/board/kup/common/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/kup/common/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/kup/common/CVS/Entries.Extra   2009-03-25 15:57:31.246955200 -0700
@@ -0,0 +1,5 @@
+/flash.c///1238019701/
+/kup.c///1238019701/
+/kup.h///1238019701/
+/load_sernum_ethaddr.c///1238019701/
+/pcmcia.c///1238019701/
diff -Naur u-boot-2009.03_orig/board/kup/common/CVS/Entries.Extra.Old u-boot-2009.03/board/kup/common/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/kup/common/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/kup/common/CVS/Entries.Extra.Old       2009-03-25 15:24:37.000000000 -0700
@@ -0,0 +1,5 @@
+/flash.c///1238019701/
+/kup.c///1238019701/
+/kup.h///1238019701/
+/load_sernum_ethaddr.c///1238019701/
+/pcmcia.c///1238019701/
diff -Naur u-boot-2009.03_orig/board/kup/common/CVS/Entries.Old u-boot-2009.03/board/kup/common/CVS/Entries.Old
--- u-boot-2009.03_orig/board/kup/common/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/kup/common/CVS/Entries.Old     2009-03-25 15:24:37.000000000 -0700
@@ -0,0 +1,6 @@
+/flash.c/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/kup.c/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/kup.h/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/load_sernum_ethaddr.c/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/pcmcia.c/1.1.1.1/Wed Mar 25 22:21:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/kup/common/CVS/Repository u-boot-2009.03/board/kup/common/CVS/Repository
--- u-boot-2009.03_orig/board/kup/common/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/kup/common/CVS/Repository      2009-03-25 15:24:37.931559000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/kup/common
diff -Naur u-boot-2009.03_orig/board/kup/common/CVS/Root u-boot-2009.03/board/kup/common/CVS/Root
--- u-boot-2009.03_orig/board/kup/common/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/kup/common/CVS/Root    2009-03-25 15:24:37.931559000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/kup/kup4k/CVS/Entries u-boot-2009.03/board/kup/kup4k/CVS/Entries
--- u-boot-2009.03_orig/board/kup/kup4k/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/kup/kup4k/CVS/Entries  2009-03-25 15:57:31.340704600 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/kup4k.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/s1d13706.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.debug/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/kup/kup4k/CVS/Entries.Extra u-boot-2009.03/board/kup/kup4k/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/kup/kup4k/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/kup/kup4k/CVS/Entries.Extra    2009-03-25 15:57:31.340704600 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019701/
+/config.mk///1238019701/
+/kup4k.c///1238019701/
+/s1d13706.h///1238019701/
+/u-boot.lds///1238019701/
+/u-boot.lds.debug///1238019701/
diff -Naur u-boot-2009.03_orig/board/kup/kup4k/CVS/Entries.Extra.Old u-boot-2009.03/board/kup/kup4k/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/kup/kup4k/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/kup/kup4k/CVS/Entries.Extra.Old        2009-03-25 15:24:38.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019701/
+/config.mk///1238019701/
+/kup4k.c///1238019701/
+/s1d13706.h///1238019701/
+/u-boot.lds///1238019701/
+/u-boot.lds.debug///1238019701/
diff -Naur u-boot-2009.03_orig/board/kup/kup4k/CVS/Entries.Old u-boot-2009.03/board/kup/kup4k/CVS/Entries.Old
--- u-boot-2009.03_orig/board/kup/kup4k/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/kup/kup4k/CVS/Entries.Old      2009-03-25 15:24:38.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/kup4k.c/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/s1d13706.h/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/u-boot.lds.debug/1.1.1.1/Wed Mar 25 22:21:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/kup/kup4k/CVS/Repository u-boot-2009.03/board/kup/kup4k/CVS/Repository
--- u-boot-2009.03_orig/board/kup/kup4k/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/kup/kup4k/CVS/Repository       2009-03-25 15:24:38.040932600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/kup/kup4k
diff -Naur u-boot-2009.03_orig/board/kup/kup4k/CVS/Root u-boot-2009.03/board/kup/kup4k/CVS/Root
--- u-boot-2009.03_orig/board/kup/kup4k/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/kup/kup4k/CVS/Root     2009-03-25 15:24:38.040932600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/kup/kup4x/CVS/Entries u-boot-2009.03/board/kup/kup4x/CVS/Entries
--- u-boot-2009.03_orig/board/kup/kup4x/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/kup/kup4x/CVS/Entries  2009-03-25 15:57:31.418829100 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/kup4x.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.debug/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/kup/kup4x/CVS/Entries.Extra u-boot-2009.03/board/kup/kup4x/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/kup/kup4x/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/kup/kup4x/CVS/Entries.Extra    2009-03-25 15:57:31.418829100 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019701/
+/config.mk///1238019701/
+/kup4x.c///1238019701/
+/u-boot.lds///1238019701/
+/u-boot.lds.debug///1238019701/
diff -Naur u-boot-2009.03_orig/board/kup/kup4x/CVS/Entries.Extra.Old u-boot-2009.03/board/kup/kup4x/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/kup/kup4x/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/kup/kup4x/CVS/Entries.Extra.Old        2009-03-25 15:24:38.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019701/
+/config.mk///1238019701/
+/kup4x.c///1238019701/
+/u-boot.lds///1238019701/
+/u-boot.lds.debug///1238019701/
diff -Naur u-boot-2009.03_orig/board/kup/kup4x/CVS/Entries.Old u-boot-2009.03/board/kup/kup4x/CVS/Entries.Old
--- u-boot-2009.03_orig/board/kup/kup4x/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/kup/kup4x/CVS/Entries.Old      2009-03-25 15:24:38.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/kup4x.c/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/u-boot.lds.debug/1.1.1.1/Wed Mar 25 22:21:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/kup/kup4x/CVS/Repository u-boot-2009.03/board/kup/kup4x/CVS/Repository
--- u-boot-2009.03_orig/board/kup/kup4x/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/kup/kup4x/CVS/Repository       2009-03-25 15:24:38.181555800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/kup/kup4x
diff -Naur u-boot-2009.03_orig/board/kup/kup4x/CVS/Root u-boot-2009.03/board/kup/kup4x/CVS/Root
--- u-boot-2009.03_orig/board/kup/kup4x/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/kup/kup4x/CVS/Root     2009-03-25 15:24:38.165931000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/lantec/CVS/Entries u-boot-2009.03/board/lantec/CVS/Entries
--- u-boot-2009.03_orig/board/lantec/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/lantec/CVS/Entries     2009-03-25 15:57:31.543828300 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lantec.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.debug/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/lantec/CVS/Entries.Extra u-boot-2009.03/board/lantec/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/lantec/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/lantec/CVS/Entries.Extra       2009-03-25 15:57:31.543828300 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019701/
+/config.mk///1238019701/
+/flash.c///1238019701/
+/lantec.c///1238019701/
+/u-boot.lds///1238019701/
+/u-boot.lds.debug///1238019701/
diff -Naur u-boot-2009.03_orig/board/lantec/CVS/Entries.Extra.Old u-boot-2009.03/board/lantec/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/lantec/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/lantec/CVS/Entries.Extra.Old   2009-03-25 15:24:38.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019701/
+/config.mk///1238019701/
+/flash.c///1238019701/
+/lantec.c///1238019701/
+/u-boot.lds///1238019701/
+/u-boot.lds.debug///1238019701/
diff -Naur u-boot-2009.03_orig/board/lantec/CVS/Entries.Old u-boot-2009.03/board/lantec/CVS/Entries.Old
--- u-boot-2009.03_orig/board/lantec/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/lantec/CVS/Entries.Old 2009-03-25 15:24:38.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/lantec.c/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/u-boot.lds.debug/1.1.1.1/Wed Mar 25 22:21:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/lantec/CVS/Repository u-boot-2009.03/board/lantec/CVS/Repository
--- u-boot-2009.03_orig/board/lantec/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/lantec/CVS/Repository  2009-03-25 15:24:38.322179000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/lantec
diff -Naur u-boot-2009.03_orig/board/lantec/CVS/Root u-boot-2009.03/board/lantec/CVS/Root
--- u-boot-2009.03_orig/board/lantec/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/lantec/CVS/Root        2009-03-25 15:24:38.322179000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/lart/CVS/Entries u-boot-2009.03/board/lart/CVS/Entries
--- u-boot-2009.03_orig/board/lart/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/lart/CVS/Entries       2009-03-25 15:57:31.637577700 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flashasm.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lart.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/lart/CVS/Entries.Extra u-boot-2009.03/board/lart/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/lart/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/lart/CVS/Entries.Extra 2009-03-25 15:57:31.637577700 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019701/
+/config.mk///1238019701/
+/flash.c///1238019701/
+/flashasm.S///1238019701/
+/lart.c///1238019701/
+/lowlevel_init.S///1238019701/
+/u-boot.lds///1238019701/
diff -Naur u-boot-2009.03_orig/board/lart/CVS/Entries.Extra.Old u-boot-2009.03/board/lart/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/lart/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/lart/CVS/Entries.Extra.Old     2009-03-25 15:24:38.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019701/
+/config.mk///1238019701/
+/flash.c///1238019701/
+/flashasm.S///1238019701/
+/lart.c///1238019701/
+/lowlevel_init.S///1238019701/
+/u-boot.lds///1238019701/
diff -Naur u-boot-2009.03_orig/board/lart/CVS/Entries.Old u-boot-2009.03/board/lart/CVS/Entries.Old
--- u-boot-2009.03_orig/board/lart/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/lart/CVS/Entries.Old   2009-03-25 15:24:38.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/flashasm.S/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/lart.c/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/lart/CVS/Repository u-boot-2009.03/board/lart/CVS/Repository
--- u-boot-2009.03_orig/board/lart/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/lart/CVS/Repository    2009-03-25 15:24:38.525301400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/lart
diff -Naur u-boot-2009.03_orig/board/lart/CVS/Root u-boot-2009.03/board/lart/CVS/Root
--- u-boot-2009.03_orig/board/lart/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/lart/CVS/Root  2009-03-25 15:24:38.525301400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/linkstation/CVS/Entries u-boot-2009.03/board/linkstation/CVS/Entries
--- u-boot-2009.03_orig/board/linkstation/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/linkstation/CVS/Entries        2009-03-25 15:57:31.746952000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/avr.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/hwctl.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ide.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/linkstation.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/linkstation/CVS/Entries.Extra u-boot-2009.03/board/linkstation/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/linkstation/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/linkstation/CVS/Entries.Extra  2009-03-25 15:57:31.746952000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019701/
+/avr.c///1238019701/
+/config.mk///1238019701/
+/hwctl.c///1238019701/
+/ide.c///1238019701/
+/linkstation.c///1238019701/
diff -Naur u-boot-2009.03_orig/board/linkstation/CVS/Entries.Extra.Old u-boot-2009.03/board/linkstation/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/linkstation/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/linkstation/CVS/Entries.Extra.Old      2009-03-25 15:24:38.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019701/
+/avr.c///1238019701/
+/config.mk///1238019701/
+/hwctl.c///1238019701/
+/ide.c///1238019701/
+/linkstation.c///1238019701/
diff -Naur u-boot-2009.03_orig/board/linkstation/CVS/Entries.Old u-boot-2009.03/board/linkstation/CVS/Entries.Old
--- u-boot-2009.03_orig/board/linkstation/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/linkstation/CVS/Entries.Old    2009-03-25 15:24:38.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/avr.c/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/hwctl.c/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/ide.c/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/linkstation.c/1.1.1.1/Wed Mar 25 22:21:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/linkstation/CVS/Repository u-boot-2009.03/board/linkstation/CVS/Repository
--- u-boot-2009.03_orig/board/linkstation/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/linkstation/CVS/Repository     2009-03-25 15:24:38.665924600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/linkstation
diff -Naur u-boot-2009.03_orig/board/linkstation/CVS/Root u-boot-2009.03/board/linkstation/CVS/Root
--- u-boot-2009.03_orig/board/linkstation/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/linkstation/CVS/Root   2009-03-25 15:24:38.665924600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/logodl/CVS/Entries u-boot-2009.03/board/logodl/CVS/Entries
--- u-boot-2009.03_orig/board/logodl/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/logodl/CVS/Entries     2009-03-25 15:57:31.825076500 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/logodl.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/logodl/CVS/Entries.Extra u-boot-2009.03/board/logodl/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/logodl/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/logodl/CVS/Entries.Extra       2009-03-25 15:57:31.840701400 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019701/
+/config.mk///1238019701/
+/flash.c///1238019701/
+/logodl.c///1238019701/
+/lowlevel_init.S///1238019701/
+/u-boot.lds///1238019701/
diff -Naur u-boot-2009.03_orig/board/logodl/CVS/Entries.Extra.Old u-boot-2009.03/board/logodl/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/logodl/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/logodl/CVS/Entries.Extra.Old   2009-03-25 15:24:38.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019701/
+/config.mk///1238019701/
+/flash.c///1238019701/
+/logodl.c///1238019701/
+/lowlevel_init.S///1238019701/
+/u-boot.lds///1238019701/
diff -Naur u-boot-2009.03_orig/board/logodl/CVS/Entries.Old u-boot-2009.03/board/logodl/CVS/Entries.Old
--- u-boot-2009.03_orig/board/logodl/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/logodl/CVS/Entries.Old 2009-03-25 15:24:38.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/logodl.c/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/logodl/CVS/Repository u-boot-2009.03/board/logodl/CVS/Repository
--- u-boot-2009.03_orig/board/logodl/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/logodl/CVS/Repository  2009-03-25 15:24:38.790923000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/logodl
diff -Naur u-boot-2009.03_orig/board/logodl/CVS/Root u-boot-2009.03/board/logodl/CVS/Root
--- u-boot-2009.03_orig/board/logodl/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/logodl/CVS/Root        2009-03-25 15:24:38.790923000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/lpc2292sodimm/CVS/Entries u-boot-2009.03/board/lpc2292sodimm/CVS/Entries
--- u-boot-2009.03_orig/board/lpc2292sodimm/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/lpc2292sodimm/CVS/Entries      2009-03-25 15:57:31.918825900 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lpc2292sodimm.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/lpc2292sodimm/CVS/Entries.Extra u-boot-2009.03/board/lpc2292sodimm/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/lpc2292sodimm/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/lpc2292sodimm/CVS/Entries.Extra        2009-03-25 15:57:31.934450800 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019701/
+/config.mk///1238019701/
+/flash.c///1238019701/
+/lowlevel_init.S///1238019701/
+/lpc2292sodimm.c///1238019701/
+/u-boot.lds///1238019701/
diff -Naur u-boot-2009.03_orig/board/lpc2292sodimm/CVS/Entries.Extra.Old u-boot-2009.03/board/lpc2292sodimm/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/lpc2292sodimm/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/lpc2292sodimm/CVS/Entries.Extra.Old    2009-03-25 15:24:38.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019701/
+/config.mk///1238019701/
+/flash.c///1238019701/
+/lowlevel_init.S///1238019701/
+/lpc2292sodimm.c///1238019701/
+/u-boot.lds///1238019701/
diff -Naur u-boot-2009.03_orig/board/lpc2292sodimm/CVS/Entries.Old u-boot-2009.03/board/lpc2292sodimm/CVS/Entries.Old
--- u-boot-2009.03_orig/board/lpc2292sodimm/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/lpc2292sodimm/CVS/Entries.Old  2009-03-25 15:24:38.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/lpc2292sodimm.c/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/lpc2292sodimm/CVS/Repository u-boot-2009.03/board/lpc2292sodimm/CVS/Repository
--- u-boot-2009.03_orig/board/lpc2292sodimm/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/lpc2292sodimm/CVS/Repository   2009-03-25 15:24:38.915921400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/lpc2292sodimm
diff -Naur u-boot-2009.03_orig/board/lpc2292sodimm/CVS/Root u-boot-2009.03/board/lpc2292sodimm/CVS/Root
--- u-boot-2009.03_orig/board/lpc2292sodimm/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/lpc2292sodimm/CVS/Root 2009-03-25 15:24:38.915921400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/lpd7a40x/CVS/Entries u-boot-2009.03/board/lpd7a40x/CVS/Entries
--- u-boot-2009.03_orig/board/lpd7a40x/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/lpd7a40x/CVS/Entries   2009-03-25 15:57:32.028200200 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lpd7a40x.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/lpd7a40x/CVS/Entries.Extra u-boot-2009.03/board/lpd7a40x/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/lpd7a40x/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/lpd7a40x/CVS/Entries.Extra     2009-03-25 15:57:32.028200200 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019701/
+/config.mk///1238019701/
+/flash.c///1238019701/
+/lowlevel_init.S///1238019701/
+/lpd7a40x.c///1238019701/
+/u-boot.lds///1238019701/
diff -Naur u-boot-2009.03_orig/board/lpd7a40x/CVS/Entries.Extra.Old u-boot-2009.03/board/lpd7a40x/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/lpd7a40x/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/lpd7a40x/CVS/Entries.Extra.Old 2009-03-25 15:24:39.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019701/
+/config.mk///1238019701/
+/flash.c///1238019701/
+/lowlevel_init.S///1238019701/
+/lpd7a40x.c///1238019701/
+/u-boot.lds///1238019701/
diff -Naur u-boot-2009.03_orig/board/lpd7a40x/CVS/Entries.Old u-boot-2009.03/board/lpd7a40x/CVS/Entries.Old
--- u-boot-2009.03_orig/board/lpd7a40x/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/lpd7a40x/CVS/Entries.Old       2009-03-25 15:24:39.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/lpd7a40x.c/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/lpd7a40x/CVS/Repository u-boot-2009.03/board/lpd7a40x/CVS/Repository
--- u-boot-2009.03_orig/board/lpd7a40x/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/lpd7a40x/CVS/Repository        2009-03-25 15:24:39.040919800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/lpd7a40x
diff -Naur u-boot-2009.03_orig/board/lpd7a40x/CVS/Root u-boot-2009.03/board/lpd7a40x/CVS/Root
--- u-boot-2009.03_orig/board/lpd7a40x/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/lpd7a40x/CVS/Root      2009-03-25 15:24:39.025295000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/lubbock/CVS/Entries u-boot-2009.03/board/lubbock/CVS/Entries
--- u-boot-2009.03_orig/board/lubbock/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/lubbock/CVS/Entries    2009-03-25 15:57:32.184449200 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lubbock.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/lubbock/CVS/Entries.Extra u-boot-2009.03/board/lubbock/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/lubbock/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/lubbock/CVS/Entries.Extra      2009-03-25 15:57:32.184449200 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019701/
+/config.mk///1238019701/
+/flash.c///1238019701/
+/lowlevel_init.S///1238019701/
+/lubbock.c///1238019701/
+/u-boot.lds///1238019701/
diff -Naur u-boot-2009.03_orig/board/lubbock/CVS/Entries.Extra.Old u-boot-2009.03/board/lubbock/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/lubbock/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/lubbock/CVS/Entries.Extra.Old  2009-03-25 15:24:39.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019701/
+/config.mk///1238019701/
+/flash.c///1238019701/
+/lowlevel_init.S///1238019701/
+/lubbock.c///1238019701/
+/u-boot.lds///1238019701/
diff -Naur u-boot-2009.03_orig/board/lubbock/CVS/Entries.Old u-boot-2009.03/board/lubbock/CVS/Entries.Old
--- u-boot-2009.03_orig/board/lubbock/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/lubbock/CVS/Entries.Old        2009-03-25 15:24:39.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/lubbock.c/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/lubbock/CVS/Repository u-boot-2009.03/board/lubbock/CVS/Repository
--- u-boot-2009.03_orig/board/lubbock/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/lubbock/CVS/Repository 2009-03-25 15:24:39.165918200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/lubbock
diff -Naur u-boot-2009.03_orig/board/lubbock/CVS/Root u-boot-2009.03/board/lubbock/CVS/Root
--- u-boot-2009.03_orig/board/lubbock/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/lubbock/CVS/Root       2009-03-25 15:24:39.165918200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/lwmon/CVS/Entries u-boot-2009.03/board/lwmon/CVS/Entries
--- u-boot-2009.03_orig/board/lwmon/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/lwmon/CVS/Entries      2009-03-25 15:57:32.293823500 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.keybd/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lwmon.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pcmcia.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.debug/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/lwmon/CVS/Entries.Extra u-boot-2009.03/board/lwmon/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/lwmon/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/lwmon/CVS/Entries.Extra        2009-03-25 15:57:32.293823500 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019701/
+/README.keybd///1238019701/
+/config.mk///1238019701/
+/flash.c///1238019701/
+/lwmon.c///1238019701/
+/pcmcia.c///1238019701/
+/u-boot.lds///1238019701/
+/u-boot.lds.debug///1238019701/
diff -Naur u-boot-2009.03_orig/board/lwmon/CVS/Entries.Extra.Old u-boot-2009.03/board/lwmon/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/lwmon/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/lwmon/CVS/Entries.Extra.Old    2009-03-25 15:24:39.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019701/
+/README.keybd///1238019701/
+/config.mk///1238019701/
+/flash.c///1238019701/
+/lwmon.c///1238019701/
+/pcmcia.c///1238019701/
+/u-boot.lds///1238019701/
+/u-boot.lds.debug///1238019701/
diff -Naur u-boot-2009.03_orig/board/lwmon/CVS/Entries.Old u-boot-2009.03/board/lwmon/CVS/Entries.Old
--- u-boot-2009.03_orig/board/lwmon/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/lwmon/CVS/Entries.Old  2009-03-25 15:24:39.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/README.keybd/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/lwmon.c/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/pcmcia.c/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/u-boot.lds.debug/1.1.1.1/Wed Mar 25 22:21:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/lwmon/CVS/Repository u-boot-2009.03/board/lwmon/CVS/Repository
--- u-boot-2009.03_orig/board/lwmon/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/lwmon/CVS/Repository   2009-03-25 15:24:39.290916600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/lwmon
diff -Naur u-boot-2009.03_orig/board/lwmon/CVS/Root u-boot-2009.03/board/lwmon/CVS/Root
--- u-boot-2009.03_orig/board/lwmon/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/lwmon/CVS/Root 2009-03-25 15:24:39.290916600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/lwmon5/CVS/Entries u-boot-2009.03/board/lwmon5/CVS/Entries
--- u-boot-2009.03_orig/board/lwmon5/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/lwmon5/CVS/Entries     2009-03-25 15:57:32.387572900 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/kbd.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lwmon5.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sdram.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/lwmon5/CVS/Entries.Extra u-boot-2009.03/board/lwmon5/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/lwmon5/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/lwmon5/CVS/Entries.Extra       2009-03-25 15:57:32.387572900 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019701/
+/config.mk///1238019701/
+/init.S///1238019701/
+/kbd.c///1238019701/
+/lwmon5.c///1238019701/
+/sdram.c///1238019701/
+/u-boot.lds///1238019701/
diff -Naur u-boot-2009.03_orig/board/lwmon5/CVS/Entries.Extra.Old u-boot-2009.03/board/lwmon5/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/lwmon5/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/lwmon5/CVS/Entries.Extra.Old   2009-03-25 15:24:39.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019701/
+/config.mk///1238019701/
+/init.S///1238019701/
+/kbd.c///1238019701/
+/lwmon5.c///1238019701/
+/sdram.c///1238019701/
+/u-boot.lds///1238019701/
diff -Naur u-boot-2009.03_orig/board/lwmon5/CVS/Entries.Old u-boot-2009.03/board/lwmon5/CVS/Entries.Old
--- u-boot-2009.03_orig/board/lwmon5/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/lwmon5/CVS/Entries.Old 2009-03-25 15:24:39.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/init.S/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/kbd.c/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/lwmon5.c/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/sdram.c/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/lwmon5/CVS/Repository u-boot-2009.03/board/lwmon5/CVS/Repository
--- u-boot-2009.03_orig/board/lwmon5/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/lwmon5/CVS/Repository  2009-03-25 15:24:39.540913400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/lwmon5
diff -Naur u-boot-2009.03_orig/board/lwmon5/CVS/Root u-boot-2009.03/board/lwmon5/CVS/Root
--- u-boot-2009.03_orig/board/lwmon5/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/lwmon5/CVS/Root        2009-03-25 15:24:39.525288600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/m501sk/CVS/Entries u-boot-2009.03/board/m501sk/CVS/Entries
--- u-boot-2009.03_orig/board/m501sk/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/m501sk/CVS/Entries     2009-03-25 15:57:32.481322300 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/eeprom.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/m501sk.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/m501sk.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/m501sk/CVS/Entries.Extra u-boot-2009.03/board/m501sk/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/m501sk/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/m501sk/CVS/Entries.Extra       2009-03-25 15:57:32.481322300 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019701/
+/config.mk///1238019701/
+/eeprom.c///1238019701/
+/m501sk.c///1238019701/
+/m501sk.h///1238019701/
+/u-boot.lds///1238019701/
diff -Naur u-boot-2009.03_orig/board/m501sk/CVS/Entries.Extra.Old u-boot-2009.03/board/m501sk/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/m501sk/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/m501sk/CVS/Entries.Extra.Old   2009-03-25 15:24:39.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019701/
+/config.mk///1238019701/
+/eeprom.c///1238019701/
+/m501sk.c///1238019701/
+/m501sk.h///1238019701/
+/u-boot.lds///1238019701/
diff -Naur u-boot-2009.03_orig/board/m501sk/CVS/Entries.Old u-boot-2009.03/board/m501sk/CVS/Entries.Old
--- u-boot-2009.03_orig/board/m501sk/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/m501sk/CVS/Entries.Old 2009-03-25 15:24:39.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/eeprom.c/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/m501sk.c/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/m501sk.h/1.1.1.1/Wed Mar 25 22:21:41 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/m501sk/CVS/Repository u-boot-2009.03/board/m501sk/CVS/Repository
--- u-boot-2009.03_orig/board/m501sk/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/m501sk/CVS/Repository  2009-03-25 15:24:39.697161400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/m501sk
diff -Naur u-boot-2009.03_orig/board/m501sk/CVS/Root u-boot-2009.03/board/m501sk/CVS/Root
--- u-boot-2009.03_orig/board/m501sk/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/m501sk/CVS/Root        2009-03-25 15:24:39.681536600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/matrix_vision/CVS/Entries u-boot-2009.03/board/matrix_vision/CVS/Entries
--- u-boot-2009.03_orig/board/matrix_vision/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/matrix_vision/CVS/Entries      2009-03-25 15:24:40.134655800 -0700
@@ -0,0 +1,2 @@
+D/mvbc_p////
+D/mvblm7////
diff -Naur u-boot-2009.03_orig/board/matrix_vision/CVS/Entries.Extra u-boot-2009.03/board/matrix_vision/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/matrix_vision/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/matrix_vision/CVS/Entries.Extra        2009-03-25 15:24:40.134655800 -0700
@@ -0,0 +1,2 @@
+D/mvbc_p////
+D/mvblm7////
diff -Naur u-boot-2009.03_orig/board/matrix_vision/CVS/Repository u-boot-2009.03/board/matrix_vision/CVS/Repository
--- u-boot-2009.03_orig/board/matrix_vision/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/matrix_vision/CVS/Repository   2009-03-25 15:24:39.822159800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/matrix_vision
diff -Naur u-boot-2009.03_orig/board/matrix_vision/CVS/Root u-boot-2009.03/board/matrix_vision/CVS/Root
--- u-boot-2009.03_orig/board/matrix_vision/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/matrix_vision/CVS/Root 2009-03-25 15:24:39.806535000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/matrix_vision/mvbc_p/CVS/Entries u-boot-2009.03/board/matrix_vision/mvbc_p/CVS/Entries
--- u-boot-2009.03_orig/board/matrix_vision/mvbc_p/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/matrix_vision/mvbc_p/CVS/Entries       2009-03-25 15:57:32.590696600 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fpga.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fpga.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mvbc_p.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mvbc_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mvbc_p_autoscript/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/matrix_vision/mvbc_p/CVS/Entries.Extra u-boot-2009.03/board/matrix_vision/mvbc_p/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/matrix_vision/mvbc_p/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/matrix_vision/mvbc_p/CVS/Entries.Extra 2009-03-25 15:57:32.590696600 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019702/
+/config.mk///1238019702/
+/fpga.c///1238019702/
+/fpga.h///1238019702/
+/mvbc_p.c///1238019702/
+/mvbc_p.h///1238019702/
+/mvbc_p_autoscript///1238019702/
diff -Naur u-boot-2009.03_orig/board/matrix_vision/mvbc_p/CVS/Entries.Extra.Old u-boot-2009.03/board/matrix_vision/mvbc_p/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/matrix_vision/mvbc_p/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/matrix_vision/mvbc_p/CVS/Entries.Extra.Old     2009-03-25 15:24:39.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019702/
+/config.mk///1238019702/
+/fpga.c///1238019702/
+/fpga.h///1238019702/
+/mvbc_p.c///1238019702/
+/mvbc_p.h///1238019702/
+/mvbc_p_autoscript///1238019702/
diff -Naur u-boot-2009.03_orig/board/matrix_vision/mvbc_p/CVS/Entries.Old u-boot-2009.03/board/matrix_vision/mvbc_p/CVS/Entries.Old
--- u-boot-2009.03_orig/board/matrix_vision/mvbc_p/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/matrix_vision/mvbc_p/CVS/Entries.Old   2009-03-25 15:24:39.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/fpga.c/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/fpga.h/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/mvbc_p.c/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/mvbc_p.h/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/mvbc_p_autoscript/1.1.1.1/Wed Mar 25 22:21:42 2009//
+D
diff -Naur u-boot-2009.03_orig/board/matrix_vision/mvbc_p/CVS/Repository u-boot-2009.03/board/matrix_vision/mvbc_p/CVS/Repository
--- u-boot-2009.03_orig/board/matrix_vision/mvbc_p/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/matrix_vision/mvbc_p/CVS/Repository    2009-03-25 15:24:39.853409400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/matrix_vision/mvbc_p
diff -Naur u-boot-2009.03_orig/board/matrix_vision/mvbc_p/CVS/Root u-boot-2009.03/board/matrix_vision/mvbc_p/CVS/Root
--- u-boot-2009.03_orig/board/matrix_vision/mvbc_p/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/matrix_vision/mvbc_p/CVS/Root  2009-03-25 15:24:39.837784600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/matrix_vision/mvblm7/CVS/Entries u-boot-2009.03/board/matrix_vision/mvblm7/CVS/Entries
--- u-boot-2009.03_orig/board/matrix_vision/mvblm7/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/matrix_vision/mvblm7/CVS/Entries       2009-03-25 15:57:32.684446000 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fpga.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fpga.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mvblm7.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mvblm7.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mvblm7_autoscript/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/matrix_vision/mvblm7/CVS/Entries.Extra u-boot-2009.03/board/matrix_vision/mvblm7/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/matrix_vision/mvblm7/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/matrix_vision/mvblm7/CVS/Entries.Extra 2009-03-25 15:57:32.700070900 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019702/
+/config.mk///1238019702/
+/fpga.c///1238019702/
+/fpga.h///1238019702/
+/mvblm7.c///1238019702/
+/mvblm7.h///1238019702/
+/mvblm7_autoscript///1238019702/
+/pci.c///1238019702/
diff -Naur u-boot-2009.03_orig/board/matrix_vision/mvblm7/CVS/Entries.Extra.Old u-boot-2009.03/board/matrix_vision/mvblm7/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/matrix_vision/mvblm7/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/matrix_vision/mvblm7/CVS/Entries.Extra.Old     2009-03-25 15:24:40.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019702/
+/config.mk///1238019702/
+/fpga.c///1238019702/
+/fpga.h///1238019702/
+/mvblm7.c///1238019702/
+/mvblm7.h///1238019702/
+/mvblm7_autoscript///1238019702/
+/pci.c///1238019702/
diff -Naur u-boot-2009.03_orig/board/matrix_vision/mvblm7/CVS/Entries.Old u-boot-2009.03/board/matrix_vision/mvblm7/CVS/Entries.Old
--- u-boot-2009.03_orig/board/matrix_vision/mvblm7/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/matrix_vision/mvblm7/CVS/Entries.Old   2009-03-25 15:24:40.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/fpga.c/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/fpga.h/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/mvblm7.c/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/mvblm7.h/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/mvblm7_autoscript/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/pci.c/1.1.1.1/Wed Mar 25 22:21:42 2009//
+D
diff -Naur u-boot-2009.03_orig/board/matrix_vision/mvblm7/CVS/Repository u-boot-2009.03/board/matrix_vision/mvblm7/CVS/Repository
--- u-boot-2009.03_orig/board/matrix_vision/mvblm7/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/matrix_vision/mvblm7/CVS/Repository    2009-03-25 15:24:39.978407800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/matrix_vision/mvblm7
diff -Naur u-boot-2009.03_orig/board/matrix_vision/mvblm7/CVS/Root u-boot-2009.03/board/matrix_vision/mvblm7/CVS/Root
--- u-boot-2009.03_orig/board/matrix_vision/mvblm7/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/matrix_vision/mvblm7/CVS/Root  2009-03-25 15:24:39.978407800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/mbx8xx/CVS/Entries u-boot-2009.03/board/mbx8xx/CVS/Entries
--- u-boot-2009.03_orig/board/mbx8xx/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mbx8xx/CVS/Entries     2009-03-25 15:57:32.825070100 -0700
@@ -0,0 +1,12 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/csr.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dimm.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mbx8xx.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pcmcia.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.debug/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/vpd.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/vpd.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/mbx8xx/CVS/Entries.Extra u-boot-2009.03/board/mbx8xx/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/mbx8xx/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mbx8xx/CVS/Entries.Extra       2009-03-25 15:57:32.825070100 -0700
@@ -0,0 +1,11 @@
+/Makefile///1238019702/
+/config.mk///1238019702/
+/csr.h///1238019702/
+/dimm.h///1238019702/
+/flash.c///1238019702/
+/mbx8xx.c///1238019703/
+/pcmcia.c///1238019703/
+/u-boot.lds///1238019703/
+/u-boot.lds.debug///1238019703/
+/vpd.c///1238019703/
+/vpd.h///1238019703/
diff -Naur u-boot-2009.03_orig/board/mbx8xx/CVS/Entries.Extra.Old u-boot-2009.03/board/mbx8xx/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/mbx8xx/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mbx8xx/CVS/Entries.Extra.Old   2009-03-25 15:24:40.000000000 -0700
@@ -0,0 +1,11 @@
+/Makefile///1238019702/
+/config.mk///1238019702/
+/csr.h///1238019702/
+/dimm.h///1238019702/
+/flash.c///1238019702/
+/mbx8xx.c///1238019703/
+/pcmcia.c///1238019703/
+/u-boot.lds///1238019703/
+/u-boot.lds.debug///1238019703/
+/vpd.c///1238019703/
+/vpd.h///1238019703/
diff -Naur u-boot-2009.03_orig/board/mbx8xx/CVS/Entries.Old u-boot-2009.03/board/mbx8xx/CVS/Entries.Old
--- u-boot-2009.03_orig/board/mbx8xx/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mbx8xx/CVS/Entries.Old 2009-03-25 15:24:40.000000000 -0700
@@ -0,0 +1,12 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/csr.h/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/dimm.h/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:42 2009//
+/mbx8xx.c/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/pcmcia.c/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/u-boot.lds.debug/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/vpd.c/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/vpd.h/1.1.1.1/Wed Mar 25 22:21:43 2009//
+D
diff -Naur u-boot-2009.03_orig/board/mbx8xx/CVS/Repository u-boot-2009.03/board/mbx8xx/CVS/Repository
--- u-boot-2009.03_orig/board/mbx8xx/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mbx8xx/CVS/Repository  2009-03-25 15:24:40.197155000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/mbx8xx
diff -Naur u-boot-2009.03_orig/board/mbx8xx/CVS/Root u-boot-2009.03/board/mbx8xx/CVS/Root
--- u-boot-2009.03_orig/board/mbx8xx/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mbx8xx/CVS/Root        2009-03-25 15:24:40.181530200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/mcc200/CVS/Entries u-boot-2009.03/board/mcc200/CVS/Entries
--- u-boot-2009.03_orig/board/mcc200/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mcc200/CVS/Entries     2009-03-25 15:57:32.950069300 -0700
@@ -0,0 +1,10 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/auto_update.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lcd.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mcc200.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mt46v16m16-75.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mt48lc16m16a2-75.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mt48lc16m32s2-75.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mt48lc8m32b2-6-7.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/mcc200/CVS/Entries.Extra u-boot-2009.03/board/mcc200/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/mcc200/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mcc200/CVS/Entries.Extra       2009-03-25 15:57:32.950069300 -0700
@@ -0,0 +1,9 @@
+/Makefile///1238019703/
+/auto_update.c///1238019703/
+/config.mk///1238019703/
+/lcd.c///1238019703/
+/mcc200.c///1238019703/
+/mt46v16m16-75.h///1238019703/
+/mt48lc16m16a2-75.h///1238019703/
+/mt48lc16m32s2-75.h///1238019703/
+/mt48lc8m32b2-6-7.h///1238019703/
diff -Naur u-boot-2009.03_orig/board/mcc200/CVS/Entries.Extra.Old u-boot-2009.03/board/mcc200/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/mcc200/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mcc200/CVS/Entries.Extra.Old   2009-03-25 15:24:40.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile///1238019703/
+/auto_update.c///1238019703/
+/config.mk///1238019703/
+/lcd.c///1238019703/
+/mcc200.c///1238019703/
+/mt46v16m16-75.h///1238019703/
+/mt48lc16m16a2-75.h///1238019703/
+/mt48lc16m32s2-75.h///1238019703/
+/mt48lc8m32b2-6-7.h///1238019703/
diff -Naur u-boot-2009.03_orig/board/mcc200/CVS/Entries.Old u-boot-2009.03/board/mcc200/CVS/Entries.Old
--- u-boot-2009.03_orig/board/mcc200/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mcc200/CVS/Entries.Old 2009-03-25 15:24:40.000000000 -0700
@@ -0,0 +1,10 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/auto_update.c/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/lcd.c/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/mcc200.c/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/mt46v16m16-75.h/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/mt48lc16m16a2-75.h/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/mt48lc16m32s2-75.h/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/mt48lc8m32b2-6-7.h/1.1.1.1/Wed Mar 25 22:21:43 2009//
+D
diff -Naur u-boot-2009.03_orig/board/mcc200/CVS/Repository u-boot-2009.03/board/mcc200/CVS/Repository
--- u-boot-2009.03_orig/board/mcc200/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mcc200/CVS/Repository  2009-03-25 15:24:40.353403000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/mcc200
diff -Naur u-boot-2009.03_orig/board/mcc200/CVS/Root u-boot-2009.03/board/mcc200/CVS/Root
--- u-boot-2009.03_orig/board/mcc200/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mcc200/CVS/Root        2009-03-25 15:24:40.353403000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/micronas/CVS/Entries u-boot-2009.03/board/micronas/CVS/Entries
--- u-boot-2009.03_orig/board/micronas/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/micronas/CVS/Entries   2009-03-25 15:24:41.306515800 -0700
@@ -0,0 +1 @@
+D/vct////
diff -Naur u-boot-2009.03_orig/board/micronas/CVS/Entries.Extra u-boot-2009.03/board/micronas/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/micronas/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/micronas/CVS/Entries.Extra     2009-03-25 15:24:41.306515800 -0700
@@ -0,0 +1 @@
+D/vct////
diff -Naur u-boot-2009.03_orig/board/micronas/CVS/Repository u-boot-2009.03/board/micronas/CVS/Repository
--- u-boot-2009.03_orig/board/micronas/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/micronas/CVS/Repository        2009-03-25 15:24:40.712773400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/micronas
diff -Naur u-boot-2009.03_orig/board/micronas/CVS/Root u-boot-2009.03/board/micronas/CVS/Root
--- u-boot-2009.03_orig/board/micronas/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/micronas/CVS/Root      2009-03-25 15:24:40.697148600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/micronas/vct/CVS/Entries u-boot-2009.03/board/micronas/vct/CVS/Entries
--- u-boot-2009.03_orig/board/micronas/vct/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/micronas/vct/CVS/Entries       2009-03-25 15:57:33.387566500 -0700
@@ -0,0 +1,22 @@
+D/vcth////
+D/vcth2////
+D/vctv////
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bcu.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dcgu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dcgu.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ebi.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ebi.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ebi_nor_flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ebi_onenand.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ebi_smc911x.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ehci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/gpio.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/scc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/scc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/smc_eeprom.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/top.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/vct.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/vct.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
diff -Naur u-boot-2009.03_orig/board/micronas/vct/CVS/Entries.Extra u-boot-2009.03/board/micronas/vct/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/micronas/vct/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/micronas/vct/CVS/Entries.Extra 2009-03-25 15:57:33.387566500 -0700
@@ -0,0 +1,22 @@
+D/vcth////
+D/vcth2////
+D/vctv////
+/Makefile///1238019703/
+/bcu.h///1238019703/
+/config.mk///1238019703/
+/dcgu.c///1238019703/
+/dcgu.h///1238019703/
+/ebi.c///1238019703/
+/ebi.h///1238019703/
+/ebi_nor_flash.c///1238019703/
+/ebi_onenand.c///1238019703/
+/ebi_smc911x.c///1238019703/
+/ehci.c///1238019703/
+/gpio.c///1238019703/
+/scc.c///1238019703/
+/scc.h///1238019703/
+/smc_eeprom.c///1238019703/
+/top.c///1238019703/
+/u-boot.lds///1238019703/
+/vct.c///1238019703/
+/vct.h///1238019703/
diff -Naur u-boot-2009.03_orig/board/micronas/vct/CVS/Entries.Extra.Old u-boot-2009.03/board/micronas/vct/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/micronas/vct/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/micronas/vct/CVS/Entries.Extra.Old     2009-03-25 15:24:41.000000000 -0700
@@ -0,0 +1,22 @@
+/Makefile///1238019703/
+/bcu.h///1238019703/
+/config.mk///1238019703/
+/dcgu.c///1238019703/
+/dcgu.h///1238019703/
+/ebi.c///1238019703/
+/ebi.h///1238019703/
+/ebi_nor_flash.c///1238019703/
+/ebi_onenand.c///1238019703/
+/ebi_smc911x.c///1238019703/
+/ehci.c///1238019703/
+/gpio.c///1238019703/
+/scc.c///1238019703/
+/scc.h///1238019703/
+/smc_eeprom.c///1238019703/
+/top.c///1238019703/
+/u-boot.lds///1238019703/
+/vct.c///1238019703/
+/vct.h///1238019703/
+D/vcth////
+D/vcth2////
+D/vctv////
diff -Naur u-boot-2009.03_orig/board/micronas/vct/CVS/Entries.Old u-boot-2009.03/board/micronas/vct/CVS/Entries.Old
--- u-boot-2009.03_orig/board/micronas/vct/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/micronas/vct/CVS/Entries.Old   2009-03-25 15:24:41.000000000 -0700
@@ -0,0 +1,22 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/bcu.h/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/dcgu.c/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/dcgu.h/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/ebi.c/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/ebi.h/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/ebi_nor_flash.c/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/ebi_onenand.c/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/ebi_smc911x.c/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/ehci.c/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/gpio.c/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/scc.c/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/scc.h/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/smc_eeprom.c/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/top.c/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/vct.c/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/vct.h/1.1.1.1/Wed Mar 25 22:21:43 2009//
+D/vcth////
+D/vcth2////
+D/vctv////
diff -Naur u-boot-2009.03_orig/board/micronas/vct/CVS/Repository u-boot-2009.03/board/micronas/vct/CVS/Repository
--- u-boot-2009.03_orig/board/micronas/vct/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/micronas/vct/CVS/Repository    2009-03-25 15:24:40.728398200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/micronas/vct
diff -Naur u-boot-2009.03_orig/board/micronas/vct/CVS/Root u-boot-2009.03/board/micronas/vct/CVS/Root
--- u-boot-2009.03_orig/board/micronas/vct/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/micronas/vct/CVS/Root  2009-03-25 15:24:40.728398200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/micronas/vct/vcth/CVS/Entries u-boot-2009.03/board/micronas/vct/vcth/CVS/Entries
--- u-boot-2009.03_orig/board/micronas/vct/vcth/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/micronas/vct/vcth/CVS/Entries  2009-03-25 15:57:33.200067700 -0700
@@ -0,0 +1,8 @@
+/reg_dcgu.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/reg_ebi.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/reg_fwsram.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/reg_gpio.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/reg_scc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/reg_usbh.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/reg_wdt.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/micronas/vct/vcth/CVS/Entries.Extra u-boot-2009.03/board/micronas/vct/vcth/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/micronas/vct/vcth/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/micronas/vct/vcth/CVS/Entries.Extra    2009-03-25 15:57:33.200067700 -0700
@@ -0,0 +1,7 @@
+/reg_dcgu.h///1238019703/
+/reg_ebi.h///1238019703/
+/reg_fwsram.h///1238019703/
+/reg_gpio.h///1238019703/
+/reg_scc.h///1238019703/
+/reg_usbh.h///1238019703/
+/reg_wdt.h///1238019703/
diff -Naur u-boot-2009.03_orig/board/micronas/vct/vcth/CVS/Entries.Extra.Old u-boot-2009.03/board/micronas/vct/vcth/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/micronas/vct/vcth/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/micronas/vct/vcth/CVS/Entries.Extra.Old        2009-03-25 15:24:41.000000000 -0700
@@ -0,0 +1,7 @@
+/reg_dcgu.h///1238019703/
+/reg_ebi.h///1238019703/
+/reg_fwsram.h///1238019703/
+/reg_gpio.h///1238019703/
+/reg_scc.h///1238019703/
+/reg_usbh.h///1238019703/
+/reg_wdt.h///1238019703/
diff -Naur u-boot-2009.03_orig/board/micronas/vct/vcth/CVS/Entries.Old u-boot-2009.03/board/micronas/vct/vcth/CVS/Entries.Old
--- u-boot-2009.03_orig/board/micronas/vct/vcth/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/micronas/vct/vcth/CVS/Entries.Old      2009-03-25 15:24:41.000000000 -0700
@@ -0,0 +1,8 @@
+/reg_dcgu.h/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/reg_ebi.h/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/reg_fwsram.h/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/reg_gpio.h/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/reg_scc.h/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/reg_usbh.h/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/reg_wdt.h/1.1.1.1/Wed Mar 25 22:21:43 2009//
+D
diff -Naur u-boot-2009.03_orig/board/micronas/vct/vcth/CVS/Repository u-boot-2009.03/board/micronas/vct/vcth/CVS/Repository
--- u-boot-2009.03_orig/board/micronas/vct/vcth/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/micronas/vct/vcth/CVS/Repository       2009-03-25 15:24:40.947145400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/micronas/vct/vcth
diff -Naur u-boot-2009.03_orig/board/micronas/vct/vcth/CVS/Root u-boot-2009.03/board/micronas/vct/vcth/CVS/Root
--- u-boot-2009.03_orig/board/micronas/vct/vcth/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/micronas/vct/vcth/CVS/Root     2009-03-25 15:24:40.947145400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/micronas/vct/vcth2/CVS/Entries u-boot-2009.03/board/micronas/vct/vcth2/CVS/Entries
--- u-boot-2009.03_orig/board/micronas/vct/vcth2/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/micronas/vct/vcth2/CVS/Entries 2009-03-25 15:57:33.262567300 -0700
@@ -0,0 +1,2 @@
+/reg_ebi.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/micronas/vct/vcth2/CVS/Entries.Extra u-boot-2009.03/board/micronas/vct/vcth2/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/micronas/vct/vcth2/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/micronas/vct/vcth2/CVS/Entries.Extra   2009-03-25 15:57:33.262567300 -0700
@@ -0,0 +1 @@
+/reg_ebi.h///1238019703/
diff -Naur u-boot-2009.03_orig/board/micronas/vct/vcth2/CVS/Entries.Extra.Old u-boot-2009.03/board/micronas/vct/vcth2/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/micronas/vct/vcth2/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/micronas/vct/vcth2/CVS/Entries.Extra.Old       2009-03-25 15:24:41.000000000 -0700
@@ -0,0 +1 @@
+/reg_ebi.h///1238019703/
diff -Naur u-boot-2009.03_orig/board/micronas/vct/vcth2/CVS/Entries.Old u-boot-2009.03/board/micronas/vct/vcth2/CVS/Entries.Old
--- u-boot-2009.03_orig/board/micronas/vct/vcth2/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/micronas/vct/vcth2/CVS/Entries.Old     2009-03-25 15:24:41.000000000 -0700
@@ -0,0 +1,2 @@
+/reg_ebi.h/1.1.1.1/Wed Mar 25 22:21:43 2009//
+D
diff -Naur u-boot-2009.03_orig/board/micronas/vct/vcth2/CVS/Repository u-boot-2009.03/board/micronas/vct/vcth2/CVS/Repository
--- u-boot-2009.03_orig/board/micronas/vct/vcth2/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/micronas/vct/vcth2/CVS/Repository      2009-03-25 15:24:41.087768600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/micronas/vct/vcth2
diff -Naur u-boot-2009.03_orig/board/micronas/vct/vcth2/CVS/Root u-boot-2009.03/board/micronas/vct/vcth2/CVS/Root
--- u-boot-2009.03_orig/board/micronas/vct/vcth2/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/micronas/vct/vcth2/CVS/Root    2009-03-25 15:24:41.087768600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/micronas/vct/vctv/CVS/Entries u-boot-2009.03/board/micronas/vct/vctv/CVS/Entries
--- u-boot-2009.03_orig/board/micronas/vct/vctv/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/micronas/vct/vctv/CVS/Entries  2009-03-25 15:57:33.340691800 -0700
@@ -0,0 +1,5 @@
+/reg_dcgu.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/reg_ebi.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/reg_gpio.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/reg_wdt.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/micronas/vct/vctv/CVS/Entries.Extra u-boot-2009.03/board/micronas/vct/vctv/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/micronas/vct/vctv/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/micronas/vct/vctv/CVS/Entries.Extra    2009-03-25 15:57:33.340691800 -0700
@@ -0,0 +1,4 @@
+/reg_dcgu.h///1238019703/
+/reg_ebi.h///1238019703/
+/reg_gpio.h///1238019703/
+/reg_wdt.h///1238019703/
diff -Naur u-boot-2009.03_orig/board/micronas/vct/vctv/CVS/Entries.Extra.Old u-boot-2009.03/board/micronas/vct/vctv/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/micronas/vct/vctv/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/micronas/vct/vctv/CVS/Entries.Extra.Old        2009-03-25 15:24:41.000000000 -0700
@@ -0,0 +1,4 @@
+/reg_dcgu.h///1238019703/
+/reg_ebi.h///1238019703/
+/reg_gpio.h///1238019703/
+/reg_wdt.h///1238019703/
diff -Naur u-boot-2009.03_orig/board/micronas/vct/vctv/CVS/Entries.Old u-boot-2009.03/board/micronas/vct/vctv/CVS/Entries.Old
--- u-boot-2009.03_orig/board/micronas/vct/vctv/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/micronas/vct/vctv/CVS/Entries.Old      2009-03-25 15:24:41.000000000 -0700
@@ -0,0 +1,5 @@
+/reg_dcgu.h/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/reg_ebi.h/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/reg_gpio.h/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/reg_wdt.h/1.1.1.1/Wed Mar 25 22:21:43 2009//
+D
diff -Naur u-boot-2009.03_orig/board/micronas/vct/vctv/CVS/Repository u-boot-2009.03/board/micronas/vct/vctv/CVS/Repository
--- u-boot-2009.03_orig/board/micronas/vct/vctv/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/micronas/vct/vctv/CVS/Repository       2009-03-25 15:24:41.165892600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/micronas/vct/vctv
diff -Naur u-boot-2009.03_orig/board/micronas/vct/vctv/CVS/Root u-boot-2009.03/board/micronas/vct/vctv/CVS/Root
--- u-boot-2009.03_orig/board/micronas/vct/vctv/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/micronas/vct/vctv/CVS/Root     2009-03-25 15:24:41.165892600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/mimc/CVS/Entries u-boot-2009.03/board/mimc/CVS/Entries
--- u-boot-2009.03_orig/board/mimc/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mimc/CVS/Entries       2009-03-25 15:24:41.603387000 -0700
@@ -0,0 +1 @@
+D/mimc200////
diff -Naur u-boot-2009.03_orig/board/mimc/CVS/Entries.Extra u-boot-2009.03/board/mimc/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/mimc/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mimc/CVS/Entries.Extra 2009-03-25 15:24:41.603387000 -0700
@@ -0,0 +1 @@
+D/mimc200////
diff -Naur u-boot-2009.03_orig/board/mimc/CVS/Repository u-boot-2009.03/board/mimc/CVS/Repository
--- u-boot-2009.03_orig/board/mimc/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mimc/CVS/Repository    2009-03-25 15:24:41.337765400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/mimc
diff -Naur u-boot-2009.03_orig/board/mimc/CVS/Root u-boot-2009.03/board/mimc/CVS/Root
--- u-boot-2009.03_orig/board/mimc/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mimc/CVS/Root  2009-03-25 15:24:41.337765400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/mimc/mimc200/CVS/Entries u-boot-2009.03/board/mimc/mimc200/CVS/Entries
--- u-boot-2009.03_orig/board/mimc/mimc200/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mimc/mimc200/CVS/Entries       2009-03-25 15:57:33.481315900 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mimc200.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/mimc/mimc200/CVS/Entries.Extra u-boot-2009.03/board/mimc/mimc200/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/mimc/mimc200/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mimc/mimc200/CVS/Entries.Extra 2009-03-25 15:57:33.481315900 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019703/
+/config.mk///1238019703/
+/mimc200.c///1238019703/
+/u-boot.lds///1238019703/
diff -Naur u-boot-2009.03_orig/board/mimc/mimc200/CVS/Entries.Extra.Old u-boot-2009.03/board/mimc/mimc200/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/mimc/mimc200/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mimc/mimc200/CVS/Entries.Extra.Old     2009-03-25 15:24:41.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019703/
+/config.mk///1238019703/
+/mimc200.c///1238019703/
+/u-boot.lds///1238019703/
diff -Naur u-boot-2009.03_orig/board/mimc/mimc200/CVS/Entries.Old u-boot-2009.03/board/mimc/mimc200/CVS/Entries.Old
--- u-boot-2009.03_orig/board/mimc/mimc200/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mimc/mimc200/CVS/Entries.Old   2009-03-25 15:24:41.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/mimc200.c/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:43 2009//
+D
diff -Naur u-boot-2009.03_orig/board/mimc/mimc200/CVS/Repository u-boot-2009.03/board/mimc/mimc200/CVS/Repository
--- u-boot-2009.03_orig/board/mimc/mimc200/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mimc/mimc200/CVS/Repository    2009-03-25 15:24:41.415889400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/mimc/mimc200
diff -Naur u-boot-2009.03_orig/board/mimc/mimc200/CVS/Root u-boot-2009.03/board/mimc/mimc200/CVS/Root
--- u-boot-2009.03_orig/board/mimc/mimc200/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mimc/mimc200/CVS/Root  2009-03-25 15:24:41.415889400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/miromico/CVS/Entries u-boot-2009.03/board/miromico/CVS/Entries
--- u-boot-2009.03_orig/board/miromico/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/miromico/CVS/Entries   2009-03-25 15:24:41.790884600 -0700
@@ -0,0 +1 @@
+D/hammerhead////
diff -Naur u-boot-2009.03_orig/board/miromico/CVS/Entries.Extra u-boot-2009.03/board/miromico/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/miromico/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/miromico/CVS/Entries.Extra     2009-03-25 15:24:41.790884600 -0700
@@ -0,0 +1 @@
+D/hammerhead////
diff -Naur u-boot-2009.03_orig/board/miromico/CVS/Repository u-boot-2009.03/board/miromico/CVS/Repository
--- u-boot-2009.03_orig/board/miromico/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/miromico/CVS/Repository        2009-03-25 15:24:41.650261400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/miromico
diff -Naur u-boot-2009.03_orig/board/miromico/CVS/Root u-boot-2009.03/board/miromico/CVS/Root
--- u-boot-2009.03_orig/board/miromico/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/miromico/CVS/Root      2009-03-25 15:24:41.650261400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/miromico/hammerhead/CVS/Entries u-boot-2009.03/board/miromico/hammerhead/CVS/Entries
--- u-boot-2009.03_orig/board/miromico/hammerhead/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/miromico/hammerhead/CVS/Entries        2009-03-25 15:57:33.559440400 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/hammerhead.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/miromico/hammerhead/CVS/Entries.Extra u-boot-2009.03/board/miromico/hammerhead/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/miromico/hammerhead/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/miromico/hammerhead/CVS/Entries.Extra  2009-03-25 15:57:33.575065300 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019703/
+/config.mk///1238019703/
+/hammerhead.c///1238019703/
+/u-boot.lds///1238019703/
diff -Naur u-boot-2009.03_orig/board/miromico/hammerhead/CVS/Entries.Extra.Old u-boot-2009.03/board/miromico/hammerhead/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/miromico/hammerhead/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/miromico/hammerhead/CVS/Entries.Extra.Old      2009-03-25 15:24:41.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019703/
+/config.mk///1238019703/
+/hammerhead.c///1238019703/
+/u-boot.lds///1238019703/
diff -Naur u-boot-2009.03_orig/board/miromico/hammerhead/CVS/Entries.Old u-boot-2009.03/board/miromico/hammerhead/CVS/Entries.Old
--- u-boot-2009.03_orig/board/miromico/hammerhead/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/miromico/hammerhead/CVS/Entries.Old    2009-03-25 15:24:41.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/hammerhead.c/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:43 2009//
+D
diff -Naur u-boot-2009.03_orig/board/miromico/hammerhead/CVS/Repository u-boot-2009.03/board/miromico/hammerhead/CVS/Repository
--- u-boot-2009.03_orig/board/miromico/hammerhead/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/miromico/hammerhead/CVS/Repository     2009-03-25 15:24:41.681511000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/miromico/hammerhead
diff -Naur u-boot-2009.03_orig/board/miromico/hammerhead/CVS/Root u-boot-2009.03/board/miromico/hammerhead/CVS/Root
--- u-boot-2009.03_orig/board/miromico/hammerhead/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/miromico/hammerhead/CVS/Root   2009-03-25 15:24:41.665886200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/ml2/CVS/Entries u-boot-2009.03/board/ml2/CVS/Entries
--- u-boot-2009.03_orig/board/ml2/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ml2/CVS/Entries        2009-03-25 15:57:33.653189800 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ml2.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.debug/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/ml2/CVS/Entries.Extra u-boot-2009.03/board/ml2/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/ml2/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ml2/CVS/Entries.Extra  2009-03-25 15:57:33.653189800 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019703/
+/config.mk///1238019703/
+/flash.c///1238019703/
+/init.S///1238019703/
+/ml2.c///1238019703/
+/serial.c///1238019703/
+/u-boot.lds///1238019703/
+/u-boot.lds.debug///1238019703/
diff -Naur u-boot-2009.03_orig/board/ml2/CVS/Entries.Extra.Old u-boot-2009.03/board/ml2/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/ml2/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ml2/CVS/Entries.Extra.Old      2009-03-25 15:24:41.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019703/
+/config.mk///1238019703/
+/flash.c///1238019703/
+/init.S///1238019703/
+/ml2.c///1238019703/
+/serial.c///1238019703/
+/u-boot.lds///1238019703/
+/u-boot.lds.debug///1238019703/
diff -Naur u-boot-2009.03_orig/board/ml2/CVS/Entries.Old u-boot-2009.03/board/ml2/CVS/Entries.Old
--- u-boot-2009.03_orig/board/ml2/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ml2/CVS/Entries.Old    2009-03-25 15:24:41.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/init.S/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/ml2.c/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/serial.c/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/u-boot.lds.debug/1.1.1.1/Wed Mar 25 22:21:43 2009//
+D
diff -Naur u-boot-2009.03_orig/board/ml2/CVS/Repository u-boot-2009.03/board/ml2/CVS/Repository
--- u-boot-2009.03_orig/board/ml2/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ml2/CVS/Repository     2009-03-25 15:24:41.837759000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/ml2
diff -Naur u-boot-2009.03_orig/board/ml2/CVS/Root u-boot-2009.03/board/ml2/CVS/Root
--- u-boot-2009.03_orig/board/ml2/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ml2/CVS/Root   2009-03-25 15:24:41.822134200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/modnet50/CVS/Entries u-boot-2009.03/board/modnet50/CVS/Entries
--- u-boot-2009.03_orig/board/modnet50/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/modnet50/CVS/Entries   2009-03-25 15:57:33.762564100 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/modnet50.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/modnet50/CVS/Entries.Extra u-boot-2009.03/board/modnet50/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/modnet50/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/modnet50/CVS/Entries.Extra     2009-03-25 15:57:33.762564100 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019703/
+/config.mk///1238019703/
+/flash.c///1238019703/
+/lowlevel_init.S///1238019703/
+/modnet50.c///1238019703/
+/u-boot.lds///1238019703/
diff -Naur u-boot-2009.03_orig/board/modnet50/CVS/Entries.Extra.Old u-boot-2009.03/board/modnet50/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/modnet50/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/modnet50/CVS/Entries.Extra.Old 2009-03-25 15:24:42.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019703/
+/config.mk///1238019703/
+/flash.c///1238019703/
+/lowlevel_init.S///1238019703/
+/modnet50.c///1238019703/
+/u-boot.lds///1238019703/
diff -Naur u-boot-2009.03_orig/board/modnet50/CVS/Entries.Old u-boot-2009.03/board/modnet50/CVS/Entries.Old
--- u-boot-2009.03_orig/board/modnet50/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/modnet50/CVS/Entries.Old       2009-03-25 15:24:42.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/modnet50.c/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:43 2009//
+D
diff -Naur u-boot-2009.03_orig/board/modnet50/CVS/Repository u-boot-2009.03/board/modnet50/CVS/Repository
--- u-boot-2009.03_orig/board/modnet50/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/modnet50/CVS/Repository        2009-03-25 15:24:41.962757400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/modnet50
diff -Naur u-boot-2009.03_orig/board/modnet50/CVS/Root u-boot-2009.03/board/modnet50/CVS/Root
--- u-boot-2009.03_orig/board/modnet50/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/modnet50/CVS/Root      2009-03-25 15:24:41.962757400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/motionpro/CVS/Entries u-boot-2009.03/board/motionpro/CVS/Entries
--- u-boot-2009.03_orig/board/motionpro/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/motionpro/CVS/Entries  2009-03-25 15:57:33.840688600 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/motionpro.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/motionpro/CVS/Entries.Extra u-boot-2009.03/board/motionpro/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/motionpro/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/motionpro/CVS/Entries.Extra    2009-03-25 15:57:33.840688600 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019703/
+/config.mk///1238019703/
+/motionpro.c///1238019703/
diff -Naur u-boot-2009.03_orig/board/motionpro/CVS/Entries.Extra.Old u-boot-2009.03/board/motionpro/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/motionpro/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/motionpro/CVS/Entries.Extra.Old        2009-03-25 15:24:42.000000000 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019703/
+/config.mk///1238019703/
+/motionpro.c///1238019703/
diff -Naur u-boot-2009.03_orig/board/motionpro/CVS/Entries.Old u-boot-2009.03/board/motionpro/CVS/Entries.Old
--- u-boot-2009.03_orig/board/motionpro/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/motionpro/CVS/Entries.Old      2009-03-25 15:24:42.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/motionpro.c/1.1.1.1/Wed Mar 25 22:21:43 2009//
+D
diff -Naur u-boot-2009.03_orig/board/motionpro/CVS/Repository u-boot-2009.03/board/motionpro/CVS/Repository
--- u-boot-2009.03_orig/board/motionpro/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/motionpro/CVS/Repository       2009-03-25 15:24:42.087755800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/motionpro
diff -Naur u-boot-2009.03_orig/board/motionpro/CVS/Root u-boot-2009.03/board/motionpro/CVS/Root
--- u-boot-2009.03_orig/board/motionpro/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/motionpro/CVS/Root     2009-03-25 15:24:42.087755800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/mousse/CVS/Entries u-boot-2009.03/board/mousse/CVS/Entries
--- u-boot-2009.03_orig/board/mousse/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mousse/CVS/Entries     2009-03-25 15:57:33.996937600 -0700
@@ -0,0 +1,14 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/m48t59y.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/m48t59y.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mousse.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mousse.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.ram/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.rom/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/mousse/CVS/Entries.Extra u-boot-2009.03/board/mousse/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/mousse/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mousse/CVS/Entries.Extra       2009-03-25 15:57:33.996937600 -0700
@@ -0,0 +1,13 @@
+/Makefile///1238019703/
+/README///1238019703/
+/config.mk///1238019703/
+/flash.c///1238019703/
+/flash.h///1238019703/
+/m48t59y.c///1238019703/
+/m48t59y.h///1238019703/
+/mousse.c///1238019703/
+/mousse.h///1238019703/
+/pci.c///1238019703/
+/u-boot.lds///1238019703/
+/u-boot.lds.ram///1238019703/
+/u-boot.lds.rom///1238019703/
diff -Naur u-boot-2009.03_orig/board/mousse/CVS/Entries.Extra.Old u-boot-2009.03/board/mousse/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/mousse/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mousse/CVS/Entries.Extra.Old   2009-03-25 15:24:42.000000000 -0700
@@ -0,0 +1,13 @@
+/Makefile///1238019703/
+/README///1238019703/
+/config.mk///1238019703/
+/flash.c///1238019703/
+/flash.h///1238019703/
+/m48t59y.c///1238019703/
+/m48t59y.h///1238019703/
+/mousse.c///1238019703/
+/mousse.h///1238019703/
+/pci.c///1238019703/
+/u-boot.lds///1238019703/
+/u-boot.lds.ram///1238019703/
+/u-boot.lds.rom///1238019703/
diff -Naur u-boot-2009.03_orig/board/mousse/CVS/Entries.Old u-boot-2009.03/board/mousse/CVS/Entries.Old
--- u-boot-2009.03_orig/board/mousse/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mousse/CVS/Entries.Old 2009-03-25 15:24:42.000000000 -0700
@@ -0,0 +1,14 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/README/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/flash.h/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/m48t59y.c/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/m48t59y.h/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/mousse.c/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/mousse.h/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/pci.c/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/u-boot.lds.ram/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/u-boot.lds.rom/1.1.1.1/Wed Mar 25 22:21:43 2009//
+D
diff -Naur u-boot-2009.03_orig/board/mousse/CVS/Repository u-boot-2009.03/board/mousse/CVS/Repository
--- u-boot-2009.03_orig/board/mousse/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mousse/CVS/Repository  2009-03-25 15:24:42.165879800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/mousse
diff -Naur u-boot-2009.03_orig/board/mousse/CVS/Root u-boot-2009.03/board/mousse/CVS/Root
--- u-boot-2009.03_orig/board/mousse/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mousse/CVS/Root        2009-03-25 15:24:42.165879800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/mp2usb/CVS/Entries u-boot-2009.03/board/mp2usb/CVS/Entries
--- u-boot-2009.03_orig/board/mp2usb/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mp2usb/CVS/Entries     2009-03-25 15:57:34.137561700 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mp2usb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/mp2usb/CVS/Entries.Extra u-boot-2009.03/board/mp2usb/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/mp2usb/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mp2usb/CVS/Entries.Extra       2009-03-25 15:57:34.137561700 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019704/
+/config.mk///1238019703/
+/flash.c///1238019704/
+/mp2usb.c///1238019704/
+/u-boot.lds///1238019704/
diff -Naur u-boot-2009.03_orig/board/mp2usb/CVS/Entries.Extra.Old u-boot-2009.03/board/mp2usb/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/mp2usb/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mp2usb/CVS/Entries.Extra.Old   2009-03-25 15:24:42.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019704/
+/config.mk///1238019703/
+/flash.c///1238019704/
+/mp2usb.c///1238019704/
+/u-boot.lds///1238019704/
diff -Naur u-boot-2009.03_orig/board/mp2usb/CVS/Entries.Old u-boot-2009.03/board/mp2usb/CVS/Entries.Old
--- u-boot-2009.03_orig/board/mp2usb/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mp2usb/CVS/Entries.Old 2009-03-25 15:24:42.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:43 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/mp2usb.c/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:44 2009//
+D
diff -Naur u-boot-2009.03_orig/board/mp2usb/CVS/Repository u-boot-2009.03/board/mp2usb/CVS/Repository
--- u-boot-2009.03_orig/board/mp2usb/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mp2usb/CVS/Repository  2009-03-25 15:24:42.384627000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/mp2usb
diff -Naur u-boot-2009.03_orig/board/mp2usb/CVS/Root u-boot-2009.03/board/mp2usb/CVS/Root
--- u-boot-2009.03_orig/board/mp2usb/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mp2usb/CVS/Root        2009-03-25 15:24:42.384627000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/mpc8540eval/CVS/Entries u-boot-2009.03/board/mpc8540eval/CVS/Entries
--- u-boot-2009.03_orig/board/mpc8540eval/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mpc8540eval/CVS/Entries        2009-03-25 15:57:34.278185800 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ddr.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/law.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc8540eval.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tlb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/mpc8540eval/CVS/Entries.Extra u-boot-2009.03/board/mpc8540eval/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/mpc8540eval/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mpc8540eval/CVS/Entries.Extra  2009-03-25 15:57:34.278185800 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019704/
+/config.mk///1238019704/
+/ddr.c///1238019704/
+/flash.c///1238019704/
+/law.c///1238019704/
+/mpc8540eval.c///1238019704/
+/tlb.c///1238019704/
+/u-boot.lds///1238019704/
diff -Naur u-boot-2009.03_orig/board/mpc8540eval/CVS/Entries.Extra.Old u-boot-2009.03/board/mpc8540eval/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/mpc8540eval/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mpc8540eval/CVS/Entries.Extra.Old      2009-03-25 15:24:42.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019704/
+/config.mk///1238019704/
+/ddr.c///1238019704/
+/flash.c///1238019704/
+/law.c///1238019704/
+/mpc8540eval.c///1238019704/
+/tlb.c///1238019704/
+/u-boot.lds///1238019704/
diff -Naur u-boot-2009.03_orig/board/mpc8540eval/CVS/Entries.Old u-boot-2009.03/board/mpc8540eval/CVS/Entries.Old
--- u-boot-2009.03_orig/board/mpc8540eval/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mpc8540eval/CVS/Entries.Old    2009-03-25 15:24:42.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/ddr.c/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/law.c/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/mpc8540eval.c/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/tlb.c/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:44 2009//
+D
diff -Naur u-boot-2009.03_orig/board/mpc8540eval/CVS/Repository u-boot-2009.03/board/mpc8540eval/CVS/Repository
--- u-boot-2009.03_orig/board/mpc8540eval/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mpc8540eval/CVS/Repository     2009-03-25 15:24:42.603374200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/mpc8540eval
diff -Naur u-boot-2009.03_orig/board/mpc8540eval/CVS/Root u-boot-2009.03/board/mpc8540eval/CVS/Root
--- u-boot-2009.03_orig/board/mpc8540eval/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mpc8540eval/CVS/Root   2009-03-25 15:24:42.603374200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/mpl/CVS/Entries u-boot-2009.03/board/mpl/CVS/Entries
--- u-boot-2009.03_orig/board/mpl/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mpl/CVS/Entries        2009-03-25 15:24:43.790859000 -0700
@@ -0,0 +1,5 @@
+D/common////
+D/mip405////
+D/pati////
+D/pip405////
+D/vcma9////
diff -Naur u-boot-2009.03_orig/board/mpl/CVS/Entries.Extra u-boot-2009.03/board/mpl/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/mpl/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mpl/CVS/Entries.Extra  2009-03-25 15:24:43.790859000 -0700
@@ -0,0 +1,5 @@
+D/common////
+D/mip405////
+D/pati////
+D/pip405////
+D/vcma9////
diff -Naur u-boot-2009.03_orig/board/mpl/CVS/Repository u-boot-2009.03/board/mpl/CVS/Repository
--- u-boot-2009.03_orig/board/mpl/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mpl/CVS/Repository     2009-03-25 15:24:42.743997400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/mpl
diff -Naur u-boot-2009.03_orig/board/mpl/CVS/Root u-boot-2009.03/board/mpl/CVS/Root
--- u-boot-2009.03_orig/board/mpl/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mpl/CVS/Root   2009-03-25 15:24:42.743997400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/mpl/common/CVS/Entries u-boot-2009.03/board/mpl/common/CVS/Entries
--- u-boot-2009.03_orig/board/mpl/common/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mpl/common/CVS/Entries 2009-03-25 15:57:34.434434800 -0700
@@ -0,0 +1,14 @@
+/common_util.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/common_util.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/isa.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/isa.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/kbd.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/kbd.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/memtst.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci_parts.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/piix4_pci.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usb_uhci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usb_uhci.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/mpl/common/CVS/Entries.Extra u-boot-2009.03/board/mpl/common/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/mpl/common/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mpl/common/CVS/Entries.Extra   2009-03-25 15:57:34.434434800 -0700
@@ -0,0 +1,13 @@
+/common_util.c///1238019704/
+/common_util.h///1238019704/
+/flash.c///1238019704/
+/isa.c///1238019704/
+/isa.h///1238019704/
+/kbd.c///1238019704/
+/kbd.h///1238019704/
+/memtst.c///1238019704/
+/pci.c///1238019704/
+/pci_parts.h///1238019704/
+/piix4_pci.h///1238019704/
+/usb_uhci.c///1238019704/
+/usb_uhci.h///1238019704/
diff -Naur u-boot-2009.03_orig/board/mpl/common/CVS/Entries.Extra.Old u-boot-2009.03/board/mpl/common/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/mpl/common/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mpl/common/CVS/Entries.Extra.Old       2009-03-25 15:24:42.000000000 -0700
@@ -0,0 +1,13 @@
+/common_util.c///1238019704/
+/common_util.h///1238019704/
+/flash.c///1238019704/
+/isa.c///1238019704/
+/isa.h///1238019704/
+/kbd.c///1238019704/
+/kbd.h///1238019704/
+/memtst.c///1238019704/
+/pci.c///1238019704/
+/pci_parts.h///1238019704/
+/piix4_pci.h///1238019704/
+/usb_uhci.c///1238019704/
+/usb_uhci.h///1238019704/
diff -Naur u-boot-2009.03_orig/board/mpl/common/CVS/Entries.Old u-boot-2009.03/board/mpl/common/CVS/Entries.Old
--- u-boot-2009.03_orig/board/mpl/common/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mpl/common/CVS/Entries.Old     2009-03-25 15:24:42.000000000 -0700
@@ -0,0 +1,14 @@
+/common_util.c/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/common_util.h/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/isa.c/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/isa.h/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/kbd.c/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/kbd.h/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/memtst.c/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/pci.c/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/pci_parts.h/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/piix4_pci.h/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/usb_uhci.c/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/usb_uhci.h/1.1.1.1/Wed Mar 25 22:21:44 2009//
+D
diff -Naur u-boot-2009.03_orig/board/mpl/common/CVS/Repository u-boot-2009.03/board/mpl/common/CVS/Repository
--- u-boot-2009.03_orig/board/mpl/common/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mpl/common/CVS/Repository      2009-03-25 15:24:42.775247000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/mpl/common
diff -Naur u-boot-2009.03_orig/board/mpl/common/CVS/Root u-boot-2009.03/board/mpl/common/CVS/Root
--- u-boot-2009.03_orig/board/mpl/common/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mpl/common/CVS/Root    2009-03-25 15:24:42.759622200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/mpl/mip405/CVS/Entries u-boot-2009.03/board/mpl/mip405/CVS/Entries
--- u-boot-2009.03_orig/board/mpl/mip405/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mpl/mip405/CVS/Entries 2009-03-25 15:57:34.543809100 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_mip405.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mip405.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mip405.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/mpl/mip405/CVS/Entries.Extra u-boot-2009.03/board/mpl/mip405/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/mpl/mip405/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mpl/mip405/CVS/Entries.Extra   2009-03-25 15:57:34.543809100 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019704/
+/cmd_mip405.c///1238019704/
+/config.mk///1238019704/
+/init.S///1238019704/
+/mip405.c///1238019704/
+/mip405.h///1238019704/
+/u-boot.lds///1238019704/
diff -Naur u-boot-2009.03_orig/board/mpl/mip405/CVS/Entries.Extra.Old u-boot-2009.03/board/mpl/mip405/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/mpl/mip405/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mpl/mip405/CVS/Entries.Extra.Old       2009-03-25 15:24:43.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019704/
+/cmd_mip405.c///1238019704/
+/config.mk///1238019704/
+/init.S///1238019704/
+/mip405.c///1238019704/
+/mip405.h///1238019704/
+/u-boot.lds///1238019704/
diff -Naur u-boot-2009.03_orig/board/mpl/mip405/CVS/Entries.Old u-boot-2009.03/board/mpl/mip405/CVS/Entries.Old
--- u-boot-2009.03_orig/board/mpl/mip405/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mpl/mip405/CVS/Entries.Old     2009-03-25 15:24:43.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/cmd_mip405.c/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/init.S/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/mip405.c/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/mip405.h/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:44 2009//
+D
diff -Naur u-boot-2009.03_orig/board/mpl/mip405/CVS/Repository u-boot-2009.03/board/mpl/mip405/CVS/Repository
--- u-boot-2009.03_orig/board/mpl/mip405/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mpl/mip405/CVS/Repository      2009-03-25 15:24:42.962744600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/mpl/mip405
diff -Naur u-boot-2009.03_orig/board/mpl/mip405/CVS/Root u-boot-2009.03/board/mpl/mip405/CVS/Root
--- u-boot-2009.03_orig/board/mpl/mip405/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mpl/mip405/CVS/Root    2009-03-25 15:24:42.962744600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/mpl/pati/CVS/Entries u-boot-2009.03/board/mpl/pati/CVS/Entries
--- u-boot-2009.03_orig/board/mpl/pati/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mpl/pati/CVS/Entries   2009-03-25 15:57:34.653183400 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_pati.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pati.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pati.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci_eeprom.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/plx9056.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/mpl/pati/CVS/Entries.Extra u-boot-2009.03/board/mpl/pati/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/mpl/pati/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mpl/pati/CVS/Entries.Extra     2009-03-25 15:57:34.668808300 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019704/
+/cmd_pati.c///1238019704/
+/config.mk///1238019704/
+/pati.c///1238019704/
+/pati.h///1238019704/
+/pci_eeprom.h///1238019704/
+/plx9056.h///1238019704/
diff -Naur u-boot-2009.03_orig/board/mpl/pati/CVS/Entries.Extra.Old u-boot-2009.03/board/mpl/pati/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/mpl/pati/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mpl/pati/CVS/Entries.Extra.Old 2009-03-25 15:24:43.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019704/
+/cmd_pati.c///1238019704/
+/config.mk///1238019704/
+/pati.c///1238019704/
+/pati.h///1238019704/
+/pci_eeprom.h///1238019704/
+/plx9056.h///1238019704/
diff -Naur u-boot-2009.03_orig/board/mpl/pati/CVS/Entries.Old u-boot-2009.03/board/mpl/pati/CVS/Entries.Old
--- u-boot-2009.03_orig/board/mpl/pati/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mpl/pati/CVS/Entries.Old       2009-03-25 15:24:43.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/cmd_pati.c/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/pati.c/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/pati.h/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/pci_eeprom.h/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/plx9056.h/1.1.1.1/Wed Mar 25 22:21:44 2009//
+D
diff -Naur u-boot-2009.03_orig/board/mpl/pati/CVS/Repository u-boot-2009.03/board/mpl/pati/CVS/Repository
--- u-boot-2009.03_orig/board/mpl/pati/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mpl/pati/CVS/Repository        2009-03-25 15:24:43.103367800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/mpl/pati
diff -Naur u-boot-2009.03_orig/board/mpl/pati/CVS/Root u-boot-2009.03/board/mpl/pati/CVS/Root
--- u-boot-2009.03_orig/board/mpl/pati/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mpl/pati/CVS/Root      2009-03-25 15:24:43.103367800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/mpl/pip405/CVS/Entries u-boot-2009.03/board/mpl/pip405/CVS/Entries
--- u-boot-2009.03_orig/board/mpl/pip405/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mpl/pip405/CVS/Entries 2009-03-25 15:57:34.778182600 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_pip405.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pip405.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pip405.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.debug/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/mpl/pip405/CVS/Entries.Extra u-boot-2009.03/board/mpl/pip405/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/mpl/pip405/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mpl/pip405/CVS/Entries.Extra   2009-03-25 15:57:34.778182600 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019704/
+/cmd_pip405.c///1238019704/
+/config.mk///1238019704/
+/init.S///1238019704/
+/pip405.c///1238019704/
+/pip405.h///1238019704/
+/u-boot.lds///1238019704/
+/u-boot.lds.debug///1238019704/
diff -Naur u-boot-2009.03_orig/board/mpl/pip405/CVS/Entries.Extra.Old u-boot-2009.03/board/mpl/pip405/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/mpl/pip405/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mpl/pip405/CVS/Entries.Extra.Old       2009-03-25 15:24:43.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019704/
+/cmd_pip405.c///1238019704/
+/config.mk///1238019704/
+/init.S///1238019704/
+/pip405.c///1238019704/
+/pip405.h///1238019704/
+/u-boot.lds///1238019704/
+/u-boot.lds.debug///1238019704/
diff -Naur u-boot-2009.03_orig/board/mpl/pip405/CVS/Entries.Old u-boot-2009.03/board/mpl/pip405/CVS/Entries.Old
--- u-boot-2009.03_orig/board/mpl/pip405/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mpl/pip405/CVS/Entries.Old     2009-03-25 15:24:43.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/cmd_pip405.c/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/init.S/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/pip405.c/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/pip405.h/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/u-boot.lds.debug/1.1.1.1/Wed Mar 25 22:21:44 2009//
+D
diff -Naur u-boot-2009.03_orig/board/mpl/pip405/CVS/Repository u-boot-2009.03/board/mpl/pip405/CVS/Repository
--- u-boot-2009.03_orig/board/mpl/pip405/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mpl/pip405/CVS/Repository      2009-03-25 15:24:43.259615800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/mpl/pip405
diff -Naur u-boot-2009.03_orig/board/mpl/pip405/CVS/Root u-boot-2009.03/board/mpl/pip405/CVS/Root
--- u-boot-2009.03_orig/board/mpl/pip405/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mpl/pip405/CVS/Root    2009-03-25 15:24:43.259615800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/mpl/vcma9/CVS/Entries u-boot-2009.03/board/mpl/vcma9/CVS/Entries
--- u-boot-2009.03_orig/board/mpl/vcma9/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mpl/vcma9/CVS/Entries  2009-03-25 15:57:34.887556900 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_vcma9.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/vcma9.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/vcma9.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/mpl/vcma9/CVS/Entries.Extra u-boot-2009.03/board/mpl/vcma9/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/mpl/vcma9/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mpl/vcma9/CVS/Entries.Extra    2009-03-25 15:57:34.887556900 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019704/
+/cmd_vcma9.c///1238019704/
+/config.mk///1238019704/
+/flash.c///1238019704/
+/lowlevel_init.S///1238019704/
+/u-boot.lds///1238019704/
+/vcma9.c///1238019704/
+/vcma9.h///1238019704/
diff -Naur u-boot-2009.03_orig/board/mpl/vcma9/CVS/Entries.Extra.Old u-boot-2009.03/board/mpl/vcma9/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/mpl/vcma9/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mpl/vcma9/CVS/Entries.Extra.Old        2009-03-25 15:24:43.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019704/
+/cmd_vcma9.c///1238019704/
+/config.mk///1238019704/
+/flash.c///1238019704/
+/lowlevel_init.S///1238019704/
+/u-boot.lds///1238019704/
+/vcma9.c///1238019704/
+/vcma9.h///1238019704/
diff -Naur u-boot-2009.03_orig/board/mpl/vcma9/CVS/Entries.Old u-boot-2009.03/board/mpl/vcma9/CVS/Entries.Old
--- u-boot-2009.03_orig/board/mpl/vcma9/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mpl/vcma9/CVS/Entries.Old      2009-03-25 15:24:43.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/cmd_vcma9.c/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/vcma9.c/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/vcma9.h/1.1.1.1/Wed Mar 25 22:21:44 2009//
+D
diff -Naur u-boot-2009.03_orig/board/mpl/vcma9/CVS/Repository u-boot-2009.03/board/mpl/vcma9/CVS/Repository
--- u-boot-2009.03_orig/board/mpl/vcma9/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mpl/vcma9/CVS/Repository       2009-03-25 15:24:43.665860600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/mpl/vcma9
diff -Naur u-boot-2009.03_orig/board/mpl/vcma9/CVS/Root u-boot-2009.03/board/mpl/vcma9/CVS/Root
--- u-boot-2009.03_orig/board/mpl/vcma9/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mpl/vcma9/CVS/Root     2009-03-25 15:24:43.650235800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/mpr2/CVS/Entries u-boot-2009.03/board/mpr2/CVS/Entries
--- u-boot-2009.03_orig/board/mpr2/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mpr2/CVS/Entries       2009-03-25 15:57:34.981306300 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpr2.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/mpr2/CVS/Entries.Extra u-boot-2009.03/board/mpr2/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/mpr2/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mpr2/CVS/Entries.Extra 2009-03-25 15:57:34.981306300 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019704/
+/config.mk///1238019704/
+/lowlevel_init.S///1238019704/
+/mpr2.c///1238019704/
+/u-boot.lds///1238019704/
diff -Naur u-boot-2009.03_orig/board/mpr2/CVS/Entries.Extra.Old u-boot-2009.03/board/mpr2/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/mpr2/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mpr2/CVS/Entries.Extra.Old     2009-03-25 15:24:43.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019704/
+/config.mk///1238019704/
+/lowlevel_init.S///1238019704/
+/mpr2.c///1238019704/
+/u-boot.lds///1238019704/
diff -Naur u-boot-2009.03_orig/board/mpr2/CVS/Entries.Old u-boot-2009.03/board/mpr2/CVS/Entries.Old
--- u-boot-2009.03_orig/board/mpr2/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mpr2/CVS/Entries.Old   2009-03-25 15:24:43.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/mpr2.c/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:44 2009//
+D
diff -Naur u-boot-2009.03_orig/board/mpr2/CVS/Repository u-boot-2009.03/board/mpr2/CVS/Repository
--- u-boot-2009.03_orig/board/mpr2/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mpr2/CVS/Repository    2009-03-25 15:24:43.837733400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/mpr2
diff -Naur u-boot-2009.03_orig/board/mpr2/CVS/Root u-boot-2009.03/board/mpr2/CVS/Root
--- u-boot-2009.03_orig/board/mpr2/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mpr2/CVS/Root  2009-03-25 15:24:43.822108600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/ms7720se/CVS/Entries u-boot-2009.03/board/ms7720se/CVS/Entries
--- u-boot-2009.03_orig/board/ms7720se/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ms7720se/CVS/Entries   2009-03-25 15:57:35.106305500 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ms7720se.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/ms7720se/CVS/Entries.Extra u-boot-2009.03/board/ms7720se/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/ms7720se/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ms7720se/CVS/Entries.Extra     2009-03-25 15:57:35.106305500 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019704/
+/config.mk///1238019704/
+/lowlevel_init.S///1238019704/
+/ms7720se.c///1238019704/
+/u-boot.lds///1238019704/
diff -Naur u-boot-2009.03_orig/board/ms7720se/CVS/Entries.Extra.Old u-boot-2009.03/board/ms7720se/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/ms7720se/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ms7720se/CVS/Entries.Extra.Old 2009-03-25 15:24:44.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019704/
+/config.mk///1238019704/
+/lowlevel_init.S///1238019704/
+/ms7720se.c///1238019704/
+/u-boot.lds///1238019704/
diff -Naur u-boot-2009.03_orig/board/ms7720se/CVS/Entries.Old u-boot-2009.03/board/ms7720se/CVS/Entries.Old
--- u-boot-2009.03_orig/board/ms7720se/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ms7720se/CVS/Entries.Old       2009-03-25 15:24:44.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/ms7720se.c/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:44 2009//
+D
diff -Naur u-boot-2009.03_orig/board/ms7720se/CVS/Repository u-boot-2009.03/board/ms7720se/CVS/Repository
--- u-boot-2009.03_orig/board/ms7720se/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ms7720se/CVS/Repository        2009-03-25 15:24:43.947107000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/ms7720se
diff -Naur u-boot-2009.03_orig/board/ms7720se/CVS/Root u-boot-2009.03/board/ms7720se/CVS/Root
--- u-boot-2009.03_orig/board/ms7720se/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ms7720se/CVS/Root      2009-03-25 15:24:43.947107000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/ms7722se/CVS/Entries u-boot-2009.03/board/ms7722se/CVS/Entries
--- u-boot-2009.03_orig/board/ms7722se/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ms7722se/CVS/Entries   2009-03-25 15:57:35.262554500 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ms7722se.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/ms7722se/CVS/Entries.Extra u-boot-2009.03/board/ms7722se/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/ms7722se/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ms7722se/CVS/Entries.Extra     2009-03-25 15:57:35.262554500 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019704/
+/config.mk///1238019704/
+/lowlevel_init.S///1238019704/
+/ms7722se.c///1238019704/
+/u-boot.lds///1238019704/
diff -Naur u-boot-2009.03_orig/board/ms7722se/CVS/Entries.Extra.Old u-boot-2009.03/board/ms7722se/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/ms7722se/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ms7722se/CVS/Entries.Extra.Old 2009-03-25 15:24:44.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019704/
+/config.mk///1238019704/
+/lowlevel_init.S///1238019704/
+/ms7722se.c///1238019704/
+/u-boot.lds///1238019704/
diff -Naur u-boot-2009.03_orig/board/ms7722se/CVS/Entries.Old u-boot-2009.03/board/ms7722se/CVS/Entries.Old
--- u-boot-2009.03_orig/board/ms7722se/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ms7722se/CVS/Entries.Old       2009-03-25 15:24:44.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/ms7722se.c/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:44 2009//
+D
diff -Naur u-boot-2009.03_orig/board/ms7722se/CVS/Repository u-boot-2009.03/board/ms7722se/CVS/Repository
--- u-boot-2009.03_orig/board/ms7722se/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ms7722se/CVS/Repository        2009-03-25 15:24:44.056480600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/ms7722se
diff -Naur u-boot-2009.03_orig/board/ms7722se/CVS/Root u-boot-2009.03/board/ms7722se/CVS/Root
--- u-boot-2009.03_orig/board/ms7722se/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ms7722se/CVS/Root      2009-03-25 15:24:44.056480600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/ms7750se/CVS/Entries u-boot-2009.03/board/ms7750se/CVS/Entries
--- u-boot-2009.03_orig/board/ms7750se/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ms7750se/CVS/Entries   2009-03-25 15:57:35.340679000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ms7750se.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/ms7750se/CVS/Entries.Extra u-boot-2009.03/board/ms7750se/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/ms7750se/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ms7750se/CVS/Entries.Extra     2009-03-25 15:57:35.340679000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019704/
+/config.mk///1238019704/
+/lowlevel_init.S///1238019704/
+/ms7750se.c///1238019704/
+/u-boot.lds///1238019704/
diff -Naur u-boot-2009.03_orig/board/ms7750se/CVS/Entries.Extra.Old u-boot-2009.03/board/ms7750se/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/ms7750se/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ms7750se/CVS/Entries.Extra.Old 2009-03-25 15:24:44.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019704/
+/config.mk///1238019704/
+/lowlevel_init.S///1238019704/
+/ms7750se.c///1238019704/
+/u-boot.lds///1238019704/
diff -Naur u-boot-2009.03_orig/board/ms7750se/CVS/Entries.Old u-boot-2009.03/board/ms7750se/CVS/Entries.Old
--- u-boot-2009.03_orig/board/ms7750se/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ms7750se/CVS/Entries.Old       2009-03-25 15:24:44.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/ms7750se.c/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:44 2009//
+D
diff -Naur u-boot-2009.03_orig/board/ms7750se/CVS/Repository u-boot-2009.03/board/ms7750se/CVS/Repository
--- u-boot-2009.03_orig/board/ms7750se/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ms7750se/CVS/Repository        2009-03-25 15:24:44.181479000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/ms7750se
diff -Naur u-boot-2009.03_orig/board/ms7750se/CVS/Root u-boot-2009.03/board/ms7750se/CVS/Root
--- u-boot-2009.03_orig/board/ms7750se/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ms7750se/CVS/Root      2009-03-25 15:24:44.165854200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/muas3001/CVS/Entries u-boot-2009.03/board/muas3001/CVS/Entries
--- u-boot-2009.03_orig/board/muas3001/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/muas3001/CVS/Entries   2009-03-25 15:57:35.403178600 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/muas3001.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/muas3001/CVS/Entries.Extra u-boot-2009.03/board/muas3001/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/muas3001/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/muas3001/CVS/Entries.Extra     2009-03-25 15:57:35.403178600 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019704/
+/config.mk///1238019704/
+/muas3001.c///1238019704/
diff -Naur u-boot-2009.03_orig/board/muas3001/CVS/Entries.Extra.Old u-boot-2009.03/board/muas3001/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/muas3001/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/muas3001/CVS/Entries.Extra.Old 2009-03-25 15:24:44.000000000 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019704/
+/config.mk///1238019704/
+/muas3001.c///1238019704/
diff -Naur u-boot-2009.03_orig/board/muas3001/CVS/Entries.Old u-boot-2009.03/board/muas3001/CVS/Entries.Old
--- u-boot-2009.03_orig/board/muas3001/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/muas3001/CVS/Entries.Old       2009-03-25 15:24:44.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/muas3001.c/1.1.1.1/Wed Mar 25 22:21:44 2009//
+D
diff -Naur u-boot-2009.03_orig/board/muas3001/CVS/Repository u-boot-2009.03/board/muas3001/CVS/Repository
--- u-boot-2009.03_orig/board/muas3001/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/muas3001/CVS/Repository        2009-03-25 15:24:44.290852600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/muas3001
diff -Naur u-boot-2009.03_orig/board/muas3001/CVS/Root u-boot-2009.03/board/muas3001/CVS/Root
--- u-boot-2009.03_orig/board/muas3001/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/muas3001/CVS/Root      2009-03-25 15:24:44.290852600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/mucmc52/CVS/Entries u-boot-2009.03/board/mucmc52/CVS/Entries
--- u-boot-2009.03_orig/board/mucmc52/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mucmc52/CVS/Entries    2009-03-25 15:57:35.465678200 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mucmc52.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/mucmc52/CVS/Entries.Extra u-boot-2009.03/board/mucmc52/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/mucmc52/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mucmc52/CVS/Entries.Extra      2009-03-25 15:57:35.465678200 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019704/
+/config.mk///1238019704/
+/mucmc52.c///1238019704/
diff -Naur u-boot-2009.03_orig/board/mucmc52/CVS/Entries.Extra.Old u-boot-2009.03/board/mucmc52/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/mucmc52/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mucmc52/CVS/Entries.Extra.Old  2009-03-25 15:24:44.000000000 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019704/
+/config.mk///1238019704/
+/mucmc52.c///1238019704/
diff -Naur u-boot-2009.03_orig/board/mucmc52/CVS/Entries.Old u-boot-2009.03/board/mucmc52/CVS/Entries.Old
--- u-boot-2009.03_orig/board/mucmc52/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mucmc52/CVS/Entries.Old        2009-03-25 15:24:44.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/mucmc52.c/1.1.1.1/Wed Mar 25 22:21:44 2009//
+D
diff -Naur u-boot-2009.03_orig/board/mucmc52/CVS/Repository u-boot-2009.03/board/mucmc52/CVS/Repository
--- u-boot-2009.03_orig/board/mucmc52/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mucmc52/CVS/Repository 2009-03-25 15:24:44.493975000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/mucmc52
diff -Naur u-boot-2009.03_orig/board/mucmc52/CVS/Root u-boot-2009.03/board/mucmc52/CVS/Root
--- u-boot-2009.03_orig/board/mucmc52/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mucmc52/CVS/Root       2009-03-25 15:24:44.447100600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/munices/CVS/Entries u-boot-2009.03/board/munices/CVS/Entries
--- u-boot-2009.03_orig/board/munices/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/munices/CVS/Entries    2009-03-25 15:57:35.543802700 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mt48lc16m16a2-75.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/munices.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/munices/CVS/Entries.Extra u-boot-2009.03/board/munices/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/munices/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/munices/CVS/Entries.Extra      2009-03-25 15:57:35.543802700 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019704/
+/config.mk///1238019704/
+/mt48lc16m16a2-75.h///1238019704/
+/munices.c///1238019704/
+/u-boot.lds///1238019704/
diff -Naur u-boot-2009.03_orig/board/munices/CVS/Entries.Extra.Old u-boot-2009.03/board/munices/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/munices/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/munices/CVS/Entries.Extra.Old  2009-03-25 15:24:44.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019704/
+/config.mk///1238019704/
+/mt48lc16m16a2-75.h///1238019704/
+/munices.c///1238019704/
+/u-boot.lds///1238019704/
diff -Naur u-boot-2009.03_orig/board/munices/CVS/Entries.Old u-boot-2009.03/board/munices/CVS/Entries.Old
--- u-boot-2009.03_orig/board/munices/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/munices/CVS/Entries.Old        2009-03-25 15:24:44.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/mt48lc16m16a2-75.h/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/munices.c/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:44 2009//
+D
diff -Naur u-boot-2009.03_orig/board/munices/CVS/Repository u-boot-2009.03/board/munices/CVS/Repository
--- u-boot-2009.03_orig/board/munices/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/munices/CVS/Repository 2009-03-25 15:24:44.603348600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/munices
diff -Naur u-boot-2009.03_orig/board/munices/CVS/Root u-boot-2009.03/board/munices/CVS/Root
--- u-boot-2009.03_orig/board/munices/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/munices/CVS/Root       2009-03-25 15:24:44.603348600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/musenki/CVS/Entries u-boot-2009.03/board/musenki/CVS/Entries
--- u-boot-2009.03_orig/board/musenki/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/musenki/CVS/Entries    2009-03-25 15:57:35.621927200 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/musenki.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/musenki/CVS/Entries.Extra u-boot-2009.03/board/musenki/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/musenki/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/musenki/CVS/Entries.Extra      2009-03-25 15:57:35.621927200 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019705/
+/README///1238019705/
+/config.mk///1238019704/
+/flash.c///1238019705/
+/musenki.c///1238019705/
diff -Naur u-boot-2009.03_orig/board/musenki/CVS/Entries.Extra.Old u-boot-2009.03/board/musenki/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/musenki/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/musenki/CVS/Entries.Extra.Old  2009-03-25 15:24:44.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019705/
+/README///1238019705/
+/config.mk///1238019704/
+/flash.c///1238019705/
+/musenki.c///1238019705/
diff -Naur u-boot-2009.03_orig/board/musenki/CVS/Entries.Old u-boot-2009.03/board/musenki/CVS/Entries.Old
--- u-boot-2009.03_orig/board/musenki/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/musenki/CVS/Entries.Old        2009-03-25 15:24:44.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/README/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:44 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/musenki.c/1.1.1.1/Wed Mar 25 22:21:45 2009//
+D
diff -Naur u-boot-2009.03_orig/board/musenki/CVS/Repository u-boot-2009.03/board/musenki/CVS/Repository
--- u-boot-2009.03_orig/board/musenki/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/musenki/CVS/Repository 2009-03-25 15:24:44.728347000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/musenki
diff -Naur u-boot-2009.03_orig/board/musenki/CVS/Root u-boot-2009.03/board/musenki/CVS/Root
--- u-boot-2009.03_orig/board/musenki/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/musenki/CVS/Root       2009-03-25 15:24:44.728347000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/mvblue/CVS/Entries u-boot-2009.03/board/mvblue/CVS/Entries
--- u-boot-2009.03_orig/board/mvblue/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mvblue/CVS/Entries     2009-03-25 15:57:35.715676600 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mvblue.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/mvblue/CVS/Entries.Extra u-boot-2009.03/board/mvblue/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/mvblue/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mvblue/CVS/Entries.Extra       2009-03-25 15:57:35.715676600 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019705/
+/config.mk///1238019705/
+/flash.c///1238019705/
+/mvblue.c///1238019705/
diff -Naur u-boot-2009.03_orig/board/mvblue/CVS/Entries.Extra.Old u-boot-2009.03/board/mvblue/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/mvblue/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mvblue/CVS/Entries.Extra.Old   2009-03-25 15:24:44.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019705/
+/config.mk///1238019705/
+/flash.c///1238019705/
+/mvblue.c///1238019705/
diff -Naur u-boot-2009.03_orig/board/mvblue/CVS/Entries.Old u-boot-2009.03/board/mvblue/CVS/Entries.Old
--- u-boot-2009.03_orig/board/mvblue/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mvblue/CVS/Entries.Old 2009-03-25 15:24:44.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/mvblue.c/1.1.1.1/Wed Mar 25 22:21:45 2009//
+D
diff -Naur u-boot-2009.03_orig/board/mvblue/CVS/Repository u-boot-2009.03/board/mvblue/CVS/Repository
--- u-boot-2009.03_orig/board/mvblue/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mvblue/CVS/Repository  2009-03-25 15:24:44.853345400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/mvblue
diff -Naur u-boot-2009.03_orig/board/mvblue/CVS/Root u-boot-2009.03/board/mvblue/CVS/Root
--- u-boot-2009.03_orig/board/mvblue/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mvblue/CVS/Root        2009-03-25 15:24:44.837720600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/mx1ads/CVS/Entries u-boot-2009.03/board/mx1ads/CVS/Entries
--- u-boot-2009.03_orig/board/mx1ads/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mx1ads/CVS/Entries     2009-03-25 15:57:35.825050900 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mx1ads.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/syncflash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/mx1ads/CVS/Entries.Extra u-boot-2009.03/board/mx1ads/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/mx1ads/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mx1ads/CVS/Entries.Extra       2009-03-25 15:57:35.825050900 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019705/
+/config.mk///1238019705/
+/lowlevel_init.S///1238019705/
+/mx1ads.c///1238019705/
+/syncflash.c///1238019705/
+/u-boot.lds///1238019705/
diff -Naur u-boot-2009.03_orig/board/mx1ads/CVS/Entries.Extra.Old u-boot-2009.03/board/mx1ads/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/mx1ads/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mx1ads/CVS/Entries.Extra.Old   2009-03-25 15:24:45.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019705/
+/config.mk///1238019705/
+/lowlevel_init.S///1238019705/
+/mx1ads.c///1238019705/
+/syncflash.c///1238019705/
+/u-boot.lds///1238019705/
diff -Naur u-boot-2009.03_orig/board/mx1ads/CVS/Entries.Old u-boot-2009.03/board/mx1ads/CVS/Entries.Old
--- u-boot-2009.03_orig/board/mx1ads/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mx1ads/CVS/Entries.Old 2009-03-25 15:24:45.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/mx1ads.c/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/syncflash.c/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:45 2009//
+D
diff -Naur u-boot-2009.03_orig/board/mx1ads/CVS/Repository u-boot-2009.03/board/mx1ads/CVS/Repository
--- u-boot-2009.03_orig/board/mx1ads/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mx1ads/CVS/Repository  2009-03-25 15:24:44.947094200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/mx1ads
diff -Naur u-boot-2009.03_orig/board/mx1ads/CVS/Root u-boot-2009.03/board/mx1ads/CVS/Root
--- u-boot-2009.03_orig/board/mx1ads/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mx1ads/CVS/Root        2009-03-25 15:24:44.947094200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/mx1fs2/CVS/Entries u-boot-2009.03/board/mx1fs2/CVS/Entries
--- u-boot-2009.03_orig/board/mx1fs2/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mx1fs2/CVS/Entries     2009-03-25 15:57:35.918800300 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/intel.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mx1fs2.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/mx1fs2/CVS/Entries.Extra u-boot-2009.03/board/mx1fs2/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/mx1fs2/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mx1fs2/CVS/Entries.Extra       2009-03-25 15:57:35.934425200 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019705/
+/config.mk///1238019705/
+/flash.c///1238019705/
+/intel.h///1238019705/
+/lowlevel_init.S///1238019705/
+/mx1fs2.c///1238019705/
+/u-boot.lds///1238019705/
diff -Naur u-boot-2009.03_orig/board/mx1fs2/CVS/Entries.Extra.Old u-boot-2009.03/board/mx1fs2/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/mx1fs2/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mx1fs2/CVS/Entries.Extra.Old   2009-03-25 15:24:45.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019705/
+/config.mk///1238019705/
+/flash.c///1238019705/
+/intel.h///1238019705/
+/lowlevel_init.S///1238019705/
+/mx1fs2.c///1238019705/
+/u-boot.lds///1238019705/
diff -Naur u-boot-2009.03_orig/board/mx1fs2/CVS/Entries.Old u-boot-2009.03/board/mx1fs2/CVS/Entries.Old
--- u-boot-2009.03_orig/board/mx1fs2/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mx1fs2/CVS/Entries.Old 2009-03-25 15:24:45.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/intel.h/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/mx1fs2.c/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:45 2009//
+D
diff -Naur u-boot-2009.03_orig/board/mx1fs2/CVS/Repository u-boot-2009.03/board/mx1fs2/CVS/Repository
--- u-boot-2009.03_orig/board/mx1fs2/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mx1fs2/CVS/Repository  2009-03-25 15:24:45.087717400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/mx1fs2
diff -Naur u-boot-2009.03_orig/board/mx1fs2/CVS/Root u-boot-2009.03/board/mx1fs2/CVS/Root
--- u-boot-2009.03_orig/board/mx1fs2/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/mx1fs2/CVS/Root        2009-03-25 15:24:45.087717400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/nc650/CVS/Entries u-boot-2009.03/board/nc650/CVS/Entries
--- u-boot-2009.03_orig/board/nc650/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/nc650/CVS/Entries      2009-03-25 15:57:36.012549700 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nand.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nc650.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.debug/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/nc650/CVS/Entries.Extra u-boot-2009.03/board/nc650/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/nc650/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/nc650/CVS/Entries.Extra        2009-03-25 15:57:36.012549700 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019705/
+/config.mk///1238019705/
+/flash.c///1238019705/
+/nand.c///1238019705/
+/nc650.c///1238019705/
+/u-boot.lds///1238019705/
+/u-boot.lds.debug///1238019705/
diff -Naur u-boot-2009.03_orig/board/nc650/CVS/Entries.Extra.Old u-boot-2009.03/board/nc650/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/nc650/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/nc650/CVS/Entries.Extra.Old    2009-03-25 15:24:45.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019705/
+/config.mk///1238019705/
+/flash.c///1238019705/
+/nand.c///1238019705/
+/nc650.c///1238019705/
+/u-boot.lds///1238019705/
+/u-boot.lds.debug///1238019705/
diff -Naur u-boot-2009.03_orig/board/nc650/CVS/Entries.Old u-boot-2009.03/board/nc650/CVS/Entries.Old
--- u-boot-2009.03_orig/board/nc650/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/nc650/CVS/Entries.Old  2009-03-25 15:24:45.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/nand.c/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/nc650.c/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/u-boot.lds.debug/1.1.1.1/Wed Mar 25 22:21:45 2009//
+D
diff -Naur u-boot-2009.03_orig/board/nc650/CVS/Repository u-boot-2009.03/board/nc650/CVS/Repository
--- u-boot-2009.03_orig/board/nc650/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/nc650/CVS/Repository   2009-03-25 15:24:45.228340600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/nc650
diff -Naur u-boot-2009.03_orig/board/nc650/CVS/Root u-boot-2009.03/board/nc650/CVS/Root
--- u-boot-2009.03_orig/board/nc650/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/nc650/CVS/Root 2009-03-25 15:24:45.228340600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/netphone/CVS/Entries u-boot-2009.03/board/netphone/CVS/Entries
--- u-boot-2009.03_orig/board/netphone/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netphone/CVS/Entries   2009-03-25 15:57:36.293797900 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/netphone.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/phone_console.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.debug/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/netphone/CVS/Entries.Extra u-boot-2009.03/board/netphone/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/netphone/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netphone/CVS/Entries.Extra     2009-03-25 15:57:36.293797900 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019705/
+/config.mk///1238019705/
+/flash.c///1238019705/
+/netphone.c///1238019705/
+/phone_console.c///1238019705/
+/u-boot.lds///1238019705/
+/u-boot.lds.debug///1238019705/
diff -Naur u-boot-2009.03_orig/board/netphone/CVS/Entries.Extra.Old u-boot-2009.03/board/netphone/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/netphone/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netphone/CVS/Entries.Extra.Old 2009-03-25 15:24:45.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019705/
+/config.mk///1238019705/
+/flash.c///1238019705/
+/netphone.c///1238019705/
+/phone_console.c///1238019705/
+/u-boot.lds///1238019705/
+/u-boot.lds.debug///1238019705/
diff -Naur u-boot-2009.03_orig/board/netphone/CVS/Entries.Old u-boot-2009.03/board/netphone/CVS/Entries.Old
--- u-boot-2009.03_orig/board/netphone/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netphone/CVS/Entries.Old       2009-03-25 15:24:45.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/netphone.c/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/phone_console.c/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/u-boot.lds.debug/1.1.1.1/Wed Mar 25 22:21:45 2009//
+D
diff -Naur u-boot-2009.03_orig/board/netphone/CVS/Repository u-boot-2009.03/board/netphone/CVS/Repository
--- u-boot-2009.03_orig/board/netphone/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netphone/CVS/Repository        2009-03-25 15:24:45.368963800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/netphone
diff -Naur u-boot-2009.03_orig/board/netphone/CVS/Root u-boot-2009.03/board/netphone/CVS/Root
--- u-boot-2009.03_orig/board/netphone/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netphone/CVS/Root      2009-03-25 15:24:45.368963800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/netstal/CVS/Entries u-boot-2009.03/board/netstal/CVS/Entries
--- u-boot-2009.03_orig/board/netstal/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netstal/CVS/Entries    2009-03-25 15:24:46.040830200 -0700
@@ -0,0 +1,4 @@
+D/common////
+D/hcu4////
+D/hcu5////
+D/mcu25////
diff -Naur u-boot-2009.03_orig/board/netstal/CVS/Entries.Extra u-boot-2009.03/board/netstal/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/netstal/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netstal/CVS/Entries.Extra      2009-03-25 15:24:46.040830200 -0700
@@ -0,0 +1,4 @@
+D/common////
+D/hcu4////
+D/hcu5////
+D/mcu25////
diff -Naur u-boot-2009.03_orig/board/netstal/CVS/Repository u-boot-2009.03/board/netstal/CVS/Repository
--- u-boot-2009.03_orig/board/netstal/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netstal/CVS/Repository 2009-03-25 15:24:45.572086200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/netstal
diff -Naur u-boot-2009.03_orig/board/netstal/CVS/Root u-boot-2009.03/board/netstal/CVS/Root
--- u-boot-2009.03_orig/board/netstal/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netstal/CVS/Root       2009-03-25 15:24:45.572086200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/netstal/common/CVS/Entries u-boot-2009.03/board/netstal/common/CVS/Entries
--- u-boot-2009.03_orig/board/netstal/common/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netstal/common/CVS/Entries     2009-03-25 15:57:36.403172200 -0700
@@ -0,0 +1,4 @@
+/fixed_sdram.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nm.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nm_bsp.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/netstal/common/CVS/Entries.Extra u-boot-2009.03/board/netstal/common/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/netstal/common/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netstal/common/CVS/Entries.Extra       2009-03-25 15:57:36.403172200 -0700
@@ -0,0 +1,3 @@
+/fixed_sdram.c///1238019705/
+/nm.h///1238019705/
+/nm_bsp.c///1238019705/
diff -Naur u-boot-2009.03_orig/board/netstal/common/CVS/Entries.Extra.Old u-boot-2009.03/board/netstal/common/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/netstal/common/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netstal/common/CVS/Entries.Extra.Old   2009-03-25 15:24:45.000000000 -0700
@@ -0,0 +1,3 @@
+/fixed_sdram.c///1238019705/
+/nm.h///1238019705/
+/nm_bsp.c///1238019705/
diff -Naur u-boot-2009.03_orig/board/netstal/common/CVS/Entries.Old u-boot-2009.03/board/netstal/common/CVS/Entries.Old
--- u-boot-2009.03_orig/board/netstal/common/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netstal/common/CVS/Entries.Old 2009-03-25 15:24:45.000000000 -0700
@@ -0,0 +1,4 @@
+/fixed_sdram.c/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/nm.h/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/nm_bsp.c/1.1.1.1/Wed Mar 25 22:21:45 2009//
+D
diff -Naur u-boot-2009.03_orig/board/netstal/common/CVS/Repository u-boot-2009.03/board/netstal/common/CVS/Repository
--- u-boot-2009.03_orig/board/netstal/common/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netstal/common/CVS/Repository  2009-03-25 15:24:45.587711000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/netstal/common
diff -Naur u-boot-2009.03_orig/board/netstal/common/CVS/Root u-boot-2009.03/board/netstal/common/CVS/Root
--- u-boot-2009.03_orig/board/netstal/common/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netstal/common/CVS/Root        2009-03-25 15:24:45.587711000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/netstal/hcu4/CVS/Entries u-boot-2009.03/board/netstal/hcu4/CVS/Entries
--- u-boot-2009.03_orig/board/netstal/hcu4/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netstal/hcu4/CVS/Entries       2009-03-25 15:57:36.496921600 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.txt/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/hcu4.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/netstal/hcu4/CVS/Entries.Extra u-boot-2009.03/board/netstal/hcu4/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/netstal/hcu4/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netstal/hcu4/CVS/Entries.Extra 2009-03-25 15:57:36.496921600 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019705/
+/README.txt///1238019705/
+/config.mk///1238019705/
+/hcu4.c///1238019705/
+/u-boot.lds///1238019705/
diff -Naur u-boot-2009.03_orig/board/netstal/hcu4/CVS/Entries.Extra.Old u-boot-2009.03/board/netstal/hcu4/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/netstal/hcu4/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netstal/hcu4/CVS/Entries.Extra.Old     2009-03-25 15:24:45.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019705/
+/README.txt///1238019705/
+/config.mk///1238019705/
+/hcu4.c///1238019705/
+/u-boot.lds///1238019705/
diff -Naur u-boot-2009.03_orig/board/netstal/hcu4/CVS/Entries.Old u-boot-2009.03/board/netstal/hcu4/CVS/Entries.Old
--- u-boot-2009.03_orig/board/netstal/hcu4/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netstal/hcu4/CVS/Entries.Old   2009-03-25 15:24:45.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/README.txt/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/hcu4.c/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:45 2009//
+D
diff -Naur u-boot-2009.03_orig/board/netstal/hcu4/CVS/Repository u-boot-2009.03/board/netstal/hcu4/CVS/Repository
--- u-boot-2009.03_orig/board/netstal/hcu4/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netstal/hcu4/CVS/Repository    2009-03-25 15:24:45.712709400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/netstal/hcu4
diff -Naur u-boot-2009.03_orig/board/netstal/hcu4/CVS/Root u-boot-2009.03/board/netstal/hcu4/CVS/Root
--- u-boot-2009.03_orig/board/netstal/hcu4/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netstal/hcu4/CVS/Root  2009-03-25 15:24:45.697084600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/netstal/hcu5/CVS/Entries u-boot-2009.03/board/netstal/hcu5/CVS/Entries
--- u-boot-2009.03_orig/board/netstal/hcu5/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netstal/hcu5/CVS/Entries       2009-03-25 15:57:36.590671000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.txt/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/hcu5.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sdram.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/netstal/hcu5/CVS/Entries.Extra u-boot-2009.03/board/netstal/hcu5/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/netstal/hcu5/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netstal/hcu5/CVS/Entries.Extra 2009-03-25 15:57:36.590671000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019705/
+/README.txt///1238019705/
+/config.mk///1238019705/
+/hcu5.c///1238019705/
+/init.S///1238019705/
+/sdram.c///1238019705/
+/u-boot.lds///1238019705/
diff -Naur u-boot-2009.03_orig/board/netstal/hcu5/CVS/Entries.Extra.Old u-boot-2009.03/board/netstal/hcu5/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/netstal/hcu5/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netstal/hcu5/CVS/Entries.Extra.Old     2009-03-25 15:24:45.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019705/
+/README.txt///1238019705/
+/config.mk///1238019705/
+/hcu5.c///1238019705/
+/init.S///1238019705/
+/sdram.c///1238019705/
+/u-boot.lds///1238019705/
diff -Naur u-boot-2009.03_orig/board/netstal/hcu5/CVS/Entries.Old u-boot-2009.03/board/netstal/hcu5/CVS/Entries.Old
--- u-boot-2009.03_orig/board/netstal/hcu5/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netstal/hcu5/CVS/Entries.Old   2009-03-25 15:24:45.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/README.txt/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/hcu5.c/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/init.S/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/sdram.c/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:45 2009//
+D
diff -Naur u-boot-2009.03_orig/board/netstal/hcu5/CVS/Repository u-boot-2009.03/board/netstal/hcu5/CVS/Repository
--- u-boot-2009.03_orig/board/netstal/hcu5/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netstal/hcu5/CVS/Repository    2009-03-25 15:24:45.822083000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/netstal/hcu5
diff -Naur u-boot-2009.03_orig/board/netstal/hcu5/CVS/Root u-boot-2009.03/board/netstal/hcu5/CVS/Root
--- u-boot-2009.03_orig/board/netstal/hcu5/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netstal/hcu5/CVS/Root  2009-03-25 15:24:45.806458200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/netstal/mcu25/CVS/Entries u-boot-2009.03/board/netstal/mcu25/CVS/Entries
--- u-boot-2009.03_orig/board/netstal/mcu25/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netstal/mcu25/CVS/Entries      2009-03-25 15:57:36.668795500 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.txt/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mcu25.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/netstal/mcu25/CVS/Entries.Extra u-boot-2009.03/board/netstal/mcu25/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/netstal/mcu25/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netstal/mcu25/CVS/Entries.Extra        2009-03-25 15:57:36.668795500 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019705/
+/README.txt///1238019705/
+/config.mk///1238019705/
+/mcu25.c///1238019705/
+/u-boot.lds///1238019705/
diff -Naur u-boot-2009.03_orig/board/netstal/mcu25/CVS/Entries.Extra.Old u-boot-2009.03/board/netstal/mcu25/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/netstal/mcu25/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netstal/mcu25/CVS/Entries.Extra.Old    2009-03-25 15:24:45.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019705/
+/README.txt///1238019705/
+/config.mk///1238019705/
+/mcu25.c///1238019705/
+/u-boot.lds///1238019705/
diff -Naur u-boot-2009.03_orig/board/netstal/mcu25/CVS/Entries.Old u-boot-2009.03/board/netstal/mcu25/CVS/Entries.Old
--- u-boot-2009.03_orig/board/netstal/mcu25/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netstal/mcu25/CVS/Entries.Old  2009-03-25 15:24:45.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/README.txt/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/mcu25.c/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:45 2009//
+D
diff -Naur u-boot-2009.03_orig/board/netstal/mcu25/CVS/Repository u-boot-2009.03/board/netstal/mcu25/CVS/Repository
--- u-boot-2009.03_orig/board/netstal/mcu25/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netstal/mcu25/CVS/Repository   2009-03-25 15:24:45.947081400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/netstal/mcu25
diff -Naur u-boot-2009.03_orig/board/netstal/mcu25/CVS/Root u-boot-2009.03/board/netstal/mcu25/CVS/Root
--- u-boot-2009.03_orig/board/netstal/mcu25/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netstal/mcu25/CVS/Root 2009-03-25 15:24:45.947081400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/netstar/CVS/Entries u-boot-2009.03/board/netstar/CVS/Entries
--- u-boot-2009.03_orig/board/netstar/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netstar/CVS/Entries    2009-03-25 15:57:36.809419600 -0700
@@ -0,0 +1,14 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/crcek.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/crcek.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/crcit.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/eeprom.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/eeprom.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/eeprom_start.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nand.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/netstar.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/setup.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/netstar/CVS/Entries.Extra u-boot-2009.03/board/netstar/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/netstar/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netstar/CVS/Entries.Extra      2009-03-25 15:57:36.809419600 -0700
@@ -0,0 +1,13 @@
+/Makefile///1238019705/
+/config.mk///1238019705/
+/crcek.S///1238019705/
+/crcek.h///1238019705/
+/crcit.c///1238019705/
+/eeprom.c///1238019705/
+/eeprom.lds///1238019705/
+/eeprom_start.S///1238019705/
+/flash.c///1238019705/
+/nand.c///1238019705/
+/netstar.c///1238019705/
+/setup.S///1238019705/
+/u-boot.lds///1238019705/
diff -Naur u-boot-2009.03_orig/board/netstar/CVS/Entries.Extra.Old u-boot-2009.03/board/netstar/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/netstar/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netstar/CVS/Entries.Extra.Old  2009-03-25 15:24:46.000000000 -0700
@@ -0,0 +1,13 @@
+/Makefile///1238019705/
+/config.mk///1238019705/
+/crcek.S///1238019705/
+/crcek.h///1238019705/
+/crcit.c///1238019705/
+/eeprom.c///1238019705/
+/eeprom.lds///1238019705/
+/eeprom_start.S///1238019705/
+/flash.c///1238019705/
+/nand.c///1238019705/
+/netstar.c///1238019705/
+/setup.S///1238019705/
+/u-boot.lds///1238019705/
diff -Naur u-boot-2009.03_orig/board/netstar/CVS/Entries.Old u-boot-2009.03/board/netstar/CVS/Entries.Old
--- u-boot-2009.03_orig/board/netstar/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netstar/CVS/Entries.Old        2009-03-25 15:24:46.000000000 -0700
@@ -0,0 +1,14 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/crcek.S/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/crcek.h/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/crcit.c/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/eeprom.c/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/eeprom.lds/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/eeprom_start.S/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/nand.c/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/netstar.c/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/setup.S/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:45 2009//
+D
diff -Naur u-boot-2009.03_orig/board/netstar/CVS/Repository u-boot-2009.03/board/netstar/CVS/Repository
--- u-boot-2009.03_orig/board/netstar/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netstar/CVS/Repository 2009-03-25 15:24:46.087704600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/netstar
diff -Naur u-boot-2009.03_orig/board/netstar/CVS/Root u-boot-2009.03/board/netstar/CVS/Root
--- u-boot-2009.03_orig/board/netstar/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netstar/CVS/Root       2009-03-25 15:24:46.072079800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/netta/CVS/Entries u-boot-2009.03/board/netta/CVS/Entries
--- u-boot-2009.03_orig/board/netta/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netta/CVS/Entries      2009-03-25 15:57:36.934418800 -0700
@@ -0,0 +1,10 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/codec.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dsp.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/netta.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pcmcia.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.debug/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/netta/CVS/Entries.Extra u-boot-2009.03/board/netta/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/netta/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netta/CVS/Entries.Extra        2009-03-25 15:57:36.934418800 -0700
@@ -0,0 +1,9 @@
+/Makefile///1238019705/
+/codec.c///1238019705/
+/config.mk///1238019705/
+/dsp.c///1238019705/
+/flash.c///1238019705/
+/netta.c///1238019705/
+/pcmcia.c///1238019705/
+/u-boot.lds///1238019705/
+/u-boot.lds.debug///1238019705/
diff -Naur u-boot-2009.03_orig/board/netta/CVS/Entries.Extra.Old u-boot-2009.03/board/netta/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/netta/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netta/CVS/Entries.Extra.Old    2009-03-25 15:24:46.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile///1238019705/
+/codec.c///1238019705/
+/config.mk///1238019705/
+/dsp.c///1238019705/
+/flash.c///1238019705/
+/netta.c///1238019705/
+/pcmcia.c///1238019705/
+/u-boot.lds///1238019705/
+/u-boot.lds.debug///1238019705/
diff -Naur u-boot-2009.03_orig/board/netta/CVS/Entries.Old u-boot-2009.03/board/netta/CVS/Entries.Old
--- u-boot-2009.03_orig/board/netta/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netta/CVS/Entries.Old  2009-03-25 15:24:46.000000000 -0700
@@ -0,0 +1,10 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/codec.c/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/dsp.c/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/netta.c/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/pcmcia.c/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/u-boot.lds.debug/1.1.1.1/Wed Mar 25 22:21:45 2009//
+D
diff -Naur u-boot-2009.03_orig/board/netta/CVS/Repository u-boot-2009.03/board/netta/CVS/Repository
--- u-boot-2009.03_orig/board/netta/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netta/CVS/Repository   2009-03-25 15:24:46.259577400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/netta
diff -Naur u-boot-2009.03_orig/board/netta/CVS/Root u-boot-2009.03/board/netta/CVS/Root
--- u-boot-2009.03_orig/board/netta/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netta/CVS/Root 2009-03-25 15:24:46.259577400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/netta2/CVS/Entries u-boot-2009.03/board/netta2/CVS/Entries
--- u-boot-2009.03_orig/board/netta2/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netta2/CVS/Entries     2009-03-25 15:57:37.028168200 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/netta2.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.debug/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/netta2/CVS/Entries.Extra u-boot-2009.03/board/netta2/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/netta2/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netta2/CVS/Entries.Extra       2009-03-25 15:57:37.043793100 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019705/
+/config.mk///1238019705/
+/flash.c///1238019705/
+/netta2.c///1238019705/
+/u-boot.lds///1238019705/
+/u-boot.lds.debug///1238019705/
diff -Naur u-boot-2009.03_orig/board/netta2/CVS/Entries.Extra.Old u-boot-2009.03/board/netta2/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/netta2/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netta2/CVS/Entries.Extra.Old   2009-03-25 15:24:46.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019705/
+/config.mk///1238019705/
+/flash.c///1238019705/
+/netta2.c///1238019705/
+/u-boot.lds///1238019705/
+/u-boot.lds.debug///1238019705/
diff -Naur u-boot-2009.03_orig/board/netta2/CVS/Entries.Old u-boot-2009.03/board/netta2/CVS/Entries.Old
--- u-boot-2009.03_orig/board/netta2/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netta2/CVS/Entries.Old 2009-03-25 15:24:46.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/netta2.c/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/u-boot.lds.debug/1.1.1.1/Wed Mar 25 22:21:45 2009//
+D
diff -Naur u-boot-2009.03_orig/board/netta2/CVS/Repository u-boot-2009.03/board/netta2/CVS/Repository
--- u-boot-2009.03_orig/board/netta2/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netta2/CVS/Repository  2009-03-25 15:24:46.650197400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/netta2
diff -Naur u-boot-2009.03_orig/board/netta2/CVS/Root u-boot-2009.03/board/netta2/CVS/Root
--- u-boot-2009.03_orig/board/netta2/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netta2/CVS/Root        2009-03-25 15:24:46.634572600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/netvia/CVS/Entries u-boot-2009.03/board/netvia/CVS/Entries
--- u-boot-2009.03_orig/board/netvia/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netvia/CVS/Entries     2009-03-25 15:57:37.184417200 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/netvia.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.debug/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/netvia/CVS/Entries.Extra u-boot-2009.03/board/netvia/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/netvia/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netvia/CVS/Entries.Extra       2009-03-25 15:57:37.184417200 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019705/
+/config.mk///1238019705/
+/flash.c///1238019705/
+/netvia.c///1238019705/
+/u-boot.lds///1238019705/
+/u-boot.lds.debug///1238019705/
diff -Naur u-boot-2009.03_orig/board/netvia/CVS/Entries.Extra.Old u-boot-2009.03/board/netvia/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/netvia/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netvia/CVS/Entries.Extra.Old   2009-03-25 15:24:46.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019705/
+/config.mk///1238019705/
+/flash.c///1238019705/
+/netvia.c///1238019705/
+/u-boot.lds///1238019705/
+/u-boot.lds.debug///1238019705/
diff -Naur u-boot-2009.03_orig/board/netvia/CVS/Entries.Old u-boot-2009.03/board/netvia/CVS/Entries.Old
--- u-boot-2009.03_orig/board/netvia/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netvia/CVS/Entries.Old 2009-03-25 15:24:46.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/netvia.c/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/u-boot.lds.debug/1.1.1.1/Wed Mar 25 22:21:45 2009//
+D
diff -Naur u-boot-2009.03_orig/board/netvia/CVS/Repository u-boot-2009.03/board/netvia/CVS/Repository
--- u-boot-2009.03_orig/board/netvia/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netvia/CVS/Repository  2009-03-25 15:24:46.759571000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/netvia
diff -Naur u-boot-2009.03_orig/board/netvia/CVS/Root u-boot-2009.03/board/netvia/CVS/Root
--- u-boot-2009.03_orig/board/netvia/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/netvia/CVS/Root        2009-03-25 15:24:46.759571000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/ns9750dev/CVS/Entries u-boot-2009.03/board/ns9750dev/CVS/Entries
--- u-boot-2009.03_orig/board/ns9750dev/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ns9750dev/CVS/Entries  2009-03-31 14:47:06.680672800 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ns9750dev.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/led.c/1.1.1.1/Tue Mar 31 21:47:06 2009//T1.1.1.1
+D
diff -Naur u-boot-2009.03_orig/board/ns9750dev/CVS/Entries.Extra u-boot-2009.03/board/ns9750dev/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/ns9750dev/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ns9750dev/CVS/Entries.Extra    2009-03-31 14:47:06.680672800 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019705/
+/config.mk///1238019705/
+/flash.c///1238019705/
+/lowlevel_init.S///1238019705/
+/ns9750dev.c///1238019705/
+/u-boot.lds///1238019705/
+/led.c///1238019705/
diff -Naur u-boot-2009.03_orig/board/ns9750dev/CVS/Entries.Extra.Old u-boot-2009.03/board/ns9750dev/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/ns9750dev/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ns9750dev/CVS/Entries.Extra.Old        2009-03-25 17:51:38.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019705/
+/config.mk///1238019705/
+/flash.c///1238019705/
+/lowlevel_init.S///1238019705/
+/ns9750dev.c///1238019705/
+/u-boot.lds///1238019705/
+/led.c///1238028698/
diff -Naur u-boot-2009.03_orig/board/ns9750dev/CVS/Entries.Old u-boot-2009.03/board/ns9750dev/CVS/Entries.Old
--- u-boot-2009.03_orig/board/ns9750dev/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ns9750dev/CVS/Entries.Old      2009-03-25 17:51:38.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ns9750dev.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/led.c/1.2/Thu Mar 26 00:51:38 2009//
+D
diff -Naur u-boot-2009.03_orig/board/ns9750dev/CVS/Repository u-boot-2009.03/board/ns9750dev/CVS/Repository
--- u-boot-2009.03_orig/board/ns9750dev/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ns9750dev/CVS/Repository       2009-03-25 15:24:46.884569400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/ns9750dev
diff -Naur u-boot-2009.03_orig/board/ns9750dev/CVS/Root u-boot-2009.03/board/ns9750dev/CVS/Root
--- u-boot-2009.03_orig/board/ns9750dev/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ns9750dev/CVS/Root     2009-03-25 15:24:46.884569400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/ns9750dev/led.c u-boot-2009.03/board/ns9750dev/led.c
--- u-boot-2009.03_orig/board/ns9750dev/led.c   2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/board/ns9750dev/led.c        2009-03-31 14:47:06.540049600 -0700
@@ -1,46 +1,46 @@
-/***********************************************************************
- *
- * Copyright (C) 2004 by FS Forth-Systeme GmbH.
- * All rights reserved.
- *
- * $Id: led.c,v 1.1 2004/02/16 10:37:20 mpietrek Exp $
- * @Author: Markus Pietrek
- * @Descr: Defines helper functions for toggeling LEDs
- * @Usage:
- * @References: [1]
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- *
- ***********************************************************************/
-
-#ifdef CONFIG_STATUS_LED
-
-#include <ns9750_bbus.h>
-
-static inline void __led_init( led_id_t mask, int state )
-{
-       XXXX;
-}
-
-static inline void __led_toggle( led_id_t mask )
-{
-}
-
-static inline void __led_set( led_id_t mask, int state )
-{
-}
-
-#endif /* CONFIG_STATUS_LED */
+/***********************************************************************
+ *
+ * Copyright (C) 2004 by FS Forth-Systeme GmbH.
+ * All rights reserved.
+ *
+ * $Id: led.c,v 1.1.1.1 2009/03/25 22:21:45 kenagy Exp $
+ * @Author: Markus Pietrek
+ * @Descr: Defines helper functions for toggeling LEDs
+ * @Usage:
+ * @References: [1]
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ ***********************************************************************/
+
+#ifdef CONFIG_STATUS_LED
+
+#include <ns9750_bbus.h>
+
+static inline void __led_init( led_id_t mask, int state )
+{
+       XXXX;
+}
+
+static inline void __led_toggle( led_id_t mask )
+{
+}
+
+static inline void __led_set( led_id_t mask, int state )
+{
+}
+
+#endif /* CONFIG_STATUS_LED */
diff -Naur u-boot-2009.03_orig/board/nx823/CVS/Entries u-boot-2009.03/board/nx823/CVS/Entries
--- u-boot-2009.03_orig/board/nx823/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/nx823/CVS/Entries      2009-03-25 15:57:37.387540900 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nx823.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.debug/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/nx823/CVS/Entries.Extra u-boot-2009.03/board/nx823/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/nx823/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/nx823/CVS/Entries.Extra        2009-03-25 15:57:37.387540900 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019706/
+/config.mk///1238019705/
+/flash.c///1238019705/
+/nx823.c///1238019706/
+/u-boot.lds///1238019706/
+/u-boot.lds.debug///1238019706/
diff -Naur u-boot-2009.03_orig/board/nx823/CVS/Entries.Extra.Old u-boot-2009.03/board/nx823/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/nx823/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/nx823/CVS/Entries.Extra.Old    2009-03-25 15:24:47.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019706/
+/config.mk///1238019705/
+/flash.c///1238019705/
+/nx823.c///1238019706/
+/u-boot.lds///1238019706/
+/u-boot.lds.debug///1238019706/
diff -Naur u-boot-2009.03_orig/board/nx823/CVS/Entries.Old u-boot-2009.03/board/nx823/CVS/Entries.Old
--- u-boot-2009.03_orig/board/nx823/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/nx823/CVS/Entries.Old  2009-03-25 15:24:47.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:45 2009//
+/nx823.c/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/u-boot.lds.debug/1.1.1.1/Wed Mar 25 22:21:46 2009//
+D
diff -Naur u-boot-2009.03_orig/board/nx823/CVS/Repository u-boot-2009.03/board/nx823/CVS/Repository
--- u-boot-2009.03_orig/board/nx823/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/nx823/CVS/Repository   2009-03-25 15:24:47.040817400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/nx823
diff -Naur u-boot-2009.03_orig/board/nx823/CVS/Root u-boot-2009.03/board/nx823/CVS/Root
--- u-boot-2009.03_orig/board/nx823/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/nx823/CVS/Root 2009-03-25 15:24:47.040817400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/o2dnt/CVS/Entries u-boot-2009.03/board/o2dnt/CVS/Entries
--- u-boot-2009.03_orig/board/o2dnt/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/o2dnt/CVS/Entries      2009-03-25 15:57:37.481290300 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/o2dnt.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/o2dnt/CVS/Entries.Extra u-boot-2009.03/board/o2dnt/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/o2dnt/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/o2dnt/CVS/Entries.Extra        2009-03-25 15:57:37.481290300 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019706/
+/config.mk///1238019706/
+/flash.c///1238019706/
+/o2dnt.c///1238019706/
diff -Naur u-boot-2009.03_orig/board/o2dnt/CVS/Entries.Extra.Old u-boot-2009.03/board/o2dnt/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/o2dnt/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/o2dnt/CVS/Entries.Extra.Old    2009-03-25 15:24:47.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019706/
+/config.mk///1238019706/
+/flash.c///1238019706/
+/o2dnt.c///1238019706/
diff -Naur u-boot-2009.03_orig/board/o2dnt/CVS/Entries.Old u-boot-2009.03/board/o2dnt/CVS/Entries.Old
--- u-boot-2009.03_orig/board/o2dnt/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/o2dnt/CVS/Entries.Old  2009-03-25 15:24:47.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/o2dnt.c/1.1.1.1/Wed Mar 25 22:21:46 2009//
+D
diff -Naur u-boot-2009.03_orig/board/o2dnt/CVS/Repository u-boot-2009.03/board/o2dnt/CVS/Repository
--- u-boot-2009.03_orig/board/o2dnt/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/o2dnt/CVS/Repository   2009-03-25 15:24:47.165815800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/o2dnt
diff -Naur u-boot-2009.03_orig/board/o2dnt/CVS/Root u-boot-2009.03/board/o2dnt/CVS/Root
--- u-boot-2009.03_orig/board/o2dnt/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/o2dnt/CVS/Root 2009-03-25 15:24:47.165815800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/omap1510inn/CVS/Entries u-boot-2009.03/board/omap1510inn/CVS/Entries
--- u-boot-2009.03_orig/board/omap1510inn/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap1510inn/CVS/Entries        2009-03-25 15:57:37.559414800 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/omap1510innovator.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/omap1510inn/CVS/Entries.Extra u-boot-2009.03/board/omap1510inn/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/omap1510inn/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap1510inn/CVS/Entries.Extra  2009-03-25 15:57:37.559414800 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019706/
+/config.mk///1238019706/
+/lowlevel_init.S///1238019706/
+/omap1510innovator.c///1238019706/
+/u-boot.lds///1238019706/
diff -Naur u-boot-2009.03_orig/board/omap1510inn/CVS/Entries.Extra.Old u-boot-2009.03/board/omap1510inn/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/omap1510inn/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap1510inn/CVS/Entries.Extra.Old      2009-03-25 15:24:47.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019706/
+/config.mk///1238019706/
+/lowlevel_init.S///1238019706/
+/omap1510innovator.c///1238019706/
+/u-boot.lds///1238019706/
diff -Naur u-boot-2009.03_orig/board/omap1510inn/CVS/Entries.Old u-boot-2009.03/board/omap1510inn/CVS/Entries.Old
--- u-boot-2009.03_orig/board/omap1510inn/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap1510inn/CVS/Entries.Old    2009-03-25 15:24:47.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/omap1510innovator.c/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:46 2009//
+D
diff -Naur u-boot-2009.03_orig/board/omap1510inn/CVS/Repository u-boot-2009.03/board/omap1510inn/CVS/Repository
--- u-boot-2009.03_orig/board/omap1510inn/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap1510inn/CVS/Repository     2009-03-25 15:24:47.275189400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/omap1510inn
diff -Naur u-boot-2009.03_orig/board/omap1510inn/CVS/Root u-boot-2009.03/board/omap1510inn/CVS/Root
--- u-boot-2009.03_orig/board/omap1510inn/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap1510inn/CVS/Root   2009-03-25 15:24:47.275189400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/omap1610inn/CVS/Entries u-boot-2009.03/board/omap1610inn/CVS/Entries
--- u-boot-2009.03_orig/board/omap1610inn/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap1610inn/CVS/Entries        2009-03-25 15:57:37.653164200 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/omap1610innovator.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/omap1610inn/CVS/Entries.Extra u-boot-2009.03/board/omap1610inn/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/omap1610inn/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap1610inn/CVS/Entries.Extra  2009-03-25 15:57:37.653164200 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019706/
+/config.mk///1238019706/
+/flash.c///1238019706/
+/lowlevel_init.S///1238019706/
+/omap1610innovator.c///1238019706/
+/u-boot.lds///1238019706/
diff -Naur u-boot-2009.03_orig/board/omap1610inn/CVS/Entries.Extra.Old u-boot-2009.03/board/omap1610inn/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/omap1610inn/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap1610inn/CVS/Entries.Extra.Old      2009-03-25 15:24:47.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019706/
+/config.mk///1238019706/
+/flash.c///1238019706/
+/lowlevel_init.S///1238019706/
+/omap1610innovator.c///1238019706/
+/u-boot.lds///1238019706/
diff -Naur u-boot-2009.03_orig/board/omap1610inn/CVS/Entries.Old u-boot-2009.03/board/omap1610inn/CVS/Entries.Old
--- u-boot-2009.03_orig/board/omap1610inn/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap1610inn/CVS/Entries.Old    2009-03-25 15:24:47.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/omap1610innovator.c/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:46 2009//
+D
diff -Naur u-boot-2009.03_orig/board/omap1610inn/CVS/Repository u-boot-2009.03/board/omap1610inn/CVS/Repository
--- u-boot-2009.03_orig/board/omap1610inn/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap1610inn/CVS/Repository     2009-03-25 15:24:47.603310200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/omap1610inn
diff -Naur u-boot-2009.03_orig/board/omap1610inn/CVS/Root u-boot-2009.03/board/omap1610inn/CVS/Root
--- u-boot-2009.03_orig/board/omap1610inn/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap1610inn/CVS/Root   2009-03-25 15:24:47.587685400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/omap2420h4/CVS/Entries u-boot-2009.03/board/omap2420h4/CVS/Entries
--- u-boot-2009.03_orig/board/omap2420h4/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap2420h4/CVS/Entries 2009-03-25 15:57:37.762538500 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mem.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/omap2420h4.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sys_info.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/omap2420h4/CVS/Entries.Extra u-boot-2009.03/board/omap2420h4/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/omap2420h4/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap2420h4/CVS/Entries.Extra   2009-03-25 15:57:37.762538500 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019706/
+/config.mk///1238019706/
+/lowlevel_init.S///1238019706/
+/mem.c///1238019706/
+/omap2420h4.c///1238019706/
+/sys_info.c///1238019706/
+/u-boot.lds///1238019706/
diff -Naur u-boot-2009.03_orig/board/omap2420h4/CVS/Entries.Extra.Old u-boot-2009.03/board/omap2420h4/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/omap2420h4/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap2420h4/CVS/Entries.Extra.Old       2009-03-25 15:24:47.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019706/
+/config.mk///1238019706/
+/lowlevel_init.S///1238019706/
+/mem.c///1238019706/
+/omap2420h4.c///1238019706/
+/sys_info.c///1238019706/
+/u-boot.lds///1238019706/
diff -Naur u-boot-2009.03_orig/board/omap2420h4/CVS/Entries.Old u-boot-2009.03/board/omap2420h4/CVS/Entries.Old
--- u-boot-2009.03_orig/board/omap2420h4/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap2420h4/CVS/Entries.Old     2009-03-25 15:24:47.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/mem.c/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/omap2420h4.c/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/sys_info.c/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:46 2009//
+D
diff -Naur u-boot-2009.03_orig/board/omap2420h4/CVS/Repository u-boot-2009.03/board/omap2420h4/CVS/Repository
--- u-boot-2009.03_orig/board/omap2420h4/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap2420h4/CVS/Repository      2009-03-25 15:24:47.759558200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/omap2420h4
diff -Naur u-boot-2009.03_orig/board/omap2420h4/CVS/Root u-boot-2009.03/board/omap2420h4/CVS/Root
--- u-boot-2009.03_orig/board/omap2420h4/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap2420h4/CVS/Root    2009-03-25 15:24:47.759558200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/omap3/CVS/Entries u-boot-2009.03/board/omap3/CVS/Entries
--- u-boot-2009.03_orig/board/omap3/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap3/CVS/Entries      2009-03-25 15:24:48.728295800 -0700
@@ -0,0 +1,6 @@
+D/beagle////
+D/common////
+D/evm////
+D/overo////
+D/pandora////
+D/zoom1////
diff -Naur u-boot-2009.03_orig/board/omap3/CVS/Entries.Extra u-boot-2009.03/board/omap3/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/omap3/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap3/CVS/Entries.Extra        2009-03-25 15:24:48.743920600 -0700
@@ -0,0 +1,6 @@
+D/beagle////
+D/common////
+D/evm////
+D/overo////
+D/pandora////
+D/zoom1////
diff -Naur u-boot-2009.03_orig/board/omap3/CVS/Repository u-boot-2009.03/board/omap3/CVS/Repository
--- u-boot-2009.03_orig/board/omap3/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap3/CVS/Repository   2009-03-25 15:24:47.900181400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/omap3
diff -Naur u-boot-2009.03_orig/board/omap3/CVS/Root u-boot-2009.03/board/omap3/CVS/Root
--- u-boot-2009.03_orig/board/omap3/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap3/CVS/Root 2009-03-25 15:24:47.900181400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/omap3/beagle/CVS/Entries u-boot-2009.03/board/omap3/beagle/CVS/Entries
--- u-boot-2009.03_orig/board/omap3/beagle/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap3/beagle/CVS/Entries       2009-03-25 15:57:37.856287900 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/beagle.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/beagle.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/omap3/beagle/CVS/Entries.Extra u-boot-2009.03/board/omap3/beagle/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/omap3/beagle/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap3/beagle/CVS/Entries.Extra 2009-03-25 15:57:37.856287900 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019706/
+/beagle.c///1238019706/
+/beagle.h///1238019706/
+/config.mk///1238019706/
+/u-boot.lds///1238019706/
diff -Naur u-boot-2009.03_orig/board/omap3/beagle/CVS/Entries.Extra.Old u-boot-2009.03/board/omap3/beagle/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/omap3/beagle/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap3/beagle/CVS/Entries.Extra.Old     2009-03-25 15:24:47.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019706/
+/beagle.c///1238019706/
+/beagle.h///1238019706/
+/config.mk///1238019706/
+/u-boot.lds///1238019706/
diff -Naur u-boot-2009.03_orig/board/omap3/beagle/CVS/Entries.Old u-boot-2009.03/board/omap3/beagle/CVS/Entries.Old
--- u-boot-2009.03_orig/board/omap3/beagle/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap3/beagle/CVS/Entries.Old   2009-03-25 15:24:47.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/beagle.c/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/beagle.h/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:46 2009//
+D
diff -Naur u-boot-2009.03_orig/board/omap3/beagle/CVS/Repository u-boot-2009.03/board/omap3/beagle/CVS/Repository
--- u-boot-2009.03_orig/board/omap3/beagle/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap3/beagle/CVS/Repository    2009-03-25 15:24:47.931431000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/omap3/beagle
diff -Naur u-boot-2009.03_orig/board/omap3/beagle/CVS/Root u-boot-2009.03/board/omap3/beagle/CVS/Root
--- u-boot-2009.03_orig/board/omap3/beagle/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap3/beagle/CVS/Root  2009-03-25 15:24:47.931431000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/omap3/common/CVS/Entries u-boot-2009.03/board/omap3/common/CVS/Entries
--- u-boot-2009.03_orig/board/omap3/common/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap3/common/CVS/Entries       2009-03-25 15:57:37.934412400 -0700
@@ -0,0 +1,3 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/power.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/omap3/common/CVS/Entries.Extra u-boot-2009.03/board/omap3/common/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/omap3/common/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap3/common/CVS/Entries.Extra 2009-03-25 15:57:37.934412400 -0700
@@ -0,0 +1,2 @@
+/Makefile///1238019706/
+/power.c///1238019706/
diff -Naur u-boot-2009.03_orig/board/omap3/common/CVS/Entries.Extra.Old u-boot-2009.03/board/omap3/common/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/omap3/common/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap3/common/CVS/Entries.Extra.Old     2009-03-25 15:24:48.000000000 -0700
@@ -0,0 +1,2 @@
+/Makefile///1238019706/
+/power.c///1238019706/
diff -Naur u-boot-2009.03_orig/board/omap3/common/CVS/Entries.Old u-boot-2009.03/board/omap3/common/CVS/Entries.Old
--- u-boot-2009.03_orig/board/omap3/common/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap3/common/CVS/Entries.Old   2009-03-25 15:24:48.000000000 -0700
@@ -0,0 +1,3 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/power.c/1.1.1.1/Wed Mar 25 22:21:46 2009//
+D
diff -Naur u-boot-2009.03_orig/board/omap3/common/CVS/Repository u-boot-2009.03/board/omap3/common/CVS/Repository
--- u-boot-2009.03_orig/board/omap3/common/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap3/common/CVS/Repository    2009-03-25 15:24:48.056429400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/omap3/common
diff -Naur u-boot-2009.03_orig/board/omap3/common/CVS/Root u-boot-2009.03/board/omap3/common/CVS/Root
--- u-boot-2009.03_orig/board/omap3/common/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap3/common/CVS/Root  2009-03-25 15:24:48.040804600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/omap3/evm/CVS/Entries u-boot-2009.03/board/omap3/evm/CVS/Entries
--- u-boot-2009.03_orig/board/omap3/evm/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap3/evm/CVS/Entries  2009-03-25 15:57:38.028161800 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/evm.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/evm.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/omap3/evm/CVS/Entries.Extra u-boot-2009.03/board/omap3/evm/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/omap3/evm/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap3/evm/CVS/Entries.Extra    2009-03-25 15:57:38.028161800 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019706/
+/config.mk///1238019706/
+/evm.c///1238019706/
+/evm.h///1238019706/
+/u-boot.lds///1238019706/
diff -Naur u-boot-2009.03_orig/board/omap3/evm/CVS/Entries.Extra.Old u-boot-2009.03/board/omap3/evm/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/omap3/evm/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap3/evm/CVS/Entries.Extra.Old        2009-03-25 15:24:48.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019706/
+/config.mk///1238019706/
+/evm.c///1238019706/
+/evm.h///1238019706/
+/u-boot.lds///1238019706/
diff -Naur u-boot-2009.03_orig/board/omap3/evm/CVS/Entries.Old u-boot-2009.03/board/omap3/evm/CVS/Entries.Old
--- u-boot-2009.03_orig/board/omap3/evm/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap3/evm/CVS/Entries.Old      2009-03-25 15:24:48.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/evm.c/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/evm.h/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:46 2009//
+D
diff -Naur u-boot-2009.03_orig/board/omap3/evm/CVS/Repository u-boot-2009.03/board/omap3/evm/CVS/Repository
--- u-boot-2009.03_orig/board/omap3/evm/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap3/evm/CVS/Repository       2009-03-25 15:24:48.150178200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/omap3/evm
diff -Naur u-boot-2009.03_orig/board/omap3/evm/CVS/Root u-boot-2009.03/board/omap3/evm/CVS/Root
--- u-boot-2009.03_orig/board/omap3/evm/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap3/evm/CVS/Root     2009-03-25 15:24:48.134553400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/omap3/overo/CVS/Entries u-boot-2009.03/board/omap3/overo/CVS/Entries
--- u-boot-2009.03_orig/board/omap3/overo/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap3/overo/CVS/Entries        2009-03-25 15:57:38.184410800 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/overo.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/overo.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/omap3/overo/CVS/Entries.Extra u-boot-2009.03/board/omap3/overo/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/omap3/overo/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap3/overo/CVS/Entries.Extra  2009-03-25 15:57:38.184410800 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019706/
+/config.mk///1238019706/
+/overo.c///1238019706/
+/overo.h///1238019706/
+/u-boot.lds///1238019706/
diff -Naur u-boot-2009.03_orig/board/omap3/overo/CVS/Entries.Extra.Old u-boot-2009.03/board/omap3/overo/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/omap3/overo/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap3/overo/CVS/Entries.Extra.Old      2009-03-25 15:24:48.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019706/
+/config.mk///1238019706/
+/overo.c///1238019706/
+/overo.h///1238019706/
+/u-boot.lds///1238019706/
diff -Naur u-boot-2009.03_orig/board/omap3/overo/CVS/Entries.Old u-boot-2009.03/board/omap3/overo/CVS/Entries.Old
--- u-boot-2009.03_orig/board/omap3/overo/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap3/overo/CVS/Entries.Old    2009-03-25 15:24:48.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/overo.c/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/overo.h/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:46 2009//
+D
diff -Naur u-boot-2009.03_orig/board/omap3/overo/CVS/Repository u-boot-2009.03/board/omap3/overo/CVS/Repository
--- u-boot-2009.03_orig/board/omap3/overo/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap3/overo/CVS/Repository     2009-03-25 15:24:48.243927000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/omap3/overo
diff -Naur u-boot-2009.03_orig/board/omap3/overo/CVS/Root u-boot-2009.03/board/omap3/overo/CVS/Root
--- u-boot-2009.03_orig/board/omap3/overo/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap3/overo/CVS/Root   2009-03-25 15:24:48.243927000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/omap3/pandora/CVS/Entries u-boot-2009.03/board/omap3/pandora/CVS/Entries
--- u-boot-2009.03_orig/board/omap3/pandora/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap3/pandora/CVS/Entries      2009-03-25 15:57:38.262535300 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pandora.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pandora.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/omap3/pandora/CVS/Entries.Extra u-boot-2009.03/board/omap3/pandora/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/omap3/pandora/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap3/pandora/CVS/Entries.Extra        2009-03-25 15:57:38.278160200 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019706/
+/config.mk///1238019706/
+/pandora.c///1238019706/
+/pandora.h///1238019706/
+/u-boot.lds///1238019706/
diff -Naur u-boot-2009.03_orig/board/omap3/pandora/CVS/Entries.Extra.Old u-boot-2009.03/board/omap3/pandora/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/omap3/pandora/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap3/pandora/CVS/Entries.Extra.Old    2009-03-25 15:24:48.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019706/
+/config.mk///1238019706/
+/pandora.c///1238019706/
+/pandora.h///1238019706/
+/u-boot.lds///1238019706/
diff -Naur u-boot-2009.03_orig/board/omap3/pandora/CVS/Entries.Old u-boot-2009.03/board/omap3/pandora/CVS/Entries.Old
--- u-boot-2009.03_orig/board/omap3/pandora/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap3/pandora/CVS/Entries.Old  2009-03-25 15:24:48.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/pandora.c/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/pandora.h/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:46 2009//
+D
diff -Naur u-boot-2009.03_orig/board/omap3/pandora/CVS/Repository u-boot-2009.03/board/omap3/pandora/CVS/Repository
--- u-boot-2009.03_orig/board/omap3/pandora/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap3/pandora/CVS/Repository   2009-03-25 15:24:48.353300600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/omap3/pandora
diff -Naur u-boot-2009.03_orig/board/omap3/pandora/CVS/Root u-boot-2009.03/board/omap3/pandora/CVS/Root
--- u-boot-2009.03_orig/board/omap3/pandora/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap3/pandora/CVS/Root 2009-03-25 15:24:48.353300600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/omap3/zoom1/CVS/Entries u-boot-2009.03/board/omap3/zoom1/CVS/Entries
--- u-boot-2009.03_orig/board/omap3/zoom1/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap3/zoom1/CVS/Entries        2009-03-25 15:57:38.356284700 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/zoom1.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/zoom1.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/omap3/zoom1/CVS/Entries.Extra u-boot-2009.03/board/omap3/zoom1/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/omap3/zoom1/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap3/zoom1/CVS/Entries.Extra  2009-03-25 15:57:38.356284700 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019706/
+/config.mk///1238019706/
+/u-boot.lds///1238019706/
+/zoom1.c///1238019706/
+/zoom1.h///1238019706/
diff -Naur u-boot-2009.03_orig/board/omap3/zoom1/CVS/Entries.Extra.Old u-boot-2009.03/board/omap3/zoom1/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/omap3/zoom1/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap3/zoom1/CVS/Entries.Extra.Old      2009-03-25 15:24:48.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019706/
+/config.mk///1238019706/
+/u-boot.lds///1238019706/
+/zoom1.c///1238019706/
+/zoom1.h///1238019706/
diff -Naur u-boot-2009.03_orig/board/omap3/zoom1/CVS/Entries.Old u-boot-2009.03/board/omap3/zoom1/CVS/Entries.Old
--- u-boot-2009.03_orig/board/omap3/zoom1/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap3/zoom1/CVS/Entries.Old    2009-03-25 15:24:48.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/zoom1.c/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/zoom1.h/1.1.1.1/Wed Mar 25 22:21:46 2009//
+D
diff -Naur u-boot-2009.03_orig/board/omap3/zoom1/CVS/Repository u-boot-2009.03/board/omap3/zoom1/CVS/Repository
--- u-boot-2009.03_orig/board/omap3/zoom1/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap3/zoom1/CVS/Repository     2009-03-25 15:24:48.634547000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/omap3/zoom1
diff -Naur u-boot-2009.03_orig/board/omap3/zoom1/CVS/Root u-boot-2009.03/board/omap3/zoom1/CVS/Root
--- u-boot-2009.03_orig/board/omap3/zoom1/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap3/zoom1/CVS/Root   2009-03-25 15:24:48.634547000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/omap5912osk/CVS/Entries u-boot-2009.03/board/omap5912osk/CVS/Entries
--- u-boot-2009.03_orig/board/omap5912osk/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap5912osk/CVS/Entries        2009-03-25 15:57:38.450034100 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/omap5912osk.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/omap5912osk/CVS/Entries.Extra u-boot-2009.03/board/omap5912osk/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/omap5912osk/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap5912osk/CVS/Entries.Extra  2009-03-25 15:57:38.450034100 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019706/
+/config.mk///1238019706/
+/lowlevel_init.S///1238019706/
+/omap5912osk.c///1238019706/
+/u-boot.lds///1238019706/
diff -Naur u-boot-2009.03_orig/board/omap5912osk/CVS/Entries.Extra.Old u-boot-2009.03/board/omap5912osk/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/omap5912osk/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap5912osk/CVS/Entries.Extra.Old      2009-03-25 15:24:48.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019706/
+/config.mk///1238019706/
+/lowlevel_init.S///1238019706/
+/omap5912osk.c///1238019706/
+/u-boot.lds///1238019706/
diff -Naur u-boot-2009.03_orig/board/omap5912osk/CVS/Entries.Old u-boot-2009.03/board/omap5912osk/CVS/Entries.Old
--- u-boot-2009.03_orig/board/omap5912osk/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap5912osk/CVS/Entries.Old    2009-03-25 15:24:48.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/omap5912osk.c/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:46 2009//
+D
diff -Naur u-boot-2009.03_orig/board/omap5912osk/CVS/Repository u-boot-2009.03/board/omap5912osk/CVS/Repository
--- u-boot-2009.03_orig/board/omap5912osk/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap5912osk/CVS/Repository     2009-03-25 15:24:48.775170200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/omap5912osk
diff -Naur u-boot-2009.03_orig/board/omap5912osk/CVS/Root u-boot-2009.03/board/omap5912osk/CVS/Root
--- u-boot-2009.03_orig/board/omap5912osk/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap5912osk/CVS/Root   2009-03-25 15:24:48.775170200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/omap730p2/CVS/Entries u-boot-2009.03/board/omap730p2/CVS/Entries
--- u-boot-2009.03_orig/board/omap730p2/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap730p2/CVS/Entries  2009-03-25 15:57:38.559408400 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/omap730p2.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/omap730p2/CVS/Entries.Extra u-boot-2009.03/board/omap730p2/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/omap730p2/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap730p2/CVS/Entries.Extra    2009-03-25 15:57:38.559408400 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019706/
+/config.mk///1238019706/
+/flash.c///1238019706/
+/lowlevel_init.S///1238019706/
+/omap730p2.c///1238019706/
+/u-boot.lds///1238019706/
diff -Naur u-boot-2009.03_orig/board/omap730p2/CVS/Entries.Extra.Old u-boot-2009.03/board/omap730p2/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/omap730p2/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap730p2/CVS/Entries.Extra.Old        2009-03-25 15:24:48.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019706/
+/config.mk///1238019706/
+/flash.c///1238019706/
+/lowlevel_init.S///1238019706/
+/omap730p2.c///1238019706/
+/u-boot.lds///1238019706/
diff -Naur u-boot-2009.03_orig/board/omap730p2/CVS/Entries.Old u-boot-2009.03/board/omap730p2/CVS/Entries.Old
--- u-boot-2009.03_orig/board/omap730p2/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap730p2/CVS/Entries.Old      2009-03-25 15:24:48.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/omap730p2.c/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:46 2009//
+D
diff -Naur u-boot-2009.03_orig/board/omap730p2/CVS/Repository u-boot-2009.03/board/omap730p2/CVS/Repository
--- u-boot-2009.03_orig/board/omap730p2/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap730p2/CVS/Repository       2009-03-25 15:24:48.900168600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/omap730p2
diff -Naur u-boot-2009.03_orig/board/omap730p2/CVS/Root u-boot-2009.03/board/omap730p2/CVS/Root
--- u-boot-2009.03_orig/board/omap730p2/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/omap730p2/CVS/Root     2009-03-25 15:24:48.900168600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/oxc/CVS/Entries u-boot-2009.03/board/oxc/CVS/Entries
--- u-boot-2009.03_orig/board/oxc/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/oxc/CVS/Entries        2009-03-25 15:57:38.637532900 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/oxc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/oxc/CVS/Entries.Extra u-boot-2009.03/board/oxc/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/oxc/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/oxc/CVS/Entries.Extra  2009-03-25 15:57:38.637532900 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019706/
+/config.mk///1238019706/
+/flash.c///1238019706/
+/oxc.c///1238019706/
diff -Naur u-boot-2009.03_orig/board/oxc/CVS/Entries.Extra.Old u-boot-2009.03/board/oxc/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/oxc/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/oxc/CVS/Entries.Extra.Old      2009-03-25 15:24:49.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019706/
+/config.mk///1238019706/
+/flash.c///1238019706/
+/oxc.c///1238019706/
diff -Naur u-boot-2009.03_orig/board/oxc/CVS/Entries.Old u-boot-2009.03/board/oxc/CVS/Entries.Old
--- u-boot-2009.03_orig/board/oxc/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/oxc/CVS/Entries.Old    2009-03-25 15:24:49.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/oxc.c/1.1.1.1/Wed Mar 25 22:21:46 2009//
+D
diff -Naur u-boot-2009.03_orig/board/oxc/CVS/Repository u-boot-2009.03/board/oxc/CVS/Repository
--- u-boot-2009.03_orig/board/oxc/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/oxc/CVS/Repository     2009-03-25 15:24:49.040791800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/oxc
diff -Naur u-boot-2009.03_orig/board/oxc/CVS/Root u-boot-2009.03/board/oxc/CVS/Root
--- u-boot-2009.03_orig/board/oxc/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/oxc/CVS/Root   2009-03-25 15:24:49.025167000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/pb1x00/CVS/Entries u-boot-2009.03/board/pb1x00/CVS/Entries
--- u-boot-2009.03_orig/board/pb1x00/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pb1x00/CVS/Entries     2009-03-25 15:57:38.731282300 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pb1x00.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/pb1x00/CVS/Entries.Extra u-boot-2009.03/board/pb1x00/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/pb1x00/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pb1x00/CVS/Entries.Extra       2009-03-25 15:57:38.731282300 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019706/
+/README///1238019706/
+/config.mk///1238019706/
+/flash.c///1238019706/
+/lowlevel_init.S///1238019706/
+/pb1x00.c///1238019706/
+/u-boot.lds///1238019706/
diff -Naur u-boot-2009.03_orig/board/pb1x00/CVS/Entries.Extra.Old u-boot-2009.03/board/pb1x00/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/pb1x00/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pb1x00/CVS/Entries.Extra.Old   2009-03-25 15:24:49.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019706/
+/README///1238019706/
+/config.mk///1238019706/
+/flash.c///1238019706/
+/lowlevel_init.S///1238019706/
+/pb1x00.c///1238019706/
+/u-boot.lds///1238019706/
diff -Naur u-boot-2009.03_orig/board/pb1x00/CVS/Entries.Old u-boot-2009.03/board/pb1x00/CVS/Entries.Old
--- u-boot-2009.03_orig/board/pb1x00/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pb1x00/CVS/Entries.Old 2009-03-25 15:24:49.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/README/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/pb1x00.c/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:46 2009//
+D
diff -Naur u-boot-2009.03_orig/board/pb1x00/CVS/Repository u-boot-2009.03/board/pb1x00/CVS/Repository
--- u-boot-2009.03_orig/board/pb1x00/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pb1x00/CVS/Repository  2009-03-25 15:24:49.134540600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/pb1x00
diff -Naur u-boot-2009.03_orig/board/pb1x00/CVS/Root u-boot-2009.03/board/pb1x00/CVS/Root
--- u-boot-2009.03_orig/board/pb1x00/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pb1x00/CVS/Root        2009-03-25 15:24:49.134540600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/pcippc2/CVS/Entries u-boot-2009.03/board/pcippc2/CVS/Entries
--- u-boot-2009.03_orig/board/pcippc2/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pcippc2/CVS/Entries    2009-03-25 15:57:38.887531300 -0700
@@ -0,0 +1,21 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpc710.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpc710_init_ram.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpc710_pci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpc710_pci.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fpga_serial.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fpga_serial.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/hardware.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/i2c.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/i2c.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ns16550.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pcippc2.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pcippc2.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pcippc2_fpga.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pcippc2_fpga.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sconsole.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sconsole.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/pcippc2/CVS/Entries.Extra u-boot-2009.03/board/pcippc2/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/pcippc2/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pcippc2/CVS/Entries.Extra      2009-03-25 15:57:38.887531300 -0700
@@ -0,0 +1,20 @@
+/Makefile///1238019706/
+/config.mk///1238019706/
+/cpc710.h///1238019706/
+/cpc710_init_ram.c///1238019706/
+/cpc710_pci.c///1238019706/
+/cpc710_pci.h///1238019706/
+/flash.c///1238019706/
+/fpga_serial.c///1238019706/
+/fpga_serial.h///1238019706/
+/hardware.h///1238019706/
+/i2c.c///1238019706/
+/i2c.h///1238019706/
+/ns16550.h///1238019706/
+/pcippc2.c///1238019706/
+/pcippc2.h///1238019706/
+/pcippc2_fpga.c///1238019706/
+/pcippc2_fpga.h///1238019706/
+/sconsole.c///1238019706/
+/sconsole.h///1238019706/
+/u-boot.lds///1238019706/
diff -Naur u-boot-2009.03_orig/board/pcippc2/CVS/Entries.Extra.Old u-boot-2009.03/board/pcippc2/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/pcippc2/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pcippc2/CVS/Entries.Extra.Old  2009-03-25 15:24:49.000000000 -0700
@@ -0,0 +1,20 @@
+/Makefile///1238019706/
+/config.mk///1238019706/
+/cpc710.h///1238019706/
+/cpc710_init_ram.c///1238019706/
+/cpc710_pci.c///1238019706/
+/cpc710_pci.h///1238019706/
+/flash.c///1238019706/
+/fpga_serial.c///1238019706/
+/fpga_serial.h///1238019706/
+/hardware.h///1238019706/
+/i2c.c///1238019706/
+/i2c.h///1238019706/
+/ns16550.h///1238019706/
+/pcippc2.c///1238019706/
+/pcippc2.h///1238019706/
+/pcippc2_fpga.c///1238019706/
+/pcippc2_fpga.h///1238019706/
+/sconsole.c///1238019706/
+/sconsole.h///1238019706/
+/u-boot.lds///1238019706/
diff -Naur u-boot-2009.03_orig/board/pcippc2/CVS/Entries.Old u-boot-2009.03/board/pcippc2/CVS/Entries.Old
--- u-boot-2009.03_orig/board/pcippc2/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pcippc2/CVS/Entries.Old        2009-03-25 15:24:49.000000000 -0700
@@ -0,0 +1,21 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/cpc710.h/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/cpc710_init_ram.c/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/cpc710_pci.c/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/cpc710_pci.h/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/fpga_serial.c/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/fpga_serial.h/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/hardware.h/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/i2c.c/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/i2c.h/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/ns16550.h/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/pcippc2.c/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/pcippc2.h/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/pcippc2_fpga.c/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/pcippc2_fpga.h/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/sconsole.c/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/sconsole.h/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:46 2009//
+D
diff -Naur u-boot-2009.03_orig/board/pcippc2/CVS/Repository u-boot-2009.03/board/pcippc2/CVS/Repository
--- u-boot-2009.03_orig/board/pcippc2/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pcippc2/CVS/Repository 2009-03-25 15:24:49.259539000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/pcippc2
diff -Naur u-boot-2009.03_orig/board/pcippc2/CVS/Root u-boot-2009.03/board/pcippc2/CVS/Root
--- u-boot-2009.03_orig/board/pcippc2/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pcippc2/CVS/Root       2009-03-25 15:24:49.259539000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/pcs440ep/CVS/Entries u-boot-2009.03/board/pcs440ep/CVS/Entries
--- u-boot-2009.03_orig/board/pcs440ep/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pcs440ep/CVS/Entries   2009-03-25 15:57:38.996905600 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pcs440ep.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/pcs440ep/CVS/Entries.Extra u-boot-2009.03/board/pcs440ep/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/pcs440ep/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pcs440ep/CVS/Entries.Extra     2009-03-25 15:57:38.996905600 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019706/
+/config.mk///1238019706/
+/flash.c///1238019706/
+/init.S///1238019706/
+/pcs440ep.c///1238019706/
+/u-boot.lds///1238019706/
diff -Naur u-boot-2009.03_orig/board/pcs440ep/CVS/Entries.Extra.Old u-boot-2009.03/board/pcs440ep/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/pcs440ep/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pcs440ep/CVS/Entries.Extra.Old 2009-03-25 15:24:49.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019706/
+/config.mk///1238019706/
+/flash.c///1238019706/
+/init.S///1238019706/
+/pcs440ep.c///1238019706/
+/u-boot.lds///1238019706/
diff -Naur u-boot-2009.03_orig/board/pcs440ep/CVS/Entries.Old u-boot-2009.03/board/pcs440ep/CVS/Entries.Old
--- u-boot-2009.03_orig/board/pcs440ep/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pcs440ep/CVS/Entries.Old       2009-03-25 15:24:49.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/init.S/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/pcs440ep.c/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:46 2009//
+D
diff -Naur u-boot-2009.03_orig/board/pcs440ep/CVS/Repository u-boot-2009.03/board/pcs440ep/CVS/Repository
--- u-boot-2009.03_orig/board/pcs440ep/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pcs440ep/CVS/Repository        2009-03-25 15:24:49.587659800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/pcs440ep
diff -Naur u-boot-2009.03_orig/board/pcs440ep/CVS/Root u-boot-2009.03/board/pcs440ep/CVS/Root
--- u-boot-2009.03_orig/board/pcs440ep/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pcs440ep/CVS/Root      2009-03-25 15:24:49.587659800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/pleb2/CVS/Entries u-boot-2009.03/board/pleb2/CVS/Entries
--- u-boot-2009.03_orig/board/pleb2/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pleb2/CVS/Entries      2009-03-25 15:57:39.121904800 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pleb2.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/pleb2/CVS/Entries.Extra u-boot-2009.03/board/pleb2/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/pleb2/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pleb2/CVS/Entries.Extra        2009-03-25 15:57:39.121904800 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019707/
+/config.mk///1238019706/
+/flash.c///1238019706/
+/lowlevel_init.S///1238019707/
+/pleb2.c///1238019707/
+/u-boot.lds///1238019707/
diff -Naur u-boot-2009.03_orig/board/pleb2/CVS/Entries.Extra.Old u-boot-2009.03/board/pleb2/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/pleb2/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pleb2/CVS/Entries.Extra.Old    2009-03-25 15:24:49.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019707/
+/config.mk///1238019706/
+/flash.c///1238019706/
+/lowlevel_init.S///1238019707/
+/pleb2.c///1238019707/
+/u-boot.lds///1238019707/
diff -Naur u-boot-2009.03_orig/board/pleb2/CVS/Entries.Old u-boot-2009.03/board/pleb2/CVS/Entries.Old
--- u-boot-2009.03_orig/board/pleb2/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pleb2/CVS/Entries.Old  2009-03-25 15:24:49.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:47 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:46 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:47 2009//
+/pleb2.c/1.1.1.1/Wed Mar 25 22:21:47 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:47 2009//
+D
diff -Naur u-boot-2009.03_orig/board/pleb2/CVS/Repository u-boot-2009.03/board/pleb2/CVS/Repository
--- u-boot-2009.03_orig/board/pleb2/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pleb2/CVS/Repository   2009-03-25 15:24:49.728283000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/pleb2
diff -Naur u-boot-2009.03_orig/board/pleb2/CVS/Root u-boot-2009.03/board/pleb2/CVS/Root
--- u-boot-2009.03_orig/board/pleb2/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pleb2/CVS/Root 2009-03-25 15:24:49.712658200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/pm520/CVS/Entries u-boot-2009.03/board/pm520/CVS/Entries
--- u-boot-2009.03_orig/board/pm520/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pm520/CVS/Entries      2009-03-25 15:57:39.215654200 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mt46v16m16-75.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mt48lc16m16a2-75.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pm520.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/pm520/CVS/Entries.Extra u-boot-2009.03/board/pm520/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/pm520/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pm520/CVS/Entries.Extra        2009-03-25 15:57:39.231279100 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019707/
+/config.mk///1238019707/
+/flash.c///1238019707/
+/mt46v16m16-75.h///1238019707/
+/mt48lc16m16a2-75.h///1238019707/
+/pm520.c///1238019707/
diff -Naur u-boot-2009.03_orig/board/pm520/CVS/Entries.Extra.Old u-boot-2009.03/board/pm520/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/pm520/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pm520/CVS/Entries.Extra.Old    2009-03-25 15:24:49.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019707/
+/config.mk///1238019707/
+/flash.c///1238019707/
+/mt46v16m16-75.h///1238019707/
+/mt48lc16m16a2-75.h///1238019707/
+/pm520.c///1238019707/
diff -Naur u-boot-2009.03_orig/board/pm520/CVS/Entries.Old u-boot-2009.03/board/pm520/CVS/Entries.Old
--- u-boot-2009.03_orig/board/pm520/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pm520/CVS/Entries.Old  2009-03-25 15:24:49.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:47 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:47 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:47 2009//
+/mt46v16m16-75.h/1.1.1.1/Wed Mar 25 22:21:47 2009//
+/mt48lc16m16a2-75.h/1.1.1.1/Wed Mar 25 22:21:47 2009//
+/pm520.c/1.1.1.1/Wed Mar 25 22:21:47 2009//
+D
diff -Naur u-boot-2009.03_orig/board/pm520/CVS/Repository u-boot-2009.03/board/pm520/CVS/Repository
--- u-boot-2009.03_orig/board/pm520/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pm520/CVS/Repository   2009-03-25 15:24:49.853281400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/pm520
diff -Naur u-boot-2009.03_orig/board/pm520/CVS/Root u-boot-2009.03/board/pm520/CVS/Root
--- u-boot-2009.03_orig/board/pm520/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pm520/CVS/Root 2009-03-25 15:24:49.853281400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/pm826/CVS/Entries u-boot-2009.03/board/pm826/CVS/Entries
--- u-boot-2009.03_orig/board/pm826/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pm826/CVS/Entries      2009-03-25 15:57:39.309403600 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pm826.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/pm826/CVS/Entries.Extra u-boot-2009.03/board/pm826/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/pm826/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pm826/CVS/Entries.Extra        2009-03-25 15:57:39.309403600 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019707/
+/config.mk///1238019707/
+/flash.c///1238019707/
+/pm826.c///1238019707/
diff -Naur u-boot-2009.03_orig/board/pm826/CVS/Entries.Extra.Old u-boot-2009.03/board/pm826/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/pm826/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pm826/CVS/Entries.Extra.Old    2009-03-25 15:24:50.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019707/
+/config.mk///1238019707/
+/flash.c///1238019707/
+/pm826.c///1238019707/
diff -Naur u-boot-2009.03_orig/board/pm826/CVS/Entries.Old u-boot-2009.03/board/pm826/CVS/Entries.Old
--- u-boot-2009.03_orig/board/pm826/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pm826/CVS/Entries.Old  2009-03-25 15:24:50.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:47 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:47 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:47 2009//
+/pm826.c/1.1.1.1/Wed Mar 25 22:21:47 2009//
+D
diff -Naur u-boot-2009.03_orig/board/pm826/CVS/Repository u-boot-2009.03/board/pm826/CVS/Repository
--- u-boot-2009.03_orig/board/pm826/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pm826/CVS/Repository   2009-03-25 15:24:49.978279800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/pm826
diff -Naur u-boot-2009.03_orig/board/pm826/CVS/Root u-boot-2009.03/board/pm826/CVS/Root
--- u-boot-2009.03_orig/board/pm826/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pm826/CVS/Root 2009-03-25 15:24:49.978279800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/pm828/CVS/Entries u-boot-2009.03/board/pm828/CVS/Entries
--- u-boot-2009.03_orig/board/pm828/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pm828/CVS/Entries      2009-03-25 15:57:39.387528100 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pm828.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/pm828/CVS/Entries.Extra u-boot-2009.03/board/pm828/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/pm828/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pm828/CVS/Entries.Extra        2009-03-25 15:57:39.403153000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019707/
+/config.mk///1238019707/
+/flash.c///1238019707/
+/pm828.c///1238019707/
diff -Naur u-boot-2009.03_orig/board/pm828/CVS/Entries.Extra.Old u-boot-2009.03/board/pm828/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/pm828/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pm828/CVS/Entries.Extra.Old    2009-03-25 15:24:50.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019707/
+/config.mk///1238019707/
+/flash.c///1238019707/
+/pm828.c///1238019707/
diff -Naur u-boot-2009.03_orig/board/pm828/CVS/Entries.Old u-boot-2009.03/board/pm828/CVS/Entries.Old
--- u-boot-2009.03_orig/board/pm828/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pm828/CVS/Entries.Old  2009-03-25 15:24:50.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:47 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:47 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:47 2009//
+/pm828.c/1.1.1.1/Wed Mar 25 22:21:47 2009//
+D
diff -Naur u-boot-2009.03_orig/board/pm828/CVS/Repository u-boot-2009.03/board/pm828/CVS/Repository
--- u-boot-2009.03_orig/board/pm828/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pm828/CVS/Repository   2009-03-25 15:24:50.072028600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/pm828
diff -Naur u-boot-2009.03_orig/board/pm828/CVS/Root u-boot-2009.03/board/pm828/CVS/Root
--- u-boot-2009.03_orig/board/pm828/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pm828/CVS/Root 2009-03-25 15:24:50.072028600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/pm854/CVS/Entries u-boot-2009.03/board/pm854/CVS/Entries
--- u-boot-2009.03_orig/board/pm854/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pm854/CVS/Entries      2009-03-25 15:57:39.481277500 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ddr.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/law.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pm854.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tlb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/pm854/CVS/Entries.Extra u-boot-2009.03/board/pm854/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/pm854/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pm854/CVS/Entries.Extra        2009-03-25 15:57:39.481277500 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019707/
+/config.mk///1238019707/
+/ddr.c///1238019707/
+/law.c///1238019707/
+/pm854.c///1238019707/
+/tlb.c///1238019707/
+/u-boot.lds///1238019707/
diff -Naur u-boot-2009.03_orig/board/pm854/CVS/Entries.Extra.Old u-boot-2009.03/board/pm854/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/pm854/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pm854/CVS/Entries.Extra.Old    2009-03-25 15:24:50.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019707/
+/config.mk///1238019707/
+/ddr.c///1238019707/
+/law.c///1238019707/
+/pm854.c///1238019707/
+/tlb.c///1238019707/
+/u-boot.lds///1238019707/
diff -Naur u-boot-2009.03_orig/board/pm854/CVS/Entries.Old u-boot-2009.03/board/pm854/CVS/Entries.Old
--- u-boot-2009.03_orig/board/pm854/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pm854/CVS/Entries.Old  2009-03-25 15:24:50.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:47 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:47 2009//
+/ddr.c/1.1.1.1/Wed Mar 25 22:21:47 2009//
+/law.c/1.1.1.1/Wed Mar 25 22:21:47 2009//
+/pm854.c/1.1.1.1/Wed Mar 25 22:21:47 2009//
+/tlb.c/1.1.1.1/Wed Mar 25 22:21:47 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:47 2009//
+D
diff -Naur u-boot-2009.03_orig/board/pm854/CVS/Repository u-boot-2009.03/board/pm854/CVS/Repository
--- u-boot-2009.03_orig/board/pm854/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pm854/CVS/Repository   2009-03-25 15:24:50.181402200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/pm854
diff -Naur u-boot-2009.03_orig/board/pm854/CVS/Root u-boot-2009.03/board/pm854/CVS/Root
--- u-boot-2009.03_orig/board/pm854/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pm854/CVS/Root 2009-03-25 15:24:50.165777400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/pm856/CVS/Entries u-boot-2009.03/board/pm856/CVS/Entries
--- u-boot-2009.03_orig/board/pm856/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pm856/CVS/Entries      2009-03-25 15:57:39.590651800 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ddr.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/law.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pm856.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tlb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/pm856/CVS/Entries.Extra u-boot-2009.03/board/pm856/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/pm856/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pm856/CVS/Entries.Extra        2009-03-25 15:57:39.590651800 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019707/
+/config.mk///1238019707/
+/ddr.c///1238019707/
+/law.c///1238019707/
+/pm856.c///1238019707/
+/tlb.c///1238019707/
+/u-boot.lds///1238019707/
diff -Naur u-boot-2009.03_orig/board/pm856/CVS/Entries.Extra.Old u-boot-2009.03/board/pm856/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/pm856/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pm856/CVS/Entries.Extra.Old    2009-03-25 15:24:50.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019707/
+/config.mk///1238019707/
+/ddr.c///1238019707/
+/law.c///1238019707/
+/pm856.c///1238019707/
+/tlb.c///1238019707/
+/u-boot.lds///1238019707/
diff -Naur u-boot-2009.03_orig/board/pm856/CVS/Entries.Old u-boot-2009.03/board/pm856/CVS/Entries.Old
--- u-boot-2009.03_orig/board/pm856/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pm856/CVS/Entries.Old  2009-03-25 15:24:50.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:47 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:47 2009//
+/ddr.c/1.1.1.1/Wed Mar 25 22:21:47 2009//
+/law.c/1.1.1.1/Wed Mar 25 22:21:47 2009//
+/pm856.c/1.1.1.1/Wed Mar 25 22:21:47 2009//
+/tlb.c/1.1.1.1/Wed Mar 25 22:21:47 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:47 2009//
+D
diff -Naur u-boot-2009.03_orig/board/pm856/CVS/Repository u-boot-2009.03/board/pm856/CVS/Repository
--- u-boot-2009.03_orig/board/pm856/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pm856/CVS/Repository   2009-03-25 15:24:50.322025400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/pm856
diff -Naur u-boot-2009.03_orig/board/pm856/CVS/Root u-boot-2009.03/board/pm856/CVS/Root
--- u-boot-2009.03_orig/board/pm856/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pm856/CVS/Root 2009-03-25 15:24:50.322025400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/pn62/CVS/Entries u-boot-2009.03/board/pn62/CVS/Entries
--- u-boot-2009.03_orig/board/pn62/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pn62/CVS/Entries       2009-03-25 15:57:39.668776300 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_pn62.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/misc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pn62.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pn62.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/pn62/CVS/Entries.Extra u-boot-2009.03/board/pn62/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/pn62/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pn62/CVS/Entries.Extra 2009-03-25 15:57:39.684401200 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019707/
+/cmd_pn62.c///1238019707/
+/config.mk///1238019707/
+/misc.c///1238019707/
+/pn62.c///1238019707/
+/pn62.h///1238019707/
diff -Naur u-boot-2009.03_orig/board/pn62/CVS/Entries.Extra.Old u-boot-2009.03/board/pn62/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/pn62/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pn62/CVS/Entries.Extra.Old     2009-03-25 15:24:50.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019707/
+/cmd_pn62.c///1238019707/
+/config.mk///1238019707/
+/misc.c///1238019707/
+/pn62.c///1238019707/
+/pn62.h///1238019707/
diff -Naur u-boot-2009.03_orig/board/pn62/CVS/Entries.Old u-boot-2009.03/board/pn62/CVS/Entries.Old
--- u-boot-2009.03_orig/board/pn62/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pn62/CVS/Entries.Old   2009-03-25 15:24:50.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:47 2009//
+/cmd_pn62.c/1.1.1.1/Wed Mar 25 22:21:47 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:47 2009//
+/misc.c/1.1.1.1/Wed Mar 25 22:21:47 2009//
+/pn62.c/1.1.1.1/Wed Mar 25 22:21:47 2009//
+/pn62.h/1.1.1.1/Wed Mar 25 22:21:47 2009//
+D
diff -Naur u-boot-2009.03_orig/board/pn62/CVS/Repository u-boot-2009.03/board/pn62/CVS/Repository
--- u-boot-2009.03_orig/board/pn62/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pn62/CVS/Repository    2009-03-25 15:24:50.697020600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/pn62
diff -Naur u-boot-2009.03_orig/board/pn62/CVS/Root u-boot-2009.03/board/pn62/CVS/Root
--- u-boot-2009.03_orig/board/pn62/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pn62/CVS/Root  2009-03-25 15:24:50.697020600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/ppmc7xx/CVS/Entries u-boot-2009.03/board/ppmc7xx/CVS/Entries
--- u-boot-2009.03_orig/board/ppmc7xx/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ppmc7xx/CVS/Entries    2009-03-25 15:57:39.762525700 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ppmc7xx.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/ppmc7xx/CVS/Entries.Extra u-boot-2009.03/board/ppmc7xx/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/ppmc7xx/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ppmc7xx/CVS/Entries.Extra      2009-03-25 15:57:39.762525700 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019707/
+/config.mk///1238019707/
+/flash.c///1238019707/
+/init.S///1238019707/
+/pci.c///1238019707/
+/ppmc7xx.c///1238019707/
+/u-boot.lds///1238019707/
diff -Naur u-boot-2009.03_orig/board/ppmc7xx/CVS/Entries.Extra.Old u-boot-2009.03/board/ppmc7xx/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/ppmc7xx/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ppmc7xx/CVS/Entries.Extra.Old  2009-03-25 15:24:51.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019707/
+/config.mk///1238019707/
+/flash.c///1238019707/
+/init.S///1238019707/
+/pci.c///1238019707/
+/ppmc7xx.c///1238019707/
+/u-boot.lds///1238019707/
diff -Naur u-boot-2009.03_orig/board/ppmc7xx/CVS/Entries.Old u-boot-2009.03/board/ppmc7xx/CVS/Entries.Old
--- u-boot-2009.03_orig/board/ppmc7xx/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ppmc7xx/CVS/Entries.Old        2009-03-25 15:24:51.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:47 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:47 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:47 2009//
+/init.S/1.1.1.1/Wed Mar 25 22:21:47 2009//
+/pci.c/1.1.1.1/Wed Mar 25 22:21:47 2009//
+/ppmc7xx.c/1.1.1.1/Wed Mar 25 22:21:47 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:47 2009//
+D
diff -Naur u-boot-2009.03_orig/board/ppmc7xx/CVS/Repository u-boot-2009.03/board/ppmc7xx/CVS/Repository
--- u-boot-2009.03_orig/board/ppmc7xx/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ppmc7xx/CVS/Repository 2009-03-25 15:24:51.072015800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/ppmc7xx
diff -Naur u-boot-2009.03_orig/board/ppmc7xx/CVS/Root u-boot-2009.03/board/ppmc7xx/CVS/Root
--- u-boot-2009.03_orig/board/ppmc7xx/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ppmc7xx/CVS/Root       2009-03-25 15:24:51.056391000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/ppmc8260/CVS/Entries u-boot-2009.03/board/ppmc8260/CVS/Entries
--- u-boot-2009.03_orig/board/ppmc8260/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ppmc8260/CVS/Entries   2009-03-25 15:57:39.856275100 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ppmc8260.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/strataflash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/ppmc8260/CVS/Entries.Extra u-boot-2009.03/board/ppmc8260/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/ppmc8260/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ppmc8260/CVS/Entries.Extra     2009-03-25 15:57:39.856275100 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019707/
+/config.mk///1238019707/
+/ppmc8260.c///1238019707/
+/strataflash.c///1238019707/
diff -Naur u-boot-2009.03_orig/board/ppmc8260/CVS/Entries.Extra.Old u-boot-2009.03/board/ppmc8260/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/ppmc8260/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ppmc8260/CVS/Entries.Extra.Old 2009-03-25 15:24:51.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019707/
+/config.mk///1238019707/
+/ppmc8260.c///1238019707/
+/strataflash.c///1238019707/
diff -Naur u-boot-2009.03_orig/board/ppmc8260/CVS/Entries.Old u-boot-2009.03/board/ppmc8260/CVS/Entries.Old
--- u-boot-2009.03_orig/board/ppmc8260/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ppmc8260/CVS/Entries.Old       2009-03-25 15:24:51.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:47 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:47 2009//
+/ppmc8260.c/1.1.1.1/Wed Mar 25 22:21:47 2009//
+/strataflash.c/1.1.1.1/Wed Mar 25 22:21:47 2009//
+D
diff -Naur u-boot-2009.03_orig/board/ppmc8260/CVS/Repository u-boot-2009.03/board/ppmc8260/CVS/Repository
--- u-boot-2009.03_orig/board/ppmc8260/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ppmc8260/CVS/Repository        2009-03-25 15:24:51.212639000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/ppmc8260
diff -Naur u-boot-2009.03_orig/board/ppmc8260/CVS/Root u-boot-2009.03/board/ppmc8260/CVS/Root
--- u-boot-2009.03_orig/board/ppmc8260/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ppmc8260/CVS/Root      2009-03-25 15:24:51.212639000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/prodrive/CVS/Entries u-boot-2009.03/board/prodrive/CVS/Entries
--- u-boot-2009.03_orig/board/prodrive/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/prodrive/CVS/Entries   2009-03-25 15:24:53.009491000 -0700
@@ -0,0 +1,5 @@
+D/alpr////
+D/common////
+D/p3mx////
+D/p3p440////
+D/pdnb3////
diff -Naur u-boot-2009.03_orig/board/prodrive/CVS/Entries.Extra u-boot-2009.03/board/prodrive/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/prodrive/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/prodrive/CVS/Entries.Extra     2009-03-25 15:24:53.009491000 -0700
@@ -0,0 +1,5 @@
+D/alpr////
+D/common////
+D/p3mx////
+D/p3p440////
+D/pdnb3////
diff -Naur u-boot-2009.03_orig/board/prodrive/CVS/Repository u-boot-2009.03/board/prodrive/CVS/Repository
--- u-boot-2009.03_orig/board/prodrive/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/prodrive/CVS/Repository        2009-03-25 15:24:51.322012600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/prodrive
diff -Naur u-boot-2009.03_orig/board/prodrive/CVS/Root u-boot-2009.03/board/prodrive/CVS/Root
--- u-boot-2009.03_orig/board/prodrive/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/prodrive/CVS/Root      2009-03-25 15:24:51.322012600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/prodrive/alpr/CVS/Entries u-boot-2009.03/board/prodrive/alpr/CVS/Entries
--- u-boot-2009.03_orig/board/prodrive/alpr/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/prodrive/alpr/CVS/Entries      2009-03-25 15:57:39.950024500 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/alpr.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fpga.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nand.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/prodrive/alpr/CVS/Entries.Extra u-boot-2009.03/board/prodrive/alpr/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/prodrive/alpr/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/prodrive/alpr/CVS/Entries.Extra        2009-03-25 15:57:39.950024500 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019708/
+/alpr.c///1238019708/
+/config.mk///1238019708/
+/fpga.c///1238019708/
+/init.S///1238019708/
+/nand.c///1238019708/
+/u-boot.lds///1238019708/
diff -Naur u-boot-2009.03_orig/board/prodrive/alpr/CVS/Entries.Extra.Old u-boot-2009.03/board/prodrive/alpr/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/prodrive/alpr/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/prodrive/alpr/CVS/Entries.Extra.Old    2009-03-25 15:24:51.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019708/
+/alpr.c///1238019708/
+/config.mk///1238019708/
+/fpga.c///1238019708/
+/init.S///1238019708/
+/nand.c///1238019708/
+/u-boot.lds///1238019708/
diff -Naur u-boot-2009.03_orig/board/prodrive/alpr/CVS/Entries.Old u-boot-2009.03/board/prodrive/alpr/CVS/Entries.Old
--- u-boot-2009.03_orig/board/prodrive/alpr/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/prodrive/alpr/CVS/Entries.Old  2009-03-25 15:24:51.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:48 2009//
+/alpr.c/1.1.1.1/Wed Mar 25 22:21:48 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:48 2009//
+/fpga.c/1.1.1.1/Wed Mar 25 22:21:48 2009//
+/init.S/1.1.1.1/Wed Mar 25 22:21:48 2009//
+/nand.c/1.1.1.1/Wed Mar 25 22:21:48 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:48 2009//
+D
diff -Naur u-boot-2009.03_orig/board/prodrive/alpr/CVS/Repository u-boot-2009.03/board/prodrive/alpr/CVS/Repository
--- u-boot-2009.03_orig/board/prodrive/alpr/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/prodrive/alpr/CVS/Repository   2009-03-25 15:24:51.337637400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/prodrive/alpr
diff -Naur u-boot-2009.03_orig/board/prodrive/alpr/CVS/Root u-boot-2009.03/board/prodrive/alpr/CVS/Root
--- u-boot-2009.03_orig/board/prodrive/alpr/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/prodrive/alpr/CVS/Root 2009-03-25 15:24:51.337637400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/prodrive/common/CVS/Entries u-boot-2009.03/board/prodrive/common/CVS/Entries
--- u-boot-2009.03_orig/board/prodrive/common/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/prodrive/common/CVS/Entries    2009-03-25 15:57:40.012524100 -0700
@@ -0,0 +1,3 @@
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fpga.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/prodrive/common/CVS/Entries.Extra u-boot-2009.03/board/prodrive/common/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/prodrive/common/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/prodrive/common/CVS/Entries.Extra      2009-03-25 15:57:40.012524100 -0700
@@ -0,0 +1,2 @@
+/flash.c///1238019708/
+/fpga.c///1238019708/
diff -Naur u-boot-2009.03_orig/board/prodrive/common/CVS/Entries.Extra.Old u-boot-2009.03/board/prodrive/common/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/prodrive/common/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/prodrive/common/CVS/Entries.Extra.Old  2009-03-25 15:24:51.000000000 -0700
@@ -0,0 +1,2 @@
+/flash.c///1238019708/
+/fpga.c///1238019708/
diff -Naur u-boot-2009.03_orig/board/prodrive/common/CVS/Entries.Old u-boot-2009.03/board/prodrive/common/CVS/Entries.Old
--- u-boot-2009.03_orig/board/prodrive/common/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/prodrive/common/CVS/Entries.Old        2009-03-25 15:24:51.000000000 -0700
@@ -0,0 +1,3 @@
+/flash.c/1.1.1.1/Wed Mar 25 22:21:48 2009//
+/fpga.c/1.1.1.1/Wed Mar 25 22:21:48 2009//
+D
diff -Naur u-boot-2009.03_orig/board/prodrive/common/CVS/Repository u-boot-2009.03/board/prodrive/common/CVS/Repository
--- u-boot-2009.03_orig/board/prodrive/common/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/prodrive/common/CVS/Repository 2009-03-25 15:24:51.728257400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/prodrive/common
diff -Naur u-boot-2009.03_orig/board/prodrive/common/CVS/Root u-boot-2009.03/board/prodrive/common/CVS/Root
--- u-boot-2009.03_orig/board/prodrive/common/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/prodrive/common/CVS/Root       2009-03-25 15:24:51.728257400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/prodrive/p3mx/CVS/Entries u-boot-2009.03/board/prodrive/p3mx/CVS/Entries
--- u-boot-2009.03_orig/board/prodrive/p3mx/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/prodrive/p3mx/CVS/Entries      2009-03-25 15:57:40.278147400 -0700
@@ -0,0 +1,19 @@
+/64460.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/eth.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/misc.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpsc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpsc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mv_eth.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mv_eth.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mv_regs.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/p3mx.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/p3mx.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ppc_error_no.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sdram_init.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/prodrive/p3mx/CVS/Entries.Extra u-boot-2009.03/board/prodrive/p3mx/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/prodrive/p3mx/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/prodrive/p3mx/CVS/Entries.Extra        2009-03-25 15:57:40.278147400 -0700
@@ -0,0 +1,18 @@
+/64460.h///1238019708/
+/Makefile///1238019708/
+/config.mk///1238019708/
+/eth.h///1238019708/
+/misc.S///1238019708/
+/mpsc.c///1238019708/
+/mpsc.h///1238019708/
+/mv_eth.c///1238019708/
+/mv_eth.h///1238019708/
+/mv_regs.h///1238019708/
+/p3mx.c///1238019708/
+/p3mx.h///1238019708/
+/pci.c///1238019708/
+/ppc_error_no.h///1238019708/
+/sdram_init.c///1238019708/
+/serial.c///1238019708/
+/serial.h///1238019708/
+/u-boot.lds///1238019708/
diff -Naur u-boot-2009.03_orig/board/prodrive/p3mx/CVS/Entries.Extra.Old u-boot-2009.03/board/prodrive/p3mx/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/prodrive/p3mx/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/prodrive/p3mx/CVS/Entries.Extra.Old    2009-03-25 15:24:52.000000000 -0700
@@ -0,0 +1,18 @@
+/64460.h///1238019708/
+/Makefile///1238019708/
+/config.mk///1238019708/
+/eth.h///1238019708/
+/misc.S///1238019708/
+/mpsc.c///1238019708/
+/mpsc.h///1238019708/
+/mv_eth.c///1238019708/
+/mv_eth.h///1238019708/
+/mv_regs.h///1238019708/
+/p3mx.c///1238019708/
+/p3mx.h///1238019708/
+/pci.c///1238019708/
+/ppc_error_no.h///1238019708/
+/sdram_init.c///1238019708/
+/serial.c///1238019708/
+/serial.h///1238019708/
+/u-boot.lds///1238019708/
diff -Naur u-boot-2009.03_orig/board/prodrive/p3mx/CVS/Entries.Old u-boot-2009.03/board/prodrive/p3mx/CVS/Entries.Old
--- u-boot-2009.03_orig/board/prodrive/p3mx/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/prodrive/p3mx/CVS/Entries.Old  2009-03-25 15:24:52.000000000 -0700
@@ -0,0 +1,19 @@
+/64460.h/1.1.1.1/Wed Mar 25 22:21:48 2009//
+/Makefile/1.1.1.1/Wed Mar 25 22:21:48 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:48 2009//
+/eth.h/1.1.1.1/Wed Mar 25 22:21:48 2009//
+/misc.S/1.1.1.1/Wed Mar 25 22:21:48 2009//
+/mpsc.c/1.1.1.1/Wed Mar 25 22:21:48 2009//
+/mpsc.h/1.1.1.1/Wed Mar 25 22:21:48 2009//
+/mv_eth.c/1.1.1.1/Wed Mar 25 22:21:48 2009//
+/mv_eth.h/1.1.1.1/Wed Mar 25 22:21:48 2009//
+/mv_regs.h/1.1.1.1/Wed Mar 25 22:21:48 2009//
+/p3mx.c/1.1.1.1/Wed Mar 25 22:21:48 2009//
+/p3mx.h/1.1.1.1/Wed Mar 25 22:21:48 2009//
+/pci.c/1.1.1.1/Wed Mar 25 22:21:48 2009//
+/ppc_error_no.h/1.1.1.1/Wed Mar 25 22:21:48 2009//
+/sdram_init.c/1.1.1.1/Wed Mar 25 22:21:48 2009//
+/serial.c/1.1.1.1/Wed Mar 25 22:21:48 2009//
+/serial.h/1.1.1.1/Wed Mar 25 22:21:48 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:48 2009//
+D
diff -Naur u-boot-2009.03_orig/board/prodrive/p3mx/CVS/Repository u-boot-2009.03/board/prodrive/p3mx/CVS/Repository
--- u-boot-2009.03_orig/board/prodrive/p3mx/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/prodrive/p3mx/CVS/Repository   2009-03-25 15:24:52.025128600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/prodrive/p3mx
diff -Naur u-boot-2009.03_orig/board/prodrive/p3mx/CVS/Root u-boot-2009.03/board/prodrive/p3mx/CVS/Root
--- u-boot-2009.03_orig/board/prodrive/p3mx/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/prodrive/p3mx/CVS/Root 2009-03-25 15:24:52.025128600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/prodrive/p3p440/CVS/Entries u-boot-2009.03/board/prodrive/p3p440/CVS/Entries
--- u-boot-2009.03_orig/board/prodrive/p3p440/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/prodrive/p3p440/CVS/Entries    2009-03-25 15:57:40.371896800 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/p3p440.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/p3p440.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/prodrive/p3p440/CVS/Entries.Extra u-boot-2009.03/board/prodrive/p3p440/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/prodrive/p3p440/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/prodrive/p3p440/CVS/Entries.Extra      2009-03-25 15:57:40.387521700 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019708/
+/config.mk///1238019708/
+/init.S///1238019708/
+/p3p440.c///1238019708/
+/p3p440.h///1238019708/
+/u-boot.lds///1238019708/
diff -Naur u-boot-2009.03_orig/board/prodrive/p3p440/CVS/Entries.Extra.Old u-boot-2009.03/board/prodrive/p3p440/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/prodrive/p3p440/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/prodrive/p3p440/CVS/Entries.Extra.Old  2009-03-25 15:24:52.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019708/
+/config.mk///1238019708/
+/init.S///1238019708/
+/p3p440.c///1238019708/
+/p3p440.h///1238019708/
+/u-boot.lds///1238019708/
diff -Naur u-boot-2009.03_orig/board/prodrive/p3p440/CVS/Entries.Old u-boot-2009.03/board/prodrive/p3p440/CVS/Entries.Old
--- u-boot-2009.03_orig/board/prodrive/p3p440/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/prodrive/p3p440/CVS/Entries.Old        2009-03-25 15:24:52.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:48 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:48 2009//
+/init.S/1.1.1.1/Wed Mar 25 22:21:48 2009//
+/p3p440.c/1.1.1.1/Wed Mar 25 22:21:48 2009//
+/p3p440.h/1.1.1.1/Wed Mar 25 22:21:48 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:48 2009//
+D
diff -Naur u-boot-2009.03_orig/board/prodrive/p3p440/CVS/Repository u-boot-2009.03/board/prodrive/p3p440/CVS/Repository
--- u-boot-2009.03_orig/board/prodrive/p3p440/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/prodrive/p3p440/CVS/Repository 2009-03-25 15:24:52.337624600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/prodrive/p3p440
diff -Naur u-boot-2009.03_orig/board/prodrive/p3p440/CVS/Root u-boot-2009.03/board/prodrive/p3p440/CVS/Root
--- u-boot-2009.03_orig/board/prodrive/p3p440/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/prodrive/p3p440/CVS/Root       2009-03-25 15:24:52.337624600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/prodrive/pdnb3/CVS/Entries u-boot-2009.03/board/prodrive/pdnb3/CVS/Entries
--- u-boot-2009.03_orig/board/prodrive/pdnb3/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/prodrive/pdnb3/CVS/Entries     2009-03-25 15:57:40.450021300 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nand.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pdnb3.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/prodrive/pdnb3/CVS/Entries.Extra u-boot-2009.03/board/prodrive/pdnb3/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/prodrive/pdnb3/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/prodrive/pdnb3/CVS/Entries.Extra       2009-03-25 15:57:40.450021300 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019708/
+/config.mk///1238019708/
+/flash.c///1238019708/
+/nand.c///1238019708/
+/pdnb3.c///1238019708/
+/u-boot.lds///1238019708/
diff -Naur u-boot-2009.03_orig/board/prodrive/pdnb3/CVS/Entries.Extra.Old u-boot-2009.03/board/prodrive/pdnb3/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/prodrive/pdnb3/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/prodrive/pdnb3/CVS/Entries.Extra.Old   2009-03-25 15:24:52.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019708/
+/config.mk///1238019708/
+/flash.c///1238019708/
+/nand.c///1238019708/
+/pdnb3.c///1238019708/
+/u-boot.lds///1238019708/
diff -Naur u-boot-2009.03_orig/board/prodrive/pdnb3/CVS/Entries.Old u-boot-2009.03/board/prodrive/pdnb3/CVS/Entries.Old
--- u-boot-2009.03_orig/board/prodrive/pdnb3/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/prodrive/pdnb3/CVS/Entries.Old 2009-03-25 15:24:52.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:48 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:48 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:48 2009//
+/nand.c/1.1.1.1/Wed Mar 25 22:21:48 2009//
+/pdnb3.c/1.1.1.1/Wed Mar 25 22:21:48 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:48 2009//
+D
diff -Naur u-boot-2009.03_orig/board/prodrive/pdnb3/CVS/Repository u-boot-2009.03/board/prodrive/pdnb3/CVS/Repository
--- u-boot-2009.03_orig/board/prodrive/pdnb3/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/prodrive/pdnb3/CVS/Repository  2009-03-25 15:24:52.650120600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/prodrive/pdnb3
diff -Naur u-boot-2009.03_orig/board/prodrive/pdnb3/CVS/Root u-boot-2009.03/board/prodrive/pdnb3/CVS/Root
--- u-boot-2009.03_orig/board/prodrive/pdnb3/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/prodrive/pdnb3/CVS/Root        2009-03-25 15:24:52.650120600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/psyent/CVS/Entries u-boot-2009.03/board/psyent/CVS/Entries
--- u-boot-2009.03_orig/board/psyent/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/psyent/CVS/Entries     2009-03-25 15:24:53.478235000 -0700
@@ -0,0 +1,3 @@
+D/common////
+D/pci5441////
+D/pk1c20////
diff -Naur u-boot-2009.03_orig/board/psyent/CVS/Entries.Extra u-boot-2009.03/board/psyent/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/psyent/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/psyent/CVS/Entries.Extra       2009-03-25 15:24:53.478235000 -0700
@@ -0,0 +1,3 @@
+D/common////
+D/pci5441////
+D/pk1c20////
diff -Naur u-boot-2009.03_orig/board/psyent/CVS/Repository u-boot-2009.03/board/psyent/CVS/Repository
--- u-boot-2009.03_orig/board/psyent/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/psyent/CVS/Repository  2009-03-25 15:24:53.118864600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/psyent
diff -Naur u-boot-2009.03_orig/board/psyent/CVS/Root u-boot-2009.03/board/psyent/CVS/Root
--- u-boot-2009.03_orig/board/psyent/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/psyent/CVS/Root        2009-03-25 15:24:53.118864600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/psyent/common/CVS/Entries u-boot-2009.03/board/psyent/common/CVS/Entries
--- u-boot-2009.03_orig/board/psyent/common/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/psyent/common/CVS/Entries      2009-03-25 15:57:40.512520900 -0700
@@ -0,0 +1,2 @@
+/AMDLV065D.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/psyent/common/CVS/Entries.Extra u-boot-2009.03/board/psyent/common/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/psyent/common/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/psyent/common/CVS/Entries.Extra        2009-03-25 15:57:40.512520900 -0700
@@ -0,0 +1 @@
+/AMDLV065D.c///1238019708/
diff -Naur u-boot-2009.03_orig/board/psyent/common/CVS/Entries.Extra.Old u-boot-2009.03/board/psyent/common/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/psyent/common/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/psyent/common/CVS/Entries.Extra.Old    2009-03-25 15:24:53.000000000 -0700
@@ -0,0 +1 @@
+/AMDLV065D.c///1238019708/
diff -Naur u-boot-2009.03_orig/board/psyent/common/CVS/Entries.Old u-boot-2009.03/board/psyent/common/CVS/Entries.Old
--- u-boot-2009.03_orig/board/psyent/common/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/psyent/common/CVS/Entries.Old  2009-03-25 15:24:53.000000000 -0700
@@ -0,0 +1,2 @@
+/AMDLV065D.c/1.1.1.1/Wed Mar 25 22:21:48 2009//
+D
diff -Naur u-boot-2009.03_orig/board/psyent/common/CVS/Repository u-boot-2009.03/board/psyent/common/CVS/Repository
--- u-boot-2009.03_orig/board/psyent/common/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/psyent/common/CVS/Repository   2009-03-25 15:24:53.150114200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/psyent/common
diff -Naur u-boot-2009.03_orig/board/psyent/common/CVS/Root u-boot-2009.03/board/psyent/common/CVS/Root
--- u-boot-2009.03_orig/board/psyent/common/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/psyent/common/CVS/Root 2009-03-25 15:24:53.150114200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/psyent/pci5441/CVS/Entries u-boot-2009.03/board/psyent/pci5441/CVS/Entries
--- u-boot-2009.03_orig/board/psyent/pci5441/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/psyent/pci5441/CVS/Entries     2009-03-25 15:57:40.575020500 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci5441.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/psyent/pci5441/CVS/Entries.Extra u-boot-2009.03/board/psyent/pci5441/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/psyent/pci5441/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/psyent/pci5441/CVS/Entries.Extra       2009-03-25 15:57:40.575020500 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019708/
+/config.mk///1238019708/
+/pci5441.c///1238019708/
+/u-boot.lds///1238019708/
diff -Naur u-boot-2009.03_orig/board/psyent/pci5441/CVS/Entries.Extra.Old u-boot-2009.03/board/psyent/pci5441/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/psyent/pci5441/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/psyent/pci5441/CVS/Entries.Extra.Old   2009-03-25 15:24:53.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019708/
+/config.mk///1238019708/
+/pci5441.c///1238019708/
+/u-boot.lds///1238019708/
diff -Naur u-boot-2009.03_orig/board/psyent/pci5441/CVS/Entries.Old u-boot-2009.03/board/psyent/pci5441/CVS/Entries.Old
--- u-boot-2009.03_orig/board/psyent/pci5441/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/psyent/pci5441/CVS/Entries.Old 2009-03-25 15:24:53.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:48 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:48 2009//
+/pci5441.c/1.1.1.1/Wed Mar 25 22:21:48 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:48 2009//
+D
diff -Naur u-boot-2009.03_orig/board/psyent/pci5441/CVS/Repository u-boot-2009.03/board/psyent/pci5441/CVS/Repository
--- u-boot-2009.03_orig/board/psyent/pci5441/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/psyent/pci5441/CVS/Repository  2009-03-25 15:24:53.228238200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/psyent/pci5441
diff -Naur u-boot-2009.03_orig/board/psyent/pci5441/CVS/Root u-boot-2009.03/board/psyent/pci5441/CVS/Root
--- u-boot-2009.03_orig/board/psyent/pci5441/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/psyent/pci5441/CVS/Root        2009-03-25 15:24:53.212613400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/psyent/pk1c20/CVS/Entries u-boot-2009.03/board/psyent/pk1c20/CVS/Entries
--- u-boot-2009.03_orig/board/psyent/pk1c20/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/psyent/pk1c20/CVS/Entries      2009-03-25 15:57:40.637520100 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/led.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pk1c20.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/psyent/pk1c20/CVS/Entries.Extra u-boot-2009.03/board/psyent/pk1c20/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/psyent/pk1c20/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/psyent/pk1c20/CVS/Entries.Extra        2009-03-25 15:57:40.637520100 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019709/
+/config.mk///1238019708/
+/led.c///1238019708/
+/pk1c20.c///1238019709/
+/u-boot.lds///1238019709/
diff -Naur u-boot-2009.03_orig/board/psyent/pk1c20/CVS/Entries.Extra.Old u-boot-2009.03/board/psyent/pk1c20/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/psyent/pk1c20/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/psyent/pk1c20/CVS/Entries.Extra.Old    2009-03-25 15:24:53.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019709/
+/config.mk///1238019708/
+/led.c///1238019708/
+/pk1c20.c///1238019709/
+/u-boot.lds///1238019709/
diff -Naur u-boot-2009.03_orig/board/psyent/pk1c20/CVS/Entries.Old u-boot-2009.03/board/psyent/pk1c20/CVS/Entries.Old
--- u-boot-2009.03_orig/board/psyent/pk1c20/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/psyent/pk1c20/CVS/Entries.Old  2009-03-25 15:24:53.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:49 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:48 2009//
+/led.c/1.1.1.1/Wed Mar 25 22:21:48 2009//
+/pk1c20.c/1.1.1.1/Wed Mar 25 22:21:49 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:49 2009//
+D
diff -Naur u-boot-2009.03_orig/board/psyent/pk1c20/CVS/Repository u-boot-2009.03/board/psyent/pk1c20/CVS/Repository
--- u-boot-2009.03_orig/board/psyent/pk1c20/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/psyent/pk1c20/CVS/Repository   2009-03-25 15:24:53.321987000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/psyent/pk1c20
diff -Naur u-boot-2009.03_orig/board/psyent/pk1c20/CVS/Root u-boot-2009.03/board/psyent/pk1c20/CVS/Root
--- u-boot-2009.03_orig/board/psyent/pk1c20/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/psyent/pk1c20/CVS/Root 2009-03-25 15:24:53.321987000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/purple/CVS/Entries u-boot-2009.03/board/purple/CVS/Entries
--- u-boot-2009.03_orig/board/purple/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/purple/CVS/Entries     2009-03-25 15:57:40.715644600 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/purple.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sconsole.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sconsole.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/purple/CVS/Entries.Extra u-boot-2009.03/board/purple/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/purple/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/purple/CVS/Entries.Extra       2009-03-25 15:57:40.715644600 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019709/
+/config.mk///1238019709/
+/flash.c///1238019709/
+/lowlevel_init.S///1238019709/
+/purple.c///1238019709/
+/sconsole.c///1238019709/
+/sconsole.h///1238019709/
+/u-boot.lds///1238019709/
diff -Naur u-boot-2009.03_orig/board/purple/CVS/Entries.Extra.Old u-boot-2009.03/board/purple/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/purple/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/purple/CVS/Entries.Extra.Old   2009-03-25 15:24:53.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019709/
+/config.mk///1238019709/
+/flash.c///1238019709/
+/lowlevel_init.S///1238019709/
+/purple.c///1238019709/
+/sconsole.c///1238019709/
+/sconsole.h///1238019709/
+/u-boot.lds///1238019709/
diff -Naur u-boot-2009.03_orig/board/purple/CVS/Entries.Old u-boot-2009.03/board/purple/CVS/Entries.Old
--- u-boot-2009.03_orig/board/purple/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/purple/CVS/Entries.Old 2009-03-25 15:24:53.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:49 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:49 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:49 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:49 2009//
+/purple.c/1.1.1.1/Wed Mar 25 22:21:49 2009//
+/sconsole.c/1.1.1.1/Wed Mar 25 22:21:49 2009//
+/sconsole.h/1.1.1.1/Wed Mar 25 22:21:49 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:49 2009//
+D
diff -Naur u-boot-2009.03_orig/board/purple/CVS/Repository u-boot-2009.03/board/purple/CVS/Repository
--- u-boot-2009.03_orig/board/purple/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/purple/CVS/Repository  2009-03-25 15:24:53.509484800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/purple
diff -Naur u-boot-2009.03_orig/board/purple/CVS/Root u-boot-2009.03/board/purple/CVS/Root
--- u-boot-2009.03_orig/board/purple/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/purple/CVS/Root        2009-03-25 15:24:53.509484800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/pxa255_idp/CVS/Entries u-boot-2009.03/board/pxa255_idp/CVS/Entries
--- u-boot-2009.03_orig/board/pxa255_idp/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pxa255_idp/CVS/Entries 2009-03-25 15:57:40.793769100 -0700
@@ -0,0 +1,10 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/idp_notes.txt/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pxa_idp.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pxa_reg_calcs.out/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pxa_reg_calcs.py/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/pxa255_idp/CVS/Entries.Extra u-boot-2009.03/board/pxa255_idp/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/pxa255_idp/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pxa255_idp/CVS/Entries.Extra   2009-03-25 15:57:40.793769100 -0700
@@ -0,0 +1,9 @@
+/Makefile///1238019709/
+/README///1238019709/
+/config.mk///1238019709/
+/idp_notes.txt///1238019709/
+/lowlevel_init.S///1238019709/
+/pxa_idp.c///1238019709/
+/pxa_reg_calcs.out///1238019709/
+/pxa_reg_calcs.py///1238019709/
+/u-boot.lds///1238019709/
diff -Naur u-boot-2009.03_orig/board/pxa255_idp/CVS/Entries.Extra.Old u-boot-2009.03/board/pxa255_idp/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/pxa255_idp/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pxa255_idp/CVS/Entries.Extra.Old       2009-03-25 15:24:53.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile///1238019709/
+/README///1238019709/
+/config.mk///1238019709/
+/idp_notes.txt///1238019709/
+/lowlevel_init.S///1238019709/
+/pxa_idp.c///1238019709/
+/pxa_reg_calcs.out///1238019709/
+/pxa_reg_calcs.py///1238019709/
+/u-boot.lds///1238019709/
diff -Naur u-boot-2009.03_orig/board/pxa255_idp/CVS/Entries.Old u-boot-2009.03/board/pxa255_idp/CVS/Entries.Old
--- u-boot-2009.03_orig/board/pxa255_idp/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pxa255_idp/CVS/Entries.Old     2009-03-25 15:24:53.000000000 -0700
@@ -0,0 +1,10 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:49 2009//
+/README/1.1.1.1/Wed Mar 25 22:21:49 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:49 2009//
+/idp_notes.txt/1.1.1.1/Wed Mar 25 22:21:49 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:49 2009//
+/pxa_idp.c/1.1.1.1/Wed Mar 25 22:21:49 2009//
+/pxa_reg_calcs.out/1.1.1.1/Wed Mar 25 22:21:49 2009//
+/pxa_reg_calcs.py/1.1.1.1/Wed Mar 25 22:21:49 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:49 2009//
+D
diff -Naur u-boot-2009.03_orig/board/pxa255_idp/CVS/Repository u-boot-2009.03/board/pxa255_idp/CVS/Repository
--- u-boot-2009.03_orig/board/pxa255_idp/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pxa255_idp/CVS/Repository      2009-03-25 15:24:53.634484000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/pxa255_idp
diff -Naur u-boot-2009.03_orig/board/pxa255_idp/CVS/Root u-boot-2009.03/board/pxa255_idp/CVS/Root
--- u-boot-2009.03_orig/board/pxa255_idp/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/pxa255_idp/CVS/Root    2009-03-25 15:24:53.634484000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/qaz/CVS/Entries u-boot-2009.03/board/qaz/CVS/Entries
--- u-boot-2009.03_orig/board/qaz/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/qaz/CVS/Entries        2009-03-25 17:49:17.483629900 -0700
@@ -0,0 +1,2 @@
+D/de1_or1k////
+D/Dev_Kit_060804////
diff -Naur u-boot-2009.03_orig/board/qaz/CVS/Entries.Extra u-boot-2009.03/board/qaz/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/qaz/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/qaz/CVS/Entries.Extra  2009-03-25 17:49:17.499254800 -0700
@@ -0,0 +1,2 @@
+D/de1_or1k////
+D/Dev_Kit_060804////
diff -Naur u-boot-2009.03_orig/board/qaz/CVS/Entries.Extra.Old u-boot-2009.03/board/qaz/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/qaz/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/qaz/CVS/Entries.Extra.Old      2009-03-25 17:49:14.000000000 -0700
@@ -0,0 +1 @@
+D/de1_or1k////
diff -Naur u-boot-2009.03_orig/board/qaz/CVS/Entries.Old u-boot-2009.03/board/qaz/CVS/Entries.Old
--- u-boot-2009.03_orig/board/qaz/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/qaz/CVS/Entries.Old    2009-03-25 17:49:14.000000000 -0700
@@ -0,0 +1 @@
+D/de1_or1k////
diff -Naur u-boot-2009.03_orig/board/qaz/CVS/Repository u-boot-2009.03/board/qaz/CVS/Repository
--- u-boot-2009.03_orig/board/qaz/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/qaz/CVS/Repository     2009-03-25 17:49:08.139939700 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/qaz
diff -Naur u-boot-2009.03_orig/board/qaz/CVS/Root u-boot-2009.03/board/qaz/CVS/Root
--- u-boot-2009.03_orig/board/qaz/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/qaz/CVS/Root   2009-03-25 17:49:08.139939700 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/qaz/Dev_Kit_060804/CVS/Entries u-boot-2009.03/board/qaz/Dev_Kit_060804/CVS/Entries
--- u-boot-2009.03_orig/board/qaz/Dev_Kit_060804/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/qaz/Dev_Kit_060804/CVS/Entries 2009-03-25 17:51:39.467096200 -0700
@@ -0,0 +1,4 @@
+/Dev_Kit_060804.c/1.1/Tue Mar 24 20:34:53 2009//
+/Makefile/1.1/Tue Mar 24 20:34:53 2009//
+/u-boot.lds/1.1/Tue Mar 24 20:34:53 2009//
+D
diff -Naur u-boot-2009.03_orig/board/qaz/Dev_Kit_060804/CVS/Entries.Extra u-boot-2009.03/board/qaz/Dev_Kit_060804/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/qaz/Dev_Kit_060804/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/qaz/Dev_Kit_060804/CVS/Entries.Extra   2009-03-25 17:51:39.467096200 -0700
@@ -0,0 +1,3 @@
+/Dev_Kit_060804.c///1238028698/
+/Makefile///1238028698/
+/u-boot.lds///1238028699/
diff -Naur u-boot-2009.03_orig/board/qaz/Dev_Kit_060804/CVS/Entries.Extra.Old u-boot-2009.03/board/qaz/Dev_Kit_060804/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/qaz/Dev_Kit_060804/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/qaz/Dev_Kit_060804/CVS/Entries.Extra.Old       2009-03-25 17:51:24.000000000 -0700
@@ -0,0 +1,3 @@
+/Dev_Kit_060804.c////
+/u-boot.lds////
+/Makefile////
diff -Naur u-boot-2009.03_orig/board/qaz/Dev_Kit_060804/CVS/Entries.Old u-boot-2009.03/board/qaz/Dev_Kit_060804/CVS/Entries.Old
--- u-boot-2009.03_orig/board/qaz/Dev_Kit_060804/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/qaz/Dev_Kit_060804/CVS/Entries.Old     2009-03-25 17:51:24.000000000 -0700
@@ -0,0 +1,4 @@
+/Dev_Kit_060804.c/0/Initial Dev_Kit_060804.c//
+/u-boot.lds/0/Initial u-boot.lds//
+/Makefile/0/Initial Makefile//
+D
diff -Naur u-boot-2009.03_orig/board/qaz/Dev_Kit_060804/CVS/Repository u-boot-2009.03/board/qaz/Dev_Kit_060804/CVS/Repository
--- u-boot-2009.03_orig/board/qaz/Dev_Kit_060804/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/qaz/Dev_Kit_060804/CVS/Repository      2009-03-25 17:49:17.483629900 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/qaz/Dev_Kit_060804
diff -Naur u-boot-2009.03_orig/board/qaz/Dev_Kit_060804/CVS/Root u-boot-2009.03/board/qaz/Dev_Kit_060804/CVS/Root
--- u-boot-2009.03_orig/board/qaz/Dev_Kit_060804/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/qaz/Dev_Kit_060804/CVS/Root    2009-03-25 17:49:17.483629900 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/qaz/Dev_Kit_060804/Dev_Kit_060804.c u-boot-2009.03/board/qaz/Dev_Kit_060804/Dev_Kit_060804.c
--- u-boot-2009.03_orig/board/qaz/Dev_Kit_060804/Dev_Kit_060804.c       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/qaz/Dev_Kit_060804/Dev_Kit_060804.c    2009-03-24 13:34:53.471013000 -0700
@@ -0,0 +1,100 @@
+/*
+ * (C) Copyright ????
+ * XXX, XXX@XXX.org
+ *
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <common.h>
+#include <command.h>
+#include <malloc.h>
+
+
+DECLARE_GLOBAL_DATA_PTR;
+
+// extern unsigned int _data_start, _data_lma_start, _data_end;
+// extern unsigned int _bss_start, _bss_end;
+
+int board_early_init_f (void)
+{
+//   memcpy( (void *)_data_start, (void *)_data_lma_start, (_data_end - _data_start) );
+  
+//   memset ( (void *)_bss_start, 0, ( _bss_end - _bss_start ) );
+
+       return 0;
+}
+
+
+/*
+ * Check Board Identity:
+ */
+int checkboard (void)
+{
+       char str[64];
+       int i = getenv_r ("serial#", str, sizeof(str));
+
+       puts ("Board: ");
+
+       if (i == -1) {
+               puts ("### No HW ID - assuming ???");
+       } else {
+               puts(str);
+       }
+
+       putc ('\n');
+
+       return 0;
+}
+
+
+
+/*
+ * post code for de1 board
+ */
+void set_de1_post( unsigned int post_code )
+{
+       gd->bd->post_code = post_code;
+  
+  *((volatile unsigned int *)(0x5ffffffc)) = gd->bd->post_code;
+  *((volatile unsigned int *)(0x5ffffffc)) = 0xcea5e0ff;
+}
+
+
+void init_de1_post( void )
+{
+       gd->bd->post_code = 0;
+  
+  *((volatile unsigned int *)(0x5ffffffc)) = gd->bd->post_code;
+  *((volatile unsigned int *)(0x5ffffffc)) = 0xcea5e0ff;
+}
+
+
+int de1_post_incr( void )
+{
+       gd->bd->post_code++;
+  
+  *((volatile unsigned int *)(0x5ffffffc)) = gd->bd->post_code;
+  *((volatile unsigned int *)(0x5ffffffc)) = 0xcea5e0ff;
+  
+  return(0);
+}
+
+
+
diff -Naur u-boot-2009.03_orig/board/qaz/Dev_Kit_060804/Makefile u-boot-2009.03/board/qaz/Dev_Kit_060804/Makefile
--- u-boot-2009.03_orig/board/qaz/Dev_Kit_060804/Makefile       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/qaz/Dev_Kit_060804/Makefile    2009-03-24 13:34:53.471013000 -0700
@@ -0,0 +1,50 @@
+#
+# (C) Copyright 2000-2006
+# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+#
+# See file CREDITS for list of people who contributed to this
+# project.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA
+#
+
+include $(TOPDIR)/config.mk
+
+LIB    = $(obj)lib$(BOARD).a
+
+COBJS  := Dev_Kit_060804.o
+
+SRCS   := $(SOBJS:.o=.S) $(COBJS:.o=.c)
+OBJS   := $(addprefix $(obj),$(COBJS))
+SOBJS  := $(addprefix $(obj),$(SOBJS))
+
+$(LIB):        $(obj).depend $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
+
+clean:
+       rm -f $(SOBJS) $(OBJS)
+
+distclean:     clean
+       rm -f $(LIB) core *.bak $(obj).depend
+
+#########################################################################
+
+# defines $(obj).depend target
+include $(SRCTREE)/rules.mk
+
+sinclude $(obj).depend
+
+#########################################################################
diff -Naur u-boot-2009.03_orig/board/qaz/Dev_Kit_060804/u-boot.lds u-boot-2009.03/board/qaz/Dev_Kit_060804/u-boot.lds
--- u-boot-2009.03_orig/board/qaz/Dev_Kit_060804/u-boot.lds     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/qaz/Dev_Kit_060804/u-boot.lds  2009-03-24 13:34:53.455424000 -0700
@@ -0,0 +1,67 @@
+/* ------------------------------ */
+/* link script */
+/* ------------------------------ */
+
+MEMORY
+        {
+        boot_rom_1        : ORIGIN = 0x00000000, LENGTH = 0x00020000
+        mem_bank_3        : ORIGIN = 0x30000000, LENGTH = 0x00010000
+        }
+        
+ENTRY(_start)
+
+SECTIONS
+{
+        .text ALIGN(0x4):
+        {
+          . = 0x100;
+          *(.vectors)
+                   __text_start = .;
+          . = 0x2000;  
+          *(.text)
+               __text_end = .;
+        } > boot_rom_1
+
+        .rodata ALIGN(0x4):
+        {
+               __rodata_start = .;
+          *(.rodata)
+          *(.rodata.*)
+               __rodata_end = .;
+        } > boot_rom_1
+
+       .u_boot_cmd ALIGN(0x4):
+       {
+               . = .;
+         ___u_boot_cmd_start = .;
+               *(.u_boot_cmd)
+         ___u_boot_cmd_end = .;
+       } > boot_rom_1
+
+       . = ALIGN(4);
+               __data_lma_start = .;
+        .data : 
+        {
+               __data_start = .;
+          *(.data)
+               __data_end = .;
+        } > boot_rom_1
+        
+       . = ALIGN(4);
+        .bss (NOLOAD):
+        {
+               __bss_start = .;
+          *(.bss)
+               __bss_end = .;
+        } > mem_bank_3
+
+       . = ALIGN(4);
+        .stack (NOLOAD) :
+        {
+               __stack_start = .;
+          *(.stack)
+               __stack_end = .;
+        } > mem_bank_3
+        
+       __end = . ;
+}
diff -Naur u-boot-2009.03_orig/board/qaz/de1_or1k/CVS/Entries u-boot-2009.03/board/qaz/de1_or1k/CVS/Entries
--- u-boot-2009.03_orig/board/qaz/de1_or1k/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/qaz/de1_or1k/CVS/Entries       2009-03-25 17:51:39.779594200 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1/Tue Mar 24 20:34:53 2009//
+/de1_or1k.c/1.1/Tue Mar 24 20:34:53 2009//
+/u-boot.lds/1.1/Tue Mar 24 20:34:53 2009//
+D
diff -Naur u-boot-2009.03_orig/board/qaz/de1_or1k/CVS/Entries.Extra u-boot-2009.03/board/qaz/de1_or1k/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/qaz/de1_or1k/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/qaz/de1_or1k/CVS/Entries.Extra 2009-03-25 17:51:39.779594200 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238028699/
+/de1_or1k.c///1238028699/
+/u-boot.lds///1238028699/
diff -Naur u-boot-2009.03_orig/board/qaz/de1_or1k/CVS/Entries.Extra.Old u-boot-2009.03/board/qaz/de1_or1k/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/qaz/de1_or1k/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/qaz/de1_or1k/CVS/Entries.Extra.Old     2009-03-25 17:51:24.000000000 -0700
@@ -0,0 +1,3 @@
+/de1_or1k.c////
+/u-boot.lds////
+/Makefile////
diff -Naur u-boot-2009.03_orig/board/qaz/de1_or1k/CVS/Entries.Old u-boot-2009.03/board/qaz/de1_or1k/CVS/Entries.Old
--- u-boot-2009.03_orig/board/qaz/de1_or1k/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/qaz/de1_or1k/CVS/Entries.Old   2009-03-25 17:51:24.000000000 -0700
@@ -0,0 +1,4 @@
+/de1_or1k.c/0/Initial de1_or1k.c//
+/u-boot.lds/0/Initial u-boot.lds//
+/Makefile/0/Initial Makefile//
+D
diff -Naur u-boot-2009.03_orig/board/qaz/de1_or1k/CVS/Repository u-boot-2009.03/board/qaz/de1_or1k/CVS/Repository
--- u-boot-2009.03_orig/board/qaz/de1_or1k/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/qaz/de1_or1k/CVS/Repository    2009-03-25 17:49:14.030527000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/qaz/de1_or1k
diff -Naur u-boot-2009.03_orig/board/qaz/de1_or1k/CVS/Root u-boot-2009.03/board/qaz/de1_or1k/CVS/Root
--- u-boot-2009.03_orig/board/qaz/de1_or1k/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/qaz/de1_or1k/CVS/Root  2009-03-25 17:49:14.014902100 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/qaz/de1_or1k/Makefile u-boot-2009.03/board/qaz/de1_or1k/Makefile
--- u-boot-2009.03_orig/board/qaz/de1_or1k/Makefile     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/qaz/de1_or1k/Makefile  2009-03-24 13:34:53.096877000 -0700
@@ -0,0 +1,50 @@
+#
+# (C) Copyright 2000-2006
+# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+#
+# See file CREDITS for list of people who contributed to this
+# project.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA
+#
+
+include $(TOPDIR)/config.mk
+
+LIB    = $(obj)lib$(BOARD).a
+
+COBJS  := de1_or1k.o
+
+SRCS   := $(SOBJS:.o=.S) $(COBJS:.o=.c)
+OBJS   := $(addprefix $(obj),$(COBJS))
+SOBJS  := $(addprefix $(obj),$(SOBJS))
+
+$(LIB):        $(obj).depend $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
+
+clean:
+       rm -f $(SOBJS) $(OBJS)
+
+distclean:     clean
+       rm -f $(LIB) core *.bak $(obj).depend
+
+#########################################################################
+
+# defines $(obj).depend target
+include $(SRCTREE)/rules.mk
+
+sinclude $(obj).depend
+
+#########################################################################
diff -Naur u-boot-2009.03_orig/board/qaz/de1_or1k/de1_or1k.c u-boot-2009.03/board/qaz/de1_or1k/de1_or1k.c
--- u-boot-2009.03_orig/board/qaz/de1_or1k/de1_or1k.c   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/qaz/de1_or1k/de1_or1k.c        2009-03-24 13:34:53.081288000 -0700
@@ -0,0 +1,100 @@
+/*
+ * (C) Copyright ????
+ * XXX, XXX@XXX.org
+ *
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <common.h>
+#include <command.h>
+#include <malloc.h>
+
+
+DECLARE_GLOBAL_DATA_PTR;
+
+// extern unsigned int _data_start, _data_lma_start, _data_end;
+// extern unsigned int _bss_start, _bss_end;
+
+int board_early_init_f (void)
+{
+//   memcpy( (void *)_data_start, (void *)_data_lma_start, (_data_end - _data_start) );
+  
+//   memset ( (void *)_bss_start, 0, ( _bss_end - _bss_start ) );
+
+       return 0;
+}
+
+
+/*
+ * Check Board Identity:
+ */
+int checkboard (void)
+{
+       char str[64];
+       int i = getenv_r ("serial#", str, sizeof(str));
+
+       puts ("Board: ");
+
+       if (i == -1) {
+               puts ("### No HW ID - assuming DE1_OR1k");
+       } else {
+               puts(str);
+       }
+
+       putc ('\n');
+
+       return 0;
+}
+
+
+
+/*
+ * post code for de1 board
+ */
+void set_de1_post( unsigned int post_code )
+{
+       gd->bd->post_code = post_code;
+  
+  *((volatile unsigned int *)(0x2ffffffc)) = gd->bd->post_code;
+  *((volatile unsigned int *)(0x2ffffffc)) = 0xcea5e0ff;
+}
+
+
+void init_de1_post( void )
+{
+       gd->bd->post_code = 0;
+  
+  *((volatile unsigned int *)(0x2ffffffc)) = gd->bd->post_code;
+  *((volatile unsigned int *)(0x2ffffffc)) = 0xcea5e0ff;
+}
+
+
+int de1_post_incr( void )
+{
+       gd->bd->post_code++;
+  
+  *((volatile unsigned int *)(0x2ffffffc)) = gd->bd->post_code;
+  *((volatile unsigned int *)(0x2ffffffc)) = 0xcea5e0ff;
+  
+  return(0);
+}
+
+
+
diff -Naur u-boot-2009.03_orig/board/qaz/de1_or1k/u-boot.lds u-boot-2009.03/board/qaz/de1_or1k/u-boot.lds
--- u-boot-2009.03_orig/board/qaz/de1_or1k/u-boot.lds   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/qaz/de1_or1k/u-boot.lds        2009-03-24 13:34:53.455424000 -0700
@@ -0,0 +1,67 @@
+/* ------------------------------ */
+/* link script */
+/* ------------------------------ */
+
+MEMORY
+        {
+        boot_rom_1        : ORIGIN = 0x00000000, LENGTH = 0x00020000
+        mem_bank_3        : ORIGIN = 0x30000000, LENGTH = 0x00010000
+        }
+        
+ENTRY(_start)
+
+SECTIONS
+{
+        .text ALIGN(0x4):
+        {
+          . = 0x100;
+          *(.vectors)
+                   __text_start = .;
+          . = 0x2000;  
+          *(.text)
+               __text_end = .;
+        } > boot_rom_1
+
+        .rodata ALIGN(0x4):
+        {
+               __rodata_start = .;
+          *(.rodata)
+          *(.rodata.*)
+               __rodata_end = .;
+        } > boot_rom_1
+
+       .u_boot_cmd ALIGN(0x4):
+       {
+               . = .;
+         ___u_boot_cmd_start = .;
+               *(.u_boot_cmd)
+         ___u_boot_cmd_end = .;
+       } > boot_rom_1
+
+       . = ALIGN(4);
+               __data_lma_start = .;
+        .data : 
+        {
+               __data_start = .;
+          *(.data)
+               __data_end = .;
+        } > boot_rom_1
+        
+       . = ALIGN(4);
+        .bss (NOLOAD):
+        {
+               __bss_start = .;
+          *(.bss)
+               __bss_end = .;
+        } > mem_bank_3
+
+       . = ALIGN(4);
+        .stack (NOLOAD) :
+        {
+               __stack_start = .;
+          *(.stack)
+               __stack_end = .;
+        } > mem_bank_3
+        
+       __end = . ;
+}
diff -Naur u-boot-2009.03_orig/board/qemu-mips/CVS/Entries u-boot-2009.03/board/qemu-mips/CVS/Entries
--- u-boot-2009.03_orig/board/qemu-mips/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/qemu-mips/CVS/Entries  2009-03-25 15:57:40.871893600 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/qemu-mips.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/qemu-mips/CVS/Entries.Extra u-boot-2009.03/board/qemu-mips/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/qemu-mips/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/qemu-mips/CVS/Entries.Extra    2009-03-25 15:57:40.871893600 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019709/
+/README///1238019709/
+/config.mk///1238019709/
+/lowlevel_init.S///1238019709/
+/qemu-mips.c///1238019709/
+/u-boot.lds///1238019709/
diff -Naur u-boot-2009.03_orig/board/qemu-mips/CVS/Entries.Extra.Old u-boot-2009.03/board/qemu-mips/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/qemu-mips/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/qemu-mips/CVS/Entries.Extra.Old        2009-03-25 15:24:53.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019709/
+/README///1238019709/
+/config.mk///1238019709/
+/lowlevel_init.S///1238019709/
+/qemu-mips.c///1238019709/
+/u-boot.lds///1238019709/
diff -Naur u-boot-2009.03_orig/board/qemu-mips/CVS/Entries.Old u-boot-2009.03/board/qemu-mips/CVS/Entries.Old
--- u-boot-2009.03_orig/board/qemu-mips/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/qemu-mips/CVS/Entries.Old      2009-03-25 15:24:53.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:49 2009//
+/README/1.1.1.1/Wed Mar 25 22:21:49 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:49 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:49 2009//
+/qemu-mips.c/1.1.1.1/Wed Mar 25 22:21:49 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:49 2009//
+D
diff -Naur u-boot-2009.03_orig/board/qemu-mips/CVS/Repository u-boot-2009.03/board/qemu-mips/CVS/Repository
--- u-boot-2009.03_orig/board/qemu-mips/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/qemu-mips/CVS/Repository       2009-03-25 15:24:53.790733000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/qemu-mips
diff -Naur u-boot-2009.03_orig/board/qemu-mips/CVS/Root u-boot-2009.03/board/qemu-mips/CVS/Root
--- u-boot-2009.03_orig/board/qemu-mips/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/qemu-mips/CVS/Root     2009-03-25 15:24:53.790733000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/quad100hd/CVS/Entries u-boot-2009.03/board/quad100hd/CVS/Entries
--- u-boot-2009.03_orig/board/quad100hd/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/quad100hd/CVS/Entries  2009-03-25 15:57:40.950018100 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nand.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/quad100hd.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/quad100hd/CVS/Entries.Extra u-boot-2009.03/board/quad100hd/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/quad100hd/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/quad100hd/CVS/Entries.Extra    2009-03-25 15:57:40.950018100 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019709/
+/config.mk///1238019709/
+/nand.c///1238019709/
+/quad100hd.c///1238019709/
+/u-boot.lds///1238019709/
diff -Naur u-boot-2009.03_orig/board/quad100hd/CVS/Entries.Extra.Old u-boot-2009.03/board/quad100hd/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/quad100hd/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/quad100hd/CVS/Entries.Extra.Old        2009-03-25 15:24:53.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019709/
+/config.mk///1238019709/
+/nand.c///1238019709/
+/quad100hd.c///1238019709/
+/u-boot.lds///1238019709/
diff -Naur u-boot-2009.03_orig/board/quad100hd/CVS/Entries.Old u-boot-2009.03/board/quad100hd/CVS/Entries.Old
--- u-boot-2009.03_orig/board/quad100hd/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/quad100hd/CVS/Entries.Old      2009-03-25 15:24:53.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:49 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:49 2009//
+/nand.c/1.1.1.1/Wed Mar 25 22:21:49 2009//
+/quad100hd.c/1.1.1.1/Wed Mar 25 22:21:49 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:49 2009//
+D
diff -Naur u-boot-2009.03_orig/board/quad100hd/CVS/Repository u-boot-2009.03/board/quad100hd/CVS/Repository
--- u-boot-2009.03_orig/board/quad100hd/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/quad100hd/CVS/Repository       2009-03-25 15:24:53.915732200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/quad100hd
diff -Naur u-boot-2009.03_orig/board/quad100hd/CVS/Root u-boot-2009.03/board/quad100hd/CVS/Root
--- u-boot-2009.03_orig/board/quad100hd/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/quad100hd/CVS/Root     2009-03-25 15:24:53.915732200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/quantum/CVS/Entries u-boot-2009.03/board/quantum/CVS/Entries
--- u-boot-2009.03_orig/board/quantum/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/quantum/CVS/Entries    2009-03-25 15:57:41.028142600 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fpga.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fpga.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/quantum.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.debug/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/quantum/CVS/Entries.Extra u-boot-2009.03/board/quantum/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/quantum/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/quantum/CVS/Entries.Extra      2009-03-25 15:57:41.028142600 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019709/
+/config.mk///1238019709/
+/fpga.c///1238019709/
+/fpga.h///1238019709/
+/quantum.c///1238019709/
+/u-boot.lds///1238019709/
+/u-boot.lds.debug///1238019709/
diff -Naur u-boot-2009.03_orig/board/quantum/CVS/Entries.Extra.Old u-boot-2009.03/board/quantum/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/quantum/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/quantum/CVS/Entries.Extra.Old  2009-03-25 15:24:54.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019709/
+/config.mk///1238019709/
+/fpga.c///1238019709/
+/fpga.h///1238019709/
+/quantum.c///1238019709/
+/u-boot.lds///1238019709/
+/u-boot.lds.debug///1238019709/
diff -Naur u-boot-2009.03_orig/board/quantum/CVS/Entries.Old u-boot-2009.03/board/quantum/CVS/Entries.Old
--- u-boot-2009.03_orig/board/quantum/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/quantum/CVS/Entries.Old        2009-03-25 15:24:54.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:49 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:49 2009//
+/fpga.c/1.1.1.1/Wed Mar 25 22:21:49 2009//
+/fpga.h/1.1.1.1/Wed Mar 25 22:21:49 2009//
+/quantum.c/1.1.1.1/Wed Mar 25 22:21:49 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:49 2009//
+/u-boot.lds.debug/1.1.1.1/Wed Mar 25 22:21:49 2009//
+D
diff -Naur u-boot-2009.03_orig/board/quantum/CVS/Repository u-boot-2009.03/board/quantum/CVS/Repository
--- u-boot-2009.03_orig/board/quantum/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/quantum/CVS/Repository 2009-03-25 15:24:54.025106500 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/quantum
diff -Naur u-boot-2009.03_orig/board/quantum/CVS/Root u-boot-2009.03/board/quantum/CVS/Root
--- u-boot-2009.03_orig/board/quantum/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/quantum/CVS/Root       2009-03-25 15:24:54.009481600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/r360mpi/CVS/Entries u-boot-2009.03/board/r360mpi/CVS/Entries
--- u-boot-2009.03_orig/board/r360mpi/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/r360mpi/CVS/Entries    2009-03-25 15:57:41.153141800 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pcmcia.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/r360mpi.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/r360mpi/CVS/Entries.Extra u-boot-2009.03/board/r360mpi/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/r360mpi/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/r360mpi/CVS/Entries.Extra      2009-03-25 15:57:41.153141800 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019709/
+/config.mk///1238019709/
+/flash.c///1238019709/
+/pcmcia.c///1238019709/
+/r360mpi.c///1238019709/
+/u-boot.lds///1238019709/
diff -Naur u-boot-2009.03_orig/board/r360mpi/CVS/Entries.Extra.Old u-boot-2009.03/board/r360mpi/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/r360mpi/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/r360mpi/CVS/Entries.Extra.Old  2009-03-25 15:24:54.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019709/
+/config.mk///1238019709/
+/flash.c///1238019709/
+/pcmcia.c///1238019709/
+/r360mpi.c///1238019709/
+/u-boot.lds///1238019709/
diff -Naur u-boot-2009.03_orig/board/r360mpi/CVS/Entries.Old u-boot-2009.03/board/r360mpi/CVS/Entries.Old
--- u-boot-2009.03_orig/board/r360mpi/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/r360mpi/CVS/Entries.Old        2009-03-25 15:24:54.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:49 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:49 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:49 2009//
+/pcmcia.c/1.1.1.1/Wed Mar 25 22:21:49 2009//
+/r360mpi.c/1.1.1.1/Wed Mar 25 22:21:49 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:49 2009//
+D
diff -Naur u-boot-2009.03_orig/board/r360mpi/CVS/Repository u-boot-2009.03/board/r360mpi/CVS/Repository
--- u-boot-2009.03_orig/board/r360mpi/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/r360mpi/CVS/Repository 2009-03-25 15:24:54.150105700 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/r360mpi
diff -Naur u-boot-2009.03_orig/board/r360mpi/CVS/Root u-boot-2009.03/board/r360mpi/CVS/Root
--- u-boot-2009.03_orig/board/r360mpi/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/r360mpi/CVS/Root       2009-03-25 15:24:54.150105700 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/rattler/CVS/Entries u-boot-2009.03/board/rattler/CVS/Entries
--- u-boot-2009.03_orig/board/rattler/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/rattler/CVS/Entries    2009-03-25 15:57:41.215641400 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/rattler.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/rattler/CVS/Entries.Extra u-boot-2009.03/board/rattler/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/rattler/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/rattler/CVS/Entries.Extra      2009-03-25 15:57:41.215641400 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019709/
+/config.mk///1238019709/
+/rattler.c///1238019709/
diff -Naur u-boot-2009.03_orig/board/rattler/CVS/Entries.Extra.Old u-boot-2009.03/board/rattler/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/rattler/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/rattler/CVS/Entries.Extra.Old  2009-03-25 15:24:54.000000000 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019709/
+/config.mk///1238019709/
+/rattler.c///1238019709/
diff -Naur u-boot-2009.03_orig/board/rattler/CVS/Entries.Old u-boot-2009.03/board/rattler/CVS/Entries.Old
--- u-boot-2009.03_orig/board/rattler/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/rattler/CVS/Entries.Old        2009-03-25 15:24:54.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:49 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:49 2009//
+/rattler.c/1.1.1.1/Wed Mar 25 22:21:49 2009//
+D
diff -Naur u-boot-2009.03_orig/board/rattler/CVS/Repository u-boot-2009.03/board/rattler/CVS/Repository
--- u-boot-2009.03_orig/board/rattler/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/rattler/CVS/Repository 2009-03-25 15:24:54.275104900 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/rattler
diff -Naur u-boot-2009.03_orig/board/rattler/CVS/Root u-boot-2009.03/board/rattler/CVS/Root
--- u-boot-2009.03_orig/board/rattler/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/rattler/CVS/Root       2009-03-25 15:24:54.259480000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/rbc823/CVS/Entries u-boot-2009.03/board/rbc823/CVS/Entries
--- u-boot-2009.03_orig/board/rbc823/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/rbc823/CVS/Entries     2009-03-25 15:57:41.293765900 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/kbd.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/rbc823.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/rbc823/CVS/Entries.Extra u-boot-2009.03/board/rbc823/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/rbc823/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/rbc823/CVS/Entries.Extra       2009-03-25 15:57:41.293765900 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019709/
+/config.mk///1238019709/
+/flash.c///1238019709/
+/kbd.c///1238019709/
+/rbc823.c///1238019709/
+/u-boot.lds///1238019709/
diff -Naur u-boot-2009.03_orig/board/rbc823/CVS/Entries.Extra.Old u-boot-2009.03/board/rbc823/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/rbc823/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/rbc823/CVS/Entries.Extra.Old   2009-03-25 15:24:54.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019709/
+/config.mk///1238019709/
+/flash.c///1238019709/
+/kbd.c///1238019709/
+/rbc823.c///1238019709/
+/u-boot.lds///1238019709/
diff -Naur u-boot-2009.03_orig/board/rbc823/CVS/Entries.Old u-boot-2009.03/board/rbc823/CVS/Entries.Old
--- u-boot-2009.03_orig/board/rbc823/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/rbc823/CVS/Entries.Old 2009-03-25 15:24:54.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:49 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:49 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:49 2009//
+/kbd.c/1.1.1.1/Wed Mar 25 22:21:49 2009//
+/rbc823.c/1.1.1.1/Wed Mar 25 22:21:49 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:49 2009//
+D
diff -Naur u-boot-2009.03_orig/board/rbc823/CVS/Repository u-boot-2009.03/board/rbc823/CVS/Repository
--- u-boot-2009.03_orig/board/rbc823/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/rbc823/CVS/Repository  2009-03-25 15:24:54.368854300 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/rbc823
diff -Naur u-boot-2009.03_orig/board/rbc823/CVS/Root u-boot-2009.03/board/rbc823/CVS/Root
--- u-boot-2009.03_orig/board/rbc823/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/rbc823/CVS/Root        2009-03-25 15:24:54.353229400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/renesas/CVS/Entries u-boot-2009.03/board/renesas/CVS/Entries
--- u-boot-2009.03_orig/board/renesas/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/renesas/CVS/Entries    2009-03-25 15:24:55.540721800 -0700
@@ -0,0 +1,7 @@
+D/MigoR////
+D/ap325rxa////
+D/r2dplus////
+D/r7780mp////
+D/rsk7203////
+D/sh7763rdp////
+D/sh7785lcr////
diff -Naur u-boot-2009.03_orig/board/renesas/CVS/Entries.Extra u-boot-2009.03/board/renesas/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/renesas/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/renesas/CVS/Entries.Extra      2009-03-25 15:24:55.540721800 -0700
@@ -0,0 +1,7 @@
+D/MigoR////
+D/ap325rxa////
+D/r2dplus////
+D/r7780mp////
+D/rsk7203////
+D/sh7763rdp////
+D/sh7785lcr////
diff -Naur u-boot-2009.03_orig/board/renesas/CVS/Repository u-boot-2009.03/board/renesas/CVS/Repository
--- u-boot-2009.03_orig/board/renesas/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/renesas/CVS/Repository 2009-03-25 15:24:54.618852700 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/renesas
diff -Naur u-boot-2009.03_orig/board/renesas/CVS/Root u-boot-2009.03/board/renesas/CVS/Root
--- u-boot-2009.03_orig/board/renesas/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/renesas/CVS/Root       2009-03-25 15:24:54.603227800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/renesas/MigoR/CVS/Entries u-boot-2009.03/board/renesas/MigoR/CVS/Entries
--- u-boot-2009.03_orig/board/renesas/MigoR/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/renesas/MigoR/CVS/Entries      2009-03-25 15:57:41.371890400 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/migo_r.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/renesas/MigoR/CVS/Entries.Extra u-boot-2009.03/board/renesas/MigoR/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/renesas/MigoR/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/renesas/MigoR/CVS/Entries.Extra        2009-03-25 15:57:41.387515300 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019710/
+/config.mk///1238019710/
+/lowlevel_init.S///1238019710/
+/migo_r.c///1238019710/
+/u-boot.lds///1238019710/
diff -Naur u-boot-2009.03_orig/board/renesas/MigoR/CVS/Entries.Extra.Old u-boot-2009.03/board/renesas/MigoR/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/renesas/MigoR/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/renesas/MigoR/CVS/Entries.Extra.Old    2009-03-25 15:24:54.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019710/
+/config.mk///1238019710/
+/lowlevel_init.S///1238019710/
+/migo_r.c///1238019710/
+/u-boot.lds///1238019710/
diff -Naur u-boot-2009.03_orig/board/renesas/MigoR/CVS/Entries.Old u-boot-2009.03/board/renesas/MigoR/CVS/Entries.Old
--- u-boot-2009.03_orig/board/renesas/MigoR/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/renesas/MigoR/CVS/Entries.Old  2009-03-25 15:24:54.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/migo_r.c/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:50 2009//
+D
diff -Naur u-boot-2009.03_orig/board/renesas/MigoR/CVS/Repository u-boot-2009.03/board/renesas/MigoR/CVS/Repository
--- u-boot-2009.03_orig/board/renesas/MigoR/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/renesas/MigoR/CVS/Repository   2009-03-25 15:24:54.634477600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/renesas/MigoR
diff -Naur u-boot-2009.03_orig/board/renesas/MigoR/CVS/Root u-boot-2009.03/board/renesas/MigoR/CVS/Root
--- u-boot-2009.03_orig/board/renesas/MigoR/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/renesas/MigoR/CVS/Root 2009-03-25 15:24:54.634477600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/renesas/ap325rxa/CVS/Entries u-boot-2009.03/board/renesas/ap325rxa/CVS/Entries
--- u-boot-2009.03_orig/board/renesas/ap325rxa/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/renesas/ap325rxa/CVS/Entries   2009-03-25 15:57:41.450014900 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ap325rxa.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpld-ap325rxa.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/renesas/ap325rxa/CVS/Entries.Extra u-boot-2009.03/board/renesas/ap325rxa/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/renesas/ap325rxa/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/renesas/ap325rxa/CVS/Entries.Extra     2009-03-25 15:57:41.450014900 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019709/
+/ap325rxa.c///1238019709/
+/config.mk///1238019709/
+/cpld-ap325rxa.c///1238019709/
+/lowlevel_init.S///1238019709/
+/u-boot.lds///1238019710/
diff -Naur u-boot-2009.03_orig/board/renesas/ap325rxa/CVS/Entries.Extra.Old u-boot-2009.03/board/renesas/ap325rxa/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/renesas/ap325rxa/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/renesas/ap325rxa/CVS/Entries.Extra.Old 2009-03-25 15:24:54.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019709/
+/ap325rxa.c///1238019709/
+/config.mk///1238019709/
+/cpld-ap325rxa.c///1238019709/
+/lowlevel_init.S///1238019709/
+/u-boot.lds///1238019710/
diff -Naur u-boot-2009.03_orig/board/renesas/ap325rxa/CVS/Entries.Old u-boot-2009.03/board/renesas/ap325rxa/CVS/Entries.Old
--- u-boot-2009.03_orig/board/renesas/ap325rxa/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/renesas/ap325rxa/CVS/Entries.Old       2009-03-25 15:24:54.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:49 2009//
+/ap325rxa.c/1.1.1.1/Wed Mar 25 22:21:49 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:49 2009//
+/cpld-ap325rxa.c/1.1.1.1/Wed Mar 25 22:21:49 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:49 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:50 2009//
+D
diff -Naur u-boot-2009.03_orig/board/renesas/ap325rxa/CVS/Repository u-boot-2009.03/board/renesas/ap325rxa/CVS/Repository
--- u-boot-2009.03_orig/board/renesas/ap325rxa/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/renesas/ap325rxa/CVS/Repository        2009-03-25 15:24:54.743851900 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/renesas/ap325rxa
diff -Naur u-boot-2009.03_orig/board/renesas/ap325rxa/CVS/Root u-boot-2009.03/board/renesas/ap325rxa/CVS/Root
--- u-boot-2009.03_orig/board/renesas/ap325rxa/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/renesas/ap325rxa/CVS/Root      2009-03-25 15:24:54.743851900 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/renesas/r2dplus/CVS/Entries u-boot-2009.03/board/renesas/r2dplus/CVS/Entries
--- u-boot-2009.03_orig/board/renesas/r2dplus/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/renesas/r2dplus/CVS/Entries    2009-03-25 15:57:41.512514500 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/r2dplus.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/renesas/r2dplus/CVS/Entries.Extra u-boot-2009.03/board/renesas/r2dplus/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/renesas/r2dplus/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/renesas/r2dplus/CVS/Entries.Extra      2009-03-25 15:57:41.512514500 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019710/
+/config.mk///1238019710/
+/lowlevel_init.S///1238019710/
+/r2dplus.c///1238019710/
+/u-boot.lds///1238019710/
diff -Naur u-boot-2009.03_orig/board/renesas/r2dplus/CVS/Entries.Extra.Old u-boot-2009.03/board/renesas/r2dplus/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/renesas/r2dplus/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/renesas/r2dplus/CVS/Entries.Extra.Old  2009-03-25 15:24:54.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019710/
+/config.mk///1238019710/
+/lowlevel_init.S///1238019710/
+/r2dplus.c///1238019710/
+/u-boot.lds///1238019710/
diff -Naur u-boot-2009.03_orig/board/renesas/r2dplus/CVS/Entries.Old u-boot-2009.03/board/renesas/r2dplus/CVS/Entries.Old
--- u-boot-2009.03_orig/board/renesas/r2dplus/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/renesas/r2dplus/CVS/Entries.Old        2009-03-25 15:24:54.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/r2dplus.c/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:50 2009//
+D
diff -Naur u-boot-2009.03_orig/board/renesas/r2dplus/CVS/Repository u-boot-2009.03/board/renesas/r2dplus/CVS/Repository
--- u-boot-2009.03_orig/board/renesas/r2dplus/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/renesas/r2dplus/CVS/Repository 2009-03-25 15:24:54.868851100 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/renesas/r2dplus
diff -Naur u-boot-2009.03_orig/board/renesas/r2dplus/CVS/Root u-boot-2009.03/board/renesas/r2dplus/CVS/Root
--- u-boot-2009.03_orig/board/renesas/r2dplus/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/renesas/r2dplus/CVS/Root       2009-03-25 15:24:54.868851100 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/renesas/r7780mp/CVS/Entries u-boot-2009.03/board/renesas/r7780mp/CVS/Entries
--- u-boot-2009.03_orig/board/renesas/r7780mp/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/renesas/r7780mp/CVS/Entries    2009-03-25 15:57:41.575014100 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/r7780mp.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/r7780mp.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/renesas/r7780mp/CVS/Entries.Extra u-boot-2009.03/board/renesas/r7780mp/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/renesas/r7780mp/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/renesas/r7780mp/CVS/Entries.Extra      2009-03-25 15:57:41.575014100 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019710/
+/config.mk///1238019710/
+/lowlevel_init.S///1238019710/
+/r7780mp.c///1238019710/
+/r7780mp.h///1238019710/
+/u-boot.lds///1238019710/
diff -Naur u-boot-2009.03_orig/board/renesas/r7780mp/CVS/Entries.Extra.Old u-boot-2009.03/board/renesas/r7780mp/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/renesas/r7780mp/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/renesas/r7780mp/CVS/Entries.Extra.Old  2009-03-25 15:24:55.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019710/
+/config.mk///1238019710/
+/lowlevel_init.S///1238019710/
+/r7780mp.c///1238019710/
+/r7780mp.h///1238019710/
+/u-boot.lds///1238019710/
diff -Naur u-boot-2009.03_orig/board/renesas/r7780mp/CVS/Entries.Old u-boot-2009.03/board/renesas/r7780mp/CVS/Entries.Old
--- u-boot-2009.03_orig/board/renesas/r7780mp/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/renesas/r7780mp/CVS/Entries.Old        2009-03-25 15:24:55.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/r7780mp.c/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/r7780mp.h/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:50 2009//
+D
diff -Naur u-boot-2009.03_orig/board/renesas/r7780mp/CVS/Repository u-boot-2009.03/board/renesas/r7780mp/CVS/Repository
--- u-boot-2009.03_orig/board/renesas/r7780mp/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/renesas/r7780mp/CVS/Repository 2009-03-25 15:24:54.962600500 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/renesas/r7780mp
diff -Naur u-boot-2009.03_orig/board/renesas/r7780mp/CVS/Root u-boot-2009.03/board/renesas/r7780mp/CVS/Root
--- u-boot-2009.03_orig/board/renesas/r7780mp/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/renesas/r7780mp/CVS/Root       2009-03-25 15:24:54.962600500 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/renesas/rsk7203/CVS/Entries u-boot-2009.03/board/renesas/rsk7203/CVS/Entries
--- u-boot-2009.03_orig/board/renesas/rsk7203/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/renesas/rsk7203/CVS/Entries    2009-03-25 15:57:41.637513700 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/rsk7203.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/renesas/rsk7203/CVS/Entries.Extra u-boot-2009.03/board/renesas/rsk7203/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/renesas/rsk7203/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/renesas/rsk7203/CVS/Entries.Extra      2009-03-25 15:57:41.653138600 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019710/
+/config.mk///1238019710/
+/lowlevel_init.S///1238019710/
+/rsk7203.c///1238019710/
+/u-boot.lds///1238019710/
diff -Naur u-boot-2009.03_orig/board/renesas/rsk7203/CVS/Entries.Extra.Old u-boot-2009.03/board/renesas/rsk7203/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/renesas/rsk7203/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/renesas/rsk7203/CVS/Entries.Extra.Old  2009-03-25 15:24:55.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019710/
+/config.mk///1238019710/
+/lowlevel_init.S///1238019710/
+/rsk7203.c///1238019710/
+/u-boot.lds///1238019710/
diff -Naur u-boot-2009.03_orig/board/renesas/rsk7203/CVS/Entries.Old u-boot-2009.03/board/renesas/rsk7203/CVS/Entries.Old
--- u-boot-2009.03_orig/board/renesas/rsk7203/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/renesas/rsk7203/CVS/Entries.Old        2009-03-25 15:24:55.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/rsk7203.c/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:50 2009//
+D
diff -Naur u-boot-2009.03_orig/board/renesas/rsk7203/CVS/Repository u-boot-2009.03/board/renesas/rsk7203/CVS/Repository
--- u-boot-2009.03_orig/board/renesas/rsk7203/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/renesas/rsk7203/CVS/Repository 2009-03-25 15:24:55.087599700 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/renesas/rsk7203
diff -Naur u-boot-2009.03_orig/board/renesas/rsk7203/CVS/Root u-boot-2009.03/board/renesas/rsk7203/CVS/Root
--- u-boot-2009.03_orig/board/renesas/rsk7203/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/renesas/rsk7203/CVS/Root       2009-03-25 15:24:55.087599700 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/renesas/sh7763rdp/CVS/Entries u-boot-2009.03/board/renesas/sh7763rdp/CVS/Entries
--- u-boot-2009.03_orig/board/renesas/sh7763rdp/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/renesas/sh7763rdp/CVS/Entries  2009-03-25 15:57:41.715638200 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sh7763rdp.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/renesas/sh7763rdp/CVS/Entries.Extra u-boot-2009.03/board/renesas/sh7763rdp/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/renesas/sh7763rdp/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/renesas/sh7763rdp/CVS/Entries.Extra    2009-03-25 15:57:41.715638200 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019710/
+/config.mk///1238019710/
+/lowlevel_init.S///1238019710/
+/sh7763rdp.c///1238019710/
+/u-boot.lds///1238019710/
diff -Naur u-boot-2009.03_orig/board/renesas/sh7763rdp/CVS/Entries.Extra.Old u-boot-2009.03/board/renesas/sh7763rdp/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/renesas/sh7763rdp/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/renesas/sh7763rdp/CVS/Entries.Extra.Old        2009-03-25 15:24:55.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019710/
+/config.mk///1238019710/
+/lowlevel_init.S///1238019710/
+/sh7763rdp.c///1238019710/
+/u-boot.lds///1238019710/
diff -Naur u-boot-2009.03_orig/board/renesas/sh7763rdp/CVS/Entries.Old u-boot-2009.03/board/renesas/sh7763rdp/CVS/Entries.Old
--- u-boot-2009.03_orig/board/renesas/sh7763rdp/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/renesas/sh7763rdp/CVS/Entries.Old      2009-03-25 15:24:55.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/sh7763rdp.c/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:50 2009//
+D
diff -Naur u-boot-2009.03_orig/board/renesas/sh7763rdp/CVS/Repository u-boot-2009.03/board/renesas/sh7763rdp/CVS/Repository
--- u-boot-2009.03_orig/board/renesas/sh7763rdp/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/renesas/sh7763rdp/CVS/Repository       2009-03-25 15:24:55.212598900 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/renesas/sh7763rdp
diff -Naur u-boot-2009.03_orig/board/renesas/sh7763rdp/CVS/Root u-boot-2009.03/board/renesas/sh7763rdp/CVS/Root
--- u-boot-2009.03_orig/board/renesas/sh7763rdp/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/renesas/sh7763rdp/CVS/Root     2009-03-25 15:24:55.196974000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/renesas/sh7785lcr/CVS/Entries u-boot-2009.03/board/renesas/sh7785lcr/CVS/Entries
--- u-boot-2009.03_orig/board/renesas/sh7785lcr/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/renesas/sh7785lcr/CVS/Entries  2009-03-25 15:57:41.809387600 -0700
@@ -0,0 +1,11 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/rtl8169.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/rtl8169_mac.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/selfcheck.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sh7785lcr.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot_29bit/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot_32bit/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/renesas/sh7785lcr/CVS/Entries.Extra u-boot-2009.03/board/renesas/sh7785lcr/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/renesas/sh7785lcr/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/renesas/sh7785lcr/CVS/Entries.Extra    2009-03-25 15:57:41.809387600 -0700
@@ -0,0 +1,10 @@
+/Makefile///1238019710/
+/config.mk///1238019710/
+/lowlevel_init.S///1238019710/
+/rtl8169.h///1238019710/
+/rtl8169_mac.c///1238019710/
+/selfcheck.c///1238019710/
+/sh7785lcr.c///1238019710/
+/u-boot.lds///1238019710/
+/u-boot_29bit///1238019710/
+/u-boot_32bit///1238019710/
diff -Naur u-boot-2009.03_orig/board/renesas/sh7785lcr/CVS/Entries.Extra.Old u-boot-2009.03/board/renesas/sh7785lcr/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/renesas/sh7785lcr/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/renesas/sh7785lcr/CVS/Entries.Extra.Old        2009-03-25 15:24:55.000000000 -0700
@@ -0,0 +1,10 @@
+/Makefile///1238019710/
+/config.mk///1238019710/
+/lowlevel_init.S///1238019710/
+/rtl8169.h///1238019710/
+/rtl8169_mac.c///1238019710/
+/selfcheck.c///1238019710/
+/sh7785lcr.c///1238019710/
+/u-boot.lds///1238019710/
+/u-boot_29bit///1238019710/
+/u-boot_32bit///1238019710/
diff -Naur u-boot-2009.03_orig/board/renesas/sh7785lcr/CVS/Entries.Old u-boot-2009.03/board/renesas/sh7785lcr/CVS/Entries.Old
--- u-boot-2009.03_orig/board/renesas/sh7785lcr/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/renesas/sh7785lcr/CVS/Entries.Old      2009-03-25 15:24:55.000000000 -0700
@@ -0,0 +1,11 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/rtl8169.h/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/rtl8169_mac.c/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/selfcheck.c/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/sh7785lcr.c/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/u-boot_29bit/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/u-boot_32bit/1.1.1.1/Wed Mar 25 22:21:50 2009//
+D
diff -Naur u-boot-2009.03_orig/board/renesas/sh7785lcr/CVS/Repository u-boot-2009.03/board/renesas/sh7785lcr/CVS/Repository
--- u-boot-2009.03_orig/board/renesas/sh7785lcr/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/renesas/sh7785lcr/CVS/Repository       2009-03-25 15:24:55.321973200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/renesas/sh7785lcr
diff -Naur u-boot-2009.03_orig/board/renesas/sh7785lcr/CVS/Root u-boot-2009.03/board/renesas/sh7785lcr/CVS/Root
--- u-boot-2009.03_orig/board/renesas/sh7785lcr/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/renesas/sh7785lcr/CVS/Root     2009-03-25 15:24:55.321973200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/rmu/CVS/Entries u-boot-2009.03/board/rmu/CVS/Entries
--- u-boot-2009.03_orig/board/rmu/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/rmu/CVS/Entries        2009-03-25 15:57:41.903137000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/rmu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.debug/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/rmu/CVS/Entries.Extra u-boot-2009.03/board/rmu/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/rmu/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/rmu/CVS/Entries.Extra  2009-03-25 15:57:41.903137000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019710/
+/config.mk///1238019710/
+/flash.c///1238019710/
+/rmu.c///1238019710/
+/u-boot.lds///1238019710/
+/u-boot.lds.debug///1238019710/
diff -Naur u-boot-2009.03_orig/board/rmu/CVS/Entries.Extra.Old u-boot-2009.03/board/rmu/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/rmu/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/rmu/CVS/Entries.Extra.Old      2009-03-25 15:24:55.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019710/
+/config.mk///1238019710/
+/flash.c///1238019710/
+/rmu.c///1238019710/
+/u-boot.lds///1238019710/
+/u-boot.lds.debug///1238019710/
diff -Naur u-boot-2009.03_orig/board/rmu/CVS/Entries.Old u-boot-2009.03/board/rmu/CVS/Entries.Old
--- u-boot-2009.03_orig/board/rmu/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/rmu/CVS/Entries.Old    2009-03-25 15:24:55.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/rmu.c/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/u-boot.lds.debug/1.1.1.1/Wed Mar 25 22:21:50 2009//
+D
diff -Naur u-boot-2009.03_orig/board/rmu/CVS/Repository u-boot-2009.03/board/rmu/CVS/Repository
--- u-boot-2009.03_orig/board/rmu/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/rmu/CVS/Repository     2009-03-25 15:24:55.587596500 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/rmu
diff -Naur u-boot-2009.03_orig/board/rmu/CVS/Root u-boot-2009.03/board/rmu/CVS/Root
--- u-boot-2009.03_orig/board/rmu/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/rmu/CVS/Root   2009-03-25 15:24:55.587596500 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/rpxsuper/CVS/Entries u-boot-2009.03/board/rpxsuper/CVS/Entries
--- u-boot-2009.03_orig/board/rpxsuper/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/rpxsuper/CVS/Entries   2009-03-25 15:57:41.996886400 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mii_phy.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/readme/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/rpxsuper.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/rpxsuper.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/rpxsuper/CVS/Entries.Extra u-boot-2009.03/board/rpxsuper/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/rpxsuper/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/rpxsuper/CVS/Entries.Extra     2009-03-25 15:57:41.996886400 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019710/
+/config.mk///1238019710/
+/flash.c///1238019710/
+/mii_phy.c///1238019710/
+/readme///1238019710/
+/rpxsuper.c///1238019710/
+/rpxsuper.h///1238019710/
diff -Naur u-boot-2009.03_orig/board/rpxsuper/CVS/Entries.Extra.Old u-boot-2009.03/board/rpxsuper/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/rpxsuper/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/rpxsuper/CVS/Entries.Extra.Old 2009-03-25 15:24:55.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019710/
+/config.mk///1238019710/
+/flash.c///1238019710/
+/mii_phy.c///1238019710/
+/readme///1238019710/
+/rpxsuper.c///1238019710/
+/rpxsuper.h///1238019710/
diff -Naur u-boot-2009.03_orig/board/rpxsuper/CVS/Entries.Old u-boot-2009.03/board/rpxsuper/CVS/Entries.Old
--- u-boot-2009.03_orig/board/rpxsuper/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/rpxsuper/CVS/Entries.Old       2009-03-25 15:24:55.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/mii_phy.c/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/readme/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/rpxsuper.c/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/rpxsuper.h/1.1.1.1/Wed Mar 25 22:21:50 2009//
+D
diff -Naur u-boot-2009.03_orig/board/rpxsuper/CVS/Repository u-boot-2009.03/board/rpxsuper/CVS/Repository
--- u-boot-2009.03_orig/board/rpxsuper/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/rpxsuper/CVS/Repository        2009-03-25 15:24:55.712595700 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/rpxsuper
diff -Naur u-boot-2009.03_orig/board/rpxsuper/CVS/Root u-boot-2009.03/board/rpxsuper/CVS/Root
--- u-boot-2009.03_orig/board/rpxsuper/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/rpxsuper/CVS/Root      2009-03-25 15:24:55.712595700 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/rsdproto/CVS/Entries u-boot-2009.03/board/rsdproto/CVS/Entries
--- u-boot-2009.03_orig/board/rsdproto/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/rsdproto/CVS/Entries   2009-03-25 15:57:42.121885600 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash_asm.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/rsdproto.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/rsdproto/CVS/Entries.Extra u-boot-2009.03/board/rsdproto/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/rsdproto/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/rsdproto/CVS/Entries.Extra     2009-03-25 15:57:42.121885600 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019710/
+/config.mk///1238019710/
+/flash.c///1238019710/
+/flash_asm.S///1238019710/
+/rsdproto.c///1238019710/
+/u-boot.lds///1238019710/
diff -Naur u-boot-2009.03_orig/board/rsdproto/CVS/Entries.Extra.Old u-boot-2009.03/board/rsdproto/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/rsdproto/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/rsdproto/CVS/Entries.Extra.Old 2009-03-25 15:24:55.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019710/
+/config.mk///1238019710/
+/flash.c///1238019710/
+/flash_asm.S///1238019710/
+/rsdproto.c///1238019710/
+/u-boot.lds///1238019710/
diff -Naur u-boot-2009.03_orig/board/rsdproto/CVS/Entries.Old u-boot-2009.03/board/rsdproto/CVS/Entries.Old
--- u-boot-2009.03_orig/board/rsdproto/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/rsdproto/CVS/Entries.Old       2009-03-25 15:24:55.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/flash_asm.S/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/rsdproto.c/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:50 2009//
+D
diff -Naur u-boot-2009.03_orig/board/rsdproto/CVS/Repository u-boot-2009.03/board/rsdproto/CVS/Repository
--- u-boot-2009.03_orig/board/rsdproto/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/rsdproto/CVS/Repository        2009-03-25 15:24:55.853219800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/rsdproto
diff -Naur u-boot-2009.03_orig/board/rsdproto/CVS/Root u-boot-2009.03/board/rsdproto/CVS/Root
--- u-boot-2009.03_orig/board/rsdproto/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/rsdproto/CVS/Root      2009-03-25 15:24:55.853219800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/sacsng/CVS/Entries u-boot-2009.03/board/sacsng/CVS/Entries
--- u-boot-2009.03_orig/board/sacsng/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sacsng/CVS/Entries     2009-03-25 15:57:42.200010100 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/clkinit.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/clkinit.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ioconfig.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sacsng.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/sacsng/CVS/Entries.Extra u-boot-2009.03/board/sacsng/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/sacsng/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sacsng/CVS/Entries.Extra       2009-03-25 15:57:42.200010100 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019710/
+/clkinit.c///1238019710/
+/clkinit.h///1238019710/
+/config.mk///1238019710/
+/flash.c///1238019710/
+/ioconfig.h///1238019710/
+/sacsng.c///1238019710/
diff -Naur u-boot-2009.03_orig/board/sacsng/CVS/Entries.Extra.Old u-boot-2009.03/board/sacsng/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/sacsng/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sacsng/CVS/Entries.Extra.Old   2009-03-25 15:24:56.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019710/
+/clkinit.c///1238019710/
+/clkinit.h///1238019710/
+/config.mk///1238019710/
+/flash.c///1238019710/
+/ioconfig.h///1238019710/
+/sacsng.c///1238019710/
diff -Naur u-boot-2009.03_orig/board/sacsng/CVS/Entries.Old u-boot-2009.03/board/sacsng/CVS/Entries.Old
--- u-boot-2009.03_orig/board/sacsng/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sacsng/CVS/Entries.Old 2009-03-25 15:24:56.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/clkinit.c/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/clkinit.h/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/ioconfig.h/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/sacsng.c/1.1.1.1/Wed Mar 25 22:21:50 2009//
+D
diff -Naur u-boot-2009.03_orig/board/sacsng/CVS/Repository u-boot-2009.03/board/sacsng/CVS/Repository
--- u-boot-2009.03_orig/board/sacsng/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sacsng/CVS/Repository  2009-03-25 15:24:55.993843900 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/sacsng
diff -Naur u-boot-2009.03_orig/board/sacsng/CVS/Root u-boot-2009.03/board/sacsng/CVS/Root
--- u-boot-2009.03_orig/board/sacsng/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sacsng/CVS/Root        2009-03-25 15:24:55.993843900 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/samsung/CVS/Entries u-boot-2009.03/board/samsung/CVS/Entries
--- u-boot-2009.03_orig/board/samsung/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/samsung/CVS/Entries    2009-03-25 15:24:56.837588500 -0700
@@ -0,0 +1,3 @@
+D/smdk2400////
+D/smdk2410////
+D/smdk6400////
diff -Naur u-boot-2009.03_orig/board/samsung/CVS/Entries.Extra u-boot-2009.03/board/samsung/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/samsung/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/samsung/CVS/Entries.Extra      2009-03-25 15:24:56.837588500 -0700
@@ -0,0 +1,3 @@
+D/smdk2400////
+D/smdk2410////
+D/smdk6400////
diff -Naur u-boot-2009.03_orig/board/samsung/CVS/Repository u-boot-2009.03/board/samsung/CVS/Repository
--- u-boot-2009.03_orig/board/samsung/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/samsung/CVS/Repository 2009-03-25 15:24:56.134468000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/samsung
diff -Naur u-boot-2009.03_orig/board/samsung/CVS/Root u-boot-2009.03/board/samsung/CVS/Root
--- u-boot-2009.03_orig/board/samsung/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/samsung/CVS/Root       2009-03-25 15:24:56.134468000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/samsung/smdk2400/CVS/Entries u-boot-2009.03/board/samsung/smdk2400/CVS/Entries
--- u-boot-2009.03_orig/board/samsung/smdk2400/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/samsung/smdk2400/CVS/Entries   2009-03-25 15:57:44.449995700 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/smdk2400.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/samsung/smdk2400/CVS/Entries.Extra u-boot-2009.03/board/samsung/smdk2400/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/samsung/smdk2400/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/samsung/smdk2400/CVS/Entries.Extra     2009-03-25 15:57:44.465620600 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019710/
+/config.mk///1238019710/
+/flash.c///1238019710/
+/lowlevel_init.S///1238019710/
+/smdk2400.c///1238019710/
+/u-boot.lds///1238019710/
diff -Naur u-boot-2009.03_orig/board/samsung/smdk2400/CVS/Entries.Extra.Old u-boot-2009.03/board/samsung/smdk2400/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/samsung/smdk2400/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/samsung/smdk2400/CVS/Entries.Extra.Old 2009-03-25 15:24:56.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019710/
+/config.mk///1238019710/
+/flash.c///1238019710/
+/lowlevel_init.S///1238019710/
+/smdk2400.c///1238019710/
+/u-boot.lds///1238019710/
diff -Naur u-boot-2009.03_orig/board/samsung/smdk2400/CVS/Entries.Old u-boot-2009.03/board/samsung/smdk2400/CVS/Entries.Old
--- u-boot-2009.03_orig/board/samsung/smdk2400/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/samsung/smdk2400/CVS/Entries.Old       2009-03-25 15:24:56.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/smdk2400.c/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:50 2009//
+D
diff -Naur u-boot-2009.03_orig/board/samsung/smdk2400/CVS/Repository u-boot-2009.03/board/samsung/smdk2400/CVS/Repository
--- u-boot-2009.03_orig/board/samsung/smdk2400/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/samsung/smdk2400/CVS/Repository        2009-03-25 15:24:56.165717800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/samsung/smdk2400
diff -Naur u-boot-2009.03_orig/board/samsung/smdk2400/CVS/Root u-boot-2009.03/board/samsung/smdk2400/CVS/Root
--- u-boot-2009.03_orig/board/samsung/smdk2400/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/samsung/smdk2400/CVS/Root      2009-03-25 15:24:56.165717800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/samsung/smdk2410/CVS/Entries u-boot-2009.03/board/samsung/smdk2410/CVS/Entries
--- u-boot-2009.03_orig/board/samsung/smdk2410/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/samsung/smdk2410/CVS/Entries   2009-03-25 15:57:44.528120200 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/smdk2410.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/samsung/smdk2410/CVS/Entries.Extra u-boot-2009.03/board/samsung/smdk2410/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/samsung/smdk2410/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/samsung/smdk2410/CVS/Entries.Extra     2009-03-25 15:57:44.528120200 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019710/
+/config.mk///1238019710/
+/flash.c///1238019710/
+/lowlevel_init.S///1238019710/
+/smdk2410.c///1238019710/
+/u-boot.lds///1238019711/
diff -Naur u-boot-2009.03_orig/board/samsung/smdk2410/CVS/Entries.Extra.Old u-boot-2009.03/board/samsung/smdk2410/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/samsung/smdk2410/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/samsung/smdk2410/CVS/Entries.Extra.Old 2009-03-25 15:24:56.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019710/
+/config.mk///1238019710/
+/flash.c///1238019710/
+/lowlevel_init.S///1238019710/
+/smdk2410.c///1238019710/
+/u-boot.lds///1238019711/
diff -Naur u-boot-2009.03_orig/board/samsung/smdk2410/CVS/Entries.Old u-boot-2009.03/board/samsung/smdk2410/CVS/Entries.Old
--- u-boot-2009.03_orig/board/samsung/smdk2410/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/samsung/smdk2410/CVS/Entries.Old       2009-03-25 15:24:56.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/smdk2410.c/1.1.1.1/Wed Mar 25 22:21:50 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:51 2009//
+D
diff -Naur u-boot-2009.03_orig/board/samsung/smdk2410/CVS/Repository u-boot-2009.03/board/samsung/smdk2410/CVS/Repository
--- u-boot-2009.03_orig/board/samsung/smdk2410/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/samsung/smdk2410/CVS/Repository        2009-03-25 15:24:56.275092100 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/samsung/smdk2410
diff -Naur u-boot-2009.03_orig/board/samsung/smdk2410/CVS/Root u-boot-2009.03/board/samsung/smdk2410/CVS/Root
--- u-boot-2009.03_orig/board/samsung/smdk2410/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/samsung/smdk2410/CVS/Root      2009-03-25 15:24:56.275092100 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/samsung/smdk6400/CVS/Entries u-boot-2009.03/board/samsung/smdk6400/CVS/Entries
--- u-boot-2009.03_orig/board/samsung/smdk6400/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/samsung/smdk6400/CVS/Entries   2009-03-25 15:57:44.606244700 -0700
@@ -0,0 +1,7 @@
+/.gitignore/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/smdk6400.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot-nand.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/samsung/smdk6400/CVS/Entries.Extra u-boot-2009.03/board/samsung/smdk6400/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/samsung/smdk6400/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/samsung/smdk6400/CVS/Entries.Extra     2009-03-25 15:57:44.606244700 -0700
@@ -0,0 +1,6 @@
+/.gitignore///1238019711/
+/Makefile///1238019711/
+/config.mk///1238019711/
+/lowlevel_init.S///1238019711/
+/smdk6400.c///1238019711/
+/u-boot-nand.lds///1238019711/
diff -Naur u-boot-2009.03_orig/board/samsung/smdk6400/CVS/Entries.Extra.Old u-boot-2009.03/board/samsung/smdk6400/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/samsung/smdk6400/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/samsung/smdk6400/CVS/Entries.Extra.Old 2009-03-25 15:24:56.000000000 -0700
@@ -0,0 +1,6 @@
+/.gitignore///1238019711/
+/Makefile///1238019711/
+/config.mk///1238019711/
+/lowlevel_init.S///1238019711/
+/smdk6400.c///1238019711/
+/u-boot-nand.lds///1238019711/
diff -Naur u-boot-2009.03_orig/board/samsung/smdk6400/CVS/Entries.Old u-boot-2009.03/board/samsung/smdk6400/CVS/Entries.Old
--- u-boot-2009.03_orig/board/samsung/smdk6400/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/samsung/smdk6400/CVS/Entries.Old       2009-03-25 15:24:56.000000000 -0700
@@ -0,0 +1,7 @@
+/.gitignore/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/Makefile/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/smdk6400.c/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/u-boot-nand.lds/1.1.1.1/Wed Mar 25 22:21:51 2009//
+D
diff -Naur u-boot-2009.03_orig/board/samsung/smdk6400/CVS/Repository u-boot-2009.03/board/samsung/smdk6400/CVS/Repository
--- u-boot-2009.03_orig/board/samsung/smdk6400/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/samsung/smdk6400/CVS/Repository        2009-03-25 15:24:56.618839900 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/samsung/smdk6400
diff -Naur u-boot-2009.03_orig/board/samsung/smdk6400/CVS/Root u-boot-2009.03/board/samsung/smdk6400/CVS/Root
--- u-boot-2009.03_orig/board/samsung/smdk6400/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/samsung/smdk6400/CVS/Root      2009-03-25 15:24:56.618839900 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/sandburst/CVS/Entries u-boot-2009.03/board/sandburst/CVS/Entries
--- u-boot-2009.03_orig/board/sandburst/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sandburst/CVS/Entries  2009-03-25 15:24:57.571958800 -0700
@@ -0,0 +1,3 @@
+D/common////
+D/karef////
+D/metrobox////
diff -Naur u-boot-2009.03_orig/board/sandburst/CVS/Entries.Extra u-boot-2009.03/board/sandburst/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/sandburst/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sandburst/CVS/Entries.Extra    2009-03-25 15:24:57.571958800 -0700
@@ -0,0 +1,3 @@
+D/common////
+D/karef////
+D/metrobox////
diff -Naur u-boot-2009.03_orig/board/sandburst/CVS/Repository u-boot-2009.03/board/sandburst/CVS/Repository
--- u-boot-2009.03_orig/board/sandburst/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sandburst/CVS/Repository       2009-03-25 15:24:56.962587700 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/sandburst
diff -Naur u-boot-2009.03_orig/board/sandburst/CVS/Root u-boot-2009.03/board/sandburst/CVS/Root
--- u-boot-2009.03_orig/board/sandburst/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sandburst/CVS/Root     2009-03-25 15:24:56.931337900 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/sandburst/common/CVS/Entries u-boot-2009.03/board/sandburst/common/CVS/Entries
--- u-boot-2009.03_orig/board/sandburst/common/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sandburst/common/CVS/Entries   2009-03-25 15:57:44.684369200 -0700
@@ -0,0 +1,6 @@
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ppc440gx_i2c.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ppc440gx_i2c.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sb_common.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sb_common.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/sandburst/common/CVS/Entries.Extra u-boot-2009.03/board/sandburst/common/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/sandburst/common/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sandburst/common/CVS/Entries.Extra     2009-03-25 15:57:44.684369200 -0700
@@ -0,0 +1,5 @@
+/flash.c///1238019711/
+/ppc440gx_i2c.c///1238019711/
+/ppc440gx_i2c.h///1238019711/
+/sb_common.c///1238019711/
+/sb_common.h///1238019711/
diff -Naur u-boot-2009.03_orig/board/sandburst/common/CVS/Entries.Extra.Old u-boot-2009.03/board/sandburst/common/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/sandburst/common/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sandburst/common/CVS/Entries.Extra.Old 2009-03-25 15:24:57.000000000 -0700
@@ -0,0 +1,5 @@
+/flash.c///1238019711/
+/ppc440gx_i2c.c///1238019711/
+/ppc440gx_i2c.h///1238019711/
+/sb_common.c///1238019711/
+/sb_common.h///1238019711/
diff -Naur u-boot-2009.03_orig/board/sandburst/common/CVS/Entries.Old u-boot-2009.03/board/sandburst/common/CVS/Entries.Old
--- u-boot-2009.03_orig/board/sandburst/common/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sandburst/common/CVS/Entries.Old       2009-03-25 15:24:57.000000000 -0700
@@ -0,0 +1,6 @@
+/flash.c/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/ppc440gx_i2c.c/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/ppc440gx_i2c.h/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/sb_common.c/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/sb_common.h/1.1.1.1/Wed Mar 25 22:21:51 2009//
+D
diff -Naur u-boot-2009.03_orig/board/sandburst/common/CVS/Repository u-boot-2009.03/board/sandburst/common/CVS/Repository
--- u-boot-2009.03_orig/board/sandburst/common/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sandburst/common/CVS/Repository        2009-03-25 15:24:56.993837500 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/sandburst/common
diff -Naur u-boot-2009.03_orig/board/sandburst/common/CVS/Root u-boot-2009.03/board/sandburst/common/CVS/Root
--- u-boot-2009.03_orig/board/sandburst/common/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sandburst/common/CVS/Root      2009-03-25 15:24:56.993837500 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/sandburst/karef/CVS/Entries u-boot-2009.03/board/sandburst/karef/CVS/Entries
--- u-boot-2009.03_orig/board/sandburst/karef/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sandburst/karef/CVS/Entries    2009-03-25 15:57:44.793743500 -0700
@@ -0,0 +1,11 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/hal_ka_of_auto.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/hal_ka_sc_auto.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/karef.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/karef.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/karef_version.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.debug/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/sandburst/karef/CVS/Entries.Extra u-boot-2009.03/board/sandburst/karef/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/sandburst/karef/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sandburst/karef/CVS/Entries.Extra      2009-03-25 15:57:44.793743500 -0700
@@ -0,0 +1,10 @@
+/Makefile///1238019711/
+/config.mk///1238019711/
+/hal_ka_of_auto.h///1238019711/
+/hal_ka_sc_auto.h///1238019711/
+/init.S///1238019711/
+/karef.c///1238019711/
+/karef.h///1238019711/
+/karef_version.h///1238019711/
+/u-boot.lds///1238019711/
+/u-boot.lds.debug///1238019711/
diff -Naur u-boot-2009.03_orig/board/sandburst/karef/CVS/Entries.Extra.Old u-boot-2009.03/board/sandburst/karef/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/sandburst/karef/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sandburst/karef/CVS/Entries.Extra.Old  2009-03-25 15:24:57.000000000 -0700
@@ -0,0 +1,10 @@
+/Makefile///1238019711/
+/config.mk///1238019711/
+/hal_ka_of_auto.h///1238019711/
+/hal_ka_sc_auto.h///1238019711/
+/init.S///1238019711/
+/karef.c///1238019711/
+/karef.h///1238019711/
+/karef_version.h///1238019711/
+/u-boot.lds///1238019711/
+/u-boot.lds.debug///1238019711/
diff -Naur u-boot-2009.03_orig/board/sandburst/karef/CVS/Entries.Old u-boot-2009.03/board/sandburst/karef/CVS/Entries.Old
--- u-boot-2009.03_orig/board/sandburst/karef/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sandburst/karef/CVS/Entries.Old        2009-03-25 15:24:57.000000000 -0700
@@ -0,0 +1,11 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/hal_ka_of_auto.h/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/hal_ka_sc_auto.h/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/init.S/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/karef.c/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/karef.h/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/karef_version.h/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/u-boot.lds.debug/1.1.1.1/Wed Mar 25 22:21:51 2009//
+D
diff -Naur u-boot-2009.03_orig/board/sandburst/karef/CVS/Repository u-boot-2009.03/board/sandburst/karef/CVS/Repository
--- u-boot-2009.03_orig/board/sandburst/karef/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sandburst/karef/CVS/Repository 2009-03-25 15:24:57.134461600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/sandburst/karef
diff -Naur u-boot-2009.03_orig/board/sandburst/karef/CVS/Root u-boot-2009.03/board/sandburst/karef/CVS/Root
--- u-boot-2009.03_orig/board/sandburst/karef/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sandburst/karef/CVS/Root       2009-03-25 15:24:57.118836700 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/sandburst/metrobox/CVS/Entries u-boot-2009.03/board/sandburst/metrobox/CVS/Entries
--- u-boot-2009.03_orig/board/sandburst/metrobox/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sandburst/metrobox/CVS/Entries 2009-03-25 15:57:44.887492900 -0700
@@ -0,0 +1,10 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/hal_xc_auto.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/metrobox.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/metrobox.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/metrobox_version.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.debug/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/sandburst/metrobox/CVS/Entries.Extra u-boot-2009.03/board/sandburst/metrobox/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/sandburst/metrobox/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sandburst/metrobox/CVS/Entries.Extra   2009-03-25 15:57:44.887492900 -0700
@@ -0,0 +1,9 @@
+/Makefile///1238019711/
+/config.mk///1238019711/
+/hal_xc_auto.h///1238019711/
+/init.S///1238019711/
+/metrobox.c///1238019711/
+/metrobox.h///1238019711/
+/metrobox_version.h///1238019711/
+/u-boot.lds///1238019711/
+/u-boot.lds.debug///1238019711/
diff -Naur u-boot-2009.03_orig/board/sandburst/metrobox/CVS/Entries.Extra.Old u-boot-2009.03/board/sandburst/metrobox/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/sandburst/metrobox/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sandburst/metrobox/CVS/Entries.Extra.Old       2009-03-25 15:24:57.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile///1238019711/
+/config.mk///1238019711/
+/hal_xc_auto.h///1238019711/
+/init.S///1238019711/
+/metrobox.c///1238019711/
+/metrobox.h///1238019711/
+/metrobox_version.h///1238019711/
+/u-boot.lds///1238019711/
+/u-boot.lds.debug///1238019711/
diff -Naur u-boot-2009.03_orig/board/sandburst/metrobox/CVS/Entries.Old u-boot-2009.03/board/sandburst/metrobox/CVS/Entries.Old
--- u-boot-2009.03_orig/board/sandburst/metrobox/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sandburst/metrobox/CVS/Entries.Old     2009-03-25 15:24:57.000000000 -0700
@@ -0,0 +1,10 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/hal_xc_auto.h/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/init.S/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/metrobox.c/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/metrobox.h/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/metrobox_version.h/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/u-boot.lds.debug/1.1.1.1/Wed Mar 25 22:21:51 2009//
+D
diff -Naur u-boot-2009.03_orig/board/sandburst/metrobox/CVS/Repository u-boot-2009.03/board/sandburst/metrobox/CVS/Repository
--- u-boot-2009.03_orig/board/sandburst/metrobox/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sandburst/metrobox/CVS/Repository      2009-03-25 15:24:57.290710600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/sandburst/metrobox
diff -Naur u-boot-2009.03_orig/board/sandburst/metrobox/CVS/Root u-boot-2009.03/board/sandburst/metrobox/CVS/Root
--- u-boot-2009.03_orig/board/sandburst/metrobox/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sandburst/metrobox/CVS/Root    2009-03-25 15:24:57.290710600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/sandpoint/CVS/Entries u-boot-2009.03/board/sandpoint/CVS/Entries
--- u-boot-2009.03_orig/board/sandpoint/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sandpoint/CVS/Entries  2009-03-25 15:57:44.981242300 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dinkdl/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/early_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sandpoint.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/speed.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/sandpoint/CVS/Entries.Extra u-boot-2009.03/board/sandpoint/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/sandpoint/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sandpoint/CVS/Entries.Extra    2009-03-25 15:57:44.981242300 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019711/
+/README///1238019711/
+/config.mk///1238019711/
+/dinkdl///1238019711/
+/early_init.S///1238019711/
+/flash.c///1238019711/
+/sandpoint.c///1238019711/
+/speed.h///1238019711/
diff -Naur u-boot-2009.03_orig/board/sandpoint/CVS/Entries.Extra.Old u-boot-2009.03/board/sandpoint/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/sandpoint/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sandpoint/CVS/Entries.Extra.Old        2009-03-25 15:24:57.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019711/
+/README///1238019711/
+/config.mk///1238019711/
+/dinkdl///1238019711/
+/early_init.S///1238019711/
+/flash.c///1238019711/
+/sandpoint.c///1238019711/
+/speed.h///1238019711/
diff -Naur u-boot-2009.03_orig/board/sandpoint/CVS/Entries.Old u-boot-2009.03/board/sandpoint/CVS/Entries.Old
--- u-boot-2009.03_orig/board/sandpoint/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sandpoint/CVS/Entries.Old      2009-03-25 15:24:57.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/README/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/dinkdl/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/early_init.S/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/sandpoint.c/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/speed.h/1.1.1.1/Wed Mar 25 22:21:51 2009//
+D
diff -Naur u-boot-2009.03_orig/board/sandpoint/CVS/Repository u-boot-2009.03/board/sandpoint/CVS/Repository
--- u-boot-2009.03_orig/board/sandpoint/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sandpoint/CVS/Repository       2009-03-25 15:24:57.618833500 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/sandpoint
diff -Naur u-boot-2009.03_orig/board/sandpoint/CVS/Root u-boot-2009.03/board/sandpoint/CVS/Root
--- u-boot-2009.03_orig/board/sandpoint/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sandpoint/CVS/Root     2009-03-25 15:24:57.618833500 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/sbc2410x/CVS/Entries u-boot-2009.03/board/sbc2410x/CVS/Entries
--- u-boot-2009.03_orig/board/sbc2410x/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sbc2410x/CVS/Entries   2009-03-25 15:57:45.059366800 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sbc2410x.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/sbc2410x/CVS/Entries.Extra u-boot-2009.03/board/sbc2410x/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/sbc2410x/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sbc2410x/CVS/Entries.Extra     2009-03-25 15:57:45.059366800 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019711/
+/config.mk///1238019711/
+/flash.c///1238019711/
+/lowlevel_init.S///1238019711/
+/sbc2410x.c///1238019711/
+/u-boot.lds///1238019711/
diff -Naur u-boot-2009.03_orig/board/sbc2410x/CVS/Entries.Extra.Old u-boot-2009.03/board/sbc2410x/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/sbc2410x/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sbc2410x/CVS/Entries.Extra.Old 2009-03-25 15:24:57.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019711/
+/config.mk///1238019711/
+/flash.c///1238019711/
+/lowlevel_init.S///1238019711/
+/sbc2410x.c///1238019711/
+/u-boot.lds///1238019711/
diff -Naur u-boot-2009.03_orig/board/sbc2410x/CVS/Entries.Old u-boot-2009.03/board/sbc2410x/CVS/Entries.Old
--- u-boot-2009.03_orig/board/sbc2410x/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sbc2410x/CVS/Entries.Old       2009-03-25 15:24:57.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/sbc2410x.c/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:51 2009//
+D
diff -Naur u-boot-2009.03_orig/board/sbc2410x/CVS/Repository u-boot-2009.03/board/sbc2410x/CVS/Repository
--- u-boot-2009.03_orig/board/sbc2410x/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sbc2410x/CVS/Repository        2009-03-25 15:24:57.759457600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/sbc2410x
diff -Naur u-boot-2009.03_orig/board/sbc2410x/CVS/Root u-boot-2009.03/board/sbc2410x/CVS/Root
--- u-boot-2009.03_orig/board/sbc2410x/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sbc2410x/CVS/Root      2009-03-25 15:24:57.759457600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/sbc405/CVS/Entries u-boot-2009.03/board/sbc405/CVS/Entries
--- u-boot-2009.03_orig/board/sbc405/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sbc405/CVS/Entries     2009-03-25 15:57:45.121866400 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sbc405.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/strataflash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/sbc405/CVS/Entries.Extra u-boot-2009.03/board/sbc405/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/sbc405/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sbc405/CVS/Entries.Extra       2009-03-25 15:57:45.121866400 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019711/
+/config.mk///1238019711/
+/sbc405.c///1238019711/
+/strataflash.c///1238019711/
+/u-boot.lds///1238019711/
diff -Naur u-boot-2009.03_orig/board/sbc405/CVS/Entries.Extra.Old u-boot-2009.03/board/sbc405/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/sbc405/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sbc405/CVS/Entries.Extra.Old   2009-03-25 15:24:57.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019711/
+/config.mk///1238019711/
+/sbc405.c///1238019711/
+/strataflash.c///1238019711/
+/u-boot.lds///1238019711/
diff -Naur u-boot-2009.03_orig/board/sbc405/CVS/Entries.Old u-boot-2009.03/board/sbc405/CVS/Entries.Old
--- u-boot-2009.03_orig/board/sbc405/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sbc405/CVS/Entries.Old 2009-03-25 15:24:57.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/sbc405.c/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/strataflash.c/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:51 2009//
+D
diff -Naur u-boot-2009.03_orig/board/sbc405/CVS/Repository u-boot-2009.03/board/sbc405/CVS/Repository
--- u-boot-2009.03_orig/board/sbc405/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sbc405/CVS/Repository  2009-03-25 15:24:57.884456800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/sbc405
diff -Naur u-boot-2009.03_orig/board/sbc405/CVS/Root u-boot-2009.03/board/sbc405/CVS/Root
--- u-boot-2009.03_orig/board/sbc405/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sbc405/CVS/Root        2009-03-25 15:24:57.884456800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/sbc8240/CVS/Entries u-boot-2009.03/board/sbc8240/CVS/Entries
--- u-boot-2009.03_orig/board/sbc8240/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sbc8240/CVS/Entries    2009-03-25 15:57:45.184366000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sbc8240.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/sbc8240/CVS/Entries.Extra u-boot-2009.03/board/sbc8240/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/sbc8240/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sbc8240/CVS/Entries.Extra      2009-03-25 15:57:45.199990900 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019711/
+/README///1238019711/
+/config.mk///1238019711/
+/flash.c///1238019711/
+/sbc8240.c///1238019711/
diff -Naur u-boot-2009.03_orig/board/sbc8240/CVS/Entries.Extra.Old u-boot-2009.03/board/sbc8240/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/sbc8240/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sbc8240/CVS/Entries.Extra.Old  2009-03-25 15:24:58.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019711/
+/README///1238019711/
+/config.mk///1238019711/
+/flash.c///1238019711/
+/sbc8240.c///1238019711/
diff -Naur u-boot-2009.03_orig/board/sbc8240/CVS/Entries.Old u-boot-2009.03/board/sbc8240/CVS/Entries.Old
--- u-boot-2009.03_orig/board/sbc8240/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sbc8240/CVS/Entries.Old        2009-03-25 15:24:58.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/README/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/sbc8240.c/1.1.1.1/Wed Mar 25 22:21:51 2009//
+D
diff -Naur u-boot-2009.03_orig/board/sbc8240/CVS/Repository u-boot-2009.03/board/sbc8240/CVS/Repository
--- u-boot-2009.03_orig/board/sbc8240/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sbc8240/CVS/Repository 2009-03-25 15:24:58.009456000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/sbc8240
diff -Naur u-boot-2009.03_orig/board/sbc8240/CVS/Root u-boot-2009.03/board/sbc8240/CVS/Root
--- u-boot-2009.03_orig/board/sbc8240/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sbc8240/CVS/Root       2009-03-25 15:24:58.009456000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/sbc8260/CVS/Entries u-boot-2009.03/board/sbc8260/CVS/Entries
--- u-boot-2009.03_orig/board/sbc8260/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sbc8260/CVS/Entries    2009-03-25 15:57:45.246865600 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sbc8260.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/sbc8260/CVS/Entries.Extra u-boot-2009.03/board/sbc8260/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/sbc8260/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sbc8260/CVS/Entries.Extra      2009-03-25 15:57:45.246865600 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019711/
+/config.mk///1238019711/
+/flash.c///1238019711/
+/sbc8260.c///1238019711/
diff -Naur u-boot-2009.03_orig/board/sbc8260/CVS/Entries.Extra.Old u-boot-2009.03/board/sbc8260/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/sbc8260/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sbc8260/CVS/Entries.Extra.Old  2009-03-25 15:24:58.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019711/
+/config.mk///1238019711/
+/flash.c///1238019711/
+/sbc8260.c///1238019711/
diff -Naur u-boot-2009.03_orig/board/sbc8260/CVS/Entries.Old u-boot-2009.03/board/sbc8260/CVS/Entries.Old
--- u-boot-2009.03_orig/board/sbc8260/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sbc8260/CVS/Entries.Old        2009-03-25 15:24:58.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/sbc8260.c/1.1.1.1/Wed Mar 25 22:21:51 2009//
+D
diff -Naur u-boot-2009.03_orig/board/sbc8260/CVS/Repository u-boot-2009.03/board/sbc8260/CVS/Repository
--- u-boot-2009.03_orig/board/sbc8260/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sbc8260/CVS/Repository 2009-03-25 15:24:58.118830300 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/sbc8260
diff -Naur u-boot-2009.03_orig/board/sbc8260/CVS/Root u-boot-2009.03/board/sbc8260/CVS/Root
--- u-boot-2009.03_orig/board/sbc8260/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sbc8260/CVS/Root       2009-03-25 15:24:58.118830300 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/sbc8349/CVS/Entries u-boot-2009.03/board/sbc8349/CVS/Entries
--- u-boot-2009.03_orig/board/sbc8349/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sbc8349/CVS/Entries    2009-03-25 15:57:45.309365200 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sbc8349.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/sbc8349/CVS/Entries.Extra u-boot-2009.03/board/sbc8349/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/sbc8349/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sbc8349/CVS/Entries.Extra      2009-03-25 15:57:45.309365200 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019711/
+/config.mk///1238019711/
+/pci.c///1238019711/
+/sbc8349.c///1238019711/
diff -Naur u-boot-2009.03_orig/board/sbc8349/CVS/Entries.Extra.Old u-boot-2009.03/board/sbc8349/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/sbc8349/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sbc8349/CVS/Entries.Extra.Old  2009-03-25 15:24:58.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019711/
+/config.mk///1238019711/
+/pci.c///1238019711/
+/sbc8349.c///1238019711/
diff -Naur u-boot-2009.03_orig/board/sbc8349/CVS/Entries.Old u-boot-2009.03/board/sbc8349/CVS/Entries.Old
--- u-boot-2009.03_orig/board/sbc8349/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sbc8349/CVS/Entries.Old        2009-03-25 15:24:58.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/pci.c/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/sbc8349.c/1.1.1.1/Wed Mar 25 22:21:51 2009//
+D
diff -Naur u-boot-2009.03_orig/board/sbc8349/CVS/Repository u-boot-2009.03/board/sbc8349/CVS/Repository
--- u-boot-2009.03_orig/board/sbc8349/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sbc8349/CVS/Repository 2009-03-25 15:24:58.212579700 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/sbc8349
diff -Naur u-boot-2009.03_orig/board/sbc8349/CVS/Root u-boot-2009.03/board/sbc8349/CVS/Root
--- u-boot-2009.03_orig/board/sbc8349/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sbc8349/CVS/Root       2009-03-25 15:24:58.212579700 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/sbc8548/CVS/Entries u-boot-2009.03/board/sbc8548/CVS/Entries
--- u-boot-2009.03_orig/board/sbc8548/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sbc8548/CVS/Entries    2009-03-25 15:57:45.387489700 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ddr.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/law.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sbc8548.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tlb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/sbc8548/CVS/Entries.Extra u-boot-2009.03/board/sbc8548/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/sbc8548/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sbc8548/CVS/Entries.Extra      2009-03-25 15:57:45.387489700 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019711/
+/config.mk///1238019711/
+/ddr.c///1238019711/
+/law.c///1238019711/
+/sbc8548.c///1238019711/
+/tlb.c///1238019711/
+/u-boot.lds///1238019711/
diff -Naur u-boot-2009.03_orig/board/sbc8548/CVS/Entries.Extra.Old u-boot-2009.03/board/sbc8548/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/sbc8548/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sbc8548/CVS/Entries.Extra.Old  2009-03-25 15:24:58.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019711/
+/config.mk///1238019711/
+/ddr.c///1238019711/
+/law.c///1238019711/
+/sbc8548.c///1238019711/
+/tlb.c///1238019711/
+/u-boot.lds///1238019711/
diff -Naur u-boot-2009.03_orig/board/sbc8548/CVS/Entries.Old u-boot-2009.03/board/sbc8548/CVS/Entries.Old
--- u-boot-2009.03_orig/board/sbc8548/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sbc8548/CVS/Entries.Old        2009-03-25 15:24:58.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/ddr.c/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/law.c/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/sbc8548.c/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/tlb.c/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:51 2009//
+D
diff -Naur u-boot-2009.03_orig/board/sbc8548/CVS/Repository u-boot-2009.03/board/sbc8548/CVS/Repository
--- u-boot-2009.03_orig/board/sbc8548/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sbc8548/CVS/Repository 2009-03-25 15:24:58.321954000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/sbc8548
diff -Naur u-boot-2009.03_orig/board/sbc8548/CVS/Root u-boot-2009.03/board/sbc8548/CVS/Root
--- u-boot-2009.03_orig/board/sbc8548/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sbc8548/CVS/Root       2009-03-25 15:24:58.321954000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/sbc8560/CVS/Entries u-boot-2009.03/board/sbc8560/CVS/Entries
--- u-boot-2009.03_orig/board/sbc8560/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sbc8560/CVS/Entries    2009-03-25 15:57:45.465614200 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ddr.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/law.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sbc8560.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tlb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/sbc8560/CVS/Entries.Extra u-boot-2009.03/board/sbc8560/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/sbc8560/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sbc8560/CVS/Entries.Extra      2009-03-25 15:57:45.481239100 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019711/
+/config.mk///1238019711/
+/ddr.c///1238019711/
+/law.c///1238019711/
+/sbc8560.c///1238019711/
+/tlb.c///1238019711/
+/u-boot.lds///1238019711/
diff -Naur u-boot-2009.03_orig/board/sbc8560/CVS/Entries.Extra.Old u-boot-2009.03/board/sbc8560/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/sbc8560/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sbc8560/CVS/Entries.Extra.Old  2009-03-25 15:24:58.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019711/
+/config.mk///1238019711/
+/ddr.c///1238019711/
+/law.c///1238019711/
+/sbc8560.c///1238019711/
+/tlb.c///1238019711/
+/u-boot.lds///1238019711/
diff -Naur u-boot-2009.03_orig/board/sbc8560/CVS/Entries.Old u-boot-2009.03/board/sbc8560/CVS/Entries.Old
--- u-boot-2009.03_orig/board/sbc8560/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sbc8560/CVS/Entries.Old        2009-03-25 15:24:58.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/ddr.c/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/law.c/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/sbc8560.c/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/tlb.c/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:51 2009//
+D
diff -Naur u-boot-2009.03_orig/board/sbc8560/CVS/Repository u-boot-2009.03/board/sbc8560/CVS/Repository
--- u-boot-2009.03_orig/board/sbc8560/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sbc8560/CVS/Repository 2009-03-25 15:24:58.525077700 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/sbc8560
diff -Naur u-boot-2009.03_orig/board/sbc8560/CVS/Root u-boot-2009.03/board/sbc8560/CVS/Root
--- u-boot-2009.03_orig/board/sbc8560/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sbc8560/CVS/Root       2009-03-25 15:24:58.525077700 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/sbc8641d/CVS/Entries u-boot-2009.03/board/sbc8641d/CVS/Entries
--- u-boot-2009.03_orig/board/sbc8641d/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sbc8641d/CVS/Entries   2009-03-25 15:57:45.543738700 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ddr.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/law.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sbc8641d.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/sbc8641d/CVS/Entries.Extra u-boot-2009.03/board/sbc8641d/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/sbc8641d/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sbc8641d/CVS/Entries.Extra     2009-03-25 15:57:45.543738700 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019711/
+/config.mk///1238019711/
+/ddr.c///1238019711/
+/law.c///1238019711/
+/sbc8641d.c///1238019711/
+/u-boot.lds///1238019711/
diff -Naur u-boot-2009.03_orig/board/sbc8641d/CVS/Entries.Extra.Old u-boot-2009.03/board/sbc8641d/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/sbc8641d/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sbc8641d/CVS/Entries.Extra.Old 2009-03-25 15:24:58.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019711/
+/config.mk///1238019711/
+/ddr.c///1238019711/
+/law.c///1238019711/
+/sbc8641d.c///1238019711/
+/u-boot.lds///1238019711/
diff -Naur u-boot-2009.03_orig/board/sbc8641d/CVS/Entries.Old u-boot-2009.03/board/sbc8641d/CVS/Entries.Old
--- u-boot-2009.03_orig/board/sbc8641d/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sbc8641d/CVS/Entries.Old       2009-03-25 15:24:58.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/ddr.c/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/law.c/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/sbc8641d.c/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:51 2009//
+D
diff -Naur u-boot-2009.03_orig/board/sbc8641d/CVS/Repository u-boot-2009.03/board/sbc8641d/CVS/Repository
--- u-boot-2009.03_orig/board/sbc8641d/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sbc8641d/CVS/Repository        2009-03-25 15:24:58.665701800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/sbc8641d
diff -Naur u-boot-2009.03_orig/board/sbc8641d/CVS/Root u-boot-2009.03/board/sbc8641d/CVS/Root
--- u-boot-2009.03_orig/board/sbc8641d/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sbc8641d/CVS/Root      2009-03-25 15:24:58.665701800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/sc3/CVS/Entries u-boot-2009.03/board/sc3/CVS/Entries
--- u-boot-2009.03_orig/board/sc3/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sc3/CVS/Entries        2009-03-31 14:47:44.055194400 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sc3.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sc3nand.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sc3.c/1.1.1.1/Tue Mar 31 21:47:43 2009//T1.1.1.1
+D
diff -Naur u-boot-2009.03_orig/board/sc3/CVS/Entries.Extra u-boot-2009.03/board/sc3/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/sc3/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sc3/CVS/Entries.Extra  2009-03-31 14:47:44.055194400 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019711/
+/config.mk///1238019711/
+/init.S///1238019711/
+/sc3.h///1238019711/
+/sc3nand.c///1238019711/
+/u-boot.lds///1238019711/
+/sc3.c///1238019711/
diff -Naur u-boot-2009.03_orig/board/sc3/CVS/Entries.Extra.Old u-boot-2009.03/board/sc3/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/sc3/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sc3/CVS/Entries.Extra.Old      2009-03-25 17:51:40.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019711/
+/config.mk///1238019711/
+/init.S///1238019711/
+/sc3.h///1238019711/
+/sc3nand.c///1238019711/
+/u-boot.lds///1238019711/
+/sc3.c///1238028700/
diff -Naur u-boot-2009.03_orig/board/sc3/CVS/Entries.Old u-boot-2009.03/board/sc3/CVS/Entries.Old
--- u-boot-2009.03_orig/board/sc3/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sc3/CVS/Entries.Old    2009-03-25 17:51:40.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sc3.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sc3nand.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sc3.c/1.2/Thu Mar 26 00:51:40 2009//
+D
diff -Naur u-boot-2009.03_orig/board/sc3/CVS/Repository u-boot-2009.03/board/sc3/CVS/Repository
--- u-boot-2009.03_orig/board/sc3/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sc3/CVS/Repository     2009-03-25 15:24:58.790701000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/sc3
diff -Naur u-boot-2009.03_orig/board/sc3/CVS/Root u-boot-2009.03/board/sc3/CVS/Root
--- u-boot-2009.03_orig/board/sc3/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sc3/CVS/Root   2009-03-25 15:24:58.775076100 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/sc3/sc3.c u-boot-2009.03/board/sc3/sc3.c
--- u-boot-2009.03_orig/board/sc3/sc3.c 2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/board/sc3/sc3.c      2009-03-31 14:47:43.914571200 -0700
@@ -1,787 +1,790 @@
-/*
- * (C) Copyright 2007
- * Heiko Schocher, DENX Software Engineering, <hs@denx.de>.
- *
- * (C) Copyright 2003
- * Juergen Beisert, EuroDesign embedded technologies, info@eurodsn.de
- * Derived from walnut.c
- *
- * (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
- *
- * $Log:$
- */
-
-#include <common.h>
-#include <asm/processor.h>
-#include <asm/io.h>
-#include "sc3.h"
-#include <pci.h>
-#include <i2c.h>
-#include <malloc.h>
-#include <netdev.h>
-
-#undef writel
-#undef writeb
-#define writeb(b,addr) ((*(volatile u8 *) (addr)) = (b))
-#define writel(b,addr) ((*(volatile u32 *) (addr)) = (b))
-
-/* write only register to configure things in our CPLD */
-#define CPLD_CONTROL_1 0x79000102
-#define CPLD_VERSION   0x79000103
-
-#define        IS_CAMERON ((*(unsigned char *)(CPLD_VERSION)== 0x32) ? 1 : 0)
-
-static struct pci_controller hose={0,};
-
-/************************************************************
- * Standard definition
- ************************************************************/
-
-/* CPC0_CR0        Function                                 ISA bus
-       -  GPIO0
-       -  GPIO1      -> Output: NAND-Command Latch Enable
-       -  GPIO2      -> Output: NAND Address Latch Enable
-       -  GPIO3      -> IRQ input                               ISA-IRQ #5 (through CPLD)
-       -  GPIO4      -> Output: NAND-Chip Enable
-       -  GPIO5      -> IRQ input                               ISA-IRQ#7 (through CPLD)
-       -  GPIO6      -> IRQ input                               ISA-IRQ#9 (through CPLD)
-       -  GPIO7      -> IRQ input                               ISA-IRQ#10 (through CPLD)
-       -  GPIO8      -> IRQ input                               ISA-IRQ#11 (through CPLD)
-       -  GPIO9      -> IRQ input                               ISA-IRQ#12 (through CPLD)
-       - GPIO10/CS1# -> CS1# NAND                               ISA-CS#0
-       - GPIO11/CS2# -> CS2# ISA emulation                      ISA-CS#1
-       - GPIO12/CS3# -> CS3# 2nd Flash-Bank                     ISA-CS#2 or ISA-CS#7
-       - GPIO13/CS4# -> CS4# USB HC or ISA emulation            ISA-CS#3
-       - GPIO14/CS5# -> CS5# Boosted IDE access                 ISA-CS#4
-       - GPIO15/CS6# -> CS6# ISA emulation                      ISA-CS#5
-       - GPIO16/CS7# -> CS7# ISA emulation                      ISA-CS#6
-       - GPIO17/IRQ0 -> GPIO, in, NAND-Ready/Busy# line         ISA-IRQ#3
-       - GPIO18/IRQ1 -> IRQ input                               ISA-IRQ#14
-       - GPIO19/IRQ2 -> IRQ input or USB                        ISA-IRQ#4
-       - GPIO20/IRQ3 -> IRQ input                               PCI-IRQ#D
-       - GPIO21/IRQ4 -> IRQ input                               PCI-IRQ#C
-       - GPIO22/IRQ5 -> IRQ input                               PCI-IRQ#B
-       - GPIO23/IRQ6 -> IRQ input                               PCI-IRQ#A
-       - GPIO24 -> if GPIO output: 0=JTAG CPLD activ, 1=JTAG CPLD inactiv
-*/
-/*
-| CPLD register: io-space at offset 0x102 (write only)
-| 0
-| 1
-| 2 0=CS#4 USB CS#, 1=ISA or GP bus
-| 3
-| 4
-| 5
-| 6 1=enable faster IDE access
-| 7
-*/
-#define USB_CHIP_ENABLE 0x04
-#define IDE_BOOSTING 0x40
-
-/* --------------- USB stuff ------------------------------------- */
-#ifdef CONFIG_ISP1161_PRESENT
-/**
- * initUsbHost- Initialize the Philips isp1161 HC part if present
- * @cpldConfig: Pointer to value in write only CPLD register
- *
- * Initialize the USB host controller if present and fills the
- * scratch register to inform the driver about used resources
- */
-
-static void initUsbHost (unsigned char *cpldConfig)
-{
-       int i;
-       unsigned long usbBase;
-       /*
-        * Read back where init.S has located the USB chip
-        */
-       mtdcr (0x012, 0x04);
-       usbBase = mfdcr (0x013);
-       if (!(usbBase & 0x18000))       /* enabled? */
-               return;
-       usbBase &= 0xFFF00000;
-
-       /*
-        * to test for the USB controller enable using of CS#4 and DMA 3 for USB access
-        */
-       writeb (*cpldConfig | USB_CHIP_ENABLE,CPLD_CONTROL_1);
-
-       /*
-        * first check: is the controller assembled?
-        */
-       hcWriteWord (usbBase, 0x5555, HcScratch);
-       if (hcReadWord (usbBase, HcScratch) == 0x5555) {
-               hcWriteWord (usbBase, 0xAAAA, HcScratch);
-               if (hcReadWord (usbBase, HcScratch) == 0xAAAA) {
-                       if ((hcReadWord (usbBase, HcChipID) & 0xFF00) != 0x6100)
-                               return; /* this is not our controller */
-               /*
-                * try a software reset. This needs up to 10 seconds (see datasheet)
-                */
-                       hcWriteDWord (usbBase, 0x00000001, HcCommandStatus);
-                       for (i = 1000; i > 0; i--) {    /* loop up to 10 seconds */
-                               udelay (10);
-                               if (!(hcReadDWord (usbBase, HcCommandStatus) & 0x01))
-                                       break;
-                       }
-
-                       if (!i)
-                               return;  /* the controller doesn't responding. Broken? */
-               /*
-                * OK. USB controller is ready. Initialize it in such way the later driver
-                * can us it (without any knowing about specific implementation)
-                */
-                       hcWriteDWord (usbBase, 0x00000000, HcControl);
-               /*
-                * disable all interrupt sources. Because we
-                * don't know where we come from (hard reset, cold start, soft reset...)
-                */
-                       hcWriteDWord (usbBase, 0x8000007D, HcInterruptDisable);
-               /*
-                * our current setup hardware configuration
-                * - every port power supply can switched indepently
-                * - every port can signal overcurrent
-                * - every port is "outside" and the devices are removeable
-                */
-                       hcWriteDWord (usbBase, 0x32000902, HcRhDescriptorA);
-                       hcWriteDWord (usbBase, 0x00060000, HcRhDescriptorB);
-               /*
-                * don't forget to switch off power supply of each port
-                * The later running driver can reenable them to find and use
-                * the (maybe) connected devices.
-                *
-                */
-                       hcWriteDWord (usbBase, 0x00000200, HcRhPortStatus1);
-                       hcWriteDWord (usbBase, 0x00000200, HcRhPortStatus2);
-                       hcWriteWord (usbBase, 0x0428, HcHardwareConfiguration);
-                       hcWriteWord (usbBase, 0x0040, HcDMAConfiguration);
-                       hcWriteWord (usbBase, 0x0000, HcuPInterruptEnable);
-                       hcWriteWord (usbBase, 0xA000 | (0x03 << 8) | 27, HcScratch);
-               /*
-                * controller is present and usable
-                */
-                       *cpldConfig |= USB_CHIP_ENABLE;
-               }
-       }
-}
-#endif
-
-#if defined(CONFIG_START_IDE)
-int board_start_ide(void)
-{
-       if (IS_CAMERON) {
-               puts ("no IDE on cameron board.\n");
-               return 0;
-       }
-       return 1;
-}
-#endif
-
-static int sc3_cameron_init (void)
-{
-       /* Set up the Memory Controller for the CAMERON version */
-       mtebc (pb4ap, 0x01805940);
-       mtebc (pb4cr, 0x7401a000);
-       mtebc (pb5ap, 0x01805940);
-       mtebc (pb5cr, 0x7401a000);
-       mtebc (pb6ap, 0x0);
-       mtebc (pb6cr, 0x0);
-       mtebc (pb7ap, 0x0);
-       mtebc (pb7cr, 0x0);
-       return 0;
-}
-
-void sc3_read_eeprom (void)
-{
-       uchar i2c_buffer[18];
-
-       i2c_read (0x50, 0x03, 1, i2c_buffer, 9);
-       i2c_buffer[9] = 0;
-       setenv ("serial#", (char *)i2c_buffer);
-
-       /* read mac-address from eeprom */
-       i2c_read (0x50, 0x11, 1, i2c_buffer, 15);
-       i2c_buffer[17] = 0;
-       i2c_buffer[16] = i2c_buffer[14];
-       i2c_buffer[15] = i2c_buffer[13];
-       i2c_buffer[14] = ':';
-       i2c_buffer[13] = i2c_buffer[12];
-       i2c_buffer[12] = i2c_buffer[11];
-       i2c_buffer[11] = ':';
-       i2c_buffer[8] = ':';
-       i2c_buffer[5] = ':';
-       i2c_buffer[2] = ':';
-       setenv ("ethaddr", (char *)i2c_buffer);
-}
-
-int board_early_init_f (void)
-{
-       /* write only register to configure things in our CPLD */
-       unsigned char cpldConfig_1=0x00;
-
-/*-------------------------------------------------------------------------+
-| Interrupt controller setup for the SolidCard III CPU card (plus Evaluation board).
-|
-| Note: IRQ 0  UART 0, active high; level sensitive
-|       IRQ 1  UART 1, active high; level sensitive
-|       IRQ 2  IIC, active high; level sensitive
-|       IRQ 3  Ext. master, rising edge, edge sensitive
-|       IRQ 4  PCI, active high; level sensitive
-|       IRQ 5  DMA Channel 0, active high; level sensitive
-|       IRQ 6  DMA Channel 1, active high; level sensitive
-|       IRQ 7  DMA Channel 2, active high; level sensitive
-|       IRQ 8  DMA Channel 3, active high; level sensitive
-|       IRQ 9  Ethernet Wakeup, active high; level sensitive
-|       IRQ 10 MAL System Error (SERR), active high; level sensitive
-|       IRQ 11 MAL Tx End of Buffer, active high; level sensitive
-|       IRQ 12 MAL Rx End of Buffer, active high; level sensitive
-|       IRQ 13 MAL Tx Descriptor Error, active high; level sensitive
-|       IRQ 14 MAL Rx Descriptor Error, active high; level sensitive
-|       IRQ 15 Ethernet, active high; level sensitive
-|       IRQ 16 External PCI SERR, active high; level sensitive
-|       IRQ 17 ECC Correctable Error, active high; level sensitive
-|       IRQ 18 PCI Power Management, active high; level sensitive
-|
-|       IRQ 19 (EXT IRQ7 405GPr only)
-|       IRQ 20 (EXT IRQ8 405GPr only)
-|       IRQ 21 (EXT IRQ9 405GPr only)
-|       IRQ 22 (EXT IRQ10 405GPr only)
-|       IRQ 23 (EXT IRQ11 405GPr only)
-|       IRQ 24 (EXT IRQ12 405GPr only)
-|
-|       IRQ 25 (EXT IRQ 0) NAND-Flash R/B# (raising edge means flash is ready)
-|       IRQ 26 (EXT IRQ 1) IDE0 interrupt (x86 = IRQ14). Active high (edge sensitive)
-|       IRQ 27 (EXT IRQ 2) USB controller
-|       IRQ 28 (EXT IRQ 3) INT D, VGA; active low; level sensitive
-|       IRQ 29 (EXT IRQ 4) INT C, Ethernet; active low; level sensitive
-|       IRQ 30 (EXT IRQ 5) INT B, PC104+ SLOT; active low; level sensitive
-|       IRQ 31 (EXT IRQ 6) INT A, PC104+ SLOT; active low; level sensitive
-|
-| Direct Memory Access Controller Signal Polarities
-|       DRQ0 active high (like ISA)
-|       ACK0 active low (like ISA)
-|       EOT0 active high (like ISA)
-|       DRQ1 active high (like ISA)
-|       ACK1 active low (like ISA)
-|       EOT1 active high (like ISA)
-|       DRQ2 active high (like ISA)
-|       ACK2 active low (like ISA)
-|       EOT2 active high (like ISA)
-|       DRQ3 active high (like ISA)
-|       ACK3 active low (like ISA)
-|       EOT3 active high (like ISA)
-|
-+-------------------------------------------------------------------------*/
-
-       writeb (cpldConfig_1, CPLD_CONTROL_1);  /* disable everything in CPLD */
-
-       mtdcr (uicsr, 0xFFFFFFFF);    /* clear all ints */
-       mtdcr (uicer, 0x00000000);    /* disable all ints */
-       mtdcr (uiccr, 0x00000000);    /* set all to be non-critical */
-
-       if (IS_CAMERON) {
-               sc3_cameron_init();
-               mtdcr (0x0B6, 0x18000000);
-               mtdcr (uicpr, 0xFFFFFFF0);
-               mtdcr (uictr, 0x10001030);
-       } else {
-               mtdcr (0x0B6, 0x0000000);
-               mtdcr (uicpr, 0xFFFFFFE0);
-               mtdcr (uictr, 0x10000020);
-       }
-       mtdcr (uicvcr, 0x00000001);   /* set vect base=0,INT0 highest priority */
-       mtdcr (uicsr, 0xFFFFFFFF);    /* clear all ints */
-
-       /* setup other implementation specific details */
-       mtdcr (ecr, 0x60606000);
-
-       mtdcr (cntrl1, 0x000042C0);
-
-       if (IS_CAMERON) {
-               mtdcr (cntrl0, 0x01380000);
-               /* Setup the GPIOs */
-               writel (0x08008000, 0xEF600700);        /* Output states */
-               writel (0x00000000, 0xEF600718);        /* Open Drain control */
-               writel (0x68098000, 0xEF600704);        /* Output control */
-       } else {
-               mtdcr (cntrl0,0x00080000);
-               /* Setup the GPIOs */
-               writel (0x08000000, 0xEF600700);        /* Output states */
-               writel (0x14000000, 0xEF600718);        /* Open Drain control */
-               writel (0x7C000000, 0xEF600704);        /* Output control */
-       }
-
-       /* Code decompression disabled */
-       mtdcr (kiar, kconf);
-       mtdcr (kidr, 0x2B);
-
-       /* CPC0_ER: enable sleep mode of (currently) unused components */
-       /* CPC0_FR: force unused components into sleep mode */
-       mtdcr (cpmer, 0x3F800000);
-       mtdcr (cpmfr, 0x14000000);
-
-       /* set PLB priority */
-       mtdcr (0x87, 0x08000000);
-
-       /* --------------- DMA stuff ------------------------------------- */
-       mtdcr (0x126, 0x49200000);
-
-#ifndef IDE_USES_ISA_EMULATION
-       cpldConfig_1 |= IDE_BOOSTING;   /* enable faster IDE */
-       /* cpldConfig |= 0x01; */       /* enable 8.33MHz output, if *not* present on your baseboard */
-       writeb (cpldConfig_1, CPLD_CONTROL_1);
-#endif
-
-#ifdef CONFIG_ISP1161_PRESENT
-       initUsbHost (&cpldConfig_1);
-       writeb (cpldConfig_1, CPLD_CONTROL_1);
-#endif
-       /* FIXME: for what must we do this */
-       *(unsigned long *)0x79000080 = 0x0001;
-       return(0);
-}
-
-int misc_init_r (void)
-{
-       char *s1;
-       int i, xilinx_val;
-       volatile char *xilinx_adr;
-       xilinx_adr = (char *)0x79000102;
-
-       *xilinx_adr = 0x00;
-
-/* customer settings ***************************************** */
-/*
-       s1 = getenv ("function");
-       if (s1) {
-               if (!strcmp (s1, "Rosho")) {
-                       printf ("function 'Rosho' activated\n");
-                       *xilinx_adr = 0x40;
-               }
-               else {
-                       printf (">>>>>>>>>> function %s not recognized\n",s1);
-               }
-       }
-*/
-
-/* individual settings ***************************************** */
-       if ((s1 = getenv ("xilinx"))) {
-               i=0;
-               xilinx_val = 0;
-               while (i < 3 && s1[i]) {
-                       if (s1[i] >= '0' && s1[i] <= '9')
-                               xilinx_val = (xilinx_val << 4) + s1[i] - '0';
-                       else
-                               if (s1[i] >= 'A' && s1[i] <= 'F')
-                                       xilinx_val = (xilinx_val << 4) + s1[i] - 'A' + 10;
-                               else
-                                       if (s1[i] >= 'a' && s1[i] <= 'f')
-                                               xilinx_val = (xilinx_val << 4) + s1[i] - 'a' + 10;
-                                       else {
-                                               xilinx_val = -1;
-                                               break;
-                                       }
-                       i++;
-               }
-               if (xilinx_val >= 0 && xilinx_val <=255 && i < 3) {
-                       printf ("Xilinx: set to %s\n", s1);
-                       *xilinx_adr = (unsigned char) xilinx_val;
-               } else
-                       printf ("Xilinx: rejected value %s\n", s1);
-       }
-       return 0;
-}
-
-/* -------------------------------------------------------------------------
- * printCSConfig
- *
- * Print some informations about chips select configurations
- * Only used while debugging.
- *
- * Params:
- * - No. of CS pin
- * - AP of this CS
- * - CR of this CS
- *
- * Returns
- * nothing
-   ------------------------------------------------------------------------- */
-
-#ifdef SC3_DEBUGOUT
-static void printCSConfig(int reg,unsigned long ap,unsigned long cr)
-{
-       const char *bsize[4] = {"8","16","32","?"};
-       const unsigned char banks[8] = {1, 2, 4, 8, 16, 32, 64, 128};
-       const char *bankaccess[4] = {"disabled", "RO", "WO", "RW"};
-
-#define CYCLE 30  /* time of one clock (based on 33MHz) */
-
-       printf("\nCS#%d",reg);
-       if (!(cr & 0x00018000))
-               puts(" unused");
-       else {
-               if (((cr&0xFFF00000U) & ((banks[(cr & 0x000E0000) >> 17]-1) << 20)))
-                       puts(" Address is not multiple of bank size!");
-
-               printf("\n -%s bit device",
-                       bsize[(cr & 0x00006000) >> 13]);
-               printf(" at 0x%08lX", cr & 0xFFF00000U);
-               printf(" size: %u MB", banks[(cr & 0x000E0000) >> 17]);
-               printf(" rights: %s", bankaccess[(cr & 0x00018000) >> 15]);
-               if (ap & 0x80000000) {
-                       printf("\n -Burst device (%luns/%luns)",
-                               (((ap & 0x7C000000) >> 26) + 1) * CYCLE,
-                               (((ap & 0x03800000) >> 23) + 1) * CYCLE);
-               } else {
-                       printf("\n -Non burst device, active cycle %luns",
-                               (((ap & 0x7F800000) >> 23) + 1) * CYCLE);
-                       printf("\n -Address setup %luns",
-                               ((ap & 0xC0000) >> 18) * CYCLE);
-                       printf("\n -CS active to RD %luns/WR %luns",
-                               ((ap & 0x30000) >> 16) * CYCLE,
-                               ((ap & 0xC000) >> 14) * CYCLE);
-                       printf("\n -WR to CS inactive %luns",
-                               ((ap & 0x3000) >> 12) * CYCLE);
-                       printf("\n -Hold after access %luns",
-                               ((ap & 0xE00) >> 9) * CYCLE);
-                       printf("\n -Ready is %sabled",
-                               ap & 0x100 ? "en" : "dis");
-               }
-       }
-}
-#endif
-
-#ifdef SC3_DEBUGOUT
-
-static unsigned int ap[] = {pb0ap, pb1ap, pb2ap, pb3ap, pb4ap,
-                               pb5ap, pb6ap, pb7ap};
-static unsigned int cr[] = {pb0cr, pb1cr, pb2cr, pb3cr, pb4cr,
-                               pb5cr, pb6cr, pb7cr};
-
-static int show_reg (int nr)
-{
-       unsigned long ul1, ul2;
-
-       mtdcr (ebccfga, ap[nr]);
-       ul1 = mfdcr (ebccfgd);
-       mtdcr (ebccfga, cr[nr]);
-       ul2 = mfdcr(ebccfgd);
-       printCSConfig(nr, ul1, ul2);
-       return 0;
-}
-#endif
-
-int checkboard (void)
-{
-#ifdef SC3_DEBUGOUT
-       unsigned long ul1;
-       int     i;
-
-       for (i = 0; i < 8; i++) {
-               show_reg (i);
-       }
-
-       mtdcr (ebccfga, epcr);
-       ul1 = mfdcr (ebccfgd);
-
-       puts ("\nGeneral configuration:\n");
-
-       if (ul1 & 0x80000000)
-               printf(" -External Bus is always driven\n");
-
-       if (ul1 & 0x400000)
-               printf(" -CS signals are always driven\n");
-
-       if (ul1 & 0x20000)
-               printf(" -PowerDown after %lu clocks\n",
-                       (ul1 & 0x1F000) >> 7);
-
-       switch (ul1 & 0xC0000)
-       {
-       case 0xC0000:
-               printf(" -No external master present\n");
-               break;
-       case 0x00000:
-               printf(" -8 bit external master present\n");
-               break;
-       case 0x40000:
-               printf(" -16 bit external master present\n");
-               break;
-       case 0x80000:
-               printf(" -32 bit external master present\n");
-               break;
-       }
-
-       switch (ul1 & 0x300000)
-       {
-       case 0x300000:
-               printf(" -Prefetch: Illegal setting!\n");
-               break;
-       case 0x000000:
-               printf(" -1 doubleword prefetch\n");
-               break;
-       case 0x100000:
-               printf(" -2 doublewords prefetch\n");
-               break;
-       case 0x200000:
-               printf(" -4 doublewords prefetch\n");
-               break;
-       }
-       putc ('\n');
-#endif
-       printf("Board: SolidCard III %s %s version.\n",
-               (IS_CAMERON ? "Cameron" : "Eurodesign"), CONFIG_SC3_VERSION);
-       return 0;
-}
-
-static int printSDRAMConfig(char reg, unsigned long cr)
-{
-       const int bisize[8]={4, 8, 16, 32, 64, 128, 256, 0};
-#ifdef SC3_DEBUGOUT
-       const char *basize[8]=
-               {"4", "8", "16", "32", "64", "128", "256", "Reserved"};
-
-       printf("SDRAM bank %d",reg);
-
-       if (!(cr & 0x01))
-               puts(" disabled\n");
-       else {
-               printf(" at 0x%08lX, size %s MB",cr & 0xFFC00000,basize[(cr&0xE0000)>>17]);
-               printf(" mode %lu\n",((cr & 0xE000)>>13)+1);
-       }
-#endif
-
-       if (cr & 0x01)
-               return(bisize[(cr & 0xE0000) >> 17]);
-
-       return 0;
-}
-
-#ifdef SC3_DEBUGOUT
-static unsigned int mbcf[] = {mem_mb0cf, mem_mb1cf, mem_mb2cf, mem_mb3cf};
-#endif
-
-phys_size_t initdram (int board_type)
-{
-       unsigned int mems=0;
-       unsigned long ul1;
-
-#ifdef SC3_DEBUGOUT
-       unsigned long ul2;
-       int     i;
-
-       puts("\nSDRAM configuration:\n");
-
-       mtdcr (memcfga, mem_mcopt1);
-       ul1 = mfdcr(memcfgd);
-
-       if (!(ul1 & 0x80000000)) {
-               puts(" Controller disabled\n");
-               return 0;
-       }
-       for (i = 0; i < 4; i++) {
-               mtdcr (memcfga, mbcf[i]);
-               ul1 = mfdcr (memcfgd);
-               mems += printSDRAMConfig (i, ul1);
-       }
-
-       mtdcr (memcfga, mem_sdtr1);
-       ul1 = mfdcr(memcfgd);
-
-       printf ("Timing:\n -CAS latency %lu\n", ((ul1 & 0x1800000) >> 23)+1);
-       printf (" -Precharge %lu (PTA) \n", ((ul1 & 0xC0000) >> 18) + 1);
-       printf (" -R/W to Precharge %lu (CTP)\n", ((ul1 & 0x30000) >> 16) + 1);
-       printf (" -Leadoff %lu\n", ((ul1 & 0xC000) >> 14) + 1);
-       printf (" -CAS to RAS %lu\n", ((ul1 & 0x1C) >> 2) + 4);
-       printf (" -RAS to CAS %lu\n", ((ul1 & 0x3) + 1));
-       puts ("Misc:\n");
-       mtdcr (memcfga, mem_rtr);
-       ul1 = mfdcr(memcfgd);
-       printf (" -Refresh rate: %luns\n", (ul1 >> 16) * 7);
-
-       mtdcr(memcfga,mem_pmit);
-       ul2=mfdcr(memcfgd);
-
-       mtdcr(memcfga,mem_mcopt1);
-       ul1=mfdcr(memcfgd);
-
-       if (ul1 & 0x20000000)
-               printf(" -Power Down after: %luns\n",
-                       ((ul2 & 0xFFC00000) >> 22) * 7);
-       else
-               puts(" -Power Down disabled\n");
-
-       if (ul1 & 0x40000000)
-               printf(" -Self refresh feature active\n");
-       else
-               puts(" -Self refresh disabled\n");
-
-       if (ul1 & 0x10000000)
-               puts(" -ECC enabled\n");
-       else
-               puts(" -ECC disabled\n");
-
-       if (ul1 & 0x8000000)
-               puts(" -Using registered SDRAM\n");
-
-       if (!(ul1 & 0x6000000))
-               puts(" -Using 32 bit data width\n");
-       else
-               puts(" -Illegal data width!\n");
-
-       if (ul1 & 0x400000)
-               puts(" -ECC drivers inactive\n");
-       else
-               puts(" -ECC drivers active\n");
-
-       if (ul1 & 0x200000)
-               puts(" -Memory lines always active outputs\n");
-       else
-               puts(" -Memory lines only at write cycles active outputs\n");
-
-       mtdcr (memcfga, mem_status);
-       ul1 = mfdcr (memcfgd);
-       if (ul1 & 0x80000000)
-               puts(" -SDRAM Controller ready\n");
-       else
-               puts(" -SDRAM Controller not ready\n");
-
-       if (ul1 & 0x4000000)
-               puts(" -SDRAM in self refresh mode!\n");
-
-       return (mems * 1024 * 1024);
-#else
-       mtdcr (memcfga, mem_mb0cf);
-       ul1 = mfdcr (memcfgd);
-       mems = printSDRAMConfig (0, ul1);
-
-       mtdcr (memcfga, mem_mb1cf);
-       ul1 = mfdcr (memcfgd);
-       mems += printSDRAMConfig (1, ul1);
-
-       mtdcr (memcfga, mem_mb2cf);
-       ul1 = mfdcr(memcfgd);
-       mems += printSDRAMConfig (2, ul1);
-
-       mtdcr (memcfga, mem_mb3cf);
-       ul1 = mfdcr(memcfgd);
-       mems += printSDRAMConfig (3, ul1);
-
-       return (mems * 1024 * 1024);
-#endif
-}
-
-static void pci_solidcard3_fixup_irq (struct pci_controller *hose, pci_dev_t dev)
-{
-/*-------------------------------------------------------------------------+
- |             ,-.     ,-.        ,-.        ,-.        ,-.
- |   INTD# ----|B|-----|P|-.    ,-|P|-.    ,-| |-.    ,-|G|
- |             |R|     |C|  \  /  |C|  \  /  |E|  \  /  |r|
- |   INTC# ----|I|-----|1|-. `/---|1|-. `/---|t|-. `/---|a|
- |             |D|     |0|  \/    |0|  \/    |h|  \/    |f|
- |   INTB# ----|G|-----|4|-./`----|4|-./`----|e|-./`----|i|
- |             |E|     |+| /\     |+| /\     |r| /\     |k|
- |   INTA# ----| |-----| |-  `----| |-  `----| |-  `----| |
- |             `-'     `-'        `-'        `-'        `-'
- |   Slot      0       10         11         12         13
- |   REQ#              0          1          2          *
- |   GNT#              0          1          2          *
- +-------------------------------------------------------------------------*/
-       unsigned char int_line = 0xff;
-
-       switch (PCI_DEV(dev)) {
-       case 10:
-               int_line = 31; /* INT A */
-               POST_OUT(0x42);
-               break;
-
-       case 11:
-               int_line = 30; /* INT B */
-               POST_OUT(0x43);
-               break;
-
-       case 12:
-               int_line = 29; /* INT C */
-               POST_OUT(0x44);
-               break;
-
-       case 13:
-               int_line = 28; /* INT D */
-               POST_OUT(0x45);
-               break;
-       }
-       pci_hose_write_config_byte(hose, dev, PCI_INTERRUPT_LINE, int_line);
-}
-
-extern void pci_405gp_init(struct pci_controller *hose);
-extern void pci_405gp_fixup_irq(struct pci_controller *hose, pci_dev_t dev);
-extern void pci_405gp_setup_bridge(struct pci_controller *hose, pci_dev_t dev,struct pci_config_table *entry);
-/*
- * The following table is used when there is a special need to setup a PCI device.
- * For every PCI device found in this table is called the given init function with given
- * parameters. So never let all IDs at PCI_ANY_ID. In this case any found device gets the same
- * parameters!
- *
-*/
-static struct pci_config_table pci_solidcard3_config_table[] =
-{
-/* Host to PCI Bridge device (405GP) */
-       {
-               vendor: 0x1014,
-               device: 0x0156,
-               class: PCI_CLASS_BRIDGE_HOST,
-               bus: 0,
-               dev: 0,
-               func: 0,
-               config_device: pci_405gp_setup_bridge
-       },
-       { }
-};
-
-/*-------------------------------------------------------------------------+
- | pci_init_board (Called from pci_init() in drivers/pci/pci.c)
- |
- | Init the PCI part of the SolidCard III
- |
- | Params:
- * - Pointer to current PCI hose
- * - Current Device
- *
- * Returns
- * nothing
- +-------------------------------------------------------------------------*/
-
-void pci_init_board(void)
-{
-       POST_OUT(0x41);
-/*
- * we want the ptrs to RAM not flash (ie don't use init list)
- */
-       hose.fixup_irq    = pci_solidcard3_fixup_irq;
-       hose.config_table = pci_solidcard3_config_table;
-       pci_405gp_init(&hose);
-}
-
-int board_eth_init(bd_t *bis)
-{
-       return pci_eth_init(bis);
-}
+/*
+ * (C) Copyright 2007
+ * Heiko Schocher, DENX Software Engineering, <hs@denx.de>.
+ *
+ * (C) Copyright 2003
+ * Juergen Beisert, EuroDesign embedded technologies, info@eurodsn.de
+ * Derived from walnut.c
+ *
+ * (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
+ *
+ * $Log: sc3.c,v $
+ * Revision 1.1.1.1  2009/03/25 22:21:51  kenagy
+ * no message
+ *
+ */
+
+#include <common.h>
+#include <asm/processor.h>
+#include <asm/io.h>
+#include "sc3.h"
+#include <pci.h>
+#include <i2c.h>
+#include <malloc.h>
+#include <netdev.h>
+
+#undef writel
+#undef writeb
+#define writeb(b,addr) ((*(volatile u8 *) (addr)) = (b))
+#define writel(b,addr) ((*(volatile u32 *) (addr)) = (b))
+
+/* write only register to configure things in our CPLD */
+#define CPLD_CONTROL_1 0x79000102
+#define CPLD_VERSION   0x79000103
+
+#define        IS_CAMERON ((*(unsigned char *)(CPLD_VERSION)== 0x32) ? 1 : 0)
+
+static struct pci_controller hose={0,};
+
+/************************************************************
+ * Standard definition
+ ************************************************************/
+
+/* CPC0_CR0        Function                                 ISA bus
+       -  GPIO0
+       -  GPIO1      -> Output: NAND-Command Latch Enable
+       -  GPIO2      -> Output: NAND Address Latch Enable
+       -  GPIO3      -> IRQ input                               ISA-IRQ #5 (through CPLD)
+       -  GPIO4      -> Output: NAND-Chip Enable
+       -  GPIO5      -> IRQ input                               ISA-IRQ#7 (through CPLD)
+       -  GPIO6      -> IRQ input                               ISA-IRQ#9 (through CPLD)
+       -  GPIO7      -> IRQ input                               ISA-IRQ#10 (through CPLD)
+       -  GPIO8      -> IRQ input                               ISA-IRQ#11 (through CPLD)
+       -  GPIO9      -> IRQ input                               ISA-IRQ#12 (through CPLD)
+       - GPIO10/CS1# -> CS1# NAND                               ISA-CS#0
+       - GPIO11/CS2# -> CS2# ISA emulation                      ISA-CS#1
+       - GPIO12/CS3# -> CS3# 2nd Flash-Bank                     ISA-CS#2 or ISA-CS#7
+       - GPIO13/CS4# -> CS4# USB HC or ISA emulation            ISA-CS#3
+       - GPIO14/CS5# -> CS5# Boosted IDE access                 ISA-CS#4
+       - GPIO15/CS6# -> CS6# ISA emulation                      ISA-CS#5
+       - GPIO16/CS7# -> CS7# ISA emulation                      ISA-CS#6
+       - GPIO17/IRQ0 -> GPIO, in, NAND-Ready/Busy# line         ISA-IRQ#3
+       - GPIO18/IRQ1 -> IRQ input                               ISA-IRQ#14
+       - GPIO19/IRQ2 -> IRQ input or USB                        ISA-IRQ#4
+       - GPIO20/IRQ3 -> IRQ input                               PCI-IRQ#D
+       - GPIO21/IRQ4 -> IRQ input                               PCI-IRQ#C
+       - GPIO22/IRQ5 -> IRQ input                               PCI-IRQ#B
+       - GPIO23/IRQ6 -> IRQ input                               PCI-IRQ#A
+       - GPIO24 -> if GPIO output: 0=JTAG CPLD activ, 1=JTAG CPLD inactiv
+*/
+/*
+| CPLD register: io-space at offset 0x102 (write only)
+| 0
+| 1
+| 2 0=CS#4 USB CS#, 1=ISA or GP bus
+| 3
+| 4
+| 5
+| 6 1=enable faster IDE access
+| 7
+*/
+#define USB_CHIP_ENABLE 0x04
+#define IDE_BOOSTING 0x40
+
+/* --------------- USB stuff ------------------------------------- */
+#ifdef CONFIG_ISP1161_PRESENT
+/**
+ * initUsbHost- Initialize the Philips isp1161 HC part if present
+ * @cpldConfig: Pointer to value in write only CPLD register
+ *
+ * Initialize the USB host controller if present and fills the
+ * scratch register to inform the driver about used resources
+ */
+
+static void initUsbHost (unsigned char *cpldConfig)
+{
+       int i;
+       unsigned long usbBase;
+       /*
+        * Read back where init.S has located the USB chip
+        */
+       mtdcr (0x012, 0x04);
+       usbBase = mfdcr (0x013);
+       if (!(usbBase & 0x18000))       /* enabled? */
+               return;
+       usbBase &= 0xFFF00000;
+
+       /*
+        * to test for the USB controller enable using of CS#4 and DMA 3 for USB access
+        */
+       writeb (*cpldConfig | USB_CHIP_ENABLE,CPLD_CONTROL_1);
+
+       /*
+        * first check: is the controller assembled?
+        */
+       hcWriteWord (usbBase, 0x5555, HcScratch);
+       if (hcReadWord (usbBase, HcScratch) == 0x5555) {
+               hcWriteWord (usbBase, 0xAAAA, HcScratch);
+               if (hcReadWord (usbBase, HcScratch) == 0xAAAA) {
+                       if ((hcReadWord (usbBase, HcChipID) & 0xFF00) != 0x6100)
+                               return; /* this is not our controller */
+               /*
+                * try a software reset. This needs up to 10 seconds (see datasheet)
+                */
+                       hcWriteDWord (usbBase, 0x00000001, HcCommandStatus);
+                       for (i = 1000; i > 0; i--) {    /* loop up to 10 seconds */
+                               udelay (10);
+                               if (!(hcReadDWord (usbBase, HcCommandStatus) & 0x01))
+                                       break;
+                       }
+
+                       if (!i)
+                               return;  /* the controller doesn't responding. Broken? */
+               /*
+                * OK. USB controller is ready. Initialize it in such way the later driver
+                * can us it (without any knowing about specific implementation)
+                */
+                       hcWriteDWord (usbBase, 0x00000000, HcControl);
+               /*
+                * disable all interrupt sources. Because we
+                * don't know where we come from (hard reset, cold start, soft reset...)
+                */
+                       hcWriteDWord (usbBase, 0x8000007D, HcInterruptDisable);
+               /*
+                * our current setup hardware configuration
+                * - every port power supply can switched indepently
+                * - every port can signal overcurrent
+                * - every port is "outside" and the devices are removeable
+                */
+                       hcWriteDWord (usbBase, 0x32000902, HcRhDescriptorA);
+                       hcWriteDWord (usbBase, 0x00060000, HcRhDescriptorB);
+               /*
+                * don't forget to switch off power supply of each port
+                * The later running driver can reenable them to find and use
+                * the (maybe) connected devices.
+                *
+                */
+                       hcWriteDWord (usbBase, 0x00000200, HcRhPortStatus1);
+                       hcWriteDWord (usbBase, 0x00000200, HcRhPortStatus2);
+                       hcWriteWord (usbBase, 0x0428, HcHardwareConfiguration);
+                       hcWriteWord (usbBase, 0x0040, HcDMAConfiguration);
+                       hcWriteWord (usbBase, 0x0000, HcuPInterruptEnable);
+                       hcWriteWord (usbBase, 0xA000 | (0x03 << 8) | 27, HcScratch);
+               /*
+                * controller is present and usable
+                */
+                       *cpldConfig |= USB_CHIP_ENABLE;
+               }
+       }
+}
+#endif
+
+#if defined(CONFIG_START_IDE)
+int board_start_ide(void)
+{
+       if (IS_CAMERON) {
+               puts ("no IDE on cameron board.\n");
+               return 0;
+       }
+       return 1;
+}
+#endif
+
+static int sc3_cameron_init (void)
+{
+       /* Set up the Memory Controller for the CAMERON version */
+       mtebc (pb4ap, 0x01805940);
+       mtebc (pb4cr, 0x7401a000);
+       mtebc (pb5ap, 0x01805940);
+       mtebc (pb5cr, 0x7401a000);
+       mtebc (pb6ap, 0x0);
+       mtebc (pb6cr, 0x0);
+       mtebc (pb7ap, 0x0);
+       mtebc (pb7cr, 0x0);
+       return 0;
+}
+
+void sc3_read_eeprom (void)
+{
+       uchar i2c_buffer[18];
+
+       i2c_read (0x50, 0x03, 1, i2c_buffer, 9);
+       i2c_buffer[9] = 0;
+       setenv ("serial#", (char *)i2c_buffer);
+
+       /* read mac-address from eeprom */
+       i2c_read (0x50, 0x11, 1, i2c_buffer, 15);
+       i2c_buffer[17] = 0;
+       i2c_buffer[16] = i2c_buffer[14];
+       i2c_buffer[15] = i2c_buffer[13];
+       i2c_buffer[14] = ':';
+       i2c_buffer[13] = i2c_buffer[12];
+       i2c_buffer[12] = i2c_buffer[11];
+       i2c_buffer[11] = ':';
+       i2c_buffer[8] = ':';
+       i2c_buffer[5] = ':';
+       i2c_buffer[2] = ':';
+       setenv ("ethaddr", (char *)i2c_buffer);
+}
+
+int board_early_init_f (void)
+{
+       /* write only register to configure things in our CPLD */
+       unsigned char cpldConfig_1=0x00;
+
+/*-------------------------------------------------------------------------+
+| Interrupt controller setup for the SolidCard III CPU card (plus Evaluation board).
+|
+| Note: IRQ 0  UART 0, active high; level sensitive
+|       IRQ 1  UART 1, active high; level sensitive
+|       IRQ 2  IIC, active high; level sensitive
+|       IRQ 3  Ext. master, rising edge, edge sensitive
+|       IRQ 4  PCI, active high; level sensitive
+|       IRQ 5  DMA Channel 0, active high; level sensitive
+|       IRQ 6  DMA Channel 1, active high; level sensitive
+|       IRQ 7  DMA Channel 2, active high; level sensitive
+|       IRQ 8  DMA Channel 3, active high; level sensitive
+|       IRQ 9  Ethernet Wakeup, active high; level sensitive
+|       IRQ 10 MAL System Error (SERR), active high; level sensitive
+|       IRQ 11 MAL Tx End of Buffer, active high; level sensitive
+|       IRQ 12 MAL Rx End of Buffer, active high; level sensitive
+|       IRQ 13 MAL Tx Descriptor Error, active high; level sensitive
+|       IRQ 14 MAL Rx Descriptor Error, active high; level sensitive
+|       IRQ 15 Ethernet, active high; level sensitive
+|       IRQ 16 External PCI SERR, active high; level sensitive
+|       IRQ 17 ECC Correctable Error, active high; level sensitive
+|       IRQ 18 PCI Power Management, active high; level sensitive
+|
+|       IRQ 19 (EXT IRQ7 405GPr only)
+|       IRQ 20 (EXT IRQ8 405GPr only)
+|       IRQ 21 (EXT IRQ9 405GPr only)
+|       IRQ 22 (EXT IRQ10 405GPr only)
+|       IRQ 23 (EXT IRQ11 405GPr only)
+|       IRQ 24 (EXT IRQ12 405GPr only)
+|
+|       IRQ 25 (EXT IRQ 0) NAND-Flash R/B# (raising edge means flash is ready)
+|       IRQ 26 (EXT IRQ 1) IDE0 interrupt (x86 = IRQ14). Active high (edge sensitive)
+|       IRQ 27 (EXT IRQ 2) USB controller
+|       IRQ 28 (EXT IRQ 3) INT D, VGA; active low; level sensitive
+|       IRQ 29 (EXT IRQ 4) INT C, Ethernet; active low; level sensitive
+|       IRQ 30 (EXT IRQ 5) INT B, PC104+ SLOT; active low; level sensitive
+|       IRQ 31 (EXT IRQ 6) INT A, PC104+ SLOT; active low; level sensitive
+|
+| Direct Memory Access Controller Signal Polarities
+|       DRQ0 active high (like ISA)
+|       ACK0 active low (like ISA)
+|       EOT0 active high (like ISA)
+|       DRQ1 active high (like ISA)
+|       ACK1 active low (like ISA)
+|       EOT1 active high (like ISA)
+|       DRQ2 active high (like ISA)
+|       ACK2 active low (like ISA)
+|       EOT2 active high (like ISA)
+|       DRQ3 active high (like ISA)
+|       ACK3 active low (like ISA)
+|       EOT3 active high (like ISA)
+|
++-------------------------------------------------------------------------*/
+
+       writeb (cpldConfig_1, CPLD_CONTROL_1);  /* disable everything in CPLD */
+
+       mtdcr (uicsr, 0xFFFFFFFF);    /* clear all ints */
+       mtdcr (uicer, 0x00000000);    /* disable all ints */
+       mtdcr (uiccr, 0x00000000);    /* set all to be non-critical */
+
+       if (IS_CAMERON) {
+               sc3_cameron_init();
+               mtdcr (0x0B6, 0x18000000);
+               mtdcr (uicpr, 0xFFFFFFF0);
+               mtdcr (uictr, 0x10001030);
+       } else {
+               mtdcr (0x0B6, 0x0000000);
+               mtdcr (uicpr, 0xFFFFFFE0);
+               mtdcr (uictr, 0x10000020);
+       }
+       mtdcr (uicvcr, 0x00000001);   /* set vect base=0,INT0 highest priority */
+       mtdcr (uicsr, 0xFFFFFFFF);    /* clear all ints */
+
+       /* setup other implementation specific details */
+       mtdcr (ecr, 0x60606000);
+
+       mtdcr (cntrl1, 0x000042C0);
+
+       if (IS_CAMERON) {
+               mtdcr (cntrl0, 0x01380000);
+               /* Setup the GPIOs */
+               writel (0x08008000, 0xEF600700);        /* Output states */
+               writel (0x00000000, 0xEF600718);        /* Open Drain control */
+               writel (0x68098000, 0xEF600704);        /* Output control */
+       } else {
+               mtdcr (cntrl0,0x00080000);
+               /* Setup the GPIOs */
+               writel (0x08000000, 0xEF600700);        /* Output states */
+               writel (0x14000000, 0xEF600718);        /* Open Drain control */
+               writel (0x7C000000, 0xEF600704);        /* Output control */
+       }
+
+       /* Code decompression disabled */
+       mtdcr (kiar, kconf);
+       mtdcr (kidr, 0x2B);
+
+       /* CPC0_ER: enable sleep mode of (currently) unused components */
+       /* CPC0_FR: force unused components into sleep mode */
+       mtdcr (cpmer, 0x3F800000);
+       mtdcr (cpmfr, 0x14000000);
+
+       /* set PLB priority */
+       mtdcr (0x87, 0x08000000);
+
+       /* --------------- DMA stuff ------------------------------------- */
+       mtdcr (0x126, 0x49200000);
+
+#ifndef IDE_USES_ISA_EMULATION
+       cpldConfig_1 |= IDE_BOOSTING;   /* enable faster IDE */
+       /* cpldConfig |= 0x01; */       /* enable 8.33MHz output, if *not* present on your baseboard */
+       writeb (cpldConfig_1, CPLD_CONTROL_1);
+#endif
+
+#ifdef CONFIG_ISP1161_PRESENT
+       initUsbHost (&cpldConfig_1);
+       writeb (cpldConfig_1, CPLD_CONTROL_1);
+#endif
+       /* FIXME: for what must we do this */
+       *(unsigned long *)0x79000080 = 0x0001;
+       return(0);
+}
+
+int misc_init_r (void)
+{
+       char *s1;
+       int i, xilinx_val;
+       volatile char *xilinx_adr;
+       xilinx_adr = (char *)0x79000102;
+
+       *xilinx_adr = 0x00;
+
+/* customer settings ***************************************** */
+/*
+       s1 = getenv ("function");
+       if (s1) {
+               if (!strcmp (s1, "Rosho")) {
+                       printf ("function 'Rosho' activated\n");
+                       *xilinx_adr = 0x40;
+               }
+               else {
+                       printf (">>>>>>>>>> function %s not recognized\n",s1);
+               }
+       }
+*/
+
+/* individual settings ***************************************** */
+       if ((s1 = getenv ("xilinx"))) {
+               i=0;
+               xilinx_val = 0;
+               while (i < 3 && s1[i]) {
+                       if (s1[i] >= '0' && s1[i] <= '9')
+                               xilinx_val = (xilinx_val << 4) + s1[i] - '0';
+                       else
+                               if (s1[i] >= 'A' && s1[i] <= 'F')
+                                       xilinx_val = (xilinx_val << 4) + s1[i] - 'A' + 10;
+                               else
+                                       if (s1[i] >= 'a' && s1[i] <= 'f')
+                                               xilinx_val = (xilinx_val << 4) + s1[i] - 'a' + 10;
+                                       else {
+                                               xilinx_val = -1;
+                                               break;
+                                       }
+                       i++;
+               }
+               if (xilinx_val >= 0 && xilinx_val <=255 && i < 3) {
+                       printf ("Xilinx: set to %s\n", s1);
+                       *xilinx_adr = (unsigned char) xilinx_val;
+               } else
+                       printf ("Xilinx: rejected value %s\n", s1);
+       }
+       return 0;
+}
+
+/* -------------------------------------------------------------------------
+ * printCSConfig
+ *
+ * Print some informations about chips select configurations
+ * Only used while debugging.
+ *
+ * Params:
+ * - No. of CS pin
+ * - AP of this CS
+ * - CR of this CS
+ *
+ * Returns
+ * nothing
+   ------------------------------------------------------------------------- */
+
+#ifdef SC3_DEBUGOUT
+static void printCSConfig(int reg,unsigned long ap,unsigned long cr)
+{
+       const char *bsize[4] = {"8","16","32","?"};
+       const unsigned char banks[8] = {1, 2, 4, 8, 16, 32, 64, 128};
+       const char *bankaccess[4] = {"disabled", "RO", "WO", "RW"};
+
+#define CYCLE 30  /* time of one clock (based on 33MHz) */
+
+       printf("\nCS#%d",reg);
+       if (!(cr & 0x00018000))
+               puts(" unused");
+       else {
+               if (((cr&0xFFF00000U) & ((banks[(cr & 0x000E0000) >> 17]-1) << 20)))
+                       puts(" Address is not multiple of bank size!");
+
+               printf("\n -%s bit device",
+                       bsize[(cr & 0x00006000) >> 13]);
+               printf(" at 0x%08lX", cr & 0xFFF00000U);
+               printf(" size: %u MB", banks[(cr & 0x000E0000) >> 17]);
+               printf(" rights: %s", bankaccess[(cr & 0x00018000) >> 15]);
+               if (ap & 0x80000000) {
+                       printf("\n -Burst device (%luns/%luns)",
+                               (((ap & 0x7C000000) >> 26) + 1) * CYCLE,
+                               (((ap & 0x03800000) >> 23) + 1) * CYCLE);
+               } else {
+                       printf("\n -Non burst device, active cycle %luns",
+                               (((ap & 0x7F800000) >> 23) + 1) * CYCLE);
+                       printf("\n -Address setup %luns",
+                               ((ap & 0xC0000) >> 18) * CYCLE);
+                       printf("\n -CS active to RD %luns/WR %luns",
+                               ((ap & 0x30000) >> 16) * CYCLE,
+                               ((ap & 0xC000) >> 14) * CYCLE);
+                       printf("\n -WR to CS inactive %luns",
+                               ((ap & 0x3000) >> 12) * CYCLE);
+                       printf("\n -Hold after access %luns",
+                               ((ap & 0xE00) >> 9) * CYCLE);
+                       printf("\n -Ready is %sabled",
+                               ap & 0x100 ? "en" : "dis");
+               }
+       }
+}
+#endif
+
+#ifdef SC3_DEBUGOUT
+
+static unsigned int ap[] = {pb0ap, pb1ap, pb2ap, pb3ap, pb4ap,
+                               pb5ap, pb6ap, pb7ap};
+static unsigned int cr[] = {pb0cr, pb1cr, pb2cr, pb3cr, pb4cr,
+                               pb5cr, pb6cr, pb7cr};
+
+static int show_reg (int nr)
+{
+       unsigned long ul1, ul2;
+
+       mtdcr (ebccfga, ap[nr]);
+       ul1 = mfdcr (ebccfgd);
+       mtdcr (ebccfga, cr[nr]);
+       ul2 = mfdcr(ebccfgd);
+       printCSConfig(nr, ul1, ul2);
+       return 0;
+}
+#endif
+
+int checkboard (void)
+{
+#ifdef SC3_DEBUGOUT
+       unsigned long ul1;
+       int     i;
+
+       for (i = 0; i < 8; i++) {
+               show_reg (i);
+       }
+
+       mtdcr (ebccfga, epcr);
+       ul1 = mfdcr (ebccfgd);
+
+       puts ("\nGeneral configuration:\n");
+
+       if (ul1 & 0x80000000)
+               printf(" -External Bus is always driven\n");
+
+       if (ul1 & 0x400000)
+               printf(" -CS signals are always driven\n");
+
+       if (ul1 & 0x20000)
+               printf(" -PowerDown after %lu clocks\n",
+                       (ul1 & 0x1F000) >> 7);
+
+       switch (ul1 & 0xC0000)
+       {
+       case 0xC0000:
+               printf(" -No external master present\n");
+               break;
+       case 0x00000:
+               printf(" -8 bit external master present\n");
+               break;
+       case 0x40000:
+               printf(" -16 bit external master present\n");
+               break;
+       case 0x80000:
+               printf(" -32 bit external master present\n");
+               break;
+       }
+
+       switch (ul1 & 0x300000)
+       {
+       case 0x300000:
+               printf(" -Prefetch: Illegal setting!\n");
+               break;
+       case 0x000000:
+               printf(" -1 doubleword prefetch\n");
+               break;
+       case 0x100000:
+               printf(" -2 doublewords prefetch\n");
+               break;
+       case 0x200000:
+               printf(" -4 doublewords prefetch\n");
+               break;
+       }
+       putc ('\n');
+#endif
+       printf("Board: SolidCard III %s %s version.\n",
+               (IS_CAMERON ? "Cameron" : "Eurodesign"), CONFIG_SC3_VERSION);
+       return 0;
+}
+
+static int printSDRAMConfig(char reg, unsigned long cr)
+{
+       const int bisize[8]={4, 8, 16, 32, 64, 128, 256, 0};
+#ifdef SC3_DEBUGOUT
+       const char *basize[8]=
+               {"4", "8", "16", "32", "64", "128", "256", "Reserved"};
+
+       printf("SDRAM bank %d",reg);
+
+       if (!(cr & 0x01))
+               puts(" disabled\n");
+       else {
+               printf(" at 0x%08lX, size %s MB",cr & 0xFFC00000,basize[(cr&0xE0000)>>17]);
+               printf(" mode %lu\n",((cr & 0xE000)>>13)+1);
+       }
+#endif
+
+       if (cr & 0x01)
+               return(bisize[(cr & 0xE0000) >> 17]);
+
+       return 0;
+}
+
+#ifdef SC3_DEBUGOUT
+static unsigned int mbcf[] = {mem_mb0cf, mem_mb1cf, mem_mb2cf, mem_mb3cf};
+#endif
+
+phys_size_t initdram (int board_type)
+{
+       unsigned int mems=0;
+       unsigned long ul1;
+
+#ifdef SC3_DEBUGOUT
+       unsigned long ul2;
+       int     i;
+
+       puts("\nSDRAM configuration:\n");
+
+       mtdcr (memcfga, mem_mcopt1);
+       ul1 = mfdcr(memcfgd);
+
+       if (!(ul1 & 0x80000000)) {
+               puts(" Controller disabled\n");
+               return 0;
+       }
+       for (i = 0; i < 4; i++) {
+               mtdcr (memcfga, mbcf[i]);
+               ul1 = mfdcr (memcfgd);
+               mems += printSDRAMConfig (i, ul1);
+       }
+
+       mtdcr (memcfga, mem_sdtr1);
+       ul1 = mfdcr(memcfgd);
+
+       printf ("Timing:\n -CAS latency %lu\n", ((ul1 & 0x1800000) >> 23)+1);
+       printf (" -Precharge %lu (PTA) \n", ((ul1 & 0xC0000) >> 18) + 1);
+       printf (" -R/W to Precharge %lu (CTP)\n", ((ul1 & 0x30000) >> 16) + 1);
+       printf (" -Leadoff %lu\n", ((ul1 & 0xC000) >> 14) + 1);
+       printf (" -CAS to RAS %lu\n", ((ul1 & 0x1C) >> 2) + 4);
+       printf (" -RAS to CAS %lu\n", ((ul1 & 0x3) + 1));
+       puts ("Misc:\n");
+       mtdcr (memcfga, mem_rtr);
+       ul1 = mfdcr(memcfgd);
+       printf (" -Refresh rate: %luns\n", (ul1 >> 16) * 7);
+
+       mtdcr(memcfga,mem_pmit);
+       ul2=mfdcr(memcfgd);
+
+       mtdcr(memcfga,mem_mcopt1);
+       ul1=mfdcr(memcfgd);
+
+       if (ul1 & 0x20000000)
+               printf(" -Power Down after: %luns\n",
+                       ((ul2 & 0xFFC00000) >> 22) * 7);
+       else
+               puts(" -Power Down disabled\n");
+
+       if (ul1 & 0x40000000)
+               printf(" -Self refresh feature active\n");
+       else
+               puts(" -Self refresh disabled\n");
+
+       if (ul1 & 0x10000000)
+               puts(" -ECC enabled\n");
+       else
+               puts(" -ECC disabled\n");
+
+       if (ul1 & 0x8000000)
+               puts(" -Using registered SDRAM\n");
+
+       if (!(ul1 & 0x6000000))
+               puts(" -Using 32 bit data width\n");
+       else
+               puts(" -Illegal data width!\n");
+
+       if (ul1 & 0x400000)
+               puts(" -ECC drivers inactive\n");
+       else
+               puts(" -ECC drivers active\n");
+
+       if (ul1 & 0x200000)
+               puts(" -Memory lines always active outputs\n");
+       else
+               puts(" -Memory lines only at write cycles active outputs\n");
+
+       mtdcr (memcfga, mem_status);
+       ul1 = mfdcr (memcfgd);
+       if (ul1 & 0x80000000)
+               puts(" -SDRAM Controller ready\n");
+       else
+               puts(" -SDRAM Controller not ready\n");
+
+       if (ul1 & 0x4000000)
+               puts(" -SDRAM in self refresh mode!\n");
+
+       return (mems * 1024 * 1024);
+#else
+       mtdcr (memcfga, mem_mb0cf);
+       ul1 = mfdcr (memcfgd);
+       mems = printSDRAMConfig (0, ul1);
+
+       mtdcr (memcfga, mem_mb1cf);
+       ul1 = mfdcr (memcfgd);
+       mems += printSDRAMConfig (1, ul1);
+
+       mtdcr (memcfga, mem_mb2cf);
+       ul1 = mfdcr(memcfgd);
+       mems += printSDRAMConfig (2, ul1);
+
+       mtdcr (memcfga, mem_mb3cf);
+       ul1 = mfdcr(memcfgd);
+       mems += printSDRAMConfig (3, ul1);
+
+       return (mems * 1024 * 1024);
+#endif
+}
+
+static void pci_solidcard3_fixup_irq (struct pci_controller *hose, pci_dev_t dev)
+{
+/*-------------------------------------------------------------------------+
+ |             ,-.     ,-.        ,-.        ,-.        ,-.
+ |   INTD# ----|B|-----|P|-.    ,-|P|-.    ,-| |-.    ,-|G|
+ |             |R|     |C|  \  /  |C|  \  /  |E|  \  /  |r|
+ |   INTC# ----|I|-----|1|-. `/---|1|-. `/---|t|-. `/---|a|
+ |             |D|     |0|  \/    |0|  \/    |h|  \/    |f|
+ |   INTB# ----|G|-----|4|-./`----|4|-./`----|e|-./`----|i|
+ |             |E|     |+| /\     |+| /\     |r| /\     |k|
+ |   INTA# ----| |-----| |-  `----| |-  `----| |-  `----| |
+ |             `-'     `-'        `-'        `-'        `-'
+ |   Slot      0       10         11         12         13
+ |   REQ#              0          1          2          *
+ |   GNT#              0          1          2          *
+ +-------------------------------------------------------------------------*/
+       unsigned char int_line = 0xff;
+
+       switch (PCI_DEV(dev)) {
+       case 10:
+               int_line = 31; /* INT A */
+               POST_OUT(0x42);
+               break;
+
+       case 11:
+               int_line = 30; /* INT B */
+               POST_OUT(0x43);
+               break;
+
+       case 12:
+               int_line = 29; /* INT C */
+               POST_OUT(0x44);
+               break;
+
+       case 13:
+               int_line = 28; /* INT D */
+               POST_OUT(0x45);
+               break;
+       }
+       pci_hose_write_config_byte(hose, dev, PCI_INTERRUPT_LINE, int_line);
+}
+
+extern void pci_405gp_init(struct pci_controller *hose);
+extern void pci_405gp_fixup_irq(struct pci_controller *hose, pci_dev_t dev);
+extern void pci_405gp_setup_bridge(struct pci_controller *hose, pci_dev_t dev,struct pci_config_table *entry);
+/*
+ * The following table is used when there is a special need to setup a PCI device.
+ * For every PCI device found in this table is called the given init function with given
+ * parameters. So never let all IDs at PCI_ANY_ID. In this case any found device gets the same
+ * parameters!
+ *
+*/
+static struct pci_config_table pci_solidcard3_config_table[] =
+{
+/* Host to PCI Bridge device (405GP) */
+       {
+               vendor: 0x1014,
+               device: 0x0156,
+               class: PCI_CLASS_BRIDGE_HOST,
+               bus: 0,
+               dev: 0,
+               func: 0,
+               config_device: pci_405gp_setup_bridge
+       },
+       { }
+};
+
+/*-------------------------------------------------------------------------+
+ | pci_init_board (Called from pci_init() in drivers/pci/pci.c)
+ |
+ | Init the PCI part of the SolidCard III
+ |
+ | Params:
+ * - Pointer to current PCI hose
+ * - Current Device
+ *
+ * Returns
+ * nothing
+ +-------------------------------------------------------------------------*/
+
+void pci_init_board(void)
+{
+       POST_OUT(0x41);
+/*
+ * we want the ptrs to RAM not flash (ie don't use init list)
+ */
+       hose.fixup_irq    = pci_solidcard3_fixup_irq;
+       hose.config_table = pci_solidcard3_config_table;
+       pci_405gp_init(&hose);
+}
+
+int board_eth_init(bd_t *bis)
+{
+       return pci_eth_init(bis);
+}
diff -Naur u-boot-2009.03_orig/board/sc520_cdp/CVS/Entries u-boot-2009.03/board/sc520_cdp/CVS/Entries
--- u-boot-2009.03_orig/board/sc520_cdp/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sc520_cdp/CVS/Entries  2009-03-25 15:57:45.715612600 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash_old.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sc520_cdp.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sc520_cdp_asm.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sc520_cdp_asm16.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/sc520_cdp/CVS/Entries.Extra u-boot-2009.03/board/sc520_cdp/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/sc520_cdp/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sc520_cdp/CVS/Entries.Extra    2009-03-25 15:57:45.715612600 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019711/
+/config.mk///1238019711/
+/flash.c///1238019711/
+/flash_old.c///1238019711/
+/sc520_cdp.c///1238019711/
+/sc520_cdp_asm.S///1238019711/
+/sc520_cdp_asm16.S///1238019711/
+/u-boot.lds///1238019711/
diff -Naur u-boot-2009.03_orig/board/sc520_cdp/CVS/Entries.Extra.Old u-boot-2009.03/board/sc520_cdp/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/sc520_cdp/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sc520_cdp/CVS/Entries.Extra.Old        2009-03-25 15:24:59.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019711/
+/config.mk///1238019711/
+/flash.c///1238019711/
+/flash_old.c///1238019711/
+/sc520_cdp.c///1238019711/
+/sc520_cdp_asm.S///1238019711/
+/sc520_cdp_asm16.S///1238019711/
+/u-boot.lds///1238019711/
diff -Naur u-boot-2009.03_orig/board/sc520_cdp/CVS/Entries.Old u-boot-2009.03/board/sc520_cdp/CVS/Entries.Old
--- u-boot-2009.03_orig/board/sc520_cdp/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sc520_cdp/CVS/Entries.Old      2009-03-25 15:24:58.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/flash_old.c/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/sc520_cdp.c/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/sc520_cdp_asm.S/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/sc520_cdp_asm16.S/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:51 2009//
+D
diff -Naur u-boot-2009.03_orig/board/sc520_cdp/CVS/Repository u-boot-2009.03/board/sc520_cdp/CVS/Repository
--- u-boot-2009.03_orig/board/sc520_cdp/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sc520_cdp/CVS/Repository       2009-03-25 15:24:58.915700200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/sc520_cdp
diff -Naur u-boot-2009.03_orig/board/sc520_cdp/CVS/Root u-boot-2009.03/board/sc520_cdp/CVS/Root
--- u-boot-2009.03_orig/board/sc520_cdp/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sc520_cdp/CVS/Root     2009-03-25 15:24:58.900075300 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/sc520_spunk/CVS/Entries u-boot-2009.03/board/sc520_spunk/CVS/Entries
--- u-boot-2009.03_orig/board/sc520_spunk/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sc520_spunk/CVS/Entries        2009-03-25 15:57:45.809362000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sc520_spunk.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sc520_spunk_asm.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sc520_spunk_asm16.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/sc520_spunk/CVS/Entries.Extra u-boot-2009.03/board/sc520_spunk/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/sc520_spunk/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sc520_spunk/CVS/Entries.Extra  2009-03-25 15:57:45.809362000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019711/
+/config.mk///1238019711/
+/flash.c///1238019711/
+/sc520_spunk.c///1238019711/
+/sc520_spunk_asm.S///1238019712/
+/sc520_spunk_asm16.S///1238019712/
+/u-boot.lds///1238019712/
diff -Naur u-boot-2009.03_orig/board/sc520_spunk/CVS/Entries.Extra.Old u-boot-2009.03/board/sc520_spunk/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/sc520_spunk/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sc520_spunk/CVS/Entries.Extra.Old      2009-03-25 15:24:59.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019711/
+/config.mk///1238019711/
+/flash.c///1238019711/
+/sc520_spunk.c///1238019711/
+/sc520_spunk_asm.S///1238019712/
+/sc520_spunk_asm16.S///1238019712/
+/u-boot.lds///1238019712/
diff -Naur u-boot-2009.03_orig/board/sc520_spunk/CVS/Entries.Old u-boot-2009.03/board/sc520_spunk/CVS/Entries.Old
--- u-boot-2009.03_orig/board/sc520_spunk/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sc520_spunk/CVS/Entries.Old    2009-03-25 15:24:59.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/sc520_spunk.c/1.1.1.1/Wed Mar 25 22:21:51 2009//
+/sc520_spunk_asm.S/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/sc520_spunk_asm16.S/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:52 2009//
+D
diff -Naur u-boot-2009.03_orig/board/sc520_spunk/CVS/Repository u-boot-2009.03/board/sc520_spunk/CVS/Repository
--- u-boot-2009.03_orig/board/sc520_spunk/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sc520_spunk/CVS/Repository     2009-03-25 15:24:59.056324300 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/sc520_spunk
diff -Naur u-boot-2009.03_orig/board/sc520_spunk/CVS/Root u-boot-2009.03/board/sc520_spunk/CVS/Root
--- u-boot-2009.03_orig/board/sc520_spunk/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sc520_spunk/CVS/Root   2009-03-25 15:24:59.056324300 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/scb9328/CVS/Entries u-boot-2009.03/board/scb9328/CVS/Entries
--- u-boot-2009.03_orig/board/scb9328/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/scb9328/CVS/Entries    2009-03-25 15:57:45.903111400 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/intel.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/scb9328.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/scb9328/CVS/Entries.Extra u-boot-2009.03/board/scb9328/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/scb9328/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/scb9328/CVS/Entries.Extra      2009-03-25 15:57:45.903111400 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019712/
+/config.mk///1238019712/
+/flash.c///1238019712/
+/intel.h///1238019712/
+/lowlevel_init.S///1238019712/
+/scb9328.c///1238019712/
+/u-boot.lds///1238019712/
diff -Naur u-boot-2009.03_orig/board/scb9328/CVS/Entries.Extra.Old u-boot-2009.03/board/scb9328/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/scb9328/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/scb9328/CVS/Entries.Extra.Old  2009-03-25 15:24:59.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019712/
+/config.mk///1238019712/
+/flash.c///1238019712/
+/intel.h///1238019712/
+/lowlevel_init.S///1238019712/
+/scb9328.c///1238019712/
+/u-boot.lds///1238019712/
diff -Naur u-boot-2009.03_orig/board/scb9328/CVS/Entries.Old u-boot-2009.03/board/scb9328/CVS/Entries.Old
--- u-boot-2009.03_orig/board/scb9328/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/scb9328/CVS/Entries.Old        2009-03-25 15:24:59.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/intel.h/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/scb9328.c/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:52 2009//
+D
diff -Naur u-boot-2009.03_orig/board/scb9328/CVS/Repository u-boot-2009.03/board/scb9328/CVS/Repository
--- u-boot-2009.03_orig/board/scb9328/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/scb9328/CVS/Repository 2009-03-25 15:24:59.196948400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/scb9328
diff -Naur u-boot-2009.03_orig/board/scb9328/CVS/Root u-boot-2009.03/board/scb9328/CVS/Root
--- u-boot-2009.03_orig/board/scb9328/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/scb9328/CVS/Root       2009-03-25 15:24:59.196948400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/shannon/CVS/Entries u-boot-2009.03/board/shannon/CVS/Entries
--- u-boot-2009.03_orig/board/shannon/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/shannon/CVS/Entries    2009-03-25 15:57:45.981235900 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/inferno.header/1.1.1.1/Sat Mar 21 21:04:41 2009/-kb/
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/shannon.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/shannon/CVS/Entries.Extra u-boot-2009.03/board/shannon/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/shannon/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/shannon/CVS/Entries.Extra      2009-03-25 15:57:45.981235900 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019712/
+/config.mk///1238019712/
+/flash.c///1238019712/
+/inferno.header///1238019712/
+/lowlevel_init.S///1238019712/
+/shannon.c///1238019712/
+/u-boot.lds///1238019712/
diff -Naur u-boot-2009.03_orig/board/shannon/CVS/Entries.Extra.Old u-boot-2009.03/board/shannon/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/shannon/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/shannon/CVS/Entries.Extra.Old  2009-03-25 15:24:59.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019712/
+/config.mk///1238019712/
+/flash.c///1238019712/
+/inferno.header///1238019712/
+/lowlevel_init.S///1238019712/
+/shannon.c///1238019712/
+/u-boot.lds///1238019712/
diff -Naur u-boot-2009.03_orig/board/shannon/CVS/Entries.Old u-boot-2009.03/board/shannon/CVS/Entries.Old
--- u-boot-2009.03_orig/board/shannon/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/shannon/CVS/Entries.Old        2009-03-25 15:24:59.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/inferno.header/1.1.1.1/Wed Mar 25 22:21:52 2009/-kb/
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/shannon.c/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:52 2009//
+D
diff -Naur u-boot-2009.03_orig/board/shannon/CVS/Repository u-boot-2009.03/board/shannon/CVS/Repository
--- u-boot-2009.03_orig/board/shannon/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/shannon/CVS/Repository 2009-03-25 15:24:59.337572500 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/shannon
diff -Naur u-boot-2009.03_orig/board/shannon/CVS/Root u-boot-2009.03/board/shannon/CVS/Root
--- u-boot-2009.03_orig/board/shannon/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/shannon/CVS/Root       2009-03-25 15:24:59.337572500 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/sheldon/CVS/Entries u-boot-2009.03/board/sheldon/CVS/Entries
--- u-boot-2009.03_orig/board/sheldon/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sheldon/CVS/Entries    2009-03-25 15:24:59.712570100 -0700
@@ -0,0 +1 @@
+D/simpc8313////
diff -Naur u-boot-2009.03_orig/board/sheldon/CVS/Entries.Extra u-boot-2009.03/board/sheldon/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/sheldon/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sheldon/CVS/Entries.Extra      2009-03-25 15:24:59.712570100 -0700
@@ -0,0 +1 @@
+D/simpc8313////
diff -Naur u-boot-2009.03_orig/board/sheldon/CVS/Repository u-boot-2009.03/board/sheldon/CVS/Repository
--- u-boot-2009.03_orig/board/sheldon/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sheldon/CVS/Repository 2009-03-25 15:24:59.571946000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/sheldon
diff -Naur u-boot-2009.03_orig/board/sheldon/CVS/Root u-boot-2009.03/board/sheldon/CVS/Root
--- u-boot-2009.03_orig/board/sheldon/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sheldon/CVS/Root       2009-03-25 15:24:59.571946000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/sheldon/simpc8313/CVS/Entries u-boot-2009.03/board/sheldon/simpc8313/CVS/Entries
--- u-boot-2009.03_orig/board/sheldon/simpc8313/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sheldon/simpc8313/CVS/Entries  2009-03-25 15:57:46.059360400 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sdram.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/simpc8313.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/sheldon/simpc8313/CVS/Entries.Extra u-boot-2009.03/board/sheldon/simpc8313/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/sheldon/simpc8313/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sheldon/simpc8313/CVS/Entries.Extra    2009-03-25 15:57:46.059360400 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019712/
+/config.mk///1238019712/
+/sdram.c///1238019712/
+/simpc8313.c///1238019712/
diff -Naur u-boot-2009.03_orig/board/sheldon/simpc8313/CVS/Entries.Extra.Old u-boot-2009.03/board/sheldon/simpc8313/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/sheldon/simpc8313/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sheldon/simpc8313/CVS/Entries.Extra.Old        2009-03-25 15:24:59.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019712/
+/config.mk///1238019712/
+/sdram.c///1238019712/
+/simpc8313.c///1238019712/
diff -Naur u-boot-2009.03_orig/board/sheldon/simpc8313/CVS/Entries.Old u-boot-2009.03/board/sheldon/simpc8313/CVS/Entries.Old
--- u-boot-2009.03_orig/board/sheldon/simpc8313/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sheldon/simpc8313/CVS/Entries.Old      2009-03-25 15:24:59.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/sdram.c/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/simpc8313.c/1.1.1.1/Wed Mar 25 22:21:52 2009//
+D
diff -Naur u-boot-2009.03_orig/board/sheldon/simpc8313/CVS/Repository u-boot-2009.03/board/sheldon/simpc8313/CVS/Repository
--- u-boot-2009.03_orig/board/sheldon/simpc8313/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sheldon/simpc8313/CVS/Repository       2009-03-25 15:24:59.603195800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/sheldon/simpc8313
diff -Naur u-boot-2009.03_orig/board/sheldon/simpc8313/CVS/Root u-boot-2009.03/board/sheldon/simpc8313/CVS/Root
--- u-boot-2009.03_orig/board/sheldon/simpc8313/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sheldon/simpc8313/CVS/Root     2009-03-25 15:24:59.603195800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/siemens/CCM/CVS/Entries u-boot-2009.03/board/siemens/CCM/CVS/Entries
--- u-boot-2009.03_orig/board/siemens/CCM/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/siemens/CCM/CVS/Entries        2009-03-25 15:57:46.137484900 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ccm.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fpga_ccm.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.debug/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/siemens/CCM/CVS/Entries.Extra u-boot-2009.03/board/siemens/CCM/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/siemens/CCM/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/siemens/CCM/CVS/Entries.Extra  2009-03-25 15:57:46.137484900 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019712/
+/ccm.c///1238019712/
+/config.mk///1238019712/
+/flash.c///1238019712/
+/fpga_ccm.c///1238019712/
+/u-boot.lds///1238019712/
+/u-boot.lds.debug///1238019712/
diff -Naur u-boot-2009.03_orig/board/siemens/CCM/CVS/Entries.Extra.Old u-boot-2009.03/board/siemens/CCM/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/siemens/CCM/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/siemens/CCM/CVS/Entries.Extra.Old      2009-03-25 15:24:59.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019712/
+/ccm.c///1238019712/
+/config.mk///1238019712/
+/flash.c///1238019712/
+/fpga_ccm.c///1238019712/
+/u-boot.lds///1238019712/
+/u-boot.lds.debug///1238019712/
diff -Naur u-boot-2009.03_orig/board/siemens/CCM/CVS/Entries.Old u-boot-2009.03/board/siemens/CCM/CVS/Entries.Old
--- u-boot-2009.03_orig/board/siemens/CCM/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/siemens/CCM/CVS/Entries.Old    2009-03-25 15:24:59.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/ccm.c/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/fpga_ccm.c/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/u-boot.lds.debug/1.1.1.1/Wed Mar 25 22:21:52 2009//
+D
diff -Naur u-boot-2009.03_orig/board/siemens/CCM/CVS/Repository u-boot-2009.03/board/siemens/CCM/CVS/Repository
--- u-boot-2009.03_orig/board/siemens/CCM/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/siemens/CCM/CVS/Repository     2009-03-25 15:24:59.790694600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/siemens/CCM
diff -Naur u-boot-2009.03_orig/board/siemens/CCM/CVS/Root u-boot-2009.03/board/siemens/CCM/CVS/Root
--- u-boot-2009.03_orig/board/siemens/CCM/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/siemens/CCM/CVS/Root   2009-03-25 15:24:59.790694600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/siemens/CVS/Entries u-boot-2009.03/board/siemens/CVS/Entries
--- u-boot-2009.03_orig/board/siemens/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/siemens/CVS/Entries    2009-03-25 15:25:00.775063300 -0700
@@ -0,0 +1,6 @@
+D/CCM////
+D/IAD210////
+D/SCM////
+D/SMN42////
+D/common////
+D/pcu_e////
diff -Naur u-boot-2009.03_orig/board/siemens/CVS/Entries.Extra u-boot-2009.03/board/siemens/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/siemens/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/siemens/CVS/Entries.Extra      2009-03-25 15:25:00.775063300 -0700
@@ -0,0 +1,6 @@
+D/CCM////
+D/IAD210////
+D/SCM////
+D/SMN42////
+D/common////
+D/pcu_e////
diff -Naur u-boot-2009.03_orig/board/siemens/CVS/Repository u-boot-2009.03/board/siemens/CVS/Repository
--- u-boot-2009.03_orig/board/siemens/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/siemens/CVS/Repository 2009-03-25 15:24:59.775069700 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/siemens
diff -Naur u-boot-2009.03_orig/board/siemens/CVS/Root u-boot-2009.03/board/siemens/CVS/Root
--- u-boot-2009.03_orig/board/siemens/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/siemens/CVS/Root       2009-03-25 15:24:59.759444800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/siemens/IAD210/CVS/Entries u-boot-2009.03/board/siemens/IAD210/CVS/Entries
--- u-boot-2009.03_orig/board/siemens/IAD210/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/siemens/IAD210/CVS/Entries     2009-03-25 15:57:46.215609400 -0700
@@ -0,0 +1,8 @@
+/IAD210.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/atm.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/atm.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/siemens/IAD210/CVS/Entries.Extra u-boot-2009.03/board/siemens/IAD210/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/siemens/IAD210/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/siemens/IAD210/CVS/Entries.Extra       2009-03-25 15:57:46.215609400 -0700
@@ -0,0 +1,7 @@
+/IAD210.c///1238019712/
+/Makefile///1238019712/
+/atm.c///1238019712/
+/atm.h///1238019712/
+/config.mk///1238019712/
+/flash.c///1238019712/
+/u-boot.lds///1238019712/
diff -Naur u-boot-2009.03_orig/board/siemens/IAD210/CVS/Entries.Extra.Old u-boot-2009.03/board/siemens/IAD210/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/siemens/IAD210/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/siemens/IAD210/CVS/Entries.Extra.Old   2009-03-25 15:25:00.000000000 -0700
@@ -0,0 +1,7 @@
+/IAD210.c///1238019712/
+/Makefile///1238019712/
+/atm.c///1238019712/
+/atm.h///1238019712/
+/config.mk///1238019712/
+/flash.c///1238019712/
+/u-boot.lds///1238019712/
diff -Naur u-boot-2009.03_orig/board/siemens/IAD210/CVS/Entries.Old u-boot-2009.03/board/siemens/IAD210/CVS/Entries.Old
--- u-boot-2009.03_orig/board/siemens/IAD210/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/siemens/IAD210/CVS/Entries.Old 2009-03-25 15:25:00.000000000 -0700
@@ -0,0 +1,8 @@
+/IAD210.c/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/Makefile/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/atm.c/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/atm.h/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:52 2009//
+D
diff -Naur u-boot-2009.03_orig/board/siemens/IAD210/CVS/Repository u-boot-2009.03/board/siemens/IAD210/CVS/Repository
--- u-boot-2009.03_orig/board/siemens/IAD210/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/siemens/IAD210/CVS/Repository  2009-03-25 15:24:59.931318700 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/siemens/IAD210
diff -Naur u-boot-2009.03_orig/board/siemens/IAD210/CVS/Root u-boot-2009.03/board/siemens/IAD210/CVS/Root
--- u-boot-2009.03_orig/board/siemens/IAD210/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/siemens/IAD210/CVS/Root        2009-03-25 15:24:59.915693800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/siemens/SCM/CVS/Entries u-boot-2009.03/board/siemens/SCM/CVS/Entries
--- u-boot-2009.03_orig/board/siemens/SCM/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/siemens/SCM/CVS/Entries        2009-03-25 15:57:46.293733900 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fpga_scm.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/scm.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/scm.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/siemens/SCM/CVS/Entries.Extra u-boot-2009.03/board/siemens/SCM/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/siemens/SCM/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/siemens/SCM/CVS/Entries.Extra  2009-03-25 15:57:46.293733900 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019712/
+/config.mk///1238019712/
+/flash.c///1238019712/
+/fpga_scm.c///1238019712/
+/scm.c///1238019712/
+/scm.h///1238019712/
diff -Naur u-boot-2009.03_orig/board/siemens/SCM/CVS/Entries.Extra.Old u-boot-2009.03/board/siemens/SCM/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/siemens/SCM/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/siemens/SCM/CVS/Entries.Extra.Old      2009-03-25 15:25:00.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019712/
+/config.mk///1238019712/
+/flash.c///1238019712/
+/fpga_scm.c///1238019712/
+/scm.c///1238019712/
+/scm.h///1238019712/
diff -Naur u-boot-2009.03_orig/board/siemens/SCM/CVS/Entries.Old u-boot-2009.03/board/siemens/SCM/CVS/Entries.Old
--- u-boot-2009.03_orig/board/siemens/SCM/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/siemens/SCM/CVS/Entries.Old    2009-03-25 15:25:00.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/fpga_scm.c/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/scm.c/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/scm.h/1.1.1.1/Wed Mar 25 22:21:52 2009//
+D
diff -Naur u-boot-2009.03_orig/board/siemens/SCM/CVS/Repository u-boot-2009.03/board/siemens/SCM/CVS/Repository
--- u-boot-2009.03_orig/board/siemens/SCM/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/siemens/SCM/CVS/Repository     2009-03-25 15:25:00.071942800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/siemens/SCM
diff -Naur u-boot-2009.03_orig/board/siemens/SCM/CVS/Root u-boot-2009.03/board/siemens/SCM/CVS/Root
--- u-boot-2009.03_orig/board/siemens/SCM/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/siemens/SCM/CVS/Root   2009-03-25 15:25:00.071942800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/siemens/SMN42/CVS/Entries u-boot-2009.03/board/siemens/SMN42/CVS/Entries
--- u-boot-2009.03_orig/board/siemens/SMN42/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/siemens/SMN42/CVS/Entries      2009-03-25 15:57:46.356233500 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/smn42.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/siemens/SMN42/CVS/Entries.Extra u-boot-2009.03/board/siemens/SMN42/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/siemens/SMN42/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/siemens/SMN42/CVS/Entries.Extra        2009-03-25 15:57:46.356233500 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019712/
+/config.mk///1238019712/
+/flash.c///1238019712/
+/lowlevel_init.S///1238019712/
+/smn42.c///1238019712/
+/u-boot.lds///1238019712/
diff -Naur u-boot-2009.03_orig/board/siemens/SMN42/CVS/Entries.Extra.Old u-boot-2009.03/board/siemens/SMN42/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/siemens/SMN42/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/siemens/SMN42/CVS/Entries.Extra.Old    2009-03-25 15:25:00.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019712/
+/config.mk///1238019712/
+/flash.c///1238019712/
+/lowlevel_init.S///1238019712/
+/smn42.c///1238019712/
+/u-boot.lds///1238019712/
diff -Naur u-boot-2009.03_orig/board/siemens/SMN42/CVS/Entries.Old u-boot-2009.03/board/siemens/SMN42/CVS/Entries.Old
--- u-boot-2009.03_orig/board/siemens/SMN42/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/siemens/SMN42/CVS/Entries.Old  2009-03-25 15:25:00.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/smn42.c/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:52 2009//
+D
diff -Naur u-boot-2009.03_orig/board/siemens/SMN42/CVS/Repository u-boot-2009.03/board/siemens/SMN42/CVS/Repository
--- u-boot-2009.03_orig/board/siemens/SMN42/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/siemens/SMN42/CVS/Repository   2009-03-25 15:25:00.196942000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/siemens/SMN42
diff -Naur u-boot-2009.03_orig/board/siemens/SMN42/CVS/Root u-boot-2009.03/board/siemens/SMN42/CVS/Root
--- u-boot-2009.03_orig/board/siemens/SMN42/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/siemens/SMN42/CVS/Root 2009-03-25 15:25:00.196942000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/siemens/common/CVS/Entries u-boot-2009.03/board/siemens/common/CVS/Entries
--- u-boot-2009.03_orig/board/siemens/common/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/siemens/common/CVS/Entries     2009-03-25 15:57:46.434358000 -0700
@@ -0,0 +1,4 @@
+/README/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fpga.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fpga.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/siemens/common/CVS/Entries.Extra u-boot-2009.03/board/siemens/common/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/siemens/common/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/siemens/common/CVS/Entries.Extra       2009-03-25 15:57:46.434358000 -0700
@@ -0,0 +1,3 @@
+/README///1238019712/
+/fpga.c///1238019712/
+/fpga.h///1238019712/
diff -Naur u-boot-2009.03_orig/board/siemens/common/CVS/Entries.Extra.Old u-boot-2009.03/board/siemens/common/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/siemens/common/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/siemens/common/CVS/Entries.Extra.Old   2009-03-25 15:25:00.000000000 -0700
@@ -0,0 +1,3 @@
+/README///1238019712/
+/fpga.c///1238019712/
+/fpga.h///1238019712/
diff -Naur u-boot-2009.03_orig/board/siemens/common/CVS/Entries.Old u-boot-2009.03/board/siemens/common/CVS/Entries.Old
--- u-boot-2009.03_orig/board/siemens/common/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/siemens/common/CVS/Entries.Old 2009-03-25 15:25:00.000000000 -0700
@@ -0,0 +1,4 @@
+/README/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/fpga.c/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/fpga.h/1.1.1.1/Wed Mar 25 22:21:52 2009//
+D
diff -Naur u-boot-2009.03_orig/board/siemens/common/CVS/Repository u-boot-2009.03/board/siemens/common/CVS/Repository
--- u-boot-2009.03_orig/board/siemens/common/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/siemens/common/CVS/Repository  2009-03-25 15:25:00.306316300 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/siemens/common
diff -Naur u-boot-2009.03_orig/board/siemens/common/CVS/Root u-boot-2009.03/board/siemens/common/CVS/Root
--- u-boot-2009.03_orig/board/siemens/common/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/siemens/common/CVS/Root        2009-03-25 15:25:00.306316300 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/siemens/pcu_e/CVS/Entries u-boot-2009.03/board/siemens/pcu_e/CVS/Entries
--- u-boot-2009.03_orig/board/siemens/pcu_e/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/siemens/pcu_e/CVS/Entries      2009-03-25 15:57:46.512482500 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pcu_e.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.debug/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/siemens/pcu_e/CVS/Entries.Extra u-boot-2009.03/board/siemens/pcu_e/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/siemens/pcu_e/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/siemens/pcu_e/CVS/Entries.Extra        2009-03-25 15:57:46.512482500 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019712/
+/config.mk///1238019712/
+/flash.c///1238019712/
+/pcu_e.c///1238019712/
+/u-boot.lds///1238019712/
+/u-boot.lds.debug///1238019712/
diff -Naur u-boot-2009.03_orig/board/siemens/pcu_e/CVS/Entries.Extra.Old u-boot-2009.03/board/siemens/pcu_e/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/siemens/pcu_e/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/siemens/pcu_e/CVS/Entries.Extra.Old    2009-03-25 15:25:00.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019712/
+/config.mk///1238019712/
+/flash.c///1238019712/
+/pcu_e.c///1238019712/
+/u-boot.lds///1238019712/
+/u-boot.lds.debug///1238019712/
diff -Naur u-boot-2009.03_orig/board/siemens/pcu_e/CVS/Entries.Old u-boot-2009.03/board/siemens/pcu_e/CVS/Entries.Old
--- u-boot-2009.03_orig/board/siemens/pcu_e/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/siemens/pcu_e/CVS/Entries.Old  2009-03-25 15:25:00.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/pcu_e.c/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/u-boot.lds.debug/1.1.1.1/Wed Mar 25 22:21:52 2009//
+D
diff -Naur u-boot-2009.03_orig/board/siemens/pcu_e/CVS/Repository u-boot-2009.03/board/siemens/pcu_e/CVS/Repository
--- u-boot-2009.03_orig/board/siemens/pcu_e/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/siemens/pcu_e/CVS/Repository   2009-03-25 15:25:00.634439200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/siemens/pcu_e
diff -Naur u-boot-2009.03_orig/board/siemens/pcu_e/CVS/Root u-boot-2009.03/board/siemens/pcu_e/CVS/Root
--- u-boot-2009.03_orig/board/siemens/pcu_e/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/siemens/pcu_e/CVS/Root 2009-03-25 15:25:00.603189400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/sixnet/CVS/Entries u-boot-2009.03/board/sixnet/CVS/Entries
--- u-boot-2009.03_orig/board/sixnet/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sixnet/CVS/Entries     2009-03-25 15:57:46.590607000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fpgadata.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sixnet.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sixnet.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/sixnet/CVS/Entries.Extra u-boot-2009.03/board/sixnet/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/sixnet/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sixnet/CVS/Entries.Extra       2009-03-25 15:57:46.590607000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019712/
+/config.mk///1238019712/
+/flash.c///1238019712/
+/fpgadata.c///1238019712/
+/sixnet.c///1238019712/
+/sixnet.h///1238019712/
+/u-boot.lds///1238019712/
diff -Naur u-boot-2009.03_orig/board/sixnet/CVS/Entries.Extra.Old u-boot-2009.03/board/sixnet/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/sixnet/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sixnet/CVS/Entries.Extra.Old   2009-03-25 15:25:00.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019712/
+/config.mk///1238019712/
+/flash.c///1238019712/
+/fpgadata.c///1238019712/
+/sixnet.c///1238019712/
+/sixnet.h///1238019712/
+/u-boot.lds///1238019712/
diff -Naur u-boot-2009.03_orig/board/sixnet/CVS/Entries.Old u-boot-2009.03/board/sixnet/CVS/Entries.Old
--- u-boot-2009.03_orig/board/sixnet/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sixnet/CVS/Entries.Old 2009-03-25 15:25:00.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/fpgadata.c/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/sixnet.c/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/sixnet.h/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:52 2009//
+D
diff -Naur u-boot-2009.03_orig/board/sixnet/CVS/Repository u-boot-2009.03/board/sixnet/CVS/Repository
--- u-boot-2009.03_orig/board/sixnet/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sixnet/CVS/Repository  2009-03-25 15:25:00.821938000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/sixnet
diff -Naur u-boot-2009.03_orig/board/sixnet/CVS/Root u-boot-2009.03/board/sixnet/CVS/Root
--- u-boot-2009.03_orig/board/sixnet/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sixnet/CVS/Root        2009-03-25 15:25:00.821938000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/sl8245/CVS/Entries u-boot-2009.03/board/sl8245/CVS/Entries
--- u-boot-2009.03_orig/board/sl8245/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sl8245/CVS/Entries     2009-03-25 15:57:46.653106600 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sl8245.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/sl8245/CVS/Entries.Extra u-boot-2009.03/board/sl8245/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/sl8245/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sl8245/CVS/Entries.Extra       2009-03-25 15:57:46.653106600 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019712/
+/config.mk///1238019712/
+/flash.c///1238019712/
+/sl8245.c///1238019712/
diff -Naur u-boot-2009.03_orig/board/sl8245/CVS/Entries.Extra.Old u-boot-2009.03/board/sl8245/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/sl8245/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sl8245/CVS/Entries.Extra.Old   2009-03-25 15:25:01.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019712/
+/config.mk///1238019712/
+/flash.c///1238019712/
+/sl8245.c///1238019712/
diff -Naur u-boot-2009.03_orig/board/sl8245/CVS/Entries.Old u-boot-2009.03/board/sl8245/CVS/Entries.Old
--- u-boot-2009.03_orig/board/sl8245/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sl8245/CVS/Entries.Old 2009-03-25 15:25:01.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/sl8245.c/1.1.1.1/Wed Mar 25 22:21:52 2009//
+D
diff -Naur u-boot-2009.03_orig/board/sl8245/CVS/Repository u-boot-2009.03/board/sl8245/CVS/Repository
--- u-boot-2009.03_orig/board/sl8245/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sl8245/CVS/Repository  2009-03-25 15:25:00.962562100 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/sl8245
diff -Naur u-boot-2009.03_orig/board/sl8245/CVS/Root u-boot-2009.03/board/sl8245/CVS/Root
--- u-boot-2009.03_orig/board/sl8245/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sl8245/CVS/Root        2009-03-25 15:25:00.962562100 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/snmc/CVS/Entries u-boot-2009.03/board/snmc/CVS/Entries
--- u-boot-2009.03_orig/board/snmc/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/snmc/CVS/Entries       2009-03-25 15:25:01.275060100 -0700
@@ -0,0 +1,2 @@
+D/qs850////
+D/qs860t////
diff -Naur u-boot-2009.03_orig/board/snmc/CVS/Entries.Extra u-boot-2009.03/board/snmc/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/snmc/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/snmc/CVS/Entries.Extra 2009-03-25 15:25:01.275060100 -0700
@@ -0,0 +1,2 @@
+D/qs850////
+D/qs860t////
diff -Naur u-boot-2009.03_orig/board/snmc/CVS/Repository u-boot-2009.03/board/snmc/CVS/Repository
--- u-boot-2009.03_orig/board/snmc/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/snmc/CVS/Repository    2009-03-25 15:25:01.056311500 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/snmc
diff -Naur u-boot-2009.03_orig/board/snmc/CVS/Root u-boot-2009.03/board/snmc/CVS/Root
--- u-boot-2009.03_orig/board/snmc/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/snmc/CVS/Root  2009-03-25 15:25:01.056311500 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/snmc/qs850/CVS/Entries u-boot-2009.03/board/snmc/qs850/CVS/Entries
--- u-boot-2009.03_orig/board/snmc/qs850/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/snmc/qs850/CVS/Entries 2009-03-25 15:57:46.746856000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/qs850.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/snmc/qs850/CVS/Entries.Extra u-boot-2009.03/board/snmc/qs850/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/snmc/qs850/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/snmc/qs850/CVS/Entries.Extra   2009-03-25 15:57:46.746856000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019712/
+/config.mk///1238019712/
+/flash.c///1238019712/
+/qs850.c///1238019712/
+/u-boot.lds///1238019712/
diff -Naur u-boot-2009.03_orig/board/snmc/qs850/CVS/Entries.Extra.Old u-boot-2009.03/board/snmc/qs850/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/snmc/qs850/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/snmc/qs850/CVS/Entries.Extra.Old       2009-03-25 15:25:01.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019712/
+/config.mk///1238019712/
+/flash.c///1238019712/
+/qs850.c///1238019712/
+/u-boot.lds///1238019712/
diff -Naur u-boot-2009.03_orig/board/snmc/qs850/CVS/Entries.Old u-boot-2009.03/board/snmc/qs850/CVS/Entries.Old
--- u-boot-2009.03_orig/board/snmc/qs850/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/snmc/qs850/CVS/Entries.Old     2009-03-25 15:25:01.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/qs850.c/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:52 2009//
+D
diff -Naur u-boot-2009.03_orig/board/snmc/qs850/CVS/Repository u-boot-2009.03/board/snmc/qs850/CVS/Repository
--- u-boot-2009.03_orig/board/snmc/qs850/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/snmc/qs850/CVS/Repository      2009-03-25 15:25:01.071936400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/snmc/qs850
diff -Naur u-boot-2009.03_orig/board/snmc/qs850/CVS/Root u-boot-2009.03/board/snmc/qs850/CVS/Root
--- u-boot-2009.03_orig/board/snmc/qs850/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/snmc/qs850/CVS/Root    2009-03-25 15:25:01.071936400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/snmc/qs860t/CVS/Entries u-boot-2009.03/board/snmc/qs860t/CVS/Entries
--- u-boot-2009.03_orig/board/snmc/qs860t/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/snmc/qs860t/CVS/Entries        2009-03-25 15:57:46.824980500 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/qs860t.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/snmc/qs860t/CVS/Entries.Extra u-boot-2009.03/board/snmc/qs860t/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/snmc/qs860t/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/snmc/qs860t/CVS/Entries.Extra  2009-03-25 15:57:46.824980500 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019712/
+/config.mk///1238019712/
+/flash.c///1238019712/
+/qs860t.c///1238019712/
+/u-boot.lds///1238019712/
diff -Naur u-boot-2009.03_orig/board/snmc/qs860t/CVS/Entries.Extra.Old u-boot-2009.03/board/snmc/qs860t/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/snmc/qs860t/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/snmc/qs860t/CVS/Entries.Extra.Old      2009-03-25 15:25:01.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019712/
+/config.mk///1238019712/
+/flash.c///1238019712/
+/qs860t.c///1238019712/
+/u-boot.lds///1238019712/
diff -Naur u-boot-2009.03_orig/board/snmc/qs860t/CVS/Entries.Old u-boot-2009.03/board/snmc/qs860t/CVS/Entries.Old
--- u-boot-2009.03_orig/board/snmc/qs860t/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/snmc/qs860t/CVS/Entries.Old    2009-03-25 15:25:01.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/qs860t.c/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:52 2009//
+D
diff -Naur u-boot-2009.03_orig/board/snmc/qs860t/CVS/Repository u-boot-2009.03/board/snmc/qs860t/CVS/Repository
--- u-boot-2009.03_orig/board/snmc/qs860t/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/snmc/qs860t/CVS/Repository     2009-03-25 15:25:01.181310700 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/snmc/qs860t
diff -Naur u-boot-2009.03_orig/board/snmc/qs860t/CVS/Root u-boot-2009.03/board/snmc/qs860t/CVS/Root
--- u-boot-2009.03_orig/board/snmc/qs860t/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/snmc/qs860t/CVS/Root   2009-03-25 15:25:01.181310700 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/socrates/CVS/Entries u-boot-2009.03/board/socrates/CVS/Entries
--- u-boot-2009.03_orig/board/socrates/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/socrates/CVS/Entries   2009-03-25 15:57:46.918729900 -0700
@@ -0,0 +1,11 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ddr.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/law.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nand.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sdram.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/socrates.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tlb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/upm_table.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/socrates/CVS/Entries.Extra u-boot-2009.03/board/socrates/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/socrates/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/socrates/CVS/Entries.Extra     2009-03-25 15:57:46.918729900 -0700
@@ -0,0 +1,10 @@
+/Makefile///1238019712/
+/config.mk///1238019712/
+/ddr.c///1238019712/
+/law.c///1238019712/
+/nand.c///1238019712/
+/sdram.c///1238019712/
+/socrates.c///1238019712/
+/tlb.c///1238019712/
+/u-boot.lds///1238019712/
+/upm_table.h///1238019712/
diff -Naur u-boot-2009.03_orig/board/socrates/CVS/Entries.Extra.Old u-boot-2009.03/board/socrates/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/socrates/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/socrates/CVS/Entries.Extra.Old 2009-03-25 15:25:01.000000000 -0700
@@ -0,0 +1,10 @@
+/Makefile///1238019712/
+/config.mk///1238019712/
+/ddr.c///1238019712/
+/law.c///1238019712/
+/nand.c///1238019712/
+/sdram.c///1238019712/
+/socrates.c///1238019712/
+/tlb.c///1238019712/
+/u-boot.lds///1238019712/
+/upm_table.h///1238019712/
diff -Naur u-boot-2009.03_orig/board/socrates/CVS/Entries.Old u-boot-2009.03/board/socrates/CVS/Entries.Old
--- u-boot-2009.03_orig/board/socrates/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/socrates/CVS/Entries.Old       2009-03-25 15:25:01.000000000 -0700
@@ -0,0 +1,11 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/ddr.c/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/law.c/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/nand.c/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/sdram.c/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/socrates.c/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/tlb.c/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/upm_table.h/1.1.1.1/Wed Mar 25 22:21:52 2009//
+D
diff -Naur u-boot-2009.03_orig/board/socrates/CVS/Repository u-boot-2009.03/board/socrates/CVS/Repository
--- u-boot-2009.03_orig/board/socrates/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/socrates/CVS/Repository        2009-03-25 15:25:01.321934800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/socrates
diff -Naur u-boot-2009.03_orig/board/socrates/CVS/Root u-boot-2009.03/board/socrates/CVS/Root
--- u-boot-2009.03_orig/board/socrates/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/socrates/CVS/Root      2009-03-25 15:25:01.321934800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/sorcery/CVS/Entries u-boot-2009.03/board/sorcery/CVS/Entries
--- u-boot-2009.03_orig/board/sorcery/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sorcery/CVS/Entries    2009-03-25 15:57:46.981229500 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sorcery.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/sorcery/CVS/Entries.Extra u-boot-2009.03/board/sorcery/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/sorcery/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sorcery/CVS/Entries.Extra      2009-03-25 15:57:46.981229500 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019712/
+/config.mk///1238019712/
+/sorcery.c///1238019712/
diff -Naur u-boot-2009.03_orig/board/sorcery/CVS/Entries.Extra.Old u-boot-2009.03/board/sorcery/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/sorcery/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sorcery/CVS/Entries.Extra.Old  2009-03-25 15:25:01.000000000 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019712/
+/config.mk///1238019712/
+/sorcery.c///1238019712/
diff -Naur u-boot-2009.03_orig/board/sorcery/CVS/Entries.Old u-boot-2009.03/board/sorcery/CVS/Entries.Old
--- u-boot-2009.03_orig/board/sorcery/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sorcery/CVS/Entries.Old        2009-03-25 15:25:01.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:52 2009//
+/sorcery.c/1.1.1.1/Wed Mar 25 22:21:52 2009//
+D
diff -Naur u-boot-2009.03_orig/board/sorcery/CVS/Repository u-boot-2009.03/board/sorcery/CVS/Repository
--- u-boot-2009.03_orig/board/sorcery/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sorcery/CVS/Repository 2009-03-25 15:25:01.556308300 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/sorcery
diff -Naur u-boot-2009.03_orig/board/sorcery/CVS/Root u-boot-2009.03/board/sorcery/CVS/Root
--- u-boot-2009.03_orig/board/sorcery/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sorcery/CVS/Root       2009-03-25 15:25:01.556308300 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/spc1920/CVS/Entries u-boot-2009.03/board/spc1920/CVS/Entries
--- u-boot-2009.03_orig/board/spc1920/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/spc1920/CVS/Entries    2009-03-25 15:57:47.043729100 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/hpi.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/hpi.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pld.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/spc1920.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/spc1920/CVS/Entries.Extra u-boot-2009.03/board/spc1920/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/spc1920/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/spc1920/CVS/Entries.Extra      2009-03-25 15:57:47.043729100 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019713/
+/config.mk///1238019713/
+/hpi.c///1238019713/
+/hpi.h///1238019713/
+/pld.h///1238019713/
+/spc1920.c///1238019713/
+/u-boot.lds///1238019713/
diff -Naur u-boot-2009.03_orig/board/spc1920/CVS/Entries.Extra.Old u-boot-2009.03/board/spc1920/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/spc1920/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/spc1920/CVS/Entries.Extra.Old  2009-03-25 15:25:01.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019713/
+/config.mk///1238019713/
+/hpi.c///1238019713/
+/hpi.h///1238019713/
+/pld.h///1238019713/
+/spc1920.c///1238019713/
+/u-boot.lds///1238019713/
diff -Naur u-boot-2009.03_orig/board/spc1920/CVS/Entries.Old u-boot-2009.03/board/spc1920/CVS/Entries.Old
--- u-boot-2009.03_orig/board/spc1920/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/spc1920/CVS/Entries.Old        2009-03-25 15:25:01.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/hpi.c/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/hpi.h/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/pld.h/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/spc1920.c/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:53 2009//
+D
diff -Naur u-boot-2009.03_orig/board/spc1920/CVS/Repository u-boot-2009.03/board/spc1920/CVS/Repository
--- u-boot-2009.03_orig/board/spc1920/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/spc1920/CVS/Repository 2009-03-25 15:25:01.650057700 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/spc1920
diff -Naur u-boot-2009.03_orig/board/spc1920/CVS/Root u-boot-2009.03/board/spc1920/CVS/Root
--- u-boot-2009.03_orig/board/spc1920/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/spc1920/CVS/Root       2009-03-25 15:25:01.650057700 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/spd8xx/CVS/Entries u-boot-2009.03/board/spd8xx/CVS/Entries
--- u-boot-2009.03_orig/board/spd8xx/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/spd8xx/CVS/Entries     2009-03-25 15:57:47.121853600 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/spd8xx.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.debug/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/spd8xx/CVS/Entries.Extra u-boot-2009.03/board/spd8xx/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/spd8xx/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/spd8xx/CVS/Entries.Extra       2009-03-25 15:57:47.121853600 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019713/
+/config.mk///1238019713/
+/flash.c///1238019713/
+/spd8xx.c///1238019713/
+/u-boot.lds///1238019713/
+/u-boot.lds.debug///1238019713/
diff -Naur u-boot-2009.03_orig/board/spd8xx/CVS/Entries.Extra.Old u-boot-2009.03/board/spd8xx/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/spd8xx/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/spd8xx/CVS/Entries.Extra.Old   2009-03-25 15:25:01.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019713/
+/config.mk///1238019713/
+/flash.c///1238019713/
+/spd8xx.c///1238019713/
+/u-boot.lds///1238019713/
+/u-boot.lds.debug///1238019713/
diff -Naur u-boot-2009.03_orig/board/spd8xx/CVS/Entries.Old u-boot-2009.03/board/spd8xx/CVS/Entries.Old
--- u-boot-2009.03_orig/board/spd8xx/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/spd8xx/CVS/Entries.Old 2009-03-25 15:25:01.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/spd8xx.c/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/u-boot.lds.debug/1.1.1.1/Wed Mar 25 22:21:53 2009//
+D
diff -Naur u-boot-2009.03_orig/board/spd8xx/CVS/Repository u-boot-2009.03/board/spd8xx/CVS/Repository
--- u-boot-2009.03_orig/board/spd8xx/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/spd8xx/CVS/Repository  2009-03-25 15:25:01.775056900 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/spd8xx
diff -Naur u-boot-2009.03_orig/board/spd8xx/CVS/Root u-boot-2009.03/board/spd8xx/CVS/Root
--- u-boot-2009.03_orig/board/spd8xx/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/spd8xx/CVS/Root        2009-03-25 15:25:01.775056900 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/ssv/CVS/Entries u-boot-2009.03/board/ssv/CVS/Entries
--- u-boot-2009.03_orig/board/ssv/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ssv/CVS/Entries        2009-03-25 15:25:02.150054500 -0700
@@ -0,0 +1,2 @@
+D/adnpesc1////
+D/common////
diff -Naur u-boot-2009.03_orig/board/ssv/CVS/Entries.Extra u-boot-2009.03/board/ssv/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/ssv/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ssv/CVS/Entries.Extra  2009-03-25 15:25:02.165679400 -0700
@@ -0,0 +1,2 @@
+D/adnpesc1////
+D/common////
diff -Naur u-boot-2009.03_orig/board/ssv/CVS/Repository u-boot-2009.03/board/ssv/CVS/Repository
--- u-boot-2009.03_orig/board/ssv/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ssv/CVS/Repository     2009-03-25 15:25:01.900056100 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/ssv
diff -Naur u-boot-2009.03_orig/board/ssv/CVS/Root u-boot-2009.03/board/ssv/CVS/Root
--- u-boot-2009.03_orig/board/ssv/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ssv/CVS/Root   2009-03-25 15:25:01.900056100 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/ssv/adnpesc1/CVS/Entries u-boot-2009.03/board/ssv/adnpesc1/CVS/Entries
--- u-boot-2009.03_orig/board/ssv/adnpesc1/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ssv/adnpesc1/CVS/Entries       2009-03-25 15:57:47.199978100 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/adnpesc1.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/misc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/vectors.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/ssv/adnpesc1/CVS/Entries.Extra u-boot-2009.03/board/ssv/adnpesc1/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/ssv/adnpesc1/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ssv/adnpesc1/CVS/Entries.Extra 2009-03-25 15:57:47.199978100 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019713/
+/adnpesc1.c///1238019713/
+/config.mk///1238019713/
+/flash.c///1238019713/
+/misc.c///1238019713/
+/u-boot.lds///1238019713/
+/vectors.S///1238019713/
diff -Naur u-boot-2009.03_orig/board/ssv/adnpesc1/CVS/Entries.Extra.Old u-boot-2009.03/board/ssv/adnpesc1/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/ssv/adnpesc1/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ssv/adnpesc1/CVS/Entries.Extra.Old     2009-03-25 15:25:01.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019713/
+/adnpesc1.c///1238019713/
+/config.mk///1238019713/
+/flash.c///1238019713/
+/misc.c///1238019713/
+/u-boot.lds///1238019713/
+/vectors.S///1238019713/
diff -Naur u-boot-2009.03_orig/board/ssv/adnpesc1/CVS/Entries.Old u-boot-2009.03/board/ssv/adnpesc1/CVS/Entries.Old
--- u-boot-2009.03_orig/board/ssv/adnpesc1/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ssv/adnpesc1/CVS/Entries.Old   2009-03-25 15:25:01.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/adnpesc1.c/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/misc.c/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/vectors.S/1.1.1.1/Wed Mar 25 22:21:53 2009//
+D
diff -Naur u-boot-2009.03_orig/board/ssv/adnpesc1/CVS/Repository u-boot-2009.03/board/ssv/adnpesc1/CVS/Repository
--- u-boot-2009.03_orig/board/ssv/adnpesc1/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ssv/adnpesc1/CVS/Repository    2009-03-25 15:25:01.915681000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/ssv/adnpesc1
diff -Naur u-boot-2009.03_orig/board/ssv/adnpesc1/CVS/Root u-boot-2009.03/board/ssv/adnpesc1/CVS/Root
--- u-boot-2009.03_orig/board/ssv/adnpesc1/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ssv/adnpesc1/CVS/Root  2009-03-25 15:25:01.915681000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/ssv/common/CVS/Entries u-boot-2009.03/board/ssv/common/CVS/Entries
--- u-boot-2009.03_orig/board/ssv/common/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ssv/common/CVS/Entries 2009-03-25 15:57:47.278102600 -0700
@@ -0,0 +1,5 @@
+/cmd_sled.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/post.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/wd_pio.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/ssv/common/CVS/Entries.Extra u-boot-2009.03/board/ssv/common/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/ssv/common/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ssv/common/CVS/Entries.Extra   2009-03-25 15:57:47.278102600 -0700
@@ -0,0 +1,4 @@
+/cmd_sled.c///1238019713/
+/flash.c///1238019713/
+/post.c///1238019713/
+/wd_pio.c///1238019713/
diff -Naur u-boot-2009.03_orig/board/ssv/common/CVS/Entries.Extra.Old u-boot-2009.03/board/ssv/common/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/ssv/common/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ssv/common/CVS/Entries.Extra.Old       2009-03-25 15:25:02.000000000 -0700
@@ -0,0 +1,4 @@
+/cmd_sled.c///1238019713/
+/flash.c///1238019713/
+/post.c///1238019713/
+/wd_pio.c///1238019713/
diff -Naur u-boot-2009.03_orig/board/ssv/common/CVS/Entries.Old u-boot-2009.03/board/ssv/common/CVS/Entries.Old
--- u-boot-2009.03_orig/board/ssv/common/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ssv/common/CVS/Entries.Old     2009-03-25 15:25:02.000000000 -0700
@@ -0,0 +1,5 @@
+/cmd_sled.c/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/post.c/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/wd_pio.c/1.1.1.1/Wed Mar 25 22:21:53 2009//
+D
diff -Naur u-boot-2009.03_orig/board/ssv/common/CVS/Repository u-boot-2009.03/board/ssv/common/CVS/Repository
--- u-boot-2009.03_orig/board/ssv/common/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ssv/common/CVS/Repository      2009-03-25 15:25:02.056305100 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/ssv/common
diff -Naur u-boot-2009.03_orig/board/ssv/common/CVS/Root u-boot-2009.03/board/ssv/common/CVS/Root
--- u-boot-2009.03_orig/board/ssv/common/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/ssv/common/CVS/Root    2009-03-25 15:25:02.056305100 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/st/CVS/Entries u-boot-2009.03/board/st/CVS/Entries
--- u-boot-2009.03_orig/board/st/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/st/CVS/Entries 2009-03-25 15:25:02.306303500 -0700
@@ -0,0 +1 @@
+D/nmdk8815////
diff -Naur u-boot-2009.03_orig/board/st/CVS/Entries.Extra u-boot-2009.03/board/st/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/st/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/st/CVS/Entries.Extra   2009-03-25 15:25:02.306303500 -0700
@@ -0,0 +1 @@
+D/nmdk8815////
diff -Naur u-boot-2009.03_orig/board/st/CVS/Repository u-boot-2009.03/board/st/CVS/Repository
--- u-boot-2009.03_orig/board/st/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/st/CVS/Repository      2009-03-25 15:25:02.196929200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/st
diff -Naur u-boot-2009.03_orig/board/st/CVS/Root u-boot-2009.03/board/st/CVS/Root
--- u-boot-2009.03_orig/board/st/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/st/CVS/Root    2009-03-25 15:25:02.196929200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/st/nmdk8815/CVS/Entries u-boot-2009.03/board/st/nmdk8815/CVS/Entries
--- u-boot-2009.03_orig/board/st/nmdk8815/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/st/nmdk8815/CVS/Entries        2009-03-25 15:57:47.371852000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nmdk8815.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/platform.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/st/nmdk8815/CVS/Entries.Extra u-boot-2009.03/board/st/nmdk8815/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/st/nmdk8815/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/st/nmdk8815/CVS/Entries.Extra  2009-03-25 15:57:47.371852000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019713/
+/config.mk///1238019713/
+/nmdk8815.c///1238019713/
+/platform.S///1238019713/
+/u-boot.lds///1238019713/
diff -Naur u-boot-2009.03_orig/board/st/nmdk8815/CVS/Entries.Extra.Old u-boot-2009.03/board/st/nmdk8815/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/st/nmdk8815/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/st/nmdk8815/CVS/Entries.Extra.Old      2009-03-25 15:25:02.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019713/
+/config.mk///1238019713/
+/nmdk8815.c///1238019713/
+/platform.S///1238019713/
+/u-boot.lds///1238019713/
diff -Naur u-boot-2009.03_orig/board/st/nmdk8815/CVS/Entries.Old u-boot-2009.03/board/st/nmdk8815/CVS/Entries.Old
--- u-boot-2009.03_orig/board/st/nmdk8815/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/st/nmdk8815/CVS/Entries.Old    2009-03-25 15:25:02.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/nmdk8815.c/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/platform.S/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:53 2009//
+D
diff -Naur u-boot-2009.03_orig/board/st/nmdk8815/CVS/Repository u-boot-2009.03/board/st/nmdk8815/CVS/Repository
--- u-boot-2009.03_orig/board/st/nmdk8815/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/st/nmdk8815/CVS/Repository     2009-03-25 15:25:02.212554100 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/st/nmdk8815
diff -Naur u-boot-2009.03_orig/board/st/nmdk8815/CVS/Root u-boot-2009.03/board/st/nmdk8815/CVS/Root
--- u-boot-2009.03_orig/board/st/nmdk8815/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/st/nmdk8815/CVS/Root   2009-03-25 15:25:02.212554100 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/stxgp3/CVS/Entries u-boot-2009.03/board/stxgp3/CVS/Entries
--- u-boot-2009.03_orig/board/stxgp3/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/stxgp3/CVS/Entries     2009-03-25 15:57:47.449976500 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ddr.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/law.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/stxgp3.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tlb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/stxgp3/CVS/Entries.Extra u-boot-2009.03/board/stxgp3/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/stxgp3/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/stxgp3/CVS/Entries.Extra       2009-03-25 15:57:47.449976500 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019713/
+/config.mk///1238019713/
+/ddr.c///1238019713/
+/flash.c///1238019713/
+/law.c///1238019713/
+/stxgp3.c///1238019713/
+/tlb.c///1238019713/
+/u-boot.lds///1238019713/
diff -Naur u-boot-2009.03_orig/board/stxgp3/CVS/Entries.Extra.Old u-boot-2009.03/board/stxgp3/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/stxgp3/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/stxgp3/CVS/Entries.Extra.Old   2009-03-25 15:25:02.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019713/
+/config.mk///1238019713/
+/ddr.c///1238019713/
+/flash.c///1238019713/
+/law.c///1238019713/
+/stxgp3.c///1238019713/
+/tlb.c///1238019713/
+/u-boot.lds///1238019713/
diff -Naur u-boot-2009.03_orig/board/stxgp3/CVS/Entries.Old u-boot-2009.03/board/stxgp3/CVS/Entries.Old
--- u-boot-2009.03_orig/board/stxgp3/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/stxgp3/CVS/Entries.Old 2009-03-25 15:25:02.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/ddr.c/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/law.c/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/stxgp3.c/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/tlb.c/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:53 2009//
+D
diff -Naur u-boot-2009.03_orig/board/stxgp3/CVS/Repository u-boot-2009.03/board/stxgp3/CVS/Repository
--- u-boot-2009.03_orig/board/stxgp3/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/stxgp3/CVS/Repository  2009-03-25 15:25:02.353178200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/stxgp3
diff -Naur u-boot-2009.03_orig/board/stxgp3/CVS/Root u-boot-2009.03/board/stxgp3/CVS/Root
--- u-boot-2009.03_orig/board/stxgp3/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/stxgp3/CVS/Root        2009-03-25 15:25:02.353178200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/stxssa/CVS/Entries u-boot-2009.03/board/stxssa/CVS/Entries
--- u-boot-2009.03_orig/board/stxssa/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/stxssa/CVS/Entries     2009-03-25 15:57:47.528101000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ddr.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/law.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/stxssa.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tlb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/stxssa/CVS/Entries.Extra u-boot-2009.03/board/stxssa/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/stxssa/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/stxssa/CVS/Entries.Extra       2009-03-25 15:57:47.528101000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019713/
+/config.mk///1238019713/
+/ddr.c///1238019713/
+/law.c///1238019713/
+/stxssa.c///1238019713/
+/tlb.c///1238019713/
+/u-boot.lds///1238019713/
diff -Naur u-boot-2009.03_orig/board/stxssa/CVS/Entries.Extra.Old u-boot-2009.03/board/stxssa/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/stxssa/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/stxssa/CVS/Entries.Extra.Old   2009-03-25 15:25:02.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019713/
+/config.mk///1238019713/
+/ddr.c///1238019713/
+/law.c///1238019713/
+/stxssa.c///1238019713/
+/tlb.c///1238019713/
+/u-boot.lds///1238019713/
diff -Naur u-boot-2009.03_orig/board/stxssa/CVS/Entries.Old u-boot-2009.03/board/stxssa/CVS/Entries.Old
--- u-boot-2009.03_orig/board/stxssa/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/stxssa/CVS/Entries.Old 2009-03-25 15:25:02.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/ddr.c/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/law.c/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/stxssa.c/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/tlb.c/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:53 2009//
+D
diff -Naur u-boot-2009.03_orig/board/stxssa/CVS/Repository u-boot-2009.03/board/stxssa/CVS/Repository
--- u-boot-2009.03_orig/board/stxssa/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/stxssa/CVS/Repository  2009-03-25 15:25:02.556301900 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/stxssa
diff -Naur u-boot-2009.03_orig/board/stxssa/CVS/Root u-boot-2009.03/board/stxssa/CVS/Root
--- u-boot-2009.03_orig/board/stxssa/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/stxssa/CVS/Root        2009-03-25 15:25:02.556301900 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/stxxtc/CVS/Entries u-boot-2009.03/board/stxxtc/CVS/Entries
--- u-boot-2009.03_orig/board/stxxtc/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/stxxtc/CVS/Entries     2009-03-25 15:57:47.606225500 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/stxxtc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.debug/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/stxxtc/CVS/Entries.Extra u-boot-2009.03/board/stxxtc/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/stxxtc/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/stxxtc/CVS/Entries.Extra       2009-03-25 15:57:47.621850400 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019713/
+/config.mk///1238019713/
+/stxxtc.c///1238019713/
+/u-boot.lds///1238019713/
+/u-boot.lds.debug///1238019713/
diff -Naur u-boot-2009.03_orig/board/stxxtc/CVS/Entries.Extra.Old u-boot-2009.03/board/stxxtc/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/stxxtc/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/stxxtc/CVS/Entries.Extra.Old   2009-03-25 15:25:02.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019713/
+/config.mk///1238019713/
+/stxxtc.c///1238019713/
+/u-boot.lds///1238019713/
+/u-boot.lds.debug///1238019713/
diff -Naur u-boot-2009.03_orig/board/stxxtc/CVS/Entries.Old u-boot-2009.03/board/stxxtc/CVS/Entries.Old
--- u-boot-2009.03_orig/board/stxxtc/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/stxxtc/CVS/Entries.Old 2009-03-25 15:25:02.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/stxxtc.c/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/u-boot.lds.debug/1.1.1.1/Wed Mar 25 22:21:53 2009//
+D
diff -Naur u-boot-2009.03_orig/board/stxxtc/CVS/Repository u-boot-2009.03/board/stxxtc/CVS/Repository
--- u-boot-2009.03_orig/board/stxxtc/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/stxxtc/CVS/Repository  2009-03-25 15:25:02.696926000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/stxxtc
diff -Naur u-boot-2009.03_orig/board/stxxtc/CVS/Root u-boot-2009.03/board/stxxtc/CVS/Root
--- u-boot-2009.03_orig/board/stxxtc/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/stxxtc/CVS/Root        2009-03-25 15:25:02.696926000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/svm_sc8xx/CVS/Entries u-boot-2009.03/board/svm_sc8xx/CVS/Entries
--- u-boot-2009.03_orig/board/svm_sc8xx/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/svm_sc8xx/CVS/Entries  2009-03-25 15:57:47.684350000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/svm_sc8xx.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.debug/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/svm_sc8xx/CVS/Entries.Extra u-boot-2009.03/board/svm_sc8xx/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/svm_sc8xx/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/svm_sc8xx/CVS/Entries.Extra    2009-03-25 15:57:47.684350000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019713/
+/config.mk///1238019713/
+/flash.c///1238019713/
+/svm_sc8xx.c///1238019713/
+/u-boot.lds///1238019713/
+/u-boot.lds.debug///1238019713/
diff -Naur u-boot-2009.03_orig/board/svm_sc8xx/CVS/Entries.Extra.Old u-boot-2009.03/board/svm_sc8xx/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/svm_sc8xx/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/svm_sc8xx/CVS/Entries.Extra.Old        2009-03-25 15:25:02.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019713/
+/config.mk///1238019713/
+/flash.c///1238019713/
+/svm_sc8xx.c///1238019713/
+/u-boot.lds///1238019713/
+/u-boot.lds.debug///1238019713/
diff -Naur u-boot-2009.03_orig/board/svm_sc8xx/CVS/Entries.Old u-boot-2009.03/board/svm_sc8xx/CVS/Entries.Old
--- u-boot-2009.03_orig/board/svm_sc8xx/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/svm_sc8xx/CVS/Entries.Old      2009-03-25 15:25:02.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/svm_sc8xx.c/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/u-boot.lds.debug/1.1.1.1/Wed Mar 25 22:21:53 2009//
+D
diff -Naur u-boot-2009.03_orig/board/svm_sc8xx/CVS/Repository u-boot-2009.03/board/svm_sc8xx/CVS/Repository
--- u-boot-2009.03_orig/board/svm_sc8xx/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/svm_sc8xx/CVS/Repository       2009-03-25 15:25:02.821925200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/svm_sc8xx
diff -Naur u-boot-2009.03_orig/board/svm_sc8xx/CVS/Root u-boot-2009.03/board/svm_sc8xx/CVS/Root
--- u-boot-2009.03_orig/board/svm_sc8xx/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/svm_sc8xx/CVS/Root     2009-03-25 15:25:02.821925200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/sx1/CVS/Entries u-boot-2009.03/board/sx1/CVS/Entries
--- u-boot-2009.03_orig/board/sx1/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sx1/CVS/Entries        2009-03-25 15:57:47.746849600 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sx1.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/sx1/CVS/Entries.Extra u-boot-2009.03/board/sx1/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/sx1/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sx1/CVS/Entries.Extra  2009-03-25 15:57:47.746849600 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019713/
+/config.mk///1238019713/
+/lowlevel_init.S///1238019713/
+/sx1.c///1238019713/
+/u-boot.lds///1238019713/
diff -Naur u-boot-2009.03_orig/board/sx1/CVS/Entries.Extra.Old u-boot-2009.03/board/sx1/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/sx1/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sx1/CVS/Entries.Extra.Old      2009-03-25 15:25:02.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019713/
+/config.mk///1238019713/
+/lowlevel_init.S///1238019713/
+/sx1.c///1238019713/
+/u-boot.lds///1238019713/
diff -Naur u-boot-2009.03_orig/board/sx1/CVS/Entries.Old u-boot-2009.03/board/sx1/CVS/Entries.Old
--- u-boot-2009.03_orig/board/sx1/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sx1/CVS/Entries.Old    2009-03-25 15:25:02.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/sx1.c/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:53 2009//
+D
diff -Naur u-boot-2009.03_orig/board/sx1/CVS/Repository u-boot-2009.03/board/sx1/CVS/Repository
--- u-boot-2009.03_orig/board/sx1/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sx1/CVS/Repository     2009-03-25 15:25:02.931299500 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/sx1
diff -Naur u-boot-2009.03_orig/board/sx1/CVS/Root u-boot-2009.03/board/sx1/CVS/Root
--- u-boot-2009.03_orig/board/sx1/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/sx1/CVS/Root   2009-03-25 15:25:02.931299500 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/tb0229/CVS/Entries u-boot-2009.03/board/tb0229/CVS/Entries
--- u-boot-2009.03_orig/board/tb0229/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/tb0229/CVS/Entries     2009-03-25 15:57:47.824974100 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tb0229.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/vr4131-pci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/tb0229/CVS/Entries.Extra u-boot-2009.03/board/tb0229/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/tb0229/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/tb0229/CVS/Entries.Extra       2009-03-25 15:57:47.824974100 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019713/
+/config.mk///1238019713/
+/flash.c///1238019713/
+/lowlevel_init.S///1238019713/
+/tb0229.c///1238019713/
+/u-boot.lds///1238019713/
+/vr4131-pci.c///1238019713/
diff -Naur u-boot-2009.03_orig/board/tb0229/CVS/Entries.Extra.Old u-boot-2009.03/board/tb0229/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/tb0229/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/tb0229/CVS/Entries.Extra.Old   2009-03-25 15:25:03.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019713/
+/config.mk///1238019713/
+/flash.c///1238019713/
+/lowlevel_init.S///1238019713/
+/tb0229.c///1238019713/
+/u-boot.lds///1238019713/
+/vr4131-pci.c///1238019713/
diff -Naur u-boot-2009.03_orig/board/tb0229/CVS/Entries.Old u-boot-2009.03/board/tb0229/CVS/Entries.Old
--- u-boot-2009.03_orig/board/tb0229/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/tb0229/CVS/Entries.Old 2009-03-25 15:25:03.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/tb0229.c/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/vr4131-pci.c/1.1.1.1/Wed Mar 25 22:21:53 2009//
+D
diff -Naur u-boot-2009.03_orig/board/tb0229/CVS/Repository u-boot-2009.03/board/tb0229/CVS/Repository
--- u-boot-2009.03_orig/board/tb0229/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/tb0229/CVS/Repository  2009-03-25 15:25:03.040673800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/tb0229
diff -Naur u-boot-2009.03_orig/board/tb0229/CVS/Root u-boot-2009.03/board/tb0229/CVS/Root
--- u-boot-2009.03_orig/board/tb0229/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/tb0229/CVS/Root        2009-03-25 15:25:03.040673800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/total5200/CVS/Entries u-boot-2009.03/board/total5200/CVS/Entries
--- u-boot-2009.03_orig/board/total5200/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/total5200/CVS/Entries  2009-03-25 15:57:47.887473700 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mt48lc16m16a2-75.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mt48lc32m16a2-75.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sdram.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sdram.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/total5200.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/total5200/CVS/Entries.Extra u-boot-2009.03/board/total5200/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/total5200/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/total5200/CVS/Entries.Extra    2009-03-25 15:57:47.887473700 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019713/
+/config.mk///1238019713/
+/mt48lc16m16a2-75.h///1238019713/
+/mt48lc32m16a2-75.h///1238019713/
+/sdram.c///1238019713/
+/sdram.h///1238019713/
+/total5200.c///1238019713/
diff -Naur u-boot-2009.03_orig/board/total5200/CVS/Entries.Extra.Old u-boot-2009.03/board/total5200/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/total5200/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/total5200/CVS/Entries.Extra.Old        2009-03-25 15:25:03.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019713/
+/config.mk///1238019713/
+/mt48lc16m16a2-75.h///1238019713/
+/mt48lc32m16a2-75.h///1238019713/
+/sdram.c///1238019713/
+/sdram.h///1238019713/
+/total5200.c///1238019713/
diff -Naur u-boot-2009.03_orig/board/total5200/CVS/Entries.Old u-boot-2009.03/board/total5200/CVS/Entries.Old
--- u-boot-2009.03_orig/board/total5200/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/total5200/CVS/Entries.Old      2009-03-25 15:25:03.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/mt48lc16m16a2-75.h/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/mt48lc32m16a2-75.h/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/sdram.c/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/sdram.h/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/total5200.c/1.1.1.1/Wed Mar 25 22:21:53 2009//
+D
diff -Naur u-boot-2009.03_orig/board/total5200/CVS/Repository u-boot-2009.03/board/total5200/CVS/Repository
--- u-boot-2009.03_orig/board/total5200/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/total5200/CVS/Repository       2009-03-25 15:25:03.165673000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/total5200
diff -Naur u-boot-2009.03_orig/board/total5200/CVS/Root u-boot-2009.03/board/total5200/CVS/Root
--- u-boot-2009.03_orig/board/total5200/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/total5200/CVS/Root     2009-03-25 15:25:03.165673000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/tqc/CVS/Entries u-boot-2009.03/board/tqc/CVS/Entries
--- u-boot-2009.03_orig/board/tqc/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/tqc/CVS/Entries        2009-03-25 15:25:04.134416800 -0700
@@ -0,0 +1,6 @@
+D/tqm5200////
+D/tqm8260////
+D/tqm8272////
+D/tqm834x////
+D/tqm85xx////
+D/tqm8xx////
diff -Naur u-boot-2009.03_orig/board/tqc/CVS/Entries.Extra u-boot-2009.03/board/tqc/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/tqc/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/tqc/CVS/Entries.Extra  2009-03-25 15:25:04.134416800 -0700
@@ -0,0 +1,6 @@
+D/tqm5200////
+D/tqm8260////
+D/tqm8272////
+D/tqm834x////
+D/tqm85xx////
+D/tqm8xx////
diff -Naur u-boot-2009.03_orig/board/tqc/CVS/Repository u-boot-2009.03/board/tqc/CVS/Repository
--- u-boot-2009.03_orig/board/tqc/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/tqc/CVS/Repository     2009-03-25 15:25:03.306297100 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/tqc
diff -Naur u-boot-2009.03_orig/board/tqc/CVS/Root u-boot-2009.03/board/tqc/CVS/Root
--- u-boot-2009.03_orig/board/tqc/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/tqc/CVS/Root   2009-03-25 15:25:03.290672200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/tqc/tqm5200/CVS/Entries u-boot-2009.03/board/tqc/tqm5200/CVS/Entries
--- u-boot-2009.03_orig/board/tqc/tqm5200/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/tqc/tqm5200/CVS/Entries        2009-03-25 15:57:47.981223100 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cam5200_flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_stk52xx.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_tb5200.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mt48lc16m16a2-75.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tqm5200.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/tqc/tqm5200/CVS/Entries.Extra u-boot-2009.03/board/tqc/tqm5200/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/tqc/tqm5200/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/tqc/tqm5200/CVS/Entries.Extra  2009-03-25 15:57:47.981223100 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019713/
+/cam5200_flash.c///1238019713/
+/cmd_stk52xx.c///1238019713/
+/cmd_tb5200.c///1238019713/
+/config.mk///1238019713/
+/mt48lc16m16a2-75.h///1238019713/
+/tqm5200.c///1238019713/
diff -Naur u-boot-2009.03_orig/board/tqc/tqm5200/CVS/Entries.Extra.Old u-boot-2009.03/board/tqc/tqm5200/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/tqc/tqm5200/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/tqc/tqm5200/CVS/Entries.Extra.Old      2009-03-25 15:25:03.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019713/
+/cam5200_flash.c///1238019713/
+/cmd_stk52xx.c///1238019713/
+/cmd_tb5200.c///1238019713/
+/config.mk///1238019713/
+/mt48lc16m16a2-75.h///1238019713/
+/tqm5200.c///1238019713/
diff -Naur u-boot-2009.03_orig/board/tqc/tqm5200/CVS/Entries.Old u-boot-2009.03/board/tqc/tqm5200/CVS/Entries.Old
--- u-boot-2009.03_orig/board/tqc/tqm5200/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/tqc/tqm5200/CVS/Entries.Old    2009-03-25 15:25:03.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/cam5200_flash.c/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/cmd_stk52xx.c/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/cmd_tb5200.c/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/mt48lc16m16a2-75.h/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/tqm5200.c/1.1.1.1/Wed Mar 25 22:21:53 2009//
+D
diff -Naur u-boot-2009.03_orig/board/tqc/tqm5200/CVS/Repository u-boot-2009.03/board/tqc/tqm5200/CVS/Repository
--- u-boot-2009.03_orig/board/tqc/tqm5200/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/tqc/tqm5200/CVS/Repository     2009-03-25 15:25:03.321922000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/tqc/tqm5200
diff -Naur u-boot-2009.03_orig/board/tqc/tqm5200/CVS/Root u-boot-2009.03/board/tqc/tqm5200/CVS/Root
--- u-boot-2009.03_orig/board/tqc/tqm5200/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/tqc/tqm5200/CVS/Root   2009-03-25 15:25:03.321922000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/tqc/tqm8260/CVS/Entries u-boot-2009.03/board/tqc/tqm8260/CVS/Entries
--- u-boot-2009.03_orig/board/tqc/tqm8260/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/tqc/tqm8260/CVS/Entries        2009-03-25 15:57:48.043722700 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tqm8260.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/tqc/tqm8260/CVS/Entries.Extra u-boot-2009.03/board/tqc/tqm8260/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/tqc/tqm8260/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/tqc/tqm8260/CVS/Entries.Extra  2009-03-25 15:57:48.043722700 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019713/
+/config.mk///1238019713/
+/tqm8260.c///1238019713/
diff -Naur u-boot-2009.03_orig/board/tqc/tqm8260/CVS/Entries.Extra.Old u-boot-2009.03/board/tqc/tqm8260/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/tqc/tqm8260/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/tqc/tqm8260/CVS/Entries.Extra.Old      2009-03-25 15:25:03.000000000 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019713/
+/config.mk///1238019713/
+/tqm8260.c///1238019713/
diff -Naur u-boot-2009.03_orig/board/tqc/tqm8260/CVS/Entries.Old u-boot-2009.03/board/tqc/tqm8260/CVS/Entries.Old
--- u-boot-2009.03_orig/board/tqc/tqm8260/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/tqc/tqm8260/CVS/Entries.Old    2009-03-25 15:25:03.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/tqm8260.c/1.1.1.1/Wed Mar 25 22:21:53 2009//
+D
diff -Naur u-boot-2009.03_orig/board/tqc/tqm8260/CVS/Repository u-boot-2009.03/board/tqc/tqm8260/CVS/Repository
--- u-boot-2009.03_orig/board/tqc/tqm8260/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/tqc/tqm8260/CVS/Repository     2009-03-25 15:25:03.540670600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/tqc/tqm8260
diff -Naur u-boot-2009.03_orig/board/tqc/tqm8260/CVS/Root u-boot-2009.03/board/tqc/tqm8260/CVS/Root
--- u-boot-2009.03_orig/board/tqc/tqm8260/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/tqc/tqm8260/CVS/Root   2009-03-25 15:25:03.540670600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/tqc/tqm8272/CVS/Entries u-boot-2009.03/board/tqc/tqm8272/CVS/Entries
--- u-boot-2009.03_orig/board/tqc/tqm8272/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/tqc/tqm8272/CVS/Entries        2009-03-25 15:57:48.121847200 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nand.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tqm8272.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tqm8272.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/tqc/tqm8272/CVS/Entries.Extra u-boot-2009.03/board/tqc/tqm8272/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/tqc/tqm8272/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/tqc/tqm8272/CVS/Entries.Extra  2009-03-25 15:57:48.121847200 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019713/
+/config.mk///1238019713/
+/nand.c///1238019713/
+/tqm8272.c///1238019713/
+/tqm8272.h///1238019713/
diff -Naur u-boot-2009.03_orig/board/tqc/tqm8272/CVS/Entries.Extra.Old u-boot-2009.03/board/tqc/tqm8272/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/tqc/tqm8272/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/tqc/tqm8272/CVS/Entries.Extra.Old      2009-03-25 15:25:03.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019713/
+/config.mk///1238019713/
+/nand.c///1238019713/
+/tqm8272.c///1238019713/
+/tqm8272.h///1238019713/
diff -Naur u-boot-2009.03_orig/board/tqc/tqm8272/CVS/Entries.Old u-boot-2009.03/board/tqc/tqm8272/CVS/Entries.Old
--- u-boot-2009.03_orig/board/tqc/tqm8272/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/tqc/tqm8272/CVS/Entries.Old    2009-03-25 15:25:03.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/nand.c/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/tqm8272.c/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/tqm8272.h/1.1.1.1/Wed Mar 25 22:21:53 2009//
+D
diff -Naur u-boot-2009.03_orig/board/tqc/tqm8272/CVS/Repository u-boot-2009.03/board/tqc/tqm8272/CVS/Repository
--- u-boot-2009.03_orig/board/tqc/tqm8272/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/tqc/tqm8272/CVS/Repository     2009-03-25 15:25:03.634420000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/tqc/tqm8272
diff -Naur u-boot-2009.03_orig/board/tqc/tqm8272/CVS/Root u-boot-2009.03/board/tqc/tqm8272/CVS/Root
--- u-boot-2009.03_orig/board/tqc/tqm8272/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/tqc/tqm8272/CVS/Root   2009-03-25 15:25:03.634420000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/tqc/tqm834x/CVS/Entries u-boot-2009.03/board/tqc/tqm834x/CVS/Entries
--- u-boot-2009.03_orig/board/tqc/tqm834x/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/tqc/tqm834x/CVS/Entries        2009-03-25 15:57:48.199971700 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tqm834x.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/tqc/tqm834x/CVS/Entries.Extra u-boot-2009.03/board/tqc/tqm834x/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/tqc/tqm834x/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/tqc/tqm834x/CVS/Entries.Extra  2009-03-25 15:57:48.215596600 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019713/
+/config.mk///1238019713/
+/pci.c///1238019713/
+/tqm834x.c///1238019713/
diff -Naur u-boot-2009.03_orig/board/tqc/tqm834x/CVS/Entries.Extra.Old u-boot-2009.03/board/tqc/tqm834x/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/tqc/tqm834x/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/tqc/tqm834x/CVS/Entries.Extra.Old      2009-03-25 15:25:03.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019713/
+/config.mk///1238019713/
+/pci.c///1238019713/
+/tqm834x.c///1238019713/
diff -Naur u-boot-2009.03_orig/board/tqc/tqm834x/CVS/Entries.Old u-boot-2009.03/board/tqc/tqm834x/CVS/Entries.Old
--- u-boot-2009.03_orig/board/tqc/tqm834x/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/tqc/tqm834x/CVS/Entries.Old    2009-03-25 15:25:03.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/pci.c/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/tqm834x.c/1.1.1.1/Wed Mar 25 22:21:53 2009//
+D
diff -Naur u-boot-2009.03_orig/board/tqc/tqm834x/CVS/Repository u-boot-2009.03/board/tqc/tqm834x/CVS/Repository
--- u-boot-2009.03_orig/board/tqc/tqm834x/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/tqc/tqm834x/CVS/Repository     2009-03-25 15:25:03.743794300 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/tqc/tqm834x
diff -Naur u-boot-2009.03_orig/board/tqc/tqm834x/CVS/Root u-boot-2009.03/board/tqc/tqm834x/CVS/Root
--- u-boot-2009.03_orig/board/tqc/tqm834x/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/tqc/tqm834x/CVS/Root   2009-03-25 15:25:03.743794300 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/tqc/tqm85xx/CVS/Entries u-boot-2009.03/board/tqc/tqm85xx/CVS/Entries
--- u-boot-2009.03_orig/board/tqc/tqm85xx/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/tqc/tqm85xx/CVS/Entries        2009-03-25 15:57:48.293721100 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/law.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nand.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sdram.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tlb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tqm85xx.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/tqc/tqm85xx/CVS/Entries.Extra u-boot-2009.03/board/tqc/tqm85xx/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/tqc/tqm85xx/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/tqc/tqm85xx/CVS/Entries.Extra  2009-03-25 15:57:48.293721100 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019714/
+/config.mk///1238019713/
+/law.c///1238019714/
+/nand.c///1238019714/
+/sdram.c///1238019714/
+/tlb.c///1238019714/
+/tqm85xx.c///1238019714/
+/u-boot.lds///1238019714/
diff -Naur u-boot-2009.03_orig/board/tqc/tqm85xx/CVS/Entries.Extra.Old u-boot-2009.03/board/tqc/tqm85xx/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/tqc/tqm85xx/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/tqc/tqm85xx/CVS/Entries.Extra.Old      2009-03-25 15:25:03.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019714/
+/config.mk///1238019713/
+/law.c///1238019714/
+/nand.c///1238019714/
+/sdram.c///1238019714/
+/tlb.c///1238019714/
+/tqm85xx.c///1238019714/
+/u-boot.lds///1238019714/
diff -Naur u-boot-2009.03_orig/board/tqc/tqm85xx/CVS/Entries.Old u-boot-2009.03/board/tqc/tqm85xx/CVS/Entries.Old
--- u-boot-2009.03_orig/board/tqc/tqm85xx/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/tqc/tqm85xx/CVS/Entries.Old    2009-03-25 15:25:03.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:53 2009//
+/law.c/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/nand.c/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/sdram.c/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/tlb.c/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/tqm85xx.c/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:54 2009//
+D
diff -Naur u-boot-2009.03_orig/board/tqc/tqm85xx/CVS/Repository u-boot-2009.03/board/tqc/tqm85xx/CVS/Repository
--- u-boot-2009.03_orig/board/tqc/tqm85xx/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/tqc/tqm85xx/CVS/Repository     2009-03-25 15:25:03.853168600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/tqc/tqm85xx
diff -Naur u-boot-2009.03_orig/board/tqc/tqm85xx/CVS/Root u-boot-2009.03/board/tqc/tqm85xx/CVS/Root
--- u-boot-2009.03_orig/board/tqc/tqm85xx/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/tqc/tqm85xx/CVS/Root   2009-03-25 15:25:03.853168600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/tqc/tqm8xx/CVS/Entries u-boot-2009.03/board/tqc/tqm8xx/CVS/Entries
--- u-boot-2009.03_orig/board/tqc/tqm8xx/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/tqc/tqm8xx/CVS/Entries 2009-03-25 15:57:48.371845600 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/load_sernum_ethaddr.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tqm8xx.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.debug/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/tqc/tqm8xx/CVS/Entries.Extra u-boot-2009.03/board/tqc/tqm8xx/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/tqc/tqm8xx/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/tqc/tqm8xx/CVS/Entries.Extra   2009-03-25 15:57:48.371845600 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019714/
+/config.mk///1238019714/
+/load_sernum_ethaddr.c///1238019714/
+/tqm8xx.c///1238019714/
+/u-boot.lds///1238019714/
+/u-boot.lds.debug///1238019714/
diff -Naur u-boot-2009.03_orig/board/tqc/tqm8xx/CVS/Entries.Extra.Old u-boot-2009.03/board/tqc/tqm8xx/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/tqc/tqm8xx/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/tqc/tqm8xx/CVS/Entries.Extra.Old       2009-03-25 15:25:04.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019714/
+/config.mk///1238019714/
+/load_sernum_ethaddr.c///1238019714/
+/tqm8xx.c///1238019714/
+/u-boot.lds///1238019714/
+/u-boot.lds.debug///1238019714/
diff -Naur u-boot-2009.03_orig/board/tqc/tqm8xx/CVS/Entries.Old u-boot-2009.03/board/tqc/tqm8xx/CVS/Entries.Old
--- u-boot-2009.03_orig/board/tqc/tqm8xx/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/tqc/tqm8xx/CVS/Entries.Old     2009-03-25 15:25:04.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/load_sernum_ethaddr.c/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/tqm8xx.c/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/u-boot.lds.debug/1.1.1.1/Wed Mar 25 22:21:54 2009//
+D
diff -Naur u-boot-2009.03_orig/board/tqc/tqm8xx/CVS/Repository u-boot-2009.03/board/tqc/tqm8xx/CVS/Repository
--- u-boot-2009.03_orig/board/tqc/tqm8xx/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/tqc/tqm8xx/CVS/Repository      2009-03-25 15:25:03.993792700 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/tqc/tqm8xx
diff -Naur u-boot-2009.03_orig/board/tqc/tqm8xx/CVS/Root u-boot-2009.03/board/tqc/tqm8xx/CVS/Root
--- u-boot-2009.03_orig/board/tqc/tqm8xx/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/tqc/tqm8xx/CVS/Root    2009-03-25 15:25:03.993792700 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/trab/CVS/Entries u-boot-2009.03/board/trab/CVS/Entries
--- u-boot-2009.03_orig/board/trab/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/trab/CVS/Entries       2009-03-25 15:57:48.481219900 -0700
@@ -0,0 +1,18 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/Pt1000_temp_data.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.kbd/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/auto_update.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_trab.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/memory.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/rs485.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/rs485.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/trab.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/trab_fkt.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tsc2000.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tsc2000.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/vfd.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/trab/CVS/Entries.Extra u-boot-2009.03/board/trab/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/trab/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/trab/CVS/Entries.Extra 2009-03-25 15:57:48.496844800 -0700
@@ -0,0 +1,17 @@
+/Makefile///1238019714/
+/Pt1000_temp_data.h///1238019714/
+/README.kbd///1238019714/
+/auto_update.c///1238019714/
+/cmd_trab.c///1238019714/
+/config.mk///1238019714/
+/flash.c///1238019714/
+/lowlevel_init.S///1238019714/
+/memory.c///1238019714/
+/rs485.c///1238019714/
+/rs485.h///1238019714/
+/trab.c///1238019714/
+/trab_fkt.c///1238019714/
+/tsc2000.c///1238019714/
+/tsc2000.h///1238019714/
+/u-boot.lds///1238019714/
+/vfd.c///1238019714/
diff -Naur u-boot-2009.03_orig/board/trab/CVS/Entries.Extra.Old u-boot-2009.03/board/trab/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/trab/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/trab/CVS/Entries.Extra.Old     2009-03-25 15:25:04.000000000 -0700
@@ -0,0 +1,17 @@
+/Makefile///1238019714/
+/Pt1000_temp_data.h///1238019714/
+/README.kbd///1238019714/
+/auto_update.c///1238019714/
+/cmd_trab.c///1238019714/
+/config.mk///1238019714/
+/flash.c///1238019714/
+/lowlevel_init.S///1238019714/
+/memory.c///1238019714/
+/rs485.c///1238019714/
+/rs485.h///1238019714/
+/trab.c///1238019714/
+/trab_fkt.c///1238019714/
+/tsc2000.c///1238019714/
+/tsc2000.h///1238019714/
+/u-boot.lds///1238019714/
+/vfd.c///1238019714/
diff -Naur u-boot-2009.03_orig/board/trab/CVS/Entries.Old u-boot-2009.03/board/trab/CVS/Entries.Old
--- u-boot-2009.03_orig/board/trab/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/trab/CVS/Entries.Old   2009-03-25 15:25:04.000000000 -0700
@@ -0,0 +1,18 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/Pt1000_temp_data.h/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/README.kbd/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/auto_update.c/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/cmd_trab.c/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/memory.c/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/rs485.c/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/rs485.h/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/trab.c/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/trab_fkt.c/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/tsc2000.c/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/tsc2000.h/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/vfd.c/1.1.1.1/Wed Mar 25 22:21:54 2009//
+D
diff -Naur u-boot-2009.03_orig/board/trab/CVS/Repository u-boot-2009.03/board/trab/CVS/Repository
--- u-boot-2009.03_orig/board/trab/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/trab/CVS/Repository    2009-03-25 15:25:04.181291500 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/trab
diff -Naur u-boot-2009.03_orig/board/trab/CVS/Root u-boot-2009.03/board/trab/CVS/Root
--- u-boot-2009.03_orig/board/trab/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/trab/CVS/Root  2009-03-25 15:25:04.181291500 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/trizepsiv/CVS/Entries u-boot-2009.03/board/trizepsiv/CVS/Entries
--- u-boot-2009.03_orig/board/trizepsiv/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/trizepsiv/CVS/Entries  2009-03-25 15:57:48.559344400 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/conxs.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/eeprom.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pxavoltage.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/trizepsiv/CVS/Entries.Extra u-boot-2009.03/board/trizepsiv/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/trizepsiv/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/trizepsiv/CVS/Entries.Extra    2009-03-25 15:57:48.559344400 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019714/
+/config.mk///1238019714/
+/conxs.c///1238019714/
+/eeprom.c///1238019714/
+/lowlevel_init.S///1238019714/
+/pxavoltage.S///1238019714/
+/u-boot.lds///1238019714/
diff -Naur u-boot-2009.03_orig/board/trizepsiv/CVS/Entries.Extra.Old u-boot-2009.03/board/trizepsiv/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/trizepsiv/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/trizepsiv/CVS/Entries.Extra.Old        2009-03-25 15:25:04.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019714/
+/config.mk///1238019714/
+/conxs.c///1238019714/
+/eeprom.c///1238019714/
+/lowlevel_init.S///1238019714/
+/pxavoltage.S///1238019714/
+/u-boot.lds///1238019714/
diff -Naur u-boot-2009.03_orig/board/trizepsiv/CVS/Entries.Old u-boot-2009.03/board/trizepsiv/CVS/Entries.Old
--- u-boot-2009.03_orig/board/trizepsiv/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/trizepsiv/CVS/Entries.Old      2009-03-25 15:25:04.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/conxs.c/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/eeprom.c/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/pxavoltage.S/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:54 2009//
+D
diff -Naur u-boot-2009.03_orig/board/trizepsiv/CVS/Repository u-boot-2009.03/board/trizepsiv/CVS/Repository
--- u-boot-2009.03_orig/board/trizepsiv/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/trizepsiv/CVS/Repository       2009-03-25 15:25:04.650038500 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/trizepsiv
diff -Naur u-boot-2009.03_orig/board/trizepsiv/CVS/Root u-boot-2009.03/board/trizepsiv/CVS/Root
--- u-boot-2009.03_orig/board/trizepsiv/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/trizepsiv/CVS/Root     2009-03-25 15:25:04.634413600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/uc100/CVS/Entries u-boot-2009.03/board/uc100/CVS/Entries
--- u-boot-2009.03_orig/board/uc100/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/uc100/CVS/Entries      2009-03-25 15:57:48.637468900 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pcmcia.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.debug/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/uc100.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/uc100/CVS/Entries.Extra u-boot-2009.03/board/uc100/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/uc100/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/uc100/CVS/Entries.Extra        2009-03-25 15:57:48.637468900 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019714/
+/config.mk///1238019714/
+/pcmcia.c///1238019714/
+/u-boot.lds///1238019714/
+/u-boot.lds.debug///1238019714/
+/uc100.c///1238019714/
diff -Naur u-boot-2009.03_orig/board/uc100/CVS/Entries.Extra.Old u-boot-2009.03/board/uc100/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/uc100/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/uc100/CVS/Entries.Extra.Old    2009-03-25 15:25:04.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019714/
+/config.mk///1238019714/
+/pcmcia.c///1238019714/
+/u-boot.lds///1238019714/
+/u-boot.lds.debug///1238019714/
+/uc100.c///1238019714/
diff -Naur u-boot-2009.03_orig/board/uc100/CVS/Entries.Old u-boot-2009.03/board/uc100/CVS/Entries.Old
--- u-boot-2009.03_orig/board/uc100/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/uc100/CVS/Entries.Old  2009-03-25 15:25:04.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/pcmcia.c/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/u-boot.lds.debug/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/uc100.c/1.1.1.1/Wed Mar 25 22:21:54 2009//
+D
diff -Naur u-boot-2009.03_orig/board/uc100/CVS/Repository u-boot-2009.03/board/uc100/CVS/Repository
--- u-boot-2009.03_orig/board/uc100/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/uc100/CVS/Repository   2009-03-25 15:25:04.775037700 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/uc100
diff -Naur u-boot-2009.03_orig/board/uc100/CVS/Root u-boot-2009.03/board/uc100/CVS/Root
--- u-boot-2009.03_orig/board/uc100/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/uc100/CVS/Root 2009-03-25 15:25:04.775037700 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/uc101/CVS/Entries u-boot-2009.03/board/uc101/CVS/Entries
--- u-boot-2009.03_orig/board/uc101/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/uc101/CVS/Entries      2009-03-25 15:57:48.699968500 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/uc101.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/uc101/CVS/Entries.Extra u-boot-2009.03/board/uc101/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/uc101/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/uc101/CVS/Entries.Extra        2009-03-25 15:57:48.699968500 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019714/
+/config.mk///1238019714/
+/uc101.c///1238019714/
diff -Naur u-boot-2009.03_orig/board/uc101/CVS/Entries.Extra.Old u-boot-2009.03/board/uc101/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/uc101/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/uc101/CVS/Entries.Extra.Old    2009-03-25 15:25:04.000000000 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019714/
+/config.mk///1238019714/
+/uc101.c///1238019714/
diff -Naur u-boot-2009.03_orig/board/uc101/CVS/Entries.Old u-boot-2009.03/board/uc101/CVS/Entries.Old
--- u-boot-2009.03_orig/board/uc101/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/uc101/CVS/Entries.Old  2009-03-25 15:25:04.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/uc101.c/1.1.1.1/Wed Mar 25 22:21:54 2009//
+D
diff -Naur u-boot-2009.03_orig/board/uc101/CVS/Repository u-boot-2009.03/board/uc101/CVS/Repository
--- u-boot-2009.03_orig/board/uc101/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/uc101/CVS/Repository   2009-03-25 15:25:04.884412000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/uc101
diff -Naur u-boot-2009.03_orig/board/uc101/CVS/Root u-boot-2009.03/board/uc101/CVS/Root
--- u-boot-2009.03_orig/board/uc101/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/uc101/CVS/Root 2009-03-25 15:25:04.884412000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/utx8245/CVS/Entries u-boot-2009.03/board/utx8245/CVS/Entries
--- u-boot-2009.03_orig/board/utx8245/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/utx8245/CVS/Entries    2009-03-25 15:57:48.762468100 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/utx8245.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/utx8245/CVS/Entries.Extra u-boot-2009.03/board/utx8245/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/utx8245/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/utx8245/CVS/Entries.Extra      2009-03-25 15:57:48.762468100 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019714/
+/config.mk///1238019714/
+/flash.c///1238019714/
+/utx8245.c///1238019714/
diff -Naur u-boot-2009.03_orig/board/utx8245/CVS/Entries.Extra.Old u-boot-2009.03/board/utx8245/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/utx8245/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/utx8245/CVS/Entries.Extra.Old  2009-03-25 15:25:05.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019714/
+/config.mk///1238019714/
+/flash.c///1238019714/
+/utx8245.c///1238019714/
diff -Naur u-boot-2009.03_orig/board/utx8245/CVS/Entries.Old u-boot-2009.03/board/utx8245/CVS/Entries.Old
--- u-boot-2009.03_orig/board/utx8245/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/utx8245/CVS/Entries.Old        2009-03-25 15:25:05.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/utx8245.c/1.1.1.1/Wed Mar 25 22:21:54 2009//
+D
diff -Naur u-boot-2009.03_orig/board/utx8245/CVS/Repository u-boot-2009.03/board/utx8245/CVS/Repository
--- u-boot-2009.03_orig/board/utx8245/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/utx8245/CVS/Repository 2009-03-25 15:25:04.978161400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/utx8245
diff -Naur u-boot-2009.03_orig/board/utx8245/CVS/Root u-boot-2009.03/board/utx8245/CVS/Root
--- u-boot-2009.03_orig/board/utx8245/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/utx8245/CVS/Root       2009-03-25 15:25:04.978161400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/v37/CVS/Entries u-boot-2009.03/board/v37/CVS/Entries
--- u-boot-2009.03_orig/board/v37/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/v37/CVS/Entries        2009-03-25 15:57:48.824967700 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/v37.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/v37/CVS/Entries.Extra u-boot-2009.03/board/v37/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/v37/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/v37/CVS/Entries.Extra  2009-03-25 15:57:48.824967700 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019714/
+/config.mk///1238019714/
+/flash.c///1238019714/
+/u-boot.lds///1238019714/
+/v37.c///1238019714/
diff -Naur u-boot-2009.03_orig/board/v37/CVS/Entries.Extra.Old u-boot-2009.03/board/v37/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/v37/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/v37/CVS/Entries.Extra.Old      2009-03-25 15:25:05.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019714/
+/config.mk///1238019714/
+/flash.c///1238019714/
+/u-boot.lds///1238019714/
+/v37.c///1238019714/
diff -Naur u-boot-2009.03_orig/board/v37/CVS/Entries.Old u-boot-2009.03/board/v37/CVS/Entries.Old
--- u-boot-2009.03_orig/board/v37/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/v37/CVS/Entries.Old    2009-03-25 15:25:05.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/v37.c/1.1.1.1/Wed Mar 25 22:21:54 2009//
+D
diff -Naur u-boot-2009.03_orig/board/v37/CVS/Repository u-boot-2009.03/board/v37/CVS/Repository
--- u-boot-2009.03_orig/board/v37/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/v37/CVS/Repository     2009-03-25 15:25:05.087535700 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/v37
diff -Naur u-boot-2009.03_orig/board/v37/CVS/Root u-boot-2009.03/board/v37/CVS/Root
--- u-boot-2009.03_orig/board/v37/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/v37/CVS/Root   2009-03-25 15:25:05.087535700 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/v38b/CVS/Entries u-boot-2009.03/board/v38b/CVS/Entries
--- u-boot-2009.03_orig/board/v38b/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/v38b/CVS/Entries       2009-03-25 15:57:48.918717100 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ethaddr.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/v38b.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/v38b/CVS/Entries.Extra u-boot-2009.03/board/v38b/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/v38b/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/v38b/CVS/Entries.Extra 2009-03-25 15:57:48.918717100 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019714/
+/config.mk///1238019714/
+/ethaddr.c///1238019714/
+/v38b.c///1238019714/
diff -Naur u-boot-2009.03_orig/board/v38b/CVS/Entries.Extra.Old u-boot-2009.03/board/v38b/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/v38b/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/v38b/CVS/Entries.Extra.Old     2009-03-25 15:25:05.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019714/
+/config.mk///1238019714/
+/ethaddr.c///1238019714/
+/v38b.c///1238019714/
diff -Naur u-boot-2009.03_orig/board/v38b/CVS/Entries.Old u-boot-2009.03/board/v38b/CVS/Entries.Old
--- u-boot-2009.03_orig/board/v38b/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/v38b/CVS/Entries.Old   2009-03-25 15:25:05.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/ethaddr.c/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/v38b.c/1.1.1.1/Wed Mar 25 22:21:54 2009//
+D
diff -Naur u-boot-2009.03_orig/board/v38b/CVS/Repository u-boot-2009.03/board/v38b/CVS/Repository
--- u-boot-2009.03_orig/board/v38b/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/v38b/CVS/Repository    2009-03-25 15:25:05.196910000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/v38b
diff -Naur u-boot-2009.03_orig/board/v38b/CVS/Root u-boot-2009.03/board/v38b/CVS/Root
--- u-boot-2009.03_orig/board/v38b/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/v38b/CVS/Root  2009-03-25 15:25:05.196910000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/voiceblue/CVS/Entries u-boot-2009.03/board/voiceblue/CVS/Entries
--- u-boot-2009.03_orig/board/voiceblue/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/voiceblue/CVS/Entries  2009-03-25 15:57:48.996841600 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/eeprom.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/eeprom.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/eeprom_start.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/setup.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/voiceblue.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/voiceblue/CVS/Entries.Extra u-boot-2009.03/board/voiceblue/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/voiceblue/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/voiceblue/CVS/Entries.Extra    2009-03-25 15:57:49.012466500 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019714/
+/config.mk///1238019714/
+/eeprom.c///1238019714/
+/eeprom.lds///1238019714/
+/eeprom_start.S///1238019714/
+/setup.S///1238019714/
+/u-boot.lds///1238019714/
+/voiceblue.c///1238019714/
diff -Naur u-boot-2009.03_orig/board/voiceblue/CVS/Entries.Extra.Old u-boot-2009.03/board/voiceblue/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/voiceblue/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/voiceblue/CVS/Entries.Extra.Old        2009-03-25 15:25:05.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019714/
+/config.mk///1238019714/
+/eeprom.c///1238019714/
+/eeprom.lds///1238019714/
+/eeprom_start.S///1238019714/
+/setup.S///1238019714/
+/u-boot.lds///1238019714/
+/voiceblue.c///1238019714/
diff -Naur u-boot-2009.03_orig/board/voiceblue/CVS/Entries.Old u-boot-2009.03/board/voiceblue/CVS/Entries.Old
--- u-boot-2009.03_orig/board/voiceblue/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/voiceblue/CVS/Entries.Old      2009-03-25 15:25:05.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/eeprom.c/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/eeprom.lds/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/eeprom_start.S/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/setup.S/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/voiceblue.c/1.1.1.1/Wed Mar 25 22:21:54 2009//
+D
diff -Naur u-boot-2009.03_orig/board/voiceblue/CVS/Repository u-boot-2009.03/board/voiceblue/CVS/Repository
--- u-boot-2009.03_orig/board/voiceblue/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/voiceblue/CVS/Repository       2009-03-25 15:25:05.290659400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/voiceblue
diff -Naur u-boot-2009.03_orig/board/voiceblue/CVS/Root u-boot-2009.03/board/voiceblue/CVS/Root
--- u-boot-2009.03_orig/board/voiceblue/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/voiceblue/CVS/Root     2009-03-25 15:25:05.290659400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/w7o/CVS/Entries u-boot-2009.03/board/w7o/CVS/Entries
--- u-boot-2009.03_orig/board/w7o/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/w7o/CVS/Entries        2009-03-25 15:57:49.106215900 -0700
@@ -0,0 +1,18 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_vpd.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/errors.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fpga.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fsboot.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/post1.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/post2.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.debug/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/vpd.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/vpd.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/w7o.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/w7o.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/watchdog.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/w7o/CVS/Entries.Extra u-boot-2009.03/board/w7o/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/w7o/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/w7o/CVS/Entries.Extra  2009-03-25 15:57:49.106215900 -0700
@@ -0,0 +1,17 @@
+/Makefile///1238019714/
+/cmd_vpd.c///1238019714/
+/config.mk///1238019714/
+/errors.h///1238019714/
+/flash.c///1238019714/
+/fpga.c///1238019714/
+/fsboot.c///1238019714/
+/init.S///1238019714/
+/post1.S///1238019714/
+/post2.c///1238019714/
+/u-boot.lds///1238019714/
+/u-boot.lds.debug///1238019714/
+/vpd.c///1238019714/
+/vpd.h///1238019714/
+/w7o.c///1238019714/
+/w7o.h///1238019714/
+/watchdog.c///1238019714/
diff -Naur u-boot-2009.03_orig/board/w7o/CVS/Entries.Extra.Old u-boot-2009.03/board/w7o/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/w7o/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/w7o/CVS/Entries.Extra.Old      2009-03-25 15:25:05.000000000 -0700
@@ -0,0 +1,17 @@
+/Makefile///1238019714/
+/cmd_vpd.c///1238019714/
+/config.mk///1238019714/
+/errors.h///1238019714/
+/flash.c///1238019714/
+/fpga.c///1238019714/
+/fsboot.c///1238019714/
+/init.S///1238019714/
+/post1.S///1238019714/
+/post2.c///1238019714/
+/u-boot.lds///1238019714/
+/u-boot.lds.debug///1238019714/
+/vpd.c///1238019714/
+/vpd.h///1238019714/
+/w7o.c///1238019714/
+/w7o.h///1238019714/
+/watchdog.c///1238019714/
diff -Naur u-boot-2009.03_orig/board/w7o/CVS/Entries.Old u-boot-2009.03/board/w7o/CVS/Entries.Old
--- u-boot-2009.03_orig/board/w7o/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/w7o/CVS/Entries.Old    2009-03-25 15:25:05.000000000 -0700
@@ -0,0 +1,18 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/cmd_vpd.c/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/errors.h/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/fpga.c/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/fsboot.c/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/init.S/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/post1.S/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/post2.c/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/u-boot.lds.debug/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/vpd.c/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/vpd.h/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/w7o.c/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/w7o.h/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/watchdog.c/1.1.1.1/Wed Mar 25 22:21:54 2009//
+D
diff -Naur u-boot-2009.03_orig/board/w7o/CVS/Repository u-boot-2009.03/board/w7o/CVS/Repository
--- u-boot-2009.03_orig/board/w7o/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/w7o/CVS/Repository     2009-03-25 15:25:05.603157400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/w7o
diff -Naur u-boot-2009.03_orig/board/w7o/CVS/Root u-boot-2009.03/board/w7o/CVS/Root
--- u-boot-2009.03_orig/board/w7o/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/w7o/CVS/Root   2009-03-25 15:25:05.603157400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/wepep250/CVS/Entries u-boot-2009.03/board/wepep250/CVS/Entries
--- u-boot-2009.03_orig/board/wepep250/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/wepep250/CVS/Entries   2009-03-25 15:57:49.199965300 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/intel.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/wepep250.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/wepep250/CVS/Entries.Extra u-boot-2009.03/board/wepep250/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/wepep250/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/wepep250/CVS/Entries.Extra     2009-03-25 15:57:49.199965300 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019714/
+/config.mk///1238019714/
+/flash.c///1238019714/
+/intel.h///1238019714/
+/lowlevel_init.S///1238019714/
+/u-boot.lds///1238019714/
+/wepep250.c///1238019714/
diff -Naur u-boot-2009.03_orig/board/wepep250/CVS/Entries.Extra.Old u-boot-2009.03/board/wepep250/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/wepep250/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/wepep250/CVS/Entries.Extra.Old 2009-03-25 15:25:05.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019714/
+/config.mk///1238019714/
+/flash.c///1238019714/
+/intel.h///1238019714/
+/lowlevel_init.S///1238019714/
+/u-boot.lds///1238019714/
+/wepep250.c///1238019714/
diff -Naur u-boot-2009.03_orig/board/wepep250/CVS/Entries.Old u-boot-2009.03/board/wepep250/CVS/Entries.Old
--- u-boot-2009.03_orig/board/wepep250/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/wepep250/CVS/Entries.Old       2009-03-25 15:25:05.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/intel.h/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/wepep250.c/1.1.1.1/Wed Mar 25 22:21:54 2009//
+D
diff -Naur u-boot-2009.03_orig/board/wepep250/CVS/Repository u-boot-2009.03/board/wepep250/CVS/Repository
--- u-boot-2009.03_orig/board/wepep250/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/wepep250/CVS/Repository        2009-03-25 15:25:05.821906000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/wepep250
diff -Naur u-boot-2009.03_orig/board/wepep250/CVS/Root u-boot-2009.03/board/wepep250/CVS/Root
--- u-boot-2009.03_orig/board/wepep250/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/wepep250/CVS/Root      2009-03-25 15:25:05.821906000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/westel/CVS/Entries u-boot-2009.03/board/westel/CVS/Entries
--- u-boot-2009.03_orig/board/westel/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/westel/CVS/Entries     2009-03-25 15:25:06.103154200 -0700
@@ -0,0 +1 @@
+D/amx860////
diff -Naur u-boot-2009.03_orig/board/westel/CVS/Entries.Extra u-boot-2009.03/board/westel/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/westel/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/westel/CVS/Entries.Extra       2009-03-25 15:25:06.103154200 -0700
@@ -0,0 +1 @@
+D/amx860////
diff -Naur u-boot-2009.03_orig/board/westel/CVS/Repository u-boot-2009.03/board/westel/CVS/Repository
--- u-boot-2009.03_orig/board/westel/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/westel/CVS/Repository  2009-03-25 15:25:05.962530100 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/westel
diff -Naur u-boot-2009.03_orig/board/westel/CVS/Root u-boot-2009.03/board/westel/CVS/Root
--- u-boot-2009.03_orig/board/westel/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/westel/CVS/Root        2009-03-25 15:25:05.962530100 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/westel/amx860/CVS/Entries u-boot-2009.03/board/westel/amx860/CVS/Entries
--- u-boot-2009.03_orig/board/westel/amx860/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/westel/amx860/CVS/Entries      2009-03-25 15:57:49.293714700 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/amx860.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.debug/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/westel/amx860/CVS/Entries.Extra u-boot-2009.03/board/westel/amx860/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/westel/amx860/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/westel/amx860/CVS/Entries.Extra        2009-03-25 15:57:49.293714700 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019715/
+/amx860.c///1238019714/
+/config.mk///1238019715/
+/flash.c///1238019715/
+/u-boot.lds///1238019715/
+/u-boot.lds.debug///1238019715/
diff -Naur u-boot-2009.03_orig/board/westel/amx860/CVS/Entries.Extra.Old u-boot-2009.03/board/westel/amx860/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/westel/amx860/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/westel/amx860/CVS/Entries.Extra.Old    2009-03-25 15:25:06.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019715/
+/amx860.c///1238019714/
+/config.mk///1238019715/
+/flash.c///1238019715/
+/u-boot.lds///1238019715/
+/u-boot.lds.debug///1238019715/
diff -Naur u-boot-2009.03_orig/board/westel/amx860/CVS/Entries.Old u-boot-2009.03/board/westel/amx860/CVS/Entries.Old
--- u-boot-2009.03_orig/board/westel/amx860/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/westel/amx860/CVS/Entries.Old  2009-03-25 15:25:06.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/amx860.c/1.1.1.1/Wed Mar 25 22:21:54 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/u-boot.lds.debug/1.1.1.1/Wed Mar 25 22:21:55 2009//
+D
diff -Naur u-boot-2009.03_orig/board/westel/amx860/CVS/Repository u-boot-2009.03/board/westel/amx860/CVS/Repository
--- u-boot-2009.03_orig/board/westel/amx860/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/westel/amx860/CVS/Repository   2009-03-25 15:25:05.978155000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/westel/amx860
diff -Naur u-boot-2009.03_orig/board/westel/amx860/CVS/Root u-boot-2009.03/board/westel/amx860/CVS/Root
--- u-boot-2009.03_orig/board/westel/amx860/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/westel/amx860/CVS/Root 2009-03-25 15:25:05.978155000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/xaeniax/CVS/Entries u-boot-2009.03/board/xaeniax/CVS/Entries
--- u-boot-2009.03_orig/board/xaeniax/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xaeniax/CVS/Entries    2009-03-25 15:57:49.371839200 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xaeniax.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/xaeniax/CVS/Entries.Extra u-boot-2009.03/board/xaeniax/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/xaeniax/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xaeniax/CVS/Entries.Extra      2009-03-25 15:57:49.371839200 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019715/
+/config.mk///1238019715/
+/flash.c///1238019715/
+/lowlevel_init.S///1238019715/
+/u-boot.lds///1238019715/
+/xaeniax.c///1238019715/
diff -Naur u-boot-2009.03_orig/board/xaeniax/CVS/Entries.Extra.Old u-boot-2009.03/board/xaeniax/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/xaeniax/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xaeniax/CVS/Entries.Extra.Old  2009-03-25 15:25:06.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019715/
+/config.mk///1238019715/
+/flash.c///1238019715/
+/lowlevel_init.S///1238019715/
+/u-boot.lds///1238019715/
+/xaeniax.c///1238019715/
diff -Naur u-boot-2009.03_orig/board/xaeniax/CVS/Entries.Old u-boot-2009.03/board/xaeniax/CVS/Entries.Old
--- u-boot-2009.03_orig/board/xaeniax/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xaeniax/CVS/Entries.Old        2009-03-25 15:25:06.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/xaeniax.c/1.1.1.1/Wed Mar 25 22:21:55 2009//
+D
diff -Naur u-boot-2009.03_orig/board/xaeniax/CVS/Repository u-boot-2009.03/board/xaeniax/CVS/Repository
--- u-boot-2009.03_orig/board/xaeniax/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xaeniax/CVS/Repository 2009-03-25 15:25:06.134404000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/xaeniax
diff -Naur u-boot-2009.03_orig/board/xaeniax/CVS/Root u-boot-2009.03/board/xaeniax/CVS/Root
--- u-boot-2009.03_orig/board/xaeniax/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xaeniax/CVS/Root       2009-03-25 15:25:06.134404000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/xes/CVS/Entries u-boot-2009.03/board/xes/CVS/Entries
--- u-boot-2009.03_orig/board/xes/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xes/CVS/Entries        2009-03-25 15:25:06.821899600 -0700
@@ -0,0 +1,3 @@
+D/common////
+D/xpedite5200////
+D/xpedite5370////
diff -Naur u-boot-2009.03_orig/board/xes/CVS/Entries.Extra u-boot-2009.03/board/xes/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/xes/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xes/CVS/Entries.Extra  2009-03-25 15:25:06.837524500 -0700
@@ -0,0 +1,3 @@
+D/common////
+D/xpedite5200////
+D/xpedite5370////
diff -Naur u-boot-2009.03_orig/board/xes/CVS/Repository u-boot-2009.03/board/xes/CVS/Repository
--- u-boot-2009.03_orig/board/xes/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xes/CVS/Repository     2009-03-25 15:25:06.243778300 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/xes
diff -Naur u-boot-2009.03_orig/board/xes/CVS/Root u-boot-2009.03/board/xes/CVS/Root
--- u-boot-2009.03_orig/board/xes/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xes/CVS/Root   2009-03-25 15:25:06.243778300 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/xes/common/CVS/Entries u-boot-2009.03/board/xes/common/CVS/Entries
--- u-boot-2009.03_orig/board/xes/common/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xes/common/CVS/Entries 2009-03-25 15:57:49.434338800 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/actl_nand.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fsl_8572_clk.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fsl_85xx_ddr.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fsl_85xx_pci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/xes/common/CVS/Entries.Extra u-boot-2009.03/board/xes/common/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/xes/common/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xes/common/CVS/Entries.Extra   2009-03-25 15:57:49.449963700 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019715/
+/actl_nand.c///1238019715/
+/fsl_8572_clk.c///1238019715/
+/fsl_85xx_ddr.c///1238019715/
+/fsl_85xx_pci.c///1238019715/
diff -Naur u-boot-2009.03_orig/board/xes/common/CVS/Entries.Extra.Old u-boot-2009.03/board/xes/common/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/xes/common/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xes/common/CVS/Entries.Extra.Old       2009-03-25 15:25:06.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019715/
+/actl_nand.c///1238019715/
+/fsl_8572_clk.c///1238019715/
+/fsl_85xx_ddr.c///1238019715/
+/fsl_85xx_pci.c///1238019715/
diff -Naur u-boot-2009.03_orig/board/xes/common/CVS/Entries.Old u-boot-2009.03/board/xes/common/CVS/Entries.Old
--- u-boot-2009.03_orig/board/xes/common/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xes/common/CVS/Entries.Old     2009-03-25 15:25:06.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/actl_nand.c/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/fsl_8572_clk.c/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/fsl_85xx_ddr.c/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/fsl_85xx_pci.c/1.1.1.1/Wed Mar 25 22:21:55 2009//
+D
diff -Naur u-boot-2009.03_orig/board/xes/common/CVS/Repository u-boot-2009.03/board/xes/common/CVS/Repository
--- u-boot-2009.03_orig/board/xes/common/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xes/common/CVS/Repository      2009-03-25 15:25:06.275028100 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/xes/common
diff -Naur u-boot-2009.03_orig/board/xes/common/CVS/Root u-boot-2009.03/board/xes/common/CVS/Root
--- u-boot-2009.03_orig/board/xes/common/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xes/common/CVS/Root    2009-03-25 15:25:06.275028100 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/xes/xpedite5200/CVS/Entries u-boot-2009.03/board/xes/xpedite5200/CVS/Entries
--- u-boot-2009.03_orig/board/xes/xpedite5200/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xes/xpedite5200/CVS/Entries    2009-03-25 15:57:49.512463300 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ddr.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/law.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tlb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xpedite5200.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/xes/xpedite5200/CVS/Entries.Extra u-boot-2009.03/board/xes/xpedite5200/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/xes/xpedite5200/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xes/xpedite5200/CVS/Entries.Extra      2009-03-25 15:57:49.512463300 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019715/
+/config.mk///1238019715/
+/ddr.c///1238019715/
+/law.c///1238019715/
+/tlb.c///1238019715/
+/u-boot.lds///1238019715/
+/xpedite5200.c///1238019715/
diff -Naur u-boot-2009.03_orig/board/xes/xpedite5200/CVS/Entries.Extra.Old u-boot-2009.03/board/xes/xpedite5200/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/xes/xpedite5200/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xes/xpedite5200/CVS/Entries.Extra.Old  2009-03-25 15:25:06.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019715/
+/config.mk///1238019715/
+/ddr.c///1238019715/
+/law.c///1238019715/
+/tlb.c///1238019715/
+/u-boot.lds///1238019715/
+/xpedite5200.c///1238019715/
diff -Naur u-boot-2009.03_orig/board/xes/xpedite5200/CVS/Entries.Old u-boot-2009.03/board/xes/xpedite5200/CVS/Entries.Old
--- u-boot-2009.03_orig/board/xes/xpedite5200/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xes/xpedite5200/CVS/Entries.Old        2009-03-25 15:25:06.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/ddr.c/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/law.c/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/tlb.c/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/xpedite5200.c/1.1.1.1/Wed Mar 25 22:21:55 2009//
+D
diff -Naur u-boot-2009.03_orig/board/xes/xpedite5200/CVS/Repository u-boot-2009.03/board/xes/xpedite5200/CVS/Repository
--- u-boot-2009.03_orig/board/xes/xpedite5200/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xes/xpedite5200/CVS/Repository 2009-03-25 15:25:06.478151800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/xes/xpedite5200
diff -Naur u-boot-2009.03_orig/board/xes/xpedite5200/CVS/Root u-boot-2009.03/board/xes/xpedite5200/CVS/Root
--- u-boot-2009.03_orig/board/xes/xpedite5200/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xes/xpedite5200/CVS/Root       2009-03-25 15:25:06.478151800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/xes/xpedite5370/CVS/Entries u-boot-2009.03/board/xes/xpedite5370/CVS/Entries
--- u-boot-2009.03_orig/board/xes/xpedite5370/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xes/xpedite5370/CVS/Entries    2009-03-25 15:57:49.590587800 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ddr.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/law.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tlb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xpedite5370.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/xes/xpedite5370/CVS/Entries.Extra u-boot-2009.03/board/xes/xpedite5370/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/xes/xpedite5370/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xes/xpedite5370/CVS/Entries.Extra      2009-03-25 15:57:49.590587800 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019715/
+/config.mk///1238019715/
+/ddr.c///1238019715/
+/law.c///1238019715/
+/tlb.c///1238019715/
+/u-boot.lds///1238019715/
+/xpedite5370.c///1238019715/
diff -Naur u-boot-2009.03_orig/board/xes/xpedite5370/CVS/Entries.Extra.Old u-boot-2009.03/board/xes/xpedite5370/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/xes/xpedite5370/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xes/xpedite5370/CVS/Entries.Extra.Old  2009-03-25 15:25:06.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019715/
+/config.mk///1238019715/
+/ddr.c///1238019715/
+/law.c///1238019715/
+/tlb.c///1238019715/
+/u-boot.lds///1238019715/
+/xpedite5370.c///1238019715/
diff -Naur u-boot-2009.03_orig/board/xes/xpedite5370/CVS/Entries.Old u-boot-2009.03/board/xes/xpedite5370/CVS/Entries.Old
--- u-boot-2009.03_orig/board/xes/xpedite5370/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xes/xpedite5370/CVS/Entries.Old        2009-03-25 15:25:06.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/ddr.c/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/law.c/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/tlb.c/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/xpedite5370.c/1.1.1.1/Wed Mar 25 22:21:55 2009//
+D
diff -Naur u-boot-2009.03_orig/board/xes/xpedite5370/CVS/Repository u-boot-2009.03/board/xes/xpedite5370/CVS/Repository
--- u-boot-2009.03_orig/board/xes/xpedite5370/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xes/xpedite5370/CVS/Repository 2009-03-25 15:25:06.696900400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/xes/xpedite5370
diff -Naur u-boot-2009.03_orig/board/xes/xpedite5370/CVS/Root u-boot-2009.03/board/xes/xpedite5370/CVS/Root
--- u-boot-2009.03_orig/board/xes/xpedite5370/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xes/xpedite5370/CVS/Root       2009-03-25 15:25:06.696900400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/xilinx/CVS/Entries u-boot-2009.03/board/xilinx/CVS/Entries
--- u-boot-2009.03_orig/board/xilinx/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xilinx/CVS/Entries     2009-03-25 15:25:08.259390400 -0700
@@ -0,0 +1,8 @@
+D/common////
+D/microblaze-generic////
+D/ml300////
+D/ml507////
+D/ppc405-generic////
+D/ppc440-generic////
+D/xilinx_enet////
+D/xilinx_iic////
diff -Naur u-boot-2009.03_orig/board/xilinx/CVS/Entries.Extra u-boot-2009.03/board/xilinx/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/xilinx/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xilinx/CVS/Entries.Extra       2009-03-25 15:25:08.259390400 -0700
@@ -0,0 +1,8 @@
+D/common////
+D/microblaze-generic////
+D/ml300////
+D/ml507////
+D/ppc405-generic////
+D/ppc440-generic////
+D/xilinx_enet////
+D/xilinx_iic////
diff -Naur u-boot-2009.03_orig/board/xilinx/CVS/Repository u-boot-2009.03/board/xilinx/CVS/Repository
--- u-boot-2009.03_orig/board/xilinx/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xilinx/CVS/Repository  2009-03-25 15:25:06.868774300 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/xilinx
diff -Naur u-boot-2009.03_orig/board/xilinx/CVS/Root u-boot-2009.03/board/xilinx/CVS/Root
--- u-boot-2009.03_orig/board/xilinx/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xilinx/CVS/Root        2009-03-25 15:25:06.868774300 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/xilinx/common/CVS/Entries u-boot-2009.03/board/xilinx/common/CVS/Entries
--- u-boot-2009.03_orig/board/xilinx/common/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xilinx/common/CVS/Entries      2009-03-31 14:48:17.429767200 -0700
@@ -0,0 +1,16 @@
+/xbasic_types.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xbasic_types.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xbuf_descriptor.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xdma_channel.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xdma_channel.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xdma_channel_i.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xio.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xpacket_fifo_v1_00_b.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xpacket_fifo_v1_00_b.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xstatus.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xversion.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xversion.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xdma_channel_sg.c/1.1.1.1/Tue Mar 31 21:48:17 2009//T1.1.1.1
+/xipif_v1_23_b.c/1.1.1.1/Tue Mar 31 21:48:17 2009//T1.1.1.1
+/xipif_v1_23_b.h/1.1.1.1/Tue Mar 31 21:48:17 2009//T1.1.1.1
+D
diff -Naur u-boot-2009.03_orig/board/xilinx/common/CVS/Entries.Extra u-boot-2009.03/board/xilinx/common/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/xilinx/common/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xilinx/common/CVS/Entries.Extra        2009-03-31 14:48:17.445392000 -0700
@@ -0,0 +1,15 @@
+/xbasic_types.c///1238019715/
+/xbasic_types.h///1238019715/
+/xbuf_descriptor.h///1238019715/
+/xdma_channel.c///1238019715/
+/xdma_channel.h///1238019715/
+/xdma_channel_i.h///1238019715/
+/xio.h///1238019715/
+/xpacket_fifo_v1_00_b.c///1238019715/
+/xpacket_fifo_v1_00_b.h///1238019715/
+/xstatus.h///1238019715/
+/xversion.c///1238019715/
+/xversion.h///1238019715/
+/xdma_channel_sg.c///1238019715/
+/xipif_v1_23_b.c///1238019715/
+/xipif_v1_23_b.h///1238019715/
diff -Naur u-boot-2009.03_orig/board/xilinx/common/CVS/Entries.Extra.Old u-boot-2009.03/board/xilinx/common/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/xilinx/common/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xilinx/common/CVS/Entries.Extra.Old    2009-03-25 17:51:40.000000000 -0700
@@ -0,0 +1,15 @@
+/xbasic_types.c///1238019715/
+/xbasic_types.h///1238019715/
+/xbuf_descriptor.h///1238019715/
+/xdma_channel.c///1238019715/
+/xdma_channel.h///1238019715/
+/xdma_channel_i.h///1238019715/
+/xio.h///1238019715/
+/xpacket_fifo_v1_00_b.c///1238019715/
+/xpacket_fifo_v1_00_b.h///1238019715/
+/xstatus.h///1238019715/
+/xversion.c///1238019715/
+/xversion.h///1238019715/
+/xdma_channel_sg.c///1238028700/
+/xipif_v1_23_b.c///1238028700/
+/xipif_v1_23_b.h///1238028700/
diff -Naur u-boot-2009.03_orig/board/xilinx/common/CVS/Entries.Old u-boot-2009.03/board/xilinx/common/CVS/Entries.Old
--- u-boot-2009.03_orig/board/xilinx/common/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xilinx/common/CVS/Entries.Old  2009-03-25 17:51:40.000000000 -0700
@@ -0,0 +1,16 @@
+/xbasic_types.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xbasic_types.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xbuf_descriptor.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xdma_channel.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xdma_channel.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xdma_channel_i.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xio.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xpacket_fifo_v1_00_b.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xpacket_fifo_v1_00_b.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xstatus.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xversion.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xversion.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xdma_channel_sg.c/1.2/Thu Mar 26 00:51:40 2009//
+/xipif_v1_23_b.c/1.2/Thu Mar 26 00:51:40 2009//
+/xipif_v1_23_b.h/1.2/Thu Mar 26 00:51:40 2009//
+D
diff -Naur u-boot-2009.03_orig/board/xilinx/common/CVS/Repository u-boot-2009.03/board/xilinx/common/CVS/Repository
--- u-boot-2009.03_orig/board/xilinx/common/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xilinx/common/CVS/Repository   2009-03-25 15:25:06.900024100 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/xilinx/common
diff -Naur u-boot-2009.03_orig/board/xilinx/common/CVS/Root u-boot-2009.03/board/xilinx/common/CVS/Root
--- u-boot-2009.03_orig/board/xilinx/common/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xilinx/common/CVS/Root 2009-03-25 15:25:06.900024100 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/xilinx/common/xdma_channel_sg.c u-boot-2009.03/board/xilinx/common/xdma_channel_sg.c
--- u-boot-2009.03_orig/board/xilinx/common/xdma_channel_sg.c   2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/board/xilinx/common/xdma_channel_sg.c        2009-03-31 14:48:17.226644800 -0700
@@ -1,1317 +1,1317 @@
-/* $Id: xdma_channel_sg.c,v 1.6 2003/02/03 19:50:33 moleres Exp $ */
-/******************************************************************************
-*
-*     Author: Xilinx, Inc.
-*
-*
-*     This program is free software; you can redistribute it and/or modify it
-*     under the terms of the GNU General Public License as published by the
-*     Free Software Foundation; either version 2 of the License, or (at your
-*     option) any later version.
-*
-*
-*     XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" AS A
-*     COURTESY TO YOU. BY PROVIDING THIS DESIGN, CODE, OR INFORMATION AS
-*     ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, APPLICATION OR STANDARD,
-*     XILINX IS MAKING NO REPRESENTATION THAT THIS IMPLEMENTATION IS FREE
-*     FROM ANY CLAIMS OF INFRINGEMENT, AND YOU ARE RESPONSIBLE FOR OBTAINING
-*     ANY THIRD PARTY RIGHTS YOU MAY REQUIRE FOR YOUR IMPLEMENTATION.
-*     XILINX EXPRESSLY DISCLAIMS ANY WARRANTY WHATSOEVER WITH RESPECT TO
-*     THE ADEQUACY OF THE IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY
-*     WARRANTIES OR REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM
-*     CLAIMS OF INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND
-*     FITNESS FOR A PARTICULAR PURPOSE.
-*
-*
-*     Xilinx hardware products are not intended for use in life support
-*     appliances, devices, or systems. Use in such applications is
-*     expressly prohibited.
-*
-*
-*     (c) Copyright 2002-2004 Xilinx Inc.
-*     All rights reserved.
-*
-*
-*     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.,
-*     675 Mass Ave, Cambridge, MA 02139, USA.
-*
-* FILENAME:
-*
-* xdma_channel_sg.c
-*
-* DESCRIPTION:
-*
-* This file contains the implementation of the XDmaChannel component which is
-* related to scatter gather operations.
-*
-* Scatter Gather Operations
-*
-* The DMA channel may support scatter gather operations. A scatter gather
-* operation automates the DMA channel such that multiple buffers can be
-* sent or received with minimal software interaction with the hardware.         Buffer
-* descriptors, contained in the XBufDescriptor component, are used by the
-* scatter gather operations of the DMA channel to describe the buffers to be
-* processed.
-*
-* Scatter Gather List Operations
-*
-* A scatter gather list may be supported by each DMA channel.  The scatter
-* gather list allows buffer descriptors to be put into the list by a device
-* driver which requires scatter gather.         The hardware processes the buffer
-* descriptors which are contained in the list and modifies the buffer
-* descriptors to reflect the status of the DMA operations.  The device driver
-* is notified by interrupt that specific DMA events occur including scatter
-* gather events.  The device driver removes the completed buffer descriptors
-* from the scatter gather list to evaluate the status of each DMA operation.
-*
-* The scatter gather list is created and buffer descriptors are inserted into
-* the list.  Buffer descriptors are never removed from the list after it's
-* creation such that a put operation copies from a temporary buffer descriptor
-* to a buffer descriptor in the list.  Get operations don't copy from the list
-* to a temporary, but return a pointer to the buffer descriptor in the list.
-* A buffer descriptor in the list may be locked to prevent it from being
-* overwritten by a put operation.  This allows the device driver to get a
-* descriptor from a scatter gather list and prevent it from being overwritten
-* until the buffer associated with the buffer descriptor has been processed.
-*
-* The get and put functions only operate on the list and are asynchronous from
-* the hardware which may be using the list of descriptors.  This is important
-* because there are no checks in the get and put functions to ensure that the
-* hardware has processed the descriptors.  This must be handled by the driver
-* using the DMA scatter gather channel through the use of the other functions.
-* When a scatter gather operation is started, the start function does ensure
-* that the descriptor to start has not already been processed by the hardware
-* and is not the first of a series of descriptors that have not been committed
-* yet.
-*
-* Descriptors are put into the list but not marked as ready to use by the
-* hardware until a commit operation is done.  This allows multiple descriptors
-* which may contain a single packet of information for a protocol to be
-* guaranteed not to cause any underflow conditions during transmission. The
-* hardware design only allows descriptors to cause it to stop after a descriptor
-* has been processed rather than before it is processed.  A series of
-* descriptors are put into the list followed by a commit operation, or each
-* descriptor may be commited.  A commit operation is performed by changing a
-* single descriptor, the first of the series of puts, to indicate that the
-* hardware may now use all descriptors after it.  The last descriptor in the
-* list is always set to cause the hardware to stop after it is processed.
-*
-* Typical Scatter Gather Processing
-*
-* The following steps illustrate the typical processing to use the
-* scatter gather features of a DMA channel.
-*
-* 1. Create a scatter gather list for the DMA channel which puts empty buffer
-*    descriptors into the list.
-* 2. Create buffer descriptors which describe the buffers to be filled with
-*    receive data or the buffers which contain data to be sent.
-* 3. Put buffer descriptors into the DMA channel scatter list such that scatter
-*    gather operations are requested.
-* 4. Commit the buffer descriptors in the list such that they are ready to be
-*    used by the DMA channel hardware.
-* 5. Start the scatter gather operations of the DMA channel.
-* 6. Process any interrupts which occur as a result of the scatter gather
-*    operations or poll the DMA channel to determine the status.  This may
-*    be accomplished by getting the packet count for the channel and then
-*    getting the appropriate number of descriptors from the list for that
-*    number of packets.
-*
-* Minimizing Interrupts
-*
-* The Scatter Gather operating mode is designed to reduce the amount of CPU
-* throughput necessary to manage the hardware for devices. A key to the CPU
-* throughput is the number and rate of interrupts that the CPU must service.
-* Devices with higher data rates can cause larger numbers of interrupts and
-* higher frequency interrupts. Ideally the number of interrupts can be reduced
-* by only generating an interrupt when a specific amount of data has been
-* received from the interface. This design suffers from a lack of interrupts
-* when the amount of data received is less than the specified amount of data
-* to generate an interrupt. In order to help minimize the number of interrupts
-* which the CPU must service, an algorithm referred to as "interrupt coalescing"
-* is utilized.
-*
-* Interrupt Coalescing
-*
-* The principle of interrupt coalescing is to wait before generating an
-* interrupt until a certain number of packets have been received or sent. An
-* interrupt is also generated if a smaller number of packets have been received
-* followed by a certain period of time with no packet reception. This is a
-* trade-off of latency for bandwidth and is accomplished using several
-* mechanisms of the hardware including a counter for packets received or
-* transmitted and a packet timer. These two hardware mechanisms work in
-* combination to allow a reduction in the number of interrupts processed by the
-* CPU for packet reception.
-*
-* Unserviced Packet Count
-*
-* The purpose of the packet counter is to count the number of packets received
-* or transmitted and provide an interrupt when a specific number of packets
-* have been processed by the hardware. An interrupt is generated whenever the
-* counter is greater than or equal to the Packet Count Threshold. This counter
-* contains an accurate count of the number of packets that the hardware has
-* processed, either received or transmitted, and the software has not serviced.
-*
-* The packet counter allows the number of interrupts to be reduced by waiting
-* to generate an interrupt until enough packets are received. For packet
-* reception, packet counts of less than the number to generate an interrupt
-* would not be serviced without the addition of a packet timer. This counter is
-* continuously updated by the hardware, not latched to the value at the time
-* the interrupt occurred.
-*
-* The packet counter can be used within the interrupt service routine for the
-* device to reduce the number of interrupts. The interrupt service routine
-* loops while performing processing for each packet which has been received or
-* transmitted and decrements the counter by a specified value. At the same time,
-* the hardware is possibly continuing to receive or transmit more packets such
-* that the software may choose, based upon the value in the packet counter, to
-* remain in the interrupt service routine rather than exiting and immediately
-* returning. This feature should be used with caution as reducing the number of
-* interrupts is beneficial, but unbounded interrupt processing is not desirable.
-*
-* Since the hardware may be incrementing the packet counter simultaneously
-* with the software decrementing the counter, there is a need for atomic
-* operations. The hardware ensures that the operation is atomic such that
-* simultaneous accesses are properly handled.
-*
-* Packet Wait Bound
-*
-* The purpose of the packet wait bound is to augment the unserviced packet
-* count. Whenever there is no pending interrupt for the channel and the
-* unserviced packet count is non-zero, a timer starts counting timeout at the
-* value contained the the packet wait bound register.  If the timeout is
-* reached, an interrupt is generated such that the software may service the
-* data which was buffered.
-*
-* NOTES:
-*
-* Special Test Conditions:
-*
-* The scatter gather list processing must be thoroughly tested if changes are
-* made.         Testing should include putting and committing single descriptors and
-* putting multiple descriptors followed by a single commit.  There are some
-* conditions in the code which handle the exception conditions.
-*
-* The Put Pointer points to the next location in the descriptor list to copy
-* in a new descriptor. The Get Pointer points to the next location in the
-* list to get a descriptor from.  The Get Pointer only allows software to
-* have a traverse the list after the hardware has finished processing some
-* number of descriptors.  The Commit Pointer points to the descriptor in the
-* list which is to be committed.  It is also used to determine that no
-* descriptor is waiting to be commited (NULL). The Last Pointer points to
-* the last descriptor that was put into the list.  It typically points
-* to the previous descriptor to the one pointed to by the Put Pointer.
-* Comparisons are done between these pointers to determine when the following
-* special conditions exist.
-
-* Single Put And Commit
-*
-* The buffer descriptor is ready to be used by the hardware so it is important
-* for the descriptor to not appear to be waiting to be committed.  The commit
-* pointer is reset when a commit is done indicating there are no descriptors
-* waiting to be committed.  In all cases but this one, the descriptor is
-* changed to cause the hardware to go to the next descriptor after processing
-* this one.  But in this case, this is the last descriptor in the list such
-* that it must not be changed.
-*
-* 3 Or More Puts And Commit
-*
-* A series of 3 or more puts followed by a single commit is different in that
-* only the 1st descriptor put into the list is changed when the commit is done.
-* This requires each put starting on the 3rd to change the previous descriptor
-* so that it allows the hardware to continue to the next descriptor in the list.
-*
-* The 1st Put Following A Commit
-*
-* The commit caused the commit pointer to be NULL indicating that there are no
-* descriptors waiting to be committed. It is necessary for the next put to set
-* the commit pointer so that a commit must follow the put for the hardware to
-* use the descriptor.
-*
-* <pre>
-* MODIFICATION HISTORY:
-*
-* Ver  Who  Date     Changes
-* ----- ---- -------- ------------------------------------------------------
-* 1.00a rpm  02/03/03 Removed the XST_DMA_SG_COUNT_EXCEEDED return code
-*                    from SetPktThreshold.
-* </pre>
-*
-******************************************************************************/
-
-/***************************** Include Files *********************************/
-
-#include "xdma_channel.h"
-#include "xbasic_types.h"
-#include "xio.h"
-#include "xbuf_descriptor.h"
-#include "xstatus.h"
-
-/************************** Constant Definitions *****************************/
-
-#define XDC_SWCR_SG_ENABLE_MASK 0x80000000UL   /* scatter gather enable */
-
-/**************************** Type Definitions *******************************/
-
-/***************** Macros (Inline Functions) Definitions *********************/
-
-/* the following macro copies selected fields of a buffer descriptor to another
- * buffer descriptor, this was provided by the buffer descriptor component but
- * was moved here since it is only used internally to this component and since
- * it does not copy all fields
- */
-#define CopyBufferDescriptor(InstancePtr, DestinationPtr)         \
-{                                                                 \
-    *((u32 *)DestinationPtr + XBD_CONTROL_OFFSET) =           \
-       *((u32 *)InstancePtr + XBD_CONTROL_OFFSET);            \
-    *((u32 *)DestinationPtr + XBD_SOURCE_OFFSET) =            \
-       *((u32 *)InstancePtr + XBD_SOURCE_OFFSET);             \
-    *((u32 *)DestinationPtr + XBD_DESTINATION_OFFSET) =               \
-       *((u32 *)InstancePtr + XBD_DESTINATION_OFFSET);        \
-    *((u32 *)DestinationPtr + XBD_LENGTH_OFFSET) =            \
-       *((u32 *)InstancePtr + XBD_LENGTH_OFFSET);             \
-    *((u32 *)DestinationPtr + XBD_STATUS_OFFSET) =            \
-       *((u32 *)InstancePtr + XBD_STATUS_OFFSET);             \
-    *((u32 *)DestinationPtr + XBD_DEVICE_STATUS_OFFSET) =      \
-       *((u32 *)InstancePtr + XBD_DEVICE_STATUS_OFFSET);      \
-    *((u32 *)DestinationPtr + XBD_ID_OFFSET) =                \
-       *((u32 *)InstancePtr + XBD_ID_OFFSET);                 \
-    *((u32 *)DestinationPtr + XBD_FLAGS_OFFSET) =             \
-       *((u32 *)InstancePtr + XBD_FLAGS_OFFSET);              \
-    *((u32 *)DestinationPtr + XBD_RQSTED_LENGTH_OFFSET) =      \
-       *((u32 *)InstancePtr + XBD_RQSTED_LENGTH_OFFSET);      \
-}
-
-/************************** Variable Definitions *****************************/
-
-/************************** Function Prototypes ******************************/
-
-/******************************************************************************
-*
-* FUNCTION:
-*
-* XDmaChannel_SgStart
-*
-* DESCRIPTION:
-*
-* This function starts a scatter gather operation for a scatter gather
-* DMA channel. The first buffer descriptor in the buffer descriptor list
-* will be started with the scatter gather operation.  A scatter gather list
-* should have previously been created for the DMA channel and buffer
-* descriptors put into the scatter gather list such that there are scatter
-* operations ready to be performed.
-*
-* ARGUMENTS:
-*
-* InstancePtr contains a pointer to the DMA channel to operate on.  The DMA
-* channel should be configured to use scatter gather in order for this function
-* to be called.
-*
-* RETURN VALUE:
-*
-* A status containing XST_SUCCESS if scatter gather was started successfully
-* for the DMA channel.
-*
-* A value of XST_DMA_SG_NO_LIST indicates the scatter gather list has not
-* been created.
-*
-* A value of XST_DMA_SG_LIST_EMPTY indicates scatter gather was not started
-* because the scatter gather list of the DMA channel does not contain any
-* buffer descriptors that are ready to be processed by the hardware.
-*
-* A value of XST_DMA_SG_IS_STARTED indicates scatter gather was not started
-* because the scatter gather was not stopped, but was already started.
-*
-* A value of XST_DMA_SG_BD_NOT_COMMITTED indicates the buffer descriptor of
-* scatter gather list which was to be started is not committed to the list.
-* This status is more likely if this function is being called from an ISR
-* and non-ISR processing is putting descriptors into the list.
-*
-* A value of XST_DMA_SG_NO_DATA indicates that the buffer descriptor of the
-* scatter gather list which was to be started had already been used by the
-* hardware for a DMA transfer that has been completed.
-*
-* NOTES:
-*
-* It is the responsibility of the caller to get all the buffer descriptors
-* after performing a stop operation and before performing a start operation.
-* If buffer descriptors are not retrieved between stop and start operations,
-* buffer descriptors may be processed by the hardware more than once.
-*
-******************************************************************************/
-XStatus
-XDmaChannel_SgStart(XDmaChannel * InstancePtr)
-{
-       u32 Register;
-       XBufDescriptor *LastDescriptorPtr;
-
-       /* assert to verify input arguments */
-
-       XASSERT_NONVOID(InstancePtr != NULL);
-       XASSERT_NONVOID(InstancePtr->IsReady == XCOMPONENT_IS_READY);
-
-       /* if a scatter gather list has not been created yet, return a status */
-
-       if (InstancePtr->TotalDescriptorCount == 0) {
-               return XST_DMA_SG_NO_LIST;
-       }
-
-       /* if the scatter gather list exists but is empty then return a status */
-
-       if (XDmaChannel_IsSgListEmpty(InstancePtr)) {
-               return XST_DMA_SG_LIST_EMPTY;
-       }
-
-       /* if scatter gather is busy for the DMA channel, return a status because
-        * restarting it could lose data
-        */
-
-       Register = XIo_In32(InstancePtr->RegBaseAddress + XDC_DMAS_REG_OFFSET);
-       if (Register & XDC_DMASR_SG_BUSY_MASK) {
-               return XST_DMA_SG_IS_STARTED;
-       }
-
-       /* get the address of the last buffer descriptor which the DMA hardware
-        * finished processing
-        */
-       LastDescriptorPtr =
-           (XBufDescriptor *) XIo_In32(InstancePtr->RegBaseAddress +
-                                       XDC_BDA_REG_OFFSET);
-
-       /* setup the first buffer descriptor that will be sent when the scatter
-        * gather channel is enabled, this is only necessary one time since
-        * the BDA register of the channel maintains the last buffer descriptor
-        * processed
-        */
-       if (LastDescriptorPtr == NULL) {
-               XIo_Out32(InstancePtr->RegBaseAddress + XDC_BDA_REG_OFFSET,
-                         (u32) InstancePtr->GetPtr);
-       } else {
-               XBufDescriptor *NextDescriptorPtr;
-
-               /* get the next descriptor to be started, if the status indicates it
-                * hasn't already been used by the h/w, then it's OK to start it,
-                * s/w sets the status of each descriptor to busy and then h/w clears
-                * the busy when it is complete
-                */
-               NextDescriptorPtr =
-                   XBufDescriptor_GetNextPtr(LastDescriptorPtr);
-
-               if ((XBufDescriptor_GetStatus(NextDescriptorPtr) &
-                    XDC_DMASR_BUSY_MASK) == 0) {
-                       return XST_DMA_SG_NO_DATA;
-               }
-               /* don't start the DMA SG channel if the descriptor to be processed
-                * by h/w is to be committed by the s/w, this function can be called
-                * such that it interrupts a thread that was putting into the list
-                */
-               if (NextDescriptorPtr == InstancePtr->CommitPtr) {
-                       return XST_DMA_SG_BD_NOT_COMMITTED;
-               }
-       }
-
-       /* start the scatter gather operation by clearing the stop bit in the
-        * control register and setting the enable bit in the s/w control register,
-        * both of these are necessary to cause it to start, right now the order of
-        * these statements is important, the software control register should be
-        * set 1st.  The other order can cause the CPU to have a loss of sync
-        * because it cannot read/write the register while the DMA operation is
-        * running
-        */
-
-       Register = XIo_In32(InstancePtr->RegBaseAddress + XDC_SWCR_REG_OFFSET);
-
-       XIo_Out32(InstancePtr->RegBaseAddress + XDC_SWCR_REG_OFFSET,
-                 Register | XDC_SWCR_SG_ENABLE_MASK);
-
-       Register = XIo_In32(InstancePtr->RegBaseAddress + XDC_DMAC_REG_OFFSET);
-
-       XIo_Out32(InstancePtr->RegBaseAddress + XDC_DMAC_REG_OFFSET,
-                 Register & ~XDC_DMACR_SG_DISABLE_MASK);
-
-       /* indicate the DMA channel scatter gather operation was started
-        * successfully
-        */
-       return XST_SUCCESS;
-}
-
-/******************************************************************************
-*
-* FUNCTION:
-*
-* XDmaChannel_SgStop
-*
-* DESCRIPTION:
-*
-* This function stops a scatter gather operation for a scatter gather
-* DMA channel. This function starts the process of stopping a scatter
-* gather operation that is in progress and waits for the stop to be completed.
-* Since it waits for the operation to stopped before returning, this function
-* could take an amount of time relative to the size of the DMA scatter gather
-* operation which is in progress.  The scatter gather list of the DMA channel
-* is not modified by this function such that starting the scatter gather
-* channel after stopping it will cause it to resume.  This operation is
-* considered to be a graceful stop in that the scatter gather operation
-* completes the current buffer descriptor before stopping.
-*
-* If the interrupt is enabled, an interrupt will be generated when the
-* operation is stopped and the caller is responsible for handling the
-* interrupt.
-*
-* ARGUMENTS:
-*
-* InstancePtr contains a pointer to the DMA channel to operate on.  The DMA
-* channel should be configured to use scatter gather in order for this function
-* to be called.
-*
-* BufDescriptorPtr is also a return value which contains a pointer to the
-* buffer descriptor which the scatter gather operation completed when it
-* was stopped.
-*
-* RETURN VALUE:
-*
-* A status containing XST_SUCCESS if scatter gather was stopped successfully
-* for the DMA channel.
-*
-* A value of XST_DMA_SG_IS_STOPPED indicates scatter gather was not stoppped
-* because the scatter gather is not started, but was already stopped.
-*
-* BufDescriptorPtr contains a pointer to the buffer descriptor which was
-* completed when the operation was stopped.
-*
-* NOTES:
-*
-* This function implements a loop which polls the hardware for an infinite
-* amount of time. If the hardware is not operating correctly, this function
-* may never return.
-*
-******************************************************************************/
-XStatus
-XDmaChannel_SgStop(XDmaChannel * InstancePtr,
-                  XBufDescriptor ** BufDescriptorPtr)
-{
-       u32 Register;
-
-       /* assert to verify input arguments */
-
-       XASSERT_NONVOID(InstancePtr != NULL);
-       XASSERT_NONVOID(BufDescriptorPtr != NULL);
-       XASSERT_NONVOID(InstancePtr->IsReady == XCOMPONENT_IS_READY);
-
-       /* get the contents of the software control register, if scatter gather is not
-        * enabled (started), then return a status because the disable acknowledge
-        * would not be generated
-        */
-       Register = XIo_In32(InstancePtr->RegBaseAddress + XDC_SWCR_REG_OFFSET);
-
-       if ((Register & XDC_SWCR_SG_ENABLE_MASK) == 0) {
-               return XST_DMA_SG_IS_STOPPED;
-       }
-
-       /* Ensure the interrupt status for the scatter gather is cleared such
-        * that this function will wait til the disable has occurred, writing
-        * a 1 to only that bit in the register will clear only it
-        */
-       XIo_Out32(InstancePtr->RegBaseAddress + XDC_IS_REG_OFFSET,
-                 XDC_IXR_SG_DISABLE_ACK_MASK);
-
-       /* disable scatter gather by writing to the software control register
-        * without modifying any other bits of the register
-        */
-       XIo_Out32(InstancePtr->RegBaseAddress + XDC_SWCR_REG_OFFSET,
-                 Register & ~XDC_SWCR_SG_ENABLE_MASK);
-
-       /* scatter gather does not disable immediately, but after the current
-        * buffer descriptor is complete, so wait for the DMA channel to indicate
-        * the disable is complete
-        */
-       do {
-               Register =
-                   XIo_In32(InstancePtr->RegBaseAddress + XDC_IS_REG_OFFSET);
-       } while ((Register & XDC_IXR_SG_DISABLE_ACK_MASK) == 0);
-
-       /* Ensure the interrupt status for the scatter gather disable is cleared,
-        * writing a 1 to only that bit in the register will clear only it
-        */
-       XIo_Out32(InstancePtr->RegBaseAddress + XDC_IS_REG_OFFSET,
-                 XDC_IXR_SG_DISABLE_ACK_MASK);
-
-       /* set the specified buffer descriptor pointer to point to the buffer
-        * descriptor that the scatter gather DMA channel was processing
-        */
-       *BufDescriptorPtr =
-           (XBufDescriptor *) XIo_In32(InstancePtr->RegBaseAddress +
-                                       XDC_BDA_REG_OFFSET);
-
-       return XST_SUCCESS;
-}
-
-/******************************************************************************
-*
-* FUNCTION:
-*
-* XDmaChannel_CreateSgList
-*
-* DESCRIPTION:
-*
-* This function creates a scatter gather list in the DMA channel.  A scatter
-* gather list consists of a list of buffer descriptors that are available to
-* be used for scatter gather operations.  Buffer descriptors are put into the
-* list to request a scatter gather operation to be performed.
-*
-* A number of buffer descriptors are created from the specified memory and put
-* into a buffer descriptor list as empty buffer descriptors. This function must
-* be called before non-empty buffer descriptors may be put into the DMA channel
-* to request scatter gather operations.
-*
-* ARGUMENTS:
-*
-* InstancePtr contains a pointer to the DMA channel to operate on.  The DMA
-* channel should be configured to use scatter gather in order for this function
-* to be called.
-*
-* MemoryPtr contains a pointer to the memory which is to be used for buffer
-* descriptors and must not be cached.
-*
-* ByteCount contains the number of bytes for the specified memory to be used
-* for buffer descriptors.
-*
-* RETURN VALUE:
-*
-* A status contains XST_SUCCESS if the scatter gather list was successfully
-* created.
-*
-* A value of XST_DMA_SG_LIST_EXISTS indicates that the scatter gather list
-* was not created because the list has already been created.
-*
-* NOTES:
-*
-* None.
-*
-******************************************************************************/
-XStatus
-XDmaChannel_CreateSgList(XDmaChannel * InstancePtr,
-                        u32 * MemoryPtr, u32 ByteCount)
-{
-       XBufDescriptor *BufferDescriptorPtr = (XBufDescriptor *) MemoryPtr;
-       XBufDescriptor *PreviousDescriptorPtr = NULL;
-       XBufDescriptor *StartOfListPtr = BufferDescriptorPtr;
-       u32 UsedByteCount;
-
-       /* assert to verify valid input arguments, alignment for those
-        * arguments that have alignment restrictions, and at least enough
-        * memory for one buffer descriptor
-        */
-       XASSERT_NONVOID(InstancePtr != NULL);
-       XASSERT_NONVOID(MemoryPtr != NULL);
-       XASSERT_NONVOID(((u32) MemoryPtr & 3) == 0);
-       XASSERT_NONVOID(ByteCount != 0);
-       XASSERT_NONVOID(ByteCount >= sizeof (XBufDescriptor));
-       XASSERT_NONVOID(InstancePtr->IsReady == XCOMPONENT_IS_READY);
-
-       /* if the scatter gather list has already been created, then return
-        * with a status
-        */
-       if (InstancePtr->TotalDescriptorCount != 0) {
-               return XST_DMA_SG_LIST_EXISTS;
-       }
-
-       /* loop thru the specified memory block and create as many buffer
-        * descriptors as possible putting each into the list which is
-        * implemented as a ring buffer, make sure not to use any memory which
-        * is not large enough for a complete buffer descriptor
-        */
-       UsedByteCount = 0;
-       while ((UsedByteCount + sizeof (XBufDescriptor)) <= ByteCount) {
-               /* setup a pointer to the next buffer descriptor in the memory and
-                * update # of used bytes to know when all of memory is used
-                */
-               BufferDescriptorPtr = (XBufDescriptor *) ((u32) MemoryPtr +
-                                                         UsedByteCount);
-
-               /* initialize the new buffer descriptor such that it doesn't contain
-                * garbage which could be used by the DMA hardware
-                */
-               XBufDescriptor_Initialize(BufferDescriptorPtr);
-
-               /* if this is not the first buffer descriptor to be created,
-                * then link it to the last created buffer descriptor
-                */
-               if (PreviousDescriptorPtr != NULL) {
-                       XBufDescriptor_SetNextPtr(PreviousDescriptorPtr,
-                                                 BufferDescriptorPtr);
-               }
-
-               /* always keep a pointer to the last created buffer descriptor such
-                * that they can be linked together in the ring buffer
-                */
-               PreviousDescriptorPtr = BufferDescriptorPtr;
-
-               /* keep a count of the number of descriptors in the list to allow
-                * error processing to be performed
-                */
-               InstancePtr->TotalDescriptorCount++;
-
-               UsedByteCount += sizeof (XBufDescriptor);
-       }
-
-       /* connect the last buffer descriptor created and inserted in the list
-        * to the first such that a ring buffer is created
-        */
-       XBufDescriptor_SetNextPtr(BufferDescriptorPtr, StartOfListPtr);
-
-       /* initialize the ring buffer to indicate that there are no
-        * buffer descriptors in the list which point to valid data buffers
-        */
-       InstancePtr->PutPtr = BufferDescriptorPtr;
-       InstancePtr->GetPtr = BufferDescriptorPtr;
-       InstancePtr->CommitPtr = NULL;
-       InstancePtr->LastPtr = BufferDescriptorPtr;
-       InstancePtr->ActiveDescriptorCount = 0;
-
-       /* indicate the scatter gather list was successfully created */
-
-       return XST_SUCCESS;
-}
-
-/******************************************************************************
-*
-* FUNCTION:
-*
-* XDmaChannel_IsSgListEmpty
-*
-* DESCRIPTION:
-*
-* This function determines if the scatter gather list of a DMA channel is
-* empty with regard to buffer descriptors which are pointing to buffers to be
-* used for scatter gather operations.
-*
-* ARGUMENTS:
-*
-* InstancePtr contains a pointer to the DMA channel to operate on.  The DMA
-* channel should be configured to use scatter gather in order for this function
-* to be called.
-*
-* RETURN VALUE:
-*
-* A value of TRUE if the scatter gather list is empty, otherwise a value of
-* FALSE.
-*
-* NOTES:
-*
-* None.
-*
-******************************************************************************/
-u32
-XDmaChannel_IsSgListEmpty(XDmaChannel * InstancePtr)
-{
-       /* assert to verify valid input arguments */
-
-       XASSERT_NONVOID(InstancePtr != NULL);
-       XASSERT_NONVOID(InstancePtr->IsReady == XCOMPONENT_IS_READY);
-
-       /* if the number of descriptors which are being used in the list is zero
-        * then the list is empty
-        */
-       return (InstancePtr->ActiveDescriptorCount == 0);
-}
-
-/******************************************************************************
-*
-* FUNCTION:
-*
-* XDmaChannel_PutDescriptor
-*
-* DESCRIPTION:
-*
-* This function puts a buffer descriptor into the DMA channel scatter
-* gather list. A DMA channel maintains a list of buffer descriptors which are
-* to be processed.  This function puts the specified buffer descriptor
-* at the next location in the list.  Note that since the list is already intact,
-* the information in the parameter is copied into the list (rather than modify
-* list pointers on the fly).
-*
-* After buffer descriptors are put into the list, they must also be committed
-* by calling another function. This allows multiple buffer descriptors which
-* span a single packet to be put into the list while preventing the hardware
-* from starting the first buffer descriptor of the packet.
-*
-* ARGUMENTS:
-*
-* InstancePtr contains a pointer to the DMA channel to operate on.  The DMA
-* channel should be configured to use scatter gather in order for this function
-* to be called.
-*
-* BufferDescriptorPtr is a pointer to the buffer descriptor to be put into
-* the next available location of the scatter gather list.
-*
-* RETURN VALUE:
-*
-* A status which indicates XST_SUCCESS if the buffer descriptor was
-* successfully put into the scatter gather list.
-*
-* A value of XST_DMA_SG_NO_LIST indicates the scatter gather list has not
-* been created.
-*
-* A value of XST_DMA_SG_LIST_FULL indicates the buffer descriptor was not
-* put into the list because the list was full.
-*
-* A value of XST_DMA_SG_BD_LOCKED indicates the buffer descriptor was not
-* put into the list because the buffer descriptor in the list which is to
-* be overwritten was locked.  A locked buffer descriptor indicates the higher
-* layered software is still using the buffer descriptor.
-*
-* NOTES:
-*
-* It is necessary to create a scatter gather list for a DMA channel before
-* putting buffer descriptors into it.
-*
-******************************************************************************/
-XStatus
-XDmaChannel_PutDescriptor(XDmaChannel * InstancePtr,
-                         XBufDescriptor * BufferDescriptorPtr)
-{
-       u32 Control;
-
-       /* assert to verify valid input arguments and alignment for those
-        * arguments that have alignment restrictions
-        */
-       XASSERT_NONVOID(InstancePtr != NULL);
-       XASSERT_NONVOID(BufferDescriptorPtr != NULL);
-       XASSERT_NONVOID(((u32) BufferDescriptorPtr & 3) == 0);
-       XASSERT_NONVOID(InstancePtr->IsReady == XCOMPONENT_IS_READY);
-
-       /* if a scatter gather list has not been created yet, return a status */
-
-       if (InstancePtr->TotalDescriptorCount == 0) {
-               return XST_DMA_SG_NO_LIST;
-       }
-
-       /* if the list is full because all descriptors are pointing to valid
-        * buffers, then indicate an error, this code assumes no list or an
-        * empty list is detected above
-        */
-       if (InstancePtr->ActiveDescriptorCount ==
-           InstancePtr->TotalDescriptorCount) {
-               return XST_DMA_SG_LIST_FULL;
-       }
-
-       /* if the buffer descriptor in the list which is to be overwritten is
-        * locked, then don't overwrite it and return a status
-        */
-       if (XBufDescriptor_IsLocked(InstancePtr->PutPtr)) {
-               return XST_DMA_SG_BD_LOCKED;
-       }
-
-       /* set the scatter gather stop bit in the control word of the descriptor
-        * to cause the h/w to stop after it processes this descriptor since it
-        * will be the last in the list
-        */
-       Control = XBufDescriptor_GetControl(BufferDescriptorPtr);
-       XBufDescriptor_SetControl(BufferDescriptorPtr,
-                                 Control | XDC_DMACR_SG_DISABLE_MASK);
-
-       /* set both statuses in the descriptor so we tell if they are updated with
-        * the status of the transfer, the hardware should change the busy in the
-        * DMA status to be false when it completes
-        */
-       XBufDescriptor_SetStatus(BufferDescriptorPtr, XDC_DMASR_BUSY_MASK);
-       XBufDescriptor_SetDeviceStatus(BufferDescriptorPtr, 0);
-
-       /* copy the descriptor into the next position in the list so it's ready to
-        * be used by the h/w, this assumes the descriptor in the list prior to this
-        * one still has the stop bit in the control word set such that the h/w
-        * use this one yet
-        */
-       CopyBufferDescriptor(BufferDescriptorPtr, InstancePtr->PutPtr);
-
-       /* only the last in the list and the one to be committed have scatter gather
-        * disabled in the control word, a commit requires only one descriptor
-        * to be changed, when # of descriptors to commit > 2 all others except the
-        * 1st and last have scatter gather enabled
-        */
-       if ((InstancePtr->CommitPtr != InstancePtr->LastPtr) &&
-           (InstancePtr->CommitPtr != NULL)) {
-               Control = XBufDescriptor_GetControl(InstancePtr->LastPtr);
-               XBufDescriptor_SetControl(InstancePtr->LastPtr,
-                                         Control & ~XDC_DMACR_SG_DISABLE_MASK);
-       }
-
-       /* update the list data based upon putting a descriptor into the list,
-        * these operations must be last
-        */
-       InstancePtr->ActiveDescriptorCount++;
-
-       /* only update the commit pointer if it is not already active, this allows
-        * it to be deactivated after every commit such that a single descriptor
-        * which is committed does not appear to be waiting to be committed
-        */
-       if (InstancePtr->CommitPtr == NULL) {
-               InstancePtr->CommitPtr = InstancePtr->LastPtr;
-       }
-
-       /* these updates MUST BE LAST after the commit pointer update in order for
-        * the commit pointer to track the correct descriptor to be committed
-        */
-       InstancePtr->LastPtr = InstancePtr->PutPtr;
-       InstancePtr->PutPtr = XBufDescriptor_GetNextPtr(InstancePtr->PutPtr);
-
-       return XST_SUCCESS;
-}
-
-/******************************************************************************
-*
-* FUNCTION:
-*
-* XDmaChannel_CommitPuts
-*
-* DESCRIPTION:
-*
-* This function commits the buffer descriptors which have been put into the
-* scatter list for the DMA channel since the last commit operation was
-* performed.  This enables the calling functions to put several buffer
-* descriptors into the list (e.g.,a packet's worth) before allowing the scatter
-* gather operations to start.  This prevents the DMA channel hardware from
-* starting to use the buffer descriptors in the list before they are ready
-* to be used (multiple buffer descriptors for a single packet).
-*
-* ARGUMENTS:
-*
-* InstancePtr contains a pointer to the DMA channel to operate on.  The DMA
-* channel should be configured to use scatter gather in order for this function
-* to be called.
-*
-* RETURN VALUE:
-*
-* A status indicating XST_SUCCESS if the buffer descriptors of the list were
-* successfully committed.
-*
-* A value of XST_DMA_SG_NOTHING_TO_COMMIT indicates that the buffer descriptors
-* were not committed because there was nothing to commit in the list.  All the
-* buffer descriptors which are in the list are commited.
-*
-* NOTES:
-*
-* None.
-*
-******************************************************************************/
-XStatus
-XDmaChannel_CommitPuts(XDmaChannel * InstancePtr)
-{
-       /* assert to verify input arguments */
-
-       XASSERT_NONVOID(InstancePtr != NULL);
-       XASSERT_NONVOID(InstancePtr->IsReady == XCOMPONENT_IS_READY);
-
-       /* if the buffer descriptor to be committed is already committed or
-        * the list is empty (none have been put in), then indicate an error
-        */
-       if ((InstancePtr->CommitPtr == NULL) ||
-           XDmaChannel_IsSgListEmpty(InstancePtr)) {
-               return XST_DMA_SG_NOTHING_TO_COMMIT;
-       }
-
-       /* last descriptor in the list must have scatter gather disabled so the end
-        * of the list is hit by h/w, if descriptor to commit is not last in list,
-        * commit descriptors by enabling scatter gather in the descriptor
-        */
-       if (InstancePtr->CommitPtr != InstancePtr->LastPtr) {
-               u32 Control;
-
-               Control = XBufDescriptor_GetControl(InstancePtr->CommitPtr);
-               XBufDescriptor_SetControl(InstancePtr->CommitPtr, Control &
-                                         ~XDC_DMACR_SG_DISABLE_MASK);
-       }
-       /* Update the commit pointer to indicate that there is nothing to be
-        * committed, this state is used by start processing to know that the
-        * buffer descriptor to start is not waiting to be committed
-        */
-       InstancePtr->CommitPtr = NULL;
-
-       return XST_SUCCESS;
-}
-
-/******************************************************************************
-*
-* FUNCTION:
-*
-* XDmaChannel_GetDescriptor
-*
-* DESCRIPTION:
-*
-* This function gets a buffer descriptor from the scatter gather list of the
-* DMA channel. The buffer descriptor is retrieved from the scatter gather list
-* and the scatter gather list is updated to not include the retrieved buffer
-* descriptor.  This is typically done after a scatter gather operation
-* completes indicating that a data buffer has been successfully sent or data
-* has been received into the data buffer. The purpose of this function is to
-* allow the device using the scatter gather operation to get the results of the
-* operation.
-*
-* ARGUMENTS:
-*
-* InstancePtr contains a pointer to the DMA channel to operate on.  The DMA
-* channel should be configured to use scatter gather in order for this function
-* to be called.
-*
-* BufDescriptorPtr is a pointer to a pointer to the buffer descriptor which
-* was retrieved from the list. The buffer descriptor is not really removed
-* from the list, but it is changed to a state such that the hardware will not
-* use it again until it is put into the scatter gather list of the DMA channel.
-*
-* RETURN VALUE:
-*
-* A status indicating XST_SUCCESS if a buffer descriptor was retrieved from
-* the scatter gather list of the DMA channel.
-*
-* A value of XST_DMA_SG_NO_LIST indicates the scatter gather list has not
-* been created.
-*
-* A value of XST_DMA_SG_LIST_EMPTY indicates no buffer descriptor was
-* retrieved from the list because there are no buffer descriptors to be
-* processed in the list.
-*
-* BufDescriptorPtr is updated to point to the buffer descriptor which was
-* retrieved from the list if the status indicates success.
-*
-* NOTES:
-*
-* None.
-*
-******************************************************************************/
-XStatus
-XDmaChannel_GetDescriptor(XDmaChannel * InstancePtr,
-                         XBufDescriptor ** BufDescriptorPtr)
-{
-       u32 Control;
-
-       /* assert to verify input arguments */
-
-       XASSERT_NONVOID(InstancePtr != NULL);
-       XASSERT_NONVOID(BufDescriptorPtr != NULL);
-       XASSERT_NONVOID(InstancePtr->IsReady == XCOMPONENT_IS_READY);
-
-       /* if a scatter gather list has not been created yet, return a status */
-
-       if (InstancePtr->TotalDescriptorCount == 0) {
-               return XST_DMA_SG_NO_LIST;
-       }
-
-       /* if the buffer descriptor list is empty, then indicate an error */
-
-       if (XDmaChannel_IsSgListEmpty(InstancePtr)) {
-               return XST_DMA_SG_LIST_EMPTY;
-       }
-
-       /* retrieve the next buffer descriptor which is ready to be processed from
-        * the buffer descriptor list for the DMA channel, set the control word
-        * such that hardware will stop after the descriptor has been processed
-        */
-       Control = XBufDescriptor_GetControl(InstancePtr->GetPtr);
-       XBufDescriptor_SetControl(InstancePtr->GetPtr,
-                                 Control | XDC_DMACR_SG_DISABLE_MASK);
-
-       /* set the input argument, which is also an output, to point to the
-        * buffer descriptor which is to be retrieved from the list
-        */
-       *BufDescriptorPtr = InstancePtr->GetPtr;
-
-       /* update the pointer of the DMA channel to reflect the buffer descriptor
-        * was retrieved from the list by setting it to the next buffer descriptor
-        * in the list and indicate one less descriptor in the list now
-        */
-       InstancePtr->GetPtr = XBufDescriptor_GetNextPtr(InstancePtr->GetPtr);
-       InstancePtr->ActiveDescriptorCount--;
-
-       return XST_SUCCESS;
-}
-
-/*********************** Interrupt Collescing Functions **********************/
-
-/******************************************************************************
-*
-* FUNCTION:
-*
-* XDmaChannel_GetPktCount
-*
-* DESCRIPTION:
-*
-* This function returns the value of the unserviced packet count register of
-* the DMA channel.  This count represents the number of packets that have been
-* sent or received by the hardware, but not processed by software.
-*
-* ARGUMENTS:
-*
-* InstancePtr contains a pointer to the DMA channel to operate on.  The DMA
-* channel should be configured to use scatter gather in order for this function
-* to be called.
-*
-* RETURN VALUE:
-*
-* The unserviced packet counter register contents for the DMA channel.
-*
-* NOTES:
-*
-* None.
-*
-******************************************************************************/
-u32
-XDmaChannel_GetPktCount(XDmaChannel * InstancePtr)
-{
-       /* assert to verify input arguments */
-
-       XASSERT_NONVOID(InstancePtr != NULL);
-       XASSERT_NONVOID(InstancePtr->IsReady == XCOMPONENT_IS_READY);
-
-       /* get the unserviced packet count from the register and return it */
-
-       return XIo_In32(InstancePtr->RegBaseAddress + XDC_UPC_REG_OFFSET);
-}
-
-/******************************************************************************
-*
-* FUNCTION:
-*
-* XDmaChannel_DecrementPktCount
-*
-* DESCRIPTION:
-*
-* This function decrements the value of the unserviced packet count register.
-* This informs the hardware that the software has processed a packet.  The
-* unserviced packet count register may only be decremented by one in the
-* hardware.
-*
-* ARGUMENTS:
-*
-* InstancePtr contains a pointer to the DMA channel to operate on.  The DMA
-* channel should be configured to use scatter gather in order for this function
-* to be called.
-*
-* RETURN VALUE:
-*
-* None.
-*
-* NOTES:
-*
-* None.
-*
-******************************************************************************/
-void
-XDmaChannel_DecrementPktCount(XDmaChannel * InstancePtr)
-{
-       u32 Register;
-
-       /* assert to verify input arguments */
-
-       XASSERT_VOID(InstancePtr != NULL);
-       XASSERT_VOID(InstancePtr->IsReady == XCOMPONENT_IS_READY);
-
-       /* if the unserviced packet count register can be decremented (rather
-        * than rolling over) decrement it by writing a 1 to the register,
-        * this is the only valid write to the register as it serves as an
-        * acknowledge that a packet was handled by the software
-        */
-       Register = XIo_In32(InstancePtr->RegBaseAddress + XDC_UPC_REG_OFFSET);
-       if (Register > 0) {
-               XIo_Out32(InstancePtr->RegBaseAddress + XDC_UPC_REG_OFFSET,
-                         1UL);
-       }
-}
-
-/******************************************************************************
-*
-* FUNCTION:
-*
-* XDmaChannel_SetPktThreshold
-*
-* DESCRIPTION:
-*
-* This function sets the value of the packet count threshold register of the
-* DMA channel. It reflects the number of packets that must be sent or
-* received before generating an interrupt.  This value helps implement
-* a concept called "interrupt coalescing", which is used to reduce the number
-* of interrupts from devices with high data rates.
-*
-* ARGUMENTS:
-*
-* InstancePtr contains a pointer to the DMA channel to operate on.  The DMA
-* channel should be configured to use scatter gather in order for this function
-* to be called.
-*
-* Threshold is the value that is written to the threshold register of the
-* DMA channel.
-*
-* RETURN VALUE:
-*
-* A status containing XST_SUCCESS if the packet count threshold was
-* successfully set.
-*
-* NOTES:
-*
-* The packet threshold could be set to larger than the number of descriptors
-* allocated to the DMA channel. In this case, the wait bound will take over
-* and always indicate data arrival. There was a check in this function that
-* returned an error if the treshold was larger than the number of descriptors,
-* but that was removed because users would then have to set the threshold
-* only after they set descriptor space, which is an order dependency that
-* caused confustion.
-*
-******************************************************************************/
-XStatus
-XDmaChannel_SetPktThreshold(XDmaChannel * InstancePtr, u8 Threshold)
-{
-       /* assert to verify input arguments, don't assert the threshold since
-        * it's range is unknown
-        */
-       XASSERT_NONVOID(InstancePtr != NULL);
-       XASSERT_NONVOID(InstancePtr->IsReady == XCOMPONENT_IS_READY);
-
-       /* set the packet count threshold in the register such that an interrupt
-        * may be generated, if enabled, when the packet count threshold is
-        * reached or exceeded
-        */
-       XIo_Out32(InstancePtr->RegBaseAddress + XDC_PCT_REG_OFFSET,
-                 (u32) Threshold);
-
-       /* indicate the packet count threshold was successfully set */
-
-       return XST_SUCCESS;
-}
-
-/******************************************************************************
-*
-* FUNCTION:
-*
-* XDmaChannel_GetPktThreshold
-*
-* DESCRIPTION:
-*
-* This function gets the value of the packet count threshold register of the
-* DMA channel. This value reflects the number of packets that must be sent or
-* received before generating an interrupt.  This value helps implement a concept
-* called "interrupt coalescing", which is used to reduce the number of
-* interrupts from devices with high data rates.
-*
-* ARGUMENTS:
-*
-* InstancePtr contains a pointer to the DMA channel to operate on.  The DMA
-* channel should be configured to use scatter gather in order for this function
-* to be called.
-*
-* RETURN VALUE:
-*
-* The packet threshold register contents for the DMA channel and is a value in
-* the range 0 - 1023.  A value of 0 indicates the packet wait bound timer is
-* disabled.
-*
-* NOTES:
-*
-* None.
-*
-******************************************************************************/
-u8
-XDmaChannel_GetPktThreshold(XDmaChannel * InstancePtr)
-{
-       /* assert to verify input arguments */
-
-       XASSERT_NONVOID(InstancePtr != NULL);
-       XASSERT_NONVOID(InstancePtr->IsReady == XCOMPONENT_IS_READY);
-
-       /* get the packet count threshold from the register and return it,
-        * since only 8 bits are used, cast it to return only those bits */
-
-       return (u8) XIo_In32(InstancePtr->RegBaseAddress + XDC_PCT_REG_OFFSET);
-}
-
-/******************************************************************************
-*
-* FUNCTION:
-*
-* XDmaChannel_SetPktWaitBound
-*
-* DESCRIPTION:
-*
-* This function sets the value of the packet wait bound register of the
-* DMA channel. This value reflects the timer value used to trigger an
-* interrupt when not enough packets have been received to reach the packet
-* count threshold.
-*
-* The timer is in millisecond units with +/- 33% accuracy.
-*
-* ARGUMENTS:
-*
-* InstancePtr contains a pointer to the DMA channel to operate on.  The DMA
-* channel should be configured to use scatter gather in order for this function
-* to be called.
-*
-* WaitBound is the value, in milliseconds, to be stored in the wait bound
-* register of the DMA channel and is a value in the range 0  - 1023.  A value
-* of 0 disables the packet wait bound timer.
-*
-* RETURN VALUE:
-*
-* None.
-*
-* NOTES:
-*
-* None.
-*
-******************************************************************************/
-void
-XDmaChannel_SetPktWaitBound(XDmaChannel * InstancePtr, u32 WaitBound)
-{
-       /* assert to verify input arguments */
-
-       XASSERT_VOID(InstancePtr != NULL);
-       XASSERT_VOID(WaitBound < 1024);
-       XASSERT_VOID(InstancePtr->IsReady == XCOMPONENT_IS_READY);
-
-       /* set the packet wait bound in the register such that interrupt may be
-        * generated, if enabled, when packets have not been handled for a specific
-        * amount of time
-        */
-       XIo_Out32(InstancePtr->RegBaseAddress + XDC_PWB_REG_OFFSET, WaitBound);
-}
-
-/******************************************************************************
-*
-* FUNCTION:
-*
-* XDmaChannel_GetPktWaitBound
-*
-* DESCRIPTION:
-*
-* This function gets the value of the packet wait bound register of the
-* DMA channel. This value contains the timer value used to trigger an
-* interrupt when not enough packets have been received to reach the packet
-* count threshold.
-*
-* The timer is in millisecond units with +/- 33% accuracy.
-*
-* ARGUMENTS:
-*
-* InstancePtr contains a pointer to the DMA channel to operate on.  The DMA
-* channel should be configured to use scatter gather in order for this function
-* to be called.
-*
-* RETURN VALUE:
-*
-* The packet wait bound register contents for the DMA channel.
-*
-* NOTES:
-*
-* None.
-*
-******************************************************************************/
-u32
-XDmaChannel_GetPktWaitBound(XDmaChannel * InstancePtr)
-{
-       /* assert to verify input arguments */
-
-       XASSERT_NONVOID(InstancePtr != NULL);
-       XASSERT_NONVOID(InstancePtr->IsReady == XCOMPONENT_IS_READY);
-
-       /* get the packet wait bound from the register and return it */
-
-       return XIo_In32(InstancePtr->RegBaseAddress + XDC_PWB_REG_OFFSET);
-}
+/* $Id: xdma_channel_sg.c,v 1.1.1.1 2009/03/25 22:21:55 kenagy Exp $ */
+/******************************************************************************
+*
+*     Author: Xilinx, Inc.
+*
+*
+*     This program is free software; you can redistribute it and/or modify it
+*     under the terms of the GNU General Public License as published by the
+*     Free Software Foundation; either version 2 of the License, or (at your
+*     option) any later version.
+*
+*
+*     XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" AS A
+*     COURTESY TO YOU. BY PROVIDING THIS DESIGN, CODE, OR INFORMATION AS
+*     ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, APPLICATION OR STANDARD,
+*     XILINX IS MAKING NO REPRESENTATION THAT THIS IMPLEMENTATION IS FREE
+*     FROM ANY CLAIMS OF INFRINGEMENT, AND YOU ARE RESPONSIBLE FOR OBTAINING
+*     ANY THIRD PARTY RIGHTS YOU MAY REQUIRE FOR YOUR IMPLEMENTATION.
+*     XILINX EXPRESSLY DISCLAIMS ANY WARRANTY WHATSOEVER WITH RESPECT TO
+*     THE ADEQUACY OF THE IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY
+*     WARRANTIES OR REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM
+*     CLAIMS OF INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND
+*     FITNESS FOR A PARTICULAR PURPOSE.
+*
+*
+*     Xilinx hardware products are not intended for use in life support
+*     appliances, devices, or systems. Use in such applications is
+*     expressly prohibited.
+*
+*
+*     (c) Copyright 2002-2004 Xilinx Inc.
+*     All rights reserved.
+*
+*
+*     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.,
+*     675 Mass Ave, Cambridge, MA 02139, USA.
+*
+* FILENAME:
+*
+* xdma_channel_sg.c
+*
+* DESCRIPTION:
+*
+* This file contains the implementation of the XDmaChannel component which is
+* related to scatter gather operations.
+*
+* Scatter Gather Operations
+*
+* The DMA channel may support scatter gather operations. A scatter gather
+* operation automates the DMA channel such that multiple buffers can be
+* sent or received with minimal software interaction with the hardware.         Buffer
+* descriptors, contained in the XBufDescriptor component, are used by the
+* scatter gather operations of the DMA channel to describe the buffers to be
+* processed.
+*
+* Scatter Gather List Operations
+*
+* A scatter gather list may be supported by each DMA channel.  The scatter
+* gather list allows buffer descriptors to be put into the list by a device
+* driver which requires scatter gather.         The hardware processes the buffer
+* descriptors which are contained in the list and modifies the buffer
+* descriptors to reflect the status of the DMA operations.  The device driver
+* is notified by interrupt that specific DMA events occur including scatter
+* gather events.  The device driver removes the completed buffer descriptors
+* from the scatter gather list to evaluate the status of each DMA operation.
+*
+* The scatter gather list is created and buffer descriptors are inserted into
+* the list.  Buffer descriptors are never removed from the list after it's
+* creation such that a put operation copies from a temporary buffer descriptor
+* to a buffer descriptor in the list.  Get operations don't copy from the list
+* to a temporary, but return a pointer to the buffer descriptor in the list.
+* A buffer descriptor in the list may be locked to prevent it from being
+* overwritten by a put operation.  This allows the device driver to get a
+* descriptor from a scatter gather list and prevent it from being overwritten
+* until the buffer associated with the buffer descriptor has been processed.
+*
+* The get and put functions only operate on the list and are asynchronous from
+* the hardware which may be using the list of descriptors.  This is important
+* because there are no checks in the get and put functions to ensure that the
+* hardware has processed the descriptors.  This must be handled by the driver
+* using the DMA scatter gather channel through the use of the other functions.
+* When a scatter gather operation is started, the start function does ensure
+* that the descriptor to start has not already been processed by the hardware
+* and is not the first of a series of descriptors that have not been committed
+* yet.
+*
+* Descriptors are put into the list but not marked as ready to use by the
+* hardware until a commit operation is done.  This allows multiple descriptors
+* which may contain a single packet of information for a protocol to be
+* guaranteed not to cause any underflow conditions during transmission. The
+* hardware design only allows descriptors to cause it to stop after a descriptor
+* has been processed rather than before it is processed.  A series of
+* descriptors are put into the list followed by a commit operation, or each
+* descriptor may be commited.  A commit operation is performed by changing a
+* single descriptor, the first of the series of puts, to indicate that the
+* hardware may now use all descriptors after it.  The last descriptor in the
+* list is always set to cause the hardware to stop after it is processed.
+*
+* Typical Scatter Gather Processing
+*
+* The following steps illustrate the typical processing to use the
+* scatter gather features of a DMA channel.
+*
+* 1. Create a scatter gather list for the DMA channel which puts empty buffer
+*    descriptors into the list.
+* 2. Create buffer descriptors which describe the buffers to be filled with
+*    receive data or the buffers which contain data to be sent.
+* 3. Put buffer descriptors into the DMA channel scatter list such that scatter
+*    gather operations are requested.
+* 4. Commit the buffer descriptors in the list such that they are ready to be
+*    used by the DMA channel hardware.
+* 5. Start the scatter gather operations of the DMA channel.
+* 6. Process any interrupts which occur as a result of the scatter gather
+*    operations or poll the DMA channel to determine the status.  This may
+*    be accomplished by getting the packet count for the channel and then
+*    getting the appropriate number of descriptors from the list for that
+*    number of packets.
+*
+* Minimizing Interrupts
+*
+* The Scatter Gather operating mode is designed to reduce the amount of CPU
+* throughput necessary to manage the hardware for devices. A key to the CPU
+* throughput is the number and rate of interrupts that the CPU must service.
+* Devices with higher data rates can cause larger numbers of interrupts and
+* higher frequency interrupts. Ideally the number of interrupts can be reduced
+* by only generating an interrupt when a specific amount of data has been
+* received from the interface. This design suffers from a lack of interrupts
+* when the amount of data received is less than the specified amount of data
+* to generate an interrupt. In order to help minimize the number of interrupts
+* which the CPU must service, an algorithm referred to as "interrupt coalescing"
+* is utilized.
+*
+* Interrupt Coalescing
+*
+* The principle of interrupt coalescing is to wait before generating an
+* interrupt until a certain number of packets have been received or sent. An
+* interrupt is also generated if a smaller number of packets have been received
+* followed by a certain period of time with no packet reception. This is a
+* trade-off of latency for bandwidth and is accomplished using several
+* mechanisms of the hardware including a counter for packets received or
+* transmitted and a packet timer. These two hardware mechanisms work in
+* combination to allow a reduction in the number of interrupts processed by the
+* CPU for packet reception.
+*
+* Unserviced Packet Count
+*
+* The purpose of the packet counter is to count the number of packets received
+* or transmitted and provide an interrupt when a specific number of packets
+* have been processed by the hardware. An interrupt is generated whenever the
+* counter is greater than or equal to the Packet Count Threshold. This counter
+* contains an accurate count of the number of packets that the hardware has
+* processed, either received or transmitted, and the software has not serviced.
+*
+* The packet counter allows the number of interrupts to be reduced by waiting
+* to generate an interrupt until enough packets are received. For packet
+* reception, packet counts of less than the number to generate an interrupt
+* would not be serviced without the addition of a packet timer. This counter is
+* continuously updated by the hardware, not latched to the value at the time
+* the interrupt occurred.
+*
+* The packet counter can be used within the interrupt service routine for the
+* device to reduce the number of interrupts. The interrupt service routine
+* loops while performing processing for each packet which has been received or
+* transmitted and decrements the counter by a specified value. At the same time,
+* the hardware is possibly continuing to receive or transmit more packets such
+* that the software may choose, based upon the value in the packet counter, to
+* remain in the interrupt service routine rather than exiting and immediately
+* returning. This feature should be used with caution as reducing the number of
+* interrupts is beneficial, but unbounded interrupt processing is not desirable.
+*
+* Since the hardware may be incrementing the packet counter simultaneously
+* with the software decrementing the counter, there is a need for atomic
+* operations. The hardware ensures that the operation is atomic such that
+* simultaneous accesses are properly handled.
+*
+* Packet Wait Bound
+*
+* The purpose of the packet wait bound is to augment the unserviced packet
+* count. Whenever there is no pending interrupt for the channel and the
+* unserviced packet count is non-zero, a timer starts counting timeout at the
+* value contained the the packet wait bound register.  If the timeout is
+* reached, an interrupt is generated such that the software may service the
+* data which was buffered.
+*
+* NOTES:
+*
+* Special Test Conditions:
+*
+* The scatter gather list processing must be thoroughly tested if changes are
+* made.         Testing should include putting and committing single descriptors and
+* putting multiple descriptors followed by a single commit.  There are some
+* conditions in the code which handle the exception conditions.
+*
+* The Put Pointer points to the next location in the descriptor list to copy
+* in a new descriptor. The Get Pointer points to the next location in the
+* list to get a descriptor from.  The Get Pointer only allows software to
+* have a traverse the list after the hardware has finished processing some
+* number of descriptors.  The Commit Pointer points to the descriptor in the
+* list which is to be committed.  It is also used to determine that no
+* descriptor is waiting to be commited (NULL). The Last Pointer points to
+* the last descriptor that was put into the list.  It typically points
+* to the previous descriptor to the one pointed to by the Put Pointer.
+* Comparisons are done between these pointers to determine when the following
+* special conditions exist.
+
+* Single Put And Commit
+*
+* The buffer descriptor is ready to be used by the hardware so it is important
+* for the descriptor to not appear to be waiting to be committed.  The commit
+* pointer is reset when a commit is done indicating there are no descriptors
+* waiting to be committed.  In all cases but this one, the descriptor is
+* changed to cause the hardware to go to the next descriptor after processing
+* this one.  But in this case, this is the last descriptor in the list such
+* that it must not be changed.
+*
+* 3 Or More Puts And Commit
+*
+* A series of 3 or more puts followed by a single commit is different in that
+* only the 1st descriptor put into the list is changed when the commit is done.
+* This requires each put starting on the 3rd to change the previous descriptor
+* so that it allows the hardware to continue to the next descriptor in the list.
+*
+* The 1st Put Following A Commit
+*
+* The commit caused the commit pointer to be NULL indicating that there are no
+* descriptors waiting to be committed. It is necessary for the next put to set
+* the commit pointer so that a commit must follow the put for the hardware to
+* use the descriptor.
+*
+* <pre>
+* MODIFICATION HISTORY:
+*
+* Ver  Who  Date     Changes
+* ----- ---- -------- ------------------------------------------------------
+* 1.00a rpm  02/03/03 Removed the XST_DMA_SG_COUNT_EXCEEDED return code
+*                    from SetPktThreshold.
+* </pre>
+*
+******************************************************************************/
+
+/***************************** Include Files *********************************/
+
+#include "xdma_channel.h"
+#include "xbasic_types.h"
+#include "xio.h"
+#include "xbuf_descriptor.h"
+#include "xstatus.h"
+
+/************************** Constant Definitions *****************************/
+
+#define XDC_SWCR_SG_ENABLE_MASK 0x80000000UL   /* scatter gather enable */
+
+/**************************** Type Definitions *******************************/
+
+/***************** Macros (Inline Functions) Definitions *********************/
+
+/* the following macro copies selected fields of a buffer descriptor to another
+ * buffer descriptor, this was provided by the buffer descriptor component but
+ * was moved here since it is only used internally to this component and since
+ * it does not copy all fields
+ */
+#define CopyBufferDescriptor(InstancePtr, DestinationPtr)         \
+{                                                                 \
+    *((u32 *)DestinationPtr + XBD_CONTROL_OFFSET) =           \
+       *((u32 *)InstancePtr + XBD_CONTROL_OFFSET);            \
+    *((u32 *)DestinationPtr + XBD_SOURCE_OFFSET) =            \
+       *((u32 *)InstancePtr + XBD_SOURCE_OFFSET);             \
+    *((u32 *)DestinationPtr + XBD_DESTINATION_OFFSET) =               \
+       *((u32 *)InstancePtr + XBD_DESTINATION_OFFSET);        \
+    *((u32 *)DestinationPtr + XBD_LENGTH_OFFSET) =            \
+       *((u32 *)InstancePtr + XBD_LENGTH_OFFSET);             \
+    *((u32 *)DestinationPtr + XBD_STATUS_OFFSET) =            \
+       *((u32 *)InstancePtr + XBD_STATUS_OFFSET);             \
+    *((u32 *)DestinationPtr + XBD_DEVICE_STATUS_OFFSET) =      \
+       *((u32 *)InstancePtr + XBD_DEVICE_STATUS_OFFSET);      \
+    *((u32 *)DestinationPtr + XBD_ID_OFFSET) =                \
+       *((u32 *)InstancePtr + XBD_ID_OFFSET);                 \
+    *((u32 *)DestinationPtr + XBD_FLAGS_OFFSET) =             \
+       *((u32 *)InstancePtr + XBD_FLAGS_OFFSET);              \
+    *((u32 *)DestinationPtr + XBD_RQSTED_LENGTH_OFFSET) =      \
+       *((u32 *)InstancePtr + XBD_RQSTED_LENGTH_OFFSET);      \
+}
+
+/************************** Variable Definitions *****************************/
+
+/************************** Function Prototypes ******************************/
+
+/******************************************************************************
+*
+* FUNCTION:
+*
+* XDmaChannel_SgStart
+*
+* DESCRIPTION:
+*
+* This function starts a scatter gather operation for a scatter gather
+* DMA channel. The first buffer descriptor in the buffer descriptor list
+* will be started with the scatter gather operation.  A scatter gather list
+* should have previously been created for the DMA channel and buffer
+* descriptors put into the scatter gather list such that there are scatter
+* operations ready to be performed.
+*
+* ARGUMENTS:
+*
+* InstancePtr contains a pointer to the DMA channel to operate on.  The DMA
+* channel should be configured to use scatter gather in order for this function
+* to be called.
+*
+* RETURN VALUE:
+*
+* A status containing XST_SUCCESS if scatter gather was started successfully
+* for the DMA channel.
+*
+* A value of XST_DMA_SG_NO_LIST indicates the scatter gather list has not
+* been created.
+*
+* A value of XST_DMA_SG_LIST_EMPTY indicates scatter gather was not started
+* because the scatter gather list of the DMA channel does not contain any
+* buffer descriptors that are ready to be processed by the hardware.
+*
+* A value of XST_DMA_SG_IS_STARTED indicates scatter gather was not started
+* because the scatter gather was not stopped, but was already started.
+*
+* A value of XST_DMA_SG_BD_NOT_COMMITTED indicates the buffer descriptor of
+* scatter gather list which was to be started is not committed to the list.
+* This status is more likely if this function is being called from an ISR
+* and non-ISR processing is putting descriptors into the list.
+*
+* A value of XST_DMA_SG_NO_DATA indicates that the buffer descriptor of the
+* scatter gather list which was to be started had already been used by the
+* hardware for a DMA transfer that has been completed.
+*
+* NOTES:
+*
+* It is the responsibility of the caller to get all the buffer descriptors
+* after performing a stop operation and before performing a start operation.
+* If buffer descriptors are not retrieved between stop and start operations,
+* buffer descriptors may be processed by the hardware more than once.
+*
+******************************************************************************/
+XStatus
+XDmaChannel_SgStart(XDmaChannel * InstancePtr)
+{
+       u32 Register;
+       XBufDescriptor *LastDescriptorPtr;
+
+       /* assert to verify input arguments */
+
+       XASSERT_NONVOID(InstancePtr != NULL);
+       XASSERT_NONVOID(InstancePtr->IsReady == XCOMPONENT_IS_READY);
+
+       /* if a scatter gather list has not been created yet, return a status */
+
+       if (InstancePtr->TotalDescriptorCount == 0) {
+               return XST_DMA_SG_NO_LIST;
+       }
+
+       /* if the scatter gather list exists but is empty then return a status */
+
+       if (XDmaChannel_IsSgListEmpty(InstancePtr)) {
+               return XST_DMA_SG_LIST_EMPTY;
+       }
+
+       /* if scatter gather is busy for the DMA channel, return a status because
+        * restarting it could lose data
+        */
+
+       Register = XIo_In32(InstancePtr->RegBaseAddress + XDC_DMAS_REG_OFFSET);
+       if (Register & XDC_DMASR_SG_BUSY_MASK) {
+               return XST_DMA_SG_IS_STARTED;
+       }
+
+       /* get the address of the last buffer descriptor which the DMA hardware
+        * finished processing
+        */
+       LastDescriptorPtr =
+           (XBufDescriptor *) XIo_In32(InstancePtr->RegBaseAddress +
+                                       XDC_BDA_REG_OFFSET);
+
+       /* setup the first buffer descriptor that will be sent when the scatter
+        * gather channel is enabled, this is only necessary one time since
+        * the BDA register of the channel maintains the last buffer descriptor
+        * processed
+        */
+       if (LastDescriptorPtr == NULL) {
+               XIo_Out32(InstancePtr->RegBaseAddress + XDC_BDA_REG_OFFSET,
+                         (u32) InstancePtr->GetPtr);
+       } else {
+               XBufDescriptor *NextDescriptorPtr;
+
+               /* get the next descriptor to be started, if the status indicates it
+                * hasn't already been used by the h/w, then it's OK to start it,
+                * s/w sets the status of each descriptor to busy and then h/w clears
+                * the busy when it is complete
+                */
+               NextDescriptorPtr =
+                   XBufDescriptor_GetNextPtr(LastDescriptorPtr);
+
+               if ((XBufDescriptor_GetStatus(NextDescriptorPtr) &
+                    XDC_DMASR_BUSY_MASK) == 0) {
+                       return XST_DMA_SG_NO_DATA;
+               }
+               /* don't start the DMA SG channel if the descriptor to be processed
+                * by h/w is to be committed by the s/w, this function can be called
+                * such that it interrupts a thread that was putting into the list
+                */
+               if (NextDescriptorPtr == InstancePtr->CommitPtr) {
+                       return XST_DMA_SG_BD_NOT_COMMITTED;
+               }
+       }
+
+       /* start the scatter gather operation by clearing the stop bit in the
+        * control register and setting the enable bit in the s/w control register,
+        * both of these are necessary to cause it to start, right now the order of
+        * these statements is important, the software control register should be
+        * set 1st.  The other order can cause the CPU to have a loss of sync
+        * because it cannot read/write the register while the DMA operation is
+        * running
+        */
+
+       Register = XIo_In32(InstancePtr->RegBaseAddress + XDC_SWCR_REG_OFFSET);
+
+       XIo_Out32(InstancePtr->RegBaseAddress + XDC_SWCR_REG_OFFSET,
+                 Register | XDC_SWCR_SG_ENABLE_MASK);
+
+       Register = XIo_In32(InstancePtr->RegBaseAddress + XDC_DMAC_REG_OFFSET);
+
+       XIo_Out32(InstancePtr->RegBaseAddress + XDC_DMAC_REG_OFFSET,
+                 Register & ~XDC_DMACR_SG_DISABLE_MASK);
+
+       /* indicate the DMA channel scatter gather operation was started
+        * successfully
+        */
+       return XST_SUCCESS;
+}
+
+/******************************************************************************
+*
+* FUNCTION:
+*
+* XDmaChannel_SgStop
+*
+* DESCRIPTION:
+*
+* This function stops a scatter gather operation for a scatter gather
+* DMA channel. This function starts the process of stopping a scatter
+* gather operation that is in progress and waits for the stop to be completed.
+* Since it waits for the operation to stopped before returning, this function
+* could take an amount of time relative to the size of the DMA scatter gather
+* operation which is in progress.  The scatter gather list of the DMA channel
+* is not modified by this function such that starting the scatter gather
+* channel after stopping it will cause it to resume.  This operation is
+* considered to be a graceful stop in that the scatter gather operation
+* completes the current buffer descriptor before stopping.
+*
+* If the interrupt is enabled, an interrupt will be generated when the
+* operation is stopped and the caller is responsible for handling the
+* interrupt.
+*
+* ARGUMENTS:
+*
+* InstancePtr contains a pointer to the DMA channel to operate on.  The DMA
+* channel should be configured to use scatter gather in order for this function
+* to be called.
+*
+* BufDescriptorPtr is also a return value which contains a pointer to the
+* buffer descriptor which the scatter gather operation completed when it
+* was stopped.
+*
+* RETURN VALUE:
+*
+* A status containing XST_SUCCESS if scatter gather was stopped successfully
+* for the DMA channel.
+*
+* A value of XST_DMA_SG_IS_STOPPED indicates scatter gather was not stoppped
+* because the scatter gather is not started, but was already stopped.
+*
+* BufDescriptorPtr contains a pointer to the buffer descriptor which was
+* completed when the operation was stopped.
+*
+* NOTES:
+*
+* This function implements a loop which polls the hardware for an infinite
+* amount of time. If the hardware is not operating correctly, this function
+* may never return.
+*
+******************************************************************************/
+XStatus
+XDmaChannel_SgStop(XDmaChannel * InstancePtr,
+                  XBufDescriptor ** BufDescriptorPtr)
+{
+       u32 Register;
+
+       /* assert to verify input arguments */
+
+       XASSERT_NONVOID(InstancePtr != NULL);
+       XASSERT_NONVOID(BufDescriptorPtr != NULL);
+       XASSERT_NONVOID(InstancePtr->IsReady == XCOMPONENT_IS_READY);
+
+       /* get the contents of the software control register, if scatter gather is not
+        * enabled (started), then return a status because the disable acknowledge
+        * would not be generated
+        */
+       Register = XIo_In32(InstancePtr->RegBaseAddress + XDC_SWCR_REG_OFFSET);
+
+       if ((Register & XDC_SWCR_SG_ENABLE_MASK) == 0) {
+               return XST_DMA_SG_IS_STOPPED;
+       }
+
+       /* Ensure the interrupt status for the scatter gather is cleared such
+        * that this function will wait til the disable has occurred, writing
+        * a 1 to only that bit in the register will clear only it
+        */
+       XIo_Out32(InstancePtr->RegBaseAddress + XDC_IS_REG_OFFSET,
+                 XDC_IXR_SG_DISABLE_ACK_MASK);
+
+       /* disable scatter gather by writing to the software control register
+        * without modifying any other bits of the register
+        */
+       XIo_Out32(InstancePtr->RegBaseAddress + XDC_SWCR_REG_OFFSET,
+                 Register & ~XDC_SWCR_SG_ENABLE_MASK);
+
+       /* scatter gather does not disable immediately, but after the current
+        * buffer descriptor is complete, so wait for the DMA channel to indicate
+        * the disable is complete
+        */
+       do {
+               Register =
+                   XIo_In32(InstancePtr->RegBaseAddress + XDC_IS_REG_OFFSET);
+       } while ((Register & XDC_IXR_SG_DISABLE_ACK_MASK) == 0);
+
+       /* Ensure the interrupt status for the scatter gather disable is cleared,
+        * writing a 1 to only that bit in the register will clear only it
+        */
+       XIo_Out32(InstancePtr->RegBaseAddress + XDC_IS_REG_OFFSET,
+                 XDC_IXR_SG_DISABLE_ACK_MASK);
+
+       /* set the specified buffer descriptor pointer to point to the buffer
+        * descriptor that the scatter gather DMA channel was processing
+        */
+       *BufDescriptorPtr =
+           (XBufDescriptor *) XIo_In32(InstancePtr->RegBaseAddress +
+                                       XDC_BDA_REG_OFFSET);
+
+       return XST_SUCCESS;
+}
+
+/******************************************************************************
+*
+* FUNCTION:
+*
+* XDmaChannel_CreateSgList
+*
+* DESCRIPTION:
+*
+* This function creates a scatter gather list in the DMA channel.  A scatter
+* gather list consists of a list of buffer descriptors that are available to
+* be used for scatter gather operations.  Buffer descriptors are put into the
+* list to request a scatter gather operation to be performed.
+*
+* A number of buffer descriptors are created from the specified memory and put
+* into a buffer descriptor list as empty buffer descriptors. This function must
+* be called before non-empty buffer descriptors may be put into the DMA channel
+* to request scatter gather operations.
+*
+* ARGUMENTS:
+*
+* InstancePtr contains a pointer to the DMA channel to operate on.  The DMA
+* channel should be configured to use scatter gather in order for this function
+* to be called.
+*
+* MemoryPtr contains a pointer to the memory which is to be used for buffer
+* descriptors and must not be cached.
+*
+* ByteCount contains the number of bytes for the specified memory to be used
+* for buffer descriptors.
+*
+* RETURN VALUE:
+*
+* A status contains XST_SUCCESS if the scatter gather list was successfully
+* created.
+*
+* A value of XST_DMA_SG_LIST_EXISTS indicates that the scatter gather list
+* was not created because the list has already been created.
+*
+* NOTES:
+*
+* None.
+*
+******************************************************************************/
+XStatus
+XDmaChannel_CreateSgList(XDmaChannel * InstancePtr,
+                        u32 * MemoryPtr, u32 ByteCount)
+{
+       XBufDescriptor *BufferDescriptorPtr = (XBufDescriptor *) MemoryPtr;
+       XBufDescriptor *PreviousDescriptorPtr = NULL;
+       XBufDescriptor *StartOfListPtr = BufferDescriptorPtr;
+       u32 UsedByteCount;
+
+       /* assert to verify valid input arguments, alignment for those
+        * arguments that have alignment restrictions, and at least enough
+        * memory for one buffer descriptor
+        */
+       XASSERT_NONVOID(InstancePtr != NULL);
+       XASSERT_NONVOID(MemoryPtr != NULL);
+       XASSERT_NONVOID(((u32) MemoryPtr & 3) == 0);
+       XASSERT_NONVOID(ByteCount != 0);
+       XASSERT_NONVOID(ByteCount >= sizeof (XBufDescriptor));
+       XASSERT_NONVOID(InstancePtr->IsReady == XCOMPONENT_IS_READY);
+
+       /* if the scatter gather list has already been created, then return
+        * with a status
+        */
+       if (InstancePtr->TotalDescriptorCount != 0) {
+               return XST_DMA_SG_LIST_EXISTS;
+       }
+
+       /* loop thru the specified memory block and create as many buffer
+        * descriptors as possible putting each into the list which is
+        * implemented as a ring buffer, make sure not to use any memory which
+        * is not large enough for a complete buffer descriptor
+        */
+       UsedByteCount = 0;
+       while ((UsedByteCount + sizeof (XBufDescriptor)) <= ByteCount) {
+               /* setup a pointer to the next buffer descriptor in the memory and
+                * update # of used bytes to know when all of memory is used
+                */
+               BufferDescriptorPtr = (XBufDescriptor *) ((u32) MemoryPtr +
+                                                         UsedByteCount);
+
+               /* initialize the new buffer descriptor such that it doesn't contain
+                * garbage which could be used by the DMA hardware
+                */
+               XBufDescriptor_Initialize(BufferDescriptorPtr);
+
+               /* if this is not the first buffer descriptor to be created,
+                * then link it to the last created buffer descriptor
+                */
+               if (PreviousDescriptorPtr != NULL) {
+                       XBufDescriptor_SetNextPtr(PreviousDescriptorPtr,
+                                                 BufferDescriptorPtr);
+               }
+
+               /* always keep a pointer to the last created buffer descriptor such
+                * that they can be linked together in the ring buffer
+                */
+               PreviousDescriptorPtr = BufferDescriptorPtr;
+
+               /* keep a count of the number of descriptors in the list to allow
+                * error processing to be performed
+                */
+               InstancePtr->TotalDescriptorCount++;
+
+               UsedByteCount += sizeof (XBufDescriptor);
+       }
+
+       /* connect the last buffer descriptor created and inserted in the list
+        * to the first such that a ring buffer is created
+        */
+       XBufDescriptor_SetNextPtr(BufferDescriptorPtr, StartOfListPtr);
+
+       /* initialize the ring buffer to indicate that there are no
+        * buffer descriptors in the list which point to valid data buffers
+        */
+       InstancePtr->PutPtr = BufferDescriptorPtr;
+       InstancePtr->GetPtr = BufferDescriptorPtr;
+       InstancePtr->CommitPtr = NULL;
+       InstancePtr->LastPtr = BufferDescriptorPtr;
+       InstancePtr->ActiveDescriptorCount = 0;
+
+       /* indicate the scatter gather list was successfully created */
+
+       return XST_SUCCESS;
+}
+
+/******************************************************************************
+*
+* FUNCTION:
+*
+* XDmaChannel_IsSgListEmpty
+*
+* DESCRIPTION:
+*
+* This function determines if the scatter gather list of a DMA channel is
+* empty with regard to buffer descriptors which are pointing to buffers to be
+* used for scatter gather operations.
+*
+* ARGUMENTS:
+*
+* InstancePtr contains a pointer to the DMA channel to operate on.  The DMA
+* channel should be configured to use scatter gather in order for this function
+* to be called.
+*
+* RETURN VALUE:
+*
+* A value of TRUE if the scatter gather list is empty, otherwise a value of
+* FALSE.
+*
+* NOTES:
+*
+* None.
+*
+******************************************************************************/
+u32
+XDmaChannel_IsSgListEmpty(XDmaChannel * InstancePtr)
+{
+       /* assert to verify valid input arguments */
+
+       XASSERT_NONVOID(InstancePtr != NULL);
+       XASSERT_NONVOID(InstancePtr->IsReady == XCOMPONENT_IS_READY);
+
+       /* if the number of descriptors which are being used in the list is zero
+        * then the list is empty
+        */
+       return (InstancePtr->ActiveDescriptorCount == 0);
+}
+
+/******************************************************************************
+*
+* FUNCTION:
+*
+* XDmaChannel_PutDescriptor
+*
+* DESCRIPTION:
+*
+* This function puts a buffer descriptor into the DMA channel scatter
+* gather list. A DMA channel maintains a list of buffer descriptors which are
+* to be processed.  This function puts the specified buffer descriptor
+* at the next location in the list.  Note that since the list is already intact,
+* the information in the parameter is copied into the list (rather than modify
+* list pointers on the fly).
+*
+* After buffer descriptors are put into the list, they must also be committed
+* by calling another function. This allows multiple buffer descriptors which
+* span a single packet to be put into the list while preventing the hardware
+* from starting the first buffer descriptor of the packet.
+*
+* ARGUMENTS:
+*
+* InstancePtr contains a pointer to the DMA channel to operate on.  The DMA
+* channel should be configured to use scatter gather in order for this function
+* to be called.
+*
+* BufferDescriptorPtr is a pointer to the buffer descriptor to be put into
+* the next available location of the scatter gather list.
+*
+* RETURN VALUE:
+*
+* A status which indicates XST_SUCCESS if the buffer descriptor was
+* successfully put into the scatter gather list.
+*
+* A value of XST_DMA_SG_NO_LIST indicates the scatter gather list has not
+* been created.
+*
+* A value of XST_DMA_SG_LIST_FULL indicates the buffer descriptor was not
+* put into the list because the list was full.
+*
+* A value of XST_DMA_SG_BD_LOCKED indicates the buffer descriptor was not
+* put into the list because the buffer descriptor in the list which is to
+* be overwritten was locked.  A locked buffer descriptor indicates the higher
+* layered software is still using the buffer descriptor.
+*
+* NOTES:
+*
+* It is necessary to create a scatter gather list for a DMA channel before
+* putting buffer descriptors into it.
+*
+******************************************************************************/
+XStatus
+XDmaChannel_PutDescriptor(XDmaChannel * InstancePtr,
+                         XBufDescriptor * BufferDescriptorPtr)
+{
+       u32 Control;
+
+       /* assert to verify valid input arguments and alignment for those
+        * arguments that have alignment restrictions
+        */
+       XASSERT_NONVOID(InstancePtr != NULL);
+       XASSERT_NONVOID(BufferDescriptorPtr != NULL);
+       XASSERT_NONVOID(((u32) BufferDescriptorPtr & 3) == 0);
+       XASSERT_NONVOID(InstancePtr->IsReady == XCOMPONENT_IS_READY);
+
+       /* if a scatter gather list has not been created yet, return a status */
+
+       if (InstancePtr->TotalDescriptorCount == 0) {
+               return XST_DMA_SG_NO_LIST;
+       }
+
+       /* if the list is full because all descriptors are pointing to valid
+        * buffers, then indicate an error, this code assumes no list or an
+        * empty list is detected above
+        */
+       if (InstancePtr->ActiveDescriptorCount ==
+           InstancePtr->TotalDescriptorCount) {
+               return XST_DMA_SG_LIST_FULL;
+       }
+
+       /* if the buffer descriptor in the list which is to be overwritten is
+        * locked, then don't overwrite it and return a status
+        */
+       if (XBufDescriptor_IsLocked(InstancePtr->PutPtr)) {
+               return XST_DMA_SG_BD_LOCKED;
+       }
+
+       /* set the scatter gather stop bit in the control word of the descriptor
+        * to cause the h/w to stop after it processes this descriptor since it
+        * will be the last in the list
+        */
+       Control = XBufDescriptor_GetControl(BufferDescriptorPtr);
+       XBufDescriptor_SetControl(BufferDescriptorPtr,
+                                 Control | XDC_DMACR_SG_DISABLE_MASK);
+
+       /* set both statuses in the descriptor so we tell if they are updated with
+        * the status of the transfer, the hardware should change the busy in the
+        * DMA status to be false when it completes
+        */
+       XBufDescriptor_SetStatus(BufferDescriptorPtr, XDC_DMASR_BUSY_MASK);
+       XBufDescriptor_SetDeviceStatus(BufferDescriptorPtr, 0);
+
+       /* copy the descriptor into the next position in the list so it's ready to
+        * be used by the h/w, this assumes the descriptor in the list prior to this
+        * one still has the stop bit in the control word set such that the h/w
+        * use this one yet
+        */
+       CopyBufferDescriptor(BufferDescriptorPtr, InstancePtr->PutPtr);
+
+       /* only the last in the list and the one to be committed have scatter gather
+        * disabled in the control word, a commit requires only one descriptor
+        * to be changed, when # of descriptors to commit > 2 all others except the
+        * 1st and last have scatter gather enabled
+        */
+       if ((InstancePtr->CommitPtr != InstancePtr->LastPtr) &&
+           (InstancePtr->CommitPtr != NULL)) {
+               Control = XBufDescriptor_GetControl(InstancePtr->LastPtr);
+               XBufDescriptor_SetControl(InstancePtr->LastPtr,
+                                         Control & ~XDC_DMACR_SG_DISABLE_MASK);
+       }
+
+       /* update the list data based upon putting a descriptor into the list,
+        * these operations must be last
+        */
+       InstancePtr->ActiveDescriptorCount++;
+
+       /* only update the commit pointer if it is not already active, this allows
+        * it to be deactivated after every commit such that a single descriptor
+        * which is committed does not appear to be waiting to be committed
+        */
+       if (InstancePtr->CommitPtr == NULL) {
+               InstancePtr->CommitPtr = InstancePtr->LastPtr;
+       }
+
+       /* these updates MUST BE LAST after the commit pointer update in order for
+        * the commit pointer to track the correct descriptor to be committed
+        */
+       InstancePtr->LastPtr = InstancePtr->PutPtr;
+       InstancePtr->PutPtr = XBufDescriptor_GetNextPtr(InstancePtr->PutPtr);
+
+       return XST_SUCCESS;
+}
+
+/******************************************************************************
+*
+* FUNCTION:
+*
+* XDmaChannel_CommitPuts
+*
+* DESCRIPTION:
+*
+* This function commits the buffer descriptors which have been put into the
+* scatter list for the DMA channel since the last commit operation was
+* performed.  This enables the calling functions to put several buffer
+* descriptors into the list (e.g.,a packet's worth) before allowing the scatter
+* gather operations to start.  This prevents the DMA channel hardware from
+* starting to use the buffer descriptors in the list before they are ready
+* to be used (multiple buffer descriptors for a single packet).
+*
+* ARGUMENTS:
+*
+* InstancePtr contains a pointer to the DMA channel to operate on.  The DMA
+* channel should be configured to use scatter gather in order for this function
+* to be called.
+*
+* RETURN VALUE:
+*
+* A status indicating XST_SUCCESS if the buffer descriptors of the list were
+* successfully committed.
+*
+* A value of XST_DMA_SG_NOTHING_TO_COMMIT indicates that the buffer descriptors
+* were not committed because there was nothing to commit in the list.  All the
+* buffer descriptors which are in the list are commited.
+*
+* NOTES:
+*
+* None.
+*
+******************************************************************************/
+XStatus
+XDmaChannel_CommitPuts(XDmaChannel * InstancePtr)
+{
+       /* assert to verify input arguments */
+
+       XASSERT_NONVOID(InstancePtr != NULL);
+       XASSERT_NONVOID(InstancePtr->IsReady == XCOMPONENT_IS_READY);
+
+       /* if the buffer descriptor to be committed is already committed or
+        * the list is empty (none have been put in), then indicate an error
+        */
+       if ((InstancePtr->CommitPtr == NULL) ||
+           XDmaChannel_IsSgListEmpty(InstancePtr)) {
+               return XST_DMA_SG_NOTHING_TO_COMMIT;
+       }
+
+       /* last descriptor in the list must have scatter gather disabled so the end
+        * of the list is hit by h/w, if descriptor to commit is not last in list,
+        * commit descriptors by enabling scatter gather in the descriptor
+        */
+       if (InstancePtr->CommitPtr != InstancePtr->LastPtr) {
+               u32 Control;
+
+               Control = XBufDescriptor_GetControl(InstancePtr->CommitPtr);
+               XBufDescriptor_SetControl(InstancePtr->CommitPtr, Control &
+                                         ~XDC_DMACR_SG_DISABLE_MASK);
+       }
+       /* Update the commit pointer to indicate that there is nothing to be
+        * committed, this state is used by start processing to know that the
+        * buffer descriptor to start is not waiting to be committed
+        */
+       InstancePtr->CommitPtr = NULL;
+
+       return XST_SUCCESS;
+}
+
+/******************************************************************************
+*
+* FUNCTION:
+*
+* XDmaChannel_GetDescriptor
+*
+* DESCRIPTION:
+*
+* This function gets a buffer descriptor from the scatter gather list of the
+* DMA channel. The buffer descriptor is retrieved from the scatter gather list
+* and the scatter gather list is updated to not include the retrieved buffer
+* descriptor.  This is typically done after a scatter gather operation
+* completes indicating that a data buffer has been successfully sent or data
+* has been received into the data buffer. The purpose of this function is to
+* allow the device using the scatter gather operation to get the results of the
+* operation.
+*
+* ARGUMENTS:
+*
+* InstancePtr contains a pointer to the DMA channel to operate on.  The DMA
+* channel should be configured to use scatter gather in order for this function
+* to be called.
+*
+* BufDescriptorPtr is a pointer to a pointer to the buffer descriptor which
+* was retrieved from the list. The buffer descriptor is not really removed
+* from the list, but it is changed to a state such that the hardware will not
+* use it again until it is put into the scatter gather list of the DMA channel.
+*
+* RETURN VALUE:
+*
+* A status indicating XST_SUCCESS if a buffer descriptor was retrieved from
+* the scatter gather list of the DMA channel.
+*
+* A value of XST_DMA_SG_NO_LIST indicates the scatter gather list has not
+* been created.
+*
+* A value of XST_DMA_SG_LIST_EMPTY indicates no buffer descriptor was
+* retrieved from the list because there are no buffer descriptors to be
+* processed in the list.
+*
+* BufDescriptorPtr is updated to point to the buffer descriptor which was
+* retrieved from the list if the status indicates success.
+*
+* NOTES:
+*
+* None.
+*
+******************************************************************************/
+XStatus
+XDmaChannel_GetDescriptor(XDmaChannel * InstancePtr,
+                         XBufDescriptor ** BufDescriptorPtr)
+{
+       u32 Control;
+
+       /* assert to verify input arguments */
+
+       XASSERT_NONVOID(InstancePtr != NULL);
+       XASSERT_NONVOID(BufDescriptorPtr != NULL);
+       XASSERT_NONVOID(InstancePtr->IsReady == XCOMPONENT_IS_READY);
+
+       /* if a scatter gather list has not been created yet, return a status */
+
+       if (InstancePtr->TotalDescriptorCount == 0) {
+               return XST_DMA_SG_NO_LIST;
+       }
+
+       /* if the buffer descriptor list is empty, then indicate an error */
+
+       if (XDmaChannel_IsSgListEmpty(InstancePtr)) {
+               return XST_DMA_SG_LIST_EMPTY;
+       }
+
+       /* retrieve the next buffer descriptor which is ready to be processed from
+        * the buffer descriptor list for the DMA channel, set the control word
+        * such that hardware will stop after the descriptor has been processed
+        */
+       Control = XBufDescriptor_GetControl(InstancePtr->GetPtr);
+       XBufDescriptor_SetControl(InstancePtr->GetPtr,
+                                 Control | XDC_DMACR_SG_DISABLE_MASK);
+
+       /* set the input argument, which is also an output, to point to the
+        * buffer descriptor which is to be retrieved from the list
+        */
+       *BufDescriptorPtr = InstancePtr->GetPtr;
+
+       /* update the pointer of the DMA channel to reflect the buffer descriptor
+        * was retrieved from the list by setting it to the next buffer descriptor
+        * in the list and indicate one less descriptor in the list now
+        */
+       InstancePtr->GetPtr = XBufDescriptor_GetNextPtr(InstancePtr->GetPtr);
+       InstancePtr->ActiveDescriptorCount--;
+
+       return XST_SUCCESS;
+}
+
+/*********************** Interrupt Collescing Functions **********************/
+
+/******************************************************************************
+*
+* FUNCTION:
+*
+* XDmaChannel_GetPktCount
+*
+* DESCRIPTION:
+*
+* This function returns the value of the unserviced packet count register of
+* the DMA channel.  This count represents the number of packets that have been
+* sent or received by the hardware, but not processed by software.
+*
+* ARGUMENTS:
+*
+* InstancePtr contains a pointer to the DMA channel to operate on.  The DMA
+* channel should be configured to use scatter gather in order for this function
+* to be called.
+*
+* RETURN VALUE:
+*
+* The unserviced packet counter register contents for the DMA channel.
+*
+* NOTES:
+*
+* None.
+*
+******************************************************************************/
+u32
+XDmaChannel_GetPktCount(XDmaChannel * InstancePtr)
+{
+       /* assert to verify input arguments */
+
+       XASSERT_NONVOID(InstancePtr != NULL);
+       XASSERT_NONVOID(InstancePtr->IsReady == XCOMPONENT_IS_READY);
+
+       /* get the unserviced packet count from the register and return it */
+
+       return XIo_In32(InstancePtr->RegBaseAddress + XDC_UPC_REG_OFFSET);
+}
+
+/******************************************************************************
+*
+* FUNCTION:
+*
+* XDmaChannel_DecrementPktCount
+*
+* DESCRIPTION:
+*
+* This function decrements the value of the unserviced packet count register.
+* This informs the hardware that the software has processed a packet.  The
+* unserviced packet count register may only be decremented by one in the
+* hardware.
+*
+* ARGUMENTS:
+*
+* InstancePtr contains a pointer to the DMA channel to operate on.  The DMA
+* channel should be configured to use scatter gather in order for this function
+* to be called.
+*
+* RETURN VALUE:
+*
+* None.
+*
+* NOTES:
+*
+* None.
+*
+******************************************************************************/
+void
+XDmaChannel_DecrementPktCount(XDmaChannel * InstancePtr)
+{
+       u32 Register;
+
+       /* assert to verify input arguments */
+
+       XASSERT_VOID(InstancePtr != NULL);
+       XASSERT_VOID(InstancePtr->IsReady == XCOMPONENT_IS_READY);
+
+       /* if the unserviced packet count register can be decremented (rather
+        * than rolling over) decrement it by writing a 1 to the register,
+        * this is the only valid write to the register as it serves as an
+        * acknowledge that a packet was handled by the software
+        */
+       Register = XIo_In32(InstancePtr->RegBaseAddress + XDC_UPC_REG_OFFSET);
+       if (Register > 0) {
+               XIo_Out32(InstancePtr->RegBaseAddress + XDC_UPC_REG_OFFSET,
+                         1UL);
+       }
+}
+
+/******************************************************************************
+*
+* FUNCTION:
+*
+* XDmaChannel_SetPktThreshold
+*
+* DESCRIPTION:
+*
+* This function sets the value of the packet count threshold register of the
+* DMA channel. It reflects the number of packets that must be sent or
+* received before generating an interrupt.  This value helps implement
+* a concept called "interrupt coalescing", which is used to reduce the number
+* of interrupts from devices with high data rates.
+*
+* ARGUMENTS:
+*
+* InstancePtr contains a pointer to the DMA channel to operate on.  The DMA
+* channel should be configured to use scatter gather in order for this function
+* to be called.
+*
+* Threshold is the value that is written to the threshold register of the
+* DMA channel.
+*
+* RETURN VALUE:
+*
+* A status containing XST_SUCCESS if the packet count threshold was
+* successfully set.
+*
+* NOTES:
+*
+* The packet threshold could be set to larger than the number of descriptors
+* allocated to the DMA channel. In this case, the wait bound will take over
+* and always indicate data arrival. There was a check in this function that
+* returned an error if the treshold was larger than the number of descriptors,
+* but that was removed because users would then have to set the threshold
+* only after they set descriptor space, which is an order dependency that
+* caused confustion.
+*
+******************************************************************************/
+XStatus
+XDmaChannel_SetPktThreshold(XDmaChannel * InstancePtr, u8 Threshold)
+{
+       /* assert to verify input arguments, don't assert the threshold since
+        * it's range is unknown
+        */
+       XASSERT_NONVOID(InstancePtr != NULL);
+       XASSERT_NONVOID(InstancePtr->IsReady == XCOMPONENT_IS_READY);
+
+       /* set the packet count threshold in the register such that an interrupt
+        * may be generated, if enabled, when the packet count threshold is
+        * reached or exceeded
+        */
+       XIo_Out32(InstancePtr->RegBaseAddress + XDC_PCT_REG_OFFSET,
+                 (u32) Threshold);
+
+       /* indicate the packet count threshold was successfully set */
+
+       return XST_SUCCESS;
+}
+
+/******************************************************************************
+*
+* FUNCTION:
+*
+* XDmaChannel_GetPktThreshold
+*
+* DESCRIPTION:
+*
+* This function gets the value of the packet count threshold register of the
+* DMA channel. This value reflects the number of packets that must be sent or
+* received before generating an interrupt.  This value helps implement a concept
+* called "interrupt coalescing", which is used to reduce the number of
+* interrupts from devices with high data rates.
+*
+* ARGUMENTS:
+*
+* InstancePtr contains a pointer to the DMA channel to operate on.  The DMA
+* channel should be configured to use scatter gather in order for this function
+* to be called.
+*
+* RETURN VALUE:
+*
+* The packet threshold register contents for the DMA channel and is a value in
+* the range 0 - 1023.  A value of 0 indicates the packet wait bound timer is
+* disabled.
+*
+* NOTES:
+*
+* None.
+*
+******************************************************************************/
+u8
+XDmaChannel_GetPktThreshold(XDmaChannel * InstancePtr)
+{
+       /* assert to verify input arguments */
+
+       XASSERT_NONVOID(InstancePtr != NULL);
+       XASSERT_NONVOID(InstancePtr->IsReady == XCOMPONENT_IS_READY);
+
+       /* get the packet count threshold from the register and return it,
+        * since only 8 bits are used, cast it to return only those bits */
+
+       return (u8) XIo_In32(InstancePtr->RegBaseAddress + XDC_PCT_REG_OFFSET);
+}
+
+/******************************************************************************
+*
+* FUNCTION:
+*
+* XDmaChannel_SetPktWaitBound
+*
+* DESCRIPTION:
+*
+* This function sets the value of the packet wait bound register of the
+* DMA channel. This value reflects the timer value used to trigger an
+* interrupt when not enough packets have been received to reach the packet
+* count threshold.
+*
+* The timer is in millisecond units with +/- 33% accuracy.
+*
+* ARGUMENTS:
+*
+* InstancePtr contains a pointer to the DMA channel to operate on.  The DMA
+* channel should be configured to use scatter gather in order for this function
+* to be called.
+*
+* WaitBound is the value, in milliseconds, to be stored in the wait bound
+* register of the DMA channel and is a value in the range 0  - 1023.  A value
+* of 0 disables the packet wait bound timer.
+*
+* RETURN VALUE:
+*
+* None.
+*
+* NOTES:
+*
+* None.
+*
+******************************************************************************/
+void
+XDmaChannel_SetPktWaitBound(XDmaChannel * InstancePtr, u32 WaitBound)
+{
+       /* assert to verify input arguments */
+
+       XASSERT_VOID(InstancePtr != NULL);
+       XASSERT_VOID(WaitBound < 1024);
+       XASSERT_VOID(InstancePtr->IsReady == XCOMPONENT_IS_READY);
+
+       /* set the packet wait bound in the register such that interrupt may be
+        * generated, if enabled, when packets have not been handled for a specific
+        * amount of time
+        */
+       XIo_Out32(InstancePtr->RegBaseAddress + XDC_PWB_REG_OFFSET, WaitBound);
+}
+
+/******************************************************************************
+*
+* FUNCTION:
+*
+* XDmaChannel_GetPktWaitBound
+*
+* DESCRIPTION:
+*
+* This function gets the value of the packet wait bound register of the
+* DMA channel. This value contains the timer value used to trigger an
+* interrupt when not enough packets have been received to reach the packet
+* count threshold.
+*
+* The timer is in millisecond units with +/- 33% accuracy.
+*
+* ARGUMENTS:
+*
+* InstancePtr contains a pointer to the DMA channel to operate on.  The DMA
+* channel should be configured to use scatter gather in order for this function
+* to be called.
+*
+* RETURN VALUE:
+*
+* The packet wait bound register contents for the DMA channel.
+*
+* NOTES:
+*
+* None.
+*
+******************************************************************************/
+u32
+XDmaChannel_GetPktWaitBound(XDmaChannel * InstancePtr)
+{
+       /* assert to verify input arguments */
+
+       XASSERT_NONVOID(InstancePtr != NULL);
+       XASSERT_NONVOID(InstancePtr->IsReady == XCOMPONENT_IS_READY);
+
+       /* get the packet wait bound from the register and return it */
+
+       return XIo_In32(InstancePtr->RegBaseAddress + XDC_PWB_REG_OFFSET);
+}
diff -Naur u-boot-2009.03_orig/board/xilinx/common/xipif_v1_23_b.c u-boot-2009.03/board/xilinx/common/xipif_v1_23_b.c
--- u-boot-2009.03_orig/board/xilinx/common/xipif_v1_23_b.c     2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/board/xilinx/common/xipif_v1_23_b.c  2009-03-31 14:48:17.382892800 -0700
@@ -1,331 +1,331 @@
-/* $Id: xipif_v1_23_b.c,v 1.1 2002/03/18 23:24:52 linnj Exp $ */
-/******************************************************************************
-*
-*       XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS"
-*       AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND
-*       SOLUTIONS FOR XILINX DEVICES.  BY PROVIDING THIS DESIGN, CODE,
-*       OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE,
-*       APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION
-*       THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT,
-*       AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE
-*       FOR YOUR IMPLEMENTATION.  XILINX EXPRESSLY DISCLAIMS ANY
-*       WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE
-*       IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR
-*       REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF
-*       INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-*       FOR A PARTICULAR PURPOSE.
-*
-*       (c) Copyright 2002 Xilinx Inc.
-*       All rights reserved.
-*
-******************************************************************************/
-/******************************************************************************
-*
-* FILENAME:
-*
-* xipif.c
-*
-* DESCRIPTION:
-*
-* This file contains the implementation of the XIpIf component. The
-* XIpIf component encapsulates the IPIF, which is the standard interface
-* that IP must adhere to when connecting to a bus.  The purpose of this
-* component is to encapsulate the IPIF processing such that maintainability
-* is increased.  This component does not provide a lot of abstraction from
-* from the details of the IPIF as it is considered a building block for
-* device drivers.  A device driver designer must be familiar with the
-* details of the IPIF hardware to use this component.
-*
-* The IPIF hardware provides a building block for all hardware devices such
-* that each device does not need to reimplement these building blocks. The
-* IPIF contains other building blocks, such as FIFOs and DMA channels, which
-* are also common to many devices.  These blocks are implemented as separate
-* hardware blocks and instantiated within the IPIF.  The primary hardware of
-* the IPIF which is implemented by this software component is the interrupt
-* architecture.  Since there are many blocks of a device which may generate
-* interrupts, all the interrupt processing is contained in the common part
-* of the device, the IPIF.  This interrupt processing is for the device level
-* only and does not include any processing for the interrupt controller.
-*
-* A device is a mechanism such as an Ethernet MAC.  The device is made
-* up of several parts which include an IPIF and the IP.  The IPIF contains most
-* of the device infrastructure which is common to all devices, such as
-* interrupt processing, DMA channels, and FIFOs.  The infrastructure may also
-* be referred to as IPIF internal blocks since they are part of the IPIF and
-* are separate blocks that can be selected based upon the needs of the device.
-* The IP of the device is the logic that is unique to the device and interfaces
-* to the IPIF of the device.
-*
-* In general, there are two levels of registers within the IPIF.  The first
-* level, referred to as the device level, contains registers which are for the
-* entire device.  The second level, referred to as the IP level, contains
-* registers which are specific to the IP of the device.  The two levels of
-* registers are designed to be hierarchical such that the device level is
-* is a more general register set above the more specific registers of the IP.
-* The IP level of registers provides functionality which is typically common
-* across all devices and allows IP designers to focus on the unique aspects
-* of the IP.
-*
-* The interrupt registers of the IPIF are parameterizable such that the only
-* the number of bits necessary for the device are implemented. The functions
-* of this component do not attempt to validate that the passed in arguments are
-* valid based upon the number of implemented bits.  This is necessary to
-* maintain the level of performance required for the common components.  Bits
-* of the registers are assigned starting at the least significant bit of the
-* registers.
-*
-* Critical Sections
-*
-* It is the responsibility of the device driver designer to use critical
-* sections as necessary when calling functions of the IPIF.  This component
-* does not use critical sections and it does access registers using
-* read-modify-write operations.  Calls to IPIF functions from a main thread
-* and from an interrupt context could produce unpredictable behavior such that
-* the caller must provide the appropriate critical sections.
-*
-* Mutual Exclusion
-*
-* The functions of the IPIF are not thread safe such that the caller of all
-* functions is responsible for ensuring mutual exclusion for an IPIF.  Mutual
-* exclusion across multiple IPIF components is not necessary.
-*
-* NOTES:
-*
-* None.
-*
-* MODIFICATION HISTORY:
-*
-* Ver   Who  Date     Changes
-* ----- ---- -------- -----------------------------------------------
-* 1.23b jhl  02/27/01 Repartioned to reduce size
-*
-******************************************************************************/
-
-/***************************** Include Files *********************************/
-
-#include "xipif_v1_23_b.h"
-#include "xio.h"
-
-/************************** Constant Definitions *****************************/
-
-/* the following constant is used to generate bit masks for register testing
- * in the self test functions, it defines the starting bit mask that is to be
- * shifted from the LSB to MSB in creating a register test mask
- */
-#define XIIF_V123B_FIRST_BIT_MASK     1UL
-
-/**************************** Type Definitions *******************************/
-
-/***************** Macros (Inline Functions) Definitions *********************/
-
-/************************** Variable Definitions *****************************/
-
-/************************** Function Prototypes ******************************/
-
-static XStatus IpIntrSelfTest(u32 RegBaseAddress, u32 IpRegistersWidth);
-
-/******************************************************************************
-*
-* FUNCTION:
-*
-* XIpIf_SelfTest
-*
-* DESCRIPTION:
-*
-* This function performs a self test on the specified IPIF component.  Many
-* of the registers in the IPIF are tested to ensure proper operation.  This
-* function is destructive because the IPIF is reset at the start of the test
-* and at the end of the test to ensure predictable results.  The IPIF reset
-* also resets the entire device that uses the IPIF.  This function exits with
-* all interrupts for the device disabled.
-*
-* ARGUMENTS:
-*
-* InstancePtr points to the XIpIf to operate on.
-*
-* DeviceRegistersWidth contains the number of bits in the device interrupt
-* registers. The hardware is parameterizable such that only the number of bits
-* necessary to support a device are implemented.  This value must be between 0
-* and 32 with 0 indicating there are no device interrupt registers used.
-*
-* IpRegistersWidth contains the number of bits in the IP interrupt registers
-* of the device.  The hardware is parameterizable such that only the number of
-* bits necessary to support a device are implemented.  This value must be
-* between 0 and 32 with 0 indicating there are no IP interrupt registers used.
-*
-* RETURN VALUE:
-*
-* A value of XST_SUCCESS indicates the test was successful with no errors.
-* Any one of the following error values may also be returned.
-*
-*   XST_IPIF_RESET_REGISTER_ERROR       The value of a register at reset was
-*                                       not valid
-*   XST_IPIF_IP_STATUS_ERROR            A write to the IP interrupt status
-*                                       register did not read back correctly
-*   XST_IPIF_IP_ACK_ERROR               One or more bits in the IP interrupt
-*                                       status register did not reset when acked
-*   XST_IPIF_IP_ENABLE_ERROR            The IP interrupt enable register
-*                                       did not read back correctly based upon
-*                                       what was written to it
-*
-* NOTES:
-*
-* None.
-*
-******************************************************************************/
-
-/* the following constant defines the maximum number of bits which may be
- * used in the registers at the device and IP levels, this is based upon the
- * number of bits available in the registers
- */
-#define XIIF_V123B_MAX_REG_BIT_COUNT 32
-
-XStatus
-XIpIfV123b_SelfTest(u32 RegBaseAddress, u8 IpRegistersWidth)
-{
-       XStatus Status;
-
-       /* assert to verify arguments are valid */
-
-       XASSERT_NONVOID(IpRegistersWidth <= XIIF_V123B_MAX_REG_BIT_COUNT);
-
-       /* reset the IPIF such that it's in a known state before the test
-        * and interrupts are globally disabled
-        */
-       XIIF_V123B_RESET(RegBaseAddress);
-
-       /* perform the self test on the IP interrupt registers, if
-        * it is not successful exit with the status
-        */
-       Status = IpIntrSelfTest(RegBaseAddress, IpRegistersWidth);
-       if (Status != XST_SUCCESS) {
-               return Status;
-       }
-
-       /* reset the IPIF such that it's in a known state before exiting test */
-
-       XIIF_V123B_RESET(RegBaseAddress);
-
-       /* reaching this point means there were no errors, return success */
-
-       return XST_SUCCESS;
-}
-
-/******************************************************************************
-*
-* FUNCTION:
-*
-* IpIntrSelfTest
-*
-* DESCRIPTION:
-*
-* Perform a self test on the IP interrupt registers of the IPIF. This
-* function modifies registers of the IPIF such that they are not guaranteed
-* to be in the same state when it returns.  Any bits in the IP interrupt
-* status register which are set are assumed to be set by default after a reset
-* and are not tested in the test.
-*
-* ARGUMENTS:
-*
-* InstancePtr points to the XIpIf to operate on.
-*
-* IpRegistersWidth contains the number of bits in the IP interrupt registers
-* of the device.  The hardware is parameterizable such that only the number of
-* bits necessary to support a device are implemented.  This value must be
-* between 0 and 32 with 0 indicating there are no IP interrupt registers used.
-*
-* RETURN VALUE:
-*
-* A status indicating XST_SUCCESS if the test was successful.  Otherwise, one
-* of the following values is returned.
-*
-*   XST_IPIF_RESET_REGISTER_ERROR       The value of a register at reset was
-*                                       not valid
-*   XST_IPIF_IP_STATUS_ERROR            A write to the IP interrupt status
-*                                       register did not read back correctly
-*   XST_IPIF_IP_ACK_ERROR               One or more bits in the IP status
-*                                       register did not reset when acked
-*   XST_IPIF_IP_ENABLE_ERROR            The IP interrupt enable register
-*                                       did not read back correctly based upon
-*                                       what was written to it
-* NOTES:
-*
-* None.
-*
-******************************************************************************/
-static XStatus
-IpIntrSelfTest(u32 RegBaseAddress, u32 IpRegistersWidth)
-{
-       /* ensure that the IP interrupt interrupt enable register is  zero
-        * as it should be at reset, the interrupt status is dependent upon the
-        * IP such that it's reset value is not known
-        */
-       if (XIIF_V123B_READ_IIER(RegBaseAddress) != 0) {
-               return XST_IPIF_RESET_REGISTER_ERROR;
-       }
-
-       /* if there are any used IP interrupts, then test all of the interrupt
-        * bits in all testable registers
-        */
-       if (IpRegistersWidth > 0) {
-               u32 BitCount;
-               u32 IpInterruptMask = XIIF_V123B_FIRST_BIT_MASK;
-               u32 Mask = XIIF_V123B_FIRST_BIT_MASK;   /* bits assigned MSB to LSB */
-               u32 InterruptStatus;
-
-               /* generate the register masks to be used for IP register tests, the
-                * number of bits supported by the hardware is parameterizable such
-                * that only that number of bits are implemented in the registers, the
-                * bits are allocated starting at the MSB of the registers
-                */
-               for (BitCount = 1; BitCount < IpRegistersWidth; BitCount++) {
-                       Mask = Mask << 1;
-                       IpInterruptMask |= Mask;
-               }
-
-               /* get the current IP interrupt status register contents, any bits
-                * already set must default to 1 at reset in the device and these
-                * bits can't be tested in the following test, remove these bits from
-                * the mask that was generated for the test
-                */
-               InterruptStatus = XIIF_V123B_READ_IISR(RegBaseAddress);
-               IpInterruptMask &= ~InterruptStatus;
-
-               /* set the bits in the device status register and verify them by reading
-                * the register again, all bits of the register are latched
-                */
-               XIIF_V123B_WRITE_IISR(RegBaseAddress, IpInterruptMask);
-               InterruptStatus = XIIF_V123B_READ_IISR(RegBaseAddress);
-               if ((InterruptStatus & IpInterruptMask) != IpInterruptMask)
-               {
-                       return XST_IPIF_IP_STATUS_ERROR;
-               }
-
-               /* test to ensure that the bits set in the IP interrupt status register
-                * can be cleared by acknowledging them in the IP interrupt status
-                * register then read it again and verify it was cleared
-                */
-               XIIF_V123B_WRITE_IISR(RegBaseAddress, IpInterruptMask);
-               InterruptStatus = XIIF_V123B_READ_IISR(RegBaseAddress);
-               if ((InterruptStatus & IpInterruptMask) != 0) {
-                       return XST_IPIF_IP_ACK_ERROR;
-               }
-
-               /* set the IP interrupt enable set register and then read the IP
-                * interrupt enable register and verify the interrupts were enabled
-                */
-               XIIF_V123B_WRITE_IIER(RegBaseAddress, IpInterruptMask);
-               if (XIIF_V123B_READ_IIER(RegBaseAddress) != IpInterruptMask) {
-                       return XST_IPIF_IP_ENABLE_ERROR;
-               }
-
-               /* clear the IP interrupt enable register and then read the
-                * IP interrupt enable register and verify the interrupts were disabled
-                */
-               XIIF_V123B_WRITE_IIER(RegBaseAddress, 0);
-               if (XIIF_V123B_READ_IIER(RegBaseAddress) != 0) {
-                       return XST_IPIF_IP_ENABLE_ERROR;
-               }
-       }
-       return XST_SUCCESS;
-}
+/* $Id: xipif_v1_23_b.c,v 1.1.1.1 2009/03/25 22:21:55 kenagy Exp $ */
+/******************************************************************************
+*
+*       XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS"
+*       AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND
+*       SOLUTIONS FOR XILINX DEVICES.  BY PROVIDING THIS DESIGN, CODE,
+*       OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE,
+*       APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION
+*       THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT,
+*       AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE
+*       FOR YOUR IMPLEMENTATION.  XILINX EXPRESSLY DISCLAIMS ANY
+*       WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE
+*       IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR
+*       REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF
+*       INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+*       FOR A PARTICULAR PURPOSE.
+*
+*       (c) Copyright 2002 Xilinx Inc.
+*       All rights reserved.
+*
+******************************************************************************/
+/******************************************************************************
+*
+* FILENAME:
+*
+* xipif.c
+*
+* DESCRIPTION:
+*
+* This file contains the implementation of the XIpIf component. The
+* XIpIf component encapsulates the IPIF, which is the standard interface
+* that IP must adhere to when connecting to a bus.  The purpose of this
+* component is to encapsulate the IPIF processing such that maintainability
+* is increased.  This component does not provide a lot of abstraction from
+* from the details of the IPIF as it is considered a building block for
+* device drivers.  A device driver designer must be familiar with the
+* details of the IPIF hardware to use this component.
+*
+* The IPIF hardware provides a building block for all hardware devices such
+* that each device does not need to reimplement these building blocks. The
+* IPIF contains other building blocks, such as FIFOs and DMA channels, which
+* are also common to many devices.  These blocks are implemented as separate
+* hardware blocks and instantiated within the IPIF.  The primary hardware of
+* the IPIF which is implemented by this software component is the interrupt
+* architecture.  Since there are many blocks of a device which may generate
+* interrupts, all the interrupt processing is contained in the common part
+* of the device, the IPIF.  This interrupt processing is for the device level
+* only and does not include any processing for the interrupt controller.
+*
+* A device is a mechanism such as an Ethernet MAC.  The device is made
+* up of several parts which include an IPIF and the IP.  The IPIF contains most
+* of the device infrastructure which is common to all devices, such as
+* interrupt processing, DMA channels, and FIFOs.  The infrastructure may also
+* be referred to as IPIF internal blocks since they are part of the IPIF and
+* are separate blocks that can be selected based upon the needs of the device.
+* The IP of the device is the logic that is unique to the device and interfaces
+* to the IPIF of the device.
+*
+* In general, there are two levels of registers within the IPIF.  The first
+* level, referred to as the device level, contains registers which are for the
+* entire device.  The second level, referred to as the IP level, contains
+* registers which are specific to the IP of the device.  The two levels of
+* registers are designed to be hierarchical such that the device level is
+* is a more general register set above the more specific registers of the IP.
+* The IP level of registers provides functionality which is typically common
+* across all devices and allows IP designers to focus on the unique aspects
+* of the IP.
+*
+* The interrupt registers of the IPIF are parameterizable such that the only
+* the number of bits necessary for the device are implemented. The functions
+* of this component do not attempt to validate that the passed in arguments are
+* valid based upon the number of implemented bits.  This is necessary to
+* maintain the level of performance required for the common components.  Bits
+* of the registers are assigned starting at the least significant bit of the
+* registers.
+*
+* Critical Sections
+*
+* It is the responsibility of the device driver designer to use critical
+* sections as necessary when calling functions of the IPIF.  This component
+* does not use critical sections and it does access registers using
+* read-modify-write operations.  Calls to IPIF functions from a main thread
+* and from an interrupt context could produce unpredictable behavior such that
+* the caller must provide the appropriate critical sections.
+*
+* Mutual Exclusion
+*
+* The functions of the IPIF are not thread safe such that the caller of all
+* functions is responsible for ensuring mutual exclusion for an IPIF.  Mutual
+* exclusion across multiple IPIF components is not necessary.
+*
+* NOTES:
+*
+* None.
+*
+* MODIFICATION HISTORY:
+*
+* Ver   Who  Date     Changes
+* ----- ---- -------- -----------------------------------------------
+* 1.23b jhl  02/27/01 Repartioned to reduce size
+*
+******************************************************************************/
+
+/***************************** Include Files *********************************/
+
+#include "xipif_v1_23_b.h"
+#include "xio.h"
+
+/************************** Constant Definitions *****************************/
+
+/* the following constant is used to generate bit masks for register testing
+ * in the self test functions, it defines the starting bit mask that is to be
+ * shifted from the LSB to MSB in creating a register test mask
+ */
+#define XIIF_V123B_FIRST_BIT_MASK     1UL
+
+/**************************** Type Definitions *******************************/
+
+/***************** Macros (Inline Functions) Definitions *********************/
+
+/************************** Variable Definitions *****************************/
+
+/************************** Function Prototypes ******************************/
+
+static XStatus IpIntrSelfTest(u32 RegBaseAddress, u32 IpRegistersWidth);
+
+/******************************************************************************
+*
+* FUNCTION:
+*
+* XIpIf_SelfTest
+*
+* DESCRIPTION:
+*
+* This function performs a self test on the specified IPIF component.  Many
+* of the registers in the IPIF are tested to ensure proper operation.  This
+* function is destructive because the IPIF is reset at the start of the test
+* and at the end of the test to ensure predictable results.  The IPIF reset
+* also resets the entire device that uses the IPIF.  This function exits with
+* all interrupts for the device disabled.
+*
+* ARGUMENTS:
+*
+* InstancePtr points to the XIpIf to operate on.
+*
+* DeviceRegistersWidth contains the number of bits in the device interrupt
+* registers. The hardware is parameterizable such that only the number of bits
+* necessary to support a device are implemented.  This value must be between 0
+* and 32 with 0 indicating there are no device interrupt registers used.
+*
+* IpRegistersWidth contains the number of bits in the IP interrupt registers
+* of the device.  The hardware is parameterizable such that only the number of
+* bits necessary to support a device are implemented.  This value must be
+* between 0 and 32 with 0 indicating there are no IP interrupt registers used.
+*
+* RETURN VALUE:
+*
+* A value of XST_SUCCESS indicates the test was successful with no errors.
+* Any one of the following error values may also be returned.
+*
+*   XST_IPIF_RESET_REGISTER_ERROR       The value of a register at reset was
+*                                       not valid
+*   XST_IPIF_IP_STATUS_ERROR            A write to the IP interrupt status
+*                                       register did not read back correctly
+*   XST_IPIF_IP_ACK_ERROR               One or more bits in the IP interrupt
+*                                       status register did not reset when acked
+*   XST_IPIF_IP_ENABLE_ERROR            The IP interrupt enable register
+*                                       did not read back correctly based upon
+*                                       what was written to it
+*
+* NOTES:
+*
+* None.
+*
+******************************************************************************/
+
+/* the following constant defines the maximum number of bits which may be
+ * used in the registers at the device and IP levels, this is based upon the
+ * number of bits available in the registers
+ */
+#define XIIF_V123B_MAX_REG_BIT_COUNT 32
+
+XStatus
+XIpIfV123b_SelfTest(u32 RegBaseAddress, u8 IpRegistersWidth)
+{
+       XStatus Status;
+
+       /* assert to verify arguments are valid */
+
+       XASSERT_NONVOID(IpRegistersWidth <= XIIF_V123B_MAX_REG_BIT_COUNT);
+
+       /* reset the IPIF such that it's in a known state before the test
+        * and interrupts are globally disabled
+        */
+       XIIF_V123B_RESET(RegBaseAddress);
+
+       /* perform the self test on the IP interrupt registers, if
+        * it is not successful exit with the status
+        */
+       Status = IpIntrSelfTest(RegBaseAddress, IpRegistersWidth);
+       if (Status != XST_SUCCESS) {
+               return Status;
+       }
+
+       /* reset the IPIF such that it's in a known state before exiting test */
+
+       XIIF_V123B_RESET(RegBaseAddress);
+
+       /* reaching this point means there were no errors, return success */
+
+       return XST_SUCCESS;
+}
+
+/******************************************************************************
+*
+* FUNCTION:
+*
+* IpIntrSelfTest
+*
+* DESCRIPTION:
+*
+* Perform a self test on the IP interrupt registers of the IPIF. This
+* function modifies registers of the IPIF such that they are not guaranteed
+* to be in the same state when it returns.  Any bits in the IP interrupt
+* status register which are set are assumed to be set by default after a reset
+* and are not tested in the test.
+*
+* ARGUMENTS:
+*
+* InstancePtr points to the XIpIf to operate on.
+*
+* IpRegistersWidth contains the number of bits in the IP interrupt registers
+* of the device.  The hardware is parameterizable such that only the number of
+* bits necessary to support a device are implemented.  This value must be
+* between 0 and 32 with 0 indicating there are no IP interrupt registers used.
+*
+* RETURN VALUE:
+*
+* A status indicating XST_SUCCESS if the test was successful.  Otherwise, one
+* of the following values is returned.
+*
+*   XST_IPIF_RESET_REGISTER_ERROR       The value of a register at reset was
+*                                       not valid
+*   XST_IPIF_IP_STATUS_ERROR            A write to the IP interrupt status
+*                                       register did not read back correctly
+*   XST_IPIF_IP_ACK_ERROR               One or more bits in the IP status
+*                                       register did not reset when acked
+*   XST_IPIF_IP_ENABLE_ERROR            The IP interrupt enable register
+*                                       did not read back correctly based upon
+*                                       what was written to it
+* NOTES:
+*
+* None.
+*
+******************************************************************************/
+static XStatus
+IpIntrSelfTest(u32 RegBaseAddress, u32 IpRegistersWidth)
+{
+       /* ensure that the IP interrupt interrupt enable register is  zero
+        * as it should be at reset, the interrupt status is dependent upon the
+        * IP such that it's reset value is not known
+        */
+       if (XIIF_V123B_READ_IIER(RegBaseAddress) != 0) {
+               return XST_IPIF_RESET_REGISTER_ERROR;
+       }
+
+       /* if there are any used IP interrupts, then test all of the interrupt
+        * bits in all testable registers
+        */
+       if (IpRegistersWidth > 0) {
+               u32 BitCount;
+               u32 IpInterruptMask = XIIF_V123B_FIRST_BIT_MASK;
+               u32 Mask = XIIF_V123B_FIRST_BIT_MASK;   /* bits assigned MSB to LSB */
+               u32 InterruptStatus;
+
+               /* generate the register masks to be used for IP register tests, the
+                * number of bits supported by the hardware is parameterizable such
+                * that only that number of bits are implemented in the registers, the
+                * bits are allocated starting at the MSB of the registers
+                */
+               for (BitCount = 1; BitCount < IpRegistersWidth; BitCount++) {
+                       Mask = Mask << 1;
+                       IpInterruptMask |= Mask;
+               }
+
+               /* get the current IP interrupt status register contents, any bits
+                * already set must default to 1 at reset in the device and these
+                * bits can't be tested in the following test, remove these bits from
+                * the mask that was generated for the test
+                */
+               InterruptStatus = XIIF_V123B_READ_IISR(RegBaseAddress);
+               IpInterruptMask &= ~InterruptStatus;
+
+               /* set the bits in the device status register and verify them by reading
+                * the register again, all bits of the register are latched
+                */
+               XIIF_V123B_WRITE_IISR(RegBaseAddress, IpInterruptMask);
+               InterruptStatus = XIIF_V123B_READ_IISR(RegBaseAddress);
+               if ((InterruptStatus & IpInterruptMask) != IpInterruptMask)
+               {
+                       return XST_IPIF_IP_STATUS_ERROR;
+               }
+
+               /* test to ensure that the bits set in the IP interrupt status register
+                * can be cleared by acknowledging them in the IP interrupt status
+                * register then read it again and verify it was cleared
+                */
+               XIIF_V123B_WRITE_IISR(RegBaseAddress, IpInterruptMask);
+               InterruptStatus = XIIF_V123B_READ_IISR(RegBaseAddress);
+               if ((InterruptStatus & IpInterruptMask) != 0) {
+                       return XST_IPIF_IP_ACK_ERROR;
+               }
+
+               /* set the IP interrupt enable set register and then read the IP
+                * interrupt enable register and verify the interrupts were enabled
+                */
+               XIIF_V123B_WRITE_IIER(RegBaseAddress, IpInterruptMask);
+               if (XIIF_V123B_READ_IIER(RegBaseAddress) != IpInterruptMask) {
+                       return XST_IPIF_IP_ENABLE_ERROR;
+               }
+
+               /* clear the IP interrupt enable register and then read the
+                * IP interrupt enable register and verify the interrupts were disabled
+                */
+               XIIF_V123B_WRITE_IIER(RegBaseAddress, 0);
+               if (XIIF_V123B_READ_IIER(RegBaseAddress) != 0) {
+                       return XST_IPIF_IP_ENABLE_ERROR;
+               }
+       }
+       return XST_SUCCESS;
+}
diff -Naur u-boot-2009.03_orig/board/xilinx/common/xipif_v1_23_b.h u-boot-2009.03/board/xilinx/common/xipif_v1_23_b.h
--- u-boot-2009.03_orig/board/xilinx/common/xipif_v1_23_b.h     2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/board/xilinx/common/xipif_v1_23_b.h  2009-03-31 14:48:17.429767200 -0700
@@ -1,746 +1,746 @@
-/* $Id: xipif_v1_23_b.h,v 1.1 2002/03/18 23:24:52 linnj Exp $ */
-/******************************************************************************
-*
-*      XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS"
-*      AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND
-*      SOLUTIONS FOR XILINX DEVICES.  BY PROVIDING THIS DESIGN, CODE,
-*      OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE,
-*      APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION
-*      THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT,
-*      AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE
-*      FOR YOUR IMPLEMENTATION.  XILINX EXPRESSLY DISCLAIMS ANY
-*      WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE
-*      IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR
-*      REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF
-*      INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-*      FOR A PARTICULAR PURPOSE.
-*
-*      (c) Copyright 2002 Xilinx Inc.
-*      All rights reserved.
-*
-******************************************************************************/
-/******************************************************************************
-*
-* FILENAME:
-*
-* xipif.h
-*
-* DESCRIPTION:
-*
-* The XIpIf component encapsulates the IPIF, which is the standard interface
-* that IP must adhere to when connecting to a bus.  The purpose of this
-* component is to encapsulate the IPIF processing such that maintainability
-* is increased.         This component does not provide a lot of abstraction from
-* from the details of the IPIF as it is considered a building block for
-* device drivers.  A device driver designer must be familiar with the
-* details of the IPIF hardware to use this component.
-*
-* The IPIF hardware provides a building block for all hardware devices such
-* that each device does not need to reimplement these building blocks. The
-* IPIF contains other building blocks, such as FIFOs and DMA channels, which
-* are also common to many devices.  These blocks are implemented as separate
-* hardware blocks and instantiated within the IPIF.  The primary hardware of
-* the IPIF which is implemented by this software component is the interrupt
-* architecture.         Since there are many blocks of a device which may generate
-* interrupts, all the interrupt processing is contained in the common part
-* of the device, the IPIF.  This interrupt processing is for the device level
-* only and does not include any processing for the interrupt controller.
-*
-* A device is a mechanism such as an Ethernet MAC.  The device is made
-* up of several parts which include an IPIF and the IP.         The IPIF contains most
-* of the device infrastructure which is common to all devices, such as
-* interrupt processing, DMA channels, and FIFOs.  The infrastructure may also
-* be referred to as IPIF internal blocks since they are part of the IPIF and
-* are separate blocks that can be selected based upon the needs of the device.
-* The IP of the device is the logic that is unique to the device and interfaces
-* to the IPIF of the device.
-*
-* In general, there are two levels of registers within the IPIF.  The first
-* level, referred to as the device level, contains registers which are for the
-* entire device.  The second level, referred to as the IP level, contains
-* registers which are specific to the IP of the device.         The two levels of
-* registers are designed to be hierarchical such that the device level is
-* is a more general register set above the more specific registers of the IP.
-* The IP level of registers provides functionality which is typically common
-* across all devices and allows IP designers to focus on the unique aspects
-* of the IP.
-*
-* Critical Sections
-*
-* It is the responsibility of the device driver designer to use critical
-* sections as necessary when calling functions of the IPIF.  This component
-* does not use critical sections and it does access registers using
-* read-modify-write operations.         Calls to IPIF functions from a main thread
-* and from an interrupt context could produce unpredictable behavior such that
-* the caller must provide the appropriate critical sections.
-*
-* Mutual Exclusion
-*
-* The functions of the IPIF are not thread safe such that the caller of all
-* functions is responsible for ensuring mutual exclusion for an IPIF.  Mutual
-* exclusion across multiple IPIF components is not necessary.
-*
-* NOTES:
-*
-* None.
-*
-* MODIFICATION HISTORY:
-*
-* Ver  Who  Date     Changes
-* ----- ---- -------- -----------------------------------------------
-* 1.23b jhl  02/27/01 Repartioned to minimize size
-*
-******************************************************************************/
-
-#ifndef XIPIF_H                        /* prevent circular inclusions */
-#define XIPIF_H                        /* by using protection macros */
-
-/***************************** Include Files *********************************/
-#include "xbasic_types.h"
-#include "xstatus.h"
-#include "xversion.h"
-
-/************************** Constant Definitions *****************************/
-
-/* the following constants define the register offsets for the registers of the
- * IPIF, there are some holes in the memory map for reserved addresses to allow
- * other registers to be added and still match the memory map of the interrupt
- * controller registers
- */
-#define XIIF_V123B_DISR_OFFSET    0UL  /* device interrupt status register */
-#define XIIF_V123B_DIPR_OFFSET    4UL  /* device interrupt pending register */
-#define XIIF_V123B_DIER_OFFSET    8UL  /* device interrupt enable register */
-#define XIIF_V123B_DIIR_OFFSET    24UL /* device interrupt ID register */
-#define XIIF_V123B_DGIER_OFFSET           28UL /* device global interrupt enable reg */
-#define XIIF_V123B_IISR_OFFSET    32UL /* IP interrupt status register */
-#define XIIF_V123B_IIER_OFFSET    40UL /* IP interrupt enable register */
-#define XIIF_V123B_RESETR_OFFSET   64UL /* reset register */
-
-#define XIIF_V123B_RESET_MASK            0xAUL
-
-/* the following constant is used for the device global interrupt enable
- * register, to enable all interrupts for the device, this is the only bit
- * in the register
- */
-#define XIIF_V123B_GINTR_ENABLE_MASK     0x80000000UL
-
-/* the following constants contain the masks to identify each internal IPIF
- * condition in the device registers of the IPIF, interrupts are assigned
- * in the register from LSB to the MSB
- */
-#define XIIF_V123B_ERROR_MASK            1UL   /* LSB of the register */
-
-/* The following constants contain interrupt IDs which identify each internal
- * IPIF condition, this value must correlate with the mask constant for the
- * error
- */
-#define XIIF_V123B_ERROR_INTERRUPT_ID    0     /* interrupt bit #, (LSB = 0) */
-#define XIIF_V123B_NO_INTERRUPT_ID       128   /* no interrupts are pending */
-
-/**************************** Type Definitions *******************************/
-
-/***************** Macros (Inline Functions) Definitions *********************/
-
-/******************************************************************************
-*
-* MACRO:
-*
-* XIIF_V123B_RESET
-*
-* DESCRIPTION:
-*
-* Reset the IPIF component and hardware.  This is a destructive operation that
-* could cause the loss of data since resetting the IPIF of a device also
-* resets the device using the IPIF and any blocks, such as FIFOs or DMA
-* channels, within the IPIF.  All registers of the IPIF will contain their
-* reset value when this function returns.
-*
-* ARGUMENTS:
-*
-* RegBaseAddress contains the base address of the IPIF registers.
-*
-* RETURN VALUE:
-*
-* None.
-*
-* NOTES:
-*
-* None.
-*
-******************************************************************************/
-
-/* the following constant is used in the reset register to cause the IPIF to
- * reset
- */
-#define XIIF_V123B_RESET(RegBaseAddress) \
-    XIo_Out32(RegBaseAddress + XIIF_V123B_RESETR_OFFSET, XIIF_V123B_RESET_MASK)
-
-/******************************************************************************
-*
-* MACRO:
-*
-* XIIF_V123B_WRITE_DISR
-*
-* DESCRIPTION:
-*
-* This function sets the device interrupt status register to the value.
-* This register indicates the status of interrupt sources for a device
-* which contains the IPIF.  The status is independent of whether interrupts
-* are enabled and could be used for polling a device at a higher level rather
-* than a more detailed level.
-*
-* Each bit of the register correlates to a specific interrupt source within the
-* device which contains the IPIF.  With the exception of some internal IPIF
-* conditions, the contents of this register are not latched but indicate
-* the live status of the interrupt sources within the device.  Writing any of
-* the non-latched bits of the register will have no effect on the register.
-*
-* For the latched bits of this register only, setting a bit which is zero
-* within this register causes an interrupt to generated.  The device global
-* interrupt enable register and the device interrupt enable register must be set
-* appropriately to allow an interrupt to be passed out of the device. The
-* interrupt is cleared by writing to this register with the bits to be
-* cleared set to a one and all others to zero. This register implements a
-* toggle on write functionality meaning any bits which are set in the value
-* written cause the bits in the register to change to the opposite state.
-*
-* This function writes the specified value to the register such that
-* some bits may be set and others cleared.  It is the caller's responsibility
-* to get the value of the register prior to setting the value to prevent a
-* destructive behavior.
-*
-* ARGUMENTS:
-*
-* RegBaseAddress contains the base address of the IPIF registers.
-*
-* Status contains the value to be written to the interrupt status register of
-* the device.  The only bits which can be written are the latched bits which
-* contain the internal IPIF conditions.         The following values may be used to
-* set the status register or clear an interrupt condition.
-*
-*   XIIF_V123B_ERROR_MASK     Indicates a device error in the IPIF
-*
-* RETURN VALUE:
-*
-* None.
-*
-* NOTES:
-*
-* None.
-*
-******************************************************************************/
-#define XIIF_V123B_WRITE_DISR(RegBaseAddress, Status) \
-    XIo_Out32((RegBaseAddress) + XIIF_V123B_DISR_OFFSET, (Status))
-
-/******************************************************************************
-*
-* MACRO:
-*
-* XIIF_V123B_READ_DISR
-*
-* DESCRIPTION:
-*
-* This function gets the device interrupt status register contents.
-* This register indicates the status of interrupt sources for a device
-* which contains the IPIF.  The status is independent of whether interrupts
-* are enabled and could be used for polling a device at a higher level.
-*
-* Each bit of the register correlates to a specific interrupt source within the
-* device which contains the IPIF.  With the exception of some internal IPIF
-* conditions, the contents of this register are not latched but indicate
-* the live status of the interrupt sources within the device.
-*
-* For only the latched bits of this register, the interrupt may be cleared by
-* writing to these bits in the status register.
-*
-* ARGUMENTS:
-*
-* RegBaseAddress contains the base address of the IPIF registers.
-*
-* RETURN VALUE:
-*
-* A status which contains the value read from the interrupt status register of
-* the device. The bit definitions are specific to the device with
-* the exception of the latched internal IPIF condition bits. The following
-* values may be used to detect internal IPIF conditions in the status.
-*
-*   XIIF_V123B_ERROR_MASK     Indicates a device error in the IPIF
-*
-* NOTES:
-*
-* None.
-*
-******************************************************************************/
-#define XIIF_V123B_READ_DISR(RegBaseAddress) \
-    XIo_In32((RegBaseAddress) + XIIF_V123B_DISR_OFFSET)
-
-/******************************************************************************
-*
-* MACRO:
-*
-* XIIF_V123B_WRITE_DIER
-*
-* DESCRIPTION:
-*
-* This function sets the device interrupt enable register contents.
-* This register controls which interrupt sources of the device are allowed to
-* generate an interrupt.  The device global interrupt enable register must also
-* be set appropriately for an interrupt to be passed out of the device.
-*
-* Each bit of the register correlates to a specific interrupt source within the
-* device which contains the IPIF.  Setting a bit in this register enables that
-* interrupt source to generate an interrupt.  Clearing a bit in this register
-* disables interrupt generation for that interrupt source.
-*
-* This function writes only the specified value to the register such that
-* some interrupts source may be enabled and others disabled.  It is the
-* caller's responsibility to get the value of the interrupt enable register
-* prior to setting the value to prevent an destructive behavior.
-*
-* An interrupt source may not be enabled to generate an interrupt, but can
-* still be polled in the interrupt status register.
-*
-* ARGUMENTS:
-*
-* RegBaseAddress contains the base address of the IPIF registers.
-*
-* Enable contains the value to be written to the interrupt enable register
-* of the device.  The bit definitions are specific to the device with
-* the exception of the internal IPIF conditions. The following
-* values may be used to enable the internal IPIF conditions interrupts.
-*
-*   XIIF_V123B_ERROR_MASK     Indicates a device error in the IPIF
-*
-* RETURN VALUE:
-*
-* None.
-*
-* NOTES:
-*
-* Signature: u32 XIIF_V123B_WRITE_DIER(u32 RegBaseAddress,
-*                                        u32 Enable)
-*
-******************************************************************************/
-#define XIIF_V123B_WRITE_DIER(RegBaseAddress, Enable) \
-    XIo_Out32((RegBaseAddress) + XIIF_V123B_DIER_OFFSET, (Enable))
-
-/******************************************************************************
-*
-* MACRO:
-*
-* XIIF_V123B_READ_DIER
-*
-* DESCRIPTION:
-*
-* This function gets the device interrupt enable register contents.
-* This register controls which interrupt sources of the device
-* are allowed to generate an interrupt.         The device global interrupt enable
-* register and the device interrupt enable register must also be set
-* appropriately for an interrupt to be passed out of the device.
-*
-* Each bit of the register correlates to a specific interrupt source within the
-* device which contains the IPIF.  Setting a bit in this register enables that
-* interrupt source to generate an interrupt if the global enable is set
-* appropriately.  Clearing a bit in this register disables interrupt generation
-* for that interrupt source regardless of the global interrupt enable.
-*
-* ARGUMENTS:
-*
-* RegBaseAddress contains the base address of the IPIF registers.
-*
-* RETURN VALUE:
-*
-* The value read from the interrupt enable register of the device.  The bit
-* definitions are specific to the device with the exception of the internal
-* IPIF conditions. The following values may be used to determine from the
-* value if the internal IPIF conditions interrupts are enabled.
-*
-*   XIIF_V123B_ERROR_MASK     Indicates a device error in the IPIF
-*
-* NOTES:
-*
-* None.
-*
-******************************************************************************/
-#define XIIF_V123B_READ_DIER(RegBaseAddress) \
-    XIo_In32((RegBaseAddress) + XIIF_V123B_DIER_OFFSET)
-
-/******************************************************************************
-*
-* MACRO:
-*
-* XIIF_V123B_READ_DIPR
-*
-* DESCRIPTION:
-*
-* This function gets the device interrupt pending register contents.
-* This register indicates the pending interrupt sources, those that are waiting
-* to be serviced by the software, for a device which contains the IPIF.
-* An interrupt must be enabled in the interrupt enable register of the IPIF to
-* be pending.
-*
-* Each bit of the register correlates to a specific interrupt source within the
-* the device which contains the IPIF.  With the exception of some internal IPIF
-* conditions, the contents of this register are not latched since the condition
-* is latched in the IP interrupt status register, by an internal block of the
-* IPIF such as a FIFO or DMA channel, or by the IP of the device.  This register
-* is read only and is not latched, but it is necessary to acknowledge (clear)
-* the interrupt condition by performing the appropriate processing for the IP
-* or block within the IPIF.
-*
-* This register can be thought of as the contents of the interrupt status
-* register ANDed with the contents of the interrupt enable register.
-*
-* ARGUMENTS:
-*
-* RegBaseAddress contains the base address of the IPIF registers.
-*
-* RETURN VALUE:
-*
-* The value read from the interrupt pending register of the device.  The bit
-* definitions are specific to the device with the exception of the latched
-* internal IPIF condition bits. The following values may be used to detect
-* internal IPIF conditions in the value.
-*
-*   XIIF_V123B_ERROR_MASK     Indicates a device error in the IPIF
-*
-* NOTES:
-*
-* None.
-*
-******************************************************************************/
-#define XIIF_V123B_READ_DIPR(RegBaseAddress) \
-    XIo_In32((RegBaseAddress) + XIIF_V123B_DIPR_OFFSET)
-
-/******************************************************************************
-*
-* MACRO:
-*
-* XIIF_V123B_READ_DIIR
-*
-* DESCRIPTION:
-*
-* This function gets the device interrupt ID for the highest priority interrupt
-* which is pending from the interrupt ID register. This function provides
-* priority resolution such that faster interrupt processing is possible.
-* Without priority resolution, it is necessary for the software to read the
-* interrupt pending register and then check each interrupt source to determine
-* if an interrupt is pending.  Priority resolution becomes more important as the
-* number of interrupt sources becomes larger.
-*
-* Interrupt priorities are based upon the bit position of the interrupt in the
-* interrupt pending register with bit 0 being the highest priority. The
-* interrupt ID is the priority of the interrupt, 0 - 31, with 0 being the
-* highest priority. The interrupt ID register is live rather than latched such
-* that multiple calls to this function may not yield the same results. A
-* special value, outside of the interrupt priority range of 0 - 31, is
-* contained in the register which indicates that no interrupt is pending.  This
-* may be useful for allowing software to continue processing interrupts in a
-* loop until there are no longer any interrupts pending.
-*
-* The interrupt ID is designed to allow a function pointer table to be used
-* in the software such that the interrupt ID is used as an index into that
-* table.  The function pointer table could contain an instance pointer, such
-* as to DMA channel, and a function pointer to the function which handles
-* that interrupt.  This design requires the interrupt processing of the device
-* driver to be partitioned into smaller more granular pieces based upon
-* hardware used by the device, such as DMA channels and FIFOs.
-*
-* It is not mandatory that this function be used by the device driver software.
-* It may choose to read the pending register and resolve the pending interrupt
-* priorities on it's own.
-*
-* ARGUMENTS:
-*
-* RegBaseAddress contains the base address of the IPIF registers.
-*
-* RETURN VALUE:
-*
-* An interrupt ID, 0 - 31, which identifies the highest priority interrupt
-* which is pending.  A value of XIIF_NO_INTERRUPT_ID indicates that there is
-* no interrupt pending. The following values may be used to identify the
-* interrupt ID for the internal IPIF interrupts.
-*
-*   XIIF_V123B_ERROR_INTERRUPT_ID     Indicates a device error in the IPIF
-*
-* NOTES:
-*
-* None.
-*
-******************************************************************************/
-#define XIIF_V123B_READ_DIIR(RegBaseAddress) \
-    XIo_In32((RegBaseAddress) + XIIF_V123B_DIIR_OFFSET)
-
-/******************************************************************************
-*
-* MACRO:
-*
-* XIIF_V123B_GLOBAL_INTR_DISABLE
-*
-* DESCRIPTION:
-*
-* This function disables all interrupts for the device by writing to the global
-* interrupt enable register.  This register provides the ability to disable
-* interrupts without any modifications to the interrupt enable register such
-* that it is minimal effort to restore the interrupts to the previous enabled
-* state.  The corresponding function, XIpIf_GlobalIntrEnable, is provided to
-* restore the interrupts to the previous enabled state.         This function is
-* designed to be used in critical sections of device drivers such that it is
-* not necessary to disable other device interrupts.
-*
-* ARGUMENTS:
-*
-* RegBaseAddress contains the base address of the IPIF registers.
-*
-* RETURN VALUE:
-*
-* None.
-*
-* NOTES:
-*
-* None.
-*
-******************************************************************************/
-#define XIIF_V123B_GINTR_DISABLE(RegBaseAddress) \
-    XIo_Out32((RegBaseAddress) + XIIF_V123B_DGIER_OFFSET, 0)
-
-/******************************************************************************
-*
-* MACRO:
-*
-* XIIF_V123B_GINTR_ENABLE
-*
-* DESCRIPTION:
-*
-* This function writes to the global interrupt enable register to enable
-* interrupts from the device.  This register provides the ability to enable
-* interrupts without any modifications to the interrupt enable register such
-* that it is minimal effort to restore the interrupts to the previous enabled
-* state.  This function does not enable individual interrupts as the interrupt
-* enable register must be set appropriately.  This function is designed to be
-* used in critical sections of device drivers such that it is not necessary to
-* disable other device interrupts.
-*
-* ARGUMENTS:
-*
-* RegBaseAddress contains the base address of the IPIF registers.
-*
-* RETURN VALUE:
-*
-* None.
-*
-* NOTES:
-*
-* None.
-*
-******************************************************************************/
-#define XIIF_V123B_GINTR_ENABLE(RegBaseAddress)                  \
-    XIo_Out32((RegBaseAddress) + XIIF_V123B_DGIER_OFFSET, \
-              XIIF_V123B_GINTR_ENABLE_MASK)
-
-/******************************************************************************
-*
-* MACRO:
-*
-* XIIF_V123B_IS_GINTR_ENABLED
-*
-* DESCRIPTION:
-*
-* This function determines if interrupts are enabled at the global level by
-* reading the gloabl interrupt register. This register provides the ability to
-* disable interrupts without any modifications to the interrupt enable register
-* such that it is minimal effort to restore the interrupts to the previous
-* enabled state.
-*
-* ARGUMENTS:
-*
-* RegBaseAddress contains the base address of the IPIF registers.
-*
-* RETURN VALUE:
-*
-* XTRUE if interrupts are enabled for the IPIF, XFALSE otherwise.
-*
-* NOTES:
-*
-* None.
-*
-******************************************************************************/
-#define XIIF_V123B_IS_GINTR_ENABLED(RegBaseAddress)            \
-    (XIo_In32((RegBaseAddress) + XIIF_V123B_DGIER_OFFSET) ==   \
-             XIIF_V123B_GINTR_ENABLE_MASK)
-
-/******************************************************************************
-*
-* MACRO:
-*
-* XIIF_V123B_WRITE_IISR
-*
-* DESCRIPTION:
-*
-* This function sets the IP interrupt status register to the specified value.
-* This register indicates the status of interrupt sources for the IP of the
-* device.  The IP is defined as the part of the device that connects to the
-* IPIF.         The status is independent of whether interrupts are enabled such that
-* the status register may also be polled when interrupts are not enabled.
-*
-* Each bit of the register correlates to a specific interrupt source within the
-* IP.  All bits of this register are latched. Setting a bit which is zero
-* within this register causes an interrupt to be generated.  The device global
-* interrupt enable register and the device interrupt enable register must be set
-* appropriately to allow an interrupt to be passed out of the device. The
-* interrupt is cleared by writing to this register with the bits to be
-* cleared set to a one and all others to zero. This register implements a
-* toggle on write functionality meaning any bits which are set in the value
-* written cause the bits in the register to change to the opposite state.
-*
-* This function writes only the specified value to the register such that
-* some status bits may be set and others cleared.  It is the caller's
-* responsibility to get the value of the register prior to setting the value
-* to prevent an destructive behavior.
-*
-* ARGUMENTS:
-*
-* RegBaseAddress contains the base address of the IPIF registers.
-*
-* Status contains the value to be written to the IP interrupt status
-* register.  The bit definitions are specific to the device IP.
-*
-* RETURN VALUE:
-*
-* None.
-*
-* NOTES:
-*
-* None.
-*
-******************************************************************************/
-#define XIIF_V123B_WRITE_IISR(RegBaseAddress, Status) \
-    XIo_Out32((RegBaseAddress) + XIIF_V123B_IISR_OFFSET, (Status))
-
-/******************************************************************************
-*
-* MACRO:
-*
-* XIIF_V123B_READ_IISR
-*
-* DESCRIPTION:
-*
-* This function gets the contents of the IP interrupt status register.
-* This register indicates the status of interrupt sources for the IP of the
-* device.  The IP is defined as the part of the device that connects to the
-* IPIF. The status is independent of whether interrupts are enabled such
-* that the status register may also be polled when interrupts are not enabled.
-*
-* Each bit of the register correlates to a specific interrupt source within the
-* device.  All bits of this register are latched.  Writing a 1 to a bit within
-* this register causes an interrupt to be generated if enabled in the interrupt
-* enable register and the global interrupt enable is set.  Since the status is
-* latched, each status bit must be acknowledged in order for the bit in the
-* status register to be updated.  Each bit can be acknowledged by writing a
-* 0 to the bit in the status register.
-
-* ARGUMENTS:
-*
-* RegBaseAddress contains the base address of the IPIF registers.
-*
-* RETURN VALUE:
-*
-* A status which contains the value read from the IP interrupt status register.
-* The bit definitions are specific to the device IP.
-*
-* NOTES:
-*
-* None.
-*
-******************************************************************************/
-#define XIIF_V123B_READ_IISR(RegBaseAddress) \
-    XIo_In32((RegBaseAddress) + XIIF_V123B_IISR_OFFSET)
-
-/******************************************************************************
-*
-* MACRO:
-*
-* XIIF_V123B_WRITE_IIER
-*
-* DESCRIPTION:
-*
-* This function sets the IP interrupt enable register contents.         This register
-* controls which interrupt sources of the IP are allowed to generate an
-* interrupt.  The global interrupt enable register and the device interrupt
-* enable register must also be set appropriately for an interrupt to be
-* passed out of the device containing the IPIF and the IP.
-*
-* Each bit of the register correlates to a specific interrupt source within the
-* IP.  Setting a bit in this register enables the interrupt source to generate
-* an interrupt.         Clearing a bit in this register disables interrupt generation
-* for that interrupt source.
-*
-* This function writes only the specified value to the register such that
-* some interrupt sources may be enabled and others disabled.  It is the
-* caller's responsibility to get the value of the interrupt enable register
-* prior to setting the value to prevent an destructive behavior.
-*
-* ARGUMENTS:
-*
-* RegBaseAddress contains the base address of the IPIF registers.
-*
-* Enable contains the value to be written to the IP interrupt enable register.
-* The bit definitions are specific to the device IP.
-*
-* RETURN VALUE:
-*
-* None.
-*
-* NOTES:
-*
-* None.
-*
-******************************************************************************/
-#define XIIF_V123B_WRITE_IIER(RegBaseAddress, Enable) \
-    XIo_Out32((RegBaseAddress) + XIIF_V123B_IIER_OFFSET, (Enable))
-
-/******************************************************************************
-*
-* MACRO:
-*
-* XIIF_V123B_READ_IIER
-*
-* DESCRIPTION:
-*
-*
-* This function gets the IP interrupt enable register contents.         This register
-* controls which interrupt sources of the IP are allowed to generate an
-* interrupt.  The global interrupt enable register and the device interrupt
-* enable register must also be set appropriately for an interrupt to be
-* passed out of the device containing the IPIF and the IP.
-*
-* Each bit of the register correlates to a specific interrupt source within the
-* IP.  Setting a bit in this register enables the interrupt source to generate
-* an interrupt.         Clearing a bit in this register disables interrupt generation
-* for that interrupt source.
-*
-* ARGUMENTS:
-*
-* RegBaseAddress contains the base address of the IPIF registers.
-*
-* RETURN VALUE:
-*
-* The contents read from the IP interrupt enable register.  The bit definitions
-* are specific to the device IP.
-*
-* NOTES:
-*
-* Signature: u32 XIIF_V123B_READ_IIER(u32 RegBaseAddress)
-*
-******************************************************************************/
-#define XIIF_V123B_READ_IIER(RegBaseAddress) \
-    XIo_In32((RegBaseAddress) + XIIF_V123B_IIER_OFFSET)
-
-/************************** Function Prototypes ******************************/
-
-/*
- * Initialization Functions
- */
-XStatus XIpIfV123b_SelfTest(u32 RegBaseAddress, u8 IpRegistersWidth);
-
-#endif                         /* end of protection macro */
+/* $Id: xipif_v1_23_b.h,v 1.1.1.1 2009/03/25 22:21:55 kenagy Exp $ */
+/******************************************************************************
+*
+*      XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS"
+*      AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND
+*      SOLUTIONS FOR XILINX DEVICES.  BY PROVIDING THIS DESIGN, CODE,
+*      OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE,
+*      APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION
+*      THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT,
+*      AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE
+*      FOR YOUR IMPLEMENTATION.  XILINX EXPRESSLY DISCLAIMS ANY
+*      WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE
+*      IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR
+*      REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF
+*      INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+*      FOR A PARTICULAR PURPOSE.
+*
+*      (c) Copyright 2002 Xilinx Inc.
+*      All rights reserved.
+*
+******************************************************************************/
+/******************************************************************************
+*
+* FILENAME:
+*
+* xipif.h
+*
+* DESCRIPTION:
+*
+* The XIpIf component encapsulates the IPIF, which is the standard interface
+* that IP must adhere to when connecting to a bus.  The purpose of this
+* component is to encapsulate the IPIF processing such that maintainability
+* is increased.         This component does not provide a lot of abstraction from
+* from the details of the IPIF as it is considered a building block for
+* device drivers.  A device driver designer must be familiar with the
+* details of the IPIF hardware to use this component.
+*
+* The IPIF hardware provides a building block for all hardware devices such
+* that each device does not need to reimplement these building blocks. The
+* IPIF contains other building blocks, such as FIFOs and DMA channels, which
+* are also common to many devices.  These blocks are implemented as separate
+* hardware blocks and instantiated within the IPIF.  The primary hardware of
+* the IPIF which is implemented by this software component is the interrupt
+* architecture.         Since there are many blocks of a device which may generate
+* interrupts, all the interrupt processing is contained in the common part
+* of the device, the IPIF.  This interrupt processing is for the device level
+* only and does not include any processing for the interrupt controller.
+*
+* A device is a mechanism such as an Ethernet MAC.  The device is made
+* up of several parts which include an IPIF and the IP.         The IPIF contains most
+* of the device infrastructure which is common to all devices, such as
+* interrupt processing, DMA channels, and FIFOs.  The infrastructure may also
+* be referred to as IPIF internal blocks since they are part of the IPIF and
+* are separate blocks that can be selected based upon the needs of the device.
+* The IP of the device is the logic that is unique to the device and interfaces
+* to the IPIF of the device.
+*
+* In general, there are two levels of registers within the IPIF.  The first
+* level, referred to as the device level, contains registers which are for the
+* entire device.  The second level, referred to as the IP level, contains
+* registers which are specific to the IP of the device.         The two levels of
+* registers are designed to be hierarchical such that the device level is
+* is a more general register set above the more specific registers of the IP.
+* The IP level of registers provides functionality which is typically common
+* across all devices and allows IP designers to focus on the unique aspects
+* of the IP.
+*
+* Critical Sections
+*
+* It is the responsibility of the device driver designer to use critical
+* sections as necessary when calling functions of the IPIF.  This component
+* does not use critical sections and it does access registers using
+* read-modify-write operations.         Calls to IPIF functions from a main thread
+* and from an interrupt context could produce unpredictable behavior such that
+* the caller must provide the appropriate critical sections.
+*
+* Mutual Exclusion
+*
+* The functions of the IPIF are not thread safe such that the caller of all
+* functions is responsible for ensuring mutual exclusion for an IPIF.  Mutual
+* exclusion across multiple IPIF components is not necessary.
+*
+* NOTES:
+*
+* None.
+*
+* MODIFICATION HISTORY:
+*
+* Ver  Who  Date     Changes
+* ----- ---- -------- -----------------------------------------------
+* 1.23b jhl  02/27/01 Repartioned to minimize size
+*
+******************************************************************************/
+
+#ifndef XIPIF_H                        /* prevent circular inclusions */
+#define XIPIF_H                        /* by using protection macros */
+
+/***************************** Include Files *********************************/
+#include "xbasic_types.h"
+#include "xstatus.h"
+#include "xversion.h"
+
+/************************** Constant Definitions *****************************/
+
+/* the following constants define the register offsets for the registers of the
+ * IPIF, there are some holes in the memory map for reserved addresses to allow
+ * other registers to be added and still match the memory map of the interrupt
+ * controller registers
+ */
+#define XIIF_V123B_DISR_OFFSET    0UL  /* device interrupt status register */
+#define XIIF_V123B_DIPR_OFFSET    4UL  /* device interrupt pending register */
+#define XIIF_V123B_DIER_OFFSET    8UL  /* device interrupt enable register */
+#define XIIF_V123B_DIIR_OFFSET    24UL /* device interrupt ID register */
+#define XIIF_V123B_DGIER_OFFSET           28UL /* device global interrupt enable reg */
+#define XIIF_V123B_IISR_OFFSET    32UL /* IP interrupt status register */
+#define XIIF_V123B_IIER_OFFSET    40UL /* IP interrupt enable register */
+#define XIIF_V123B_RESETR_OFFSET   64UL /* reset register */
+
+#define XIIF_V123B_RESET_MASK            0xAUL
+
+/* the following constant is used for the device global interrupt enable
+ * register, to enable all interrupts for the device, this is the only bit
+ * in the register
+ */
+#define XIIF_V123B_GINTR_ENABLE_MASK     0x80000000UL
+
+/* the following constants contain the masks to identify each internal IPIF
+ * condition in the device registers of the IPIF, interrupts are assigned
+ * in the register from LSB to the MSB
+ */
+#define XIIF_V123B_ERROR_MASK            1UL   /* LSB of the register */
+
+/* The following constants contain interrupt IDs which identify each internal
+ * IPIF condition, this value must correlate with the mask constant for the
+ * error
+ */
+#define XIIF_V123B_ERROR_INTERRUPT_ID    0     /* interrupt bit #, (LSB = 0) */
+#define XIIF_V123B_NO_INTERRUPT_ID       128   /* no interrupts are pending */
+
+/**************************** Type Definitions *******************************/
+
+/***************** Macros (Inline Functions) Definitions *********************/
+
+/******************************************************************************
+*
+* MACRO:
+*
+* XIIF_V123B_RESET
+*
+* DESCRIPTION:
+*
+* Reset the IPIF component and hardware.  This is a destructive operation that
+* could cause the loss of data since resetting the IPIF of a device also
+* resets the device using the IPIF and any blocks, such as FIFOs or DMA
+* channels, within the IPIF.  All registers of the IPIF will contain their
+* reset value when this function returns.
+*
+* ARGUMENTS:
+*
+* RegBaseAddress contains the base address of the IPIF registers.
+*
+* RETURN VALUE:
+*
+* None.
+*
+* NOTES:
+*
+* None.
+*
+******************************************************************************/
+
+/* the following constant is used in the reset register to cause the IPIF to
+ * reset
+ */
+#define XIIF_V123B_RESET(RegBaseAddress) \
+    XIo_Out32(RegBaseAddress + XIIF_V123B_RESETR_OFFSET, XIIF_V123B_RESET_MASK)
+
+/******************************************************************************
+*
+* MACRO:
+*
+* XIIF_V123B_WRITE_DISR
+*
+* DESCRIPTION:
+*
+* This function sets the device interrupt status register to the value.
+* This register indicates the status of interrupt sources for a device
+* which contains the IPIF.  The status is independent of whether interrupts
+* are enabled and could be used for polling a device at a higher level rather
+* than a more detailed level.
+*
+* Each bit of the register correlates to a specific interrupt source within the
+* device which contains the IPIF.  With the exception of some internal IPIF
+* conditions, the contents of this register are not latched but indicate
+* the live status of the interrupt sources within the device.  Writing any of
+* the non-latched bits of the register will have no effect on the register.
+*
+* For the latched bits of this register only, setting a bit which is zero
+* within this register causes an interrupt to generated.  The device global
+* interrupt enable register and the device interrupt enable register must be set
+* appropriately to allow an interrupt to be passed out of the device. The
+* interrupt is cleared by writing to this register with the bits to be
+* cleared set to a one and all others to zero. This register implements a
+* toggle on write functionality meaning any bits which are set in the value
+* written cause the bits in the register to change to the opposite state.
+*
+* This function writes the specified value to the register such that
+* some bits may be set and others cleared.  It is the caller's responsibility
+* to get the value of the register prior to setting the value to prevent a
+* destructive behavior.
+*
+* ARGUMENTS:
+*
+* RegBaseAddress contains the base address of the IPIF registers.
+*
+* Status contains the value to be written to the interrupt status register of
+* the device.  The only bits which can be written are the latched bits which
+* contain the internal IPIF conditions.         The following values may be used to
+* set the status register or clear an interrupt condition.
+*
+*   XIIF_V123B_ERROR_MASK     Indicates a device error in the IPIF
+*
+* RETURN VALUE:
+*
+* None.
+*
+* NOTES:
+*
+* None.
+*
+******************************************************************************/
+#define XIIF_V123B_WRITE_DISR(RegBaseAddress, Status) \
+    XIo_Out32((RegBaseAddress) + XIIF_V123B_DISR_OFFSET, (Status))
+
+/******************************************************************************
+*
+* MACRO:
+*
+* XIIF_V123B_READ_DISR
+*
+* DESCRIPTION:
+*
+* This function gets the device interrupt status register contents.
+* This register indicates the status of interrupt sources for a device
+* which contains the IPIF.  The status is independent of whether interrupts
+* are enabled and could be used for polling a device at a higher level.
+*
+* Each bit of the register correlates to a specific interrupt source within the
+* device which contains the IPIF.  With the exception of some internal IPIF
+* conditions, the contents of this register are not latched but indicate
+* the live status of the interrupt sources within the device.
+*
+* For only the latched bits of this register, the interrupt may be cleared by
+* writing to these bits in the status register.
+*
+* ARGUMENTS:
+*
+* RegBaseAddress contains the base address of the IPIF registers.
+*
+* RETURN VALUE:
+*
+* A status which contains the value read from the interrupt status register of
+* the device. The bit definitions are specific to the device with
+* the exception of the latched internal IPIF condition bits. The following
+* values may be used to detect internal IPIF conditions in the status.
+*
+*   XIIF_V123B_ERROR_MASK     Indicates a device error in the IPIF
+*
+* NOTES:
+*
+* None.
+*
+******************************************************************************/
+#define XIIF_V123B_READ_DISR(RegBaseAddress) \
+    XIo_In32((RegBaseAddress) + XIIF_V123B_DISR_OFFSET)
+
+/******************************************************************************
+*
+* MACRO:
+*
+* XIIF_V123B_WRITE_DIER
+*
+* DESCRIPTION:
+*
+* This function sets the device interrupt enable register contents.
+* This register controls which interrupt sources of the device are allowed to
+* generate an interrupt.  The device global interrupt enable register must also
+* be set appropriately for an interrupt to be passed out of the device.
+*
+* Each bit of the register correlates to a specific interrupt source within the
+* device which contains the IPIF.  Setting a bit in this register enables that
+* interrupt source to generate an interrupt.  Clearing a bit in this register
+* disables interrupt generation for that interrupt source.
+*
+* This function writes only the specified value to the register such that
+* some interrupts source may be enabled and others disabled.  It is the
+* caller's responsibility to get the value of the interrupt enable register
+* prior to setting the value to prevent an destructive behavior.
+*
+* An interrupt source may not be enabled to generate an interrupt, but can
+* still be polled in the interrupt status register.
+*
+* ARGUMENTS:
+*
+* RegBaseAddress contains the base address of the IPIF registers.
+*
+* Enable contains the value to be written to the interrupt enable register
+* of the device.  The bit definitions are specific to the device with
+* the exception of the internal IPIF conditions. The following
+* values may be used to enable the internal IPIF conditions interrupts.
+*
+*   XIIF_V123B_ERROR_MASK     Indicates a device error in the IPIF
+*
+* RETURN VALUE:
+*
+* None.
+*
+* NOTES:
+*
+* Signature: u32 XIIF_V123B_WRITE_DIER(u32 RegBaseAddress,
+*                                        u32 Enable)
+*
+******************************************************************************/
+#define XIIF_V123B_WRITE_DIER(RegBaseAddress, Enable) \
+    XIo_Out32((RegBaseAddress) + XIIF_V123B_DIER_OFFSET, (Enable))
+
+/******************************************************************************
+*
+* MACRO:
+*
+* XIIF_V123B_READ_DIER
+*
+* DESCRIPTION:
+*
+* This function gets the device interrupt enable register contents.
+* This register controls which interrupt sources of the device
+* are allowed to generate an interrupt.         The device global interrupt enable
+* register and the device interrupt enable register must also be set
+* appropriately for an interrupt to be passed out of the device.
+*
+* Each bit of the register correlates to a specific interrupt source within the
+* device which contains the IPIF.  Setting a bit in this register enables that
+* interrupt source to generate an interrupt if the global enable is set
+* appropriately.  Clearing a bit in this register disables interrupt generation
+* for that interrupt source regardless of the global interrupt enable.
+*
+* ARGUMENTS:
+*
+* RegBaseAddress contains the base address of the IPIF registers.
+*
+* RETURN VALUE:
+*
+* The value read from the interrupt enable register of the device.  The bit
+* definitions are specific to the device with the exception of the internal
+* IPIF conditions. The following values may be used to determine from the
+* value if the internal IPIF conditions interrupts are enabled.
+*
+*   XIIF_V123B_ERROR_MASK     Indicates a device error in the IPIF
+*
+* NOTES:
+*
+* None.
+*
+******************************************************************************/
+#define XIIF_V123B_READ_DIER(RegBaseAddress) \
+    XIo_In32((RegBaseAddress) + XIIF_V123B_DIER_OFFSET)
+
+/******************************************************************************
+*
+* MACRO:
+*
+* XIIF_V123B_READ_DIPR
+*
+* DESCRIPTION:
+*
+* This function gets the device interrupt pending register contents.
+* This register indicates the pending interrupt sources, those that are waiting
+* to be serviced by the software, for a device which contains the IPIF.
+* An interrupt must be enabled in the interrupt enable register of the IPIF to
+* be pending.
+*
+* Each bit of the register correlates to a specific interrupt source within the
+* the device which contains the IPIF.  With the exception of some internal IPIF
+* conditions, the contents of this register are not latched since the condition
+* is latched in the IP interrupt status register, by an internal block of the
+* IPIF such as a FIFO or DMA channel, or by the IP of the device.  This register
+* is read only and is not latched, but it is necessary to acknowledge (clear)
+* the interrupt condition by performing the appropriate processing for the IP
+* or block within the IPIF.
+*
+* This register can be thought of as the contents of the interrupt status
+* register ANDed with the contents of the interrupt enable register.
+*
+* ARGUMENTS:
+*
+* RegBaseAddress contains the base address of the IPIF registers.
+*
+* RETURN VALUE:
+*
+* The value read from the interrupt pending register of the device.  The bit
+* definitions are specific to the device with the exception of the latched
+* internal IPIF condition bits. The following values may be used to detect
+* internal IPIF conditions in the value.
+*
+*   XIIF_V123B_ERROR_MASK     Indicates a device error in the IPIF
+*
+* NOTES:
+*
+* None.
+*
+******************************************************************************/
+#define XIIF_V123B_READ_DIPR(RegBaseAddress) \
+    XIo_In32((RegBaseAddress) + XIIF_V123B_DIPR_OFFSET)
+
+/******************************************************************************
+*
+* MACRO:
+*
+* XIIF_V123B_READ_DIIR
+*
+* DESCRIPTION:
+*
+* This function gets the device interrupt ID for the highest priority interrupt
+* which is pending from the interrupt ID register. This function provides
+* priority resolution such that faster interrupt processing is possible.
+* Without priority resolution, it is necessary for the software to read the
+* interrupt pending register and then check each interrupt source to determine
+* if an interrupt is pending.  Priority resolution becomes more important as the
+* number of interrupt sources becomes larger.
+*
+* Interrupt priorities are based upon the bit position of the interrupt in the
+* interrupt pending register with bit 0 being the highest priority. The
+* interrupt ID is the priority of the interrupt, 0 - 31, with 0 being the
+* highest priority. The interrupt ID register is live rather than latched such
+* that multiple calls to this function may not yield the same results. A
+* special value, outside of the interrupt priority range of 0 - 31, is
+* contained in the register which indicates that no interrupt is pending.  This
+* may be useful for allowing software to continue processing interrupts in a
+* loop until there are no longer any interrupts pending.
+*
+* The interrupt ID is designed to allow a function pointer table to be used
+* in the software such that the interrupt ID is used as an index into that
+* table.  The function pointer table could contain an instance pointer, such
+* as to DMA channel, and a function pointer to the function which handles
+* that interrupt.  This design requires the interrupt processing of the device
+* driver to be partitioned into smaller more granular pieces based upon
+* hardware used by the device, such as DMA channels and FIFOs.
+*
+* It is not mandatory that this function be used by the device driver software.
+* It may choose to read the pending register and resolve the pending interrupt
+* priorities on it's own.
+*
+* ARGUMENTS:
+*
+* RegBaseAddress contains the base address of the IPIF registers.
+*
+* RETURN VALUE:
+*
+* An interrupt ID, 0 - 31, which identifies the highest priority interrupt
+* which is pending.  A value of XIIF_NO_INTERRUPT_ID indicates that there is
+* no interrupt pending. The following values may be used to identify the
+* interrupt ID for the internal IPIF interrupts.
+*
+*   XIIF_V123B_ERROR_INTERRUPT_ID     Indicates a device error in the IPIF
+*
+* NOTES:
+*
+* None.
+*
+******************************************************************************/
+#define XIIF_V123B_READ_DIIR(RegBaseAddress) \
+    XIo_In32((RegBaseAddress) + XIIF_V123B_DIIR_OFFSET)
+
+/******************************************************************************
+*
+* MACRO:
+*
+* XIIF_V123B_GLOBAL_INTR_DISABLE
+*
+* DESCRIPTION:
+*
+* This function disables all interrupts for the device by writing to the global
+* interrupt enable register.  This register provides the ability to disable
+* interrupts without any modifications to the interrupt enable register such
+* that it is minimal effort to restore the interrupts to the previous enabled
+* state.  The corresponding function, XIpIf_GlobalIntrEnable, is provided to
+* restore the interrupts to the previous enabled state.         This function is
+* designed to be used in critical sections of device drivers such that it is
+* not necessary to disable other device interrupts.
+*
+* ARGUMENTS:
+*
+* RegBaseAddress contains the base address of the IPIF registers.
+*
+* RETURN VALUE:
+*
+* None.
+*
+* NOTES:
+*
+* None.
+*
+******************************************************************************/
+#define XIIF_V123B_GINTR_DISABLE(RegBaseAddress) \
+    XIo_Out32((RegBaseAddress) + XIIF_V123B_DGIER_OFFSET, 0)
+
+/******************************************************************************
+*
+* MACRO:
+*
+* XIIF_V123B_GINTR_ENABLE
+*
+* DESCRIPTION:
+*
+* This function writes to the global interrupt enable register to enable
+* interrupts from the device.  This register provides the ability to enable
+* interrupts without any modifications to the interrupt enable register such
+* that it is minimal effort to restore the interrupts to the previous enabled
+* state.  This function does not enable individual interrupts as the interrupt
+* enable register must be set appropriately.  This function is designed to be
+* used in critical sections of device drivers such that it is not necessary to
+* disable other device interrupts.
+*
+* ARGUMENTS:
+*
+* RegBaseAddress contains the base address of the IPIF registers.
+*
+* RETURN VALUE:
+*
+* None.
+*
+* NOTES:
+*
+* None.
+*
+******************************************************************************/
+#define XIIF_V123B_GINTR_ENABLE(RegBaseAddress)                  \
+    XIo_Out32((RegBaseAddress) + XIIF_V123B_DGIER_OFFSET, \
+              XIIF_V123B_GINTR_ENABLE_MASK)
+
+/******************************************************************************
+*
+* MACRO:
+*
+* XIIF_V123B_IS_GINTR_ENABLED
+*
+* DESCRIPTION:
+*
+* This function determines if interrupts are enabled at the global level by
+* reading the gloabl interrupt register. This register provides the ability to
+* disable interrupts without any modifications to the interrupt enable register
+* such that it is minimal effort to restore the interrupts to the previous
+* enabled state.
+*
+* ARGUMENTS:
+*
+* RegBaseAddress contains the base address of the IPIF registers.
+*
+* RETURN VALUE:
+*
+* XTRUE if interrupts are enabled for the IPIF, XFALSE otherwise.
+*
+* NOTES:
+*
+* None.
+*
+******************************************************************************/
+#define XIIF_V123B_IS_GINTR_ENABLED(RegBaseAddress)            \
+    (XIo_In32((RegBaseAddress) + XIIF_V123B_DGIER_OFFSET) ==   \
+             XIIF_V123B_GINTR_ENABLE_MASK)
+
+/******************************************************************************
+*
+* MACRO:
+*
+* XIIF_V123B_WRITE_IISR
+*
+* DESCRIPTION:
+*
+* This function sets the IP interrupt status register to the specified value.
+* This register indicates the status of interrupt sources for the IP of the
+* device.  The IP is defined as the part of the device that connects to the
+* IPIF.         The status is independent of whether interrupts are enabled such that
+* the status register may also be polled when interrupts are not enabled.
+*
+* Each bit of the register correlates to a specific interrupt source within the
+* IP.  All bits of this register are latched. Setting a bit which is zero
+* within this register causes an interrupt to be generated.  The device global
+* interrupt enable register and the device interrupt enable register must be set
+* appropriately to allow an interrupt to be passed out of the device. The
+* interrupt is cleared by writing to this register with the bits to be
+* cleared set to a one and all others to zero. This register implements a
+* toggle on write functionality meaning any bits which are set in the value
+* written cause the bits in the register to change to the opposite state.
+*
+* This function writes only the specified value to the register such that
+* some status bits may be set and others cleared.  It is the caller's
+* responsibility to get the value of the register prior to setting the value
+* to prevent an destructive behavior.
+*
+* ARGUMENTS:
+*
+* RegBaseAddress contains the base address of the IPIF registers.
+*
+* Status contains the value to be written to the IP interrupt status
+* register.  The bit definitions are specific to the device IP.
+*
+* RETURN VALUE:
+*
+* None.
+*
+* NOTES:
+*
+* None.
+*
+******************************************************************************/
+#define XIIF_V123B_WRITE_IISR(RegBaseAddress, Status) \
+    XIo_Out32((RegBaseAddress) + XIIF_V123B_IISR_OFFSET, (Status))
+
+/******************************************************************************
+*
+* MACRO:
+*
+* XIIF_V123B_READ_IISR
+*
+* DESCRIPTION:
+*
+* This function gets the contents of the IP interrupt status register.
+* This register indicates the status of interrupt sources for the IP of the
+* device.  The IP is defined as the part of the device that connects to the
+* IPIF. The status is independent of whether interrupts are enabled such
+* that the status register may also be polled when interrupts are not enabled.
+*
+* Each bit of the register correlates to a specific interrupt source within the
+* device.  All bits of this register are latched.  Writing a 1 to a bit within
+* this register causes an interrupt to be generated if enabled in the interrupt
+* enable register and the global interrupt enable is set.  Since the status is
+* latched, each status bit must be acknowledged in order for the bit in the
+* status register to be updated.  Each bit can be acknowledged by writing a
+* 0 to the bit in the status register.
+
+* ARGUMENTS:
+*
+* RegBaseAddress contains the base address of the IPIF registers.
+*
+* RETURN VALUE:
+*
+* A status which contains the value read from the IP interrupt status register.
+* The bit definitions are specific to the device IP.
+*
+* NOTES:
+*
+* None.
+*
+******************************************************************************/
+#define XIIF_V123B_READ_IISR(RegBaseAddress) \
+    XIo_In32((RegBaseAddress) + XIIF_V123B_IISR_OFFSET)
+
+/******************************************************************************
+*
+* MACRO:
+*
+* XIIF_V123B_WRITE_IIER
+*
+* DESCRIPTION:
+*
+* This function sets the IP interrupt enable register contents.         This register
+* controls which interrupt sources of the IP are allowed to generate an
+* interrupt.  The global interrupt enable register and the device interrupt
+* enable register must also be set appropriately for an interrupt to be
+* passed out of the device containing the IPIF and the IP.
+*
+* Each bit of the register correlates to a specific interrupt source within the
+* IP.  Setting a bit in this register enables the interrupt source to generate
+* an interrupt.         Clearing a bit in this register disables interrupt generation
+* for that interrupt source.
+*
+* This function writes only the specified value to the register such that
+* some interrupt sources may be enabled and others disabled.  It is the
+* caller's responsibility to get the value of the interrupt enable register
+* prior to setting the value to prevent an destructive behavior.
+*
+* ARGUMENTS:
+*
+* RegBaseAddress contains the base address of the IPIF registers.
+*
+* Enable contains the value to be written to the IP interrupt enable register.
+* The bit definitions are specific to the device IP.
+*
+* RETURN VALUE:
+*
+* None.
+*
+* NOTES:
+*
+* None.
+*
+******************************************************************************/
+#define XIIF_V123B_WRITE_IIER(RegBaseAddress, Enable) \
+    XIo_Out32((RegBaseAddress) + XIIF_V123B_IIER_OFFSET, (Enable))
+
+/******************************************************************************
+*
+* MACRO:
+*
+* XIIF_V123B_READ_IIER
+*
+* DESCRIPTION:
+*
+*
+* This function gets the IP interrupt enable register contents.         This register
+* controls which interrupt sources of the IP are allowed to generate an
+* interrupt.  The global interrupt enable register and the device interrupt
+* enable register must also be set appropriately for an interrupt to be
+* passed out of the device containing the IPIF and the IP.
+*
+* Each bit of the register correlates to a specific interrupt source within the
+* IP.  Setting a bit in this register enables the interrupt source to generate
+* an interrupt.         Clearing a bit in this register disables interrupt generation
+* for that interrupt source.
+*
+* ARGUMENTS:
+*
+* RegBaseAddress contains the base address of the IPIF registers.
+*
+* RETURN VALUE:
+*
+* The contents read from the IP interrupt enable register.  The bit definitions
+* are specific to the device IP.
+*
+* NOTES:
+*
+* Signature: u32 XIIF_V123B_READ_IIER(u32 RegBaseAddress)
+*
+******************************************************************************/
+#define XIIF_V123B_READ_IIER(RegBaseAddress) \
+    XIo_In32((RegBaseAddress) + XIIF_V123B_IIER_OFFSET)
+
+/************************** Function Prototypes ******************************/
+
+/*
+ * Initialization Functions
+ */
+XStatus XIpIfV123b_SelfTest(u32 RegBaseAddress, u8 IpRegistersWidth);
+
+#endif                         /* end of protection macro */
diff -Naur u-boot-2009.03_orig/board/xilinx/microblaze-generic/CVS/Entries u-boot-2009.03/board/xilinx/microblaze-generic/CVS/Entries
--- u-boot-2009.03_orig/board/xilinx/microblaze-generic/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xilinx/microblaze-generic/CVS/Entries  2009-03-25 15:57:49.793711500 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/microblaze-generic.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xparameters.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/xilinx/microblaze-generic/CVS/Entries.Extra u-boot-2009.03/board/xilinx/microblaze-generic/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/xilinx/microblaze-generic/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xilinx/microblaze-generic/CVS/Entries.Extra    2009-03-25 15:57:49.793711500 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019715/
+/config.mk///1238019715/
+/microblaze-generic.c///1238019715/
+/u-boot.lds///1238019715/
+/xparameters.h///1238019715/
diff -Naur u-boot-2009.03_orig/board/xilinx/microblaze-generic/CVS/Entries.Extra.Old u-boot-2009.03/board/xilinx/microblaze-generic/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/xilinx/microblaze-generic/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xilinx/microblaze-generic/CVS/Entries.Extra.Old        2009-03-25 15:25:07.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019715/
+/config.mk///1238019715/
+/microblaze-generic.c///1238019715/
+/u-boot.lds///1238019715/
+/xparameters.h///1238019715/
diff -Naur u-boot-2009.03_orig/board/xilinx/microblaze-generic/CVS/Entries.Old u-boot-2009.03/board/xilinx/microblaze-generic/CVS/Entries.Old
--- u-boot-2009.03_orig/board/xilinx/microblaze-generic/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xilinx/microblaze-generic/CVS/Entries.Old      2009-03-25 15:25:07.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/microblaze-generic.c/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/xparameters.h/1.1.1.1/Wed Mar 25 22:21:55 2009//
+D
diff -Naur u-boot-2009.03_orig/board/xilinx/microblaze-generic/CVS/Repository u-boot-2009.03/board/xilinx/microblaze-generic/CVS/Repository
--- u-boot-2009.03_orig/board/xilinx/microblaze-generic/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xilinx/microblaze-generic/CVS/Repository       2009-03-25 15:25:07.118772700 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/xilinx/microblaze-generic
diff -Naur u-boot-2009.03_orig/board/xilinx/microblaze-generic/CVS/Root u-boot-2009.03/board/xilinx/microblaze-generic/CVS/Root
--- u-boot-2009.03_orig/board/xilinx/microblaze-generic/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xilinx/microblaze-generic/CVS/Root     2009-03-25 15:25:07.118772700 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/xilinx/ml300/CVS/Entries u-boot-2009.03/board/xilinx/ml300/CVS/Entries
--- u-boot-2009.03_orig/board/xilinx/ml300/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xilinx/ml300/CVS/Entries       2009-03-25 15:57:49.887460900 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ml300.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.debug/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xparameters.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/xilinx/ml300/CVS/Entries.Extra u-boot-2009.03/board/xilinx/ml300/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/xilinx/ml300/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xilinx/ml300/CVS/Entries.Extra 2009-03-25 15:57:49.887460900 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019715/
+/config.mk///1238019715/
+/init.S///1238019715/
+/ml300.c///1238019715/
+/serial.c///1238019715/
+/u-boot.lds///1238019715/
+/u-boot.lds.debug///1238019715/
+/xparameters.h///1238019715/
diff -Naur u-boot-2009.03_orig/board/xilinx/ml300/CVS/Entries.Extra.Old u-boot-2009.03/board/xilinx/ml300/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/xilinx/ml300/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xilinx/ml300/CVS/Entries.Extra.Old     2009-03-25 15:25:07.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019715/
+/config.mk///1238019715/
+/init.S///1238019715/
+/ml300.c///1238019715/
+/serial.c///1238019715/
+/u-boot.lds///1238019715/
+/u-boot.lds.debug///1238019715/
+/xparameters.h///1238019715/
diff -Naur u-boot-2009.03_orig/board/xilinx/ml300/CVS/Entries.Old u-boot-2009.03/board/xilinx/ml300/CVS/Entries.Old
--- u-boot-2009.03_orig/board/xilinx/ml300/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xilinx/ml300/CVS/Entries.Old   2009-03-25 15:25:07.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/init.S/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/ml300.c/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/serial.c/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/u-boot.lds.debug/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/xparameters.h/1.1.1.1/Wed Mar 25 22:21:55 2009//
+D
diff -Naur u-boot-2009.03_orig/board/xilinx/ml300/CVS/Repository u-boot-2009.03/board/xilinx/ml300/CVS/Repository
--- u-boot-2009.03_orig/board/xilinx/ml300/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xilinx/ml300/CVS/Repository    2009-03-25 15:25:07.243771900 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/xilinx/ml300
diff -Naur u-boot-2009.03_orig/board/xilinx/ml300/CVS/Root u-boot-2009.03/board/xilinx/ml300/CVS/Root
--- u-boot-2009.03_orig/board/xilinx/ml300/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xilinx/ml300/CVS/Root  2009-03-25 15:25:07.243771900 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/xilinx/ml507/CVS/Entries u-boot-2009.03/board/xilinx/ml507/CVS/Entries
--- u-boot-2009.03_orig/board/xilinx/ml507/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xilinx/ml507/CVS/Entries       2009-03-25 15:57:49.949960500 -0700
@@ -0,0 +1,6 @@
+/.gitignore/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ml507.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xparameters.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/xilinx/ml507/CVS/Entries.Extra u-boot-2009.03/board/xilinx/ml507/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/xilinx/ml507/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xilinx/ml507/CVS/Entries.Extra 2009-03-25 15:57:49.965585400 -0700
@@ -0,0 +1,5 @@
+/.gitignore///1238019715/
+/Makefile///1238019715/
+/config.mk///1238019715/
+/ml507.c///1238019715/
+/xparameters.h///1238019715/
diff -Naur u-boot-2009.03_orig/board/xilinx/ml507/CVS/Entries.Extra.Old u-boot-2009.03/board/xilinx/ml507/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/xilinx/ml507/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xilinx/ml507/CVS/Entries.Extra.Old     2009-03-25 15:25:07.000000000 -0700
@@ -0,0 +1,5 @@
+/.gitignore///1238019715/
+/Makefile///1238019715/
+/config.mk///1238019715/
+/ml507.c///1238019715/
+/xparameters.h///1238019715/
diff -Naur u-boot-2009.03_orig/board/xilinx/ml507/CVS/Entries.Old u-boot-2009.03/board/xilinx/ml507/CVS/Entries.Old
--- u-boot-2009.03_orig/board/xilinx/ml507/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xilinx/ml507/CVS/Entries.Old   2009-03-25 15:25:07.000000000 -0700
@@ -0,0 +1,6 @@
+/.gitignore/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/Makefile/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/ml507.c/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/xparameters.h/1.1.1.1/Wed Mar 25 22:21:55 2009//
+D
diff -Naur u-boot-2009.03_orig/board/xilinx/ml507/CVS/Repository u-boot-2009.03/board/xilinx/ml507/CVS/Repository
--- u-boot-2009.03_orig/board/xilinx/ml507/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xilinx/ml507/CVS/Repository    2009-03-25 15:25:07.493770300 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/xilinx/ml507
diff -Naur u-boot-2009.03_orig/board/xilinx/ml507/CVS/Root u-boot-2009.03/board/xilinx/ml507/CVS/Root
--- u-boot-2009.03_orig/board/xilinx/ml507/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xilinx/ml507/CVS/Root  2009-03-25 15:25:07.478145400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/xilinx/ppc405-generic/CVS/Entries u-boot-2009.03/board/xilinx/ppc405-generic/CVS/Entries
--- u-boot-2009.03_orig/board/xilinx/ppc405-generic/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xilinx/ppc405-generic/CVS/Entries      2009-03-25 15:57:50.043709900 -0700
@@ -0,0 +1,8 @@
+/.gitignore/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot-ram.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot-rom.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xilinx_ppc405_generic.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xparameters.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/xilinx/ppc405-generic/CVS/Entries.Extra u-boot-2009.03/board/xilinx/ppc405-generic/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/xilinx/ppc405-generic/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xilinx/ppc405-generic/CVS/Entries.Extra        2009-03-25 15:57:50.043709900 -0700
@@ -0,0 +1,7 @@
+/.gitignore///1238019715/
+/Makefile///1238019715/
+/config.mk///1238019715/
+/u-boot-ram.lds///1238019715/
+/u-boot-rom.lds///1238019715/
+/xilinx_ppc405_generic.c///1238019715/
+/xparameters.h///1238019715/
diff -Naur u-boot-2009.03_orig/board/xilinx/ppc405-generic/CVS/Entries.Extra.Old u-boot-2009.03/board/xilinx/ppc405-generic/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/xilinx/ppc405-generic/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xilinx/ppc405-generic/CVS/Entries.Extra.Old    2009-03-25 15:25:07.000000000 -0700
@@ -0,0 +1,7 @@
+/.gitignore///1238019715/
+/Makefile///1238019715/
+/config.mk///1238019715/
+/u-boot-ram.lds///1238019715/
+/u-boot-rom.lds///1238019715/
+/xilinx_ppc405_generic.c///1238019715/
+/xparameters.h///1238019715/
diff -Naur u-boot-2009.03_orig/board/xilinx/ppc405-generic/CVS/Entries.Old u-boot-2009.03/board/xilinx/ppc405-generic/CVS/Entries.Old
--- u-boot-2009.03_orig/board/xilinx/ppc405-generic/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xilinx/ppc405-generic/CVS/Entries.Old  2009-03-25 15:25:07.000000000 -0700
@@ -0,0 +1,8 @@
+/.gitignore/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/Makefile/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/u-boot-ram.lds/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/u-boot-rom.lds/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/xilinx_ppc405_generic.c/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/xparameters.h/1.1.1.1/Wed Mar 25 22:21:55 2009//
+D
diff -Naur u-boot-2009.03_orig/board/xilinx/ppc405-generic/CVS/Repository u-boot-2009.03/board/xilinx/ppc405-generic/CVS/Repository
--- u-boot-2009.03_orig/board/xilinx/ppc405-generic/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xilinx/ppc405-generic/CVS/Repository   2009-03-25 15:25:07.696894000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/xilinx/ppc405-generic
diff -Naur u-boot-2009.03_orig/board/xilinx/ppc405-generic/CVS/Root u-boot-2009.03/board/xilinx/ppc405-generic/CVS/Root
--- u-boot-2009.03_orig/board/xilinx/ppc405-generic/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xilinx/ppc405-generic/CVS/Root 2009-03-25 15:25:07.696894000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/xilinx/ppc440-generic/CVS/Entries u-boot-2009.03/board/xilinx/ppc440-generic/CVS/Entries
--- u-boot-2009.03_orig/board/xilinx/ppc440-generic/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xilinx/ppc440-generic/CVS/Entries      2009-03-25 15:57:50.137459300 -0700
@@ -0,0 +1,9 @@
+/.gitignore/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot-ram.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot-rom.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xilinx_ppc440_generic.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xparameters.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/xilinx/ppc440-generic/CVS/Entries.Extra u-boot-2009.03/board/xilinx/ppc440-generic/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/xilinx/ppc440-generic/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xilinx/ppc440-generic/CVS/Entries.Extra        2009-03-25 15:57:50.137459300 -0700
@@ -0,0 +1,8 @@
+/.gitignore///1238019715/
+/Makefile///1238019715/
+/config.mk///1238019715/
+/init.S///1238019715/
+/u-boot-ram.lds///1238019715/
+/u-boot-rom.lds///1238019715/
+/xilinx_ppc440_generic.c///1238019715/
+/xparameters.h///1238019715/
diff -Naur u-boot-2009.03_orig/board/xilinx/ppc440-generic/CVS/Entries.Extra.Old u-boot-2009.03/board/xilinx/ppc440-generic/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/xilinx/ppc440-generic/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xilinx/ppc440-generic/CVS/Entries.Extra.Old    2009-03-25 15:25:07.000000000 -0700
@@ -0,0 +1,8 @@
+/.gitignore///1238019715/
+/Makefile///1238019715/
+/config.mk///1238019715/
+/init.S///1238019715/
+/u-boot-ram.lds///1238019715/
+/u-boot-rom.lds///1238019715/
+/xilinx_ppc440_generic.c///1238019715/
+/xparameters.h///1238019715/
diff -Naur u-boot-2009.03_orig/board/xilinx/ppc440-generic/CVS/Entries.Old u-boot-2009.03/board/xilinx/ppc440-generic/CVS/Entries.Old
--- u-boot-2009.03_orig/board/xilinx/ppc440-generic/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xilinx/ppc440-generic/CVS/Entries.Old  2009-03-25 15:25:07.000000000 -0700
@@ -0,0 +1,9 @@
+/.gitignore/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/Makefile/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/init.S/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/u-boot-ram.lds/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/u-boot-rom.lds/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/xilinx_ppc440_generic.c/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/xparameters.h/1.1.1.1/Wed Mar 25 22:21:55 2009//
+D
diff -Naur u-boot-2009.03_orig/board/xilinx/ppc440-generic/CVS/Repository u-boot-2009.03/board/xilinx/ppc440-generic/CVS/Repository
--- u-boot-2009.03_orig/board/xilinx/ppc440-generic/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xilinx/ppc440-generic/CVS/Repository   2009-03-25 15:25:07.821893200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/xilinx/ppc440-generic
diff -Naur u-boot-2009.03_orig/board/xilinx/ppc440-generic/CVS/Root u-boot-2009.03/board/xilinx/ppc440-generic/CVS/Root
--- u-boot-2009.03_orig/board/xilinx/ppc440-generic/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xilinx/ppc440-generic/CVS/Root 2009-03-25 15:25:07.821893200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/xilinx/xilinx_enet/CVS/Entries u-boot-2009.03/board/xilinx/xilinx_enet/CVS/Entries
--- u-boot-2009.03_orig/board/xilinx/xilinx_enet/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xilinx/xilinx_enet/CVS/Entries 2009-03-25 15:57:50.246833600 -0700
@@ -0,0 +1,11 @@
+/emac_adapter.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xemac.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xemac.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xemac_g.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xemac_i.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xemac_intr.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xemac_intr_dma.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xemac_l.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xemac_options.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xemac_polled.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/xilinx/xilinx_enet/CVS/Entries.Extra u-boot-2009.03/board/xilinx/xilinx_enet/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/xilinx/xilinx_enet/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xilinx/xilinx_enet/CVS/Entries.Extra   2009-03-25 15:57:50.246833600 -0700
@@ -0,0 +1,10 @@
+/emac_adapter.c///1238019715/
+/xemac.c///1238019715/
+/xemac.h///1238019715/
+/xemac_g.c///1238019715/
+/xemac_i.h///1238019715/
+/xemac_intr.c///1238019715/
+/xemac_intr_dma.c///1238019715/
+/xemac_l.h///1238019715/
+/xemac_options.c///1238019715/
+/xemac_polled.c///1238019715/
diff -Naur u-boot-2009.03_orig/board/xilinx/xilinx_enet/CVS/Entries.Extra.Old u-boot-2009.03/board/xilinx/xilinx_enet/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/xilinx/xilinx_enet/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xilinx/xilinx_enet/CVS/Entries.Extra.Old       2009-03-25 15:25:08.000000000 -0700
@@ -0,0 +1,10 @@
+/emac_adapter.c///1238019715/
+/xemac.c///1238019715/
+/xemac.h///1238019715/
+/xemac_g.c///1238019715/
+/xemac_i.h///1238019715/
+/xemac_intr.c///1238019715/
+/xemac_intr_dma.c///1238019715/
+/xemac_l.h///1238019715/
+/xemac_options.c///1238019715/
+/xemac_polled.c///1238019715/
diff -Naur u-boot-2009.03_orig/board/xilinx/xilinx_enet/CVS/Entries.Old u-boot-2009.03/board/xilinx/xilinx_enet/CVS/Entries.Old
--- u-boot-2009.03_orig/board/xilinx/xilinx_enet/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xilinx/xilinx_enet/CVS/Entries.Old     2009-03-25 15:25:08.000000000 -0700
@@ -0,0 +1,11 @@
+/emac_adapter.c/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/xemac.c/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/xemac.h/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/xemac_g.c/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/xemac_i.h/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/xemac_intr.c/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/xemac_intr_dma.c/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/xemac_l.h/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/xemac_options.c/1.1.1.1/Wed Mar 25 22:21:55 2009//
+/xemac_polled.c/1.1.1.1/Wed Mar 25 22:21:55 2009//
+D
diff -Naur u-boot-2009.03_orig/board/xilinx/xilinx_enet/CVS/Repository u-boot-2009.03/board/xilinx/xilinx_enet/CVS/Repository
--- u-boot-2009.03_orig/board/xilinx/xilinx_enet/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xilinx/xilinx_enet/CVS/Repository      2009-03-25 15:25:07.962517300 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/xilinx/xilinx_enet
diff -Naur u-boot-2009.03_orig/board/xilinx/xilinx_enet/CVS/Root u-boot-2009.03/board/xilinx/xilinx_enet/CVS/Root
--- u-boot-2009.03_orig/board/xilinx/xilinx_enet/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xilinx/xilinx_enet/CVS/Root    2009-03-25 15:25:07.962517300 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/xilinx/xilinx_iic/CVS/Entries u-boot-2009.03/board/xilinx/xilinx_iic/CVS/Entries
--- u-boot-2009.03_orig/board/xilinx/xilinx_iic/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xilinx/xilinx_iic/CVS/Entries  2009-03-31 14:48:44.226299200 -0700
@@ -0,0 +1,4 @@
+/iic_adapter.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xiic_l.c/1.1.1.1/Tue Mar 31 21:48:44 2009//T1.1.1.1
+/xiic_l.h/1.1.1.1/Tue Mar 31 21:48:44 2009//T1.1.1.1
+D
diff -Naur u-boot-2009.03_orig/board/xilinx/xilinx_iic/CVS/Entries.Extra u-boot-2009.03/board/xilinx/xilinx_iic/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/xilinx/xilinx_iic/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xilinx/xilinx_iic/CVS/Entries.Extra    2009-03-31 14:48:44.226299200 -0700
@@ -0,0 +1,3 @@
+/iic_adapter.c///1238019715/
+/xiic_l.c///1238019715/
+/xiic_l.h///1238019716/
diff -Naur u-boot-2009.03_orig/board/xilinx/xilinx_iic/CVS/Entries.Extra.Old u-boot-2009.03/board/xilinx/xilinx_iic/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/xilinx/xilinx_iic/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xilinx/xilinx_iic/CVS/Entries.Extra.Old        2009-03-25 17:51:41.000000000 -0700
@@ -0,0 +1,3 @@
+/iic_adapter.c///1238019715/
+/xiic_l.c///1238028700/
+/xiic_l.h///1238028701/
diff -Naur u-boot-2009.03_orig/board/xilinx/xilinx_iic/CVS/Entries.Old u-boot-2009.03/board/xilinx/xilinx_iic/CVS/Entries.Old
--- u-boot-2009.03_orig/board/xilinx/xilinx_iic/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xilinx/xilinx_iic/CVS/Entries.Old      2009-03-25 17:51:41.000000000 -0700
@@ -0,0 +1,4 @@
+/iic_adapter.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xiic_l.c/1.2/Thu Mar 26 00:51:40 2009//
+/xiic_l.h/1.2/Thu Mar 26 00:51:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/xilinx/xilinx_iic/CVS/Repository u-boot-2009.03/board/xilinx/xilinx_iic/CVS/Repository
--- u-boot-2009.03_orig/board/xilinx/xilinx_iic/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xilinx/xilinx_iic/CVS/Repository       2009-03-25 15:25:08.165641000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/xilinx/xilinx_iic
diff -Naur u-boot-2009.03_orig/board/xilinx/xilinx_iic/CVS/Root u-boot-2009.03/board/xilinx/xilinx_iic/CVS/Root
--- u-boot-2009.03_orig/board/xilinx/xilinx_iic/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xilinx/xilinx_iic/CVS/Root     2009-03-25 15:25:08.165641000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/xilinx/xilinx_iic/xiic_l.c u-boot-2009.03/board/xilinx/xilinx_iic/xiic_l.c
--- u-boot-2009.03_orig/board/xilinx/xilinx_iic/xiic_l.c        2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/board/xilinx/xilinx_iic/xiic_l.c     2009-03-31 14:48:44.023176800 -0700
@@ -1,484 +1,484 @@
-/* $Id: xiic_l.c,v 1.2 2002/12/05 19:32:40 meinelte Exp $ */
-/******************************************************************************
-*
-*      XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS"
-*      AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND
-*      SOLUTIONS FOR XILINX DEVICES.  BY PROVIDING THIS DESIGN, CODE,
-*      OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE,
-*      APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION
-*      THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT,
-*      AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE
-*      FOR YOUR IMPLEMENTATION.  XILINX EXPRESSLY DISCLAIMS ANY
-*      WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE
-*      IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR
-*      REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF
-*      INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-*      FOR A PARTICULAR PURPOSE.
-*
-*      (c) Copyright 2002 Xilinx Inc.
-*      All rights reserved.
-*
-******************************************************************************/
-/*****************************************************************************/
-/**
-*
-* @file xiic_l.c
-*
-* This file contains low-level driver functions that can be used to access the
-* device.  The user should refer to the hardware device specification for more
-* details of the device operation.
-*
-* <pre>
-* MODIFICATION HISTORY:
-*
-* Ver  Who  Date     Changes
-* ----- --- -------  -----------------------------------------------
-* 1.01b jhl 5/13/02  First release
-* 1.01b jhl 10/14/02 Corrected bug in the receive function, the setup of the
-*                   interrupt status mask was not being done in the loop such
-*                   that a read would sometimes fail on the last byte because
-*                   the transmit error which should have been ignored was
-*                   being used.  This would leave an extra byte in the FIFO
-*                   and the bus throttled such that the next operation would
-*                   also fail.  Also updated the receive function to not
-*                   disable the device after the last byte until after the
-*                   bus transitions to not busy which is more consistent
-*                   with the expected behavior.
-* 1.01c ecm 12/05/02 new rev
-* </pre>
-*
-****************************************************************************/
-
-/***************************** Include Files *******************************/
-
-#include "xbasic_types.h"
-#include "xio.h"
-#include "xipif_v1_23_b.h"
-#include "xiic_l.h"
-
-/************************** Constant Definitions ***************************/
-
-/**************************** Type Definitions *****************************/
-
-
-/***************** Macros (Inline Functions) Definitions *******************/
-
-
-/******************************************************************************
-*
-* This macro clears the specified interrupt in the IPIF interrupt status
-* register.  It is non-destructive in that the register is read and only the
-* interrupt specified is cleared.  Clearing an interrupt acknowledges it.
-*
-* @param    BaseAddress contains the IPIF registers base address.
-*
-* @param    InterruptMask contains the interrupts to be disabled
-*
-* @return
-*
-* None.
-*
-* @note
-*
-* Signature: void XIic_mClearIisr(u32 BaseAddress,
-*                                u32 InterruptMask);
-*
-******************************************************************************/
-#define XIic_mClearIisr(BaseAddress, InterruptMask)                \
-    XIIF_V123B_WRITE_IISR((BaseAddress),                           \
-       XIIF_V123B_READ_IISR(BaseAddress) & (InterruptMask))
-
-/******************************************************************************
-*
-* This macro sends the address for a 7 bit address during both read and write
-* operations. It takes care of the details to format the address correctly.
-* This macro is designed to be called internally to the drivers.
-*
-* @param    SlaveAddress contains the address of the slave to send to.
-*
-* @param    Operation indicates XIIC_READ_OPERATION or XIIC_WRITE_OPERATION
-*
-* @return
-*
-* None.
-*
-* @note
-*
-* Signature: void XIic_mSend7BitAddr(u16 SlaveAddress, u8 Operation);
-*
-******************************************************************************/
-#define XIic_mSend7BitAddress(BaseAddress, SlaveAddress, Operation)        \
-{                                                                          \
-    u8 LocalAddr = (u8)(SlaveAddress << 1);                        \
-    LocalAddr = (LocalAddr & 0xFE) | (Operation);                          \
-    XIo_Out8(BaseAddress + XIIC_DTR_REG_OFFSET, LocalAddr);                \
-}
-
-/************************** Function Prototypes ****************************/
-
-static unsigned RecvData (u32 BaseAddress, u8 * BufferPtr,
-                         unsigned ByteCount);
-static unsigned SendData (u32 BaseAddress, u8 * BufferPtr,
-                         unsigned ByteCount);
-
-/************************** Variable Definitions **************************/
-
-
-/****************************************************************************/
-/**
-* Receive data as a master on the IIC bus.  This function receives the data
-* using polled I/O and blocks until the data has been received.         It only
-* supports 7 bit addressing and non-repeated start modes of operation. The
-* user is responsible for ensuring the bus is not busy if multiple masters
-* are present on the bus.
-*
-* @param    BaseAddress contains the base address of the IIC device.
-* @param    Address contains the 7 bit IIC address of the device to send the
-*          specified data to.
-* @param    BufferPtr points to the data to be sent.
-* @param    ByteCount is the number of bytes to be sent.
-*
-* @return
-*
-* The number of bytes received.
-*
-* @note
-*
-* None
-*
-******************************************************************************/
-unsigned XIic_Recv (u32 BaseAddress, u8 Address,
-                   u8 * BufferPtr, unsigned ByteCount)
-{
-       u8 CntlReg;
-       unsigned RemainingByteCount;
-
-       /* Tx error is enabled incase the address (7 or 10) has no device to answer
-        * with Ack. When only one byte of data, must set NO ACK before address goes
-        * out therefore Tx error must not be enabled as it will go off immediately
-        * and the Rx full interrupt will be checked.  If full, then the one byte
-        * was received and the Tx error will be disabled without sending an error
-        * callback msg.
-        */
-       XIic_mClearIisr (BaseAddress,
-                        XIIC_INTR_RX_FULL_MASK | XIIC_INTR_TX_ERROR_MASK |
-                        XIIC_INTR_ARB_LOST_MASK);
-
-       /* Set receive FIFO occupancy depth for 1 byte (zero based)
-        */
-       XIo_Out8 (BaseAddress + XIIC_RFD_REG_OFFSET, 0);
-
-       /* 7 bit slave address, send the address for a read operation
-        * and set the state to indicate the address has been sent
-        */
-       XIic_mSend7BitAddress (BaseAddress, Address, XIIC_READ_OPERATION);
-
-       /* MSMS gets set after putting data in FIFO. Start the master receive
-        * operation by setting CR Bits MSMS to Master, if the buffer is only one
-        * byte, then it should not be acknowledged to indicate the end of data
-        */
-       CntlReg = XIIC_CR_MSMS_MASK | XIIC_CR_ENABLE_DEVICE_MASK;
-       if (ByteCount == 1) {
-               CntlReg |= XIIC_CR_NO_ACK_MASK;
-       }
-
-       /* Write out the control register to start receiving data and call the
-        * function to receive each byte into the buffer
-        */
-       XIo_Out8 (BaseAddress + XIIC_CR_REG_OFFSET, CntlReg);
-
-       /* Clear the latched interrupt status for the bus not busy bit which must
-        * be done while the bus is busy
-        */
-       XIic_mClearIisr (BaseAddress, XIIC_INTR_BNB_MASK);
-
-       /* Try to receive the data from the IIC bus */
-
-       RemainingByteCount = RecvData (BaseAddress, BufferPtr, ByteCount);
-       /*
-        * The receive is complete, disable the IIC device and return the number of
-        * bytes that was received
-        */
-       XIo_Out8 (BaseAddress + XIIC_CR_REG_OFFSET, 0);
-
-       /* Return the number of bytes that was received */
-
-       return ByteCount - RemainingByteCount;
-}
-
-/******************************************************************************
-*
-* Receive the specified data from the device that has been previously addressed
-* on the IIC bus.  This function assumes that the 7 bit address has been sent
-* and it should wait for the transmit of the address to complete.
-*
-* @param    BaseAddress contains the base address of the IIC device.
-* @param    BufferPtr points to the buffer to hold the data that is received.
-* @param    ByteCount is the number of bytes to be received.
-*
-* @return
-*
-* The number of bytes remaining to be received.
-*
-* @note
-*
-* This function does not take advantage of the receive FIFO because it is
-* designed for minimal code space and complexity.  It contains loops that
-* that could cause the function not to return if the hardware is not working.
-*
-* This function assumes that the calling function will disable the IIC device
-* after this function returns.
-*
-******************************************************************************/
-static unsigned RecvData (u32 BaseAddress, u8 * BufferPtr, unsigned ByteCount)
-{
-       u8 CntlReg;
-       u32 IntrStatusMask;
-       u32 IntrStatus;
-
-       /* Attempt to receive the specified number of bytes on the IIC bus */
-
-       while (ByteCount > 0) {
-               /* Setup the mask to use for checking errors because when receiving one
-                * byte OR the last byte of a multibyte message an error naturally
-                * occurs when the no ack is done to tell the slave the last byte
-                */
-               if (ByteCount == 1) {
-                       IntrStatusMask =
-                               XIIC_INTR_ARB_LOST_MASK | XIIC_INTR_BNB_MASK;
-               } else {
-                       IntrStatusMask =
-                               XIIC_INTR_ARB_LOST_MASK |
-                               XIIC_INTR_TX_ERROR_MASK | XIIC_INTR_BNB_MASK;
-               }
-
-               /* Wait for the previous transmit and the 1st receive to complete
-                * by checking the interrupt status register of the IPIF
-                */
-               while (1) {
-                       IntrStatus = XIIF_V123B_READ_IISR (BaseAddress);
-                       if (IntrStatus & XIIC_INTR_RX_FULL_MASK) {
-                               break;
-                       }
-                       /* Check the transmit error after the receive full because when
-                        * sending only one byte transmit error will occur because of the
-                        * no ack to indicate the end of the data
-                        */
-                       if (IntrStatus & IntrStatusMask) {
-                               return ByteCount;
-                       }
-               }
-
-               CntlReg = XIo_In8 (BaseAddress + XIIC_CR_REG_OFFSET);
-
-               /* Special conditions exist for the last two bytes so check for them
-                * Note that the control register must be setup for these conditions
-                * before the data byte which was already received is read from the
-                * receive FIFO (while the bus is throttled
-                */
-               if (ByteCount == 1) {
-                       /* For the last data byte, it has already been read and no ack
-                        * has been done, so clear MSMS while leaving the device enabled
-                        * so it can get off the IIC bus appropriately with a stop.
-                        */
-                       XIo_Out8 (BaseAddress + XIIC_CR_REG_OFFSET,
-                                 XIIC_CR_ENABLE_DEVICE_MASK);
-               }
-
-               /* Before the last byte is received, set NOACK to tell the slave IIC
-                * device that it is the end, this must be done before reading the byte
-                * from the FIFO
-                */
-               if (ByteCount == 2) {
-                       /* Write control reg with NO ACK allowing last byte to
-                        * have the No ack set to indicate to slave last byte read.
-                        */
-                       XIo_Out8 (BaseAddress + XIIC_CR_REG_OFFSET,
-                                 CntlReg | XIIC_CR_NO_ACK_MASK);
-               }
-
-               /* Read in data from the FIFO and unthrottle the bus such that the
-                * next byte is read from the IIC bus
-                */
-               *BufferPtr++ = XIo_In8 (BaseAddress + XIIC_DRR_REG_OFFSET);
-
-               /* Clear the latched interrupt status so that it will be updated with
-                * the new state when it changes, this must be done after the receive
-                * register is read
-                */
-               XIic_mClearIisr (BaseAddress, XIIC_INTR_RX_FULL_MASK |
-                                XIIC_INTR_TX_ERROR_MASK |
-                                XIIC_INTR_ARB_LOST_MASK);
-               ByteCount--;
-       }
-
-       /* Wait for the bus to transition to not busy before returning, the IIC
-        * device cannot be disabled until this occurs.  It should transition as
-        * the MSMS bit of the control register was cleared before the last byte
-        * was read from the FIFO.
-        */
-       while (1) {
-               if (XIIF_V123B_READ_IISR (BaseAddress) & XIIC_INTR_BNB_MASK) {
-                       break;
-               }
-       }
-
-       return ByteCount;
-}
-
-/****************************************************************************/
-/**
-* Send data as a master on the IIC bus.         This function sends the data
-* using polled I/O and blocks until the data has been sent.  It only supports
-* 7 bit addressing and non-repeated start modes of operation.  The user is
-* responsible for ensuring the bus is not busy if multiple masters are present
-* on the bus.
-*
-* @param    BaseAddress contains the base address of the IIC device.
-* @param    Address contains the 7 bit IIC address of the device to send the
-*          specified data to.
-* @param    BufferPtr points to the data to be sent.
-* @param    ByteCount is the number of bytes to be sent.
-*
-* @return
-*
-* The number of bytes sent.
-*
-* @note
-*
-* None
-*
-******************************************************************************/
-unsigned XIic_Send (u32 BaseAddress, u8 Address,
-                   u8 * BufferPtr, unsigned ByteCount)
-{
-       unsigned RemainingByteCount;
-
-       /* Put the address into the FIFO to be sent and indicate that the operation
-        * to be performed on the bus is a write operation
-        */
-       XIic_mSend7BitAddress (BaseAddress, Address, XIIC_WRITE_OPERATION);
-
-       /* Clear the latched interrupt status so that it will be updated with the
-        * new state when it changes, this must be done after the address is put
-        * in the FIFO
-        */
-       XIic_mClearIisr (BaseAddress, XIIC_INTR_TX_EMPTY_MASK |
-                        XIIC_INTR_TX_ERROR_MASK | XIIC_INTR_ARB_LOST_MASK);
-
-       /* MSMS must be set after putting data into transmit FIFO, indicate the
-        * direction is transmit, this device is master and enable the IIC device
-        */
-       XIo_Out8 (BaseAddress + XIIC_CR_REG_OFFSET,
-                 XIIC_CR_MSMS_MASK | XIIC_CR_DIR_IS_TX_MASK |
-                 XIIC_CR_ENABLE_DEVICE_MASK);
-
-       /* Clear the latched interrupt
-        * status for the bus not busy bit which must be done while the bus is busy
-        */
-       XIic_mClearIisr (BaseAddress, XIIC_INTR_BNB_MASK);
-
-       /* Send the specified data to the device on the IIC bus specified by the
-        * the address
-        */
-       RemainingByteCount = SendData (BaseAddress, BufferPtr, ByteCount);
-
-       /*
-        * The send is complete, disable the IIC device and return the number of
-        * bytes that was sent
-        */
-       XIo_Out8 (BaseAddress + XIIC_CR_REG_OFFSET, 0);
-
-       return ByteCount - RemainingByteCount;
-}
-
-/******************************************************************************
-*
-* Send the specified buffer to the device that has been previously addressed
-* on the IIC bus.  This function assumes that the 7 bit address has been sent
-* and it should wait for the transmit of the address to complete.
-*
-* @param    BaseAddress contains the base address of the IIC device.
-* @param    BufferPtr points to the data to be sent.
-* @param    ByteCount is the number of bytes to be sent.
-*
-* @return
-*
-* The number of bytes remaining to be sent.
-*
-* @note
-*
-* This function does not take advantage of the transmit FIFO because it is
-* designed for minimal code space and complexity.  It contains loops that
-* that could cause the function not to return if the hardware is not working.
-*
-******************************************************************************/
-static unsigned SendData (u32 BaseAddress, u8 * BufferPtr, unsigned ByteCount)
-{
-       u32 IntrStatus;
-
-       /* Send the specified number of bytes in the specified buffer by polling
-        * the device registers and blocking until complete
-        */
-       while (ByteCount > 0) {
-               /* Wait for the transmit to be empty before sending any more data
-                * by polling the interrupt status register
-                */
-               while (1) {
-                       IntrStatus = XIIF_V123B_READ_IISR (BaseAddress);
-
-                       if (IntrStatus & (XIIC_INTR_TX_ERROR_MASK |
-                                         XIIC_INTR_ARB_LOST_MASK |
-                                         XIIC_INTR_BNB_MASK)) {
-                               return ByteCount;
-                       }
-
-                       if (IntrStatus & XIIC_INTR_TX_EMPTY_MASK) {
-                               break;
-                       }
-               }
-               /* If there is more than one byte to send then put the next byte to send
-                * into the transmit FIFO
-                */
-               if (ByteCount > 1) {
-                       XIo_Out8 (BaseAddress + XIIC_DTR_REG_OFFSET,
-                                 *BufferPtr++);
-               } else {
-                       /* Set the stop condition before sending the last byte of data so that
-                        * the stop condition will be generated immediately following the data
-                        * This is done by clearing the MSMS bit in the control register.
-                        */
-                       XIo_Out8 (BaseAddress + XIIC_CR_REG_OFFSET,
-                                 XIIC_CR_ENABLE_DEVICE_MASK |
-                                 XIIC_CR_DIR_IS_TX_MASK);
-
-                       /* Put the last byte to send in the transmit FIFO */
-
-                       XIo_Out8 (BaseAddress + XIIC_DTR_REG_OFFSET,
-                                 *BufferPtr++);
-               }
-
-               /* Clear the latched interrupt status register and this must be done after
-                * the transmit FIFO has been written to or it won't clear
-                */
-               XIic_mClearIisr (BaseAddress, XIIC_INTR_TX_EMPTY_MASK);
-
-               /* Update the byte count to reflect the byte sent and clear the latched
-                * interrupt status so it will be updated for the new state
-                */
-               ByteCount--;
-       }
-
-       /* Wait for the bus to transition to not busy before returning, the IIC
-        * device cannot be disabled until this occurs.
-        * Note that this is different from a receive operation because the stop
-        * condition causes the bus to go not busy.
-        */
-       while (1) {
-               if (XIIF_V123B_READ_IISR (BaseAddress) & XIIC_INTR_BNB_MASK) {
-                       break;
-               }
-       }
-
-       return ByteCount;
-}
+/* $Id: xiic_l.c,v 1.1.1.1 2009/03/25 22:21:55 kenagy Exp $ */
+/******************************************************************************
+*
+*      XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS"
+*      AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND
+*      SOLUTIONS FOR XILINX DEVICES.  BY PROVIDING THIS DESIGN, CODE,
+*      OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE,
+*      APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION
+*      THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT,
+*      AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE
+*      FOR YOUR IMPLEMENTATION.  XILINX EXPRESSLY DISCLAIMS ANY
+*      WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE
+*      IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR
+*      REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF
+*      INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+*      FOR A PARTICULAR PURPOSE.
+*
+*      (c) Copyright 2002 Xilinx Inc.
+*      All rights reserved.
+*
+******************************************************************************/
+/*****************************************************************************/
+/**
+*
+* @file xiic_l.c
+*
+* This file contains low-level driver functions that can be used to access the
+* device.  The user should refer to the hardware device specification for more
+* details of the device operation.
+*
+* <pre>
+* MODIFICATION HISTORY:
+*
+* Ver  Who  Date     Changes
+* ----- --- -------  -----------------------------------------------
+* 1.01b jhl 5/13/02  First release
+* 1.01b jhl 10/14/02 Corrected bug in the receive function, the setup of the
+*                   interrupt status mask was not being done in the loop such
+*                   that a read would sometimes fail on the last byte because
+*                   the transmit error which should have been ignored was
+*                   being used.  This would leave an extra byte in the FIFO
+*                   and the bus throttled such that the next operation would
+*                   also fail.  Also updated the receive function to not
+*                   disable the device after the last byte until after the
+*                   bus transitions to not busy which is more consistent
+*                   with the expected behavior.
+* 1.01c ecm 12/05/02 new rev
+* </pre>
+*
+****************************************************************************/
+
+/***************************** Include Files *******************************/
+
+#include "xbasic_types.h"
+#include "xio.h"
+#include "xipif_v1_23_b.h"
+#include "xiic_l.h"
+
+/************************** Constant Definitions ***************************/
+
+/**************************** Type Definitions *****************************/
+
+
+/***************** Macros (Inline Functions) Definitions *******************/
+
+
+/******************************************************************************
+*
+* This macro clears the specified interrupt in the IPIF interrupt status
+* register.  It is non-destructive in that the register is read and only the
+* interrupt specified is cleared.  Clearing an interrupt acknowledges it.
+*
+* @param    BaseAddress contains the IPIF registers base address.
+*
+* @param    InterruptMask contains the interrupts to be disabled
+*
+* @return
+*
+* None.
+*
+* @note
+*
+* Signature: void XIic_mClearIisr(u32 BaseAddress,
+*                                u32 InterruptMask);
+*
+******************************************************************************/
+#define XIic_mClearIisr(BaseAddress, InterruptMask)                \
+    XIIF_V123B_WRITE_IISR((BaseAddress),                           \
+       XIIF_V123B_READ_IISR(BaseAddress) & (InterruptMask))
+
+/******************************************************************************
+*
+* This macro sends the address for a 7 bit address during both read and write
+* operations. It takes care of the details to format the address correctly.
+* This macro is designed to be called internally to the drivers.
+*
+* @param    SlaveAddress contains the address of the slave to send to.
+*
+* @param    Operation indicates XIIC_READ_OPERATION or XIIC_WRITE_OPERATION
+*
+* @return
+*
+* None.
+*
+* @note
+*
+* Signature: void XIic_mSend7BitAddr(u16 SlaveAddress, u8 Operation);
+*
+******************************************************************************/
+#define XIic_mSend7BitAddress(BaseAddress, SlaveAddress, Operation)        \
+{                                                                          \
+    u8 LocalAddr = (u8)(SlaveAddress << 1);                        \
+    LocalAddr = (LocalAddr & 0xFE) | (Operation);                          \
+    XIo_Out8(BaseAddress + XIIC_DTR_REG_OFFSET, LocalAddr);                \
+}
+
+/************************** Function Prototypes ****************************/
+
+static unsigned RecvData (u32 BaseAddress, u8 * BufferPtr,
+                         unsigned ByteCount);
+static unsigned SendData (u32 BaseAddress, u8 * BufferPtr,
+                         unsigned ByteCount);
+
+/************************** Variable Definitions **************************/
+
+
+/****************************************************************************/
+/**
+* Receive data as a master on the IIC bus.  This function receives the data
+* using polled I/O and blocks until the data has been received.         It only
+* supports 7 bit addressing and non-repeated start modes of operation. The
+* user is responsible for ensuring the bus is not busy if multiple masters
+* are present on the bus.
+*
+* @param    BaseAddress contains the base address of the IIC device.
+* @param    Address contains the 7 bit IIC address of the device to send the
+*          specified data to.
+* @param    BufferPtr points to the data to be sent.
+* @param    ByteCount is the number of bytes to be sent.
+*
+* @return
+*
+* The number of bytes received.
+*
+* @note
+*
+* None
+*
+******************************************************************************/
+unsigned XIic_Recv (u32 BaseAddress, u8 Address,
+                   u8 * BufferPtr, unsigned ByteCount)
+{
+       u8 CntlReg;
+       unsigned RemainingByteCount;
+
+       /* Tx error is enabled incase the address (7 or 10) has no device to answer
+        * with Ack. When only one byte of data, must set NO ACK before address goes
+        * out therefore Tx error must not be enabled as it will go off immediately
+        * and the Rx full interrupt will be checked.  If full, then the one byte
+        * was received and the Tx error will be disabled without sending an error
+        * callback msg.
+        */
+       XIic_mClearIisr (BaseAddress,
+                        XIIC_INTR_RX_FULL_MASK | XIIC_INTR_TX_ERROR_MASK |
+                        XIIC_INTR_ARB_LOST_MASK);
+
+       /* Set receive FIFO occupancy depth for 1 byte (zero based)
+        */
+       XIo_Out8 (BaseAddress + XIIC_RFD_REG_OFFSET, 0);
+
+       /* 7 bit slave address, send the address for a read operation
+        * and set the state to indicate the address has been sent
+        */
+       XIic_mSend7BitAddress (BaseAddress, Address, XIIC_READ_OPERATION);
+
+       /* MSMS gets set after putting data in FIFO. Start the master receive
+        * operation by setting CR Bits MSMS to Master, if the buffer is only one
+        * byte, then it should not be acknowledged to indicate the end of data
+        */
+       CntlReg = XIIC_CR_MSMS_MASK | XIIC_CR_ENABLE_DEVICE_MASK;
+       if (ByteCount == 1) {
+               CntlReg |= XIIC_CR_NO_ACK_MASK;
+       }
+
+       /* Write out the control register to start receiving data and call the
+        * function to receive each byte into the buffer
+        */
+       XIo_Out8 (BaseAddress + XIIC_CR_REG_OFFSET, CntlReg);
+
+       /* Clear the latched interrupt status for the bus not busy bit which must
+        * be done while the bus is busy
+        */
+       XIic_mClearIisr (BaseAddress, XIIC_INTR_BNB_MASK);
+
+       /* Try to receive the data from the IIC bus */
+
+       RemainingByteCount = RecvData (BaseAddress, BufferPtr, ByteCount);
+       /*
+        * The receive is complete, disable the IIC device and return the number of
+        * bytes that was received
+        */
+       XIo_Out8 (BaseAddress + XIIC_CR_REG_OFFSET, 0);
+
+       /* Return the number of bytes that was received */
+
+       return ByteCount - RemainingByteCount;
+}
+
+/******************************************************************************
+*
+* Receive the specified data from the device that has been previously addressed
+* on the IIC bus.  This function assumes that the 7 bit address has been sent
+* and it should wait for the transmit of the address to complete.
+*
+* @param    BaseAddress contains the base address of the IIC device.
+* @param    BufferPtr points to the buffer to hold the data that is received.
+* @param    ByteCount is the number of bytes to be received.
+*
+* @return
+*
+* The number of bytes remaining to be received.
+*
+* @note
+*
+* This function does not take advantage of the receive FIFO because it is
+* designed for minimal code space and complexity.  It contains loops that
+* that could cause the function not to return if the hardware is not working.
+*
+* This function assumes that the calling function will disable the IIC device
+* after this function returns.
+*
+******************************************************************************/
+static unsigned RecvData (u32 BaseAddress, u8 * BufferPtr, unsigned ByteCount)
+{
+       u8 CntlReg;
+       u32 IntrStatusMask;
+       u32 IntrStatus;
+
+       /* Attempt to receive the specified number of bytes on the IIC bus */
+
+       while (ByteCount > 0) {
+               /* Setup the mask to use for checking errors because when receiving one
+                * byte OR the last byte of a multibyte message an error naturally
+                * occurs when the no ack is done to tell the slave the last byte
+                */
+               if (ByteCount == 1) {
+                       IntrStatusMask =
+                               XIIC_INTR_ARB_LOST_MASK | XIIC_INTR_BNB_MASK;
+               } else {
+                       IntrStatusMask =
+                               XIIC_INTR_ARB_LOST_MASK |
+                               XIIC_INTR_TX_ERROR_MASK | XIIC_INTR_BNB_MASK;
+               }
+
+               /* Wait for the previous transmit and the 1st receive to complete
+                * by checking the interrupt status register of the IPIF
+                */
+               while (1) {
+                       IntrStatus = XIIF_V123B_READ_IISR (BaseAddress);
+                       if (IntrStatus & XIIC_INTR_RX_FULL_MASK) {
+                               break;
+                       }
+                       /* Check the transmit error after the receive full because when
+                        * sending only one byte transmit error will occur because of the
+                        * no ack to indicate the end of the data
+                        */
+                       if (IntrStatus & IntrStatusMask) {
+                               return ByteCount;
+                       }
+               }
+
+               CntlReg = XIo_In8 (BaseAddress + XIIC_CR_REG_OFFSET);
+
+               /* Special conditions exist for the last two bytes so check for them
+                * Note that the control register must be setup for these conditions
+                * before the data byte which was already received is read from the
+                * receive FIFO (while the bus is throttled
+                */
+               if (ByteCount == 1) {
+                       /* For the last data byte, it has already been read and no ack
+                        * has been done, so clear MSMS while leaving the device enabled
+                        * so it can get off the IIC bus appropriately with a stop.
+                        */
+                       XIo_Out8 (BaseAddress + XIIC_CR_REG_OFFSET,
+                                 XIIC_CR_ENABLE_DEVICE_MASK);
+               }
+
+               /* Before the last byte is received, set NOACK to tell the slave IIC
+                * device that it is the end, this must be done before reading the byte
+                * from the FIFO
+                */
+               if (ByteCount == 2) {
+                       /* Write control reg with NO ACK allowing last byte to
+                        * have the No ack set to indicate to slave last byte read.
+                        */
+                       XIo_Out8 (BaseAddress + XIIC_CR_REG_OFFSET,
+                                 CntlReg | XIIC_CR_NO_ACK_MASK);
+               }
+
+               /* Read in data from the FIFO and unthrottle the bus such that the
+                * next byte is read from the IIC bus
+                */
+               *BufferPtr++ = XIo_In8 (BaseAddress + XIIC_DRR_REG_OFFSET);
+
+               /* Clear the latched interrupt status so that it will be updated with
+                * the new state when it changes, this must be done after the receive
+                * register is read
+                */
+               XIic_mClearIisr (BaseAddress, XIIC_INTR_RX_FULL_MASK |
+                                XIIC_INTR_TX_ERROR_MASK |
+                                XIIC_INTR_ARB_LOST_MASK);
+               ByteCount--;
+       }
+
+       /* Wait for the bus to transition to not busy before returning, the IIC
+        * device cannot be disabled until this occurs.  It should transition as
+        * the MSMS bit of the control register was cleared before the last byte
+        * was read from the FIFO.
+        */
+       while (1) {
+               if (XIIF_V123B_READ_IISR (BaseAddress) & XIIC_INTR_BNB_MASK) {
+                       break;
+               }
+       }
+
+       return ByteCount;
+}
+
+/****************************************************************************/
+/**
+* Send data as a master on the IIC bus.         This function sends the data
+* using polled I/O and blocks until the data has been sent.  It only supports
+* 7 bit addressing and non-repeated start modes of operation.  The user is
+* responsible for ensuring the bus is not busy if multiple masters are present
+* on the bus.
+*
+* @param    BaseAddress contains the base address of the IIC device.
+* @param    Address contains the 7 bit IIC address of the device to send the
+*          specified data to.
+* @param    BufferPtr points to the data to be sent.
+* @param    ByteCount is the number of bytes to be sent.
+*
+* @return
+*
+* The number of bytes sent.
+*
+* @note
+*
+* None
+*
+******************************************************************************/
+unsigned XIic_Send (u32 BaseAddress, u8 Address,
+                   u8 * BufferPtr, unsigned ByteCount)
+{
+       unsigned RemainingByteCount;
+
+       /* Put the address into the FIFO to be sent and indicate that the operation
+        * to be performed on the bus is a write operation
+        */
+       XIic_mSend7BitAddress (BaseAddress, Address, XIIC_WRITE_OPERATION);
+
+       /* Clear the latched interrupt status so that it will be updated with the
+        * new state when it changes, this must be done after the address is put
+        * in the FIFO
+        */
+       XIic_mClearIisr (BaseAddress, XIIC_INTR_TX_EMPTY_MASK |
+                        XIIC_INTR_TX_ERROR_MASK | XIIC_INTR_ARB_LOST_MASK);
+
+       /* MSMS must be set after putting data into transmit FIFO, indicate the
+        * direction is transmit, this device is master and enable the IIC device
+        */
+       XIo_Out8 (BaseAddress + XIIC_CR_REG_OFFSET,
+                 XIIC_CR_MSMS_MASK | XIIC_CR_DIR_IS_TX_MASK |
+                 XIIC_CR_ENABLE_DEVICE_MASK);
+
+       /* Clear the latched interrupt
+        * status for the bus not busy bit which must be done while the bus is busy
+        */
+       XIic_mClearIisr (BaseAddress, XIIC_INTR_BNB_MASK);
+
+       /* Send the specified data to the device on the IIC bus specified by the
+        * the address
+        */
+       RemainingByteCount = SendData (BaseAddress, BufferPtr, ByteCount);
+
+       /*
+        * The send is complete, disable the IIC device and return the number of
+        * bytes that was sent
+        */
+       XIo_Out8 (BaseAddress + XIIC_CR_REG_OFFSET, 0);
+
+       return ByteCount - RemainingByteCount;
+}
+
+/******************************************************************************
+*
+* Send the specified buffer to the device that has been previously addressed
+* on the IIC bus.  This function assumes that the 7 bit address has been sent
+* and it should wait for the transmit of the address to complete.
+*
+* @param    BaseAddress contains the base address of the IIC device.
+* @param    BufferPtr points to the data to be sent.
+* @param    ByteCount is the number of bytes to be sent.
+*
+* @return
+*
+* The number of bytes remaining to be sent.
+*
+* @note
+*
+* This function does not take advantage of the transmit FIFO because it is
+* designed for minimal code space and complexity.  It contains loops that
+* that could cause the function not to return if the hardware is not working.
+*
+******************************************************************************/
+static unsigned SendData (u32 BaseAddress, u8 * BufferPtr, unsigned ByteCount)
+{
+       u32 IntrStatus;
+
+       /* Send the specified number of bytes in the specified buffer by polling
+        * the device registers and blocking until complete
+        */
+       while (ByteCount > 0) {
+               /* Wait for the transmit to be empty before sending any more data
+                * by polling the interrupt status register
+                */
+               while (1) {
+                       IntrStatus = XIIF_V123B_READ_IISR (BaseAddress);
+
+                       if (IntrStatus & (XIIC_INTR_TX_ERROR_MASK |
+                                         XIIC_INTR_ARB_LOST_MASK |
+                                         XIIC_INTR_BNB_MASK)) {
+                               return ByteCount;
+                       }
+
+                       if (IntrStatus & XIIC_INTR_TX_EMPTY_MASK) {
+                               break;
+                       }
+               }
+               /* If there is more than one byte to send then put the next byte to send
+                * into the transmit FIFO
+                */
+               if (ByteCount > 1) {
+                       XIo_Out8 (BaseAddress + XIIC_DTR_REG_OFFSET,
+                                 *BufferPtr++);
+               } else {
+                       /* Set the stop condition before sending the last byte of data so that
+                        * the stop condition will be generated immediately following the data
+                        * This is done by clearing the MSMS bit in the control register.
+                        */
+                       XIo_Out8 (BaseAddress + XIIC_CR_REG_OFFSET,
+                                 XIIC_CR_ENABLE_DEVICE_MASK |
+                                 XIIC_CR_DIR_IS_TX_MASK);
+
+                       /* Put the last byte to send in the transmit FIFO */
+
+                       XIo_Out8 (BaseAddress + XIIC_DTR_REG_OFFSET,
+                                 *BufferPtr++);
+               }
+
+               /* Clear the latched interrupt status register and this must be done after
+                * the transmit FIFO has been written to or it won't clear
+                */
+               XIic_mClearIisr (BaseAddress, XIIC_INTR_TX_EMPTY_MASK);
+
+               /* Update the byte count to reflect the byte sent and clear the latched
+                * interrupt status so it will be updated for the new state
+                */
+               ByteCount--;
+       }
+
+       /* Wait for the bus to transition to not busy before returning, the IIC
+        * device cannot be disabled until this occurs.
+        * Note that this is different from a receive operation because the stop
+        * condition causes the bus to go not busy.
+        */
+       while (1) {
+               if (XIIF_V123B_READ_IISR (BaseAddress) & XIIC_INTR_BNB_MASK) {
+                       break;
+               }
+       }
+
+       return ByteCount;
+}
diff -Naur u-boot-2009.03_orig/board/xilinx/xilinx_iic/xiic_l.h u-boot-2009.03/board/xilinx/xilinx_iic/xiic_l.h
--- u-boot-2009.03_orig/board/xilinx/xilinx_iic/xiic_l.h        2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/board/xilinx/xilinx_iic/xiic_l.h     2009-03-31 14:48:44.195049600 -0700
@@ -1,150 +1,150 @@
-/* $Id: xiic_l.h,v 1.2 2002/12/05 19:32:40 meinelte Exp $ */
-/*****************************************************************************
-*
-*      XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS"
-*      AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND
-*      SOLUTIONS FOR XILINX DEVICES.  BY PROVIDING THIS DESIGN, CODE,
-*      OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE,
-*      APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION
-*      THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT,
-*      AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE
-*      FOR YOUR IMPLEMENTATION.  XILINX EXPRESSLY DISCLAIMS ANY
-*      WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE
-*      IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR
-*      REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF
-*      INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-*      FOR A PARTICULAR PURPOSE.
-*
-*      (c) Copyright 2002 Xilinx Inc.
-*      All rights reserved.
-*
-*****************************************************************************/
-/****************************************************************************/
-/**
-*
-* @file xiic_l.h
-*
-* This header file contains identifiers and low-level driver functions (or
-* macros) that can be used to access the device.  High-level driver functions
-* are defined in xiic.h.
-*
-* <pre>
-* MODIFICATION HISTORY:
-*
-* Ver  Who  Date     Changes
-* ----- ---- -------- -----------------------------------------------
-* 1.00b jhl  05/07/02 First release
-* 1.01c ecm  12/05/02 new rev
-* </pre>
-*
-*****************************************************************************/
-
-#ifndef XIIC_L_H /* prevent circular inclusions */
-#define XIIC_L_H /* by using protection macros */
-
-/***************************** Include Files ********************************/
-
-#include "xbasic_types.h"
-
-/************************** Constant Definitions ****************************/
-
-#define XIIC_MSB_OFFSET                       3
-
-#define XIIC_REG_OFFSET 0x100 + XIIC_MSB_OFFSET
-
-/*
- * Register offsets in bytes from RegisterBase. Three is added to the
- * base offset to access LSB (IBM style) of the word
- */
-#define XIIC_CR_REG_OFFSET   0x00+XIIC_REG_OFFSET   /* Control Register          */
-#define XIIC_SR_REG_OFFSET   0x04+XIIC_REG_OFFSET   /* Status Register   */
-#define XIIC_DTR_REG_OFFSET  0x08+XIIC_REG_OFFSET   /* Data Tx Register          */
-#define XIIC_DRR_REG_OFFSET  0x0C+XIIC_REG_OFFSET   /* Data Rx Register          */
-#define XIIC_ADR_REG_OFFSET  0x10+XIIC_REG_OFFSET   /* Address Register          */
-#define XIIC_TFO_REG_OFFSET  0x14+XIIC_REG_OFFSET   /* Tx FIFO Occupancy  */
-#define XIIC_RFO_REG_OFFSET  0x18+XIIC_REG_OFFSET   /* Rx FIFO Occupancy  */
-#define XIIC_TBA_REG_OFFSET  0x1C+XIIC_REG_OFFSET   /* 10 Bit Address reg */
-#define XIIC_RFD_REG_OFFSET  0x20+XIIC_REG_OFFSET   /* Rx FIFO Depth reg  */
-
-/* Control Register masks */
-
-#define XIIC_CR_ENABLE_DEVICE_MASK       0x01  /* Device enable = 1      */
-#define XIIC_CR_TX_FIFO_RESET_MASK       0x02  /* Transmit FIFO reset=1  */
-#define XIIC_CR_MSMS_MASK                0x04  /* Master starts Txing=1  */
-#define XIIC_CR_DIR_IS_TX_MASK           0x08  /* Dir of tx. Txing=1     */
-#define XIIC_CR_NO_ACK_MASK              0x10  /* Tx Ack. NO ack = 1     */
-#define XIIC_CR_REPEATED_START_MASK      0x20  /* Repeated start = 1     */
-#define XIIC_CR_GENERAL_CALL_MASK        0x40  /* Gen Call enabled = 1   */
-
-/* Status Register masks */
-
-#define XIIC_SR_GEN_CALL_MASK            0x01  /* 1=a mstr issued a GC   */
-#define XIIC_SR_ADDR_AS_SLAVE_MASK       0x02  /* 1=when addr as slave   */
-#define XIIC_SR_BUS_BUSY_MASK            0x04  /* 1 = bus is busy        */
-#define XIIC_SR_MSTR_RDING_SLAVE_MASK    0x08  /* 1=Dir: mstr <-- slave  */
-#define XIIC_SR_TX_FIFO_FULL_MASK        0x10  /* 1 = Tx FIFO full       */
-#define XIIC_SR_RX_FIFO_FULL_MASK        0x20  /* 1 = Rx FIFO full       */
-#define XIIC_SR_RX_FIFO_EMPTY_MASK       0x40  /* 1 = Rx FIFO empty      */
-
-/* IPIF Interrupt Status Register masks           Interrupt occurs when...       */
-
-#define XIIC_INTR_ARB_LOST_MASK                  0x01  /* 1 = arbitration lost   */
-#define XIIC_INTR_TX_ERROR_MASK                  0x02  /* 1=Tx error/msg complete*/
-#define XIIC_INTR_TX_EMPTY_MASK                  0x04  /* 1 = Tx FIFO/reg empty  */
-#define XIIC_INTR_RX_FULL_MASK           0x08  /* 1=Rx FIFO/reg=OCY level*/
-#define XIIC_INTR_BNB_MASK               0x10  /* 1 = Bus not busy       */
-#define XIIC_INTR_AAS_MASK               0x20  /* 1 = when addr as slave */
-#define XIIC_INTR_NAAS_MASK              0x40  /* 1 = not addr as slave  */
-#define XIIC_INTR_TX_HALF_MASK           0x80  /* 1 = TX FIFO half empty */
-
-/* IPIF Device Interrupt Register masks */
-
-#define XIIC_IPIF_IIC_MASK         0x00000004UL    /* 1=inter enabled */
-#define XIIC_IPIF_ERROR_MASK       0x00000001UL    /* 1=inter enabled */
-#define XIIC_IPIF_INTER_ENABLE_MASK  (XIIC_IPIF_IIC_MASK |  \
-                                     XIIC_IPIF_ERROR_MASK)
-
-#define XIIC_TX_ADDR_SENT            0x00
-#define XIIC_TX_ADDR_MSTR_RECV_MASK   0x02
-
-/* The following constants specify the depth of the FIFOs */
-
-#define IIC_RX_FIFO_DEPTH        16   /* Rx fifo capacity               */
-#define IIC_TX_FIFO_DEPTH        16   /* Tx fifo capacity               */
-
-/* The following constants specify groups of interrupts that are typically
- * enabled or disables at the same time
- */
-#define XIIC_TX_INTERRUPTS                                         \
-           (XIIC_INTR_TX_ERROR_MASK | XIIC_INTR_TX_EMPTY_MASK |    \
-            XIIC_INTR_TX_HALF_MASK)
-
-#define XIIC_TX_RX_INTERRUPTS (XIIC_INTR_RX_FULL_MASK | XIIC_TX_INTERRUPTS)
-
-/* The following constants are used with the following macros to specify the
- * operation, a read or write operation.
- */
-#define XIIC_READ_OPERATION  1
-#define XIIC_WRITE_OPERATION 0
-
-/* The following constants are used with the transmit FIFO fill function to
- * specify the role which the IIC device is acting as, a master or a slave.
- */
-#define XIIC_MASTER_ROLE     1
-#define XIIC_SLAVE_ROLE             0
-
-/**************************** Type Definitions ******************************/
-
-
-/***************** Macros (Inline Functions) Definitions ********************/
-
-
-/************************** Function Prototypes *****************************/
-
-unsigned XIic_Recv(u32 BaseAddress, u8 Address,
-                  u8 *BufferPtr, unsigned ByteCount);
-
-unsigned XIic_Send(u32 BaseAddress, u8 Address,
-                  u8 *BufferPtr, unsigned ByteCount);
-
-#endif           /* end of protection macro */
+/* $Id: xiic_l.h,v 1.1.1.1 2009/03/25 22:21:56 kenagy Exp $ */
+/*****************************************************************************
+*
+*      XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS"
+*      AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND
+*      SOLUTIONS FOR XILINX DEVICES.  BY PROVIDING THIS DESIGN, CODE,
+*      OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE,
+*      APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION
+*      THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT,
+*      AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE
+*      FOR YOUR IMPLEMENTATION.  XILINX EXPRESSLY DISCLAIMS ANY
+*      WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE
+*      IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR
+*      REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF
+*      INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+*      FOR A PARTICULAR PURPOSE.
+*
+*      (c) Copyright 2002 Xilinx Inc.
+*      All rights reserved.
+*
+*****************************************************************************/
+/****************************************************************************/
+/**
+*
+* @file xiic_l.h
+*
+* This header file contains identifiers and low-level driver functions (or
+* macros) that can be used to access the device.  High-level driver functions
+* are defined in xiic.h.
+*
+* <pre>
+* MODIFICATION HISTORY:
+*
+* Ver  Who  Date     Changes
+* ----- ---- -------- -----------------------------------------------
+* 1.00b jhl  05/07/02 First release
+* 1.01c ecm  12/05/02 new rev
+* </pre>
+*
+*****************************************************************************/
+
+#ifndef XIIC_L_H /* prevent circular inclusions */
+#define XIIC_L_H /* by using protection macros */
+
+/***************************** Include Files ********************************/
+
+#include "xbasic_types.h"
+
+/************************** Constant Definitions ****************************/
+
+#define XIIC_MSB_OFFSET                       3
+
+#define XIIC_REG_OFFSET 0x100 + XIIC_MSB_OFFSET
+
+/*
+ * Register offsets in bytes from RegisterBase. Three is added to the
+ * base offset to access LSB (IBM style) of the word
+ */
+#define XIIC_CR_REG_OFFSET   0x00+XIIC_REG_OFFSET   /* Control Register          */
+#define XIIC_SR_REG_OFFSET   0x04+XIIC_REG_OFFSET   /* Status Register   */
+#define XIIC_DTR_REG_OFFSET  0x08+XIIC_REG_OFFSET   /* Data Tx Register          */
+#define XIIC_DRR_REG_OFFSET  0x0C+XIIC_REG_OFFSET   /* Data Rx Register          */
+#define XIIC_ADR_REG_OFFSET  0x10+XIIC_REG_OFFSET   /* Address Register          */
+#define XIIC_TFO_REG_OFFSET  0x14+XIIC_REG_OFFSET   /* Tx FIFO Occupancy  */
+#define XIIC_RFO_REG_OFFSET  0x18+XIIC_REG_OFFSET   /* Rx FIFO Occupancy  */
+#define XIIC_TBA_REG_OFFSET  0x1C+XIIC_REG_OFFSET   /* 10 Bit Address reg */
+#define XIIC_RFD_REG_OFFSET  0x20+XIIC_REG_OFFSET   /* Rx FIFO Depth reg  */
+
+/* Control Register masks */
+
+#define XIIC_CR_ENABLE_DEVICE_MASK       0x01  /* Device enable = 1      */
+#define XIIC_CR_TX_FIFO_RESET_MASK       0x02  /* Transmit FIFO reset=1  */
+#define XIIC_CR_MSMS_MASK                0x04  /* Master starts Txing=1  */
+#define XIIC_CR_DIR_IS_TX_MASK           0x08  /* Dir of tx. Txing=1     */
+#define XIIC_CR_NO_ACK_MASK              0x10  /* Tx Ack. NO ack = 1     */
+#define XIIC_CR_REPEATED_START_MASK      0x20  /* Repeated start = 1     */
+#define XIIC_CR_GENERAL_CALL_MASK        0x40  /* Gen Call enabled = 1   */
+
+/* Status Register masks */
+
+#define XIIC_SR_GEN_CALL_MASK            0x01  /* 1=a mstr issued a GC   */
+#define XIIC_SR_ADDR_AS_SLAVE_MASK       0x02  /* 1=when addr as slave   */
+#define XIIC_SR_BUS_BUSY_MASK            0x04  /* 1 = bus is busy        */
+#define XIIC_SR_MSTR_RDING_SLAVE_MASK    0x08  /* 1=Dir: mstr <-- slave  */
+#define XIIC_SR_TX_FIFO_FULL_MASK        0x10  /* 1 = Tx FIFO full       */
+#define XIIC_SR_RX_FIFO_FULL_MASK        0x20  /* 1 = Rx FIFO full       */
+#define XIIC_SR_RX_FIFO_EMPTY_MASK       0x40  /* 1 = Rx FIFO empty      */
+
+/* IPIF Interrupt Status Register masks           Interrupt occurs when...       */
+
+#define XIIC_INTR_ARB_LOST_MASK                  0x01  /* 1 = arbitration lost   */
+#define XIIC_INTR_TX_ERROR_MASK                  0x02  /* 1=Tx error/msg complete*/
+#define XIIC_INTR_TX_EMPTY_MASK                  0x04  /* 1 = Tx FIFO/reg empty  */
+#define XIIC_INTR_RX_FULL_MASK           0x08  /* 1=Rx FIFO/reg=OCY level*/
+#define XIIC_INTR_BNB_MASK               0x10  /* 1 = Bus not busy       */
+#define XIIC_INTR_AAS_MASK               0x20  /* 1 = when addr as slave */
+#define XIIC_INTR_NAAS_MASK              0x40  /* 1 = not addr as slave  */
+#define XIIC_INTR_TX_HALF_MASK           0x80  /* 1 = TX FIFO half empty */
+
+/* IPIF Device Interrupt Register masks */
+
+#define XIIC_IPIF_IIC_MASK         0x00000004UL    /* 1=inter enabled */
+#define XIIC_IPIF_ERROR_MASK       0x00000001UL    /* 1=inter enabled */
+#define XIIC_IPIF_INTER_ENABLE_MASK  (XIIC_IPIF_IIC_MASK |  \
+                                     XIIC_IPIF_ERROR_MASK)
+
+#define XIIC_TX_ADDR_SENT            0x00
+#define XIIC_TX_ADDR_MSTR_RECV_MASK   0x02
+
+/* The following constants specify the depth of the FIFOs */
+
+#define IIC_RX_FIFO_DEPTH        16   /* Rx fifo capacity               */
+#define IIC_TX_FIFO_DEPTH        16   /* Tx fifo capacity               */
+
+/* The following constants specify groups of interrupts that are typically
+ * enabled or disables at the same time
+ */
+#define XIIC_TX_INTERRUPTS                                         \
+           (XIIC_INTR_TX_ERROR_MASK | XIIC_INTR_TX_EMPTY_MASK |    \
+            XIIC_INTR_TX_HALF_MASK)
+
+#define XIIC_TX_RX_INTERRUPTS (XIIC_INTR_RX_FULL_MASK | XIIC_TX_INTERRUPTS)
+
+/* The following constants are used with the following macros to specify the
+ * operation, a read or write operation.
+ */
+#define XIIC_READ_OPERATION  1
+#define XIIC_WRITE_OPERATION 0
+
+/* The following constants are used with the transmit FIFO fill function to
+ * specify the role which the IIC device is acting as, a master or a slave.
+ */
+#define XIIC_MASTER_ROLE     1
+#define XIIC_SLAVE_ROLE             0
+
+/**************************** Type Definitions ******************************/
+
+
+/***************** Macros (Inline Functions) Definitions ********************/
+
+
+/************************** Function Prototypes *****************************/
+
+unsigned XIic_Recv(u32 BaseAddress, u8 Address,
+                  u8 *BufferPtr, unsigned ByteCount);
+
+unsigned XIic_Send(u32 BaseAddress, u8 Address,
+                  u8 *BufferPtr, unsigned ByteCount);
+
+#endif           /* end of protection macro */
diff -Naur u-boot-2009.03_orig/board/xm250/CVS/Entries u-boot-2009.03/board/xm250/CVS/Entries
--- u-boot-2009.03_orig/board/xm250/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xm250/CVS/Entries      2009-03-25 15:57:50.371832800 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xm250.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/xm250/CVS/Entries.Extra u-boot-2009.03/board/xm250/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/xm250/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xm250/CVS/Entries.Extra        2009-03-25 15:57:50.371832800 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019716/
+/config.mk///1238019716/
+/flash.c///1238019716/
+/lowlevel_init.S///1238019716/
+/u-boot.lds///1238019716/
+/xm250.c///1238019716/
diff -Naur u-boot-2009.03_orig/board/xm250/CVS/Entries.Extra.Old u-boot-2009.03/board/xm250/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/xm250/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xm250/CVS/Entries.Extra.Old    2009-03-25 15:25:08.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019716/
+/config.mk///1238019716/
+/flash.c///1238019716/
+/lowlevel_init.S///1238019716/
+/u-boot.lds///1238019716/
+/xm250.c///1238019716/
diff -Naur u-boot-2009.03_orig/board/xm250/CVS/Entries.Old u-boot-2009.03/board/xm250/CVS/Entries.Old
--- u-boot-2009.03_orig/board/xm250/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xm250/CVS/Entries.Old  2009-03-25 15:25:08.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:56 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:56 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:56 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:56 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:56 2009//
+/xm250.c/1.1.1.1/Wed Mar 25 22:21:56 2009//
+D
diff -Naur u-boot-2009.03_orig/board/xm250/CVS/Repository u-boot-2009.03/board/xm250/CVS/Repository
--- u-boot-2009.03_orig/board/xm250/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xm250/CVS/Repository   2009-03-25 15:25:08.306265100 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/xm250
diff -Naur u-boot-2009.03_orig/board/xm250/CVS/Root u-boot-2009.03/board/xm250/CVS/Root
--- u-boot-2009.03_orig/board/xm250/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xm250/CVS/Root 2009-03-25 15:25:08.306265100 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/xpedite1k/CVS/Entries u-boot-2009.03/board/xpedite1k/CVS/Entries
--- u-boot-2009.03_orig/board/xpedite1k/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xpedite1k/CVS/Entries  2009-03-25 15:57:50.434332400 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds.debug/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xpedite1k.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/xpedite1k/CVS/Entries.Extra u-boot-2009.03/board/xpedite1k/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/xpedite1k/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xpedite1k/CVS/Entries.Extra    2009-03-25 15:57:50.449957300 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019716/
+/config.mk///1238019716/
+/flash.c///1238019716/
+/init.S///1238019716/
+/u-boot.lds///1238019716/
+/u-boot.lds.debug///1238019716/
+/xpedite1k.c///1238019716/
diff -Naur u-boot-2009.03_orig/board/xpedite1k/CVS/Entries.Extra.Old u-boot-2009.03/board/xpedite1k/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/xpedite1k/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xpedite1k/CVS/Entries.Extra.Old        2009-03-25 15:25:08.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019716/
+/config.mk///1238019716/
+/flash.c///1238019716/
+/init.S///1238019716/
+/u-boot.lds///1238019716/
+/u-boot.lds.debug///1238019716/
+/xpedite1k.c///1238019716/
diff -Naur u-boot-2009.03_orig/board/xpedite1k/CVS/Entries.Old u-boot-2009.03/board/xpedite1k/CVS/Entries.Old
--- u-boot-2009.03_orig/board/xpedite1k/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xpedite1k/CVS/Entries.Old      2009-03-25 15:25:08.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:56 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:56 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:56 2009//
+/init.S/1.1.1.1/Wed Mar 25 22:21:56 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:56 2009//
+/u-boot.lds.debug/1.1.1.1/Wed Mar 25 22:21:56 2009//
+/xpedite1k.c/1.1.1.1/Wed Mar 25 22:21:56 2009//
+D
diff -Naur u-boot-2009.03_orig/board/xpedite1k/CVS/Repository u-boot-2009.03/board/xpedite1k/CVS/Repository
--- u-boot-2009.03_orig/board/xpedite1k/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xpedite1k/CVS/Repository       2009-03-25 15:25:08.587513300 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/xpedite1k
diff -Naur u-boot-2009.03_orig/board/xpedite1k/CVS/Root u-boot-2009.03/board/xpedite1k/CVS/Root
--- u-boot-2009.03_orig/board/xpedite1k/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xpedite1k/CVS/Root     2009-03-25 15:25:08.587513300 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/xsengine/CVS/Entries u-boot-2009.03/board/xsengine/CVS/Entries
--- u-boot-2009.03_orig/board/xsengine/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xsengine/CVS/Entries   2009-03-25 15:57:50.512456900 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xsengine.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/xsengine/CVS/Entries.Extra u-boot-2009.03/board/xsengine/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/xsengine/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xsengine/CVS/Entries.Extra     2009-03-25 15:57:50.512456900 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019716/
+/config.mk///1238019716/
+/flash.c///1238019716/
+/lowlevel_init.S///1238019716/
+/u-boot.lds///1238019716/
+/xsengine.c///1238019716/
diff -Naur u-boot-2009.03_orig/board/xsengine/CVS/Entries.Extra.Old u-boot-2009.03/board/xsengine/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/xsengine/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xsengine/CVS/Entries.Extra.Old 2009-03-25 15:25:08.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019716/
+/config.mk///1238019716/
+/flash.c///1238019716/
+/lowlevel_init.S///1238019716/
+/u-boot.lds///1238019716/
+/xsengine.c///1238019716/
diff -Naur u-boot-2009.03_orig/board/xsengine/CVS/Entries.Old u-boot-2009.03/board/xsengine/CVS/Entries.Old
--- u-boot-2009.03_orig/board/xsengine/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xsengine/CVS/Entries.Old       2009-03-25 15:25:08.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:56 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:56 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:56 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:56 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:56 2009//
+/xsengine.c/1.1.1.1/Wed Mar 25 22:21:56 2009//
+D
diff -Naur u-boot-2009.03_orig/board/xsengine/CVS/Repository u-boot-2009.03/board/xsengine/CVS/Repository
--- u-boot-2009.03_orig/board/xsengine/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xsengine/CVS/Repository        2009-03-25 15:25:08.712512500 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/xsengine
diff -Naur u-boot-2009.03_orig/board/xsengine/CVS/Root u-boot-2009.03/board/xsengine/CVS/Root
--- u-boot-2009.03_orig/board/xsengine/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/xsengine/CVS/Root      2009-03-25 15:25:08.712512500 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/zeus/CVS/Entries u-boot-2009.03/board/zeus/CVS/Entries
--- u-boot-2009.03_orig/board/zeus/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/zeus/CVS/Entries       2009-03-25 15:57:50.606206300 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/update.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/zeus.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/zeus/CVS/Entries.Extra u-boot-2009.03/board/zeus/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/zeus/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/zeus/CVS/Entries.Extra 2009-03-25 15:57:50.606206300 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019716/
+/config.mk///1238019716/
+/u-boot.lds///1238019716/
+/update.c///1238019716/
+/zeus.c///1238019716/
diff -Naur u-boot-2009.03_orig/board/zeus/CVS/Entries.Extra.Old u-boot-2009.03/board/zeus/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/zeus/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/zeus/CVS/Entries.Extra.Old     2009-03-25 15:25:08.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019716/
+/config.mk///1238019716/
+/u-boot.lds///1238019716/
+/update.c///1238019716/
+/zeus.c///1238019716/
diff -Naur u-boot-2009.03_orig/board/zeus/CVS/Entries.Old u-boot-2009.03/board/zeus/CVS/Entries.Old
--- u-boot-2009.03_orig/board/zeus/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/zeus/CVS/Entries.Old   2009-03-25 15:25:08.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:56 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:56 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:56 2009//
+/update.c/1.1.1.1/Wed Mar 25 22:21:56 2009//
+/zeus.c/1.1.1.1/Wed Mar 25 22:21:56 2009//
+D
diff -Naur u-boot-2009.03_orig/board/zeus/CVS/Repository u-boot-2009.03/board/zeus/CVS/Repository
--- u-boot-2009.03_orig/board/zeus/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/zeus/CVS/Repository    2009-03-25 15:25:08.837511700 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/zeus
diff -Naur u-boot-2009.03_orig/board/zeus/CVS/Root u-boot-2009.03/board/zeus/CVS/Root
--- u-boot-2009.03_orig/board/zeus/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/zeus/CVS/Root  2009-03-25 15:25:08.837511700 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/zpc1900/CVS/Entries u-boot-2009.03/board/zpc1900/CVS/Entries
--- u-boot-2009.03_orig/board/zpc1900/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/zpc1900/CVS/Entries    2009-03-25 15:57:50.668705900 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/zpc1900.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/zpc1900/CVS/Entries.Extra u-boot-2009.03/board/zpc1900/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/zpc1900/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/zpc1900/CVS/Entries.Extra      2009-03-25 15:57:50.668705900 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019716/
+/config.mk///1238019716/
+/zpc1900.c///1238019716/
diff -Naur u-boot-2009.03_orig/board/zpc1900/CVS/Entries.Extra.Old u-boot-2009.03/board/zpc1900/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/zpc1900/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/zpc1900/CVS/Entries.Extra.Old  2009-03-25 15:25:09.000000000 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019716/
+/config.mk///1238019716/
+/zpc1900.c///1238019716/
diff -Naur u-boot-2009.03_orig/board/zpc1900/CVS/Entries.Old u-boot-2009.03/board/zpc1900/CVS/Entries.Old
--- u-boot-2009.03_orig/board/zpc1900/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/zpc1900/CVS/Entries.Old        2009-03-25 15:25:09.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:56 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:56 2009//
+/zpc1900.c/1.1.1.1/Wed Mar 25 22:21:56 2009//
+D
diff -Naur u-boot-2009.03_orig/board/zpc1900/CVS/Repository u-boot-2009.03/board/zpc1900/CVS/Repository
--- u-boot-2009.03_orig/board/zpc1900/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/zpc1900/CVS/Repository 2009-03-25 15:25:08.962510900 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/zpc1900
diff -Naur u-boot-2009.03_orig/board/zpc1900/CVS/Root u-boot-2009.03/board/zpc1900/CVS/Root
--- u-boot-2009.03_orig/board/zpc1900/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/zpc1900/CVS/Root       2009-03-25 15:25:08.962510900 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/board/zylonite/CVS/Entries u-boot-2009.03/board/zylonite/CVS/Entries
--- u-boot-2009.03_orig/board/zylonite/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/zylonite/CVS/Entries   2009-03-25 15:57:50.746830400 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nand.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/zylonite.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/board/zylonite/CVS/Entries.Extra u-boot-2009.03/board/zylonite/CVS/Entries.Extra
--- u-boot-2009.03_orig/board/zylonite/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/zylonite/CVS/Entries.Extra     2009-03-25 15:57:50.746830400 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019716/
+/config.mk///1238019716/
+/flash.c///1238019716/
+/lowlevel_init.S///1238019716/
+/nand.c///1238019716/
+/u-boot.lds///1238019716/
+/zylonite.c///1238019716/
diff -Naur u-boot-2009.03_orig/board/zylonite/CVS/Entries.Extra.Old u-boot-2009.03/board/zylonite/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/board/zylonite/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/zylonite/CVS/Entries.Extra.Old 2009-03-25 15:25:09.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019716/
+/config.mk///1238019716/
+/flash.c///1238019716/
+/lowlevel_init.S///1238019716/
+/nand.c///1238019716/
+/u-boot.lds///1238019716/
+/zylonite.c///1238019716/
diff -Naur u-boot-2009.03_orig/board/zylonite/CVS/Entries.Old u-boot-2009.03/board/zylonite/CVS/Entries.Old
--- u-boot-2009.03_orig/board/zylonite/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/zylonite/CVS/Entries.Old       2009-03-25 15:25:09.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:56 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:56 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:56 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:56 2009//
+/nand.c/1.1.1.1/Wed Mar 25 22:21:56 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:56 2009//
+/zylonite.c/1.1.1.1/Wed Mar 25 22:21:56 2009//
+D
diff -Naur u-boot-2009.03_orig/board/zylonite/CVS/Repository u-boot-2009.03/board/zylonite/CVS/Repository
--- u-boot-2009.03_orig/board/zylonite/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/zylonite/CVS/Repository        2009-03-25 15:25:09.056260300 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/board/zylonite
diff -Naur u-boot-2009.03_orig/board/zylonite/CVS/Root u-boot-2009.03/board/zylonite/CVS/Root
--- u-boot-2009.03_orig/board/zylonite/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/board/zylonite/CVS/Root      2009-03-25 15:25:09.056260300 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/common/CVS/Entries u-boot-2009.03/common/CVS/Entries
--- u-boot-2009.03_orig/common/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/common/CVS/Entries   2009-03-31 14:50:24.115645600 -0700
@@ -0,0 +1,106 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/circbuf.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_ambapp.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_autoscript.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_bdinfo.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_bedbug.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_bmp.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_boot.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_bootldr.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_cache.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_console.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_cplbinfo.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_date.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_dcr.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_df.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_diag.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_display.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_dtt.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_eeprom.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_elf.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_ext2.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_fat.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_fdc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_fdos.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_fdt.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_fpga.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_i2c.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_ide.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_immap.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_irq.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_itest.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_license.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_load.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_log.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_mac.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_mem.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_mfsl.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_mii.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_misc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_mmc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_mp.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_nand.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_net.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_nvedit.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_onenand.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_otp.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_pci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_pcmcia.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_portio.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_reginfo.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_reiser.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_sata.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_scsi.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_setexpr.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_sf.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_spi.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_strings.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_terminal.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_ubi.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_universe.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_usb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_vfd.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_ximg.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_yaffs2.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/command.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/console.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ddr_spd.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/devices.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dlmalloc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dlmalloc.src/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/env_common.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/env_dataflash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/env_eeprom.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/env_embedded.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/env_flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/env_nand.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/env_nowhere.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/env_nvram.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/env_onenand.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/env_sf.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/exports.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fdt_support.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/hush.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/image.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/iomux.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/kgdb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lcd.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lynxkdi.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/main.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/memsize.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/miiphyutil.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/s_record.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/update.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usb_kbd.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usb_storage.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xyzModem.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_bootm.c/1.2/Wed Mar 25 23:25:04 2009//
+/bedbug.c/1.1.1.1/Tue Mar 31 21:49:15 2009//T1.1.1.1
+/cmd_doc.c/1.1.1.1/Tue Mar 31 21:49:43 2009//T1.1.1.1
+/cmd_jffs2.c/1.1.1.1/Tue Mar 31 21:50:04 2009//T1.1.1.1
+/docecc.c/1.1.1.1/Tue Mar 31 21:50:23 2009//T1.1.1.1
+D
diff -Naur u-boot-2009.03_orig/common/CVS/Entries.Extra u-boot-2009.03/common/CVS/Entries.Extra
--- u-boot-2009.03_orig/common/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/common/CVS/Entries.Extra     2009-03-31 14:50:24.115645600 -0700
@@ -0,0 +1,105 @@
+/Makefile///1238019717/
+/circbuf.c///1238019716/
+/cmd_ambapp.c///1238019716/
+/cmd_autoscript.c///1238019716/
+/cmd_bdinfo.c///1238019716/
+/cmd_bedbug.c///1238019716/
+/cmd_bmp.c///1238019716/
+/cmd_boot.c///1238019716/
+/cmd_bootldr.c///1238019716/
+/cmd_cache.c///1238019716/
+/cmd_console.c///1238019716/
+/cmd_cplbinfo.c///1238019716/
+/cmd_date.c///1238019716/
+/cmd_dcr.c///1238019716/
+/cmd_df.c///1238019716/
+/cmd_diag.c///1238019716/
+/cmd_display.c///1238019716/
+/cmd_dtt.c///1238019716/
+/cmd_eeprom.c///1238019716/
+/cmd_elf.c///1238019716/
+/cmd_ext2.c///1238019716/
+/cmd_fat.c///1238019716/
+/cmd_fdc.c///1238019716/
+/cmd_fdos.c///1238019716/
+/cmd_fdt.c///1238019716/
+/cmd_flash.c///1238019716/
+/cmd_fpga.c///1238019716/
+/cmd_i2c.c///1238019716/
+/cmd_ide.c///1238019716/
+/cmd_immap.c///1238019716/
+/cmd_irq.c///1238019716/
+/cmd_itest.c///1238019716/
+/cmd_license.c///1238019716/
+/cmd_load.c///1238019716/
+/cmd_log.c///1238019716/
+/cmd_mac.c///1238019716/
+/cmd_mem.c///1238019716/
+/cmd_mfsl.c///1238019716/
+/cmd_mii.c///1238019716/
+/cmd_misc.c///1238019716/
+/cmd_mmc.c///1238019716/
+/cmd_mp.c///1238019716/
+/cmd_nand.c///1238019716/
+/cmd_net.c///1238019716/
+/cmd_nvedit.c///1238019716/
+/cmd_onenand.c///1238019716/
+/cmd_otp.c///1238019716/
+/cmd_pci.c///1238019716/
+/cmd_pcmcia.c///1238019716/
+/cmd_portio.c///1238019716/
+/cmd_reginfo.c///1238019716/
+/cmd_reiser.c///1238019716/
+/cmd_sata.c///1238019716/
+/cmd_scsi.c///1238019716/
+/cmd_setexpr.c///1238019716/
+/cmd_sf.c///1238019716/
+/cmd_spi.c///1238019716/
+/cmd_strings.c///1238019716/
+/cmd_terminal.c///1238019716/
+/cmd_ubi.c///1238019716/
+/cmd_universe.c///1238019716/
+/cmd_usb.c///1238019716/
+/cmd_vfd.c///1238019716/
+/cmd_ximg.c///1238019716/
+/cmd_yaffs2.c///1238019716/
+/command.c///1238019716/
+/console.c///1238019717/
+/ddr_spd.c///1238019717/
+/devices.c///1238019717/
+/dlmalloc.c///1238019717/
+/dlmalloc.src///1238019717/
+/env_common.c///1238019717/
+/env_dataflash.c///1238019717/
+/env_eeprom.c///1238019717/
+/env_embedded.c///1238019717/
+/env_flash.c///1238019717/
+/env_nand.c///1238019717/
+/env_nowhere.c///1238019717/
+/env_nvram.c///1238019717/
+/env_onenand.c///1238019717/
+/env_sf.c///1238019717/
+/exports.c///1238019717/
+/fdt_support.c///1238019717/
+/flash.c///1238019717/
+/hush.c///1238019717/
+/image.c///1238019717/
+/iomux.c///1238019717/
+/kgdb.c///1238019717/
+/lcd.c///1238019717/
+/lynxkdi.c///1238019717/
+/main.c///1238019717/
+/memsize.c///1238019717/
+/miiphyutil.c///1238019717/
+/s_record.c///1238019717/
+/serial.c///1238019717/
+/update.c///1238019717/
+/usb.c///1238019717/
+/usb_kbd.c///1238019717/
+/usb_storage.c///1238019717/
+/xyzModem.c///1238019717/
+/cmd_bootm.c///1238028701/
+/bedbug.c///1238019716/
+/cmd_doc.c///1238019716/
+/cmd_jffs2.c///1238019716/
+/docecc.c///1238019717/
diff -Naur u-boot-2009.03_orig/common/CVS/Entries.Extra.Old u-boot-2009.03/common/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/common/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/common/CVS/Entries.Extra.Old 2009-03-31 14:50:04.000000000 -0700
@@ -0,0 +1,105 @@
+/Makefile///1238019717/
+/circbuf.c///1238019716/
+/cmd_ambapp.c///1238019716/
+/cmd_autoscript.c///1238019716/
+/cmd_bdinfo.c///1238019716/
+/cmd_bedbug.c///1238019716/
+/cmd_bmp.c///1238019716/
+/cmd_boot.c///1238019716/
+/cmd_bootldr.c///1238019716/
+/cmd_cache.c///1238019716/
+/cmd_console.c///1238019716/
+/cmd_cplbinfo.c///1238019716/
+/cmd_date.c///1238019716/
+/cmd_dcr.c///1238019716/
+/cmd_df.c///1238019716/
+/cmd_diag.c///1238019716/
+/cmd_display.c///1238019716/
+/cmd_dtt.c///1238019716/
+/cmd_eeprom.c///1238019716/
+/cmd_elf.c///1238019716/
+/cmd_ext2.c///1238019716/
+/cmd_fat.c///1238019716/
+/cmd_fdc.c///1238019716/
+/cmd_fdos.c///1238019716/
+/cmd_fdt.c///1238019716/
+/cmd_flash.c///1238019716/
+/cmd_fpga.c///1238019716/
+/cmd_i2c.c///1238019716/
+/cmd_ide.c///1238019716/
+/cmd_immap.c///1238019716/
+/cmd_irq.c///1238019716/
+/cmd_itest.c///1238019716/
+/cmd_license.c///1238019716/
+/cmd_load.c///1238019716/
+/cmd_log.c///1238019716/
+/cmd_mac.c///1238019716/
+/cmd_mem.c///1238019716/
+/cmd_mfsl.c///1238019716/
+/cmd_mii.c///1238019716/
+/cmd_misc.c///1238019716/
+/cmd_mmc.c///1238019716/
+/cmd_mp.c///1238019716/
+/cmd_nand.c///1238019716/
+/cmd_net.c///1238019716/
+/cmd_nvedit.c///1238019716/
+/cmd_onenand.c///1238019716/
+/cmd_otp.c///1238019716/
+/cmd_pci.c///1238019716/
+/cmd_pcmcia.c///1238019716/
+/cmd_portio.c///1238019716/
+/cmd_reginfo.c///1238019716/
+/cmd_reiser.c///1238019716/
+/cmd_sata.c///1238019716/
+/cmd_scsi.c///1238019716/
+/cmd_setexpr.c///1238019716/
+/cmd_sf.c///1238019716/
+/cmd_spi.c///1238019716/
+/cmd_strings.c///1238019716/
+/cmd_terminal.c///1238019716/
+/cmd_ubi.c///1238019716/
+/cmd_universe.c///1238019716/
+/cmd_usb.c///1238019716/
+/cmd_vfd.c///1238019716/
+/cmd_ximg.c///1238019716/
+/cmd_yaffs2.c///1238019716/
+/command.c///1238019716/
+/console.c///1238019717/
+/ddr_spd.c///1238019717/
+/devices.c///1238019717/
+/dlmalloc.c///1238019717/
+/dlmalloc.src///1238019717/
+/env_common.c///1238019717/
+/env_dataflash.c///1238019717/
+/env_eeprom.c///1238019717/
+/env_embedded.c///1238019717/
+/env_flash.c///1238019717/
+/env_nand.c///1238019717/
+/env_nowhere.c///1238019717/
+/env_nvram.c///1238019717/
+/env_onenand.c///1238019717/
+/env_sf.c///1238019717/
+/exports.c///1238019717/
+/fdt_support.c///1238019717/
+/flash.c///1238019717/
+/hush.c///1238019717/
+/image.c///1238019717/
+/iomux.c///1238019717/
+/kgdb.c///1238019717/
+/lcd.c///1238019717/
+/lynxkdi.c///1238019717/
+/main.c///1238019717/
+/memsize.c///1238019717/
+/miiphyutil.c///1238019717/
+/s_record.c///1238019717/
+/serial.c///1238019717/
+/update.c///1238019717/
+/usb.c///1238019717/
+/usb_kbd.c///1238019717/
+/usb_storage.c///1238019717/
+/xyzModem.c///1238019717/
+/cmd_bootm.c///1238028701/
+/docecc.c///1238028701/
+/bedbug.c///1238019716/
+/cmd_doc.c///1238019716/
+/cmd_jffs2.c///1238019716/
diff -Naur u-boot-2009.03_orig/common/CVS/Entries.Old u-boot-2009.03/common/CVS/Entries.Old
--- u-boot-2009.03_orig/common/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/common/CVS/Entries.Old       2009-03-31 14:50:04.000000000 -0700
@@ -0,0 +1,106 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/circbuf.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_ambapp.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_autoscript.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_bdinfo.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_bedbug.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_bmp.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_boot.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_bootldr.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_cache.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_console.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_cplbinfo.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_date.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_dcr.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_df.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_diag.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_display.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_dtt.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_eeprom.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_elf.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_ext2.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_fat.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_fdc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_fdos.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_fdt.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_fpga.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_i2c.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_ide.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_immap.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_irq.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_itest.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_license.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_load.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_log.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_mac.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_mem.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_mfsl.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_mii.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_misc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_mmc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_mp.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_nand.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_net.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_nvedit.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_onenand.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_otp.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_pci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_pcmcia.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_portio.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_reginfo.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_reiser.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_sata.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_scsi.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_setexpr.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_sf.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_spi.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_strings.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_terminal.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_ubi.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_universe.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_usb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_vfd.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_ximg.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_yaffs2.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/command.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/console.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ddr_spd.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/devices.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dlmalloc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dlmalloc.src/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/env_common.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/env_dataflash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/env_eeprom.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/env_embedded.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/env_flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/env_nand.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/env_nowhere.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/env_nvram.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/env_onenand.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/env_sf.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/exports.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fdt_support.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/hush.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/image.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/iomux.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/kgdb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lcd.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lynxkdi.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/main.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/memsize.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/miiphyutil.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/s_record.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/update.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usb_kbd.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usb_storage.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xyzModem.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_bootm.c/1.2/Wed Mar 25 23:25:04 2009//
+/docecc.c/1.2/Thu Mar 26 00:51:41 2009//
+/bedbug.c/1.1.1.1/Tue Mar 31 21:49:15 2009//T1.1.1.1
+/cmd_doc.c/1.1.1.1/Tue Mar 31 21:49:43 2009//T1.1.1.1
+/cmd_jffs2.c/1.1.1.1/Tue Mar 31 21:50:04 2009//T1.1.1.1
+D
diff -Naur u-boot-2009.03_orig/common/CVS/Repository u-boot-2009.03/common/CVS/Repository
--- u-boot-2009.03_orig/common/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/common/CVS/Repository        2009-03-25 15:25:09.228134200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/common
diff -Naur u-boot-2009.03_orig/common/CVS/Root u-boot-2009.03/common/CVS/Root
--- u-boot-2009.03_orig/common/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/common/CVS/Root      2009-03-25 15:25:09.228134200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/common/bedbug.c u-boot-2009.03/common/bedbug.c
--- u-boot-2009.03_orig/common/bedbug.c 2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/common/bedbug.c      2009-03-31 14:49:15.725896000 -0700
@@ -1,1252 +1,1252 @@
-/* $Id$ */
-
-#include <common.h>
-
-#include <linux/ctype.h>
-#include <bedbug/bedbug.h>
-#include <bedbug/ppc.h>
-#include <bedbug/regs.h>
-#include <bedbug/tables.h>
-
-#define Elf32_Word     unsigned long
-
-/* USE_SOURCE_CODE enables some symbolic debugging functions of this
-   code.  This is only useful if the program will have access to the
-   source code for the binary being examined.
-*/
-
-/* #define USE_SOURCE_CODE 1 */
-
-#ifdef USE_SOURCE_CODE
-extern int line_info_from_addr __P ((Elf32_Word, char *, char *, int *));
-extern struct symreflist *symByAddr;
-extern char *symbol_name_from_addr __P ((Elf32_Word, int, int *));
-#endif /* USE_SOURCE_CODE */
-
-int print_operands __P ((struct ppc_ctx *));
-int get_operand_value __P ((struct opcode *, unsigned long,
-                               enum OP_FIELD, unsigned long *));
-struct opcode *find_opcode __P ((unsigned long));
-struct opcode *find_opcode_by_name __P ((char *));
-char *spr_name __P ((int));
-int spr_value __P ((char *));
-char *tbr_name __P ((int));
-int tbr_value __P ((char *));
-int parse_operand __P ((unsigned long, struct opcode *,
-                       struct operand *, char *, int *));
-int get_word __P ((char **, char *));
-long read_number __P ((char *));
-int downstring __P ((char *));
-
-
-/*======================================================================
- * Entry point for the PPC disassembler.
- *
- * Arguments:
- *     memaddr         The address to start disassembling from.
- *
- *     virtual         If this value is non-zero, then this will be
- *                     used as the base address for the output and
- *                     symbol lookups.  If this value is zero then
- *                     memaddr is used as the absolute address.
- *
- *     num_instr       The number of instructions to disassemble.  Since
- *                     each instruction is 32 bits long, this can be
- *                     computed if you know the total size of the region.
- *
- *     pfunc           The address of a function that is called to print
- *                     each line of output.  The function should take a
- *                     single character pointer as its parameters a la puts.
- *
- *     flags           Sets options for the output.  This is a
- *                     bitwise-inclusive-OR of the following
- *                     values.  Note that only one of the radix
- *                     options may be set.
- *
- *                     F_RADOCTAL      - output radix is unsigned base 8.
- *                     F_RADUDECIMAL   - output radix is unsigned base 10.
- *                     F_RADSDECIMAL   - output radix is signed base 10.
- *                     F_RADHEX        - output radix is unsigned base 16.
- *                     F_SIMPLE        - use simplified mnemonics.
- *                     F_SYMBOL        - lookup symbols for addresses.
- *                     F_INSTR         - output raw instruction.
- *                     F_LINENO        - show line # info if available.
- *
- * Returns TRUE if the area was successfully disassembled or FALSE if
- * a problem was encountered with accessing the memory.
- */
-
-int disppc (unsigned char *memaddr, unsigned char *virtual, int num_instr,
-                       int (*pfunc) (const char *), unsigned long flags)
-{
-       int i;
-       struct ppc_ctx ctx;
-
-#ifdef USE_SOURCE_CODE
-       int line_no = 0;
-       int last_line_no = 0;
-       char funcname[128] = { 0 };
-       char filename[256] = { 0 };
-       char last_funcname[128] = { 0 };
-       int symoffset;
-       char *symname;
-       char *cursym = (char *) 0;
-#endif /* USE_SOURCE_CODE */
-  /*------------------------------------------------------------*/
-
-       ctx.flags = flags;
-       ctx.virtual = virtual;
-
-       /* Figure out the output radix before we go any further */
-
-       if (ctx.flags & F_RADOCTAL) {
-               /* Unsigned octal output */
-               strcpy (ctx.radix_fmt, "O%o");
-       } else if (ctx.flags & F_RADUDECIMAL) {
-               /* Unsigned decimal output */
-               strcpy (ctx.radix_fmt, "%u");
-       } else if (ctx.flags & F_RADSDECIMAL) {
-               /* Signed decimal output */
-               strcpy (ctx.radix_fmt, "%d");
-       } else {
-               /* Unsigned hex output */
-               strcpy (ctx.radix_fmt, "0x%x");
-       }
-
-       if (ctx.virtual == 0) {
-               ctx.virtual = memaddr;
-       }
-#ifdef USE_SOURCE_CODE
-       if (ctx.flags & F_SYMBOL) {
-               if (symByAddr == 0)             /* no symbols loaded */
-                       ctx.flags &= ~F_SYMBOL;
-               else {
-                       cursym = (char *) 0;
-                       symoffset = 0;
-               }
-       }
-#endif /* USE_SOURCE_CODE */
-
-       /* format each line as "XXXXXXXX: <symbol> IIIIIIII  disassembly" where,
-          XXXXXXXX is the memory address in hex,
-          <symbol> is the symbolic location if F_SYMBOL is set.
-          IIIIIIII is the raw machine code in hex if F_INSTR is set,
-          and disassembly is the disassembled machine code with numbers
-          formatted according to the 'radix' parameter */
-
-       for (i = 0; i < num_instr; ++i, memaddr += 4, ctx.virtual += 4) {
-#ifdef USE_SOURCE_CODE
-               if (ctx.flags & F_LINENO) {
-                       if ((line_info_from_addr ((Elf32_Word) ctx.virtual, filename,
-                                                                         funcname, &line_no) == TRUE) &&
-                               ((line_no != last_line_no) ||
-                                (strcmp (last_funcname, funcname) != 0))) {
-                               print_source_line (filename, funcname, line_no, pfunc);
-                       }
-                       last_line_no = line_no;
-                       strcpy (last_funcname, funcname);
-               }
-#endif /* USE_SOURCE_CODE */
-
-               sprintf (ctx.data, "%08lx: ", (unsigned long) ctx.virtual);
-               ctx.datalen = 10;
-
-#ifdef USE_SOURCE_CODE
-               if (ctx.flags & F_SYMBOL) {
-                       if ((symname =
-                                symbol_name_from_addr ((Elf32_Word) ctx.virtual,
-                                                                               TRUE, 0)) != 0) {
-                               cursym = symname;
-                               symoffset = 0;
-                       } else {
-                               if ((cursym == 0) &&
-                                       ((symname =
-                                         symbol_name_from_addr ((Elf32_Word) ctx.virtual,
-                                                                                        FALSE, &symoffset)) != 0)) {
-                                       cursym = symname;
-                               } else {
-                                       symoffset += 4;
-                               }
-                       }
-
-                       if (cursym != 0) {
-                               sprintf (&ctx.data[ctx.datalen], "<%s+", cursym);
-                               ctx.datalen = strlen (ctx.data);
-                               sprintf (&ctx.data[ctx.datalen], ctx.radix_fmt, symoffset);
-                               strcat (ctx.data, ">");
-                               ctx.datalen = strlen (ctx.data);
-                       }
-               }
-#endif /* USE_SOURCE_CODE */
-
-               ctx.instr = INSTRUCTION (memaddr);
-
-               if (ctx.flags & F_INSTR) {
-                       /* Find the opcode structure for this opcode.  If one is not found
-                          then it must be an illegal instruction */
-                       sprintf (&ctx.data[ctx.datalen],
-                                        "   %02lx %02lx %02lx %02lx    ",
-                                        ((ctx.instr >> 24) & 0xff),
-                                        ((ctx.instr >> 16) & 0xff), ((ctx.instr >> 8) & 0xff),
-                                        (ctx.instr & 0xff));
-                       ctx.datalen += 18;
-               } else {
-                       strcat (ctx.data, "   ");
-                       ctx.datalen += 3;
-               }
-
-               if ((ctx.op = find_opcode (ctx.instr)) == 0) {
-                       /* Illegal Opcode */
-                       sprintf (&ctx.data[ctx.datalen], "        .long 0x%08lx",
-                                        ctx.instr);
-                       ctx.datalen += 24;
-                       (*pfunc) (ctx.data);
-                       continue;
-               }
-
-               if (((ctx.flags & F_SIMPLE) == 0) ||
-                       (ctx.op->hfunc == 0) || ((*ctx.op->hfunc) (&ctx) == FALSE)) {
-                       sprintf (&ctx.data[ctx.datalen], "%-7s ", ctx.op->name);
-                       ctx.datalen += 8;
-                       print_operands (&ctx);
-               }
-
-               (*pfunc) (ctx.data);
-       }
-
-       return TRUE;
-}                                                              /* disppc */
-
-
-
-/*======================================================================
- * Called by the disassembler to print the operands for an instruction.
- *
- * Arguments:
- *     ctx             A pointer to the disassembler context record.
- *
- * always returns 0.
- */
-
-int print_operands (struct ppc_ctx *ctx)
-{
-       int open_parens = 0;
-       int field;
-       unsigned long operand;
-       struct operand *opr;
-
-#ifdef USE_SOURCE_CODE
-       char *symname;
-       int offset;
-#endif /* USE_SOURCE_CODE */
-  /*------------------------------------------------------------*/
-
-       /* Walk through the operands and list each in order */
-       for (field = 0; ctx->op->fields[field] != 0; ++field) {
-               if (ctx->op->fields[field] > n_operands) {
-                       continue;                       /* bad operand ?! */
-               }
-
-               opr = &operands[ctx->op->fields[field] - 1];
-
-               if (opr->hint & OH_SILENT) {
-                       continue;
-               }
-
-               if ((field > 0) && !open_parens) {
-                       strcat (ctx->data, ",");
-                       ctx->datalen++;
-               }
-
-               operand = (ctx->instr >> opr->shift) & ((1 << opr->bits) - 1);
-
-               if (opr->hint & OH_ADDR) {
-                       if ((operand & (1 << (opr->bits - 1))) != 0) {
-                               operand = operand - (1 << opr->bits);
-                       }
-
-                       if (ctx->op->hint & H_RELATIVE)
-                               operand = (operand << 2) + (unsigned long) ctx->virtual;
-                       else
-                               operand = (operand << 2);
-
-
-                       sprintf (&ctx->data[ctx->datalen], "0x%lx", operand);
-                       ctx->datalen = strlen (ctx->data);
-
-#ifdef USE_SOURCE_CODE
-                       if ((ctx->flags & F_SYMBOL) &&
-                               ((symname =
-                                 symbol_name_from_addr (operand, 0, &offset)) != 0)) {
-                               sprintf (&ctx->data[ctx->datalen], " <%s", symname);
-                               if (offset != 0) {
-                                       strcat (ctx->data, "+");
-                                       ctx->datalen = strlen (ctx->data);
-                                       sprintf (&ctx->data[ctx->datalen], ctx->radix_fmt,
-                                                        offset);
-                               }
-                               strcat (ctx->data, ">");
-                       }
-#endif /* USE_SOURCE_CODE */
-               }
-
-               else if (opr->hint & OH_REG) {
-                       if ((operand == 0) &&
-                               (opr->field == O_rA) && (ctx->op->hint & H_RA0_IS_0)) {
-                               strcat (ctx->data, "0");
-                       } else {
-                               sprintf (&ctx->data[ctx->datalen], "r%d", (short) operand);
-                       }
-
-                       if (open_parens) {
-                               strcat (ctx->data, ")");
-                               open_parens--;
-                       }
-               }
-
-               else if (opr->hint & OH_SPR) {
-                       strcat (ctx->data, spr_name (operand));
-               }
-
-               else if (opr->hint & OH_TBR) {
-                       strcat (ctx->data, tbr_name (operand));
-               }
-
-               else if (opr->hint & OH_LITERAL) {
-                       switch (opr->field) {
-                       case O_cr2:
-                               strcat (ctx->data, "cr2");
-                               ctx->datalen += 3;
-                               break;
-
-                       default:
-                               break;
-                       }
-               }
-
-               else {
-                       sprintf (&ctx->data[ctx->datalen], ctx->radix_fmt,
-                                        (unsigned short) operand);
-
-                       if (open_parens) {
-                               strcat (ctx->data, ")");
-                               open_parens--;
-                       }
-
-                       else if (opr->hint & OH_OFFSET) {
-                               strcat (ctx->data, "(");
-                               open_parens++;
-                       }
-               }
-
-               ctx->datalen = strlen (ctx->data);
-       }
-
-       return 0;
-}                                                              /* print_operands */
-
-
-
-/*======================================================================
- * Called to get the value of an arbitrary operand with in an instruction.
- *
- * Arguments:
- *     op              The pointer to the opcode structure to which
- *                     the operands belong.
- *
- *     instr           The instruction (32 bits) containing the opcode
- *                     and the operands to print.  By the time that
- *                     this routine is called the operand has already
- *                     been added to the output.
- *
- *     field           The field (operand) to get the value of.
- *
- *     value           The address of an unsigned long to be filled in
- *                     with the value of the operand if it is found.  This
- *                     will only be filled in if the function returns
- *                     TRUE.  This may be passed as 0 if the value is
- *                     not required.
- *
- * Returns TRUE if the operand was found or FALSE if it was not.
- */
-
-int get_operand_value (struct opcode *op, unsigned long instr,
-                                          enum OP_FIELD field, unsigned long *value)
-{
-       int i;
-       struct operand *opr;
-
-  /*------------------------------------------------------------*/
-
-       if (field > n_operands) {
-               return FALSE;                   /* bad operand ?! */
-       }
-
-       /* Walk through the operands and list each in order */
-       for (i = 0; op->fields[i] != 0; ++i) {
-               if (op->fields[i] != field) {
-                       continue;
-               }
-
-               opr = &operands[op->fields[i] - 1];
-
-               if (value) {
-                       *value = (instr >> opr->shift) & ((1 << opr->bits) - 1);
-               }
-               return TRUE;
-       }
-
-       return FALSE;
-}                                                              /* operand_value */
-
-
-
-/*======================================================================
- * Called by the disassembler to match an opcode value to an opcode structure.
- *
- * Arguments:
- *     instr           The instruction (32 bits) to match.  This value
- *                     may contain operand values as well as the opcode
- *                     since they will be masked out anyway for this
- *                     search.
- *
- * Returns the address of an opcode struct (from the opcode table) if the
- * operand successfully matched an entry, or 0 if no match was found.
- */
-
-struct opcode *find_opcode (unsigned long instr)
-{
-       struct opcode *ptr;
-       int top = 0;
-       int bottom = n_opcodes - 1;
-       int idx;
-
-  /*------------------------------------------------------------*/
-
-       while (top <= bottom) {
-               idx = (top + bottom) >> 1;
-               ptr = &opcodes[idx];
-
-               if ((instr & ptr->mask) < ptr->opcode) {
-                       bottom = idx - 1;
-               } else if ((instr & ptr->mask) > ptr->opcode) {
-                       top = idx + 1;
-               } else {
-                       return ptr;
-               }
-       }
-
-       return (struct opcode *) 0;
-}                                                              /* find_opcode */
-
-
-
-/*======================================================================
- * Called by the assembler to match an opcode name to an opcode structure.
- *
- * Arguments:
- *     name            The text name of the opcode, e.g. "b", "mtspr", etc.
- *
- * The opcodes are sorted numerically by their instruction binary code
- * so a search for the name cannot use the binary search used by the
- * other find routine.
- *
- * Returns the address of an opcode struct (from the opcode table) if the
- * name successfully matched an entry, or 0 if no match was found.
- */
-
-struct opcode *find_opcode_by_name (char *name)
-{
-       int idx;
-
-  /*------------------------------------------------------------*/
-
-       downstring (name);
-
-       for (idx = 0; idx < n_opcodes; ++idx) {
-               if (!strcmp (name, opcodes[idx].name))
-                       return &opcodes[idx];
-       }
-
-       return (struct opcode *) 0;
-}                                                              /* find_opcode_by_name */
-
-
-
-/*======================================================================
- * Convert the 'spr' operand from its numeric value to its symbolic name.
- *
- * Arguments:
- *     value           The value of the 'spr' operand.  This value should
- *                     be unmodified from its encoding in the instruction.
- *                     the split-field computations will be performed
- *                     here before the switch.
- *
- * Returns the address of a character array containing the name of the
- * special purpose register defined by the 'value' parameter, or the
- * address of a character array containing "???" if no match was found.
- */
-
-char *spr_name (int value)
-{
-       unsigned short spr;
-       static char other[10];
-       int i;
-
-  /*------------------------------------------------------------*/
-
-       /* spr is a 10 bit field whose interpretation has the high and low
-          five-bit fields reversed from their encoding in the operand */
-
-       spr = ((value >> 5) & 0x1f) | ((value & 0x1f) << 5);
-
-       for (i = 0; i < n_sprs; ++i) {
-               if (spr == spr_map[i].spr_val)
-                       return spr_map[i].spr_name;
-       }
-
-       sprintf (other, "%d", spr);
-       return other;
-}                                                              /* spr_name */
-
-
-
-/*======================================================================
- * Convert the 'spr' operand from its symbolic name to its numeric value
- *
- * Arguments:
- *     name            The symbolic name of the 'spr' operand.  The
- *                     split-field encoding will be done by this routine.
- *                     NOTE: name can be a number.
- *
- * Returns the numeric value for the spr appropriate for encoding a machine
- * instruction.  Returns 0 if unable to find the SPR.
- */
-
-int spr_value (char *name)
-{
-       struct spr_info *sprp;
-       int spr;
-       int i;
-
-  /*------------------------------------------------------------*/
-
-       if (!name || !*name)
-               return 0;
-
-       if (isdigit ((int) name[0])) {
-               i = htonl (read_number (name));
-               spr = ((i >> 5) & 0x1f) | ((i & 0x1f) << 5);
-               return spr;
-       }
-
-       downstring (name);
-
-       for (i = 0; i < n_sprs; ++i) {
-               sprp = &spr_map[i];
-
-               if (strcmp (name, sprp->spr_name) == 0) {
-                       /* spr is a 10 bit field whose interpretation has the high and low
-                          five-bit fields reversed from their encoding in the operand */
-                       i = htonl (sprp->spr_val);
-                       spr = ((i >> 5) & 0x1f) | ((i & 0x1f) << 5);
-
-                       return spr;
-               }
-       }
-
-       return 0;
-}                                                              /* spr_value */
-
-
-
-/*======================================================================
- * Convert the 'tbr' operand from its numeric value to its symbolic name.
- *
- * Arguments:
- *     value           The value of the 'tbr' operand.  This value should
- *                     be unmodified from its encoding in the instruction.
- *                     the split-field computations will be performed
- *                     here before the switch.
- *
- * Returns the address of a character array containing the name of the
- * time base register defined by the 'value' parameter, or the address
- * of a character array containing "???" if no match was found.
- */
-
-char *tbr_name (int value)
-{
-       unsigned short tbr;
-
-  /*------------------------------------------------------------*/
-
-       /* tbr is a 10 bit field whose interpretation has the high and low
-          five-bit fields reversed from their encoding in the operand */
-
-       tbr = ((value >> 5) & 0x1f) | ((value & 0x1f) << 5);
-
-       if (tbr == 268)
-               return "TBL";
-
-       else if (tbr == 269)
-               return "TBU";
-
-
-       return "???";
-}                                                              /* tbr_name */
-
-
-
-/*======================================================================
- * Convert the 'tbr' operand from its symbolic name to its numeric value.
- *
- * Arguments:
- *     name            The symbolic name of the 'tbr' operand.  The
- *                     split-field encoding will be done by this routine.
- *
- * Returns the numeric value for the spr appropriate for encoding a machine
- * instruction.  Returns 0 if unable to find the TBR.
- */
-
-int tbr_value (char *name)
-{
-       int tbr;
-       int val;
-
-  /*------------------------------------------------------------*/
-
-       if (!name || !*name)
-               return 0;
-
-       downstring (name);
-
-       if (isdigit ((int) name[0])) {
-               val = read_number (name);
-
-               if (val != 268 && val != 269)
-                       return 0;
-       } else if (strcmp (name, "tbl") == 0)
-               val = 268;
-       else if (strcmp (name, "tbu") == 0)
-               val = 269;
-       else
-               return 0;
-
-       /* tbr is a 10 bit field whose interpretation has the high and low
-          five-bit fields reversed from their encoding in the operand */
-
-       val = htonl (val);
-       tbr = ((val >> 5) & 0x1f) | ((val & 0x1f) << 5);
-       return tbr;
-}                                                              /* tbr_name */
-
-
-
-/*======================================================================
- * The next several functions (handle_xxx) are the routines that handle
- * disassembling the opcodes with simplified mnemonics.
- *
- * Arguments:
- *     ctx             A pointer to the disassembler context record.
- *
- * Returns TRUE if the simpler form was printed or FALSE if it was not.
- */
-
-int handle_bc (struct ppc_ctx *ctx)
-{
-       unsigned long bo;
-       unsigned long bi;
-       static struct opcode blt = { B_OPCODE (16, 0, 0), B_MASK, {O_BD, 0},
-       0, "blt", H_RELATIVE
-       };
-       static struct opcode bne =
-                       { B_OPCODE (16, 0, 0), B_MASK, {O_cr2, O_BD, 0},
-       0, "bne", H_RELATIVE
-       };
-       static struct opcode bdnz = { B_OPCODE (16, 0, 0), B_MASK, {O_BD, 0},
-       0, "bdnz", H_RELATIVE
-       };
-
-  /*------------------------------------------------------------*/
-
-       if (get_operand_value (ctx->op, ctx->instr, O_BO, &bo) == FALSE)
-               return FALSE;
-
-       if (get_operand_value (ctx->op, ctx->instr, O_BI, &bi) == FALSE)
-               return FALSE;
-
-       if ((bo == 12) && (bi == 0)) {
-               ctx->op = &blt;
-               sprintf (&ctx->data[ctx->datalen], "%-7s ", ctx->op->name);
-               ctx->datalen += 8;
-               print_operands (ctx);
-               return TRUE;
-       } else if ((bo == 4) && (bi == 10)) {
-               ctx->op = &bne;
-               sprintf (&ctx->data[ctx->datalen], "%-7s ", ctx->op->name);
-               ctx->datalen += 8;
-               print_operands (ctx);
-               return TRUE;
-       } else if ((bo == 16) && (bi == 0)) {
-               ctx->op = &bdnz;
-               sprintf (&ctx->data[ctx->datalen], "%-7s ", ctx->op->name);
-               ctx->datalen += 8;
-               print_operands (ctx);
-               return TRUE;
-       }
-
-       return FALSE;
-}                                                              /* handle_blt */
-
-
-
-/*======================================================================
- * Outputs source line information for the disassembler.  This should
- * be modified in the future to lookup the actual line of source code
- * from the file, but for now this will do.
- *
- * Arguments:
- *     filename        The address of a character array containing the
- *                     absolute path and file name of the source file.
- *
- *     funcname        The address of a character array containing the
- *                     name of the function (not C++ demangled (yet))
- *                     to which this code belongs.
- *
- *     line_no         An integer specifying the source line number that
- *                     generated this code.
- *
- *     pfunc           The address of a function to call to print the output.
- *
- *
- * Returns TRUE if it was able to output the line info, or false if it was
- * not.
- */
-
-int print_source_line (char *filename, char *funcname,
-                                          int line_no, int (*pfunc) (const char *))
-{
-       char out_buf[256];
-
-  /*------------------------------------------------------------*/
-
-       (*pfunc) ("");                          /* output a newline */
-       sprintf (out_buf, "%s %s(): line %d", filename, funcname, line_no);
-       (*pfunc) (out_buf);
-
-       return TRUE;
-}                                                              /* print_source_line */
-
-
-
-/*======================================================================
- * Entry point for the PPC assembler.
- *
- * Arguments:
- *     asm_buf         An array of characters containing the assembly opcode
- *                     and operands to convert to a POWERPC machine
- *                     instruction.
- *
- * Returns the machine instruction or zero.
- */
-
-unsigned long asmppc (unsigned long memaddr, char *asm_buf, int *err)
-{
-       struct opcode *opc;
-       struct operand *oper[MAX_OPERANDS];
-       unsigned long instr;
-       unsigned long param;
-       char *ptr = asm_buf;
-       char scratch[20];
-       int i;
-       int w_operands = 0;                     /* wanted # of operands */
-       int n_operands = 0;                     /* # of operands read */
-       int asm_debug = 0;
-
-  /*------------------------------------------------------------*/
-
-       if (err)
-               *err = 0;
-
-       if (get_word (&ptr, scratch) == 0)
-               return 0;
-
-       /* Lookup the opcode structure based on the opcode name */
-       if ((opc = find_opcode_by_name (scratch)) == (struct opcode *) 0) {
-               if (err)
-                       *err = E_ASM_BAD_OPCODE;
-               return 0;
-       }
-
-       if (asm_debug) {
-               printf ("asmppc: Opcode = \"%s\"\n", opc->name);
-       }
-
-       for (i = 0; i < 8; ++i) {
-               if (opc->fields[i] == 0)
-                       break;
-               ++w_operands;
-       }
-
-       if (asm_debug) {
-               printf ("asmppc: Expecting %d operands\n", w_operands);
-       }
-
-       instr = opc->opcode;
-
-       /* read each operand */
-       while (n_operands < w_operands) {
-
-               oper[n_operands] = &operands[opc->fields[n_operands] - 1];
-
-               if (oper[n_operands]->hint & OH_SILENT) {
-                       /* Skip silent operands, they are covered in opc->opcode */
-
-                       if (asm_debug) {
-                               printf ("asmppc: Operand %d \"%s\" SILENT\n", n_operands,
-                                               oper[n_operands]->name);
-                       }
-
-                       ++n_operands;
-                       continue;
-               }
-
-               if (get_word (&ptr, scratch) == 0)
-                       break;
-
-               if (asm_debug) {
-                       printf ("asmppc: Operand %d \"%s\" : \"%s\"\n", n_operands,
-                                       oper[n_operands]->name, scratch);
-               }
-
-               if ((param = parse_operand (memaddr, opc, oper[n_operands],
-                                                                       scratch, err)) == -1)
-                       return 0;
-
-               instr |= param;
-               ++n_operands;
-       }
-
-       if (n_operands < w_operands) {
-               if (err)
-                       *err = E_ASM_NUM_OPERANDS;
-               return 0;
-       }
-
-       if (asm_debug) {
-               printf ("asmppc: Instruction = 0x%08lx\n", instr);
-       }
-
-       return instr;
-}                                                              /* asmppc */
-
-
-
-/*======================================================================
- * Called by the assembler to interpret a single operand
- *
- * Arguments:
- *     ctx             A pointer to the disassembler context record.
- *
- * Returns 0 if the operand is ok, or -1 if it is bad.
- */
-
-int parse_operand (unsigned long memaddr, struct opcode *opc,
-                                  struct operand *oper, char *txt, int *err)
-{
-       long data;
-       long mask;
-       int is_neg = 0;
-
-  /*------------------------------------------------------------*/
-
-       mask = (1 << oper->bits) - 1;
-
-       if (oper->hint & OH_ADDR) {
-               data = read_number (txt);
-
-               if (opc->hint & H_RELATIVE)
-                       data = data - memaddr;
-
-               if (data < 0)
-                       is_neg = 1;
-
-               data >>= 2;
-               data &= (mask >> 1);
-
-               if (is_neg)
-                       data |= 1 << (oper->bits - 1);
-       }
-
-       else if (oper->hint & OH_REG) {
-               if (txt[0] == 'r' || txt[0] == 'R')
-                       txt++;
-               else if (txt[0] == '%' && (txt[1] == 'r' || txt[1] == 'R'))
-                       txt += 2;
-
-               data = read_number (txt);
-               if (data > 31) {
-                       if (err)
-                               *err = E_ASM_BAD_REGISTER;
-                       return -1;
-               }
-
-               data = htonl (data);
-       }
-
-       else if (oper->hint & OH_SPR) {
-               if ((data = spr_value (txt)) == 0) {
-                       if (err)
-                               *err = E_ASM_BAD_SPR;
-                       return -1;
-               }
-       }
-
-       else if (oper->hint & OH_TBR) {
-               if ((data = tbr_value (txt)) == 0) {
-                       if (err)
-                               *err = E_ASM_BAD_TBR;
-                       return -1;
-               }
-       }
-
-       else {
-               data = htonl (read_number (txt));
-       }
-
-       return (data & mask) << oper->shift;
-}                                                              /* parse_operand */
-
-
-char *asm_error_str (int err)
-{
-       switch (err) {
-       case E_ASM_BAD_OPCODE:
-               return "Bad opcode";
-       case E_ASM_NUM_OPERANDS:
-               return "Bad number of operands";
-       case E_ASM_BAD_REGISTER:
-               return "Bad register number";
-       case E_ASM_BAD_SPR:
-               return "Bad SPR name or number";
-       case E_ASM_BAD_TBR:
-               return "Bad TBR name or number";
-       }
-
-       return "";
-}                                                              /* asm_error_str */
-
-
-
-/*======================================================================
- * Copy a word from one buffer to another, ignores leading white spaces.
- *
- * Arguments:
- *     src             The address of a character pointer to the
- *                     source buffer.
- *     dest            A pointer to a character buffer to write the word
- *                     into.
- *
- * Returns the number of non-white space characters copied, or zero.
- */
-
-int get_word (char **src, char *dest)
-{
-       char *ptr = *src;
-       int nchars = 0;
-
-  /*------------------------------------------------------------*/
-
-       /* Eat white spaces */
-       while (*ptr && isblank (*ptr))
-               ptr++;
-
-       if (*ptr == 0) {
-               *src = ptr;
-               return 0;
-       }
-
-       /* Find the text of the word */
-       while (*ptr && !isblank (*ptr) && (*ptr != ','))
-               dest[nchars++] = *ptr++;
-       ptr = (*ptr == ',') ? ptr + 1 : ptr;
-       dest[nchars] = 0;
-
-       *src = ptr;
-       return nchars;
-}                                                              /* get_word */
-
-
-
-/*======================================================================
- * Convert a numeric string to a number, be aware of base notations.
- *
- * Arguments:
- *     txt             The numeric string.
- *
- * Returns the converted numeric value.
- */
-
-long read_number (char *txt)
-{
-       long val;
-       int is_neg = 0;
-
-  /*------------------------------------------------------------*/
-
-       if (txt == 0 || *txt == 0)
-               return 0;
-
-       if (*txt == '-') {
-               is_neg = 1;
-               ++txt;
-       }
-
-       if (txt[0] == '0' && (txt[1] == 'x' || txt[1] == 'X'))  /* hex */
-               val = simple_strtoul (&txt[2], NULL, 16);
-       else                                            /* decimal */
-               val = simple_strtoul (txt, NULL, 10);
-
-       if (is_neg)
-               val = -val;
-
-       return val;
-}                                                              /* read_number */
-
-
-int downstring (char *s)
-{
-       if (!s || !*s)
-               return 0;
-
-       while (*s) {
-               if (isupper (*s))
-                       *s = tolower (*s);
-               s++;
-       }
-
-       return 0;
-}                                                              /* downstring */
-
-
-
-/*======================================================================
- * Examines the instruction at the current address and determines the
- * next address to be executed.  This will take into account branches
- * of different types so that a "step" and "next" operations can be
- * supported.
- *
- * Arguments:
- *     nextaddr        The address (to be filled in) of the next
- *                     instruction to execute.  This will only be a valid
- *                     address if TRUE is returned.
- *
- *     step_over       A flag indicating how to compute addresses for
- *                     branch statements:
- *                      TRUE  = Step over the branch (next)
- *                      FALSE = step into the branch (step)
- *
- * Returns TRUE if it was able to compute the address.  Returns FALSE if
- * it has a problem reading the current instruction or one of the registers.
- */
-
-int find_next_address (unsigned char *nextaddr, int step_over,
-                                          struct pt_regs *regs)
-{
-       unsigned long pc;                       /* SRR0 register from PPC */
-       unsigned long ctr;                      /* CTR register from PPC */
-       unsigned long cr;                       /* CR register from PPC */
-       unsigned long lr;                       /* LR register from PPC */
-       unsigned long instr;            /* instruction at SRR0 */
-       unsigned long next;                     /* computed instruction for 'next' */
-       unsigned long step;                     /* computed instruction for 'step' */
-       unsigned long addr = 0;         /* target address operand */
-       unsigned long aa = 0;           /* AA operand */
-       unsigned long lk = 0;           /* LK operand */
-       unsigned long bo = 0;           /* BO operand */
-       unsigned long bi = 0;           /* BI operand */
-       struct opcode *op = 0;          /* opcode structure for 'instr' */
-       int ctr_ok = 0;
-       int cond_ok = 0;
-       int conditional = 0;
-       int branch = 0;
-
-  /*------------------------------------------------------------*/
-
-       if (nextaddr == 0 || regs == 0) {
-               printf ("find_next_address: bad args");
-               return FALSE;
-       }
-
-       pc = regs->nip & 0xfffffffc;
-       instr = INSTRUCTION (pc);
-
-       if ((op = find_opcode (instr)) == (struct opcode *) 0) {
-               printf ("find_next_address: can't parse opcode 0x%lx", instr);
-               return FALSE;
-       }
-
-       ctr = regs->ctr;
-       cr = regs->ccr;
-       lr = regs->link;
-
-       switch (op->opcode) {
-       case B_OPCODE (16, 0, 0):       /* bc */
-       case B_OPCODE (16, 0, 1):       /* bcl */
-       case B_OPCODE (16, 1, 0):       /* bca */
-       case B_OPCODE (16, 1, 1):       /* bcla */
-               if (!get_operand_value (op, instr, O_BD, &addr) ||
-                       !get_operand_value (op, instr, O_BO, &bo) ||
-                       !get_operand_value (op, instr, O_BI, &bi) ||
-                       !get_operand_value (op, instr, O_AA, &aa) ||
-                       !get_operand_value (op, instr, O_LK, &lk))
-                       return FALSE;
-
-               if ((addr & (1 << 13)) != 0)
-                       addr = addr - (1 << 14);
-               addr <<= 2;
-               conditional = 1;
-               branch = 1;
-               break;
-
-       case I_OPCODE (18, 0, 0):       /* b */
-       case I_OPCODE (18, 0, 1):       /* bl */
-       case I_OPCODE (18, 1, 0):       /* ba */
-       case I_OPCODE (18, 1, 1):       /* bla */
-               if (!get_operand_value (op, instr, O_LI, &addr) ||
-                       !get_operand_value (op, instr, O_AA, &aa) ||
-                       !get_operand_value (op, instr, O_LK, &lk))
-                       return FALSE;
-
-               if ((addr & (1 << 23)) != 0)
-                       addr = addr - (1 << 24);
-               addr <<= 2;
-               conditional = 0;
-               branch = 1;
-               break;
-
-       case XL_OPCODE (19, 528, 0):    /* bcctr */
-       case XL_OPCODE (19, 528, 1):    /* bcctrl */
-               if (!get_operand_value (op, instr, O_BO, &bo) ||
-                       !get_operand_value (op, instr, O_BI, &bi) ||
-                       !get_operand_value (op, instr, O_LK, &lk))
-                       return FALSE;
-
-               addr = ctr;
-               aa = 1;
-               conditional = 1;
-               branch = 1;
-               break;
-
-       case XL_OPCODE (19, 16, 0):     /* bclr */
-       case XL_OPCODE (19, 16, 1):     /* bclrl */
-               if (!get_operand_value (op, instr, O_BO, &bo) ||
-                       !get_operand_value (op, instr, O_BI, &bi) ||
-                       !get_operand_value (op, instr, O_LK, &lk))
-                       return FALSE;
-
-               addr = lr;
-               aa = 1;
-               conditional = 1;
-               branch = 1;
-               break;
-
-       default:
-               conditional = 0;
-               branch = 0;
-               break;
-       }
-
-       if (conditional) {
-               switch ((bo & 0x1e) >> 1) {
-               case 0:                         /* 0000y */
-                       if (--ctr != 0)
-                               ctr_ok = 1;
-
-                       cond_ok = !(cr & (1 << (31 - bi)));
-                       break;
-
-               case 1:                         /* 0001y */
-                       if (--ctr == 0)
-                               ctr_ok = 1;
-
-                       cond_ok = !(cr & (1 << (31 - bi)));
-                       break;
-
-               case 2:                         /* 001zy */
-                       ctr_ok = 1;
-                       cond_ok = !(cr & (1 << (31 - bi)));
-                       break;
-
-               case 4:                         /* 0100y */
-                       if (--ctr != 0)
-                               ctr_ok = 1;
-
-                       cond_ok = cr & (1 << (31 - bi));
-                       break;
-
-               case 5:                         /* 0101y */
-                       if (--ctr == 0)
-                               ctr_ok = 1;
-
-                       cond_ok = cr & (1 << (31 - bi));
-                       break;
-
-               case 6:                         /* 011zy */
-                       ctr_ok = 1;
-                       cond_ok = cr & (1 << (31 - bi));
-                       break;
-
-               case 8:                         /* 1z00y */
-                       if (--ctr != 0)
-                               ctr_ok = cond_ok = 1;
-                       break;
-
-               case 9:                         /* 1z01y */
-                       if (--ctr == 0)
-                               ctr_ok = cond_ok = 1;
-                       break;
-
-               case 10:                                /* 1z1zz */
-                       ctr_ok = cond_ok = 1;
-                       break;
-               }
-       }
-
-       if (branch && (!conditional || (ctr_ok && cond_ok))) {
-               if (aa)
-                       step = addr;
-               else
-                       step = addr + pc;
-
-               if (lk)
-                       next = pc + 4;
-               else
-                       next = step;
-       } else {
-               step = next = pc + 4;
-       }
-
-       if (step_over == TRUE)
-               *(unsigned long *) nextaddr = next;
-       else
-               *(unsigned long *) nextaddr = step;
-
-       return TRUE;
-}                                                              /* find_next_address */
-
-
-/*
- * Copyright (c) 2000 William L. Pitts and W. Gerald Hicks
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are freely
- * permitted provided that the above copyright notice and this
- * paragraph and the following disclaimer are duplicated in all
- * such forms.
- *
- * This software is provided "AS IS" and without any express or
- * implied warranties, including, without limitation, the implied
- * warranties of merchantability and fitness for a particular
- * purpose.
- */
+/* $Id: bedbug.c,v 1.1.1.1 2009/03/25 22:21:56 kenagy Exp $ */
+
+#include <common.h>
+
+#include <linux/ctype.h>
+#include <bedbug/bedbug.h>
+#include <bedbug/ppc.h>
+#include <bedbug/regs.h>
+#include <bedbug/tables.h>
+
+#define Elf32_Word     unsigned long
+
+/* USE_SOURCE_CODE enables some symbolic debugging functions of this
+   code.  This is only useful if the program will have access to the
+   source code for the binary being examined.
+*/
+
+/* #define USE_SOURCE_CODE 1 */
+
+#ifdef USE_SOURCE_CODE
+extern int line_info_from_addr __P ((Elf32_Word, char *, char *, int *));
+extern struct symreflist *symByAddr;
+extern char *symbol_name_from_addr __P ((Elf32_Word, int, int *));
+#endif /* USE_SOURCE_CODE */
+
+int print_operands __P ((struct ppc_ctx *));
+int get_operand_value __P ((struct opcode *, unsigned long,
+                               enum OP_FIELD, unsigned long *));
+struct opcode *find_opcode __P ((unsigned long));
+struct opcode *find_opcode_by_name __P ((char *));
+char *spr_name __P ((int));
+int spr_value __P ((char *));
+char *tbr_name __P ((int));
+int tbr_value __P ((char *));
+int parse_operand __P ((unsigned long, struct opcode *,
+                       struct operand *, char *, int *));
+int get_word __P ((char **, char *));
+long read_number __P ((char *));
+int downstring __P ((char *));
+
+
+/*======================================================================
+ * Entry point for the PPC disassembler.
+ *
+ * Arguments:
+ *     memaddr         The address to start disassembling from.
+ *
+ *     virtual         If this value is non-zero, then this will be
+ *                     used as the base address for the output and
+ *                     symbol lookups.  If this value is zero then
+ *                     memaddr is used as the absolute address.
+ *
+ *     num_instr       The number of instructions to disassemble.  Since
+ *                     each instruction is 32 bits long, this can be
+ *                     computed if you know the total size of the region.
+ *
+ *     pfunc           The address of a function that is called to print
+ *                     each line of output.  The function should take a
+ *                     single character pointer as its parameters a la puts.
+ *
+ *     flags           Sets options for the output.  This is a
+ *                     bitwise-inclusive-OR of the following
+ *                     values.  Note that only one of the radix
+ *                     options may be set.
+ *
+ *                     F_RADOCTAL      - output radix is unsigned base 8.
+ *                     F_RADUDECIMAL   - output radix is unsigned base 10.
+ *                     F_RADSDECIMAL   - output radix is signed base 10.
+ *                     F_RADHEX        - output radix is unsigned base 16.
+ *                     F_SIMPLE        - use simplified mnemonics.
+ *                     F_SYMBOL        - lookup symbols for addresses.
+ *                     F_INSTR         - output raw instruction.
+ *                     F_LINENO        - show line # info if available.
+ *
+ * Returns TRUE if the area was successfully disassembled or FALSE if
+ * a problem was encountered with accessing the memory.
+ */
+
+int disppc (unsigned char *memaddr, unsigned char *virtual, int num_instr,
+                       int (*pfunc) (const char *), unsigned long flags)
+{
+       int i;
+       struct ppc_ctx ctx;
+
+#ifdef USE_SOURCE_CODE
+       int line_no = 0;
+       int last_line_no = 0;
+       char funcname[128] = { 0 };
+       char filename[256] = { 0 };
+       char last_funcname[128] = { 0 };
+       int symoffset;
+       char *symname;
+       char *cursym = (char *) 0;
+#endif /* USE_SOURCE_CODE */
+  /*------------------------------------------------------------*/
+
+       ctx.flags = flags;
+       ctx.virtual = virtual;
+
+       /* Figure out the output radix before we go any further */
+
+       if (ctx.flags & F_RADOCTAL) {
+               /* Unsigned octal output */
+               strcpy (ctx.radix_fmt, "O%o");
+       } else if (ctx.flags & F_RADUDECIMAL) {
+               /* Unsigned decimal output */
+               strcpy (ctx.radix_fmt, "%u");
+       } else if (ctx.flags & F_RADSDECIMAL) {
+               /* Signed decimal output */
+               strcpy (ctx.radix_fmt, "%d");
+       } else {
+               /* Unsigned hex output */
+               strcpy (ctx.radix_fmt, "0x%x");
+       }
+
+       if (ctx.virtual == 0) {
+               ctx.virtual = memaddr;
+       }
+#ifdef USE_SOURCE_CODE
+       if (ctx.flags & F_SYMBOL) {
+               if (symByAddr == 0)             /* no symbols loaded */
+                       ctx.flags &= ~F_SYMBOL;
+               else {
+                       cursym = (char *) 0;
+                       symoffset = 0;
+               }
+       }
+#endif /* USE_SOURCE_CODE */
+
+       /* format each line as "XXXXXXXX: <symbol> IIIIIIII  disassembly" where,
+          XXXXXXXX is the memory address in hex,
+          <symbol> is the symbolic location if F_SYMBOL is set.
+          IIIIIIII is the raw machine code in hex if F_INSTR is set,
+          and disassembly is the disassembled machine code with numbers
+          formatted according to the 'radix' parameter */
+
+       for (i = 0; i < num_instr; ++i, memaddr += 4, ctx.virtual += 4) {
+#ifdef USE_SOURCE_CODE
+               if (ctx.flags & F_LINENO) {
+                       if ((line_info_from_addr ((Elf32_Word) ctx.virtual, filename,
+                                                                         funcname, &line_no) == TRUE) &&
+                               ((line_no != last_line_no) ||
+                                (strcmp (last_funcname, funcname) != 0))) {
+                               print_source_line (filename, funcname, line_no, pfunc);
+                       }
+                       last_line_no = line_no;
+                       strcpy (last_funcname, funcname);
+               }
+#endif /* USE_SOURCE_CODE */
+
+               sprintf (ctx.data, "%08lx: ", (unsigned long) ctx.virtual);
+               ctx.datalen = 10;
+
+#ifdef USE_SOURCE_CODE
+               if (ctx.flags & F_SYMBOL) {
+                       if ((symname =
+                                symbol_name_from_addr ((Elf32_Word) ctx.virtual,
+                                                                               TRUE, 0)) != 0) {
+                               cursym = symname;
+                               symoffset = 0;
+                       } else {
+                               if ((cursym == 0) &&
+                                       ((symname =
+                                         symbol_name_from_addr ((Elf32_Word) ctx.virtual,
+                                                                                        FALSE, &symoffset)) != 0)) {
+                                       cursym = symname;
+                               } else {
+                                       symoffset += 4;
+                               }
+                       }
+
+                       if (cursym != 0) {
+                               sprintf (&ctx.data[ctx.datalen], "<%s+", cursym);
+                               ctx.datalen = strlen (ctx.data);
+                               sprintf (&ctx.data[ctx.datalen], ctx.radix_fmt, symoffset);
+                               strcat (ctx.data, ">");
+                               ctx.datalen = strlen (ctx.data);
+                       }
+               }
+#endif /* USE_SOURCE_CODE */
+
+               ctx.instr = INSTRUCTION (memaddr);
+
+               if (ctx.flags & F_INSTR) {
+                       /* Find the opcode structure for this opcode.  If one is not found
+                          then it must be an illegal instruction */
+                       sprintf (&ctx.data[ctx.datalen],
+                                        "   %02lx %02lx %02lx %02lx    ",
+                                        ((ctx.instr >> 24) & 0xff),
+                                        ((ctx.instr >> 16) & 0xff), ((ctx.instr >> 8) & 0xff),
+                                        (ctx.instr & 0xff));
+                       ctx.datalen += 18;
+               } else {
+                       strcat (ctx.data, "   ");
+                       ctx.datalen += 3;
+               }
+
+               if ((ctx.op = find_opcode (ctx.instr)) == 0) {
+                       /* Illegal Opcode */
+                       sprintf (&ctx.data[ctx.datalen], "        .long 0x%08lx",
+                                        ctx.instr);
+                       ctx.datalen += 24;
+                       (*pfunc) (ctx.data);
+                       continue;
+               }
+
+               if (((ctx.flags & F_SIMPLE) == 0) ||
+                       (ctx.op->hfunc == 0) || ((*ctx.op->hfunc) (&ctx) == FALSE)) {
+                       sprintf (&ctx.data[ctx.datalen], "%-7s ", ctx.op->name);
+                       ctx.datalen += 8;
+                       print_operands (&ctx);
+               }
+
+               (*pfunc) (ctx.data);
+       }
+
+       return TRUE;
+}                                                              /* disppc */
+
+
+
+/*======================================================================
+ * Called by the disassembler to print the operands for an instruction.
+ *
+ * Arguments:
+ *     ctx             A pointer to the disassembler context record.
+ *
+ * always returns 0.
+ */
+
+int print_operands (struct ppc_ctx *ctx)
+{
+       int open_parens = 0;
+       int field;
+       unsigned long operand;
+       struct operand *opr;
+
+#ifdef USE_SOURCE_CODE
+       char *symname;
+       int offset;
+#endif /* USE_SOURCE_CODE */
+  /*------------------------------------------------------------*/
+
+       /* Walk through the operands and list each in order */
+       for (field = 0; ctx->op->fields[field] != 0; ++field) {
+               if (ctx->op->fields[field] > n_operands) {
+                       continue;                       /* bad operand ?! */
+               }
+
+               opr = &operands[ctx->op->fields[field] - 1];
+
+               if (opr->hint & OH_SILENT) {
+                       continue;
+               }
+
+               if ((field > 0) && !open_parens) {
+                       strcat (ctx->data, ",");
+                       ctx->datalen++;
+               }
+
+               operand = (ctx->instr >> opr->shift) & ((1 << opr->bits) - 1);
+
+               if (opr->hint & OH_ADDR) {
+                       if ((operand & (1 << (opr->bits - 1))) != 0) {
+                               operand = operand - (1 << opr->bits);
+                       }
+
+                       if (ctx->op->hint & H_RELATIVE)
+                               operand = (operand << 2) + (unsigned long) ctx->virtual;
+                       else
+                               operand = (operand << 2);
+
+
+                       sprintf (&ctx->data[ctx->datalen], "0x%lx", operand);
+                       ctx->datalen = strlen (ctx->data);
+
+#ifdef USE_SOURCE_CODE
+                       if ((ctx->flags & F_SYMBOL) &&
+                               ((symname =
+                                 symbol_name_from_addr (operand, 0, &offset)) != 0)) {
+                               sprintf (&ctx->data[ctx->datalen], " <%s", symname);
+                               if (offset != 0) {
+                                       strcat (ctx->data, "+");
+                                       ctx->datalen = strlen (ctx->data);
+                                       sprintf (&ctx->data[ctx->datalen], ctx->radix_fmt,
+                                                        offset);
+                               }
+                               strcat (ctx->data, ">");
+                       }
+#endif /* USE_SOURCE_CODE */
+               }
+
+               else if (opr->hint & OH_REG) {
+                       if ((operand == 0) &&
+                               (opr->field == O_rA) && (ctx->op->hint & H_RA0_IS_0)) {
+                               strcat (ctx->data, "0");
+                       } else {
+                               sprintf (&ctx->data[ctx->datalen], "r%d", (short) operand);
+                       }
+
+                       if (open_parens) {
+                               strcat (ctx->data, ")");
+                               open_parens--;
+                       }
+               }
+
+               else if (opr->hint & OH_SPR) {
+                       strcat (ctx->data, spr_name (operand));
+               }
+
+               else if (opr->hint & OH_TBR) {
+                       strcat (ctx->data, tbr_name (operand));
+               }
+
+               else if (opr->hint & OH_LITERAL) {
+                       switch (opr->field) {
+                       case O_cr2:
+                               strcat (ctx->data, "cr2");
+                               ctx->datalen += 3;
+                               break;
+
+                       default:
+                               break;
+                       }
+               }
+
+               else {
+                       sprintf (&ctx->data[ctx->datalen], ctx->radix_fmt,
+                                        (unsigned short) operand);
+
+                       if (open_parens) {
+                               strcat (ctx->data, ")");
+                               open_parens--;
+                       }
+
+                       else if (opr->hint & OH_OFFSET) {
+                               strcat (ctx->data, "(");
+                               open_parens++;
+                       }
+               }
+
+               ctx->datalen = strlen (ctx->data);
+       }
+
+       return 0;
+}                                                              /* print_operands */
+
+
+
+/*======================================================================
+ * Called to get the value of an arbitrary operand with in an instruction.
+ *
+ * Arguments:
+ *     op              The pointer to the opcode structure to which
+ *                     the operands belong.
+ *
+ *     instr           The instruction (32 bits) containing the opcode
+ *                     and the operands to print.  By the time that
+ *                     this routine is called the operand has already
+ *                     been added to the output.
+ *
+ *     field           The field (operand) to get the value of.
+ *
+ *     value           The address of an unsigned long to be filled in
+ *                     with the value of the operand if it is found.  This
+ *                     will only be filled in if the function returns
+ *                     TRUE.  This may be passed as 0 if the value is
+ *                     not required.
+ *
+ * Returns TRUE if the operand was found or FALSE if it was not.
+ */
+
+int get_operand_value (struct opcode *op, unsigned long instr,
+                                          enum OP_FIELD field, unsigned long *value)
+{
+       int i;
+       struct operand *opr;
+
+  /*------------------------------------------------------------*/
+
+       if (field > n_operands) {
+               return FALSE;                   /* bad operand ?! */
+       }
+
+       /* Walk through the operands and list each in order */
+       for (i = 0; op->fields[i] != 0; ++i) {
+               if (op->fields[i] != field) {
+                       continue;
+               }
+
+               opr = &operands[op->fields[i] - 1];
+
+               if (value) {
+                       *value = (instr >> opr->shift) & ((1 << opr->bits) - 1);
+               }
+               return TRUE;
+       }
+
+       return FALSE;
+}                                                              /* operand_value */
+
+
+
+/*======================================================================
+ * Called by the disassembler to match an opcode value to an opcode structure.
+ *
+ * Arguments:
+ *     instr           The instruction (32 bits) to match.  This value
+ *                     may contain operand values as well as the opcode
+ *                     since they will be masked out anyway for this
+ *                     search.
+ *
+ * Returns the address of an opcode struct (from the opcode table) if the
+ * operand successfully matched an entry, or 0 if no match was found.
+ */
+
+struct opcode *find_opcode (unsigned long instr)
+{
+       struct opcode *ptr;
+       int top = 0;
+       int bottom = n_opcodes - 1;
+       int idx;
+
+  /*------------------------------------------------------------*/
+
+       while (top <= bottom) {
+               idx = (top + bottom) >> 1;
+               ptr = &opcodes[idx];
+
+               if ((instr & ptr->mask) < ptr->opcode) {
+                       bottom = idx - 1;
+               } else if ((instr & ptr->mask) > ptr->opcode) {
+                       top = idx + 1;
+               } else {
+                       return ptr;
+               }
+       }
+
+       return (struct opcode *) 0;
+}                                                              /* find_opcode */
+
+
+
+/*======================================================================
+ * Called by the assembler to match an opcode name to an opcode structure.
+ *
+ * Arguments:
+ *     name            The text name of the opcode, e.g. "b", "mtspr", etc.
+ *
+ * The opcodes are sorted numerically by their instruction binary code
+ * so a search for the name cannot use the binary search used by the
+ * other find routine.
+ *
+ * Returns the address of an opcode struct (from the opcode table) if the
+ * name successfully matched an entry, or 0 if no match was found.
+ */
+
+struct opcode *find_opcode_by_name (char *name)
+{
+       int idx;
+
+  /*------------------------------------------------------------*/
+
+       downstring (name);
+
+       for (idx = 0; idx < n_opcodes; ++idx) {
+               if (!strcmp (name, opcodes[idx].name))
+                       return &opcodes[idx];
+       }
+
+       return (struct opcode *) 0;
+}                                                              /* find_opcode_by_name */
+
+
+
+/*======================================================================
+ * Convert the 'spr' operand from its numeric value to its symbolic name.
+ *
+ * Arguments:
+ *     value           The value of the 'spr' operand.  This value should
+ *                     be unmodified from its encoding in the instruction.
+ *                     the split-field computations will be performed
+ *                     here before the switch.
+ *
+ * Returns the address of a character array containing the name of the
+ * special purpose register defined by the 'value' parameter, or the
+ * address of a character array containing "???" if no match was found.
+ */
+
+char *spr_name (int value)
+{
+       unsigned short spr;
+       static char other[10];
+       int i;
+
+  /*------------------------------------------------------------*/
+
+       /* spr is a 10 bit field whose interpretation has the high and low
+          five-bit fields reversed from their encoding in the operand */
+
+       spr = ((value >> 5) & 0x1f) | ((value & 0x1f) << 5);
+
+       for (i = 0; i < n_sprs; ++i) {
+               if (spr == spr_map[i].spr_val)
+                       return spr_map[i].spr_name;
+       }
+
+       sprintf (other, "%d", spr);
+       return other;
+}                                                              /* spr_name */
+
+
+
+/*======================================================================
+ * Convert the 'spr' operand from its symbolic name to its numeric value
+ *
+ * Arguments:
+ *     name            The symbolic name of the 'spr' operand.  The
+ *                     split-field encoding will be done by this routine.
+ *                     NOTE: name can be a number.
+ *
+ * Returns the numeric value for the spr appropriate for encoding a machine
+ * instruction.  Returns 0 if unable to find the SPR.
+ */
+
+int spr_value (char *name)
+{
+       struct spr_info *sprp;
+       int spr;
+       int i;
+
+  /*------------------------------------------------------------*/
+
+       if (!name || !*name)
+               return 0;
+
+       if (isdigit ((int) name[0])) {
+               i = htonl (read_number (name));
+               spr = ((i >> 5) & 0x1f) | ((i & 0x1f) << 5);
+               return spr;
+       }
+
+       downstring (name);
+
+       for (i = 0; i < n_sprs; ++i) {
+               sprp = &spr_map[i];
+
+               if (strcmp (name, sprp->spr_name) == 0) {
+                       /* spr is a 10 bit field whose interpretation has the high and low
+                          five-bit fields reversed from their encoding in the operand */
+                       i = htonl (sprp->spr_val);
+                       spr = ((i >> 5) & 0x1f) | ((i & 0x1f) << 5);
+
+                       return spr;
+               }
+       }
+
+       return 0;
+}                                                              /* spr_value */
+
+
+
+/*======================================================================
+ * Convert the 'tbr' operand from its numeric value to its symbolic name.
+ *
+ * Arguments:
+ *     value           The value of the 'tbr' operand.  This value should
+ *                     be unmodified from its encoding in the instruction.
+ *                     the split-field computations will be performed
+ *                     here before the switch.
+ *
+ * Returns the address of a character array containing the name of the
+ * time base register defined by the 'value' parameter, or the address
+ * of a character array containing "???" if no match was found.
+ */
+
+char *tbr_name (int value)
+{
+       unsigned short tbr;
+
+  /*------------------------------------------------------------*/
+
+       /* tbr is a 10 bit field whose interpretation has the high and low
+          five-bit fields reversed from their encoding in the operand */
+
+       tbr = ((value >> 5) & 0x1f) | ((value & 0x1f) << 5);
+
+       if (tbr == 268)
+               return "TBL";
+
+       else if (tbr == 269)
+               return "TBU";
+
+
+       return "???";
+}                                                              /* tbr_name */
+
+
+
+/*======================================================================
+ * Convert the 'tbr' operand from its symbolic name to its numeric value.
+ *
+ * Arguments:
+ *     name            The symbolic name of the 'tbr' operand.  The
+ *                     split-field encoding will be done by this routine.
+ *
+ * Returns the numeric value for the spr appropriate for encoding a machine
+ * instruction.  Returns 0 if unable to find the TBR.
+ */
+
+int tbr_value (char *name)
+{
+       int tbr;
+       int val;
+
+  /*------------------------------------------------------------*/
+
+       if (!name || !*name)
+               return 0;
+
+       downstring (name);
+
+       if (isdigit ((int) name[0])) {
+               val = read_number (name);
+
+               if (val != 268 && val != 269)
+                       return 0;
+       } else if (strcmp (name, "tbl") == 0)
+               val = 268;
+       else if (strcmp (name, "tbu") == 0)
+               val = 269;
+       else
+               return 0;
+
+       /* tbr is a 10 bit field whose interpretation has the high and low
+          five-bit fields reversed from their encoding in the operand */
+
+       val = htonl (val);
+       tbr = ((val >> 5) & 0x1f) | ((val & 0x1f) << 5);
+       return tbr;
+}                                                              /* tbr_name */
+
+
+
+/*======================================================================
+ * The next several functions (handle_xxx) are the routines that handle
+ * disassembling the opcodes with simplified mnemonics.
+ *
+ * Arguments:
+ *     ctx             A pointer to the disassembler context record.
+ *
+ * Returns TRUE if the simpler form was printed or FALSE if it was not.
+ */
+
+int handle_bc (struct ppc_ctx *ctx)
+{
+       unsigned long bo;
+       unsigned long bi;
+       static struct opcode blt = { B_OPCODE (16, 0, 0), B_MASK, {O_BD, 0},
+       0, "blt", H_RELATIVE
+       };
+       static struct opcode bne =
+                       { B_OPCODE (16, 0, 0), B_MASK, {O_cr2, O_BD, 0},
+       0, "bne", H_RELATIVE
+       };
+       static struct opcode bdnz = { B_OPCODE (16, 0, 0), B_MASK, {O_BD, 0},
+       0, "bdnz", H_RELATIVE
+       };
+
+  /*------------------------------------------------------------*/
+
+       if (get_operand_value (ctx->op, ctx->instr, O_BO, &bo) == FALSE)
+               return FALSE;
+
+       if (get_operand_value (ctx->op, ctx->instr, O_BI, &bi) == FALSE)
+               return FALSE;
+
+       if ((bo == 12) && (bi == 0)) {
+               ctx->op = &blt;
+               sprintf (&ctx->data[ctx->datalen], "%-7s ", ctx->op->name);
+               ctx->datalen += 8;
+               print_operands (ctx);
+               return TRUE;
+       } else if ((bo == 4) && (bi == 10)) {
+               ctx->op = &bne;
+               sprintf (&ctx->data[ctx->datalen], "%-7s ", ctx->op->name);
+               ctx->datalen += 8;
+               print_operands (ctx);
+               return TRUE;
+       } else if ((bo == 16) && (bi == 0)) {
+               ctx->op = &bdnz;
+               sprintf (&ctx->data[ctx->datalen], "%-7s ", ctx->op->name);
+               ctx->datalen += 8;
+               print_operands (ctx);
+               return TRUE;
+       }
+
+       return FALSE;
+}                                                              /* handle_blt */
+
+
+
+/*======================================================================
+ * Outputs source line information for the disassembler.  This should
+ * be modified in the future to lookup the actual line of source code
+ * from the file, but for now this will do.
+ *
+ * Arguments:
+ *     filename        The address of a character array containing the
+ *                     absolute path and file name of the source file.
+ *
+ *     funcname        The address of a character array containing the
+ *                     name of the function (not C++ demangled (yet))
+ *                     to which this code belongs.
+ *
+ *     line_no         An integer specifying the source line number that
+ *                     generated this code.
+ *
+ *     pfunc           The address of a function to call to print the output.
+ *
+ *
+ * Returns TRUE if it was able to output the line info, or false if it was
+ * not.
+ */
+
+int print_source_line (char *filename, char *funcname,
+                                          int line_no, int (*pfunc) (const char *))
+{
+       char out_buf[256];
+
+  /*------------------------------------------------------------*/
+
+       (*pfunc) ("");                          /* output a newline */
+       sprintf (out_buf, "%s %s(): line %d", filename, funcname, line_no);
+       (*pfunc) (out_buf);
+
+       return TRUE;
+}                                                              /* print_source_line */
+
+
+
+/*======================================================================
+ * Entry point for the PPC assembler.
+ *
+ * Arguments:
+ *     asm_buf         An array of characters containing the assembly opcode
+ *                     and operands to convert to a POWERPC machine
+ *                     instruction.
+ *
+ * Returns the machine instruction or zero.
+ */
+
+unsigned long asmppc (unsigned long memaddr, char *asm_buf, int *err)
+{
+       struct opcode *opc;
+       struct operand *oper[MAX_OPERANDS];
+       unsigned long instr;
+       unsigned long param;
+       char *ptr = asm_buf;
+       char scratch[20];
+       int i;
+       int w_operands = 0;                     /* wanted # of operands */
+       int n_operands = 0;                     /* # of operands read */
+       int asm_debug = 0;
+
+  /*------------------------------------------------------------*/
+
+       if (err)
+               *err = 0;
+
+       if (get_word (&ptr, scratch) == 0)
+               return 0;
+
+       /* Lookup the opcode structure based on the opcode name */
+       if ((opc = find_opcode_by_name (scratch)) == (struct opcode *) 0) {
+               if (err)
+                       *err = E_ASM_BAD_OPCODE;
+               return 0;
+       }
+
+       if (asm_debug) {
+               printf ("asmppc: Opcode = \"%s\"\n", opc->name);
+       }
+
+       for (i = 0; i < 8; ++i) {
+               if (opc->fields[i] == 0)
+                       break;
+               ++w_operands;
+       }
+
+       if (asm_debug) {
+               printf ("asmppc: Expecting %d operands\n", w_operands);
+       }
+
+       instr = opc->opcode;
+
+       /* read each operand */
+       while (n_operands < w_operands) {
+
+               oper[n_operands] = &operands[opc->fields[n_operands] - 1];
+
+               if (oper[n_operands]->hint & OH_SILENT) {
+                       /* Skip silent operands, they are covered in opc->opcode */
+
+                       if (asm_debug) {
+                               printf ("asmppc: Operand %d \"%s\" SILENT\n", n_operands,
+                                               oper[n_operands]->name);
+                       }
+
+                       ++n_operands;
+                       continue;
+               }
+
+               if (get_word (&ptr, scratch) == 0)
+                       break;
+
+               if (asm_debug) {
+                       printf ("asmppc: Operand %d \"%s\" : \"%s\"\n", n_operands,
+                                       oper[n_operands]->name, scratch);
+               }
+
+               if ((param = parse_operand (memaddr, opc, oper[n_operands],
+                                                                       scratch, err)) == -1)
+                       return 0;
+
+               instr |= param;
+               ++n_operands;
+       }
+
+       if (n_operands < w_operands) {
+               if (err)
+                       *err = E_ASM_NUM_OPERANDS;
+               return 0;
+       }
+
+       if (asm_debug) {
+               printf ("asmppc: Instruction = 0x%08lx\n", instr);
+       }
+
+       return instr;
+}                                                              /* asmppc */
+
+
+
+/*======================================================================
+ * Called by the assembler to interpret a single operand
+ *
+ * Arguments:
+ *     ctx             A pointer to the disassembler context record.
+ *
+ * Returns 0 if the operand is ok, or -1 if it is bad.
+ */
+
+int parse_operand (unsigned long memaddr, struct opcode *opc,
+                                  struct operand *oper, char *txt, int *err)
+{
+       long data;
+       long mask;
+       int is_neg = 0;
+
+  /*------------------------------------------------------------*/
+
+       mask = (1 << oper->bits) - 1;
+
+       if (oper->hint & OH_ADDR) {
+               data = read_number (txt);
+
+               if (opc->hint & H_RELATIVE)
+                       data = data - memaddr;
+
+               if (data < 0)
+                       is_neg = 1;
+
+               data >>= 2;
+               data &= (mask >> 1);
+
+               if (is_neg)
+                       data |= 1 << (oper->bits - 1);
+       }
+
+       else if (oper->hint & OH_REG) {
+               if (txt[0] == 'r' || txt[0] == 'R')
+                       txt++;
+               else if (txt[0] == '%' && (txt[1] == 'r' || txt[1] == 'R'))
+                       txt += 2;
+
+               data = read_number (txt);
+               if (data > 31) {
+                       if (err)
+                               *err = E_ASM_BAD_REGISTER;
+                       return -1;
+               }
+
+               data = htonl (data);
+       }
+
+       else if (oper->hint & OH_SPR) {
+               if ((data = spr_value (txt)) == 0) {
+                       if (err)
+                               *err = E_ASM_BAD_SPR;
+                       return -1;
+               }
+       }
+
+       else if (oper->hint & OH_TBR) {
+               if ((data = tbr_value (txt)) == 0) {
+                       if (err)
+                               *err = E_ASM_BAD_TBR;
+                       return -1;
+               }
+       }
+
+       else {
+               data = htonl (read_number (txt));
+       }
+
+       return (data & mask) << oper->shift;
+}                                                              /* parse_operand */
+
+
+char *asm_error_str (int err)
+{
+       switch (err) {
+       case E_ASM_BAD_OPCODE:
+               return "Bad opcode";
+       case E_ASM_NUM_OPERANDS:
+               return "Bad number of operands";
+       case E_ASM_BAD_REGISTER:
+               return "Bad register number";
+       case E_ASM_BAD_SPR:
+               return "Bad SPR name or number";
+       case E_ASM_BAD_TBR:
+               return "Bad TBR name or number";
+       }
+
+       return "";
+}                                                              /* asm_error_str */
+
+
+
+/*======================================================================
+ * Copy a word from one buffer to another, ignores leading white spaces.
+ *
+ * Arguments:
+ *     src             The address of a character pointer to the
+ *                     source buffer.
+ *     dest            A pointer to a character buffer to write the word
+ *                     into.
+ *
+ * Returns the number of non-white space characters copied, or zero.
+ */
+
+int get_word (char **src, char *dest)
+{
+       char *ptr = *src;
+       int nchars = 0;
+
+  /*------------------------------------------------------------*/
+
+       /* Eat white spaces */
+       while (*ptr && isblank (*ptr))
+               ptr++;
+
+       if (*ptr == 0) {
+               *src = ptr;
+               return 0;
+       }
+
+       /* Find the text of the word */
+       while (*ptr && !isblank (*ptr) && (*ptr != ','))
+               dest[nchars++] = *ptr++;
+       ptr = (*ptr == ',') ? ptr + 1 : ptr;
+       dest[nchars] = 0;
+
+       *src = ptr;
+       return nchars;
+}                                                              /* get_word */
+
+
+
+/*======================================================================
+ * Convert a numeric string to a number, be aware of base notations.
+ *
+ * Arguments:
+ *     txt             The numeric string.
+ *
+ * Returns the converted numeric value.
+ */
+
+long read_number (char *txt)
+{
+       long val;
+       int is_neg = 0;
+
+  /*------------------------------------------------------------*/
+
+       if (txt == 0 || *txt == 0)
+               return 0;
+
+       if (*txt == '-') {
+               is_neg = 1;
+               ++txt;
+       }
+
+       if (txt[0] == '0' && (txt[1] == 'x' || txt[1] == 'X'))  /* hex */
+               val = simple_strtoul (&txt[2], NULL, 16);
+       else                                            /* decimal */
+               val = simple_strtoul (txt, NULL, 10);
+
+       if (is_neg)
+               val = -val;
+
+       return val;
+}                                                              /* read_number */
+
+
+int downstring (char *s)
+{
+       if (!s || !*s)
+               return 0;
+
+       while (*s) {
+               if (isupper (*s))
+                       *s = tolower (*s);
+               s++;
+       }
+
+       return 0;
+}                                                              /* downstring */
+
+
+
+/*======================================================================
+ * Examines the instruction at the current address and determines the
+ * next address to be executed.  This will take into account branches
+ * of different types so that a "step" and "next" operations can be
+ * supported.
+ *
+ * Arguments:
+ *     nextaddr        The address (to be filled in) of the next
+ *                     instruction to execute.  This will only be a valid
+ *                     address if TRUE is returned.
+ *
+ *     step_over       A flag indicating how to compute addresses for
+ *                     branch statements:
+ *                      TRUE  = Step over the branch (next)
+ *                      FALSE = step into the branch (step)
+ *
+ * Returns TRUE if it was able to compute the address.  Returns FALSE if
+ * it has a problem reading the current instruction or one of the registers.
+ */
+
+int find_next_address (unsigned char *nextaddr, int step_over,
+                                          struct pt_regs *regs)
+{
+       unsigned long pc;                       /* SRR0 register from PPC */
+       unsigned long ctr;                      /* CTR register from PPC */
+       unsigned long cr;                       /* CR register from PPC */
+       unsigned long lr;                       /* LR register from PPC */
+       unsigned long instr;            /* instruction at SRR0 */
+       unsigned long next;                     /* computed instruction for 'next' */
+       unsigned long step;                     /* computed instruction for 'step' */
+       unsigned long addr = 0;         /* target address operand */
+       unsigned long aa = 0;           /* AA operand */
+       unsigned long lk = 0;           /* LK operand */
+       unsigned long bo = 0;           /* BO operand */
+       unsigned long bi = 0;           /* BI operand */
+       struct opcode *op = 0;          /* opcode structure for 'instr' */
+       int ctr_ok = 0;
+       int cond_ok = 0;
+       int conditional = 0;
+       int branch = 0;
+
+  /*------------------------------------------------------------*/
+
+       if (nextaddr == 0 || regs == 0) {
+               printf ("find_next_address: bad args");
+               return FALSE;
+       }
+
+       pc = regs->nip & 0xfffffffc;
+       instr = INSTRUCTION (pc);
+
+       if ((op = find_opcode (instr)) == (struct opcode *) 0) {
+               printf ("find_next_address: can't parse opcode 0x%lx", instr);
+               return FALSE;
+       }
+
+       ctr = regs->ctr;
+       cr = regs->ccr;
+       lr = regs->link;
+
+       switch (op->opcode) {
+       case B_OPCODE (16, 0, 0):       /* bc */
+       case B_OPCODE (16, 0, 1):       /* bcl */
+       case B_OPCODE (16, 1, 0):       /* bca */
+       case B_OPCODE (16, 1, 1):       /* bcla */
+               if (!get_operand_value (op, instr, O_BD, &addr) ||
+                       !get_operand_value (op, instr, O_BO, &bo) ||
+                       !get_operand_value (op, instr, O_BI, &bi) ||
+                       !get_operand_value (op, instr, O_AA, &aa) ||
+                       !get_operand_value (op, instr, O_LK, &lk))
+                       return FALSE;
+
+               if ((addr & (1 << 13)) != 0)
+                       addr = addr - (1 << 14);
+               addr <<= 2;
+               conditional = 1;
+               branch = 1;
+               break;
+
+       case I_OPCODE (18, 0, 0):       /* b */
+       case I_OPCODE (18, 0, 1):       /* bl */
+       case I_OPCODE (18, 1, 0):       /* ba */
+       case I_OPCODE (18, 1, 1):       /* bla */
+               if (!get_operand_value (op, instr, O_LI, &addr) ||
+                       !get_operand_value (op, instr, O_AA, &aa) ||
+                       !get_operand_value (op, instr, O_LK, &lk))
+                       return FALSE;
+
+               if ((addr & (1 << 23)) != 0)
+                       addr = addr - (1 << 24);
+               addr <<= 2;
+               conditional = 0;
+               branch = 1;
+               break;
+
+       case XL_OPCODE (19, 528, 0):    /* bcctr */
+       case XL_OPCODE (19, 528, 1):    /* bcctrl */
+               if (!get_operand_value (op, instr, O_BO, &bo) ||
+                       !get_operand_value (op, instr, O_BI, &bi) ||
+                       !get_operand_value (op, instr, O_LK, &lk))
+                       return FALSE;
+
+               addr = ctr;
+               aa = 1;
+               conditional = 1;
+               branch = 1;
+               break;
+
+       case XL_OPCODE (19, 16, 0):     /* bclr */
+       case XL_OPCODE (19, 16, 1):     /* bclrl */
+               if (!get_operand_value (op, instr, O_BO, &bo) ||
+                       !get_operand_value (op, instr, O_BI, &bi) ||
+                       !get_operand_value (op, instr, O_LK, &lk))
+                       return FALSE;
+
+               addr = lr;
+               aa = 1;
+               conditional = 1;
+               branch = 1;
+               break;
+
+       default:
+               conditional = 0;
+               branch = 0;
+               break;
+       }
+
+       if (conditional) {
+               switch ((bo & 0x1e) >> 1) {
+               case 0:                         /* 0000y */
+                       if (--ctr != 0)
+                               ctr_ok = 1;
+
+                       cond_ok = !(cr & (1 << (31 - bi)));
+                       break;
+
+               case 1:                         /* 0001y */
+                       if (--ctr == 0)
+                               ctr_ok = 1;
+
+                       cond_ok = !(cr & (1 << (31 - bi)));
+                       break;
+
+               case 2:                         /* 001zy */
+                       ctr_ok = 1;
+                       cond_ok = !(cr & (1 << (31 - bi)));
+                       break;
+
+               case 4:                         /* 0100y */
+                       if (--ctr != 0)
+                               ctr_ok = 1;
+
+                       cond_ok = cr & (1 << (31 - bi));
+                       break;
+
+               case 5:                         /* 0101y */
+                       if (--ctr == 0)
+                               ctr_ok = 1;
+
+                       cond_ok = cr & (1 << (31 - bi));
+                       break;
+
+               case 6:                         /* 011zy */
+                       ctr_ok = 1;
+                       cond_ok = cr & (1 << (31 - bi));
+                       break;
+
+               case 8:                         /* 1z00y */
+                       if (--ctr != 0)
+                               ctr_ok = cond_ok = 1;
+                       break;
+
+               case 9:                         /* 1z01y */
+                       if (--ctr == 0)
+                               ctr_ok = cond_ok = 1;
+                       break;
+
+               case 10:                                /* 1z1zz */
+                       ctr_ok = cond_ok = 1;
+                       break;
+               }
+       }
+
+       if (branch && (!conditional || (ctr_ok && cond_ok))) {
+               if (aa)
+                       step = addr;
+               else
+                       step = addr + pc;
+
+               if (lk)
+                       next = pc + 4;
+               else
+                       next = step;
+       } else {
+               step = next = pc + 4;
+       }
+
+       if (step_over == TRUE)
+               *(unsigned long *) nextaddr = next;
+       else
+               *(unsigned long *) nextaddr = step;
+
+       return TRUE;
+}                                                              /* find_next_address */
+
+
+/*
+ * Copyright (c) 2000 William L. Pitts and W. Gerald Hicks
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms are freely
+ * permitted provided that the above copyright notice and this
+ * paragraph and the following disclaimer are duplicated in all
+ * such forms.
+ *
+ * This software is provided "AS IS" and without any express or
+ * implied warranties, including, without limitation, the implied
+ * warranties of merchantability and fitness for a particular
+ * purpose.
+ */
diff -Naur u-boot-2009.03_orig/common/cmd_bootm.c u-boot-2009.03/common/cmd_bootm.c
--- u-boot-2009.03_orig/common/cmd_bootm.c      2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/common/cmd_bootm.c   2009-03-25 16:25:04.705123000 -0700
@@ -191,6 +191,8 @@
   #define IH_INITRD_ARCH IH_ARCH_SH
 #elif defined(__sparc__)
   #define IH_INITRD_ARCH IH_ARCH_SPARC
+#elif defined(__or1200__)
+  #define IH_INITRD_ARCH IH_ARCH_INVALID
 #else
 # error Unknown CPU type
 #endif
diff -Naur u-boot-2009.03_orig/common/cmd_doc.c u-boot-2009.03/common/cmd_doc.c
--- u-boot-2009.03_orig/common/cmd_doc.c        2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/common/cmd_doc.c     2009-03-31 14:49:43.350542400 -0700
@@ -1,1640 +1,1640 @@
-/*
- * Driver for Disk-On-Chip 2000 and Millennium
- * (c) 1999 Machine Vision Holdings, Inc.
- * (c) 1999, 2000 David Woodhouse <dwmw2@infradead.org>
- *
- * $Id: doc2000.c,v 1.46 2001/10/02 15:05:13 dwmw2 Exp $
- */
-
-#include <common.h>
-#include <config.h>
-#include <command.h>
-#include <malloc.h>
-#include <asm/io.h>
-#include <linux/mtd/nftl.h>
-#include <linux/mtd/doc2000.h>
-
-/*
- * ! BROKEN !
- *
- * TODO: must be implemented and tested by someone with HW
- */
-#if 0
-#ifdef CONFIG_SYS_DOC_SUPPORT_2000
-#define DoC_is_2000(doc) (doc->ChipID == DOC_ChipID_Doc2k)
-#else
-#define DoC_is_2000(doc) (0)
-#endif
-
-#ifdef CONFIG_SYS_DOC_SUPPORT_MILLENNIUM
-#define DoC_is_Millennium(doc) (doc->ChipID == DOC_ChipID_DocMil)
-#else
-#define DoC_is_Millennium(doc) (0)
-#endif
-
-/* CONFIG_SYS_DOC_PASSIVE_PROBE:
-   In order to ensure that the BIOS checksum is correct at boot time, and
-   hence that the onboard BIOS extension gets executed, the DiskOnChip
-   goes into reset mode when it is read sequentially: all registers
-   return 0xff until the chip is woken up again by writing to the
-   DOCControl register.
-
-   Unfortunately, this means that the probe for the DiskOnChip is unsafe,
-   because one of the first things it does is write to where it thinks
-   the DOCControl register should be - which may well be shared memory
-   for another device. I've had machines which lock up when this is
-   attempted. Hence the possibility to do a passive probe, which will fail
-   to detect a chip in reset mode, but is at least guaranteed not to lock
-   the machine.
-
-   If you have this problem, uncomment the following line:
-#define CONFIG_SYS_DOC_PASSIVE_PROBE
-*/
-
-#undef DOC_DEBUG
-#undef ECC_DEBUG
-#undef PSYCHO_DEBUG
-#undef NFTL_DEBUG
-
-static struct DiskOnChip doc_dev_desc[CONFIG_SYS_MAX_DOC_DEVICE];
-
-/* Current DOC Device  */
-static int curr_device = -1;
-
-/* Supported NAND flash devices */
-static struct nand_flash_dev nand_flash_ids[] = {
-       {"Toshiba TC5816BDC",     NAND_MFR_TOSHIBA, 0x64, 21, 1, 2, 0x1000, 0},
-       {"Toshiba TC5832DC",      NAND_MFR_TOSHIBA, 0x6b, 22, 0, 2, 0x2000, 0},
-       {"Toshiba TH58V128DC",    NAND_MFR_TOSHIBA, 0x73, 24, 0, 2, 0x4000, 0},
-       {"Toshiba TC58256FT/DC",  NAND_MFR_TOSHIBA, 0x75, 25, 0, 2, 0x4000, 0},
-       {"Toshiba TH58512FT",     NAND_MFR_TOSHIBA, 0x76, 26, 0, 3, 0x4000, 0},
-       {"Toshiba TC58V32DC",     NAND_MFR_TOSHIBA, 0xe5, 22, 0, 2, 0x2000, 0},
-       {"Toshiba TC58V64AFT/DC", NAND_MFR_TOSHIBA, 0xe6, 23, 0, 2, 0x2000, 0},
-       {"Toshiba TC58V16BDC",    NAND_MFR_TOSHIBA, 0xea, 21, 1, 2, 0x1000, 0},
-       {"Toshiba TH58100FT",     NAND_MFR_TOSHIBA, 0x79, 27, 0, 3, 0x4000, 0},
-       {"Samsung KM29N16000",    NAND_MFR_SAMSUNG, 0x64, 21, 1, 2, 0x1000, 0},
-       {"Samsung unknown 4Mb",   NAND_MFR_SAMSUNG, 0x6b, 22, 0, 2, 0x2000, 0},
-       {"Samsung KM29U128T",     NAND_MFR_SAMSUNG, 0x73, 24, 0, 2, 0x4000, 0},
-       {"Samsung KM29U256T",     NAND_MFR_SAMSUNG, 0x75, 25, 0, 2, 0x4000, 0},
-       {"Samsung unknown 64Mb",  NAND_MFR_SAMSUNG, 0x76, 26, 0, 3, 0x4000, 0},
-       {"Samsung KM29W32000",    NAND_MFR_SAMSUNG, 0xe3, 22, 0, 2, 0x2000, 0},
-       {"Samsung unknown 4Mb",   NAND_MFR_SAMSUNG, 0xe5, 22, 0, 2, 0x2000, 0},
-       {"Samsung KM29U64000",    NAND_MFR_SAMSUNG, 0xe6, 23, 0, 2, 0x2000, 0},
-       {"Samsung KM29W16000",    NAND_MFR_SAMSUNG, 0xea, 21, 1, 2, 0x1000, 0},
-       {"Samsung K9F5616Q0C",    NAND_MFR_SAMSUNG, 0x45, 25, 0, 2, 0x4000, 1},
-       {"Samsung K9K1216Q0C",    NAND_MFR_SAMSUNG, 0x46, 26, 0, 3, 0x4000, 1},
-       {"Samsung K9F1G08U0M",    NAND_MFR_SAMSUNG, 0xf1, 27, 0, 2, 0, 0},
-       {NULL,}
-};
-
-/* ------------------------------------------------------------------------- */
-
-int do_doc (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
-    int rcode = 0;
-
-    switch (argc) {
-    case 0:
-    case 1:
-       cmd_usage(cmdtp);
-       return 1;
-    case 2:
-       if (strcmp(argv[1],"info") == 0) {
-               int i;
-
-               putc ('\n');
-
-               for (i=0; i<CONFIG_SYS_MAX_DOC_DEVICE; ++i) {
-                       if(doc_dev_desc[i].ChipID == DOC_ChipID_UNKNOWN)
-                               continue; /* list only known devices */
-                       printf ("Device %d: ", i);
-                       doc_print(&doc_dev_desc[i]);
-               }
-               return 0;
-
-       } else if (strcmp(argv[1],"device") == 0) {
-               if ((curr_device < 0) || (curr_device >= CONFIG_SYS_MAX_DOC_DEVICE)) {
-                       puts ("\nno devices available\n");
-                       return 1;
-               }
-               printf ("\nDevice %d: ", curr_device);
-               doc_print(&doc_dev_desc[curr_device]);
-               return 0;
-       }
-       cmd_usage(cmdtp);
-       return 1;
-    case 3:
-       if (strcmp(argv[1],"device") == 0) {
-               int dev = (int)simple_strtoul(argv[2], NULL, 10);
-
-               printf ("\nDevice %d: ", dev);
-               if (dev >= CONFIG_SYS_MAX_DOC_DEVICE) {
-                       puts ("unknown device\n");
-                       return 1;
-               }
-               doc_print(&doc_dev_desc[dev]);
-               /*doc_print (dev);*/
-
-               if (doc_dev_desc[dev].ChipID == DOC_ChipID_UNKNOWN) {
-                       return 1;
-               }
-
-               curr_device = dev;
-
-               puts ("... is now current device\n");
-
-               return 0;
-       }
-
-       cmd_usage(cmdtp);
-       return 1;
-    default:
-       /* at least 4 args */
-
-       if (strcmp(argv[1],"read") == 0 || strcmp(argv[1],"write") == 0) {
-               ulong addr = simple_strtoul(argv[2], NULL, 16);
-               ulong off  = simple_strtoul(argv[3], NULL, 16);
-               ulong size = simple_strtoul(argv[4], NULL, 16);
-               int cmd    = (strcmp(argv[1],"read") == 0);
-               int ret, total;
-
-               printf ("\nDOC %s: device %d offset %ld, size %ld ... ",
-                       cmd ? "read" : "write", curr_device, off, size);
-
-               ret = doc_rw(doc_dev_desc + curr_device, cmd, off, size,
-                            (size_t *)&total, (u_char*)addr);
-
-               printf ("%d bytes %s: %s\n", total, cmd ? "read" : "write",
-                       ret ? "ERROR" : "OK");
-
-               return ret;
-       } else if (strcmp(argv[1],"erase") == 0) {
-               ulong off = simple_strtoul(argv[2], NULL, 16);
-               ulong size = simple_strtoul(argv[3], NULL, 16);
-               int ret;
-
-               printf ("\nDOC erase: device %d offset %ld, size %ld ... ",
-                       curr_device, off, size);
-
-               ret = doc_erase (doc_dev_desc + curr_device, off, size);
-
-               printf("%s\n", ret ? "ERROR" : "OK");
-
-               return ret;
-       } else {
-               cmd_usage(cmdtp);
-               rcode = 1;
-       }
-
-       return rcode;
-    }
-}
-U_BOOT_CMD(
-       doc,    5,      1,      do_doc,
-       "Disk-On-Chip sub-system",
-       "info  - show available DOC devices\n"
-       "doc device [dev] - show or set current device\n"
-       "doc read  addr off size\n"
-       "doc write addr off size - read/write `size'"
-       " bytes starting at offset `off'\n"
-       "    to/from memory address `addr'\n"
-       "doc erase off size - erase `size' bytes of DOC from offset `off'\n"
-);
-
-int do_docboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
-       char *boot_device = NULL;
-       char *ep;
-       int dev;
-       ulong cnt;
-       ulong addr;
-       ulong offset = 0;
-       image_header_t *hdr;
-       int rcode = 0;
-#if defined(CONFIG_FIT)
-       const void *fit_hdr = NULL;
-#endif
-
-       show_boot_progress (34);
-       switch (argc) {
-       case 1:
-               addr = CONFIG_SYS_LOAD_ADDR;
-               boot_device = getenv ("bootdevice");
-               break;
-       case 2:
-               addr = simple_strtoul(argv[1], NULL, 16);
-               boot_device = getenv ("bootdevice");
-               break;
-       case 3:
-               addr = simple_strtoul(argv[1], NULL, 16);
-               boot_device = argv[2];
-               break;
-       case 4:
-               addr = simple_strtoul(argv[1], NULL, 16);
-               boot_device = argv[2];
-               offset = simple_strtoul(argv[3], NULL, 16);
-               break;
-       default:
-               cmd_usage(cmdtp);
-               show_boot_progress (-35);
-               return 1;
-       }
-
-       show_boot_progress (35);
-       if (!boot_device) {
-               puts ("\n** No boot device **\n");
-               show_boot_progress (-36);
-               return 1;
-       }
-       show_boot_progress (36);
-
-       dev = simple_strtoul(boot_device, &ep, 16);
-
-       if ((dev >= CONFIG_SYS_MAX_DOC_DEVICE) ||
-           (doc_dev_desc[dev].ChipID == DOC_ChipID_UNKNOWN)) {
-               printf ("\n** Device %d not available\n", dev);
-               show_boot_progress (-37);
-               return 1;
-       }
-       show_boot_progress (37);
-
-       printf ("\nLoading from device %d: %s at 0x%lX (offset 0x%lX)\n",
-               dev, doc_dev_desc[dev].name, doc_dev_desc[dev].physadr,
-               offset);
-
-       if (doc_rw (doc_dev_desc + dev, 1, offset,
-                   SECTORSIZE, NULL, (u_char *)addr)) {
-               printf ("** Read error on %d\n", dev);
-               show_boot_progress (-38);
-               return 1;
-       }
-       show_boot_progress (38);
-
-       switch (genimg_get_format ((void *)addr)) {
-       case IMAGE_FORMAT_LEGACY:
-               hdr = (image_header_t *)addr;
-
-               image_print_contents (hdr);
-
-               cnt = image_get_image_size (hdr);
-               break;
-#if defined(CONFIG_FIT)
-       case IMAGE_FORMAT_FIT:
-               fit_hdr = (const void *)addr;
-               puts ("Fit image detected...\n");
-
-               cnt = fit_get_size (fit_hdr);
-               break;
-#endif
-       default:
-               show_boot_progress (-39);
-               puts ("** Unknown image type\n");
-               return 1;
-       }
-       show_boot_progress (39);
-
-       cnt -= SECTORSIZE;
-       if (doc_rw (doc_dev_desc + dev, 1, offset + SECTORSIZE, cnt,
-                   NULL, (u_char *)(addr+SECTORSIZE))) {
-               printf ("** Read error on %d\n", dev);
-               show_boot_progress (-40);
-               return 1;
-       }
-       show_boot_progress (40);
-
-#if defined(CONFIG_FIT)
-       /* This cannot be done earlier, we need complete FIT image in RAM first */
-       if (genimg_get_format ((void *)addr) == IMAGE_FORMAT_FIT) {
-               if (!fit_check_format (fit_hdr)) {
-                       show_boot_progress (-130);
-                       puts ("** Bad FIT image format\n");
-                       return 1;
-               }
-               show_boot_progress (131);
-               fit_print_contents (fit_hdr);
-       }
-#endif
-
-       /* Loading ok, update default load address */
-
-       load_addr = addr;
-
-       /* Check if we should attempt an auto-start */
-       if (((ep = getenv("autostart")) != NULL) && (strcmp(ep,"yes") == 0)) {
-               char *local_args[2];
-               extern int do_bootm (cmd_tbl_t *, int, int, char *[]);
-
-               local_args[0] = argv[0];
-               local_args[1] = NULL;
-
-               printf ("Automatic boot of image at addr 0x%08lX ...\n", addr);
-
-               do_bootm (cmdtp, 0, 1, local_args);
-               rcode = 1;
-       }
-       return rcode;
-}
-
-U_BOOT_CMD(
-       docboot,        4,      1,      do_docboot,
-       "boot from DOC device",
-       "loadAddr dev\n"
-);
-
-int doc_rw (struct DiskOnChip* this, int cmd,
-           loff_t from, size_t len,
-           size_t * retlen, u_char * buf)
-{
-       int noecc, ret = 0, n, total = 0;
-       char eccbuf[6];
-
-       while(len) {
-               /* The ECC will not be calculated correctly if
-                  less than 512 is written or read */
-               noecc = (from != (from | 0x1ff) + 1) || (len < 0x200);
-
-               if (cmd)
-                       ret = doc_read_ecc(this, from, len,
-                                          (size_t *)&n, (u_char*)buf,
-                                          noecc ? (uchar *)NULL : (uchar *)eccbuf);
-               else
-                       ret = doc_write_ecc(this, from, len,
-                                           (size_t *)&n, (u_char*)buf,
-                                           noecc ? (uchar *)NULL : (uchar *)eccbuf);
-
-               if (ret)
-                       break;
-
-               from  += n;
-               buf   += n;
-               total += n;
-               len   -= n;
-       }
-
-       if (retlen)
-               *retlen = total;
-
-       return ret;
-}
-
-void doc_print(struct DiskOnChip *this) {
-       printf("%s at 0x%lX,\n"
-              "\t  %d chip%s %s, size %d MB, \n"
-              "\t  total size %ld MB, sector size %ld kB\n",
-              this->name, this->physadr, this->numchips,
-              this->numchips>1 ? "s" : "", this->chips_name,
-              1 << (this->chipshift - 20),
-              this->totlen >> 20, this->erasesize >> 10);
-
-       if (this->nftl_found) {
-               struct NFTLrecord *nftl = &this->nftl;
-               unsigned long bin_size, flash_size;
-
-               bin_size = nftl->nb_boot_blocks * this->erasesize;
-               flash_size = (nftl->nb_blocks - nftl->nb_boot_blocks) * this->erasesize;
-
-               printf("\t  NFTL boot record:\n"
-                      "\t    Binary partition: size %ld%s\n"
-                      "\t    Flash disk partition: size %ld%s, offset 0x%lx\n",
-                      bin_size > (1 << 20) ? bin_size >> 20 : bin_size >> 10,
-                      bin_size > (1 << 20) ? "MB" : "kB",
-                      flash_size > (1 << 20) ? flash_size >> 20 : flash_size >> 10,
-                      flash_size > (1 << 20) ? "MB" : "kB", bin_size);
-       } else {
-               puts ("\t  No NFTL boot record found.\n");
-       }
-}
-
-/* ------------------------------------------------------------------------- */
-
-/* This function is needed to avoid calls of the __ashrdi3 function. */
-static int shr(int val, int shift) {
-       return val >> shift;
-}
-
-/* Perform the required delay cycles by reading from the appropriate register */
-static void DoC_Delay(struct DiskOnChip *doc, unsigned short cycles)
-{
-       volatile char dummy;
-       int i;
-
-       for (i = 0; i < cycles; i++) {
-               if (DoC_is_Millennium(doc))
-                       dummy = ReadDOC(doc->virtadr, NOP);
-               else
-                       dummy = ReadDOC(doc->virtadr, DOCStatus);
-       }
-
-}
-
-/* DOC_WaitReady: Wait for RDY line to be asserted by the flash chip */
-static int _DoC_WaitReady(struct DiskOnChip *doc)
-{
-       unsigned long docptr = doc->virtadr;
-       unsigned long start = get_timer(0);
-
-#ifdef PSYCHO_DEBUG
-       puts ("_DoC_WaitReady called for out-of-line wait\n");
-#endif
-
-       /* Out-of-line routine to wait for chip response */
-       while (!(ReadDOC(docptr, CDSNControl) & CDSN_CTRL_FR_B)) {
-#ifdef CONFIG_SYS_DOC_SHORT_TIMEOUT
-               /* it seems that after a certain time the DoC deasserts
-                * the CDSN_CTRL_FR_B although it is not ready...
-                * using a short timout solve this (timer increments every ms) */
-               if (get_timer(start) > 10) {
-                       return DOC_ETIMEOUT;
-               }
-#else
-               if (get_timer(start) > 10 * 1000) {
-                       puts ("_DoC_WaitReady timed out.\n");
-                       return DOC_ETIMEOUT;
-               }
-#endif
-               udelay(1);
-       }
-
-       return 0;
-}
-
-static int DoC_WaitReady(struct DiskOnChip *doc)
-{
-       unsigned long docptr = doc->virtadr;
-       /* This is inline, to optimise the common case, where it's ready instantly */
-       int ret = 0;
-
-       /* 4 read form NOP register should be issued in prior to the read from CDSNControl
-          see Software Requirement 11.4 item 2. */
-       DoC_Delay(doc, 4);
-
-       if (!(ReadDOC(docptr, CDSNControl) & CDSN_CTRL_FR_B))
-               /* Call the out-of-line routine to wait */
-               ret = _DoC_WaitReady(doc);
-
-       /* issue 2 read from NOP register after reading from CDSNControl register
-          see Software Requirement 11.4 item 2. */
-       DoC_Delay(doc, 2);
-
-       return ret;
-}
-
-/* DoC_Command: Send a flash command to the flash chip through the CDSN Slow IO register to
-   bypass the internal pipeline. Each of 4 delay cycles (read from the NOP register) is
-   required after writing to CDSN Control register, see Software Requirement 11.4 item 3. */
-
-static inline int DoC_Command(struct DiskOnChip *doc, unsigned char command,
-                             unsigned char xtraflags)
-{
-       unsigned long docptr = doc->virtadr;
-
-       if (DoC_is_2000(doc))
-               xtraflags |= CDSN_CTRL_FLASH_IO;
-
-       /* Assert the CLE (Command Latch Enable) line to the flash chip */
-       WriteDOC(xtraflags | CDSN_CTRL_CLE | CDSN_CTRL_CE, docptr, CDSNControl);
-       DoC_Delay(doc, 4);      /* Software requirement 11.4.3 for Millennium */
-
-       if (DoC_is_Millennium(doc))
-               WriteDOC(command, docptr, CDSNSlowIO);
-
-       /* Send the command */
-       WriteDOC_(command, docptr, doc->ioreg);
-
-       /* Lower the CLE line */
-       WriteDOC(xtraflags | CDSN_CTRL_CE, docptr, CDSNControl);
-       DoC_Delay(doc, 4);      /* Software requirement 11.4.3 for Millennium */
-
-       /* Wait for the chip to respond - Software requirement 11.4.1 (extended for any command) */
-       return DoC_WaitReady(doc);
-}
-
-/* DoC_Address: Set the current address for the flash chip through the CDSN Slow IO register to
-   bypass the internal pipeline. Each of 4 delay cycles (read from the NOP register) is
-   required after writing to CDSN Control register, see Software Requirement 11.4 item 3. */
-
-static int DoC_Address(struct DiskOnChip *doc, int numbytes, unsigned long ofs,
-                      unsigned char xtraflags1, unsigned char xtraflags2)
-{
-       unsigned long docptr;
-       int i;
-
-       docptr = doc->virtadr;
-
-       if (DoC_is_2000(doc))
-               xtraflags1 |= CDSN_CTRL_FLASH_IO;
-
-       /* Assert the ALE (Address Latch Enable) line to the flash chip */
-       WriteDOC(xtraflags1 | CDSN_CTRL_ALE | CDSN_CTRL_CE, docptr, CDSNControl);
-
-       DoC_Delay(doc, 4);      /* Software requirement 11.4.3 for Millennium */
-
-       /* Send the address */
-       /* Devices with 256-byte page are addressed as:
-          Column (bits 0-7), Page (bits 8-15, 16-23, 24-31)
-          * there is no device on the market with page256
-          and more than 24 bits.
-          Devices with 512-byte page are addressed as:
-          Column (bits 0-7), Page (bits 9-16, 17-24, 25-31)
-          * 25-31 is sent only if the chip support it.
-          * bit 8 changes the read command to be sent
-          (NAND_CMD_READ0 or NAND_CMD_READ1).
-        */
-
-       if (numbytes == ADDR_COLUMN || numbytes == ADDR_COLUMN_PAGE) {
-               if (DoC_is_Millennium(doc))
-                       WriteDOC(ofs & 0xff, docptr, CDSNSlowIO);
-               WriteDOC_(ofs & 0xff, docptr, doc->ioreg);
-       }
-
-       if (doc->page256) {
-               ofs = ofs >> 8;
-       } else {
-               ofs = ofs >> 9;
-       }
-
-       if (numbytes == ADDR_PAGE || numbytes == ADDR_COLUMN_PAGE) {
-               for (i = 0; i < doc->pageadrlen; i++, ofs = ofs >> 8) {
-                       if (DoC_is_Millennium(doc))
-                               WriteDOC(ofs & 0xff, docptr, CDSNSlowIO);
-                       WriteDOC_(ofs & 0xff, docptr, doc->ioreg);
-               }
-       }
-
-       DoC_Delay(doc, 2);      /* Needed for some slow flash chips. mf. */
-
-       /* FIXME: The SlowIO's for millennium could be replaced by
-          a single WritePipeTerm here. mf. */
-
-       /* Lower the ALE line */
-       WriteDOC(xtraflags1 | xtraflags2 | CDSN_CTRL_CE, docptr,
-                CDSNControl);
-
-       DoC_Delay(doc, 4);      /* Software requirement 11.4.3 for Millennium */
-
-       /* Wait for the chip to respond - Software requirement 11.4.1 */
-       return DoC_WaitReady(doc);
-}
-
-/* Read a buffer from DoC, taking care of Millennium oddities */
-static void DoC_ReadBuf(struct DiskOnChip *doc, u_char * buf, int len)
-{
-       volatile int dummy;
-       int modulus = 0xffff;
-       unsigned long docptr;
-       int i;
-
-       docptr = doc->virtadr;
-
-       if (len <= 0)
-               return;
-
-       if (DoC_is_Millennium(doc)) {
-               /* Read the data via the internal pipeline through CDSN IO register,
-                  see Pipelined Read Operations 11.3 */
-               dummy = ReadDOC(docptr, ReadPipeInit);
-
-               /* Millennium should use the LastDataRead register - Pipeline Reads */
-               len--;
-
-               /* This is needed for correctly ECC calculation */
-               modulus = 0xff;
-       }
-
-       for (i = 0; i < len; i++)
-               buf[i] = ReadDOC_(docptr, doc->ioreg + (i & modulus));
-
-       if (DoC_is_Millennium(doc)) {
-               buf[i] = ReadDOC(docptr, LastDataRead);
-       }
-}
-
-/* Write a buffer to DoC, taking care of Millennium oddities */
-static void DoC_WriteBuf(struct DiskOnChip *doc, const u_char * buf, int len)
-{
-       unsigned long docptr;
-       int i;
-
-       docptr = doc->virtadr;
-
-       if (len <= 0)
-               return;
-
-       for (i = 0; i < len; i++)
-               WriteDOC_(buf[i], docptr, doc->ioreg + i);
-
-       if (DoC_is_Millennium(doc)) {
-               WriteDOC(0x00, docptr, WritePipeTerm);
-       }
-}
-
-
-/* DoC_SelectChip: Select a given flash chip within the current floor */
-
-static inline int DoC_SelectChip(struct DiskOnChip *doc, int chip)
-{
-       unsigned long docptr = doc->virtadr;
-
-       /* Software requirement 11.4.4 before writing DeviceSelect */
-       /* Deassert the CE line to eliminate glitches on the FCE# outputs */
-       WriteDOC(CDSN_CTRL_WP, docptr, CDSNControl);
-       DoC_Delay(doc, 4);      /* Software requirement 11.4.3 for Millennium */
-
-       /* Select the individual flash chip requested */
-       WriteDOC(chip, docptr, CDSNDeviceSelect);
-       DoC_Delay(doc, 4);
-
-       /* Reassert the CE line */
-       WriteDOC(CDSN_CTRL_CE | CDSN_CTRL_FLASH_IO | CDSN_CTRL_WP, docptr,
-                CDSNControl);
-       DoC_Delay(doc, 4);      /* Software requirement 11.4.3 for Millennium */
-
-       /* Wait for it to be ready */
-       return DoC_WaitReady(doc);
-}
-
-/* DoC_SelectFloor: Select a given floor (bank of flash chips) */
-
-static inline int DoC_SelectFloor(struct DiskOnChip *doc, int floor)
-{
-       unsigned long docptr = doc->virtadr;
-
-       /* Select the floor (bank) of chips required */
-       WriteDOC(floor, docptr, FloorSelect);
-
-       /* Wait for the chip to be ready */
-       return DoC_WaitReady(doc);
-}
-
-/* DoC_IdentChip: Identify a given NAND chip given {floor,chip} */
-
-static int DoC_IdentChip(struct DiskOnChip *doc, int floor, int chip)
-{
-       int mfr, id, i;
-       volatile char dummy;
-
-       /* Page in the required floor/chip */
-       DoC_SelectFloor(doc, floor);
-       DoC_SelectChip(doc, chip);
-
-       /* Reset the chip */
-       if (DoC_Command(doc, NAND_CMD_RESET, CDSN_CTRL_WP)) {
-#ifdef DOC_DEBUG
-               printf("DoC_Command (reset) for %d,%d returned true\n",
-                      floor, chip);
-#endif
-               return 0;
-       }
-
-
-       /* Read the NAND chip ID: 1. Send ReadID command */
-       if (DoC_Command(doc, NAND_CMD_READID, CDSN_CTRL_WP)) {
-#ifdef DOC_DEBUG
-               printf("DoC_Command (ReadID) for %d,%d returned true\n",
-                      floor, chip);
-#endif
-               return 0;
-       }
-
-       /* Read the NAND chip ID: 2. Send address byte zero */
-       DoC_Address(doc, ADDR_COLUMN, 0, CDSN_CTRL_WP, 0);
-
-       /* Read the manufacturer and device id codes from the device */
-
-       /* CDSN Slow IO register see Software Requirement 11.4 item 5. */
-       dummy = ReadDOC(doc->virtadr, CDSNSlowIO);
-       DoC_Delay(doc, 2);
-       mfr = ReadDOC_(doc->virtadr, doc->ioreg);
-
-       /* CDSN Slow IO register see Software Requirement 11.4 item 5. */
-       dummy = ReadDOC(doc->virtadr, CDSNSlowIO);
-       DoC_Delay(doc, 2);
-       id = ReadDOC_(doc->virtadr, doc->ioreg);
-
-       /* No response - return failure */
-       if (mfr == 0xff || mfr == 0)
-               return 0;
-
-       /* Check it's the same as the first chip we identified.
-        * M-Systems say that any given DiskOnChip device should only
-        * contain _one_ type of flash part, although that's not a
-        * hardware restriction. */
-       if (doc->mfr) {
-               if (doc->mfr == mfr && doc->id == id)
-                       return 1;       /* This is another the same the first */
-               else
-                       printf("Flash chip at floor %d, chip %d is different:\n",
-                              floor, chip);
-       }
-
-       /* Print and store the manufacturer and ID codes. */
-       for (i = 0; nand_flash_ids[i].name != NULL; i++) {
-               if (mfr == nand_flash_ids[i].manufacture_id &&
-                   id == nand_flash_ids[i].model_id) {
-#ifdef DOC_DEBUG
-                       printf("Flash chip found: Manufacturer ID: %2.2X, "
-                              "Chip ID: %2.2X (%s)\n", mfr, id,
-                              nand_flash_ids[i].name);
-#endif
-                       if (!doc->mfr) {
-                               doc->mfr = mfr;
-                               doc->id = id;
-                               doc->chipshift =
-                                   nand_flash_ids[i].chipshift;
-                               doc->page256 = nand_flash_ids[i].page256;
-                               doc->pageadrlen =
-                                   nand_flash_ids[i].pageadrlen;
-                               doc->erasesize =
-                                   nand_flash_ids[i].erasesize;
-                               doc->chips_name =
-                                   nand_flash_ids[i].name;
-                               return 1;
-                       }
-                       return 0;
-               }
-       }
-
-
-#ifdef DOC_DEBUG
-       /* We haven't fully identified the chip. Print as much as we know. */
-       printf("Unknown flash chip found: %2.2X %2.2X\n",
-              id, mfr);
-#endif
-
-       return 0;
-}
-
-/* DoC_ScanChips: Find all NAND chips present in a DiskOnChip, and identify them */
-
-static void DoC_ScanChips(struct DiskOnChip *this)
-{
-       int floor, chip;
-       int numchips[MAX_FLOORS];
-       int maxchips = MAX_CHIPS;
-       int ret = 1;
-
-       this->numchips = 0;
-       this->mfr = 0;
-       this->id = 0;
-
-       if (DoC_is_Millennium(this))
-               maxchips = MAX_CHIPS_MIL;
-
-       /* For each floor, find the number of valid chips it contains */
-       for (floor = 0; floor < MAX_FLOORS; floor++) {
-               ret = 1;
-               numchips[floor] = 0;
-               for (chip = 0; chip < maxchips && ret != 0; chip++) {
-
-                       ret = DoC_IdentChip(this, floor, chip);
-                       if (ret) {
-                               numchips[floor]++;
-                               this->numchips++;
-                       }
-               }
-       }
-
-       /* If there are none at all that we recognise, bail */
-       if (!this->numchips) {
-               puts ("No flash chips recognised.\n");
-               return;
-       }
-
-       /* Allocate an array to hold the information for each chip */
-       this->chips = malloc(sizeof(struct Nand) * this->numchips);
-       if (!this->chips) {
-               puts ("No memory for allocating chip info structures\n");
-               return;
-       }
-
-       ret = 0;
-
-       /* Fill out the chip array with {floor, chipno} for each
-        * detected chip in the device. */
-       for (floor = 0; floor < MAX_FLOORS; floor++) {
-               for (chip = 0; chip < numchips[floor]; chip++) {
-                       this->chips[ret].floor = floor;
-                       this->chips[ret].chip = chip;
-                       this->chips[ret].curadr = 0;
-                       this->chips[ret].curmode = 0x50;
-                       ret++;
-               }
-       }
-
-       /* Calculate and print the total size of the device */
-       this->totlen = this->numchips * (1 << this->chipshift);
-
-#ifdef DOC_DEBUG
-       printf("%d flash chips found. Total DiskOnChip size: %ld MB\n",
-              this->numchips, this->totlen >> 20);
-#endif
-}
-
-/* find_boot_record: Find the NFTL Media Header and its Spare copy which contains the
- *     various device information of the NFTL partition and Bad Unit Table. Update
- *     the ReplUnitTable[] table accroding to the Bad Unit Table. ReplUnitTable[]
- *     is used for management of Erase Unit in other routines in nftl.c and nftlmount.c
- */
-static int find_boot_record(struct NFTLrecord *nftl)
-{
-       struct nftl_uci1 h1;
-       struct nftl_oob oob;
-       unsigned int block, boot_record_count = 0;
-       int retlen;
-       u8 buf[SECTORSIZE];
-       struct NFTLMediaHeader *mh = &nftl->MediaHdr;
-       unsigned int i;
-
-       nftl->MediaUnit = BLOCK_NIL;
-       nftl->SpareMediaUnit = BLOCK_NIL;
-
-       /* search for a valid boot record */
-       for (block = 0; block < nftl->nb_blocks; block++) {
-               int ret;
-
-               /* Check for ANAND header first. Then can whinge if it's found but later
-                  checks fail */
-               if ((ret = doc_read_ecc(nftl->mtd, block * nftl->EraseSize, SECTORSIZE,
-                                       (size_t *)&retlen, buf, NULL))) {
-                       static int warncount = 5;
-
-                       if (warncount) {
-                               printf("Block read at 0x%x failed\n", block * nftl->EraseSize);
-                               if (!--warncount)
-                                       puts ("Further failures for this block will not be printed\n");
-                       }
-                       continue;
-               }
-
-               if (retlen < 6 || memcmp(buf, "ANAND", 6)) {
-                       /* ANAND\0 not found. Continue */
-#ifdef PSYCHO_DEBUG
-                       printf("ANAND header not found at 0x%x\n", block * nftl->EraseSize);
-#endif
-                       continue;
-               }
-
-#ifdef NFTL_DEBUG
-               printf("ANAND header found at 0x%x\n", block * nftl->EraseSize);
-#endif
-
-               /* To be safer with BIOS, also use erase mark as discriminant */
-               if ((ret = doc_read_oob(nftl->mtd, block * nftl->EraseSize + SECTORSIZE + 8,
-                               8, (size_t *)&retlen, (uchar *)&h1) < 0)) {
-#ifdef NFTL_DEBUG
-                       printf("ANAND header found at 0x%x, but OOB data read failed\n",
-                              block * nftl->EraseSize);
-#endif
-                       continue;
-               }
-
-               /* OK, we like it. */
-
-               if (boot_record_count) {
-                       /* We've already processed one. So we just check if
-                          this one is the same as the first one we found */
-                       if (memcmp(mh, buf, sizeof(struct NFTLMediaHeader))) {
-#ifdef NFTL_DEBUG
-                               printf("NFTL Media Headers at 0x%x and 0x%x disagree.\n",
-                                      nftl->MediaUnit * nftl->EraseSize, block * nftl->EraseSize);
-#endif
-                               /* if (debug) Print both side by side */
-                               return -1;
-                       }
-                       if (boot_record_count == 1)
-                               nftl->SpareMediaUnit = block;
-
-                       boot_record_count++;
-                       continue;
-               }
-
-               /* This is the first we've seen. Copy the media header structure into place */
-               memcpy(mh, buf, sizeof(struct NFTLMediaHeader));
-
-               /* Do some sanity checks on it */
-               if (mh->UnitSizeFactor == 0) {
-#ifdef NFTL_DEBUG
-                       puts ("UnitSizeFactor 0x00 detected.\n"
-                             "This violates the spec but we think we know what it means...\n");
-#endif
-               } else if (mh->UnitSizeFactor != 0xff) {
-                       printf ("Sorry, we don't support UnitSizeFactor "
-                             "of != 1 yet.\n");
-                       return -1;
-               }
-
-               nftl->nb_boot_blocks = le16_to_cpu(mh->FirstPhysicalEUN);
-               if ((nftl->nb_boot_blocks + 2) >= nftl->nb_blocks) {
-                       printf ("NFTL Media Header sanity check failed:\n"
-                               "nb_boot_blocks (%d) + 2 > nb_blocks (%d)\n",
-                               nftl->nb_boot_blocks, nftl->nb_blocks);
-                       return -1;
-               }
-
-               nftl->numvunits = le32_to_cpu(mh->FormattedSize) / nftl->EraseSize;
-               if (nftl->numvunits > (nftl->nb_blocks - nftl->nb_boot_blocks - 2)) {
-                       printf ("NFTL Media Header sanity check failed:\n"
-                               "numvunits (%d) > nb_blocks (%d) - nb_boot_blocks(%d) - 2\n",
-                               nftl->numvunits,
-                               nftl->nb_blocks,
-                               nftl->nb_boot_blocks);
-                       return -1;
-               }
-
-               nftl->nr_sects  = nftl->numvunits * (nftl->EraseSize / SECTORSIZE);
-
-               /* If we're not using the last sectors in the device for some reason,
-                  reduce nb_blocks accordingly so we forget they're there */
-               nftl->nb_blocks = le16_to_cpu(mh->NumEraseUnits) + le16_to_cpu(mh->FirstPhysicalEUN);
-
-               /* read the Bad Erase Unit Table and modify ReplUnitTable[] accordingly */
-               for (i = 0; i < nftl->nb_blocks; i++) {
-                       if ((i & (SECTORSIZE - 1)) == 0) {
-                               /* read one sector for every SECTORSIZE of blocks */
-                               if ((ret = doc_read_ecc(nftl->mtd, block * nftl->EraseSize +
-                                                      i + SECTORSIZE, SECTORSIZE,
-                                                      (size_t *)&retlen, buf, (uchar *)&oob)) < 0) {
-                                       puts ("Read of bad sector table failed\n");
-                                       return -1;
-                               }
-                       }
-                       /* mark the Bad Erase Unit as RESERVED in ReplUnitTable */
-                       if (buf[i & (SECTORSIZE - 1)] != 0xff)
-                               nftl->ReplUnitTable[i] = BLOCK_RESERVED;
-               }
-
-               nftl->MediaUnit = block;
-               boot_record_count++;
-
-       } /* foreach (block) */
-
-       return boot_record_count?0:-1;
-}
-
-/* This routine is made available to other mtd code via
- * inter_module_register.  It must only be accessed through
- * inter_module_get which will bump the use count of this module.  The
- * addresses passed back in mtd are valid as long as the use count of
- * this module is non-zero, i.e. between inter_module_get and
- * inter_module_put.  Keith Owens <kaos@ocs.com.au> 29 Oct 2000.
- */
-static void DoC2k_init(struct DiskOnChip* this)
-{
-       struct NFTLrecord *nftl;
-
-       switch (this->ChipID) {
-       case DOC_ChipID_Doc2k:
-               this->name = "DiskOnChip 2000";
-               this->ioreg = DoC_2k_CDSN_IO;
-               break;
-       case DOC_ChipID_DocMil:
-               this->name = "DiskOnChip Millennium";
-               this->ioreg = DoC_Mil_CDSN_IO;
-               break;
-       }
-
-#ifdef DOC_DEBUG
-       printf("%s found at address 0x%lX\n", this->name,
-              this->physadr);
-#endif
-
-       this->totlen = 0;
-       this->numchips = 0;
-
-       this->curfloor = -1;
-       this->curchip = -1;
-
-       /* Ident all the chips present. */
-       DoC_ScanChips(this);
-       if ((!this->numchips) || (!this->chips))
-               return;
-
-       nftl = &this->nftl;
-
-       /* Get physical parameters */
-       nftl->EraseSize = this->erasesize;
-       nftl->nb_blocks = this->totlen / this->erasesize;
-       nftl->mtd = this;
-
-       if (find_boot_record(nftl) != 0)
-               this->nftl_found = 0;
-       else
-               this->nftl_found = 1;
-
-       printf("%s @ 0x%lX, %ld MB\n", this->name, this->physadr, this->totlen >> 20);
-}
-
-int doc_read_ecc(struct DiskOnChip* this, loff_t from, size_t len,
-                size_t * retlen, u_char * buf, u_char * eccbuf)
-{
-       unsigned long docptr;
-       struct Nand *mychip;
-       unsigned char syndrome[6];
-       volatile char dummy;
-       int i, len256 = 0, ret=0;
-
-       docptr = this->virtadr;
-
-       /* Don't allow read past end of device */
-       if (from >= this->totlen) {
-               puts ("Out of flash\n");
-               return DOC_EINVAL;
-       }
-
-       /* Don't allow a single read to cross a 512-byte block boundary */
-       if (from + len > ((from | 0x1ff) + 1))
-               len = ((from | 0x1ff) + 1) - from;
-
-       /* The ECC will not be calculated correctly if less than 512 is read */
-       if (len != 0x200 && eccbuf)
-               printf("ECC needs a full sector read (adr: %lx size %lx)\n",
-                      (long) from, (long) len);
-
-#ifdef PSYCHO_DEBUG
-       printf("DoC_Read (adr: %lx size %lx)\n", (long) from, (long) len);
-#endif
-
-       /* Find the chip which is to be used and select it */
-       mychip = &this->chips[shr(from, this->chipshift)];
-
-       if (this->curfloor != mychip->floor) {
-               DoC_SelectFloor(this, mychip->floor);
-               DoC_SelectChip(this, mychip->chip);
-       } else if (this->curchip != mychip->chip) {
-               DoC_SelectChip(this, mychip->chip);
-       }
-
-       this->curfloor = mychip->floor;
-       this->curchip = mychip->chip;
-
-       DoC_Command(this,
-                   (!this->page256
-                    && (from & 0x100)) ? NAND_CMD_READ1 : NAND_CMD_READ0,
-                   CDSN_CTRL_WP);
-       DoC_Address(this, ADDR_COLUMN_PAGE, from, CDSN_CTRL_WP,
-                   CDSN_CTRL_ECC_IO);
-
-       if (eccbuf) {
-               /* Prime the ECC engine */
-               WriteDOC(DOC_ECC_RESET, docptr, ECCConf);
-               WriteDOC(DOC_ECC_EN, docptr, ECCConf);
-       } else {
-               /* disable the ECC engine */
-               WriteDOC(DOC_ECC_RESET, docptr, ECCConf);
-               WriteDOC(DOC_ECC_DIS, docptr, ECCConf);
-       }
-
-       /* treat crossing 256-byte sector for 2M x 8bits devices */
-       if (this->page256 && from + len > (from | 0xff) + 1) {
-               len256 = (from | 0xff) + 1 - from;
-               DoC_ReadBuf(this, buf, len256);
-
-               DoC_Command(this, NAND_CMD_READ0, CDSN_CTRL_WP);
-               DoC_Address(this, ADDR_COLUMN_PAGE, from + len256,
-                           CDSN_CTRL_WP, CDSN_CTRL_ECC_IO);
-       }
-
-       DoC_ReadBuf(this, &buf[len256], len - len256);
-
-       /* Let the caller know we completed it */
-       *retlen = len;
-
-       if (eccbuf) {
-               /* Read the ECC data through the DiskOnChip ECC logic */
-               /* Note: this will work even with 2M x 8bit devices as   */
-               /*       they have 8 bytes of OOB per 256 page. mf.      */
-               DoC_ReadBuf(this, eccbuf, 6);
-
-               /* Flush the pipeline */
-               if (DoC_is_Millennium(this)) {
-                       dummy = ReadDOC(docptr, ECCConf);
-                       dummy = ReadDOC(docptr, ECCConf);
-                       i = ReadDOC(docptr, ECCConf);
-               } else {
-                       dummy = ReadDOC(docptr, 2k_ECCStatus);
-                       dummy = ReadDOC(docptr, 2k_ECCStatus);
-                       i = ReadDOC(docptr, 2k_ECCStatus);
-               }
-
-               /* Check the ECC Status */
-               if (i & 0x80) {
-                       int nb_errors;
-                       /* There was an ECC error */
-#ifdef ECC_DEBUG
-                       printf("DiskOnChip ECC Error: Read at %lx\n", (long)from);
-#endif
-                       /* Read the ECC syndrom through the DiskOnChip ECC logic.
-                          These syndrome will be all ZERO when there is no error */
-                       for (i = 0; i < 6; i++) {
-                               syndrome[i] =
-                                   ReadDOC(docptr, ECCSyndrome0 + i);
-                       }
-                       nb_errors = doc_decode_ecc(buf, syndrome);
-
-#ifdef ECC_DEBUG
-                       printf("Errors corrected: %x\n", nb_errors);
-#endif
-                       if (nb_errors < 0) {
-                               /* We return error, but have actually done the read. Not that
-                                  this can be told to user-space, via sys_read(), but at least
-                                  MTD-aware stuff can know about it by checking *retlen */
-                               printf("ECC Errors at %lx\n", (long)from);
-                               ret = DOC_EECC;
-                       }
-               }
-
-#ifdef PSYCHO_DEBUG
-               printf("ECC DATA at %lxB: %2.2X %2.2X %2.2X %2.2X %2.2X %2.2X\n",
-                            (long)from, eccbuf[0], eccbuf[1], eccbuf[2],
-                            eccbuf[3], eccbuf[4], eccbuf[5]);
-#endif
-
-               /* disable the ECC engine */
-               WriteDOC(DOC_ECC_DIS, docptr , ECCConf);
-       }
-
-       /* according to 11.4.1, we need to wait for the busy line
-        * drop if we read to the end of the page.  */
-       if(0 == ((from + *retlen) & 0x1ff))
-       {
-           DoC_WaitReady(this);
-       }
-
-       return ret;
-}
-
-int doc_write_ecc(struct DiskOnChip* this, loff_t to, size_t len,
-                 size_t * retlen, const u_char * buf,
-                 u_char * eccbuf)
-{
-       int di; /* Yes, DI is a hangover from when I was disassembling the binary driver */
-       unsigned long docptr;
-       volatile char dummy;
-       int len256 = 0;
-       struct Nand *mychip;
-
-       docptr = this->virtadr;
-
-       /* Don't allow write past end of device */
-       if (to >= this->totlen) {
-               puts ("Out of flash\n");
-               return DOC_EINVAL;
-       }
-
-       /* Don't allow a single write to cross a 512-byte block boundary */
-       if (to + len > ((to | 0x1ff) + 1))
-               len = ((to | 0x1ff) + 1) - to;
-
-       /* The ECC will not be calculated correctly if less than 512 is written */
-       if (len != 0x200 && eccbuf)
-               printf("ECC needs a full sector write (adr: %lx size %lx)\n",
-                      (long) to, (long) len);
-
-       /* printf("DoC_Write (adr: %lx size %lx)\n", (long) to, (long) len); */
-
-       /* Find the chip which is to be used and select it */
-       mychip = &this->chips[shr(to, this->chipshift)];
-
-       if (this->curfloor != mychip->floor) {
-               DoC_SelectFloor(this, mychip->floor);
-               DoC_SelectChip(this, mychip->chip);
-       } else if (this->curchip != mychip->chip) {
-               DoC_SelectChip(this, mychip->chip);
-       }
-
-       this->curfloor = mychip->floor;
-       this->curchip = mychip->chip;
-
-       /* Set device to main plane of flash */
-       DoC_Command(this, NAND_CMD_RESET, CDSN_CTRL_WP);
-       DoC_Command(this,
-                   (!this->page256
-                    && (to & 0x100)) ? NAND_CMD_READ1 : NAND_CMD_READ0,
-                   CDSN_CTRL_WP);
-
-       DoC_Command(this, NAND_CMD_SEQIN, 0);
-       DoC_Address(this, ADDR_COLUMN_PAGE, to, 0, CDSN_CTRL_ECC_IO);
-
-       if (eccbuf) {
-               /* Prime the ECC engine */
-               WriteDOC(DOC_ECC_RESET, docptr, ECCConf);
-               WriteDOC(DOC_ECC_EN | DOC_ECC_RW, docptr, ECCConf);
-       } else {
-               /* disable the ECC engine */
-               WriteDOC(DOC_ECC_RESET, docptr, ECCConf);
-               WriteDOC(DOC_ECC_DIS, docptr, ECCConf);
-       }
-
-       /* treat crossing 256-byte sector for 2M x 8bits devices */
-       if (this->page256 && to + len > (to | 0xff) + 1) {
-               len256 = (to | 0xff) + 1 - to;
-               DoC_WriteBuf(this, buf, len256);
-
-               DoC_Command(this, NAND_CMD_PAGEPROG, 0);
-
-               DoC_Command(this, NAND_CMD_STATUS, CDSN_CTRL_WP);
-               /* There's an implicit DoC_WaitReady() in DoC_Command */
-
-               dummy = ReadDOC(docptr, CDSNSlowIO);
-               DoC_Delay(this, 2);
-
-               if (ReadDOC_(docptr, this->ioreg) & 1) {
-                       puts ("Error programming flash\n");
-                       /* Error in programming */
-                       *retlen = 0;
-                       return DOC_EIO;
-               }
-
-               DoC_Command(this, NAND_CMD_SEQIN, 0);
-               DoC_Address(this, ADDR_COLUMN_PAGE, to + len256, 0,
-                           CDSN_CTRL_ECC_IO);
-       }
-
-       DoC_WriteBuf(this, &buf[len256], len - len256);
-
-       if (eccbuf) {
-               WriteDOC(CDSN_CTRL_ECC_IO | CDSN_CTRL_CE, docptr,
-                        CDSNControl);
-
-               if (DoC_is_Millennium(this)) {
-                       WriteDOC(0, docptr, NOP);
-                       WriteDOC(0, docptr, NOP);
-                       WriteDOC(0, docptr, NOP);
-               } else {
-                       WriteDOC_(0, docptr, this->ioreg);
-                       WriteDOC_(0, docptr, this->ioreg);
-                       WriteDOC_(0, docptr, this->ioreg);
-               }
-
-               /* Read the ECC data through the DiskOnChip ECC logic */
-               for (di = 0; di < 6; di++) {
-                       eccbuf[di] = ReadDOC(docptr, ECCSyndrome0 + di);
-               }
-
-               /* Reset the ECC engine */
-               WriteDOC(DOC_ECC_DIS, docptr, ECCConf);
-
-#ifdef PSYCHO_DEBUG
-               printf
-                   ("OOB data at %lx is %2.2X %2.2X %2.2X %2.2X %2.2X %2.2X\n",
-                    (long) to, eccbuf[0], eccbuf[1], eccbuf[2], eccbuf[3],
-                    eccbuf[4], eccbuf[5]);
-#endif
-       }
-
-       DoC_Command(this, NAND_CMD_PAGEPROG, 0);
-
-       DoC_Command(this, NAND_CMD_STATUS, CDSN_CTRL_WP);
-       /* There's an implicit DoC_WaitReady() in DoC_Command */
-
-       dummy = ReadDOC(docptr, CDSNSlowIO);
-       DoC_Delay(this, 2);
-
-       if (ReadDOC_(docptr, this->ioreg) & 1) {
-               puts ("Error programming flash\n");
-               /* Error in programming */
-               *retlen = 0;
-               return DOC_EIO;
-       }
-
-       /* Let the caller know we completed it */
-       *retlen = len;
-
-       if (eccbuf) {
-               unsigned char x[8];
-               size_t dummy;
-               int ret;
-
-               /* Write the ECC data to flash */
-               for (di=0; di<6; di++)
-                       x[di] = eccbuf[di];
-
-               x[6]=0x55;
-               x[7]=0x55;
-
-               ret = doc_write_oob(this, to, 8, &dummy, x);
-               return ret;
-       }
-       return 0;
-}
-
-int doc_read_oob(struct DiskOnChip* this, loff_t ofs, size_t len,
-                size_t * retlen, u_char * buf)
-{
-       int len256 = 0, ret;
-       unsigned long docptr;
-       struct Nand *mychip;
-
-       docptr = this->virtadr;
-
-       mychip = &this->chips[shr(ofs, this->chipshift)];
-
-       if (this->curfloor != mychip->floor) {
-               DoC_SelectFloor(this, mychip->floor);
-               DoC_SelectChip(this, mychip->chip);
-       } else if (this->curchip != mychip->chip) {
-               DoC_SelectChip(this, mychip->chip);
-       }
-       this->curfloor = mychip->floor;
-       this->curchip = mychip->chip;
-
-       /* update address for 2M x 8bit devices. OOB starts on the second */
-       /* page to maintain compatibility with doc_read_ecc. */
-       if (this->page256) {
-               if (!(ofs & 0x8))
-                       ofs += 0x100;
-               else
-                       ofs -= 0x8;
-       }
-
-       DoC_Command(this, NAND_CMD_READOOB, CDSN_CTRL_WP);
-       DoC_Address(this, ADDR_COLUMN_PAGE, ofs, CDSN_CTRL_WP, 0);
-
-       /* treat crossing 8-byte OOB data for 2M x 8bit devices */
-       /* Note: datasheet says it should automaticaly wrap to the */
-       /*       next OOB block, but it didn't work here. mf.      */
-       if (this->page256 && ofs + len > (ofs | 0x7) + 1) {
-               len256 = (ofs | 0x7) + 1 - ofs;
-               DoC_ReadBuf(this, buf, len256);
-
-               DoC_Command(this, NAND_CMD_READOOB, CDSN_CTRL_WP);
-               DoC_Address(this, ADDR_COLUMN_PAGE, ofs & (~0x1ff),
-                           CDSN_CTRL_WP, 0);
-       }
-
-       DoC_ReadBuf(this, &buf[len256], len - len256);
-
-       *retlen = len;
-       /* Reading the full OOB data drops us off of the end of the page,
-        * causing the flash device to go into busy mode, so we need
-        * to wait until ready 11.4.1 and Toshiba TC58256FT docs */
-
-       ret = DoC_WaitReady(this);
-
-       return ret;
-
-}
-
-int doc_write_oob(struct DiskOnChip* this, loff_t ofs, size_t len,
-                 size_t * retlen, const u_char * buf)
-{
-       int len256 = 0;
-       unsigned long docptr = this->virtadr;
-       struct Nand *mychip = &this->chips[shr(ofs, this->chipshift)];
-       volatile int dummy;
-
-#ifdef PSYCHO_DEBUG
-       printf("doc_write_oob(%lx, %d): %2.2X %2.2X %2.2X %2.2X ... %2.2X %2.2X .. %2.2X %2.2X\n",
-              (long)ofs, len, buf[0], buf[1], buf[2], buf[3],
-              buf[8], buf[9], buf[14],buf[15]);
-#endif
-
-       /* Find the chip which is to be used and select it */
-       if (this->curfloor != mychip->floor) {
-               DoC_SelectFloor(this, mychip->floor);
-               DoC_SelectChip(this, mychip->chip);
-       } else if (this->curchip != mychip->chip) {
-               DoC_SelectChip(this, mychip->chip);
-       }
-       this->curfloor = mychip->floor;
-       this->curchip = mychip->chip;
-
-       /* disable the ECC engine */
-       WriteDOC (DOC_ECC_RESET, docptr, ECCConf);
-       WriteDOC (DOC_ECC_DIS, docptr, ECCConf);
-
-       /* Reset the chip, see Software Requirement 11.4 item 1. */
-       DoC_Command(this, NAND_CMD_RESET, CDSN_CTRL_WP);
-
-       /* issue the Read2 command to set the pointer to the Spare Data Area. */
-       DoC_Command(this, NAND_CMD_READOOB, CDSN_CTRL_WP);
-
-       /* update address for 2M x 8bit devices. OOB starts on the second */
-       /* page to maintain compatibility with doc_read_ecc. */
-       if (this->page256) {
-               if (!(ofs & 0x8))
-                       ofs += 0x100;
-               else
-                       ofs -= 0x8;
-       }
-
-       /* issue the Serial Data In command to initial the Page Program process */
-       DoC_Command(this, NAND_CMD_SEQIN, 0);
-       DoC_Address(this, ADDR_COLUMN_PAGE, ofs, 0, 0);
-
-       /* treat crossing 8-byte OOB data for 2M x 8bit devices */
-       /* Note: datasheet says it should automaticaly wrap to the */
-       /*       next OOB block, but it didn't work here. mf.      */
-       if (this->page256 && ofs + len > (ofs | 0x7) + 1) {
-               len256 = (ofs | 0x7) + 1 - ofs;
-               DoC_WriteBuf(this, buf, len256);
-
-               DoC_Command(this, NAND_CMD_PAGEPROG, 0);
-               DoC_Command(this, NAND_CMD_STATUS, 0);
-               /* DoC_WaitReady() is implicit in DoC_Command */
-
-               dummy = ReadDOC(docptr, CDSNSlowIO);
-               DoC_Delay(this, 2);
-
-               if (ReadDOC_(docptr, this->ioreg) & 1) {
-                       puts ("Error programming oob data\n");
-                       /* There was an error */
-                       *retlen = 0;
-                       return DOC_EIO;
-               }
-               DoC_Command(this, NAND_CMD_SEQIN, 0);
-               DoC_Address(this, ADDR_COLUMN_PAGE, ofs & (~0x1ff), 0, 0);
-       }
-
-       DoC_WriteBuf(this, &buf[len256], len - len256);
-
-       DoC_Command(this, NAND_CMD_PAGEPROG, 0);
-       DoC_Command(this, NAND_CMD_STATUS, 0);
-       /* DoC_WaitReady() is implicit in DoC_Command */
-
-       dummy = ReadDOC(docptr, CDSNSlowIO);
-       DoC_Delay(this, 2);
-
-       if (ReadDOC_(docptr, this->ioreg) & 1) {
-               puts ("Error programming oob data\n");
-               /* There was an error */
-               *retlen = 0;
-               return DOC_EIO;
-       }
-
-       *retlen = len;
-       return 0;
-
-}
-
-int doc_erase(struct DiskOnChip* this, loff_t ofs, size_t len)
-{
-       volatile int dummy;
-       unsigned long docptr;
-       struct Nand *mychip;
-
-       if (ofs & (this->erasesize-1) || len & (this->erasesize-1)) {
-               puts ("Offset and size must be sector aligned\n");
-               return DOC_EINVAL;
-       }
-
-       docptr = this->virtadr;
-
-       /* FIXME: Do this in the background. Use timers or schedule_task() */
-       while(len) {
-               mychip = &this->chips[shr(ofs, this->chipshift)];
-
-               if (this->curfloor != mychip->floor) {
-                       DoC_SelectFloor(this, mychip->floor);
-                       DoC_SelectChip(this, mychip->chip);
-               } else if (this->curchip != mychip->chip) {
-                       DoC_SelectChip(this, mychip->chip);
-               }
-               this->curfloor = mychip->floor;
-               this->curchip = mychip->chip;
-
-               DoC_Command(this, NAND_CMD_ERASE1, 0);
-               DoC_Address(this, ADDR_PAGE, ofs, 0, 0);
-               DoC_Command(this, NAND_CMD_ERASE2, 0);
-
-               DoC_Command(this, NAND_CMD_STATUS, CDSN_CTRL_WP);
-
-               dummy = ReadDOC(docptr, CDSNSlowIO);
-               DoC_Delay(this, 2);
-
-               if (ReadDOC_(docptr, this->ioreg) & 1) {
-                       printf("Error erasing at 0x%lx\n", (long)ofs);
-                       /* There was an error */
-                       goto callback;
-               }
-               ofs += this->erasesize;
-               len -= this->erasesize;
-       }
-
- callback:
-       return 0;
-}
-
-static inline int doccheck(unsigned long potential, unsigned long physadr)
-{
-       unsigned long window=potential;
-       unsigned char tmp, ChipID;
-#ifndef DOC_PASSIVE_PROBE
-       unsigned char tmp2;
-#endif
-
-       /* Routine copied from the Linux DOC driver */
-
-#ifdef CONFIG_SYS_DOCPROBE_55AA
-       /* Check for 0x55 0xAA signature at beginning of window,
-          this is no longer true once we remove the IPL (for Millennium */
-       if (ReadDOC(window, Sig1) != 0x55 || ReadDOC(window, Sig2) != 0xaa)
-               return 0;
-#endif /* CONFIG_SYS_DOCPROBE_55AA */
-
-#ifndef DOC_PASSIVE_PROBE
-       /* It's not possible to cleanly detect the DiskOnChip - the
-        * bootup procedure will put the device into reset mode, and
-        * it's not possible to talk to it without actually writing
-        * to the DOCControl register. So we store the current contents
-        * of the DOCControl register's location, in case we later decide
-        * that it's not a DiskOnChip, and want to put it back how we
-        * found it.
-        */
-       tmp2 = ReadDOC(window, DOCControl);
-
-       /* Reset the DiskOnChip ASIC */
-       WriteDOC(DOC_MODE_CLR_ERR | DOC_MODE_MDWREN | DOC_MODE_RESET,
-                window, DOCControl);
-       WriteDOC(DOC_MODE_CLR_ERR | DOC_MODE_MDWREN | DOC_MODE_RESET,
-                window, DOCControl);
-
-       /* Enable the DiskOnChip ASIC */
-       WriteDOC(DOC_MODE_CLR_ERR | DOC_MODE_MDWREN | DOC_MODE_NORMAL,
-                window, DOCControl);
-       WriteDOC(DOC_MODE_CLR_ERR | DOC_MODE_MDWREN | DOC_MODE_NORMAL,
-                window, DOCControl);
-#endif /* !DOC_PASSIVE_PROBE */
-
-       ChipID = ReadDOC(window, ChipID);
-
-       switch (ChipID) {
-       case DOC_ChipID_Doc2k:
-               /* Check the TOGGLE bit in the ECC register */
-               tmp = ReadDOC(window, 2k_ECCStatus) & DOC_TOGGLE_BIT;
-               if ((ReadDOC(window, 2k_ECCStatus) & DOC_TOGGLE_BIT) != tmp)
-                               return ChipID;
-               break;
-
-       case DOC_ChipID_DocMil:
-               /* Check the TOGGLE bit in the ECC register */
-               tmp = ReadDOC(window, ECCConf) & DOC_TOGGLE_BIT;
-               if ((ReadDOC(window, ECCConf) & DOC_TOGGLE_BIT) != tmp)
-                               return ChipID;
-               break;
-
-       default:
-#ifndef CONFIG_SYS_DOCPROBE_55AA
-/*
- * if the ID isn't the DoC2000 or DoCMillenium ID, so we can assume
- * the DOC is missing
- */
-# if 0
-               printf("Possible DiskOnChip with unknown ChipID %2.2X found at 0x%lx\n",
-                      ChipID, physadr);
-# endif
-#endif
-#ifndef DOC_PASSIVE_PROBE
-               /* Put back the contents of the DOCControl register, in case it's not
-                * actually a DiskOnChip.
-                */
-               WriteDOC(tmp2, window, DOCControl);
-#endif
-               return 0;
-       }
-
-       puts ("DiskOnChip failed TOGGLE test, dropping.\n");
-
-#ifndef DOC_PASSIVE_PROBE
-       /* Put back the contents of the DOCControl register: it's not a DiskOnChip */
-       WriteDOC(tmp2, window, DOCControl);
-#endif
-       return 0;
-}
-
-void doc_probe(unsigned long physadr)
-{
-       struct DiskOnChip *this = NULL;
-       int i=0, ChipID;
-
-       if ((ChipID = doccheck(physadr, physadr))) {
-
-               for (i=0; i<CONFIG_SYS_MAX_DOC_DEVICE; i++) {
-                       if (doc_dev_desc[i].ChipID == DOC_ChipID_UNKNOWN) {
-                               this = doc_dev_desc + i;
-                               break;
-                       }
-               }
-
-               if (!this) {
-                       puts ("Cannot allocate memory for data structures.\n");
-                       return;
-               }
-
-               if (curr_device == -1)
-                       curr_device = i;
-
-               memset((char *)this, 0, sizeof(struct DiskOnChip));
-
-               this->virtadr = physadr;
-               this->physadr = physadr;
-               this->ChipID = ChipID;
-
-               DoC2k_init(this);
-       } else {
-               puts ("No DiskOnChip found\n");
-       }
-}
-#else
-void doc_probe(unsigned long physadr) {}
-#endif
+/*
+ * Driver for Disk-On-Chip 2000 and Millennium
+ * (c) 1999 Machine Vision Holdings, Inc.
+ * (c) 1999, 2000 David Woodhouse <dwmw2@infradead.org>
+ *
+ * $Id: cmd_doc.c,v 1.1.1.1 2009/03/25 22:21:56 kenagy Exp $
+ */
+
+#include <common.h>
+#include <config.h>
+#include <command.h>
+#include <malloc.h>
+#include <asm/io.h>
+#include <linux/mtd/nftl.h>
+#include <linux/mtd/doc2000.h>
+
+/*
+ * ! BROKEN !
+ *
+ * TODO: must be implemented and tested by someone with HW
+ */
+#if 0
+#ifdef CONFIG_SYS_DOC_SUPPORT_2000
+#define DoC_is_2000(doc) (doc->ChipID == DOC_ChipID_Doc2k)
+#else
+#define DoC_is_2000(doc) (0)
+#endif
+
+#ifdef CONFIG_SYS_DOC_SUPPORT_MILLENNIUM
+#define DoC_is_Millennium(doc) (doc->ChipID == DOC_ChipID_DocMil)
+#else
+#define DoC_is_Millennium(doc) (0)
+#endif
+
+/* CONFIG_SYS_DOC_PASSIVE_PROBE:
+   In order to ensure that the BIOS checksum is correct at boot time, and
+   hence that the onboard BIOS extension gets executed, the DiskOnChip
+   goes into reset mode when it is read sequentially: all registers
+   return 0xff until the chip is woken up again by writing to the
+   DOCControl register.
+
+   Unfortunately, this means that the probe for the DiskOnChip is unsafe,
+   because one of the first things it does is write to where it thinks
+   the DOCControl register should be - which may well be shared memory
+   for another device. I've had machines which lock up when this is
+   attempted. Hence the possibility to do a passive probe, which will fail
+   to detect a chip in reset mode, but is at least guaranteed not to lock
+   the machine.
+
+   If you have this problem, uncomment the following line:
+#define CONFIG_SYS_DOC_PASSIVE_PROBE
+*/
+
+#undef DOC_DEBUG
+#undef ECC_DEBUG
+#undef PSYCHO_DEBUG
+#undef NFTL_DEBUG
+
+static struct DiskOnChip doc_dev_desc[CONFIG_SYS_MAX_DOC_DEVICE];
+
+/* Current DOC Device  */
+static int curr_device = -1;
+
+/* Supported NAND flash devices */
+static struct nand_flash_dev nand_flash_ids[] = {
+       {"Toshiba TC5816BDC",     NAND_MFR_TOSHIBA, 0x64, 21, 1, 2, 0x1000, 0},
+       {"Toshiba TC5832DC",      NAND_MFR_TOSHIBA, 0x6b, 22, 0, 2, 0x2000, 0},
+       {"Toshiba TH58V128DC",    NAND_MFR_TOSHIBA, 0x73, 24, 0, 2, 0x4000, 0},
+       {"Toshiba TC58256FT/DC",  NAND_MFR_TOSHIBA, 0x75, 25, 0, 2, 0x4000, 0},
+       {"Toshiba TH58512FT",     NAND_MFR_TOSHIBA, 0x76, 26, 0, 3, 0x4000, 0},
+       {"Toshiba TC58V32DC",     NAND_MFR_TOSHIBA, 0xe5, 22, 0, 2, 0x2000, 0},
+       {"Toshiba TC58V64AFT/DC", NAND_MFR_TOSHIBA, 0xe6, 23, 0, 2, 0x2000, 0},
+       {"Toshiba TC58V16BDC",    NAND_MFR_TOSHIBA, 0xea, 21, 1, 2, 0x1000, 0},
+       {"Toshiba TH58100FT",     NAND_MFR_TOSHIBA, 0x79, 27, 0, 3, 0x4000, 0},
+       {"Samsung KM29N16000",    NAND_MFR_SAMSUNG, 0x64, 21, 1, 2, 0x1000, 0},
+       {"Samsung unknown 4Mb",   NAND_MFR_SAMSUNG, 0x6b, 22, 0, 2, 0x2000, 0},
+       {"Samsung KM29U128T",     NAND_MFR_SAMSUNG, 0x73, 24, 0, 2, 0x4000, 0},
+       {"Samsung KM29U256T",     NAND_MFR_SAMSUNG, 0x75, 25, 0, 2, 0x4000, 0},
+       {"Samsung unknown 64Mb",  NAND_MFR_SAMSUNG, 0x76, 26, 0, 3, 0x4000, 0},
+       {"Samsung KM29W32000",    NAND_MFR_SAMSUNG, 0xe3, 22, 0, 2, 0x2000, 0},
+       {"Samsung unknown 4Mb",   NAND_MFR_SAMSUNG, 0xe5, 22, 0, 2, 0x2000, 0},
+       {"Samsung KM29U64000",    NAND_MFR_SAMSUNG, 0xe6, 23, 0, 2, 0x2000, 0},
+       {"Samsung KM29W16000",    NAND_MFR_SAMSUNG, 0xea, 21, 1, 2, 0x1000, 0},
+       {"Samsung K9F5616Q0C",    NAND_MFR_SAMSUNG, 0x45, 25, 0, 2, 0x4000, 1},
+       {"Samsung K9K1216Q0C",    NAND_MFR_SAMSUNG, 0x46, 26, 0, 3, 0x4000, 1},
+       {"Samsung K9F1G08U0M",    NAND_MFR_SAMSUNG, 0xf1, 27, 0, 2, 0, 0},
+       {NULL,}
+};
+
+/* ------------------------------------------------------------------------- */
+
+int do_doc (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+    int rcode = 0;
+
+    switch (argc) {
+    case 0:
+    case 1:
+       cmd_usage(cmdtp);
+       return 1;
+    case 2:
+       if (strcmp(argv[1],"info") == 0) {
+               int i;
+
+               putc ('\n');
+
+               for (i=0; i<CONFIG_SYS_MAX_DOC_DEVICE; ++i) {
+                       if(doc_dev_desc[i].ChipID == DOC_ChipID_UNKNOWN)
+                               continue; /* list only known devices */
+                       printf ("Device %d: ", i);
+                       doc_print(&doc_dev_desc[i]);
+               }
+               return 0;
+
+       } else if (strcmp(argv[1],"device") == 0) {
+               if ((curr_device < 0) || (curr_device >= CONFIG_SYS_MAX_DOC_DEVICE)) {
+                       puts ("\nno devices available\n");
+                       return 1;
+               }
+               printf ("\nDevice %d: ", curr_device);
+               doc_print(&doc_dev_desc[curr_device]);
+               return 0;
+       }
+       cmd_usage(cmdtp);
+       return 1;
+    case 3:
+       if (strcmp(argv[1],"device") == 0) {
+               int dev = (int)simple_strtoul(argv[2], NULL, 10);
+
+               printf ("\nDevice %d: ", dev);
+               if (dev >= CONFIG_SYS_MAX_DOC_DEVICE) {
+                       puts ("unknown device\n");
+                       return 1;
+               }
+               doc_print(&doc_dev_desc[dev]);
+               /*doc_print (dev);*/
+
+               if (doc_dev_desc[dev].ChipID == DOC_ChipID_UNKNOWN) {
+                       return 1;
+               }
+
+               curr_device = dev;
+
+               puts ("... is now current device\n");
+
+               return 0;
+       }
+
+       cmd_usage(cmdtp);
+       return 1;
+    default:
+       /* at least 4 args */
+
+       if (strcmp(argv[1],"read") == 0 || strcmp(argv[1],"write") == 0) {
+               ulong addr = simple_strtoul(argv[2], NULL, 16);
+               ulong off  = simple_strtoul(argv[3], NULL, 16);
+               ulong size = simple_strtoul(argv[4], NULL, 16);
+               int cmd    = (strcmp(argv[1],"read") == 0);
+               int ret, total;
+
+               printf ("\nDOC %s: device %d offset %ld, size %ld ... ",
+                       cmd ? "read" : "write", curr_device, off, size);
+
+               ret = doc_rw(doc_dev_desc + curr_device, cmd, off, size,
+                            (size_t *)&total, (u_char*)addr);
+
+               printf ("%d bytes %s: %s\n", total, cmd ? "read" : "write",
+                       ret ? "ERROR" : "OK");
+
+               return ret;
+       } else if (strcmp(argv[1],"erase") == 0) {
+               ulong off = simple_strtoul(argv[2], NULL, 16);
+               ulong size = simple_strtoul(argv[3], NULL, 16);
+               int ret;
+
+               printf ("\nDOC erase: device %d offset %ld, size %ld ... ",
+                       curr_device, off, size);
+
+               ret = doc_erase (doc_dev_desc + curr_device, off, size);
+
+               printf("%s\n", ret ? "ERROR" : "OK");
+
+               return ret;
+       } else {
+               cmd_usage(cmdtp);
+               rcode = 1;
+       }
+
+       return rcode;
+    }
+}
+U_BOOT_CMD(
+       doc,    5,      1,      do_doc,
+       "Disk-On-Chip sub-system",
+       "info  - show available DOC devices\n"
+       "doc device [dev] - show or set current device\n"
+       "doc read  addr off size\n"
+       "doc write addr off size - read/write `size'"
+       " bytes starting at offset `off'\n"
+       "    to/from memory address `addr'\n"
+       "doc erase off size - erase `size' bytes of DOC from offset `off'\n"
+);
+
+int do_docboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+       char *boot_device = NULL;
+       char *ep;
+       int dev;
+       ulong cnt;
+       ulong addr;
+       ulong offset = 0;
+       image_header_t *hdr;
+       int rcode = 0;
+#if defined(CONFIG_FIT)
+       const void *fit_hdr = NULL;
+#endif
+
+       show_boot_progress (34);
+       switch (argc) {
+       case 1:
+               addr = CONFIG_SYS_LOAD_ADDR;
+               boot_device = getenv ("bootdevice");
+               break;
+       case 2:
+               addr = simple_strtoul(argv[1], NULL, 16);
+               boot_device = getenv ("bootdevice");
+               break;
+       case 3:
+               addr = simple_strtoul(argv[1], NULL, 16);
+               boot_device = argv[2];
+               break;
+       case 4:
+               addr = simple_strtoul(argv[1], NULL, 16);
+               boot_device = argv[2];
+               offset = simple_strtoul(argv[3], NULL, 16);
+               break;
+       default:
+               cmd_usage(cmdtp);
+               show_boot_progress (-35);
+               return 1;
+       }
+
+       show_boot_progress (35);
+       if (!boot_device) {
+               puts ("\n** No boot device **\n");
+               show_boot_progress (-36);
+               return 1;
+       }
+       show_boot_progress (36);
+
+       dev = simple_strtoul(boot_device, &ep, 16);
+
+       if ((dev >= CONFIG_SYS_MAX_DOC_DEVICE) ||
+           (doc_dev_desc[dev].ChipID == DOC_ChipID_UNKNOWN)) {
+               printf ("\n** Device %d not available\n", dev);
+               show_boot_progress (-37);
+               return 1;
+       }
+       show_boot_progress (37);
+
+       printf ("\nLoading from device %d: %s at 0x%lX (offset 0x%lX)\n",
+               dev, doc_dev_desc[dev].name, doc_dev_desc[dev].physadr,
+               offset);
+
+       if (doc_rw (doc_dev_desc + dev, 1, offset,
+                   SECTORSIZE, NULL, (u_char *)addr)) {
+               printf ("** Read error on %d\n", dev);
+               show_boot_progress (-38);
+               return 1;
+       }
+       show_boot_progress (38);
+
+       switch (genimg_get_format ((void *)addr)) {
+       case IMAGE_FORMAT_LEGACY:
+               hdr = (image_header_t *)addr;
+
+               image_print_contents (hdr);
+
+               cnt = image_get_image_size (hdr);
+               break;
+#if defined(CONFIG_FIT)
+       case IMAGE_FORMAT_FIT:
+               fit_hdr = (const void *)addr;
+               puts ("Fit image detected...\n");
+
+               cnt = fit_get_size (fit_hdr);
+               break;
+#endif
+       default:
+               show_boot_progress (-39);
+               puts ("** Unknown image type\n");
+               return 1;
+       }
+       show_boot_progress (39);
+
+       cnt -= SECTORSIZE;
+       if (doc_rw (doc_dev_desc + dev, 1, offset + SECTORSIZE, cnt,
+                   NULL, (u_char *)(addr+SECTORSIZE))) {
+               printf ("** Read error on %d\n", dev);
+               show_boot_progress (-40);
+               return 1;
+       }
+       show_boot_progress (40);
+
+#if defined(CONFIG_FIT)
+       /* This cannot be done earlier, we need complete FIT image in RAM first */
+       if (genimg_get_format ((void *)addr) == IMAGE_FORMAT_FIT) {
+               if (!fit_check_format (fit_hdr)) {
+                       show_boot_progress (-130);
+                       puts ("** Bad FIT image format\n");
+                       return 1;
+               }
+               show_boot_progress (131);
+               fit_print_contents (fit_hdr);
+       }
+#endif
+
+       /* Loading ok, update default load address */
+
+       load_addr = addr;
+
+       /* Check if we should attempt an auto-start */
+       if (((ep = getenv("autostart")) != NULL) && (strcmp(ep,"yes") == 0)) {
+               char *local_args[2];
+               extern int do_bootm (cmd_tbl_t *, int, int, char *[]);
+
+               local_args[0] = argv[0];
+               local_args[1] = NULL;
+
+               printf ("Automatic boot of image at addr 0x%08lX ...\n", addr);
+
+               do_bootm (cmdtp, 0, 1, local_args);
+               rcode = 1;
+       }
+       return rcode;
+}
+
+U_BOOT_CMD(
+       docboot,        4,      1,      do_docboot,
+       "boot from DOC device",
+       "loadAddr dev\n"
+);
+
+int doc_rw (struct DiskOnChip* this, int cmd,
+           loff_t from, size_t len,
+           size_t * retlen, u_char * buf)
+{
+       int noecc, ret = 0, n, total = 0;
+       char eccbuf[6];
+
+       while(len) {
+               /* The ECC will not be calculated correctly if
+                  less than 512 is written or read */
+               noecc = (from != (from | 0x1ff) + 1) || (len < 0x200);
+
+               if (cmd)
+                       ret = doc_read_ecc(this, from, len,
+                                          (size_t *)&n, (u_char*)buf,
+                                          noecc ? (uchar *)NULL : (uchar *)eccbuf);
+               else
+                       ret = doc_write_ecc(this, from, len,
+                                           (size_t *)&n, (u_char*)buf,
+                                           noecc ? (uchar *)NULL : (uchar *)eccbuf);
+
+               if (ret)
+                       break;
+
+               from  += n;
+               buf   += n;
+               total += n;
+               len   -= n;
+       }
+
+       if (retlen)
+               *retlen = total;
+
+       return ret;
+}
+
+void doc_print(struct DiskOnChip *this) {
+       printf("%s at 0x%lX,\n"
+              "\t  %d chip%s %s, size %d MB, \n"
+              "\t  total size %ld MB, sector size %ld kB\n",
+              this->name, this->physadr, this->numchips,
+              this->numchips>1 ? "s" : "", this->chips_name,
+              1 << (this->chipshift - 20),
+              this->totlen >> 20, this->erasesize >> 10);
+
+       if (this->nftl_found) {
+               struct NFTLrecord *nftl = &this->nftl;
+               unsigned long bin_size, flash_size;
+
+               bin_size = nftl->nb_boot_blocks * this->erasesize;
+               flash_size = (nftl->nb_blocks - nftl->nb_boot_blocks) * this->erasesize;
+
+               printf("\t  NFTL boot record:\n"
+                      "\t    Binary partition: size %ld%s\n"
+                      "\t    Flash disk partition: size %ld%s, offset 0x%lx\n",
+                      bin_size > (1 << 20) ? bin_size >> 20 : bin_size >> 10,
+                      bin_size > (1 << 20) ? "MB" : "kB",
+                      flash_size > (1 << 20) ? flash_size >> 20 : flash_size >> 10,
+                      flash_size > (1 << 20) ? "MB" : "kB", bin_size);
+       } else {
+               puts ("\t  No NFTL boot record found.\n");
+       }
+}
+
+/* ------------------------------------------------------------------------- */
+
+/* This function is needed to avoid calls of the __ashrdi3 function. */
+static int shr(int val, int shift) {
+       return val >> shift;
+}
+
+/* Perform the required delay cycles by reading from the appropriate register */
+static void DoC_Delay(struct DiskOnChip *doc, unsigned short cycles)
+{
+       volatile char dummy;
+       int i;
+
+       for (i = 0; i < cycles; i++) {
+               if (DoC_is_Millennium(doc))
+                       dummy = ReadDOC(doc->virtadr, NOP);
+               else
+                       dummy = ReadDOC(doc->virtadr, DOCStatus);
+       }
+
+}
+
+/* DOC_WaitReady: Wait for RDY line to be asserted by the flash chip */
+static int _DoC_WaitReady(struct DiskOnChip *doc)
+{
+       unsigned long docptr = doc->virtadr;
+       unsigned long start = get_timer(0);
+
+#ifdef PSYCHO_DEBUG
+       puts ("_DoC_WaitReady called for out-of-line wait\n");
+#endif
+
+       /* Out-of-line routine to wait for chip response */
+       while (!(ReadDOC(docptr, CDSNControl) & CDSN_CTRL_FR_B)) {
+#ifdef CONFIG_SYS_DOC_SHORT_TIMEOUT
+               /* it seems that after a certain time the DoC deasserts
+                * the CDSN_CTRL_FR_B although it is not ready...
+                * using a short timout solve this (timer increments every ms) */
+               if (get_timer(start) > 10) {
+                       return DOC_ETIMEOUT;
+               }
+#else
+               if (get_timer(start) > 10 * 1000) {
+                       puts ("_DoC_WaitReady timed out.\n");
+                       return DOC_ETIMEOUT;
+               }
+#endif
+               udelay(1);
+       }
+
+       return 0;
+}
+
+static int DoC_WaitReady(struct DiskOnChip *doc)
+{
+       unsigned long docptr = doc->virtadr;
+       /* This is inline, to optimise the common case, where it's ready instantly */
+       int ret = 0;
+
+       /* 4 read form NOP register should be issued in prior to the read from CDSNControl
+          see Software Requirement 11.4 item 2. */
+       DoC_Delay(doc, 4);
+
+       if (!(ReadDOC(docptr, CDSNControl) & CDSN_CTRL_FR_B))
+               /* Call the out-of-line routine to wait */
+               ret = _DoC_WaitReady(doc);
+
+       /* issue 2 read from NOP register after reading from CDSNControl register
+          see Software Requirement 11.4 item 2. */
+       DoC_Delay(doc, 2);
+
+       return ret;
+}
+
+/* DoC_Command: Send a flash command to the flash chip through the CDSN Slow IO register to
+   bypass the internal pipeline. Each of 4 delay cycles (read from the NOP register) is
+   required after writing to CDSN Control register, see Software Requirement 11.4 item 3. */
+
+static inline int DoC_Command(struct DiskOnChip *doc, unsigned char command,
+                             unsigned char xtraflags)
+{
+       unsigned long docptr = doc->virtadr;
+
+       if (DoC_is_2000(doc))
+               xtraflags |= CDSN_CTRL_FLASH_IO;
+
+       /* Assert the CLE (Command Latch Enable) line to the flash chip */
+       WriteDOC(xtraflags | CDSN_CTRL_CLE | CDSN_CTRL_CE, docptr, CDSNControl);
+       DoC_Delay(doc, 4);      /* Software requirement 11.4.3 for Millennium */
+
+       if (DoC_is_Millennium(doc))
+               WriteDOC(command, docptr, CDSNSlowIO);
+
+       /* Send the command */
+       WriteDOC_(command, docptr, doc->ioreg);
+
+       /* Lower the CLE line */
+       WriteDOC(xtraflags | CDSN_CTRL_CE, docptr, CDSNControl);
+       DoC_Delay(doc, 4);      /* Software requirement 11.4.3 for Millennium */
+
+       /* Wait for the chip to respond - Software requirement 11.4.1 (extended for any command) */
+       return DoC_WaitReady(doc);
+}
+
+/* DoC_Address: Set the current address for the flash chip through the CDSN Slow IO register to
+   bypass the internal pipeline. Each of 4 delay cycles (read from the NOP register) is
+   required after writing to CDSN Control register, see Software Requirement 11.4 item 3. */
+
+static int DoC_Address(struct DiskOnChip *doc, int numbytes, unsigned long ofs,
+                      unsigned char xtraflags1, unsigned char xtraflags2)
+{
+       unsigned long docptr;
+       int i;
+
+       docptr = doc->virtadr;
+
+       if (DoC_is_2000(doc))
+               xtraflags1 |= CDSN_CTRL_FLASH_IO;
+
+       /* Assert the ALE (Address Latch Enable) line to the flash chip */
+       WriteDOC(xtraflags1 | CDSN_CTRL_ALE | CDSN_CTRL_CE, docptr, CDSNControl);
+
+       DoC_Delay(doc, 4);      /* Software requirement 11.4.3 for Millennium */
+
+       /* Send the address */
+       /* Devices with 256-byte page are addressed as:
+          Column (bits 0-7), Page (bits 8-15, 16-23, 24-31)
+          * there is no device on the market with page256
+          and more than 24 bits.
+          Devices with 512-byte page are addressed as:
+          Column (bits 0-7), Page (bits 9-16, 17-24, 25-31)
+          * 25-31 is sent only if the chip support it.
+          * bit 8 changes the read command to be sent
+          (NAND_CMD_READ0 or NAND_CMD_READ1).
+        */
+
+       if (numbytes == ADDR_COLUMN || numbytes == ADDR_COLUMN_PAGE) {
+               if (DoC_is_Millennium(doc))
+                       WriteDOC(ofs & 0xff, docptr, CDSNSlowIO);
+               WriteDOC_(ofs & 0xff, docptr, doc->ioreg);
+       }
+
+       if (doc->page256) {
+               ofs = ofs >> 8;
+       } else {
+               ofs = ofs >> 9;
+       }
+
+       if (numbytes == ADDR_PAGE || numbytes == ADDR_COLUMN_PAGE) {
+               for (i = 0; i < doc->pageadrlen; i++, ofs = ofs >> 8) {
+                       if (DoC_is_Millennium(doc))
+                               WriteDOC(ofs & 0xff, docptr, CDSNSlowIO);
+                       WriteDOC_(ofs & 0xff, docptr, doc->ioreg);
+               }
+       }
+
+       DoC_Delay(doc, 2);      /* Needed for some slow flash chips. mf. */
+
+       /* FIXME: The SlowIO's for millennium could be replaced by
+          a single WritePipeTerm here. mf. */
+
+       /* Lower the ALE line */
+       WriteDOC(xtraflags1 | xtraflags2 | CDSN_CTRL_CE, docptr,
+                CDSNControl);
+
+       DoC_Delay(doc, 4);      /* Software requirement 11.4.3 for Millennium */
+
+       /* Wait for the chip to respond - Software requirement 11.4.1 */
+       return DoC_WaitReady(doc);
+}
+
+/* Read a buffer from DoC, taking care of Millennium oddities */
+static void DoC_ReadBuf(struct DiskOnChip *doc, u_char * buf, int len)
+{
+       volatile int dummy;
+       int modulus = 0xffff;
+       unsigned long docptr;
+       int i;
+
+       docptr = doc->virtadr;
+
+       if (len <= 0)
+               return;
+
+       if (DoC_is_Millennium(doc)) {
+               /* Read the data via the internal pipeline through CDSN IO register,
+                  see Pipelined Read Operations 11.3 */
+               dummy = ReadDOC(docptr, ReadPipeInit);
+
+               /* Millennium should use the LastDataRead register - Pipeline Reads */
+               len--;
+
+               /* This is needed for correctly ECC calculation */
+               modulus = 0xff;
+       }
+
+       for (i = 0; i < len; i++)
+               buf[i] = ReadDOC_(docptr, doc->ioreg + (i & modulus));
+
+       if (DoC_is_Millennium(doc)) {
+               buf[i] = ReadDOC(docptr, LastDataRead);
+       }
+}
+
+/* Write a buffer to DoC, taking care of Millennium oddities */
+static void DoC_WriteBuf(struct DiskOnChip *doc, const u_char * buf, int len)
+{
+       unsigned long docptr;
+       int i;
+
+       docptr = doc->virtadr;
+
+       if (len <= 0)
+               return;
+
+       for (i = 0; i < len; i++)
+               WriteDOC_(buf[i], docptr, doc->ioreg + i);
+
+       if (DoC_is_Millennium(doc)) {
+               WriteDOC(0x00, docptr, WritePipeTerm);
+       }
+}
+
+
+/* DoC_SelectChip: Select a given flash chip within the current floor */
+
+static inline int DoC_SelectChip(struct DiskOnChip *doc, int chip)
+{
+       unsigned long docptr = doc->virtadr;
+
+       /* Software requirement 11.4.4 before writing DeviceSelect */
+       /* Deassert the CE line to eliminate glitches on the FCE# outputs */
+       WriteDOC(CDSN_CTRL_WP, docptr, CDSNControl);
+       DoC_Delay(doc, 4);      /* Software requirement 11.4.3 for Millennium */
+
+       /* Select the individual flash chip requested */
+       WriteDOC(chip, docptr, CDSNDeviceSelect);
+       DoC_Delay(doc, 4);
+
+       /* Reassert the CE line */
+       WriteDOC(CDSN_CTRL_CE | CDSN_CTRL_FLASH_IO | CDSN_CTRL_WP, docptr,
+                CDSNControl);
+       DoC_Delay(doc, 4);      /* Software requirement 11.4.3 for Millennium */
+
+       /* Wait for it to be ready */
+       return DoC_WaitReady(doc);
+}
+
+/* DoC_SelectFloor: Select a given floor (bank of flash chips) */
+
+static inline int DoC_SelectFloor(struct DiskOnChip *doc, int floor)
+{
+       unsigned long docptr = doc->virtadr;
+
+       /* Select the floor (bank) of chips required */
+       WriteDOC(floor, docptr, FloorSelect);
+
+       /* Wait for the chip to be ready */
+       return DoC_WaitReady(doc);
+}
+
+/* DoC_IdentChip: Identify a given NAND chip given {floor,chip} */
+
+static int DoC_IdentChip(struct DiskOnChip *doc, int floor, int chip)
+{
+       int mfr, id, i;
+       volatile char dummy;
+
+       /* Page in the required floor/chip */
+       DoC_SelectFloor(doc, floor);
+       DoC_SelectChip(doc, chip);
+
+       /* Reset the chip */
+       if (DoC_Command(doc, NAND_CMD_RESET, CDSN_CTRL_WP)) {
+#ifdef DOC_DEBUG
+               printf("DoC_Command (reset) for %d,%d returned true\n",
+                      floor, chip);
+#endif
+               return 0;
+       }
+
+
+       /* Read the NAND chip ID: 1. Send ReadID command */
+       if (DoC_Command(doc, NAND_CMD_READID, CDSN_CTRL_WP)) {
+#ifdef DOC_DEBUG
+               printf("DoC_Command (ReadID) for %d,%d returned true\n",
+                      floor, chip);
+#endif
+               return 0;
+       }
+
+       /* Read the NAND chip ID: 2. Send address byte zero */
+       DoC_Address(doc, ADDR_COLUMN, 0, CDSN_CTRL_WP, 0);
+
+       /* Read the manufacturer and device id codes from the device */
+
+       /* CDSN Slow IO register see Software Requirement 11.4 item 5. */
+       dummy = ReadDOC(doc->virtadr, CDSNSlowIO);
+       DoC_Delay(doc, 2);
+       mfr = ReadDOC_(doc->virtadr, doc->ioreg);
+
+       /* CDSN Slow IO register see Software Requirement 11.4 item 5. */
+       dummy = ReadDOC(doc->virtadr, CDSNSlowIO);
+       DoC_Delay(doc, 2);
+       id = ReadDOC_(doc->virtadr, doc->ioreg);
+
+       /* No response - return failure */
+       if (mfr == 0xff || mfr == 0)
+               return 0;
+
+       /* Check it's the same as the first chip we identified.
+        * M-Systems say that any given DiskOnChip device should only
+        * contain _one_ type of flash part, although that's not a
+        * hardware restriction. */
+       if (doc->mfr) {
+               if (doc->mfr == mfr && doc->id == id)
+                       return 1;       /* This is another the same the first */
+               else
+                       printf("Flash chip at floor %d, chip %d is different:\n",
+                              floor, chip);
+       }
+
+       /* Print and store the manufacturer and ID codes. */
+       for (i = 0; nand_flash_ids[i].name != NULL; i++) {
+               if (mfr == nand_flash_ids[i].manufacture_id &&
+                   id == nand_flash_ids[i].model_id) {
+#ifdef DOC_DEBUG
+                       printf("Flash chip found: Manufacturer ID: %2.2X, "
+                              "Chip ID: %2.2X (%s)\n", mfr, id,
+                              nand_flash_ids[i].name);
+#endif
+                       if (!doc->mfr) {
+                               doc->mfr = mfr;
+                               doc->id = id;
+                               doc->chipshift =
+                                   nand_flash_ids[i].chipshift;
+                               doc->page256 = nand_flash_ids[i].page256;
+                               doc->pageadrlen =
+                                   nand_flash_ids[i].pageadrlen;
+                               doc->erasesize =
+                                   nand_flash_ids[i].erasesize;
+                               doc->chips_name =
+                                   nand_flash_ids[i].name;
+                               return 1;
+                       }
+                       return 0;
+               }
+       }
+
+
+#ifdef DOC_DEBUG
+       /* We haven't fully identified the chip. Print as much as we know. */
+       printf("Unknown flash chip found: %2.2X %2.2X\n",
+              id, mfr);
+#endif
+
+       return 0;
+}
+
+/* DoC_ScanChips: Find all NAND chips present in a DiskOnChip, and identify them */
+
+static void DoC_ScanChips(struct DiskOnChip *this)
+{
+       int floor, chip;
+       int numchips[MAX_FLOORS];
+       int maxchips = MAX_CHIPS;
+       int ret = 1;
+
+       this->numchips = 0;
+       this->mfr = 0;
+       this->id = 0;
+
+       if (DoC_is_Millennium(this))
+               maxchips = MAX_CHIPS_MIL;
+
+       /* For each floor, find the number of valid chips it contains */
+       for (floor = 0; floor < MAX_FLOORS; floor++) {
+               ret = 1;
+               numchips[floor] = 0;
+               for (chip = 0; chip < maxchips && ret != 0; chip++) {
+
+                       ret = DoC_IdentChip(this, floor, chip);
+                       if (ret) {
+                               numchips[floor]++;
+                               this->numchips++;
+                       }
+               }
+       }
+
+       /* If there are none at all that we recognise, bail */
+       if (!this->numchips) {
+               puts ("No flash chips recognised.\n");
+               return;
+       }
+
+       /* Allocate an array to hold the information for each chip */
+       this->chips = malloc(sizeof(struct Nand) * this->numchips);
+       if (!this->chips) {
+               puts ("No memory for allocating chip info structures\n");
+               return;
+       }
+
+       ret = 0;
+
+       /* Fill out the chip array with {floor, chipno} for each
+        * detected chip in the device. */
+       for (floor = 0; floor < MAX_FLOORS; floor++) {
+               for (chip = 0; chip < numchips[floor]; chip++) {
+                       this->chips[ret].floor = floor;
+                       this->chips[ret].chip = chip;
+                       this->chips[ret].curadr = 0;
+                       this->chips[ret].curmode = 0x50;
+                       ret++;
+               }
+       }
+
+       /* Calculate and print the total size of the device */
+       this->totlen = this->numchips * (1 << this->chipshift);
+
+#ifdef DOC_DEBUG
+       printf("%d flash chips found. Total DiskOnChip size: %ld MB\n",
+              this->numchips, this->totlen >> 20);
+#endif
+}
+
+/* find_boot_record: Find the NFTL Media Header and its Spare copy which contains the
+ *     various device information of the NFTL partition and Bad Unit Table. Update
+ *     the ReplUnitTable[] table accroding to the Bad Unit Table. ReplUnitTable[]
+ *     is used for management of Erase Unit in other routines in nftl.c and nftlmount.c
+ */
+static int find_boot_record(struct NFTLrecord *nftl)
+{
+       struct nftl_uci1 h1;
+       struct nftl_oob oob;
+       unsigned int block, boot_record_count = 0;
+       int retlen;
+       u8 buf[SECTORSIZE];
+       struct NFTLMediaHeader *mh = &nftl->MediaHdr;
+       unsigned int i;
+
+       nftl->MediaUnit = BLOCK_NIL;
+       nftl->SpareMediaUnit = BLOCK_NIL;
+
+       /* search for a valid boot record */
+       for (block = 0; block < nftl->nb_blocks; block++) {
+               int ret;
+
+               /* Check for ANAND header first. Then can whinge if it's found but later
+                  checks fail */
+               if ((ret = doc_read_ecc(nftl->mtd, block * nftl->EraseSize, SECTORSIZE,
+                                       (size_t *)&retlen, buf, NULL))) {
+                       static int warncount = 5;
+
+                       if (warncount) {
+                               printf("Block read at 0x%x failed\n", block * nftl->EraseSize);
+                               if (!--warncount)
+                                       puts ("Further failures for this block will not be printed\n");
+                       }
+                       continue;
+               }
+
+               if (retlen < 6 || memcmp(buf, "ANAND", 6)) {
+                       /* ANAND\0 not found. Continue */
+#ifdef PSYCHO_DEBUG
+                       printf("ANAND header not found at 0x%x\n", block * nftl->EraseSize);
+#endif
+                       continue;
+               }
+
+#ifdef NFTL_DEBUG
+               printf("ANAND header found at 0x%x\n", block * nftl->EraseSize);
+#endif
+
+               /* To be safer with BIOS, also use erase mark as discriminant */
+               if ((ret = doc_read_oob(nftl->mtd, block * nftl->EraseSize + SECTORSIZE + 8,
+                               8, (size_t *)&retlen, (uchar *)&h1) < 0)) {
+#ifdef NFTL_DEBUG
+                       printf("ANAND header found at 0x%x, but OOB data read failed\n",
+                              block * nftl->EraseSize);
+#endif
+                       continue;
+               }
+
+               /* OK, we like it. */
+
+               if (boot_record_count) {
+                       /* We've already processed one. So we just check if
+                          this one is the same as the first one we found */
+                       if (memcmp(mh, buf, sizeof(struct NFTLMediaHeader))) {
+#ifdef NFTL_DEBUG
+                               printf("NFTL Media Headers at 0x%x and 0x%x disagree.\n",
+                                      nftl->MediaUnit * nftl->EraseSize, block * nftl->EraseSize);
+#endif
+                               /* if (debug) Print both side by side */
+                               return -1;
+                       }
+                       if (boot_record_count == 1)
+                               nftl->SpareMediaUnit = block;
+
+                       boot_record_count++;
+                       continue;
+               }
+
+               /* This is the first we've seen. Copy the media header structure into place */
+               memcpy(mh, buf, sizeof(struct NFTLMediaHeader));
+
+               /* Do some sanity checks on it */
+               if (mh->UnitSizeFactor == 0) {
+#ifdef NFTL_DEBUG
+                       puts ("UnitSizeFactor 0x00 detected.\n"
+                             "This violates the spec but we think we know what it means...\n");
+#endif
+               } else if (mh->UnitSizeFactor != 0xff) {
+                       printf ("Sorry, we don't support UnitSizeFactor "
+                             "of != 1 yet.\n");
+                       return -1;
+               }
+
+               nftl->nb_boot_blocks = le16_to_cpu(mh->FirstPhysicalEUN);
+               if ((nftl->nb_boot_blocks + 2) >= nftl->nb_blocks) {
+                       printf ("NFTL Media Header sanity check failed:\n"
+                               "nb_boot_blocks (%d) + 2 > nb_blocks (%d)\n",
+                               nftl->nb_boot_blocks, nftl->nb_blocks);
+                       return -1;
+               }
+
+               nftl->numvunits = le32_to_cpu(mh->FormattedSize) / nftl->EraseSize;
+               if (nftl->numvunits > (nftl->nb_blocks - nftl->nb_boot_blocks - 2)) {
+                       printf ("NFTL Media Header sanity check failed:\n"
+                               "numvunits (%d) > nb_blocks (%d) - nb_boot_blocks(%d) - 2\n",
+                               nftl->numvunits,
+                               nftl->nb_blocks,
+                               nftl->nb_boot_blocks);
+                       return -1;
+               }
+
+               nftl->nr_sects  = nftl->numvunits * (nftl->EraseSize / SECTORSIZE);
+
+               /* If we're not using the last sectors in the device for some reason,
+                  reduce nb_blocks accordingly so we forget they're there */
+               nftl->nb_blocks = le16_to_cpu(mh->NumEraseUnits) + le16_to_cpu(mh->FirstPhysicalEUN);
+
+               /* read the Bad Erase Unit Table and modify ReplUnitTable[] accordingly */
+               for (i = 0; i < nftl->nb_blocks; i++) {
+                       if ((i & (SECTORSIZE - 1)) == 0) {
+                               /* read one sector for every SECTORSIZE of blocks */
+                               if ((ret = doc_read_ecc(nftl->mtd, block * nftl->EraseSize +
+                                                      i + SECTORSIZE, SECTORSIZE,
+                                                      (size_t *)&retlen, buf, (uchar *)&oob)) < 0) {
+                                       puts ("Read of bad sector table failed\n");
+                                       return -1;
+                               }
+                       }
+                       /* mark the Bad Erase Unit as RESERVED in ReplUnitTable */
+                       if (buf[i & (SECTORSIZE - 1)] != 0xff)
+                               nftl->ReplUnitTable[i] = BLOCK_RESERVED;
+               }
+
+               nftl->MediaUnit = block;
+               boot_record_count++;
+
+       } /* foreach (block) */
+
+       return boot_record_count?0:-1;
+}
+
+/* This routine is made available to other mtd code via
+ * inter_module_register.  It must only be accessed through
+ * inter_module_get which will bump the use count of this module.  The
+ * addresses passed back in mtd are valid as long as the use count of
+ * this module is non-zero, i.e. between inter_module_get and
+ * inter_module_put.  Keith Owens <kaos@ocs.com.au> 29 Oct 2000.
+ */
+static void DoC2k_init(struct DiskOnChip* this)
+{
+       struct NFTLrecord *nftl;
+
+       switch (this->ChipID) {
+       case DOC_ChipID_Doc2k:
+               this->name = "DiskOnChip 2000";
+               this->ioreg = DoC_2k_CDSN_IO;
+               break;
+       case DOC_ChipID_DocMil:
+               this->name = "DiskOnChip Millennium";
+               this->ioreg = DoC_Mil_CDSN_IO;
+               break;
+       }
+
+#ifdef DOC_DEBUG
+       printf("%s found at address 0x%lX\n", this->name,
+              this->physadr);
+#endif
+
+       this->totlen = 0;
+       this->numchips = 0;
+
+       this->curfloor = -1;
+       this->curchip = -1;
+
+       /* Ident all the chips present. */
+       DoC_ScanChips(this);
+       if ((!this->numchips) || (!this->chips))
+               return;
+
+       nftl = &this->nftl;
+
+       /* Get physical parameters */
+       nftl->EraseSize = this->erasesize;
+       nftl->nb_blocks = this->totlen / this->erasesize;
+       nftl->mtd = this;
+
+       if (find_boot_record(nftl) != 0)
+               this->nftl_found = 0;
+       else
+               this->nftl_found = 1;
+
+       printf("%s @ 0x%lX, %ld MB\n", this->name, this->physadr, this->totlen >> 20);
+}
+
+int doc_read_ecc(struct DiskOnChip* this, loff_t from, size_t len,
+                size_t * retlen, u_char * buf, u_char * eccbuf)
+{
+       unsigned long docptr;
+       struct Nand *mychip;
+       unsigned char syndrome[6];
+       volatile char dummy;
+       int i, len256 = 0, ret=0;
+
+       docptr = this->virtadr;
+
+       /* Don't allow read past end of device */
+       if (from >= this->totlen) {
+               puts ("Out of flash\n");
+               return DOC_EINVAL;
+       }
+
+       /* Don't allow a single read to cross a 512-byte block boundary */
+       if (from + len > ((from | 0x1ff) + 1))
+               len = ((from | 0x1ff) + 1) - from;
+
+       /* The ECC will not be calculated correctly if less than 512 is read */
+       if (len != 0x200 && eccbuf)
+               printf("ECC needs a full sector read (adr: %lx size %lx)\n",
+                      (long) from, (long) len);
+
+#ifdef PSYCHO_DEBUG
+       printf("DoC_Read (adr: %lx size %lx)\n", (long) from, (long) len);
+#endif
+
+       /* Find the chip which is to be used and select it */
+       mychip = &this->chips[shr(from, this->chipshift)];
+
+       if (this->curfloor != mychip->floor) {
+               DoC_SelectFloor(this, mychip->floor);
+               DoC_SelectChip(this, mychip->chip);
+       } else if (this->curchip != mychip->chip) {
+               DoC_SelectChip(this, mychip->chip);
+       }
+
+       this->curfloor = mychip->floor;
+       this->curchip = mychip->chip;
+
+       DoC_Command(this,
+                   (!this->page256
+                    && (from & 0x100)) ? NAND_CMD_READ1 : NAND_CMD_READ0,
+                   CDSN_CTRL_WP);
+       DoC_Address(this, ADDR_COLUMN_PAGE, from, CDSN_CTRL_WP,
+                   CDSN_CTRL_ECC_IO);
+
+       if (eccbuf) {
+               /* Prime the ECC engine */
+               WriteDOC(DOC_ECC_RESET, docptr, ECCConf);
+               WriteDOC(DOC_ECC_EN, docptr, ECCConf);
+       } else {
+               /* disable the ECC engine */
+               WriteDOC(DOC_ECC_RESET, docptr, ECCConf);
+               WriteDOC(DOC_ECC_DIS, docptr, ECCConf);
+       }
+
+       /* treat crossing 256-byte sector for 2M x 8bits devices */
+       if (this->page256 && from + len > (from | 0xff) + 1) {
+               len256 = (from | 0xff) + 1 - from;
+               DoC_ReadBuf(this, buf, len256);
+
+               DoC_Command(this, NAND_CMD_READ0, CDSN_CTRL_WP);
+               DoC_Address(this, ADDR_COLUMN_PAGE, from + len256,
+                           CDSN_CTRL_WP, CDSN_CTRL_ECC_IO);
+       }
+
+       DoC_ReadBuf(this, &buf[len256], len - len256);
+
+       /* Let the caller know we completed it */
+       *retlen = len;
+
+       if (eccbuf) {
+               /* Read the ECC data through the DiskOnChip ECC logic */
+               /* Note: this will work even with 2M x 8bit devices as   */
+               /*       they have 8 bytes of OOB per 256 page. mf.      */
+               DoC_ReadBuf(this, eccbuf, 6);
+
+               /* Flush the pipeline */
+               if (DoC_is_Millennium(this)) {
+                       dummy = ReadDOC(docptr, ECCConf);
+                       dummy = ReadDOC(docptr, ECCConf);
+                       i = ReadDOC(docptr, ECCConf);
+               } else {
+                       dummy = ReadDOC(docptr, 2k_ECCStatus);
+                       dummy = ReadDOC(docptr, 2k_ECCStatus);
+                       i = ReadDOC(docptr, 2k_ECCStatus);
+               }
+
+               /* Check the ECC Status */
+               if (i & 0x80) {
+                       int nb_errors;
+                       /* There was an ECC error */
+#ifdef ECC_DEBUG
+                       printf("DiskOnChip ECC Error: Read at %lx\n", (long)from);
+#endif
+                       /* Read the ECC syndrom through the DiskOnChip ECC logic.
+                          These syndrome will be all ZERO when there is no error */
+                       for (i = 0; i < 6; i++) {
+                               syndrome[i] =
+                                   ReadDOC(docptr, ECCSyndrome0 + i);
+                       }
+                       nb_errors = doc_decode_ecc(buf, syndrome);
+
+#ifdef ECC_DEBUG
+                       printf("Errors corrected: %x\n", nb_errors);
+#endif
+                       if (nb_errors < 0) {
+                               /* We return error, but have actually done the read. Not that
+                                  this can be told to user-space, via sys_read(), but at least
+                                  MTD-aware stuff can know about it by checking *retlen */
+                               printf("ECC Errors at %lx\n", (long)from);
+                               ret = DOC_EECC;
+                       }
+               }
+
+#ifdef PSYCHO_DEBUG
+               printf("ECC DATA at %lxB: %2.2X %2.2X %2.2X %2.2X %2.2X %2.2X\n",
+                            (long)from, eccbuf[0], eccbuf[1], eccbuf[2],
+                            eccbuf[3], eccbuf[4], eccbuf[5]);
+#endif
+
+               /* disable the ECC engine */
+               WriteDOC(DOC_ECC_DIS, docptr , ECCConf);
+       }
+
+       /* according to 11.4.1, we need to wait for the busy line
+        * drop if we read to the end of the page.  */
+       if(0 == ((from + *retlen) & 0x1ff))
+       {
+           DoC_WaitReady(this);
+       }
+
+       return ret;
+}
+
+int doc_write_ecc(struct DiskOnChip* this, loff_t to, size_t len,
+                 size_t * retlen, const u_char * buf,
+                 u_char * eccbuf)
+{
+       int di; /* Yes, DI is a hangover from when I was disassembling the binary driver */
+       unsigned long docptr;
+       volatile char dummy;
+       int len256 = 0;
+       struct Nand *mychip;
+
+       docptr = this->virtadr;
+
+       /* Don't allow write past end of device */
+       if (to >= this->totlen) {
+               puts ("Out of flash\n");
+               return DOC_EINVAL;
+       }
+
+       /* Don't allow a single write to cross a 512-byte block boundary */
+       if (to + len > ((to | 0x1ff) + 1))
+               len = ((to | 0x1ff) + 1) - to;
+
+       /* The ECC will not be calculated correctly if less than 512 is written */
+       if (len != 0x200 && eccbuf)
+               printf("ECC needs a full sector write (adr: %lx size %lx)\n",
+                      (long) to, (long) len);
+
+       /* printf("DoC_Write (adr: %lx size %lx)\n", (long) to, (long) len); */
+
+       /* Find the chip which is to be used and select it */
+       mychip = &this->chips[shr(to, this->chipshift)];
+
+       if (this->curfloor != mychip->floor) {
+               DoC_SelectFloor(this, mychip->floor);
+               DoC_SelectChip(this, mychip->chip);
+       } else if (this->curchip != mychip->chip) {
+               DoC_SelectChip(this, mychip->chip);
+       }
+
+       this->curfloor = mychip->floor;
+       this->curchip = mychip->chip;
+
+       /* Set device to main plane of flash */
+       DoC_Command(this, NAND_CMD_RESET, CDSN_CTRL_WP);
+       DoC_Command(this,
+                   (!this->page256
+                    && (to & 0x100)) ? NAND_CMD_READ1 : NAND_CMD_READ0,
+                   CDSN_CTRL_WP);
+
+       DoC_Command(this, NAND_CMD_SEQIN, 0);
+       DoC_Address(this, ADDR_COLUMN_PAGE, to, 0, CDSN_CTRL_ECC_IO);
+
+       if (eccbuf) {
+               /* Prime the ECC engine */
+               WriteDOC(DOC_ECC_RESET, docptr, ECCConf);
+               WriteDOC(DOC_ECC_EN | DOC_ECC_RW, docptr, ECCConf);
+       } else {
+               /* disable the ECC engine */
+               WriteDOC(DOC_ECC_RESET, docptr, ECCConf);
+               WriteDOC(DOC_ECC_DIS, docptr, ECCConf);
+       }
+
+       /* treat crossing 256-byte sector for 2M x 8bits devices */
+       if (this->page256 && to + len > (to | 0xff) + 1) {
+               len256 = (to | 0xff) + 1 - to;
+               DoC_WriteBuf(this, buf, len256);
+
+               DoC_Command(this, NAND_CMD_PAGEPROG, 0);
+
+               DoC_Command(this, NAND_CMD_STATUS, CDSN_CTRL_WP);
+               /* There's an implicit DoC_WaitReady() in DoC_Command */
+
+               dummy = ReadDOC(docptr, CDSNSlowIO);
+               DoC_Delay(this, 2);
+
+               if (ReadDOC_(docptr, this->ioreg) & 1) {
+                       puts ("Error programming flash\n");
+                       /* Error in programming */
+                       *retlen = 0;
+                       return DOC_EIO;
+               }
+
+               DoC_Command(this, NAND_CMD_SEQIN, 0);
+               DoC_Address(this, ADDR_COLUMN_PAGE, to + len256, 0,
+                           CDSN_CTRL_ECC_IO);
+       }
+
+       DoC_WriteBuf(this, &buf[len256], len - len256);
+
+       if (eccbuf) {
+               WriteDOC(CDSN_CTRL_ECC_IO | CDSN_CTRL_CE, docptr,
+                        CDSNControl);
+
+               if (DoC_is_Millennium(this)) {
+                       WriteDOC(0, docptr, NOP);
+                       WriteDOC(0, docptr, NOP);
+                       WriteDOC(0, docptr, NOP);
+               } else {
+                       WriteDOC_(0, docptr, this->ioreg);
+                       WriteDOC_(0, docptr, this->ioreg);
+                       WriteDOC_(0, docptr, this->ioreg);
+               }
+
+               /* Read the ECC data through the DiskOnChip ECC logic */
+               for (di = 0; di < 6; di++) {
+                       eccbuf[di] = ReadDOC(docptr, ECCSyndrome0 + di);
+               }
+
+               /* Reset the ECC engine */
+               WriteDOC(DOC_ECC_DIS, docptr, ECCConf);
+
+#ifdef PSYCHO_DEBUG
+               printf
+                   ("OOB data at %lx is %2.2X %2.2X %2.2X %2.2X %2.2X %2.2X\n",
+                    (long) to, eccbuf[0], eccbuf[1], eccbuf[2], eccbuf[3],
+                    eccbuf[4], eccbuf[5]);
+#endif
+       }
+
+       DoC_Command(this, NAND_CMD_PAGEPROG, 0);
+
+       DoC_Command(this, NAND_CMD_STATUS, CDSN_CTRL_WP);
+       /* There's an implicit DoC_WaitReady() in DoC_Command */
+
+       dummy = ReadDOC(docptr, CDSNSlowIO);
+       DoC_Delay(this, 2);
+
+       if (ReadDOC_(docptr, this->ioreg) & 1) {
+               puts ("Error programming flash\n");
+               /* Error in programming */
+               *retlen = 0;
+               return DOC_EIO;
+       }
+
+       /* Let the caller know we completed it */
+       *retlen = len;
+
+       if (eccbuf) {
+               unsigned char x[8];
+               size_t dummy;
+               int ret;
+
+               /* Write the ECC data to flash */
+               for (di=0; di<6; di++)
+                       x[di] = eccbuf[di];
+
+               x[6]=0x55;
+               x[7]=0x55;
+
+               ret = doc_write_oob(this, to, 8, &dummy, x);
+               return ret;
+       }
+       return 0;
+}
+
+int doc_read_oob(struct DiskOnChip* this, loff_t ofs, size_t len,
+                size_t * retlen, u_char * buf)
+{
+       int len256 = 0, ret;
+       unsigned long docptr;
+       struct Nand *mychip;
+
+       docptr = this->virtadr;
+
+       mychip = &this->chips[shr(ofs, this->chipshift)];
+
+       if (this->curfloor != mychip->floor) {
+               DoC_SelectFloor(this, mychip->floor);
+               DoC_SelectChip(this, mychip->chip);
+       } else if (this->curchip != mychip->chip) {
+               DoC_SelectChip(this, mychip->chip);
+       }
+       this->curfloor = mychip->floor;
+       this->curchip = mychip->chip;
+
+       /* update address for 2M x 8bit devices. OOB starts on the second */
+       /* page to maintain compatibility with doc_read_ecc. */
+       if (this->page256) {
+               if (!(ofs & 0x8))
+                       ofs += 0x100;
+               else
+                       ofs -= 0x8;
+       }
+
+       DoC_Command(this, NAND_CMD_READOOB, CDSN_CTRL_WP);
+       DoC_Address(this, ADDR_COLUMN_PAGE, ofs, CDSN_CTRL_WP, 0);
+
+       /* treat crossing 8-byte OOB data for 2M x 8bit devices */
+       /* Note: datasheet says it should automaticaly wrap to the */
+       /*       next OOB block, but it didn't work here. mf.      */
+       if (this->page256 && ofs + len > (ofs | 0x7) + 1) {
+               len256 = (ofs | 0x7) + 1 - ofs;
+               DoC_ReadBuf(this, buf, len256);
+
+               DoC_Command(this, NAND_CMD_READOOB, CDSN_CTRL_WP);
+               DoC_Address(this, ADDR_COLUMN_PAGE, ofs & (~0x1ff),
+                           CDSN_CTRL_WP, 0);
+       }
+
+       DoC_ReadBuf(this, &buf[len256], len - len256);
+
+       *retlen = len;
+       /* Reading the full OOB data drops us off of the end of the page,
+        * causing the flash device to go into busy mode, so we need
+        * to wait until ready 11.4.1 and Toshiba TC58256FT docs */
+
+       ret = DoC_WaitReady(this);
+
+       return ret;
+
+}
+
+int doc_write_oob(struct DiskOnChip* this, loff_t ofs, size_t len,
+                 size_t * retlen, const u_char * buf)
+{
+       int len256 = 0;
+       unsigned long docptr = this->virtadr;
+       struct Nand *mychip = &this->chips[shr(ofs, this->chipshift)];
+       volatile int dummy;
+
+#ifdef PSYCHO_DEBUG
+       printf("doc_write_oob(%lx, %d): %2.2X %2.2X %2.2X %2.2X ... %2.2X %2.2X .. %2.2X %2.2X\n",
+              (long)ofs, len, buf[0], buf[1], buf[2], buf[3],
+              buf[8], buf[9], buf[14],buf[15]);
+#endif
+
+       /* Find the chip which is to be used and select it */
+       if (this->curfloor != mychip->floor) {
+               DoC_SelectFloor(this, mychip->floor);
+               DoC_SelectChip(this, mychip->chip);
+       } else if (this->curchip != mychip->chip) {
+               DoC_SelectChip(this, mychip->chip);
+       }
+       this->curfloor = mychip->floor;
+       this->curchip = mychip->chip;
+
+       /* disable the ECC engine */
+       WriteDOC (DOC_ECC_RESET, docptr, ECCConf);
+       WriteDOC (DOC_ECC_DIS, docptr, ECCConf);
+
+       /* Reset the chip, see Software Requirement 11.4 item 1. */
+       DoC_Command(this, NAND_CMD_RESET, CDSN_CTRL_WP);
+
+       /* issue the Read2 command to set the pointer to the Spare Data Area. */
+       DoC_Command(this, NAND_CMD_READOOB, CDSN_CTRL_WP);
+
+       /* update address for 2M x 8bit devices. OOB starts on the second */
+       /* page to maintain compatibility with doc_read_ecc. */
+       if (this->page256) {
+               if (!(ofs & 0x8))
+                       ofs += 0x100;
+               else
+                       ofs -= 0x8;
+       }
+
+       /* issue the Serial Data In command to initial the Page Program process */
+       DoC_Command(this, NAND_CMD_SEQIN, 0);
+       DoC_Address(this, ADDR_COLUMN_PAGE, ofs, 0, 0);
+
+       /* treat crossing 8-byte OOB data for 2M x 8bit devices */
+       /* Note: datasheet says it should automaticaly wrap to the */
+       /*       next OOB block, but it didn't work here. mf.      */
+       if (this->page256 && ofs + len > (ofs | 0x7) + 1) {
+               len256 = (ofs | 0x7) + 1 - ofs;
+               DoC_WriteBuf(this, buf, len256);
+
+               DoC_Command(this, NAND_CMD_PAGEPROG, 0);
+               DoC_Command(this, NAND_CMD_STATUS, 0);
+               /* DoC_WaitReady() is implicit in DoC_Command */
+
+               dummy = ReadDOC(docptr, CDSNSlowIO);
+               DoC_Delay(this, 2);
+
+               if (ReadDOC_(docptr, this->ioreg) & 1) {
+                       puts ("Error programming oob data\n");
+                       /* There was an error */
+                       *retlen = 0;
+                       return DOC_EIO;
+               }
+               DoC_Command(this, NAND_CMD_SEQIN, 0);
+               DoC_Address(this, ADDR_COLUMN_PAGE, ofs & (~0x1ff), 0, 0);
+       }
+
+       DoC_WriteBuf(this, &buf[len256], len - len256);
+
+       DoC_Command(this, NAND_CMD_PAGEPROG, 0);
+       DoC_Command(this, NAND_CMD_STATUS, 0);
+       /* DoC_WaitReady() is implicit in DoC_Command */
+
+       dummy = ReadDOC(docptr, CDSNSlowIO);
+       DoC_Delay(this, 2);
+
+       if (ReadDOC_(docptr, this->ioreg) & 1) {
+               puts ("Error programming oob data\n");
+               /* There was an error */
+               *retlen = 0;
+               return DOC_EIO;
+       }
+
+       *retlen = len;
+       return 0;
+
+}
+
+int doc_erase(struct DiskOnChip* this, loff_t ofs, size_t len)
+{
+       volatile int dummy;
+       unsigned long docptr;
+       struct Nand *mychip;
+
+       if (ofs & (this->erasesize-1) || len & (this->erasesize-1)) {
+               puts ("Offset and size must be sector aligned\n");
+               return DOC_EINVAL;
+       }
+
+       docptr = this->virtadr;
+
+       /* FIXME: Do this in the background. Use timers or schedule_task() */
+       while(len) {
+               mychip = &this->chips[shr(ofs, this->chipshift)];
+
+               if (this->curfloor != mychip->floor) {
+                       DoC_SelectFloor(this, mychip->floor);
+                       DoC_SelectChip(this, mychip->chip);
+               } else if (this->curchip != mychip->chip) {
+                       DoC_SelectChip(this, mychip->chip);
+               }
+               this->curfloor = mychip->floor;
+               this->curchip = mychip->chip;
+
+               DoC_Command(this, NAND_CMD_ERASE1, 0);
+               DoC_Address(this, ADDR_PAGE, ofs, 0, 0);
+               DoC_Command(this, NAND_CMD_ERASE2, 0);
+
+               DoC_Command(this, NAND_CMD_STATUS, CDSN_CTRL_WP);
+
+               dummy = ReadDOC(docptr, CDSNSlowIO);
+               DoC_Delay(this, 2);
+
+               if (ReadDOC_(docptr, this->ioreg) & 1) {
+                       printf("Error erasing at 0x%lx\n", (long)ofs);
+                       /* There was an error */
+                       goto callback;
+               }
+               ofs += this->erasesize;
+               len -= this->erasesize;
+       }
+
+ callback:
+       return 0;
+}
+
+static inline int doccheck(unsigned long potential, unsigned long physadr)
+{
+       unsigned long window=potential;
+       unsigned char tmp, ChipID;
+#ifndef DOC_PASSIVE_PROBE
+       unsigned char tmp2;
+#endif
+
+       /* Routine copied from the Linux DOC driver */
+
+#ifdef CONFIG_SYS_DOCPROBE_55AA
+       /* Check for 0x55 0xAA signature at beginning of window,
+          this is no longer true once we remove the IPL (for Millennium */
+       if (ReadDOC(window, Sig1) != 0x55 || ReadDOC(window, Sig2) != 0xaa)
+               return 0;
+#endif /* CONFIG_SYS_DOCPROBE_55AA */
+
+#ifndef DOC_PASSIVE_PROBE
+       /* It's not possible to cleanly detect the DiskOnChip - the
+        * bootup procedure will put the device into reset mode, and
+        * it's not possible to talk to it without actually writing
+        * to the DOCControl register. So we store the current contents
+        * of the DOCControl register's location, in case we later decide
+        * that it's not a DiskOnChip, and want to put it back how we
+        * found it.
+        */
+       tmp2 = ReadDOC(window, DOCControl);
+
+       /* Reset the DiskOnChip ASIC */
+       WriteDOC(DOC_MODE_CLR_ERR | DOC_MODE_MDWREN | DOC_MODE_RESET,
+                window, DOCControl);
+       WriteDOC(DOC_MODE_CLR_ERR | DOC_MODE_MDWREN | DOC_MODE_RESET,
+                window, DOCControl);
+
+       /* Enable the DiskOnChip ASIC */
+       WriteDOC(DOC_MODE_CLR_ERR | DOC_MODE_MDWREN | DOC_MODE_NORMAL,
+                window, DOCControl);
+       WriteDOC(DOC_MODE_CLR_ERR | DOC_MODE_MDWREN | DOC_MODE_NORMAL,
+                window, DOCControl);
+#endif /* !DOC_PASSIVE_PROBE */
+
+       ChipID = ReadDOC(window, ChipID);
+
+       switch (ChipID) {
+       case DOC_ChipID_Doc2k:
+               /* Check the TOGGLE bit in the ECC register */
+               tmp = ReadDOC(window, 2k_ECCStatus) & DOC_TOGGLE_BIT;
+               if ((ReadDOC(window, 2k_ECCStatus) & DOC_TOGGLE_BIT) != tmp)
+                               return ChipID;
+               break;
+
+       case DOC_ChipID_DocMil:
+               /* Check the TOGGLE bit in the ECC register */
+               tmp = ReadDOC(window, ECCConf) & DOC_TOGGLE_BIT;
+               if ((ReadDOC(window, ECCConf) & DOC_TOGGLE_BIT) != tmp)
+                               return ChipID;
+               break;
+
+       default:
+#ifndef CONFIG_SYS_DOCPROBE_55AA
+/*
+ * if the ID isn't the DoC2000 or DoCMillenium ID, so we can assume
+ * the DOC is missing
+ */
+# if 0
+               printf("Possible DiskOnChip with unknown ChipID %2.2X found at 0x%lx\n",
+                      ChipID, physadr);
+# endif
+#endif
+#ifndef DOC_PASSIVE_PROBE
+               /* Put back the contents of the DOCControl register, in case it's not
+                * actually a DiskOnChip.
+                */
+               WriteDOC(tmp2, window, DOCControl);
+#endif
+               return 0;
+       }
+
+       puts ("DiskOnChip failed TOGGLE test, dropping.\n");
+
+#ifndef DOC_PASSIVE_PROBE
+       /* Put back the contents of the DOCControl register: it's not a DiskOnChip */
+       WriteDOC(tmp2, window, DOCControl);
+#endif
+       return 0;
+}
+
+void doc_probe(unsigned long physadr)
+{
+       struct DiskOnChip *this = NULL;
+       int i=0, ChipID;
+
+       if ((ChipID = doccheck(physadr, physadr))) {
+
+               for (i=0; i<CONFIG_SYS_MAX_DOC_DEVICE; i++) {
+                       if (doc_dev_desc[i].ChipID == DOC_ChipID_UNKNOWN) {
+                               this = doc_dev_desc + i;
+                               break;
+                       }
+               }
+
+               if (!this) {
+                       puts ("Cannot allocate memory for data structures.\n");
+                       return;
+               }
+
+               if (curr_device == -1)
+                       curr_device = i;
+
+               memset((char *)this, 0, sizeof(struct DiskOnChip));
+
+               this->virtadr = physadr;
+               this->physadr = physadr;
+               this->ChipID = ChipID;
+
+               DoC2k_init(this);
+       } else {
+               puts ("No DiskOnChip found\n");
+       }
+}
+#else
+void doc_probe(unsigned long physadr) {}
+#endif
diff -Naur u-boot-2009.03_orig/common/cmd_jffs2.c u-boot-2009.03/common/cmd_jffs2.c
--- u-boot-2009.03_orig/common/cmd_jffs2.c      2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/common/cmd_jffs2.c   2009-03-31 14:50:04.678394400 -0700
@@ -1,2362 +1,2362 @@
-/*
- * (C) Copyright 2002
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2002
- * Robert Schwebel, Pengutronix, <r.schwebel@pengutronix.de>
- *
- * (C) Copyright 2003
- * Kai-Uwe Bloem, Auerswald GmbH & Co KG, <linux-development@auerswald.de>
- *
- * (C) Copyright 2005
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- *   Added support for reading flash partition table from environment.
- *   Parsing routines are based on driver/mtd/cmdline.c from the linux 2.4
- *   kernel tree.
- *
- *   $Id: cmdlinepart.c,v 1.17 2004/11/26 11:18:47 lavinen Exp $
- *   Copyright 2002 SYSGO Real-Time Solutions GmbH
- *
- * 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
- */
-
-/*
- * Three environment variables are used by the parsing routines:
- *
- * 'partition' - keeps current partition identifier
- *
- * partition  := <part-id>
- * <part-id>  := <dev-id>,part_num
- *
- *
- * 'mtdids' - linux kernel mtd device id <-> u-boot device id mapping
- *
- * mtdids=<idmap>[,<idmap>,...]
- *
- * <idmap>    := <dev-id>=<mtd-id>
- * <dev-id>   := 'nand'|'nor'|'onenand'<dev-num>
- * <dev-num>  := mtd device number, 0...
- * <mtd-id>   := unique device tag used by linux kernel to find mtd device (mtd->name)
- *
- *
- * 'mtdparts' - partition list
- *
- * mtdparts=mtdparts=<mtd-def>[;<mtd-def>...]
- *
- * <mtd-def>  := <mtd-id>:<part-def>[,<part-def>...]
- * <mtd-id>   := unique device tag used by linux kernel to find mtd device (mtd->name)
- * <part-def> := <size>[@<offset>][<name>][<ro-flag>]
- * <size>     := standard linux memsize OR '-' to denote all remaining space
- * <offset>   := partition start offset within the device
- * <name>     := '(' NAME ')'
- * <ro-flag>  := when set to 'ro' makes partition read-only (not used, passed to kernel)
- *
- * Notes:
- * - each <mtd-id> used in mtdparts must albo exist in 'mtddis' mapping
- * - if the above variables are not set defaults for a given target are used
- *
- * Examples:
- *
- * 1 NOR Flash, with 1 single writable partition:
- * mtdids=nor0=edb7312-nor
- * mtdparts=mtdparts=edb7312-nor:-
- *
- * 1 NOR Flash with 2 partitions, 1 NAND with one
- * mtdids=nor0=edb7312-nor,nand0=edb7312-nand
- * mtdparts=mtdparts=edb7312-nor:256k(ARMboot)ro,-(root);edb7312-nand:-(home)
- *
- */
-
-/*
- * JFFS2/CRAMFS support
- */
-#include <common.h>
-#include <command.h>
-#include <malloc.h>
-#include <jffs2/jffs2.h>
-#include <linux/list.h>
-#include <linux/ctype.h>
-#include <cramfs/cramfs_fs.h>
-
-#if defined(CONFIG_CMD_NAND)
-#ifdef CONFIG_NAND_LEGACY
-#include <linux/mtd/nand_legacy.h>
-#else /* !CONFIG_NAND_LEGACY */
-#include <linux/mtd/nand.h>
-#include <nand.h>
-#endif /* !CONFIG_NAND_LEGACY */
-#endif
-
-#if defined(CONFIG_CMD_ONENAND)
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/onenand.h>
-#include <onenand_uboot.h>
-#endif
-
-/* enable/disable debugging messages */
-#define        DEBUG_JFFS
-#undef DEBUG_JFFS
-
-#ifdef  DEBUG_JFFS
-# define DEBUGF(fmt, args...)  printf(fmt ,##args)
-#else
-# define DEBUGF(fmt, args...)
-#endif
-
-/* special size referring to all the remaining space in a partition */
-#define SIZE_REMAINING         0xFFFFFFFF
-
-/* special offset value, it is used when not provided by user
- *
- * this value is used temporarily during parsing, later such offests
- * are recalculated */
-#define OFFSET_NOT_SPECIFIED   0xFFFFFFFF
-
-/* minimum partition size */
-#define MIN_PART_SIZE          4096
-
-/* this flag needs to be set in part_info struct mask_flags
- * field for read-only partitions */
-#define MTD_WRITEABLE_CMD              1
-
-#ifdef CONFIG_JFFS2_CMDLINE
-/* default values for mtdids and mtdparts variables */
-#if defined(MTDIDS_DEFAULT)
-static const char *const mtdids_default = MTDIDS_DEFAULT;
-#else
-#warning "MTDIDS_DEFAULT not defined!"
-static const char *const mtdids_default = NULL;
-#endif
-
-#if defined(MTDPARTS_DEFAULT)
-static const char *const mtdparts_default = MTDPARTS_DEFAULT;
-#else
-#warning "MTDPARTS_DEFAULT not defined!"
-static const char *const mtdparts_default = NULL;
-#endif
-
-/* copies of last seen 'mtdids', 'mtdparts' and 'partition' env variables */
-#define MTDIDS_MAXLEN          128
-#define MTDPARTS_MAXLEN                512
-#define PARTITION_MAXLEN       16
-static char last_ids[MTDIDS_MAXLEN];
-static char last_parts[MTDPARTS_MAXLEN];
-static char last_partition[PARTITION_MAXLEN];
-
-/* low level jffs2 cache cleaning routine */
-extern void jffs2_free_cache(struct part_info *part);
-
-/* mtdids mapping list, filled by parse_ids() */
-struct list_head mtdids;
-
-/* device/partition list, parse_cmdline() parses into here */
-struct list_head devices;
-#endif /* #ifdef CONFIG_JFFS2_CMDLINE */
-
-/* current active device and partition number */
-static struct mtd_device *current_dev = NULL;
-static u8 current_partnum = 0;
-
-#if defined(CONFIG_CMD_CRAMFS)
-extern int cramfs_check (struct part_info *info);
-extern int cramfs_load (char *loadoffset, struct part_info *info, char *filename);
-extern int cramfs_ls (struct part_info *info, char *filename);
-extern int cramfs_info (struct part_info *info);
-#else
-/* defining empty macros for function names is ugly but avoids ifdef clutter
- * all over the code */
-#define cramfs_check(x)                (0)
-#define cramfs_load(x,y,z)     (-1)
-#define cramfs_ls(x,y)         (0)
-#define cramfs_info(x)         (0)
-#endif
-
-static struct part_info* jffs2_part_info(struct mtd_device *dev, unsigned int part_num);
-
-/* command line only routines */
-#ifdef CONFIG_JFFS2_CMDLINE
-
-static struct mtdids* id_find_by_mtd_id(const char *mtd_id, unsigned int mtd_id_len);
-static int device_del(struct mtd_device *dev);
-
-/**
- * Parses a string into a number.  The number stored at ptr is
- * potentially suffixed with K (for kilobytes, or 1024 bytes),
- * M (for megabytes, or 1048576 bytes), or G (for gigabytes, or
- * 1073741824).  If the number is suffixed with K, M, or G, then
- * the return value is the number multiplied by one kilobyte, one
- * megabyte, or one gigabyte, respectively.
- *
- * @param ptr where parse begins
- * @param retptr output pointer to next char after parse completes (output)
- * @return resulting unsigned int
- */
-static unsigned long memsize_parse (const char *const ptr, const char **retptr)
-{
-       unsigned long ret = simple_strtoul(ptr, (char **)retptr, 0);
-
-       switch (**retptr) {
-               case 'G':
-               case 'g':
-                       ret <<= 10;
-               case 'M':
-               case 'm':
-                       ret <<= 10;
-               case 'K':
-               case 'k':
-                       ret <<= 10;
-                       (*retptr)++;
-               default:
-                       break;
-       }
-
-       return ret;
-}
-
-/**
- * Format string describing supplied size. This routine does the opposite job
- * to memsize_parse(). Size in bytes is converted to string and if possible
- * shortened by using k (kilobytes), m (megabytes) or g (gigabytes) suffix.
- *
- * Note, that this routine does not check for buffer overflow, it's the caller
- * who must assure enough space.
- *
- * @param buf output buffer
- * @param size size to be converted to string
- */
-static void memsize_format(char *buf, u32 size)
-{
-#define SIZE_GB ((u32)1024*1024*1024)
-#define SIZE_MB ((u32)1024*1024)
-#define SIZE_KB ((u32)1024)
-
-       if ((size % SIZE_GB) == 0)
-               sprintf(buf, "%ug", size/SIZE_GB);
-       else if ((size % SIZE_MB) == 0)
-               sprintf(buf, "%um", size/SIZE_MB);
-       else if (size % SIZE_KB == 0)
-               sprintf(buf, "%uk", size/SIZE_KB);
-       else
-               sprintf(buf, "%u", size);
-}
-
-/**
- * This routine does global indexing of all partitions. Resulting index for
- * current partition is saved in 'mtddevnum'. Current partition name in
- * 'mtddevname'.
- */
-static void index_partitions(void)
-{
-       char buf[16];
-       u16 mtddevnum;
-       struct part_info *part;
-       struct list_head *dentry;
-       struct mtd_device *dev;
-
-       DEBUGF("--- index partitions ---\n");
-
-       if (current_dev) {
-               mtddevnum = 0;
-               list_for_each(dentry, &devices) {
-                       dev = list_entry(dentry, struct mtd_device, link);
-                       if (dev == current_dev) {
-                               mtddevnum += current_partnum;
-                               sprintf(buf, "%d", mtddevnum);
-                               setenv("mtddevnum", buf);
-                               break;
-                       }
-                       mtddevnum += dev->num_parts;
-               }
-
-               part = jffs2_part_info(current_dev, current_partnum);
-               setenv("mtddevname", part->name);
-
-               DEBUGF("=> mtddevnum %d,\n=> mtddevname %s\n", mtddevnum, part->name);
-       } else {
-               setenv("mtddevnum", NULL);
-               setenv("mtddevname", NULL);
-
-               DEBUGF("=> mtddevnum NULL\n=> mtddevname NULL\n");
-       }
-}
-
-/**
- * Save current device and partition in environment variable 'partition'.
- */
-static void current_save(void)
-{
-       char buf[16];
-
-       DEBUGF("--- current_save ---\n");
-
-       if (current_dev) {
-               sprintf(buf, "%s%d,%d", MTD_DEV_TYPE(current_dev->id->type),
-                                       current_dev->id->num, current_partnum);
-
-               setenv("partition", buf);
-               strncpy(last_partition, buf, 16);
-
-               DEBUGF("=> partition %s\n", buf);
-       } else {
-               setenv("partition", NULL);
-               last_partition[0] = '\0';
-
-               DEBUGF("=> partition NULL\n");
-       }
-       index_partitions();
-}
-
-/**
- * Performs sanity check for supplied NOR flash partition. Table of existing
- * NOR flash devices is searched and partition device is located. Alignment
- * with the granularity of NOR flash sectors is verified.
- *
- * @param id of the parent device
- * @param part partition to validate
- * @return 0 if partition is valid, 1 otherwise
- */
-static int part_validate_nor(struct mtdids *id, struct part_info *part)
-{
-#if defined(CONFIG_CMD_FLASH)
-       /* info for FLASH chips */
-       extern flash_info_t flash_info[];
-       flash_info_t *flash;
-       int offset_aligned;
-       u32 end_offset, sector_size = 0;
-       int i;
-
-       flash = &flash_info[id->num];
-
-       /* size of last sector */
-       part->sector_size = flash->size -
-               (flash->start[flash->sector_count-1] - flash->start[0]);
-
-       offset_aligned = 0;
-       for (i = 0; i < flash->sector_count; i++) {
-               if ((flash->start[i] - flash->start[0]) == part->offset) {
-                       offset_aligned = 1;
-                       break;
-               }
-       }
-       if (offset_aligned == 0) {
-               printf("%s%d: partition (%s) start offset alignment incorrect\n",
-                               MTD_DEV_TYPE(id->type), id->num, part->name);
-               return 1;
-       }
-
-       end_offset = part->offset + part->size;
-       offset_aligned = 0;
-       for (i = 0; i < flash->sector_count; i++) {
-               if (i) {
-                       sector_size = flash->start[i] - flash->start[i-1];
-                       if (part->sector_size < sector_size)
-                               part->sector_size = sector_size;
-               }
-               if ((flash->start[i] - flash->start[0]) == end_offset)
-                       offset_aligned = 1;
-       }
-
-       if (offset_aligned || flash->size == end_offset)
-               return 0;
-
-       printf("%s%d: partition (%s) size alignment incorrect\n",
-                       MTD_DEV_TYPE(id->type), id->num, part->name);
-#endif
-       return 1;
-}
-
-/**
- * Performs sanity check for supplied NAND flash partition. Table of existing
- * NAND flash devices is searched and partition device is located. Alignment
- * with the granularity of nand erasesize is verified.
- *
- * @param id of the parent device
- * @param part partition to validate
- * @return 0 if partition is valid, 1 otherwise
- */
-static int part_validate_nand(struct mtdids *id, struct part_info *part)
-{
-#if defined(CONFIG_JFFS2_NAND) && defined(CONFIG_CMD_NAND)
-       /* info for NAND chips */
-       nand_info_t *nand;
-
-       nand = &nand_info[id->num];
-
-       part->sector_size = nand->erasesize;
-
-       if ((unsigned long)(part->offset) % nand->erasesize) {
-               printf("%s%d: partition (%s) start offset alignment incorrect\n",
-                               MTD_DEV_TYPE(id->type), id->num, part->name);
-               return 1;
-       }
-
-       if (part->size % nand->erasesize) {
-               printf("%s%d: partition (%s) size alignment incorrect\n",
-                               MTD_DEV_TYPE(id->type), id->num, part->name);
-               return 1;
-       }
-
-       return 0;
-#else
-       return 1;
-#endif
-}
-
-/**
- * Performs sanity check for supplied OneNAND flash partition.
- * Table of existing OneNAND flash devices is searched and partition device
- * is located. Alignment with the granularity of nand erasesize is verified.
- *
- * @param id of the parent device
- * @param part partition to validate
- * @return 0 if partition is valid, 1 otherwise
- */
-static int part_validate_onenand(struct mtdids *id, struct part_info *part)
-{
-#if defined(CONFIG_CMD_ONENAND)
-       /* info for OneNAND chips */
-       struct mtd_info *mtd;
-
-       mtd = &onenand_mtd;
-
-       part->sector_size = mtd->erasesize;
-
-       if ((unsigned long)(part->offset) % mtd->erasesize) {
-               printf("%s%d: partition (%s) start offset"
-                       "alignment incorrect\n",
-                               MTD_DEV_TYPE(id->type), id->num, part->name);
-               return 1;
-       }
-
-       if (part->size % mtd->erasesize) {
-               printf("%s%d: partition (%s) size alignment incorrect\n",
-                               MTD_DEV_TYPE(id->type), id->num, part->name);
-               return 1;
-       }
-
-       return 0;
-#else
-       return 1;
-#endif
-}
-
-
-/**
- * Performs sanity check for supplied partition. Offset and size are verified
- * to be within valid range. Partition type is checked and either
- * parts_validate_nor() or parts_validate_nand() is called with the argument
- * of part.
- *
- * @param id of the parent device
- * @param part partition to validate
- * @return 0 if partition is valid, 1 otherwise
- */
-static int part_validate(struct mtdids *id, struct part_info *part)
-{
-       if (part->size == SIZE_REMAINING)
-               part->size = id->size - part->offset;
-
-       if (part->offset > id->size) {
-               printf("%s: offset %08x beyond flash size %08x\n",
-                               id->mtd_id, part->offset, id->size);
-               return 1;
-       }
-
-       if ((part->offset + part->size) <= part->offset) {
-               printf("%s%d: partition (%s) size too big\n",
-                               MTD_DEV_TYPE(id->type), id->num, part->name);
-               return 1;
-       }
-
-       if (part->offset + part->size > id->size) {
-               printf("%s: partitioning exceeds flash size\n", id->mtd_id);
-               return 1;
-       }
-
-       if (id->type == MTD_DEV_TYPE_NAND)
-               return part_validate_nand(id, part);
-       else if (id->type == MTD_DEV_TYPE_NOR)
-               return part_validate_nor(id, part);
-       else if (id->type == MTD_DEV_TYPE_ONENAND)
-               return part_validate_onenand(id, part);
-       else
-               DEBUGF("part_validate: invalid dev type\n");
-
-       return 1;
-}
-
-/**
- * Delete selected partition from the partion list of the specified device.
- *
- * @param dev device to delete partition from
- * @param part partition to delete
- * @return 0 on success, 1 otherwise
- */
-static int part_del(struct mtd_device *dev, struct part_info *part)
-{
-       u8 current_save_needed = 0;
-
-       /* if there is only one partition, remove whole device */
-       if (dev->num_parts == 1)
-               return device_del(dev);
-
-       /* otherwise just delete this partition */
-
-       if (dev == current_dev) {
-               /* we are modyfing partitions for the current device,
-                * update current */
-               struct part_info *curr_pi;
-               curr_pi = jffs2_part_info(current_dev, current_partnum);
-
-               if (curr_pi) {
-                       if (curr_pi == part) {
-                               printf("current partition deleted, resetting current to 0\n");
-                               current_partnum = 0;
-                       } else if (part->offset <= curr_pi->offset) {
-                               current_partnum--;
-                       }
-                       current_save_needed = 1;
-               }
-       }
-
-#ifdef CONFIG_NAND_LEGACY
-       jffs2_free_cache(part);
-#endif
-       list_del(&part->link);
-       free(part);
-       dev->num_parts--;
-
-       if (current_save_needed > 0)
-               current_save();
-       else
-               index_partitions();
-
-       return 0;
-}
-
-/**
- * Delete all partitions from parts head list, free memory.
- *
- * @param head list of partitions to delete
- */
-static void part_delall(struct list_head *head)
-{
-       struct list_head *entry, *n;
-       struct part_info *part_tmp;
-
-       /* clean tmp_list and free allocated memory */
-       list_for_each_safe(entry, n, head) {
-               part_tmp = list_entry(entry, struct part_info, link);
-
-#ifdef CONFIG_NAND_LEGACY
-               jffs2_free_cache(part_tmp);
-#endif
-               list_del(entry);
-               free(part_tmp);
-       }
-}
-
-/**
- * Add new partition to the supplied partition list. Make sure partitions are
- * sorted by offset in ascending order.
- *
- * @param head list this partition is to be added to
- * @param new partition to be added
- */
-static int part_sort_add(struct mtd_device *dev, struct part_info *part)
-{
-       struct list_head *entry;
-       struct part_info *new_pi, *curr_pi;
-
-       /* link partition to parrent dev */
-       part->dev = dev;
-
-       if (list_empty(&dev->parts)) {
-               DEBUGF("part_sort_add: list empty\n");
-               list_add(&part->link, &dev->parts);
-               dev->num_parts++;
-               index_partitions();
-               return 0;
-       }
-
-       new_pi = list_entry(&part->link, struct part_info, link);
-
-       /* get current partition info if we are updating current device */
-       curr_pi = NULL;
-       if (dev == current_dev)
-               curr_pi = jffs2_part_info(current_dev, current_partnum);
-
-       list_for_each(entry, &dev->parts) {
-               struct part_info *pi;
-
-               pi = list_entry(entry, struct part_info, link);
-
-               /* be compliant with kernel cmdline, allow only one partition at offset zero */
-               if ((new_pi->offset == pi->offset) && (pi->offset == 0)) {
-                       printf("cannot add second partition at offset 0\n");
-                       return 1;
-               }
-
-               if (new_pi->offset <= pi->offset) {
-                       list_add_tail(&part->link, entry);
-                       dev->num_parts++;
-
-                       if (curr_pi && (pi->offset <= curr_pi->offset)) {
-                               /* we are modyfing partitions for the current
-                                * device, update current */
-                               current_partnum++;
-                               current_save();
-                       } else {
-                               index_partitions();
-                       }
-                       return 0;
-               }
-       }
-
-       list_add_tail(&part->link, &dev->parts);
-       dev->num_parts++;
-       index_partitions();
-       return 0;
-}
-
-/**
- * Add provided partition to the partition list of a given device.
- *
- * @param dev device to which partition is added
- * @param part partition to be added
- * @return 0 on success, 1 otherwise
- */
-static int part_add(struct mtd_device *dev, struct part_info *part)
-{
-       /* verify alignment and size */
-       if (part_validate(dev->id, part) != 0)
-               return 1;
-
-       /* partition is ok, add it to the list */
-       if (part_sort_add(dev, part) != 0)
-               return 1;
-
-       return 0;
-}
-
-/**
- * Parse one partition definition, allocate memory and return pointer to this
- * location in retpart.
- *
- * @param partdef pointer to the partition definition string i.e. <part-def>
- * @param ret output pointer to next char after parse completes (output)
- * @param retpart pointer to the allocated partition (output)
- * @return 0 on success, 1 otherwise
- */
-static int part_parse(const char *const partdef, const char **ret, struct part_info **retpart)
-{
-       struct part_info *part;
-       unsigned long size;
-       unsigned long offset;
-       const char *name;
-       int name_len;
-       unsigned int mask_flags;
-       const char *p;
-
-       p = partdef;
-       *retpart = NULL;
-       *ret = NULL;
-
-       /* fetch the partition size */
-       if (*p == '-') {
-               /* assign all remaining space to this partition */
-               DEBUGF("'-': remaining size assigned\n");
-               size = SIZE_REMAINING;
-               p++;
-       } else {
-               size = memsize_parse(p, &p);
-               if (size < MIN_PART_SIZE) {
-                       printf("partition size too small (%lx)\n", size);
-                       return 1;
-               }
-       }
-
-       /* check for offset */
-       offset = OFFSET_NOT_SPECIFIED;
-       if (*p == '@') {
-               p++;
-               offset = memsize_parse(p, &p);
-       }
-
-       /* now look for the name */
-       if (*p == '(') {
-               name = ++p;
-               if ((p = strchr(name, ')')) == NULL) {
-                       printf("no closing ) found in partition name\n");
-                       return 1;
-               }
-               name_len = p - name + 1;
-               if ((name_len - 1) == 0) {
-                       printf("empty partition name\n");
-                       return 1;
-               }
-               p++;
-       } else {
-               /* 0x00000000@0x00000000 */
-               name_len = 22;
-               name = NULL;
-       }
-
-       /* test for options */
-       mask_flags = 0;
-       if (strncmp(p, "ro", 2) == 0) {
-               mask_flags |= MTD_WRITEABLE_CMD;
-               p += 2;
-       }
-
-       /* check for next partition definition */
-       if (*p == ',') {
-               if (size == SIZE_REMAINING) {
-                       *ret = NULL;
-                       printf("no partitions allowed after a fill-up partition\n");
-                       return 1;
-               }
-               *ret = ++p;
-       } else if ((*p == ';') || (*p == '\0')) {
-               *ret = p;
-       } else {
-               printf("unexpected character '%c' at the end of partition\n", *p);
-               *ret = NULL;
-               return 1;
-       }
-
-       /*  allocate memory */
-       part = (struct part_info *)malloc(sizeof(struct part_info) + name_len);
-       if (!part) {
-               printf("out of memory\n");
-               return 1;
-       }
-       memset(part, 0, sizeof(struct part_info) + name_len);
-       part->size = size;
-       part->offset = offset;
-       part->mask_flags = mask_flags;
-       part->name = (char *)(part + 1);
-
-       if (name) {
-               /* copy user provided name */
-               strncpy(part->name, name, name_len - 1);
-               part->auto_name = 0;
-       } else {
-               /* auto generated name in form of size@offset */
-               sprintf(part->name, "0x%08lx@0x%08lx", size, offset);
-               part->auto_name = 1;
-       }
-
-       part->name[name_len - 1] = '\0';
-       INIT_LIST_HEAD(&part->link);
-
-       DEBUGF("+ partition: name %-22s size 0x%08x offset 0x%08x mask flags %d\n",
-                       part->name, part->size,
-                       part->offset, part->mask_flags);
-
-       *retpart = part;
-       return 0;
-}
-#endif/* #ifdef CONFIG_JFFS2_CMDLINE */
-
-/**
- * Check device number to be within valid range for given device type.
- *
- * @param dev device to validate
- * @return 0 if device is valid, 1 otherwise
- */
-static int device_validate(u8 type, u8 num, u32 *size)
-{
-       if (type == MTD_DEV_TYPE_NOR) {
-#if defined(CONFIG_CMD_FLASH)
-               if (num < CONFIG_SYS_MAX_FLASH_BANKS) {
-                       extern flash_info_t flash_info[];
-                       *size = flash_info[num].size;
-
-                       return 0;
-               }
-
-               printf("no such FLASH device: %s%d (valid range 0 ... %d\n",
-                               MTD_DEV_TYPE(type), num, CONFIG_SYS_MAX_FLASH_BANKS - 1);
-#else
-               printf("support for FLASH devices not present\n");
-#endif
-       } else if (type == MTD_DEV_TYPE_NAND) {
-#if defined(CONFIG_JFFS2_NAND) && defined(CONFIG_CMD_NAND)
-               if (num < CONFIG_SYS_MAX_NAND_DEVICE) {
-#ifndef CONFIG_NAND_LEGACY
-                       *size = nand_info[num].size;
-#else
-                       extern struct nand_chip nand_dev_desc[CONFIG_SYS_MAX_NAND_DEVICE];
-                       *size = nand_dev_desc[num].totlen;
-#endif
-                       return 0;
-               }
-
-               printf("no such NAND device: %s%d (valid range 0 ... %d)\n",
-                               MTD_DEV_TYPE(type), num, CONFIG_SYS_MAX_NAND_DEVICE - 1);
-#else
-               printf("support for NAND devices not present\n");
-#endif
-       } else if (type == MTD_DEV_TYPE_ONENAND) {
-#if defined(CONFIG_CMD_ONENAND)
-               *size = onenand_mtd.size;
-               return 0;
-#else
-               printf("support for OneNAND devices not present\n");
-#endif
-       } else
-               printf("Unknown defice type %d\n", type);
-
-       return 1;
-}
-
-#ifdef CONFIG_JFFS2_CMDLINE
-/**
- * Delete all mtd devices from a supplied devices list, free memory allocated for
- * each device and delete all device partitions.
- *
- * @return 0 on success, 1 otherwise
- */
-static int device_delall(struct list_head *head)
-{
-       struct list_head *entry, *n;
-       struct mtd_device *dev_tmp;
-
-       /* clean devices list */
-       list_for_each_safe(entry, n, head) {
-               dev_tmp = list_entry(entry, struct mtd_device, link);
-               list_del(entry);
-               part_delall(&dev_tmp->parts);
-               free(dev_tmp);
-       }
-       INIT_LIST_HEAD(&devices);
-
-       return 0;
-}
-
-/**
- * If provided device exists it's partitions are deleted, device is removed
- * from device list and device memory is freed.
- *
- * @param dev device to be deleted
- * @return 0 on success, 1 otherwise
- */
-static int device_del(struct mtd_device *dev)
-{
-       part_delall(&dev->parts);
-       list_del(&dev->link);
-       free(dev);
-
-       if (dev == current_dev) {
-               /* we just deleted current device */
-               if (list_empty(&devices)) {
-                       current_dev = NULL;
-               } else {
-                       /* reset first partition from first dev from the
-                        * devices list as current */
-                       current_dev = list_entry(devices.next, struct mtd_device, link);
-                       current_partnum = 0;
-               }
-               current_save();
-               return 0;
-       }
-
-       index_partitions();
-       return 0;
-}
-
-/**
- * Search global device list and return pointer to the device of type and num
- * specified.
- *
- * @param type device type
- * @param num device number
- * @return NULL if requested device does not exist
- */
-static struct mtd_device* device_find(u8 type, u8 num)
-{
-       struct list_head *entry;
-       struct mtd_device *dev_tmp;
-
-       list_for_each(entry, &devices) {
-               dev_tmp = list_entry(entry, struct mtd_device, link);
-
-               if ((dev_tmp->id->type == type) && (dev_tmp->id->num == num))
-                       return dev_tmp;
-       }
-
-       return NULL;
-}
-
-/**
- * Add specified device to the global device list.
- *
- * @param dev device to be added
- */
-static void device_add(struct mtd_device *dev)
-{
-       u8 current_save_needed = 0;
-
-       if (list_empty(&devices)) {
-               current_dev = dev;
-               current_partnum = 0;
-               current_save_needed = 1;
-       }
-
-       list_add_tail(&dev->link, &devices);
-
-       if (current_save_needed > 0)
-               current_save();
-       else
-               index_partitions();
-}
-
-/**
- * Parse device type, name and mtd-id. If syntax is ok allocate memory and
- * return pointer to the device structure.
- *
- * @param mtd_dev pointer to the device definition string i.e. <mtd-dev>
- * @param ret output pointer to next char after parse completes (output)
- * @param retdev pointer to the allocated device (output)
- * @return 0 on success, 1 otherwise
- */
-static int device_parse(const char *const mtd_dev, const char **ret, struct mtd_device **retdev)
-{
-       struct mtd_device *dev;
-       struct part_info *part;
-       struct mtdids *id;
-       const char *mtd_id;
-       unsigned int mtd_id_len;
-       const char *p, *pend;
-       LIST_HEAD(tmp_list);
-       struct list_head *entry, *n;
-       u16 num_parts;
-       u32 offset;
-       int err = 1;
-
-       p = mtd_dev;
-       *retdev = NULL;
-       *ret = NULL;
-
-       DEBUGF("===device_parse===\n");
-
-       /* fetch <mtd-id> */
-       mtd_id = p;
-       if (!(p = strchr(mtd_id, ':'))) {
-               printf("no <mtd-id> identifier\n");
-               return 1;
-       }
-       mtd_id_len = p - mtd_id + 1;
-       p++;
-
-       /* verify if we have a valid device specified */
-       if ((id = id_find_by_mtd_id(mtd_id, mtd_id_len - 1)) == NULL) {
-               printf("invalid mtd device '%.*s'\n", mtd_id_len - 1, mtd_id);
-               return 1;
-       }
-
-       DEBUGF("dev type = %d (%s), dev num = %d, mtd-id = %s\n",
-                       id->type, MTD_DEV_TYPE(id->type),
-                       id->num, id->mtd_id);
-       pend = strchr(p, ';');
-       DEBUGF("parsing partitions %.*s\n", (pend ? pend - p : strlen(p)), p);
-
-
-       /* parse partitions */
-       num_parts = 0;
-
-       offset = 0;
-       if ((dev = device_find(id->type, id->num)) != NULL) {
-               /* if device already exists start at the end of the last partition */
-               part = list_entry(dev->parts.prev, struct part_info, link);
-               offset = part->offset + part->size;
-       }
-
-       while (p && (*p != '\0') && (*p != ';')) {
-               err = 1;
-               if ((part_parse(p, &p, &part) != 0) || (!part))
-                       break;
-
-               /* calculate offset when not specified */
-               if (part->offset == OFFSET_NOT_SPECIFIED)
-                       part->offset = offset;
-               else
-                       offset = part->offset;
-
-               /* verify alignment and size */
-               if (part_validate(id, part) != 0)
-                       break;
-
-               offset += part->size;
-
-               /* partition is ok, add it to the list */
-               list_add_tail(&part->link, &tmp_list);
-               num_parts++;
-               err = 0;
-       }
-       if (err == 1) {
-               part_delall(&tmp_list);
-               return 1;
-       }
-
-       if (num_parts == 0) {
-               printf("no partitions for device %s%d (%s)\n",
-                               MTD_DEV_TYPE(id->type), id->num, id->mtd_id);
-               return 1;
-       }
-
-       DEBUGF("\ntotal partitions: %d\n", num_parts);
-
-       /* check for next device presence */
-       if (p) {
-               if (*p == ';') {
-                       *ret = ++p;
-               } else if (*p == '\0') {
-                       *ret = p;
-               } else {
-                       printf("unexpected character '%c' at the end of device\n", *p);
-                       *ret = NULL;
-                       return 1;
-               }
-       }
-
-       /* allocate memory for mtd_device structure */
-       if ((dev = (struct mtd_device *)malloc(sizeof(struct mtd_device))) == NULL) {
-               printf("out of memory\n");
-               return 1;
-       }
-       memset(dev, 0, sizeof(struct mtd_device));
-       dev->id = id;
-       dev->num_parts = 0; /* part_sort_add increments num_parts */
-       INIT_LIST_HEAD(&dev->parts);
-       INIT_LIST_HEAD(&dev->link);
-
-       /* move partitions from tmp_list to dev->parts */
-       list_for_each_safe(entry, n, &tmp_list) {
-               part = list_entry(entry, struct part_info, link);
-               list_del(entry);
-               if (part_sort_add(dev, part) != 0) {
-                       device_del(dev);
-                       return 1;
-               }
-       }
-
-       *retdev = dev;
-
-       DEBUGF("===\n\n");
-       return 0;
-}
-
-/**
- * Initialize global device list.
- *
- * @return 0 on success, 1 otherwise
- */
-static int jffs2_devices_init(void)
-{
-       last_parts[0] = '\0';
-       current_dev = NULL;
-       current_save();
-
-       return device_delall(&devices);
-}
-
-/*
- * Search global mtdids list and find id of requested type and number.
- *
- * @return pointer to the id if it exists, NULL otherwise
- */
-static struct mtdids* id_find(u8 type, u8 num)
-{
-       struct list_head *entry;
-       struct mtdids *id;
-
-       list_for_each(entry, &mtdids) {
-               id = list_entry(entry, struct mtdids, link);
-
-               if ((id->type == type) && (id->num == num))
-                       return id;
-       }
-
-       return NULL;
-}
-
-/**
- * Search global mtdids list and find id of a requested mtd_id.
- *
- * Note: first argument is not null terminated.
- *
- * @param mtd_id string containing requested mtd_id
- * @param mtd_id_len length of supplied mtd_id
- * @return pointer to the id if it exists, NULL otherwise
- */
-static struct mtdids* id_find_by_mtd_id(const char *mtd_id, unsigned int mtd_id_len)
-{
-       struct list_head *entry;
-       struct mtdids *id;
-
-       DEBUGF("--- id_find_by_mtd_id: '%.*s' (len = %d)\n",
-                       mtd_id_len, mtd_id, mtd_id_len);
-
-       list_for_each(entry, &mtdids) {
-               id = list_entry(entry, struct mtdids, link);
-
-               DEBUGF("entry: '%s' (len = %d)\n",
-                               id->mtd_id, strlen(id->mtd_id));
-
-               if (mtd_id_len != strlen(id->mtd_id))
-                       continue;
-               if (strncmp(id->mtd_id, mtd_id, mtd_id_len) == 0)
-                       return id;
-       }
-
-       return NULL;
-}
-#endif /* #ifdef CONFIG_JFFS2_CMDLINE */
-
-/**
- * Parse device id string <dev-id> := 'nand'|'nor'|'onenand'<dev-num>,
- * return device type and number.
- *
- * @param id string describing device id
- * @param ret_id output pointer to next char after parse completes (output)
- * @param dev_type parsed device type (output)
- * @param dev_num parsed device number (output)
- * @return 0 on success, 1 otherwise
- */
-int id_parse(const char *id, const char **ret_id, u8 *dev_type, u8 *dev_num)
-{
-       const char *p = id;
-
-       *dev_type = 0;
-       if (strncmp(p, "nand", 4) == 0) {
-               *dev_type = MTD_DEV_TYPE_NAND;
-               p += 4;
-       } else if (strncmp(p, "nor", 3) == 0) {
-               *dev_type = MTD_DEV_TYPE_NOR;
-               p += 3;
-       } else if (strncmp(p, "onenand", 7) == 0) {
-               *dev_type = MTD_DEV_TYPE_ONENAND;
-               p += 7;
-       } else {
-               printf("incorrect device type in %s\n", id);
-               return 1;
-       }
-
-       if (!isdigit(*p)) {
-               printf("incorrect device number in %s\n", id);
-               return 1;
-       }
-
-       *dev_num = simple_strtoul(p, (char **)&p, 0);
-       if (ret_id)
-               *ret_id = p;
-       return 0;
-}
-
-#ifdef CONFIG_JFFS2_CMDLINE
-/**
- * Process all devices and generate corresponding mtdparts string describing
- * all partitions on all devices.
- *
- * @param buf output buffer holding generated mtdparts string (output)
- * @param buflen buffer size
- * @return 0 on success, 1 otherwise
- */
-static int generate_mtdparts(char *buf, u32 buflen)
-{
-       struct list_head *pentry, *dentry;
-       struct mtd_device *dev;
-       struct part_info *part, *prev_part;
-       char *p = buf;
-       char tmpbuf[32];
-       u32 size, offset, len, part_cnt;
-       u32 maxlen = buflen - 1;
-
-       DEBUGF("--- generate_mtdparts ---\n");
-
-       if (list_empty(&devices)) {
-               buf[0] = '\0';
-               return 0;
-       }
-
-       sprintf(p, "mtdparts=");
-       p += 9;
-
-       list_for_each(dentry, &devices) {
-               dev = list_entry(dentry, struct mtd_device, link);
-
-               /* copy mtd_id */
-               len = strlen(dev->id->mtd_id) + 1;
-               if (len > maxlen)
-                       goto cleanup;
-               memcpy(p, dev->id->mtd_id, len - 1);
-               p += len - 1;
-               *(p++) = ':';
-               maxlen -= len;
-
-               /* format partitions */
-               prev_part = NULL;
-               part_cnt = 0;
-               list_for_each(pentry, &dev->parts) {
-                       part = list_entry(pentry, struct part_info, link);
-                       size = part->size;
-                       offset = part->offset;
-                       part_cnt++;
-
-                       /* partition size */
-                       memsize_format(tmpbuf, size);
-                       len = strlen(tmpbuf);
-                       if (len > maxlen)
-                               goto cleanup;
-                       memcpy(p, tmpbuf, len);
-                       p += len;
-                       maxlen -= len;
-
-
-                       /* add offset only when there is a gap between
-                        * partitions */
-                       if ((!prev_part && (offset != 0)) ||
-                                       (prev_part && ((prev_part->offset + prev_part->size) != part->offset))) {
-
-                               memsize_format(tmpbuf, offset);
-                               len = strlen(tmpbuf) + 1;
-                               if (len > maxlen)
-                                       goto cleanup;
-                               *(p++) = '@';
-                               memcpy(p, tmpbuf, len - 1);
-                               p += len - 1;
-                               maxlen -= len;
-                       }
-
-                       /* copy name only if user supplied */
-                       if(!part->auto_name) {
-                               len = strlen(part->name) + 2;
-                               if (len > maxlen)
-                                       goto cleanup;
-
-                               *(p++) = '(';
-                               memcpy(p, part->name, len - 2);
-                               p += len - 2;
-                               *(p++) = ')';
-                               maxlen -= len;
-                       }
-
-                       /* ro mask flag */
-                       if (part->mask_flags && MTD_WRITEABLE_CMD) {
-                               len = 2;
-                               if (len > maxlen)
-                                       goto cleanup;
-                               *(p++) = 'r';
-                               *(p++) = 'o';
-                               maxlen -= 2;
-                       }
-
-                       /* print ',' separator if there are other partitions
-                        * following */
-                       if (dev->num_parts > part_cnt) {
-                               if (1 > maxlen)
-                                       goto cleanup;
-                               *(p++) = ',';
-                               maxlen--;
-                       }
-                       prev_part = part;
-               }
-               /* print ';' separator if there are other devices following */
-               if (dentry->next != &devices) {
-                       if (1 > maxlen)
-                               goto cleanup;
-                       *(p++) = ';';
-                       maxlen--;
-               }
-       }
-
-       /* we still have at least one char left, as we decremented maxlen at
-        * the begining */
-       *p = '\0';
-
-       return 0;
-
-cleanup:
-       last_parts[0] = '\0';
-       return 1;
-}
-
-/**
- * Call generate_mtdparts to process all devices and generate corresponding
- * mtdparts string, save it in mtdparts environment variable.
- *
- * @param buf output buffer holding generated mtdparts string (output)
- * @param buflen buffer size
- * @return 0 on success, 1 otherwise
- */
-static int generate_mtdparts_save(char *buf, u32 buflen)
-{
-       int ret;
-
-       ret = generate_mtdparts(buf, buflen);
-
-       if ((buf[0] != '\0') && (ret == 0))
-               setenv("mtdparts", buf);
-       else
-               setenv("mtdparts", NULL);
-
-       return ret;
-}
-
-/**
- * Format and print out a partition list for each device from global device
- * list.
- */
-static void list_partitions(void)
-{
-       struct list_head *dentry, *pentry;
-       struct part_info *part;
-       struct mtd_device *dev;
-       int part_num;
-
-       DEBUGF("\n---list_partitions---\n");
-       list_for_each(dentry, &devices) {
-               dev = list_entry(dentry, struct mtd_device, link);
-               printf("\ndevice %s%d <%s>, # parts = %d\n",
-                               MTD_DEV_TYPE(dev->id->type), dev->id->num,
-                               dev->id->mtd_id, dev->num_parts);
-               printf(" #: name\t\t\tsize\t\toffset\t\tmask_flags\n");
-
-               /* list partitions for given device */
-               part_num = 0;
-               list_for_each(pentry, &dev->parts) {
-                       part = list_entry(pentry, struct part_info, link);
-                       printf("%2d: %-20s0x%08x\t0x%08x\t%d\n",
-                                       part_num, part->name, part->size,
-                                       part->offset, part->mask_flags);
-
-                       part_num++;
-               }
-       }
-       if (list_empty(&devices))
-               printf("no partitions defined\n");
-
-       /* current_dev is not NULL only when we have non empty device list */
-       if (current_dev) {
-               part = jffs2_part_info(current_dev, current_partnum);
-               if (part) {
-                       printf("\nactive partition: %s%d,%d - (%s) 0x%08x @ 0x%08x\n",
-                                       MTD_DEV_TYPE(current_dev->id->type),
-                                       current_dev->id->num, current_partnum,
-                                       part->name, part->size, part->offset);
-               } else {
-                       printf("could not get current partition info\n\n");
-               }
-       }
-
-       printf("\ndefaults:\n");
-       printf("mtdids  : %s\n", mtdids_default);
-       printf("mtdparts: %s\n", mtdparts_default);
-}
-
-/**
- * Given partition identifier in form of <dev_type><dev_num>,<part_num> find
- * corresponding device and verify partition number.
- *
- * @param id string describing device and partition or partition name
- * @param dev pointer to the requested device (output)
- * @param part_num verified partition number (output)
- * @param part pointer to requested partition (output)
- * @return 0 on success, 1 otherwise
- */
-int find_dev_and_part(const char *id, struct mtd_device **dev,
-               u8 *part_num, struct part_info **part)
-{
-       struct list_head *dentry, *pentry;
-       u8 type, dnum, pnum;
-       const char *p;
-
-       DEBUGF("--- find_dev_and_part ---\nid = %s\n", id);
-
-       list_for_each(dentry, &devices) {
-               *part_num = 0;
-               *dev = list_entry(dentry, struct mtd_device, link);
-               list_for_each(pentry, &(*dev)->parts) {
-                       *part = list_entry(pentry, struct part_info, link);
-                       if (strcmp((*part)->name, id) == 0)
-                               return 0;
-                       (*part_num)++;
-               }
-       }
-
-       p = id;
-       *dev = NULL;
-       *part = NULL;
-       *part_num = 0;
-
-       if (id_parse(p, &p, &type, &dnum) != 0)
-               return 1;
-
-       if ((*p++ != ',') || (*p == '\0')) {
-               printf("no partition number specified\n");
-               return 1;
-       }
-       pnum = simple_strtoul(p, (char **)&p, 0);
-       if (*p != '\0') {
-               printf("unexpected trailing character '%c'\n", *p);
-               return 1;
-       }
-
-       if ((*dev = device_find(type, dnum)) == NULL) {
-               printf("no such device %s%d\n", MTD_DEV_TYPE(type), dnum);
-               return 1;
-       }
-
-       if ((*part = jffs2_part_info(*dev, pnum)) == NULL) {
-               printf("no such partition\n");
-               *dev = NULL;
-               return 1;
-       }
-
-       *part_num = pnum;
-
-       return 0;
-}
-
-/**
- * Find and delete partition. For partition id format see find_dev_and_part().
- *
- * @param id string describing device and partition
- * @return 0 on success, 1 otherwise
- */
-static int delete_partition(const char *id)
-{
-       u8 pnum;
-       struct mtd_device *dev;
-       struct part_info *part;
-
-       if (find_dev_and_part(id, &dev, &pnum, &part) == 0) {
-
-               DEBUGF("delete_partition: device = %s%d, partition %d = (%s) 0x%08lx@0x%08lx\n",
-                               MTD_DEV_TYPE(dev->id->type), dev->id->num, pnum,
-                               part->name, part->size, part->offset);
-
-               if (part_del(dev, part) != 0)
-                       return 1;
-
-               if (generate_mtdparts_save(last_parts, MTDPARTS_MAXLEN) != 0) {
-                       printf("generated mtdparts too long, reseting to null\n");
-                       return 1;
-               }
-               return 0;
-       }
-
-       printf("partition %s not found\n", id);
-       return 1;
-}
-
-/**
- * Accept character string describing mtd partitions and call device_parse()
- * for each entry. Add created devices to the global devices list.
- *
- * @param mtdparts string specifing mtd partitions
- * @return 0 on success, 1 otherwise
- */
-static int parse_mtdparts(const char *const mtdparts)
-{
-       const char *p = mtdparts;
-       struct mtd_device *dev;
-       int err = 1;
-
-       DEBUGF("\n---parse_mtdparts---\nmtdparts = %s\n\n", p);
-
-       /* delete all devices and partitions */
-       if (jffs2_devices_init() != 0) {
-               printf("could not initialise device list\n");
-               return err;
-       }
-
-       /* re-read 'mtdparts' variable, jffs2_devices_init may be updating env */
-       p = getenv("mtdparts");
-
-       if (strncmp(p, "mtdparts=", 9) != 0) {
-               printf("mtdparts variable doesn't start with 'mtdparts='\n");
-               return err;
-       }
-       p += 9;
-
-       while (p && (*p != '\0')) {
-               err = 1;
-               if ((device_parse(p, &p, &dev) != 0) || (!dev))
-                       break;
-
-               DEBUGF("+ device: %s\t%d\t%s\n", MTD_DEV_TYPE(dev->id->type),
-                               dev->id->num, dev->id->mtd_id);
-
-               /* check if parsed device is already on the list */
-               if (device_find(dev->id->type, dev->id->num) != NULL) {
-                       printf("device %s%d redefined, please correct mtdparts variable\n",
-                                       MTD_DEV_TYPE(dev->id->type), dev->id->num);
-                       break;
-               }
-
-               list_add_tail(&dev->link, &devices);
-               err = 0;
-       }
-       if (err == 1) {
-               device_delall(&devices);
-               return 1;
-       }
-
-       return 0;
-}
-
-/**
- * Parse provided string describing mtdids mapping (see file header for mtdids
- * variable format). Allocate memory for each entry and add all found entries
- * to the global mtdids list.
- *
- * @param ids mapping string
- * @return 0 on success, 1 otherwise
- */
-static int parse_mtdids(const char *const ids)
-{
-       const char *p = ids;
-       const char *mtd_id;
-       int mtd_id_len;
-       struct mtdids *id;
-       struct list_head *entry, *n;
-       struct mtdids *id_tmp;
-       u8 type, num;
-       u32 size;
-       int ret = 1;
-
-       DEBUGF("\n---parse_mtdids---\nmtdids = %s\n\n", ids);
-
-       /* clean global mtdids list */
-       list_for_each_safe(entry, n, &mtdids) {
-               id_tmp = list_entry(entry, struct mtdids, link);
-               DEBUGF("mtdids del: %d %d\n", id_tmp->type, id_tmp->num);
-               list_del(entry);
-               free(id_tmp);
-       }
-       last_ids[0] = '\0';
-       INIT_LIST_HEAD(&mtdids);
-
-       while(p && (*p != '\0')) {
-
-               ret = 1;
-               /* parse 'nor'|'nand'|'onenand'<dev-num> */
-               if (id_parse(p, &p, &type, &num) != 0)
-                       break;
-
-               if (*p != '=') {
-                       printf("mtdids: incorrect <dev-num>\n");
-                       break;
-               }
-               p++;
-
-               /* check if requested device exists */
-               if (device_validate(type, num, &size) != 0)
-                       return 1;
-
-               /* locate <mtd-id> */
-               mtd_id = p;
-               if ((p = strchr(mtd_id, ',')) != NULL) {
-                       mtd_id_len = p - mtd_id + 1;
-                       p++;
-               } else {
-                       mtd_id_len = strlen(mtd_id) + 1;
-               }
-               if (mtd_id_len == 0) {
-                       printf("mtdids: no <mtd-id> identifier\n");
-                       break;
-               }
-
-               /* check if this id is already on the list */
-               int double_entry = 0;
-               list_for_each(entry, &mtdids) {
-                       id_tmp = list_entry(entry, struct mtdids, link);
-                       if ((id_tmp->type == type) && (id_tmp->num == num)) {
-                               double_entry = 1;
-                               break;
-                       }
-               }
-               if (double_entry) {
-                       printf("device id %s%d redefined, please correct mtdids variable\n",
-                                       MTD_DEV_TYPE(type), num);
-                       break;
-               }
-
-               /* allocate mtdids structure */
-               if (!(id = (struct mtdids *)malloc(sizeof(struct mtdids) + mtd_id_len))) {
-                       printf("out of memory\n");
-                       break;
-               }
-               memset(id, 0, sizeof(struct mtdids) + mtd_id_len);
-               id->num = num;
-               id->type = type;
-               id->size = size;
-               id->mtd_id = (char *)(id + 1);
-               strncpy(id->mtd_id, mtd_id, mtd_id_len - 1);
-               id->mtd_id[mtd_id_len - 1] = '\0';
-               INIT_LIST_HEAD(&id->link);
-
-               DEBUGF("+ id %s%d\t%16d bytes\t%s\n",
-                               MTD_DEV_TYPE(id->type), id->num,
-                               id->size, id->mtd_id);
-
-               list_add_tail(&id->link, &mtdids);
-               ret = 0;
-       }
-       if (ret == 1) {
-               /* clean mtdids list and free allocated memory */
-               list_for_each_safe(entry, n, &mtdids) {
-                       id_tmp = list_entry(entry, struct mtdids, link);
-                       list_del(entry);
-                       free(id_tmp);
-               }
-               return 1;
-       }
-
-       return 0;
-}
-
-/**
- * Parse and initialize global mtdids mapping and create global
- * device/partition list.
- *
- * @return 0 on success, 1 otherwise
- */
-int mtdparts_init(void)
-{
-       static int initialized = 0;
-       const char *ids, *parts;
-       const char *current_partition;
-       int ids_changed;
-       char tmp_ep[PARTITION_MAXLEN];
-
-       DEBUGF("\n---mtdparts_init---\n");
-       if (!initialized) {
-               INIT_LIST_HEAD(&mtdids);
-               INIT_LIST_HEAD(&devices);
-               memset(last_ids, 0, MTDIDS_MAXLEN);
-               memset(last_parts, 0, MTDPARTS_MAXLEN);
-               memset(last_partition, 0, PARTITION_MAXLEN);
-               initialized = 1;
-       }
-
-       /* get variables */
-       ids = getenv("mtdids");
-       parts = getenv("mtdparts");
-       current_partition = getenv("partition");
-
-       /* save it for later parsing, cannot rely on current partition pointer
-        * as 'partition' variable may be updated during init */
-       tmp_ep[0] = '\0';
-       if (current_partition)
-               strncpy(tmp_ep, current_partition, PARTITION_MAXLEN);
-
-       DEBUGF("last_ids  : %s\n", last_ids);
-       DEBUGF("env_ids   : %s\n", ids);
-       DEBUGF("last_parts: %s\n", last_parts);
-       DEBUGF("env_parts : %s\n\n", parts);
-
-       DEBUGF("last_partition : %s\n", last_partition);
-       DEBUGF("env_partition  : %s\n", current_partition);
-
-       /* if mtdids varible is empty try to use defaults */
-       if (!ids) {
-               if (mtdids_default) {
-                       DEBUGF("mtdids variable not defined, using default\n");
-                       ids = mtdids_default;
-                       setenv("mtdids", (char *)ids);
-               } else {
-                       printf("mtdids not defined, no default present\n");
-                       return 1;
-               }
-       }
-       if (strlen(ids) > MTDIDS_MAXLEN - 1) {
-               printf("mtdids too long (> %d)\n", MTDIDS_MAXLEN);
-               return 1;
-       }
-
-       /* do no try to use defaults when mtdparts variable is not defined,
-        * just check the length */
-       if (!parts)
-               printf("mtdparts variable not set, see 'help mtdparts'\n");
-
-       if (parts && (strlen(parts) > MTDPARTS_MAXLEN - 1)) {
-               printf("mtdparts too long (> %d)\n", MTDPARTS_MAXLEN);
-               return 1;
-       }
-
-       /* check if we have already parsed those mtdids */
-       if ((last_ids[0] != '\0') && (strcmp(last_ids, ids) == 0)) {
-               ids_changed = 0;
-       } else {
-               ids_changed = 1;
-
-               if (parse_mtdids(ids) != 0) {
-                       jffs2_devices_init();
-                       return 1;
-               }
-
-               /* ok it's good, save new ids */
-               strncpy(last_ids, ids, MTDIDS_MAXLEN);
-       }
-
-       /* parse partitions if either mtdparts or mtdids were updated */
-       if (parts && ((last_parts[0] == '\0') || ((strcmp(last_parts, parts) != 0)) || ids_changed)) {
-               if (parse_mtdparts(parts) != 0)
-                       return 1;
-
-               if (list_empty(&devices)) {
-                       printf("mtdparts_init: no valid partitions\n");
-                       return 1;
-               }
-
-               /* ok it's good, save new parts */
-               strncpy(last_parts, parts, MTDPARTS_MAXLEN);
-
-               /* reset first partition from first dev from the list as current */
-               current_dev = list_entry(devices.next, struct mtd_device, link);
-               current_partnum = 0;
-               current_save();
-
-               DEBUGF("mtdparts_init: current_dev  = %s%d, current_partnum = %d\n",
-                               MTD_DEV_TYPE(current_dev->id->type),
-                               current_dev->id->num, current_partnum);
-       }
-
-       /* mtdparts variable was reset to NULL, delete all devices/partitions */
-       if (!parts && (last_parts[0] != '\0'))
-               return jffs2_devices_init();
-
-       /* do not process current partition if mtdparts variable is null */
-       if (!parts)
-               return 0;
-
-       /* is current partition set in environment? if so, use it */
-       if ((tmp_ep[0] != '\0') && (strcmp(tmp_ep, last_partition) != 0)) {
-               struct part_info *p;
-               struct mtd_device *cdev;
-               u8 pnum;
-
-               DEBUGF("--- getting current partition: %s\n", tmp_ep);
-
-               if (find_dev_and_part(tmp_ep, &cdev, &pnum, &p) == 0) {
-                       current_dev = cdev;
-                       current_partnum = pnum;
-                       current_save();
-               }
-       } else if (getenv("partition") == NULL) {
-               DEBUGF("no partition variable set, setting...\n");
-               current_save();
-       }
-
-       return 0;
-}
-#else /* #ifdef CONFIG_JFFS2_CMDLINE */
-/*
- * 'Static' version of command line mtdparts_init() routine. Single partition on
- * a single device configuration.
- */
-
-/**
- * Calculate sector size.
- *
- * @return sector size
- */
-static inline u32 get_part_sector_size_nand(struct mtdids *id)
-{
-#if defined(CONFIG_JFFS2_NAND) && defined(CONFIG_CMD_NAND)
-#if defined(CONFIG_NAND_LEGACY)
-       extern struct nand_chip nand_dev_desc[CONFIG_SYS_MAX_NAND_DEVICE];
-
-       return nand_dev_desc[id->num].erasesize;
-#else
-       nand_info_t *nand;
-
-       nand = &nand_info[id->num];
-
-       return nand->erasesize;
-#endif
-#else
-       BUG();
-       return 0;
-#endif
-}
-
-static inline u32 get_part_sector_size_nor(struct mtdids *id, struct part_info *part)
-{
-#if defined(CONFIG_CMD_FLASH)
-       extern flash_info_t flash_info[];
-
-       u32 end_phys, start_phys, sector_size = 0, size = 0;
-       int i;
-       flash_info_t *flash;
-
-       flash = &flash_info[id->num];
-
-       start_phys = flash->start[0] + part->offset;
-       end_phys = start_phys + part->size;
-
-       for (i = 0; i < flash->sector_count; i++) {
-               if (flash->start[i] >= end_phys)
-                       break;
-
-               if (flash->start[i] >= start_phys) {
-                       if (i == flash->sector_count - 1) {
-                               size = flash->start[0] + flash->size - flash->start[i];
-                       } else {
-                               size = flash->start[i+1] - flash->start[i];
-                       }
-
-                       if (sector_size < size)
-                               sector_size = size;
-               }
-       }
-
-       return sector_size;
-#else
-       BUG();
-       return 0;
-#endif
-}
-
-static inline u32 get_part_sector_size_onenand(void)
-{
-#if defined(CONFIG_CMD_ONENAND)
-       struct mtd_info *mtd;
-
-       mtd = &onenand_mtd;
-
-       return mtd->erasesize;
-#else
-       BUG();
-       return 0;
-#endif
-}
-
-static inline u32 get_part_sector_size(struct mtdids *id, struct part_info *part)
-{
-       if (id->type == MTD_DEV_TYPE_NAND)
-               return get_part_sector_size_nand(id);
-       else if (id->type == MTD_DEV_TYPE_NOR)
-               return get_part_sector_size_nor(id, part);
-       else if (id->type == MTD_DEV_TYPE_ONENAND)
-               return get_part_sector_size_onenand();
-       else
-               DEBUGF("Error: Unknown device type.\n");
-
-       return 0;
-}
-
-/**
- * Parse and initialize global mtdids mapping and create global
- * device/partition list.
- *
- * @return 0 on success, 1 otherwise
- */
-int mtdparts_init(void)
-{
-       static int initialized = 0;
-       u32 size;
-       char *dev_name;
-
-       DEBUGF("\n---mtdparts_init---\n");
-       if (!initialized) {
-               struct mtdids *id;
-               struct part_info *part;
-
-               initialized = 1;
-               current_dev = (struct mtd_device *)
-                       malloc(sizeof(struct mtd_device) +
-                                       sizeof(struct part_info) +
-                                       sizeof(struct mtdids));
-               if (!current_dev) {
-                       printf("out of memory\n");
-                       return 1;
-               }
-               memset(current_dev, 0, sizeof(struct mtd_device) +
-                                       sizeof(struct part_info) + sizeof(struct mtdids));
-
-               id = (struct mtdids *)(current_dev + 1);
-               part = (struct part_info *)(id + 1);
-
-               /* id */
-               id->mtd_id = "single part";
-
-#if defined(CONFIG_JFFS2_DEV)
-               dev_name = CONFIG_JFFS2_DEV;
-#else
-               dev_name = "nor0";
-#endif
-
-               if ((id_parse(dev_name, NULL, &id->type, &id->num) != 0) ||
-                               (device_validate(id->type, id->num, &size) != 0)) {
-                       printf("incorrect device: %s%d\n", MTD_DEV_TYPE(id->type), id->num);
-                       free(current_dev);
-                       return 1;
-               }
-               id->size = size;
-               INIT_LIST_HEAD(&id->link);
-
-               DEBUGF("dev id: type = %d, num = %d, size = 0x%08lx, mtd_id = %s\n",
-                               id->type, id->num, id->size, id->mtd_id);
-
-               /* partition */
-               part->name = "static";
-               part->auto_name = 0;
-
-#if defined(CONFIG_JFFS2_PART_SIZE)
-               part->size = CONFIG_JFFS2_PART_SIZE;
-#else
-               part->size = SIZE_REMAINING;
-#endif
-
-#if defined(CONFIG_JFFS2_PART_OFFSET)
-               part->offset = CONFIG_JFFS2_PART_OFFSET;
-#else
-               part->offset = 0x00000000;
-#endif
-
-               part->sector_size = get_part_sector_size(id, part);
-
-               part->dev = current_dev;
-               INIT_LIST_HEAD(&part->link);
-
-               /* recalculate size if needed */
-               if (part->size == SIZE_REMAINING)
-                       part->size = id->size - part->offset;
-
-               DEBUGF("part  : name = %s, size = 0x%08lx, offset = 0x%08lx\n",
-                               part->name, part->size, part->offset);
-
-               /* device */
-               current_dev->id = id;
-               INIT_LIST_HEAD(&current_dev->link);
-               current_dev->num_parts = 1;
-               INIT_LIST_HEAD(&current_dev->parts);
-               list_add(&part->link, &current_dev->parts);
-       }
-
-       return 0;
-}
-#endif /* #ifdef CONFIG_JFFS2_CMDLINE */
-
-/**
- * Return pointer to the partition of a requested number from a requested
- * device.
- *
- * @param dev device that is to be searched for a partition
- * @param part_num requested partition number
- * @return pointer to the part_info, NULL otherwise
- */
-static struct part_info* jffs2_part_info(struct mtd_device *dev, unsigned int part_num)
-{
-       struct list_head *entry;
-       struct part_info *part;
-       int num;
-
-       if (!dev)
-               return NULL;
-
-       DEBUGF("\n--- jffs2_part_info: partition number %d for device %s%d (%s)\n",
-                       part_num, MTD_DEV_TYPE(dev->id->type),
-                       dev->id->num, dev->id->mtd_id);
-
-       if (part_num >= dev->num_parts) {
-               printf("invalid partition number %d for device %s%d (%s)\n",
-                               part_num, MTD_DEV_TYPE(dev->id->type),
-                               dev->id->num, dev->id->mtd_id);
-               return NULL;
-       }
-
-       /* locate partition number, return it */
-       num = 0;
-       list_for_each(entry, &dev->parts) {
-               part = list_entry(entry, struct part_info, link);
-
-               if (part_num == num++) {
-                       return part;
-               }
-       }
-
-       return NULL;
-}
-
-/***************************************************/
-/* U-boot commands                                */
-/***************************************************/
-
-/**
- * Routine implementing fsload u-boot command. This routine tries to load
- * a requested file from jffs2/cramfs filesystem on a current partition.
- *
- * @param cmdtp command internal data
- * @param flag command flag
- * @param argc number of arguments supplied to the command
- * @param argv arguments list
- * @return 0 on success, 1 otherwise
- */
-int do_jffs2_fsload(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
-       char *fsname;
-       char *filename;
-       int size;
-       struct part_info *part;
-       ulong offset = load_addr;
-
-       /* pre-set Boot file name */
-       if ((filename = getenv("bootfile")) == NULL) {
-               filename = "uImage";
-       }
-
-       if (argc == 2) {
-               filename = argv[1];
-       }
-       if (argc == 3) {
-               offset = simple_strtoul(argv[1], NULL, 16);
-               load_addr = offset;
-               filename = argv[2];
-       }
-
-       /* make sure we are in sync with env variables */
-       if (mtdparts_init() !=0)
-               return 1;
-
-       if ((part = jffs2_part_info(current_dev, current_partnum))){
-
-               /* check partition type for cramfs */
-               fsname = (cramfs_check(part) ? "CRAMFS" : "JFFS2");
-               printf("### %s loading '%s' to 0x%lx\n", fsname, filename, offset);
-
-               if (cramfs_check(part)) {
-                       size = cramfs_load ((char *) offset, part, filename);
-               } else {
-                       /* if this is not cramfs assume jffs2 */
-                       size = jffs2_1pass_load((char *)offset, part, filename);
-               }
-
-               if (size > 0) {
-                       char buf[10];
-                       printf("### %s load complete: %d bytes loaded to 0x%lx\n",
-                               fsname, size, offset);
-                       sprintf(buf, "%x", size);
-                       setenv("filesize", buf);
-               } else {
-                       printf("### %s LOAD ERROR<%x> for %s!\n", fsname, size, filename);
-               }
-
-               return !(size > 0);
-       }
-       return 1;
-}
-
-/**
- * Routine implementing u-boot ls command which lists content of a given
- * directory on a current partition.
- *
- * @param cmdtp command internal data
- * @param flag command flag
- * @param argc number of arguments supplied to the command
- * @param argv arguments list
- * @return 0 on success, 1 otherwise
- */
-int do_jffs2_ls(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
-       char *filename = "/";
-       int ret;
-       struct part_info *part;
-
-       if (argc == 2)
-               filename = argv[1];
-
-       /* make sure we are in sync with env variables */
-       if (mtdparts_init() !=0)
-               return 1;
-
-       if ((part = jffs2_part_info(current_dev, current_partnum))){
-
-               /* check partition type for cramfs */
-               if (cramfs_check(part)) {
-                       ret = cramfs_ls (part, filename);
-               } else {
-                       /* if this is not cramfs assume jffs2 */
-                       ret = jffs2_1pass_ls(part, filename);
-               }
-
-               return ret ? 0 : 1;
-       }
-       return 1;
-}
-
-/**
- * Routine implementing u-boot fsinfo command. This routine prints out
- * miscellaneous filesystem informations/statistics.
- *
- * @param cmdtp command internal data
- * @param flag command flag
- * @param argc number of arguments supplied to the command
- * @param argv arguments list
- * @return 0 on success, 1 otherwise
- */
-int do_jffs2_fsinfo(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
-       struct part_info *part;
-       char *fsname;
-       int ret;
-
-       /* make sure we are in sync with env variables */
-       if (mtdparts_init() !=0)
-               return 1;
-
-       if ((part = jffs2_part_info(current_dev, current_partnum))){
-
-               /* check partition type for cramfs */
-               fsname = (cramfs_check(part) ? "CRAMFS" : "JFFS2");
-               printf("### filesystem type is %s\n", fsname);
-
-               if (cramfs_check(part)) {
-                       ret = cramfs_info (part);
-               } else {
-                       /* if this is not cramfs assume jffs2 */
-                       ret = jffs2_1pass_info(part);
-               }
-
-               return ret ? 0 : 1;
-       }
-       return 1;
-}
-
-/* command line only */
-#ifdef CONFIG_JFFS2_CMDLINE
-/**
- * Routine implementing u-boot chpart command. Sets new current partition based
- * on the user supplied partition id. For partition id format see find_dev_and_part().
- *
- * @param cmdtp command internal data
- * @param flag command flag
- * @param argc number of arguments supplied to the command
- * @param argv arguments list
- * @return 0 on success, 1 otherwise
- */
-int do_jffs2_chpart(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
-/* command line only */
-       struct mtd_device *dev;
-       struct part_info *part;
-       u8 pnum;
-
-       if (mtdparts_init() !=0)
-               return 1;
-
-       if (argc < 2) {
-               printf("no partition id specified\n");
-               return 1;
-       }
-
-       if (find_dev_and_part(argv[1], &dev, &pnum, &part) != 0)
-               return 1;
-
-       current_dev = dev;
-       current_partnum = pnum;
-       current_save();
-
-       printf("partition changed to %s%d,%d\n",
-                       MTD_DEV_TYPE(dev->id->type), dev->id->num, pnum);
-
-       return 0;
-}
-
-/**
- * Routine implementing u-boot mtdparts command. Initialize/update default global
- * partition list and process user partition request (list, add, del).
- *
- * @param cmdtp command internal data
- * @param flag command flag
- * @param argc number of arguments supplied to the command
- * @param argv arguments list
- * @return 0 on success, 1 otherwise
- */
-int do_jffs2_mtdparts(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
-       if (argc == 2) {
-               if (strcmp(argv[1], "default") == 0) {
-                       setenv("mtdids", (char *)mtdids_default);
-                       setenv("mtdparts", (char *)mtdparts_default);
-                       setenv("partition", NULL);
-
-                       mtdparts_init();
-                       return 0;
-               } else if (strcmp(argv[1], "delall") == 0) {
-                       /* this may be the first run, initialize lists if needed */
-                       mtdparts_init();
-
-                       setenv("mtdparts", NULL);
-
-                       /* jffs2_devices_init() calls current_save() */
-                       return jffs2_devices_init();
-               }
-       }
-
-       /* make sure we are in sync with env variables */
-       if (mtdparts_init() != 0)
-               return 1;
-
-       if (argc == 1) {
-               list_partitions();
-               return 0;
-       }
-
-       /* mtdparts add <mtd-dev> <size>[@<offset>] <name> [ro] */
-       if (((argc == 5) || (argc == 6)) && (strcmp(argv[1], "add") == 0)) {
-#define PART_ADD_DESC_MAXLEN 64
-               char tmpbuf[PART_ADD_DESC_MAXLEN];
-               u8 type, num, len;
-               struct mtd_device *dev;
-               struct mtd_device *dev_tmp;
-               struct mtdids *id;
-               struct part_info *p;
-
-               if (id_parse(argv[2], NULL, &type, &num) != 0)
-                       return 1;
-
-               if ((id = id_find(type, num)) == NULL) {
-                       printf("no such device %s defined in mtdids variable\n", argv[2]);
-                       return 1;
-               }
-
-               len = strlen(id->mtd_id) + 1;   /* 'mtd_id:' */
-               len += strlen(argv[3]);         /* size@offset */
-               len += strlen(argv[4]) + 2;     /* '(' name ')' */
-               if (argv[5] && (strlen(argv[5]) == 2))
-                       len += 2;               /* 'ro' */
-
-               if (len >= PART_ADD_DESC_MAXLEN) {
-                       printf("too long partition description\n");
-                       return 1;
-               }
-               sprintf(tmpbuf, "%s:%s(%s)%s",
-                               id->mtd_id, argv[3], argv[4], argv[5] ? argv[5] : "");
-               DEBUGF("add tmpbuf: %s\n", tmpbuf);
-
-               if ((device_parse(tmpbuf, NULL, &dev) != 0) || (!dev))
-                       return 1;
-
-               DEBUGF("+ %s\t%d\t%s\n", MTD_DEV_TYPE(dev->id->type),
-                               dev->id->num, dev->id->mtd_id);
-
-               if ((dev_tmp = device_find(dev->id->type, dev->id->num)) == NULL) {
-                       device_add(dev);
-               } else {
-                       /* merge new partition with existing ones*/
-                       p = list_entry(dev->parts.next, struct part_info, link);
-                       if (part_add(dev_tmp, p) != 0) {
-                               device_del(dev);
-                               return 1;
-                       }
-               }
-
-               if (generate_mtdparts_save(last_parts, MTDPARTS_MAXLEN) != 0) {
-                       printf("generated mtdparts too long, reseting to null\n");
-                       return 1;
-               }
-
-               return 0;
-       }
-
-       /* mtdparts del part-id */
-       if ((argc == 3) && (strcmp(argv[1], "del") == 0)) {
-               DEBUGF("del: part-id = %s\n", argv[2]);
-
-               return delete_partition(argv[2]);
-       }
-
-       cmd_usage(cmdtp);
-       return 1;
-}
-#endif /* #ifdef CONFIG_JFFS2_CMDLINE */
-
-/***************************************************/
-U_BOOT_CMD(
-       fsload, 3,      0,      do_jffs2_fsload,
-       "load binary file from a filesystem image",
-       "[ off ] [ filename ]\n"
-       "    - load binary file from flash bank\n"
-       "      with offset 'off'\n"
-);
-U_BOOT_CMD(
-       ls,     2,      1,      do_jffs2_ls,
-       "list files in a directory (default /)",
-       "[ directory ]\n"
-       "    - list files in a directory.\n"
-);
-
-U_BOOT_CMD(
-       fsinfo, 1,      1,      do_jffs2_fsinfo,
-       "print information about filesystems",
-       "    - print information about filesystems\n"
-);
-
-#ifdef CONFIG_JFFS2_CMDLINE
-U_BOOT_CMD(
-       chpart, 2,      0,      do_jffs2_chpart,
-       "change active partition",
-       "part-id\n"
-       "    - change active partition (e.g. part-id = nand0,1)\n"
-);
-
-U_BOOT_CMD(
-       mtdparts,       6,      0,      do_jffs2_mtdparts,
-       "define flash/nand partitions",
-       "\n"
-       "    - list partition table\n"
-       "mtdparts delall\n"
-       "    - delete all partitions\n"
-       "mtdparts del part-id\n"
-       "    - delete partition (e.g. part-id = nand0,1)\n"
-       "mtdparts add <mtd-dev> <size>[@<offset>] [<name>] [ro]\n"
-       "    - add partition\n"
-       "mtdparts default\n"
-       "    - reset partition table to defaults\n\n"
-       "-----\n\n"
-       "this command uses three environment variables:\n\n"
-       "'partition' - keeps current partition identifier\n\n"
-       "partition  := <part-id>\n"
-       "<part-id>  := <dev-id>,part_num\n\n"
-       "'mtdids' - linux kernel mtd device id <-> u-boot device id mapping\n\n"
-       "mtdids=<idmap>[,<idmap>,...]\n\n"
-       "<idmap>    := <dev-id>=<mtd-id>\n"
-       "<dev-id>   := 'nand'|'nor'|'onenand'<dev-num>\n"
-       "<dev-num>  := mtd device number, 0...\n"
-       "<mtd-id>   := unique device tag used by linux kernel to find mtd device (mtd->name)\n\n"
-       "'mtdparts' - partition list\n\n"
-       "mtdparts=mtdparts=<mtd-def>[;<mtd-def>...]\n\n"
-       "<mtd-def>  := <mtd-id>:<part-def>[,<part-def>...]\n"
-       "<mtd-id>   := unique device tag used by linux kernel to find mtd device (mtd->name)\n"
-       "<part-def> := <size>[@<offset>][<name>][<ro-flag>]\n"
-       "<size>     := standard linux memsize OR '-' to denote all remaining space\n"
-       "<offset>   := partition start offset within the device\n"
-       "<name>     := '(' NAME ')'\n"
-       "<ro-flag>  := when set to 'ro' makes partition read-only (not used, passed to kernel)\n"
-);
-#endif /* #ifdef CONFIG_JFFS2_CMDLINE */
-
-/***************************************************/
+/*
+ * (C) Copyright 2002
+ * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+ *
+ * (C) Copyright 2002
+ * Robert Schwebel, Pengutronix, <r.schwebel@pengutronix.de>
+ *
+ * (C) Copyright 2003
+ * Kai-Uwe Bloem, Auerswald GmbH & Co KG, <linux-development@auerswald.de>
+ *
+ * (C) Copyright 2005
+ * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+ *
+ *   Added support for reading flash partition table from environment.
+ *   Parsing routines are based on driver/mtd/cmdline.c from the linux 2.4
+ *   kernel tree.
+ *
+ *   $Id: cmd_jffs2.c,v 1.1.1.1 2009/03/25 22:21:56 kenagy Exp $
+ *   Copyright 2002 SYSGO Real-Time Solutions GmbH
+ *
+ * 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
+ */
+
+/*
+ * Three environment variables are used by the parsing routines:
+ *
+ * 'partition' - keeps current partition identifier
+ *
+ * partition  := <part-id>
+ * <part-id>  := <dev-id>,part_num
+ *
+ *
+ * 'mtdids' - linux kernel mtd device id <-> u-boot device id mapping
+ *
+ * mtdids=<idmap>[,<idmap>,...]
+ *
+ * <idmap>    := <dev-id>=<mtd-id>
+ * <dev-id>   := 'nand'|'nor'|'onenand'<dev-num>
+ * <dev-num>  := mtd device number, 0...
+ * <mtd-id>   := unique device tag used by linux kernel to find mtd device (mtd->name)
+ *
+ *
+ * 'mtdparts' - partition list
+ *
+ * mtdparts=mtdparts=<mtd-def>[;<mtd-def>...]
+ *
+ * <mtd-def>  := <mtd-id>:<part-def>[,<part-def>...]
+ * <mtd-id>   := unique device tag used by linux kernel to find mtd device (mtd->name)
+ * <part-def> := <size>[@<offset>][<name>][<ro-flag>]
+ * <size>     := standard linux memsize OR '-' to denote all remaining space
+ * <offset>   := partition start offset within the device
+ * <name>     := '(' NAME ')'
+ * <ro-flag>  := when set to 'ro' makes partition read-only (not used, passed to kernel)
+ *
+ * Notes:
+ * - each <mtd-id> used in mtdparts must albo exist in 'mtddis' mapping
+ * - if the above variables are not set defaults for a given target are used
+ *
+ * Examples:
+ *
+ * 1 NOR Flash, with 1 single writable partition:
+ * mtdids=nor0=edb7312-nor
+ * mtdparts=mtdparts=edb7312-nor:-
+ *
+ * 1 NOR Flash with 2 partitions, 1 NAND with one
+ * mtdids=nor0=edb7312-nor,nand0=edb7312-nand
+ * mtdparts=mtdparts=edb7312-nor:256k(ARMboot)ro,-(root);edb7312-nand:-(home)
+ *
+ */
+
+/*
+ * JFFS2/CRAMFS support
+ */
+#include <common.h>
+#include <command.h>
+#include <malloc.h>
+#include <jffs2/jffs2.h>
+#include <linux/list.h>
+#include <linux/ctype.h>
+#include <cramfs/cramfs_fs.h>
+
+#if defined(CONFIG_CMD_NAND)
+#ifdef CONFIG_NAND_LEGACY
+#include <linux/mtd/nand_legacy.h>
+#else /* !CONFIG_NAND_LEGACY */
+#include <linux/mtd/nand.h>
+#include <nand.h>
+#endif /* !CONFIG_NAND_LEGACY */
+#endif
+
+#if defined(CONFIG_CMD_ONENAND)
+#include <linux/mtd/mtd.h>
+#include <linux/mtd/onenand.h>
+#include <onenand_uboot.h>
+#endif
+
+/* enable/disable debugging messages */
+#define        DEBUG_JFFS
+#undef DEBUG_JFFS
+
+#ifdef  DEBUG_JFFS
+# define DEBUGF(fmt, args...)  printf(fmt ,##args)
+#else
+# define DEBUGF(fmt, args...)
+#endif
+
+/* special size referring to all the remaining space in a partition */
+#define SIZE_REMAINING         0xFFFFFFFF
+
+/* special offset value, it is used when not provided by user
+ *
+ * this value is used temporarily during parsing, later such offests
+ * are recalculated */
+#define OFFSET_NOT_SPECIFIED   0xFFFFFFFF
+
+/* minimum partition size */
+#define MIN_PART_SIZE          4096
+
+/* this flag needs to be set in part_info struct mask_flags
+ * field for read-only partitions */
+#define MTD_WRITEABLE_CMD              1
+
+#ifdef CONFIG_JFFS2_CMDLINE
+/* default values for mtdids and mtdparts variables */
+#if defined(MTDIDS_DEFAULT)
+static const char *const mtdids_default = MTDIDS_DEFAULT;
+#else
+#warning "MTDIDS_DEFAULT not defined!"
+static const char *const mtdids_default = NULL;
+#endif
+
+#if defined(MTDPARTS_DEFAULT)
+static const char *const mtdparts_default = MTDPARTS_DEFAULT;
+#else
+#warning "MTDPARTS_DEFAULT not defined!"
+static const char *const mtdparts_default = NULL;
+#endif
+
+/* copies of last seen 'mtdids', 'mtdparts' and 'partition' env variables */
+#define MTDIDS_MAXLEN          128
+#define MTDPARTS_MAXLEN                512
+#define PARTITION_MAXLEN       16
+static char last_ids[MTDIDS_MAXLEN];
+static char last_parts[MTDPARTS_MAXLEN];
+static char last_partition[PARTITION_MAXLEN];
+
+/* low level jffs2 cache cleaning routine */
+extern void jffs2_free_cache(struct part_info *part);
+
+/* mtdids mapping list, filled by parse_ids() */
+struct list_head mtdids;
+
+/* device/partition list, parse_cmdline() parses into here */
+struct list_head devices;
+#endif /* #ifdef CONFIG_JFFS2_CMDLINE */
+
+/* current active device and partition number */
+static struct mtd_device *current_dev = NULL;
+static u8 current_partnum = 0;
+
+#if defined(CONFIG_CMD_CRAMFS)
+extern int cramfs_check (struct part_info *info);
+extern int cramfs_load (char *loadoffset, struct part_info *info, char *filename);
+extern int cramfs_ls (struct part_info *info, char *filename);
+extern int cramfs_info (struct part_info *info);
+#else
+/* defining empty macros for function names is ugly but avoids ifdef clutter
+ * all over the code */
+#define cramfs_check(x)                (0)
+#define cramfs_load(x,y,z)     (-1)
+#define cramfs_ls(x,y)         (0)
+#define cramfs_info(x)         (0)
+#endif
+
+static struct part_info* jffs2_part_info(struct mtd_device *dev, unsigned int part_num);
+
+/* command line only routines */
+#ifdef CONFIG_JFFS2_CMDLINE
+
+static struct mtdids* id_find_by_mtd_id(const char *mtd_id, unsigned int mtd_id_len);
+static int device_del(struct mtd_device *dev);
+
+/**
+ * Parses a string into a number.  The number stored at ptr is
+ * potentially suffixed with K (for kilobytes, or 1024 bytes),
+ * M (for megabytes, or 1048576 bytes), or G (for gigabytes, or
+ * 1073741824).  If the number is suffixed with K, M, or G, then
+ * the return value is the number multiplied by one kilobyte, one
+ * megabyte, or one gigabyte, respectively.
+ *
+ * @param ptr where parse begins
+ * @param retptr output pointer to next char after parse completes (output)
+ * @return resulting unsigned int
+ */
+static unsigned long memsize_parse (const char *const ptr, const char **retptr)
+{
+       unsigned long ret = simple_strtoul(ptr, (char **)retptr, 0);
+
+       switch (**retptr) {
+               case 'G':
+               case 'g':
+                       ret <<= 10;
+               case 'M':
+               case 'm':
+                       ret <<= 10;
+               case 'K':
+               case 'k':
+                       ret <<= 10;
+                       (*retptr)++;
+               default:
+                       break;
+       }
+
+       return ret;
+}
+
+/**
+ * Format string describing supplied size. This routine does the opposite job
+ * to memsize_parse(). Size in bytes is converted to string and if possible
+ * shortened by using k (kilobytes), m (megabytes) or g (gigabytes) suffix.
+ *
+ * Note, that this routine does not check for buffer overflow, it's the caller
+ * who must assure enough space.
+ *
+ * @param buf output buffer
+ * @param size size to be converted to string
+ */
+static void memsize_format(char *buf, u32 size)
+{
+#define SIZE_GB ((u32)1024*1024*1024)
+#define SIZE_MB ((u32)1024*1024)
+#define SIZE_KB ((u32)1024)
+
+       if ((size % SIZE_GB) == 0)
+               sprintf(buf, "%ug", size/SIZE_GB);
+       else if ((size % SIZE_MB) == 0)
+               sprintf(buf, "%um", size/SIZE_MB);
+       else if (size % SIZE_KB == 0)
+               sprintf(buf, "%uk", size/SIZE_KB);
+       else
+               sprintf(buf, "%u", size);
+}
+
+/**
+ * This routine does global indexing of all partitions. Resulting index for
+ * current partition is saved in 'mtddevnum'. Current partition name in
+ * 'mtddevname'.
+ */
+static void index_partitions(void)
+{
+       char buf[16];
+       u16 mtddevnum;
+       struct part_info *part;
+       struct list_head *dentry;
+       struct mtd_device *dev;
+
+       DEBUGF("--- index partitions ---\n");
+
+       if (current_dev) {
+               mtddevnum = 0;
+               list_for_each(dentry, &devices) {
+                       dev = list_entry(dentry, struct mtd_device, link);
+                       if (dev == current_dev) {
+                               mtddevnum += current_partnum;
+                               sprintf(buf, "%d", mtddevnum);
+                               setenv("mtddevnum", buf);
+                               break;
+                       }
+                       mtddevnum += dev->num_parts;
+               }
+
+               part = jffs2_part_info(current_dev, current_partnum);
+               setenv("mtddevname", part->name);
+
+               DEBUGF("=> mtddevnum %d,\n=> mtddevname %s\n", mtddevnum, part->name);
+       } else {
+               setenv("mtddevnum", NULL);
+               setenv("mtddevname", NULL);
+
+               DEBUGF("=> mtddevnum NULL\n=> mtddevname NULL\n");
+       }
+}
+
+/**
+ * Save current device and partition in environment variable 'partition'.
+ */
+static void current_save(void)
+{
+       char buf[16];
+
+       DEBUGF("--- current_save ---\n");
+
+       if (current_dev) {
+               sprintf(buf, "%s%d,%d", MTD_DEV_TYPE(current_dev->id->type),
+                                       current_dev->id->num, current_partnum);
+
+               setenv("partition", buf);
+               strncpy(last_partition, buf, 16);
+
+               DEBUGF("=> partition %s\n", buf);
+       } else {
+               setenv("partition", NULL);
+               last_partition[0] = '\0';
+
+               DEBUGF("=> partition NULL\n");
+       }
+       index_partitions();
+}
+
+/**
+ * Performs sanity check for supplied NOR flash partition. Table of existing
+ * NOR flash devices is searched and partition device is located. Alignment
+ * with the granularity of NOR flash sectors is verified.
+ *
+ * @param id of the parent device
+ * @param part partition to validate
+ * @return 0 if partition is valid, 1 otherwise
+ */
+static int part_validate_nor(struct mtdids *id, struct part_info *part)
+{
+#if defined(CONFIG_CMD_FLASH)
+       /* info for FLASH chips */
+       extern flash_info_t flash_info[];
+       flash_info_t *flash;
+       int offset_aligned;
+       u32 end_offset, sector_size = 0;
+       int i;
+
+       flash = &flash_info[id->num];
+
+       /* size of last sector */
+       part->sector_size = flash->size -
+               (flash->start[flash->sector_count-1] - flash->start[0]);
+
+       offset_aligned = 0;
+       for (i = 0; i < flash->sector_count; i++) {
+               if ((flash->start[i] - flash->start[0]) == part->offset) {
+                       offset_aligned = 1;
+                       break;
+               }
+       }
+       if (offset_aligned == 0) {
+               printf("%s%d: partition (%s) start offset alignment incorrect\n",
+                               MTD_DEV_TYPE(id->type), id->num, part->name);
+               return 1;
+       }
+
+       end_offset = part->offset + part->size;
+       offset_aligned = 0;
+       for (i = 0; i < flash->sector_count; i++) {
+               if (i) {
+                       sector_size = flash->start[i] - flash->start[i-1];
+                       if (part->sector_size < sector_size)
+                               part->sector_size = sector_size;
+               }
+               if ((flash->start[i] - flash->start[0]) == end_offset)
+                       offset_aligned = 1;
+       }
+
+       if (offset_aligned || flash->size == end_offset)
+               return 0;
+
+       printf("%s%d: partition (%s) size alignment incorrect\n",
+                       MTD_DEV_TYPE(id->type), id->num, part->name);
+#endif
+       return 1;
+}
+
+/**
+ * Performs sanity check for supplied NAND flash partition. Table of existing
+ * NAND flash devices is searched and partition device is located. Alignment
+ * with the granularity of nand erasesize is verified.
+ *
+ * @param id of the parent device
+ * @param part partition to validate
+ * @return 0 if partition is valid, 1 otherwise
+ */
+static int part_validate_nand(struct mtdids *id, struct part_info *part)
+{
+#if defined(CONFIG_JFFS2_NAND) && defined(CONFIG_CMD_NAND)
+       /* info for NAND chips */
+       nand_info_t *nand;
+
+       nand = &nand_info[id->num];
+
+       part->sector_size = nand->erasesize;
+
+       if ((unsigned long)(part->offset) % nand->erasesize) {
+               printf("%s%d: partition (%s) start offset alignment incorrect\n",
+                               MTD_DEV_TYPE(id->type), id->num, part->name);
+               return 1;
+       }
+
+       if (part->size % nand->erasesize) {
+               printf("%s%d: partition (%s) size alignment incorrect\n",
+                               MTD_DEV_TYPE(id->type), id->num, part->name);
+               return 1;
+       }
+
+       return 0;
+#else
+       return 1;
+#endif
+}
+
+/**
+ * Performs sanity check for supplied OneNAND flash partition.
+ * Table of existing OneNAND flash devices is searched and partition device
+ * is located. Alignment with the granularity of nand erasesize is verified.
+ *
+ * @param id of the parent device
+ * @param part partition to validate
+ * @return 0 if partition is valid, 1 otherwise
+ */
+static int part_validate_onenand(struct mtdids *id, struct part_info *part)
+{
+#if defined(CONFIG_CMD_ONENAND)
+       /* info for OneNAND chips */
+       struct mtd_info *mtd;
+
+       mtd = &onenand_mtd;
+
+       part->sector_size = mtd->erasesize;
+
+       if ((unsigned long)(part->offset) % mtd->erasesize) {
+               printf("%s%d: partition (%s) start offset"
+                       "alignment incorrect\n",
+                               MTD_DEV_TYPE(id->type), id->num, part->name);
+               return 1;
+       }
+
+       if (part->size % mtd->erasesize) {
+               printf("%s%d: partition (%s) size alignment incorrect\n",
+                               MTD_DEV_TYPE(id->type), id->num, part->name);
+               return 1;
+       }
+
+       return 0;
+#else
+       return 1;
+#endif
+}
+
+
+/**
+ * Performs sanity check for supplied partition. Offset and size are verified
+ * to be within valid range. Partition type is checked and either
+ * parts_validate_nor() or parts_validate_nand() is called with the argument
+ * of part.
+ *
+ * @param id of the parent device
+ * @param part partition to validate
+ * @return 0 if partition is valid, 1 otherwise
+ */
+static int part_validate(struct mtdids *id, struct part_info *part)
+{
+       if (part->size == SIZE_REMAINING)
+               part->size = id->size - part->offset;
+
+       if (part->offset > id->size) {
+               printf("%s: offset %08x beyond flash size %08x\n",
+                               id->mtd_id, part->offset, id->size);
+               return 1;
+       }
+
+       if ((part->offset + part->size) <= part->offset) {
+               printf("%s%d: partition (%s) size too big\n",
+                               MTD_DEV_TYPE(id->type), id->num, part->name);
+               return 1;
+       }
+
+       if (part->offset + part->size > id->size) {
+               printf("%s: partitioning exceeds flash size\n", id->mtd_id);
+               return 1;
+       }
+
+       if (id->type == MTD_DEV_TYPE_NAND)
+               return part_validate_nand(id, part);
+       else if (id->type == MTD_DEV_TYPE_NOR)
+               return part_validate_nor(id, part);
+       else if (id->type == MTD_DEV_TYPE_ONENAND)
+               return part_validate_onenand(id, part);
+       else
+               DEBUGF("part_validate: invalid dev type\n");
+
+       return 1;
+}
+
+/**
+ * Delete selected partition from the partion list of the specified device.
+ *
+ * @param dev device to delete partition from
+ * @param part partition to delete
+ * @return 0 on success, 1 otherwise
+ */
+static int part_del(struct mtd_device *dev, struct part_info *part)
+{
+       u8 current_save_needed = 0;
+
+       /* if there is only one partition, remove whole device */
+       if (dev->num_parts == 1)
+               return device_del(dev);
+
+       /* otherwise just delete this partition */
+
+       if (dev == current_dev) {
+               /* we are modyfing partitions for the current device,
+                * update current */
+               struct part_info *curr_pi;
+               curr_pi = jffs2_part_info(current_dev, current_partnum);
+
+               if (curr_pi) {
+                       if (curr_pi == part) {
+                               printf("current partition deleted, resetting current to 0\n");
+                               current_partnum = 0;
+                       } else if (part->offset <= curr_pi->offset) {
+                               current_partnum--;
+                       }
+                       current_save_needed = 1;
+               }
+       }
+
+#ifdef CONFIG_NAND_LEGACY
+       jffs2_free_cache(part);
+#endif
+       list_del(&part->link);
+       free(part);
+       dev->num_parts--;
+
+       if (current_save_needed > 0)
+               current_save();
+       else
+               index_partitions();
+
+       return 0;
+}
+
+/**
+ * Delete all partitions from parts head list, free memory.
+ *
+ * @param head list of partitions to delete
+ */
+static void part_delall(struct list_head *head)
+{
+       struct list_head *entry, *n;
+       struct part_info *part_tmp;
+
+       /* clean tmp_list and free allocated memory */
+       list_for_each_safe(entry, n, head) {
+               part_tmp = list_entry(entry, struct part_info, link);
+
+#ifdef CONFIG_NAND_LEGACY
+               jffs2_free_cache(part_tmp);
+#endif
+               list_del(entry);
+               free(part_tmp);
+       }
+}
+
+/**
+ * Add new partition to the supplied partition list. Make sure partitions are
+ * sorted by offset in ascending order.
+ *
+ * @param head list this partition is to be added to
+ * @param new partition to be added
+ */
+static int part_sort_add(struct mtd_device *dev, struct part_info *part)
+{
+       struct list_head *entry;
+       struct part_info *new_pi, *curr_pi;
+
+       /* link partition to parrent dev */
+       part->dev = dev;
+
+       if (list_empty(&dev->parts)) {
+               DEBUGF("part_sort_add: list empty\n");
+               list_add(&part->link, &dev->parts);
+               dev->num_parts++;
+               index_partitions();
+               return 0;
+       }
+
+       new_pi = list_entry(&part->link, struct part_info, link);
+
+       /* get current partition info if we are updating current device */
+       curr_pi = NULL;
+       if (dev == current_dev)
+               curr_pi = jffs2_part_info(current_dev, current_partnum);
+
+       list_for_each(entry, &dev->parts) {
+               struct part_info *pi;
+
+               pi = list_entry(entry, struct part_info, link);
+
+               /* be compliant with kernel cmdline, allow only one partition at offset zero */
+               if ((new_pi->offset == pi->offset) && (pi->offset == 0)) {
+                       printf("cannot add second partition at offset 0\n");
+                       return 1;
+               }
+
+               if (new_pi->offset <= pi->offset) {
+                       list_add_tail(&part->link, entry);
+                       dev->num_parts++;
+
+                       if (curr_pi && (pi->offset <= curr_pi->offset)) {
+                               /* we are modyfing partitions for the current
+                                * device, update current */
+                               current_partnum++;
+                               current_save();
+                       } else {
+                               index_partitions();
+                       }
+                       return 0;
+               }
+       }
+
+       list_add_tail(&part->link, &dev->parts);
+       dev->num_parts++;
+       index_partitions();
+       return 0;
+}
+
+/**
+ * Add provided partition to the partition list of a given device.
+ *
+ * @param dev device to which partition is added
+ * @param part partition to be added
+ * @return 0 on success, 1 otherwise
+ */
+static int part_add(struct mtd_device *dev, struct part_info *part)
+{
+       /* verify alignment and size */
+       if (part_validate(dev->id, part) != 0)
+               return 1;
+
+       /* partition is ok, add it to the list */
+       if (part_sort_add(dev, part) != 0)
+               return 1;
+
+       return 0;
+}
+
+/**
+ * Parse one partition definition, allocate memory and return pointer to this
+ * location in retpart.
+ *
+ * @param partdef pointer to the partition definition string i.e. <part-def>
+ * @param ret output pointer to next char after parse completes (output)
+ * @param retpart pointer to the allocated partition (output)
+ * @return 0 on success, 1 otherwise
+ */
+static int part_parse(const char *const partdef, const char **ret, struct part_info **retpart)
+{
+       struct part_info *part;
+       unsigned long size;
+       unsigned long offset;
+       const char *name;
+       int name_len;
+       unsigned int mask_flags;
+       const char *p;
+
+       p = partdef;
+       *retpart = NULL;
+       *ret = NULL;
+
+       /* fetch the partition size */
+       if (*p == '-') {
+               /* assign all remaining space to this partition */
+               DEBUGF("'-': remaining size assigned\n");
+               size = SIZE_REMAINING;
+               p++;
+       } else {
+               size = memsize_parse(p, &p);
+               if (size < MIN_PART_SIZE) {
+                       printf("partition size too small (%lx)\n", size);
+                       return 1;
+               }
+       }
+
+       /* check for offset */
+       offset = OFFSET_NOT_SPECIFIED;
+       if (*p == '@') {
+               p++;
+               offset = memsize_parse(p, &p);
+       }
+
+       /* now look for the name */
+       if (*p == '(') {
+               name = ++p;
+               if ((p = strchr(name, ')')) == NULL) {
+                       printf("no closing ) found in partition name\n");
+                       return 1;
+               }
+               name_len = p - name + 1;
+               if ((name_len - 1) == 0) {
+                       printf("empty partition name\n");
+                       return 1;
+               }
+               p++;
+       } else {
+               /* 0x00000000@0x00000000 */
+               name_len = 22;
+               name = NULL;
+       }
+
+       /* test for options */
+       mask_flags = 0;
+       if (strncmp(p, "ro", 2) == 0) {
+               mask_flags |= MTD_WRITEABLE_CMD;
+               p += 2;
+       }
+
+       /* check for next partition definition */
+       if (*p == ',') {
+               if (size == SIZE_REMAINING) {
+                       *ret = NULL;
+                       printf("no partitions allowed after a fill-up partition\n");
+                       return 1;
+               }
+               *ret = ++p;
+       } else if ((*p == ';') || (*p == '\0')) {
+               *ret = p;
+       } else {
+               printf("unexpected character '%c' at the end of partition\n", *p);
+               *ret = NULL;
+               return 1;
+       }
+
+       /*  allocate memory */
+       part = (struct part_info *)malloc(sizeof(struct part_info) + name_len);
+       if (!part) {
+               printf("out of memory\n");
+               return 1;
+       }
+       memset(part, 0, sizeof(struct part_info) + name_len);
+       part->size = size;
+       part->offset = offset;
+       part->mask_flags = mask_flags;
+       part->name = (char *)(part + 1);
+
+       if (name) {
+               /* copy user provided name */
+               strncpy(part->name, name, name_len - 1);
+               part->auto_name = 0;
+       } else {
+               /* auto generated name in form of size@offset */
+               sprintf(part->name, "0x%08lx@0x%08lx", size, offset);
+               part->auto_name = 1;
+       }
+
+       part->name[name_len - 1] = '\0';
+       INIT_LIST_HEAD(&part->link);
+
+       DEBUGF("+ partition: name %-22s size 0x%08x offset 0x%08x mask flags %d\n",
+                       part->name, part->size,
+                       part->offset, part->mask_flags);
+
+       *retpart = part;
+       return 0;
+}
+#endif/* #ifdef CONFIG_JFFS2_CMDLINE */
+
+/**
+ * Check device number to be within valid range for given device type.
+ *
+ * @param dev device to validate
+ * @return 0 if device is valid, 1 otherwise
+ */
+static int device_validate(u8 type, u8 num, u32 *size)
+{
+       if (type == MTD_DEV_TYPE_NOR) {
+#if defined(CONFIG_CMD_FLASH)
+               if (num < CONFIG_SYS_MAX_FLASH_BANKS) {
+                       extern flash_info_t flash_info[];
+                       *size = flash_info[num].size;
+
+                       return 0;
+               }
+
+               printf("no such FLASH device: %s%d (valid range 0 ... %d\n",
+                               MTD_DEV_TYPE(type), num, CONFIG_SYS_MAX_FLASH_BANKS - 1);
+#else
+               printf("support for FLASH devices not present\n");
+#endif
+       } else if (type == MTD_DEV_TYPE_NAND) {
+#if defined(CONFIG_JFFS2_NAND) && defined(CONFIG_CMD_NAND)
+               if (num < CONFIG_SYS_MAX_NAND_DEVICE) {
+#ifndef CONFIG_NAND_LEGACY
+                       *size = nand_info[num].size;
+#else
+                       extern struct nand_chip nand_dev_desc[CONFIG_SYS_MAX_NAND_DEVICE];
+                       *size = nand_dev_desc[num].totlen;
+#endif
+                       return 0;
+               }
+
+               printf("no such NAND device: %s%d (valid range 0 ... %d)\n",
+                               MTD_DEV_TYPE(type), num, CONFIG_SYS_MAX_NAND_DEVICE - 1);
+#else
+               printf("support for NAND devices not present\n");
+#endif
+       } else if (type == MTD_DEV_TYPE_ONENAND) {
+#if defined(CONFIG_CMD_ONENAND)
+               *size = onenand_mtd.size;
+               return 0;
+#else
+               printf("support for OneNAND devices not present\n");
+#endif
+       } else
+               printf("Unknown defice type %d\n", type);
+
+       return 1;
+}
+
+#ifdef CONFIG_JFFS2_CMDLINE
+/**
+ * Delete all mtd devices from a supplied devices list, free memory allocated for
+ * each device and delete all device partitions.
+ *
+ * @return 0 on success, 1 otherwise
+ */
+static int device_delall(struct list_head *head)
+{
+       struct list_head *entry, *n;
+       struct mtd_device *dev_tmp;
+
+       /* clean devices list */
+       list_for_each_safe(entry, n, head) {
+               dev_tmp = list_entry(entry, struct mtd_device, link);
+               list_del(entry);
+               part_delall(&dev_tmp->parts);
+               free(dev_tmp);
+       }
+       INIT_LIST_HEAD(&devices);
+
+       return 0;
+}
+
+/**
+ * If provided device exists it's partitions are deleted, device is removed
+ * from device list and device memory is freed.
+ *
+ * @param dev device to be deleted
+ * @return 0 on success, 1 otherwise
+ */
+static int device_del(struct mtd_device *dev)
+{
+       part_delall(&dev->parts);
+       list_del(&dev->link);
+       free(dev);
+
+       if (dev == current_dev) {
+               /* we just deleted current device */
+               if (list_empty(&devices)) {
+                       current_dev = NULL;
+               } else {
+                       /* reset first partition from first dev from the
+                        * devices list as current */
+                       current_dev = list_entry(devices.next, struct mtd_device, link);
+                       current_partnum = 0;
+               }
+               current_save();
+               return 0;
+       }
+
+       index_partitions();
+       return 0;
+}
+
+/**
+ * Search global device list and return pointer to the device of type and num
+ * specified.
+ *
+ * @param type device type
+ * @param num device number
+ * @return NULL if requested device does not exist
+ */
+static struct mtd_device* device_find(u8 type, u8 num)
+{
+       struct list_head *entry;
+       struct mtd_device *dev_tmp;
+
+       list_for_each(entry, &devices) {
+               dev_tmp = list_entry(entry, struct mtd_device, link);
+
+               if ((dev_tmp->id->type == type) && (dev_tmp->id->num == num))
+                       return dev_tmp;
+       }
+
+       return NULL;
+}
+
+/**
+ * Add specified device to the global device list.
+ *
+ * @param dev device to be added
+ */
+static void device_add(struct mtd_device *dev)
+{
+       u8 current_save_needed = 0;
+
+       if (list_empty(&devices)) {
+               current_dev = dev;
+               current_partnum = 0;
+               current_save_needed = 1;
+       }
+
+       list_add_tail(&dev->link, &devices);
+
+       if (current_save_needed > 0)
+               current_save();
+       else
+               index_partitions();
+}
+
+/**
+ * Parse device type, name and mtd-id. If syntax is ok allocate memory and
+ * return pointer to the device structure.
+ *
+ * @param mtd_dev pointer to the device definition string i.e. <mtd-dev>
+ * @param ret output pointer to next char after parse completes (output)
+ * @param retdev pointer to the allocated device (output)
+ * @return 0 on success, 1 otherwise
+ */
+static int device_parse(const char *const mtd_dev, const char **ret, struct mtd_device **retdev)
+{
+       struct mtd_device *dev;
+       struct part_info *part;
+       struct mtdids *id;
+       const char *mtd_id;
+       unsigned int mtd_id_len;
+       const char *p, *pend;
+       LIST_HEAD(tmp_list);
+       struct list_head *entry, *n;
+       u16 num_parts;
+       u32 offset;
+       int err = 1;
+
+       p = mtd_dev;
+       *retdev = NULL;
+       *ret = NULL;
+
+       DEBUGF("===device_parse===\n");
+
+       /* fetch <mtd-id> */
+       mtd_id = p;
+       if (!(p = strchr(mtd_id, ':'))) {
+               printf("no <mtd-id> identifier\n");
+               return 1;
+       }
+       mtd_id_len = p - mtd_id + 1;
+       p++;
+
+       /* verify if we have a valid device specified */
+       if ((id = id_find_by_mtd_id(mtd_id, mtd_id_len - 1)) == NULL) {
+               printf("invalid mtd device '%.*s'\n", mtd_id_len - 1, mtd_id);
+               return 1;
+       }
+
+       DEBUGF("dev type = %d (%s), dev num = %d, mtd-id = %s\n",
+                       id->type, MTD_DEV_TYPE(id->type),
+                       id->num, id->mtd_id);
+       pend = strchr(p, ';');
+       DEBUGF("parsing partitions %.*s\n", (pend ? pend - p : strlen(p)), p);
+
+
+       /* parse partitions */
+       num_parts = 0;
+
+       offset = 0;
+       if ((dev = device_find(id->type, id->num)) != NULL) {
+               /* if device already exists start at the end of the last partition */
+               part = list_entry(dev->parts.prev, struct part_info, link);
+               offset = part->offset + part->size;
+       }
+
+       while (p && (*p != '\0') && (*p != ';')) {
+               err = 1;
+               if ((part_parse(p, &p, &part) != 0) || (!part))
+                       break;
+
+               /* calculate offset when not specified */
+               if (part->offset == OFFSET_NOT_SPECIFIED)
+                       part->offset = offset;
+               else
+                       offset = part->offset;
+
+               /* verify alignment and size */
+               if (part_validate(id, part) != 0)
+                       break;
+
+               offset += part->size;
+
+               /* partition is ok, add it to the list */
+               list_add_tail(&part->link, &tmp_list);
+               num_parts++;
+               err = 0;
+       }
+       if (err == 1) {
+               part_delall(&tmp_list);
+               return 1;
+       }
+
+       if (num_parts == 0) {
+               printf("no partitions for device %s%d (%s)\n",
+                               MTD_DEV_TYPE(id->type), id->num, id->mtd_id);
+               return 1;
+       }
+
+       DEBUGF("\ntotal partitions: %d\n", num_parts);
+
+       /* check for next device presence */
+       if (p) {
+               if (*p == ';') {
+                       *ret = ++p;
+               } else if (*p == '\0') {
+                       *ret = p;
+               } else {
+                       printf("unexpected character '%c' at the end of device\n", *p);
+                       *ret = NULL;
+                       return 1;
+               }
+       }
+
+       /* allocate memory for mtd_device structure */
+       if ((dev = (struct mtd_device *)malloc(sizeof(struct mtd_device))) == NULL) {
+               printf("out of memory\n");
+               return 1;
+       }
+       memset(dev, 0, sizeof(struct mtd_device));
+       dev->id = id;
+       dev->num_parts = 0; /* part_sort_add increments num_parts */
+       INIT_LIST_HEAD(&dev->parts);
+       INIT_LIST_HEAD(&dev->link);
+
+       /* move partitions from tmp_list to dev->parts */
+       list_for_each_safe(entry, n, &tmp_list) {
+               part = list_entry(entry, struct part_info, link);
+               list_del(entry);
+               if (part_sort_add(dev, part) != 0) {
+                       device_del(dev);
+                       return 1;
+               }
+       }
+
+       *retdev = dev;
+
+       DEBUGF("===\n\n");
+       return 0;
+}
+
+/**
+ * Initialize global device list.
+ *
+ * @return 0 on success, 1 otherwise
+ */
+static int jffs2_devices_init(void)
+{
+       last_parts[0] = '\0';
+       current_dev = NULL;
+       current_save();
+
+       return device_delall(&devices);
+}
+
+/*
+ * Search global mtdids list and find id of requested type and number.
+ *
+ * @return pointer to the id if it exists, NULL otherwise
+ */
+static struct mtdids* id_find(u8 type, u8 num)
+{
+       struct list_head *entry;
+       struct mtdids *id;
+
+       list_for_each(entry, &mtdids) {
+               id = list_entry(entry, struct mtdids, link);
+
+               if ((id->type == type) && (id->num == num))
+                       return id;
+       }
+
+       return NULL;
+}
+
+/**
+ * Search global mtdids list and find id of a requested mtd_id.
+ *
+ * Note: first argument is not null terminated.
+ *
+ * @param mtd_id string containing requested mtd_id
+ * @param mtd_id_len length of supplied mtd_id
+ * @return pointer to the id if it exists, NULL otherwise
+ */
+static struct mtdids* id_find_by_mtd_id(const char *mtd_id, unsigned int mtd_id_len)
+{
+       struct list_head *entry;
+       struct mtdids *id;
+
+       DEBUGF("--- id_find_by_mtd_id: '%.*s' (len = %d)\n",
+                       mtd_id_len, mtd_id, mtd_id_len);
+
+       list_for_each(entry, &mtdids) {
+               id = list_entry(entry, struct mtdids, link);
+
+               DEBUGF("entry: '%s' (len = %d)\n",
+                               id->mtd_id, strlen(id->mtd_id));
+
+               if (mtd_id_len != strlen(id->mtd_id))
+                       continue;
+               if (strncmp(id->mtd_id, mtd_id, mtd_id_len) == 0)
+                       return id;
+       }
+
+       return NULL;
+}
+#endif /* #ifdef CONFIG_JFFS2_CMDLINE */
+
+/**
+ * Parse device id string <dev-id> := 'nand'|'nor'|'onenand'<dev-num>,
+ * return device type and number.
+ *
+ * @param id string describing device id
+ * @param ret_id output pointer to next char after parse completes (output)
+ * @param dev_type parsed device type (output)
+ * @param dev_num parsed device number (output)
+ * @return 0 on success, 1 otherwise
+ */
+int id_parse(const char *id, const char **ret_id, u8 *dev_type, u8 *dev_num)
+{
+       const char *p = id;
+
+       *dev_type = 0;
+       if (strncmp(p, "nand", 4) == 0) {
+               *dev_type = MTD_DEV_TYPE_NAND;
+               p += 4;
+       } else if (strncmp(p, "nor", 3) == 0) {
+               *dev_type = MTD_DEV_TYPE_NOR;
+               p += 3;
+       } else if (strncmp(p, "onenand", 7) == 0) {
+               *dev_type = MTD_DEV_TYPE_ONENAND;
+               p += 7;
+       } else {
+               printf("incorrect device type in %s\n", id);
+               return 1;
+       }
+
+       if (!isdigit(*p)) {
+               printf("incorrect device number in %s\n", id);
+               return 1;
+       }
+
+       *dev_num = simple_strtoul(p, (char **)&p, 0);
+       if (ret_id)
+               *ret_id = p;
+       return 0;
+}
+
+#ifdef CONFIG_JFFS2_CMDLINE
+/**
+ * Process all devices and generate corresponding mtdparts string describing
+ * all partitions on all devices.
+ *
+ * @param buf output buffer holding generated mtdparts string (output)
+ * @param buflen buffer size
+ * @return 0 on success, 1 otherwise
+ */
+static int generate_mtdparts(char *buf, u32 buflen)
+{
+       struct list_head *pentry, *dentry;
+       struct mtd_device *dev;
+       struct part_info *part, *prev_part;
+       char *p = buf;
+       char tmpbuf[32];
+       u32 size, offset, len, part_cnt;
+       u32 maxlen = buflen - 1;
+
+       DEBUGF("--- generate_mtdparts ---\n");
+
+       if (list_empty(&devices)) {
+               buf[0] = '\0';
+               return 0;
+       }
+
+       sprintf(p, "mtdparts=");
+       p += 9;
+
+       list_for_each(dentry, &devices) {
+               dev = list_entry(dentry, struct mtd_device, link);
+
+               /* copy mtd_id */
+               len = strlen(dev->id->mtd_id) + 1;
+               if (len > maxlen)
+                       goto cleanup;
+               memcpy(p, dev->id->mtd_id, len - 1);
+               p += len - 1;
+               *(p++) = ':';
+               maxlen -= len;
+
+               /* format partitions */
+               prev_part = NULL;
+               part_cnt = 0;
+               list_for_each(pentry, &dev->parts) {
+                       part = list_entry(pentry, struct part_info, link);
+                       size = part->size;
+                       offset = part->offset;
+                       part_cnt++;
+
+                       /* partition size */
+                       memsize_format(tmpbuf, size);
+                       len = strlen(tmpbuf);
+                       if (len > maxlen)
+                               goto cleanup;
+                       memcpy(p, tmpbuf, len);
+                       p += len;
+                       maxlen -= len;
+
+
+                       /* add offset only when there is a gap between
+                        * partitions */
+                       if ((!prev_part && (offset != 0)) ||
+                                       (prev_part && ((prev_part->offset + prev_part->size) != part->offset))) {
+
+                               memsize_format(tmpbuf, offset);
+                               len = strlen(tmpbuf) + 1;
+                               if (len > maxlen)
+                                       goto cleanup;
+                               *(p++) = '@';
+                               memcpy(p, tmpbuf, len - 1);
+                               p += len - 1;
+                               maxlen -= len;
+                       }
+
+                       /* copy name only if user supplied */
+                       if(!part->auto_name) {
+                               len = strlen(part->name) + 2;
+                               if (len > maxlen)
+                                       goto cleanup;
+
+                               *(p++) = '(';
+                               memcpy(p, part->name, len - 2);
+                               p += len - 2;
+                               *(p++) = ')';
+                               maxlen -= len;
+                       }
+
+                       /* ro mask flag */
+                       if (part->mask_flags && MTD_WRITEABLE_CMD) {
+                               len = 2;
+                               if (len > maxlen)
+                                       goto cleanup;
+                               *(p++) = 'r';
+                               *(p++) = 'o';
+                               maxlen -= 2;
+                       }
+
+                       /* print ',' separator if there are other partitions
+                        * following */
+                       if (dev->num_parts > part_cnt) {
+                               if (1 > maxlen)
+                                       goto cleanup;
+                               *(p++) = ',';
+                               maxlen--;
+                       }
+                       prev_part = part;
+               }
+               /* print ';' separator if there are other devices following */
+               if (dentry->next != &devices) {
+                       if (1 > maxlen)
+                               goto cleanup;
+                       *(p++) = ';';
+                       maxlen--;
+               }
+       }
+
+       /* we still have at least one char left, as we decremented maxlen at
+        * the begining */
+       *p = '\0';
+
+       return 0;
+
+cleanup:
+       last_parts[0] = '\0';
+       return 1;
+}
+
+/**
+ * Call generate_mtdparts to process all devices and generate corresponding
+ * mtdparts string, save it in mtdparts environment variable.
+ *
+ * @param buf output buffer holding generated mtdparts string (output)
+ * @param buflen buffer size
+ * @return 0 on success, 1 otherwise
+ */
+static int generate_mtdparts_save(char *buf, u32 buflen)
+{
+       int ret;
+
+       ret = generate_mtdparts(buf, buflen);
+
+       if ((buf[0] != '\0') && (ret == 0))
+               setenv("mtdparts", buf);
+       else
+               setenv("mtdparts", NULL);
+
+       return ret;
+}
+
+/**
+ * Format and print out a partition list for each device from global device
+ * list.
+ */
+static void list_partitions(void)
+{
+       struct list_head *dentry, *pentry;
+       struct part_info *part;
+       struct mtd_device *dev;
+       int part_num;
+
+       DEBUGF("\n---list_partitions---\n");
+       list_for_each(dentry, &devices) {
+               dev = list_entry(dentry, struct mtd_device, link);
+               printf("\ndevice %s%d <%s>, # parts = %d\n",
+                               MTD_DEV_TYPE(dev->id->type), dev->id->num,
+                               dev->id->mtd_id, dev->num_parts);
+               printf(" #: name\t\t\tsize\t\toffset\t\tmask_flags\n");
+
+               /* list partitions for given device */
+               part_num = 0;
+               list_for_each(pentry, &dev->parts) {
+                       part = list_entry(pentry, struct part_info, link);
+                       printf("%2d: %-20s0x%08x\t0x%08x\t%d\n",
+                                       part_num, part->name, part->size,
+                                       part->offset, part->mask_flags);
+
+                       part_num++;
+               }
+       }
+       if (list_empty(&devices))
+               printf("no partitions defined\n");
+
+       /* current_dev is not NULL only when we have non empty device list */
+       if (current_dev) {
+               part = jffs2_part_info(current_dev, current_partnum);
+               if (part) {
+                       printf("\nactive partition: %s%d,%d - (%s) 0x%08x @ 0x%08x\n",
+                                       MTD_DEV_TYPE(current_dev->id->type),
+                                       current_dev->id->num, current_partnum,
+                                       part->name, part->size, part->offset);
+               } else {
+                       printf("could not get current partition info\n\n");
+               }
+       }
+
+       printf("\ndefaults:\n");
+       printf("mtdids  : %s\n", mtdids_default);
+       printf("mtdparts: %s\n", mtdparts_default);
+}
+
+/**
+ * Given partition identifier in form of <dev_type><dev_num>,<part_num> find
+ * corresponding device and verify partition number.
+ *
+ * @param id string describing device and partition or partition name
+ * @param dev pointer to the requested device (output)
+ * @param part_num verified partition number (output)
+ * @param part pointer to requested partition (output)
+ * @return 0 on success, 1 otherwise
+ */
+int find_dev_and_part(const char *id, struct mtd_device **dev,
+               u8 *part_num, struct part_info **part)
+{
+       struct list_head *dentry, *pentry;
+       u8 type, dnum, pnum;
+       const char *p;
+
+       DEBUGF("--- find_dev_and_part ---\nid = %s\n", id);
+
+       list_for_each(dentry, &devices) {
+               *part_num = 0;
+               *dev = list_entry(dentry, struct mtd_device, link);
+               list_for_each(pentry, &(*dev)->parts) {
+                       *part = list_entry(pentry, struct part_info, link);
+                       if (strcmp((*part)->name, id) == 0)
+                               return 0;
+                       (*part_num)++;
+               }
+       }
+
+       p = id;
+       *dev = NULL;
+       *part = NULL;
+       *part_num = 0;
+
+       if (id_parse(p, &p, &type, &dnum) != 0)
+               return 1;
+
+       if ((*p++ != ',') || (*p == '\0')) {
+               printf("no partition number specified\n");
+               return 1;
+       }
+       pnum = simple_strtoul(p, (char **)&p, 0);
+       if (*p != '\0') {
+               printf("unexpected trailing character '%c'\n", *p);
+               return 1;
+       }
+
+       if ((*dev = device_find(type, dnum)) == NULL) {
+               printf("no such device %s%d\n", MTD_DEV_TYPE(type), dnum);
+               return 1;
+       }
+
+       if ((*part = jffs2_part_info(*dev, pnum)) == NULL) {
+               printf("no such partition\n");
+               *dev = NULL;
+               return 1;
+       }
+
+       *part_num = pnum;
+
+       return 0;
+}
+
+/**
+ * Find and delete partition. For partition id format see find_dev_and_part().
+ *
+ * @param id string describing device and partition
+ * @return 0 on success, 1 otherwise
+ */
+static int delete_partition(const char *id)
+{
+       u8 pnum;
+       struct mtd_device *dev;
+       struct part_info *part;
+
+       if (find_dev_and_part(id, &dev, &pnum, &part) == 0) {
+
+               DEBUGF("delete_partition: device = %s%d, partition %d = (%s) 0x%08lx@0x%08lx\n",
+                               MTD_DEV_TYPE(dev->id->type), dev->id->num, pnum,
+                               part->name, part->size, part->offset);
+
+               if (part_del(dev, part) != 0)
+                       return 1;
+
+               if (generate_mtdparts_save(last_parts, MTDPARTS_MAXLEN) != 0) {
+                       printf("generated mtdparts too long, reseting to null\n");
+                       return 1;
+               }
+               return 0;
+       }
+
+       printf("partition %s not found\n", id);
+       return 1;
+}
+
+/**
+ * Accept character string describing mtd partitions and call device_parse()
+ * for each entry. Add created devices to the global devices list.
+ *
+ * @param mtdparts string specifing mtd partitions
+ * @return 0 on success, 1 otherwise
+ */
+static int parse_mtdparts(const char *const mtdparts)
+{
+       const char *p = mtdparts;
+       struct mtd_device *dev;
+       int err = 1;
+
+       DEBUGF("\n---parse_mtdparts---\nmtdparts = %s\n\n", p);
+
+       /* delete all devices and partitions */
+       if (jffs2_devices_init() != 0) {
+               printf("could not initialise device list\n");
+               return err;
+       }
+
+       /* re-read 'mtdparts' variable, jffs2_devices_init may be updating env */
+       p = getenv("mtdparts");
+
+       if (strncmp(p, "mtdparts=", 9) != 0) {
+               printf("mtdparts variable doesn't start with 'mtdparts='\n");
+               return err;
+       }
+       p += 9;
+
+       while (p && (*p != '\0')) {
+               err = 1;
+               if ((device_parse(p, &p, &dev) != 0) || (!dev))
+                       break;
+
+               DEBUGF("+ device: %s\t%d\t%s\n", MTD_DEV_TYPE(dev->id->type),
+                               dev->id->num, dev->id->mtd_id);
+
+               /* check if parsed device is already on the list */
+               if (device_find(dev->id->type, dev->id->num) != NULL) {
+                       printf("device %s%d redefined, please correct mtdparts variable\n",
+                                       MTD_DEV_TYPE(dev->id->type), dev->id->num);
+                       break;
+               }
+
+               list_add_tail(&dev->link, &devices);
+               err = 0;
+       }
+       if (err == 1) {
+               device_delall(&devices);
+               return 1;
+       }
+
+       return 0;
+}
+
+/**
+ * Parse provided string describing mtdids mapping (see file header for mtdids
+ * variable format). Allocate memory for each entry and add all found entries
+ * to the global mtdids list.
+ *
+ * @param ids mapping string
+ * @return 0 on success, 1 otherwise
+ */
+static int parse_mtdids(const char *const ids)
+{
+       const char *p = ids;
+       const char *mtd_id;
+       int mtd_id_len;
+       struct mtdids *id;
+       struct list_head *entry, *n;
+       struct mtdids *id_tmp;
+       u8 type, num;
+       u32 size;
+       int ret = 1;
+
+       DEBUGF("\n---parse_mtdids---\nmtdids = %s\n\n", ids);
+
+       /* clean global mtdids list */
+       list_for_each_safe(entry, n, &mtdids) {
+               id_tmp = list_entry(entry, struct mtdids, link);
+               DEBUGF("mtdids del: %d %d\n", id_tmp->type, id_tmp->num);
+               list_del(entry);
+               free(id_tmp);
+       }
+       last_ids[0] = '\0';
+       INIT_LIST_HEAD(&mtdids);
+
+       while(p && (*p != '\0')) {
+
+               ret = 1;
+               /* parse 'nor'|'nand'|'onenand'<dev-num> */
+               if (id_parse(p, &p, &type, &num) != 0)
+                       break;
+
+               if (*p != '=') {
+                       printf("mtdids: incorrect <dev-num>\n");
+                       break;
+               }
+               p++;
+
+               /* check if requested device exists */
+               if (device_validate(type, num, &size) != 0)
+                       return 1;
+
+               /* locate <mtd-id> */
+               mtd_id = p;
+               if ((p = strchr(mtd_id, ',')) != NULL) {
+                       mtd_id_len = p - mtd_id + 1;
+                       p++;
+               } else {
+                       mtd_id_len = strlen(mtd_id) + 1;
+               }
+               if (mtd_id_len == 0) {
+                       printf("mtdids: no <mtd-id> identifier\n");
+                       break;
+               }
+
+               /* check if this id is already on the list */
+               int double_entry = 0;
+               list_for_each(entry, &mtdids) {
+                       id_tmp = list_entry(entry, struct mtdids, link);
+                       if ((id_tmp->type == type) && (id_tmp->num == num)) {
+                               double_entry = 1;
+                               break;
+                       }
+               }
+               if (double_entry) {
+                       printf("device id %s%d redefined, please correct mtdids variable\n",
+                                       MTD_DEV_TYPE(type), num);
+                       break;
+               }
+
+               /* allocate mtdids structure */
+               if (!(id = (struct mtdids *)malloc(sizeof(struct mtdids) + mtd_id_len))) {
+                       printf("out of memory\n");
+                       break;
+               }
+               memset(id, 0, sizeof(struct mtdids) + mtd_id_len);
+               id->num = num;
+               id->type = type;
+               id->size = size;
+               id->mtd_id = (char *)(id + 1);
+               strncpy(id->mtd_id, mtd_id, mtd_id_len - 1);
+               id->mtd_id[mtd_id_len - 1] = '\0';
+               INIT_LIST_HEAD(&id->link);
+
+               DEBUGF("+ id %s%d\t%16d bytes\t%s\n",
+                               MTD_DEV_TYPE(id->type), id->num,
+                               id->size, id->mtd_id);
+
+               list_add_tail(&id->link, &mtdids);
+               ret = 0;
+       }
+       if (ret == 1) {
+               /* clean mtdids list and free allocated memory */
+               list_for_each_safe(entry, n, &mtdids) {
+                       id_tmp = list_entry(entry, struct mtdids, link);
+                       list_del(entry);
+                       free(id_tmp);
+               }
+               return 1;
+       }
+
+       return 0;
+}
+
+/**
+ * Parse and initialize global mtdids mapping and create global
+ * device/partition list.
+ *
+ * @return 0 on success, 1 otherwise
+ */
+int mtdparts_init(void)
+{
+       static int initialized = 0;
+       const char *ids, *parts;
+       const char *current_partition;
+       int ids_changed;
+       char tmp_ep[PARTITION_MAXLEN];
+
+       DEBUGF("\n---mtdparts_init---\n");
+       if (!initialized) {
+               INIT_LIST_HEAD(&mtdids);
+               INIT_LIST_HEAD(&devices);
+               memset(last_ids, 0, MTDIDS_MAXLEN);
+               memset(last_parts, 0, MTDPARTS_MAXLEN);
+               memset(last_partition, 0, PARTITION_MAXLEN);
+               initialized = 1;
+       }
+
+       /* get variables */
+       ids = getenv("mtdids");
+       parts = getenv("mtdparts");
+       current_partition = getenv("partition");
+
+       /* save it for later parsing, cannot rely on current partition pointer
+        * as 'partition' variable may be updated during init */
+       tmp_ep[0] = '\0';
+       if (current_partition)
+               strncpy(tmp_ep, current_partition, PARTITION_MAXLEN);
+
+       DEBUGF("last_ids  : %s\n", last_ids);
+       DEBUGF("env_ids   : %s\n", ids);
+       DEBUGF("last_parts: %s\n", last_parts);
+       DEBUGF("env_parts : %s\n\n", parts);
+
+       DEBUGF("last_partition : %s\n", last_partition);
+       DEBUGF("env_partition  : %s\n", current_partition);
+
+       /* if mtdids varible is empty try to use defaults */
+       if (!ids) {
+               if (mtdids_default) {
+                       DEBUGF("mtdids variable not defined, using default\n");
+                       ids = mtdids_default;
+                       setenv("mtdids", (char *)ids);
+               } else {
+                       printf("mtdids not defined, no default present\n");
+                       return 1;
+               }
+       }
+       if (strlen(ids) > MTDIDS_MAXLEN - 1) {
+               printf("mtdids too long (> %d)\n", MTDIDS_MAXLEN);
+               return 1;
+       }
+
+       /* do no try to use defaults when mtdparts variable is not defined,
+        * just check the length */
+       if (!parts)
+               printf("mtdparts variable not set, see 'help mtdparts'\n");
+
+       if (parts && (strlen(parts) > MTDPARTS_MAXLEN - 1)) {
+               printf("mtdparts too long (> %d)\n", MTDPARTS_MAXLEN);
+               return 1;
+       }
+
+       /* check if we have already parsed those mtdids */
+       if ((last_ids[0] != '\0') && (strcmp(last_ids, ids) == 0)) {
+               ids_changed = 0;
+       } else {
+               ids_changed = 1;
+
+               if (parse_mtdids(ids) != 0) {
+                       jffs2_devices_init();
+                       return 1;
+               }
+
+               /* ok it's good, save new ids */
+               strncpy(last_ids, ids, MTDIDS_MAXLEN);
+       }
+
+       /* parse partitions if either mtdparts or mtdids were updated */
+       if (parts && ((last_parts[0] == '\0') || ((strcmp(last_parts, parts) != 0)) || ids_changed)) {
+               if (parse_mtdparts(parts) != 0)
+                       return 1;
+
+               if (list_empty(&devices)) {
+                       printf("mtdparts_init: no valid partitions\n");
+                       return 1;
+               }
+
+               /* ok it's good, save new parts */
+               strncpy(last_parts, parts, MTDPARTS_MAXLEN);
+
+               /* reset first partition from first dev from the list as current */
+               current_dev = list_entry(devices.next, struct mtd_device, link);
+               current_partnum = 0;
+               current_save();
+
+               DEBUGF("mtdparts_init: current_dev  = %s%d, current_partnum = %d\n",
+                               MTD_DEV_TYPE(current_dev->id->type),
+                               current_dev->id->num, current_partnum);
+       }
+
+       /* mtdparts variable was reset to NULL, delete all devices/partitions */
+       if (!parts && (last_parts[0] != '\0'))
+               return jffs2_devices_init();
+
+       /* do not process current partition if mtdparts variable is null */
+       if (!parts)
+               return 0;
+
+       /* is current partition set in environment? if so, use it */
+       if ((tmp_ep[0] != '\0') && (strcmp(tmp_ep, last_partition) != 0)) {
+               struct part_info *p;
+               struct mtd_device *cdev;
+               u8 pnum;
+
+               DEBUGF("--- getting current partition: %s\n", tmp_ep);
+
+               if (find_dev_and_part(tmp_ep, &cdev, &pnum, &p) == 0) {
+                       current_dev = cdev;
+                       current_partnum = pnum;
+                       current_save();
+               }
+       } else if (getenv("partition") == NULL) {
+               DEBUGF("no partition variable set, setting...\n");
+               current_save();
+       }
+
+       return 0;
+}
+#else /* #ifdef CONFIG_JFFS2_CMDLINE */
+/*
+ * 'Static' version of command line mtdparts_init() routine. Single partition on
+ * a single device configuration.
+ */
+
+/**
+ * Calculate sector size.
+ *
+ * @return sector size
+ */
+static inline u32 get_part_sector_size_nand(struct mtdids *id)
+{
+#if defined(CONFIG_JFFS2_NAND) && defined(CONFIG_CMD_NAND)
+#if defined(CONFIG_NAND_LEGACY)
+       extern struct nand_chip nand_dev_desc[CONFIG_SYS_MAX_NAND_DEVICE];
+
+       return nand_dev_desc[id->num].erasesize;
+#else
+       nand_info_t *nand;
+
+       nand = &nand_info[id->num];
+
+       return nand->erasesize;
+#endif
+#else
+       BUG();
+       return 0;
+#endif
+}
+
+static inline u32 get_part_sector_size_nor(struct mtdids *id, struct part_info *part)
+{
+#if defined(CONFIG_CMD_FLASH)
+       extern flash_info_t flash_info[];
+
+       u32 end_phys, start_phys, sector_size = 0, size = 0;
+       int i;
+       flash_info_t *flash;
+
+       flash = &flash_info[id->num];
+
+       start_phys = flash->start[0] + part->offset;
+       end_phys = start_phys + part->size;
+
+       for (i = 0; i < flash->sector_count; i++) {
+               if (flash->start[i] >= end_phys)
+                       break;
+
+               if (flash->start[i] >= start_phys) {
+                       if (i == flash->sector_count - 1) {
+                               size = flash->start[0] + flash->size - flash->start[i];
+                       } else {
+                               size = flash->start[i+1] - flash->start[i];
+                       }
+
+                       if (sector_size < size)
+                               sector_size = size;
+               }
+       }
+
+       return sector_size;
+#else
+       BUG();
+       return 0;
+#endif
+}
+
+static inline u32 get_part_sector_size_onenand(void)
+{
+#if defined(CONFIG_CMD_ONENAND)
+       struct mtd_info *mtd;
+
+       mtd = &onenand_mtd;
+
+       return mtd->erasesize;
+#else
+       BUG();
+       return 0;
+#endif
+}
+
+static inline u32 get_part_sector_size(struct mtdids *id, struct part_info *part)
+{
+       if (id->type == MTD_DEV_TYPE_NAND)
+               return get_part_sector_size_nand(id);
+       else if (id->type == MTD_DEV_TYPE_NOR)
+               return get_part_sector_size_nor(id, part);
+       else if (id->type == MTD_DEV_TYPE_ONENAND)
+               return get_part_sector_size_onenand();
+       else
+               DEBUGF("Error: Unknown device type.\n");
+
+       return 0;
+}
+
+/**
+ * Parse and initialize global mtdids mapping and create global
+ * device/partition list.
+ *
+ * @return 0 on success, 1 otherwise
+ */
+int mtdparts_init(void)
+{
+       static int initialized = 0;
+       u32 size;
+       char *dev_name;
+
+       DEBUGF("\n---mtdparts_init---\n");
+       if (!initialized) {
+               struct mtdids *id;
+               struct part_info *part;
+
+               initialized = 1;
+               current_dev = (struct mtd_device *)
+                       malloc(sizeof(struct mtd_device) +
+                                       sizeof(struct part_info) +
+                                       sizeof(struct mtdids));
+               if (!current_dev) {
+                       printf("out of memory\n");
+                       return 1;
+               }
+               memset(current_dev, 0, sizeof(struct mtd_device) +
+                                       sizeof(struct part_info) + sizeof(struct mtdids));
+
+               id = (struct mtdids *)(current_dev + 1);
+               part = (struct part_info *)(id + 1);
+
+               /* id */
+               id->mtd_id = "single part";
+
+#if defined(CONFIG_JFFS2_DEV)
+               dev_name = CONFIG_JFFS2_DEV;
+#else
+               dev_name = "nor0";
+#endif
+
+               if ((id_parse(dev_name, NULL, &id->type, &id->num) != 0) ||
+                               (device_validate(id->type, id->num, &size) != 0)) {
+                       printf("incorrect device: %s%d\n", MTD_DEV_TYPE(id->type), id->num);
+                       free(current_dev);
+                       return 1;
+               }
+               id->size = size;
+               INIT_LIST_HEAD(&id->link);
+
+               DEBUGF("dev id: type = %d, num = %d, size = 0x%08lx, mtd_id = %s\n",
+                               id->type, id->num, id->size, id->mtd_id);
+
+               /* partition */
+               part->name = "static";
+               part->auto_name = 0;
+
+#if defined(CONFIG_JFFS2_PART_SIZE)
+               part->size = CONFIG_JFFS2_PART_SIZE;
+#else
+               part->size = SIZE_REMAINING;
+#endif
+
+#if defined(CONFIG_JFFS2_PART_OFFSET)
+               part->offset = CONFIG_JFFS2_PART_OFFSET;
+#else
+               part->offset = 0x00000000;
+#endif
+
+               part->sector_size = get_part_sector_size(id, part);
+
+               part->dev = current_dev;
+               INIT_LIST_HEAD(&part->link);
+
+               /* recalculate size if needed */
+               if (part->size == SIZE_REMAINING)
+                       part->size = id->size - part->offset;
+
+               DEBUGF("part  : name = %s, size = 0x%08lx, offset = 0x%08lx\n",
+                               part->name, part->size, part->offset);
+
+               /* device */
+               current_dev->id = id;
+               INIT_LIST_HEAD(&current_dev->link);
+               current_dev->num_parts = 1;
+               INIT_LIST_HEAD(&current_dev->parts);
+               list_add(&part->link, &current_dev->parts);
+       }
+
+       return 0;
+}
+#endif /* #ifdef CONFIG_JFFS2_CMDLINE */
+
+/**
+ * Return pointer to the partition of a requested number from a requested
+ * device.
+ *
+ * @param dev device that is to be searched for a partition
+ * @param part_num requested partition number
+ * @return pointer to the part_info, NULL otherwise
+ */
+static struct part_info* jffs2_part_info(struct mtd_device *dev, unsigned int part_num)
+{
+       struct list_head *entry;
+       struct part_info *part;
+       int num;
+
+       if (!dev)
+               return NULL;
+
+       DEBUGF("\n--- jffs2_part_info: partition number %d for device %s%d (%s)\n",
+                       part_num, MTD_DEV_TYPE(dev->id->type),
+                       dev->id->num, dev->id->mtd_id);
+
+       if (part_num >= dev->num_parts) {
+               printf("invalid partition number %d for device %s%d (%s)\n",
+                               part_num, MTD_DEV_TYPE(dev->id->type),
+                               dev->id->num, dev->id->mtd_id);
+               return NULL;
+       }
+
+       /* locate partition number, return it */
+       num = 0;
+       list_for_each(entry, &dev->parts) {
+               part = list_entry(entry, struct part_info, link);
+
+               if (part_num == num++) {
+                       return part;
+               }
+       }
+
+       return NULL;
+}
+
+/***************************************************/
+/* U-boot commands                                */
+/***************************************************/
+
+/**
+ * Routine implementing fsload u-boot command. This routine tries to load
+ * a requested file from jffs2/cramfs filesystem on a current partition.
+ *
+ * @param cmdtp command internal data
+ * @param flag command flag
+ * @param argc number of arguments supplied to the command
+ * @param argv arguments list
+ * @return 0 on success, 1 otherwise
+ */
+int do_jffs2_fsload(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+       char *fsname;
+       char *filename;
+       int size;
+       struct part_info *part;
+       ulong offset = load_addr;
+
+       /* pre-set Boot file name */
+       if ((filename = getenv("bootfile")) == NULL) {
+               filename = "uImage";
+       }
+
+       if (argc == 2) {
+               filename = argv[1];
+       }
+       if (argc == 3) {
+               offset = simple_strtoul(argv[1], NULL, 16);
+               load_addr = offset;
+               filename = argv[2];
+       }
+
+       /* make sure we are in sync with env variables */
+       if (mtdparts_init() !=0)
+               return 1;
+
+       if ((part = jffs2_part_info(current_dev, current_partnum))){
+
+               /* check partition type for cramfs */
+               fsname = (cramfs_check(part) ? "CRAMFS" : "JFFS2");
+               printf("### %s loading '%s' to 0x%lx\n", fsname, filename, offset);
+
+               if (cramfs_check(part)) {
+                       size = cramfs_load ((char *) offset, part, filename);
+               } else {
+                       /* if this is not cramfs assume jffs2 */
+                       size = jffs2_1pass_load((char *)offset, part, filename);
+               }
+
+               if (size > 0) {
+                       char buf[10];
+                       printf("### %s load complete: %d bytes loaded to 0x%lx\n",
+                               fsname, size, offset);
+                       sprintf(buf, "%x", size);
+                       setenv("filesize", buf);
+               } else {
+                       printf("### %s LOAD ERROR<%x> for %s!\n", fsname, size, filename);
+               }
+
+               return !(size > 0);
+       }
+       return 1;
+}
+
+/**
+ * Routine implementing u-boot ls command which lists content of a given
+ * directory on a current partition.
+ *
+ * @param cmdtp command internal data
+ * @param flag command flag
+ * @param argc number of arguments supplied to the command
+ * @param argv arguments list
+ * @return 0 on success, 1 otherwise
+ */
+int do_jffs2_ls(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+       char *filename = "/";
+       int ret;
+       struct part_info *part;
+
+       if (argc == 2)
+               filename = argv[1];
+
+       /* make sure we are in sync with env variables */
+       if (mtdparts_init() !=0)
+               return 1;
+
+       if ((part = jffs2_part_info(current_dev, current_partnum))){
+
+               /* check partition type for cramfs */
+               if (cramfs_check(part)) {
+                       ret = cramfs_ls (part, filename);
+               } else {
+                       /* if this is not cramfs assume jffs2 */
+                       ret = jffs2_1pass_ls(part, filename);
+               }
+
+               return ret ? 0 : 1;
+       }
+       return 1;
+}
+
+/**
+ * Routine implementing u-boot fsinfo command. This routine prints out
+ * miscellaneous filesystem informations/statistics.
+ *
+ * @param cmdtp command internal data
+ * @param flag command flag
+ * @param argc number of arguments supplied to the command
+ * @param argv arguments list
+ * @return 0 on success, 1 otherwise
+ */
+int do_jffs2_fsinfo(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+       struct part_info *part;
+       char *fsname;
+       int ret;
+
+       /* make sure we are in sync with env variables */
+       if (mtdparts_init() !=0)
+               return 1;
+
+       if ((part = jffs2_part_info(current_dev, current_partnum))){
+
+               /* check partition type for cramfs */
+               fsname = (cramfs_check(part) ? "CRAMFS" : "JFFS2");
+               printf("### filesystem type is %s\n", fsname);
+
+               if (cramfs_check(part)) {
+                       ret = cramfs_info (part);
+               } else {
+                       /* if this is not cramfs assume jffs2 */
+                       ret = jffs2_1pass_info(part);
+               }
+
+               return ret ? 0 : 1;
+       }
+       return 1;
+}
+
+/* command line only */
+#ifdef CONFIG_JFFS2_CMDLINE
+/**
+ * Routine implementing u-boot chpart command. Sets new current partition based
+ * on the user supplied partition id. For partition id format see find_dev_and_part().
+ *
+ * @param cmdtp command internal data
+ * @param flag command flag
+ * @param argc number of arguments supplied to the command
+ * @param argv arguments list
+ * @return 0 on success, 1 otherwise
+ */
+int do_jffs2_chpart(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+/* command line only */
+       struct mtd_device *dev;
+       struct part_info *part;
+       u8 pnum;
+
+       if (mtdparts_init() !=0)
+               return 1;
+
+       if (argc < 2) {
+               printf("no partition id specified\n");
+               return 1;
+       }
+
+       if (find_dev_and_part(argv[1], &dev, &pnum, &part) != 0)
+               return 1;
+
+       current_dev = dev;
+       current_partnum = pnum;
+       current_save();
+
+       printf("partition changed to %s%d,%d\n",
+                       MTD_DEV_TYPE(dev->id->type), dev->id->num, pnum);
+
+       return 0;
+}
+
+/**
+ * Routine implementing u-boot mtdparts command. Initialize/update default global
+ * partition list and process user partition request (list, add, del).
+ *
+ * @param cmdtp command internal data
+ * @param flag command flag
+ * @param argc number of arguments supplied to the command
+ * @param argv arguments list
+ * @return 0 on success, 1 otherwise
+ */
+int do_jffs2_mtdparts(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+       if (argc == 2) {
+               if (strcmp(argv[1], "default") == 0) {
+                       setenv("mtdids", (char *)mtdids_default);
+                       setenv("mtdparts", (char *)mtdparts_default);
+                       setenv("partition", NULL);
+
+                       mtdparts_init();
+                       return 0;
+               } else if (strcmp(argv[1], "delall") == 0) {
+                       /* this may be the first run, initialize lists if needed */
+                       mtdparts_init();
+
+                       setenv("mtdparts", NULL);
+
+                       /* jffs2_devices_init() calls current_save() */
+                       return jffs2_devices_init();
+               }
+       }
+
+       /* make sure we are in sync with env variables */
+       if (mtdparts_init() != 0)
+               return 1;
+
+       if (argc == 1) {
+               list_partitions();
+               return 0;
+       }
+
+       /* mtdparts add <mtd-dev> <size>[@<offset>] <name> [ro] */
+       if (((argc == 5) || (argc == 6)) && (strcmp(argv[1], "add") == 0)) {
+#define PART_ADD_DESC_MAXLEN 64
+               char tmpbuf[PART_ADD_DESC_MAXLEN];
+               u8 type, num, len;
+               struct mtd_device *dev;
+               struct mtd_device *dev_tmp;
+               struct mtdids *id;
+               struct part_info *p;
+
+               if (id_parse(argv[2], NULL, &type, &num) != 0)
+                       return 1;
+
+               if ((id = id_find(type, num)) == NULL) {
+                       printf("no such device %s defined in mtdids variable\n", argv[2]);
+                       return 1;
+               }
+
+               len = strlen(id->mtd_id) + 1;   /* 'mtd_id:' */
+               len += strlen(argv[3]);         /* size@offset */
+               len += strlen(argv[4]) + 2;     /* '(' name ')' */
+               if (argv[5] && (strlen(argv[5]) == 2))
+                       len += 2;               /* 'ro' */
+
+               if (len >= PART_ADD_DESC_MAXLEN) {
+                       printf("too long partition description\n");
+                       return 1;
+               }
+               sprintf(tmpbuf, "%s:%s(%s)%s",
+                               id->mtd_id, argv[3], argv[4], argv[5] ? argv[5] : "");
+               DEBUGF("add tmpbuf: %s\n", tmpbuf);
+
+               if ((device_parse(tmpbuf, NULL, &dev) != 0) || (!dev))
+                       return 1;
+
+               DEBUGF("+ %s\t%d\t%s\n", MTD_DEV_TYPE(dev->id->type),
+                               dev->id->num, dev->id->mtd_id);
+
+               if ((dev_tmp = device_find(dev->id->type, dev->id->num)) == NULL) {
+                       device_add(dev);
+               } else {
+                       /* merge new partition with existing ones*/
+                       p = list_entry(dev->parts.next, struct part_info, link);
+                       if (part_add(dev_tmp, p) != 0) {
+                               device_del(dev);
+                               return 1;
+                       }
+               }
+
+               if (generate_mtdparts_save(last_parts, MTDPARTS_MAXLEN) != 0) {
+                       printf("generated mtdparts too long, reseting to null\n");
+                       return 1;
+               }
+
+               return 0;
+       }
+
+       /* mtdparts del part-id */
+       if ((argc == 3) && (strcmp(argv[1], "del") == 0)) {
+               DEBUGF("del: part-id = %s\n", argv[2]);
+
+               return delete_partition(argv[2]);
+       }
+
+       cmd_usage(cmdtp);
+       return 1;
+}
+#endif /* #ifdef CONFIG_JFFS2_CMDLINE */
+
+/***************************************************/
+U_BOOT_CMD(
+       fsload, 3,      0,      do_jffs2_fsload,
+       "load binary file from a filesystem image",
+       "[ off ] [ filename ]\n"
+       "    - load binary file from flash bank\n"
+       "      with offset 'off'\n"
+);
+U_BOOT_CMD(
+       ls,     2,      1,      do_jffs2_ls,
+       "list files in a directory (default /)",
+       "[ directory ]\n"
+       "    - list files in a directory.\n"
+);
+
+U_BOOT_CMD(
+       fsinfo, 1,      1,      do_jffs2_fsinfo,
+       "print information about filesystems",
+       "    - print information about filesystems\n"
+);
+
+#ifdef CONFIG_JFFS2_CMDLINE
+U_BOOT_CMD(
+       chpart, 2,      0,      do_jffs2_chpart,
+       "change active partition",
+       "part-id\n"
+       "    - change active partition (e.g. part-id = nand0,1)\n"
+);
+
+U_BOOT_CMD(
+       mtdparts,       6,      0,      do_jffs2_mtdparts,
+       "define flash/nand partitions",
+       "\n"
+       "    - list partition table\n"
+       "mtdparts delall\n"
+       "    - delete all partitions\n"
+       "mtdparts del part-id\n"
+       "    - delete partition (e.g. part-id = nand0,1)\n"
+       "mtdparts add <mtd-dev> <size>[@<offset>] [<name>] [ro]\n"
+       "    - add partition\n"
+       "mtdparts default\n"
+       "    - reset partition table to defaults\n\n"
+       "-----\n\n"
+       "this command uses three environment variables:\n\n"
+       "'partition' - keeps current partition identifier\n\n"
+       "partition  := <part-id>\n"
+       "<part-id>  := <dev-id>,part_num\n\n"
+       "'mtdids' - linux kernel mtd device id <-> u-boot device id mapping\n\n"
+       "mtdids=<idmap>[,<idmap>,...]\n\n"
+       "<idmap>    := <dev-id>=<mtd-id>\n"
+       "<dev-id>   := 'nand'|'nor'|'onenand'<dev-num>\n"
+       "<dev-num>  := mtd device number, 0...\n"
+       "<mtd-id>   := unique device tag used by linux kernel to find mtd device (mtd->name)\n\n"
+       "'mtdparts' - partition list\n\n"
+       "mtdparts=mtdparts=<mtd-def>[;<mtd-def>...]\n\n"
+       "<mtd-def>  := <mtd-id>:<part-def>[,<part-def>...]\n"
+       "<mtd-id>   := unique device tag used by linux kernel to find mtd device (mtd->name)\n"
+       "<part-def> := <size>[@<offset>][<name>][<ro-flag>]\n"
+       "<size>     := standard linux memsize OR '-' to denote all remaining space\n"
+       "<offset>   := partition start offset within the device\n"
+       "<name>     := '(' NAME ')'\n"
+       "<ro-flag>  := when set to 'ro' makes partition read-only (not used, passed to kernel)\n"
+);
+#endif /* #ifdef CONFIG_JFFS2_CMDLINE */
+
+/***************************************************/
diff -Naur u-boot-2009.03_orig/common/docecc.c u-boot-2009.03/common/docecc.c
--- u-boot-2009.03_orig/common/docecc.c 2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/common/docecc.c      2009-03-31 14:50:23.959397600 -0700
@@ -1,513 +1,513 @@
-/*
- * ECC algorithm for M-systems disk on chip. We use the excellent Reed
- * Solmon code of Phil Karn (karn@ka9q.ampr.org) available under the
- * GNU GPL License. The rest is simply to convert the disk on chip
- * syndrom into a standard syndom.
- *
- * Author: Fabrice Bellard (fabrice.bellard@netgem.com)
- * Copyright (C) 2000 Netgem S.A.
- *
- * $Id: docecc.c,v 1.4 2001/10/02 15:05:13 dwmw2 Exp $
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#include <config.h>
-#include <common.h>
-#include <malloc.h>
-
-#undef ECC_DEBUG
-#undef PSYCHO_DEBUG
-
-#include <linux/mtd/doc2000.h>
-
-/* need to undef it (from asm/termbits.h) */
-#undef B0
-
-#define MM 10 /* Symbol size in bits */
-#define KK (1023-4) /* Number of data symbols per block */
-#define B0 510 /* First root of generator polynomial, alpha form */
-#define PRIM 1 /* power of alpha used to generate roots of generator poly */
-#define        NN ((1 << MM) - 1)
-
-typedef unsigned short dtype;
-
-/* 1+x^3+x^10 */
-static const int Pp[MM+1] = { 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1 };
-
-/* This defines the type used to store an element of the Galois Field
- * used by the code. Make sure this is something larger than a char if
- * if anything larger than GF(256) is used.
- *
- * Note: unsigned char will work up to GF(256) but int seems to run
- * faster on the Pentium.
- */
-typedef int gf;
-
-/* No legal value in index form represents zero, so
- * we need a special value for this purpose
- */
-#define A0     (NN)
-
-/* Compute x % NN, where NN is 2**MM - 1,
- * without a slow divide
- */
-static inline gf
-modnn(int x)
-{
-  while (x >= NN) {
-    x -= NN;
-    x = (x >> MM) + (x & NN);
-  }
-  return x;
-}
-
-#define        CLEAR(a,n) {\
-int ci;\
-for(ci=(n)-1;ci >=0;ci--)\
-(a)[ci] = 0;\
-}
-
-#define        COPY(a,b,n) {\
-int ci;\
-for(ci=(n)-1;ci >=0;ci--)\
-(a)[ci] = (b)[ci];\
-}
-
-#define        COPYDOWN(a,b,n) {\
-int ci;\
-for(ci=(n)-1;ci >=0;ci--)\
-(a)[ci] = (b)[ci];\
-}
-
-#define Ldec 1
-
-/* generate GF(2**m) from the irreducible polynomial p(X) in Pp[0]..Pp[m]
-   lookup tables:  index->polynomial form   alpha_to[] contains j=alpha**i;
-                  polynomial form -> index form  index_of[j=alpha**i] = i
-   alpha=2 is the primitive element of GF(2**m)
-   HARI's COMMENT: (4/13/94) alpha_to[] can be used as follows:
-       Let @ represent the primitive element commonly called "alpha" that
-   is the root of the primitive polynomial p(x). Then in GF(2^m), for any
-   0 <= i <= 2^m-2,
-       @^i = a(0) + a(1) @ + a(2) @^2 + ... + a(m-1) @^(m-1)
-   where the binary vector (a(0),a(1),a(2),...,a(m-1)) is the representation
-   of the integer "alpha_to[i]" with a(0) being the LSB and a(m-1) the MSB. Thus for
-   example the polynomial representation of @^5 would be given by the binary
-   representation of the integer "alpha_to[5]".
-                  Similarily, index_of[] can be used as follows:
-       As above, let @ represent the primitive element of GF(2^m) that is
-   the root of the primitive polynomial p(x). In order to find the power
-   of @ (alpha) that has the polynomial representation
-       a(0) + a(1) @ + a(2) @^2 + ... + a(m-1) @^(m-1)
-   we consider the integer "i" whose binary representation with a(0) being LSB
-   and a(m-1) MSB is (a(0),a(1),...,a(m-1)) and locate the entry
-   "index_of[i]". Now, @^index_of[i] is that element whose polynomial
-    representation is (a(0),a(1),a(2),...,a(m-1)).
-   NOTE:
-       The element alpha_to[2^m-1] = 0 always signifying that the
-   representation of "@^infinity" = 0 is (0,0,0,...,0).
-       Similarily, the element index_of[0] = A0 always signifying
-   that the power of alpha which has the polynomial representation
-   (0,0,...,0) is "infinity".
-
-*/
-
-static void
-generate_gf(dtype Alpha_to[NN + 1], dtype Index_of[NN + 1])
-{
-  register int i, mask;
-
-  mask = 1;
-  Alpha_to[MM] = 0;
-  for (i = 0; i < MM; i++) {
-    Alpha_to[i] = mask;
-    Index_of[Alpha_to[i]] = i;
-    /* If Pp[i] == 1 then, term @^i occurs in poly-repr of @^MM */
-    if (Pp[i] != 0)
-      Alpha_to[MM] ^= mask;    /* Bit-wise EXOR operation */
-    mask <<= 1;        /* single left-shift */
-  }
-  Index_of[Alpha_to[MM]] = MM;
-  /*
-   * Have obtained poly-repr of @^MM. Poly-repr of @^(i+1) is given by
-   * poly-repr of @^i shifted left one-bit and accounting for any @^MM
-   * term that may occur when poly-repr of @^i is shifted.
-   */
-  mask >>= 1;
-  for (i = MM + 1; i < NN; i++) {
-    if (Alpha_to[i - 1] >= mask)
-      Alpha_to[i] = Alpha_to[MM] ^ ((Alpha_to[i - 1] ^ mask) << 1);
-    else
-      Alpha_to[i] = Alpha_to[i - 1] << 1;
-    Index_of[Alpha_to[i]] = i;
-  }
-  Index_of[0] = A0;
-  Alpha_to[NN] = 0;
-}
-
-/*
- * Performs ERRORS+ERASURES decoding of RS codes. bb[] is the content
- * of the feedback shift register after having processed the data and
- * the ECC.
- *
- * Return number of symbols corrected, or -1 if codeword is illegal
- * or uncorrectable. If eras_pos is non-null, the detected error locations
- * are written back. NOTE! This array must be at least NN-KK elements long.
- * The corrected data are written in eras_val[]. They must be xor with the data
- * to retrieve the correct data : data[erase_pos[i]] ^= erase_val[i] .
- *
- * First "no_eras" erasures are declared by the calling program. Then, the
- * maximum # of errors correctable is t_after_eras = floor((NN-KK-no_eras)/2).
- * If the number of channel errors is not greater than "t_after_eras" the
- * transmitted codeword will be recovered. Details of algorithm can be found
- * in R. Blahut's "Theory ... of Error-Correcting Codes".
-
- * Warning: the eras_pos[] array must not contain duplicate entries; decoder failure
- * will result. The decoder *could* check for this condition, but it would involve
- * extra time on every decoding operation.
- * */
-static int
-eras_dec_rs(dtype Alpha_to[NN + 1], dtype Index_of[NN + 1],
-           gf bb[NN - KK + 1], gf eras_val[NN-KK], int eras_pos[NN-KK],
-           int no_eras)
-{
-  int deg_lambda, el, deg_omega;
-  int i, j, r,k;
-  gf u,q,tmp,num1,num2,den,discr_r;
-  gf lambda[NN-KK + 1], s[NN-KK + 1];  /* Err+Eras Locator poly
-                                        * and syndrome poly */
-  gf b[NN-KK + 1], t[NN-KK + 1], omega[NN-KK + 1];
-  gf root[NN-KK], reg[NN-KK + 1], loc[NN-KK];
-  int syn_error, count;
-
-  syn_error = 0;
-  for(i=0;i<NN-KK;i++)
-      syn_error |= bb[i];
-
-  if (!syn_error) {
-    /* if remainder is zero, data[] is a codeword and there are no
-     * errors to correct. So return data[] unmodified
-     */
-    count = 0;
-    goto finish;
-  }
-
-  for(i=1;i<=NN-KK;i++){
-    s[i] = bb[0];
-  }
-  for(j=1;j<NN-KK;j++){
-    if(bb[j] == 0)
-      continue;
-    tmp = Index_of[bb[j]];
-
-    for(i=1;i<=NN-KK;i++)
-      s[i] ^= Alpha_to[modnn(tmp + (B0+i-1)*PRIM*j)];
-  }
-
-  /* undo the feedback register implicit multiplication and convert
-     syndromes to index form */
-
-  for(i=1;i<=NN-KK;i++) {
-      tmp = Index_of[s[i]];
-      if (tmp != A0)
-         tmp = modnn(tmp + 2 * KK * (B0+i-1)*PRIM);
-      s[i] = tmp;
-  }
-
-  CLEAR(&lambda[1],NN-KK);
-  lambda[0] = 1;
-
-  if (no_eras > 0) {
-    /* Init lambda to be the erasure locator polynomial */
-    lambda[1] = Alpha_to[modnn(PRIM * eras_pos[0])];
-    for (i = 1; i < no_eras; i++) {
-      u = modnn(PRIM*eras_pos[i]);
-      for (j = i+1; j > 0; j--) {
-       tmp = Index_of[lambda[j - 1]];
-       if(tmp != A0)
-         lambda[j] ^= Alpha_to[modnn(u + tmp)];
-      }
-    }
-#ifdef ECC_DEBUG
-    /* Test code that verifies the erasure locator polynomial just constructed
-       Needed only for decoder debugging. */
-
-    /* find roots of the erasure location polynomial */
-    for(i=1;i<=no_eras;i++)
-      reg[i] = Index_of[lambda[i]];
-    count = 0;
-    for (i = 1,k=NN-Ldec; i <= NN; i++,k = modnn(NN+k-Ldec)) {
-      q = 1;
-      for (j = 1; j <= no_eras; j++)
-       if (reg[j] != A0) {
-         reg[j] = modnn(reg[j] + j);
-         q ^= Alpha_to[reg[j]];
-       }
-      if (q != 0)
-       continue;
-      /* store root and error location number indices */
-      root[count] = i;
-      loc[count] = k;
-      count++;
-    }
-    if (count != no_eras) {
-      printf("\n lambda(x) is WRONG\n");
-      count = -1;
-      goto finish;
-    }
-#ifdef PSYCHO_DEBUG
-    printf("\n Erasure positions as determined by roots of Eras Loc Poly:\n");
-    for (i = 0; i < count; i++)
-      printf("%d ", loc[i]);
-    printf("\n");
-#endif
-#endif
-  }
-  for(i=0;i<NN-KK+1;i++)
-    b[i] = Index_of[lambda[i]];
-
-  /*
-   * Begin Berlekamp-Massey algorithm to determine error+erasure
-   * locator polynomial
-   */
-  r = no_eras;
-  el = no_eras;
-  while (++r <= NN-KK) {       /* r is the step number */
-    /* Compute discrepancy at the r-th step in poly-form */
-    discr_r = 0;
-    for (i = 0; i < r; i++){
-      if ((lambda[i] != 0) && (s[r - i] != A0)) {
-       discr_r ^= Alpha_to[modnn(Index_of[lambda[i]] + s[r - i])];
-      }
-    }
-    discr_r = Index_of[discr_r];       /* Index form */
-    if (discr_r == A0) {
-      /* 2 lines below: B(x) <-- x*B(x) */
-      COPYDOWN(&b[1],b,NN-KK);
-      b[0] = A0;
-    } else {
-      /* 7 lines below: T(x) <-- lambda(x) - discr_r*x*b(x) */
-      t[0] = lambda[0];
-      for (i = 0 ; i < NN-KK; i++) {
-       if(b[i] != A0)
-         t[i+1] = lambda[i+1] ^ Alpha_to[modnn(discr_r + b[i])];
-       else
-         t[i+1] = lambda[i+1];
-      }
-      if (2 * el <= r + no_eras - 1) {
-       el = r + no_eras - el;
-       /*
-        * 2 lines below: B(x) <-- inv(discr_r) *
-        * lambda(x)
-        */
-       for (i = 0; i <= NN-KK; i++)
-         b[i] = (lambda[i] == 0) ? A0 : modnn(Index_of[lambda[i]] - discr_r + NN);
-      } else {
-       /* 2 lines below: B(x) <-- x*B(x) */
-       COPYDOWN(&b[1],b,NN-KK);
-       b[0] = A0;
-      }
-      COPY(lambda,t,NN-KK+1);
-    }
-  }
-
-  /* Convert lambda to index form and compute deg(lambda(x)) */
-  deg_lambda = 0;
-  for(i=0;i<NN-KK+1;i++){
-    lambda[i] = Index_of[lambda[i]];
-    if(lambda[i] != A0)
-      deg_lambda = i;
-  }
-  /*
-   * Find roots of the error+erasure locator polynomial by Chien
-   * Search
-   */
-  COPY(&reg[1],&lambda[1],NN-KK);
-  count = 0;           /* Number of roots of lambda(x) */
-  for (i = 1,k=NN-Ldec; i <= NN; i++,k = modnn(NN+k-Ldec)) {
-    q = 1;
-    for (j = deg_lambda; j > 0; j--){
-      if (reg[j] != A0) {
-       reg[j] = modnn(reg[j] + j);
-       q ^= Alpha_to[reg[j]];
-      }
-    }
-    if (q != 0)
-      continue;
-    /* store root (index-form) and error location number */
-    root[count] = i;
-    loc[count] = k;
-    /* If we've already found max possible roots,
-     * abort the search to save time
-     */
-    if(++count == deg_lambda)
-      break;
-  }
-  if (deg_lambda != count) {
-    /*
-     * deg(lambda) unequal to number of roots => uncorrectable
-     * error detected
-     */
-    count = -1;
-    goto finish;
-  }
-  /*
-   * Compute err+eras evaluator poly omega(x) = s(x)*lambda(x) (modulo
-   * x**(NN-KK)). in index form. Also find deg(omega).
-   */
-  deg_omega = 0;
-  for (i = 0; i < NN-KK;i++){
-    tmp = 0;
-    j = (deg_lambda < i) ? deg_lambda : i;
-    for(;j >= 0; j--){
-      if ((s[i + 1 - j] != A0) && (lambda[j] != A0))
-       tmp ^= Alpha_to[modnn(s[i + 1 - j] + lambda[j])];
-    }
-    if(tmp != 0)
-      deg_omega = i;
-    omega[i] = Index_of[tmp];
-  }
-  omega[NN-KK] = A0;
-
-  /*
-   * Compute error values in poly-form. num1 = omega(inv(X(l))), num2 =
-   * inv(X(l))**(B0-1) and den = lambda_pr(inv(X(l))) all in poly-form
-   */
-  for (j = count-1; j >=0; j--) {
-    num1 = 0;
-    for (i = deg_omega; i >= 0; i--) {
-      if (omega[i] != A0)
-       num1  ^= Alpha_to[modnn(omega[i] + i * root[j])];
-    }
-    num2 = Alpha_to[modnn(root[j] * (B0 - 1) + NN)];
-    den = 0;
-
-    /* lambda[i+1] for i even is the formal derivative lambda_pr of lambda[i] */
-    for (i = min(deg_lambda,NN-KK-1) & ~1; i >= 0; i -=2) {
-      if(lambda[i+1] != A0)
-       den ^= Alpha_to[modnn(lambda[i+1] + i * root[j])];
-    }
-    if (den == 0) {
-#ifdef ECC_DEBUG
-      printf("\n ERROR: denominator = 0\n");
-#endif
-      /* Convert to dual- basis */
-      count = -1;
-      goto finish;
-    }
-    /* Apply error to data */
-    if (num1 != 0) {
-       eras_val[j] = Alpha_to[modnn(Index_of[num1] + Index_of[num2] + NN - Index_of[den])];
-    } else {
-       eras_val[j] = 0;
-    }
-  }
- finish:
-  for(i=0;i<count;i++)
-      eras_pos[i] = loc[i];
-  return count;
-}
-
-/***************************************************************************/
-/* The DOC specific code begins here */
-
-#define SECTOR_SIZE 512
-/* The sector bytes are packed into NB_DATA MM bits words */
-#define NB_DATA (((SECTOR_SIZE + 1) * 8 + 6) / MM)
-
-/*
- * Correct the errors in 'sector[]' by using 'ecc1[]' which is the
- * content of the feedback shift register applyied to the sector and
- * the ECC. Return the number of errors corrected (and correct them in
- * sector), or -1 if error
- */
-int doc_decode_ecc(unsigned char sector[SECTOR_SIZE], unsigned char ecc1[6])
-{
-    int parity, i, nb_errors;
-    gf bb[NN - KK + 1];
-    gf error_val[NN-KK];
-    int error_pos[NN-KK], pos, bitpos, index, val;
-    dtype *Alpha_to, *Index_of;
-
-    /* init log and exp tables here to save memory. However, it is slower */
-    Alpha_to = malloc((NN + 1) * sizeof(dtype));
-    if (!Alpha_to)
-       return -1;
-
-    Index_of = malloc((NN + 1) * sizeof(dtype));
-    if (!Index_of) {
-       free(Alpha_to);
-       return -1;
-    }
-
-    generate_gf(Alpha_to, Index_of);
-
-    parity = ecc1[1];
-
-    bb[0] =  (ecc1[4] & 0xff) | ((ecc1[5] & 0x03) << 8);
-    bb[1] = ((ecc1[5] & 0xfc) >> 2) | ((ecc1[2] & 0x0f) << 6);
-    bb[2] = ((ecc1[2] & 0xf0) >> 4) | ((ecc1[3] & 0x3f) << 4);
-    bb[3] = ((ecc1[3] & 0xc0) >> 6) | ((ecc1[0] & 0xff) << 2);
-
-    nb_errors = eras_dec_rs(Alpha_to, Index_of, bb,
-                           error_val, error_pos, 0);
-    if (nb_errors <= 0)
-       goto the_end;
-
-    /* correct the errors */
-    for(i=0;i<nb_errors;i++) {
-       pos = error_pos[i];
-       if (pos >= NB_DATA && pos < KK) {
-           nb_errors = -1;
-           goto the_end;
-       }
-       if (pos < NB_DATA) {
-           /* extract bit position (MSB first) */
-           pos = 10 * (NB_DATA - 1 - pos) - 6;
-           /* now correct the following 10 bits. At most two bytes
-              can be modified since pos is even */
-           index = (pos >> 3) ^ 1;
-           bitpos = pos & 7;
-           if ((index >= 0 && index < SECTOR_SIZE) ||
-               index == (SECTOR_SIZE + 1)) {
-               val = error_val[i] >> (2 + bitpos);
-               parity ^= val;
-               if (index < SECTOR_SIZE)
-                   sector[index] ^= val;
-           }
-           index = ((pos >> 3) + 1) ^ 1;
-           bitpos = (bitpos + 10) & 7;
-           if (bitpos == 0)
-               bitpos = 8;
-           if ((index >= 0 && index < SECTOR_SIZE) ||
-               index == (SECTOR_SIZE + 1)) {
-               val = error_val[i] << (8 - bitpos);
-               parity ^= val;
-               if (index < SECTOR_SIZE)
-                   sector[index] ^= val;
-           }
-       }
-    }
-
-    /* use parity to test extra errors */
-    if ((parity & 0xff) != 0)
-       nb_errors = -1;
-
- the_end:
-    free(Alpha_to);
-    free(Index_of);
-    return nb_errors;
-}
+/*
+ * ECC algorithm for M-systems disk on chip. We use the excellent Reed
+ * Solmon code of Phil Karn (karn@ka9q.ampr.org) available under the
+ * GNU GPL License. The rest is simply to convert the disk on chip
+ * syndrom into a standard syndom.
+ *
+ * Author: Fabrice Bellard (fabrice.bellard@netgem.com)
+ * Copyright (C) 2000 Netgem S.A.
+ *
+ * $Id: docecc.c,v 1.1.1.1 2009/03/25 22:21:57 kenagy Exp $
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#include <config.h>
+#include <common.h>
+#include <malloc.h>
+
+#undef ECC_DEBUG
+#undef PSYCHO_DEBUG
+
+#include <linux/mtd/doc2000.h>
+
+/* need to undef it (from asm/termbits.h) */
+#undef B0
+
+#define MM 10 /* Symbol size in bits */
+#define KK (1023-4) /* Number of data symbols per block */
+#define B0 510 /* First root of generator polynomial, alpha form */
+#define PRIM 1 /* power of alpha used to generate roots of generator poly */
+#define        NN ((1 << MM) - 1)
+
+typedef unsigned short dtype;
+
+/* 1+x^3+x^10 */
+static const int Pp[MM+1] = { 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1 };
+
+/* This defines the type used to store an element of the Galois Field
+ * used by the code. Make sure this is something larger than a char if
+ * if anything larger than GF(256) is used.
+ *
+ * Note: unsigned char will work up to GF(256) but int seems to run
+ * faster on the Pentium.
+ */
+typedef int gf;
+
+/* No legal value in index form represents zero, so
+ * we need a special value for this purpose
+ */
+#define A0     (NN)
+
+/* Compute x % NN, where NN is 2**MM - 1,
+ * without a slow divide
+ */
+static inline gf
+modnn(int x)
+{
+  while (x >= NN) {
+    x -= NN;
+    x = (x >> MM) + (x & NN);
+  }
+  return x;
+}
+
+#define        CLEAR(a,n) {\
+int ci;\
+for(ci=(n)-1;ci >=0;ci--)\
+(a)[ci] = 0;\
+}
+
+#define        COPY(a,b,n) {\
+int ci;\
+for(ci=(n)-1;ci >=0;ci--)\
+(a)[ci] = (b)[ci];\
+}
+
+#define        COPYDOWN(a,b,n) {\
+int ci;\
+for(ci=(n)-1;ci >=0;ci--)\
+(a)[ci] = (b)[ci];\
+}
+
+#define Ldec 1
+
+/* generate GF(2**m) from the irreducible polynomial p(X) in Pp[0]..Pp[m]
+   lookup tables:  index->polynomial form   alpha_to[] contains j=alpha**i;
+                  polynomial form -> index form  index_of[j=alpha**i] = i
+   alpha=2 is the primitive element of GF(2**m)
+   HARI's COMMENT: (4/13/94) alpha_to[] can be used as follows:
+       Let @ represent the primitive element commonly called "alpha" that
+   is the root of the primitive polynomial p(x). Then in GF(2^m), for any
+   0 <= i <= 2^m-2,
+       @^i = a(0) + a(1) @ + a(2) @^2 + ... + a(m-1) @^(m-1)
+   where the binary vector (a(0),a(1),a(2),...,a(m-1)) is the representation
+   of the integer "alpha_to[i]" with a(0) being the LSB and a(m-1) the MSB. Thus for
+   example the polynomial representation of @^5 would be given by the binary
+   representation of the integer "alpha_to[5]".
+                  Similarily, index_of[] can be used as follows:
+       As above, let @ represent the primitive element of GF(2^m) that is
+   the root of the primitive polynomial p(x). In order to find the power
+   of @ (alpha) that has the polynomial representation
+       a(0) + a(1) @ + a(2) @^2 + ... + a(m-1) @^(m-1)
+   we consider the integer "i" whose binary representation with a(0) being LSB
+   and a(m-1) MSB is (a(0),a(1),...,a(m-1)) and locate the entry
+   "index_of[i]". Now, @^index_of[i] is that element whose polynomial
+    representation is (a(0),a(1),a(2),...,a(m-1)).
+   NOTE:
+       The element alpha_to[2^m-1] = 0 always signifying that the
+   representation of "@^infinity" = 0 is (0,0,0,...,0).
+       Similarily, the element index_of[0] = A0 always signifying
+   that the power of alpha which has the polynomial representation
+   (0,0,...,0) is "infinity".
+
+*/
+
+static void
+generate_gf(dtype Alpha_to[NN + 1], dtype Index_of[NN + 1])
+{
+  register int i, mask;
+
+  mask = 1;
+  Alpha_to[MM] = 0;
+  for (i = 0; i < MM; i++) {
+    Alpha_to[i] = mask;
+    Index_of[Alpha_to[i]] = i;
+    /* If Pp[i] == 1 then, term @^i occurs in poly-repr of @^MM */
+    if (Pp[i] != 0)
+      Alpha_to[MM] ^= mask;    /* Bit-wise EXOR operation */
+    mask <<= 1;        /* single left-shift */
+  }
+  Index_of[Alpha_to[MM]] = MM;
+  /*
+   * Have obtained poly-repr of @^MM. Poly-repr of @^(i+1) is given by
+   * poly-repr of @^i shifted left one-bit and accounting for any @^MM
+   * term that may occur when poly-repr of @^i is shifted.
+   */
+  mask >>= 1;
+  for (i = MM + 1; i < NN; i++) {
+    if (Alpha_to[i - 1] >= mask)
+      Alpha_to[i] = Alpha_to[MM] ^ ((Alpha_to[i - 1] ^ mask) << 1);
+    else
+      Alpha_to[i] = Alpha_to[i - 1] << 1;
+    Index_of[Alpha_to[i]] = i;
+  }
+  Index_of[0] = A0;
+  Alpha_to[NN] = 0;
+}
+
+/*
+ * Performs ERRORS+ERASURES decoding of RS codes. bb[] is the content
+ * of the feedback shift register after having processed the data and
+ * the ECC.
+ *
+ * Return number of symbols corrected, or -1 if codeword is illegal
+ * or uncorrectable. If eras_pos is non-null, the detected error locations
+ * are written back. NOTE! This array must be at least NN-KK elements long.
+ * The corrected data are written in eras_val[]. They must be xor with the data
+ * to retrieve the correct data : data[erase_pos[i]] ^= erase_val[i] .
+ *
+ * First "no_eras" erasures are declared by the calling program. Then, the
+ * maximum # of errors correctable is t_after_eras = floor((NN-KK-no_eras)/2).
+ * If the number of channel errors is not greater than "t_after_eras" the
+ * transmitted codeword will be recovered. Details of algorithm can be found
+ * in R. Blahut's "Theory ... of Error-Correcting Codes".
+
+ * Warning: the eras_pos[] array must not contain duplicate entries; decoder failure
+ * will result. The decoder *could* check for this condition, but it would involve
+ * extra time on every decoding operation.
+ * */
+static int
+eras_dec_rs(dtype Alpha_to[NN + 1], dtype Index_of[NN + 1],
+           gf bb[NN - KK + 1], gf eras_val[NN-KK], int eras_pos[NN-KK],
+           int no_eras)
+{
+  int deg_lambda, el, deg_omega;
+  int i, j, r,k;
+  gf u,q,tmp,num1,num2,den,discr_r;
+  gf lambda[NN-KK + 1], s[NN-KK + 1];  /* Err+Eras Locator poly
+                                        * and syndrome poly */
+  gf b[NN-KK + 1], t[NN-KK + 1], omega[NN-KK + 1];
+  gf root[NN-KK], reg[NN-KK + 1], loc[NN-KK];
+  int syn_error, count;
+
+  syn_error = 0;
+  for(i=0;i<NN-KK;i++)
+      syn_error |= bb[i];
+
+  if (!syn_error) {
+    /* if remainder is zero, data[] is a codeword and there are no
+     * errors to correct. So return data[] unmodified
+     */
+    count = 0;
+    goto finish;
+  }
+
+  for(i=1;i<=NN-KK;i++){
+    s[i] = bb[0];
+  }
+  for(j=1;j<NN-KK;j++){
+    if(bb[j] == 0)
+      continue;
+    tmp = Index_of[bb[j]];
+
+    for(i=1;i<=NN-KK;i++)
+      s[i] ^= Alpha_to[modnn(tmp + (B0+i-1)*PRIM*j)];
+  }
+
+  /* undo the feedback register implicit multiplication and convert
+     syndromes to index form */
+
+  for(i=1;i<=NN-KK;i++) {
+      tmp = Index_of[s[i]];
+      if (tmp != A0)
+         tmp = modnn(tmp + 2 * KK * (B0+i-1)*PRIM);
+      s[i] = tmp;
+  }
+
+  CLEAR(&lambda[1],NN-KK);
+  lambda[0] = 1;
+
+  if (no_eras > 0) {
+    /* Init lambda to be the erasure locator polynomial */
+    lambda[1] = Alpha_to[modnn(PRIM * eras_pos[0])];
+    for (i = 1; i < no_eras; i++) {
+      u = modnn(PRIM*eras_pos[i]);
+      for (j = i+1; j > 0; j--) {
+       tmp = Index_of[lambda[j - 1]];
+       if(tmp != A0)
+         lambda[j] ^= Alpha_to[modnn(u + tmp)];
+      }
+    }
+#ifdef ECC_DEBUG
+    /* Test code that verifies the erasure locator polynomial just constructed
+       Needed only for decoder debugging. */
+
+    /* find roots of the erasure location polynomial */
+    for(i=1;i<=no_eras;i++)
+      reg[i] = Index_of[lambda[i]];
+    count = 0;
+    for (i = 1,k=NN-Ldec; i <= NN; i++,k = modnn(NN+k-Ldec)) {
+      q = 1;
+      for (j = 1; j <= no_eras; j++)
+       if (reg[j] != A0) {
+         reg[j] = modnn(reg[j] + j);
+         q ^= Alpha_to[reg[j]];
+       }
+      if (q != 0)
+       continue;
+      /* store root and error location number indices */
+      root[count] = i;
+      loc[count] = k;
+      count++;
+    }
+    if (count != no_eras) {
+      printf("\n lambda(x) is WRONG\n");
+      count = -1;
+      goto finish;
+    }
+#ifdef PSYCHO_DEBUG
+    printf("\n Erasure positions as determined by roots of Eras Loc Poly:\n");
+    for (i = 0; i < count; i++)
+      printf("%d ", loc[i]);
+    printf("\n");
+#endif
+#endif
+  }
+  for(i=0;i<NN-KK+1;i++)
+    b[i] = Index_of[lambda[i]];
+
+  /*
+   * Begin Berlekamp-Massey algorithm to determine error+erasure
+   * locator polynomial
+   */
+  r = no_eras;
+  el = no_eras;
+  while (++r <= NN-KK) {       /* r is the step number */
+    /* Compute discrepancy at the r-th step in poly-form */
+    discr_r = 0;
+    for (i = 0; i < r; i++){
+      if ((lambda[i] != 0) && (s[r - i] != A0)) {
+       discr_r ^= Alpha_to[modnn(Index_of[lambda[i]] + s[r - i])];
+      }
+    }
+    discr_r = Index_of[discr_r];       /* Index form */
+    if (discr_r == A0) {
+      /* 2 lines below: B(x) <-- x*B(x) */
+      COPYDOWN(&b[1],b,NN-KK);
+      b[0] = A0;
+    } else {
+      /* 7 lines below: T(x) <-- lambda(x) - discr_r*x*b(x) */
+      t[0] = lambda[0];
+      for (i = 0 ; i < NN-KK; i++) {
+       if(b[i] != A0)
+         t[i+1] = lambda[i+1] ^ Alpha_to[modnn(discr_r + b[i])];
+       else
+         t[i+1] = lambda[i+1];
+      }
+      if (2 * el <= r + no_eras - 1) {
+       el = r + no_eras - el;
+       /*
+        * 2 lines below: B(x) <-- inv(discr_r) *
+        * lambda(x)
+        */
+       for (i = 0; i <= NN-KK; i++)
+         b[i] = (lambda[i] == 0) ? A0 : modnn(Index_of[lambda[i]] - discr_r + NN);
+      } else {
+       /* 2 lines below: B(x) <-- x*B(x) */
+       COPYDOWN(&b[1],b,NN-KK);
+       b[0] = A0;
+      }
+      COPY(lambda,t,NN-KK+1);
+    }
+  }
+
+  /* Convert lambda to index form and compute deg(lambda(x)) */
+  deg_lambda = 0;
+  for(i=0;i<NN-KK+1;i++){
+    lambda[i] = Index_of[lambda[i]];
+    if(lambda[i] != A0)
+      deg_lambda = i;
+  }
+  /*
+   * Find roots of the error+erasure locator polynomial by Chien
+   * Search
+   */
+  COPY(&reg[1],&lambda[1],NN-KK);
+  count = 0;           /* Number of roots of lambda(x) */
+  for (i = 1,k=NN-Ldec; i <= NN; i++,k = modnn(NN+k-Ldec)) {
+    q = 1;
+    for (j = deg_lambda; j > 0; j--){
+      if (reg[j] != A0) {
+       reg[j] = modnn(reg[j] + j);
+       q ^= Alpha_to[reg[j]];
+      }
+    }
+    if (q != 0)
+      continue;
+    /* store root (index-form) and error location number */
+    root[count] = i;
+    loc[count] = k;
+    /* If we've already found max possible roots,
+     * abort the search to save time
+     */
+    if(++count == deg_lambda)
+      break;
+  }
+  if (deg_lambda != count) {
+    /*
+     * deg(lambda) unequal to number of roots => uncorrectable
+     * error detected
+     */
+    count = -1;
+    goto finish;
+  }
+  /*
+   * Compute err+eras evaluator poly omega(x) = s(x)*lambda(x) (modulo
+   * x**(NN-KK)). in index form. Also find deg(omega).
+   */
+  deg_omega = 0;
+  for (i = 0; i < NN-KK;i++){
+    tmp = 0;
+    j = (deg_lambda < i) ? deg_lambda : i;
+    for(;j >= 0; j--){
+      if ((s[i + 1 - j] != A0) && (lambda[j] != A0))
+       tmp ^= Alpha_to[modnn(s[i + 1 - j] + lambda[j])];
+    }
+    if(tmp != 0)
+      deg_omega = i;
+    omega[i] = Index_of[tmp];
+  }
+  omega[NN-KK] = A0;
+
+  /*
+   * Compute error values in poly-form. num1 = omega(inv(X(l))), num2 =
+   * inv(X(l))**(B0-1) and den = lambda_pr(inv(X(l))) all in poly-form
+   */
+  for (j = count-1; j >=0; j--) {
+    num1 = 0;
+    for (i = deg_omega; i >= 0; i--) {
+      if (omega[i] != A0)
+       num1  ^= Alpha_to[modnn(omega[i] + i * root[j])];
+    }
+    num2 = Alpha_to[modnn(root[j] * (B0 - 1) + NN)];
+    den = 0;
+
+    /* lambda[i+1] for i even is the formal derivative lambda_pr of lambda[i] */
+    for (i = min(deg_lambda,NN-KK-1) & ~1; i >= 0; i -=2) {
+      if(lambda[i+1] != A0)
+       den ^= Alpha_to[modnn(lambda[i+1] + i * root[j])];
+    }
+    if (den == 0) {
+#ifdef ECC_DEBUG
+      printf("\n ERROR: denominator = 0\n");
+#endif
+      /* Convert to dual- basis */
+      count = -1;
+      goto finish;
+    }
+    /* Apply error to data */
+    if (num1 != 0) {
+       eras_val[j] = Alpha_to[modnn(Index_of[num1] + Index_of[num2] + NN - Index_of[den])];
+    } else {
+       eras_val[j] = 0;
+    }
+  }
+ finish:
+  for(i=0;i<count;i++)
+      eras_pos[i] = loc[i];
+  return count;
+}
+
+/***************************************************************************/
+/* The DOC specific code begins here */
+
+#define SECTOR_SIZE 512
+/* The sector bytes are packed into NB_DATA MM bits words */
+#define NB_DATA (((SECTOR_SIZE + 1) * 8 + 6) / MM)
+
+/*
+ * Correct the errors in 'sector[]' by using 'ecc1[]' which is the
+ * content of the feedback shift register applyied to the sector and
+ * the ECC. Return the number of errors corrected (and correct them in
+ * sector), or -1 if error
+ */
+int doc_decode_ecc(unsigned char sector[SECTOR_SIZE], unsigned char ecc1[6])
+{
+    int parity, i, nb_errors;
+    gf bb[NN - KK + 1];
+    gf error_val[NN-KK];
+    int error_pos[NN-KK], pos, bitpos, index, val;
+    dtype *Alpha_to, *Index_of;
+
+    /* init log and exp tables here to save memory. However, it is slower */
+    Alpha_to = malloc((NN + 1) * sizeof(dtype));
+    if (!Alpha_to)
+       return -1;
+
+    Index_of = malloc((NN + 1) * sizeof(dtype));
+    if (!Index_of) {
+       free(Alpha_to);
+       return -1;
+    }
+
+    generate_gf(Alpha_to, Index_of);
+
+    parity = ecc1[1];
+
+    bb[0] =  (ecc1[4] & 0xff) | ((ecc1[5] & 0x03) << 8);
+    bb[1] = ((ecc1[5] & 0xfc) >> 2) | ((ecc1[2] & 0x0f) << 6);
+    bb[2] = ((ecc1[2] & 0xf0) >> 4) | ((ecc1[3] & 0x3f) << 4);
+    bb[3] = ((ecc1[3] & 0xc0) >> 6) | ((ecc1[0] & 0xff) << 2);
+
+    nb_errors = eras_dec_rs(Alpha_to, Index_of, bb,
+                           error_val, error_pos, 0);
+    if (nb_errors <= 0)
+       goto the_end;
+
+    /* correct the errors */
+    for(i=0;i<nb_errors;i++) {
+       pos = error_pos[i];
+       if (pos >= NB_DATA && pos < KK) {
+           nb_errors = -1;
+           goto the_end;
+       }
+       if (pos < NB_DATA) {
+           /* extract bit position (MSB first) */
+           pos = 10 * (NB_DATA - 1 - pos) - 6;
+           /* now correct the following 10 bits. At most two bytes
+              can be modified since pos is even */
+           index = (pos >> 3) ^ 1;
+           bitpos = pos & 7;
+           if ((index >= 0 && index < SECTOR_SIZE) ||
+               index == (SECTOR_SIZE + 1)) {
+               val = error_val[i] >> (2 + bitpos);
+               parity ^= val;
+               if (index < SECTOR_SIZE)
+                   sector[index] ^= val;
+           }
+           index = ((pos >> 3) + 1) ^ 1;
+           bitpos = (bitpos + 10) & 7;
+           if (bitpos == 0)
+               bitpos = 8;
+           if ((index >= 0 && index < SECTOR_SIZE) ||
+               index == (SECTOR_SIZE + 1)) {
+               val = error_val[i] << (8 - bitpos);
+               parity ^= val;
+               if (index < SECTOR_SIZE)
+                   sector[index] ^= val;
+           }
+       }
+    }
+
+    /* use parity to test extra errors */
+    if ((parity & 0xff) != 0)
+       nb_errors = -1;
+
+ the_end:
+    free(Alpha_to);
+    free(Index_of);
+    return nb_errors;
+}
diff -Naur u-boot-2009.03_orig/cpu/74xx_7xx/CVS/Entries u-boot-2009.03/cpu/74xx_7xx/CVS/Entries
--- u-boot-2009.03_orig/cpu/74xx_7xx/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/74xx_7xx/CVS/Entries     2009-03-25 15:57:51.340576600 -0700
@@ -0,0 +1,12 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cache.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu_init.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupts.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/io.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/kgdb.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/speed.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/start.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/traps.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/74xx_7xx/CVS/Entries.Extra u-boot-2009.03/cpu/74xx_7xx/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/74xx_7xx/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/74xx_7xx/CVS/Entries.Extra       2009-03-25 15:57:51.340576600 -0700
@@ -0,0 +1,11 @@
+/Makefile///1238019717/
+/cache.S///1238019717/
+/config.mk///1238019717/
+/cpu.c///1238019717/
+/cpu_init.c///1238019717/
+/interrupts.c///1238019717/
+/io.S///1238019717/
+/kgdb.S///1238019717/
+/speed.c///1238019718/
+/start.S///1238019718/
+/traps.c///1238019718/
diff -Naur u-boot-2009.03_orig/cpu/74xx_7xx/CVS/Entries.Extra.Old u-boot-2009.03/cpu/74xx_7xx/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/74xx_7xx/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/74xx_7xx/CVS/Entries.Extra.Old   2009-03-25 15:25:10.000000000 -0700
@@ -0,0 +1,11 @@
+/Makefile///1238019717/
+/cache.S///1238019717/
+/config.mk///1238019717/
+/cpu.c///1238019717/
+/cpu_init.c///1238019717/
+/interrupts.c///1238019717/
+/io.S///1238019717/
+/kgdb.S///1238019717/
+/speed.c///1238019718/
+/start.S///1238019718/
+/traps.c///1238019718/
diff -Naur u-boot-2009.03_orig/cpu/74xx_7xx/CVS/Entries.Old u-boot-2009.03/cpu/74xx_7xx/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/74xx_7xx/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/74xx_7xx/CVS/Entries.Old 2009-03-25 15:25:10.000000000 -0700
@@ -0,0 +1,12 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:57 2009//
+/cache.S/1.1.1.1/Wed Mar 25 22:21:57 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:57 2009//
+/cpu.c/1.1.1.1/Wed Mar 25 22:21:57 2009//
+/cpu_init.c/1.1.1.1/Wed Mar 25 22:21:57 2009//
+/interrupts.c/1.1.1.1/Wed Mar 25 22:21:57 2009//
+/io.S/1.1.1.1/Wed Mar 25 22:21:57 2009//
+/kgdb.S/1.1.1.1/Wed Mar 25 22:21:57 2009//
+/speed.c/1.1.1.1/Wed Mar 25 22:21:58 2009//
+/start.S/1.1.1.1/Wed Mar 25 22:21:58 2009//
+/traps.c/1.1.1.1/Wed Mar 25 22:21:58 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/74xx_7xx/CVS/Repository u-boot-2009.03/cpu/74xx_7xx/CVS/Repository
--- u-boot-2009.03_orig/cpu/74xx_7xx/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/74xx_7xx/CVS/Repository  2009-03-25 15:25:10.743749500 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/74xx_7xx
diff -Naur u-boot-2009.03_orig/cpu/74xx_7xx/CVS/Root u-boot-2009.03/cpu/74xx_7xx/CVS/Root
--- u-boot-2009.03_orig/cpu/74xx_7xx/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/74xx_7xx/CVS/Root        2009-03-25 15:25:10.728124600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/CVS/Entries u-boot-2009.03/cpu/CVS/Entries
--- u-boot-2009.03_orig/cpu/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/CVS/Entries      2009-03-25 17:49:53.639648500 -0700
@@ -0,0 +1,46 @@
+D/74xx_7xx////
+D/arm1136////
+D/arm1176////
+D/arm720t////
+D/arm920t////
+D/arm925t////
+D/arm926ejs////
+D/arm946es////
+D/arm_cortexa8////
+D/arm_intcm////
+D/at32ap////
+D/blackfin////
+D/i386////
+D/ixp////
+D/leon2////
+D/leon3////
+D/lh7a40x////
+D/mcf5227x////
+D/mcf523x////
+D/mcf52x2////
+D/mcf532x////
+D/mcf5445x////
+D/mcf547x_8x////
+D/microblaze////
+D/mips////
+D/mpc512x////
+D/mpc5xx////
+D/mpc5xxx////
+D/mpc8220////
+D/mpc824x////
+D/mpc8260////
+D/mpc83xx////
+D/mpc85xx////
+D/mpc86xx////
+D/mpc8xx////
+D/mpc8xxx////
+D/nios////
+D/nios2////
+D/ppc4xx////
+D/pxa////
+D/s3c44b0////
+D/sa1100////
+D/sh2////
+D/sh3////
+D/sh4////
+D/or1200////
diff -Naur u-boot-2009.03_orig/cpu/CVS/Entries.Extra u-boot-2009.03/cpu/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/CVS/Entries.Extra        2009-03-25 17:49:53.639648500 -0700
@@ -0,0 +1,46 @@
+D/74xx_7xx////
+D/arm1136////
+D/arm1176////
+D/arm720t////
+D/arm920t////
+D/arm925t////
+D/arm926ejs////
+D/arm946es////
+D/arm_cortexa8////
+D/arm_intcm////
+D/at32ap////
+D/blackfin////
+D/i386////
+D/ixp////
+D/leon2////
+D/leon3////
+D/lh7a40x////
+D/mcf5227x////
+D/mcf523x////
+D/mcf52x2////
+D/mcf532x////
+D/mcf5445x////
+D/mcf547x_8x////
+D/microblaze////
+D/mips////
+D/mpc512x////
+D/mpc5xx////
+D/mpc5xxx////
+D/mpc8220////
+D/mpc824x////
+D/mpc8260////
+D/mpc83xx////
+D/mpc85xx////
+D/mpc86xx////
+D/mpc8xx////
+D/mpc8xxx////
+D/nios////
+D/nios2////
+D/ppc4xx////
+D/pxa////
+D/s3c44b0////
+D/sa1100////
+D/sh2////
+D/sh3////
+D/sh4////
+D/or1200////
diff -Naur u-boot-2009.03_orig/cpu/CVS/Entries.Extra.Old u-boot-2009.03/cpu/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/CVS/Entries.Extra.Old    2009-03-25 15:25:24.000000000 -0700
@@ -0,0 +1,45 @@
+D/74xx_7xx////
+D/arm1136////
+D/arm1176////
+D/arm720t////
+D/arm920t////
+D/arm925t////
+D/arm926ejs////
+D/arm946es////
+D/arm_cortexa8////
+D/arm_intcm////
+D/at32ap////
+D/blackfin////
+D/i386////
+D/ixp////
+D/leon2////
+D/leon3////
+D/lh7a40x////
+D/mcf5227x////
+D/mcf523x////
+D/mcf52x2////
+D/mcf532x////
+D/mcf5445x////
+D/mcf547x_8x////
+D/microblaze////
+D/mips////
+D/mpc512x////
+D/mpc5xx////
+D/mpc5xxx////
+D/mpc8220////
+D/mpc824x////
+D/mpc8260////
+D/mpc83xx////
+D/mpc85xx////
+D/mpc86xx////
+D/mpc8xx////
+D/mpc8xxx////
+D/nios////
+D/nios2////
+D/ppc4xx////
+D/pxa////
+D/s3c44b0////
+D/sa1100////
+D/sh2////
+D/sh3////
+D/sh4////
diff -Naur u-boot-2009.03_orig/cpu/CVS/Entries.Old u-boot-2009.03/cpu/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/CVS/Entries.Old  2009-03-25 15:25:24.000000000 -0700
@@ -0,0 +1,45 @@
+D/74xx_7xx////
+D/arm1136////
+D/arm1176////
+D/arm720t////
+D/arm920t////
+D/arm925t////
+D/arm926ejs////
+D/arm946es////
+D/arm_cortexa8////
+D/arm_intcm////
+D/at32ap////
+D/blackfin////
+D/i386////
+D/ixp////
+D/leon2////
+D/leon3////
+D/lh7a40x////
+D/mcf5227x////
+D/mcf523x////
+D/mcf52x2////
+D/mcf532x////
+D/mcf5445x////
+D/mcf547x_8x////
+D/microblaze////
+D/mips////
+D/mpc512x////
+D/mpc5xx////
+D/mpc5xxx////
+D/mpc8220////
+D/mpc824x////
+D/mpc8260////
+D/mpc83xx////
+D/mpc85xx////
+D/mpc86xx////
+D/mpc8xx////
+D/mpc8xxx////
+D/nios////
+D/nios2////
+D/ppc4xx////
+D/pxa////
+D/s3c44b0////
+D/sa1100////
+D/sh2////
+D/sh3////
+D/sh4////
diff -Naur u-boot-2009.03_orig/cpu/CVS/Repository u-boot-2009.03/cpu/CVS/Repository
--- u-boot-2009.03_orig/cpu/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/CVS/Repository   2009-03-25 15:25:10.712499700 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu
diff -Naur u-boot-2009.03_orig/cpu/CVS/Root u-boot-2009.03/cpu/CVS/Root
--- u-boot-2009.03_orig/cpu/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/CVS/Root 2009-03-25 15:25:10.712499700 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/arm1136/CVS/Entries u-boot-2009.03/cpu/arm1136/CVS/Entries
--- u-boot-2009.03_orig/cpu/arm1136/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm1136/CVS/Entries      2009-03-25 15:57:51.512450500 -0700
@@ -0,0 +1,6 @@
+D/mx31////
+D/omap24xx////
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/start.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
diff -Naur u-boot-2009.03_orig/cpu/arm1136/CVS/Entries.Extra u-boot-2009.03/cpu/arm1136/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/arm1136/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm1136/CVS/Entries.Extra        2009-03-25 15:57:51.512450500 -0700
@@ -0,0 +1,6 @@
+D/mx31////
+D/omap24xx////
+/Makefile///1238019718/
+/config.mk///1238019718/
+/cpu.c///1238019718/
+/start.S///1238019718/
diff -Naur u-boot-2009.03_orig/cpu/arm1136/CVS/Entries.Extra.Old u-boot-2009.03/cpu/arm1136/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/arm1136/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm1136/CVS/Entries.Extra.Old    2009-03-25 15:25:11.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019718/
+/config.mk///1238019718/
+/cpu.c///1238019718/
+/start.S///1238019718/
+D/mx31////
+D/omap24xx////
diff -Naur u-boot-2009.03_orig/cpu/arm1136/CVS/Entries.Old u-boot-2009.03/cpu/arm1136/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/arm1136/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm1136/CVS/Entries.Old  2009-03-25 15:25:11.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:58 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:58 2009//
+/cpu.c/1.1.1.1/Wed Mar 25 22:21:58 2009//
+/start.S/1.1.1.1/Wed Mar 25 22:21:58 2009//
+D/mx31////
+D/omap24xx////
diff -Naur u-boot-2009.03_orig/cpu/arm1136/CVS/Repository u-boot-2009.03/cpu/arm1136/CVS/Repository
--- u-boot-2009.03_orig/cpu/arm1136/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm1136/CVS/Repository   2009-03-25 15:25:10.915623400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/arm1136
diff -Naur u-boot-2009.03_orig/cpu/arm1136/CVS/Root u-boot-2009.03/cpu/arm1136/CVS/Root
--- u-boot-2009.03_orig/cpu/arm1136/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm1136/CVS/Root 2009-03-25 15:25:10.899998500 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/arm1136/mx31/CVS/Entries u-boot-2009.03/cpu/arm1136/mx31/CVS/Entries
--- u-boot-2009.03_orig/cpu/arm1136/mx31/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm1136/mx31/CVS/Entries 2009-03-25 15:57:51.418701100 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/generic.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupts.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/arm1136/mx31/CVS/Entries.Extra u-boot-2009.03/cpu/arm1136/mx31/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/arm1136/mx31/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm1136/mx31/CVS/Entries.Extra   2009-03-25 15:57:51.418701100 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019718/
+/generic.c///1238019718/
+/interrupts.c///1238019718/
+/serial.c///1238019718/
diff -Naur u-boot-2009.03_orig/cpu/arm1136/mx31/CVS/Entries.Extra.Old u-boot-2009.03/cpu/arm1136/mx31/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/arm1136/mx31/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm1136/mx31/CVS/Entries.Extra.Old       2009-03-25 15:25:11.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019718/
+/generic.c///1238019718/
+/interrupts.c///1238019718/
+/serial.c///1238019718/
diff -Naur u-boot-2009.03_orig/cpu/arm1136/mx31/CVS/Entries.Old u-boot-2009.03/cpu/arm1136/mx31/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/arm1136/mx31/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm1136/mx31/CVS/Entries.Old     2009-03-25 15:25:11.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:58 2009//
+/generic.c/1.1.1.1/Wed Mar 25 22:21:58 2009//
+/interrupts.c/1.1.1.1/Wed Mar 25 22:21:58 2009//
+/serial.c/1.1.1.1/Wed Mar 25 22:21:58 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/arm1136/mx31/CVS/Repository u-boot-2009.03/cpu/arm1136/mx31/CVS/Repository
--- u-boot-2009.03_orig/cpu/arm1136/mx31/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm1136/mx31/CVS/Repository      2009-03-25 15:25:10.962498100 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/arm1136/mx31
diff -Naur u-boot-2009.03_orig/cpu/arm1136/mx31/CVS/Root u-boot-2009.03/cpu/arm1136/mx31/CVS/Root
--- u-boot-2009.03_orig/cpu/arm1136/mx31/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm1136/mx31/CVS/Root    2009-03-25 15:25:10.946873200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/arm1136/omap24xx/CVS/Entries u-boot-2009.03/cpu/arm1136/omap24xx/CVS/Entries
--- u-boot-2009.03_orig/cpu/arm1136/omap24xx/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm1136/omap24xx/CVS/Entries     2009-03-25 15:57:51.481200700 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupts.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/start.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/arm1136/omap24xx/CVS/Entries.Extra u-boot-2009.03/cpu/arm1136/omap24xx/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/arm1136/omap24xx/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm1136/omap24xx/CVS/Entries.Extra       2009-03-25 15:57:51.481200700 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019718/
+/interrupts.c///1238019718/
+/start.S///1238019718/
diff -Naur u-boot-2009.03_orig/cpu/arm1136/omap24xx/CVS/Entries.Extra.Old u-boot-2009.03/cpu/arm1136/omap24xx/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/arm1136/omap24xx/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm1136/omap24xx/CVS/Entries.Extra.Old   2009-03-25 15:25:11.000000000 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019718/
+/interrupts.c///1238019718/
+/start.S///1238019718/
diff -Naur u-boot-2009.03_orig/cpu/arm1136/omap24xx/CVS/Entries.Old u-boot-2009.03/cpu/arm1136/omap24xx/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/arm1136/omap24xx/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm1136/omap24xx/CVS/Entries.Old 2009-03-25 15:25:11.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:58 2009//
+/interrupts.c/1.1.1.1/Wed Mar 25 22:21:58 2009//
+/start.S/1.1.1.1/Wed Mar 25 22:21:58 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/arm1136/omap24xx/CVS/Repository u-boot-2009.03/cpu/arm1136/omap24xx/CVS/Repository
--- u-boot-2009.03_orig/cpu/arm1136/omap24xx/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm1136/omap24xx/CVS/Repository  2009-03-25 15:25:11.056247500 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/arm1136/omap24xx
diff -Naur u-boot-2009.03_orig/cpu/arm1136/omap24xx/CVS/Root u-boot-2009.03/cpu/arm1136/omap24xx/CVS/Root
--- u-boot-2009.03_orig/cpu/arm1136/omap24xx/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm1136/omap24xx/CVS/Root        2009-03-25 15:25:11.056247500 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/arm1176/CVS/Entries u-boot-2009.03/cpu/arm1176/CVS/Entries
--- u-boot-2009.03_orig/cpu/arm1176/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm1176/CVS/Entries      2009-03-25 15:57:51.684324400 -0700
@@ -0,0 +1,5 @@
+D/s3c64xx////
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/start.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
diff -Naur u-boot-2009.03_orig/cpu/arm1176/CVS/Entries.Extra u-boot-2009.03/cpu/arm1176/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/arm1176/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm1176/CVS/Entries.Extra        2009-03-25 15:57:51.684324400 -0700
@@ -0,0 +1,5 @@
+D/s3c64xx////
+/Makefile///1238019718/
+/config.mk///1238019718/
+/cpu.c///1238019718/
+/start.S///1238019718/
diff -Naur u-boot-2009.03_orig/cpu/arm1176/CVS/Entries.Extra.Old u-boot-2009.03/cpu/arm1176/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/arm1176/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm1176/CVS/Entries.Extra.Old    2009-03-25 15:25:11.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019718/
+/config.mk///1238019718/
+/cpu.c///1238019718/
+/start.S///1238019718/
+D/s3c64xx////
diff -Naur u-boot-2009.03_orig/cpu/arm1176/CVS/Entries.Old u-boot-2009.03/cpu/arm1176/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/arm1176/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm1176/CVS/Entries.Old  2009-03-25 15:25:11.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:58 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:58 2009//
+/cpu.c/1.1.1.1/Wed Mar 25 22:21:58 2009//
+/start.S/1.1.1.1/Wed Mar 25 22:21:58 2009//
+D/s3c64xx////
diff -Naur u-boot-2009.03_orig/cpu/arm1176/CVS/Repository u-boot-2009.03/cpu/arm1176/CVS/Repository
--- u-boot-2009.03_orig/cpu/arm1176/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm1176/CVS/Repository   2009-03-25 15:25:11.196871600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/arm1176
diff -Naur u-boot-2009.03_orig/cpu/arm1176/CVS/Root u-boot-2009.03/cpu/arm1176/CVS/Root
--- u-boot-2009.03_orig/cpu/arm1176/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm1176/CVS/Root 2009-03-25 15:25:11.181246700 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/arm1176/s3c64xx/CVS/Entries u-boot-2009.03/cpu/arm1176/s3c64xx/CVS/Entries
--- u-boot-2009.03_orig/cpu/arm1176/s3c64xx/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm1176/s3c64xx/CVS/Entries      2009-03-25 15:57:51.621824800 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupts.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/speed.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/arm1176/s3c64xx/CVS/Entries.Extra u-boot-2009.03/cpu/arm1176/s3c64xx/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/arm1176/s3c64xx/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm1176/s3c64xx/CVS/Entries.Extra        2009-03-25 15:57:51.621824800 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019718/
+/config.mk///1238019718/
+/cpu_init.S///1238019718/
+/interrupts.c///1238019718/
+/speed.c///1238019718/
+/usb.c///1238019718/
diff -Naur u-boot-2009.03_orig/cpu/arm1176/s3c64xx/CVS/Entries.Extra.Old u-boot-2009.03/cpu/arm1176/s3c64xx/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/arm1176/s3c64xx/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm1176/s3c64xx/CVS/Entries.Extra.Old    2009-03-25 15:25:11.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019718/
+/config.mk///1238019718/
+/cpu_init.S///1238019718/
+/interrupts.c///1238019718/
+/speed.c///1238019718/
+/usb.c///1238019718/
diff -Naur u-boot-2009.03_orig/cpu/arm1176/s3c64xx/CVS/Entries.Old u-boot-2009.03/cpu/arm1176/s3c64xx/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/arm1176/s3c64xx/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm1176/s3c64xx/CVS/Entries.Old  2009-03-25 15:25:11.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:58 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:58 2009//
+/cpu_init.S/1.1.1.1/Wed Mar 25 22:21:58 2009//
+/interrupts.c/1.1.1.1/Wed Mar 25 22:21:58 2009//
+/speed.c/1.1.1.1/Wed Mar 25 22:21:58 2009//
+/usb.c/1.1.1.1/Wed Mar 25 22:21:58 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/arm1176/s3c64xx/CVS/Repository u-boot-2009.03/cpu/arm1176/s3c64xx/CVS/Repository
--- u-boot-2009.03_orig/cpu/arm1176/s3c64xx/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm1176/s3c64xx/CVS/Repository   2009-03-25 15:25:11.243746300 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/arm1176/s3c64xx
diff -Naur u-boot-2009.03_orig/cpu/arm1176/s3c64xx/CVS/Root u-boot-2009.03/cpu/arm1176/s3c64xx/CVS/Root
--- u-boot-2009.03_orig/cpu/arm1176/s3c64xx/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm1176/s3c64xx/CVS/Root 2009-03-25 15:25:11.243746300 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/arm720t/CVS/Entries u-boot-2009.03/cpu/arm720t/CVS/Entries
--- u-boot-2009.03_orig/cpu/arm720t/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm720t/CVS/Entries      2009-03-25 15:57:51.840573400 -0700
@@ -0,0 +1,8 @@
+D/lpc2292////
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupts.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial_netarm.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/start.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
diff -Naur u-boot-2009.03_orig/cpu/arm720t/CVS/Entries.Extra u-boot-2009.03/cpu/arm720t/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/arm720t/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm720t/CVS/Entries.Extra        2009-03-25 15:57:51.840573400 -0700
@@ -0,0 +1,8 @@
+D/lpc2292////
+/Makefile///1238019718/
+/config.mk///1238019718/
+/cpu.c///1238019718/
+/interrupts.c///1238019718/
+/serial.c///1238019718/
+/serial_netarm.c///1238019718/
+/start.S///1238019718/
diff -Naur u-boot-2009.03_orig/cpu/arm720t/CVS/Entries.Extra.Old u-boot-2009.03/cpu/arm720t/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/arm720t/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm720t/CVS/Entries.Extra.Old    2009-03-25 15:25:11.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019718/
+/config.mk///1238019718/
+/cpu.c///1238019718/
+/interrupts.c///1238019718/
+/serial.c///1238019718/
+/serial_netarm.c///1238019718/
+/start.S///1238019718/
+D/lpc2292////
diff -Naur u-boot-2009.03_orig/cpu/arm720t/CVS/Entries.Old u-boot-2009.03/cpu/arm720t/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/arm720t/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm720t/CVS/Entries.Old  2009-03-25 15:25:11.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:58 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:58 2009//
+/cpu.c/1.1.1.1/Wed Mar 25 22:21:58 2009//
+/interrupts.c/1.1.1.1/Wed Mar 25 22:21:58 2009//
+/serial.c/1.1.1.1/Wed Mar 25 22:21:58 2009//
+/serial_netarm.c/1.1.1.1/Wed Mar 25 22:21:58 2009//
+/start.S/1.1.1.1/Wed Mar 25 22:21:58 2009//
+D/lpc2292////
diff -Naur u-boot-2009.03_orig/cpu/arm720t/CVS/Repository u-boot-2009.03/cpu/arm720t/CVS/Repository
--- u-boot-2009.03_orig/cpu/arm720t/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm720t/CVS/Repository   2009-03-25 15:25:11.618743900 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/arm720t
diff -Naur u-boot-2009.03_orig/cpu/arm720t/CVS/Root u-boot-2009.03/cpu/arm720t/CVS/Root
--- u-boot-2009.03_orig/cpu/arm720t/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm720t/CVS/Root 2009-03-25 15:25:11.618743900 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/arm720t/lpc2292/CVS/Entries u-boot-2009.03/cpu/arm720t/lpc2292/CVS/Entries
--- u-boot-2009.03_orig/cpu/arm720t/lpc2292/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm720t/lpc2292/CVS/Entries      2009-03-25 15:57:51.793698700 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/iap_entry.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mmc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mmc_hw.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mmc_hw.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/spi.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/arm720t/lpc2292/CVS/Entries.Extra u-boot-2009.03/cpu/arm720t/lpc2292/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/arm720t/lpc2292/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm720t/lpc2292/CVS/Entries.Extra        2009-03-25 15:57:51.793698700 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019718/
+/flash.c///1238019718/
+/iap_entry.S///1238019718/
+/mmc.c///1238019718/
+/mmc_hw.c///1238019718/
+/mmc_hw.h///1238019718/
+/spi.c///1238019718/
diff -Naur u-boot-2009.03_orig/cpu/arm720t/lpc2292/CVS/Entries.Extra.Old u-boot-2009.03/cpu/arm720t/lpc2292/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/arm720t/lpc2292/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm720t/lpc2292/CVS/Entries.Extra.Old    2009-03-25 15:25:11.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019718/
+/flash.c///1238019718/
+/iap_entry.S///1238019718/
+/mmc.c///1238019718/
+/mmc_hw.c///1238019718/
+/mmc_hw.h///1238019718/
+/spi.c///1238019718/
diff -Naur u-boot-2009.03_orig/cpu/arm720t/lpc2292/CVS/Entries.Old u-boot-2009.03/cpu/arm720t/lpc2292/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/arm720t/lpc2292/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm720t/lpc2292/CVS/Entries.Old  2009-03-25 15:25:11.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:58 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:21:58 2009//
+/iap_entry.S/1.1.1.1/Wed Mar 25 22:21:58 2009//
+/mmc.c/1.1.1.1/Wed Mar 25 22:21:58 2009//
+/mmc_hw.c/1.1.1.1/Wed Mar 25 22:21:58 2009//
+/mmc_hw.h/1.1.1.1/Wed Mar 25 22:21:58 2009//
+/spi.c/1.1.1.1/Wed Mar 25 22:21:58 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/arm720t/lpc2292/CVS/Repository u-boot-2009.03/cpu/arm720t/lpc2292/CVS/Repository
--- u-boot-2009.03_orig/cpu/arm720t/lpc2292/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm720t/lpc2292/CVS/Repository   2009-03-25 15:25:11.696868400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/arm720t/lpc2292
diff -Naur u-boot-2009.03_orig/cpu/arm720t/lpc2292/CVS/Root u-boot-2009.03/cpu/arm720t/lpc2292/CVS/Root
--- u-boot-2009.03_orig/cpu/arm720t/lpc2292/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm720t/lpc2292/CVS/Root 2009-03-25 15:25:11.696868400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/arm920t/CVS/Entries u-boot-2009.03/cpu/arm920t/CVS/Entries
--- u-boot-2009.03_orig/cpu/arm920t/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm920t/CVS/Entries      2009-03-25 15:57:52.262445700 -0700
@@ -0,0 +1,9 @@
+D/at91rm9200////
+D/imx////
+D/ks8695////
+D/s3c24x0////
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupts.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/start.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
diff -Naur u-boot-2009.03_orig/cpu/arm920t/CVS/Entries.Extra u-boot-2009.03/cpu/arm920t/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/arm920t/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm920t/CVS/Entries.Extra        2009-03-25 15:57:52.262445700 -0700
@@ -0,0 +1,9 @@
+D/at91rm9200////
+D/imx////
+D/ks8695////
+D/s3c24x0////
+/Makefile///1238019718/
+/config.mk///1238019718/
+/cpu.c///1238019718/
+/interrupts.c///1238019718/
+/start.S///1238019718/
diff -Naur u-boot-2009.03_orig/cpu/arm920t/CVS/Entries.Extra.Old u-boot-2009.03/cpu/arm920t/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/arm920t/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm920t/CVS/Entries.Extra.Old    2009-03-25 15:25:12.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile///1238019718/
+/config.mk///1238019718/
+/cpu.c///1238019718/
+/interrupts.c///1238019718/
+/start.S///1238019718/
+D/at91rm9200////
+D/imx////
+D/ks8695////
+D/s3c24x0////
diff -Naur u-boot-2009.03_orig/cpu/arm920t/CVS/Entries.Old u-boot-2009.03/cpu/arm920t/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/arm920t/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm920t/CVS/Entries.Old  2009-03-25 15:25:12.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:58 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:58 2009//
+/cpu.c/1.1.1.1/Wed Mar 25 22:21:58 2009//
+/interrupts.c/1.1.1.1/Wed Mar 25 22:21:58 2009//
+/start.S/1.1.1.1/Wed Mar 25 22:21:58 2009//
+D/at91rm9200////
+D/imx////
+D/ks8695////
+D/s3c24x0////
diff -Naur u-boot-2009.03_orig/cpu/arm920t/CVS/Repository u-boot-2009.03/cpu/arm920t/CVS/Repository
--- u-boot-2009.03_orig/cpu/arm920t/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm920t/CVS/Repository   2009-03-25 15:25:11.884367200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/arm920t
diff -Naur u-boot-2009.03_orig/cpu/arm920t/CVS/Root u-boot-2009.03/cpu/arm920t/CVS/Root
--- u-boot-2009.03_orig/cpu/arm920t/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm920t/CVS/Root 2009-03-25 15:25:11.884367200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/arm920t/at91rm9200/CVS/Entries u-boot-2009.03/cpu/arm920t/at91rm9200/CVS/Entries
--- u-boot-2009.03_orig/cpu/arm920t/at91rm9200/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm920t/at91rm9200/CVS/Entries   2009-03-25 15:57:51.965572600 -0700
@@ -0,0 +1,12 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bcm5221.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dm9161.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ether.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/i2c.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupts.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lxt972.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/spi.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/arm920t/at91rm9200/CVS/Entries.Extra u-boot-2009.03/cpu/arm920t/at91rm9200/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/arm920t/at91rm9200/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm920t/at91rm9200/CVS/Entries.Extra     2009-03-25 15:57:51.965572600 -0700
@@ -0,0 +1,11 @@
+/Makefile///1238019718/
+/bcm5221.c///1238019718/
+/dm9161.c///1238019718/
+/ether.c///1238019718/
+/i2c.c///1238019718/
+/interrupts.c///1238019718/
+/lowlevel_init.S///1238019718/
+/lxt972.c///1238019718/
+/serial.c///1238019718/
+/spi.c///1238019718/
+/usb.c///1238019718/
diff -Naur u-boot-2009.03_orig/cpu/arm920t/at91rm9200/CVS/Entries.Extra.Old u-boot-2009.03/cpu/arm920t/at91rm9200/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/arm920t/at91rm9200/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm920t/at91rm9200/CVS/Entries.Extra.Old 2009-03-25 15:25:12.000000000 -0700
@@ -0,0 +1,11 @@
+/Makefile///1238019718/
+/bcm5221.c///1238019718/
+/dm9161.c///1238019718/
+/ether.c///1238019718/
+/i2c.c///1238019718/
+/interrupts.c///1238019718/
+/lowlevel_init.S///1238019718/
+/lxt972.c///1238019718/
+/serial.c///1238019718/
+/spi.c///1238019718/
+/usb.c///1238019718/
diff -Naur u-boot-2009.03_orig/cpu/arm920t/at91rm9200/CVS/Entries.Old u-boot-2009.03/cpu/arm920t/at91rm9200/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/arm920t/at91rm9200/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm920t/at91rm9200/CVS/Entries.Old       2009-03-25 15:25:12.000000000 -0700
@@ -0,0 +1,12 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:58 2009//
+/bcm5221.c/1.1.1.1/Wed Mar 25 22:21:58 2009//
+/dm9161.c/1.1.1.1/Wed Mar 25 22:21:58 2009//
+/ether.c/1.1.1.1/Wed Mar 25 22:21:58 2009//
+/i2c.c/1.1.1.1/Wed Mar 25 22:21:58 2009//
+/interrupts.c/1.1.1.1/Wed Mar 25 22:21:58 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:58 2009//
+/lxt972.c/1.1.1.1/Wed Mar 25 22:21:58 2009//
+/serial.c/1.1.1.1/Wed Mar 25 22:21:58 2009//
+/spi.c/1.1.1.1/Wed Mar 25 22:21:58 2009//
+/usb.c/1.1.1.1/Wed Mar 25 22:21:58 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/arm920t/at91rm9200/CVS/Repository u-boot-2009.03/cpu/arm920t/at91rm9200/CVS/Repository
--- u-boot-2009.03_orig/cpu/arm920t/at91rm9200/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm920t/at91rm9200/CVS/Repository        2009-03-25 15:25:11.962491700 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/arm920t/at91rm9200
diff -Naur u-boot-2009.03_orig/cpu/arm920t/at91rm9200/CVS/Root u-boot-2009.03/cpu/arm920t/at91rm9200/CVS/Root
--- u-boot-2009.03_orig/cpu/arm920t/at91rm9200/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm920t/at91rm9200/CVS/Root      2009-03-25 15:25:11.946866800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/arm920t/imx/CVS/Entries u-boot-2009.03/cpu/arm920t/imx/CVS/Entries
--- u-boot-2009.03_orig/cpu/arm920t/imx/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm920t/imx/CVS/Entries  2009-03-25 15:57:52.043697100 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/generic.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupts.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/speed.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/arm920t/imx/CVS/Entries.Extra u-boot-2009.03/cpu/arm920t/imx/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/arm920t/imx/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm920t/imx/CVS/Entries.Extra    2009-03-25 15:57:52.043697100 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019718/
+/generic.c///1238019718/
+/interrupts.c///1238019718/
+/serial.c///1238019718/
+/speed.c///1238019718/
diff -Naur u-boot-2009.03_orig/cpu/arm920t/imx/CVS/Entries.Extra.Old u-boot-2009.03/cpu/arm920t/imx/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/arm920t/imx/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm920t/imx/CVS/Entries.Extra.Old        2009-03-25 15:25:12.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019718/
+/generic.c///1238019718/
+/interrupts.c///1238019718/
+/serial.c///1238019718/
+/speed.c///1238019718/
diff -Naur u-boot-2009.03_orig/cpu/arm920t/imx/CVS/Entries.Old u-boot-2009.03/cpu/arm920t/imx/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/arm920t/imx/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm920t/imx/CVS/Entries.Old      2009-03-25 15:25:12.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:58 2009//
+/generic.c/1.1.1.1/Wed Mar 25 22:21:58 2009//
+/interrupts.c/1.1.1.1/Wed Mar 25 22:21:58 2009//
+/serial.c/1.1.1.1/Wed Mar 25 22:21:58 2009//
+/speed.c/1.1.1.1/Wed Mar 25 22:21:58 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/arm920t/imx/CVS/Repository u-boot-2009.03/cpu/arm920t/imx/CVS/Repository
--- u-boot-2009.03_orig/cpu/arm920t/imx/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm920t/imx/CVS/Repository       2009-03-25 15:25:12.118740700 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/arm920t/imx
diff -Naur u-boot-2009.03_orig/cpu/arm920t/imx/CVS/Root u-boot-2009.03/cpu/arm920t/imx/CVS/Root
--- u-boot-2009.03_orig/cpu/arm920t/imx/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm920t/imx/CVS/Root     2009-03-25 15:25:12.118740700 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/arm920t/ks8695/CVS/Entries u-boot-2009.03/cpu/arm920t/ks8695/CVS/Entries
--- u-boot-2009.03_orig/cpu/arm920t/ks8695/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm920t/ks8695/CVS/Entries       2009-03-25 15:57:52.106196700 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupts.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/arm920t/ks8695/CVS/Entries.Extra u-boot-2009.03/cpu/arm920t/ks8695/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/arm920t/ks8695/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm920t/ks8695/CVS/Entries.Extra 2009-03-25 15:57:52.106196700 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019718/
+/interrupts.c///1238019718/
+/lowlevel_init.S///1238019718/
+/serial.c///1238019719/
diff -Naur u-boot-2009.03_orig/cpu/arm920t/ks8695/CVS/Entries.Extra.Old u-boot-2009.03/cpu/arm920t/ks8695/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/arm920t/ks8695/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm920t/ks8695/CVS/Entries.Extra.Old     2009-03-25 15:25:12.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019718/
+/interrupts.c///1238019718/
+/lowlevel_init.S///1238019718/
+/serial.c///1238019719/
diff -Naur u-boot-2009.03_orig/cpu/arm920t/ks8695/CVS/Entries.Old u-boot-2009.03/cpu/arm920t/ks8695/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/arm920t/ks8695/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm920t/ks8695/CVS/Entries.Old   2009-03-25 15:25:12.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:58 2009//
+/interrupts.c/1.1.1.1/Wed Mar 25 22:21:58 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:58 2009//
+/serial.c/1.1.1.1/Wed Mar 25 22:21:59 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/arm920t/ks8695/CVS/Repository u-boot-2009.03/cpu/arm920t/ks8695/CVS/Repository
--- u-boot-2009.03_orig/cpu/arm920t/ks8695/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm920t/ks8695/CVS/Repository    2009-03-25 15:25:12.243739900 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/arm920t/ks8695
diff -Naur u-boot-2009.03_orig/cpu/arm920t/ks8695/CVS/Root u-boot-2009.03/cpu/arm920t/ks8695/CVS/Root
--- u-boot-2009.03_orig/cpu/arm920t/ks8695/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm920t/ks8695/CVS/Root  2009-03-25 15:25:12.228115000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/arm920t/s3c24x0/CVS/Entries u-boot-2009.03/cpu/arm920t/s3c24x0/CVS/Entries
--- u-boot-2009.03_orig/cpu/arm920t/s3c24x0/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm920t/s3c24x0/CVS/Entries      2009-03-25 15:57:52.215571000 -0700
@@ -0,0 +1,10 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/i2c.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupts.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nand.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/speed.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usb_ohci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usb_ohci.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/arm920t/s3c24x0/CVS/Entries.Extra u-boot-2009.03/cpu/arm920t/s3c24x0/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/arm920t/s3c24x0/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm920t/s3c24x0/CVS/Entries.Extra        2009-03-25 15:57:52.215571000 -0700
@@ -0,0 +1,9 @@
+/Makefile///1238019719/
+/i2c.c///1238019719/
+/interrupts.c///1238019719/
+/nand.c///1238019719/
+/serial.c///1238019719/
+/speed.c///1238019719/
+/usb.c///1238019719/
+/usb_ohci.c///1238019719/
+/usb_ohci.h///1238019719/
diff -Naur u-boot-2009.03_orig/cpu/arm920t/s3c24x0/CVS/Entries.Extra.Old u-boot-2009.03/cpu/arm920t/s3c24x0/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/arm920t/s3c24x0/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm920t/s3c24x0/CVS/Entries.Extra.Old    2009-03-25 15:25:12.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile///1238019719/
+/i2c.c///1238019719/
+/interrupts.c///1238019719/
+/nand.c///1238019719/
+/serial.c///1238019719/
+/speed.c///1238019719/
+/usb.c///1238019719/
+/usb_ohci.c///1238019719/
+/usb_ohci.h///1238019719/
diff -Naur u-boot-2009.03_orig/cpu/arm920t/s3c24x0/CVS/Entries.Old u-boot-2009.03/cpu/arm920t/s3c24x0/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/arm920t/s3c24x0/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm920t/s3c24x0/CVS/Entries.Old  2009-03-25 15:25:12.000000000 -0700
@@ -0,0 +1,10 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/i2c.c/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/interrupts.c/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/nand.c/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/serial.c/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/speed.c/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/usb.c/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/usb_ohci.c/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/usb_ohci.h/1.1.1.1/Wed Mar 25 22:21:59 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/arm920t/s3c24x0/CVS/Repository u-boot-2009.03/cpu/arm920t/s3c24x0/CVS/Repository
--- u-boot-2009.03_orig/cpu/arm920t/s3c24x0/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm920t/s3c24x0/CVS/Repository   2009-03-25 15:25:12.337489300 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/arm920t/s3c24x0
diff -Naur u-boot-2009.03_orig/cpu/arm920t/s3c24x0/CVS/Root u-boot-2009.03/cpu/arm920t/s3c24x0/CVS/Root
--- u-boot-2009.03_orig/cpu/arm920t/s3c24x0/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm920t/s3c24x0/CVS/Root 2009-03-25 15:25:12.321864400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/arm925t/CVS/Entries u-boot-2009.03/cpu/arm925t/CVS/Entries
--- u-boot-2009.03_orig/cpu/arm925t/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm925t/CVS/Entries      2009-03-25 15:57:52.324945300 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupts.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/omap925.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/start.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/arm925t/CVS/Entries.Extra u-boot-2009.03/cpu/arm925t/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/arm925t/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm925t/CVS/Entries.Extra        2009-03-25 15:57:52.324945300 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019719/
+/config.mk///1238019719/
+/cpu.c///1238019719/
+/interrupts.c///1238019719/
+/omap925.c///1238019719/
+/start.S///1238019719/
diff -Naur u-boot-2009.03_orig/cpu/arm925t/CVS/Entries.Extra.Old u-boot-2009.03/cpu/arm925t/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/arm925t/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm925t/CVS/Entries.Extra.Old    2009-03-25 15:25:12.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019719/
+/config.mk///1238019719/
+/cpu.c///1238019719/
+/interrupts.c///1238019719/
+/omap925.c///1238019719/
+/start.S///1238019719/
diff -Naur u-boot-2009.03_orig/cpu/arm925t/CVS/Entries.Old u-boot-2009.03/cpu/arm925t/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/arm925t/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm925t/CVS/Entries.Old  2009-03-25 15:25:12.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/cpu.c/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/interrupts.c/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/omap925.c/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/start.S/1.1.1.1/Wed Mar 25 22:21:59 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/arm925t/CVS/Repository u-boot-2009.03/cpu/arm925t/CVS/Repository
--- u-boot-2009.03_orig/cpu/arm925t/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm925t/CVS/Repository   2009-03-25 15:25:12.603112600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/arm925t
diff -Naur u-boot-2009.03_orig/cpu/arm925t/CVS/Root u-boot-2009.03/cpu/arm925t/CVS/Root
--- u-boot-2009.03_orig/cpu/arm925t/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm925t/CVS/Root 2009-03-25 15:25:12.603112600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/arm926ejs/CVS/Entries u-boot-2009.03/cpu/arm926ejs/CVS/Entries
--- u-boot-2009.03_orig/cpu/arm926ejs/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm926ejs/CVS/Entries    2009-03-25 15:57:52.778067400 -0700
@@ -0,0 +1,10 @@
+D/at91////
+D/davinci////
+D/nomadik////
+D/omap////
+D/versatile////
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupts.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/start.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
diff -Naur u-boot-2009.03_orig/cpu/arm926ejs/CVS/Entries.Extra u-boot-2009.03/cpu/arm926ejs/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/arm926ejs/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm926ejs/CVS/Entries.Extra      2009-03-25 15:57:52.778067400 -0700
@@ -0,0 +1,10 @@
+D/at91////
+D/davinci////
+D/nomadik////
+D/omap////
+D/versatile////
+/Makefile///1238019719/
+/config.mk///1238019719/
+/cpu.c///1238019719/
+/interrupts.c///1238019719/
+/start.S///1238019719/
diff -Naur u-boot-2009.03_orig/cpu/arm926ejs/CVS/Entries.Extra.Old u-boot-2009.03/cpu/arm926ejs/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/arm926ejs/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm926ejs/CVS/Entries.Extra.Old  2009-03-25 15:25:13.000000000 -0700
@@ -0,0 +1,10 @@
+/Makefile///1238019719/
+/config.mk///1238019719/
+/cpu.c///1238019719/
+/interrupts.c///1238019719/
+/start.S///1238019719/
+D/at91////
+D/davinci////
+D/nomadik////
+D/omap////
+D/versatile////
diff -Naur u-boot-2009.03_orig/cpu/arm926ejs/CVS/Entries.Old u-boot-2009.03/cpu/arm926ejs/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/arm926ejs/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm926ejs/CVS/Entries.Old        2009-03-25 15:25:13.000000000 -0700
@@ -0,0 +1,10 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/cpu.c/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/interrupts.c/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/start.S/1.1.1.1/Wed Mar 25 22:21:59 2009//
+D/at91////
+D/davinci////
+D/nomadik////
+D/omap////
+D/versatile////
diff -Naur u-boot-2009.03_orig/cpu/arm926ejs/CVS/Repository u-boot-2009.03/cpu/arm926ejs/CVS/Repository
--- u-boot-2009.03_orig/cpu/arm926ejs/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm926ejs/CVS/Repository 2009-03-25 15:25:12.743736700 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/arm926ejs
diff -Naur u-boot-2009.03_orig/cpu/arm926ejs/CVS/Root u-boot-2009.03/cpu/arm926ejs/CVS/Root
--- u-boot-2009.03_orig/cpu/arm926ejs/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm926ejs/CVS/Root       2009-03-25 15:25:12.743736700 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/arm926ejs/at91/CVS/Entries u-boot-2009.03/cpu/arm926ejs/at91/CVS/Entries
--- u-boot-2009.03_orig/cpu/arm926ejs/at91/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm926ejs/at91/CVS/Entries       2009-03-25 15:57:52.434319600 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/spi.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/timer.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/arm926ejs/at91/CVS/Entries.Extra u-boot-2009.03/cpu/arm926ejs/at91/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/arm926ejs/at91/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm926ejs/at91/CVS/Entries.Extra 2009-03-25 15:57:52.434319600 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019719/
+/config.mk///1238019719/
+/lowlevel_init.S///1238019719/
+/spi.c///1238019719/
+/timer.c///1238019719/
+/u-boot.lds///1238019719/
+/usb.c///1238019719/
diff -Naur u-boot-2009.03_orig/cpu/arm926ejs/at91/CVS/Entries.Extra.Old u-boot-2009.03/cpu/arm926ejs/at91/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/arm926ejs/at91/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm926ejs/at91/CVS/Entries.Extra.Old     2009-03-25 15:25:12.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019719/
+/config.mk///1238019719/
+/lowlevel_init.S///1238019719/
+/spi.c///1238019719/
+/timer.c///1238019719/
+/u-boot.lds///1238019719/
+/usb.c///1238019719/
diff -Naur u-boot-2009.03_orig/cpu/arm926ejs/at91/CVS/Entries.Old u-boot-2009.03/cpu/arm926ejs/at91/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/arm926ejs/at91/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm926ejs/at91/CVS/Entries.Old   2009-03-25 15:25:12.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/spi.c/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/timer.c/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/usb.c/1.1.1.1/Wed Mar 25 22:21:59 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/arm926ejs/at91/CVS/Repository u-boot-2009.03/cpu/arm926ejs/at91/CVS/Repository
--- u-boot-2009.03_orig/cpu/arm926ejs/at91/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm926ejs/at91/CVS/Repository    2009-03-25 15:25:12.806236300 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/arm926ejs/at91
diff -Naur u-boot-2009.03_orig/cpu/arm926ejs/at91/CVS/Root u-boot-2009.03/cpu/arm926ejs/at91/CVS/Root
--- u-boot-2009.03_orig/cpu/arm926ejs/at91/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm926ejs/at91/CVS/Root  2009-03-25 15:25:12.790611400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/arm926ejs/davinci/CVS/Entries u-boot-2009.03/cpu/arm926ejs/davinci/CVS/Entries
--- u-boot-2009.03_orig/cpu/arm926ejs/davinci/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm926ejs/davinci/CVS/Entries    2009-03-25 15:57:52.528069000 -0700
@@ -0,0 +1,10 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dp83848.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ether.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/i2c.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lxt972.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nand.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/reset.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/timer.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/arm926ejs/davinci/CVS/Entries.Extra u-boot-2009.03/cpu/arm926ejs/davinci/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/arm926ejs/davinci/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm926ejs/davinci/CVS/Entries.Extra      2009-03-25 15:57:52.528069000 -0700
@@ -0,0 +1,9 @@
+/Makefile///1238019719/
+/dp83848.c///1238019719/
+/ether.c///1238019719/
+/i2c.c///1238019719/
+/lowlevel_init.S///1238019719/
+/lxt972.c///1238019719/
+/nand.c///1238019719/
+/reset.S///1238019719/
+/timer.c///1238019719/
diff -Naur u-boot-2009.03_orig/cpu/arm926ejs/davinci/CVS/Entries.Extra.Old u-boot-2009.03/cpu/arm926ejs/davinci/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/arm926ejs/davinci/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm926ejs/davinci/CVS/Entries.Extra.Old  2009-03-25 15:25:13.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile///1238019719/
+/dp83848.c///1238019719/
+/ether.c///1238019719/
+/i2c.c///1238019719/
+/lowlevel_init.S///1238019719/
+/lxt972.c///1238019719/
+/nand.c///1238019719/
+/reset.S///1238019719/
+/timer.c///1238019719/
diff -Naur u-boot-2009.03_orig/cpu/arm926ejs/davinci/CVS/Entries.Old u-boot-2009.03/cpu/arm926ejs/davinci/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/arm926ejs/davinci/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm926ejs/davinci/CVS/Entries.Old        2009-03-25 15:25:13.000000000 -0700
@@ -0,0 +1,10 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/dp83848.c/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/ether.c/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/i2c.c/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/lxt972.c/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/nand.c/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/reset.S/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/timer.c/1.1.1.1/Wed Mar 25 22:21:59 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/arm926ejs/davinci/CVS/Repository u-boot-2009.03/cpu/arm926ejs/davinci/CVS/Repository
--- u-boot-2009.03_orig/cpu/arm926ejs/davinci/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm926ejs/davinci/CVS/Repository 2009-03-25 15:25:12.931235500 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/arm926ejs/davinci
diff -Naur u-boot-2009.03_orig/cpu/arm926ejs/davinci/CVS/Root u-boot-2009.03/cpu/arm926ejs/davinci/CVS/Root
--- u-boot-2009.03_orig/cpu/arm926ejs/davinci/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm926ejs/davinci/CVS/Root       2009-03-25 15:25:12.931235500 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/arm926ejs/nomadik/CVS/Entries u-boot-2009.03/cpu/arm926ejs/nomadik/CVS/Entries
--- u-boot-2009.03_orig/cpu/arm926ejs/nomadik/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm926ejs/nomadik/CVS/Entries    2009-03-25 15:57:52.590568600 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/reset.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/timer.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/arm926ejs/nomadik/CVS/Entries.Extra u-boot-2009.03/cpu/arm926ejs/nomadik/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/arm926ejs/nomadik/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm926ejs/nomadik/CVS/Entries.Extra      2009-03-25 15:57:52.590568600 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019719/
+/reset.S///1238019719/
+/timer.c///1238019719/
diff -Naur u-boot-2009.03_orig/cpu/arm926ejs/nomadik/CVS/Entries.Extra.Old u-boot-2009.03/cpu/arm926ejs/nomadik/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/arm926ejs/nomadik/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm926ejs/nomadik/CVS/Entries.Extra.Old  2009-03-25 15:25:13.000000000 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019719/
+/reset.S///1238019719/
+/timer.c///1238019719/
diff -Naur u-boot-2009.03_orig/cpu/arm926ejs/nomadik/CVS/Entries.Old u-boot-2009.03/cpu/arm926ejs/nomadik/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/arm926ejs/nomadik/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm926ejs/nomadik/CVS/Entries.Old        2009-03-25 15:25:13.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/reset.S/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/timer.c/1.1.1.1/Wed Mar 25 22:21:59 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/arm926ejs/nomadik/CVS/Repository u-boot-2009.03/cpu/arm926ejs/nomadik/CVS/Repository
--- u-boot-2009.03_orig/cpu/arm926ejs/nomadik/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm926ejs/nomadik/CVS/Repository 2009-03-25 15:25:13.087484500 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/arm926ejs/nomadik
diff -Naur u-boot-2009.03_orig/cpu/arm926ejs/nomadik/CVS/Root u-boot-2009.03/cpu/arm926ejs/nomadik/CVS/Root
--- u-boot-2009.03_orig/cpu/arm926ejs/nomadik/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm926ejs/nomadik/CVS/Root       2009-03-25 15:25:13.071859600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/arm926ejs/omap/CVS/Entries u-boot-2009.03/cpu/arm926ejs/omap/CVS/Entries
--- u-boot-2009.03_orig/cpu/arm926ejs/omap/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm926ejs/omap/CVS/Entries       2009-03-25 15:57:52.668693100 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpuinfo.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/reset.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/timer.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/arm926ejs/omap/CVS/Entries.Extra u-boot-2009.03/cpu/arm926ejs/omap/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/arm926ejs/omap/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm926ejs/omap/CVS/Entries.Extra 2009-03-25 15:57:52.668693100 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019719/
+/cpuinfo.c///1238019719/
+/reset.S///1238019719/
+/timer.c///1238019719/
diff -Naur u-boot-2009.03_orig/cpu/arm926ejs/omap/CVS/Entries.Extra.Old u-boot-2009.03/cpu/arm926ejs/omap/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/arm926ejs/omap/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm926ejs/omap/CVS/Entries.Extra.Old     2009-03-25 15:25:13.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019719/
+/cpuinfo.c///1238019719/
+/reset.S///1238019719/
+/timer.c///1238019719/
diff -Naur u-boot-2009.03_orig/cpu/arm926ejs/omap/CVS/Entries.Old u-boot-2009.03/cpu/arm926ejs/omap/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/arm926ejs/omap/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm926ejs/omap/CVS/Entries.Old   2009-03-25 15:25:13.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/cpuinfo.c/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/reset.S/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/timer.c/1.1.1.1/Wed Mar 25 22:21:59 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/arm926ejs/omap/CVS/Repository u-boot-2009.03/cpu/arm926ejs/omap/CVS/Repository
--- u-boot-2009.03_orig/cpu/arm926ejs/omap/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm926ejs/omap/CVS/Repository    2009-03-25 15:25:13.165609000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/arm926ejs/omap
diff -Naur u-boot-2009.03_orig/cpu/arm926ejs/omap/CVS/Root u-boot-2009.03/cpu/arm926ejs/omap/CVS/Root
--- u-boot-2009.03_orig/cpu/arm926ejs/omap/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm926ejs/omap/CVS/Root  2009-03-25 15:25:13.165609000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/arm926ejs/versatile/CVS/Entries u-boot-2009.03/cpu/arm926ejs/versatile/CVS/Entries
--- u-boot-2009.03_orig/cpu/arm926ejs/versatile/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm926ejs/versatile/CVS/Entries  2009-03-25 15:57:52.731192700 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/reset.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/timer.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/arm926ejs/versatile/CVS/Entries.Extra u-boot-2009.03/cpu/arm926ejs/versatile/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/arm926ejs/versatile/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm926ejs/versatile/CVS/Entries.Extra    2009-03-25 15:57:52.731192700 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019719/
+/reset.S///1238019719/
+/timer.c///1238019719/
diff -Naur u-boot-2009.03_orig/cpu/arm926ejs/versatile/CVS/Entries.Extra.Old u-boot-2009.03/cpu/arm926ejs/versatile/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/arm926ejs/versatile/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm926ejs/versatile/CVS/Entries.Extra.Old        2009-03-25 15:25:13.000000000 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019719/
+/reset.S///1238019719/
+/timer.c///1238019719/
diff -Naur u-boot-2009.03_orig/cpu/arm926ejs/versatile/CVS/Entries.Old u-boot-2009.03/cpu/arm926ejs/versatile/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/arm926ejs/versatile/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm926ejs/versatile/CVS/Entries.Old      2009-03-25 15:25:13.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/reset.S/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/timer.c/1.1.1.1/Wed Mar 25 22:21:59 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/arm926ejs/versatile/CVS/Repository u-boot-2009.03/cpu/arm926ejs/versatile/CVS/Repository
--- u-boot-2009.03_orig/cpu/arm926ejs/versatile/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm926ejs/versatile/CVS/Repository       2009-03-25 15:25:13.274983300 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/arm926ejs/versatile
diff -Naur u-boot-2009.03_orig/cpu/arm926ejs/versatile/CVS/Root u-boot-2009.03/cpu/arm926ejs/versatile/CVS/Root
--- u-boot-2009.03_orig/cpu/arm926ejs/versatile/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm926ejs/versatile/CVS/Root     2009-03-25 15:25:13.274983300 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/arm946es/CVS/Entries u-boot-2009.03/cpu/arm946es/CVS/Entries
--- u-boot-2009.03_orig/cpu/arm946es/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm946es/CVS/Entries     2009-03-25 15:57:52.856191900 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupts.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/start.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/arm946es/CVS/Entries.Extra u-boot-2009.03/cpu/arm946es/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/arm946es/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm946es/CVS/Entries.Extra       2009-03-25 15:57:52.856191900 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019719/
+/config.mk///1238019719/
+/cpu.c///1238019719/
+/interrupts.c///1238019719/
+/start.S///1238019719/
diff -Naur u-boot-2009.03_orig/cpu/arm946es/CVS/Entries.Extra.Old u-boot-2009.03/cpu/arm946es/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/arm946es/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm946es/CVS/Entries.Extra.Old   2009-03-25 15:25:13.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019719/
+/config.mk///1238019719/
+/cpu.c///1238019719/
+/interrupts.c///1238019719/
+/start.S///1238019719/
diff -Naur u-boot-2009.03_orig/cpu/arm946es/CVS/Entries.Old u-boot-2009.03/cpu/arm946es/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/arm946es/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm946es/CVS/Entries.Old 2009-03-25 15:25:13.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/cpu.c/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/interrupts.c/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/start.S/1.1.1.1/Wed Mar 25 22:21:59 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/arm946es/CVS/Repository u-boot-2009.03/cpu/arm946es/CVS/Repository
--- u-boot-2009.03_orig/cpu/arm946es/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm946es/CVS/Repository  2009-03-25 15:25:13.712480500 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/arm946es
diff -Naur u-boot-2009.03_orig/cpu/arm946es/CVS/Root u-boot-2009.03/cpu/arm946es/CVS/Root
--- u-boot-2009.03_orig/cpu/arm946es/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm946es/CVS/Root        2009-03-25 15:25:13.712480500 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/arm_cortexa8/CVS/Entries u-boot-2009.03/cpu/arm_cortexa8/CVS/Entries
--- u-boot-2009.03_orig/cpu/arm_cortexa8/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm_cortexa8/CVS/Entries 2009-03-25 15:57:53.012440900 -0700
@@ -0,0 +1,5 @@
+D/omap3////
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/start.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
diff -Naur u-boot-2009.03_orig/cpu/arm_cortexa8/CVS/Entries.Extra u-boot-2009.03/cpu/arm_cortexa8/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/arm_cortexa8/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm_cortexa8/CVS/Entries.Extra   2009-03-25 15:57:53.012440900 -0700
@@ -0,0 +1,5 @@
+D/omap3////
+/Makefile///1238019719/
+/config.mk///1238019719/
+/cpu.c///1238019719/
+/start.S///1238019719/
diff -Naur u-boot-2009.03_orig/cpu/arm_cortexa8/CVS/Entries.Extra.Old u-boot-2009.03/cpu/arm_cortexa8/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/arm_cortexa8/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm_cortexa8/CVS/Entries.Extra.Old       2009-03-25 15:25:14.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019719/
+/config.mk///1238019719/
+/cpu.c///1238019719/
+/start.S///1238019719/
+D/omap3////
diff -Naur u-boot-2009.03_orig/cpu/arm_cortexa8/CVS/Entries.Old u-boot-2009.03/cpu/arm_cortexa8/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/arm_cortexa8/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm_cortexa8/CVS/Entries.Old     2009-03-25 15:25:14.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/cpu.c/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/start.S/1.1.1.1/Wed Mar 25 22:21:59 2009//
+D/omap3////
diff -Naur u-boot-2009.03_orig/cpu/arm_cortexa8/CVS/Repository u-boot-2009.03/cpu/arm_cortexa8/CVS/Repository
--- u-boot-2009.03_orig/cpu/arm_cortexa8/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm_cortexa8/CVS/Repository      2009-03-25 15:25:13.853104600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/arm_cortexa8
diff -Naur u-boot-2009.03_orig/cpu/arm_cortexa8/CVS/Root u-boot-2009.03/cpu/arm_cortexa8/CVS/Root
--- u-boot-2009.03_orig/cpu/arm_cortexa8/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm_cortexa8/CVS/Root    2009-03-25 15:25:13.837479700 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/arm_cortexa8/omap3/CVS/Entries u-boot-2009.03/cpu/arm_cortexa8/omap3/CVS/Entries
--- u-boot-2009.03_orig/cpu/arm_cortexa8/omap3/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm_cortexa8/omap3/CVS/Entries   2009-03-25 15:57:52.965566200 -0700
@@ -0,0 +1,10 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/board.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/clock.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupts.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lowlevel_init.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mem.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sys_info.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/syslib.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/arm_cortexa8/omap3/CVS/Entries.Extra u-boot-2009.03/cpu/arm_cortexa8/omap3/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/arm_cortexa8/omap3/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm_cortexa8/omap3/CVS/Entries.Extra     2009-03-25 15:57:52.965566200 -0700
@@ -0,0 +1,9 @@
+/Makefile///1238019719/
+/board.c///1238019719/
+/clock.c///1238019719/
+/config.mk///1238019719/
+/interrupts.c///1238019719/
+/lowlevel_init.S///1238019719/
+/mem.c///1238019719/
+/sys_info.c///1238019719/
+/syslib.c///1238019719/
diff -Naur u-boot-2009.03_orig/cpu/arm_cortexa8/omap3/CVS/Entries.Extra.Old u-boot-2009.03/cpu/arm_cortexa8/omap3/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/arm_cortexa8/omap3/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm_cortexa8/omap3/CVS/Entries.Extra.Old 2009-03-25 15:25:14.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile///1238019719/
+/board.c///1238019719/
+/clock.c///1238019719/
+/config.mk///1238019719/
+/interrupts.c///1238019719/
+/lowlevel_init.S///1238019719/
+/mem.c///1238019719/
+/sys_info.c///1238019719/
+/syslib.c///1238019719/
diff -Naur u-boot-2009.03_orig/cpu/arm_cortexa8/omap3/CVS/Entries.Old u-boot-2009.03/cpu/arm_cortexa8/omap3/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/arm_cortexa8/omap3/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm_cortexa8/omap3/CVS/Entries.Old       2009-03-25 15:25:14.000000000 -0700
@@ -0,0 +1,10 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/board.c/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/clock.c/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/interrupts.c/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/lowlevel_init.S/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/mem.c/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/sys_info.c/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/syslib.c/1.1.1.1/Wed Mar 25 22:21:59 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/arm_cortexa8/omap3/CVS/Repository u-boot-2009.03/cpu/arm_cortexa8/omap3/CVS/Repository
--- u-boot-2009.03_orig/cpu/arm_cortexa8/omap3/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm_cortexa8/omap3/CVS/Repository        2009-03-25 15:25:13.899979300 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/arm_cortexa8/omap3
diff -Naur u-boot-2009.03_orig/cpu/arm_cortexa8/omap3/CVS/Root u-boot-2009.03/cpu/arm_cortexa8/omap3/CVS/Root
--- u-boot-2009.03_orig/cpu/arm_cortexa8/omap3/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm_cortexa8/omap3/CVS/Root      2009-03-25 15:25:13.899979300 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/arm_intcm/CVS/Entries u-boot-2009.03/cpu/arm_intcm/CVS/Entries
--- u-boot-2009.03_orig/cpu/arm_intcm/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm_intcm/CVS/Entries    2009-03-25 15:57:53.090565400 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/start.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/arm_intcm/CVS/Entries.Extra u-boot-2009.03/cpu/arm_intcm/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/arm_intcm/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm_intcm/CVS/Entries.Extra      2009-03-25 15:57:53.090565400 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019719/
+/config.mk///1238019719/
+/cpu.c///1238019719/
+/start.S///1238019719/
diff -Naur u-boot-2009.03_orig/cpu/arm_intcm/CVS/Entries.Extra.Old u-boot-2009.03/cpu/arm_intcm/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/arm_intcm/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm_intcm/CVS/Entries.Extra.Old  2009-03-25 15:25:14.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019719/
+/config.mk///1238019719/
+/cpu.c///1238019719/
+/start.S///1238019719/
diff -Naur u-boot-2009.03_orig/cpu/arm_intcm/CVS/Entries.Old u-boot-2009.03/cpu/arm_intcm/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/arm_intcm/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm_intcm/CVS/Entries.Old        2009-03-25 15:25:14.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/cpu.c/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/start.S/1.1.1.1/Wed Mar 25 22:21:59 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/arm_intcm/CVS/Repository u-boot-2009.03/cpu/arm_intcm/CVS/Repository
--- u-boot-2009.03_orig/cpu/arm_intcm/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm_intcm/CVS/Repository 2009-03-25 15:25:14.118727900 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/arm_intcm
diff -Naur u-boot-2009.03_orig/cpu/arm_intcm/CVS/Root u-boot-2009.03/cpu/arm_intcm/CVS/Root
--- u-boot-2009.03_orig/cpu/arm_intcm/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/arm_intcm/CVS/Root       2009-03-25 15:25:14.103103000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/at32ap/CVS/Entries u-boot-2009.03/cpu/at32ap/CVS/Entries
--- u-boot-2009.03_orig/cpu/at32ap/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/at32ap/CVS/Entries       2009-03-25 15:57:53.262439300 -0700
@@ -0,0 +1,13 @@
+D/at32ap700x////
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cache.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/exception.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/hsdramc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/hsdramc1.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/hsmc3.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupts.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pio.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pio2.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/start.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
diff -Naur u-boot-2009.03_orig/cpu/at32ap/CVS/Entries.Extra u-boot-2009.03/cpu/at32ap/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/at32ap/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/at32ap/CVS/Entries.Extra 2009-03-25 15:57:53.262439300 -0700
@@ -0,0 +1,13 @@
+D/at32ap700x////
+/Makefile///1238019719/
+/cache.c///1238019719/
+/config.mk///1238019719/
+/cpu.c///1238019719/
+/exception.c///1238019719/
+/hsdramc.c///1238019719/
+/hsdramc1.h///1238019719/
+/hsmc3.h///1238019719/
+/interrupts.c///1238019719/
+/pio.c///1238019719/
+/pio2.h///1238019719/
+/start.S///1238019719/
diff -Naur u-boot-2009.03_orig/cpu/at32ap/CVS/Entries.Extra.Old u-boot-2009.03/cpu/at32ap/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/at32ap/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/at32ap/CVS/Entries.Extra.Old     2009-03-25 15:25:14.000000000 -0700
@@ -0,0 +1,13 @@
+/Makefile///1238019719/
+/cache.c///1238019719/
+/config.mk///1238019719/
+/cpu.c///1238019719/
+/exception.c///1238019719/
+/hsdramc.c///1238019719/
+/hsdramc1.h///1238019719/
+/hsmc3.h///1238019719/
+/interrupts.c///1238019719/
+/pio.c///1238019719/
+/pio2.h///1238019719/
+/start.S///1238019719/
+D/at32ap700x////
diff -Naur u-boot-2009.03_orig/cpu/at32ap/CVS/Entries.Old u-boot-2009.03/cpu/at32ap/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/at32ap/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/at32ap/CVS/Entries.Old   2009-03-25 15:25:14.000000000 -0700
@@ -0,0 +1,13 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/cache.c/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/cpu.c/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/exception.c/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/hsdramc.c/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/hsdramc1.h/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/hsmc3.h/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/interrupts.c/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/pio.c/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/pio2.h/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/start.S/1.1.1.1/Wed Mar 25 22:21:59 2009//
+D/at32ap700x////
diff -Naur u-boot-2009.03_orig/cpu/at32ap/CVS/Repository u-boot-2009.03/cpu/at32ap/CVS/Repository
--- u-boot-2009.03_orig/cpu/at32ap/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/at32ap/CVS/Repository    2009-03-25 15:25:14.212477300 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/at32ap
diff -Naur u-boot-2009.03_orig/cpu/at32ap/CVS/Root u-boot-2009.03/cpu/at32ap/CVS/Root
--- u-boot-2009.03_orig/cpu/at32ap/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/at32ap/CVS/Root  2009-03-25 15:25:14.212477300 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/at32ap/at32ap700x/CVS/Entries u-boot-2009.03/cpu/at32ap/at32ap700x/CVS/Entries
--- u-boot-2009.03_orig/cpu/at32ap/at32ap700x/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/at32ap/at32ap700x/CVS/Entries    2009-03-25 15:57:53.199939700 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/clk.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/gpio.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sm.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/at32ap/at32ap700x/CVS/Entries.Extra u-boot-2009.03/cpu/at32ap/at32ap700x/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/at32ap/at32ap700x/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/at32ap/at32ap700x/CVS/Entries.Extra      2009-03-25 15:57:53.199939700 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019719/
+/clk.c///1238019719/
+/gpio.c///1238019719/
+/sm.h///1238019719/
diff -Naur u-boot-2009.03_orig/cpu/at32ap/at32ap700x/CVS/Entries.Extra.Old u-boot-2009.03/cpu/at32ap/at32ap700x/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/at32ap/at32ap700x/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/at32ap/at32ap700x/CVS/Entries.Extra.Old  2009-03-25 15:25:14.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019719/
+/clk.c///1238019719/
+/gpio.c///1238019719/
+/sm.h///1238019719/
diff -Naur u-boot-2009.03_orig/cpu/at32ap/at32ap700x/CVS/Entries.Old u-boot-2009.03/cpu/at32ap/at32ap700x/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/at32ap/at32ap700x/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/at32ap/at32ap700x/CVS/Entries.Old        2009-03-25 15:25:14.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/clk.c/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/gpio.c/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/sm.h/1.1.1.1/Wed Mar 25 22:21:59 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/at32ap/at32ap700x/CVS/Repository u-boot-2009.03/cpu/at32ap/at32ap700x/CVS/Repository
--- u-boot-2009.03_orig/cpu/at32ap/at32ap700x/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/at32ap/at32ap700x/CVS/Repository 2009-03-25 15:25:14.353101400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/at32ap/at32ap700x
diff -Naur u-boot-2009.03_orig/cpu/at32ap/at32ap700x/CVS/Root u-boot-2009.03/cpu/at32ap/at32ap700x/CVS/Root
--- u-boot-2009.03_orig/cpu/at32ap/at32ap700x/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/at32ap/at32ap700x/CVS/Root       2009-03-25 15:25:14.337476500 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/blackfin/CVS/Entries u-boot-2009.03/cpu/blackfin/CVS/Entries
--- u-boot-2009.03_orig/cpu/blackfin/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/blackfin/CVS/Entries     2009-03-25 15:57:53.387438500 -0700
@@ -0,0 +1,19 @@
+/.gitignore/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bootrom-asm-offsets.awk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bootrom-asm-offsets.c.in/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cache.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/initcode.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupt.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupts.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/jtag-console.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/reset.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/start.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/system_map.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/traps.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/watchdog.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/blackfin/CVS/Entries.Extra u-boot-2009.03/cpu/blackfin/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/blackfin/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/blackfin/CVS/Entries.Extra       2009-03-25 15:57:53.387438500 -0700
@@ -0,0 +1,18 @@
+/.gitignore///1238019719/
+/Makefile///1238019719/
+/bootrom-asm-offsets.awk///1238019719/
+/bootrom-asm-offsets.c.in///1238019719/
+/cache.S///1238019719/
+/cpu.c///1238019719/
+/cpu.h///1238019719/
+/initcode.c///1238019719/
+/interrupt.S///1238019719/
+/interrupts.c///1238019719/
+/jtag-console.c///1238019719/
+/reset.c///1238019719/
+/serial.c///1238019719/
+/serial.h///1238019719/
+/start.S///1238019719/
+/system_map.S///1238019719/
+/traps.c///1238019719/
+/watchdog.c///1238019719/
diff -Naur u-boot-2009.03_orig/cpu/blackfin/CVS/Entries.Extra.Old u-boot-2009.03/cpu/blackfin/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/blackfin/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/blackfin/CVS/Entries.Extra.Old   2009-03-25 15:25:14.000000000 -0700
@@ -0,0 +1,18 @@
+/.gitignore///1238019719/
+/Makefile///1238019719/
+/bootrom-asm-offsets.awk///1238019719/
+/bootrom-asm-offsets.c.in///1238019719/
+/cache.S///1238019719/
+/cpu.c///1238019719/
+/cpu.h///1238019719/
+/initcode.c///1238019719/
+/interrupt.S///1238019719/
+/interrupts.c///1238019719/
+/jtag-console.c///1238019719/
+/reset.c///1238019719/
+/serial.c///1238019719/
+/serial.h///1238019719/
+/start.S///1238019719/
+/system_map.S///1238019719/
+/traps.c///1238019719/
+/watchdog.c///1238019719/
diff -Naur u-boot-2009.03_orig/cpu/blackfin/CVS/Entries.Old u-boot-2009.03/cpu/blackfin/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/blackfin/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/blackfin/CVS/Entries.Old 2009-03-25 15:25:14.000000000 -0700
@@ -0,0 +1,19 @@
+/.gitignore/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/Makefile/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/bootrom-asm-offsets.awk/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/bootrom-asm-offsets.c.in/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/cache.S/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/cpu.c/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/cpu.h/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/initcode.c/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/interrupt.S/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/interrupts.c/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/jtag-console.c/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/reset.c/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/serial.c/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/serial.h/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/start.S/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/system_map.S/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/traps.c/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/watchdog.c/1.1.1.1/Wed Mar 25 22:21:59 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/blackfin/CVS/Repository u-boot-2009.03/cpu/blackfin/CVS/Repository
--- u-boot-2009.03_orig/cpu/blackfin/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/blackfin/CVS/Repository  2009-03-25 15:25:14.618724700 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/blackfin
diff -Naur u-boot-2009.03_orig/cpu/blackfin/CVS/Root u-boot-2009.03/cpu/blackfin/CVS/Root
--- u-boot-2009.03_orig/cpu/blackfin/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/blackfin/CVS/Root        2009-03-25 15:25:14.618724700 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/i386/CVS/Entries u-boot-2009.03/cpu/i386/CVS/Entries
--- u-boot-2009.03_orig/cpu/i386/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/i386/CVS/Entries 2009-03-25 15:57:53.559312400 -0700
@@ -0,0 +1,10 @@
+D/sc520////
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupts.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/resetvec.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/start.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/start16.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/timer.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
diff -Naur u-boot-2009.03_orig/cpu/i386/CVS/Entries.Extra u-boot-2009.03/cpu/i386/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/i386/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/i386/CVS/Entries.Extra   2009-03-25 15:57:53.574937300 -0700
@@ -0,0 +1,10 @@
+D/sc520////
+/Makefile///1238019719/
+/config.mk///1238019719/
+/cpu.c///1238019719/
+/interrupts.c///1238019719/
+/resetvec.S///1238019720/
+/serial.c///1238019720/
+/start.S///1238019720/
+/start16.S///1238019720/
+/timer.c///1238019720/
diff -Naur u-boot-2009.03_orig/cpu/i386/CVS/Entries.Extra.Old u-boot-2009.03/cpu/i386/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/i386/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/i386/CVS/Entries.Extra.Old       2009-03-25 15:25:15.000000000 -0700
@@ -0,0 +1,10 @@
+/Makefile///1238019719/
+/config.mk///1238019719/
+/cpu.c///1238019719/
+/interrupts.c///1238019719/
+/resetvec.S///1238019720/
+/serial.c///1238019720/
+/start.S///1238019720/
+/start16.S///1238019720/
+/timer.c///1238019720/
+D/sc520////
diff -Naur u-boot-2009.03_orig/cpu/i386/CVS/Entries.Old u-boot-2009.03/cpu/i386/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/i386/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/i386/CVS/Entries.Old     2009-03-25 15:25:15.000000000 -0700
@@ -0,0 +1,10 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/cpu.c/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/interrupts.c/1.1.1.1/Wed Mar 25 22:21:59 2009//
+/resetvec.S/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/serial.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/start.S/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/start16.S/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/timer.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+D/sc520////
diff -Naur u-boot-2009.03_orig/cpu/i386/CVS/Repository u-boot-2009.03/cpu/i386/CVS/Repository
--- u-boot-2009.03_orig/cpu/i386/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/i386/CVS/Repository      2009-03-25 15:25:14.853098200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/i386
diff -Naur u-boot-2009.03_orig/cpu/i386/CVS/Root u-boot-2009.03/cpu/i386/CVS/Root
--- u-boot-2009.03_orig/cpu/i386/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/i386/CVS/Root    2009-03-25 15:25:14.853098200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/i386/sc520/CVS/Entries u-boot-2009.03/cpu/i386/sc520/CVS/Entries
--- u-boot-2009.03_orig/cpu/i386/sc520/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/i386/sc520/CVS/Entries   2009-03-25 15:57:53.512437700 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sc520.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sc520_asm.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/i386/sc520/CVS/Entries.Extra u-boot-2009.03/cpu/i386/sc520/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/i386/sc520/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/i386/sc520/CVS/Entries.Extra     2009-03-25 15:57:53.512437700 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019720/
+/sc520.c///1238019720/
+/sc520_asm.S///1238019720/
diff -Naur u-boot-2009.03_orig/cpu/i386/sc520/CVS/Entries.Extra.Old u-boot-2009.03/cpu/i386/sc520/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/i386/sc520/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/i386/sc520/CVS/Entries.Extra.Old 2009-03-25 15:25:14.000000000 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019720/
+/sc520.c///1238019720/
+/sc520_asm.S///1238019720/
diff -Naur u-boot-2009.03_orig/cpu/i386/sc520/CVS/Entries.Old u-boot-2009.03/cpu/i386/sc520/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/i386/sc520/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/i386/sc520/CVS/Entries.Old       2009-03-25 15:25:14.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/sc520.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/sc520_asm.S/1.1.1.1/Wed Mar 25 22:22:00 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/i386/sc520/CVS/Repository u-boot-2009.03/cpu/i386/sc520/CVS/Repository
--- u-boot-2009.03_orig/cpu/i386/sc520/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/i386/sc520/CVS/Repository        2009-03-25 15:25:14.946847600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/i386/sc520
diff -Naur u-boot-2009.03_orig/cpu/i386/sc520/CVS/Root u-boot-2009.03/cpu/i386/sc520/CVS/Root
--- u-boot-2009.03_orig/cpu/i386/sc520/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/i386/sc520/CVS/Root      2009-03-25 15:25:14.946847600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/ixp/CVS/Entries u-boot-2009.03/cpu/ixp/CVS/Entries
--- u-boot-2009.03_orig/cpu/ixp/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/ixp/CVS/Entries  2009-03-25 15:57:54.918678700 -0700
@@ -0,0 +1,7 @@
+D/npe////
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupts.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/start.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/timer.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
diff -Naur u-boot-2009.03_orig/cpu/ixp/CVS/Entries.Extra u-boot-2009.03/cpu/ixp/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/ixp/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/ixp/CVS/Entries.Extra    2009-03-25 15:57:54.934303600 -0700
@@ -0,0 +1,7 @@
+D/npe////
+/Makefile///1238019720/
+/config.mk///1238019720/
+/cpu.c///1238019720/
+/interrupts.c///1238019720/
+/start.S///1238019720/
+/timer.c///1238019720/
diff -Naur u-boot-2009.03_orig/cpu/ixp/CVS/Entries.Extra.Old u-boot-2009.03/cpu/ixp/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/ixp/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/ixp/CVS/Entries.Extra.Old        2009-03-25 15:25:17.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019720/
+/config.mk///1238019720/
+/cpu.c///1238019720/
+/interrupts.c///1238019720/
+/start.S///1238019720/
+/timer.c///1238019720/
+D/npe////
diff -Naur u-boot-2009.03_orig/cpu/ixp/CVS/Entries.Old u-boot-2009.03/cpu/ixp/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/ixp/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/ixp/CVS/Entries.Old      2009-03-25 15:25:17.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/cpu.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/interrupts.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/start.S/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/timer.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+D/npe////
diff -Naur u-boot-2009.03_orig/cpu/ixp/CVS/Repository u-boot-2009.03/cpu/ixp/CVS/Repository
--- u-boot-2009.03_orig/cpu/ixp/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/ixp/CVS/Repository       2009-03-25 15:25:15.087471700 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/ixp
diff -Naur u-boot-2009.03_orig/cpu/ixp/CVS/Root u-boot-2009.03/cpu/ixp/CVS/Root
--- u-boot-2009.03_orig/cpu/ixp/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/ixp/CVS/Root     2009-03-25 15:25:15.087471700 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/ixp/npe/CVS/Entries u-boot-2009.03/cpu/ixp/npe/CVS/Entries
--- u-boot-2009.03_orig/cpu/ixp/npe/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/ixp/npe/CVS/Entries      2009-03-25 15:57:54.871804000 -0700
@@ -0,0 +1,51 @@
+D/include////
+/IxEthAcc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthAccCommon.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthAccControlInterface.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthAccDataPlane.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthAccMac.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthAccMii.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthDBAPI.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthDBAPISupport.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthDBCore.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthDBEvents.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthDBFeatures.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthDBFirewall.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthDBHashtable.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthDBLearning.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthDBMem.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthDBNPEAdaptor.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthDBPortUpdate.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthDBReports.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthDBSearch.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthDBSpanningTree.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthDBUtil.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthDBVlan.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthDBWiFi.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthMii.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxFeatureCtrl.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxNpeDl.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxNpeDlImageMgr.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxNpeDlNpeMgr.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxNpeDlNpeMgrUtils.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxNpeMh.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxNpeMhConfig.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxNpeMhReceive.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxNpeMhSend.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxNpeMhSolicitedCbMgr.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxNpeMhUnsolicitedCbMgr.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsalBufferMgt.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsalIoMem.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsalOsCacheMMU.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsalOsMsgQ.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsalOsSemaphore.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsalOsServices.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsalOsThread.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxQMgrAqmIf.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxQMgrDispatcher.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxQMgrInit.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxQMgrQAccess.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxQMgrQCfg.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/miiphy.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/npe.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
diff -Naur u-boot-2009.03_orig/cpu/ixp/npe/CVS/Entries.Extra u-boot-2009.03/cpu/ixp/npe/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/ixp/npe/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/ixp/npe/CVS/Entries.Extra        2009-03-25 15:57:54.871804000 -0700
@@ -0,0 +1,51 @@
+D/include////
+/IxEthAcc.c///1238019720/
+/IxEthAccCommon.c///1238019720/
+/IxEthAccControlInterface.c///1238019720/
+/IxEthAccDataPlane.c///1238019720/
+/IxEthAccMac.c///1238019720/
+/IxEthAccMii.c///1238019720/
+/IxEthDBAPI.c///1238019720/
+/IxEthDBAPISupport.c///1238019720/
+/IxEthDBCore.c///1238019720/
+/IxEthDBEvents.c///1238019720/
+/IxEthDBFeatures.c///1238019720/
+/IxEthDBFirewall.c///1238019720/
+/IxEthDBHashtable.c///1238019720/
+/IxEthDBLearning.c///1238019720/
+/IxEthDBMem.c///1238019720/
+/IxEthDBNPEAdaptor.c///1238019720/
+/IxEthDBPortUpdate.c///1238019720/
+/IxEthDBReports.c///1238019720/
+/IxEthDBSearch.c///1238019720/
+/IxEthDBSpanningTree.c///1238019720/
+/IxEthDBUtil.c///1238019720/
+/IxEthDBVlan.c///1238019720/
+/IxEthDBWiFi.c///1238019720/
+/IxEthMii.c///1238019720/
+/IxFeatureCtrl.c///1238019720/
+/IxNpeDl.c///1238019720/
+/IxNpeDlImageMgr.c///1238019720/
+/IxNpeDlNpeMgr.c///1238019720/
+/IxNpeDlNpeMgrUtils.c///1238019720/
+/IxNpeMh.c///1238019720/
+/IxNpeMhConfig.c///1238019720/
+/IxNpeMhReceive.c///1238019720/
+/IxNpeMhSend.c///1238019720/
+/IxNpeMhSolicitedCbMgr.c///1238019720/
+/IxNpeMhUnsolicitedCbMgr.c///1238019720/
+/IxOsalBufferMgt.c///1238019720/
+/IxOsalIoMem.c///1238019720/
+/IxOsalOsCacheMMU.c///1238019720/
+/IxOsalOsMsgQ.c///1238019720/
+/IxOsalOsSemaphore.c///1238019720/
+/IxOsalOsServices.c///1238019720/
+/IxOsalOsThread.c///1238019720/
+/IxQMgrAqmIf.c///1238019720/
+/IxQMgrDispatcher.c///1238019720/
+/IxQMgrInit.c///1238019720/
+/IxQMgrQAccess.c///1238019720/
+/IxQMgrQCfg.c///1238019720/
+/Makefile///1238019720/
+/miiphy.c///1238019720/
+/npe.c///1238019720/
diff -Naur u-boot-2009.03_orig/cpu/ixp/npe/CVS/Entries.Extra.Old u-boot-2009.03/cpu/ixp/npe/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/ixp/npe/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/ixp/npe/CVS/Entries.Extra.Old    2009-03-25 15:25:17.000000000 -0700
@@ -0,0 +1,51 @@
+/IxEthAcc.c///1238019720/
+/IxEthAccCommon.c///1238019720/
+/IxEthAccControlInterface.c///1238019720/
+/IxEthAccDataPlane.c///1238019720/
+/IxEthAccMac.c///1238019720/
+/IxEthAccMii.c///1238019720/
+/IxEthDBAPI.c///1238019720/
+/IxEthDBAPISupport.c///1238019720/
+/IxEthDBCore.c///1238019720/
+/IxEthDBEvents.c///1238019720/
+/IxEthDBFeatures.c///1238019720/
+/IxEthDBFirewall.c///1238019720/
+/IxEthDBHashtable.c///1238019720/
+/IxEthDBLearning.c///1238019720/
+/IxEthDBMem.c///1238019720/
+/IxEthDBNPEAdaptor.c///1238019720/
+/IxEthDBPortUpdate.c///1238019720/
+/IxEthDBReports.c///1238019720/
+/IxEthDBSearch.c///1238019720/
+/IxEthDBSpanningTree.c///1238019720/
+/IxEthDBUtil.c///1238019720/
+/IxEthDBVlan.c///1238019720/
+/IxEthDBWiFi.c///1238019720/
+/IxEthMii.c///1238019720/
+/IxFeatureCtrl.c///1238019720/
+/IxNpeDl.c///1238019720/
+/IxNpeDlImageMgr.c///1238019720/
+/IxNpeDlNpeMgr.c///1238019720/
+/IxNpeDlNpeMgrUtils.c///1238019720/
+/IxNpeMh.c///1238019720/
+/IxNpeMhConfig.c///1238019720/
+/IxNpeMhReceive.c///1238019720/
+/IxNpeMhSend.c///1238019720/
+/IxNpeMhSolicitedCbMgr.c///1238019720/
+/IxNpeMhUnsolicitedCbMgr.c///1238019720/
+/IxOsalBufferMgt.c///1238019720/
+/IxOsalIoMem.c///1238019720/
+/IxOsalOsCacheMMU.c///1238019720/
+/IxOsalOsMsgQ.c///1238019720/
+/IxOsalOsSemaphore.c///1238019720/
+/IxOsalOsServices.c///1238019720/
+/IxOsalOsThread.c///1238019720/
+/IxQMgrAqmIf.c///1238019720/
+/IxQMgrDispatcher.c///1238019720/
+/IxQMgrInit.c///1238019720/
+/IxQMgrQAccess.c///1238019720/
+/IxQMgrQCfg.c///1238019720/
+/Makefile///1238019720/
+/miiphy.c///1238019720/
+/npe.c///1238019720/
+D/include////
diff -Naur u-boot-2009.03_orig/cpu/ixp/npe/CVS/Entries.Old u-boot-2009.03/cpu/ixp/npe/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/ixp/npe/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/ixp/npe/CVS/Entries.Old  2009-03-25 15:25:17.000000000 -0700
@@ -0,0 +1,51 @@
+/IxEthAcc.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/IxEthAccCommon.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/IxEthAccControlInterface.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/IxEthAccDataPlane.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/IxEthAccMac.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/IxEthAccMii.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/IxEthDBAPI.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/IxEthDBAPISupport.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/IxEthDBCore.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/IxEthDBEvents.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/IxEthDBFeatures.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/IxEthDBFirewall.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/IxEthDBHashtable.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/IxEthDBLearning.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/IxEthDBMem.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/IxEthDBNPEAdaptor.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/IxEthDBPortUpdate.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/IxEthDBReports.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/IxEthDBSearch.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/IxEthDBSpanningTree.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/IxEthDBUtil.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/IxEthDBVlan.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/IxEthDBWiFi.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/IxEthMii.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/IxFeatureCtrl.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/IxNpeDl.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/IxNpeDlImageMgr.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/IxNpeDlNpeMgr.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/IxNpeDlNpeMgrUtils.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/IxNpeMh.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/IxNpeMhConfig.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/IxNpeMhReceive.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/IxNpeMhSend.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/IxNpeMhSolicitedCbMgr.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/IxNpeMhUnsolicitedCbMgr.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/IxOsalBufferMgt.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/IxOsalIoMem.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/IxOsalOsCacheMMU.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/IxOsalOsMsgQ.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/IxOsalOsSemaphore.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/IxOsalOsServices.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/IxOsalOsThread.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/IxQMgrAqmIf.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/IxQMgrDispatcher.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/IxQMgrInit.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/IxQMgrQAccess.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/IxQMgrQCfg.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/Makefile/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/miiphy.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+/npe.c/1.1.1.1/Wed Mar 25 22:22:00 2009//
+D/include////
diff -Naur u-boot-2009.03_orig/cpu/ixp/npe/CVS/Repository u-boot-2009.03/cpu/ixp/npe/CVS/Repository
--- u-boot-2009.03_orig/cpu/ixp/npe/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/ixp/npe/CVS/Repository   2009-03-25 15:25:15.165596200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/ixp/npe
diff -Naur u-boot-2009.03_orig/cpu/ixp/npe/CVS/Root u-boot-2009.03/cpu/ixp/npe/CVS/Root
--- u-boot-2009.03_orig/cpu/ixp/npe/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/ixp/npe/CVS/Root 2009-03-25 15:25:15.165596200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/ixp/npe/include/CVS/Entries u-boot-2009.03/cpu/ixp/npe/include/CVS/Entries
--- u-boot-2009.03_orig/cpu/ixp/npe/include/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/ixp/npe/include/CVS/Entries      2009-03-31 14:51:31.958527200 -0700
@@ -0,0 +1,101 @@
+/IxAssert.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxAtmSch.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxAtmTypes.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxAtmdAcc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxAtmdAccCtrl.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxAtmm.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxDmaAcc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthAcc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthAccDataPlane_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthAccMac_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthAccMii_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthAccQueueAssign_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthAcc_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthDB.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthDBLocks_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthDBLog_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthDBMessages_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthDBPortDefs.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthDBQoS.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthDB_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthMii.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthMii_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthNpe.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxFeatureCtrl.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxHssAcc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxNpeA.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxNpeDl.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxNpeDlImageMgr_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxNpeDlMacros_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxNpeDlNpeMgrEcRegisters_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxNpeDlNpeMgrUtils_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxNpeDlNpeMgr_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxNpeMh.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxNpeMhConfig_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxNpeMhMacros_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxNpeMhReceive_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxNpeMhSend_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxNpeMhSolicitedCbMgr_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxNpeMhUnsolicitedCbMgr_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxNpeMicrocode.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsBufLib.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsBuffMgt.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsBuffPoolMgt.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsCacheMMU.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsPrintf.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsServices.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsServicesComponents.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsServicesEndianess.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsServicesMemAccess.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsServicesMemMap.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsal.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsalAssert.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsalBackward.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsalBackwardAssert.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsalBackwardBufferMgt.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsalBackwardCacheMMU.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsalBackwardMemMap.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsalBackwardOsServices.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsalBackwardOssl.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsalBufferMgt.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsalBufferMgtDefault.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsalConfig.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsalEndianess.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsalIoMem.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsalOem.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsalOs.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsalOsAssert.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsalOsBufferMgt.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsalOsIxp400.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsalOsIxp400CustomizedMapping.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsalOsTypes.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsalOsUtilitySymbols.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsalTypes.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsalUtilitySymbols.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxParityENAcc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxPerfProfAcc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxQMgr.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxQMgrAqmIf_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxQMgrDefines_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxQMgrDispatcher_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxQMgrLog_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxQMgrQAccess_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxQMgrQCfg_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxQueueAssignments.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxTimeSyncAcc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxTimerCtrl.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxTypes.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxUART.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxVersionId.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ix_error.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ix_macros.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ix_os_type.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ix_ossl.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ix_symbols.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ix_types.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/npe.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/os_datatypes.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxI2cDrv.h/1.1.1.1/Tue Mar 31 21:51:11 2009//T1.1.1.1
+/IxOsalMemAccess.h/1.1.1.1/Tue Mar 31 21:51:21 2009//T1.1.1.1
+/IxSspAcc.h/1.1.1.1/Tue Mar 31 21:51:31 2009//T1.1.1.1
+D
diff -Naur u-boot-2009.03_orig/cpu/ixp/npe/include/CVS/Entries.Extra u-boot-2009.03/cpu/ixp/npe/include/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/ixp/npe/include/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/ixp/npe/include/CVS/Entries.Extra        2009-03-31 14:51:31.958527200 -0700
@@ -0,0 +1,100 @@
+/IxAssert.h///1238019720/
+/IxAtmSch.h///1238019720/
+/IxAtmTypes.h///1238019720/
+/IxAtmdAcc.h///1238019720/
+/IxAtmdAccCtrl.h///1238019720/
+/IxAtmm.h///1238019720/
+/IxDmaAcc.h///1238019720/
+/IxEthAcc.h///1238019720/
+/IxEthAccDataPlane_p.h///1238019720/
+/IxEthAccMac_p.h///1238019720/
+/IxEthAccMii_p.h///1238019720/
+/IxEthAccQueueAssign_p.h///1238019720/
+/IxEthAcc_p.h///1238019720/
+/IxEthDB.h///1238019720/
+/IxEthDBLocks_p.h///1238019720/
+/IxEthDBLog_p.h///1238019720/
+/IxEthDBMessages_p.h///1238019720/
+/IxEthDBPortDefs.h///1238019720/
+/IxEthDBQoS.h///1238019720/
+/IxEthDB_p.h///1238019720/
+/IxEthMii.h///1238019720/
+/IxEthMii_p.h///1238019720/
+/IxEthNpe.h///1238019720/
+/IxFeatureCtrl.h///1238019720/
+/IxHssAcc.h///1238019720/
+/IxNpeA.h///1238019720/
+/IxNpeDl.h///1238019720/
+/IxNpeDlImageMgr_p.h///1238019720/
+/IxNpeDlMacros_p.h///1238019720/
+/IxNpeDlNpeMgrEcRegisters_p.h///1238019720/
+/IxNpeDlNpeMgrUtils_p.h///1238019720/
+/IxNpeDlNpeMgr_p.h///1238019720/
+/IxNpeMh.h///1238019720/
+/IxNpeMhConfig_p.h///1238019720/
+/IxNpeMhMacros_p.h///1238019720/
+/IxNpeMhReceive_p.h///1238019720/
+/IxNpeMhSend_p.h///1238019720/
+/IxNpeMhSolicitedCbMgr_p.h///1238019720/
+/IxNpeMhUnsolicitedCbMgr_p.h///1238019720/
+/IxNpeMicrocode.h///1238019720/
+/IxOsBufLib.h///1238019721/
+/IxOsBuffMgt.h///1238019721/
+/IxOsBuffPoolMgt.h///1238019721/
+/IxOsCacheMMU.h///1238019721/
+/IxOsPrintf.h///1238019721/
+/IxOsServices.h///1238019721/
+/IxOsServicesComponents.h///1238019721/
+/IxOsServicesEndianess.h///1238019721/
+/IxOsServicesMemAccess.h///1238019721/
+/IxOsServicesMemMap.h///1238019721/
+/IxOsal.h///1238019720/
+/IxOsalAssert.h///1238019720/
+/IxOsalBackward.h///1238019720/
+/IxOsalBackwardAssert.h///1238019720/
+/IxOsalBackwardBufferMgt.h///1238019720/
+/IxOsalBackwardCacheMMU.h///1238019720/
+/IxOsalBackwardMemMap.h///1238019720/
+/IxOsalBackwardOsServices.h///1238019721/
+/IxOsalBackwardOssl.h///1238019721/
+/IxOsalBufferMgt.h///1238019721/
+/IxOsalBufferMgtDefault.h///1238019721/
+/IxOsalConfig.h///1238019721/
+/IxOsalEndianess.h///1238019721/
+/IxOsalIoMem.h///1238019721/
+/IxOsalOem.h///1238019721/
+/IxOsalOs.h///1238019721/
+/IxOsalOsAssert.h///1238019721/
+/IxOsalOsBufferMgt.h///1238019721/
+/IxOsalOsIxp400.h///1238019721/
+/IxOsalOsIxp400CustomizedMapping.h///1238019721/
+/IxOsalOsTypes.h///1238019721/
+/IxOsalOsUtilitySymbols.h///1238019721/
+/IxOsalTypes.h///1238019721/
+/IxOsalUtilitySymbols.h///1238019721/
+/IxParityENAcc.h///1238019721/
+/IxPerfProfAcc.h///1238019721/
+/IxQMgr.h///1238019721/
+/IxQMgrAqmIf_p.h///1238019721/
+/IxQMgrDefines_p.h///1238019721/
+/IxQMgrDispatcher_p.h///1238019721/
+/IxQMgrLog_p.h///1238019721/
+/IxQMgrQAccess_p.h///1238019721/
+/IxQMgrQCfg_p.h///1238019721/
+/IxQueueAssignments.h///1238019721/
+/IxTimeSyncAcc.h///1238019721/
+/IxTimerCtrl.h///1238019721/
+/IxTypes.h///1238019721/
+/IxUART.h///1238019721/
+/IxVersionId.h///1238019721/
+/ix_error.h///1238019721/
+/ix_macros.h///1238019721/
+/ix_os_type.h///1238019721/
+/ix_ossl.h///1238019721/
+/ix_symbols.h///1238019721/
+/ix_types.h///1238019721/
+/npe.h///1238019721/
+/os_datatypes.h///1238019721/
+/IxI2cDrv.h///1238019720/
+/IxOsalMemAccess.h///1238019721/
+/IxSspAcc.h///1238019721/
diff -Naur u-boot-2009.03_orig/cpu/ixp/npe/include/CVS/Entries.Extra.Old u-boot-2009.03/cpu/ixp/npe/include/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/ixp/npe/include/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/ixp/npe/include/CVS/Entries.Extra.Old    2009-03-31 14:51:21.000000000 -0700
@@ -0,0 +1,100 @@
+/IxAssert.h///1238019720/
+/IxAtmSch.h///1238019720/
+/IxAtmTypes.h///1238019720/
+/IxAtmdAcc.h///1238019720/
+/IxAtmdAccCtrl.h///1238019720/
+/IxAtmm.h///1238019720/
+/IxDmaAcc.h///1238019720/
+/IxEthAcc.h///1238019720/
+/IxEthAccDataPlane_p.h///1238019720/
+/IxEthAccMac_p.h///1238019720/
+/IxEthAccMii_p.h///1238019720/
+/IxEthAccQueueAssign_p.h///1238019720/
+/IxEthAcc_p.h///1238019720/
+/IxEthDB.h///1238019720/
+/IxEthDBLocks_p.h///1238019720/
+/IxEthDBLog_p.h///1238019720/
+/IxEthDBMessages_p.h///1238019720/
+/IxEthDBPortDefs.h///1238019720/
+/IxEthDBQoS.h///1238019720/
+/IxEthDB_p.h///1238019720/
+/IxEthMii.h///1238019720/
+/IxEthMii_p.h///1238019720/
+/IxEthNpe.h///1238019720/
+/IxFeatureCtrl.h///1238019720/
+/IxHssAcc.h///1238019720/
+/IxNpeA.h///1238019720/
+/IxNpeDl.h///1238019720/
+/IxNpeDlImageMgr_p.h///1238019720/
+/IxNpeDlMacros_p.h///1238019720/
+/IxNpeDlNpeMgrEcRegisters_p.h///1238019720/
+/IxNpeDlNpeMgrUtils_p.h///1238019720/
+/IxNpeDlNpeMgr_p.h///1238019720/
+/IxNpeMh.h///1238019720/
+/IxNpeMhConfig_p.h///1238019720/
+/IxNpeMhMacros_p.h///1238019720/
+/IxNpeMhReceive_p.h///1238019720/
+/IxNpeMhSend_p.h///1238019720/
+/IxNpeMhSolicitedCbMgr_p.h///1238019720/
+/IxNpeMhUnsolicitedCbMgr_p.h///1238019720/
+/IxNpeMicrocode.h///1238019720/
+/IxOsBufLib.h///1238019721/
+/IxOsBuffMgt.h///1238019721/
+/IxOsBuffPoolMgt.h///1238019721/
+/IxOsCacheMMU.h///1238019721/
+/IxOsPrintf.h///1238019721/
+/IxOsServices.h///1238019721/
+/IxOsServicesComponents.h///1238019721/
+/IxOsServicesEndianess.h///1238019721/
+/IxOsServicesMemAccess.h///1238019721/
+/IxOsServicesMemMap.h///1238019721/
+/IxOsal.h///1238019720/
+/IxOsalAssert.h///1238019720/
+/IxOsalBackward.h///1238019720/
+/IxOsalBackwardAssert.h///1238019720/
+/IxOsalBackwardBufferMgt.h///1238019720/
+/IxOsalBackwardCacheMMU.h///1238019720/
+/IxOsalBackwardMemMap.h///1238019720/
+/IxOsalBackwardOsServices.h///1238019721/
+/IxOsalBackwardOssl.h///1238019721/
+/IxOsalBufferMgt.h///1238019721/
+/IxOsalBufferMgtDefault.h///1238019721/
+/IxOsalConfig.h///1238019721/
+/IxOsalEndianess.h///1238019721/
+/IxOsalIoMem.h///1238019721/
+/IxOsalOem.h///1238019721/
+/IxOsalOs.h///1238019721/
+/IxOsalOsAssert.h///1238019721/
+/IxOsalOsBufferMgt.h///1238019721/
+/IxOsalOsIxp400.h///1238019721/
+/IxOsalOsIxp400CustomizedMapping.h///1238019721/
+/IxOsalOsTypes.h///1238019721/
+/IxOsalOsUtilitySymbols.h///1238019721/
+/IxOsalTypes.h///1238019721/
+/IxOsalUtilitySymbols.h///1238019721/
+/IxParityENAcc.h///1238019721/
+/IxPerfProfAcc.h///1238019721/
+/IxQMgr.h///1238019721/
+/IxQMgrAqmIf_p.h///1238019721/
+/IxQMgrDefines_p.h///1238019721/
+/IxQMgrDispatcher_p.h///1238019721/
+/IxQMgrLog_p.h///1238019721/
+/IxQMgrQAccess_p.h///1238019721/
+/IxQMgrQCfg_p.h///1238019721/
+/IxQueueAssignments.h///1238019721/
+/IxTimeSyncAcc.h///1238019721/
+/IxTimerCtrl.h///1238019721/
+/IxTypes.h///1238019721/
+/IxUART.h///1238019721/
+/IxVersionId.h///1238019721/
+/ix_error.h///1238019721/
+/ix_macros.h///1238019721/
+/ix_os_type.h///1238019721/
+/ix_ossl.h///1238019721/
+/ix_symbols.h///1238019721/
+/ix_types.h///1238019721/
+/npe.h///1238019721/
+/os_datatypes.h///1238019721/
+/IxSspAcc.h///1238028702/
+/IxI2cDrv.h///1238019720/
+/IxOsalMemAccess.h///1238019721/
diff -Naur u-boot-2009.03_orig/cpu/ixp/npe/include/CVS/Entries.Old u-boot-2009.03/cpu/ixp/npe/include/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/ixp/npe/include/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/ixp/npe/include/CVS/Entries.Old  2009-03-31 14:51:21.000000000 -0700
@@ -0,0 +1,101 @@
+/IxAssert.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxAtmSch.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxAtmTypes.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxAtmdAcc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxAtmdAccCtrl.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxAtmm.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxDmaAcc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthAcc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthAccDataPlane_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthAccMac_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthAccMii_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthAccQueueAssign_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthAcc_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthDB.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthDBLocks_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthDBLog_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthDBMessages_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthDBPortDefs.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthDBQoS.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthDB_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthMii.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthMii_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxEthNpe.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxFeatureCtrl.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxHssAcc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxNpeA.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxNpeDl.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxNpeDlImageMgr_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxNpeDlMacros_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxNpeDlNpeMgrEcRegisters_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxNpeDlNpeMgrUtils_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxNpeDlNpeMgr_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxNpeMh.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxNpeMhConfig_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxNpeMhMacros_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxNpeMhReceive_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxNpeMhSend_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxNpeMhSolicitedCbMgr_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxNpeMhUnsolicitedCbMgr_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxNpeMicrocode.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsBufLib.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsBuffMgt.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsBuffPoolMgt.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsCacheMMU.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsPrintf.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsServices.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsServicesComponents.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsServicesEndianess.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsServicesMemAccess.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsServicesMemMap.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsal.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsalAssert.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsalBackward.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsalBackwardAssert.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsalBackwardBufferMgt.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsalBackwardCacheMMU.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsalBackwardMemMap.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsalBackwardOsServices.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsalBackwardOssl.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsalBufferMgt.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsalBufferMgtDefault.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsalConfig.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsalEndianess.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsalIoMem.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsalOem.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsalOs.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsalOsAssert.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsalOsBufferMgt.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsalOsIxp400.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsalOsIxp400CustomizedMapping.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsalOsTypes.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsalOsUtilitySymbols.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsalTypes.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxOsalUtilitySymbols.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxParityENAcc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxPerfProfAcc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxQMgr.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxQMgrAqmIf_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxQMgrDefines_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxQMgrDispatcher_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxQMgrLog_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxQMgrQAccess_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxQMgrQCfg_p.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxQueueAssignments.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxTimeSyncAcc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxTimerCtrl.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxTypes.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxUART.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxVersionId.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ix_error.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ix_macros.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ix_os_type.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ix_ossl.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ix_symbols.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ix_types.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/npe.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/os_datatypes.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IxSspAcc.h/1.2/Thu Mar 26 00:51:42 2009//
+/IxI2cDrv.h/1.1.1.1/Tue Mar 31 21:51:11 2009//T1.1.1.1
+/IxOsalMemAccess.h/1.1.1.1/Tue Mar 31 21:51:21 2009//T1.1.1.1
+D
diff -Naur u-boot-2009.03_orig/cpu/ixp/npe/include/CVS/Repository u-boot-2009.03/cpu/ixp/npe/include/CVS/Repository
--- u-boot-2009.03_orig/cpu/ixp/npe/include/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/ixp/npe/include/CVS/Repository   2009-03-25 15:25:15.837466900 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/ixp/npe/include
diff -Naur u-boot-2009.03_orig/cpu/ixp/npe/include/CVS/Root u-boot-2009.03/cpu/ixp/npe/include/CVS/Root
--- u-boot-2009.03_orig/cpu/ixp/npe/include/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/ixp/npe/include/CVS/Root 2009-03-25 15:25:15.837466900 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/ixp/npe/include/IxI2cDrv.h u-boot-2009.03/cpu/ixp/npe/include/IxI2cDrv.h
--- u-boot-2009.03_orig/cpu/ixp/npe/include/IxI2cDrv.h  2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/cpu/ixp/npe/include/IxI2cDrv.h       2009-03-31 14:51:11.099419200 -0700
@@ -1,867 +1,867 @@
-/**
- * @file IxI2cDrv.h
- *
- * @brief  Header file for the IXP400 I2C Driver (IxI2cDrv)
- *
- * @version $Revision: 0.1 $
- * 
- * @par
- * IXP400 SW Release version 2.0
- * 
- * -- Copyright Notice --
- * 
- * @par
- * Copyright 2001-2005, Intel Corporation.
- * All rights reserved.
- * 
- * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
- * @par
- * -- End of Copyright Notice --
- */
-
-/**
- * @defgroup IxI2cDrv IXP400 I2C Driver(IxI2cDrv) API 
- *
- * @brief IXP400 I2C Driver Public API
- *
- * @{
- */
-#ifndef IXI2CDRV_H
-#define IXI2CDRV_H
-
-#ifdef __ixp46X
-#include "IxOsal.h"
-
-/*
- * Section for #define
- */
-
-/**
- * @ingroup IxI2cDrv
- * @brief The interval of micro/mili seconds the IXP will wait before it polls for
- *                     status from the ixI2cIntrXferStatus; Every 20us is 1 byte @
- *                     400Kbps and 4 bytes     @ 100Kbps. This is dependent on delay type selected
- *          through the API ixI2cDrvDelayTypeSelect.
- */
-#define IX_I2C_US_POLL_FOR_XFER_STATUS 20
-
-/**
- * @ingroup IxI2cDrv
- * @brief The number of tries that will be attempted to call a callback
- *          function if the callback does not or is unable to resolve the
- *          issue it is called to resolve
- */
-#define IX_I2C_NUM_OF_TRIES_TO_CALL_CALLBACK_FUNC      10
-
-
-/**
- * @ingroup IxI2cDrv
- * @brief Number of tries slave will poll the IDBR Rx full bit before it
- *                     gives up
- */
-#define IX_I2C_NUM_TO_POLL_IDBR_RX_FULL 0x100
-
-/**
- * @ingroup IxI2cDrv
- * @brief Number of tries slave will poll the IDBR Tx empty bit before it
- *                     gives up
- */
-#define IX_I2C_NUM_TO_POLL_IDBR_TX_EMPTY 0x100
-
-/*
- * Section for enum
- */
-
-/**
- * @ingroup IxI2cDrv
- * 
- * @enum IxI2cMasterStatus
- *
- * @brief The master status - transfer complete, bus error or arbitration loss
- */
-typedef enum
-{
-    IX_I2C_MASTER_XFER_COMPLETE = IX_SUCCESS,
-       IX_I2C_MASTER_XFER_BUS_ERROR,
-       IX_I2C_MASTER_XFER_ARB_LOSS
-} IxI2cMasterStatus;
-
-
-/**
- * @ingroup IxI2cDrv
- * 
- * @enum IX_I2C_STATUS
- *
- * @brief The status that can be returned in a I2C driver initialization
- */
-typedef enum
-{
-       IX_I2C_SUCCESS = IX_SUCCESS, /**< Success status */
-       IX_I2C_FAIL, /**< Fail status */
-       IX_I2C_NOT_SUPPORTED, /**< hardware does not have dedicated I2C hardware */
-       IX_I2C_NULL_POINTER, /**< parameter passed in is NULL */
-       IX_I2C_INVALID_SPEED_MODE_ENUM_VALUE, /**< speed mode selected is invalid */
-       IX_I2C_INVALID_FLOW_MODE_ENUM_VALUE, /**< flow mode selected is invalid */
-       IX_I2C_SLAVE_ADDR_CB_MISSING, /**< slave callback is NULL */
-       IX_I2C_GEN_CALL_CB_MISSING, /**< general callback is NULL */
-       IX_I2C_INVALID_SLAVE_ADDR, /**< invalid slave address specified */
-       IX_I2C_INT_BIND_FAIL, /**< interrupt bind fail */
-       IX_I2C_INT_UNBIND_FAIL, /**< interrupt unbind fail */
-       IX_I2C_NOT_INIT, /**< I2C is not initialized yet */
-       IX_I2C_MASTER_BUS_BUSY, /**< master detected a I2C bus busy */
-       IX_I2C_MASTER_ARB_LOSS, /**< master experienced arbitration loss */
-       IX_I2C_MASTER_XFER_ERROR, /**< master experienced a transfer error */
-       IX_I2C_MASTER_BUS_ERROR, /**< master detected a I2C bus error */
-       IX_I2C_MASTER_NO_BUFFER, /**< no buffer provided for master transfer */
-       IX_I2C_MASTER_INVALID_XFER_MODE, /**< xfer mode selected is invalid */
-       IX_I2C_SLAVE_ADDR_NOT_DETECTED, /**< polled slave addr not detected */
-       IX_I2C_GEN_CALL_ADDR_DETECTED, /**< polling detected general call */
-       IX_I2C_SLAVE_READ_DETECTED, /**< polling detected slave read request */
-       IX_I2C_SLAVE_WRITE_DETECTED, /**< polling detected slave write request */
-       IX_I2C_SLAVE_NO_BUFFER, /**< no buffer provided for slave transfers */
-       IX_I2C_DATA_SIZE_ZERO, /**< data size transfer is zero - invalid */
-       IX_I2C_SLAVE_WRITE_BUFFER_EMPTY, /**< slave buffer is used till empty */
-       IX_I2C_SLAVE_WRITE_ERROR, /**< slave write experienced an error */
-       IX_I2C_SLAVE_OR_GEN_READ_BUFFER_FULL, /**< slave buffer is filled up */
-       IX_I2C_SLAVE_OR_GEN_READ_ERROR /**< slave read experienced an error */
-} IX_I2C_STATUS;
-
-/**
- * @ingroup IxI2cDrv
- * 
- * @enum IxI2cSpeedMode
- *
- * @brief Type of speed modes supported by the I2C hardware.
- */
-typedef enum
-{
-    IX_I2C_NORMAL_MODE = 0x0,
-    IX_I2C_FAST_MODE
-} IxI2cSpeedMode;
-
-/**
- * @ingroup IxI2cDrv
- * 
- * @enum IxI2cXferMode
- *
- * @brief Used for indicating it is a repeated start or normal transfer
- */
-typedef enum
-{
-    IX_I2C_NORMAL = 0x0,
-    IX_I2C_REPEATED_START
-} IxI2cXferMode;
-
-/**
- * @ingroup IxI2cDrv
- * 
- * @enum IxI2cFlowMode
- *
- * @brief Used for indicating it is a poll or interrupt mode
- */
-typedef enum
-{
-    IX_I2C_POLL_MODE = 0x0,
-    IX_I2C_INTERRUPT_MODE
-} IxI2cFlowMode;
-
-/**
- * @ingroup IxI2cDrv
- * 
- * @enum IxI2cDelayMode
- *
- * @brief Used for selecting looping delay or OS scheduler delay
- */
-typedef enum
-{
-    IX_I2C_LOOP_DELAY = 1,  /**< delay in microseconds */
-    IX_I2C_SCHED_DELAY      /**< delay in miliseconds */
-} IxI2cDelayMode;
-
-/**
- * @ingroup IxI2cDrv
- * 
- * @brief The pointer to the function that will be called when the master
- *                     has completed its receive. The parameter that is passed will
- *                     provide the status of the read (success, arb loss, or bus
- *                     error), the transfer mode (normal or repeated start, the
- *                     buffer pointer and number of bytes transferred.
- */
-typedef void (*IxI2cMasterReadCallbackP)(IxI2cMasterStatus, IxI2cXferMode, char*, UINT32);
-
-/**
- * @ingroup IxI2cDrv
- * 
- * @brief The pointer to the function that will        be called when the master
- *                     has completed its transmit. The parameter that is passed will
- *                     provide the status of the write (success, arb loss, or buss
- *                     error), the transfer mode (normal or repeated start), the
- *                     buffer pointer and number of bytes transferred.
- */
-typedef void (*IxI2cMasterWriteCallbackP)(IxI2cMasterStatus, IxI2cXferMode, char*, UINT32);
-
-/**
- * @ingroup IxI2cDrv
- * 
- * @brief The pointer to the function that will be called when a slave
- *                     address detected in interrupt mode for a read. The parameters
- *                     that is passed will provide the read status, buffer pointer,
- *                     buffer size, and the bytes received. When a start of a read
- *                     is initiated there will be no buffer allocated and this callback
- *                     will be called to request for a buffer. While receiving, if the
- *                     buffer gets filled, this callback will be called to request for
- *                     a new buffer while sending the filled buffer's pointer and size,
- *                     and data size received. When the receive is complete, this
- *                     callback will be called to process the data and free the memory
- *                     by passing the buffer's pointer and size, and data size received.
- */
-typedef void (*IxI2cSlaveReadCallbackP)(IX_I2C_STATUS, char*, UINT32, UINT32);
-
-/**
- * @ingroup IxI2cDrv
- * 
- * @brief The pointer to the function that will be called when a slave
- *                     address detected in interrupt mode for a write. The parameters
- *                     that is passed will provide the write status, buffer pointer,
- *                     buffer size, and the bytes received. When a start of a write is
- *                     initiated there will be no buffer allocated and this callback
- *                     will be called to request for a buffer and to fill it with data.
- *                     While transmitting, if the data in the buffer empties, this
- *                     callback will be called to request for more data to be filled in
- *                     the same or new buffer. When the transmit is complete, this
- *                     callback will be called to free the memory or other actions to
- *                     be taken.
- */
-typedef void (*IxI2cSlaveWriteCallbackP)(IX_I2C_STATUS, char*, UINT32, UINT32);
-
-/**
- * @ingroup IxI2cDrv
- * 
- * @brief The pointer to the function that will be called when a general
- *                     call detected in interrupt mode for a read. The parameters that
- *                     is passed will provide the read status, buffer pointer, buffer
- *                     size, and the bytes received. When a start of a read is
- *                     initiated there will be no buffer allocated and this callback
- *                     will be called to request for a buffer. While receiving, if the
- *                     buffer gets filled, this callback will be called to request for
- *                     a new buffer while sending the filled buffer's pointer and size,
- *                     and data size received. When the receive is complete, this
- *                     callback will be called to process the data and free the memory
- *                     by passing the buffer's pointer and size, and data size received.
- */
-typedef void (*IxI2cGenCallCallbackP)(IX_I2C_STATUS, char*, UINT32, UINT32);
-
-/*
- * Section for struct
- */
-
-/**
- * @brief contains all the variables required to initialize the I2C unit
- * 
- * Structure to be filled and used for calling initialization
- */
-typedef struct
-{
-       IxI2cSpeedMode I2cSpeedSelect;  /**<Select either normal (100kbps)
-                                                                       or fast mode (400kbps)*/
-       IxI2cFlowMode I2cFlowSelect;    /**<Select interrupt or poll mode*/     
-       IxI2cMasterReadCallbackP MasterReadCBP;
-                                                                       /**<The master read callback pointer */
-       IxI2cMasterWriteCallbackP MasterWriteCBP;
-                                                                       /**<The master write callback pointer */
-       IxI2cSlaveReadCallbackP SlaveReadCBP;
-                                                                       /**<The slave read callback pointer */
-       IxI2cSlaveWriteCallbackP SlaveWriteCBP;
-                                                                       /**<The slave write callback pointer */
-       IxI2cGenCallCallbackP GenCallCBP;
-                                                                       /**<The general call callback pointer */
-       BOOL I2cGenCallResponseEnable;  /**<Enable/disable the unit to
-                                                                       respond to generall calls.*/
-       BOOL I2cSlaveAddrResponseEnable;/**<Enable/disable the unit to
-                                                                       respond to the slave address set in
-                                                                       ISAR*/
-       BOOL SCLEnable;                                 /**<Enable/disable the unit from
-                                                                       driving the SCL line during master
-                                                                       mode operation*/
-       UINT8 I2cHWAddr;                                /**<The address the unit will
-                                                                       response to as a slave device*/
-} IxI2cInitVars;
-
-/**
- * @brief contains results of counters and their overflow
- * 
- * Structure contains all values of counters and associated overflows.
- */
-typedef struct
-{
-       UINT32 ixI2cMasterXmitCounter;                  /**<Total bytes transmitted as
-                                                                                       master.*/
-       UINT32 ixI2cMasterFailedXmitCounter;    /**<Total bytes failed for
-                                                                                       transmission as master.*/
-       UINT32 ixI2cMasterRcvCounter;                   /**<Total bytes received as
-                                                                                       master.*/
-       UINT32 ixI2cMasterFailedRcvCounter;             /**<Total bytes failed for
-                                                                                       receival as master.*/
-       UINT32 ixI2cSlaveXmitCounter;                   /**<Total bytes transmitted as
-                                                                                       slave.*/
-       UINT32 ixI2cSlaveFailedXmitCounter;             /**<Total bytes failed for
-                                                                                       transmission as slave.*/
-       UINT32 ixI2cSlaveRcvCounter;                    /**<Total bytes received as
-                                                                                       slave.*/
-       UINT32 ixI2cSlaveFailedRcvCounter;              /**<Total bytes failed for
-                                                                                       receival as slave.*/
-       UINT32 ixI2cGenAddrCallSucceedCounter;  /**<Total bytes successfully
-                                                                                       transmitted for general address.*/
-       UINT32 ixI2cGenAddrCallFailedCounter;   /**<Total bytes failed transmission
-                                                                                       for general address.*/
-       UINT32 ixI2cArbLossCounter;                             /**<Total instances of arbitration
-                                                                                       loss has occured.*/
-} IxI2cStatsCounters;
-
-
-/*
- * Section for prototypes interface functions
- */
-
-/**
- * @ingroup IxI2cDrv
- * 
- * @fn ixI2cDrvInit(
-       IxI2cInitVars *InitVarsSelected)
- *
- * @brief Initializes the I2C Driver.
- *
- * @param "IxI2cInitVars [in] *InitVarsSelected" - struct containing required
- *                     variables for initialization 
- *
- * Global Data :
- *             - None.
- *
- * This API will check if the hardware supports this I2C driver and the validity
- * of the parameters passed in. It will continue to process the parameters
- * passed in by setting the speed of the I2C unit (100kbps or 400kbps), setting
- * the flow to either interrupt or poll mode, setting the address of the I2C unit,
- * enabling/disabling the respond to General Calls, enabling/disabling the respond
- * to Slave Address and SCL line driving. If it is interrupt mode, then it will
- * register the callback routines for master, slavetransfer and general call receive.
- *
- * @return 
- *      - IX_I2C_SUCCESS - Successfully initialize and enable the I2C
- *                                                     hardware.
- *             - IX_I2C_NOT_SUPPORTED - The hardware does not support or have a
- *                              dedicated I2C unit to support this driver
- *             - IX_I2C_NULL_POINTER - The parameter passed in is a NULL pointed
- *             - IX_I2C_INVALID_SPEED_MODE_ENUM_VALUE - The speed mode selected in the
- *                                                                                             InitVarsSelected is invalid
- *             - IX_I2C_INVALID_FLOW_MODE_ENUM_VALUE - The flow mode selected in the
- *                                                                                             InitVarsSelected is invalid
- *             - IX_I2C_INVALID_SLAVE_ADDR - The address 0x0 is reserved for
- *                                                                             general call.
- *             - IX_I2C_SLAVE_ADDR_CB_MISSING - interrupt mode is selected but
- *                                                                             slave address callback pointer is NULL
- *             - IX_I2C_GEN_CALL_CB_MISSING - interrupt mode is selected but
- *                                                                             general call callback pointer is NULL
- *             - IX_I2C_INT_BIND_FAIL - The ISR for the I2C failed to bind
- *             - IX_I2C_INT_UNBIND_FAIL - The ISR for the I2C failed to unbind
- *
- * @li   Reentrant    : yes
- * @li   ISR Callable : yes
- *
- */
-PUBLIC IX_I2C_STATUS
-ixI2cDrvInit(IxI2cInitVars *InitVarsSelected);
-
-/**
- * @ingroup IxI2cDrv
- * 
- * @fn ixI2cDrvUninit(
-       void)
- *
- * @brief Disables the I2C hardware
- *
- * @param - None
- *
- * Global Data :
- *             - None.
- *                        
- * This API will disable the I2C hardware, unbind interrupt, and unmap memory.
- *
- * @return 
- *      - IX_I2C_SUCCESS - successfully un-initialized I2C
- *             - IX_I2C_INT_UNBIND_FAIL - failed to unbind the I2C interrupt
- *             - IX_I2C_NOT_INIT - I2C not init yet.
- *              
- * @li   Reentrant    : yes
- * @li   ISR Callable : yes
- *
- */
-PUBLIC IX_I2C_STATUS
-ixI2cDrvUninit(void);
-
-/**
- * @ingroup IxI2cDrv
- * 
- * @fn ixI2cDrvSlaveAddrSet(
-       UINT8 SlaveAddrSet)
- *
- * @brief Sets the I2C Slave Address
- *
- * @param "UINT8 [in] SlaveAddrSet" - Slave Address to be inserted into ISAR
- *
- * Global Data :
- *             - None.
- *                        
- * This API will insert the SlaveAddrSet into the ISAR.
- *
- * @return 
- *      - IX_I2C_SUCCESS - successfuly set the slave addr
- *             - IX_I2C_INVALID_SLAVE_ADDR - invalid slave address (zero) specified
- *             - IX_I2C_NOT_INIT - I2C not init yet.
- *              
- * @li   Reentrant    : yes
- * @li   ISR Callable : yes
- *
- */
-PUBLIC IX_I2C_STATUS
-ixI2cDrvSlaveAddrSet(UINT8 SlaveAddrSet);
-
-/**
- * @ingroup IxI2cDrv
- * 
- * @fn ixI2cDrvBusScan(
-       void)
- *
- * @brief scans the I2C bus for slave devices
- *
- * @param - None
- *
- * Global Data :
- *             - None.
- *                        
- * This API will prompt all slave addresses for a reply except its own
- *
- * @return 
- *      - IX_I2C_SUCCESS - found at least one slave device
- *             - IX_I2C_FAIL - Fail to find even one slave device
- *             - IX_I2C_BUS_BUSY - The I2C bus is busy (held by another I2C master)
- *             - IX_I2C_ARB_LOSS - The I2C bus was loss to another I2C master
- *             - IX_I2C_NOT_INIT - I2C not init yet.
- *              
- * @li   Reentrant    : yes
- * @li   ISR Callable : yes
- *
- */
-PUBLIC IX_I2C_STATUS
-ixI2cDrvBusScan(void);
-
-/**
- * @ingroup IxI2cDrv
- * 
- * @fn ixI2cDrvWriteTransfer(
-       UINT8 SlaveAddr,
-       char *bufP,
-       UINT32 dataSize,
-       IxI2cXferMode XferModeSelect)
- *
- * @param "UINT8 [in] SlaveAddr" - The slave address to request data from.
- * @param "char [in] *bufP" - The pointer to the data to be transmitted.
- * @param "UINT32 [in] dataSize" - The number of bytes requested.
- * @param "IxI2cXferMode [in] XferModeSelect" - the transfer mode selected,
- *                     either repeated start (ends w/o stop) or normal (start and stop)
- *
- * Global Data :
- *             - None.
- *                        
- * This API will try to obtain master control of the I2C bus and transmit the
- * number of bytes, specified by dataSize, to the user specified slave
- * address from the buffer pointer. It will use either interrupt or poll mode
- * depending on the method selected. 
- *
- * If in interrupt mode and IxI2cMasterWriteCallbackP is not NULL, the driver
- * will initiate the transfer and return immediately. The function pointed to
- * by IxI2cMasterWriteCallbackP will be called in the interrupt service
- * handlers when the operation is complete.
- *
- * If in interrupt mode and IxI2cMasterWriteCallbackP is NULL, then the driver
- * will wait for the operation to complete, and then return.
- *
- * And if the repeated start transfer mode is selected, then it will not send a
- * stop signal at the end of all the transfers.
- * *NOTE*: If repeated start transfer mode is selected, it has to end with a
- *                     normal mode transfer mode else the bus will continue to be held
- *                     by the IXP.
- *
- * @return 
- *      - IX_I2C_SUCCESS - Successfuuly wrote data to slave.
- *             - IX_I2C_MASTER_BUS_BUSY - The I2C bus is busy (held by another I2C master)
- *             - IX_I2C_MASTER_ARB_LOSS - The I2C bus was loss to another I2C master
- *             - IX_I2C_MASTER_XFER_ERROR - There was a transfer error
- *      - IX_I2C_MASTER_BUS_ERROR - There was a bus error during transfer
- *             - IX_I2C_MASTER_NO_BUFFER - buffer pointer is NULL
- *      - IX_I2C_MASTER_INVALID_XFER_MODE - Xfer mode selected is invalid
- *      - IX_I2C_DATA_SIZE_ZERO - dataSize passed in is zero, which is invalid
- *             - IX_I2C_NOT_INIT - I2C not init yet.
- *              
- * @li   Reentrant    : no
- * @li   ISR Callable : no
- *
- */
-PUBLIC IX_I2C_STATUS
-ixI2cDrvWriteTransfer(
-       UINT8 SlaveAddr,
-       char *bufP,
-       UINT32 dataSize,
-       IxI2cXferMode XferModeSelect);
-
-/**
- * @ingroup IxI2cDrv
- * 
- * @fn ixI2cDrvReadTransfer(
-       UINT8 SlaveAddr,
-       char *bufP,
-       UINT32 dataSize,
-       IxI2cXferMode XferModeSelect)
- *
- * @brief Initiates a transfer to receive bytes of data from a slave
- *                     device through the I2C bus.
- *
- * @param "UINT8 [in] SlaveAddr" - The slave address to request data from.
- * @param "char [out] *bufP" - The pointer to the buffer to store the
- *                     requested data.
- * @param "UINT32 [in] dataSize" - The number of bytes requested.
- * @param "IxI2cXferMode [in] XferModeSelect" - the transfer mode selected,
- *                     either repeated start (ends w/o stop) or normal (start and stop)
- *
- * Global Data :
- *             - None.
- *                        
- * This API will try to obtain master control of the I2C bus and receive the
- * number of bytes, specified by dataSize, from the user specified address
- * into the receive buffer. It will use either interrupt or poll mode depending
- * on the mode selected.
- *
- * If in interrupt mode and IxI2cMasterReadCallbackP is not NULL, the driver
- * will initiate the transfer and return immediately. The function pointed to
- * by IxI2cMasterReadCallbackP will be called in the interrupt service
- * handlers when the operation is complete.
- *
- * If in interrupt mode and IxI2cMasterReadCallbackP is NULL, then the driver will
- * wait for the operation to complete, and then return.
- *
- * And if the repeated start transfer mode is selected, then it will not send a
- * stop signal at the end of all the transfers.
- * *NOTE*: If repeated start transfer mode is selected, it has to end with a
- *                     normal mode transfer mode else the bus will continue to be held
- *                     by the IXP.
- *
- * @return 
- *      - IX_I2C_SUCCESS - Successfuuly read slave data
- *             - IX_I2C_MASTER_BUS_BUSY - The I2C bus is busy (held by another I2C master)
- *             - IX_I2C_MASTER_ARB_LOSS - The I2C bus was loss to another I2C master
- *             - IX_I2C_MASTER_XFER_ERROR - There was a bus error during transfer
- *      - IX_I2C_MASTER_BUS_ERROR - There was a bus error during transfer
- *             - IX_I2C_MASTER_NO_BUFFER - buffer pointer is NULL
- *      - IX_I2C_MASTER_INVALID_XFER_MODE - Xfer mode selected is invalid
- *      - IX_I2C_INVALID_SLAVE_ADDR - invalid slave address (zero) specified
- *      - IX_I2C_DATA_SIZE_ZERO - dataSize passed in is zero, which is invalid
- *             - IX_I2C_NOT_INIT - I2C not init yet.
- *              
- * @li   Reentrant    : no
- * @li   ISR Callable : no
- *
- */
-PUBLIC IX_I2C_STATUS
-ixI2cDrvReadTransfer(
-       UINT8 SlaveAddr,
-       char *bufP,
-       UINT32 dataSize,
-       IxI2cXferMode XferModeSelect);
-
-/**
- * @ingroup IxI2cDrv
- * 
- * @fn ixI2cDrvSlaveAddrAndGenCallDetectedCheck(
-       void)
- *
- * @brief Checks the I2C Status Register to determine if a slave address is
- *                     detected
- *
- * @param - None
- *
- * Global Data :
- *             - None.
- *                        
- * This API is used in polled mode to determine if the I2C unit is requested
- * for a slave or general call transfer. If it is requested for a slave
- * transfer then it will determine if it is a general call (read only), read,
- * or write transfer requested.
- *
- * @return 
- *      - IX_I2C_SLAVE_ADDR_NOT_DETECTED - The I2C unit is not requested for slave
- *                                                                             transfer
- *             - IX_I2C_GEN_CALL_ADDR_DETECTED - The I2C unit is not requested for slave
- *                                                                     transfer but for general call
- *      - IX_I2C_SLAVE_READ_DETECTED - The I2C unit is requested for a read
- *      - IX_I2C_SLAVE_WRITE_DETECTED - The I2C unit is requested for a write
- *             - IX_I2C_NOT_INIT - I2C not init yet.
- *              
- * @li   Reentrant    : no
- * @li   ISR Callable : no
- *
- */
-PUBLIC IX_I2C_STATUS
-ixI2cDrvSlaveAddrAndGenCallDetectedCheck(void);
-
-/**
- * @ingroup IxI2cDrv
- * 
- * @fn ixI2cDrvSlaveOrGenDataReceive(
-       char *bufP,
-       UINT32 bufSize,
-       UINT32 *dataSizeRcvd)
- *
- * @brief Performs the slave receive or general call receive data transfer
- *
- * @param      "char [in] *bufP" - the pointer to the buffer to store data
- *                     "UINT32 [in] bufSize" - the buffer size allocated
- *                     "UINT32 [in] *dataSizeRcvd" - the length of data received in bytes
- *
- * Global Data :
- *             - None.
- *                        
- * This API is only used in polled mode to perform the slave read or general call
- * receive data. It will continuously store the data received into bufP until
- * complete or until bufP is full in which it will return
- * IX_I2C_SLAVE_OR_GEN_READ_BUFFER_FULL. If in interrupt mode, the callback will be
- * used.
- *
- * @return 
- *      - IX_I2C_SUCCESS - The I2C driver transferred the data successfully.
- *             - IX_I2C_SLAVE_OR_GEN_READ_BUFFER_FULL - The I2C driver has ran out of
- *                     space to store the received data.
- *             - IX_I2C_SLAVE_OR_GEN_READ_ERROR - The I2C driver didn't manage to
- *                     detect the IDBR Rx Full bit
- *      - IX_I2C_DATA_SIZE_ZERO - bufSize passed in is zero, which is invalid
- *             - IX_I2C_SLAVE_NO_BUFFER - buffer pointer is NULL
- *      - IX_I2C_NULL_POINTER - dataSizeRcvd is NULL
- *             - IX_I2C_NOT_INIT - I2C not init yet.
- *              
- * @li   Reentrant    : no
- * @li   ISR Callable : no
- *
- */
-PUBLIC IX_I2C_STATUS
-ixI2cDrvSlaveOrGenDataReceive(
-       char *bufP,
-       UINT32 bufSize,
-       UINT32 *dataSizeRcvd);
-
-/**
- * @ingroup IxI2cDrv
- * 
- * @fn ixI2cDrvSlaveDataTransmit(
-       char *bufP,
-       UINT32 dataSize,
-       UINT32 *dataSizeXmtd)
- *
- * @brief Performs the slave write data transfer
- *
- * @param      "char [in] *bufP" - the pointer to the buffer for data to be
- *                             transmitted
- *                     "UINT32 [in] bufSize" - the buffer size allocated
- *                     "UINT32 [in] *dataSizeRcvd" - the length of data trasnmitted in
- *                             bytes
- *
- * Global Data :
- *             - None.
- *                        
- * This API is only used in polled mode to perform the slave transmit data. It
- * will continuously transmit the data from bufP until complete or until bufP
- * is empty in which it will return IX_I2C_SLAVE_WRITE_BUFFER_EMPTY. If in
- * interrupt mode, the callback will be used.
- *
- * @return 
- *      - IX_I2C_SUCCESS - The I2C driver transferred the data successfully.
- *      - IX_I2C_SLAVE_WRITE_BUFFER_EMPTY - The I2C driver needs more data to
- *                     transmit.
- *      - IX_I2C_SLAVE_WRITE_ERROR -The I2C driver didn't manage to detect the
- *          IDBR Tx empty bit or the slave stop bit.
- *      - IX_I2C_DATA_SIZE_ZERO - dataSize passed in is zero, which is invalid
- *             - IX_I2C_SLAVE_NO_BUFFER - buffer pointer is NULL
- *      - IX_I2C_NULL_POINTER - dataSizeXmtd is NULL
- *             - IX_I2C_NOT_INIT - I2C not init yet.
- *              
- * @li   Reentrant    : no
- * @li   ISR Callable : no
- *
- */
-PUBLIC IX_I2C_STATUS
-ixI2cDrvSlaveDataTransmit(
-       char *bufP,
-       UINT32 dataSize,
-       UINT32 *dataSizeXmtd);
-
-/**
- * @ingroup IxI2cDrv
- * 
- * @fn ixI2cDrvSlaveOrGenCallBufReplenish(
-       char *bufP,
-       UINT32 bufSize)
- *
- * @brief Replenishes the buffer which stores buffer info for both slave and
- *                     general call
- *
- * @param      "char [in] *bufP" - pointer to the buffer allocated
- *                     "UINT32 [in] bufSize" - size of the buffer
- *
- * Global Data :
- *             - None.
- *                        
- * This API is only used in interrupt mode for replenishing the same buffer
- * that is used by both slave and generall call by updating the buffer info
- * with new info and clearing previous offsets set by previous transfers.
- *
- * @return 
- *      - None
- *              
- * @li   Reentrant    : no
- * @li   ISR Callable : no
- *
- */
-PUBLIC void
-ixI2cDrvSlaveOrGenCallBufReplenish(
-       char *bufP,
-       UINT32 bufSize);
-
-/**
- * @ingroup IxI2cDrv
- * 
- * @fn ixI2cDrvStatsGet(IxI2cStatsCounters *I2cStats)
- *
- * @brief Returns the I2C Statistics through the pointer passed in
- *
- * @param - "IxI2cStatsCounters [out] *I2cStats" - I2C statistics counter will
- *                     be read and written to the location pointed by this pointer.
- *
- * Global Data :
- *             - None.
- *                        
- * This API will return the statistics counters of the I2C driver.
- *
- * @return 
- *      - IX_I2C_NULL_POINTER - pointer passed in is NULL
- *             - IX_I2C_SUCCESS - successfully obtained I2C statistics
- *              
- * @li   Reentrant    : yes
- * @li   ISR Callable : no
- *
- */
-PUBLIC IX_I2C_STATUS
-ixI2cDrvStatsGet(IxI2cStatsCounters *I2cStats);
-
-/**
- * @ingroup IxI2cDrv
- * 
- * @fn ixI2cDrvStatsReset(void)
- *
- * @brief Reset I2C statistics counters.
- *
- * @param - None
- *
- * Global Data :
- *             - None.
- *                        
- * This API will reset the statistics counters of the I2C driver.
- *
- * @return 
- *      - None
- *              
- * @li   Reentrant    : yes
- * @li   ISR Callable : no
- *
- */
-PUBLIC void
-ixI2cDrvStatsReset(void);
-
-/**
- * @ingroup IxI2cDrv
- * 
- * @fn ixI2cDrvShow(void)
- *
- * @brief Displays the I2C status register and the statistics counter.
- *
- * @param - None
- *
- * Global Data :
- *             - None.
- *                        
- * This API will display the I2C Status register and is useful if any error
- * occurs. It displays the detection of bus error, slave address, general call,
- * address, IDBR receive full, IDBR transmit empty, arbitration loss, slave
- * STOP signal, I2C bus busy, unit busy, ack/nack, and read/write mode. It will
- * also call the ixI2cDrvGetStats and then display the statistics counter.
- *
- * @return 
- *             - IX_I2C_SUCCESS - successfully displayed statistics and status register
- *             - IX_I2C_NOT_INIT - I2C not init yet.
- *              
- * @li   Reentrant    : yes
- * @li   ISR Callable : no
- *
- */
-PUBLIC IX_I2C_STATUS
-ixI2cDrvShow(void);
-
-/**
- * @ingroup IxI2cDrv
- * 
- * @fn ixI2cDrvDelayTypeSelect (IxI2cDelayMode delayMechanismSelect)
- *
- * @brief Sets the delay type of either looping delay or OS scheduler delay
- *          according to the argument provided.
- *
- * @param - "IxI2cDelayMode [in] delayTypeSelect" - the I2C delay type selected
- *
- * Global Data :
- *             - None.
- *                        
- * This API will set the delay type used by the I2C Driver to either looping
- * delay or OS scheduler delay.
- *
- * @return 
- *             - None
- *              
- * @li   Reentrant    : yes
- * @li   ISR Callable : no
- *
- */
-PUBLIC void
-ixI2cDrvDelayTypeSelect (IxI2cDelayMode delayTypeSelect);
-
-#endif /* __ixp46X */
-#endif /* IXI2CDRV_H */
+/**
+ * @file IxI2cDrv.h
+ *
+ * @brief  Header file for the IXP400 I2C Driver (IxI2cDrv)
+ *
+ * @version $Revision: 1.1.1.1 $
+ * 
+ * @par
+ * IXP400 SW Release version 2.0
+ * 
+ * -- Copyright Notice --
+ * 
+ * @par
+ * Copyright 2001-2005, Intel Corporation.
+ * All rights reserved.
+ * 
+ * @par
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the Intel Corporation nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ * 
+ * @par
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * 
+ * @par
+ * -- End of Copyright Notice --
+ */
+
+/**
+ * @defgroup IxI2cDrv IXP400 I2C Driver(IxI2cDrv) API 
+ *
+ * @brief IXP400 I2C Driver Public API
+ *
+ * @{
+ */
+#ifndef IXI2CDRV_H
+#define IXI2CDRV_H
+
+#ifdef __ixp46X
+#include "IxOsal.h"
+
+/*
+ * Section for #define
+ */
+
+/**
+ * @ingroup IxI2cDrv
+ * @brief The interval of micro/mili seconds the IXP will wait before it polls for
+ *                     status from the ixI2cIntrXferStatus; Every 20us is 1 byte @
+ *                     400Kbps and 4 bytes     @ 100Kbps. This is dependent on delay type selected
+ *          through the API ixI2cDrvDelayTypeSelect.
+ */
+#define IX_I2C_US_POLL_FOR_XFER_STATUS 20
+
+/**
+ * @ingroup IxI2cDrv
+ * @brief The number of tries that will be attempted to call a callback
+ *          function if the callback does not or is unable to resolve the
+ *          issue it is called to resolve
+ */
+#define IX_I2C_NUM_OF_TRIES_TO_CALL_CALLBACK_FUNC      10
+
+
+/**
+ * @ingroup IxI2cDrv
+ * @brief Number of tries slave will poll the IDBR Rx full bit before it
+ *                     gives up
+ */
+#define IX_I2C_NUM_TO_POLL_IDBR_RX_FULL 0x100
+
+/**
+ * @ingroup IxI2cDrv
+ * @brief Number of tries slave will poll the IDBR Tx empty bit before it
+ *                     gives up
+ */
+#define IX_I2C_NUM_TO_POLL_IDBR_TX_EMPTY 0x100
+
+/*
+ * Section for enum
+ */
+
+/**
+ * @ingroup IxI2cDrv
+ * 
+ * @enum IxI2cMasterStatus
+ *
+ * @brief The master status - transfer complete, bus error or arbitration loss
+ */
+typedef enum
+{
+    IX_I2C_MASTER_XFER_COMPLETE = IX_SUCCESS,
+       IX_I2C_MASTER_XFER_BUS_ERROR,
+       IX_I2C_MASTER_XFER_ARB_LOSS
+} IxI2cMasterStatus;
+
+
+/**
+ * @ingroup IxI2cDrv
+ * 
+ * @enum IX_I2C_STATUS
+ *
+ * @brief The status that can be returned in a I2C driver initialization
+ */
+typedef enum
+{
+       IX_I2C_SUCCESS = IX_SUCCESS, /**< Success status */
+       IX_I2C_FAIL, /**< Fail status */
+       IX_I2C_NOT_SUPPORTED, /**< hardware does not have dedicated I2C hardware */
+       IX_I2C_NULL_POINTER, /**< parameter passed in is NULL */
+       IX_I2C_INVALID_SPEED_MODE_ENUM_VALUE, /**< speed mode selected is invalid */
+       IX_I2C_INVALID_FLOW_MODE_ENUM_VALUE, /**< flow mode selected is invalid */
+       IX_I2C_SLAVE_ADDR_CB_MISSING, /**< slave callback is NULL */
+       IX_I2C_GEN_CALL_CB_MISSING, /**< general callback is NULL */
+       IX_I2C_INVALID_SLAVE_ADDR, /**< invalid slave address specified */
+       IX_I2C_INT_BIND_FAIL, /**< interrupt bind fail */
+       IX_I2C_INT_UNBIND_FAIL, /**< interrupt unbind fail */
+       IX_I2C_NOT_INIT, /**< I2C is not initialized yet */
+       IX_I2C_MASTER_BUS_BUSY, /**< master detected a I2C bus busy */
+       IX_I2C_MASTER_ARB_LOSS, /**< master experienced arbitration loss */
+       IX_I2C_MASTER_XFER_ERROR, /**< master experienced a transfer error */
+       IX_I2C_MASTER_BUS_ERROR, /**< master detected a I2C bus error */
+       IX_I2C_MASTER_NO_BUFFER, /**< no buffer provided for master transfer */
+       IX_I2C_MASTER_INVALID_XFER_MODE, /**< xfer mode selected is invalid */
+       IX_I2C_SLAVE_ADDR_NOT_DETECTED, /**< polled slave addr not detected */
+       IX_I2C_GEN_CALL_ADDR_DETECTED, /**< polling detected general call */
+       IX_I2C_SLAVE_READ_DETECTED, /**< polling detected slave read request */
+       IX_I2C_SLAVE_WRITE_DETECTED, /**< polling detected slave write request */
+       IX_I2C_SLAVE_NO_BUFFER, /**< no buffer provided for slave transfers */
+       IX_I2C_DATA_SIZE_ZERO, /**< data size transfer is zero - invalid */
+       IX_I2C_SLAVE_WRITE_BUFFER_EMPTY, /**< slave buffer is used till empty */
+       IX_I2C_SLAVE_WRITE_ERROR, /**< slave write experienced an error */
+       IX_I2C_SLAVE_OR_GEN_READ_BUFFER_FULL, /**< slave buffer is filled up */
+       IX_I2C_SLAVE_OR_GEN_READ_ERROR /**< slave read experienced an error */
+} IX_I2C_STATUS;
+
+/**
+ * @ingroup IxI2cDrv
+ * 
+ * @enum IxI2cSpeedMode
+ *
+ * @brief Type of speed modes supported by the I2C hardware.
+ */
+typedef enum
+{
+    IX_I2C_NORMAL_MODE = 0x0,
+    IX_I2C_FAST_MODE
+} IxI2cSpeedMode;
+
+/**
+ * @ingroup IxI2cDrv
+ * 
+ * @enum IxI2cXferMode
+ *
+ * @brief Used for indicating it is a repeated start or normal transfer
+ */
+typedef enum
+{
+    IX_I2C_NORMAL = 0x0,
+    IX_I2C_REPEATED_START
+} IxI2cXferMode;
+
+/**
+ * @ingroup IxI2cDrv
+ * 
+ * @enum IxI2cFlowMode
+ *
+ * @brief Used for indicating it is a poll or interrupt mode
+ */
+typedef enum
+{
+    IX_I2C_POLL_MODE = 0x0,
+    IX_I2C_INTERRUPT_MODE
+} IxI2cFlowMode;
+
+/**
+ * @ingroup IxI2cDrv
+ * 
+ * @enum IxI2cDelayMode
+ *
+ * @brief Used for selecting looping delay or OS scheduler delay
+ */
+typedef enum
+{
+    IX_I2C_LOOP_DELAY = 1,  /**< delay in microseconds */
+    IX_I2C_SCHED_DELAY      /**< delay in miliseconds */
+} IxI2cDelayMode;
+
+/**
+ * @ingroup IxI2cDrv
+ * 
+ * @brief The pointer to the function that will be called when the master
+ *                     has completed its receive. The parameter that is passed will
+ *                     provide the status of the read (success, arb loss, or bus
+ *                     error), the transfer mode (normal or repeated start, the
+ *                     buffer pointer and number of bytes transferred.
+ */
+typedef void (*IxI2cMasterReadCallbackP)(IxI2cMasterStatus, IxI2cXferMode, char*, UINT32);
+
+/**
+ * @ingroup IxI2cDrv
+ * 
+ * @brief The pointer to the function that will        be called when the master
+ *                     has completed its transmit. The parameter that is passed will
+ *                     provide the status of the write (success, arb loss, or buss
+ *                     error), the transfer mode (normal or repeated start), the
+ *                     buffer pointer and number of bytes transferred.
+ */
+typedef void (*IxI2cMasterWriteCallbackP)(IxI2cMasterStatus, IxI2cXferMode, char*, UINT32);
+
+/**
+ * @ingroup IxI2cDrv
+ * 
+ * @brief The pointer to the function that will be called when a slave
+ *                     address detected in interrupt mode for a read. The parameters
+ *                     that is passed will provide the read status, buffer pointer,
+ *                     buffer size, and the bytes received. When a start of a read
+ *                     is initiated there will be no buffer allocated and this callback
+ *                     will be called to request for a buffer. While receiving, if the
+ *                     buffer gets filled, this callback will be called to request for
+ *                     a new buffer while sending the filled buffer's pointer and size,
+ *                     and data size received. When the receive is complete, this
+ *                     callback will be called to process the data and free the memory
+ *                     by passing the buffer's pointer and size, and data size received.
+ */
+typedef void (*IxI2cSlaveReadCallbackP)(IX_I2C_STATUS, char*, UINT32, UINT32);
+
+/**
+ * @ingroup IxI2cDrv
+ * 
+ * @brief The pointer to the function that will be called when a slave
+ *                     address detected in interrupt mode for a write. The parameters
+ *                     that is passed will provide the write status, buffer pointer,
+ *                     buffer size, and the bytes received. When a start of a write is
+ *                     initiated there will be no buffer allocated and this callback
+ *                     will be called to request for a buffer and to fill it with data.
+ *                     While transmitting, if the data in the buffer empties, this
+ *                     callback will be called to request for more data to be filled in
+ *                     the same or new buffer. When the transmit is complete, this
+ *                     callback will be called to free the memory or other actions to
+ *                     be taken.
+ */
+typedef void (*IxI2cSlaveWriteCallbackP)(IX_I2C_STATUS, char*, UINT32, UINT32);
+
+/**
+ * @ingroup IxI2cDrv
+ * 
+ * @brief The pointer to the function that will be called when a general
+ *                     call detected in interrupt mode for a read. The parameters that
+ *                     is passed will provide the read status, buffer pointer, buffer
+ *                     size, and the bytes received. When a start of a read is
+ *                     initiated there will be no buffer allocated and this callback
+ *                     will be called to request for a buffer. While receiving, if the
+ *                     buffer gets filled, this callback will be called to request for
+ *                     a new buffer while sending the filled buffer's pointer and size,
+ *                     and data size received. When the receive is complete, this
+ *                     callback will be called to process the data and free the memory
+ *                     by passing the buffer's pointer and size, and data size received.
+ */
+typedef void (*IxI2cGenCallCallbackP)(IX_I2C_STATUS, char*, UINT32, UINT32);
+
+/*
+ * Section for struct
+ */
+
+/**
+ * @brief contains all the variables required to initialize the I2C unit
+ * 
+ * Structure to be filled and used for calling initialization
+ */
+typedef struct
+{
+       IxI2cSpeedMode I2cSpeedSelect;  /**<Select either normal (100kbps)
+                                                                       or fast mode (400kbps)*/
+       IxI2cFlowMode I2cFlowSelect;    /**<Select interrupt or poll mode*/     
+       IxI2cMasterReadCallbackP MasterReadCBP;
+                                                                       /**<The master read callback pointer */
+       IxI2cMasterWriteCallbackP MasterWriteCBP;
+                                                                       /**<The master write callback pointer */
+       IxI2cSlaveReadCallbackP SlaveReadCBP;
+                                                                       /**<The slave read callback pointer */
+       IxI2cSlaveWriteCallbackP SlaveWriteCBP;
+                                                                       /**<The slave write callback pointer */
+       IxI2cGenCallCallbackP GenCallCBP;
+                                                                       /**<The general call callback pointer */
+       BOOL I2cGenCallResponseEnable;  /**<Enable/disable the unit to
+                                                                       respond to generall calls.*/
+       BOOL I2cSlaveAddrResponseEnable;/**<Enable/disable the unit to
+                                                                       respond to the slave address set in
+                                                                       ISAR*/
+       BOOL SCLEnable;                                 /**<Enable/disable the unit from
+                                                                       driving the SCL line during master
+                                                                       mode operation*/
+       UINT8 I2cHWAddr;                                /**<The address the unit will
+                                                                       response to as a slave device*/
+} IxI2cInitVars;
+
+/**
+ * @brief contains results of counters and their overflow
+ * 
+ * Structure contains all values of counters and associated overflows.
+ */
+typedef struct
+{
+       UINT32 ixI2cMasterXmitCounter;                  /**<Total bytes transmitted as
+                                                                                       master.*/
+       UINT32 ixI2cMasterFailedXmitCounter;    /**<Total bytes failed for
+                                                                                       transmission as master.*/
+       UINT32 ixI2cMasterRcvCounter;                   /**<Total bytes received as
+                                                                                       master.*/
+       UINT32 ixI2cMasterFailedRcvCounter;             /**<Total bytes failed for
+                                                                                       receival as master.*/
+       UINT32 ixI2cSlaveXmitCounter;                   /**<Total bytes transmitted as
+                                                                                       slave.*/
+       UINT32 ixI2cSlaveFailedXmitCounter;             /**<Total bytes failed for
+                                                                                       transmission as slave.*/
+       UINT32 ixI2cSlaveRcvCounter;                    /**<Total bytes received as
+                                                                                       slave.*/
+       UINT32 ixI2cSlaveFailedRcvCounter;              /**<Total bytes failed for
+                                                                                       receival as slave.*/
+       UINT32 ixI2cGenAddrCallSucceedCounter;  /**<Total bytes successfully
+                                                                                       transmitted for general address.*/
+       UINT32 ixI2cGenAddrCallFailedCounter;   /**<Total bytes failed transmission
+                                                                                       for general address.*/
+       UINT32 ixI2cArbLossCounter;                             /**<Total instances of arbitration
+                                                                                       loss has occured.*/
+} IxI2cStatsCounters;
+
+
+/*
+ * Section for prototypes interface functions
+ */
+
+/**
+ * @ingroup IxI2cDrv
+ * 
+ * @fn ixI2cDrvInit(
+       IxI2cInitVars *InitVarsSelected)
+ *
+ * @brief Initializes the I2C Driver.
+ *
+ * @param "IxI2cInitVars [in] *InitVarsSelected" - struct containing required
+ *                     variables for initialization 
+ *
+ * Global Data :
+ *             - None.
+ *
+ * This API will check if the hardware supports this I2C driver and the validity
+ * of the parameters passed in. It will continue to process the parameters
+ * passed in by setting the speed of the I2C unit (100kbps or 400kbps), setting
+ * the flow to either interrupt or poll mode, setting the address of the I2C unit,
+ * enabling/disabling the respond to General Calls, enabling/disabling the respond
+ * to Slave Address and SCL line driving. If it is interrupt mode, then it will
+ * register the callback routines for master, slavetransfer and general call receive.
+ *
+ * @return 
+ *      - IX_I2C_SUCCESS - Successfully initialize and enable the I2C
+ *                                                     hardware.
+ *             - IX_I2C_NOT_SUPPORTED - The hardware does not support or have a
+ *                              dedicated I2C unit to support this driver
+ *             - IX_I2C_NULL_POINTER - The parameter passed in is a NULL pointed
+ *             - IX_I2C_INVALID_SPEED_MODE_ENUM_VALUE - The speed mode selected in the
+ *                                                                                             InitVarsSelected is invalid
+ *             - IX_I2C_INVALID_FLOW_MODE_ENUM_VALUE - The flow mode selected in the
+ *                                                                                             InitVarsSelected is invalid
+ *             - IX_I2C_INVALID_SLAVE_ADDR - The address 0x0 is reserved for
+ *                                                                             general call.
+ *             - IX_I2C_SLAVE_ADDR_CB_MISSING - interrupt mode is selected but
+ *                                                                             slave address callback pointer is NULL
+ *             - IX_I2C_GEN_CALL_CB_MISSING - interrupt mode is selected but
+ *                                                                             general call callback pointer is NULL
+ *             - IX_I2C_INT_BIND_FAIL - The ISR for the I2C failed to bind
+ *             - IX_I2C_INT_UNBIND_FAIL - The ISR for the I2C failed to unbind
+ *
+ * @li   Reentrant    : yes
+ * @li   ISR Callable : yes
+ *
+ */
+PUBLIC IX_I2C_STATUS
+ixI2cDrvInit(IxI2cInitVars *InitVarsSelected);
+
+/**
+ * @ingroup IxI2cDrv
+ * 
+ * @fn ixI2cDrvUninit(
+       void)
+ *
+ * @brief Disables the I2C hardware
+ *
+ * @param - None
+ *
+ * Global Data :
+ *             - None.
+ *                        
+ * This API will disable the I2C hardware, unbind interrupt, and unmap memory.
+ *
+ * @return 
+ *      - IX_I2C_SUCCESS - successfully un-initialized I2C
+ *             - IX_I2C_INT_UNBIND_FAIL - failed to unbind the I2C interrupt
+ *             - IX_I2C_NOT_INIT - I2C not init yet.
+ *              
+ * @li   Reentrant    : yes
+ * @li   ISR Callable : yes
+ *
+ */
+PUBLIC IX_I2C_STATUS
+ixI2cDrvUninit(void);
+
+/**
+ * @ingroup IxI2cDrv
+ * 
+ * @fn ixI2cDrvSlaveAddrSet(
+       UINT8 SlaveAddrSet)
+ *
+ * @brief Sets the I2C Slave Address
+ *
+ * @param "UINT8 [in] SlaveAddrSet" - Slave Address to be inserted into ISAR
+ *
+ * Global Data :
+ *             - None.
+ *                        
+ * This API will insert the SlaveAddrSet into the ISAR.
+ *
+ * @return 
+ *      - IX_I2C_SUCCESS - successfuly set the slave addr
+ *             - IX_I2C_INVALID_SLAVE_ADDR - invalid slave address (zero) specified
+ *             - IX_I2C_NOT_INIT - I2C not init yet.
+ *              
+ * @li   Reentrant    : yes
+ * @li   ISR Callable : yes
+ *
+ */
+PUBLIC IX_I2C_STATUS
+ixI2cDrvSlaveAddrSet(UINT8 SlaveAddrSet);
+
+/**
+ * @ingroup IxI2cDrv
+ * 
+ * @fn ixI2cDrvBusScan(
+       void)
+ *
+ * @brief scans the I2C bus for slave devices
+ *
+ * @param - None
+ *
+ * Global Data :
+ *             - None.
+ *                        
+ * This API will prompt all slave addresses for a reply except its own
+ *
+ * @return 
+ *      - IX_I2C_SUCCESS - found at least one slave device
+ *             - IX_I2C_FAIL - Fail to find even one slave device
+ *             - IX_I2C_BUS_BUSY - The I2C bus is busy (held by another I2C master)
+ *             - IX_I2C_ARB_LOSS - The I2C bus was loss to another I2C master
+ *             - IX_I2C_NOT_INIT - I2C not init yet.
+ *              
+ * @li   Reentrant    : yes
+ * @li   ISR Callable : yes
+ *
+ */
+PUBLIC IX_I2C_STATUS
+ixI2cDrvBusScan(void);
+
+/**
+ * @ingroup IxI2cDrv
+ * 
+ * @fn ixI2cDrvWriteTransfer(
+       UINT8 SlaveAddr,
+       char *bufP,
+       UINT32 dataSize,
+       IxI2cXferMode XferModeSelect)
+ *
+ * @param "UINT8 [in] SlaveAddr" - The slave address to request data from.
+ * @param "char [in] *bufP" - The pointer to the data to be transmitted.
+ * @param "UINT32 [in] dataSize" - The number of bytes requested.
+ * @param "IxI2cXferMode [in] XferModeSelect" - the transfer mode selected,
+ *                     either repeated start (ends w/o stop) or normal (start and stop)
+ *
+ * Global Data :
+ *             - None.
+ *                        
+ * This API will try to obtain master control of the I2C bus and transmit the
+ * number of bytes, specified by dataSize, to the user specified slave
+ * address from the buffer pointer. It will use either interrupt or poll mode
+ * depending on the method selected. 
+ *
+ * If in interrupt mode and IxI2cMasterWriteCallbackP is not NULL, the driver
+ * will initiate the transfer and return immediately. The function pointed to
+ * by IxI2cMasterWriteCallbackP will be called in the interrupt service
+ * handlers when the operation is complete.
+ *
+ * If in interrupt mode and IxI2cMasterWriteCallbackP is NULL, then the driver
+ * will wait for the operation to complete, and then return.
+ *
+ * And if the repeated start transfer mode is selected, then it will not send a
+ * stop signal at the end of all the transfers.
+ * *NOTE*: If repeated start transfer mode is selected, it has to end with a
+ *                     normal mode transfer mode else the bus will continue to be held
+ *                     by the IXP.
+ *
+ * @return 
+ *      - IX_I2C_SUCCESS - Successfuuly wrote data to slave.
+ *             - IX_I2C_MASTER_BUS_BUSY - The I2C bus is busy (held by another I2C master)
+ *             - IX_I2C_MASTER_ARB_LOSS - The I2C bus was loss to another I2C master
+ *             - IX_I2C_MASTER_XFER_ERROR - There was a transfer error
+ *      - IX_I2C_MASTER_BUS_ERROR - There was a bus error during transfer
+ *             - IX_I2C_MASTER_NO_BUFFER - buffer pointer is NULL
+ *      - IX_I2C_MASTER_INVALID_XFER_MODE - Xfer mode selected is invalid
+ *      - IX_I2C_DATA_SIZE_ZERO - dataSize passed in is zero, which is invalid
+ *             - IX_I2C_NOT_INIT - I2C not init yet.
+ *              
+ * @li   Reentrant    : no
+ * @li   ISR Callable : no
+ *
+ */
+PUBLIC IX_I2C_STATUS
+ixI2cDrvWriteTransfer(
+       UINT8 SlaveAddr,
+       char *bufP,
+       UINT32 dataSize,
+       IxI2cXferMode XferModeSelect);
+
+/**
+ * @ingroup IxI2cDrv
+ * 
+ * @fn ixI2cDrvReadTransfer(
+       UINT8 SlaveAddr,
+       char *bufP,
+       UINT32 dataSize,
+       IxI2cXferMode XferModeSelect)
+ *
+ * @brief Initiates a transfer to receive bytes of data from a slave
+ *                     device through the I2C bus.
+ *
+ * @param "UINT8 [in] SlaveAddr" - The slave address to request data from.
+ * @param "char [out] *bufP" - The pointer to the buffer to store the
+ *                     requested data.
+ * @param "UINT32 [in] dataSize" - The number of bytes requested.
+ * @param "IxI2cXferMode [in] XferModeSelect" - the transfer mode selected,
+ *                     either repeated start (ends w/o stop) or normal (start and stop)
+ *
+ * Global Data :
+ *             - None.
+ *                        
+ * This API will try to obtain master control of the I2C bus and receive the
+ * number of bytes, specified by dataSize, from the user specified address
+ * into the receive buffer. It will use either interrupt or poll mode depending
+ * on the mode selected.
+ *
+ * If in interrupt mode and IxI2cMasterReadCallbackP is not NULL, the driver
+ * will initiate the transfer and return immediately. The function pointed to
+ * by IxI2cMasterReadCallbackP will be called in the interrupt service
+ * handlers when the operation is complete.
+ *
+ * If in interrupt mode and IxI2cMasterReadCallbackP is NULL, then the driver will
+ * wait for the operation to complete, and then return.
+ *
+ * And if the repeated start transfer mode is selected, then it will not send a
+ * stop signal at the end of all the transfers.
+ * *NOTE*: If repeated start transfer mode is selected, it has to end with a
+ *                     normal mode transfer mode else the bus will continue to be held
+ *                     by the IXP.
+ *
+ * @return 
+ *      - IX_I2C_SUCCESS - Successfuuly read slave data
+ *             - IX_I2C_MASTER_BUS_BUSY - The I2C bus is busy (held by another I2C master)
+ *             - IX_I2C_MASTER_ARB_LOSS - The I2C bus was loss to another I2C master
+ *             - IX_I2C_MASTER_XFER_ERROR - There was a bus error during transfer
+ *      - IX_I2C_MASTER_BUS_ERROR - There was a bus error during transfer
+ *             - IX_I2C_MASTER_NO_BUFFER - buffer pointer is NULL
+ *      - IX_I2C_MASTER_INVALID_XFER_MODE - Xfer mode selected is invalid
+ *      - IX_I2C_INVALID_SLAVE_ADDR - invalid slave address (zero) specified
+ *      - IX_I2C_DATA_SIZE_ZERO - dataSize passed in is zero, which is invalid
+ *             - IX_I2C_NOT_INIT - I2C not init yet.
+ *              
+ * @li   Reentrant    : no
+ * @li   ISR Callable : no
+ *
+ */
+PUBLIC IX_I2C_STATUS
+ixI2cDrvReadTransfer(
+       UINT8 SlaveAddr,
+       char *bufP,
+       UINT32 dataSize,
+       IxI2cXferMode XferModeSelect);
+
+/**
+ * @ingroup IxI2cDrv
+ * 
+ * @fn ixI2cDrvSlaveAddrAndGenCallDetectedCheck(
+       void)
+ *
+ * @brief Checks the I2C Status Register to determine if a slave address is
+ *                     detected
+ *
+ * @param - None
+ *
+ * Global Data :
+ *             - None.
+ *                        
+ * This API is used in polled mode to determine if the I2C unit is requested
+ * for a slave or general call transfer. If it is requested for a slave
+ * transfer then it will determine if it is a general call (read only), read,
+ * or write transfer requested.
+ *
+ * @return 
+ *      - IX_I2C_SLAVE_ADDR_NOT_DETECTED - The I2C unit is not requested for slave
+ *                                                                             transfer
+ *             - IX_I2C_GEN_CALL_ADDR_DETECTED - The I2C unit is not requested for slave
+ *                                                                     transfer but for general call
+ *      - IX_I2C_SLAVE_READ_DETECTED - The I2C unit is requested for a read
+ *      - IX_I2C_SLAVE_WRITE_DETECTED - The I2C unit is requested for a write
+ *             - IX_I2C_NOT_INIT - I2C not init yet.
+ *              
+ * @li   Reentrant    : no
+ * @li   ISR Callable : no
+ *
+ */
+PUBLIC IX_I2C_STATUS
+ixI2cDrvSlaveAddrAndGenCallDetectedCheck(void);
+
+/**
+ * @ingroup IxI2cDrv
+ * 
+ * @fn ixI2cDrvSlaveOrGenDataReceive(
+       char *bufP,
+       UINT32 bufSize,
+       UINT32 *dataSizeRcvd)
+ *
+ * @brief Performs the slave receive or general call receive data transfer
+ *
+ * @param      "char [in] *bufP" - the pointer to the buffer to store data
+ *                     "UINT32 [in] bufSize" - the buffer size allocated
+ *                     "UINT32 [in] *dataSizeRcvd" - the length of data received in bytes
+ *
+ * Global Data :
+ *             - None.
+ *                        
+ * This API is only used in polled mode to perform the slave read or general call
+ * receive data. It will continuously store the data received into bufP until
+ * complete or until bufP is full in which it will return
+ * IX_I2C_SLAVE_OR_GEN_READ_BUFFER_FULL. If in interrupt mode, the callback will be
+ * used.
+ *
+ * @return 
+ *      - IX_I2C_SUCCESS - The I2C driver transferred the data successfully.
+ *             - IX_I2C_SLAVE_OR_GEN_READ_BUFFER_FULL - The I2C driver has ran out of
+ *                     space to store the received data.
+ *             - IX_I2C_SLAVE_OR_GEN_READ_ERROR - The I2C driver didn't manage to
+ *                     detect the IDBR Rx Full bit
+ *      - IX_I2C_DATA_SIZE_ZERO - bufSize passed in is zero, which is invalid
+ *             - IX_I2C_SLAVE_NO_BUFFER - buffer pointer is NULL
+ *      - IX_I2C_NULL_POINTER - dataSizeRcvd is NULL
+ *             - IX_I2C_NOT_INIT - I2C not init yet.
+ *              
+ * @li   Reentrant    : no
+ * @li   ISR Callable : no
+ *
+ */
+PUBLIC IX_I2C_STATUS
+ixI2cDrvSlaveOrGenDataReceive(
+       char *bufP,
+       UINT32 bufSize,
+       UINT32 *dataSizeRcvd);
+
+/**
+ * @ingroup IxI2cDrv
+ * 
+ * @fn ixI2cDrvSlaveDataTransmit(
+       char *bufP,
+       UINT32 dataSize,
+       UINT32 *dataSizeXmtd)
+ *
+ * @brief Performs the slave write data transfer
+ *
+ * @param      "char [in] *bufP" - the pointer to the buffer for data to be
+ *                             transmitted
+ *                     "UINT32 [in] bufSize" - the buffer size allocated
+ *                     "UINT32 [in] *dataSizeRcvd" - the length of data trasnmitted in
+ *                             bytes
+ *
+ * Global Data :
+ *             - None.
+ *                        
+ * This API is only used in polled mode to perform the slave transmit data. It
+ * will continuously transmit the data from bufP until complete or until bufP
+ * is empty in which it will return IX_I2C_SLAVE_WRITE_BUFFER_EMPTY. If in
+ * interrupt mode, the callback will be used.
+ *
+ * @return 
+ *      - IX_I2C_SUCCESS - The I2C driver transferred the data successfully.
+ *      - IX_I2C_SLAVE_WRITE_BUFFER_EMPTY - The I2C driver needs more data to
+ *                     transmit.
+ *      - IX_I2C_SLAVE_WRITE_ERROR -The I2C driver didn't manage to detect the
+ *          IDBR Tx empty bit or the slave stop bit.
+ *      - IX_I2C_DATA_SIZE_ZERO - dataSize passed in is zero, which is invalid
+ *             - IX_I2C_SLAVE_NO_BUFFER - buffer pointer is NULL
+ *      - IX_I2C_NULL_POINTER - dataSizeXmtd is NULL
+ *             - IX_I2C_NOT_INIT - I2C not init yet.
+ *              
+ * @li   Reentrant    : no
+ * @li   ISR Callable : no
+ *
+ */
+PUBLIC IX_I2C_STATUS
+ixI2cDrvSlaveDataTransmit(
+       char *bufP,
+       UINT32 dataSize,
+       UINT32 *dataSizeXmtd);
+
+/**
+ * @ingroup IxI2cDrv
+ * 
+ * @fn ixI2cDrvSlaveOrGenCallBufReplenish(
+       char *bufP,
+       UINT32 bufSize)
+ *
+ * @brief Replenishes the buffer which stores buffer info for both slave and
+ *                     general call
+ *
+ * @param      "char [in] *bufP" - pointer to the buffer allocated
+ *                     "UINT32 [in] bufSize" - size of the buffer
+ *
+ * Global Data :
+ *             - None.
+ *                        
+ * This API is only used in interrupt mode for replenishing the same buffer
+ * that is used by both slave and generall call by updating the buffer info
+ * with new info and clearing previous offsets set by previous transfers.
+ *
+ * @return 
+ *      - None
+ *              
+ * @li   Reentrant    : no
+ * @li   ISR Callable : no
+ *
+ */
+PUBLIC void
+ixI2cDrvSlaveOrGenCallBufReplenish(
+       char *bufP,
+       UINT32 bufSize);
+
+/**
+ * @ingroup IxI2cDrv
+ * 
+ * @fn ixI2cDrvStatsGet(IxI2cStatsCounters *I2cStats)
+ *
+ * @brief Returns the I2C Statistics through the pointer passed in
+ *
+ * @param - "IxI2cStatsCounters [out] *I2cStats" - I2C statistics counter will
+ *                     be read and written to the location pointed by this pointer.
+ *
+ * Global Data :
+ *             - None.
+ *                        
+ * This API will return the statistics counters of the I2C driver.
+ *
+ * @return 
+ *      - IX_I2C_NULL_POINTER - pointer passed in is NULL
+ *             - IX_I2C_SUCCESS - successfully obtained I2C statistics
+ *              
+ * @li   Reentrant    : yes
+ * @li   ISR Callable : no
+ *
+ */
+PUBLIC IX_I2C_STATUS
+ixI2cDrvStatsGet(IxI2cStatsCounters *I2cStats);
+
+/**
+ * @ingroup IxI2cDrv
+ * 
+ * @fn ixI2cDrvStatsReset(void)
+ *
+ * @brief Reset I2C statistics counters.
+ *
+ * @param - None
+ *
+ * Global Data :
+ *             - None.
+ *                        
+ * This API will reset the statistics counters of the I2C driver.
+ *
+ * @return 
+ *      - None
+ *              
+ * @li   Reentrant    : yes
+ * @li   ISR Callable : no
+ *
+ */
+PUBLIC void
+ixI2cDrvStatsReset(void);
+
+/**
+ * @ingroup IxI2cDrv
+ * 
+ * @fn ixI2cDrvShow(void)
+ *
+ * @brief Displays the I2C status register and the statistics counter.
+ *
+ * @param - None
+ *
+ * Global Data :
+ *             - None.
+ *                        
+ * This API will display the I2C Status register and is useful if any error
+ * occurs. It displays the detection of bus error, slave address, general call,
+ * address, IDBR receive full, IDBR transmit empty, arbitration loss, slave
+ * STOP signal, I2C bus busy, unit busy, ack/nack, and read/write mode. It will
+ * also call the ixI2cDrvGetStats and then display the statistics counter.
+ *
+ * @return 
+ *             - IX_I2C_SUCCESS - successfully displayed statistics and status register
+ *             - IX_I2C_NOT_INIT - I2C not init yet.
+ *              
+ * @li   Reentrant    : yes
+ * @li   ISR Callable : no
+ *
+ */
+PUBLIC IX_I2C_STATUS
+ixI2cDrvShow(void);
+
+/**
+ * @ingroup IxI2cDrv
+ * 
+ * @fn ixI2cDrvDelayTypeSelect (IxI2cDelayMode delayMechanismSelect)
+ *
+ * @brief Sets the delay type of either looping delay or OS scheduler delay
+ *          according to the argument provided.
+ *
+ * @param - "IxI2cDelayMode [in] delayTypeSelect" - the I2C delay type selected
+ *
+ * Global Data :
+ *             - None.
+ *                        
+ * This API will set the delay type used by the I2C Driver to either looping
+ * delay or OS scheduler delay.
+ *
+ * @return 
+ *             - None
+ *              
+ * @li   Reentrant    : yes
+ * @li   ISR Callable : no
+ *
+ */
+PUBLIC void
+ixI2cDrvDelayTypeSelect (IxI2cDelayMode delayTypeSelect);
+
+#endif /* __ixp46X */
+#endif /* IXI2CDRV_H */
diff -Naur u-boot-2009.03_orig/cpu/ixp/npe/include/IxOsalMemAccess.h u-boot-2009.03/cpu/ixp/npe/include/IxOsalMemAccess.h
--- u-boot-2009.03_orig/cpu/ixp/npe/include/IxOsalMemAccess.h   2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/cpu/ixp/npe/include/IxOsalMemAccess.h        2009-03-31 14:51:21.693033600 -0700
@@ -1,494 +1,494 @@
-/** 
- * @file IxOsalMemAccess.h
- * 
- * @brief Header file for memory access
- * 
- * @par
- * @version $Revision: 1.0 $
- * 
- * @par
- * IXP400 SW Release version 2.0
- * 
- * -- Copyright Notice --
- * 
- * @par
- * Copyright 2001-2005, Intel Corporation.
- * All rights reserved.
- * 
- * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
- * @par
- * -- End of Copyright Notice --
- */
-
-#ifndef IxOsalMemAccess_H
-#define IxOsalMemAccess_H
-
-
-/* Global BE switch
- * 
- *  Should be set only in BE mode and only if the component uses I/O memory.
- */
-
-#if defined (__BIG_ENDIAN)
-
-#define IX_OSAL_BE_MAPPING
-
-#endif /* Global switch */
-
-
-/* By default only static memory maps in use;
-   define IX_OSAL_DYNAMIC_MEMORY_MAP per component if dynamic maps are
-   used instead in that component */
-#define IX_OSAL_STATIC_MEMORY_MAP
-
-
-/* 
- * SDRAM coherency mode
- * Must be defined to BE, LE_DATA_COHERENT or LE_ADDRESS_COHERENT.
- * The mode changes depending on OS 
- */
-#if defined (IX_OSAL_LINUX_BE) || defined (IX_OSAL_VXWORKS_BE)
-
-#define IX_SDRAM_BE
-
-#elif defined (IX_OSAL_VXWORKS_LE)
-
-#define IX_SDRAM_LE_DATA_COHERENT
-
-#elif defined (IX_OSAL_LINUX_LE)
-
-#define IX_SDRAM_LE_DATA_COHERENT
-
-#elif defined (IX_OSAL_WINCE_LE)
-
-#define IX_SDRAM_LE_DATA_COHERENT
-
-#elif defined (IX_OSAL_EBOOT_LE)
-
-#define IX_SDRAM_LE_ADDRESS_COHERENT
-
-#endif
-
-
-
-
-/**************************************
- * Retrieve current component mapping *
- **************************************/
-
-/*
- * Only use customized mapping for LE. 
- * 
- */
-#if defined (IX_OSAL_VXWORKS_LE) || defined (IX_OSAL_LINUX_LE) || defined (IX_OSAL_WINCE_LE) || defined (IX_OSAL_EBOOT_LE)
-
-#include "IxOsalOsIxp400CustomizedMapping.h"
-
-#endif
-
-
-/*******************************************************************
- * Turn off IX_STATIC_MEMORY map for components using dynamic maps *
- *******************************************************************/
-#ifdef IX_OSAL_DYNAMIC_MEMORY_MAP
-
-#undef IX_OSAL_STATIC_MEMORY_MAP
-
-#endif
-
-
-/************************************************************
- * Turn off BE access for components using LE or no mapping *
- ************************************************************/
-
-#if ( defined (IX_OSAL_LE_AC_MAPPING) || defined (IX_OSAL_LE_DC_MAPPING) || defined (IX_OSAL_NO_MAPPING) )
-
-#undef IX_OSAL_BE_MAPPING
-
-#endif
-
-
-/*****************
- * Safety checks *
- *****************/
-
-/* Default to no_mapping */
-#if !defined (IX_OSAL_BE_MAPPING) && !defined (IX_OSAL_LE_AC_MAPPING) && !defined (IX_OSAL_LE_DC_MAPPING) && !defined (IX_OSAL_NO_MAPPING)
-
-#define IX_OSAL_NO_MAPPING
-
-#endif /* check at least one mapping */
-
-/* No more than one mapping can be defined for a component */
-#if   (defined (IX_OSAL_BE_MAPPING)    && defined (IX_OSAL_LE_AC_MAPPING))  \
-    ||(defined (IX_OSAL_BE_MAPPING)    && defined (IX_OSAL_LE_DC_MAPPING))  \
-    ||(defined (IX_OSAL_BE_MAPPING)    && defined (IX_OSAL_NO_MAPPING))     \
-    ||(defined (IX_OSAL_LE_DC_MAPPING) && defined (IX_OSAL_NO_MAPPING))     \
-    ||(defined (IX_OSAL_LE_DC_MAPPING) && defined (IX_OSAL_LE_AC_MAPPING))     \
-    ||(defined (IX_OSAL_LE_AC_MAPPING) && defined (IX_OSAL_NO_MAPPING))
-
-
-#ifdef IX_OSAL_BE_MAPPING
-#warning IX_OSAL_BE_MAPPING is defined
-#endif
-
-#ifdef IX_OSAL_LE_AC_MAPPING
-#warning IX_OSAL_LE_AC_MAPPING is defined
-#endif
-
-#ifdef IX_OSAL_LE_DC_MAPPING
-#warning IX_OSAL_LE_DC_MAPPING is defined
-#endif
-
-#ifdef IX_OSAL_NO_MAPPING
-#warning IX_OSAL_NO_MAPPING is defined
-#endif
-
-#error More than one I/O mapping is defined, please check your component mapping
-
-#endif /* check at most one mapping */
-
-
-/* Now set IX_OSAL_COMPONENT_MAPPING */
-
-#ifdef IX_OSAL_BE_MAPPING
-#define IX_OSAL_COMPONENT_MAPPING IX_OSAL_BE
-#endif
-
-#ifdef IX_OSAL_LE_AC_MAPPING
-#define IX_OSAL_COMPONENT_MAPPING IX_OSAL_LE_AC
-#endif
-
-#ifdef IX_OSAL_LE_DC_MAPPING
-#define IX_OSAL_COMPONENT_MAPPING IX_OSAL_LE_DC
-#endif
-
-#ifdef IX_OSAL_NO_MAPPING
-#define IX_OSAL_COMPONENT_MAPPING IX_OSAL_LE
-#endif
-
-
-/* SDRAM coherency should be defined */
-#if !defined (IX_SDRAM_BE) && !defined (IX_SDRAM_LE_DATA_COHERENT) && !defined (IX_SDRAM_LE_ADDRESS_COHERENT)
-
-#error SDRAM coherency must be defined
-
-#endif /* SDRAM coherency must be defined */
-
-/* SDRAM coherency cannot be defined in several ways */
-#if (defined (IX_SDRAM_BE) && (defined (IX_SDRAM_LE_DATA_COHERENT) || defined (IX_SDRAM_LE_ADDRESS_COHERENT))) \
-    || (defined (IX_SDRAM_LE_DATA_COHERENT) && (defined (IX_SDRAM_BE) || defined (IX_SDRAM_LE_ADDRESS_COHERENT))) \
-    || (defined (IX_SDRAM_LE_ADDRESS_COHERENT) && (defined (IX_SDRAM_BE) || defined (IX_SDRAM_LE_DATA_COHERENT)))
-
-#error SDRAM coherency cannot be defined in more than one way
-
-#endif /* SDRAM coherency must be defined exactly once */
-
-
-/*********************
- * Read/write macros *
- *********************/
-
-/* WARNING - except for addition of special cookie read/write macros (see below)
-             these macros are NOT user serviceable. Please do not modify */
-
-#define IX_OSAL_READ_LONG_RAW(wAddr)          (*(wAddr))
-#define IX_OSAL_READ_SHORT_RAW(sAddr)         (*(sAddr))
-#define IX_OSAL_READ_BYTE_RAW(bAddr)          (*(bAddr))
-#define IX_OSAL_WRITE_LONG_RAW(wAddr, wData)  (*(wAddr) = (wData))
-#define IX_OSAL_WRITE_SHORT_RAW(sAddr,sData)  (*(sAddr) = (sData))
-#define IX_OSAL_WRITE_BYTE_RAW(bAddr, bData)  (*(bAddr) = (bData))
-
-#ifdef __linux
-
-/* Linux - specific cookie reads/writes. 
-  Redefine per OS if dynamic memory maps are used
-  and I/O memory is accessed via functions instead of raw pointer access. */
-
-#define IX_OSAL_READ_LONG_COOKIE(wCookie)           (readl((UINT32) (wCookie) ))
-#define IX_OSAL_READ_SHORT_COOKIE(sCookie)          (readw((UINT32) (sCookie) ))
-#define IX_OSAL_READ_BYTE_COOKIE(bCookie)           (readb((UINT32) (bCookie) ))
-#define IX_OSAL_WRITE_LONG_COOKIE(wCookie, wData)   (writel(wData, (UINT32) (wCookie) ))
-#define IX_OSAL_WRITE_SHORT_COOKIE(sCookie, sData)  (writew(sData, (UINT32) (sCookie) ))
-#define IX_OSAL_WRITE_BYTE_COOKIE(bCookie, bData)   (writeb(bData, (UINT32) (bCookie) ))
-
-#endif /* linux */
-
-#ifdef __wince
-
-/* WinCE - specific cookie reads/writes. */
-
-static __inline__ UINT32
-ixOsalWinCEReadLCookie (volatile UINT32 * lCookie)
-{
-    return *lCookie;
-}
-
-static __inline__ UINT16
-ixOsalWinCEReadWCookie (volatile UINT16 * wCookie)
-{
-#if 0
-    UINT32 auxVal = *((volatile UINT32 *) wCookie);
-    if ((unsigned) wCookie & 3)
-       return (UINT16) (auxVal >> 16);
-    else
-       return (UINT16) (auxVal & 0xffff);
-#else
-    return *wCookie;
-#endif
-}
-
-static __inline__ UINT8
-ixOsalWinCEReadBCookie (volatile UINT8 * bCookie)
-{
-#if 0
-    UINT32 auxVal = *((volatile UINT32 *) bCookie);
-    return (UINT8) ((auxVal >> (3 - (((unsigned) bCookie & 3) << 3)) & 0xff));
-#else
-    return *bCookie;
-#endif
-}
-
-static __inline__ void
-ixOsalWinCEWriteLCookie (volatile UINT32 * lCookie, UINT32 lVal)
-{
-    *lCookie = lVal;
-}
-
-static __inline__ void
-ixOsalWinCEWriteWCookie (volatile UINT16 * wCookie, UINT16 wVal)
-{
-#if 0
-    volatile UINT32 *auxCookie =
-       (volatile UINT32 *) ((unsigned) wCookie & ~3);
-    if ((unsigned) wCookie & 3)
-    {
-       *auxCookie &= 0xffff;
-       *auxCookie |= (UINT32) wVal << 16;
-    }
-    else
-    {
-       *auxCookie &= ~0xffff;
-       *auxCookie |= (UINT32) wVal & 0xffff;
-    }
-#else
-    *wCookie = wVal;
-#endif
-}
-
-static __inline__ void
-ixOsalWinCEWriteBCookie (volatile UINT8 * bCookie, UINT8 bVal)
-{
-#if 0
-    volatile UINT32 *auxCookie =
-       (volatile UINT32 *) ((unsigned) bCookie & ~3);
-    *auxCookie &= 0xff << (3 - (((unsigned) bCookie & 3) << 3));
-    *auxCookie |= (UINT32) bVal << (3 - (((unsigned) bCookie & 3) << 3));
-#else
-    *bCookie = bVal;
-#endif
-}
-
-
-#define IX_OSAL_READ_LONG_COOKIE(wCookie)           (ixOsalWinCEReadLCookie(wCookie))
-#define IX_OSAL_READ_SHORT_COOKIE(sCookie)          (ixOsalWinCEReadWCookie(sCookie))
-#define IX_OSAL_READ_BYTE_COOKIE(bCookie)           (ixOsalWinCEReadBCookie(bCookie))
-#define IX_OSAL_WRITE_LONG_COOKIE(wCookie, wData)   (ixOsalWinCEWriteLCookie(wCookie, wData))
-#define IX_OSAL_WRITE_SHORT_COOKIE(sCookie, sData)  (ixOsalWinCEWriteWCookie(sCookie, sData))
-#define IX_OSAL_WRITE_BYTE_COOKIE(bCookie, bData)   (ixOsalWinCEWriteBCookie(bCookie, bData))
-
-#endif /* wince */
-
-#if defined (__vxworks) || (defined (__linux) && defined (IX_OSAL_STATIC_MEMORY_MAP)) || \
-                           (defined (__wince) && defined (IX_OSAL_STATIC_MEMORY_MAP))
-
-#define IX_OSAL_READ_LONG_IO(wAddr)            IX_OSAL_READ_LONG_RAW(wAddr)
-#define IX_OSAL_READ_SHORT_IO(sAddr)           IX_OSAL_READ_SHORT_RAW(sAddr)
-#define IX_OSAL_READ_BYTE_IO(bAddr)            IX_OSAL_READ_BYTE_RAW(bAddr)
-#define IX_OSAL_WRITE_LONG_IO(wAddr, wData)    IX_OSAL_WRITE_LONG_RAW(wAddr, wData)
-#define IX_OSAL_WRITE_SHORT_IO(sAddr, sData)   IX_OSAL_WRITE_SHORT_RAW(sAddr, sData)
-#define IX_OSAL_WRITE_BYTE_IO(bAddr, bData)    IX_OSAL_WRITE_BYTE_RAW(bAddr, bData)
-
-#elif (defined (__linux) && !defined (IX_OSAL_STATIC_MEMORY_MAP)) || \
-      (defined (__wince) && !defined (IX_OSAL_STATIC_MEMORY_MAP))
-
-#ifndef __wince
-#include <asm/io.h>
-#endif /* ndef __wince */
-
-#define IX_OSAL_READ_LONG_IO(wAddr)            IX_OSAL_READ_LONG_COOKIE(wAddr)
-#define IX_OSAL_READ_SHORT_IO(sAddr)           IX_OSAL_READ_SHORT_COOKIE(sAddr)
-#define IX_OSAL_READ_BYTE_IO(bAddr)            IX_OSAL_READ_BYTE_COOKIE(bAddr)
-#define IX_OSAL_WRITE_LONG_IO(wAddr, wData)    IX_OSAL_WRITE_LONG_COOKIE(wAddr, wData)
-#define IX_OSAL_WRITE_SHORT_IO(sAddr, sData)   IX_OSAL_WRITE_SHORT_COOKIE(sAddr, sData)
-#define IX_OSAL_WRITE_BYTE_IO(bAddr, bData)    IX_OSAL_WRITE_BYTE_COOKIE(bAddr, bData)
-
-#endif
-
-/* Define BE macros */
-#define IX_OSAL_READ_LONG_BE(wAddr)          IX_OSAL_BE_BUSTOXSL(IX_OSAL_READ_LONG_IO((volatile UINT32 *) (wAddr) ))
-#define IX_OSAL_READ_SHORT_BE(sAddr)         IX_OSAL_BE_BUSTOXSS(IX_OSAL_READ_SHORT_IO((volatile UINT16 *) (sAddr) ))
-#define IX_OSAL_READ_BYTE_BE(bAddr)          IX_OSAL_BE_BUSTOXSB(IX_OSAL_READ_BYTE_IO((volatile UINT8 *) (bAddr) ))
-#define IX_OSAL_WRITE_LONG_BE(wAddr, wData)  IX_OSAL_WRITE_LONG_IO((volatile UINT32 *) (wAddr), IX_OSAL_BE_XSTOBUSL((UINT32) (wData) ))
-#define IX_OSAL_WRITE_SHORT_BE(sAddr, sData) IX_OSAL_WRITE_SHORT_IO((volatile UINT16 *) (sAddr), IX_OSAL_BE_XSTOBUSS((UINT16) (sData) ))
-#define IX_OSAL_WRITE_BYTE_BE(bAddr, bData)  IX_OSAL_WRITE_BYTE_IO((volatile UINT8 *) (bAddr), IX_OSAL_BE_XSTOBUSB((UINT8) (bData) ))
-
-/* Define LE AC macros */
-#define IX_OSAL_READ_LONG_LE_AC(wAddr)          IX_OSAL_READ_LONG_IO((volatile UINT32 *) IX_OSAL_LE_AC_BUSTOXSL((UINT32) (wAddr) ))
-#define IX_OSAL_READ_SHORT_LE_AC(sAddr)         IX_OSAL_READ_SHORT_IO((volatile UINT16 *) IX_OSAL_LE_AC_BUSTOXSS((UINT32) (sAddr) ))
-#define IX_OSAL_READ_BYTE_LE_AC(bAddr)          IX_OSAL_READ_BYTE_IO((volatile UINT8 *) IX_OSAL_LE_AC_BUSTOXSB((UINT32) (bAddr) ))
-#define IX_OSAL_WRITE_LONG_LE_AC(wAddr, wData)  IX_OSAL_WRITE_LONG_IO((volatile UINT32 *) IX_OSAL_LE_AC_XSTOBUSL((UINT32) (wAddr) ), (UINT32) (wData))
-#define IX_OSAL_WRITE_SHORT_LE_AC(sAddr, sData) IX_OSAL_WRITE_SHORT_IO((volatile UINT16 *) IX_OSAL_LE_AC_XSTOBUSS((UINT32) (sAddr) ), (UINT16) (sData))
-#define IX_OSAL_WRITE_BYTE_LE_AC(bAddr, bData)  IX_OSAL_WRITE_BYTE_IO((volatile UINT8 *) IX_OSAL_LE_AC_XSTOBUSB((UINT32) (bAddr) ), (UINT8) (bData))
-
-
-/* Inline functions are required here to avoid reading the same I/O location 2 or 4 times for the byte swap */
-static __inline__ UINT32
-ixOsalDataCoherentLongReadSwap (volatile UINT32 * wAddr)
-{
-    UINT32 wData = IX_OSAL_READ_LONG_IO (wAddr);
-    return IX_OSAL_LE_DC_BUSTOXSL (wData);
-}
-
-static __inline__ UINT16
-ixOsalDataCoherentShortReadSwap (volatile UINT16 * sAddr)
-{
-    UINT16 sData = IX_OSAL_READ_SHORT_IO (sAddr);
-    return IX_OSAL_LE_DC_BUSTOXSS (sData);
-}
-
-static __inline__ void
-ixOsalDataCoherentLongWriteSwap (volatile UINT32 * wAddr, UINT32 wData)
-{
-    wData = IX_OSAL_LE_DC_XSTOBUSL (wData);
-    IX_OSAL_WRITE_LONG_IO (wAddr, wData);
-}
-
-static __inline__ void
-ixOsalDataCoherentShortWriteSwap (volatile UINT16 * sAddr, UINT16 sData)
-{
-    sData = IX_OSAL_LE_DC_XSTOBUSS (sData);
-    IX_OSAL_WRITE_SHORT_IO (sAddr, sData);
-}
-
-/* Define LE DC macros */
-
-#define IX_OSAL_READ_LONG_LE_DC(wAddr)          ixOsalDataCoherentLongReadSwap((volatile UINT32 *) (wAddr) )
-#define IX_OSAL_READ_SHORT_LE_DC(sAddr)         ixOsalDataCoherentShortReadSwap((volatile UINT16 *) (sAddr) )
-#define IX_OSAL_READ_BYTE_LE_DC(bAddr)          IX_OSAL_LE_DC_BUSTOXSB(IX_OSAL_READ_BYTE_IO((volatile UINT8 *) (bAddr) ))
-#define IX_OSAL_WRITE_LONG_LE_DC(wAddr, wData)  ixOsalDataCoherentLongWriteSwap((volatile UINT32 *) (wAddr), (UINT32) (wData))
-#define IX_OSAL_WRITE_SHORT_LE_DC(sAddr, sData) ixOsalDataCoherentShortWriteSwap((volatile UINT16 *) (sAddr), (UINT16) (sData))
-#define IX_OSAL_WRITE_BYTE_LE_DC(bAddr, bData)  IX_OSAL_WRITE_BYTE_IO((volatile UINT8 *) (bAddr), IX_OSAL_LE_DC_XSTOBUSB((UINT8) (bData)))
-
-#if defined (IX_OSAL_BE_MAPPING)
-
-#define IX_OSAL_READ_LONG(wAddr)            IX_OSAL_READ_LONG_BE(wAddr) 
-#define IX_OSAL_READ_SHORT(sAddr)              IX_OSAL_READ_SHORT_BE(sAddr) 
-#define IX_OSAL_READ_BYTE(bAddr)               IX_OSAL_READ_BYTE_BE(bAddr) 
-#define IX_OSAL_WRITE_LONG(wAddr, wData)       IX_OSAL_WRITE_LONG_BE(wAddr, wData)
-#define IX_OSAL_WRITE_SHORT(sAddr, sData)      IX_OSAL_WRITE_SHORT_BE(sAddr, sData)
-#define IX_OSAL_WRITE_BYTE(bAddr, bData)       IX_OSAL_WRITE_BYTE_BE(bAddr, bData)
-
-#elif defined (IX_OSAL_LE_AC_MAPPING)
-
-#define IX_OSAL_READ_LONG(wAddr)            IX_OSAL_READ_LONG_LE_AC(wAddr) 
-#define IX_OSAL_READ_SHORT(sAddr)              IX_OSAL_READ_SHORT_LE_AC(sAddr) 
-#define IX_OSAL_READ_BYTE(bAddr)               IX_OSAL_READ_BYTE_LE_AC(bAddr) 
-#define IX_OSAL_WRITE_LONG(wAddr, wData)       IX_OSAL_WRITE_LONG_LE_AC(wAddr, wData)
-#define IX_OSAL_WRITE_SHORT(sAddr, sData)      IX_OSAL_WRITE_SHORT_LE_AC(sAddr, sData)
-#define IX_OSAL_WRITE_BYTE(bAddr, bData)       IX_OSAL_WRITE_BYTE_LE_AC(bAddr, bData)
-
-#elif defined (IX_OSAL_LE_DC_MAPPING)
-
-#define IX_OSAL_READ_LONG(wAddr)            IX_OSAL_READ_LONG_LE_DC(wAddr) 
-#define IX_OSAL_READ_SHORT(sAddr)              IX_OSAL_READ_SHORT_LE_DC(sAddr) 
-#define IX_OSAL_READ_BYTE(bAddr)               IX_OSAL_READ_BYTE_LE_DC(bAddr) 
-#define IX_OSAL_WRITE_LONG(wAddr, wData)       IX_OSAL_WRITE_LONG_LE_DC(wAddr, wData)
-#define IX_OSAL_WRITE_SHORT(sAddr, sData)      IX_OSAL_WRITE_SHORT_LE_DC(sAddr, sData)
-#define IX_OSAL_WRITE_BYTE(bAddr, bData)       IX_OSAL_WRITE_BYTE_LE_DC(bAddr, bData)
-
-#endif   /* End of BE and LE coherency mode switch */
-
-
-/* Reads/writes to and from memory shared with NPEs - depends on the SDRAM coherency */
-
-#if defined (IX_SDRAM_BE)
-
-#define IX_OSAL_READ_BE_SHARED_LONG(wAddr)            IX_OSAL_READ_LONG_RAW(wAddr)
-#define IX_OSAL_READ_BE_SHARED_SHORT(sAddr)           IX_OSAL_READ_SHORT_RAW(sAddr)
-#define IX_OSAL_READ_BE_SHARED_BYTE(bAddr)            IX_OSAL_READ_BYTE_RAW(bAddr)
-
-#define IX_OSAL_WRITE_BE_SHARED_LONG(wAddr, wData)    IX_OSAL_WRITE_LONG_RAW(wAddr, wData)
-#define IX_OSAL_WRITE_BE_SHARED_SHORT(sAddr, sData)   IX_OSAL_WRITE_SHORT_RAW(sAddr, sData)
-#define IX_OSAL_WRITE_BE_SHARED_BYTE(bAddr, bData)    IX_OSAL_WRITE_BYTE_RAW(bAddr, bData)
-
-#define IX_OSAL_SWAP_BE_SHARED_LONG(wData)            (wData)
-#define IX_OSAL_SWAP_BE_SHARED_SHORT(sData)           (sData)
-#define IX_OSAL_SWAP_BE_SHARED_BYTE(bData)            (bData)
-
-#elif defined (IX_SDRAM_LE_ADDRESS_COHERENT)
-
-#define IX_OSAL_READ_BE_SHARED_LONG(wAddr)            IX_OSAL_READ_LONG_RAW(wAddr)
-#define IX_OSAL_READ_BE_SHARED_SHORT(sAddr)           IX_OSAL_READ_SHORT_RAW(IX_OSAL_SWAP_SHORT_ADDRESS(sAddr))
-#define IX_OSAL_READ_BE_SHARED_BYTE(bAddr)            IX_OSAL_READ_BYTE_RAW(IX_OSAL_SWAP_BYTE_ADDRESS(bAddr))
-
-#define IX_OSAL_WRITE_BE_SHARED_LONG(wAddr, wData)    IX_OSAL_WRITE_LONG_RAW(wAddr, wData)
-#define IX_OSAL_WRITE_BE_SHARED_SHORT(sAddr, sData)   IX_OSAL_WRITE_SHORT_RAW(IX_OSAL_SWAP_SHORT_ADDRESS(sAddr), sData)
-#define IX_OSAL_WRITE_BE_SHARED_BYTE(bAddr, bData)    IX_OSAL_WRITE_BYTE_RAW(IX_OSAL_SWAP_BYTE_ADDRESS(bAddr), bData)
-
-#define IX_OSAL_SWAP_BE_SHARED_LONG(wData)            (wData)
-#define IX_OSAL_SWAP_BE_SHARED_SHORT(sData)           (sData)
-#define IX_OSAL_SWAP_BE_SHARED_BYTE(bData)            (bData)
-
-#elif defined (IX_SDRAM_LE_DATA_COHERENT)
-
-#define IX_OSAL_READ_BE_SHARED_LONG(wAddr)            IX_OSAL_SWAP_LONG(IX_OSAL_READ_LONG_RAW(wAddr))
-#define IX_OSAL_READ_BE_SHARED_SHORT(sAddr)           IX_OSAL_SWAP_SHORT(IX_OSAL_READ_SHORT_RAW(sAddr))
-#define IX_OSAL_READ_BE_SHARED_BYTE(bAddr)            IX_OSAL_READ_BYTE_RAW(bAddr)
-
-#define IX_OSAL_WRITE_BE_SHARED_LONG(wAddr, wData)    IX_OSAL_WRITE_LONG_RAW(wAddr, IX_OSAL_SWAP_LONG(wData))
-#define IX_OSAL_WRITE_BE_SHARED_SHORT(sAddr, sData)   IX_OSAL_WRITE_SHORT_RAW(sAddr, IX_OSAL_SWAP_SHORT(sData))
-#define IX_OSAL_WRITE_BE_SHARED_BYTE(bAddr, bData)    IX_OSAL_WRITE_BYTE_RAW(bAddr, bData)
-
-#define IX_OSAL_SWAP_BE_SHARED_LONG(wData)            IX_OSAL_SWAP_LONG(wData)
-#define IX_OSAL_SWAP_BE_SHARED_SHORT(sData)           IX_OSAL_SWAP_SHORT(sData)
-
-#endif
-
-
-#define IX_OSAL_COPY_BE_SHARED_LONG_ARRAY(wDestAddr, wSrcAddr, wCount) \
-  { \
-    UINT32 i; \
-    \
-    for ( i = 0 ; i < wCount ; i++ ) \
-    { \
-      * (((UINT32 *) wDestAddr) + i) = IX_OSAL_READ_BE_SHARED_LONG(((UINT32 *) wSrcAddr) + i); \
-    }; \
-  };
-
-#endif /* IxOsalMemAccess_H */
+/** 
+ * @file IxOsalMemAccess.h
+ * 
+ * @brief Header file for memory access
+ * 
+ * @par
+ * @version $Revision: 1.1.1.1 $
+ * 
+ * @par
+ * IXP400 SW Release version 2.0
+ * 
+ * -- Copyright Notice --
+ * 
+ * @par
+ * Copyright 2001-2005, Intel Corporation.
+ * All rights reserved.
+ * 
+ * @par
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the Intel Corporation nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ * 
+ * @par
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * 
+ * @par
+ * -- End of Copyright Notice --
+ */
+
+#ifndef IxOsalMemAccess_H
+#define IxOsalMemAccess_H
+
+
+/* Global BE switch
+ * 
+ *  Should be set only in BE mode and only if the component uses I/O memory.
+ */
+
+#if defined (__BIG_ENDIAN)
+
+#define IX_OSAL_BE_MAPPING
+
+#endif /* Global switch */
+
+
+/* By default only static memory maps in use;
+   define IX_OSAL_DYNAMIC_MEMORY_MAP per component if dynamic maps are
+   used instead in that component */
+#define IX_OSAL_STATIC_MEMORY_MAP
+
+
+/* 
+ * SDRAM coherency mode
+ * Must be defined to BE, LE_DATA_COHERENT or LE_ADDRESS_COHERENT.
+ * The mode changes depending on OS 
+ */
+#if defined (IX_OSAL_LINUX_BE) || defined (IX_OSAL_VXWORKS_BE)
+
+#define IX_SDRAM_BE
+
+#elif defined (IX_OSAL_VXWORKS_LE)
+
+#define IX_SDRAM_LE_DATA_COHERENT
+
+#elif defined (IX_OSAL_LINUX_LE)
+
+#define IX_SDRAM_LE_DATA_COHERENT
+
+#elif defined (IX_OSAL_WINCE_LE)
+
+#define IX_SDRAM_LE_DATA_COHERENT
+
+#elif defined (IX_OSAL_EBOOT_LE)
+
+#define IX_SDRAM_LE_ADDRESS_COHERENT
+
+#endif
+
+
+
+
+/**************************************
+ * Retrieve current component mapping *
+ **************************************/
+
+/*
+ * Only use customized mapping for LE. 
+ * 
+ */
+#if defined (IX_OSAL_VXWORKS_LE) || defined (IX_OSAL_LINUX_LE) || defined (IX_OSAL_WINCE_LE) || defined (IX_OSAL_EBOOT_LE)
+
+#include "IxOsalOsIxp400CustomizedMapping.h"
+
+#endif
+
+
+/*******************************************************************
+ * Turn off IX_STATIC_MEMORY map for components using dynamic maps *
+ *******************************************************************/
+#ifdef IX_OSAL_DYNAMIC_MEMORY_MAP
+
+#undef IX_OSAL_STATIC_MEMORY_MAP
+
+#endif
+
+
+/************************************************************
+ * Turn off BE access for components using LE or no mapping *
+ ************************************************************/
+
+#if ( defined (IX_OSAL_LE_AC_MAPPING) || defined (IX_OSAL_LE_DC_MAPPING) || defined (IX_OSAL_NO_MAPPING) )
+
+#undef IX_OSAL_BE_MAPPING
+
+#endif
+
+
+/*****************
+ * Safety checks *
+ *****************/
+
+/* Default to no_mapping */
+#if !defined (IX_OSAL_BE_MAPPING) && !defined (IX_OSAL_LE_AC_MAPPING) && !defined (IX_OSAL_LE_DC_MAPPING) && !defined (IX_OSAL_NO_MAPPING)
+
+#define IX_OSAL_NO_MAPPING
+
+#endif /* check at least one mapping */
+
+/* No more than one mapping can be defined for a component */
+#if   (defined (IX_OSAL_BE_MAPPING)    && defined (IX_OSAL_LE_AC_MAPPING))  \
+    ||(defined (IX_OSAL_BE_MAPPING)    && defined (IX_OSAL_LE_DC_MAPPING))  \
+    ||(defined (IX_OSAL_BE_MAPPING)    && defined (IX_OSAL_NO_MAPPING))     \
+    ||(defined (IX_OSAL_LE_DC_MAPPING) && defined (IX_OSAL_NO_MAPPING))     \
+    ||(defined (IX_OSAL_LE_DC_MAPPING) && defined (IX_OSAL_LE_AC_MAPPING))     \
+    ||(defined (IX_OSAL_LE_AC_MAPPING) && defined (IX_OSAL_NO_MAPPING))
+
+
+#ifdef IX_OSAL_BE_MAPPING
+#warning IX_OSAL_BE_MAPPING is defined
+#endif
+
+#ifdef IX_OSAL_LE_AC_MAPPING
+#warning IX_OSAL_LE_AC_MAPPING is defined
+#endif
+
+#ifdef IX_OSAL_LE_DC_MAPPING
+#warning IX_OSAL_LE_DC_MAPPING is defined
+#endif
+
+#ifdef IX_OSAL_NO_MAPPING
+#warning IX_OSAL_NO_MAPPING is defined
+#endif
+
+#error More than one I/O mapping is defined, please check your component mapping
+
+#endif /* check at most one mapping */
+
+
+/* Now set IX_OSAL_COMPONENT_MAPPING */
+
+#ifdef IX_OSAL_BE_MAPPING
+#define IX_OSAL_COMPONENT_MAPPING IX_OSAL_BE
+#endif
+
+#ifdef IX_OSAL_LE_AC_MAPPING
+#define IX_OSAL_COMPONENT_MAPPING IX_OSAL_LE_AC
+#endif
+
+#ifdef IX_OSAL_LE_DC_MAPPING
+#define IX_OSAL_COMPONENT_MAPPING IX_OSAL_LE_DC
+#endif
+
+#ifdef IX_OSAL_NO_MAPPING
+#define IX_OSAL_COMPONENT_MAPPING IX_OSAL_LE
+#endif
+
+
+/* SDRAM coherency should be defined */
+#if !defined (IX_SDRAM_BE) && !defined (IX_SDRAM_LE_DATA_COHERENT) && !defined (IX_SDRAM_LE_ADDRESS_COHERENT)
+
+#error SDRAM coherency must be defined
+
+#endif /* SDRAM coherency must be defined */
+
+/* SDRAM coherency cannot be defined in several ways */
+#if (defined (IX_SDRAM_BE) && (defined (IX_SDRAM_LE_DATA_COHERENT) || defined (IX_SDRAM_LE_ADDRESS_COHERENT))) \
+    || (defined (IX_SDRAM_LE_DATA_COHERENT) && (defined (IX_SDRAM_BE) || defined (IX_SDRAM_LE_ADDRESS_COHERENT))) \
+    || (defined (IX_SDRAM_LE_ADDRESS_COHERENT) && (defined (IX_SDRAM_BE) || defined (IX_SDRAM_LE_DATA_COHERENT)))
+
+#error SDRAM coherency cannot be defined in more than one way
+
+#endif /* SDRAM coherency must be defined exactly once */
+
+
+/*********************
+ * Read/write macros *
+ *********************/
+
+/* WARNING - except for addition of special cookie read/write macros (see below)
+             these macros are NOT user serviceable. Please do not modify */
+
+#define IX_OSAL_READ_LONG_RAW(wAddr)          (*(wAddr))
+#define IX_OSAL_READ_SHORT_RAW(sAddr)         (*(sAddr))
+#define IX_OSAL_READ_BYTE_RAW(bAddr)          (*(bAddr))
+#define IX_OSAL_WRITE_LONG_RAW(wAddr, wData)  (*(wAddr) = (wData))
+#define IX_OSAL_WRITE_SHORT_RAW(sAddr,sData)  (*(sAddr) = (sData))
+#define IX_OSAL_WRITE_BYTE_RAW(bAddr, bData)  (*(bAddr) = (bData))
+
+#ifdef __linux
+
+/* Linux - specific cookie reads/writes. 
+  Redefine per OS if dynamic memory maps are used
+  and I/O memory is accessed via functions instead of raw pointer access. */
+
+#define IX_OSAL_READ_LONG_COOKIE(wCookie)           (readl((UINT32) (wCookie) ))
+#define IX_OSAL_READ_SHORT_COOKIE(sCookie)          (readw((UINT32) (sCookie) ))
+#define IX_OSAL_READ_BYTE_COOKIE(bCookie)           (readb((UINT32) (bCookie) ))
+#define IX_OSAL_WRITE_LONG_COOKIE(wCookie, wData)   (writel(wData, (UINT32) (wCookie) ))
+#define IX_OSAL_WRITE_SHORT_COOKIE(sCookie, sData)  (writew(sData, (UINT32) (sCookie) ))
+#define IX_OSAL_WRITE_BYTE_COOKIE(bCookie, bData)   (writeb(bData, (UINT32) (bCookie) ))
+
+#endif /* linux */
+
+#ifdef __wince
+
+/* WinCE - specific cookie reads/writes. */
+
+static __inline__ UINT32
+ixOsalWinCEReadLCookie (volatile UINT32 * lCookie)
+{
+    return *lCookie;
+}
+
+static __inline__ UINT16
+ixOsalWinCEReadWCookie (volatile UINT16 * wCookie)
+{
+#if 0
+    UINT32 auxVal = *((volatile UINT32 *) wCookie);
+    if ((unsigned) wCookie & 3)
+       return (UINT16) (auxVal >> 16);
+    else
+       return (UINT16) (auxVal & 0xffff);
+#else
+    return *wCookie;
+#endif
+}
+
+static __inline__ UINT8
+ixOsalWinCEReadBCookie (volatile UINT8 * bCookie)
+{
+#if 0
+    UINT32 auxVal = *((volatile UINT32 *) bCookie);
+    return (UINT8) ((auxVal >> (3 - (((unsigned) bCookie & 3) << 3)) & 0xff));
+#else
+    return *bCookie;
+#endif
+}
+
+static __inline__ void
+ixOsalWinCEWriteLCookie (volatile UINT32 * lCookie, UINT32 lVal)
+{
+    *lCookie = lVal;
+}
+
+static __inline__ void
+ixOsalWinCEWriteWCookie (volatile UINT16 * wCookie, UINT16 wVal)
+{
+#if 0
+    volatile UINT32 *auxCookie =
+       (volatile UINT32 *) ((unsigned) wCookie & ~3);
+    if ((unsigned) wCookie & 3)
+    {
+       *auxCookie &= 0xffff;
+       *auxCookie |= (UINT32) wVal << 16;
+    }
+    else
+    {
+       *auxCookie &= ~0xffff;
+       *auxCookie |= (UINT32) wVal & 0xffff;
+    }
+#else
+    *wCookie = wVal;
+#endif
+}
+
+static __inline__ void
+ixOsalWinCEWriteBCookie (volatile UINT8 * bCookie, UINT8 bVal)
+{
+#if 0
+    volatile UINT32 *auxCookie =
+       (volatile UINT32 *) ((unsigned) bCookie & ~3);
+    *auxCookie &= 0xff << (3 - (((unsigned) bCookie & 3) << 3));
+    *auxCookie |= (UINT32) bVal << (3 - (((unsigned) bCookie & 3) << 3));
+#else
+    *bCookie = bVal;
+#endif
+}
+
+
+#define IX_OSAL_READ_LONG_COOKIE(wCookie)           (ixOsalWinCEReadLCookie(wCookie))
+#define IX_OSAL_READ_SHORT_COOKIE(sCookie)          (ixOsalWinCEReadWCookie(sCookie))
+#define IX_OSAL_READ_BYTE_COOKIE(bCookie)           (ixOsalWinCEReadBCookie(bCookie))
+#define IX_OSAL_WRITE_LONG_COOKIE(wCookie, wData)   (ixOsalWinCEWriteLCookie(wCookie, wData))
+#define IX_OSAL_WRITE_SHORT_COOKIE(sCookie, sData)  (ixOsalWinCEWriteWCookie(sCookie, sData))
+#define IX_OSAL_WRITE_BYTE_COOKIE(bCookie, bData)   (ixOsalWinCEWriteBCookie(bCookie, bData))
+
+#endif /* wince */
+
+#if defined (__vxworks) || (defined (__linux) && defined (IX_OSAL_STATIC_MEMORY_MAP)) || \
+                           (defined (__wince) && defined (IX_OSAL_STATIC_MEMORY_MAP))
+
+#define IX_OSAL_READ_LONG_IO(wAddr)            IX_OSAL_READ_LONG_RAW(wAddr)
+#define IX_OSAL_READ_SHORT_IO(sAddr)           IX_OSAL_READ_SHORT_RAW(sAddr)
+#define IX_OSAL_READ_BYTE_IO(bAddr)            IX_OSAL_READ_BYTE_RAW(bAddr)
+#define IX_OSAL_WRITE_LONG_IO(wAddr, wData)    IX_OSAL_WRITE_LONG_RAW(wAddr, wData)
+#define IX_OSAL_WRITE_SHORT_IO(sAddr, sData)   IX_OSAL_WRITE_SHORT_RAW(sAddr, sData)
+#define IX_OSAL_WRITE_BYTE_IO(bAddr, bData)    IX_OSAL_WRITE_BYTE_RAW(bAddr, bData)
+
+#elif (defined (__linux) && !defined (IX_OSAL_STATIC_MEMORY_MAP)) || \
+      (defined (__wince) && !defined (IX_OSAL_STATIC_MEMORY_MAP))
+
+#ifndef __wince
+#include <asm/io.h>
+#endif /* ndef __wince */
+
+#define IX_OSAL_READ_LONG_IO(wAddr)            IX_OSAL_READ_LONG_COOKIE(wAddr)
+#define IX_OSAL_READ_SHORT_IO(sAddr)           IX_OSAL_READ_SHORT_COOKIE(sAddr)
+#define IX_OSAL_READ_BYTE_IO(bAddr)            IX_OSAL_READ_BYTE_COOKIE(bAddr)
+#define IX_OSAL_WRITE_LONG_IO(wAddr, wData)    IX_OSAL_WRITE_LONG_COOKIE(wAddr, wData)
+#define IX_OSAL_WRITE_SHORT_IO(sAddr, sData)   IX_OSAL_WRITE_SHORT_COOKIE(sAddr, sData)
+#define IX_OSAL_WRITE_BYTE_IO(bAddr, bData)    IX_OSAL_WRITE_BYTE_COOKIE(bAddr, bData)
+
+#endif
+
+/* Define BE macros */
+#define IX_OSAL_READ_LONG_BE(wAddr)          IX_OSAL_BE_BUSTOXSL(IX_OSAL_READ_LONG_IO((volatile UINT32 *) (wAddr) ))
+#define IX_OSAL_READ_SHORT_BE(sAddr)         IX_OSAL_BE_BUSTOXSS(IX_OSAL_READ_SHORT_IO((volatile UINT16 *) (sAddr) ))
+#define IX_OSAL_READ_BYTE_BE(bAddr)          IX_OSAL_BE_BUSTOXSB(IX_OSAL_READ_BYTE_IO((volatile UINT8 *) (bAddr) ))
+#define IX_OSAL_WRITE_LONG_BE(wAddr, wData)  IX_OSAL_WRITE_LONG_IO((volatile UINT32 *) (wAddr), IX_OSAL_BE_XSTOBUSL((UINT32) (wData) ))
+#define IX_OSAL_WRITE_SHORT_BE(sAddr, sData) IX_OSAL_WRITE_SHORT_IO((volatile UINT16 *) (sAddr), IX_OSAL_BE_XSTOBUSS((UINT16) (sData) ))
+#define IX_OSAL_WRITE_BYTE_BE(bAddr, bData)  IX_OSAL_WRITE_BYTE_IO((volatile UINT8 *) (bAddr), IX_OSAL_BE_XSTOBUSB((UINT8) (bData) ))
+
+/* Define LE AC macros */
+#define IX_OSAL_READ_LONG_LE_AC(wAddr)          IX_OSAL_READ_LONG_IO((volatile UINT32 *) IX_OSAL_LE_AC_BUSTOXSL((UINT32) (wAddr) ))
+#define IX_OSAL_READ_SHORT_LE_AC(sAddr)         IX_OSAL_READ_SHORT_IO((volatile UINT16 *) IX_OSAL_LE_AC_BUSTOXSS((UINT32) (sAddr) ))
+#define IX_OSAL_READ_BYTE_LE_AC(bAddr)          IX_OSAL_READ_BYTE_IO((volatile UINT8 *) IX_OSAL_LE_AC_BUSTOXSB((UINT32) (bAddr) ))
+#define IX_OSAL_WRITE_LONG_LE_AC(wAddr, wData)  IX_OSAL_WRITE_LONG_IO((volatile UINT32 *) IX_OSAL_LE_AC_XSTOBUSL((UINT32) (wAddr) ), (UINT32) (wData))
+#define IX_OSAL_WRITE_SHORT_LE_AC(sAddr, sData) IX_OSAL_WRITE_SHORT_IO((volatile UINT16 *) IX_OSAL_LE_AC_XSTOBUSS((UINT32) (sAddr) ), (UINT16) (sData))
+#define IX_OSAL_WRITE_BYTE_LE_AC(bAddr, bData)  IX_OSAL_WRITE_BYTE_IO((volatile UINT8 *) IX_OSAL_LE_AC_XSTOBUSB((UINT32) (bAddr) ), (UINT8) (bData))
+
+
+/* Inline functions are required here to avoid reading the same I/O location 2 or 4 times for the byte swap */
+static __inline__ UINT32
+ixOsalDataCoherentLongReadSwap (volatile UINT32 * wAddr)
+{
+    UINT32 wData = IX_OSAL_READ_LONG_IO (wAddr);
+    return IX_OSAL_LE_DC_BUSTOXSL (wData);
+}
+
+static __inline__ UINT16
+ixOsalDataCoherentShortReadSwap (volatile UINT16 * sAddr)
+{
+    UINT16 sData = IX_OSAL_READ_SHORT_IO (sAddr);
+    return IX_OSAL_LE_DC_BUSTOXSS (sData);
+}
+
+static __inline__ void
+ixOsalDataCoherentLongWriteSwap (volatile UINT32 * wAddr, UINT32 wData)
+{
+    wData = IX_OSAL_LE_DC_XSTOBUSL (wData);
+    IX_OSAL_WRITE_LONG_IO (wAddr, wData);
+}
+
+static __inline__ void
+ixOsalDataCoherentShortWriteSwap (volatile UINT16 * sAddr, UINT16 sData)
+{
+    sData = IX_OSAL_LE_DC_XSTOBUSS (sData);
+    IX_OSAL_WRITE_SHORT_IO (sAddr, sData);
+}
+
+/* Define LE DC macros */
+
+#define IX_OSAL_READ_LONG_LE_DC(wAddr)          ixOsalDataCoherentLongReadSwap((volatile UINT32 *) (wAddr) )
+#define IX_OSAL_READ_SHORT_LE_DC(sAddr)         ixOsalDataCoherentShortReadSwap((volatile UINT16 *) (sAddr) )
+#define IX_OSAL_READ_BYTE_LE_DC(bAddr)          IX_OSAL_LE_DC_BUSTOXSB(IX_OSAL_READ_BYTE_IO((volatile UINT8 *) (bAddr) ))
+#define IX_OSAL_WRITE_LONG_LE_DC(wAddr, wData)  ixOsalDataCoherentLongWriteSwap((volatile UINT32 *) (wAddr), (UINT32) (wData))
+#define IX_OSAL_WRITE_SHORT_LE_DC(sAddr, sData) ixOsalDataCoherentShortWriteSwap((volatile UINT16 *) (sAddr), (UINT16) (sData))
+#define IX_OSAL_WRITE_BYTE_LE_DC(bAddr, bData)  IX_OSAL_WRITE_BYTE_IO((volatile UINT8 *) (bAddr), IX_OSAL_LE_DC_XSTOBUSB((UINT8) (bData)))
+
+#if defined (IX_OSAL_BE_MAPPING)
+
+#define IX_OSAL_READ_LONG(wAddr)            IX_OSAL_READ_LONG_BE(wAddr) 
+#define IX_OSAL_READ_SHORT(sAddr)              IX_OSAL_READ_SHORT_BE(sAddr) 
+#define IX_OSAL_READ_BYTE(bAddr)               IX_OSAL_READ_BYTE_BE(bAddr) 
+#define IX_OSAL_WRITE_LONG(wAddr, wData)       IX_OSAL_WRITE_LONG_BE(wAddr, wData)
+#define IX_OSAL_WRITE_SHORT(sAddr, sData)      IX_OSAL_WRITE_SHORT_BE(sAddr, sData)
+#define IX_OSAL_WRITE_BYTE(bAddr, bData)       IX_OSAL_WRITE_BYTE_BE(bAddr, bData)
+
+#elif defined (IX_OSAL_LE_AC_MAPPING)
+
+#define IX_OSAL_READ_LONG(wAddr)            IX_OSAL_READ_LONG_LE_AC(wAddr) 
+#define IX_OSAL_READ_SHORT(sAddr)              IX_OSAL_READ_SHORT_LE_AC(sAddr) 
+#define IX_OSAL_READ_BYTE(bAddr)               IX_OSAL_READ_BYTE_LE_AC(bAddr) 
+#define IX_OSAL_WRITE_LONG(wAddr, wData)       IX_OSAL_WRITE_LONG_LE_AC(wAddr, wData)
+#define IX_OSAL_WRITE_SHORT(sAddr, sData)      IX_OSAL_WRITE_SHORT_LE_AC(sAddr, sData)
+#define IX_OSAL_WRITE_BYTE(bAddr, bData)       IX_OSAL_WRITE_BYTE_LE_AC(bAddr, bData)
+
+#elif defined (IX_OSAL_LE_DC_MAPPING)
+
+#define IX_OSAL_READ_LONG(wAddr)            IX_OSAL_READ_LONG_LE_DC(wAddr) 
+#define IX_OSAL_READ_SHORT(sAddr)              IX_OSAL_READ_SHORT_LE_DC(sAddr) 
+#define IX_OSAL_READ_BYTE(bAddr)               IX_OSAL_READ_BYTE_LE_DC(bAddr) 
+#define IX_OSAL_WRITE_LONG(wAddr, wData)       IX_OSAL_WRITE_LONG_LE_DC(wAddr, wData)
+#define IX_OSAL_WRITE_SHORT(sAddr, sData)      IX_OSAL_WRITE_SHORT_LE_DC(sAddr, sData)
+#define IX_OSAL_WRITE_BYTE(bAddr, bData)       IX_OSAL_WRITE_BYTE_LE_DC(bAddr, bData)
+
+#endif   /* End of BE and LE coherency mode switch */
+
+
+/* Reads/writes to and from memory shared with NPEs - depends on the SDRAM coherency */
+
+#if defined (IX_SDRAM_BE)
+
+#define IX_OSAL_READ_BE_SHARED_LONG(wAddr)            IX_OSAL_READ_LONG_RAW(wAddr)
+#define IX_OSAL_READ_BE_SHARED_SHORT(sAddr)           IX_OSAL_READ_SHORT_RAW(sAddr)
+#define IX_OSAL_READ_BE_SHARED_BYTE(bAddr)            IX_OSAL_READ_BYTE_RAW(bAddr)
+
+#define IX_OSAL_WRITE_BE_SHARED_LONG(wAddr, wData)    IX_OSAL_WRITE_LONG_RAW(wAddr, wData)
+#define IX_OSAL_WRITE_BE_SHARED_SHORT(sAddr, sData)   IX_OSAL_WRITE_SHORT_RAW(sAddr, sData)
+#define IX_OSAL_WRITE_BE_SHARED_BYTE(bAddr, bData)    IX_OSAL_WRITE_BYTE_RAW(bAddr, bData)
+
+#define IX_OSAL_SWAP_BE_SHARED_LONG(wData)            (wData)
+#define IX_OSAL_SWAP_BE_SHARED_SHORT(sData)           (sData)
+#define IX_OSAL_SWAP_BE_SHARED_BYTE(bData)            (bData)
+
+#elif defined (IX_SDRAM_LE_ADDRESS_COHERENT)
+
+#define IX_OSAL_READ_BE_SHARED_LONG(wAddr)            IX_OSAL_READ_LONG_RAW(wAddr)
+#define IX_OSAL_READ_BE_SHARED_SHORT(sAddr)           IX_OSAL_READ_SHORT_RAW(IX_OSAL_SWAP_SHORT_ADDRESS(sAddr))
+#define IX_OSAL_READ_BE_SHARED_BYTE(bAddr)            IX_OSAL_READ_BYTE_RAW(IX_OSAL_SWAP_BYTE_ADDRESS(bAddr))
+
+#define IX_OSAL_WRITE_BE_SHARED_LONG(wAddr, wData)    IX_OSAL_WRITE_LONG_RAW(wAddr, wData)
+#define IX_OSAL_WRITE_BE_SHARED_SHORT(sAddr, sData)   IX_OSAL_WRITE_SHORT_RAW(IX_OSAL_SWAP_SHORT_ADDRESS(sAddr), sData)
+#define IX_OSAL_WRITE_BE_SHARED_BYTE(bAddr, bData)    IX_OSAL_WRITE_BYTE_RAW(IX_OSAL_SWAP_BYTE_ADDRESS(bAddr), bData)
+
+#define IX_OSAL_SWAP_BE_SHARED_LONG(wData)            (wData)
+#define IX_OSAL_SWAP_BE_SHARED_SHORT(sData)           (sData)
+#define IX_OSAL_SWAP_BE_SHARED_BYTE(bData)            (bData)
+
+#elif defined (IX_SDRAM_LE_DATA_COHERENT)
+
+#define IX_OSAL_READ_BE_SHARED_LONG(wAddr)            IX_OSAL_SWAP_LONG(IX_OSAL_READ_LONG_RAW(wAddr))
+#define IX_OSAL_READ_BE_SHARED_SHORT(sAddr)           IX_OSAL_SWAP_SHORT(IX_OSAL_READ_SHORT_RAW(sAddr))
+#define IX_OSAL_READ_BE_SHARED_BYTE(bAddr)            IX_OSAL_READ_BYTE_RAW(bAddr)
+
+#define IX_OSAL_WRITE_BE_SHARED_LONG(wAddr, wData)    IX_OSAL_WRITE_LONG_RAW(wAddr, IX_OSAL_SWAP_LONG(wData))
+#define IX_OSAL_WRITE_BE_SHARED_SHORT(sAddr, sData)   IX_OSAL_WRITE_SHORT_RAW(sAddr, IX_OSAL_SWAP_SHORT(sData))
+#define IX_OSAL_WRITE_BE_SHARED_BYTE(bAddr, bData)    IX_OSAL_WRITE_BYTE_RAW(bAddr, bData)
+
+#define IX_OSAL_SWAP_BE_SHARED_LONG(wData)            IX_OSAL_SWAP_LONG(wData)
+#define IX_OSAL_SWAP_BE_SHARED_SHORT(sData)           IX_OSAL_SWAP_SHORT(sData)
+
+#endif
+
+
+#define IX_OSAL_COPY_BE_SHARED_LONG_ARRAY(wDestAddr, wSrcAddr, wCount) \
+  { \
+    UINT32 i; \
+    \
+    for ( i = 0 ; i < wCount ; i++ ) \
+    { \
+      * (((UINT32 *) wDestAddr) + i) = IX_OSAL_READ_BE_SHARED_LONG(((UINT32 *) wSrcAddr) + i); \
+    }; \
+  };
+
+#endif /* IxOsalMemAccess_H */
diff -Naur u-boot-2009.03_orig/cpu/ixp/npe/include/IxSspAcc.h u-boot-2009.03/cpu/ixp/npe/include/IxSspAcc.h
--- u-boot-2009.03_orig/cpu/ixp/npe/include/IxSspAcc.h  2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/cpu/ixp/npe/include/IxSspAcc.h       2009-03-31 14:51:31.817904000 -0700
@@ -1,1271 +1,1271 @@
-/**
- * @file IxSspAcc.h
- *
- * @brief  Header file for the IXP400 SSP Serial Port Access (IxSspAcc)
- *
- * @version $Revision: 0.1 $
- * 
- * @par
- * IXP400 SW Release version 2.0
- * 
- * -- Copyright Notice --
- * 
- * @par
- * Copyright 2001-2005, Intel Corporation.
- * All rights reserved.
- * 
- * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
- * @par
- * -- End of Copyright Notice --
- */
-
-/**
- * @defgroup IxSspAcc IXP400 SSP Serial Port Access (IxSspAcc) API 
- *
- * @brief IXP400 SSP Serial Port Access Public API
- *
- * @{
- */
-#ifndef IXSSPACC_H
-#define IXSSPACC_H
-
-#ifdef __ixp46X
-
-#include "IxOsal.h"
-
-/*
- * Section for enum
- */
-/**
- * @ingroup IxSspAcc
- * 
- * @enum IxSspAccDataSize
- *
- * @brief The data sizes in bits that are supported by the protocol
- */
-typedef enum
-{
-       DATA_SIZE_TOO_SMALL = 0x2,
-       DATA_SIZE_4 = 0x3,
-       DATA_SIZE_5,
-       DATA_SIZE_6,
-       DATA_SIZE_7,
-       DATA_SIZE_8,
-       DATA_SIZE_9,
-       DATA_SIZE_10,
-       DATA_SIZE_11,
-       DATA_SIZE_12,
-       DATA_SIZE_13,
-       DATA_SIZE_14,
-       DATA_SIZE_15,
-       DATA_SIZE_16,
-       DATA_SIZE_TOO_BIG
-} IxSspAccDataSize;
-
-/**
- * @ingroup IxSspAcc
- * 
- * @enum IxSspAccPortStatus
- *
- * @brief The status of the SSP port to be set to enable/disable
- */
-typedef enum
-{
-       SSP_PORT_DISABLE = 0x0,
-       SSP_PORT_ENABLE,
-       INVALID_SSP_PORT_STATUS
-} IxSspAccPortStatus;
-
-/**
- * @ingroup IxSspAcc
- * 
- * @enum IxSspAccFrameFormat
- *
- * @brief The frame format that is to be used - SPI, SSP, or Microwire
- */
-typedef enum
-{
-       SPI_FORMAT = 0x0,
-       SSP_FORMAT,
-       MICROWIRE_FORMAT,
-       INVALID_FORMAT
-} IxSspAccFrameFormat;
-
-/**
- * @ingroup IxSspAcc
- * 
- * @enum IxSspAccClkSource
- *
- * @brief The source to produce the SSP serial clock
- */
-typedef enum
-{
-       ON_CHIP_CLK = 0x0,
-       EXTERNAL_CLK,
-       INVALID_CLK_SOURCE
-} IxSspAccClkSource;
-
-/**
- * @ingroup IxSspAcc
- * 
- * @enum IxSspAccSpiSclkPhase
- *
- * @brief The SPI SCLK Phase: 
- * 0 - SCLK is inactive one cycle at the start of a frame and 1/2 cycle at the
- *             end of a frame.
- * 1 - SCLK is inactive 1/2 cycle at the start of a frame and one cycle at the
- *             end of a frame.
- */
-typedef enum
-{
-       START_ONE_END_HALF = 0x0,
-       START_HALF_END_ONE,
-       INVALID_SPI_PHASE
-} IxSspAccSpiSclkPhase;
-
-/**
- * @ingroup IxSspAcc
- * 
- * @enum IxSspAccSpiSclkPolarity
- *
- * @brief The SPI SCLK Polarity can be set to either low or high.
- */
-typedef enum
-{
-       SPI_POLARITY_LOW = 0x0,
-       SPI_POLARITY_HIGH,
-       INVALID_SPI_POLARITY
-} IxSspAccSpiSclkPolarity;
-
-/**
- * @ingroup IxSspAcc
- * 
- * @enum IxSspAccMicrowireCtlWord
- *
- * @brief The Microwire control word can be either 8 or 16 bit.
- */
-typedef enum
-{
-       MICROWIRE_8_BIT = 0x0,
-       MICROWIRE_16_BIT,
-       INVALID_MICROWIRE_CTL_WORD
-} IxSspAccMicrowireCtlWord;
-
-/**
- * @ingroup IxSspAcc
- * 
- * @enum IxSspAccFifoThreshold
- *
- * @brief The threshold in frames (each frame is defined by IxSspAccDataSize)
- *                     that can be set for the FIFO to trigger a threshold exceed when
- *                     checking with the ExceedThresholdCheck functions or an interrupt
- *                     when it is enabled.
- */
-typedef enum
-{
-       FIFO_TSHLD_1 =  0x0,
-       FIFO_TSHLD_2,
-       FIFO_TSHLD_3,
-       FIFO_TSHLD_4,
-       FIFO_TSHLD_5,
-       FIFO_TSHLD_6,
-       FIFO_TSHLD_7,
-       FIFO_TSHLD_8,
-       FIFO_TSHLD_9,
-       FIFO_TSHLD_10,
-       FIFO_TSHLD_11,
-       FIFO_TSHLD_12,
-       FIFO_TSHLD_13,
-       FIFO_TSHLD_14,
-       FIFO_TSHLD_15,
-       FIFO_TSHLD_16,
-       INVALID_FIFO_TSHLD
-} IxSspAccFifoThreshold;
-
-/**
- * @ingroup IxSspAcc
- * 
- * @enum IX_SSP_STATUS
- *
- * @brief The statuses that can be returned in a SSP Serial Port Access
- */
-typedef enum
-{
-       IX_SSP_SUCCESS = IX_SUCCESS, /**< Success status */
-       IX_SSP_FAIL, /**< Fail status */
-       IX_SSP_RX_FIFO_OVERRUN_HANDLER_MISSING, /**<
-                                               Rx FIFO Overrun handler is NULL. */
-       IX_SSP_RX_FIFO_HANDLER_MISSING, /**<
-                                       Rx FIFO threshold hit or above handler is NULL
-                                       */
-       IX_SSP_TX_FIFO_HANDLER_MISSING, /**<
-                                       Tx FIFO threshold hit or below handler is NULL
-                                       */
-       IX_SSP_FIFO_NOT_EMPTY_FOR_SETTING_CTL_CMD, /**<
-                                       Tx FIFO not empty and therefore microwire
-                                       control command size setting is not allowed.    */
-       IX_SSP_INVALID_FRAME_FORMAT_ENUM_VALUE, /**<
-                                       frame format selected is invalid. */
-       IX_SSP_INVALID_DATA_SIZE_ENUM_VALUE, /**<
-                                       data size selected is invalid. */
-       IX_SSP_INVALID_CLOCK_SOURCE_ENUM_VALUE, /**<
-                                       source clock selected is invalid. */
-       IX_SSP_INVALID_TX_FIFO_THRESHOLD_ENUM_VALUE, /**<
-                                       Tx FIFO threshold selected is invalid. */
-       IX_SSP_INVALID_RX_FIFO_THRESHOLD_ENUM_VALUE, /**<
-                                       Rx FIFO threshold selected is invalid. */
-       IX_SSP_INVALID_SPI_PHASE_ENUM_VALUE, /**<
-                                       SPI phase selected is invalid. */
-       IX_SSP_INVALID_SPI_POLARITY_ENUM_VALUE, /**<
-                                       SPI polarity selected is invalid. */
-       IX_SSP_INVALID_MICROWIRE_CTL_CMD_ENUM_VALUE, /**<
-                                       Microwire control command selected is invalid
-                                       */
-       IX_SSP_INT_UNBIND_FAIL, /**< Interrupt unbind fail to unbind SSP
-                       interrupt */
-       IX_SSP_INT_BIND_FAIL, /**< Interrupt bind fail during init */
-       IX_SSP_RX_FIFO_NOT_EMPTY, /**<
-                                       Rx FIFO not empty while trying to change data
-                                       size. */
-       IX_SSP_TX_FIFO_NOT_EMPTY, /**<
-                                       Rx FIFO not empty while trying to change data
-                                       size or microwire control command size. */
-       IX_SSP_POLL_MODE_BLOCKING, /**<
-                                       poll mode selected blocks interrupt mode from
-                                       being selected. */
-       IX_SSP_TX_FIFO_HIT_BELOW_THRESHOLD, /**<
-                                       Tx FIFO level hit or below threshold. */
-       IX_SSP_TX_FIFO_EXCEED_THRESHOLD, /**<
-                                       Tx FIFO level exceeded threshold. */
-       IX_SSP_RX_FIFO_HIT_ABOVE_THRESHOLD, /**<
-                                       Rx FIFO level hit or exceeded threshold. */
-       IX_SSP_RX_FIFO_BELOW_THRESHOLD, /**<
-                                       Rx FIFO level below threshold. */
-       IX_SSP_BUSY, /**< SSP is busy. */
-       IX_SSP_IDLE, /**< SSP is idle. */
-       IX_SSP_OVERRUN_OCCURRED, /**<
-                                       SSP has experienced an overrun. */
-       IX_SSP_NO_OVERRUN, /**<
-                                       SSP did not experience an overrun. */
-       IX_SSP_NOT_SUPORTED, /**< hardware does not support SSP */
-       IX_SSP_NOT_INIT, /**< SSP Access not intialized */
-       IX_SSP_NULL_POINTER /**< parameter passed in is NULL */
-} IX_SSP_STATUS;
-
-/**
- * @ingroup IxSspAcc
- *
- * @brief SSP Rx FIFO Overrun handler
- *
- * This function is called for the client to handle Rx FIFO Overrun that occurs
- * in the SSP hardware
- */
-typedef void (*RxFIFOOverrunHandler)(void);
-
-/**
- * @ingroup IxSspAcc
- * 
- * @brief SSP Rx FIFO Threshold hit or above handler
- *
- * This function is called for the client to handle Rx FIFO threshold hit or
- * or above that occurs in the SSP hardware
- */
-typedef void (*RxFIFOThresholdHandler)(void);
-
-/**
- * @ingroup IxSspAcc
- * 
- * @brief SSP Tx FIFO Threshold hit or below handler
- *
- * This function is called for the client to handle Tx FIFO threshold hit or
- * or below that occurs in the SSP hardware
- */
-typedef void (*TxFIFOThresholdHandler)(void);
-
-
-/*
- * Section for struct
- */
-/**
- * @ingroup IxSspAcc
- *
- * @brief contains all the variables required to initialize the SSP serial port
- *             hardware.
- * 
- * Structure to be filled and used for calling initialization
- */
-typedef struct
-{
-       IxSspAccFrameFormat FrameFormatSelected;/**<Select between SPI, SSP and
-                                                                                               Microwire. */
-       IxSspAccDataSize DataSizeSelected;              /**<Select between 4 and 16. */
-       IxSspAccClkSource ClkSourceSelected;    /**<Select clock source to be
-                                                                                               on-chip or external. */
-       IxSspAccFifoThreshold TxFIFOThresholdSelected;
-                                                                                       /**<Select Tx FIFO threshold
-                                                                                               between 1 to 16. */
-       IxSspAccFifoThreshold RxFIFOThresholdSelected;
-                                                                                       /**<Select Rx FIFO threshold
-                                                                                               between 1 to 16. */
-       BOOL RxFIFOIntrEnable;                                  /**<Enable/disable Rx FIFO
-                                                                                               threshold interrupt. Disabling
-                                                                                               this interrupt will require
-                                                                                               the use of the polling function
-                                                                                               RxFIFOExceedThresholdCheck. */
-       BOOL TxFIFOIntrEnable;                                  /**<Enable/disable Tx FIFO
-                                                                                               threshold interrupt. Disabling
-                                                                                               this interrupt will require
-                                                                                               the use of the polling function
-                                                                                               TxFIFOExceedThresholdCheck. */
-       RxFIFOThresholdHandler RxFIFOThsldHdlr; /**<Pointer to function to handle
-                                                                                               a Rx FIFO interrupt. */
-       TxFIFOThresholdHandler TxFIFOThsldHdlr; /**<Pointer to function to handle
-                                                                                               a Tx FIFO interrupt. */
-       RxFIFOOverrunHandler RxFIFOOverrunHdlr; /**<Pointer to function to handle
-                                                                                               a Rx FIFO overrun interrupt. */
-       BOOL LoopbackEnable;                                    /**<Select operation mode to be
-                                                                                               normal or loopback mode. */
-       IxSspAccSpiSclkPhase SpiSclkPhaseSelected;
-                                                                                       /**<Select SPI SCLK phase to start
-                                                                                               with one inactive cycle and end
-                                                                                               with 1/2 inactive cycle or
-                                                                                               start with 1/2 inactive cycle
-                                                                                               and end with one inactive
-                                                                                               cycle. (Only used in
-                                                                                               SPI format). */
-       IxSspAccSpiSclkPolarity SpiSclkPolaritySelected;
-                                                                                       /**<Select SPI SCLK idle state
-                                                                                               to be low or high. (Only used in
-                                                                                               SPI format). */
-       IxSspAccMicrowireCtlWord MicrowireCtlWordSelected;
-                                                                                       /**<Select Microwire control
-                                                                                               format to be 8 or 16-bit. (Only
-                                                                                               used in Microwire format). */
-       UINT8 SerialClkRateSelected;                    /**<Select between 0 (1.8432Mbps)
-                                                                                               and 255 (7.2Kbps). The
-                                                                                               formula used is Bit rate = 
-                                                                                               3.6864x10^6 / 
-                                                                                               (2 x (SerialClkRateSelect + 1))
-                                                                                               */
-} IxSspInitVars;
-
-/**
- * @ingroup IxSspAcc
- *
- * @brief contains counters of the SSP statistics
- * 
- * Structure contains all values of counters and associated overflows.
- */
-typedef struct
-{
-       UINT32 ixSspRcvCounter;         /**<Total frames received. */
-       UINT32 ixSspXmitCounter;        /**<Total frames transmitted. */
-       UINT32 ixSspOverflowCounter;/**<Total occurrences of overflow. */
-} IxSspAccStatsCounters;
-
-
-/*
- * Section for prototypes interface functions
- */
-
-/**
- * @ingroup IxSspAcc
- * 
- * @fn ixSspAccInit (
-       IxSspInitVars *initVarsSelected);
- *
- * @brief Initializes the SSP Access module.
- *
- * @param "IxSspAccInitVars [in] *initVarsSelected" - struct containing required
- *                     variables for initialization 
- *
- * Global Data :
- *             - None.
- *                        
- * This API will initialize the SSP Serial Port hardware to the user specified
- * configuration. Then it will enable the SSP Serial Port.
- * *NOTE*: Once interrupt or polling mode is selected, the mode cannot be
- * changed via the interrupt enable/disable function but the init needs to be
- * called again to change it.
- *
- * @return 
- *      - IX_SSP_SUCCESS - Successfully initialize and enable the SSP
- *                                                                     serial port.
- *             - IX_SSP_RX_FIFO_HANDLER_MISSING - interrupt mode is selected but RX FIFO
- *                                                                     handler pointer is NULL
- *             - IX_SSP_TX_FIFO_HANDLER_MISSING - interrupt mode is selected but TX FIFO
- *                                                                     handler pointer is NULL
- *             - IX_SSP_RX_FIFO_OVERRUN_HANDLER_MISSING - interrupt mode is selected but
- *                                                                     RX FIFO Overrun handler pointer is NULL
- *             - IX_SSP_RX_FIFO_NOT_EMPTY - Rx FIFO not empty, data size change is not
- *                                             allowed.
- *             - IX_SSP_TX_FIFO_NOT_EMPTY - Tx FIFO not empty, data size change is not
- *                                             allowed.
- *             - IX_SSP_INVALID_FRAME_FORMAT_ENUM_VALUE - frame format selected is invalid
- *             - IX_SSP_INVALID_DATA_SIZE_ENUM_VALUE - data size selected is invalid
- *             - IX_SSP_INVALID_CLOCK_SOURCE_ENUM_VALUE - clock source selected is invalid
- *             - IX_SSP_INVALID_TX_FIFO_THRESHOLD_ENUM_VALUE - Tx FIFO threshold level
- *                                                                     selected is invalid
- *             - IX_SSP_INVALID_RX_FIFO_THRESHOLD_ENUM_VALUE - Rx FIFO threshold level
- *                                                                     selected is invalid
- *             - IX_SSP_INVALID_SPI_PHASE_ENUM_VALUE - SPI phase selected is invalid
- *             - IX_SSP_INVALID_SPI_POLARITY_ENUM_VALUE - SPI polarity selected is invalid
- *             - IX_SSP_INVALID_MICROWIRE_CTL_CMD_ENUM_VALUE - microwire control command
- *                                                                     size is invalid
- *      - IX_SSP_INT_UNBIND_FAIL - interrupt handler failed to unbind SSP interrupt
- *             - IX_SSP_INT_BIND_FAIL - interrupt handler failed to bind to SSP interrupt
- *                                                                     hardware trigger
- *      - IX_SSP_NOT_SUPORTED - hardware does not support SSP
- *      - IX_SSP_NULL_POINTER - parameter passed in is NULL
- *              
- * @li   Reentrant    : yes
- * @li   ISR Callable : yes
- *
- */
-PUBLIC IX_SSP_STATUS
-ixSspAccInit (IxSspInitVars *initVarsSelected);
-
-/**
- * @ingroup IxSspAcc
- * 
- * @fn ixSspAccUninit (
-       void)
- *
- * @brief Un-initializes the SSP Serial Port Access component
- *
- * @param - None
- *
- * Global Data :
- *             - None.
- *                        
- * This API will disable the SSP Serial Port hardware. The client can call the
- * init function again if they wish to enable the SSP.
- *
- * @return 
- *      - IX_SSP_SUCCESS - successfully uninit SSP component
- *      - IX_SSP_INT_UNBIND_FAIL - interrupt handler failed to unbind SSP interrupt
- *              
- * @li   Reentrant    : yes
- * @li   ISR Callable : yes
- *
- */
-PUBLIC IX_SSP_STATUS
-ixSspAccUninit (void);
-
-/**
- * @ingroup IxSspAcc
- * 
- * @fn ixSspAccFIFODataSubmit (
-       UINT16 *data,
-       UINT32 amtOfData)
- *
- * @brief Inserts data into the SSP Serial Port's FIFO
- *
- * @param      "UINT16 [in] *data" - pointer to the location to transmit the data
- *                             from
- *                     "UINT32 [in] amtOfData" - number of data to be transmitted.
- *
- * Global Data :
- *             - None.
- *                        
- * This API will insert the amount of data specified by "amtOfData" from buffer
- * pointed to by "data" into the FIFO to be transmitted by the hardware.
- *
- * @return 
- *      - IX_SSP_SUCCESS - Data inserted successfully into FIFO
- *             - IX_SSP_FAIL - FIFO insufficient space
- *             - IX_SSP_NULL_POINTER - data pointer passed by client is NULL
- *             - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called.
- *              
- * @li   Reentrant    : yes
- * @li   ISR Callable : yes
- *
- */
-PUBLIC IX_SSP_STATUS
-ixSspAccFIFODataSubmit (
-       UINT16* data,
-       UINT32 amtOfData);
-
-/**
- * @ingroup IxSspAcc
- * 
- * @fn ixSspAccFIFODataReceive (
-       UINT16 *data,
-       UINT32 amtOfData)
- *
- * @brief Extract data from the SSP Serial Port's FIFO
- *
- * @param      "UINT16 [in] *data" - pointer to the location to receive the data into
- *                     "UINT32 [in] amtOfData" - number of data to be received.
- *
- * Global Data :
- *             - None.
- *                        
- * This API will extract the amount of data specified by "amtOfData" from the
- * FIFO already received by the hardware into the buffer pointed to by "data".
- *
- * @return 
- *      - IX_SSP_SUCCESS - Data extracted successfully from FIFO
- *             - IX_SSP_FAIL - FIFO has no data
- *             - IX_SSP_NULL_POINTER - data pointer passed by client is NULL
- *             - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called.
- *              
- * @li   Reentrant    : yes
- * @li   ISR Callable : yes
- *
- */
-PUBLIC IX_SSP_STATUS
-ixSspAccFIFODataReceive (
-       UINT16* data,
-       UINT32 amtOfData);
-
-
-/**
- * Polling Functions
- */
-
-/**
- * @ingroup IxSspAcc
- * 
- * @fn ixSspAccTxFIFOHitOrBelowThresholdCheck (
-               void)
- *
- * @brief Check if the Tx FIFO threshold has been hit or fallen below.
- *
- * @param - None
- *
- * Global Data :
- *             - None.
- *                        
- * This API will return whether the Tx FIFO threshold has been exceeded or not
- *
- * @return 
- *      - IX_SSP_TX_FIFO_HIT_BELOW_THRESHOLD - Tx FIFO level hit or below threshold .
- *             - IX_SSP_TX_FIFO_EXCEED_THRESHOLD - Tx FIFO level exceeded threshold.
- *             - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called.
- *              
- * @li   Reentrant    : yes
- * @li   ISR Callable : yes
- *
- */
-PUBLIC IX_SSP_STATUS
-ixSspAccTxFIFOHitOrBelowThresholdCheck (
-       void);
-
-/**
- * @ingroup IxSspAcc
- * 
- * @fn ixSspAccRxFIFOHitOrAboveThresholdCheck (
-               void)
- *
- * @brief Check if the Rx FIFO threshold has been hit or exceeded.
- *
- * @param - None
- *
- * Global Data :
- *             - None.
- *                        
- * This API will return whether the Rx FIFO level is below threshold or not
- *
- * @return 
- *      - IX_SSP_RX_FIFO_HIT_ABOVE_THRESHOLD - Rx FIFO level hit or exceeded threshold
- *             - IX_SSP_RX_FIFO_BELOW_THRESHOLD - Rx FIFO level below threshold
- *             - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called.
- *              
- * @li   Reentrant    : yes
- * @li   ISR Callable : yes
- *
- */
-PUBLIC IX_SSP_STATUS
-ixSspAccRxFIFOHitOrAboveThresholdCheck (
-       void);
-
-
-/**
- * Configuration functions
- *
- * NOTE: These configurations are not required to be called once init is called
- * unless configurations need to be changed on the fly.
- */
-
-/**
- * @ingroup IxSspAcc
- * 
- * @fn ixSspAccSSPPortStatusSet (
-       IxSspAccPortStatus portStatusSelected)
- *
- * @brief Enables/disables the SSP Serial Port hardware.
- *
- * @param "IxSspAccPortStatus [in] portStatusSelected" - Set the SSP port to
- *                     enable or disable
- *
- * Global Data :
- *             - None.
- *                        
- * This API will enable/disable the SSP Serial Port hardware.
- * NOTE: This function is called by init to enable the SSP after setting up the
- * configurations and by uninit to disable the SSP.
- *
- * @return 
- *      - IX_SSP_SUCCESS - Port status set with valid enum value
- *             - IX_SSP_FAIL - invalid enum value
- *             - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called.
- *              
- * @li   Reentrant    : yes
- * @li   ISR Callable : yes
- *
- */
-PUBLIC IX_SSP_STATUS
-ixSspAccSSPPortStatusSet (
-       IxSspAccPortStatus portStatusSelected);
-
-/**
- * @ingroup IxSspAcc
- * 
- * @fn ixSspAccFrameFormatSelect (
-       IxSspAccFrameFormat frameFormatSelected)
- *
- * @brief Sets the frame format for the SSP Serial Port hardware
- *
- * @param "IxSspAccFrameFormat [in] frameFormatSelected" - The frame format of
- *                     SPI, SSP or Microwire can be selected as the format
- *
- * Global Data :
- *             - None.
- *                        
- * This API will set the format for the transfers via user input.
- * *NOTE*: The SSP hardware will be disabled to clear the FIFOs. Then its
- * previous state (enabled/disabled) restored after changing the format.
- *
- * @return 
- *      - IX_SSP_SUCCESS - frame format set with valid enum value
- *             - IX_SSP_INVALID_FRAME_FORMAT_ENUM_VALUE - invalid frame format value
- *             - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called.
- *              
- * @li   Reentrant    : yes
- * @li   ISR Callable : yes
- *
- */
-PUBLIC IX_SSP_STATUS
-ixSspAccFrameFormatSelect (
-       IxSspAccFrameFormat frameFormatSelected);
-
-/**
- * @ingroup IxSspAcc
- * 
- * @fn ixSspAccDataSizeSelect (
-       IxSspAccDataSize dataSizeSelected)
- *
- * @brief Sets the data size for transfers
- *
- * @param "IxSspAccDataSize [in] dataSizeSelected" - The data size between 4
- *                     and 16 that can be selected for data transfers
- *
- * Global Data :
- *             - None.
- *                        
- * This API will set the data size for the transfers via user input. It will
- * disallow the change of the data size if either of the Rx/Tx FIFO is not
- * empty to prevent data loss.
- * *NOTE*: The SSP port will be disabled if the FIFOs are found to be empty and
- *                     if between the check and disabling of the SSP (which clears the
- *                     FIFOs) data is received into the FIFO, it might be lost.
- * *NOTE*: The FIFOs can be cleared by disabling the SSP Port if necessary to
- *                     force the data size change.
- *
- * @return 
- *      - IX_SSP_SUCCESS - data size set with valid enum value
- *             - IX_SSP_RX_FIFO_NOT_EMPTY - Rx FIFO not empty, data size change is not
- *                                                     allowed.
- *             - IX_SSP_TX_FIFO_NOT_EMPTY - Tx FIFO not empty, data size change is not
- *                                                     allowed.
- *             - IX_SSP_INVALID_DATA_SIZE_ENUM_VALUE - invalid enum value
- *             - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called.
- *              
- * @li   Reentrant    : yes
- * @li   ISR Callable : yes
- *
- */
-PUBLIC IX_SSP_STATUS
-ixSspAccDataSizeSelect (
-       IxSspAccDataSize dataSizeSelected);
-
-/**
- * @ingroup IxSspAcc
- * 
- * @fn ixSspAccClockSourceSelect(
-       IxSspAccClkSource clkSourceSelected)
- *
- * @brief Sets the clock source of the SSP Serial Port hardware
- *
- * @param "IxSspAccClkSource [in] clkSourceSelected" - The clock source from
- *                     either external source on on-chip can be selected as the source
- *
- * Global Data :
- *             - None.
- *                        
- * This API will set the clock source for the transfers via user input.
- *
- * @return 
- *      - IX_SSP_SUCCESS - clock source set with valid enum value
- *             - IX_SSP_INVALID_CLOCK_SOURCE_ENUM_VALUE - invalid enum value
- *             - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called.
- *              
- * @li   Reentrant    : yes
- * @li   ISR Callable : yes
- *
- */
-PUBLIC IX_SSP_STATUS
-ixSspAccClockSourceSelect (
-       IxSspAccClkSource clkSourceSelected);
-
-/**
- * @ingroup IxSspAcc
- * 
- * @fn ixSspAccSerialClockRateConfigure (
-       UINT8 serialClockRateSelected)
- *
- * @brief Sets the on-chip Serial Clock Rate of the SSP Serial Port hardware.
- *
- * @param "UINT8 [in] serialClockRateSelected" - The serial clock rate that can
- *                     be set is between 7.2Kbps and 1.8432Mbps. The formula used is
- *                     Bit rate = 3.6864x10^6 / (2 x (SerialClockRateSelected + 1))
- *
- * Global Data :
- *             - None.
- *                        
- * This API will set the serial clock rate for the transfers via user input.
- *
- * @return 
- *      - IX_SSP_SUCCESS - Serial clock rate configured successfully
- *             - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called.
- *              
- * @li   Reentrant    : yes
- * @li   ISR Callable : yes
- *
- */
-PUBLIC IX_SSP_STATUS
-ixSspAccSerialClockRateConfigure (
-       UINT8 serialClockRateSelected);
-
-/**
- * @ingroup IxSspAcc
- * 
- * @fn ixSspAccRxFIFOIntEnable (
-       RxFIFOThresholdHandler rxFIFOIntrHandler)
- *
- * @brief Enables service request interrupt whenever the Rx FIFO hits its
- *             threshold
- *
- * @param "void [in] *rxFIFOIntrHandler(UINT32)" - function pointer to the
- *                             interrupt handler for the Rx FIFO exceeded.
- *
- * Global Data :
- *             - None.
- *                        
- * This API will enable the service request interrupt for the Rx FIFO
- *
- * @return 
- *      - IX_SSP_SUCCESS - Rx FIFO level interrupt enabled successfully
- *             - IX_SSP_RX_FIFO_HANDLER_MISSING - missing handler for Rx FIFO level interrupt
- *             - IX_SSP_POLL_MODE_BLOCKING - poll mode is selected at init, interrupt not
- *                             allowed to be enabled. Use init to enable interrupt mode.
- *             - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called.
- *              
- * @li   Reentrant    : yes
- * @li   ISR Callable : yes
- *
- */
-PUBLIC IX_SSP_STATUS
-ixSspAccRxFIFOIntEnable (
-       RxFIFOThresholdHandler rxFIFOIntrHandler);
-
-/**
- * @ingroup IxSspAcc
- * 
- * @fn ixSspAccRxFIFOIntDisable (
-       void)
- *
- * @brief Disables service request interrupt of the Rx FIFO.
- *
- * @param - None
- *
- * Global Data :
- *             - None.
- *                        
- * This API will disable the service request interrupt of the Rx FIFO.
- *
- * @return 
- *             - IX_SSP_SUCCESS - Rx FIFO Interrupt disabled successfully
- *             - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called.
- *              
- * @li   Reentrant    : yes
- * @li   ISR Callable : yes
- *
- */
-PUBLIC IX_SSP_STATUS
-ixSspAccRxFIFOIntDisable (
-       void);
-
-/**
- * @ingroup IxSspAcc
- * 
- * @fn ixSspAccTxFIFOIntEnable (
-       TxFIFOThresholdHandler txFIFOIntrHandler)
- *
- * @brief Enables service request interrupt of the Tx FIFO.
- *
- * @param "void [in] *txFIFOIntrHandler(UINT32)" - function pointer to the
- *                             interrupt handler for the Tx FIFO exceeded.
- *
- * Global Data :
- *             - None.
- *                        
- * This API will enable the service request interrupt of the Tx FIFO.
- *
- * @return 
- *      - IX_SSP_SUCCESS - Tx FIFO level interrupt enabled successfully
- *             - IX_SSP_TX_FIFO_HANDLER_MISSING - missing handler for Tx FIFO level interrupt
- *             - IX_SSP_POLL_MODE_BLOCKING - poll mode is selected at init, interrupt not
- *                             allowed to be enabled. Use init to enable interrupt mode.
- *             - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called.
- *              
- * @li   Reentrant    : yes
- * @li   ISR Callable : yes
- *
- */
-PUBLIC IX_SSP_STATUS
-ixSspAccTxFIFOIntEnable (
-       TxFIFOThresholdHandler txFIFOIntrHandler);
-
-/**
- * @ingroup IxSspAcc
- * 
- * @fn ixSspAccTxFIFOIntDisable (
-       void)
- *
- * @brief Disables service request interrupt of the Tx FIFO
- *
- * @param - None
- *
- * Global Data :
- *             - None.
- *                        
- * This API will disable the service request interrupt of the Tx FIFO
- *
- * @return 
- *             - IX_SSP_SUCCESS - Tx FIFO Interrupt disabled successfuly.
- *             - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called.
- *              
- * @li   Reentrant    : yes
- * @li   ISR Callable : yes
- *
- */
-PUBLIC IX_SSP_STATUS
-ixSspAccTxFIFOIntDisable (
-       void);
-
-/**
- * @ingroup IxSspAcc
- * 
- * @fn ixSspAccLoopbackEnable (
-       BOOL loopbackEnable)
- *
- * @brief Enables/disables the loopback mode
- *
- * @param "BOOL [in] loopbackEnable" - True to enable and false to disable.
- *
- * Global Data :
- *             - None.
- *                        
- * This API will set the mode of operation to either loopback or normal mode
- * according to the user input.
- *
- * @return 
- *             - IX_SSP_SUCCESS - Loopback enabled successfully
- *             - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called.
- *              
- * @li   Reentrant    : yes
- * @li   ISR Callable : yes
- *
- */
-PUBLIC IX_SSP_STATUS
-ixSspAccLoopbackEnable (
-       BOOL loopbackEnable);
-
-/**
- * @ingroup IxSspAcc
- * 
- * @fn ixSspAccSpiSclkPolaritySet (
-       IxSspAccSpiSclkPolarity spiSclkPolaritySelected)
- *
- * @brief Sets the SPI SCLK Polarity to Low or High
- *
- * @param - "IxSspAccSpiSclkPolarity [in] spiSclkPolaritySelected" - SPI SCLK
- *                             polarity that can be selected to either high or low
- *
- * Global Data :
- *             - None.
- *                        
- * This API is only used for the SPI frame format and will set the SPI SCLK polarity
- * to either low or high
- *
- * @return 
- *      - IX_SSP_SUCCESS - SPI Sclk polarity set with valid enum value
- *             - IX_SSP_INVALID_SPI_POLARITY_ENUM_VALUE - invalid SPI polarity value
- *             - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called.
- *              
- * @li   Reentrant    : yes
- * @li   ISR Callable : yes
- *
- */
-PUBLIC IX_SSP_STATUS
-ixSspAccSpiSclkPolaritySet (
-       IxSspAccSpiSclkPolarity spiSclkPolaritySelected);
-
-/**
- * @ingroup IxSspAcc
- * 
- * @fn ixSspAccSpiSclkPhaseSet (
-       IxSspAccSpiSclkPhase spiSclkPhaseSelected)
- *
- * @brief Sets the SPI SCLK Phase
- *
- * @param "IxSspAccSpiSclkPhase [in] spiSclkPhaseSelected" - Phase of either
- *                     the SCLK is inactive one cycle at the start of a frame and 1/2
- *                     cycle at the end of a frame, OR
- *                     the SCLK is inactive 1/2 cycle at the start of a frame and one
- *                     cycle at the end of a frame.
- *
- * Global Data :
- *             - IX_SSP_SUCCESS - SPI Sclk phase set with valid enum value
- *             - IX_SSP_INVALID_SPI_PHASE_ENUM_VALUE - invalid SPI phase value
- *             - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called.
- *                        
- * This API is only used for the SPI frame format and will set the SPI SCLK
- * phase according to user input.
- *
- * @return 
- *      - None
- *              
- * @li   Reentrant    : yes
- * @li   ISR Callable : yes
- *
- */
-PUBLIC IX_SSP_STATUS
-ixSspAccSpiSclkPhaseSet (
-       IxSspAccSpiSclkPhase spiSclkPhaseSelected);
-
-/**
- * @ingroup IxSspAcc
- * 
- * @fn ixSspAccMicrowireControlWordSet (
-       IxSspAccMicrowireCtlWord microwireCtlWordSelected)
- *
- * @brief Sets the Microwire control word to 8 or 16 bit format
- *
- * @param "IxSspAccMicrowireCtlWord [in] microwireCtlWordSelected" - Microwire
- *                     control word format can be either 8 or 16 bit format
- *
- * Global Data :
- *             - None.
- *                        
- * This API is only used for the Microwire frame format and will set the
- * control word to 8 or 16 bit format
- *
- * @return 
- *      - IX_SSP_SUCCESS - Microwire Control Word set with valid enum value
- *             - IX_SSP_TX_FIFO_NOT_EMPTY - Tx FIFO not empty, data size change is not
- *                                                     allowed.
- *             - IX_SSP_INVALID_MICROWIRE_CTL_CMD_ENUM_VALUE - invalid enum value
- *             - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called.
- *              
- * @li   Reentrant    : yes
- * @li   ISR Callable : yes
- *
- */
-PUBLIC IX_SSP_STATUS
-ixSspAccMicrowireControlWordSet (
-       IxSspAccMicrowireCtlWord microwireCtlWordSelected);
-
-/**
- * @ingroup IxSspAcc
- * 
- * @fn ixSspAccTxFIFOThresholdSet (
-       IxSspAccFifoThreshold txFIFOThresholdSelected)
- *
- * @brief Sets the Tx FIFO Threshold.
- *
- * @param "IxSspAccFifoThreshold [in] txFIFOThresholdSelected" - Threshold that
- *             is set for a Tx FIFO service request to be triggered
- *
- * Global Data :
- *             - None.
- *                        
- * This API will set the threshold for a Tx FIFO threshold to be triggered
- *
- * @return 
- *      - IX_SSP_SUCCESS - Tx FIFO Threshold set with valid enum value
- *             - IX_SSP_INVALID_TX_FIFO_THRESHOLD_ENUM_VALUE - invalid enum value
- *             - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called.
- *              
- * @li   Reentrant    : yes
- * @li   ISR Callable : yes
- *
- */
-PUBLIC IX_SSP_STATUS
-ixSspAccTxFIFOThresholdSet (
-       IxSspAccFifoThreshold txFIFOThresholdSelected);
-
-/**
- * @ingroup IxSspAcc
- * 
- * @fn ixSspAccRxFIFOThresholdSet (
-       IxSspAccFifoThreshold rxFIFOThresholdSelected)
- *
- * @brief Sets the Rx FIFO Threshold.
- *
- * @param "IxSspAccFifoThreshold [in] rxFIFOThresholdSelected" - Threshold that
- *             is set for a Tx FIFO service request to be triggered
- *
- * Global Data :
- *             - None.
- *                        
- * This API will will set the threshold for a Rx FIFO threshold to be triggered
- *
- * @return 
- *      - IX_SSP_SUCCESS - Rx FIFO Threshold set with valid enum value
- *             - IX_SSP_INVALID_RX_FIFO_THRESHOLD_ENUM_VALUE - invalid enum value
- *             - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called.
- *              
- * @li   Reentrant    : yes
- * @li   ISR Callable : yes
- *
- */
-PUBLIC IX_SSP_STATUS
-ixSspAccRxFIFOThresholdSet (
-       IxSspAccFifoThreshold rxFIFOThresholdSelected);
-
-
-/**
- * Debug functions
- */
-
-/**
- * @ingroup IxSspAcc
- * 
- * @fn ixSspAccStatsGet (
-       IxSspAccStatsCounters *sspStats)
- *
- * @brief Returns the SSP Statistics through the pointer passed in
- *
- * @param "IxSspAccStatsCounters [in] *sspStats" - SSP statistics counter will
- *                     be read and written to the location pointed by this pointer.
- *
- * Global Data :
- *             - None.
- *                        
- * This API will return the statistics counters of the SSP transfers.
- *
- * @return 
- *      - IX_SSP_SUCCESS - Stats obtained into the pointer provided successfully
- *             - IX_SSP_FAIL - client provided pointer is NULL
- *              
- * @li   Reentrant    : yes
- * @li   ISR Callable : yes
- *
- */
-PUBLIC IX_SSP_STATUS
-ixSspAccStatsGet (
-       IxSspAccStatsCounters *sspStats);
-
-/**
- * @ingroup IxSspAcc
- * 
- * @fn ixSspAccStatsReset (
-       void)
- *
- * @brief Resets the SSP Statistics
- *
- * @param - None
- *
- * Global Data :
- *             - None.
- *                        
- * This API will reset the SSP statistics counters.
- *
- * @return 
- *      - None
- *              
- * @li   Reentrant    : yes
- * @li   ISR Callable : yes
- *
- */
-PUBLIC void
-ixSspAccStatsReset (
-       void);
-
-/**
- * @ingroup IxSspAcc
- * 
- * @fn ixSspAccShow (
-               void)
- *
- * @brief Display SSP status registers and statistics counters.
- *
- * @param - None
- *
- * Global Data :
- *             - None.
- *                        
- * This API will display the status registers of the SSP and the statistics
- * counters.
- *
- * @return 
- *             - IX_SSP_SUCCESS - SSP show called successfully.
- *             - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called.
- *              
- * @li   Reentrant    : yes
- * @li   ISR Callable : yes
- *
- */
-PUBLIC IX_SSP_STATUS
-ixSspAccShow (
-       void);
-
-/**
- * @ingroup IxSspAcc
- * 
- * @fn ixSspAccSSPBusyCheck (
-               void)
- *
- * @brief Determine the state of the SSP serial port hardware.
- *
- * @param - None
- *
- * Global Data :
- *             - None.
- *                        
- * This API will return the state of the SSP serial port hardware - busy or
- * idle
- *
- * @return 
- *      - IX_SSP_BUSY - SSP is busy
- *             - IX_SSP_IDLE - SSP is idle.
- *             - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called.
- *              
- * @li   Reentrant    : yes
- * @li   ISR Callable : yes
- *
- */
-PUBLIC IX_SSP_STATUS
-ixSspAccSSPBusyCheck (
-       void);
-
-/**
- * @ingroup IxSspAcc
- * 
- * @fn ixSspAccTxFIFOLevelGet (
-               void)
- *
- * @brief Obtain the Tx FIFO's level
- *
- * @param - None
- *
- * Global Data :
- *             - None.
- *                        
- * This API will return the level of the Tx FIFO
- *
- * @return 
- *      - 0..16; 0 can also mean SSP not initialized and will need to be init.
- *              
- * @li   Reentrant    : yes
- * @li   ISR Callable : yes
- *
- */
-PUBLIC UINT8
-ixSspAccTxFIFOLevelGet (
-       void);
-
-/**
- * @ingroup IxSspAcc
- * 
- * @fn ixSspAccRxFIFOLevelGet (
-               void)
- *
- * @brief Obtain the Rx FIFO's level
- *
- * @param - None
- *
- * Global Data :
- *             - None.
- *                        
- * This API will return the level of the Rx FIFO
- *
- * @return 
- *      - 0..16; 0 can also mean SSP not initialized and will need to be init.
- *              
- * @li   Reentrant    : yes
- * @li   ISR Callable : yes
- *
- */
-PUBLIC UINT8
-ixSspAccRxFIFOLevelGet (
-       void);
-
-/**
- * @ingroup IxSspAcc
- * 
- * @fn ixSspAccRxFIFOOverrunCheck (
-               void)
- *
- * @brief Check if the Rx FIFO has overrun its FIFOs
- *
- * @param - None
- *
- * Global Data :
- *             - None.
- *                        
- * This API will return whether the Rx FIFO has overrun its 16 FIFOs
- *
- * @return 
- *      - IX_SSP_OVERRUN_OCCURRED - Rx FIFO overrun occurred
- *             - IX_SSP_NO_OVERRUN - Rx FIFO did not overrun
- *             - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called.
- *
- * @li   Reentrant    : yes
- * @li   ISR Callable : yes
- *
- */
-PUBLIC IX_SSP_STATUS
-ixSspAccRxFIFOOverrunCheck (
-       void);
-
-#endif /* __ixp46X */
-#endif /* IXSSPACC_H */
+/**
+ * @file IxSspAcc.h
+ *
+ * @brief  Header file for the IXP400 SSP Serial Port Access (IxSspAcc)
+ *
+ * @version $Revision: 1.1.1.1 $
+ * 
+ * @par
+ * IXP400 SW Release version 2.0
+ * 
+ * -- Copyright Notice --
+ * 
+ * @par
+ * Copyright 2001-2005, Intel Corporation.
+ * All rights reserved.
+ * 
+ * @par
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the Intel Corporation nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ * 
+ * @par
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * 
+ * @par
+ * -- End of Copyright Notice --
+ */
+
+/**
+ * @defgroup IxSspAcc IXP400 SSP Serial Port Access (IxSspAcc) API 
+ *
+ * @brief IXP400 SSP Serial Port Access Public API
+ *
+ * @{
+ */
+#ifndef IXSSPACC_H
+#define IXSSPACC_H
+
+#ifdef __ixp46X
+
+#include "IxOsal.h"
+
+/*
+ * Section for enum
+ */
+/**
+ * @ingroup IxSspAcc
+ * 
+ * @enum IxSspAccDataSize
+ *
+ * @brief The data sizes in bits that are supported by the protocol
+ */
+typedef enum
+{
+       DATA_SIZE_TOO_SMALL = 0x2,
+       DATA_SIZE_4 = 0x3,
+       DATA_SIZE_5,
+       DATA_SIZE_6,
+       DATA_SIZE_7,
+       DATA_SIZE_8,
+       DATA_SIZE_9,
+       DATA_SIZE_10,
+       DATA_SIZE_11,
+       DATA_SIZE_12,
+       DATA_SIZE_13,
+       DATA_SIZE_14,
+       DATA_SIZE_15,
+       DATA_SIZE_16,
+       DATA_SIZE_TOO_BIG
+} IxSspAccDataSize;
+
+/**
+ * @ingroup IxSspAcc
+ * 
+ * @enum IxSspAccPortStatus
+ *
+ * @brief The status of the SSP port to be set to enable/disable
+ */
+typedef enum
+{
+       SSP_PORT_DISABLE = 0x0,
+       SSP_PORT_ENABLE,
+       INVALID_SSP_PORT_STATUS
+} IxSspAccPortStatus;
+
+/**
+ * @ingroup IxSspAcc
+ * 
+ * @enum IxSspAccFrameFormat
+ *
+ * @brief The frame format that is to be used - SPI, SSP, or Microwire
+ */
+typedef enum
+{
+       SPI_FORMAT = 0x0,
+       SSP_FORMAT,
+       MICROWIRE_FORMAT,
+       INVALID_FORMAT
+} IxSspAccFrameFormat;
+
+/**
+ * @ingroup IxSspAcc
+ * 
+ * @enum IxSspAccClkSource
+ *
+ * @brief The source to produce the SSP serial clock
+ */
+typedef enum
+{
+       ON_CHIP_CLK = 0x0,
+       EXTERNAL_CLK,
+       INVALID_CLK_SOURCE
+} IxSspAccClkSource;
+
+/**
+ * @ingroup IxSspAcc
+ * 
+ * @enum IxSspAccSpiSclkPhase
+ *
+ * @brief The SPI SCLK Phase: 
+ * 0 - SCLK is inactive one cycle at the start of a frame and 1/2 cycle at the
+ *             end of a frame.
+ * 1 - SCLK is inactive 1/2 cycle at the start of a frame and one cycle at the
+ *             end of a frame.
+ */
+typedef enum
+{
+       START_ONE_END_HALF = 0x0,
+       START_HALF_END_ONE,
+       INVALID_SPI_PHASE
+} IxSspAccSpiSclkPhase;
+
+/**
+ * @ingroup IxSspAcc
+ * 
+ * @enum IxSspAccSpiSclkPolarity
+ *
+ * @brief The SPI SCLK Polarity can be set to either low or high.
+ */
+typedef enum
+{
+       SPI_POLARITY_LOW = 0x0,
+       SPI_POLARITY_HIGH,
+       INVALID_SPI_POLARITY
+} IxSspAccSpiSclkPolarity;
+
+/**
+ * @ingroup IxSspAcc
+ * 
+ * @enum IxSspAccMicrowireCtlWord
+ *
+ * @brief The Microwire control word can be either 8 or 16 bit.
+ */
+typedef enum
+{
+       MICROWIRE_8_BIT = 0x0,
+       MICROWIRE_16_BIT,
+       INVALID_MICROWIRE_CTL_WORD
+} IxSspAccMicrowireCtlWord;
+
+/**
+ * @ingroup IxSspAcc
+ * 
+ * @enum IxSspAccFifoThreshold
+ *
+ * @brief The threshold in frames (each frame is defined by IxSspAccDataSize)
+ *                     that can be set for the FIFO to trigger a threshold exceed when
+ *                     checking with the ExceedThresholdCheck functions or an interrupt
+ *                     when it is enabled.
+ */
+typedef enum
+{
+       FIFO_TSHLD_1 =  0x0,
+       FIFO_TSHLD_2,
+       FIFO_TSHLD_3,
+       FIFO_TSHLD_4,
+       FIFO_TSHLD_5,
+       FIFO_TSHLD_6,
+       FIFO_TSHLD_7,
+       FIFO_TSHLD_8,
+       FIFO_TSHLD_9,
+       FIFO_TSHLD_10,
+       FIFO_TSHLD_11,
+       FIFO_TSHLD_12,
+       FIFO_TSHLD_13,
+       FIFO_TSHLD_14,
+       FIFO_TSHLD_15,
+       FIFO_TSHLD_16,
+       INVALID_FIFO_TSHLD
+} IxSspAccFifoThreshold;
+
+/**
+ * @ingroup IxSspAcc
+ * 
+ * @enum IX_SSP_STATUS
+ *
+ * @brief The statuses that can be returned in a SSP Serial Port Access
+ */
+typedef enum
+{
+       IX_SSP_SUCCESS = IX_SUCCESS, /**< Success status */
+       IX_SSP_FAIL, /**< Fail status */
+       IX_SSP_RX_FIFO_OVERRUN_HANDLER_MISSING, /**<
+                                               Rx FIFO Overrun handler is NULL. */
+       IX_SSP_RX_FIFO_HANDLER_MISSING, /**<
+                                       Rx FIFO threshold hit or above handler is NULL
+                                       */
+       IX_SSP_TX_FIFO_HANDLER_MISSING, /**<
+                                       Tx FIFO threshold hit or below handler is NULL
+                                       */
+       IX_SSP_FIFO_NOT_EMPTY_FOR_SETTING_CTL_CMD, /**<
+                                       Tx FIFO not empty and therefore microwire
+                                       control command size setting is not allowed.    */
+       IX_SSP_INVALID_FRAME_FORMAT_ENUM_VALUE, /**<
+                                       frame format selected is invalid. */
+       IX_SSP_INVALID_DATA_SIZE_ENUM_VALUE, /**<
+                                       data size selected is invalid. */
+       IX_SSP_INVALID_CLOCK_SOURCE_ENUM_VALUE, /**<
+                                       source clock selected is invalid. */
+       IX_SSP_INVALID_TX_FIFO_THRESHOLD_ENUM_VALUE, /**<
+                                       Tx FIFO threshold selected is invalid. */
+       IX_SSP_INVALID_RX_FIFO_THRESHOLD_ENUM_VALUE, /**<
+                                       Rx FIFO threshold selected is invalid. */
+       IX_SSP_INVALID_SPI_PHASE_ENUM_VALUE, /**<
+                                       SPI phase selected is invalid. */
+       IX_SSP_INVALID_SPI_POLARITY_ENUM_VALUE, /**<
+                                       SPI polarity selected is invalid. */
+       IX_SSP_INVALID_MICROWIRE_CTL_CMD_ENUM_VALUE, /**<
+                                       Microwire control command selected is invalid
+                                       */
+       IX_SSP_INT_UNBIND_FAIL, /**< Interrupt unbind fail to unbind SSP
+                       interrupt */
+       IX_SSP_INT_BIND_FAIL, /**< Interrupt bind fail during init */
+       IX_SSP_RX_FIFO_NOT_EMPTY, /**<
+                                       Rx FIFO not empty while trying to change data
+                                       size. */
+       IX_SSP_TX_FIFO_NOT_EMPTY, /**<
+                                       Rx FIFO not empty while trying to change data
+                                       size or microwire control command size. */
+       IX_SSP_POLL_MODE_BLOCKING, /**<
+                                       poll mode selected blocks interrupt mode from
+                                       being selected. */
+       IX_SSP_TX_FIFO_HIT_BELOW_THRESHOLD, /**<
+                                       Tx FIFO level hit or below threshold. */
+       IX_SSP_TX_FIFO_EXCEED_THRESHOLD, /**<
+                                       Tx FIFO level exceeded threshold. */
+       IX_SSP_RX_FIFO_HIT_ABOVE_THRESHOLD, /**<
+                                       Rx FIFO level hit or exceeded threshold. */
+       IX_SSP_RX_FIFO_BELOW_THRESHOLD, /**<
+                                       Rx FIFO level below threshold. */
+       IX_SSP_BUSY, /**< SSP is busy. */
+       IX_SSP_IDLE, /**< SSP is idle. */
+       IX_SSP_OVERRUN_OCCURRED, /**<
+                                       SSP has experienced an overrun. */
+       IX_SSP_NO_OVERRUN, /**<
+                                       SSP did not experience an overrun. */
+       IX_SSP_NOT_SUPORTED, /**< hardware does not support SSP */
+       IX_SSP_NOT_INIT, /**< SSP Access not intialized */
+       IX_SSP_NULL_POINTER /**< parameter passed in is NULL */
+} IX_SSP_STATUS;
+
+/**
+ * @ingroup IxSspAcc
+ *
+ * @brief SSP Rx FIFO Overrun handler
+ *
+ * This function is called for the client to handle Rx FIFO Overrun that occurs
+ * in the SSP hardware
+ */
+typedef void (*RxFIFOOverrunHandler)(void);
+
+/**
+ * @ingroup IxSspAcc
+ * 
+ * @brief SSP Rx FIFO Threshold hit or above handler
+ *
+ * This function is called for the client to handle Rx FIFO threshold hit or
+ * or above that occurs in the SSP hardware
+ */
+typedef void (*RxFIFOThresholdHandler)(void);
+
+/**
+ * @ingroup IxSspAcc
+ * 
+ * @brief SSP Tx FIFO Threshold hit or below handler
+ *
+ * This function is called for the client to handle Tx FIFO threshold hit or
+ * or below that occurs in the SSP hardware
+ */
+typedef void (*TxFIFOThresholdHandler)(void);
+
+
+/*
+ * Section for struct
+ */
+/**
+ * @ingroup IxSspAcc
+ *
+ * @brief contains all the variables required to initialize the SSP serial port
+ *             hardware.
+ * 
+ * Structure to be filled and used for calling initialization
+ */
+typedef struct
+{
+       IxSspAccFrameFormat FrameFormatSelected;/**<Select between SPI, SSP and
+                                                                                               Microwire. */
+       IxSspAccDataSize DataSizeSelected;              /**<Select between 4 and 16. */
+       IxSspAccClkSource ClkSourceSelected;    /**<Select clock source to be
+                                                                                               on-chip or external. */
+       IxSspAccFifoThreshold TxFIFOThresholdSelected;
+                                                                                       /**<Select Tx FIFO threshold
+                                                                                               between 1 to 16. */
+       IxSspAccFifoThreshold RxFIFOThresholdSelected;
+                                                                                       /**<Select Rx FIFO threshold
+                                                                                               between 1 to 16. */
+       BOOL RxFIFOIntrEnable;                                  /**<Enable/disable Rx FIFO
+                                                                                               threshold interrupt. Disabling
+                                                                                               this interrupt will require
+                                                                                               the use of the polling function
+                                                                                               RxFIFOExceedThresholdCheck. */
+       BOOL TxFIFOIntrEnable;                                  /**<Enable/disable Tx FIFO
+                                                                                               threshold interrupt. Disabling
+                                                                                               this interrupt will require
+                                                                                               the use of the polling function
+                                                                                               TxFIFOExceedThresholdCheck. */
+       RxFIFOThresholdHandler RxFIFOThsldHdlr; /**<Pointer to function to handle
+                                                                                               a Rx FIFO interrupt. */
+       TxFIFOThresholdHandler TxFIFOThsldHdlr; /**<Pointer to function to handle
+                                                                                               a Tx FIFO interrupt. */
+       RxFIFOOverrunHandler RxFIFOOverrunHdlr; /**<Pointer to function to handle
+                                                                                               a Rx FIFO overrun interrupt. */
+       BOOL LoopbackEnable;                                    /**<Select operation mode to be
+                                                                                               normal or loopback mode. */
+       IxSspAccSpiSclkPhase SpiSclkPhaseSelected;
+                                                                                       /**<Select SPI SCLK phase to start
+                                                                                               with one inactive cycle and end
+                                                                                               with 1/2 inactive cycle or
+                                                                                               start with 1/2 inactive cycle
+                                                                                               and end with one inactive
+                                                                                               cycle. (Only used in
+                                                                                               SPI format). */
+       IxSspAccSpiSclkPolarity SpiSclkPolaritySelected;
+                                                                                       /**<Select SPI SCLK idle state
+                                                                                               to be low or high. (Only used in
+                                                                                               SPI format). */
+       IxSspAccMicrowireCtlWord MicrowireCtlWordSelected;
+                                                                                       /**<Select Microwire control
+                                                                                               format to be 8 or 16-bit. (Only
+                                                                                               used in Microwire format). */
+       UINT8 SerialClkRateSelected;                    /**<Select between 0 (1.8432Mbps)
+                                                                                               and 255 (7.2Kbps). The
+                                                                                               formula used is Bit rate = 
+                                                                                               3.6864x10^6 / 
+                                                                                               (2 x (SerialClkRateSelect + 1))
+                                                                                               */
+} IxSspInitVars;
+
+/**
+ * @ingroup IxSspAcc
+ *
+ * @brief contains counters of the SSP statistics
+ * 
+ * Structure contains all values of counters and associated overflows.
+ */
+typedef struct
+{
+       UINT32 ixSspRcvCounter;         /**<Total frames received. */
+       UINT32 ixSspXmitCounter;        /**<Total frames transmitted. */
+       UINT32 ixSspOverflowCounter;/**<Total occurrences of overflow. */
+} IxSspAccStatsCounters;
+
+
+/*
+ * Section for prototypes interface functions
+ */
+
+/**
+ * @ingroup IxSspAcc
+ * 
+ * @fn ixSspAccInit (
+       IxSspInitVars *initVarsSelected);
+ *
+ * @brief Initializes the SSP Access module.
+ *
+ * @param "IxSspAccInitVars [in] *initVarsSelected" - struct containing required
+ *                     variables for initialization 
+ *
+ * Global Data :
+ *             - None.
+ *                        
+ * This API will initialize the SSP Serial Port hardware to the user specified
+ * configuration. Then it will enable the SSP Serial Port.
+ * *NOTE*: Once interrupt or polling mode is selected, the mode cannot be
+ * changed via the interrupt enable/disable function but the init needs to be
+ * called again to change it.
+ *
+ * @return 
+ *      - IX_SSP_SUCCESS - Successfully initialize and enable the SSP
+ *                                                                     serial port.
+ *             - IX_SSP_RX_FIFO_HANDLER_MISSING - interrupt mode is selected but RX FIFO
+ *                                                                     handler pointer is NULL
+ *             - IX_SSP_TX_FIFO_HANDLER_MISSING - interrupt mode is selected but TX FIFO
+ *                                                                     handler pointer is NULL
+ *             - IX_SSP_RX_FIFO_OVERRUN_HANDLER_MISSING - interrupt mode is selected but
+ *                                                                     RX FIFO Overrun handler pointer is NULL
+ *             - IX_SSP_RX_FIFO_NOT_EMPTY - Rx FIFO not empty, data size change is not
+ *                                             allowed.
+ *             - IX_SSP_TX_FIFO_NOT_EMPTY - Tx FIFO not empty, data size change is not
+ *                                             allowed.
+ *             - IX_SSP_INVALID_FRAME_FORMAT_ENUM_VALUE - frame format selected is invalid
+ *             - IX_SSP_INVALID_DATA_SIZE_ENUM_VALUE - data size selected is invalid
+ *             - IX_SSP_INVALID_CLOCK_SOURCE_ENUM_VALUE - clock source selected is invalid
+ *             - IX_SSP_INVALID_TX_FIFO_THRESHOLD_ENUM_VALUE - Tx FIFO threshold level
+ *                                                                     selected is invalid
+ *             - IX_SSP_INVALID_RX_FIFO_THRESHOLD_ENUM_VALUE - Rx FIFO threshold level
+ *                                                                     selected is invalid
+ *             - IX_SSP_INVALID_SPI_PHASE_ENUM_VALUE - SPI phase selected is invalid
+ *             - IX_SSP_INVALID_SPI_POLARITY_ENUM_VALUE - SPI polarity selected is invalid
+ *             - IX_SSP_INVALID_MICROWIRE_CTL_CMD_ENUM_VALUE - microwire control command
+ *                                                                     size is invalid
+ *      - IX_SSP_INT_UNBIND_FAIL - interrupt handler failed to unbind SSP interrupt
+ *             - IX_SSP_INT_BIND_FAIL - interrupt handler failed to bind to SSP interrupt
+ *                                                                     hardware trigger
+ *      - IX_SSP_NOT_SUPORTED - hardware does not support SSP
+ *      - IX_SSP_NULL_POINTER - parameter passed in is NULL
+ *              
+ * @li   Reentrant    : yes
+ * @li   ISR Callable : yes
+ *
+ */
+PUBLIC IX_SSP_STATUS
+ixSspAccInit (IxSspInitVars *initVarsSelected);
+
+/**
+ * @ingroup IxSspAcc
+ * 
+ * @fn ixSspAccUninit (
+       void)
+ *
+ * @brief Un-initializes the SSP Serial Port Access component
+ *
+ * @param - None
+ *
+ * Global Data :
+ *             - None.
+ *                        
+ * This API will disable the SSP Serial Port hardware. The client can call the
+ * init function again if they wish to enable the SSP.
+ *
+ * @return 
+ *      - IX_SSP_SUCCESS - successfully uninit SSP component
+ *      - IX_SSP_INT_UNBIND_FAIL - interrupt handler failed to unbind SSP interrupt
+ *              
+ * @li   Reentrant    : yes
+ * @li   ISR Callable : yes
+ *
+ */
+PUBLIC IX_SSP_STATUS
+ixSspAccUninit (void);
+
+/**
+ * @ingroup IxSspAcc
+ * 
+ * @fn ixSspAccFIFODataSubmit (
+       UINT16 *data,
+       UINT32 amtOfData)
+ *
+ * @brief Inserts data into the SSP Serial Port's FIFO
+ *
+ * @param      "UINT16 [in] *data" - pointer to the location to transmit the data
+ *                             from
+ *                     "UINT32 [in] amtOfData" - number of data to be transmitted.
+ *
+ * Global Data :
+ *             - None.
+ *                        
+ * This API will insert the amount of data specified by "amtOfData" from buffer
+ * pointed to by "data" into the FIFO to be transmitted by the hardware.
+ *
+ * @return 
+ *      - IX_SSP_SUCCESS - Data inserted successfully into FIFO
+ *             - IX_SSP_FAIL - FIFO insufficient space
+ *             - IX_SSP_NULL_POINTER - data pointer passed by client is NULL
+ *             - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called.
+ *              
+ * @li   Reentrant    : yes
+ * @li   ISR Callable : yes
+ *
+ */
+PUBLIC IX_SSP_STATUS
+ixSspAccFIFODataSubmit (
+       UINT16* data,
+       UINT32 amtOfData);
+
+/**
+ * @ingroup IxSspAcc
+ * 
+ * @fn ixSspAccFIFODataReceive (
+       UINT16 *data,
+       UINT32 amtOfData)
+ *
+ * @brief Extract data from the SSP Serial Port's FIFO
+ *
+ * @param      "UINT16 [in] *data" - pointer to the location to receive the data into
+ *                     "UINT32 [in] amtOfData" - number of data to be received.
+ *
+ * Global Data :
+ *             - None.
+ *                        
+ * This API will extract the amount of data specified by "amtOfData" from the
+ * FIFO already received by the hardware into the buffer pointed to by "data".
+ *
+ * @return 
+ *      - IX_SSP_SUCCESS - Data extracted successfully from FIFO
+ *             - IX_SSP_FAIL - FIFO has no data
+ *             - IX_SSP_NULL_POINTER - data pointer passed by client is NULL
+ *             - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called.
+ *              
+ * @li   Reentrant    : yes
+ * @li   ISR Callable : yes
+ *
+ */
+PUBLIC IX_SSP_STATUS
+ixSspAccFIFODataReceive (
+       UINT16* data,
+       UINT32 amtOfData);
+
+
+/**
+ * Polling Functions
+ */
+
+/**
+ * @ingroup IxSspAcc
+ * 
+ * @fn ixSspAccTxFIFOHitOrBelowThresholdCheck (
+               void)
+ *
+ * @brief Check if the Tx FIFO threshold has been hit or fallen below.
+ *
+ * @param - None
+ *
+ * Global Data :
+ *             - None.
+ *                        
+ * This API will return whether the Tx FIFO threshold has been exceeded or not
+ *
+ * @return 
+ *      - IX_SSP_TX_FIFO_HIT_BELOW_THRESHOLD - Tx FIFO level hit or below threshold .
+ *             - IX_SSP_TX_FIFO_EXCEED_THRESHOLD - Tx FIFO level exceeded threshold.
+ *             - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called.
+ *              
+ * @li   Reentrant    : yes
+ * @li   ISR Callable : yes
+ *
+ */
+PUBLIC IX_SSP_STATUS
+ixSspAccTxFIFOHitOrBelowThresholdCheck (
+       void);
+
+/**
+ * @ingroup IxSspAcc
+ * 
+ * @fn ixSspAccRxFIFOHitOrAboveThresholdCheck (
+               void)
+ *
+ * @brief Check if the Rx FIFO threshold has been hit or exceeded.
+ *
+ * @param - None
+ *
+ * Global Data :
+ *             - None.
+ *                        
+ * This API will return whether the Rx FIFO level is below threshold or not
+ *
+ * @return 
+ *      - IX_SSP_RX_FIFO_HIT_ABOVE_THRESHOLD - Rx FIFO level hit or exceeded threshold
+ *             - IX_SSP_RX_FIFO_BELOW_THRESHOLD - Rx FIFO level below threshold
+ *             - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called.
+ *              
+ * @li   Reentrant    : yes
+ * @li   ISR Callable : yes
+ *
+ */
+PUBLIC IX_SSP_STATUS
+ixSspAccRxFIFOHitOrAboveThresholdCheck (
+       void);
+
+
+/**
+ * Configuration functions
+ *
+ * NOTE: These configurations are not required to be called once init is called
+ * unless configurations need to be changed on the fly.
+ */
+
+/**
+ * @ingroup IxSspAcc
+ * 
+ * @fn ixSspAccSSPPortStatusSet (
+       IxSspAccPortStatus portStatusSelected)
+ *
+ * @brief Enables/disables the SSP Serial Port hardware.
+ *
+ * @param "IxSspAccPortStatus [in] portStatusSelected" - Set the SSP port to
+ *                     enable or disable
+ *
+ * Global Data :
+ *             - None.
+ *                        
+ * This API will enable/disable the SSP Serial Port hardware.
+ * NOTE: This function is called by init to enable the SSP after setting up the
+ * configurations and by uninit to disable the SSP.
+ *
+ * @return 
+ *      - IX_SSP_SUCCESS - Port status set with valid enum value
+ *             - IX_SSP_FAIL - invalid enum value
+ *             - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called.
+ *              
+ * @li   Reentrant    : yes
+ * @li   ISR Callable : yes
+ *
+ */
+PUBLIC IX_SSP_STATUS
+ixSspAccSSPPortStatusSet (
+       IxSspAccPortStatus portStatusSelected);
+
+/**
+ * @ingroup IxSspAcc
+ * 
+ * @fn ixSspAccFrameFormatSelect (
+       IxSspAccFrameFormat frameFormatSelected)
+ *
+ * @brief Sets the frame format for the SSP Serial Port hardware
+ *
+ * @param "IxSspAccFrameFormat [in] frameFormatSelected" - The frame format of
+ *                     SPI, SSP or Microwire can be selected as the format
+ *
+ * Global Data :
+ *             - None.
+ *                        
+ * This API will set the format for the transfers via user input.
+ * *NOTE*: The SSP hardware will be disabled to clear the FIFOs. Then its
+ * previous state (enabled/disabled) restored after changing the format.
+ *
+ * @return 
+ *      - IX_SSP_SUCCESS - frame format set with valid enum value
+ *             - IX_SSP_INVALID_FRAME_FORMAT_ENUM_VALUE - invalid frame format value
+ *             - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called.
+ *              
+ * @li   Reentrant    : yes
+ * @li   ISR Callable : yes
+ *
+ */
+PUBLIC IX_SSP_STATUS
+ixSspAccFrameFormatSelect (
+       IxSspAccFrameFormat frameFormatSelected);
+
+/**
+ * @ingroup IxSspAcc
+ * 
+ * @fn ixSspAccDataSizeSelect (
+       IxSspAccDataSize dataSizeSelected)
+ *
+ * @brief Sets the data size for transfers
+ *
+ * @param "IxSspAccDataSize [in] dataSizeSelected" - The data size between 4
+ *                     and 16 that can be selected for data transfers
+ *
+ * Global Data :
+ *             - None.
+ *                        
+ * This API will set the data size for the transfers via user input. It will
+ * disallow the change of the data size if either of the Rx/Tx FIFO is not
+ * empty to prevent data loss.
+ * *NOTE*: The SSP port will be disabled if the FIFOs are found to be empty and
+ *                     if between the check and disabling of the SSP (which clears the
+ *                     FIFOs) data is received into the FIFO, it might be lost.
+ * *NOTE*: The FIFOs can be cleared by disabling the SSP Port if necessary to
+ *                     force the data size change.
+ *
+ * @return 
+ *      - IX_SSP_SUCCESS - data size set with valid enum value
+ *             - IX_SSP_RX_FIFO_NOT_EMPTY - Rx FIFO not empty, data size change is not
+ *                                                     allowed.
+ *             - IX_SSP_TX_FIFO_NOT_EMPTY - Tx FIFO not empty, data size change is not
+ *                                                     allowed.
+ *             - IX_SSP_INVALID_DATA_SIZE_ENUM_VALUE - invalid enum value
+ *             - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called.
+ *              
+ * @li   Reentrant    : yes
+ * @li   ISR Callable : yes
+ *
+ */
+PUBLIC IX_SSP_STATUS
+ixSspAccDataSizeSelect (
+       IxSspAccDataSize dataSizeSelected);
+
+/**
+ * @ingroup IxSspAcc
+ * 
+ * @fn ixSspAccClockSourceSelect(
+       IxSspAccClkSource clkSourceSelected)
+ *
+ * @brief Sets the clock source of the SSP Serial Port hardware
+ *
+ * @param "IxSspAccClkSource [in] clkSourceSelected" - The clock source from
+ *                     either external source on on-chip can be selected as the source
+ *
+ * Global Data :
+ *             - None.
+ *                        
+ * This API will set the clock source for the transfers via user input.
+ *
+ * @return 
+ *      - IX_SSP_SUCCESS - clock source set with valid enum value
+ *             - IX_SSP_INVALID_CLOCK_SOURCE_ENUM_VALUE - invalid enum value
+ *             - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called.
+ *              
+ * @li   Reentrant    : yes
+ * @li   ISR Callable : yes
+ *
+ */
+PUBLIC IX_SSP_STATUS
+ixSspAccClockSourceSelect (
+       IxSspAccClkSource clkSourceSelected);
+
+/**
+ * @ingroup IxSspAcc
+ * 
+ * @fn ixSspAccSerialClockRateConfigure (
+       UINT8 serialClockRateSelected)
+ *
+ * @brief Sets the on-chip Serial Clock Rate of the SSP Serial Port hardware.
+ *
+ * @param "UINT8 [in] serialClockRateSelected" - The serial clock rate that can
+ *                     be set is between 7.2Kbps and 1.8432Mbps. The formula used is
+ *                     Bit rate = 3.6864x10^6 / (2 x (SerialClockRateSelected + 1))
+ *
+ * Global Data :
+ *             - None.
+ *                        
+ * This API will set the serial clock rate for the transfers via user input.
+ *
+ * @return 
+ *      - IX_SSP_SUCCESS - Serial clock rate configured successfully
+ *             - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called.
+ *              
+ * @li   Reentrant    : yes
+ * @li   ISR Callable : yes
+ *
+ */
+PUBLIC IX_SSP_STATUS
+ixSspAccSerialClockRateConfigure (
+       UINT8 serialClockRateSelected);
+
+/**
+ * @ingroup IxSspAcc
+ * 
+ * @fn ixSspAccRxFIFOIntEnable (
+       RxFIFOThresholdHandler rxFIFOIntrHandler)
+ *
+ * @brief Enables service request interrupt whenever the Rx FIFO hits its
+ *             threshold
+ *
+ * @param "void [in] *rxFIFOIntrHandler(UINT32)" - function pointer to the
+ *                             interrupt handler for the Rx FIFO exceeded.
+ *
+ * Global Data :
+ *             - None.
+ *                        
+ * This API will enable the service request interrupt for the Rx FIFO
+ *
+ * @return 
+ *      - IX_SSP_SUCCESS - Rx FIFO level interrupt enabled successfully
+ *             - IX_SSP_RX_FIFO_HANDLER_MISSING - missing handler for Rx FIFO level interrupt
+ *             - IX_SSP_POLL_MODE_BLOCKING - poll mode is selected at init, interrupt not
+ *                             allowed to be enabled. Use init to enable interrupt mode.
+ *             - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called.
+ *              
+ * @li   Reentrant    : yes
+ * @li   ISR Callable : yes
+ *
+ */
+PUBLIC IX_SSP_STATUS
+ixSspAccRxFIFOIntEnable (
+       RxFIFOThresholdHandler rxFIFOIntrHandler);
+
+/**
+ * @ingroup IxSspAcc
+ * 
+ * @fn ixSspAccRxFIFOIntDisable (
+       void)
+ *
+ * @brief Disables service request interrupt of the Rx FIFO.
+ *
+ * @param - None
+ *
+ * Global Data :
+ *             - None.
+ *                        
+ * This API will disable the service request interrupt of the Rx FIFO.
+ *
+ * @return 
+ *             - IX_SSP_SUCCESS - Rx FIFO Interrupt disabled successfully
+ *             - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called.
+ *              
+ * @li   Reentrant    : yes
+ * @li   ISR Callable : yes
+ *
+ */
+PUBLIC IX_SSP_STATUS
+ixSspAccRxFIFOIntDisable (
+       void);
+
+/**
+ * @ingroup IxSspAcc
+ * 
+ * @fn ixSspAccTxFIFOIntEnable (
+       TxFIFOThresholdHandler txFIFOIntrHandler)
+ *
+ * @brief Enables service request interrupt of the Tx FIFO.
+ *
+ * @param "void [in] *txFIFOIntrHandler(UINT32)" - function pointer to the
+ *                             interrupt handler for the Tx FIFO exceeded.
+ *
+ * Global Data :
+ *             - None.
+ *                        
+ * This API will enable the service request interrupt of the Tx FIFO.
+ *
+ * @return 
+ *      - IX_SSP_SUCCESS - Tx FIFO level interrupt enabled successfully
+ *             - IX_SSP_TX_FIFO_HANDLER_MISSING - missing handler for Tx FIFO level interrupt
+ *             - IX_SSP_POLL_MODE_BLOCKING - poll mode is selected at init, interrupt not
+ *                             allowed to be enabled. Use init to enable interrupt mode.
+ *             - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called.
+ *              
+ * @li   Reentrant    : yes
+ * @li   ISR Callable : yes
+ *
+ */
+PUBLIC IX_SSP_STATUS
+ixSspAccTxFIFOIntEnable (
+       TxFIFOThresholdHandler txFIFOIntrHandler);
+
+/**
+ * @ingroup IxSspAcc
+ * 
+ * @fn ixSspAccTxFIFOIntDisable (
+       void)
+ *
+ * @brief Disables service request interrupt of the Tx FIFO
+ *
+ * @param - None
+ *
+ * Global Data :
+ *             - None.
+ *                        
+ * This API will disable the service request interrupt of the Tx FIFO
+ *
+ * @return 
+ *             - IX_SSP_SUCCESS - Tx FIFO Interrupt disabled successfuly.
+ *             - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called.
+ *              
+ * @li   Reentrant    : yes
+ * @li   ISR Callable : yes
+ *
+ */
+PUBLIC IX_SSP_STATUS
+ixSspAccTxFIFOIntDisable (
+       void);
+
+/**
+ * @ingroup IxSspAcc
+ * 
+ * @fn ixSspAccLoopbackEnable (
+       BOOL loopbackEnable)
+ *
+ * @brief Enables/disables the loopback mode
+ *
+ * @param "BOOL [in] loopbackEnable" - True to enable and false to disable.
+ *
+ * Global Data :
+ *             - None.
+ *                        
+ * This API will set the mode of operation to either loopback or normal mode
+ * according to the user input.
+ *
+ * @return 
+ *             - IX_SSP_SUCCESS - Loopback enabled successfully
+ *             - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called.
+ *              
+ * @li   Reentrant    : yes
+ * @li   ISR Callable : yes
+ *
+ */
+PUBLIC IX_SSP_STATUS
+ixSspAccLoopbackEnable (
+       BOOL loopbackEnable);
+
+/**
+ * @ingroup IxSspAcc
+ * 
+ * @fn ixSspAccSpiSclkPolaritySet (
+       IxSspAccSpiSclkPolarity spiSclkPolaritySelected)
+ *
+ * @brief Sets the SPI SCLK Polarity to Low or High
+ *
+ * @param - "IxSspAccSpiSclkPolarity [in] spiSclkPolaritySelected" - SPI SCLK
+ *                             polarity that can be selected to either high or low
+ *
+ * Global Data :
+ *             - None.
+ *                        
+ * This API is only used for the SPI frame format and will set the SPI SCLK polarity
+ * to either low or high
+ *
+ * @return 
+ *      - IX_SSP_SUCCESS - SPI Sclk polarity set with valid enum value
+ *             - IX_SSP_INVALID_SPI_POLARITY_ENUM_VALUE - invalid SPI polarity value
+ *             - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called.
+ *              
+ * @li   Reentrant    : yes
+ * @li   ISR Callable : yes
+ *
+ */
+PUBLIC IX_SSP_STATUS
+ixSspAccSpiSclkPolaritySet (
+       IxSspAccSpiSclkPolarity spiSclkPolaritySelected);
+
+/**
+ * @ingroup IxSspAcc
+ * 
+ * @fn ixSspAccSpiSclkPhaseSet (
+       IxSspAccSpiSclkPhase spiSclkPhaseSelected)
+ *
+ * @brief Sets the SPI SCLK Phase
+ *
+ * @param "IxSspAccSpiSclkPhase [in] spiSclkPhaseSelected" - Phase of either
+ *                     the SCLK is inactive one cycle at the start of a frame and 1/2
+ *                     cycle at the end of a frame, OR
+ *                     the SCLK is inactive 1/2 cycle at the start of a frame and one
+ *                     cycle at the end of a frame.
+ *
+ * Global Data :
+ *             - IX_SSP_SUCCESS - SPI Sclk phase set with valid enum value
+ *             - IX_SSP_INVALID_SPI_PHASE_ENUM_VALUE - invalid SPI phase value
+ *             - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called.
+ *                        
+ * This API is only used for the SPI frame format and will set the SPI SCLK
+ * phase according to user input.
+ *
+ * @return 
+ *      - None
+ *              
+ * @li   Reentrant    : yes
+ * @li   ISR Callable : yes
+ *
+ */
+PUBLIC IX_SSP_STATUS
+ixSspAccSpiSclkPhaseSet (
+       IxSspAccSpiSclkPhase spiSclkPhaseSelected);
+
+/**
+ * @ingroup IxSspAcc
+ * 
+ * @fn ixSspAccMicrowireControlWordSet (
+       IxSspAccMicrowireCtlWord microwireCtlWordSelected)
+ *
+ * @brief Sets the Microwire control word to 8 or 16 bit format
+ *
+ * @param "IxSspAccMicrowireCtlWord [in] microwireCtlWordSelected" - Microwire
+ *                     control word format can be either 8 or 16 bit format
+ *
+ * Global Data :
+ *             - None.
+ *                        
+ * This API is only used for the Microwire frame format and will set the
+ * control word to 8 or 16 bit format
+ *
+ * @return 
+ *      - IX_SSP_SUCCESS - Microwire Control Word set with valid enum value
+ *             - IX_SSP_TX_FIFO_NOT_EMPTY - Tx FIFO not empty, data size change is not
+ *                                                     allowed.
+ *             - IX_SSP_INVALID_MICROWIRE_CTL_CMD_ENUM_VALUE - invalid enum value
+ *             - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called.
+ *              
+ * @li   Reentrant    : yes
+ * @li   ISR Callable : yes
+ *
+ */
+PUBLIC IX_SSP_STATUS
+ixSspAccMicrowireControlWordSet (
+       IxSspAccMicrowireCtlWord microwireCtlWordSelected);
+
+/**
+ * @ingroup IxSspAcc
+ * 
+ * @fn ixSspAccTxFIFOThresholdSet (
+       IxSspAccFifoThreshold txFIFOThresholdSelected)
+ *
+ * @brief Sets the Tx FIFO Threshold.
+ *
+ * @param "IxSspAccFifoThreshold [in] txFIFOThresholdSelected" - Threshold that
+ *             is set for a Tx FIFO service request to be triggered
+ *
+ * Global Data :
+ *             - None.
+ *                        
+ * This API will set the threshold for a Tx FIFO threshold to be triggered
+ *
+ * @return 
+ *      - IX_SSP_SUCCESS - Tx FIFO Threshold set with valid enum value
+ *             - IX_SSP_INVALID_TX_FIFO_THRESHOLD_ENUM_VALUE - invalid enum value
+ *             - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called.
+ *              
+ * @li   Reentrant    : yes
+ * @li   ISR Callable : yes
+ *
+ */
+PUBLIC IX_SSP_STATUS
+ixSspAccTxFIFOThresholdSet (
+       IxSspAccFifoThreshold txFIFOThresholdSelected);
+
+/**
+ * @ingroup IxSspAcc
+ * 
+ * @fn ixSspAccRxFIFOThresholdSet (
+       IxSspAccFifoThreshold rxFIFOThresholdSelected)
+ *
+ * @brief Sets the Rx FIFO Threshold.
+ *
+ * @param "IxSspAccFifoThreshold [in] rxFIFOThresholdSelected" - Threshold that
+ *             is set for a Tx FIFO service request to be triggered
+ *
+ * Global Data :
+ *             - None.
+ *                        
+ * This API will will set the threshold for a Rx FIFO threshold to be triggered
+ *
+ * @return 
+ *      - IX_SSP_SUCCESS - Rx FIFO Threshold set with valid enum value
+ *             - IX_SSP_INVALID_RX_FIFO_THRESHOLD_ENUM_VALUE - invalid enum value
+ *             - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called.
+ *              
+ * @li   Reentrant    : yes
+ * @li   ISR Callable : yes
+ *
+ */
+PUBLIC IX_SSP_STATUS
+ixSspAccRxFIFOThresholdSet (
+       IxSspAccFifoThreshold rxFIFOThresholdSelected);
+
+
+/**
+ * Debug functions
+ */
+
+/**
+ * @ingroup IxSspAcc
+ * 
+ * @fn ixSspAccStatsGet (
+       IxSspAccStatsCounters *sspStats)
+ *
+ * @brief Returns the SSP Statistics through the pointer passed in
+ *
+ * @param "IxSspAccStatsCounters [in] *sspStats" - SSP statistics counter will
+ *                     be read and written to the location pointed by this pointer.
+ *
+ * Global Data :
+ *             - None.
+ *                        
+ * This API will return the statistics counters of the SSP transfers.
+ *
+ * @return 
+ *      - IX_SSP_SUCCESS - Stats obtained into the pointer provided successfully
+ *             - IX_SSP_FAIL - client provided pointer is NULL
+ *              
+ * @li   Reentrant    : yes
+ * @li   ISR Callable : yes
+ *
+ */
+PUBLIC IX_SSP_STATUS
+ixSspAccStatsGet (
+       IxSspAccStatsCounters *sspStats);
+
+/**
+ * @ingroup IxSspAcc
+ * 
+ * @fn ixSspAccStatsReset (
+       void)
+ *
+ * @brief Resets the SSP Statistics
+ *
+ * @param - None
+ *
+ * Global Data :
+ *             - None.
+ *                        
+ * This API will reset the SSP statistics counters.
+ *
+ * @return 
+ *      - None
+ *              
+ * @li   Reentrant    : yes
+ * @li   ISR Callable : yes
+ *
+ */
+PUBLIC void
+ixSspAccStatsReset (
+       void);
+
+/**
+ * @ingroup IxSspAcc
+ * 
+ * @fn ixSspAccShow (
+               void)
+ *
+ * @brief Display SSP status registers and statistics counters.
+ *
+ * @param - None
+ *
+ * Global Data :
+ *             - None.
+ *                        
+ * This API will display the status registers of the SSP and the statistics
+ * counters.
+ *
+ * @return 
+ *             - IX_SSP_SUCCESS - SSP show called successfully.
+ *             - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called.
+ *              
+ * @li   Reentrant    : yes
+ * @li   ISR Callable : yes
+ *
+ */
+PUBLIC IX_SSP_STATUS
+ixSspAccShow (
+       void);
+
+/**
+ * @ingroup IxSspAcc
+ * 
+ * @fn ixSspAccSSPBusyCheck (
+               void)
+ *
+ * @brief Determine the state of the SSP serial port hardware.
+ *
+ * @param - None
+ *
+ * Global Data :
+ *             - None.
+ *                        
+ * This API will return the state of the SSP serial port hardware - busy or
+ * idle
+ *
+ * @return 
+ *      - IX_SSP_BUSY - SSP is busy
+ *             - IX_SSP_IDLE - SSP is idle.
+ *             - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called.
+ *              
+ * @li   Reentrant    : yes
+ * @li   ISR Callable : yes
+ *
+ */
+PUBLIC IX_SSP_STATUS
+ixSspAccSSPBusyCheck (
+       void);
+
+/**
+ * @ingroup IxSspAcc
+ * 
+ * @fn ixSspAccTxFIFOLevelGet (
+               void)
+ *
+ * @brief Obtain the Tx FIFO's level
+ *
+ * @param - None
+ *
+ * Global Data :
+ *             - None.
+ *                        
+ * This API will return the level of the Tx FIFO
+ *
+ * @return 
+ *      - 0..16; 0 can also mean SSP not initialized and will need to be init.
+ *              
+ * @li   Reentrant    : yes
+ * @li   ISR Callable : yes
+ *
+ */
+PUBLIC UINT8
+ixSspAccTxFIFOLevelGet (
+       void);
+
+/**
+ * @ingroup IxSspAcc
+ * 
+ * @fn ixSspAccRxFIFOLevelGet (
+               void)
+ *
+ * @brief Obtain the Rx FIFO's level
+ *
+ * @param - None
+ *
+ * Global Data :
+ *             - None.
+ *                        
+ * This API will return the level of the Rx FIFO
+ *
+ * @return 
+ *      - 0..16; 0 can also mean SSP not initialized and will need to be init.
+ *              
+ * @li   Reentrant    : yes
+ * @li   ISR Callable : yes
+ *
+ */
+PUBLIC UINT8
+ixSspAccRxFIFOLevelGet (
+       void);
+
+/**
+ * @ingroup IxSspAcc
+ * 
+ * @fn ixSspAccRxFIFOOverrunCheck (
+               void)
+ *
+ * @brief Check if the Rx FIFO has overrun its FIFOs
+ *
+ * @param - None
+ *
+ * Global Data :
+ *             - None.
+ *                        
+ * This API will return whether the Rx FIFO has overrun its 16 FIFOs
+ *
+ * @return 
+ *      - IX_SSP_OVERRUN_OCCURRED - Rx FIFO overrun occurred
+ *             - IX_SSP_NO_OVERRUN - Rx FIFO did not overrun
+ *             - IX_SSP_NOT_INIT - SSP not initialized. SSP init needs to be called.
+ *
+ * @li   Reentrant    : yes
+ * @li   ISR Callable : yes
+ *
+ */
+PUBLIC IX_SSP_STATUS
+ixSspAccRxFIFOOverrunCheck (
+       void);
+
+#endif /* __ixp46X */
+#endif /* IXSSPACC_H */
diff -Naur u-boot-2009.03_orig/cpu/leon2/CVS/Entries u-boot-2009.03/cpu/leon2/CVS/Entries
--- u-boot-2009.03_orig/cpu/leon2/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/leon2/CVS/Entries        2009-03-25 15:57:55.043677900 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu_init.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupts.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/prom.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/start.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/leon2/CVS/Entries.Extra u-boot-2009.03/cpu/leon2/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/leon2/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/leon2/CVS/Entries.Extra  2009-03-25 15:57:55.043677900 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019721/
+/config.mk///1238019721/
+/cpu.c///1238019721/
+/cpu_init.c///1238019721/
+/interrupts.c///1238019721/
+/prom.c///1238019721/
+/serial.c///1238019721/
+/start.S///1238019721/
diff -Naur u-boot-2009.03_orig/cpu/leon2/CVS/Entries.Extra.Old u-boot-2009.03/cpu/leon2/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/leon2/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/leon2/CVS/Entries.Extra.Old      2009-03-25 15:25:17.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019721/
+/config.mk///1238019721/
+/cpu.c///1238019721/
+/cpu_init.c///1238019721/
+/interrupts.c///1238019721/
+/prom.c///1238019721/
+/serial.c///1238019721/
+/start.S///1238019721/
diff -Naur u-boot-2009.03_orig/cpu/leon2/CVS/Entries.Old u-boot-2009.03/cpu/leon2/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/leon2/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/leon2/CVS/Entries.Old    2009-03-25 15:25:17.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:01 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:22:01 2009//
+/cpu.c/1.1.1.1/Wed Mar 25 22:22:01 2009//
+/cpu_init.c/1.1.1.1/Wed Mar 25 22:22:01 2009//
+/interrupts.c/1.1.1.1/Wed Mar 25 22:22:01 2009//
+/prom.c/1.1.1.1/Wed Mar 25 22:22:01 2009//
+/serial.c/1.1.1.1/Wed Mar 25 22:22:01 2009//
+/start.S/1.1.1.1/Wed Mar 25 22:22:01 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/leon2/CVS/Repository u-boot-2009.03/cpu/leon2/CVS/Repository
--- u-boot-2009.03_orig/cpu/leon2/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/leon2/CVS/Repository     2009-03-25 15:25:17.181208300 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/leon2
diff -Naur u-boot-2009.03_orig/cpu/leon2/CVS/Root u-boot-2009.03/cpu/leon2/CVS/Root
--- u-boot-2009.03_orig/cpu/leon2/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/leon2/CVS/Root   2009-03-25 15:25:17.165583400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/leon3/CVS/Entries u-boot-2009.03/cpu/leon3/CVS/Entries
--- u-boot-2009.03_orig/cpu/leon3/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/leon3/CVS/Entries        2009-03-25 15:57:55.168677100 -0700
@@ -0,0 +1,12 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ambapp.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu_init.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupts.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/prom.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/start.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usb_uhci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usb_uhci.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/leon3/CVS/Entries.Extra u-boot-2009.03/cpu/leon3/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/leon3/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/leon3/CVS/Entries.Extra  2009-03-25 15:57:55.168677100 -0700
@@ -0,0 +1,11 @@
+/Makefile///1238019722/
+/ambapp.c///1238019722/
+/config.mk///1238019722/
+/cpu.c///1238019722/
+/cpu_init.c///1238019722/
+/interrupts.c///1238019722/
+/prom.c///1238019722/
+/serial.c///1238019722/
+/start.S///1238019722/
+/usb_uhci.c///1238019722/
+/usb_uhci.h///1238019722/
diff -Naur u-boot-2009.03_orig/cpu/leon3/CVS/Entries.Extra.Old u-boot-2009.03/cpu/leon3/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/leon3/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/leon3/CVS/Entries.Extra.Old      2009-03-25 15:25:17.000000000 -0700
@@ -0,0 +1,11 @@
+/Makefile///1238019722/
+/ambapp.c///1238019722/
+/config.mk///1238019722/
+/cpu.c///1238019722/
+/cpu_init.c///1238019722/
+/interrupts.c///1238019722/
+/prom.c///1238019722/
+/serial.c///1238019722/
+/start.S///1238019722/
+/usb_uhci.c///1238019722/
+/usb_uhci.h///1238019722/
diff -Naur u-boot-2009.03_orig/cpu/leon3/CVS/Entries.Old u-boot-2009.03/cpu/leon3/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/leon3/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/leon3/CVS/Entries.Old    2009-03-25 15:25:17.000000000 -0700
@@ -0,0 +1,12 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/ambapp.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/cpu.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/cpu_init.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/interrupts.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/prom.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/serial.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/start.S/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/usb_uhci.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/usb_uhci.h/1.1.1.1/Wed Mar 25 22:22:02 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/leon3/CVS/Repository u-boot-2009.03/cpu/leon3/CVS/Repository
--- u-boot-2009.03_orig/cpu/leon3/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/leon3/CVS/Repository     2009-03-25 15:25:17.306207500 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/leon3
diff -Naur u-boot-2009.03_orig/cpu/leon3/CVS/Root u-boot-2009.03/cpu/leon3/CVS/Root
--- u-boot-2009.03_orig/cpu/leon3/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/leon3/CVS/Root   2009-03-25 15:25:17.306207500 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/lh7a40x/CVS/Entries u-boot-2009.03/cpu/lh7a40x/CVS/Entries
--- u-boot-2009.03_orig/cpu/lh7a40x/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/lh7a40x/CVS/Entries      2009-03-25 15:57:55.278051400 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupts.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/speed.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/start.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/lh7a40x/CVS/Entries.Extra u-boot-2009.03/cpu/lh7a40x/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/lh7a40x/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/lh7a40x/CVS/Entries.Extra        2009-03-25 15:57:55.278051400 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019722/
+/config.mk///1238019722/
+/cpu.c///1238019722/
+/interrupts.c///1238019722/
+/serial.c///1238019722/
+/speed.c///1238019722/
+/start.S///1238019722/
diff -Naur u-boot-2009.03_orig/cpu/lh7a40x/CVS/Entries.Extra.Old u-boot-2009.03/cpu/lh7a40x/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/lh7a40x/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/lh7a40x/CVS/Entries.Extra.Old    2009-03-25 15:25:17.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019722/
+/config.mk///1238019722/
+/cpu.c///1238019722/
+/interrupts.c///1238019722/
+/serial.c///1238019722/
+/speed.c///1238019722/
+/start.S///1238019722/
diff -Naur u-boot-2009.03_orig/cpu/lh7a40x/CVS/Entries.Old u-boot-2009.03/cpu/lh7a40x/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/lh7a40x/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/lh7a40x/CVS/Entries.Old  2009-03-25 15:25:17.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/cpu.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/interrupts.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/serial.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/speed.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/start.S/1.1.1.1/Wed Mar 25 22:22:02 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/lh7a40x/CVS/Repository u-boot-2009.03/cpu/lh7a40x/CVS/Repository
--- u-boot-2009.03_orig/cpu/lh7a40x/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/lh7a40x/CVS/Repository   2009-03-25 15:25:17.524956100 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/lh7a40x
diff -Naur u-boot-2009.03_orig/cpu/lh7a40x/CVS/Root u-boot-2009.03/cpu/lh7a40x/CVS/Root
--- u-boot-2009.03_orig/cpu/lh7a40x/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/lh7a40x/CVS/Root 2009-03-25 15:25:17.524956100 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/mcf5227x/CVS/Entries u-boot-2009.03/cpu/mcf5227x/CVS/Entries
--- u-boot-2009.03_orig/cpu/mcf5227x/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mcf5227x/CVS/Entries     2009-03-25 15:57:55.371800800 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu_init.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dspi.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupts.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/speed.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/start.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/mcf5227x/CVS/Entries.Extra u-boot-2009.03/cpu/mcf5227x/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/mcf5227x/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mcf5227x/CVS/Entries.Extra       2009-03-25 15:57:55.371800800 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019722/
+/config.mk///1238019722/
+/cpu.c///1238019722/
+/cpu_init.c///1238019722/
+/dspi.c///1238019722/
+/interrupts.c///1238019722/
+/speed.c///1238019722/
+/start.S///1238019722/
diff -Naur u-boot-2009.03_orig/cpu/mcf5227x/CVS/Entries.Extra.Old u-boot-2009.03/cpu/mcf5227x/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/mcf5227x/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mcf5227x/CVS/Entries.Extra.Old   2009-03-25 15:25:17.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019722/
+/config.mk///1238019722/
+/cpu.c///1238019722/
+/cpu_init.c///1238019722/
+/dspi.c///1238019722/
+/interrupts.c///1238019722/
+/speed.c///1238019722/
+/start.S///1238019722/
diff -Naur u-boot-2009.03_orig/cpu/mcf5227x/CVS/Entries.Old u-boot-2009.03/cpu/mcf5227x/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/mcf5227x/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mcf5227x/CVS/Entries.Old 2009-03-25 15:25:17.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/cpu.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/cpu_init.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/dspi.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/interrupts.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/speed.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/start.S/1.1.1.1/Wed Mar 25 22:22:02 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/mcf5227x/CVS/Repository u-boot-2009.03/cpu/mcf5227x/CVS/Repository
--- u-boot-2009.03_orig/cpu/mcf5227x/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mcf5227x/CVS/Repository  2009-03-25 15:25:17.665580200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/mcf5227x
diff -Naur u-boot-2009.03_orig/cpu/mcf5227x/CVS/Root u-boot-2009.03/cpu/mcf5227x/CVS/Root
--- u-boot-2009.03_orig/cpu/mcf5227x/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mcf5227x/CVS/Root        2009-03-25 15:25:17.665580200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/mcf523x/CVS/Entries u-boot-2009.03/cpu/mcf523x/CVS/Entries
--- u-boot-2009.03_orig/cpu/mcf523x/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mcf523x/CVS/Entries      2009-03-25 15:57:55.465550200 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu_init.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupts.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/speed.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/start.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/mcf523x/CVS/Entries.Extra u-boot-2009.03/cpu/mcf523x/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/mcf523x/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mcf523x/CVS/Entries.Extra        2009-03-25 15:57:55.481175100 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019722/
+/config.mk///1238019722/
+/cpu.c///1238019722/
+/cpu_init.c///1238019722/
+/interrupts.c///1238019722/
+/speed.c///1238019722/
+/start.S///1238019722/
diff -Naur u-boot-2009.03_orig/cpu/mcf523x/CVS/Entries.Extra.Old u-boot-2009.03/cpu/mcf523x/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/mcf523x/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mcf523x/CVS/Entries.Extra.Old    2009-03-25 15:25:17.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019722/
+/config.mk///1238019722/
+/cpu.c///1238019722/
+/cpu_init.c///1238019722/
+/interrupts.c///1238019722/
+/speed.c///1238019722/
+/start.S///1238019722/
diff -Naur u-boot-2009.03_orig/cpu/mcf523x/CVS/Entries.Old u-boot-2009.03/cpu/mcf523x/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/mcf523x/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mcf523x/CVS/Entries.Old  2009-03-25 15:25:17.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/cpu.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/cpu_init.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/interrupts.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/speed.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/start.S/1.1.1.1/Wed Mar 25 22:22:02 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/mcf523x/CVS/Repository u-boot-2009.03/cpu/mcf523x/CVS/Repository
--- u-boot-2009.03_orig/cpu/mcf523x/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mcf523x/CVS/Repository   2009-03-25 15:25:17.790579400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/mcf523x
diff -Naur u-boot-2009.03_orig/cpu/mcf523x/CVS/Root u-boot-2009.03/cpu/mcf523x/CVS/Root
--- u-boot-2009.03_orig/cpu/mcf523x/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mcf523x/CVS/Root 2009-03-25 15:25:17.790579400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/mcf52x2/CVS/Entries u-boot-2009.03/cpu/mcf52x2/CVS/Entries
--- u-boot-2009.03_orig/cpu/mcf52x2/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mcf52x2/CVS/Entries      2009-03-25 15:57:55.590549400 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu_init.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupts.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/speed.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/start.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/mcf52x2/CVS/Entries.Extra u-boot-2009.03/cpu/mcf52x2/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/mcf52x2/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mcf52x2/CVS/Entries.Extra        2009-03-25 15:57:55.590549400 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019722/
+/config.mk///1238019722/
+/cpu.c///1238019722/
+/cpu_init.c///1238019722/
+/interrupts.c///1238019722/
+/speed.c///1238019722/
+/start.S///1238019722/
diff -Naur u-boot-2009.03_orig/cpu/mcf52x2/CVS/Entries.Extra.Old u-boot-2009.03/cpu/mcf52x2/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/mcf52x2/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mcf52x2/CVS/Entries.Extra.Old    2009-03-25 15:25:18.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019722/
+/config.mk///1238019722/
+/cpu.c///1238019722/
+/cpu_init.c///1238019722/
+/interrupts.c///1238019722/
+/speed.c///1238019722/
+/start.S///1238019722/
diff -Naur u-boot-2009.03_orig/cpu/mcf52x2/CVS/Entries.Old u-boot-2009.03/cpu/mcf52x2/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/mcf52x2/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mcf52x2/CVS/Entries.Old  2009-03-25 15:25:18.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/cpu.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/cpu_init.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/interrupts.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/speed.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/start.S/1.1.1.1/Wed Mar 25 22:22:02 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/mcf52x2/CVS/Repository u-boot-2009.03/cpu/mcf52x2/CVS/Repository
--- u-boot-2009.03_orig/cpu/mcf52x2/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mcf52x2/CVS/Repository   2009-03-25 15:25:17.915578600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/mcf52x2
diff -Naur u-boot-2009.03_orig/cpu/mcf52x2/CVS/Root u-boot-2009.03/cpu/mcf52x2/CVS/Root
--- u-boot-2009.03_orig/cpu/mcf52x2/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mcf52x2/CVS/Root 2009-03-25 15:25:17.915578600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/mcf532x/CVS/Entries u-boot-2009.03/cpu/mcf532x/CVS/Entries
--- u-boot-2009.03_orig/cpu/mcf532x/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mcf532x/CVS/Entries      2009-03-25 15:57:55.668673900 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu_init.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupts.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/speed.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/start.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/mcf532x/CVS/Entries.Extra u-boot-2009.03/cpu/mcf532x/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/mcf532x/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mcf532x/CVS/Entries.Extra        2009-03-25 15:57:55.684298800 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019722/
+/config.mk///1238019722/
+/cpu.c///1238019722/
+/cpu_init.c///1238019722/
+/interrupts.c///1238019722/
+/speed.c///1238019722/
+/start.S///1238019722/
diff -Naur u-boot-2009.03_orig/cpu/mcf532x/CVS/Entries.Extra.Old u-boot-2009.03/cpu/mcf532x/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/mcf532x/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mcf532x/CVS/Entries.Extra.Old    2009-03-25 15:25:18.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019722/
+/config.mk///1238019722/
+/cpu.c///1238019722/
+/cpu_init.c///1238019722/
+/interrupts.c///1238019722/
+/speed.c///1238019722/
+/start.S///1238019722/
diff -Naur u-boot-2009.03_orig/cpu/mcf532x/CVS/Entries.Old u-boot-2009.03/cpu/mcf532x/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/mcf532x/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mcf532x/CVS/Entries.Old  2009-03-25 15:25:18.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/cpu.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/cpu_init.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/interrupts.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/speed.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/start.S/1.1.1.1/Wed Mar 25 22:22:02 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/mcf532x/CVS/Repository u-boot-2009.03/cpu/mcf532x/CVS/Repository
--- u-boot-2009.03_orig/cpu/mcf532x/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mcf532x/CVS/Repository   2009-03-25 15:25:18.056202700 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/mcf532x
diff -Naur u-boot-2009.03_orig/cpu/mcf532x/CVS/Root u-boot-2009.03/cpu/mcf532x/CVS/Root
--- u-boot-2009.03_orig/cpu/mcf532x/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mcf532x/CVS/Root 2009-03-25 15:25:18.056202700 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/mcf5445x/CVS/Entries u-boot-2009.03/cpu/mcf5445x/CVS/Entries
--- u-boot-2009.03_orig/cpu/mcf5445x/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mcf5445x/CVS/Entries     2009-03-25 15:57:55.778048200 -0700
@@ -0,0 +1,10 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu_init.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dspi.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupts.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/speed.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/start.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/mcf5445x/CVS/Entries.Extra u-boot-2009.03/cpu/mcf5445x/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/mcf5445x/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mcf5445x/CVS/Entries.Extra       2009-03-25 15:57:55.778048200 -0700
@@ -0,0 +1,9 @@
+/Makefile///1238019722/
+/config.mk///1238019722/
+/cpu.c///1238019722/
+/cpu_init.c///1238019722/
+/dspi.c///1238019722/
+/interrupts.c///1238019722/
+/pci.c///1238019722/
+/speed.c///1238019722/
+/start.S///1238019722/
diff -Naur u-boot-2009.03_orig/cpu/mcf5445x/CVS/Entries.Extra.Old u-boot-2009.03/cpu/mcf5445x/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/mcf5445x/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mcf5445x/CVS/Entries.Extra.Old   2009-03-25 15:25:18.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile///1238019722/
+/config.mk///1238019722/
+/cpu.c///1238019722/
+/cpu_init.c///1238019722/
+/dspi.c///1238019722/
+/interrupts.c///1238019722/
+/pci.c///1238019722/
+/speed.c///1238019722/
+/start.S///1238019722/
diff -Naur u-boot-2009.03_orig/cpu/mcf5445x/CVS/Entries.Old u-boot-2009.03/cpu/mcf5445x/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/mcf5445x/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mcf5445x/CVS/Entries.Old 2009-03-25 15:25:18.000000000 -0700
@@ -0,0 +1,10 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/cpu.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/cpu_init.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/dspi.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/interrupts.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/pci.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/speed.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/start.S/1.1.1.1/Wed Mar 25 22:22:02 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/mcf5445x/CVS/Repository u-boot-2009.03/cpu/mcf5445x/CVS/Repository
--- u-boot-2009.03_orig/cpu/mcf5445x/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mcf5445x/CVS/Repository  2009-03-25 15:25:18.196826800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/mcf5445x
diff -Naur u-boot-2009.03_orig/cpu/mcf5445x/CVS/Root u-boot-2009.03/cpu/mcf5445x/CVS/Root
--- u-boot-2009.03_orig/cpu/mcf5445x/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mcf5445x/CVS/Root        2009-03-25 15:25:18.196826800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/mcf547x_8x/CVS/Entries u-boot-2009.03/cpu/mcf547x_8x/CVS/Entries
--- u-boot-2009.03_orig/cpu/mcf547x_8x/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mcf547x_8x/CVS/Entries   2009-03-25 15:57:55.903047400 -0700
@@ -0,0 +1,10 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu_init.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupts.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/slicetimer.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/speed.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/start.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/mcf547x_8x/CVS/Entries.Extra u-boot-2009.03/cpu/mcf547x_8x/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/mcf547x_8x/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mcf547x_8x/CVS/Entries.Extra     2009-03-25 15:57:55.903047400 -0700
@@ -0,0 +1,9 @@
+/Makefile///1238019722/
+/config.mk///1238019722/
+/cpu.c///1238019722/
+/cpu_init.c///1238019722/
+/interrupts.c///1238019722/
+/pci.c///1238019722/
+/slicetimer.c///1238019722/
+/speed.c///1238019722/
+/start.S///1238019722/
diff -Naur u-boot-2009.03_orig/cpu/mcf547x_8x/CVS/Entries.Extra.Old u-boot-2009.03/cpu/mcf547x_8x/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/mcf547x_8x/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mcf547x_8x/CVS/Entries.Extra.Old 2009-03-25 15:25:18.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile///1238019722/
+/config.mk///1238019722/
+/cpu.c///1238019722/
+/cpu_init.c///1238019722/
+/interrupts.c///1238019722/
+/pci.c///1238019722/
+/slicetimer.c///1238019722/
+/speed.c///1238019722/
+/start.S///1238019722/
diff -Naur u-boot-2009.03_orig/cpu/mcf547x_8x/CVS/Entries.Old u-boot-2009.03/cpu/mcf547x_8x/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/mcf547x_8x/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mcf547x_8x/CVS/Entries.Old       2009-03-25 15:25:18.000000000 -0700
@@ -0,0 +1,10 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/cpu.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/cpu_init.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/interrupts.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/pci.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/slicetimer.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/speed.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/start.S/1.1.1.1/Wed Mar 25 22:22:02 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/mcf547x_8x/CVS/Repository u-boot-2009.03/cpu/mcf547x_8x/CVS/Repository
--- u-boot-2009.03_orig/cpu/mcf547x_8x/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mcf547x_8x/CVS/Repository        2009-03-25 15:25:18.353075800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/mcf547x_8x
diff -Naur u-boot-2009.03_orig/cpu/mcf547x_8x/CVS/Root u-boot-2009.03/cpu/mcf547x_8x/CVS/Root
--- u-boot-2009.03_orig/cpu/mcf547x_8x/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mcf547x_8x/CVS/Root      2009-03-25 15:25:18.353075800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/microblaze/CVS/Entries u-boot-2009.03/cpu/microblaze/CVS/Entries
--- u-boot-2009.03_orig/cpu/microblaze/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/microblaze/CVS/Entries   2009-03-25 15:57:56.012421700 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cache.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/exception.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupts.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/irq.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/start.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/timer.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/microblaze/CVS/Entries.Extra u-boot-2009.03/cpu/microblaze/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/microblaze/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/microblaze/CVS/Entries.Extra     2009-03-25 15:57:56.012421700 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019722/
+/cache.c///1238019722/
+/cpu.c///1238019722/
+/exception.c///1238019722/
+/interrupts.c///1238019722/
+/irq.S///1238019722/
+/start.S///1238019722/
+/timer.c///1238019722/
diff -Naur u-boot-2009.03_orig/cpu/microblaze/CVS/Entries.Extra.Old u-boot-2009.03/cpu/microblaze/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/microblaze/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/microblaze/CVS/Entries.Extra.Old 2009-03-25 15:25:18.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019722/
+/cache.c///1238019722/
+/cpu.c///1238019722/
+/exception.c///1238019722/
+/interrupts.c///1238019722/
+/irq.S///1238019722/
+/start.S///1238019722/
+/timer.c///1238019722/
diff -Naur u-boot-2009.03_orig/cpu/microblaze/CVS/Entries.Old u-boot-2009.03/cpu/microblaze/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/microblaze/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/microblaze/CVS/Entries.Old       2009-03-25 15:25:18.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/cache.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/cpu.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/exception.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/interrupts.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/irq.S/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/start.S/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/timer.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/microblaze/CVS/Repository u-boot-2009.03/cpu/microblaze/CVS/Repository
--- u-boot-2009.03_orig/cpu/microblaze/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/microblaze/CVS/Repository        2009-03-25 15:25:18.696823600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/microblaze
diff -Naur u-boot-2009.03_orig/cpu/microblaze/CVS/Root u-boot-2009.03/cpu/microblaze/CVS/Root
--- u-boot-2009.03_orig/cpu/microblaze/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/microblaze/CVS/Root      2009-03-25 15:25:18.696823600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/mips/CVS/Entries u-boot-2009.03/cpu/mips/CVS/Entries
--- u-boot-2009.03_orig/cpu/mips/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mips/CVS/Entries 2009-03-25 15:57:56.246795200 -0700
@@ -0,0 +1,15 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/asc_serial.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/asc_serial.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/au1x00_eth.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/au1x00_serial.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/au1x00_usb_ohci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/au1x00_usb_ohci.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cache.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/incaip_clock.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/incaip_wdt.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupts.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/start.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/mips/CVS/Entries.Extra u-boot-2009.03/cpu/mips/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/mips/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mips/CVS/Entries.Extra   2009-03-25 15:57:56.262420100 -0700
@@ -0,0 +1,14 @@
+/Makefile///1238019722/
+/asc_serial.c///1238019722/
+/asc_serial.h///1238019722/
+/au1x00_eth.c///1238019722/
+/au1x00_serial.c///1238019722/
+/au1x00_usb_ohci.c///1238019722/
+/au1x00_usb_ohci.h///1238019722/
+/cache.S///1238019722/
+/config.mk///1238019722/
+/cpu.c///1238019722/
+/incaip_clock.c///1238019722/
+/incaip_wdt.S///1238019722/
+/interrupts.c///1238019722/
+/start.S///1238019722/
diff -Naur u-boot-2009.03_orig/cpu/mips/CVS/Entries.Extra.Old u-boot-2009.03/cpu/mips/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/mips/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mips/CVS/Entries.Extra.Old       2009-03-25 15:25:18.000000000 -0700
@@ -0,0 +1,14 @@
+/Makefile///1238019722/
+/asc_serial.c///1238019722/
+/asc_serial.h///1238019722/
+/au1x00_eth.c///1238019722/
+/au1x00_serial.c///1238019722/
+/au1x00_usb_ohci.c///1238019722/
+/au1x00_usb_ohci.h///1238019722/
+/cache.S///1238019722/
+/config.mk///1238019722/
+/cpu.c///1238019722/
+/incaip_clock.c///1238019722/
+/incaip_wdt.S///1238019722/
+/interrupts.c///1238019722/
+/start.S///1238019722/
diff -Naur u-boot-2009.03_orig/cpu/mips/CVS/Entries.Old u-boot-2009.03/cpu/mips/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/mips/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mips/CVS/Entries.Old     2009-03-25 15:25:18.000000000 -0700
@@ -0,0 +1,15 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/asc_serial.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/asc_serial.h/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/au1x00_eth.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/au1x00_serial.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/au1x00_usb_ohci.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/au1x00_usb_ohci.h/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/cache.S/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/cpu.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/incaip_clock.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/incaip_wdt.S/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/interrupts.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/start.S/1.1.1.1/Wed Mar 25 22:22:02 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/mips/CVS/Repository u-boot-2009.03/cpu/mips/CVS/Repository
--- u-boot-2009.03_orig/cpu/mips/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mips/CVS/Repository      2009-03-25 15:25:18.837447700 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/mips
diff -Naur u-boot-2009.03_orig/cpu/mips/CVS/Root u-boot-2009.03/cpu/mips/CVS/Root
--- u-boot-2009.03_orig/cpu/mips/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mips/CVS/Root    2009-03-25 15:25:18.837447700 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/mpc512x/CVS/Entries u-boot-2009.03/cpu/mpc512x/CVS/Entries
--- u-boot-2009.03_orig/cpu/mpc512x/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc512x/CVS/Entries      2009-03-25 15:57:56.403044200 -0700
@@ -0,0 +1,13 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu_init.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/i2c.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/iim.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupts.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/iopin.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/speed.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/start.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/traps.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/mpc512x/CVS/Entries.Extra u-boot-2009.03/cpu/mpc512x/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/mpc512x/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc512x/CVS/Entries.Extra        2009-03-25 15:57:56.403044200 -0700
@@ -0,0 +1,12 @@
+/Makefile///1238019722/
+/config.mk///1238019722/
+/cpu.c///1238019722/
+/cpu_init.c///1238019722/
+/i2c.c///1238019722/
+/iim.c///1238019722/
+/interrupts.c///1238019722/
+/iopin.c///1238019722/
+/serial.c///1238019722/
+/speed.c///1238019722/
+/start.S///1238019722/
+/traps.c///1238019722/
diff -Naur u-boot-2009.03_orig/cpu/mpc512x/CVS/Entries.Extra.Old u-boot-2009.03/cpu/mpc512x/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/mpc512x/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc512x/CVS/Entries.Extra.Old    2009-03-25 15:25:19.000000000 -0700
@@ -0,0 +1,12 @@
+/Makefile///1238019722/
+/config.mk///1238019722/
+/cpu.c///1238019722/
+/cpu_init.c///1238019722/
+/i2c.c///1238019722/
+/iim.c///1238019722/
+/interrupts.c///1238019722/
+/iopin.c///1238019722/
+/serial.c///1238019722/
+/speed.c///1238019722/
+/start.S///1238019722/
+/traps.c///1238019722/
diff -Naur u-boot-2009.03_orig/cpu/mpc512x/CVS/Entries.Old u-boot-2009.03/cpu/mpc512x/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/mpc512x/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc512x/CVS/Entries.Old  2009-03-25 15:25:19.000000000 -0700
@@ -0,0 +1,13 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/cpu.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/cpu_init.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/i2c.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/iim.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/interrupts.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/iopin.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/serial.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/speed.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/start.S/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/traps.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/mpc512x/CVS/Repository u-boot-2009.03/cpu/mpc512x/CVS/Repository
--- u-boot-2009.03_orig/cpu/mpc512x/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc512x/CVS/Repository   2009-03-25 15:25:19.040571400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/mpc512x
diff -Naur u-boot-2009.03_orig/cpu/mpc512x/CVS/Root u-boot-2009.03/cpu/mpc512x/CVS/Root
--- u-boot-2009.03_orig/cpu/mpc512x/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc512x/CVS/Root 2009-03-25 15:25:19.040571400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/mpc5xx/CVS/Entries u-boot-2009.03/cpu/mpc5xx/CVS/Entries
--- u-boot-2009.03_orig/cpu/mpc5xx/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc5xx/CVS/Entries       2009-03-25 15:57:56.528043400 -0700
@@ -0,0 +1,12 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu_init.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupts.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/speed.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/spi.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/start.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/traps.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/mpc5xx/CVS/Entries.Extra u-boot-2009.03/cpu/mpc5xx/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/mpc5xx/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc5xx/CVS/Entries.Extra 2009-03-25 15:57:56.528043400 -0700
@@ -0,0 +1,11 @@
+/Makefile///1238019722/
+/config.mk///1238019722/
+/cpu.c///1238019722/
+/cpu_init.c///1238019722/
+/interrupts.c///1238019722/
+/serial.c///1238019722/
+/speed.c///1238019722/
+/spi.c///1238019722/
+/start.S///1238019722/
+/traps.c///1238019722/
+/u-boot.lds///1238019722/
diff -Naur u-boot-2009.03_orig/cpu/mpc5xx/CVS/Entries.Extra.Old u-boot-2009.03/cpu/mpc5xx/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/mpc5xx/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc5xx/CVS/Entries.Extra.Old     2009-03-25 15:25:19.000000000 -0700
@@ -0,0 +1,11 @@
+/Makefile///1238019722/
+/config.mk///1238019722/
+/cpu.c///1238019722/
+/cpu_init.c///1238019722/
+/interrupts.c///1238019722/
+/serial.c///1238019722/
+/speed.c///1238019722/
+/spi.c///1238019722/
+/start.S///1238019722/
+/traps.c///1238019722/
+/u-boot.lds///1238019722/
diff -Naur u-boot-2009.03_orig/cpu/mpc5xx/CVS/Entries.Old u-boot-2009.03/cpu/mpc5xx/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/mpc5xx/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc5xx/CVS/Entries.Old   2009-03-25 15:25:19.000000000 -0700
@@ -0,0 +1,12 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/cpu.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/cpu_init.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/interrupts.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/serial.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/speed.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/spi.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/start.S/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/traps.c/1.1.1.1/Wed Mar 25 22:22:02 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:22:02 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/mpc5xx/CVS/Repository u-boot-2009.03/cpu/mpc5xx/CVS/Repository
--- u-boot-2009.03_orig/cpu/mpc5xx/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc5xx/CVS/Repository    2009-03-25 15:25:19.228070200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/mpc5xx
diff -Naur u-boot-2009.03_orig/cpu/mpc5xx/CVS/Root u-boot-2009.03/cpu/mpc5xx/CVS/Root
--- u-boot-2009.03_orig/cpu/mpc5xx/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc5xx/CVS/Root  2009-03-25 15:25:19.228070200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/mpc5xxx/CVS/Entries u-boot-2009.03/cpu/mpc5xxx/CVS/Entries
--- u-boot-2009.03_orig/cpu/mpc5xxx/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc5xxx/CVS/Entries      2009-03-25 15:57:56.746792000 -0700
@@ -0,0 +1,22 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu_init.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/firmware_sc_task.impl.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/firmware_sc_task_bestcomm.impl.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/i2c.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ide.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupts.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/io.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/loadtask.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci_mpc5200.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/speed.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/start.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/traps.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot-customlayout.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usb_ohci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usb_ohci.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/mpc5xxx/CVS/Entries.Extra u-boot-2009.03/cpu/mpc5xxx/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/mpc5xxx/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc5xxx/CVS/Entries.Extra        2009-03-25 15:57:56.746792000 -0700
@@ -0,0 +1,21 @@
+/Makefile///1238019723/
+/config.mk///1238019723/
+/cpu.c///1238019723/
+/cpu_init.c///1238019723/
+/firmware_sc_task.impl.S///1238019723/
+/firmware_sc_task_bestcomm.impl.S///1238019723/
+/i2c.c///1238019723/
+/ide.c///1238019723/
+/interrupts.c///1238019723/
+/io.S///1238019723/
+/loadtask.c///1238019723/
+/pci_mpc5200.c///1238019723/
+/serial.c///1238019723/
+/speed.c///1238019723/
+/start.S///1238019723/
+/traps.c///1238019723/
+/u-boot-customlayout.lds///1238019723/
+/u-boot.lds///1238019723/
+/usb.c///1238019723/
+/usb_ohci.c///1238019723/
+/usb_ohci.h///1238019723/
diff -Naur u-boot-2009.03_orig/cpu/mpc5xxx/CVS/Entries.Extra.Old u-boot-2009.03/cpu/mpc5xxx/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/mpc5xxx/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc5xxx/CVS/Entries.Extra.Old    2009-03-25 15:25:19.000000000 -0700
@@ -0,0 +1,21 @@
+/Makefile///1238019723/
+/config.mk///1238019723/
+/cpu.c///1238019723/
+/cpu_init.c///1238019723/
+/firmware_sc_task.impl.S///1238019723/
+/firmware_sc_task_bestcomm.impl.S///1238019723/
+/i2c.c///1238019723/
+/ide.c///1238019723/
+/interrupts.c///1238019723/
+/io.S///1238019723/
+/loadtask.c///1238019723/
+/pci_mpc5200.c///1238019723/
+/serial.c///1238019723/
+/speed.c///1238019723/
+/start.S///1238019723/
+/traps.c///1238019723/
+/u-boot-customlayout.lds///1238019723/
+/u-boot.lds///1238019723/
+/usb.c///1238019723/
+/usb_ohci.c///1238019723/
+/usb_ohci.h///1238019723/
diff -Naur u-boot-2009.03_orig/cpu/mpc5xxx/CVS/Entries.Old u-boot-2009.03/cpu/mpc5xxx/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/mpc5xxx/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc5xxx/CVS/Entries.Old  2009-03-25 15:25:19.000000000 -0700
@@ -0,0 +1,22 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/cpu.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/cpu_init.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/firmware_sc_task.impl.S/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/firmware_sc_task_bestcomm.impl.S/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/i2c.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/ide.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/interrupts.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/io.S/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/loadtask.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/pci_mpc5200.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/serial.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/speed.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/start.S/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/traps.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/u-boot-customlayout.lds/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/usb.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/usb_ohci.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/usb_ohci.h/1.1.1.1/Wed Mar 25 22:22:03 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/mpc5xxx/CVS/Repository u-boot-2009.03/cpu/mpc5xxx/CVS/Repository
--- u-boot-2009.03_orig/cpu/mpc5xxx/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc5xxx/CVS/Repository   2009-03-25 15:25:19.665567400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/mpc5xxx
diff -Naur u-boot-2009.03_orig/cpu/mpc5xxx/CVS/Root u-boot-2009.03/cpu/mpc5xxx/CVS/Root
--- u-boot-2009.03_orig/cpu/mpc5xxx/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc5xxx/CVS/Root 2009-03-25 15:25:19.603067800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/mpc8220/CVS/Entries u-boot-2009.03/cpu/mpc8220/CVS/Entries
--- u-boot-2009.03_orig/cpu/mpc8220/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc8220/CVS/Entries      2009-03-25 15:57:56.934290800 -0700
@@ -0,0 +1,23 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu_init.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dma.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dramSetup.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dramSetup.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fec.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fec.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fec_dma_tasks.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/i2c.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/i2cCore.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/i2cCore.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupts.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/io.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/loadtask.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/speed.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/start.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/traps.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/uart.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/mpc8220/CVS/Entries.Extra u-boot-2009.03/cpu/mpc8220/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/mpc8220/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc8220/CVS/Entries.Extra        2009-03-25 15:57:56.934290800 -0700
@@ -0,0 +1,22 @@
+/Makefile///1238019723/
+/config.mk///1238019723/
+/cpu.c///1238019723/
+/cpu_init.c///1238019723/
+/dma.h///1238019723/
+/dramSetup.c///1238019723/
+/dramSetup.h///1238019723/
+/fec.c///1238019723/
+/fec.h///1238019723/
+/fec_dma_tasks.S///1238019723/
+/i2c.c///1238019723/
+/i2cCore.c///1238019723/
+/i2cCore.h///1238019723/
+/interrupts.c///1238019723/
+/io.S///1238019723/
+/loadtask.c///1238019723/
+/pci.c///1238019723/
+/speed.c///1238019723/
+/start.S///1238019723/
+/traps.c///1238019723/
+/u-boot.lds///1238019723/
+/uart.c///1238019723/
diff -Naur u-boot-2009.03_orig/cpu/mpc8220/CVS/Entries.Extra.Old u-boot-2009.03/cpu/mpc8220/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/mpc8220/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc8220/CVS/Entries.Extra.Old    2009-03-25 15:25:20.000000000 -0700
@@ -0,0 +1,22 @@
+/Makefile///1238019723/
+/config.mk///1238019723/
+/cpu.c///1238019723/
+/cpu_init.c///1238019723/
+/dma.h///1238019723/
+/dramSetup.c///1238019723/
+/dramSetup.h///1238019723/
+/fec.c///1238019723/
+/fec.h///1238019723/
+/fec_dma_tasks.S///1238019723/
+/i2c.c///1238019723/
+/i2cCore.c///1238019723/
+/i2cCore.h///1238019723/
+/interrupts.c///1238019723/
+/io.S///1238019723/
+/loadtask.c///1238019723/
+/pci.c///1238019723/
+/speed.c///1238019723/
+/start.S///1238019723/
+/traps.c///1238019723/
+/u-boot.lds///1238019723/
+/uart.c///1238019723/
diff -Naur u-boot-2009.03_orig/cpu/mpc8220/CVS/Entries.Old u-boot-2009.03/cpu/mpc8220/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/mpc8220/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc8220/CVS/Entries.Old  2009-03-25 15:25:20.000000000 -0700
@@ -0,0 +1,23 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/cpu.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/cpu_init.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/dma.h/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/dramSetup.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/dramSetup.h/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/fec.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/fec.h/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/fec_dma_tasks.S/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/i2c.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/i2cCore.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/i2cCore.h/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/interrupts.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/io.S/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/loadtask.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/pci.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/speed.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/start.S/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/traps.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/uart.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/mpc8220/CVS/Repository u-boot-2009.03/cpu/mpc8220/CVS/Repository
--- u-boot-2009.03_orig/cpu/mpc8220/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc8220/CVS/Repository   2009-03-25 15:25:20.009315200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/mpc8220
diff -Naur u-boot-2009.03_orig/cpu/mpc8220/CVS/Root u-boot-2009.03/cpu/mpc8220/CVS/Root
--- u-boot-2009.03_orig/cpu/mpc8220/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc8220/CVS/Root 2009-03-25 15:25:19.993690300 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/mpc824x/CVS/Entries u-boot-2009.03/cpu/mpc824x/CVS/Entries
--- u-boot-2009.03_orig/cpu/mpc824x/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc824x/CVS/Entries      2009-03-25 15:57:57.340538200 -0700
@@ -0,0 +1,11 @@
+D/drivers////
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu_init.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupts.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/speed.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/start.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/traps.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
diff -Naur u-boot-2009.03_orig/cpu/mpc824x/CVS/Entries.Extra u-boot-2009.03/cpu/mpc824x/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/mpc824x/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc824x/CVS/Entries.Extra        2009-03-25 15:57:57.340538200 -0700
@@ -0,0 +1,11 @@
+D/drivers////
+/Makefile///1238019723/
+/config.mk///1238019723/
+/cpu.c///1238019723/
+/cpu_init.c///1238019723/
+/interrupts.c///1238019723/
+/pci.c///1238019723/
+/speed.c///1238019723/
+/start.S///1238019723/
+/traps.c///1238019723/
+/u-boot.lds///1238019723/
diff -Naur u-boot-2009.03_orig/cpu/mpc824x/CVS/Entries.Extra.Old u-boot-2009.03/cpu/mpc824x/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/mpc824x/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc824x/CVS/Entries.Extra.Old    2009-03-25 15:25:20.000000000 -0700
@@ -0,0 +1,11 @@
+/Makefile///1238019723/
+/config.mk///1238019723/
+/cpu.c///1238019723/
+/cpu_init.c///1238019723/
+/interrupts.c///1238019723/
+/pci.c///1238019723/
+/speed.c///1238019723/
+/start.S///1238019723/
+/traps.c///1238019723/
+/u-boot.lds///1238019723/
+D/drivers////
diff -Naur u-boot-2009.03_orig/cpu/mpc824x/CVS/Entries.Old u-boot-2009.03/cpu/mpc824x/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/mpc824x/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc824x/CVS/Entries.Old  2009-03-25 15:25:20.000000000 -0700
@@ -0,0 +1,11 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/cpu.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/cpu_init.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/interrupts.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/pci.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/speed.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/start.S/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/traps.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:22:03 2009//
+D/drivers////
diff -Naur u-boot-2009.03_orig/cpu/mpc824x/CVS/Repository u-boot-2009.03/cpu/mpc824x/CVS/Repository
--- u-boot-2009.03_orig/cpu/mpc824x/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc824x/CVS/Repository   2009-03-25 15:25:20.274938500 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/mpc824x
diff -Naur u-boot-2009.03_orig/cpu/mpc824x/CVS/Root u-boot-2009.03/cpu/mpc824x/CVS/Root
--- u-boot-2009.03_orig/cpu/mpc824x/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc824x/CVS/Root 2009-03-25 15:25:20.274938500 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/mpc824x/drivers/CVS/Entries u-boot-2009.03/cpu/mpc824x/drivers/CVS/Entries
--- u-boot-2009.03_orig/cpu/mpc824x/drivers/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc824x/drivers/CVS/Entries      2009-03-25 15:57:57.293663500 -0700
@@ -0,0 +1,5 @@
+D/epic////
+D/i2c////
+/epic.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/errors.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/i2c_export.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
diff -Naur u-boot-2009.03_orig/cpu/mpc824x/drivers/CVS/Entries.Extra u-boot-2009.03/cpu/mpc824x/drivers/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/mpc824x/drivers/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc824x/drivers/CVS/Entries.Extra        2009-03-25 15:57:57.293663500 -0700
@@ -0,0 +1,5 @@
+D/epic////
+D/i2c////
+/epic.h///1238019723/
+/errors.h///1238019723/
+/i2c_export.h///1238019723/
diff -Naur u-boot-2009.03_orig/cpu/mpc824x/drivers/CVS/Entries.Extra.Old u-boot-2009.03/cpu/mpc824x/drivers/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/mpc824x/drivers/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc824x/drivers/CVS/Entries.Extra.Old    2009-03-25 15:25:20.000000000 -0700
@@ -0,0 +1,5 @@
+/epic.h///1238019723/
+/errors.h///1238019723/
+/i2c_export.h///1238019723/
+D/epic////
+D/i2c////
diff -Naur u-boot-2009.03_orig/cpu/mpc824x/drivers/CVS/Entries.Old u-boot-2009.03/cpu/mpc824x/drivers/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/mpc824x/drivers/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc824x/drivers/CVS/Entries.Old  2009-03-25 15:25:20.000000000 -0700
@@ -0,0 +1,5 @@
+/epic.h/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/errors.h/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/i2c_export.h/1.1.1.1/Wed Mar 25 22:22:03 2009//
+D/epic////
+D/i2c////
diff -Naur u-boot-2009.03_orig/cpu/mpc824x/drivers/CVS/Repository u-boot-2009.03/cpu/mpc824x/drivers/CVS/Repository
--- u-boot-2009.03_orig/cpu/mpc824x/drivers/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc824x/drivers/CVS/Repository   2009-03-25 15:25:20.415562600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/mpc824x/drivers
diff -Naur u-boot-2009.03_orig/cpu/mpc824x/drivers/CVS/Root u-boot-2009.03/cpu/mpc824x/drivers/CVS/Root
--- u-boot-2009.03_orig/cpu/mpc824x/drivers/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc824x/drivers/CVS/Root 2009-03-25 15:25:20.415562600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/mpc824x/drivers/epic/CVS/Entries u-boot-2009.03/cpu/mpc824x/drivers/epic/CVS/Entries
--- u-boot-2009.03_orig/cpu/mpc824x/drivers/epic/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc824x/drivers/epic/CVS/Entries 2009-03-25 15:57:57.153039400 -0700
@@ -0,0 +1,6 @@
+/README/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/epic.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/epic1.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/epic2.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/epicutil.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/mpc824x/drivers/epic/CVS/Entries.Extra u-boot-2009.03/cpu/mpc824x/drivers/epic/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/mpc824x/drivers/epic/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc824x/drivers/epic/CVS/Entries.Extra   2009-03-25 15:57:57.153039400 -0700
@@ -0,0 +1,5 @@
+/README///1238019723/
+/epic.h///1238019723/
+/epic1.c///1238019723/
+/epic2.S///1238019723/
+/epicutil.S///1238019723/
diff -Naur u-boot-2009.03_orig/cpu/mpc824x/drivers/epic/CVS/Entries.Extra.Old u-boot-2009.03/cpu/mpc824x/drivers/epic/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/mpc824x/drivers/epic/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc824x/drivers/epic/CVS/Entries.Extra.Old       2009-03-25 15:25:20.000000000 -0700
@@ -0,0 +1,5 @@
+/README///1238019723/
+/epic.h///1238019723/
+/epic1.c///1238019723/
+/epic2.S///1238019723/
+/epicutil.S///1238019723/
diff -Naur u-boot-2009.03_orig/cpu/mpc824x/drivers/epic/CVS/Entries.Old u-boot-2009.03/cpu/mpc824x/drivers/epic/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/mpc824x/drivers/epic/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc824x/drivers/epic/CVS/Entries.Old     2009-03-25 15:25:20.000000000 -0700
@@ -0,0 +1,6 @@
+/README/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/epic.h/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/epic1.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/epic2.S/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/epicutil.S/1.1.1.1/Wed Mar 25 22:22:03 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/mpc824x/drivers/epic/CVS/Repository u-boot-2009.03/cpu/mpc824x/drivers/epic/CVS/Repository
--- u-boot-2009.03_orig/cpu/mpc824x/drivers/epic/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc824x/drivers/epic/CVS/Repository      2009-03-25 15:25:20.571811600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/mpc824x/drivers/epic
diff -Naur u-boot-2009.03_orig/cpu/mpc824x/drivers/epic/CVS/Root u-boot-2009.03/cpu/mpc824x/drivers/epic/CVS/Root
--- u-boot-2009.03_orig/cpu/mpc824x/drivers/epic/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc824x/drivers/epic/CVS/Root    2009-03-25 15:25:20.571811600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/mpc824x/drivers/i2c/CVS/Entries u-boot-2009.03/cpu/mpc824x/drivers/i2c/CVS/Entries
--- u-boot-2009.03_orig/cpu/mpc824x/drivers/i2c/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc824x/drivers/i2c/CVS/Entries  2009-03-25 15:57:57.246788800 -0700
@@ -0,0 +1,2 @@
+/i2c.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/mpc824x/drivers/i2c/CVS/Entries.Extra u-boot-2009.03/cpu/mpc824x/drivers/i2c/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/mpc824x/drivers/i2c/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc824x/drivers/i2c/CVS/Entries.Extra    2009-03-25 15:57:57.246788800 -0700
@@ -0,0 +1 @@
+/i2c.c///1238019723/
diff -Naur u-boot-2009.03_orig/cpu/mpc824x/drivers/i2c/CVS/Entries.Extra.Old u-boot-2009.03/cpu/mpc824x/drivers/i2c/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/mpc824x/drivers/i2c/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc824x/drivers/i2c/CVS/Entries.Extra.Old        2009-03-25 15:25:20.000000000 -0700
@@ -0,0 +1 @@
+/i2c.c///1238019723/
diff -Naur u-boot-2009.03_orig/cpu/mpc824x/drivers/i2c/CVS/Entries.Old u-boot-2009.03/cpu/mpc824x/drivers/i2c/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/mpc824x/drivers/i2c/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc824x/drivers/i2c/CVS/Entries.Old      2009-03-25 15:25:20.000000000 -0700
@@ -0,0 +1,2 @@
+/i2c.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/mpc824x/drivers/i2c/CVS/Repository u-boot-2009.03/cpu/mpc824x/drivers/i2c/CVS/Repository
--- u-boot-2009.03_orig/cpu/mpc824x/drivers/i2c/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc824x/drivers/i2c/CVS/Repository       2009-03-25 15:25:20.712435700 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/mpc824x/drivers/i2c
diff -Naur u-boot-2009.03_orig/cpu/mpc824x/drivers/i2c/CVS/Root u-boot-2009.03/cpu/mpc824x/drivers/i2c/CVS/Root
--- u-boot-2009.03_orig/cpu/mpc824x/drivers/i2c/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc824x/drivers/i2c/CVS/Root     2009-03-25 15:25:20.712435700 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/mpc8260/CVS/Entries u-boot-2009.03/cpu/mpc8260/CVS/Entries
--- u-boot-2009.03_orig/cpu/mpc8260/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc8260/CVS/Entries      2009-03-25 15:57:57.543661900 -0700
@@ -0,0 +1,21 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bedbug_603e.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/commproc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu_init.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ether_fcc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ether_scc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/i2c.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupts.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/kgdb.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial_scc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial_smc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/speed.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/speed.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/spi.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/start.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/traps.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/mpc8260/CVS/Entries.Extra u-boot-2009.03/cpu/mpc8260/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/mpc8260/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc8260/CVS/Entries.Extra        2009-03-25 15:57:57.543661900 -0700
@@ -0,0 +1,20 @@
+/Makefile///1238019723/
+/bedbug_603e.c///1238019723/
+/commproc.c///1238019723/
+/config.mk///1238019723/
+/cpu.c///1238019723/
+/cpu_init.c///1238019723/
+/ether_fcc.c///1238019723/
+/ether_scc.c///1238019723/
+/i2c.c///1238019723/
+/interrupts.c///1238019723/
+/kgdb.S///1238019723/
+/pci.c///1238019723/
+/serial_scc.c///1238019723/
+/serial_smc.c///1238019723/
+/speed.c///1238019723/
+/speed.h///1238019723/
+/spi.c///1238019723/
+/start.S///1238019723/
+/traps.c///1238019723/
+/u-boot.lds///1238019723/
diff -Naur u-boot-2009.03_orig/cpu/mpc8260/CVS/Entries.Extra.Old u-boot-2009.03/cpu/mpc8260/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/mpc8260/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc8260/CVS/Entries.Extra.Old    2009-03-25 15:25:21.000000000 -0700
@@ -0,0 +1,20 @@
+/Makefile///1238019723/
+/bedbug_603e.c///1238019723/
+/commproc.c///1238019723/
+/config.mk///1238019723/
+/cpu.c///1238019723/
+/cpu_init.c///1238019723/
+/ether_fcc.c///1238019723/
+/ether_scc.c///1238019723/
+/i2c.c///1238019723/
+/interrupts.c///1238019723/
+/kgdb.S///1238019723/
+/pci.c///1238019723/
+/serial_scc.c///1238019723/
+/serial_smc.c///1238019723/
+/speed.c///1238019723/
+/speed.h///1238019723/
+/spi.c///1238019723/
+/start.S///1238019723/
+/traps.c///1238019723/
+/u-boot.lds///1238019723/
diff -Naur u-boot-2009.03_orig/cpu/mpc8260/CVS/Entries.Old u-boot-2009.03/cpu/mpc8260/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/mpc8260/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc8260/CVS/Entries.Old  2009-03-25 15:25:21.000000000 -0700
@@ -0,0 +1,21 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/bedbug_603e.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/commproc.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/cpu.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/cpu_init.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/ether_fcc.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/ether_scc.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/i2c.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/interrupts.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/kgdb.S/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/pci.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/serial_scc.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/serial_smc.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/speed.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/speed.h/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/spi.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/start.S/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/traps.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:22:03 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/mpc8260/CVS/Repository u-boot-2009.03/cpu/mpc8260/CVS/Repository
--- u-boot-2009.03_orig/cpu/mpc8260/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc8260/CVS/Repository   2009-03-25 15:25:20.868684700 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/mpc8260
diff -Naur u-boot-2009.03_orig/cpu/mpc8260/CVS/Root u-boot-2009.03/cpu/mpc8260/CVS/Root
--- u-boot-2009.03_orig/cpu/mpc8260/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc8260/CVS/Root 2009-03-25 15:25:20.868684700 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/mpc83xx/CVS/Entries u-boot-2009.03/cpu/mpc83xx/CVS/Entries
--- u-boot-2009.03_orig/cpu/mpc83xx/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc83xx/CVS/Entries      2009-03-25 15:57:57.715535800 -0700
@@ -0,0 +1,18 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu_init.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ecc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fdt.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupts.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nand_init.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pcie.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/qe_io.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serdes.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/spd_sdram.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/speed.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/start.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/traps.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/mpc83xx/CVS/Entries.Extra u-boot-2009.03/cpu/mpc83xx/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/mpc83xx/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc83xx/CVS/Entries.Extra        2009-03-25 15:57:57.715535800 -0700
@@ -0,0 +1,17 @@
+/Makefile///1238019723/
+/config.mk///1238019723/
+/cpu.c///1238019723/
+/cpu_init.c///1238019723/
+/ecc.c///1238019723/
+/fdt.c///1238019723/
+/interrupts.c///1238019723/
+/nand_init.c///1238019723/
+/pci.c///1238019723/
+/pcie.c///1238019723/
+/qe_io.c///1238019723/
+/serdes.c///1238019723/
+/spd_sdram.c///1238019723/
+/speed.c///1238019723/
+/start.S///1238019723/
+/traps.c///1238019723/
+/u-boot.lds///1238019723/
diff -Naur u-boot-2009.03_orig/cpu/mpc83xx/CVS/Entries.Extra.Old u-boot-2009.03/cpu/mpc83xx/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/mpc83xx/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc83xx/CVS/Entries.Extra.Old    2009-03-25 15:25:21.000000000 -0700
@@ -0,0 +1,17 @@
+/Makefile///1238019723/
+/config.mk///1238019723/
+/cpu.c///1238019723/
+/cpu_init.c///1238019723/
+/ecc.c///1238019723/
+/fdt.c///1238019723/
+/interrupts.c///1238019723/
+/nand_init.c///1238019723/
+/pci.c///1238019723/
+/pcie.c///1238019723/
+/qe_io.c///1238019723/
+/serdes.c///1238019723/
+/spd_sdram.c///1238019723/
+/speed.c///1238019723/
+/start.S///1238019723/
+/traps.c///1238019723/
+/u-boot.lds///1238019723/
diff -Naur u-boot-2009.03_orig/cpu/mpc83xx/CVS/Entries.Old u-boot-2009.03/cpu/mpc83xx/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/mpc83xx/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc83xx/CVS/Entries.Old  2009-03-25 15:25:21.000000000 -0700
@@ -0,0 +1,18 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/cpu.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/cpu_init.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/ecc.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/fdt.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/interrupts.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/nand_init.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/pci.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/pcie.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/qe_io.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/serdes.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/spd_sdram.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/speed.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/start.S/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/traps.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:22:03 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/mpc83xx/CVS/Repository u-boot-2009.03/cpu/mpc83xx/CVS/Repository
--- u-boot-2009.03_orig/cpu/mpc83xx/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc83xx/CVS/Repository   2009-03-25 15:25:21.118683100 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/mpc83xx
diff -Naur u-boot-2009.03_orig/cpu/mpc83xx/CVS/Root u-boot-2009.03/cpu/mpc83xx/CVS/Root
--- u-boot-2009.03_orig/cpu/mpc83xx/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc83xx/CVS/Root 2009-03-25 15:25:21.118683100 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/mpc85xx/CVS/Entries u-boot-2009.03/cpu/mpc85xx/CVS/Entries
--- u-boot-2009.03_orig/cpu/mpc85xx/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc85xx/CVS/Entries      2009-03-25 15:57:57.934284400 -0700
@@ -0,0 +1,24 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/commproc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu_init.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ddr-gen1.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ddr-gen2.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ddr-gen3.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ether_fcc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fdt.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupts.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mp.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mp.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc8536_serdes.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/qe_io.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/release.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/resetvec.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial_scc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/speed.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/start.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tlb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/traps.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/mpc85xx/CVS/Entries.Extra u-boot-2009.03/cpu/mpc85xx/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/mpc85xx/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc85xx/CVS/Entries.Extra        2009-03-25 15:57:57.934284400 -0700
@@ -0,0 +1,23 @@
+/Makefile///1238019723/
+/commproc.c///1238019723/
+/config.mk///1238019723/
+/cpu.c///1238019723/
+/cpu_init.c///1238019723/
+/ddr-gen1.c///1238019723/
+/ddr-gen2.c///1238019723/
+/ddr-gen3.c///1238019723/
+/ether_fcc.c///1238019723/
+/fdt.c///1238019723/
+/interrupts.c///1238019723/
+/mp.c///1238019723/
+/mp.h///1238019723/
+/mpc8536_serdes.c///1238019723/
+/pci.c///1238019723/
+/qe_io.c///1238019723/
+/release.S///1238019723/
+/resetvec.S///1238019723/
+/serial_scc.c///1238019723/
+/speed.c///1238019724/
+/start.S///1238019724/
+/tlb.c///1238019724/
+/traps.c///1238019724/
diff -Naur u-boot-2009.03_orig/cpu/mpc85xx/CVS/Entries.Extra.Old u-boot-2009.03/cpu/mpc85xx/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/mpc85xx/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc85xx/CVS/Entries.Extra.Old    2009-03-25 15:25:21.000000000 -0700
@@ -0,0 +1,23 @@
+/Makefile///1238019723/
+/commproc.c///1238019723/
+/config.mk///1238019723/
+/cpu.c///1238019723/
+/cpu_init.c///1238019723/
+/ddr-gen1.c///1238019723/
+/ddr-gen2.c///1238019723/
+/ddr-gen3.c///1238019723/
+/ether_fcc.c///1238019723/
+/fdt.c///1238019723/
+/interrupts.c///1238019723/
+/mp.c///1238019723/
+/mp.h///1238019723/
+/mpc8536_serdes.c///1238019723/
+/pci.c///1238019723/
+/qe_io.c///1238019723/
+/release.S///1238019723/
+/resetvec.S///1238019723/
+/serial_scc.c///1238019723/
+/speed.c///1238019724/
+/start.S///1238019724/
+/tlb.c///1238019724/
+/traps.c///1238019724/
diff -Naur u-boot-2009.03_orig/cpu/mpc85xx/CVS/Entries.Old u-boot-2009.03/cpu/mpc85xx/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/mpc85xx/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc85xx/CVS/Entries.Old  2009-03-25 15:25:21.000000000 -0700
@@ -0,0 +1,24 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/commproc.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/cpu.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/cpu_init.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/ddr-gen1.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/ddr-gen2.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/ddr-gen3.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/ether_fcc.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/fdt.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/interrupts.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/mp.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/mp.h/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/mpc8536_serdes.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/pci.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/qe_io.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/release.S/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/resetvec.S/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/serial_scc.c/1.1.1.1/Wed Mar 25 22:22:03 2009//
+/speed.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/start.S/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/tlb.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/traps.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/mpc85xx/CVS/Repository u-boot-2009.03/cpu/mpc85xx/CVS/Repository
--- u-boot-2009.03_orig/cpu/mpc85xx/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc85xx/CVS/Repository   2009-03-25 15:25:21.353056600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/mpc85xx
diff -Naur u-boot-2009.03_orig/cpu/mpc85xx/CVS/Root u-boot-2009.03/cpu/mpc85xx/CVS/Root
--- u-boot-2009.03_orig/cpu/mpc85xx/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc85xx/CVS/Root 2009-03-25 15:25:21.337431700 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/mpc86xx/CVS/Entries u-boot-2009.03/cpu/mpc86xx/CVS/Entries
--- u-boot-2009.03_orig/cpu/mpc86xx/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc86xx/CVS/Entries      2009-03-25 15:57:58.074908500 -0700
@@ -0,0 +1,15 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cache.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu_init.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ddr-8641.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fdt.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupts.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mp.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mp.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/release.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/speed.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/start.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/traps.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/mpc86xx/CVS/Entries.Extra u-boot-2009.03/cpu/mpc86xx/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/mpc86xx/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc86xx/CVS/Entries.Extra        2009-03-25 15:57:58.090533400 -0700
@@ -0,0 +1,14 @@
+/Makefile///1238019724/
+/cache.S///1238019724/
+/config.mk///1238019724/
+/cpu.c///1238019724/
+/cpu_init.c///1238019724/
+/ddr-8641.c///1238019724/
+/fdt.c///1238019724/
+/interrupts.c///1238019724/
+/mp.c///1238019724/
+/mp.h///1238019724/
+/release.S///1238019724/
+/speed.c///1238019724/
+/start.S///1238019724/
+/traps.c///1238019724/
diff -Naur u-boot-2009.03_orig/cpu/mpc86xx/CVS/Entries.Extra.Old u-boot-2009.03/cpu/mpc86xx/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/mpc86xx/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc86xx/CVS/Entries.Extra.Old    2009-03-25 15:25:21.000000000 -0700
@@ -0,0 +1,14 @@
+/Makefile///1238019724/
+/cache.S///1238019724/
+/config.mk///1238019724/
+/cpu.c///1238019724/
+/cpu_init.c///1238019724/
+/ddr-8641.c///1238019724/
+/fdt.c///1238019724/
+/interrupts.c///1238019724/
+/mp.c///1238019724/
+/mp.h///1238019724/
+/release.S///1238019724/
+/speed.c///1238019724/
+/start.S///1238019724/
+/traps.c///1238019724/
diff -Naur u-boot-2009.03_orig/cpu/mpc86xx/CVS/Entries.Old u-boot-2009.03/cpu/mpc86xx/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/mpc86xx/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc86xx/CVS/Entries.Old  2009-03-25 15:25:21.000000000 -0700
@@ -0,0 +1,15 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/cache.S/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/cpu.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/cpu_init.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/ddr-8641.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/fdt.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/interrupts.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/mp.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/mp.h/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/release.S/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/speed.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/start.S/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/traps.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/mpc86xx/CVS/Repository u-boot-2009.03/cpu/mpc86xx/CVS/Repository
--- u-boot-2009.03_orig/cpu/mpc86xx/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc86xx/CVS/Repository   2009-03-25 15:25:21.696804400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/mpc86xx
diff -Naur u-boot-2009.03_orig/cpu/mpc86xx/CVS/Root u-boot-2009.03/cpu/mpc86xx/CVS/Root
--- u-boot-2009.03_orig/cpu/mpc86xx/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc86xx/CVS/Root 2009-03-25 15:25:21.696804400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/mpc8xx/CVS/Entries u-boot-2009.03/cpu/mpc8xx/CVS/Entries
--- u-boot-2009.03_orig/cpu/mpc8xx/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc8xx/CVS/Entries       2009-03-25 15:57:58.340531800 -0700
@@ -0,0 +1,24 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bedbug_860.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/commproc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu_init.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fdt.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fec.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fec.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/i2c.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupts.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/kgdb.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lcd.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/plprcr_write.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/scc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/speed.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/spi.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/start.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/traps.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/upatch.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/video.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/wlkbd.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/mpc8xx/CVS/Entries.Extra u-boot-2009.03/cpu/mpc8xx/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/mpc8xx/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc8xx/CVS/Entries.Extra 2009-03-25 15:57:58.356156700 -0700
@@ -0,0 +1,23 @@
+/Makefile///1238019724/
+/bedbug_860.c///1238019724/
+/commproc.c///1238019724/
+/config.mk///1238019724/
+/cpu.c///1238019724/
+/cpu_init.c///1238019724/
+/fdt.c///1238019724/
+/fec.c///1238019724/
+/fec.h///1238019724/
+/i2c.c///1238019724/
+/interrupts.c///1238019724/
+/kgdb.S///1238019724/
+/lcd.c///1238019724/
+/plprcr_write.S///1238019724/
+/scc.c///1238019724/
+/serial.c///1238019724/
+/speed.c///1238019724/
+/spi.c///1238019724/
+/start.S///1238019724/
+/traps.c///1238019724/
+/upatch.c///1238019724/
+/video.c///1238019724/
+/wlkbd.c///1238019724/
diff -Naur u-boot-2009.03_orig/cpu/mpc8xx/CVS/Entries.Extra.Old u-boot-2009.03/cpu/mpc8xx/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/mpc8xx/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc8xx/CVS/Entries.Extra.Old     2009-03-25 15:25:22.000000000 -0700
@@ -0,0 +1,23 @@
+/Makefile///1238019724/
+/bedbug_860.c///1238019724/
+/commproc.c///1238019724/
+/config.mk///1238019724/
+/cpu.c///1238019724/
+/cpu_init.c///1238019724/
+/fdt.c///1238019724/
+/fec.c///1238019724/
+/fec.h///1238019724/
+/i2c.c///1238019724/
+/interrupts.c///1238019724/
+/kgdb.S///1238019724/
+/lcd.c///1238019724/
+/plprcr_write.S///1238019724/
+/scc.c///1238019724/
+/serial.c///1238019724/
+/speed.c///1238019724/
+/spi.c///1238019724/
+/start.S///1238019724/
+/traps.c///1238019724/
+/upatch.c///1238019724/
+/video.c///1238019724/
+/wlkbd.c///1238019724/
diff -Naur u-boot-2009.03_orig/cpu/mpc8xx/CVS/Entries.Old u-boot-2009.03/cpu/mpc8xx/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/mpc8xx/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc8xx/CVS/Entries.Old   2009-03-25 15:25:22.000000000 -0700
@@ -0,0 +1,24 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/bedbug_860.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/commproc.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/cpu.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/cpu_init.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/fdt.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/fec.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/fec.h/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/i2c.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/interrupts.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/kgdb.S/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/lcd.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/plprcr_write.S/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/scc.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/serial.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/speed.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/spi.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/start.S/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/traps.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/upatch.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/video.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/wlkbd.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/mpc8xx/CVS/Repository u-boot-2009.03/cpu/mpc8xx/CVS/Repository
--- u-boot-2009.03_orig/cpu/mpc8xx/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc8xx/CVS/Repository    2009-03-25 15:25:21.899928100 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/mpc8xx
diff -Naur u-boot-2009.03_orig/cpu/mpc8xx/CVS/Root u-boot-2009.03/cpu/mpc8xx/CVS/Root
--- u-boot-2009.03_orig/cpu/mpc8xx/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc8xx/CVS/Root  2009-03-25 15:25:21.899928100 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/mpc8xxx/CVS/Entries u-boot-2009.03/cpu/mpc8xxx/CVS/Entries
--- u-boot-2009.03_orig/cpu/mpc8xxx/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc8xxx/CVS/Entries      2009-03-25 15:25:22.415549800 -0700
@@ -0,0 +1 @@
+D/ddr////
diff -Naur u-boot-2009.03_orig/cpu/mpc8xxx/CVS/Entries.Extra u-boot-2009.03/cpu/mpc8xxx/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/mpc8xxx/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc8xxx/CVS/Entries.Extra        2009-03-25 15:25:22.415549800 -0700
@@ -0,0 +1 @@
+D/ddr////
diff -Naur u-boot-2009.03_orig/cpu/mpc8xxx/CVS/Repository u-boot-2009.03/cpu/mpc8xxx/CVS/Repository
--- u-boot-2009.03_orig/cpu/mpc8xxx/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc8xxx/CVS/Repository   2009-03-25 15:25:22.196801200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/mpc8xxx
diff -Naur u-boot-2009.03_orig/cpu/mpc8xxx/CVS/Root u-boot-2009.03/cpu/mpc8xxx/CVS/Root
--- u-boot-2009.03_orig/cpu/mpc8xxx/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc8xxx/CVS/Root 2009-03-25 15:25:22.181176300 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/mpc8xxx/ddr/CVS/Entries u-boot-2009.03/cpu/mpc8xxx/ddr/CVS/Entries
--- u-boot-2009.03_orig/cpu/mpc8xxx/ddr/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc8xxx/ddr/CVS/Entries  2009-03-25 15:57:58.496780800 -0700
@@ -0,0 +1,11 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/common_timing_params.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ctrl_regs.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ddr.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ddr1_dimm_params.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ddr2_dimm_params.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lc_common_dimm_params.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/main.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/options.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/util.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/mpc8xxx/ddr/CVS/Entries.Extra u-boot-2009.03/cpu/mpc8xxx/ddr/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/mpc8xxx/ddr/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc8xxx/ddr/CVS/Entries.Extra    2009-03-25 15:57:58.496780800 -0700
@@ -0,0 +1,10 @@
+/Makefile///1238019724/
+/common_timing_params.h///1238019724/
+/ctrl_regs.c///1238019724/
+/ddr.h///1238019724/
+/ddr1_dimm_params.c///1238019724/
+/ddr2_dimm_params.c///1238019724/
+/lc_common_dimm_params.c///1238019724/
+/main.c///1238019724/
+/options.c///1238019724/
+/util.c///1238019724/
diff -Naur u-boot-2009.03_orig/cpu/mpc8xxx/ddr/CVS/Entries.Extra.Old u-boot-2009.03/cpu/mpc8xxx/ddr/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/mpc8xxx/ddr/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc8xxx/ddr/CVS/Entries.Extra.Old        2009-03-25 15:25:22.000000000 -0700
@@ -0,0 +1,10 @@
+/Makefile///1238019724/
+/common_timing_params.h///1238019724/
+/ctrl_regs.c///1238019724/
+/ddr.h///1238019724/
+/ddr1_dimm_params.c///1238019724/
+/ddr2_dimm_params.c///1238019724/
+/lc_common_dimm_params.c///1238019724/
+/main.c///1238019724/
+/options.c///1238019724/
+/util.c///1238019724/
diff -Naur u-boot-2009.03_orig/cpu/mpc8xxx/ddr/CVS/Entries.Old u-boot-2009.03/cpu/mpc8xxx/ddr/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/mpc8xxx/ddr/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc8xxx/ddr/CVS/Entries.Old      2009-03-25 15:25:22.000000000 -0700
@@ -0,0 +1,11 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/common_timing_params.h/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/ctrl_regs.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/ddr.h/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/ddr1_dimm_params.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/ddr2_dimm_params.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/lc_common_dimm_params.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/main.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/options.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/util.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/mpc8xxx/ddr/CVS/Repository u-boot-2009.03/cpu/mpc8xxx/ddr/CVS/Repository
--- u-boot-2009.03_orig/cpu/mpc8xxx/ddr/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc8xxx/ddr/CVS/Repository       2009-03-25 15:25:22.212426100 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/mpc8xxx/ddr
diff -Naur u-boot-2009.03_orig/cpu/mpc8xxx/ddr/CVS/Root u-boot-2009.03/cpu/mpc8xxx/ddr/CVS/Root
--- u-boot-2009.03_orig/cpu/mpc8xxx/ddr/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/mpc8xxx/ddr/CVS/Root     2009-03-25 15:25:22.212426100 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/nios/CVS/Entries u-boot-2009.03/cpu/nios/CVS/Entries
--- u-boot-2009.03_orig/cpu/nios/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/nios/CVS/Entries 2009-03-25 15:57:58.606155100 -0700
@@ -0,0 +1,10 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/asmi.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupts.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/spi.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/start.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/traps.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/nios/CVS/Entries.Extra u-boot-2009.03/cpu/nios/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/nios/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/nios/CVS/Entries.Extra   2009-03-25 15:57:58.621780000 -0700
@@ -0,0 +1,9 @@
+/Makefile///1238019724/
+/asmi.c///1238019724/
+/config.mk///1238019724/
+/cpu.c///1238019724/
+/interrupts.c///1238019724/
+/serial.c///1238019724/
+/spi.c///1238019724/
+/start.S///1238019724/
+/traps.S///1238019724/
diff -Naur u-boot-2009.03_orig/cpu/nios/CVS/Entries.Extra.Old u-boot-2009.03/cpu/nios/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/nios/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/nios/CVS/Entries.Extra.Old       2009-03-25 15:25:22.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile///1238019724/
+/asmi.c///1238019724/
+/config.mk///1238019724/
+/cpu.c///1238019724/
+/interrupts.c///1238019724/
+/serial.c///1238019724/
+/spi.c///1238019724/
+/start.S///1238019724/
+/traps.S///1238019724/
diff -Naur u-boot-2009.03_orig/cpu/nios/CVS/Entries.Old u-boot-2009.03/cpu/nios/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/nios/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/nios/CVS/Entries.Old     2009-03-25 15:25:22.000000000 -0700
@@ -0,0 +1,10 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/asmi.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/cpu.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/interrupts.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/serial.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/spi.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/start.S/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/traps.S/1.1.1.1/Wed Mar 25 22:22:04 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/nios/CVS/Repository u-boot-2009.03/cpu/nios/CVS/Repository
--- u-boot-2009.03_orig/cpu/nios/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/nios/CVS/Repository      2009-03-25 15:25:22.665548200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/nios
diff -Naur u-boot-2009.03_orig/cpu/nios/CVS/Root u-boot-2009.03/cpu/nios/CVS/Root
--- u-boot-2009.03_orig/cpu/nios/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/nios/CVS/Root    2009-03-25 15:25:22.665548200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/nios2/CVS/Entries u-boot-2009.03/cpu/nios2/CVS/Entries
--- u-boot-2009.03_orig/cpu/nios2/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/nios2/CVS/Entries        2009-03-25 15:57:58.746779200 -0700
@@ -0,0 +1,11 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/epcs.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/exceptions.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupts.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/start.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sysid.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/traps.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/nios2/CVS/Entries.Extra u-boot-2009.03/cpu/nios2/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/nios2/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/nios2/CVS/Entries.Extra  2009-03-25 15:57:58.746779200 -0700
@@ -0,0 +1,10 @@
+/Makefile///1238019724/
+/config.mk///1238019724/
+/cpu.c///1238019724/
+/epcs.c///1238019724/
+/exceptions.S///1238019724/
+/interrupts.c///1238019724/
+/serial.c///1238019724/
+/start.S///1238019724/
+/sysid.c///1238019724/
+/traps.c///1238019724/
diff -Naur u-boot-2009.03_orig/cpu/nios2/CVS/Entries.Extra.Old u-boot-2009.03/cpu/nios2/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/nios2/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/nios2/CVS/Entries.Extra.Old      2009-03-25 15:25:22.000000000 -0700
@@ -0,0 +1,10 @@
+/Makefile///1238019724/
+/config.mk///1238019724/
+/cpu.c///1238019724/
+/epcs.c///1238019724/
+/exceptions.S///1238019724/
+/interrupts.c///1238019724/
+/serial.c///1238019724/
+/start.S///1238019724/
+/sysid.c///1238019724/
+/traps.c///1238019724/
diff -Naur u-boot-2009.03_orig/cpu/nios2/CVS/Entries.Old u-boot-2009.03/cpu/nios2/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/nios2/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/nios2/CVS/Entries.Old    2009-03-25 15:25:22.000000000 -0700
@@ -0,0 +1,11 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/cpu.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/epcs.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/exceptions.S/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/interrupts.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/serial.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/start.S/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/sysid.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/traps.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/nios2/CVS/Repository u-boot-2009.03/cpu/nios2/CVS/Repository
--- u-boot-2009.03_orig/cpu/nios2/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/nios2/CVS/Repository     2009-03-25 15:25:22.868671900 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/nios2
diff -Naur u-boot-2009.03_orig/cpu/nios2/CVS/Root u-boot-2009.03/cpu/nios2/CVS/Root
--- u-boot-2009.03_orig/cpu/nios2/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/nios2/CVS/Root   2009-03-25 15:25:22.868671900 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/or1200/CVS/Entries u-boot-2009.03/cpu/or1200/CVS/Entries
--- u-boot-2009.03_orig/cpu/or1200/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/or1200/CVS/Entries       2009-03-25 17:51:43.232697100 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1/Tue Mar 24 20:32:29 2009//
+/cpu.c/1.1/Tue Mar 24 20:32:29 2009//
+/interrupts.c/1.1/Tue Mar 24 20:32:29 2009//
+/start.S/1.1/Tue Mar 24 20:32:29 2009//
+/time.c/1.1/Thu Mar 26 00:31:06 2009//
+/watchdog.c/1.1/Tue Mar 24 20:32:29 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/or1200/CVS/Entries.Extra u-boot-2009.03/cpu/or1200/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/or1200/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/or1200/CVS/Entries.Extra 2009-03-25 17:51:43.232697100 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238028702/
+/cpu.c///1238028702/
+/interrupts.c///1238028702/
+/start.S///1238028702/
+/time.c///1238028702/
+/watchdog.c///1238028703/
diff -Naur u-boot-2009.03_orig/cpu/or1200/CVS/Entries.Extra.Old u-boot-2009.03/cpu/or1200/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/or1200/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/or1200/CVS/Entries.Extra.Old     2009-03-25 17:51:28.000000000 -0700
@@ -0,0 +1,6 @@
+/cpu.c////
+/interrupts.c////
+/time.c////
+/watchdog.c////
+/start.S////
+/Makefile////
diff -Naur u-boot-2009.03_orig/cpu/or1200/CVS/Entries.Old u-boot-2009.03/cpu/or1200/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/or1200/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/or1200/CVS/Entries.Old   2009-03-25 17:51:28.000000000 -0700
@@ -0,0 +1,7 @@
+/cpu.c/0/Initial cpu.c//
+/interrupts.c/0/Initial interrupts.c//
+/time.c/0/Initial time.c//
+/watchdog.c/0/Initial watchdog.c//
+/start.S/0/Initial start.S//
+/Makefile/0/Initial Makefile//
+D
diff -Naur u-boot-2009.03_orig/cpu/or1200/CVS/Repository u-boot-2009.03/cpu/or1200/CVS/Repository
--- u-boot-2009.03_orig/cpu/or1200/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/or1200/CVS/Repository    2009-03-25 17:49:53.639648500 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/or1200
diff -Naur u-boot-2009.03_orig/cpu/or1200/CVS/Root u-boot-2009.03/cpu/or1200/CVS/Root
--- u-boot-2009.03_orig/cpu/or1200/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/or1200/CVS/Root  2009-03-25 17:49:53.624023600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/or1200/Makefile u-boot-2009.03/cpu/or1200/Makefile
--- u-boot-2009.03_orig/cpu/or1200/Makefile     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/or1200/Makefile  2009-03-24 13:32:29.713725000 -0700
@@ -0,0 +1,57 @@
+#
+# (C) Copyright 2000-2006
+# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+#
+# (C) Copyright 2007
+# Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+#
+# (C) Copyright 2007
+# Yoshihiro Shimoda <shimoda.yoshihiro@renesas.com>
+#
+# See file CREDITS for list of people who contributed to this
+# project.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA
+#
+
+include $(TOPDIR)/config.mk
+
+LIB    = $(obj)lib$(CPU).a
+
+SOBJS  = start.o
+COBJS  = interrupts.o watchdog.o time.o cpu.o
+
+SRCS   := $(SOBJS:.o=.S) $(COBJS:.o=.c)
+OBJS   := $(addprefix $(obj),$(COBJS))
+SOBJS  := $(addprefix $(obj),$(SOBJS))
+
+$(LIB):        $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
+
+clean:
+       rm -f $(SOBJS) $(OBJS)
+
+distclean:     clean
+       rm -f $(LIB) core *.bak $(obj).depend
+
+#########################################################################
+
+# defines $(obj).depend target
+include $(SRCTREE)/rules.mk
+
+sinclude $(obj).depend
+
+#########################################################################
diff -Naur u-boot-2009.03_orig/cpu/or1200/cpu.c u-boot-2009.03/cpu/or1200/cpu.c
--- u-boot-2009.03_orig/cpu/or1200/cpu.c        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/or1200/cpu.c     2009-03-24 13:32:29.713725000 -0700
@@ -0,0 +1,35 @@
+/*
+ * (C) Copyright 2004, Psyent Corporation <www.psyent.com>
+ * Scott McNutt <smcnutt@psyent.com>
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <common.h>
+
+
+
+int do_reset (void)
+{
+       void (*rst)(void) = (void(*)(void))0x00000000;
+//     void (*rst)(void) = (void(*)(void))CFG_RESET_ADDR;
+       disable_interrupts ();
+       rst();
+       return(0);
+}
diff -Naur u-boot-2009.03_orig/cpu/or1200/interrupts.c u-boot-2009.03/cpu/or1200/interrupts.c
--- u-boot-2009.03_orig/cpu/or1200/interrupts.c 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/or1200/interrupts.c      2009-03-24 13:32:29.698200000 -0700
@@ -0,0 +1,42 @@
+/*
+ * (C) Copyright 2007
+ * Yoshihiro Shimoda <shimoda.yoshihiro@renesas.com>
+ *
+ * (C) Copyright 2007
+ * Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <common.h>
+
+int interrupt_init(void)
+{
+       return 0;
+}
+
+void enable_interrupts(void)
+{
+
+}
+
+int disable_interrupts(void)
+{
+       return 0;
+}
diff -Naur u-boot-2009.03_orig/cpu/or1200/start.S u-boot-2009.03/cpu/or1200/start.S
--- u-boot-2009.03_orig/cpu/or1200/start.S      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/or1200/start.S   2009-03-24 13:32:29.713725000 -0700
@@ -0,0 +1,27 @@
+/*  */
+/*  */
+
+#include <config.h>
+
+.section .stack, "aw", @nobits
+.space  0x8000
+_stack:
+
+.section .vectors, "ax"
+  
+       .global _start
+_start:
+
+  /* Set stack pointer */
+  l.movhi r1,hi(_stack)
+  l.ori   r1,r1,lo(_stack)
+  
+  /* Jump to main */
+  l.movhi r2,hi(_board_init)
+  l.ori   r2,r2,lo(_board_init)
+  l.jr    r2
+  l.nop
+
+
+  
+  
\ No newline at end of file
diff -Naur u-boot-2009.03_orig/cpu/or1200/time.c u-boot-2009.03/cpu/or1200/time.c
--- u-boot-2009.03_orig/cpu/or1200/time.c       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/or1200/time.c    2009-03-25 17:31:06.263350000 -0700
@@ -0,0 +1,39 @@
+/*
+ * (C) Copyright 2007 Michal Simek
+ * (C) Copyright 2004 Atmark Techno, Inc.
+ *
+ * Michal  SIMEK <monstr@monstr.eu>
+ * Yasushi SHOJI <yashi@atmark-techno.com>
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <common.h>
+
+void udelay (unsigned long usec)
+{
+       unsigned int i;
+       for (i = 0; i < (usec * CONFIG_HZ / 10000000); i++);
+}
+
+
+ulong get_timer (ulong base_ticks)
+{
+       return 0;
+}
diff -Naur u-boot-2009.03_orig/cpu/or1200/watchdog.c u-boot-2009.03/cpu/or1200/watchdog.c
--- u-boot-2009.03_orig/cpu/or1200/watchdog.c   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/or1200/watchdog.c        2009-03-24 13:32:29.698200000 -0700
@@ -0,0 +1,33 @@
+/*
+ * (C) Copyright 2007
+ * Yoshihiro Shimoda <shimoda.yoshihiro@renesas.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <common.h>
+#include <asm/processor.h>
+
+int watchdog_init(void)
+{
+       return 0;
+}
+
+void reset_cpu(unsigned long ignored)
+{
+       while (1)
+               ;
+}
diff -Naur u-boot-2009.03_orig/cpu/ppc4xx/CVS/Entries u-boot-2009.03/cpu/ppc4xx/CVS/Entries
--- u-boot-2009.03_orig/cpu/ppc4xx/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/ppc4xx/CVS/Entries       2009-03-25 15:57:58.965527800 -0700
@@ -0,0 +1,42 @@
+/40x_spd_sdram.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/44x_spd_ddr.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/44x_spd_ddr2.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/4xx_ibm_ddr2_autocalib.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/4xx_pci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/4xx_pcie.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/4xx_uart.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bedbug_405.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cache.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/commproc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu_init.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dcr.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/denali_data_eye.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/denali_spd_ddr2.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ecc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ecc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fdt.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/gpio.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/i2c.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupts.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/iop480_uart.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/kgdb.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/miiphy.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ndfc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/resetvec.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sdram.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sdram.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/speed.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/start.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tlb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/traps.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/uic.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usb_ohci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usb_ohci.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usbdev.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usbdev.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xilinx_irq.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/ppc4xx/CVS/Entries.Extra u-boot-2009.03/cpu/ppc4xx/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/ppc4xx/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/ppc4xx/CVS/Entries.Extra 2009-03-25 15:57:58.965527800 -0700
@@ -0,0 +1,41 @@
+/40x_spd_sdram.c///1238019724/
+/44x_spd_ddr.c///1238019724/
+/44x_spd_ddr2.c///1238019724/
+/4xx_ibm_ddr2_autocalib.c///1238019724/
+/4xx_pci.c///1238019724/
+/4xx_pcie.c///1238019724/
+/4xx_uart.c///1238019724/
+/Makefile///1238019724/
+/bedbug_405.c///1238019724/
+/cache.S///1238019724/
+/commproc.c///1238019724/
+/config.mk///1238019724/
+/cpu.c///1238019724/
+/cpu_init.c///1238019724/
+/dcr.S///1238019724/
+/denali_data_eye.c///1238019724/
+/denali_spd_ddr2.c///1238019724/
+/ecc.c///1238019724/
+/ecc.h///1238019724/
+/fdt.c///1238019724/
+/gpio.c///1238019724/
+/i2c.c///1238019724/
+/interrupts.c///1238019724/
+/iop480_uart.c///1238019724/
+/kgdb.S///1238019724/
+/miiphy.c///1238019724/
+/ndfc.c///1238019724/
+/resetvec.S///1238019724/
+/sdram.c///1238019724/
+/sdram.h///1238019724/
+/speed.c///1238019724/
+/start.S///1238019724/
+/tlb.c///1238019724/
+/traps.c///1238019724/
+/uic.c///1238019724/
+/usb.c///1238019724/
+/usb_ohci.c///1238019724/
+/usb_ohci.h///1238019724/
+/usbdev.c///1238019724/
+/usbdev.h///1238019724/
+/xilinx_irq.c///1238019725/
diff -Naur u-boot-2009.03_orig/cpu/ppc4xx/CVS/Entries.Extra.Old u-boot-2009.03/cpu/ppc4xx/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/ppc4xx/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/ppc4xx/CVS/Entries.Extra.Old     2009-03-25 15:25:23.000000000 -0700
@@ -0,0 +1,41 @@
+/40x_spd_sdram.c///1238019724/
+/44x_spd_ddr.c///1238019724/
+/44x_spd_ddr2.c///1238019724/
+/4xx_ibm_ddr2_autocalib.c///1238019724/
+/4xx_pci.c///1238019724/
+/4xx_pcie.c///1238019724/
+/4xx_uart.c///1238019724/
+/Makefile///1238019724/
+/bedbug_405.c///1238019724/
+/cache.S///1238019724/
+/commproc.c///1238019724/
+/config.mk///1238019724/
+/cpu.c///1238019724/
+/cpu_init.c///1238019724/
+/dcr.S///1238019724/
+/denali_data_eye.c///1238019724/
+/denali_spd_ddr2.c///1238019724/
+/ecc.c///1238019724/
+/ecc.h///1238019724/
+/fdt.c///1238019724/
+/gpio.c///1238019724/
+/i2c.c///1238019724/
+/interrupts.c///1238019724/
+/iop480_uart.c///1238019724/
+/kgdb.S///1238019724/
+/miiphy.c///1238019724/
+/ndfc.c///1238019724/
+/resetvec.S///1238019724/
+/sdram.c///1238019724/
+/sdram.h///1238019724/
+/speed.c///1238019724/
+/start.S///1238019724/
+/tlb.c///1238019724/
+/traps.c///1238019724/
+/uic.c///1238019724/
+/usb.c///1238019724/
+/usb_ohci.c///1238019724/
+/usb_ohci.h///1238019724/
+/usbdev.c///1238019724/
+/usbdev.h///1238019724/
+/xilinx_irq.c///1238019725/
diff -Naur u-boot-2009.03_orig/cpu/ppc4xx/CVS/Entries.Old u-boot-2009.03/cpu/ppc4xx/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/ppc4xx/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/ppc4xx/CVS/Entries.Old   2009-03-25 15:25:23.000000000 -0700
@@ -0,0 +1,42 @@
+/40x_spd_sdram.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/44x_spd_ddr.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/44x_spd_ddr2.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/4xx_ibm_ddr2_autocalib.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/4xx_pci.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/4xx_pcie.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/4xx_uart.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/Makefile/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/bedbug_405.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/cache.S/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/commproc.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/cpu.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/cpu_init.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/dcr.S/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/denali_data_eye.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/denali_spd_ddr2.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/ecc.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/ecc.h/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/fdt.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/gpio.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/i2c.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/interrupts.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/iop480_uart.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/kgdb.S/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/miiphy.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/ndfc.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/resetvec.S/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/sdram.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/sdram.h/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/speed.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/start.S/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/tlb.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/traps.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/uic.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/usb.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/usb_ohci.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/usb_ohci.h/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/usbdev.c/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/usbdev.h/1.1.1.1/Wed Mar 25 22:22:04 2009//
+/xilinx_irq.c/1.1.1.1/Wed Mar 25 22:22:05 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/ppc4xx/CVS/Repository u-boot-2009.03/cpu/ppc4xx/CVS/Repository
--- u-boot-2009.03_orig/cpu/ppc4xx/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/ppc4xx/CVS/Repository    2009-03-25 15:25:23.024920900 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/ppc4xx
diff -Naur u-boot-2009.03_orig/cpu/ppc4xx/CVS/Root u-boot-2009.03/cpu/ppc4xx/CVS/Root
--- u-boot-2009.03_orig/cpu/ppc4xx/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/ppc4xx/CVS/Root  2009-03-25 15:25:23.024920900 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/pxa/CVS/Entries u-boot-2009.03/cpu/pxa/CVS/Entries
--- u-boot-2009.03_orig/cpu/pxa/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/pxa/CVS/Entries  2009-03-25 15:57:59.215526200 -0700
@@ -0,0 +1,10 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/i2c.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupts.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pxafb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/start.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/pxa/CVS/Entries.Extra u-boot-2009.03/cpu/pxa/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/pxa/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/pxa/CVS/Entries.Extra    2009-03-25 15:57:59.215526200 -0700
@@ -0,0 +1,9 @@
+/Makefile///1238019725/
+/config.mk///1238019725/
+/cpu.c///1238019725/
+/i2c.c///1238019725/
+/interrupts.c///1238019725/
+/pxafb.c///1238019725/
+/serial.c///1238019725/
+/start.S///1238019725/
+/usb.c///1238019725/
diff -Naur u-boot-2009.03_orig/cpu/pxa/CVS/Entries.Extra.Old u-boot-2009.03/cpu/pxa/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/pxa/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/pxa/CVS/Entries.Extra.Old        2009-03-25 15:25:23.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile///1238019725/
+/config.mk///1238019725/
+/cpu.c///1238019725/
+/i2c.c///1238019725/
+/interrupts.c///1238019725/
+/pxafb.c///1238019725/
+/serial.c///1238019725/
+/start.S///1238019725/
+/usb.c///1238019725/
diff -Naur u-boot-2009.03_orig/cpu/pxa/CVS/Entries.Old u-boot-2009.03/cpu/pxa/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/pxa/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/pxa/CVS/Entries.Old      2009-03-25 15:25:23.000000000 -0700
@@ -0,0 +1,10 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/cpu.c/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/i2c.c/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/interrupts.c/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/pxafb.c/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/serial.c/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/start.S/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/usb.c/1.1.1.1/Wed Mar 25 22:22:05 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/pxa/CVS/Repository u-boot-2009.03/cpu/pxa/CVS/Repository
--- u-boot-2009.03_orig/cpu/pxa/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/pxa/CVS/Repository       2009-03-25 15:25:23.587417300 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/pxa
diff -Naur u-boot-2009.03_orig/cpu/pxa/CVS/Root u-boot-2009.03/cpu/pxa/CVS/Root
--- u-boot-2009.03_orig/cpu/pxa/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/pxa/CVS/Root     2009-03-25 15:25:23.587417300 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/s3c44b0/CVS/Entries u-boot-2009.03/cpu/s3c44b0/CVS/Entries
--- u-boot-2009.03_orig/cpu/s3c44b0/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/s3c44b0/CVS/Entries      2009-03-25 15:57:59.324900500 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupts.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/start.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/s3c44b0/CVS/Entries.Extra u-boot-2009.03/cpu/s3c44b0/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/s3c44b0/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/s3c44b0/CVS/Entries.Extra        2009-03-25 15:57:59.324900500 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019725/
+/config.mk///1238019725/
+/cpu.c///1238019725/
+/interrupts.c///1238019725/
+/serial.c///1238019725/
+/start.S///1238019725/
diff -Naur u-boot-2009.03_orig/cpu/s3c44b0/CVS/Entries.Extra.Old u-boot-2009.03/cpu/s3c44b0/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/s3c44b0/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/s3c44b0/CVS/Entries.Extra.Old    2009-03-25 15:25:23.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019725/
+/config.mk///1238019725/
+/cpu.c///1238019725/
+/interrupts.c///1238019725/
+/serial.c///1238019725/
+/start.S///1238019725/
diff -Naur u-boot-2009.03_orig/cpu/s3c44b0/CVS/Entries.Old u-boot-2009.03/cpu/s3c44b0/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/s3c44b0/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/s3c44b0/CVS/Entries.Old  2009-03-25 15:25:23.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/cpu.c/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/interrupts.c/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/serial.c/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/start.S/1.1.1.1/Wed Mar 25 22:22:05 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/s3c44b0/CVS/Repository u-boot-2009.03/cpu/s3c44b0/CVS/Repository
--- u-boot-2009.03_orig/cpu/s3c44b0/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/s3c44b0/CVS/Repository   2009-03-25 15:25:23.743666300 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/s3c44b0
diff -Naur u-boot-2009.03_orig/cpu/s3c44b0/CVS/Root u-boot-2009.03/cpu/s3c44b0/CVS/Root
--- u-boot-2009.03_orig/cpu/s3c44b0/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/s3c44b0/CVS/Root 2009-03-25 15:25:23.743666300 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/sa1100/CVS/Entries u-boot-2009.03/cpu/sa1100/CVS/Entries
--- u-boot-2009.03_orig/cpu/sa1100/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/sa1100/CVS/Entries       2009-03-25 15:57:59.403025000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupts.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/start.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/sa1100/CVS/Entries.Extra u-boot-2009.03/cpu/sa1100/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/sa1100/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/sa1100/CVS/Entries.Extra 2009-03-25 15:57:59.403025000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019725/
+/config.mk///1238019725/
+/cpu.c///1238019725/
+/interrupts.c///1238019725/
+/serial.c///1238019725/
+/start.S///1238019725/
diff -Naur u-boot-2009.03_orig/cpu/sa1100/CVS/Entries.Extra.Old u-boot-2009.03/cpu/sa1100/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/sa1100/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/sa1100/CVS/Entries.Extra.Old     2009-03-25 15:25:23.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019725/
+/config.mk///1238019725/
+/cpu.c///1238019725/
+/interrupts.c///1238019725/
+/serial.c///1238019725/
+/start.S///1238019725/
diff -Naur u-boot-2009.03_orig/cpu/sa1100/CVS/Entries.Old u-boot-2009.03/cpu/sa1100/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/sa1100/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/sa1100/CVS/Entries.Old   2009-03-25 15:25:23.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/cpu.c/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/interrupts.c/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/serial.c/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/start.S/1.1.1.1/Wed Mar 25 22:22:05 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/sa1100/CVS/Repository u-boot-2009.03/cpu/sa1100/CVS/Repository
--- u-boot-2009.03_orig/cpu/sa1100/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/sa1100/CVS/Repository    2009-03-25 15:25:23.868665500 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/sa1100
diff -Naur u-boot-2009.03_orig/cpu/sa1100/CVS/Root u-boot-2009.03/cpu/sa1100/CVS/Root
--- u-boot-2009.03_orig/cpu/sa1100/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/sa1100/CVS/Root  2009-03-25 15:25:23.853040600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/sh2/CVS/Entries u-boot-2009.03/cpu/sh2/CVS/Entries
--- u-boot-2009.03_orig/cpu/sh2/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/sh2/CVS/Entries  2009-03-25 15:57:59.481149500 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cache.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupts.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/start.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/watchdog.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/sh2/CVS/Entries.Extra u-boot-2009.03/cpu/sh2/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/sh2/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/sh2/CVS/Entries.Extra    2009-03-25 15:57:59.481149500 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019725/
+/cache.c///1238019725/
+/config.mk///1238019725/
+/cpu.c///1238019725/
+/interrupts.c///1238019725/
+/start.S///1238019725/
+/watchdog.c///1238019725/
diff -Naur u-boot-2009.03_orig/cpu/sh2/CVS/Entries.Extra.Old u-boot-2009.03/cpu/sh2/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/sh2/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/sh2/CVS/Entries.Extra.Old        2009-03-25 15:25:24.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019725/
+/cache.c///1238019725/
+/config.mk///1238019725/
+/cpu.c///1238019725/
+/interrupts.c///1238019725/
+/start.S///1238019725/
+/watchdog.c///1238019725/
diff -Naur u-boot-2009.03_orig/cpu/sh2/CVS/Entries.Old u-boot-2009.03/cpu/sh2/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/sh2/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/sh2/CVS/Entries.Old      2009-03-25 15:25:24.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/cache.c/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/cpu.c/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/interrupts.c/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/start.S/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/watchdog.c/1.1.1.1/Wed Mar 25 22:22:05 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/sh2/CVS/Repository u-boot-2009.03/cpu/sh2/CVS/Repository
--- u-boot-2009.03_orig/cpu/sh2/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/sh2/CVS/Repository       2009-03-25 15:25:23.978039800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/sh2
diff -Naur u-boot-2009.03_orig/cpu/sh2/CVS/Root u-boot-2009.03/cpu/sh2/CVS/Root
--- u-boot-2009.03_orig/cpu/sh2/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/sh2/CVS/Root     2009-03-25 15:25:23.978039800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/sh3/CVS/Entries u-boot-2009.03/cpu/sh3/CVS/Entries
--- u-boot-2009.03_orig/cpu/sh3/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/sh3/CVS/Entries  2009-03-25 15:57:59.574898900 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cache.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupts.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/start.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/watchdog.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/sh3/CVS/Entries.Extra u-boot-2009.03/cpu/sh3/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/sh3/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/sh3/CVS/Entries.Extra    2009-03-25 15:57:59.574898900 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019725/
+/cache.c///1238019725/
+/config.mk///1238019725/
+/cpu.c///1238019725/
+/interrupts.c///1238019725/
+/start.S///1238019725/
+/watchdog.c///1238019725/
diff -Naur u-boot-2009.03_orig/cpu/sh3/CVS/Entries.Extra.Old u-boot-2009.03/cpu/sh3/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/sh3/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/sh3/CVS/Entries.Extra.Old        2009-03-25 15:25:24.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019725/
+/cache.c///1238019725/
+/config.mk///1238019725/
+/cpu.c///1238019725/
+/interrupts.c///1238019725/
+/start.S///1238019725/
+/watchdog.c///1238019725/
diff -Naur u-boot-2009.03_orig/cpu/sh3/CVS/Entries.Old u-boot-2009.03/cpu/sh3/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/sh3/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/sh3/CVS/Entries.Old      2009-03-25 15:25:24.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/cache.c/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/cpu.c/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/interrupts.c/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/start.S/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/watchdog.c/1.1.1.1/Wed Mar 25 22:22:05 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/sh3/CVS/Repository u-boot-2009.03/cpu/sh3/CVS/Repository
--- u-boot-2009.03_orig/cpu/sh3/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/sh3/CVS/Repository       2009-03-25 15:25:24.118663900 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/sh3
diff -Naur u-boot-2009.03_orig/cpu/sh3/CVS/Root u-boot-2009.03/cpu/sh3/CVS/Root
--- u-boot-2009.03_orig/cpu/sh3/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/sh3/CVS/Root     2009-03-25 15:25:24.118663900 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/cpu/sh4/CVS/Entries u-boot-2009.03/cpu/sh4/CVS/Entries
--- u-boot-2009.03_orig/cpu/sh4/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/sh4/CVS/Entries  2009-03-25 15:57:59.653023400 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cache.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupts.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/start.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/watchdog.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/sh4/CVS/Entries.Extra u-boot-2009.03/cpu/sh4/CVS/Entries.Extra
--- u-boot-2009.03_orig/cpu/sh4/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/sh4/CVS/Entries.Extra    2009-03-25 15:57:59.653023400 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019725/
+/cache.c///1238019725/
+/config.mk///1238019725/
+/cpu.c///1238019725/
+/interrupts.c///1238019725/
+/start.S///1238019725/
+/watchdog.c///1238019725/
diff -Naur u-boot-2009.03_orig/cpu/sh4/CVS/Entries.Extra.Old u-boot-2009.03/cpu/sh4/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/cpu/sh4/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/sh4/CVS/Entries.Extra.Old        2009-03-25 15:25:24.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019725/
+/cache.c///1238019725/
+/config.mk///1238019725/
+/cpu.c///1238019725/
+/interrupts.c///1238019725/
+/start.S///1238019725/
+/watchdog.c///1238019725/
diff -Naur u-boot-2009.03_orig/cpu/sh4/CVS/Entries.Old u-boot-2009.03/cpu/sh4/CVS/Entries.Old
--- u-boot-2009.03_orig/cpu/sh4/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/sh4/CVS/Entries.Old      2009-03-25 15:25:24.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/cache.c/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/cpu.c/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/interrupts.c/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/start.S/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/watchdog.c/1.1.1.1/Wed Mar 25 22:22:05 2009//
+D
diff -Naur u-boot-2009.03_orig/cpu/sh4/CVS/Repository u-boot-2009.03/cpu/sh4/CVS/Repository
--- u-boot-2009.03_orig/cpu/sh4/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/sh4/CVS/Repository       2009-03-25 15:25:24.243663100 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/cpu/sh4
diff -Naur u-boot-2009.03_orig/cpu/sh4/CVS/Root u-boot-2009.03/cpu/sh4/CVS/Root
--- u-boot-2009.03_orig/cpu/sh4/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/cpu/sh4/CVS/Root     2009-03-25 15:25:24.243663100 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/disk/CVS/Entries u-boot-2009.03/disk/CVS/Entries
--- u-boot-2009.03_orig/disk/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/disk/CVS/Entries     2009-03-25 15:57:59.762397700 -0700
@@ -0,0 +1,13 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/part.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/part_amiga.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/part_amiga.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/part_dos.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/part_dos.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/part_efi.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/part_efi.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/part_iso.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/part_iso.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/part_mac.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/part_mac.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/disk/CVS/Entries.Extra u-boot-2009.03/disk/CVS/Entries.Extra
--- u-boot-2009.03_orig/disk/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/disk/CVS/Entries.Extra       2009-03-25 15:57:59.778022600 -0700
@@ -0,0 +1,12 @@
+/Makefile///1238019725/
+/part.c///1238019725/
+/part_amiga.c///1238019725/
+/part_amiga.h///1238019725/
+/part_dos.c///1238019725/
+/part_dos.h///1238019725/
+/part_efi.c///1238019725/
+/part_efi.h///1238019725/
+/part_iso.c///1238019725/
+/part_iso.h///1238019725/
+/part_mac.c///1238019725/
+/part_mac.h///1238019725/
diff -Naur u-boot-2009.03_orig/disk/CVS/Entries.Extra.Old u-boot-2009.03/disk/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/disk/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/disk/CVS/Entries.Extra.Old   2009-03-25 15:25:24.000000000 -0700
@@ -0,0 +1,12 @@
+/Makefile///1238019725/
+/part.c///1238019725/
+/part_amiga.c///1238019725/
+/part_amiga.h///1238019725/
+/part_dos.c///1238019725/
+/part_dos.h///1238019725/
+/part_efi.c///1238019725/
+/part_efi.h///1238019725/
+/part_iso.c///1238019725/
+/part_iso.h///1238019725/
+/part_mac.c///1238019725/
+/part_mac.h///1238019725/
diff -Naur u-boot-2009.03_orig/disk/CVS/Entries.Old u-boot-2009.03/disk/CVS/Entries.Old
--- u-boot-2009.03_orig/disk/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/disk/CVS/Entries.Old 2009-03-25 15:25:24.000000000 -0700
@@ -0,0 +1,13 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/part.c/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/part_amiga.c/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/part_amiga.h/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/part_dos.c/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/part_dos.h/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/part_efi.c/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/part_efi.h/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/part_iso.c/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/part_iso.h/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/part_mac.c/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/part_mac.h/1.1.1.1/Wed Mar 25 22:22:05 2009//
+D
diff -Naur u-boot-2009.03_orig/disk/CVS/Repository u-boot-2009.03/disk/CVS/Repository
--- u-boot-2009.03_orig/disk/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/disk/CVS/Repository  2009-03-25 15:25:24.649910500 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/disk
diff -Naur u-boot-2009.03_orig/disk/CVS/Root u-boot-2009.03/disk/CVS/Root
--- u-boot-2009.03_orig/disk/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/disk/CVS/Root        2009-03-25 15:25:24.603035800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/doc/CVS/Entries u-boot-2009.03/doc/CVS/Entries
--- u-boot-2009.03_orig/doc/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/doc/CVS/Entries      2009-03-25 15:58:00.418643500 -0700
@@ -0,0 +1,135 @@
+D/uImage.FIT////
+/I2C_Edge_Conditions/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README-i386/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README-integrator/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.440-DDR-performance/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.AMCC-eval-boards-cleanup/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.ARM-SoC/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.ARM-memory-map/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.AVR32/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.COBRA5272/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.EVB-64260-750CX/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.INCA-IP/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.IPHASE4539/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.IceCube/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.JFFS2/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.JFFS2_NAND/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.Lite5200B_low_power/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.MBX/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.MPC866/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.Modem/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.NetConsole/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.OFT/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.OXC/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.PIP405/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.POST/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.PXA_CF/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.PlanetCore/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.Purple/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.RPXClassic/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.RPXlite/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.SBC8560/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.SNTP/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.Sandpoint8240/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.TQM8260/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.VLAN/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.adnpesc1/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.adnpesc1_base32/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.alaska8220/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.amigaone/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.at91/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.atum8548/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.autoboot/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.bamboo/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.bedbug/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.blackfin/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.cmi/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.commands/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.commands.itest/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.console/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.db64360/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.db64460/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.dk1c20/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.dk1c20_std32/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.dk1s10/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.dk1s10_mldk20/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.dk1s10_std32/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.dk1s40_std32/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.dk20k200_std32/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.ebony/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.evb64260/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.fads/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.fsl-ddr/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.generic_usb_ohci/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.idma2intr/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.imx31/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.iomux/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.kmeter1/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.korat/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.lynxkdi/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.m52277evb/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.m5253evbe/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.m53017evb/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.m5373evb/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.m54455evb/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.m5475evb/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.m68k/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.marubun-pcmcia/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.mips/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.ml300/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.modnet50/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.mpc5xx/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.mpc7448hpc2/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.mpc74xx/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.mpc8313erdb/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.mpc8315erdb/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.mpc8323erdb/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.mpc832xemds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.mpc8349itx/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.mpc8360emds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.mpc837xemds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.mpc837xerdb/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.mpc83xx.ddrecc/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.mpc83xxads/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.mpc8544ds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.mpc8572ds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.mpc85xxads/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.mpc85xxcds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.mpc8610hpcd/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.mpc8641hpcn/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.mvbc_p/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.mvblm7/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.nand/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.nand-boot-ppc440/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.ne2000/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.nios/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.nios_CONFIG_SYS_NIOS_CPU/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.nios_DK/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.nmdk8815/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.ns9750dev/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.ocotea/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.ocotea-PIBS-to-U-Boot/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.omap3/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.omap730p2/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.ppc440/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.qemu_mips/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.sata/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.sbc8349/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.sbc8548/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.sbc8641d/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.sched/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.serial_multi/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.sh/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.sh7785lcr/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.sha1/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.silent/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.simpc8313/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.standalone/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.stxxtc/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.update/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.usb/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.video/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.xpedite1k/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.zeus/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/TODO-i386/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/feature-removal-schedule.txt/1.1.1.1/Sat Mar 21 21:04:41 2009//
diff -Naur u-boot-2009.03_orig/doc/CVS/Entries.Extra u-boot-2009.03/doc/CVS/Entries.Extra
--- u-boot-2009.03_orig/doc/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/doc/CVS/Entries.Extra        2009-03-25 15:58:00.434268400 -0700
@@ -0,0 +1,135 @@
+D/uImage.FIT////
+/I2C_Edge_Conditions///1238019725/
+/README-i386///1238019725/
+/README-integrator///1238019725/
+/README.440-DDR-performance///1238019725/
+/README.AMCC-eval-boards-cleanup///1238019725/
+/README.ARM-SoC///1238019725/
+/README.ARM-memory-map///1238019725/
+/README.AVR32///1238019725/
+/README.COBRA5272///1238019725/
+/README.EVB-64260-750CX///1238019725/
+/README.INCA-IP///1238019725/
+/README.IPHASE4539///1238019725/
+/README.IceCube///1238019725/
+/README.JFFS2///1238019725/
+/README.JFFS2_NAND///1238019725/
+/README.Lite5200B_low_power///1238019726/
+/README.MBX///1238019726/
+/README.MPC866///1238019726/
+/README.Modem///1238019726/
+/README.NetConsole///1238019726/
+/README.OFT///1238019726/
+/README.OXC///1238019726/
+/README.PIP405///1238019726/
+/README.POST///1238019726/
+/README.PXA_CF///1238019726/
+/README.PlanetCore///1238019726/
+/README.Purple///1238019726/
+/README.RPXClassic///1238019726/
+/README.RPXlite///1238019726/
+/README.SBC8560///1238019726/
+/README.SNTP///1238019726/
+/README.Sandpoint8240///1238019726/
+/README.TQM8260///1238019726/
+/README.VLAN///1238019726/
+/README.adnpesc1///1238019725/
+/README.adnpesc1_base32///1238019725/
+/README.alaska8220///1238019725/
+/README.amigaone///1238019725/
+/README.at91///1238019725/
+/README.atum8548///1238019725/
+/README.autoboot///1238019725/
+/README.bamboo///1238019725/
+/README.bedbug///1238019725/
+/README.blackfin///1238019725/
+/README.cmi///1238019725/
+/README.commands///1238019725/
+/README.commands.itest///1238019725/
+/README.console///1238019725/
+/README.db64360///1238019725/
+/README.db64460///1238019725/
+/README.dk1c20///1238019725/
+/README.dk1c20_std32///1238019725/
+/README.dk1s10///1238019725/
+/README.dk1s10_mldk20///1238019725/
+/README.dk1s10_std32///1238019725/
+/README.dk1s40_std32///1238019725/
+/README.dk20k200_std32///1238019725/
+/README.ebony///1238019725/
+/README.evb64260///1238019725/
+/README.fads///1238019725/
+/README.fsl-ddr///1238019725/
+/README.generic_usb_ohci///1238019725/
+/README.idma2intr///1238019725/
+/README.imx31///1238019725/
+/README.iomux///1238019725/
+/README.kmeter1///1238019726/
+/README.korat///1238019726/
+/README.lynxkdi///1238019726/
+/README.m52277evb///1238019726/
+/README.m5253evbe///1238019726/
+/README.m53017evb///1238019726/
+/README.m5373evb///1238019726/
+/README.m54455evb///1238019726/
+/README.m5475evb///1238019726/
+/README.m68k///1238019726/
+/README.marubun-pcmcia///1238019726/
+/README.mips///1238019726/
+/README.ml300///1238019726/
+/README.modnet50///1238019726/
+/README.mpc5xx///1238019726/
+/README.mpc7448hpc2///1238019726/
+/README.mpc74xx///1238019726/
+/README.mpc8313erdb///1238019726/
+/README.mpc8315erdb///1238019726/
+/README.mpc8323erdb///1238019726/
+/README.mpc832xemds///1238019726/
+/README.mpc8349itx///1238019726/
+/README.mpc8360emds///1238019726/
+/README.mpc837xemds///1238019726/
+/README.mpc837xerdb///1238019726/
+/README.mpc83xx.ddrecc///1238019726/
+/README.mpc83xxads///1238019726/
+/README.mpc8544ds///1238019726/
+/README.mpc8572ds///1238019726/
+/README.mpc85xxads///1238019726/
+/README.mpc85xxcds///1238019726/
+/README.mpc8610hpcd///1238019726/
+/README.mpc8641hpcn///1238019726/
+/README.mvbc_p///1238019726/
+/README.mvblm7///1238019726/
+/README.nand///1238019726/
+/README.nand-boot-ppc440///1238019726/
+/README.ne2000///1238019726/
+/README.nios///1238019726/
+/README.nios_CONFIG_SYS_NIOS_CPU///1238019726/
+/README.nios_DK///1238019726/
+/README.nmdk8815///1238019726/
+/README.ns9750dev///1238019726/
+/README.ocotea///1238019726/
+/README.ocotea-PIBS-to-U-Boot///1238019726/
+/README.omap3///1238019726/
+/README.omap730p2///1238019726/
+/README.ppc440///1238019726/
+/README.qemu_mips///1238019726/
+/README.sata///1238019726/
+/README.sbc8349///1238019726/
+/README.sbc8548///1238019726/
+/README.sbc8641d///1238019726/
+/README.sched///1238019726/
+/README.serial_multi///1238019726/
+/README.sh///1238019726/
+/README.sh7785lcr///1238019726/
+/README.sha1///1238019726/
+/README.silent///1238019726/
+/README.simpc8313///1238019726/
+/README.standalone///1238019726/
+/README.stxxtc///1238019726/
+/README.update///1238019726/
+/README.usb///1238019726/
+/README.video///1238019726/
+/README.xpedite1k///1238019726/
+/README.zeus///1238019726/
+/TODO-i386///1238019726/
+/feature-removal-schedule.txt///1238019725/
diff -Naur u-boot-2009.03_orig/doc/CVS/Entries.Extra.Old u-boot-2009.03/doc/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/doc/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/doc/CVS/Entries.Extra.Old    2009-03-25 15:25:26.000000000 -0700
@@ -0,0 +1,135 @@
+/I2C_Edge_Conditions///1238019725/
+/README-i386///1238019725/
+/README-integrator///1238019725/
+/README.440-DDR-performance///1238019725/
+/README.AMCC-eval-boards-cleanup///1238019725/
+/README.ARM-SoC///1238019725/
+/README.ARM-memory-map///1238019725/
+/README.AVR32///1238019725/
+/README.COBRA5272///1238019725/
+/README.EVB-64260-750CX///1238019725/
+/README.INCA-IP///1238019725/
+/README.IPHASE4539///1238019725/
+/README.IceCube///1238019725/
+/README.JFFS2///1238019725/
+/README.JFFS2_NAND///1238019725/
+/README.Lite5200B_low_power///1238019726/
+/README.MBX///1238019726/
+/README.MPC866///1238019726/
+/README.Modem///1238019726/
+/README.NetConsole///1238019726/
+/README.OFT///1238019726/
+/README.OXC///1238019726/
+/README.PIP405///1238019726/
+/README.POST///1238019726/
+/README.PXA_CF///1238019726/
+/README.PlanetCore///1238019726/
+/README.Purple///1238019726/
+/README.RPXClassic///1238019726/
+/README.RPXlite///1238019726/
+/README.SBC8560///1238019726/
+/README.SNTP///1238019726/
+/README.Sandpoint8240///1238019726/
+/README.TQM8260///1238019726/
+/README.VLAN///1238019726/
+/README.adnpesc1///1238019725/
+/README.adnpesc1_base32///1238019725/
+/README.alaska8220///1238019725/
+/README.amigaone///1238019725/
+/README.at91///1238019725/
+/README.atum8548///1238019725/
+/README.autoboot///1238019725/
+/README.bamboo///1238019725/
+/README.bedbug///1238019725/
+/README.blackfin///1238019725/
+/README.cmi///1238019725/
+/README.commands///1238019725/
+/README.commands.itest///1238019725/
+/README.console///1238019725/
+/README.db64360///1238019725/
+/README.db64460///1238019725/
+/README.dk1c20///1238019725/
+/README.dk1c20_std32///1238019725/
+/README.dk1s10///1238019725/
+/README.dk1s10_mldk20///1238019725/
+/README.dk1s10_std32///1238019725/
+/README.dk1s40_std32///1238019725/
+/README.dk20k200_std32///1238019725/
+/README.ebony///1238019725/
+/README.evb64260///1238019725/
+/README.fads///1238019725/
+/README.fsl-ddr///1238019725/
+/README.generic_usb_ohci///1238019725/
+/README.idma2intr///1238019725/
+/README.imx31///1238019725/
+/README.iomux///1238019725/
+/README.kmeter1///1238019726/
+/README.korat///1238019726/
+/README.lynxkdi///1238019726/
+/README.m52277evb///1238019726/
+/README.m5253evbe///1238019726/
+/README.m53017evb///1238019726/
+/README.m5373evb///1238019726/
+/README.m54455evb///1238019726/
+/README.m5475evb///1238019726/
+/README.m68k///1238019726/
+/README.marubun-pcmcia///1238019726/
+/README.mips///1238019726/
+/README.ml300///1238019726/
+/README.modnet50///1238019726/
+/README.mpc5xx///1238019726/
+/README.mpc7448hpc2///1238019726/
+/README.mpc74xx///1238019726/
+/README.mpc8313erdb///1238019726/
+/README.mpc8315erdb///1238019726/
+/README.mpc8323erdb///1238019726/
+/README.mpc832xemds///1238019726/
+/README.mpc8349itx///1238019726/
+/README.mpc8360emds///1238019726/
+/README.mpc837xemds///1238019726/
+/README.mpc837xerdb///1238019726/
+/README.mpc83xx.ddrecc///1238019726/
+/README.mpc83xxads///1238019726/
+/README.mpc8544ds///1238019726/
+/README.mpc8572ds///1238019726/
+/README.mpc85xxads///1238019726/
+/README.mpc85xxcds///1238019726/
+/README.mpc8610hpcd///1238019726/
+/README.mpc8641hpcn///1238019726/
+/README.mvbc_p///1238019726/
+/README.mvblm7///1238019726/
+/README.nand///1238019726/
+/README.nand-boot-ppc440///1238019726/
+/README.ne2000///1238019726/
+/README.nios///1238019726/
+/README.nios_CONFIG_SYS_NIOS_CPU///1238019726/
+/README.nios_DK///1238019726/
+/README.nmdk8815///1238019726/
+/README.ns9750dev///1238019726/
+/README.ocotea///1238019726/
+/README.ocotea-PIBS-to-U-Boot///1238019726/
+/README.omap3///1238019726/
+/README.omap730p2///1238019726/
+/README.ppc440///1238019726/
+/README.qemu_mips///1238019726/
+/README.sata///1238019726/
+/README.sbc8349///1238019726/
+/README.sbc8548///1238019726/
+/README.sbc8641d///1238019726/
+/README.sched///1238019726/
+/README.serial_multi///1238019726/
+/README.sh///1238019726/
+/README.sh7785lcr///1238019726/
+/README.sha1///1238019726/
+/README.silent///1238019726/
+/README.simpc8313///1238019726/
+/README.standalone///1238019726/
+/README.stxxtc///1238019726/
+/README.update///1238019726/
+/README.usb///1238019726/
+/README.video///1238019726/
+/README.xpedite1k///1238019726/
+/README.zeus///1238019726/
+/TODO-i386///1238019726/
+/feature-removal-schedule.txt///1238019725/
+D/uImage.FIT////
diff -Naur u-boot-2009.03_orig/doc/CVS/Entries.Old u-boot-2009.03/doc/CVS/Entries.Old
--- u-boot-2009.03_orig/doc/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/doc/CVS/Entries.Old  2009-03-25 15:25:26.000000000 -0700
@@ -0,0 +1,135 @@
+/I2C_Edge_Conditions/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/README-i386/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/README-integrator/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/README.440-DDR-performance/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/README.AMCC-eval-boards-cleanup/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/README.ARM-SoC/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/README.ARM-memory-map/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/README.AVR32/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/README.COBRA5272/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/README.EVB-64260-750CX/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/README.INCA-IP/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/README.IPHASE4539/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/README.IceCube/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/README.JFFS2/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/README.JFFS2_NAND/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/README.Lite5200B_low_power/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.MBX/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.MPC866/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.Modem/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.NetConsole/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.OFT/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.OXC/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.PIP405/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.POST/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.PXA_CF/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.PlanetCore/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.Purple/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.RPXClassic/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.RPXlite/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.SBC8560/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.SNTP/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.Sandpoint8240/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.TQM8260/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.VLAN/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.adnpesc1/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/README.adnpesc1_base32/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/README.alaska8220/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/README.amigaone/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/README.at91/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/README.atum8548/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/README.autoboot/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/README.bamboo/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/README.bedbug/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/README.blackfin/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/README.cmi/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/README.commands/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/README.commands.itest/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/README.console/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/README.db64360/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/README.db64460/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/README.dk1c20/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/README.dk1c20_std32/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/README.dk1s10/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/README.dk1s10_mldk20/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/README.dk1s10_std32/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/README.dk1s40_std32/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/README.dk20k200_std32/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/README.ebony/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/README.evb64260/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/README.fads/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/README.fsl-ddr/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/README.generic_usb_ohci/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/README.idma2intr/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/README.imx31/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/README.iomux/1.1.1.1/Wed Mar 25 22:22:05 2009//
+/README.kmeter1/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.korat/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.lynxkdi/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.m52277evb/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.m5253evbe/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.m53017evb/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.m5373evb/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.m54455evb/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.m5475evb/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.m68k/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.marubun-pcmcia/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.mips/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.ml300/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.modnet50/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.mpc5xx/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.mpc7448hpc2/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.mpc74xx/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.mpc8313erdb/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.mpc8315erdb/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.mpc8323erdb/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.mpc832xemds/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.mpc8349itx/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.mpc8360emds/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.mpc837xemds/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.mpc837xerdb/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.mpc83xx.ddrecc/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.mpc83xxads/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.mpc8544ds/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.mpc8572ds/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.mpc85xxads/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.mpc85xxcds/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.mpc8610hpcd/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.mpc8641hpcn/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.mvbc_p/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.mvblm7/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.nand/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.nand-boot-ppc440/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.ne2000/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.nios/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.nios_CONFIG_SYS_NIOS_CPU/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.nios_DK/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.nmdk8815/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.ns9750dev/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.ocotea/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.ocotea-PIBS-to-U-Boot/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.omap3/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.omap730p2/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.ppc440/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.qemu_mips/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.sata/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.sbc8349/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.sbc8548/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.sbc8641d/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.sched/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.serial_multi/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.sh/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.sh7785lcr/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.sha1/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.silent/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.simpc8313/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.standalone/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.stxxtc/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.update/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.usb/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.video/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.xpedite1k/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/README.zeus/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/TODO-i386/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/feature-removal-schedule.txt/1.1.1.1/Wed Mar 25 22:22:05 2009//
+D/uImage.FIT////
diff -Naur u-boot-2009.03_orig/doc/CVS/Repository u-boot-2009.03/doc/CVS/Repository
--- u-boot-2009.03_orig/doc/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/doc/CVS/Repository   2009-03-25 15:25:24.853034200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/doc
diff -Naur u-boot-2009.03_orig/doc/CVS/Root u-boot-2009.03/doc/CVS/Root
--- u-boot-2009.03_orig/doc/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/doc/CVS/Root 2009-03-25 15:25:24.853034200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/doc/uImage.FIT/CVS/Entries u-boot-2009.03/doc/uImage.FIT/CVS/Entries
--- u-boot-2009.03_orig/doc/uImage.FIT/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/doc/uImage.FIT/CVS/Entries   2009-03-25 15:58:00.371768800 -0700
@@ -0,0 +1,9 @@
+/command_syntax_extensions.txt/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/howto.txt/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/kernel.its/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/kernel_fdt.its/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/multi.its/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/source_file_format.txt/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/update3.its/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/update_uboot.its/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/doc/uImage.FIT/CVS/Entries.Extra u-boot-2009.03/doc/uImage.FIT/CVS/Entries.Extra
--- u-boot-2009.03_orig/doc/uImage.FIT/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/doc/uImage.FIT/CVS/Entries.Extra     2009-03-25 15:58:00.371768800 -0700
@@ -0,0 +1,8 @@
+/command_syntax_extensions.txt///1238019726/
+/howto.txt///1238019726/
+/kernel.its///1238019726/
+/kernel_fdt.its///1238019726/
+/multi.its///1238019726/
+/source_file_format.txt///1238019726/
+/update3.its///1238019726/
+/update_uboot.its///1238019726/
diff -Naur u-boot-2009.03_orig/doc/uImage.FIT/CVS/Entries.Extra.Old u-boot-2009.03/doc/uImage.FIT/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/doc/uImage.FIT/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/doc/uImage.FIT/CVS/Entries.Extra.Old 2009-03-25 15:25:26.000000000 -0700
@@ -0,0 +1,8 @@
+/command_syntax_extensions.txt///1238019726/
+/howto.txt///1238019726/
+/kernel.its///1238019726/
+/kernel_fdt.its///1238019726/
+/multi.its///1238019726/
+/source_file_format.txt///1238019726/
+/update3.its///1238019726/
+/update_uboot.its///1238019726/
diff -Naur u-boot-2009.03_orig/doc/uImage.FIT/CVS/Entries.Old u-boot-2009.03/doc/uImage.FIT/CVS/Entries.Old
--- u-boot-2009.03_orig/doc/uImage.FIT/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/doc/uImage.FIT/CVS/Entries.Old       2009-03-25 15:25:26.000000000 -0700
@@ -0,0 +1,9 @@
+/command_syntax_extensions.txt/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/howto.txt/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/kernel.its/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/kernel_fdt.its/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/multi.its/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/source_file_format.txt/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/update3.its/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/update_uboot.its/1.1.1.1/Wed Mar 25 22:22:06 2009//
+D
diff -Naur u-boot-2009.03_orig/doc/uImage.FIT/CVS/Repository u-boot-2009.03/doc/uImage.FIT/CVS/Repository
--- u-boot-2009.03_orig/doc/uImage.FIT/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/doc/uImage.FIT/CVS/Repository        2009-03-25 15:25:26.149900900 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/doc/uImage.FIT
diff -Naur u-boot-2009.03_orig/doc/uImage.FIT/CVS/Root u-boot-2009.03/doc/uImage.FIT/CVS/Root
--- u-boot-2009.03_orig/doc/uImage.FIT/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/doc/uImage.FIT/CVS/Root      2009-03-25 15:25:26.149900900 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/drivers/CVS/Entries u-boot-2009.03/drivers/CVS/Entries
--- u-boot-2009.03_orig/drivers/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/CVS/Entries  2009-03-25 15:25:33.852976600 -0700
@@ -0,0 +1,20 @@
+D/bios_emulator////
+D/block////
+D/dma////
+D/fpga////
+D/gpio////
+D/hwmon////
+D/i2c////
+D/input////
+D/misc////
+D/mmc////
+D/mtd////
+D/net////
+D/pci////
+D/pcmcia////
+D/qe////
+D/rtc////
+D/serial////
+D/spi////
+D/usb////
+D/video////
diff -Naur u-boot-2009.03_orig/drivers/CVS/Entries.Extra u-boot-2009.03/drivers/CVS/Entries.Extra
--- u-boot-2009.03_orig/drivers/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/CVS/Entries.Extra    2009-03-25 15:25:33.868601500 -0700
@@ -0,0 +1,20 @@
+D/bios_emulator////
+D/block////
+D/dma////
+D/fpga////
+D/gpio////
+D/hwmon////
+D/i2c////
+D/input////
+D/misc////
+D/mmc////
+D/mtd////
+D/net////
+D/pci////
+D/pcmcia////
+D/qe////
+D/rtc////
+D/serial////
+D/spi////
+D/usb////
+D/video////
diff -Naur u-boot-2009.03_orig/drivers/CVS/Repository u-boot-2009.03/drivers/CVS/Repository
--- u-boot-2009.03_orig/drivers/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/CVS/Repository       2009-03-25 15:25:26.618647900 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/drivers
diff -Naur u-boot-2009.03_orig/drivers/CVS/Root u-boot-2009.03/drivers/CVS/Root
--- u-boot-2009.03_orig/drivers/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/CVS/Root     2009-03-25 15:25:26.618647900 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/drivers/bios_emulator/CVS/Entries u-boot-2009.03/drivers/bios_emulator/CVS/Entries
--- u-boot-2009.03_orig/drivers/bios_emulator/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/bios_emulator/CVS/Entries    2009-03-25 15:58:00.809266000 -0700
@@ -0,0 +1,8 @@
+D/include////
+D/x86emu////
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/atibios.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/besys.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bios.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/biosemu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/biosemui.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
diff -Naur u-boot-2009.03_orig/drivers/bios_emulator/CVS/Entries.Extra u-boot-2009.03/drivers/bios_emulator/CVS/Entries.Extra
--- u-boot-2009.03_orig/drivers/bios_emulator/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/bios_emulator/CVS/Entries.Extra      2009-03-25 15:58:00.809266000 -0700
@@ -0,0 +1,8 @@
+D/include////
+D/x86emu////
+/Makefile///1238019726/
+/atibios.c///1238019726/
+/besys.c///1238019726/
+/bios.c///1238019726/
+/biosemu.c///1238019726/
+/biosemui.h///1238019726/
diff -Naur u-boot-2009.03_orig/drivers/bios_emulator/CVS/Entries.Extra.Old u-boot-2009.03/drivers/bios_emulator/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/drivers/bios_emulator/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/bios_emulator/CVS/Entries.Extra.Old  2009-03-25 15:25:27.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019726/
+/atibios.c///1238019726/
+/besys.c///1238019726/
+/bios.c///1238019726/
+/biosemu.c///1238019726/
+/biosemui.h///1238019726/
+D/include////
+D/x86emu////
diff -Naur u-boot-2009.03_orig/drivers/bios_emulator/CVS/Entries.Old u-boot-2009.03/drivers/bios_emulator/CVS/Entries.Old
--- u-boot-2009.03_orig/drivers/bios_emulator/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/bios_emulator/CVS/Entries.Old        2009-03-25 15:25:27.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/atibios.c/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/besys.c/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/bios.c/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/biosemu.c/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/biosemui.h/1.1.1.1/Wed Mar 25 22:22:06 2009//
+D/include////
+D/x86emu////
diff -Naur u-boot-2009.03_orig/drivers/bios_emulator/CVS/Repository u-boot-2009.03/drivers/bios_emulator/CVS/Repository
--- u-boot-2009.03_orig/drivers/bios_emulator/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/bios_emulator/CVS/Repository 2009-03-25 15:25:26.696772400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/drivers/bios_emulator
diff -Naur u-boot-2009.03_orig/drivers/bios_emulator/CVS/Root u-boot-2009.03/drivers/bios_emulator/CVS/Root
--- u-boot-2009.03_orig/drivers/bios_emulator/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/bios_emulator/CVS/Root       2009-03-25 15:25:26.696772400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/drivers/bios_emulator/include/CVS/Entries u-boot-2009.03/drivers/bios_emulator/include/CVS/Entries
--- u-boot-2009.03_orig/drivers/bios_emulator/include/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/bios_emulator/include/CVS/Entries    2009-03-25 15:58:00.653017000 -0700
@@ -0,0 +1,3 @@
+D/x86emu////
+/biosemu.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/x86emu.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
diff -Naur u-boot-2009.03_orig/drivers/bios_emulator/include/CVS/Entries.Extra u-boot-2009.03/drivers/bios_emulator/include/CVS/Entries.Extra
--- u-boot-2009.03_orig/drivers/bios_emulator/include/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/bios_emulator/include/CVS/Entries.Extra      2009-03-25 15:58:00.653017000 -0700
@@ -0,0 +1,3 @@
+D/x86emu////
+/biosemu.h///1238019726/
+/x86emu.h///1238019726/
diff -Naur u-boot-2009.03_orig/drivers/bios_emulator/include/CVS/Entries.Extra.Old u-boot-2009.03/drivers/bios_emulator/include/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/drivers/bios_emulator/include/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/bios_emulator/include/CVS/Entries.Extra.Old  2009-03-25 15:25:27.000000000 -0700
@@ -0,0 +1,3 @@
+/biosemu.h///1238019726/
+/x86emu.h///1238019726/
+D/x86emu////
diff -Naur u-boot-2009.03_orig/drivers/bios_emulator/include/CVS/Entries.Old u-boot-2009.03/drivers/bios_emulator/include/CVS/Entries.Old
--- u-boot-2009.03_orig/drivers/bios_emulator/include/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/bios_emulator/include/CVS/Entries.Old        2009-03-25 15:25:27.000000000 -0700
@@ -0,0 +1,3 @@
+/biosemu.h/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/x86emu.h/1.1.1.1/Wed Mar 25 22:22:06 2009//
+D/x86emu////
diff -Naur u-boot-2009.03_orig/drivers/bios_emulator/include/CVS/Repository u-boot-2009.03/drivers/bios_emulator/include/CVS/Repository
--- u-boot-2009.03_orig/drivers/bios_emulator/include/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/bios_emulator/include/CVS/Repository 2009-03-25 15:25:26.853021400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/drivers/bios_emulator/include
diff -Naur u-boot-2009.03_orig/drivers/bios_emulator/include/CVS/Root u-boot-2009.03/drivers/bios_emulator/include/CVS/Root
--- u-boot-2009.03_orig/drivers/bios_emulator/include/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/bios_emulator/include/CVS/Root       2009-03-25 15:25:26.853021400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/drivers/bios_emulator/include/x86emu/CVS/Entries u-boot-2009.03/drivers/bios_emulator/include/x86emu/CVS/Entries
--- u-boot-2009.03_orig/drivers/bios_emulator/include/x86emu/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/bios_emulator/include/x86emu/CVS/Entries     2009-03-25 15:58:00.590517400 -0700
@@ -0,0 +1,8 @@
+/debug.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/decode.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ops.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/prim_asm.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/prim_ops.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/regs.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/x86emui.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/drivers/bios_emulator/include/x86emu/CVS/Entries.Extra u-boot-2009.03/drivers/bios_emulator/include/x86emu/CVS/Entries.Extra
--- u-boot-2009.03_orig/drivers/bios_emulator/include/x86emu/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/bios_emulator/include/x86emu/CVS/Entries.Extra       2009-03-25 15:58:00.590517400 -0700
@@ -0,0 +1,7 @@
+/debug.h///1238019726/
+/decode.h///1238019726/
+/ops.h///1238019726/
+/prim_asm.h///1238019726/
+/prim_ops.h///1238019726/
+/regs.h///1238019726/
+/x86emui.h///1238019726/
diff -Naur u-boot-2009.03_orig/drivers/bios_emulator/include/x86emu/CVS/Entries.Extra.Old u-boot-2009.03/drivers/bios_emulator/include/x86emu/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/drivers/bios_emulator/include/x86emu/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/bios_emulator/include/x86emu/CVS/Entries.Extra.Old   2009-03-25 15:25:27.000000000 -0700
@@ -0,0 +1,7 @@
+/debug.h///1238019726/
+/decode.h///1238019726/
+/ops.h///1238019726/
+/prim_asm.h///1238019726/
+/prim_ops.h///1238019726/
+/regs.h///1238019726/
+/x86emui.h///1238019726/
diff -Naur u-boot-2009.03_orig/drivers/bios_emulator/include/x86emu/CVS/Entries.Old u-boot-2009.03/drivers/bios_emulator/include/x86emu/CVS/Entries.Old
--- u-boot-2009.03_orig/drivers/bios_emulator/include/x86emu/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/bios_emulator/include/x86emu/CVS/Entries.Old 2009-03-25 15:25:27.000000000 -0700
@@ -0,0 +1,8 @@
+/debug.h/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/decode.h/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/ops.h/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/prim_asm.h/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/prim_ops.h/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/regs.h/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/x86emui.h/1.1.1.1/Wed Mar 25 22:22:06 2009//
+D
diff -Naur u-boot-2009.03_orig/drivers/bios_emulator/include/x86emu/CVS/Repository u-boot-2009.03/drivers/bios_emulator/include/x86emu/CVS/Repository
--- u-boot-2009.03_orig/drivers/bios_emulator/include/x86emu/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/bios_emulator/include/x86emu/CVS/Repository  2009-03-25 15:25:26.931145900 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/drivers/bios_emulator/include/x86emu
diff -Naur u-boot-2009.03_orig/drivers/bios_emulator/include/x86emu/CVS/Root u-boot-2009.03/drivers/bios_emulator/include/x86emu/CVS/Root
--- u-boot-2009.03_orig/drivers/bios_emulator/include/x86emu/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/bios_emulator/include/x86emu/CVS/Root        2009-03-25 15:25:26.915521000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/drivers/bios_emulator/x86emu/CVS/Entries u-boot-2009.03/drivers/bios_emulator/x86emu/CVS/Entries
--- u-boot-2009.03_orig/drivers/bios_emulator/x86emu/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/bios_emulator/x86emu/CVS/Entries     2009-03-25 15:58:00.746766400 -0700
@@ -0,0 +1,7 @@
+/debug.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/decode.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ops.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ops2.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/prim_ops.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sys.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/drivers/bios_emulator/x86emu/CVS/Entries.Extra u-boot-2009.03/drivers/bios_emulator/x86emu/CVS/Entries.Extra
--- u-boot-2009.03_orig/drivers/bios_emulator/x86emu/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/bios_emulator/x86emu/CVS/Entries.Extra       2009-03-25 15:58:00.746766400 -0700
@@ -0,0 +1,6 @@
+/debug.c///1238019726/
+/decode.c///1238019726/
+/ops.c///1238019727/
+/ops2.c///1238019727/
+/prim_ops.c///1238019727/
+/sys.c///1238019727/
diff -Naur u-boot-2009.03_orig/drivers/bios_emulator/x86emu/CVS/Entries.Extra.Old u-boot-2009.03/drivers/bios_emulator/x86emu/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/drivers/bios_emulator/x86emu/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/bios_emulator/x86emu/CVS/Entries.Extra.Old   2009-03-25 15:25:27.000000000 -0700
@@ -0,0 +1,6 @@
+/debug.c///1238019726/
+/decode.c///1238019726/
+/ops.c///1238019727/
+/ops2.c///1238019727/
+/prim_ops.c///1238019727/
+/sys.c///1238019727/
diff -Naur u-boot-2009.03_orig/drivers/bios_emulator/x86emu/CVS/Entries.Old u-boot-2009.03/drivers/bios_emulator/x86emu/CVS/Entries.Old
--- u-boot-2009.03_orig/drivers/bios_emulator/x86emu/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/bios_emulator/x86emu/CVS/Entries.Old 2009-03-25 15:25:27.000000000 -0700
@@ -0,0 +1,7 @@
+/debug.c/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/decode.c/1.1.1.1/Wed Mar 25 22:22:06 2009//
+/ops.c/1.1.1.1/Wed Mar 25 22:22:07 2009//
+/ops2.c/1.1.1.1/Wed Mar 25 22:22:07 2009//
+/prim_ops.c/1.1.1.1/Wed Mar 25 22:22:07 2009//
+/sys.c/1.1.1.1/Wed Mar 25 22:22:07 2009//
+D
diff -Naur u-boot-2009.03_orig/drivers/bios_emulator/x86emu/CVS/Repository u-boot-2009.03/drivers/bios_emulator/x86emu/CVS/Repository
--- u-boot-2009.03_orig/drivers/bios_emulator/x86emu/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/bios_emulator/x86emu/CVS/Repository  2009-03-25 15:25:27.134269600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/drivers/bios_emulator/x86emu
diff -Naur u-boot-2009.03_orig/drivers/bios_emulator/x86emu/CVS/Root u-boot-2009.03/drivers/bios_emulator/x86emu/CVS/Root
--- u-boot-2009.03_orig/drivers/bios_emulator/x86emu/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/bios_emulator/x86emu/CVS/Root        2009-03-25 15:25:27.118644700 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/drivers/block/CVS/Entries u-boot-2009.03/drivers/block/CVS/Entries
--- u-boot-2009.03_orig/drivers/block/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/block/CVS/Entries    2009-03-25 15:58:00.918640300 -0700
@@ -0,0 +1,15 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ahci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ata_piix.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ata_piix.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fsl_sata.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fsl_sata.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/libata.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pata_bfin.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pata_bfin.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sata_sil3114.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sata_sil3114.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sil680.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sym53c8xx.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/systemace.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/drivers/block/CVS/Entries.Extra u-boot-2009.03/drivers/block/CVS/Entries.Extra
--- u-boot-2009.03_orig/drivers/block/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/block/CVS/Entries.Extra      2009-03-25 15:58:00.918640300 -0700
@@ -0,0 +1,14 @@
+/Makefile///1238019727/
+/ahci.c///1238019727/
+/ata_piix.c///1238019727/
+/ata_piix.h///1238019727/
+/fsl_sata.c///1238019727/
+/fsl_sata.h///1238019727/
+/libata.c///1238019727/
+/pata_bfin.c///1238019727/
+/pata_bfin.h///1238019727/
+/sata_sil3114.c///1238019727/
+/sata_sil3114.h///1238019727/
+/sil680.c///1238019727/
+/sym53c8xx.c///1238019727/
+/systemace.c///1238019727/
diff -Naur u-boot-2009.03_orig/drivers/block/CVS/Entries.Extra.Old u-boot-2009.03/drivers/block/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/drivers/block/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/block/CVS/Entries.Extra.Old  2009-03-25 15:25:27.000000000 -0700
@@ -0,0 +1,14 @@
+/Makefile///1238019727/
+/ahci.c///1238019727/
+/ata_piix.c///1238019727/
+/ata_piix.h///1238019727/
+/fsl_sata.c///1238019727/
+/fsl_sata.h///1238019727/
+/libata.c///1238019727/
+/pata_bfin.c///1238019727/
+/pata_bfin.h///1238019727/
+/sata_sil3114.c///1238019727/
+/sata_sil3114.h///1238019727/
+/sil680.c///1238019727/
+/sym53c8xx.c///1238019727/
+/systemace.c///1238019727/
diff -Naur u-boot-2009.03_orig/drivers/block/CVS/Entries.Old u-boot-2009.03/drivers/block/CVS/Entries.Old
--- u-boot-2009.03_orig/drivers/block/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/block/CVS/Entries.Old        2009-03-25 15:25:27.000000000 -0700
@@ -0,0 +1,15 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:07 2009//
+/ahci.c/1.1.1.1/Wed Mar 25 22:22:07 2009//
+/ata_piix.c/1.1.1.1/Wed Mar 25 22:22:07 2009//
+/ata_piix.h/1.1.1.1/Wed Mar 25 22:22:07 2009//
+/fsl_sata.c/1.1.1.1/Wed Mar 25 22:22:07 2009//
+/fsl_sata.h/1.1.1.1/Wed Mar 25 22:22:07 2009//
+/libata.c/1.1.1.1/Wed Mar 25 22:22:07 2009//
+/pata_bfin.c/1.1.1.1/Wed Mar 25 22:22:07 2009//
+/pata_bfin.h/1.1.1.1/Wed Mar 25 22:22:07 2009//
+/sata_sil3114.c/1.1.1.1/Wed Mar 25 22:22:07 2009//
+/sata_sil3114.h/1.1.1.1/Wed Mar 25 22:22:07 2009//
+/sil680.c/1.1.1.1/Wed Mar 25 22:22:07 2009//
+/sym53c8xx.c/1.1.1.1/Wed Mar 25 22:22:07 2009//
+/systemace.c/1.1.1.1/Wed Mar 25 22:22:07 2009//
+D
diff -Naur u-boot-2009.03_orig/drivers/block/CVS/Repository u-boot-2009.03/drivers/block/CVS/Repository
--- u-boot-2009.03_orig/drivers/block/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/block/CVS/Repository 2009-03-25 15:25:27.306143500 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/drivers/block
diff -Naur u-boot-2009.03_orig/drivers/block/CVS/Root u-boot-2009.03/drivers/block/CVS/Root
--- u-boot-2009.03_orig/drivers/block/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/block/CVS/Root       2009-03-25 15:25:27.306143500 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/drivers/dma/CVS/Entries u-boot-2009.03/drivers/dma/CVS/Entries
--- u-boot-2009.03_orig/drivers/dma/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/dma/CVS/Entries      2009-03-25 15:58:00.996764800 -0700
@@ -0,0 +1,5 @@
+/MCD_dmaApi.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MCD_tasks.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MCD_tasksInit.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/drivers/dma/CVS/Entries.Extra u-boot-2009.03/drivers/dma/CVS/Entries.Extra
--- u-boot-2009.03_orig/drivers/dma/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/dma/CVS/Entries.Extra        2009-03-25 15:58:01.012389700 -0700
@@ -0,0 +1,4 @@
+/MCD_dmaApi.c///1238019727/
+/MCD_tasks.c///1238019727/
+/MCD_tasksInit.c///1238019727/
+/Makefile///1238019727/
diff -Naur u-boot-2009.03_orig/drivers/dma/CVS/Entries.Extra.Old u-boot-2009.03/drivers/dma/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/drivers/dma/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/dma/CVS/Entries.Extra.Old    2009-03-25 15:25:27.000000000 -0700
@@ -0,0 +1,4 @@
+/MCD_dmaApi.c///1238019727/
+/MCD_tasks.c///1238019727/
+/MCD_tasksInit.c///1238019727/
+/Makefile///1238019727/
diff -Naur u-boot-2009.03_orig/drivers/dma/CVS/Entries.Old u-boot-2009.03/drivers/dma/CVS/Entries.Old
--- u-boot-2009.03_orig/drivers/dma/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/dma/CVS/Entries.Old  2009-03-25 15:25:27.000000000 -0700
@@ -0,0 +1,5 @@
+/MCD_dmaApi.c/1.1.1.1/Wed Mar 25 22:22:07 2009//
+/MCD_tasks.c/1.1.1.1/Wed Mar 25 22:22:07 2009//
+/MCD_tasksInit.c/1.1.1.1/Wed Mar 25 22:22:07 2009//
+/Makefile/1.1.1.1/Wed Mar 25 22:22:07 2009//
+D
diff -Naur u-boot-2009.03_orig/drivers/dma/CVS/Repository u-boot-2009.03/drivers/dma/CVS/Repository
--- u-boot-2009.03_orig/drivers/dma/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/dma/CVS/Repository   2009-03-25 15:25:27.634266400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/drivers/dma
diff -Naur u-boot-2009.03_orig/drivers/dma/CVS/Root u-boot-2009.03/drivers/dma/CVS/Root
--- u-boot-2009.03_orig/drivers/dma/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/dma/CVS/Root 2009-03-25 15:25:27.634266400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/drivers/fpga/CVS/Entries u-boot-2009.03/drivers/fpga/CVS/Entries
--- u-boot-2009.03_orig/drivers/fpga/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/fpga/CVS/Entries     2009-03-25 15:58:01.199888500 -0700
@@ -0,0 +1,11 @@
+/ACEX1K.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/altera.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cyclon2.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fpga.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/spartan2.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/spartan3.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/stratixII.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/virtex2.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xilinx.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/drivers/fpga/CVS/Entries.Extra u-boot-2009.03/drivers/fpga/CVS/Entries.Extra
--- u-boot-2009.03_orig/drivers/fpga/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/fpga/CVS/Entries.Extra       2009-03-25 15:58:01.199888500 -0700
@@ -0,0 +1,10 @@
+/ACEX1K.c///1238019727/
+/Makefile///1238019727/
+/altera.c///1238019727/
+/cyclon2.c///1238019727/
+/fpga.c///1238019727/
+/spartan2.c///1238019727/
+/spartan3.c///1238019727/
+/stratixII.c///1238019727/
+/virtex2.c///1238019727/
+/xilinx.c///1238019727/
diff -Naur u-boot-2009.03_orig/drivers/fpga/CVS/Entries.Extra.Old u-boot-2009.03/drivers/fpga/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/drivers/fpga/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/fpga/CVS/Entries.Extra.Old   2009-03-25 15:25:27.000000000 -0700
@@ -0,0 +1,10 @@
+/ACEX1K.c///1238019727/
+/Makefile///1238019727/
+/altera.c///1238019727/
+/cyclon2.c///1238019727/
+/fpga.c///1238019727/
+/spartan2.c///1238019727/
+/spartan3.c///1238019727/
+/stratixII.c///1238019727/
+/virtex2.c///1238019727/
+/xilinx.c///1238019727/
diff -Naur u-boot-2009.03_orig/drivers/fpga/CVS/Entries.Old u-boot-2009.03/drivers/fpga/CVS/Entries.Old
--- u-boot-2009.03_orig/drivers/fpga/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/fpga/CVS/Entries.Old 2009-03-25 15:25:27.000000000 -0700
@@ -0,0 +1,11 @@
+/ACEX1K.c/1.1.1.1/Wed Mar 25 22:22:07 2009//
+/Makefile/1.1.1.1/Wed Mar 25 22:22:07 2009//
+/altera.c/1.1.1.1/Wed Mar 25 22:22:07 2009//
+/cyclon2.c/1.1.1.1/Wed Mar 25 22:22:07 2009//
+/fpga.c/1.1.1.1/Wed Mar 25 22:22:07 2009//
+/spartan2.c/1.1.1.1/Wed Mar 25 22:22:07 2009//
+/spartan3.c/1.1.1.1/Wed Mar 25 22:22:07 2009//
+/stratixII.c/1.1.1.1/Wed Mar 25 22:22:07 2009//
+/virtex2.c/1.1.1.1/Wed Mar 25 22:22:07 2009//
+/xilinx.c/1.1.1.1/Wed Mar 25 22:22:07 2009//
+D
diff -Naur u-boot-2009.03_orig/drivers/fpga/CVS/Repository u-boot-2009.03/drivers/fpga/CVS/Repository
--- u-boot-2009.03_orig/drivers/fpga/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/fpga/CVS/Repository  2009-03-25 15:25:27.759265600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/drivers/fpga
diff -Naur u-boot-2009.03_orig/drivers/fpga/CVS/Root u-boot-2009.03/drivers/fpga/CVS/Root
--- u-boot-2009.03_orig/drivers/fpga/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/fpga/CVS/Root        2009-03-25 15:25:27.743640700 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/drivers/gpio/CVS/Entries u-boot-2009.03/drivers/gpio/CVS/Entries
--- u-boot-2009.03_orig/drivers/gpio/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/gpio/CVS/Entries     2009-03-25 15:58:01.278013000 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mx31_gpio.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pca953x.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/drivers/gpio/CVS/Entries.Extra u-boot-2009.03/drivers/gpio/CVS/Entries.Extra
--- u-boot-2009.03_orig/drivers/gpio/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/gpio/CVS/Entries.Extra       2009-03-25 15:58:01.278013000 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019727/
+/mx31_gpio.c///1238019727/
+/pca953x.c///1238019727/
diff -Naur u-boot-2009.03_orig/drivers/gpio/CVS/Entries.Extra.Old u-boot-2009.03/drivers/gpio/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/drivers/gpio/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/gpio/CVS/Entries.Extra.Old   2009-03-25 15:25:27.000000000 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019727/
+/mx31_gpio.c///1238019727/
+/pca953x.c///1238019727/
diff -Naur u-boot-2009.03_orig/drivers/gpio/CVS/Entries.Old u-boot-2009.03/drivers/gpio/CVS/Entries.Old
--- u-boot-2009.03_orig/drivers/gpio/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/gpio/CVS/Entries.Old 2009-03-25 15:25:27.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:07 2009//
+/mx31_gpio.c/1.1.1.1/Wed Mar 25 22:22:07 2009//
+/pca953x.c/1.1.1.1/Wed Mar 25 22:22:07 2009//
+D
diff -Naur u-boot-2009.03_orig/drivers/gpio/CVS/Repository u-boot-2009.03/drivers/gpio/CVS/Repository
--- u-boot-2009.03_orig/drivers/gpio/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/gpio/CVS/Repository  2009-03-25 15:25:27.946764400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/drivers/gpio
diff -Naur u-boot-2009.03_orig/drivers/gpio/CVS/Root u-boot-2009.03/drivers/gpio/CVS/Root
--- u-boot-2009.03_orig/drivers/gpio/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/gpio/CVS/Root        2009-03-25 15:25:27.931139500 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/drivers/hwmon/CVS/Entries u-boot-2009.03/drivers/hwmon/CVS/Entries
--- u-boot-2009.03_orig/drivers/hwmon/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/hwmon/CVS/Entries    2009-03-25 15:58:01.356137500 -0700
@@ -0,0 +1,11 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/adm1021.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/adt7460.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ds1621.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ds1722.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ds1775.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lm63.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lm73.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lm75.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lm81.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/drivers/hwmon/CVS/Entries.Extra u-boot-2009.03/drivers/hwmon/CVS/Entries.Extra
--- u-boot-2009.03_orig/drivers/hwmon/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/hwmon/CVS/Entries.Extra      2009-03-25 15:58:01.356137500 -0700
@@ -0,0 +1,10 @@
+/Makefile///1238019727/
+/adm1021.c///1238019727/
+/adt7460.c///1238019727/
+/ds1621.c///1238019727/
+/ds1722.c///1238019727/
+/ds1775.c///1238019727/
+/lm63.c///1238019727/
+/lm73.c///1238019727/
+/lm75.c///1238019727/
+/lm81.c///1238019727/
diff -Naur u-boot-2009.03_orig/drivers/hwmon/CVS/Entries.Extra.Old u-boot-2009.03/drivers/hwmon/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/drivers/hwmon/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/hwmon/CVS/Entries.Extra.Old  2009-03-25 15:25:28.000000000 -0700
@@ -0,0 +1,10 @@
+/Makefile///1238019727/
+/adm1021.c///1238019727/
+/adt7460.c///1238019727/
+/ds1621.c///1238019727/
+/ds1722.c///1238019727/
+/ds1775.c///1238019727/
+/lm63.c///1238019727/
+/lm73.c///1238019727/
+/lm75.c///1238019727/
+/lm81.c///1238019727/
diff -Naur u-boot-2009.03_orig/drivers/hwmon/CVS/Entries.Old u-boot-2009.03/drivers/hwmon/CVS/Entries.Old
--- u-boot-2009.03_orig/drivers/hwmon/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/hwmon/CVS/Entries.Old        2009-03-25 15:25:28.000000000 -0700
@@ -0,0 +1,11 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:07 2009//
+/adm1021.c/1.1.1.1/Wed Mar 25 22:22:07 2009//
+/adt7460.c/1.1.1.1/Wed Mar 25 22:22:07 2009//
+/ds1621.c/1.1.1.1/Wed Mar 25 22:22:07 2009//
+/ds1722.c/1.1.1.1/Wed Mar 25 22:22:07 2009//
+/ds1775.c/1.1.1.1/Wed Mar 25 22:22:07 2009//
+/lm63.c/1.1.1.1/Wed Mar 25 22:22:07 2009//
+/lm73.c/1.1.1.1/Wed Mar 25 22:22:07 2009//
+/lm75.c/1.1.1.1/Wed Mar 25 22:22:07 2009//
+/lm81.c/1.1.1.1/Wed Mar 25 22:22:07 2009//
+D
diff -Naur u-boot-2009.03_orig/drivers/hwmon/CVS/Repository u-boot-2009.03/drivers/hwmon/CVS/Repository
--- u-boot-2009.03_orig/drivers/hwmon/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/hwmon/CVS/Repository 2009-03-25 15:25:28.056138700 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/drivers/hwmon
diff -Naur u-boot-2009.03_orig/drivers/hwmon/CVS/Root u-boot-2009.03/drivers/hwmon/CVS/Root
--- u-boot-2009.03_orig/drivers/hwmon/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/hwmon/CVS/Root       2009-03-25 15:25:28.040513800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/drivers/i2c/CVS/Entries u-boot-2009.03/drivers/i2c/CVS/Entries
--- u-boot-2009.03_orig/drivers/i2c/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/i2c/CVS/Entries      2009-03-25 15:58:01.434262000 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bfin-twi_i2c.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fsl_i2c.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mxc_i2c.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/omap1510_i2c.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/omap24xx_i2c.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/soft_i2c.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tsi108_i2c.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/drivers/i2c/CVS/Entries.Extra u-boot-2009.03/drivers/i2c/CVS/Entries.Extra
--- u-boot-2009.03_orig/drivers/i2c/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/i2c/CVS/Entries.Extra        2009-03-25 15:58:01.449886900 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019727/
+/bfin-twi_i2c.c///1238019727/
+/fsl_i2c.c///1238019727/
+/mxc_i2c.c///1238019727/
+/omap1510_i2c.c///1238019727/
+/omap24xx_i2c.c///1238019727/
+/soft_i2c.c///1238019727/
+/tsi108_i2c.c///1238019727/
diff -Naur u-boot-2009.03_orig/drivers/i2c/CVS/Entries.Extra.Old u-boot-2009.03/drivers/i2c/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/drivers/i2c/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/i2c/CVS/Entries.Extra.Old    2009-03-25 15:25:28.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019727/
+/bfin-twi_i2c.c///1238019727/
+/fsl_i2c.c///1238019727/
+/mxc_i2c.c///1238019727/
+/omap1510_i2c.c///1238019727/
+/omap24xx_i2c.c///1238019727/
+/soft_i2c.c///1238019727/
+/tsi108_i2c.c///1238019727/
diff -Naur u-boot-2009.03_orig/drivers/i2c/CVS/Entries.Old u-boot-2009.03/drivers/i2c/CVS/Entries.Old
--- u-boot-2009.03_orig/drivers/i2c/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/i2c/CVS/Entries.Old  2009-03-25 15:25:28.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:07 2009//
+/bfin-twi_i2c.c/1.1.1.1/Wed Mar 25 22:22:07 2009//
+/fsl_i2c.c/1.1.1.1/Wed Mar 25 22:22:07 2009//
+/mxc_i2c.c/1.1.1.1/Wed Mar 25 22:22:07 2009//
+/omap1510_i2c.c/1.1.1.1/Wed Mar 25 22:22:07 2009//
+/omap24xx_i2c.c/1.1.1.1/Wed Mar 25 22:22:07 2009//
+/soft_i2c.c/1.1.1.1/Wed Mar 25 22:22:07 2009//
+/tsi108_i2c.c/1.1.1.1/Wed Mar 25 22:22:07 2009//
+D
diff -Naur u-boot-2009.03_orig/drivers/i2c/CVS/Repository u-boot-2009.03/drivers/i2c/CVS/Repository
--- u-boot-2009.03_orig/drivers/i2c/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/i2c/CVS/Repository   2009-03-25 15:25:28.196762800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/drivers/i2c
diff -Naur u-boot-2009.03_orig/drivers/i2c/CVS/Root u-boot-2009.03/drivers/i2c/CVS/Root
--- u-boot-2009.03_orig/drivers/i2c/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/i2c/CVS/Root 2009-03-25 15:25:28.196762800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/drivers/input/CVS/Entries u-boot-2009.03/drivers/input/CVS/Entries
--- u-boot-2009.03_orig/drivers/input/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/input/CVS/Entries    2009-03-25 15:58:01.512386500 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/i8042.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/keyboard.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pc_keyb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ps2mult.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ps2ser.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/drivers/input/CVS/Entries.Extra u-boot-2009.03/drivers/input/CVS/Entries.Extra
--- u-boot-2009.03_orig/drivers/input/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/input/CVS/Entries.Extra      2009-03-25 15:58:01.512386500 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019728/
+/i8042.c///1238019727/
+/keyboard.c///1238019728/
+/pc_keyb.c///1238019728/
+/ps2mult.c///1238019728/
+/ps2ser.c///1238019728/
diff -Naur u-boot-2009.03_orig/drivers/input/CVS/Entries.Extra.Old u-boot-2009.03/drivers/input/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/drivers/input/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/input/CVS/Entries.Extra.Old  2009-03-25 15:25:28.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019728/
+/i8042.c///1238019727/
+/keyboard.c///1238019728/
+/pc_keyb.c///1238019728/
+/ps2mult.c///1238019728/
+/ps2ser.c///1238019728/
diff -Naur u-boot-2009.03_orig/drivers/input/CVS/Entries.Old u-boot-2009.03/drivers/input/CVS/Entries.Old
--- u-boot-2009.03_orig/drivers/input/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/input/CVS/Entries.Old        2009-03-25 15:25:28.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/i8042.c/1.1.1.1/Wed Mar 25 22:22:07 2009//
+/keyboard.c/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/pc_keyb.c/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/ps2mult.c/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/ps2ser.c/1.1.1.1/Wed Mar 25 22:22:08 2009//
+D
diff -Naur u-boot-2009.03_orig/drivers/input/CVS/Repository u-boot-2009.03/drivers/input/CVS/Repository
--- u-boot-2009.03_orig/drivers/input/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/input/CVS/Repository 2009-03-25 15:25:28.337386900 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/drivers/input
diff -Naur u-boot-2009.03_orig/drivers/input/CVS/Root u-boot-2009.03/drivers/input/CVS/Root
--- u-boot-2009.03_orig/drivers/input/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/input/CVS/Root       2009-03-25 15:25:28.337386900 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/drivers/misc/CVS/Entries u-boot-2009.03/drivers/misc/CVS/Entries
--- u-boot-2009.03_orig/drivers/misc/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/misc/CVS/Entries     2009-03-25 15:58:01.590511000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ali512x.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ds4510.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fsl_law.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ns87308.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/status_led.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/drivers/misc/CVS/Entries.Extra u-boot-2009.03/drivers/misc/CVS/Entries.Extra
--- u-boot-2009.03_orig/drivers/misc/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/misc/CVS/Entries.Extra       2009-03-25 15:58:01.606135900 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019728/
+/ali512x.c///1238019728/
+/ds4510.c///1238019728/
+/fsl_law.c///1238019728/
+/ns87308.c///1238019728/
+/status_led.c///1238019728/
diff -Naur u-boot-2009.03_orig/drivers/misc/CVS/Entries.Extra.Old u-boot-2009.03/drivers/misc/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/drivers/misc/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/misc/CVS/Entries.Extra.Old   2009-03-25 15:25:28.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019728/
+/ali512x.c///1238019728/
+/ds4510.c///1238019728/
+/fsl_law.c///1238019728/
+/ns87308.c///1238019728/
+/status_led.c///1238019728/
diff -Naur u-boot-2009.03_orig/drivers/misc/CVS/Entries.Old u-boot-2009.03/drivers/misc/CVS/Entries.Old
--- u-boot-2009.03_orig/drivers/misc/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/misc/CVS/Entries.Old 2009-03-25 15:25:28.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/ali512x.c/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/ds4510.c/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/fsl_law.c/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/ns87308.c/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/status_led.c/1.1.1.1/Wed Mar 25 22:22:08 2009//
+D
diff -Naur u-boot-2009.03_orig/drivers/misc/CVS/Repository u-boot-2009.03/drivers/misc/CVS/Repository
--- u-boot-2009.03_orig/drivers/misc/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/misc/CVS/Repository  2009-03-25 15:25:28.587385300 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/drivers/misc
diff -Naur u-boot-2009.03_orig/drivers/misc/CVS/Root u-boot-2009.03/drivers/misc/CVS/Root
--- u-boot-2009.03_orig/drivers/misc/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/misc/CVS/Root        2009-03-25 15:25:28.587385300 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/drivers/mmc/CVS/Entries u-boot-2009.03/drivers/mmc/CVS/Entries
--- u-boot-2009.03_orig/drivers/mmc/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/mmc/CVS/Entries      2009-03-31 14:52:36.551450400 -0700
@@ -0,0 +1,11 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/atmel_mci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/atmel_mci.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bfin_sdh.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bfin_sdh.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fsl_esdhc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mmc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/omap3_mmc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pxa_mmc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pxa_mmc.h/1.1.1.1/Tue Mar 31 21:52:36 2009//T1.1.1.1
+D
diff -Naur u-boot-2009.03_orig/drivers/mmc/CVS/Entries.Extra u-boot-2009.03/drivers/mmc/CVS/Entries.Extra
--- u-boot-2009.03_orig/drivers/mmc/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/mmc/CVS/Entries.Extra        2009-03-31 14:52:36.567075200 -0700
@@ -0,0 +1,10 @@
+/Makefile///1238019728/
+/atmel_mci.c///1238019728/
+/atmel_mci.h///1238019728/
+/bfin_sdh.c///1238019728/
+/bfin_sdh.h///1238019728/
+/fsl_esdhc.c///1238019728/
+/mmc.c///1238019728/
+/omap3_mmc.c///1238019728/
+/pxa_mmc.c///1238019728/
+/pxa_mmc.h///1238019728/
diff -Naur u-boot-2009.03_orig/drivers/mmc/CVS/Entries.Extra.Old u-boot-2009.03/drivers/mmc/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/drivers/mmc/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/mmc/CVS/Entries.Extra.Old    2009-03-25 17:51:43.000000000 -0700
@@ -0,0 +1,10 @@
+/Makefile///1238019728/
+/atmel_mci.c///1238019728/
+/atmel_mci.h///1238019728/
+/bfin_sdh.c///1238019728/
+/bfin_sdh.h///1238019728/
+/fsl_esdhc.c///1238019728/
+/mmc.c///1238019728/
+/omap3_mmc.c///1238019728/
+/pxa_mmc.c///1238019728/
+/pxa_mmc.h///1238028703/
diff -Naur u-boot-2009.03_orig/drivers/mmc/CVS/Entries.Old u-boot-2009.03/drivers/mmc/CVS/Entries.Old
--- u-boot-2009.03_orig/drivers/mmc/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/mmc/CVS/Entries.Old  2009-03-25 17:51:43.000000000 -0700
@@ -0,0 +1,11 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/atmel_mci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/atmel_mci.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bfin_sdh.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bfin_sdh.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fsl_esdhc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mmc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/omap3_mmc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pxa_mmc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pxa_mmc.h/1.2/Thu Mar 26 00:51:43 2009//
+D
diff -Naur u-boot-2009.03_orig/drivers/mmc/CVS/Repository u-boot-2009.03/drivers/mmc/CVS/Repository
--- u-boot-2009.03_orig/drivers/mmc/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/mmc/CVS/Repository   2009-03-25 15:25:28.728009400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/drivers/mmc
diff -Naur u-boot-2009.03_orig/drivers/mmc/CVS/Root u-boot-2009.03/drivers/mmc/CVS/Root
--- u-boot-2009.03_orig/drivers/mmc/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/mmc/CVS/Root 2009-03-25 15:25:28.728009400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/drivers/mmc/pxa_mmc.h u-boot-2009.03/drivers/mmc/pxa_mmc.h
--- u-boot-2009.03_orig/drivers/mmc/pxa_mmc.h   2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/drivers/mmc/pxa_mmc.h        2009-03-31 14:52:36.395202400 -0700
@@ -1,138 +1,138 @@
-/*
- *  linux/drivers/mmc/mmc_pxa.h
- *
- *  Author: Vladimir Shebordaev, Igor Oblakov
- *  Copyright:  MontaVista Software Inc.
- *
- *  $Id: mmc_pxa.h,v 0.3.1.6 2002/09/25 19:25:48 ted Exp ted $
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License version 2 as
- *  published by the Free Software Foundation.
- */
-#ifndef __MMC_PXA_P_H__
-#define __MMC_PXA_P_H__
-
-/* PXA-250 MMC controller registers */
-
-/* MMC_STRPCL */
-#define MMC_STRPCL_STOP_CLK            (0x0001UL)
-#define MMC_STRPCL_START_CLK           (0x0002UL)
-
-/* MMC_STAT */
-#define MMC_STAT_END_CMD_RES           (0x0001UL << 13)
-#define MMC_STAT_PRG_DONE              (0x0001UL << 12)
-#define MMC_STAT_DATA_TRAN_DONE                (0x0001UL << 11)
-#define MMC_STAT_CLK_EN                        (0x0001UL << 8)
-#define MMC_STAT_RECV_FIFO_FULL                (0x0001UL << 7)
-#define MMC_STAT_XMIT_FIFO_EMPTY       (0x0001UL << 6)
-#define MMC_STAT_RES_CRC_ERROR         (0x0001UL << 5)
-#define MMC_STAT_SPI_READ_ERROR_TOKEN   (0x0001UL << 4)
-#define MMC_STAT_CRC_READ_ERROR                (0x0001UL << 3)
-#define MMC_STAT_CRC_WRITE_ERROR       (0x0001UL << 2)
-#define MMC_STAT_TIME_OUT_RESPONSE     (0x0001UL << 1)
-#define MMC_STAT_READ_TIME_OUT         (0x0001UL)
-
-#define MMC_STAT_ERRORS (MMC_STAT_RES_CRC_ERROR|MMC_STAT_SPI_READ_ERROR_TOKEN\
-       |MMC_STAT_CRC_READ_ERROR|MMC_STAT_TIME_OUT_RESPONSE\
-       |MMC_STAT_READ_TIME_OUT|MMC_STAT_CRC_WRITE_ERROR)
-
-/* MMC_CLKRT */
-#define MMC_CLKRT_20MHZ                        (0x0000UL)
-#define MMC_CLKRT_10MHZ                        (0x0001UL)
-#define MMC_CLKRT_5MHZ                 (0x0002UL)
-#define MMC_CLKRT_2_5MHZ               (0x0003UL)
-#define MMC_CLKRT_1_25MHZ              (0x0004UL)
-#define MMC_CLKRT_0_625MHZ             (0x0005UL)
-#define MMC_CLKRT_0_3125MHZ            (0x0006UL)
-
-/* MMC_SPI */
-#define MMC_SPI_DISABLE                        (0x00UL)
-#define MMC_SPI_EN                     (0x01UL)
-#define MMC_SPI_CS_EN                  (0x01UL << 2)
-#define MMC_SPI_CS_ADDRESS             (0x01UL << 3)
-#define MMC_SPI_CRC_ON                 (0x01UL << 1)
-
-/* MMC_CMDAT */
-#define MMC_CMDAT_SD_4DAT              (0x0001UL << 8)
-#define MMC_CMDAT_MMC_DMA_EN           (0x0001UL << 7)
-#define MMC_CMDAT_INIT                 (0x0001UL << 6)
-#define MMC_CMDAT_BUSY                 (0x0001UL << 5)
-#define MMC_CMDAT_BCR                  (0x0003UL << 5)
-#define MMC_CMDAT_STREAM               (0x0001UL << 4)
-#define MMC_CMDAT_BLOCK                        (0x0000UL << 4)
-#define MMC_CMDAT_WRITE                        (0x0001UL << 3)
-#define MMC_CMDAT_READ                 (0x0000UL << 3)
-#define MMC_CMDAT_DATA_EN              (0x0001UL << 2)
-#define MMC_CMDAT_R0                   (0)
-#define MMC_CMDAT_R1                   (0x0001UL)
-#define MMC_CMDAT_R2                   (0x0002UL)
-#define MMC_CMDAT_R3                   (0x0003UL)
-
-/* MMC_RESTO */
-#define MMC_RES_TO_MAX                 (0x007fUL) /* [6:0] */
-
-/* MMC_RDTO */
-#define MMC_READ_TO_MAX                        (0x0ffffUL) /* [15:0] */
-
-/* MMC_BLKLEN */
-#define MMC_BLK_LEN_MAX                        (0x03ffUL) /* [9:0] */
-
-/* MMC_PRTBUF */
-#define MMC_PRTBUF_BUF_PART_FULL       (0x01UL)
-#define MMC_PRTBUF_BUF_FULL            (0x00UL    )
-
-/* MMC_I_MASK */
-#define MMC_I_MASK_TXFIFO_WR_REQ       (0x01UL << 6)
-#define MMC_I_MASK_RXFIFO_RD_REQ       (0x01UL << 5)
-#define MMC_I_MASK_CLK_IS_OFF          (0x01UL << 4)
-#define MMC_I_MASK_STOP_CMD            (0x01UL << 3)
-#define MMC_I_MASK_END_CMD_RES         (0x01UL << 2)
-#define MMC_I_MASK_PRG_DONE            (0x01UL << 1)
-#define MMC_I_MASK_DATA_TRAN_DONE       (0x01UL)
-#define MMC_I_MASK_ALL                 (0x07fUL)
-
-
-/* MMC_I_REG */
-#define MMC_I_REG_TXFIFO_WR_REQ                (0x01UL << 6)
-#define MMC_I_REG_RXFIFO_RD_REQ                (0x01UL << 5)
-#define MMC_I_REG_CLK_IS_OFF           (0x01UL << 4)
-#define MMC_I_REG_STOP_CMD             (0x01UL << 3)
-#define MMC_I_REG_END_CMD_RES          (0x01UL << 2)
-#define MMC_I_REG_PRG_DONE             (0x01UL << 1)
-#define MMC_I_REG_DATA_TRAN_DONE       (0x01UL)
-#define MMC_I_REG_ALL                  (0x007fUL)
-
-/* MMC_CMD */
-#define MMC_CMD_INDEX_MAX              (0x006fUL)  /* [5:0] */
-#define CMD(x)  (x)
-
-#define MMC_DEFAULT_RCA                        1
-
-#define MMC_BLOCK_SIZE                 512
-#define MMC_MAX_BLOCK_SIZE             512
-
-#define MMC_R1_IDLE_STATE              0x01
-#define MMC_R1_ERASE_STATE             0x02
-#define MMC_R1_ILLEGAL_CMD             0x04
-#define MMC_R1_COM_CRC_ERR             0x08
-#define MMC_R1_ERASE_SEQ_ERR           0x01
-#define MMC_R1_ADDR_ERR                        0x02
-#define MMC_R1_PARAM_ERR               0x04
-
-#define MMC_R1B_WP_ERASE_SKIP          0x0002
-#define MMC_R1B_ERR                    0x0004
-#define MMC_R1B_CC_ERR                 0x0008
-#define MMC_R1B_CARD_ECC_ERR           0x0010
-#define MMC_R1B_WP_VIOLATION           0x0020
-#define MMC_R1B_ERASE_PARAM            0x0040
-#define MMC_R1B_OOR                    0x0080
-#define MMC_R1B_IDLE_STATE             0x0100
-#define MMC_R1B_ERASE_RESET            0x0200
-#define MMC_R1B_ILLEGAL_CMD            0x0400
-#define MMC_R1B_COM_CRC_ERR            0x0800
-#define MMC_R1B_ERASE_SEQ_ERR          0x1000
-#define MMC_R1B_ADDR_ERR               0x2000
-#define MMC_R1B_PARAM_ERR              0x4000
-
-#endif /* __MMC_PXA_P_H__ */
+/*
+ *  linux/drivers/mmc/mmc_pxa.h
+ *
+ *  Author: Vladimir Shebordaev, Igor Oblakov
+ *  Copyright:  MontaVista Software Inc.
+ *
+ *  $Id: pxa_mmc.h,v 1.1.1.1 2009/03/25 22:22:08 kenagy Exp $
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 2 as
+ *  published by the Free Software Foundation.
+ */
+#ifndef __MMC_PXA_P_H__
+#define __MMC_PXA_P_H__
+
+/* PXA-250 MMC controller registers */
+
+/* MMC_STRPCL */
+#define MMC_STRPCL_STOP_CLK            (0x0001UL)
+#define MMC_STRPCL_START_CLK           (0x0002UL)
+
+/* MMC_STAT */
+#define MMC_STAT_END_CMD_RES           (0x0001UL << 13)
+#define MMC_STAT_PRG_DONE              (0x0001UL << 12)
+#define MMC_STAT_DATA_TRAN_DONE                (0x0001UL << 11)
+#define MMC_STAT_CLK_EN                        (0x0001UL << 8)
+#define MMC_STAT_RECV_FIFO_FULL                (0x0001UL << 7)
+#define MMC_STAT_XMIT_FIFO_EMPTY       (0x0001UL << 6)
+#define MMC_STAT_RES_CRC_ERROR         (0x0001UL << 5)
+#define MMC_STAT_SPI_READ_ERROR_TOKEN   (0x0001UL << 4)
+#define MMC_STAT_CRC_READ_ERROR                (0x0001UL << 3)
+#define MMC_STAT_CRC_WRITE_ERROR       (0x0001UL << 2)
+#define MMC_STAT_TIME_OUT_RESPONSE     (0x0001UL << 1)
+#define MMC_STAT_READ_TIME_OUT         (0x0001UL)
+
+#define MMC_STAT_ERRORS (MMC_STAT_RES_CRC_ERROR|MMC_STAT_SPI_READ_ERROR_TOKEN\
+       |MMC_STAT_CRC_READ_ERROR|MMC_STAT_TIME_OUT_RESPONSE\
+       |MMC_STAT_READ_TIME_OUT|MMC_STAT_CRC_WRITE_ERROR)
+
+/* MMC_CLKRT */
+#define MMC_CLKRT_20MHZ                        (0x0000UL)
+#define MMC_CLKRT_10MHZ                        (0x0001UL)
+#define MMC_CLKRT_5MHZ                 (0x0002UL)
+#define MMC_CLKRT_2_5MHZ               (0x0003UL)
+#define MMC_CLKRT_1_25MHZ              (0x0004UL)
+#define MMC_CLKRT_0_625MHZ             (0x0005UL)
+#define MMC_CLKRT_0_3125MHZ            (0x0006UL)
+
+/* MMC_SPI */
+#define MMC_SPI_DISABLE                        (0x00UL)
+#define MMC_SPI_EN                     (0x01UL)
+#define MMC_SPI_CS_EN                  (0x01UL << 2)
+#define MMC_SPI_CS_ADDRESS             (0x01UL << 3)
+#define MMC_SPI_CRC_ON                 (0x01UL << 1)
+
+/* MMC_CMDAT */
+#define MMC_CMDAT_SD_4DAT              (0x0001UL << 8)
+#define MMC_CMDAT_MMC_DMA_EN           (0x0001UL << 7)
+#define MMC_CMDAT_INIT                 (0x0001UL << 6)
+#define MMC_CMDAT_BUSY                 (0x0001UL << 5)
+#define MMC_CMDAT_BCR                  (0x0003UL << 5)
+#define MMC_CMDAT_STREAM               (0x0001UL << 4)
+#define MMC_CMDAT_BLOCK                        (0x0000UL << 4)
+#define MMC_CMDAT_WRITE                        (0x0001UL << 3)
+#define MMC_CMDAT_READ                 (0x0000UL << 3)
+#define MMC_CMDAT_DATA_EN              (0x0001UL << 2)
+#define MMC_CMDAT_R0                   (0)
+#define MMC_CMDAT_R1                   (0x0001UL)
+#define MMC_CMDAT_R2                   (0x0002UL)
+#define MMC_CMDAT_R3                   (0x0003UL)
+
+/* MMC_RESTO */
+#define MMC_RES_TO_MAX                 (0x007fUL) /* [6:0] */
+
+/* MMC_RDTO */
+#define MMC_READ_TO_MAX                        (0x0ffffUL) /* [15:0] */
+
+/* MMC_BLKLEN */
+#define MMC_BLK_LEN_MAX                        (0x03ffUL) /* [9:0] */
+
+/* MMC_PRTBUF */
+#define MMC_PRTBUF_BUF_PART_FULL       (0x01UL)
+#define MMC_PRTBUF_BUF_FULL            (0x00UL    )
+
+/* MMC_I_MASK */
+#define MMC_I_MASK_TXFIFO_WR_REQ       (0x01UL << 6)
+#define MMC_I_MASK_RXFIFO_RD_REQ       (0x01UL << 5)
+#define MMC_I_MASK_CLK_IS_OFF          (0x01UL << 4)
+#define MMC_I_MASK_STOP_CMD            (0x01UL << 3)
+#define MMC_I_MASK_END_CMD_RES         (0x01UL << 2)
+#define MMC_I_MASK_PRG_DONE            (0x01UL << 1)
+#define MMC_I_MASK_DATA_TRAN_DONE       (0x01UL)
+#define MMC_I_MASK_ALL                 (0x07fUL)
+
+
+/* MMC_I_REG */
+#define MMC_I_REG_TXFIFO_WR_REQ                (0x01UL << 6)
+#define MMC_I_REG_RXFIFO_RD_REQ                (0x01UL << 5)
+#define MMC_I_REG_CLK_IS_OFF           (0x01UL << 4)
+#define MMC_I_REG_STOP_CMD             (0x01UL << 3)
+#define MMC_I_REG_END_CMD_RES          (0x01UL << 2)
+#define MMC_I_REG_PRG_DONE             (0x01UL << 1)
+#define MMC_I_REG_DATA_TRAN_DONE       (0x01UL)
+#define MMC_I_REG_ALL                  (0x007fUL)
+
+/* MMC_CMD */
+#define MMC_CMD_INDEX_MAX              (0x006fUL)  /* [5:0] */
+#define CMD(x)  (x)
+
+#define MMC_DEFAULT_RCA                        1
+
+#define MMC_BLOCK_SIZE                 512
+#define MMC_MAX_BLOCK_SIZE             512
+
+#define MMC_R1_IDLE_STATE              0x01
+#define MMC_R1_ERASE_STATE             0x02
+#define MMC_R1_ILLEGAL_CMD             0x04
+#define MMC_R1_COM_CRC_ERR             0x08
+#define MMC_R1_ERASE_SEQ_ERR           0x01
+#define MMC_R1_ADDR_ERR                        0x02
+#define MMC_R1_PARAM_ERR               0x04
+
+#define MMC_R1B_WP_ERASE_SKIP          0x0002
+#define MMC_R1B_ERR                    0x0004
+#define MMC_R1B_CC_ERR                 0x0008
+#define MMC_R1B_CARD_ECC_ERR           0x0010
+#define MMC_R1B_WP_VIOLATION           0x0020
+#define MMC_R1B_ERASE_PARAM            0x0040
+#define MMC_R1B_OOR                    0x0080
+#define MMC_R1B_IDLE_STATE             0x0100
+#define MMC_R1B_ERASE_RESET            0x0200
+#define MMC_R1B_ILLEGAL_CMD            0x0400
+#define MMC_R1B_COM_CRC_ERR            0x0800
+#define MMC_R1B_ERASE_SEQ_ERR          0x1000
+#define MMC_R1B_ADDR_ERR               0x2000
+#define MMC_R1B_PARAM_ERR              0x4000
+
+#endif /* __MMC_PXA_P_H__ */
diff -Naur u-boot-2009.03_orig/drivers/mtd/CVS/Entries u-boot-2009.03/drivers/mtd/CVS/Entries
--- u-boot-2009.03_orig/drivers/mtd/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/mtd/CVS/Entries      2009-03-25 15:58:02.356131100 -0700
@@ -0,0 +1,14 @@
+D/nand////
+D/nand_legacy////
+D/onenand////
+D/spi////
+D/ubi////
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/at45.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cfi_flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cfi_mtd.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dataflash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/jedec_flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mtdcore.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mtdpart.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mw_eeprom.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
diff -Naur u-boot-2009.03_orig/drivers/mtd/CVS/Entries.Extra u-boot-2009.03/drivers/mtd/CVS/Entries.Extra
--- u-boot-2009.03_orig/drivers/mtd/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/mtd/CVS/Entries.Extra        2009-03-25 15:58:02.356131100 -0700
@@ -0,0 +1,14 @@
+D/nand////
+D/nand_legacy////
+D/onenand////
+D/spi////
+D/ubi////
+/Makefile///1238019728/
+/at45.c///1238019728/
+/cfi_flash.c///1238019728/
+/cfi_mtd.c///1238019728/
+/dataflash.c///1238019728/
+/jedec_flash.c///1238019728/
+/mtdcore.c///1238019728/
+/mtdpart.c///1238019728/
+/mw_eeprom.c///1238019728/
diff -Naur u-boot-2009.03_orig/drivers/mtd/CVS/Entries.Extra.Old u-boot-2009.03/drivers/mtd/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/drivers/mtd/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/mtd/CVS/Entries.Extra.Old    2009-03-25 15:25:29.000000000 -0700
@@ -0,0 +1,14 @@
+/Makefile///1238019728/
+/at45.c///1238019728/
+/cfi_flash.c///1238019728/
+/cfi_mtd.c///1238019728/
+/dataflash.c///1238019728/
+/jedec_flash.c///1238019728/
+/mtdcore.c///1238019728/
+/mtdpart.c///1238019728/
+/mw_eeprom.c///1238019728/
+D/nand////
+D/nand_legacy////
+D/onenand////
+D/spi////
+D/ubi////
diff -Naur u-boot-2009.03_orig/drivers/mtd/CVS/Entries.Old u-boot-2009.03/drivers/mtd/CVS/Entries.Old
--- u-boot-2009.03_orig/drivers/mtd/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/mtd/CVS/Entries.Old  2009-03-25 15:25:29.000000000 -0700
@@ -0,0 +1,14 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/at45.c/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/cfi_flash.c/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/cfi_mtd.c/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/dataflash.c/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/jedec_flash.c/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/mtdcore.c/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/mtdpart.c/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/mw_eeprom.c/1.1.1.1/Wed Mar 25 22:22:08 2009//
+D/nand////
+D/nand_legacy////
+D/onenand////
+D/spi////
+D/ubi////
diff -Naur u-boot-2009.03_orig/drivers/mtd/CVS/Repository u-boot-2009.03/drivers/mtd/CVS/Repository
--- u-boot-2009.03_orig/drivers/mtd/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/mtd/CVS/Repository   2009-03-25 15:25:28.899883300 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/drivers/mtd
diff -Naur u-boot-2009.03_orig/drivers/mtd/CVS/Root u-boot-2009.03/drivers/mtd/CVS/Root
--- u-boot-2009.03_orig/drivers/mtd/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/mtd/CVS/Root 2009-03-25 15:25:28.899883300 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/drivers/mtd/nand/CVS/Entries u-boot-2009.03/drivers/mtd/nand/CVS/Entries
--- u-boot-2009.03_orig/drivers/mtd/nand/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/mtd/nand/CVS/Entries 2009-03-25 15:58:01.871759200 -0700
@@ -0,0 +1,15 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bfin_nand.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/diskonchip.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fsl_elbc_nand.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fsl_upm.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nand.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nand_base.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nand_bbt.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nand_ecc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nand_ids.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nand_util.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nomadik.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/omap_gpmc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/s3c64xx.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/drivers/mtd/nand/CVS/Entries.Extra u-boot-2009.03/drivers/mtd/nand/CVS/Entries.Extra
--- u-boot-2009.03_orig/drivers/mtd/nand/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/mtd/nand/CVS/Entries.Extra   2009-03-25 15:58:01.887384100 -0700
@@ -0,0 +1,14 @@
+/Makefile///1238019728/
+/bfin_nand.c///1238019728/
+/diskonchip.c///1238019728/
+/fsl_elbc_nand.c///1238019728/
+/fsl_upm.c///1238019728/
+/nand.c///1238019728/
+/nand_base.c///1238019728/
+/nand_bbt.c///1238019728/
+/nand_ecc.c///1238019728/
+/nand_ids.c///1238019728/
+/nand_util.c///1238019728/
+/nomadik.c///1238019728/
+/omap_gpmc.c///1238019728/
+/s3c64xx.c///1238019728/
diff -Naur u-boot-2009.03_orig/drivers/mtd/nand/CVS/Entries.Extra.Old u-boot-2009.03/drivers/mtd/nand/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/drivers/mtd/nand/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/mtd/nand/CVS/Entries.Extra.Old       2009-03-25 15:25:29.000000000 -0700
@@ -0,0 +1,14 @@
+/Makefile///1238019728/
+/bfin_nand.c///1238019728/
+/diskonchip.c///1238019728/
+/fsl_elbc_nand.c///1238019728/
+/fsl_upm.c///1238019728/
+/nand.c///1238019728/
+/nand_base.c///1238019728/
+/nand_bbt.c///1238019728/
+/nand_ecc.c///1238019728/
+/nand_ids.c///1238019728/
+/nand_util.c///1238019728/
+/nomadik.c///1238019728/
+/omap_gpmc.c///1238019728/
+/s3c64xx.c///1238019728/
diff -Naur u-boot-2009.03_orig/drivers/mtd/nand/CVS/Entries.Old u-boot-2009.03/drivers/mtd/nand/CVS/Entries.Old
--- u-boot-2009.03_orig/drivers/mtd/nand/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/mtd/nand/CVS/Entries.Old     2009-03-25 15:25:29.000000000 -0700
@@ -0,0 +1,15 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/bfin_nand.c/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/diskonchip.c/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/fsl_elbc_nand.c/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/fsl_upm.c/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/nand.c/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/nand_base.c/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/nand_bbt.c/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/nand_ecc.c/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/nand_ids.c/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/nand_util.c/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/nomadik.c/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/omap_gpmc.c/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/s3c64xx.c/1.1.1.1/Wed Mar 25 22:22:08 2009//
+D
diff -Naur u-boot-2009.03_orig/drivers/mtd/nand/CVS/Repository u-boot-2009.03/drivers/mtd/nand/CVS/Repository
--- u-boot-2009.03_orig/drivers/mtd/nand/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/mtd/nand/CVS/Repository      2009-03-25 15:25:29.009257600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/drivers/mtd/nand
diff -Naur u-boot-2009.03_orig/drivers/mtd/nand/CVS/Root u-boot-2009.03/drivers/mtd/nand/CVS/Root
--- u-boot-2009.03_orig/drivers/mtd/nand/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/mtd/nand/CVS/Root    2009-03-25 15:25:29.009257600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/drivers/mtd/nand_legacy/CVS/Entries u-boot-2009.03/drivers/mtd/nand_legacy/CVS/Entries
--- u-boot-2009.03_orig/drivers/mtd/nand_legacy/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/mtd/nand_legacy/CVS/Entries  2009-03-25 15:58:01.965508600 -0700
@@ -0,0 +1,3 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nand_legacy.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/drivers/mtd/nand_legacy/CVS/Entries.Extra u-boot-2009.03/drivers/mtd/nand_legacy/CVS/Entries.Extra
--- u-boot-2009.03_orig/drivers/mtd/nand_legacy/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/mtd/nand_legacy/CVS/Entries.Extra    2009-03-25 15:58:01.965508600 -0700
@@ -0,0 +1,2 @@
+/Makefile///1238019728/
+/nand_legacy.c///1238019728/
diff -Naur u-boot-2009.03_orig/drivers/mtd/nand_legacy/CVS/Entries.Extra.Old u-boot-2009.03/drivers/mtd/nand_legacy/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/drivers/mtd/nand_legacy/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/mtd/nand_legacy/CVS/Entries.Extra.Old        2009-03-25 15:25:29.000000000 -0700
@@ -0,0 +1,2 @@
+/Makefile///1238019728/
+/nand_legacy.c///1238019728/
diff -Naur u-boot-2009.03_orig/drivers/mtd/nand_legacy/CVS/Entries.Old u-boot-2009.03/drivers/mtd/nand_legacy/CVS/Entries.Old
--- u-boot-2009.03_orig/drivers/mtd/nand_legacy/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/mtd/nand_legacy/CVS/Entries.Old      2009-03-25 15:25:29.000000000 -0700
@@ -0,0 +1,3 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/nand_legacy.c/1.1.1.1/Wed Mar 25 22:22:08 2009//
+D
diff -Naur u-boot-2009.03_orig/drivers/mtd/nand_legacy/CVS/Repository u-boot-2009.03/drivers/mtd/nand_legacy/CVS/Repository
--- u-boot-2009.03_orig/drivers/mtd/nand_legacy/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/mtd/nand_legacy/CVS/Repository       2009-03-25 15:25:29.259256000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/drivers/mtd/nand_legacy
diff -Naur u-boot-2009.03_orig/drivers/mtd/nand_legacy/CVS/Root u-boot-2009.03/drivers/mtd/nand_legacy/CVS/Root
--- u-boot-2009.03_orig/drivers/mtd/nand_legacy/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/mtd/nand_legacy/CVS/Root     2009-03-25 15:25:29.259256000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/drivers/mtd/onenand/CVS/Entries u-boot-2009.03/drivers/mtd/onenand/CVS/Entries
--- u-boot-2009.03_orig/drivers/mtd/onenand/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/mtd/onenand/CVS/Entries      2009-03-25 15:58:02.028008200 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/onenand_base.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/onenand_bbt.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/onenand_uboot.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/drivers/mtd/onenand/CVS/Entries.Extra u-boot-2009.03/drivers/mtd/onenand/CVS/Entries.Extra
--- u-boot-2009.03_orig/drivers/mtd/onenand/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/mtd/onenand/CVS/Entries.Extra        2009-03-25 15:58:02.028008200 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019728/
+/onenand_base.c///1238019728/
+/onenand_bbt.c///1238019728/
+/onenand_uboot.c///1238019728/
diff -Naur u-boot-2009.03_orig/drivers/mtd/onenand/CVS/Entries.Extra.Old u-boot-2009.03/drivers/mtd/onenand/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/drivers/mtd/onenand/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/mtd/onenand/CVS/Entries.Extra.Old    2009-03-25 15:25:29.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019728/
+/onenand_base.c///1238019728/
+/onenand_bbt.c///1238019728/
+/onenand_uboot.c///1238019728/
diff -Naur u-boot-2009.03_orig/drivers/mtd/onenand/CVS/Entries.Old u-boot-2009.03/drivers/mtd/onenand/CVS/Entries.Old
--- u-boot-2009.03_orig/drivers/mtd/onenand/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/mtd/onenand/CVS/Entries.Old  2009-03-25 15:25:29.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/onenand_base.c/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/onenand_bbt.c/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/onenand_uboot.c/1.1.1.1/Wed Mar 25 22:22:08 2009//
+D
diff -Naur u-boot-2009.03_orig/drivers/mtd/onenand/CVS/Repository u-boot-2009.03/drivers/mtd/onenand/CVS/Repository
--- u-boot-2009.03_orig/drivers/mtd/onenand/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/mtd/onenand/CVS/Repository   2009-03-25 15:25:29.353005400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/drivers/mtd/onenand
diff -Naur u-boot-2009.03_orig/drivers/mtd/onenand/CVS/Root u-boot-2009.03/drivers/mtd/onenand/CVS/Root
--- u-boot-2009.03_orig/drivers/mtd/onenand/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/mtd/onenand/CVS/Root 2009-03-25 15:25:29.337380500 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/drivers/mtd/spi/CVS/Entries u-boot-2009.03/drivers/mtd/spi/CVS/Entries
--- u-boot-2009.03_orig/drivers/mtd/spi/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/mtd/spi/CVS/Entries  2009-03-25 15:58:02.199882100 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/atmel.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/spi_flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/spi_flash_internal.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/stmicro.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/drivers/mtd/spi/CVS/Entries.Extra u-boot-2009.03/drivers/mtd/spi/CVS/Entries.Extra
--- u-boot-2009.03_orig/drivers/mtd/spi/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/mtd/spi/CVS/Entries.Extra    2009-03-25 15:58:02.199882100 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019728/
+/atmel.c///1238019728/
+/spi_flash.c///1238019728/
+/spi_flash_internal.h///1238019728/
+/stmicro.c///1238019728/
diff -Naur u-boot-2009.03_orig/drivers/mtd/spi/CVS/Entries.Extra.Old u-boot-2009.03/drivers/mtd/spi/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/drivers/mtd/spi/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/mtd/spi/CVS/Entries.Extra.Old        2009-03-25 15:25:29.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019728/
+/atmel.c///1238019728/
+/spi_flash.c///1238019728/
+/spi_flash_internal.h///1238019728/
+/stmicro.c///1238019728/
diff -Naur u-boot-2009.03_orig/drivers/mtd/spi/CVS/Entries.Old u-boot-2009.03/drivers/mtd/spi/CVS/Entries.Old
--- u-boot-2009.03_orig/drivers/mtd/spi/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/mtd/spi/CVS/Entries.Old      2009-03-25 15:25:29.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/atmel.c/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/spi_flash.c/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/spi_flash_internal.h/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/stmicro.c/1.1.1.1/Wed Mar 25 22:22:08 2009//
+D
diff -Naur u-boot-2009.03_orig/drivers/mtd/spi/CVS/Repository u-boot-2009.03/drivers/mtd/spi/CVS/Repository
--- u-boot-2009.03_orig/drivers/mtd/spi/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/mtd/spi/CVS/Repository       2009-03-25 15:25:29.524879300 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/drivers/mtd/spi
diff -Naur u-boot-2009.03_orig/drivers/mtd/spi/CVS/Root u-boot-2009.03/drivers/mtd/spi/CVS/Root
--- u-boot-2009.03_orig/drivers/mtd/spi/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/mtd/spi/CVS/Root     2009-03-25 15:25:29.524879300 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/drivers/mtd/ubi/CVS/Entries u-boot-2009.03/drivers/mtd/ubi/CVS/Entries
--- u-boot-2009.03_orig/drivers/mtd/ubi/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/mtd/ubi/CVS/Entries  2009-03-25 15:58:02.324881300 -0700
@@ -0,0 +1,20 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/build.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/crc32.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/crc32defs.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/crc32table.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/debug.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/debug.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/eba.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/io.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/kapi.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/misc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/scan.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/scan.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ubi-media.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ubi.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/upd.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/vmt.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/vtbl.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/wl.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/drivers/mtd/ubi/CVS/Entries.Extra u-boot-2009.03/drivers/mtd/ubi/CVS/Entries.Extra
--- u-boot-2009.03_orig/drivers/mtd/ubi/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/mtd/ubi/CVS/Entries.Extra    2009-03-25 15:58:02.324881300 -0700
@@ -0,0 +1,19 @@
+/Makefile///1238019728/
+/build.c///1238019728/
+/crc32.c///1238019728/
+/crc32defs.h///1238019728/
+/crc32table.h///1238019728/
+/debug.c///1238019728/
+/debug.h///1238019728/
+/eba.c///1238019728/
+/io.c///1238019728/
+/kapi.c///1238019728/
+/misc.c///1238019728/
+/scan.c///1238019728/
+/scan.h///1238019728/
+/ubi-media.h///1238019728/
+/ubi.h///1238019728/
+/upd.c///1238019728/
+/vmt.c///1238019728/
+/vtbl.c///1238019728/
+/wl.c///1238019728/
diff -Naur u-boot-2009.03_orig/drivers/mtd/ubi/CVS/Entries.Extra.Old u-boot-2009.03/drivers/mtd/ubi/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/drivers/mtd/ubi/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/mtd/ubi/CVS/Entries.Extra.Old        2009-03-25 15:25:29.000000000 -0700
@@ -0,0 +1,19 @@
+/Makefile///1238019728/
+/build.c///1238019728/
+/crc32.c///1238019728/
+/crc32defs.h///1238019728/
+/crc32table.h///1238019728/
+/debug.c///1238019728/
+/debug.h///1238019728/
+/eba.c///1238019728/
+/io.c///1238019728/
+/kapi.c///1238019728/
+/misc.c///1238019728/
+/scan.c///1238019728/
+/scan.h///1238019728/
+/ubi-media.h///1238019728/
+/ubi.h///1238019728/
+/upd.c///1238019728/
+/vmt.c///1238019728/
+/vtbl.c///1238019728/
+/wl.c///1238019728/
diff -Naur u-boot-2009.03_orig/drivers/mtd/ubi/CVS/Entries.Old u-boot-2009.03/drivers/mtd/ubi/CVS/Entries.Old
--- u-boot-2009.03_orig/drivers/mtd/ubi/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/mtd/ubi/CVS/Entries.Old      2009-03-25 15:25:29.000000000 -0700
@@ -0,0 +1,20 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/build.c/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/crc32.c/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/crc32defs.h/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/crc32table.h/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/debug.c/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/debug.h/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/eba.c/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/io.c/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/kapi.c/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/misc.c/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/scan.c/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/scan.h/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/ubi-media.h/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/ubi.h/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/upd.c/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/vmt.c/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/vtbl.c/1.1.1.1/Wed Mar 25 22:22:08 2009//
+/wl.c/1.1.1.1/Wed Mar 25 22:22:08 2009//
+D
diff -Naur u-boot-2009.03_orig/drivers/mtd/ubi/CVS/Repository u-boot-2009.03/drivers/mtd/ubi/CVS/Repository
--- u-boot-2009.03_orig/drivers/mtd/ubi/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/mtd/ubi/CVS/Repository       2009-03-25 15:25:29.649878500 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/drivers/mtd/ubi
diff -Naur u-boot-2009.03_orig/drivers/mtd/ubi/CVS/Root u-boot-2009.03/drivers/mtd/ubi/CVS/Root
--- u-boot-2009.03_orig/drivers/mtd/ubi/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/mtd/ubi/CVS/Root     2009-03-25 15:25:29.649878500 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/drivers/net/CVS/Entries u-boot-2009.03/drivers/net/CVS/Entries
--- u-boot-2009.03_orig/drivers/net/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/net/CVS/Entries      2009-03-31 14:53:44.597454400 -0700
@@ -0,0 +1,83 @@
+D/phy////
+D/sk98lin////
+/3c589.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/3c589.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/4xx_enet.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/5701rls.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/5701rls.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/8390.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ax88180.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ax88180.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ax88796.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ax88796.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bcm570x.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bcm570x_autoneg.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bcm570x_autoneg.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bcm570x_bits.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bcm570x_debug.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bcm570x_lm.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bcm570x_mm.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bcm570x_queue.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bfin_mac.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bfin_mac.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cs8900.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cs8900.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dc2114x.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dm9000x.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dm9000x.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dnet.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dnet.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/e1000.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/e1000.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/eepro100.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/enc28j60.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fsl_mcdmafec.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/greth.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/greth.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/inca-ip_sw.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ks8695eth.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lan91c96.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lan91c96.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/macb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/macb.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mcffec.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mcfmii.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc512x_fec.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc512x_fec.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc5xxx_fec.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc5xxx_fec.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/natsemi.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ne2000.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ne2000.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ne2000_base.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ne2000_base.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/netarm_eth.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/netarm_eth.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/netconsole.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nicext.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ns8382x.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pcnet.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/plb2800_eth.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/rtl8019.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/rtl8019.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/rtl8139.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/rtl8169.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/s3c4510b_eth.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sh_eth.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sh_eth.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/smc91111.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/smc91111.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/smc911x.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/smc911x.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tigon3.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tigon3.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tsec.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tsi108_eth.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/uli526x.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/vsc7385.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xilinx_emac.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xilinx_emaclite.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ns7520_eth.c/1.1.1.1/Tue Mar 31 21:53:34 2009//T1.1.1.1
+/ns9750_eth.c/1.1.1.1/Tue Mar 31 21:53:34 2009//T1.1.1.1
+/s3c4510b_eth.h/1.1.1.1/Tue Mar 31 21:53:44 2009//T1.1.1.1
diff -Naur u-boot-2009.03_orig/drivers/net/CVS/Entries.Extra u-boot-2009.03/drivers/net/CVS/Entries.Extra
--- u-boot-2009.03_orig/drivers/net/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/net/CVS/Entries.Extra        2009-03-31 14:53:44.597454400 -0700
@@ -0,0 +1,83 @@
+D/phy////
+D/sk98lin////
+/3c589.c///1238019728/
+/3c589.h///1238019728/
+/4xx_enet.c///1238019728/
+/5701rls.c///1238019728/
+/5701rls.h///1238019728/
+/8390.h///1238019728/
+/Makefile///1238019729/
+/ax88180.c///1238019728/
+/ax88180.h///1238019728/
+/ax88796.c///1238019728/
+/ax88796.h///1238019728/
+/bcm570x.c///1238019728/
+/bcm570x_autoneg.c///1238019728/
+/bcm570x_autoneg.h///1238019728/
+/bcm570x_bits.h///1238019728/
+/bcm570x_debug.h///1238019728/
+/bcm570x_lm.h///1238019728/
+/bcm570x_mm.h///1238019728/
+/bcm570x_queue.h///1238019728/
+/bfin_mac.c///1238019728/
+/bfin_mac.h///1238019728/
+/cs8900.c///1238019728/
+/cs8900.h///1238019728/
+/dc2114x.c///1238019728/
+/dm9000x.c///1238019728/
+/dm9000x.h///1238019728/
+/dnet.c///1238019729/
+/dnet.h///1238019729/
+/e1000.c///1238019729/
+/e1000.h///1238019729/
+/eepro100.c///1238019729/
+/enc28j60.c///1238019729/
+/fsl_mcdmafec.c///1238019729/
+/greth.c///1238019729/
+/greth.h///1238019729/
+/inca-ip_sw.c///1238019729/
+/ks8695eth.c///1238019729/
+/lan91c96.c///1238019729/
+/lan91c96.h///1238019729/
+/macb.c///1238019729/
+/macb.h///1238019729/
+/mcffec.c///1238019729/
+/mcfmii.c///1238019729/
+/mpc512x_fec.c///1238019729/
+/mpc512x_fec.h///1238019729/
+/mpc5xxx_fec.c///1238019729/
+/mpc5xxx_fec.h///1238019729/
+/natsemi.c///1238019729/
+/ne2000.c///1238019729/
+/ne2000.h///1238019729/
+/ne2000_base.c///1238019729/
+/ne2000_base.h///1238019729/
+/netarm_eth.c///1238019729/
+/netarm_eth.h///1238019729/
+/netconsole.c///1238019729/
+/nicext.h///1238019729/
+/ns8382x.c///1238019729/
+/pcnet.c///1238019729/
+/plb2800_eth.c///1238019729/
+/rtl8019.c///1238019729/
+/rtl8019.h///1238019729/
+/rtl8139.c///1238019729/
+/rtl8169.c///1238019729/
+/s3c4510b_eth.c///1238019729/
+/sh_eth.c///1238019729/
+/sh_eth.h///1238019729/
+/smc91111.c///1238019729/
+/smc91111.h///1238019729/
+/smc911x.c///1238019729/
+/smc911x.h///1238019729/
+/tigon3.c///1238019729/
+/tigon3.h///1238019729/
+/tsec.c///1238019729/
+/tsi108_eth.c///1238019729/
+/uli526x.c///1238019729/
+/vsc7385.c///1238019729/
+/xilinx_emac.c///1238019729/
+/xilinx_emaclite.c///1238019729/
+/ns7520_eth.c///1238019729/
+/ns9750_eth.c///1238019729/
+/s3c4510b_eth.h///1238019729/
diff -Naur u-boot-2009.03_orig/drivers/net/CVS/Entries.Extra.Old u-boot-2009.03/drivers/net/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/drivers/net/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/net/CVS/Entries.Extra.Old    2009-03-31 14:53:34.000000000 -0700
@@ -0,0 +1,83 @@
+D/phy////
+D/sk98lin////
+/3c589.c///1238019728/
+/3c589.h///1238019728/
+/4xx_enet.c///1238019728/
+/5701rls.c///1238019728/
+/5701rls.h///1238019728/
+/8390.h///1238019728/
+/Makefile///1238019729/
+/ax88180.c///1238019728/
+/ax88180.h///1238019728/
+/ax88796.c///1238019728/
+/ax88796.h///1238019728/
+/bcm570x.c///1238019728/
+/bcm570x_autoneg.c///1238019728/
+/bcm570x_autoneg.h///1238019728/
+/bcm570x_bits.h///1238019728/
+/bcm570x_debug.h///1238019728/
+/bcm570x_lm.h///1238019728/
+/bcm570x_mm.h///1238019728/
+/bcm570x_queue.h///1238019728/
+/bfin_mac.c///1238019728/
+/bfin_mac.h///1238019728/
+/cs8900.c///1238019728/
+/cs8900.h///1238019728/
+/dc2114x.c///1238019728/
+/dm9000x.c///1238019728/
+/dm9000x.h///1238019728/
+/dnet.c///1238019729/
+/dnet.h///1238019729/
+/e1000.c///1238019729/
+/e1000.h///1238019729/
+/eepro100.c///1238019729/
+/enc28j60.c///1238019729/
+/fsl_mcdmafec.c///1238019729/
+/greth.c///1238019729/
+/greth.h///1238019729/
+/inca-ip_sw.c///1238019729/
+/ks8695eth.c///1238019729/
+/lan91c96.c///1238019729/
+/lan91c96.h///1238019729/
+/macb.c///1238019729/
+/macb.h///1238019729/
+/mcffec.c///1238019729/
+/mcfmii.c///1238019729/
+/mpc512x_fec.c///1238019729/
+/mpc512x_fec.h///1238019729/
+/mpc5xxx_fec.c///1238019729/
+/mpc5xxx_fec.h///1238019729/
+/natsemi.c///1238019729/
+/ne2000.c///1238019729/
+/ne2000.h///1238019729/
+/ne2000_base.c///1238019729/
+/ne2000_base.h///1238019729/
+/netarm_eth.c///1238019729/
+/netarm_eth.h///1238019729/
+/netconsole.c///1238019729/
+/nicext.h///1238019729/
+/ns8382x.c///1238019729/
+/pcnet.c///1238019729/
+/plb2800_eth.c///1238019729/
+/rtl8019.c///1238019729/
+/rtl8019.h///1238019729/
+/rtl8139.c///1238019729/
+/rtl8169.c///1238019729/
+/s3c4510b_eth.c///1238019729/
+/sh_eth.c///1238019729/
+/sh_eth.h///1238019729/
+/smc91111.c///1238019729/
+/smc91111.h///1238019729/
+/smc911x.c///1238019729/
+/smc911x.h///1238019729/
+/tigon3.c///1238019729/
+/tigon3.h///1238019729/
+/tsec.c///1238019729/
+/tsi108_eth.c///1238019729/
+/uli526x.c///1238019729/
+/vsc7385.c///1238019729/
+/xilinx_emac.c///1238019729/
+/xilinx_emaclite.c///1238019729/
+/s3c4510b_eth.h///1238028703/
+/ns7520_eth.c///1238019729/
+/ns9750_eth.c///1238019729/
diff -Naur u-boot-2009.03_orig/drivers/net/CVS/Entries.Old u-boot-2009.03/drivers/net/CVS/Entries.Old
--- u-boot-2009.03_orig/drivers/net/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/net/CVS/Entries.Old  2009-03-31 14:53:34.000000000 -0700
@@ -0,0 +1,83 @@
+D/phy////
+D/sk98lin////
+/3c589.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/3c589.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/4xx_enet.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/5701rls.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/5701rls.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/8390.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ax88180.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ax88180.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ax88796.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ax88796.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bcm570x.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bcm570x_autoneg.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bcm570x_autoneg.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bcm570x_bits.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bcm570x_debug.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bcm570x_lm.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bcm570x_mm.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bcm570x_queue.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bfin_mac.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bfin_mac.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cs8900.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cs8900.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dc2114x.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dm9000x.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dm9000x.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dnet.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dnet.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/e1000.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/e1000.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/eepro100.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/enc28j60.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fsl_mcdmafec.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/greth.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/greth.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/inca-ip_sw.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ks8695eth.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lan91c96.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lan91c96.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/macb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/macb.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mcffec.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mcfmii.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc512x_fec.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc512x_fec.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc5xxx_fec.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc5xxx_fec.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/natsemi.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ne2000.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ne2000.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ne2000_base.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ne2000_base.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/netarm_eth.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/netarm_eth.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/netconsole.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nicext.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ns8382x.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pcnet.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/plb2800_eth.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/rtl8019.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/rtl8019.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/rtl8139.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/rtl8169.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/s3c4510b_eth.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sh_eth.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sh_eth.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/smc91111.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/smc91111.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/smc911x.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/smc911x.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tigon3.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tigon3.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tsec.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tsi108_eth.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/uli526x.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/vsc7385.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xilinx_emac.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xilinx_emaclite.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/s3c4510b_eth.h/1.2/Thu Mar 26 00:51:43 2009//
+/ns7520_eth.c/1.1.1.1/Tue Mar 31 21:53:34 2009//T1.1.1.1
+/ns9750_eth.c/1.1.1.1/Tue Mar 31 21:53:34 2009//T1.1.1.1
diff -Naur u-boot-2009.03_orig/drivers/net/CVS/Repository u-boot-2009.03/drivers/net/CVS/Repository
--- u-boot-2009.03_orig/drivers/net/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/net/CVS/Repository   2009-03-25 15:25:29.931126700 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/drivers/net
diff -Naur u-boot-2009.03_orig/drivers/net/CVS/Root u-boot-2009.03/drivers/net/CVS/Root
--- u-boot-2009.03_orig/drivers/net/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/net/CVS/Root 2009-03-25 15:25:29.931126700 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/drivers/net/ns7520_eth.c u-boot-2009.03/drivers/net/ns7520_eth.c
--- u-boot-2009.03_orig/drivers/net/ns7520_eth.c        2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/drivers/net/ns7520_eth.c     2009-03-31 14:53:34.097588800 -0700
@@ -1,850 +1,850 @@
-/***********************************************************************
- *
- * Copyright (C) 2005 by Videon Central, Inc.
- *
- * $Id$
- * @Author: Arthur Shipkowski
- * @Descr: Ethernet driver for the NS7520. Uses polled Ethernet, like
- *     the older netarmeth driver.  Note that attempting to filter
- *     broadcast and multicast out in the SAFR register will cause
- *     bad things due to released errata.
- * @References: [1] NS7520 Hardware Reference, December 2003
- *             [2] Intel LXT971 Datasheet #249414 Rev. 02
- *
- ***********************************************************************/
-
-#include <common.h>
-
-#include <net.h>               /* NetSendPacket */
-#include <asm/arch/netarm_registers.h>
-#include <asm/arch/netarm_dma_module.h>
-
-#include "ns7520_eth.h"                /* for Ethernet and PHY */
-
-/**
- * Send an error message to the terminal.
- */
-#define ERROR(x) \
-do { \
-       char *__foo = strrchr(__FILE__, '/'); \
-       \
-       printf("%s: %d: %s(): ", (__foo == NULL ? __FILE__ : (__foo + 1)), \
-                       __LINE__, __FUNCTION__); \
-       printf x; printf("\n"); \
-} while (0);
-
-/* some definition to make transistion to linux easier */
-
-#define NS7520_DRIVER_NAME     "eth"
-#define KERN_WARNING           "Warning:"
-#define KERN_ERR               "Error:"
-#define KERN_INFO              "Info:"
-
-#if 1
-# define DEBUG
-#endif
-
-#ifdef DEBUG
-# define printk                        printf
-
-# define DEBUG_INIT            0x0001
-# define DEBUG_MINOR           0x0002
-# define DEBUG_RX              0x0004
-# define DEBUG_TX              0x0008
-# define DEBUG_INT             0x0010
-# define DEBUG_POLL            0x0020
-# define DEBUG_LINK            0x0040
-# define DEBUG_MII             0x0100
-# define DEBUG_MII_LOW         0x0200
-# define DEBUG_MEM             0x0400
-# define DEBUG_ERROR           0x4000
-# define DEBUG_ERROR_CRIT      0x8000
-
-static int nDebugLvl = DEBUG_ERROR_CRIT;
-
-# define DEBUG_ARGS0( FLG, a0 ) if( ( nDebugLvl & (FLG) ) == (FLG) ) \
-               printf("%s: " a0, __FUNCTION__, 0, 0, 0, 0, 0, 0 )
-# define DEBUG_ARGS1( FLG, a0, a1 ) if( ( nDebugLvl & (FLG) ) == (FLG)) \
-               printf("%s: " a0, __FUNCTION__, (int)(a1), 0, 0, 0, 0, 0 )
-# define DEBUG_ARGS2( FLG, a0, a1, a2 ) if( (nDebugLvl & (FLG)) ==(FLG))\
-               printf("%s: " a0, __FUNCTION__, (int)(a1), (int)(a2), 0, 0,0,0 )
-# define DEBUG_ARGS3( FLG, a0, a1, a2, a3 ) if((nDebugLvl &(FLG))==(FLG))\
-               printf("%s: "a0,__FUNCTION__,(int)(a1),(int)(a2),(int)(a3),0,0,0)
-# define DEBUG_FN( FLG ) if( (nDebugLvl & (FLG)) == (FLG) ) \
-               printf("\r%s:line %d\n", (int)__FUNCTION__, __LINE__, 0,0,0,0);
-# define ASSERT( expr, func ) if( !( expr ) ) { \
-               printf( "Assertion failed! %s:line %d %s\n", \
-               (int)__FUNCTION__,__LINE__,(int)(#expr),0,0,0); \
-               func }
-#else                          /* DEBUG */
-# define printk(...)
-# define DEBUG_ARGS0( FLG, a0 )
-# define DEBUG_ARGS1( FLG, a0, a1 )
-# define DEBUG_ARGS2( FLG, a0, a1, a2 )
-# define DEBUG_ARGS3( FLG, a0, a1, a2, a3 )
-# define DEBUG_FN( n )
-# define ASSERT(expr, func)
-#endif                         /* DEBUG */
-
-#define NS7520_MII_NEG_DELAY           (5*CONFIG_SYS_HZ)       /* in s */
-#define TX_TIMEOUT                     (5*CONFIG_SYS_HZ)       /* in s */
-#define RX_STALL_WORKAROUND_CNT 100
-
-static int ns7520_eth_reset(void);
-
-static void ns7520_link_auto_negotiate(void);
-static void ns7520_link_update_egcr(void);
-static void ns7520_link_print_changed(void);
-
-/* the PHY stuff */
-
-static char ns7520_mii_identify_phy(void);
-static unsigned short ns7520_mii_read(unsigned short uiRegister);
-static void ns7520_mii_write(unsigned short uiRegister,
-                            unsigned short uiData);
-static unsigned int ns7520_mii_get_clock_divisor(unsigned int
-                                                unMaxMDIOClk);
-static unsigned int ns7520_mii_poll_busy(void);
-
-static unsigned int nPhyMaxMdioClock = PHY_MDIO_MAX_CLK;
-static unsigned int uiLastLinkStatus;
-static PhyType phyDetected = PHY_NONE;
-
-/***********************************************************************
- * @Function: eth_init
- * @Return: -1 on failure otherwise 0
- * @Descr: Initializes the ethernet engine and uses either FS Forth's default
- *        MAC addr or the one in environment
- ***********************************************************************/
-
-int eth_init(bd_t * pbis)
-{
-       unsigned char aucMACAddr[6];
-       char *pcTmp = getenv("ethaddr");
-       char *pcEnd;
-       int i;
-
-       DEBUG_FN(DEBUG_INIT);
-
-       /* no need to check for hardware */
-
-       if (!ns7520_eth_reset())
-               return -1;
-
-       if (NULL == pcTmp)
-               return -1;
-
-       for (i = 0; i < 6; i++) {
-               aucMACAddr[i] =
-                   pcTmp ? simple_strtoul(pcTmp, &pcEnd, 16) : 0;
-               pcTmp = (*pcTmp) ? pcEnd + 1 : pcEnd;
-       }
-
-       /* configure ethernet address */
-
-       *get_eth_reg_addr(NS7520_ETH_SA1) =
-           aucMACAddr[5] << 8 | aucMACAddr[4];
-       *get_eth_reg_addr(NS7520_ETH_SA2) =
-           aucMACAddr[3] << 8 | aucMACAddr[2];
-       *get_eth_reg_addr(NS7520_ETH_SA3) =
-           aucMACAddr[1] << 8 | aucMACAddr[0];
-
-       /* enable hardware */
-
-       *get_eth_reg_addr(NS7520_ETH_MAC1) = NS7520_ETH_MAC1_RXEN;
-       *get_eth_reg_addr(NS7520_ETH_SUPP) = NS7520_ETH_SUPP_JABBER;
-       *get_eth_reg_addr(NS7520_ETH_MAC1) = NS7520_ETH_MAC1_RXEN;
-
-       /* the linux kernel may give packets < 60 bytes, for example arp */
-       *get_eth_reg_addr(NS7520_ETH_MAC2) = NS7520_ETH_MAC2_CRCEN |
-           NS7520_ETH_MAC2_PADEN | NS7520_ETH_MAC2_HUGE;
-
-       /* Broadcast/multicast allowed; if you don't set this even unicast chokes */
-       /* Based on NS7520 errata documentation */
-       *get_eth_reg_addr(NS7520_ETH_SAFR) =
-           NS7520_ETH_SAFR_BROAD | NS7520_ETH_SAFR_PRM;
-
-       /* enable receive and transmit FIFO, use 10/100 Mbps MII */
-       *get_eth_reg_addr(NS7520_ETH_EGCR) |=
-           NS7520_ETH_EGCR_ETXWM_75 |
-           NS7520_ETH_EGCR_ERX |
-           NS7520_ETH_EGCR_ERXREG |
-           NS7520_ETH_EGCR_ERXBR | NS7520_ETH_EGCR_ETX;
-
-       return 0;
-}
-
-/***********************************************************************
- * @Function: eth_send
- * @Return: -1 on timeout otherwise 1
- * @Descr: sends one frame by DMA
- ***********************************************************************/
-
-int eth_send(volatile void *pPacket, int nLen)
-{
-       int i, length32, retval = 1;
-       char *pa;
-       unsigned int *pa32, lastp = 0, rest;
-       unsigned int status;
-
-       pa = (char *) pPacket;
-       pa32 = (unsigned int *) pPacket;
-       length32 = nLen / 4;
-       rest = nLen % 4;
-
-       /* make sure there's no garbage in the last word */
-       switch (rest) {
-       case 0:
-               lastp = pa32[length32 - 1];
-               length32--;
-               break;
-       case 1:
-               lastp = pa32[length32] & 0x000000ff;
-               break;
-       case 2:
-               lastp = pa32[length32] & 0x0000ffff;
-               break;
-       case 3:
-               lastp = pa32[length32] & 0x00ffffff;
-               break;
-       }
-
-       while (((*get_eth_reg_addr(NS7520_ETH_EGSR)) &
-               NS7520_ETH_EGSR_TXREGE)
-              == 0) {
-       }
-
-       /* write to the fifo */
-       for (i = 0; i < length32; i++)
-               *get_eth_reg_addr(NS7520_ETH_FIFO) = pa32[i];
-
-       /* the last word is written to an extra register, this
-          starts the transmission */
-       *get_eth_reg_addr(NS7520_ETH_FIFOL) = lastp;
-
-       /* Wait for it to be done */
-       while ((*get_eth_reg_addr(NS7520_ETH_EGSR) & NS7520_ETH_EGSR_TXBC)
-              == 0) {
-       }
-       status = (*get_eth_reg_addr(NS7520_ETH_ETSR));
-       *get_eth_reg_addr(NS7520_ETH_EGSR) = NS7520_ETH_EGSR_TXBC;      /* Clear it now */
-
-       if (status & NS7520_ETH_ETSR_TXOK) {
-               retval = 0;     /* We're OK! */
-       } else if (status & NS7520_ETH_ETSR_TXDEF) {
-               printf("Deferred, we'll see.\n");
-               retval = 0;
-       } else if (status & NS7520_ETH_ETSR_TXAL) {
-               printf("Late collision error, %d collisions.\n",
-                      (*get_eth_reg_addr(NS7520_ETH_ETSR)) &
-                      NS7520_ETH_ETSR_TXCOLC);
-       } else if (status & NS7520_ETH_ETSR_TXAEC) {
-               printf("Excessive collisions: %d\n",
-                      (*get_eth_reg_addr(NS7520_ETH_ETSR)) &
-                      NS7520_ETH_ETSR_TXCOLC);
-       } else if (status & NS7520_ETH_ETSR_TXAED) {
-               printf("Excessive deferral on xmit.\n");
-       } else if (status & NS7520_ETH_ETSR_TXAUR) {
-               printf("Packet underrun.\n");
-       } else if (status & NS7520_ETH_ETSR_TXAJ) {
-               printf("Jumbo packet error.\n");
-       } else {
-               printf("Error: Should never get here.\n");
-       }
-
-       return (retval);
-}
-
-/***********************************************************************
- * @Function: eth_rx
- * @Return: size of last frame in bytes or 0 if no frame available
- * @Descr: gives one frame to U-Boot which has been copied by DMA engine already
- *        to NetRxPackets[ 0 ].
- ***********************************************************************/
-
-int eth_rx(void)
-{
-       int i;
-       unsigned short rxlen;
-       unsigned short totrxlen = 0;
-       unsigned int *addr;
-       unsigned int rxstatus, lastrxlen;
-       char *pa;
-
-       /* If RXBR is 1, data block was received */
-       while (((*get_eth_reg_addr(NS7520_ETH_EGSR)) &
-               NS7520_ETH_EGSR_RXBR) == NS7520_ETH_EGSR_RXBR) {
-
-               /* get status register and the length of received block */
-               rxstatus = *get_eth_reg_addr(NS7520_ETH_ERSR);
-               rxlen = (rxstatus & NS7520_ETH_ERSR_RXSIZE) >> 16;
-
-               /* clear RXBR to make fifo available */
-               *get_eth_reg_addr(NS7520_ETH_EGSR) = NS7520_ETH_EGSR_RXBR;
-
-               if (rxstatus & NS7520_ETH_ERSR_ROVER) {
-                       printf("Receive overrun, resetting FIFO.\n");
-                       *get_eth_reg_addr(NS7520_ETH_EGCR) &=
-                           ~NS7520_ETH_EGCR_ERX;
-                       udelay(20);
-                       *get_eth_reg_addr(NS7520_ETH_EGCR) |=
-                           NS7520_ETH_EGCR_ERX;
-               }
-               if (rxlen == 0) {
-                       printf("Nothing.\n");
-                       return 0;
-               }
-
-               addr = (unsigned int *) NetRxPackets[0];
-               pa = (char *) NetRxPackets[0];
-
-               /* read the fifo */
-               for (i = 0; i < rxlen / 4; i++) {
-                       *addr = *get_eth_reg_addr(NS7520_ETH_FIFO);
-                       addr++;
-               }
-
-               if ((*get_eth_reg_addr(NS7520_ETH_EGSR)) &
-                   NS7520_ETH_EGSR_RXREGR) {
-                       /* RXFDB indicates wether the last word is 1,2,3 or 4 bytes long */
-                       lastrxlen =
-                           ((*get_eth_reg_addr(NS7520_ETH_EGSR)) &
-                            NS7520_ETH_EGSR_RXFDB_MA) >> 28;
-                       *addr = *get_eth_reg_addr(NS7520_ETH_FIFO);
-                       switch (lastrxlen) {
-                       case 1:
-                               *addr &= 0xff000000;
-                               break;
-                       case 2:
-                               *addr &= 0xffff0000;
-                               break;
-                       case 3:
-                               *addr &= 0xffffff00;
-                               break;
-                       }
-               }
-
-               /* Pass the packet up to the protocol layers. */
-               NetReceive(NetRxPackets[0], rxlen - 4);
-               totrxlen += rxlen - 4;
-       }
-
-       return totrxlen;
-}
-
-/***********************************************************************
- * @Function: eth_halt
- * @Return: n/a
- * @Descr: stops the ethernet engine
- ***********************************************************************/
-
-void eth_halt(void)
-{
-       DEBUG_FN(DEBUG_INIT);
-
-       *get_eth_reg_addr(NS7520_ETH_MAC1) &= ~NS7520_ETH_MAC1_RXEN;
-       *get_eth_reg_addr(NS7520_ETH_EGCR) &= ~(NS7520_ETH_EGCR_ERX |
-                                               NS7520_ETH_EGCR_ERXDMA |
-                                               NS7520_ETH_EGCR_ERXREG |
-                                               NS7520_ETH_EGCR_ERXBR |
-                                               NS7520_ETH_EGCR_ETX |
-                                               NS7520_ETH_EGCR_ETXDMA);
-}
-
-/***********************************************************************
- * @Function: ns7520_eth_reset
- * @Return: 0 on failure otherwise 1
- * @Descr: resets the ethernet interface and the PHY,
- *        performs auto negotiation or fixed modes
- ***********************************************************************/
-
-static int ns7520_eth_reset(void)
-{
-       DEBUG_FN(DEBUG_MINOR);
-
-       /* Reset important registers */
-       *get_eth_reg_addr(NS7520_ETH_EGCR) = 0; /* Null it out! */
-       *get_eth_reg_addr(NS7520_ETH_MAC1) &= NS7520_ETH_MAC1_SRST;
-       *get_eth_reg_addr(NS7520_ETH_MAC2) = 0;
-       /* Reset MAC */
-       *get_eth_reg_addr(NS7520_ETH_EGCR) |= NS7520_ETH_EGCR_MAC_RES;
-       udelay(5);
-       *get_eth_reg_addr(NS7520_ETH_EGCR) &= ~NS7520_ETH_EGCR_MAC_RES;
-
-       /* reset and initialize PHY */
-
-       *get_eth_reg_addr(NS7520_ETH_MAC1) &= ~NS7520_ETH_MAC1_SRST;
-
-       /* we don't support hot plugging of PHY, therefore we don't reset
-          phyDetected and nPhyMaxMdioClock here. The risk is if the setting is
-          incorrect the first open
-          may detect the PHY correctly but succeding will fail
-          For reseting the PHY and identifying we have to use the standard
-          MDIO CLOCK value 2.5 MHz only after hardware reset
-          After having identified the PHY we will do faster */
-
-       *get_eth_reg_addr(NS7520_ETH_MCFG) =
-           ns7520_mii_get_clock_divisor(nPhyMaxMdioClock);
-
-       /* reset PHY */
-       ns7520_mii_write(PHY_BMCR, PHY_BMCR_RESET);
-       ns7520_mii_write(PHY_BMCR, 0);
-
-       udelay(3000);           /* [2] p.70 says at least 300us reset recovery time. */
-
-       /* MII clock has been setup to default, ns7520_mii_identify_phy should
-          work for all */
-
-       if (!ns7520_mii_identify_phy()) {
-               printk(KERN_ERR NS7520_DRIVER_NAME
-                      ": Unsupported PHY, aborting\n");
-               return 0;
-       }
-
-       /* now take the highest MDIO clock possible after detection */
-       *get_eth_reg_addr(NS7520_ETH_MCFG) =
-           ns7520_mii_get_clock_divisor(nPhyMaxMdioClock);
-
-       /* PHY has been detected, so there can be no abort reason and we can
-          finish initializing ethernet */
-
-       uiLastLinkStatus = 0xff;        /* undefined */
-
-       ns7520_link_auto_negotiate();
-
-       if (phyDetected == PHY_LXT971A)
-               /* set LED2 to link mode */
-               ns7520_mii_write(PHY_LXT971_LED_CFG,
-                                (PHY_LXT971_LED_CFG_LINK_ACT <<
-                                 PHY_LXT971_LED_CFG_SHIFT_LED2) |
-                                (PHY_LXT971_LED_CFG_TRANSMIT <<
-                                 PHY_LXT971_LED_CFG_SHIFT_LED1));
-
-       return 1;
-}
-
-/***********************************************************************
- * @Function: ns7520_link_auto_negotiate
- * @Return: void
- * @Descr: performs auto-negotation of link.
- ***********************************************************************/
-
-static void ns7520_link_auto_negotiate(void)
-{
-       unsigned long ulStartJiffies;
-       unsigned short uiStatus;
-
-       DEBUG_FN(DEBUG_LINK);
-
-       /* run auto-negotation */
-       /* define what we are capable of */
-       ns7520_mii_write(PHY_ANAR,
-                        PHY_ANLPAR_TXFD |
-                        PHY_ANLPAR_TX |
-                        PHY_ANLPAR_10FD |
-                        PHY_ANLPAR_10 |
-                        PHY_ANLPAR_PSB_802_3);
-       /* start auto-negotiation */
-       ns7520_mii_write(PHY_BMCR, PHY_BMCR_AUTON | PHY_BMCR_RST_NEG);
-
-       /* wait for completion */
-
-       ulStartJiffies = get_timer(0);
-       while (get_timer(0) < ulStartJiffies + NS7520_MII_NEG_DELAY) {
-               uiStatus = ns7520_mii_read(PHY_BMSR);
-               if ((uiStatus &
-                    (PHY_BMSR_AUTN_COMP | PHY_BMSR_LS)) ==
-                   (PHY_BMSR_AUTN_COMP | PHY_BMSR_LS)) {
-                       /* lucky we are, auto-negotiation succeeded */
-                       ns7520_link_print_changed();
-                       ns7520_link_update_egcr();
-                       return;
-               }
-       }
-
-       DEBUG_ARGS0(DEBUG_LINK, "auto-negotiation timed out\n");
-       /* ignore invalid link settings */
-}
-
-/***********************************************************************
- * @Function: ns7520_link_update_egcr
- * @Return: void
- * @Descr: updates the EGCR and MAC2 link status after mode change or
- *        auto-negotation
- ***********************************************************************/
-
-static void ns7520_link_update_egcr(void)
-{
-       unsigned int unEGCR;
-       unsigned int unMAC2;
-       unsigned int unIPGT;
-
-       DEBUG_FN(DEBUG_LINK);
-
-       unEGCR = *get_eth_reg_addr(NS7520_ETH_EGCR);
-       unMAC2 = *get_eth_reg_addr(NS7520_ETH_MAC2);
-       unIPGT =
-           *get_eth_reg_addr(NS7520_ETH_IPGT) & ~NS7520_ETH_IPGT_IPGT;
-
-       unEGCR &= ~NS7520_ETH_EGCR_EFULLD;
-       unMAC2 &= ~NS7520_ETH_MAC2_FULLD;
-       if ((uiLastLinkStatus & PHY_LXT971_STAT2_DUPLEX_MODE)
-           == PHY_LXT971_STAT2_DUPLEX_MODE) {
-               unEGCR |= NS7520_ETH_EGCR_EFULLD;
-               unMAC2 |= NS7520_ETH_MAC2_FULLD;
-               unIPGT |= 0x15; /* see [1] p. 167 */
-       } else
-               unIPGT |= 0x12; /* see [1] p. 167 */
-
-       *get_eth_reg_addr(NS7520_ETH_MAC2) = unMAC2;
-       *get_eth_reg_addr(NS7520_ETH_EGCR) = unEGCR;
-       *get_eth_reg_addr(NS7520_ETH_IPGT) = unIPGT;
-}
-
-/***********************************************************************
- * @Function: ns7520_link_print_changed
- * @Return: void
- * @Descr: checks whether the link status has changed and if so prints
- *        the new mode
- ***********************************************************************/
-
-static void ns7520_link_print_changed(void)
-{
-       unsigned short uiStatus;
-       unsigned short uiControl;
-
-       DEBUG_FN(DEBUG_LINK);
-
-       uiControl = ns7520_mii_read(PHY_BMCR);
-
-       if ((uiControl & PHY_BMCR_AUTON) == PHY_BMCR_AUTON) {
-               /* PHY_BMSR_LS is only set on autonegotiation */
-               uiStatus = ns7520_mii_read(PHY_BMSR);
-
-               if (!(uiStatus & PHY_BMSR_LS)) {
-                       printk(KERN_WARNING NS7520_DRIVER_NAME
-                              ": link down\n");
-                       /* @TODO Linux: carrier_off */
-               } else {
-                       /* @TODO Linux: carrier_on */
-                       if (phyDetected == PHY_LXT971A) {
-                               uiStatus =
-                                   ns7520_mii_read(PHY_LXT971_STAT2);
-                               uiStatus &=
-                                   (PHY_LXT971_STAT2_100BTX |
-                                    PHY_LXT971_STAT2_DUPLEX_MODE |
-                                    PHY_LXT971_STAT2_AUTO_NEG);
-
-                               /* mask out all uninteresting parts */
-                       }
-                       /* other PHYs must store there link information in
-                          uiStatus as PHY_LXT971 */
-               }
-       } else {
-               /* mode has been forced, so uiStatus should be the same as the
-                  last link status, enforce printing */
-               uiStatus = uiLastLinkStatus;
-               uiLastLinkStatus = 0xff;
-       }
-
-       if (uiStatus != uiLastLinkStatus) {
-               /* save current link status */
-               uiLastLinkStatus = uiStatus;
-
-               /* print new link status */
-
-               printk(KERN_INFO NS7520_DRIVER_NAME
-                      ": link mode %i Mbps %s duplex %s\n",
-                      (uiStatus & PHY_LXT971_STAT2_100BTX) ? 100 : 10,
-                      (uiStatus & PHY_LXT971_STAT2_DUPLEX_MODE) ? "full" :
-                      "half",
-                      (uiStatus & PHY_LXT971_STAT2_AUTO_NEG) ? "(auto)" :
-                      "");
-       }
-}
-
-/***********************************************************************
- * the MII low level stuff
- ***********************************************************************/
-
-/***********************************************************************
- * @Function: ns7520_mii_identify_phy
- * @Return: 1 if supported PHY has been detected otherwise 0
- * @Descr: checks for supported PHY and prints the IDs.
- ***********************************************************************/
-
-static char ns7520_mii_identify_phy(void)
-{
-       unsigned short uiID1;
-       unsigned short uiID2;
-       unsigned char *szName;
-       char cRes = 0;
-
-       DEBUG_FN(DEBUG_MII);
-
-       phyDetected = (PhyType) uiID1 = ns7520_mii_read(PHY_PHYIDR1);
-
-       switch (phyDetected) {
-       case PHY_LXT971A:
-               szName = "LXT971A";
-               uiID2 = ns7520_mii_read(PHY_PHYIDR2);
-               nPhyMaxMdioClock = PHY_LXT971_MDIO_MAX_CLK;
-               cRes = 1;
-               break;
-       case PHY_NONE:
-       default:
-               /* in case uiID1 == 0 && uiID2 == 0 we may have the wrong
-                  address or reset sets the wrong NS7520_ETH_MCFG_CLKS */
-
-               uiID2 = 0;
-               szName = "unknown";
-               nPhyMaxMdioClock = PHY_MDIO_MAX_CLK;
-               phyDetected = PHY_NONE;
-       }
-
-       printk(KERN_INFO NS7520_DRIVER_NAME
-              ": PHY (0x%x, 0x%x) = %s detected\n", uiID1, uiID2, szName);
-
-       return cRes;
-}
-
-/***********************************************************************
- * @Function: ns7520_mii_read
- * @Return: the data read from PHY register uiRegister
- * @Descr: the data read may be invalid if timed out. If so, a message
- *        is printed but the invalid data is returned.
- *        The fixed device address is being used.
- ***********************************************************************/
-
-static unsigned short ns7520_mii_read(unsigned short uiRegister)
-{
-       DEBUG_FN(DEBUG_MII_LOW);
-
-       /* write MII register to be read */
-       *get_eth_reg_addr(NS7520_ETH_MADR) =
-           CONFIG_PHY_ADDR << 8 | uiRegister;
-
-       *get_eth_reg_addr(NS7520_ETH_MCMD) = NS7520_ETH_MCMD_READ;
-
-       if (!ns7520_mii_poll_busy())
-               printk(KERN_WARNING NS7520_DRIVER_NAME
-                      ": MII still busy in read\n");
-       /* continue to read */
-
-       *get_eth_reg_addr(NS7520_ETH_MCMD) = 0;
-
-       return (unsigned short) (*get_eth_reg_addr(NS7520_ETH_MRDD));
-}
-
-/***********************************************************************
- * @Function: ns7520_mii_write
- * @Return: nothing
- * @Descr: writes the data to the PHY register. In case of a timeout,
- *        no special handling is performed but a message printed
- *        The fixed device address is being used.
- ***********************************************************************/
-
-static void ns7520_mii_write(unsigned short uiRegister,
-                            unsigned short uiData)
-{
-       DEBUG_FN(DEBUG_MII_LOW);
-
-       /* write MII register to be written */
-       *get_eth_reg_addr(NS7520_ETH_MADR) =
-           CONFIG_PHY_ADDR << 8 | uiRegister;
-
-       *get_eth_reg_addr(NS7520_ETH_MWTD) = uiData;
-
-       if (!ns7520_mii_poll_busy()) {
-               printf(KERN_WARNING NS7520_DRIVER_NAME
-                      ": MII still busy in write\n");
-       }
-}
-
-/***********************************************************************
- * @Function: ns7520_mii_get_clock_divisor
- * @Return: the clock divisor that should be used in NS7520_ETH_MCFG_CLKS
- * @Descr: if no clock divisor can be calculated for the
- *        current SYSCLK and the maximum MDIO Clock, a warning is printed
- *        and the greatest divisor is taken
- ***********************************************************************/
-
-static unsigned int ns7520_mii_get_clock_divisor(unsigned int unMaxMDIOClk)
-{
-       struct {
-               unsigned int unSysClkDivisor;
-               unsigned int unClks;    /* field for NS7520_ETH_MCFG_CLKS */
-       } PHYClockDivisors[] = {
-               {
-               4, NS7520_ETH_MCFG_CLKS_4}, {
-               6, NS7520_ETH_MCFG_CLKS_6}, {
-               8, NS7520_ETH_MCFG_CLKS_8}, {
-               10, NS7520_ETH_MCFG_CLKS_10}, {
-               14, NS7520_ETH_MCFG_CLKS_14}, {
-               20, NS7520_ETH_MCFG_CLKS_20}, {
-               28, NS7520_ETH_MCFG_CLKS_28}
-       };
-
-       int nIndexSysClkDiv;
-       int nArraySize =
-           sizeof(PHYClockDivisors) / sizeof(PHYClockDivisors[0]);
-       unsigned int unClks = NS7520_ETH_MCFG_CLKS_28;  /* defaults to
-                                                          greatest div */
-
-       DEBUG_FN(DEBUG_INIT);
-
-       for (nIndexSysClkDiv = 0; nIndexSysClkDiv < nArraySize;
-            nIndexSysClkDiv++) {
-               /* find first sysclock divisor that isn't higher than 2.5 MHz
-                  clock */
-               if (NETARM_XTAL_FREQ /
-                   PHYClockDivisors[nIndexSysClkDiv].unSysClkDivisor <=
-                   unMaxMDIOClk) {
-                       unClks = PHYClockDivisors[nIndexSysClkDiv].unClks;
-                       break;
-               }
-       }
-
-       DEBUG_ARGS2(DEBUG_INIT,
-                   "Taking MDIO Clock bit mask 0x%0x for max clock %i\n",
-                   unClks, unMaxMDIOClk);
-
-       /* return greatest divisor */
-       return unClks;
-}
-
-/***********************************************************************
- * @Function: ns7520_mii_poll_busy
- * @Return: 0 if timed out otherwise the remaing timeout
- * @Descr: waits until the MII has completed a command or it times out
- *        code may be interrupted by hard interrupts.
- *        It is not checked what happens on multiple actions when
- *        the first is still being busy and we timeout.
- ***********************************************************************/
-
-static unsigned int ns7520_mii_poll_busy(void)
-{
-       unsigned int unTimeout = 1000;
-
-       DEBUG_FN(DEBUG_MII_LOW);
-
-       while (((*get_eth_reg_addr(NS7520_ETH_MIND) & NS7520_ETH_MIND_BUSY)
-               == NS7520_ETH_MIND_BUSY) && unTimeout)
-               unTimeout--;
-
-       return unTimeout;
-}
-
-/* ----------------------------------------------------------------------------
- * Net+ARM ethernet MII functionality.
- */
-#if defined(CONFIG_MII)
-
-/**
- * Maximum MII address we support
- */
-#define MII_ADDRESS_MAX                        (31)
-
-/**
- * Maximum MII register address we support
- */
-#define MII_REGISTER_MAX               (31)
-
-/**
- * Ethernet MII interface return values for public functions.
- */
-enum mii_status {
-       MII_STATUS_SUCCESS = 0,
-       MII_STATUS_FAILURE = 1,
-};
-
-/**
- * Read a 16-bit value from an MII register.
- */
-extern int ns7520_miiphy_read(char *devname, unsigned char const addr,
-               unsigned char const reg, unsigned short *const value)
-{
-       int ret = MII_STATUS_FAILURE;
-
-       /* Parameter checks */
-       if (addr > MII_ADDRESS_MAX) {
-               ERROR(("invalid addr, 0x%02X", addr));
-               goto miiphy_read_failed_0;
-       }
-
-       if (reg > MII_REGISTER_MAX) {
-               ERROR(("invalid reg, 0x%02X", reg));
-               goto miiphy_read_failed_0;
-       }
-
-       if (value == NULL) {
-               ERROR(("NULL value"));
-               goto miiphy_read_failed_0;
-       }
-
-       DEBUG_FN(DEBUG_MII_LOW);
-
-       /* write MII register to be read */
-       *get_eth_reg_addr(NS7520_ETH_MADR) = (addr << 8) | reg;
-
-       *get_eth_reg_addr(NS7520_ETH_MCMD) = NS7520_ETH_MCMD_READ;
-
-       if (!ns7520_mii_poll_busy())
-               printk(KERN_WARNING NS7520_DRIVER_NAME
-                      ": MII still busy in read\n");
-       /* continue to read */
-
-       *get_eth_reg_addr(NS7520_ETH_MCMD) = 0;
-
-       *value = (*get_eth_reg_addr(NS7520_ETH_MRDD));
-       ret = MII_STATUS_SUCCESS;
-       /* Fall through */
-
-      miiphy_read_failed_0:
-       return (ret);
-}
-
-/**
- * Write a 16-bit value to an MII register.
- */
-extern int ns7520_miiphy_write(char *devname, unsigned char const addr,
-               unsigned char const reg, unsigned short const value)
-{
-       int ret = MII_STATUS_FAILURE;
-
-       /* Parameter checks */
-       if (addr > MII_ADDRESS_MAX) {
-               ERROR(("invalid addr, 0x%02X", addr));
-               goto miiphy_write_failed_0;
-       }
-
-       if (reg > MII_REGISTER_MAX) {
-               ERROR(("invalid reg, 0x%02X", reg));
-               goto miiphy_write_failed_0;
-       }
-
-       /* write MII register to be written */
-       *get_eth_reg_addr(NS7520_ETH_MADR) = (addr << 8) | reg;
-
-       *get_eth_reg_addr(NS7520_ETH_MWTD) = value;
-
-       if (!ns7520_mii_poll_busy()) {
-               printf(KERN_WARNING NS7520_DRIVER_NAME
-                      ": MII still busy in write\n");
-       }
-
-       ret = MII_STATUS_SUCCESS;
-       /* Fall through */
-
-      miiphy_write_failed_0:
-       return (ret);
-}
-#endif                         /* defined(CONFIG_MII) */
-
-int ns7520_miiphy_initialize(bd_t *bis)
-{
-#if defined(CONFIG_MII)
-       miiphy_register("ns7520phy", ns7520_miiphy_read, ns7520_miiphy_write);
-#endif
-       return 0;
-}
+/***********************************************************************
+ *
+ * Copyright (C) 2005 by Videon Central, Inc.
+ *
+ * $Id: ns7520_eth.c,v 1.1.1.1 2009/03/25 22:22:09 kenagy Exp $
+ * @Author: Arthur Shipkowski
+ * @Descr: Ethernet driver for the NS7520. Uses polled Ethernet, like
+ *     the older netarmeth driver.  Note that attempting to filter
+ *     broadcast and multicast out in the SAFR register will cause
+ *     bad things due to released errata.
+ * @References: [1] NS7520 Hardware Reference, December 2003
+ *             [2] Intel LXT971 Datasheet #249414 Rev. 02
+ *
+ ***********************************************************************/
+
+#include <common.h>
+
+#include <net.h>               /* NetSendPacket */
+#include <asm/arch/netarm_registers.h>
+#include <asm/arch/netarm_dma_module.h>
+
+#include "ns7520_eth.h"                /* for Ethernet and PHY */
+
+/**
+ * Send an error message to the terminal.
+ */
+#define ERROR(x) \
+do { \
+       char *__foo = strrchr(__FILE__, '/'); \
+       \
+       printf("%s: %d: %s(): ", (__foo == NULL ? __FILE__ : (__foo + 1)), \
+                       __LINE__, __FUNCTION__); \
+       printf x; printf("\n"); \
+} while (0);
+
+/* some definition to make transistion to linux easier */
+
+#define NS7520_DRIVER_NAME     "eth"
+#define KERN_WARNING           "Warning:"
+#define KERN_ERR               "Error:"
+#define KERN_INFO              "Info:"
+
+#if 1
+# define DEBUG
+#endif
+
+#ifdef DEBUG
+# define printk                        printf
+
+# define DEBUG_INIT            0x0001
+# define DEBUG_MINOR           0x0002
+# define DEBUG_RX              0x0004
+# define DEBUG_TX              0x0008
+# define DEBUG_INT             0x0010
+# define DEBUG_POLL            0x0020
+# define DEBUG_LINK            0x0040
+# define DEBUG_MII             0x0100
+# define DEBUG_MII_LOW         0x0200
+# define DEBUG_MEM             0x0400
+# define DEBUG_ERROR           0x4000
+# define DEBUG_ERROR_CRIT      0x8000
+
+static int nDebugLvl = DEBUG_ERROR_CRIT;
+
+# define DEBUG_ARGS0( FLG, a0 ) if( ( nDebugLvl & (FLG) ) == (FLG) ) \
+               printf("%s: " a0, __FUNCTION__, 0, 0, 0, 0, 0, 0 )
+# define DEBUG_ARGS1( FLG, a0, a1 ) if( ( nDebugLvl & (FLG) ) == (FLG)) \
+               printf("%s: " a0, __FUNCTION__, (int)(a1), 0, 0, 0, 0, 0 )
+# define DEBUG_ARGS2( FLG, a0, a1, a2 ) if( (nDebugLvl & (FLG)) ==(FLG))\
+               printf("%s: " a0, __FUNCTION__, (int)(a1), (int)(a2), 0, 0,0,0 )
+# define DEBUG_ARGS3( FLG, a0, a1, a2, a3 ) if((nDebugLvl &(FLG))==(FLG))\
+               printf("%s: "a0,__FUNCTION__,(int)(a1),(int)(a2),(int)(a3),0,0,0)
+# define DEBUG_FN( FLG ) if( (nDebugLvl & (FLG)) == (FLG) ) \
+               printf("\r%s:line %d\n", (int)__FUNCTION__, __LINE__, 0,0,0,0);
+# define ASSERT( expr, func ) if( !( expr ) ) { \
+               printf( "Assertion failed! %s:line %d %s\n", \
+               (int)__FUNCTION__,__LINE__,(int)(#expr),0,0,0); \
+               func }
+#else                          /* DEBUG */
+# define printk(...)
+# define DEBUG_ARGS0( FLG, a0 )
+# define DEBUG_ARGS1( FLG, a0, a1 )
+# define DEBUG_ARGS2( FLG, a0, a1, a2 )
+# define DEBUG_ARGS3( FLG, a0, a1, a2, a3 )
+# define DEBUG_FN( n )
+# define ASSERT(expr, func)
+#endif                         /* DEBUG */
+
+#define NS7520_MII_NEG_DELAY           (5*CONFIG_SYS_HZ)       /* in s */
+#define TX_TIMEOUT                     (5*CONFIG_SYS_HZ)       /* in s */
+#define RX_STALL_WORKAROUND_CNT 100
+
+static int ns7520_eth_reset(void);
+
+static void ns7520_link_auto_negotiate(void);
+static void ns7520_link_update_egcr(void);
+static void ns7520_link_print_changed(void);
+
+/* the PHY stuff */
+
+static char ns7520_mii_identify_phy(void);
+static unsigned short ns7520_mii_read(unsigned short uiRegister);
+static void ns7520_mii_write(unsigned short uiRegister,
+                            unsigned short uiData);
+static unsigned int ns7520_mii_get_clock_divisor(unsigned int
+                                                unMaxMDIOClk);
+static unsigned int ns7520_mii_poll_busy(void);
+
+static unsigned int nPhyMaxMdioClock = PHY_MDIO_MAX_CLK;
+static unsigned int uiLastLinkStatus;
+static PhyType phyDetected = PHY_NONE;
+
+/***********************************************************************
+ * @Function: eth_init
+ * @Return: -1 on failure otherwise 0
+ * @Descr: Initializes the ethernet engine and uses either FS Forth's default
+ *        MAC addr or the one in environment
+ ***********************************************************************/
+
+int eth_init(bd_t * pbis)
+{
+       unsigned char aucMACAddr[6];
+       char *pcTmp = getenv("ethaddr");
+       char *pcEnd;
+       int i;
+
+       DEBUG_FN(DEBUG_INIT);
+
+       /* no need to check for hardware */
+
+       if (!ns7520_eth_reset())
+               return -1;
+
+       if (NULL == pcTmp)
+               return -1;
+
+       for (i = 0; i < 6; i++) {
+               aucMACAddr[i] =
+                   pcTmp ? simple_strtoul(pcTmp, &pcEnd, 16) : 0;
+               pcTmp = (*pcTmp) ? pcEnd + 1 : pcEnd;
+       }
+
+       /* configure ethernet address */
+
+       *get_eth_reg_addr(NS7520_ETH_SA1) =
+           aucMACAddr[5] << 8 | aucMACAddr[4];
+       *get_eth_reg_addr(NS7520_ETH_SA2) =
+           aucMACAddr[3] << 8 | aucMACAddr[2];
+       *get_eth_reg_addr(NS7520_ETH_SA3) =
+           aucMACAddr[1] << 8 | aucMACAddr[0];
+
+       /* enable hardware */
+
+       *get_eth_reg_addr(NS7520_ETH_MAC1) = NS7520_ETH_MAC1_RXEN;
+       *get_eth_reg_addr(NS7520_ETH_SUPP) = NS7520_ETH_SUPP_JABBER;
+       *get_eth_reg_addr(NS7520_ETH_MAC1) = NS7520_ETH_MAC1_RXEN;
+
+       /* the linux kernel may give packets < 60 bytes, for example arp */
+       *get_eth_reg_addr(NS7520_ETH_MAC2) = NS7520_ETH_MAC2_CRCEN |
+           NS7520_ETH_MAC2_PADEN | NS7520_ETH_MAC2_HUGE;
+
+       /* Broadcast/multicast allowed; if you don't set this even unicast chokes */
+       /* Based on NS7520 errata documentation */
+       *get_eth_reg_addr(NS7520_ETH_SAFR) =
+           NS7520_ETH_SAFR_BROAD | NS7520_ETH_SAFR_PRM;
+
+       /* enable receive and transmit FIFO, use 10/100 Mbps MII */
+       *get_eth_reg_addr(NS7520_ETH_EGCR) |=
+           NS7520_ETH_EGCR_ETXWM_75 |
+           NS7520_ETH_EGCR_ERX |
+           NS7520_ETH_EGCR_ERXREG |
+           NS7520_ETH_EGCR_ERXBR | NS7520_ETH_EGCR_ETX;
+
+       return 0;
+}
+
+/***********************************************************************
+ * @Function: eth_send
+ * @Return: -1 on timeout otherwise 1
+ * @Descr: sends one frame by DMA
+ ***********************************************************************/
+
+int eth_send(volatile void *pPacket, int nLen)
+{
+       int i, length32, retval = 1;
+       char *pa;
+       unsigned int *pa32, lastp = 0, rest;
+       unsigned int status;
+
+       pa = (char *) pPacket;
+       pa32 = (unsigned int *) pPacket;
+       length32 = nLen / 4;
+       rest = nLen % 4;
+
+       /* make sure there's no garbage in the last word */
+       switch (rest) {
+       case 0:
+               lastp = pa32[length32 - 1];
+               length32--;
+               break;
+       case 1:
+               lastp = pa32[length32] & 0x000000ff;
+               break;
+       case 2:
+               lastp = pa32[length32] & 0x0000ffff;
+               break;
+       case 3:
+               lastp = pa32[length32] & 0x00ffffff;
+               break;
+       }
+
+       while (((*get_eth_reg_addr(NS7520_ETH_EGSR)) &
+               NS7520_ETH_EGSR_TXREGE)
+              == 0) {
+       }
+
+       /* write to the fifo */
+       for (i = 0; i < length32; i++)
+               *get_eth_reg_addr(NS7520_ETH_FIFO) = pa32[i];
+
+       /* the last word is written to an extra register, this
+          starts the transmission */
+       *get_eth_reg_addr(NS7520_ETH_FIFOL) = lastp;
+
+       /* Wait for it to be done */
+       while ((*get_eth_reg_addr(NS7520_ETH_EGSR) & NS7520_ETH_EGSR_TXBC)
+              == 0) {
+       }
+       status = (*get_eth_reg_addr(NS7520_ETH_ETSR));
+       *get_eth_reg_addr(NS7520_ETH_EGSR) = NS7520_ETH_EGSR_TXBC;      /* Clear it now */
+
+       if (status & NS7520_ETH_ETSR_TXOK) {
+               retval = 0;     /* We're OK! */
+       } else if (status & NS7520_ETH_ETSR_TXDEF) {
+               printf("Deferred, we'll see.\n");
+               retval = 0;
+       } else if (status & NS7520_ETH_ETSR_TXAL) {
+               printf("Late collision error, %d collisions.\n",
+                      (*get_eth_reg_addr(NS7520_ETH_ETSR)) &
+                      NS7520_ETH_ETSR_TXCOLC);
+       } else if (status & NS7520_ETH_ETSR_TXAEC) {
+               printf("Excessive collisions: %d\n",
+                      (*get_eth_reg_addr(NS7520_ETH_ETSR)) &
+                      NS7520_ETH_ETSR_TXCOLC);
+       } else if (status & NS7520_ETH_ETSR_TXAED) {
+               printf("Excessive deferral on xmit.\n");
+       } else if (status & NS7520_ETH_ETSR_TXAUR) {
+               printf("Packet underrun.\n");
+       } else if (status & NS7520_ETH_ETSR_TXAJ) {
+               printf("Jumbo packet error.\n");
+       } else {
+               printf("Error: Should never get here.\n");
+       }
+
+       return (retval);
+}
+
+/***********************************************************************
+ * @Function: eth_rx
+ * @Return: size of last frame in bytes or 0 if no frame available
+ * @Descr: gives one frame to U-Boot which has been copied by DMA engine already
+ *        to NetRxPackets[ 0 ].
+ ***********************************************************************/
+
+int eth_rx(void)
+{
+       int i;
+       unsigned short rxlen;
+       unsigned short totrxlen = 0;
+       unsigned int *addr;
+       unsigned int rxstatus, lastrxlen;
+       char *pa;
+
+       /* If RXBR is 1, data block was received */
+       while (((*get_eth_reg_addr(NS7520_ETH_EGSR)) &
+               NS7520_ETH_EGSR_RXBR) == NS7520_ETH_EGSR_RXBR) {
+
+               /* get status register and the length of received block */
+               rxstatus = *get_eth_reg_addr(NS7520_ETH_ERSR);
+               rxlen = (rxstatus & NS7520_ETH_ERSR_RXSIZE) >> 16;
+
+               /* clear RXBR to make fifo available */
+               *get_eth_reg_addr(NS7520_ETH_EGSR) = NS7520_ETH_EGSR_RXBR;
+
+               if (rxstatus & NS7520_ETH_ERSR_ROVER) {
+                       printf("Receive overrun, resetting FIFO.\n");
+                       *get_eth_reg_addr(NS7520_ETH_EGCR) &=
+                           ~NS7520_ETH_EGCR_ERX;
+                       udelay(20);
+                       *get_eth_reg_addr(NS7520_ETH_EGCR) |=
+                           NS7520_ETH_EGCR_ERX;
+               }
+               if (rxlen == 0) {
+                       printf("Nothing.\n");
+                       return 0;
+               }
+
+               addr = (unsigned int *) NetRxPackets[0];
+               pa = (char *) NetRxPackets[0];
+
+               /* read the fifo */
+               for (i = 0; i < rxlen / 4; i++) {
+                       *addr = *get_eth_reg_addr(NS7520_ETH_FIFO);
+                       addr++;
+               }
+
+               if ((*get_eth_reg_addr(NS7520_ETH_EGSR)) &
+                   NS7520_ETH_EGSR_RXREGR) {
+                       /* RXFDB indicates wether the last word is 1,2,3 or 4 bytes long */
+                       lastrxlen =
+                           ((*get_eth_reg_addr(NS7520_ETH_EGSR)) &
+                            NS7520_ETH_EGSR_RXFDB_MA) >> 28;
+                       *addr = *get_eth_reg_addr(NS7520_ETH_FIFO);
+                       switch (lastrxlen) {
+                       case 1:
+                               *addr &= 0xff000000;
+                               break;
+                       case 2:
+                               *addr &= 0xffff0000;
+                               break;
+                       case 3:
+                               *addr &= 0xffffff00;
+                               break;
+                       }
+               }
+
+               /* Pass the packet up to the protocol layers. */
+               NetReceive(NetRxPackets[0], rxlen - 4);
+               totrxlen += rxlen - 4;
+       }
+
+       return totrxlen;
+}
+
+/***********************************************************************
+ * @Function: eth_halt
+ * @Return: n/a
+ * @Descr: stops the ethernet engine
+ ***********************************************************************/
+
+void eth_halt(void)
+{
+       DEBUG_FN(DEBUG_INIT);
+
+       *get_eth_reg_addr(NS7520_ETH_MAC1) &= ~NS7520_ETH_MAC1_RXEN;
+       *get_eth_reg_addr(NS7520_ETH_EGCR) &= ~(NS7520_ETH_EGCR_ERX |
+                                               NS7520_ETH_EGCR_ERXDMA |
+                                               NS7520_ETH_EGCR_ERXREG |
+                                               NS7520_ETH_EGCR_ERXBR |
+                                               NS7520_ETH_EGCR_ETX |
+                                               NS7520_ETH_EGCR_ETXDMA);
+}
+
+/***********************************************************************
+ * @Function: ns7520_eth_reset
+ * @Return: 0 on failure otherwise 1
+ * @Descr: resets the ethernet interface and the PHY,
+ *        performs auto negotiation or fixed modes
+ ***********************************************************************/
+
+static int ns7520_eth_reset(void)
+{
+       DEBUG_FN(DEBUG_MINOR);
+
+       /* Reset important registers */
+       *get_eth_reg_addr(NS7520_ETH_EGCR) = 0; /* Null it out! */
+       *get_eth_reg_addr(NS7520_ETH_MAC1) &= NS7520_ETH_MAC1_SRST;
+       *get_eth_reg_addr(NS7520_ETH_MAC2) = 0;
+       /* Reset MAC */
+       *get_eth_reg_addr(NS7520_ETH_EGCR) |= NS7520_ETH_EGCR_MAC_RES;
+       udelay(5);
+       *get_eth_reg_addr(NS7520_ETH_EGCR) &= ~NS7520_ETH_EGCR_MAC_RES;
+
+       /* reset and initialize PHY */
+
+       *get_eth_reg_addr(NS7520_ETH_MAC1) &= ~NS7520_ETH_MAC1_SRST;
+
+       /* we don't support hot plugging of PHY, therefore we don't reset
+          phyDetected and nPhyMaxMdioClock here. The risk is if the setting is
+          incorrect the first open
+          may detect the PHY correctly but succeding will fail
+          For reseting the PHY and identifying we have to use the standard
+          MDIO CLOCK value 2.5 MHz only after hardware reset
+          After having identified the PHY we will do faster */
+
+       *get_eth_reg_addr(NS7520_ETH_MCFG) =
+           ns7520_mii_get_clock_divisor(nPhyMaxMdioClock);
+
+       /* reset PHY */
+       ns7520_mii_write(PHY_BMCR, PHY_BMCR_RESET);
+       ns7520_mii_write(PHY_BMCR, 0);
+
+       udelay(3000);           /* [2] p.70 says at least 300us reset recovery time. */
+
+       /* MII clock has been setup to default, ns7520_mii_identify_phy should
+          work for all */
+
+       if (!ns7520_mii_identify_phy()) {
+               printk(KERN_ERR NS7520_DRIVER_NAME
+                      ": Unsupported PHY, aborting\n");
+               return 0;
+       }
+
+       /* now take the highest MDIO clock possible after detection */
+       *get_eth_reg_addr(NS7520_ETH_MCFG) =
+           ns7520_mii_get_clock_divisor(nPhyMaxMdioClock);
+
+       /* PHY has been detected, so there can be no abort reason and we can
+          finish initializing ethernet */
+
+       uiLastLinkStatus = 0xff;        /* undefined */
+
+       ns7520_link_auto_negotiate();
+
+       if (phyDetected == PHY_LXT971A)
+               /* set LED2 to link mode */
+               ns7520_mii_write(PHY_LXT971_LED_CFG,
+                                (PHY_LXT971_LED_CFG_LINK_ACT <<
+                                 PHY_LXT971_LED_CFG_SHIFT_LED2) |
+                                (PHY_LXT971_LED_CFG_TRANSMIT <<
+                                 PHY_LXT971_LED_CFG_SHIFT_LED1));
+
+       return 1;
+}
+
+/***********************************************************************
+ * @Function: ns7520_link_auto_negotiate
+ * @Return: void
+ * @Descr: performs auto-negotation of link.
+ ***********************************************************************/
+
+static void ns7520_link_auto_negotiate(void)
+{
+       unsigned long ulStartJiffies;
+       unsigned short uiStatus;
+
+       DEBUG_FN(DEBUG_LINK);
+
+       /* run auto-negotation */
+       /* define what we are capable of */
+       ns7520_mii_write(PHY_ANAR,
+                        PHY_ANLPAR_TXFD |
+                        PHY_ANLPAR_TX |
+                        PHY_ANLPAR_10FD |
+                        PHY_ANLPAR_10 |
+                        PHY_ANLPAR_PSB_802_3);
+       /* start auto-negotiation */
+       ns7520_mii_write(PHY_BMCR, PHY_BMCR_AUTON | PHY_BMCR_RST_NEG);
+
+       /* wait for completion */
+
+       ulStartJiffies = get_timer(0);
+       while (get_timer(0) < ulStartJiffies + NS7520_MII_NEG_DELAY) {
+               uiStatus = ns7520_mii_read(PHY_BMSR);
+               if ((uiStatus &
+                    (PHY_BMSR_AUTN_COMP | PHY_BMSR_LS)) ==
+                   (PHY_BMSR_AUTN_COMP | PHY_BMSR_LS)) {
+                       /* lucky we are, auto-negotiation succeeded */
+                       ns7520_link_print_changed();
+                       ns7520_link_update_egcr();
+                       return;
+               }
+       }
+
+       DEBUG_ARGS0(DEBUG_LINK, "auto-negotiation timed out\n");
+       /* ignore invalid link settings */
+}
+
+/***********************************************************************
+ * @Function: ns7520_link_update_egcr
+ * @Return: void
+ * @Descr: updates the EGCR and MAC2 link status after mode change or
+ *        auto-negotation
+ ***********************************************************************/
+
+static void ns7520_link_update_egcr(void)
+{
+       unsigned int unEGCR;
+       unsigned int unMAC2;
+       unsigned int unIPGT;
+
+       DEBUG_FN(DEBUG_LINK);
+
+       unEGCR = *get_eth_reg_addr(NS7520_ETH_EGCR);
+       unMAC2 = *get_eth_reg_addr(NS7520_ETH_MAC2);
+       unIPGT =
+           *get_eth_reg_addr(NS7520_ETH_IPGT) & ~NS7520_ETH_IPGT_IPGT;
+
+       unEGCR &= ~NS7520_ETH_EGCR_EFULLD;
+       unMAC2 &= ~NS7520_ETH_MAC2_FULLD;
+       if ((uiLastLinkStatus & PHY_LXT971_STAT2_DUPLEX_MODE)
+           == PHY_LXT971_STAT2_DUPLEX_MODE) {
+               unEGCR |= NS7520_ETH_EGCR_EFULLD;
+               unMAC2 |= NS7520_ETH_MAC2_FULLD;
+               unIPGT |= 0x15; /* see [1] p. 167 */
+       } else
+               unIPGT |= 0x12; /* see [1] p. 167 */
+
+       *get_eth_reg_addr(NS7520_ETH_MAC2) = unMAC2;
+       *get_eth_reg_addr(NS7520_ETH_EGCR) = unEGCR;
+       *get_eth_reg_addr(NS7520_ETH_IPGT) = unIPGT;
+}
+
+/***********************************************************************
+ * @Function: ns7520_link_print_changed
+ * @Return: void
+ * @Descr: checks whether the link status has changed and if so prints
+ *        the new mode
+ ***********************************************************************/
+
+static void ns7520_link_print_changed(void)
+{
+       unsigned short uiStatus;
+       unsigned short uiControl;
+
+       DEBUG_FN(DEBUG_LINK);
+
+       uiControl = ns7520_mii_read(PHY_BMCR);
+
+       if ((uiControl & PHY_BMCR_AUTON) == PHY_BMCR_AUTON) {
+               /* PHY_BMSR_LS is only set on autonegotiation */
+               uiStatus = ns7520_mii_read(PHY_BMSR);
+
+               if (!(uiStatus & PHY_BMSR_LS)) {
+                       printk(KERN_WARNING NS7520_DRIVER_NAME
+                              ": link down\n");
+                       /* @TODO Linux: carrier_off */
+               } else {
+                       /* @TODO Linux: carrier_on */
+                       if (phyDetected == PHY_LXT971A) {
+                               uiStatus =
+                                   ns7520_mii_read(PHY_LXT971_STAT2);
+                               uiStatus &=
+                                   (PHY_LXT971_STAT2_100BTX |
+                                    PHY_LXT971_STAT2_DUPLEX_MODE |
+                                    PHY_LXT971_STAT2_AUTO_NEG);
+
+                               /* mask out all uninteresting parts */
+                       }
+                       /* other PHYs must store there link information in
+                          uiStatus as PHY_LXT971 */
+               }
+       } else {
+               /* mode has been forced, so uiStatus should be the same as the
+                  last link status, enforce printing */
+               uiStatus = uiLastLinkStatus;
+               uiLastLinkStatus = 0xff;
+       }
+
+       if (uiStatus != uiLastLinkStatus) {
+               /* save current link status */
+               uiLastLinkStatus = uiStatus;
+
+               /* print new link status */
+
+               printk(KERN_INFO NS7520_DRIVER_NAME
+                      ": link mode %i Mbps %s duplex %s\n",
+                      (uiStatus & PHY_LXT971_STAT2_100BTX) ? 100 : 10,
+                      (uiStatus & PHY_LXT971_STAT2_DUPLEX_MODE) ? "full" :
+                      "half",
+                      (uiStatus & PHY_LXT971_STAT2_AUTO_NEG) ? "(auto)" :
+                      "");
+       }
+}
+
+/***********************************************************************
+ * the MII low level stuff
+ ***********************************************************************/
+
+/***********************************************************************
+ * @Function: ns7520_mii_identify_phy
+ * @Return: 1 if supported PHY has been detected otherwise 0
+ * @Descr: checks for supported PHY and prints the IDs.
+ ***********************************************************************/
+
+static char ns7520_mii_identify_phy(void)
+{
+       unsigned short uiID1;
+       unsigned short uiID2;
+       unsigned char *szName;
+       char cRes = 0;
+
+       DEBUG_FN(DEBUG_MII);
+
+       phyDetected = (PhyType) uiID1 = ns7520_mii_read(PHY_PHYIDR1);
+
+       switch (phyDetected) {
+       case PHY_LXT971A:
+               szName = "LXT971A";
+               uiID2 = ns7520_mii_read(PHY_PHYIDR2);
+               nPhyMaxMdioClock = PHY_LXT971_MDIO_MAX_CLK;
+               cRes = 1;
+               break;
+       case PHY_NONE:
+       default:
+               /* in case uiID1 == 0 && uiID2 == 0 we may have the wrong
+                  address or reset sets the wrong NS7520_ETH_MCFG_CLKS */
+
+               uiID2 = 0;
+               szName = "unknown";
+               nPhyMaxMdioClock = PHY_MDIO_MAX_CLK;
+               phyDetected = PHY_NONE;
+       }
+
+       printk(KERN_INFO NS7520_DRIVER_NAME
+              ": PHY (0x%x, 0x%x) = %s detected\n", uiID1, uiID2, szName);
+
+       return cRes;
+}
+
+/***********************************************************************
+ * @Function: ns7520_mii_read
+ * @Return: the data read from PHY register uiRegister
+ * @Descr: the data read may be invalid if timed out. If so, a message
+ *        is printed but the invalid data is returned.
+ *        The fixed device address is being used.
+ ***********************************************************************/
+
+static unsigned short ns7520_mii_read(unsigned short uiRegister)
+{
+       DEBUG_FN(DEBUG_MII_LOW);
+
+       /* write MII register to be read */
+       *get_eth_reg_addr(NS7520_ETH_MADR) =
+           CONFIG_PHY_ADDR << 8 | uiRegister;
+
+       *get_eth_reg_addr(NS7520_ETH_MCMD) = NS7520_ETH_MCMD_READ;
+
+       if (!ns7520_mii_poll_busy())
+               printk(KERN_WARNING NS7520_DRIVER_NAME
+                      ": MII still busy in read\n");
+       /* continue to read */
+
+       *get_eth_reg_addr(NS7520_ETH_MCMD) = 0;
+
+       return (unsigned short) (*get_eth_reg_addr(NS7520_ETH_MRDD));
+}
+
+/***********************************************************************
+ * @Function: ns7520_mii_write
+ * @Return: nothing
+ * @Descr: writes the data to the PHY register. In case of a timeout,
+ *        no special handling is performed but a message printed
+ *        The fixed device address is being used.
+ ***********************************************************************/
+
+static void ns7520_mii_write(unsigned short uiRegister,
+                            unsigned short uiData)
+{
+       DEBUG_FN(DEBUG_MII_LOW);
+
+       /* write MII register to be written */
+       *get_eth_reg_addr(NS7520_ETH_MADR) =
+           CONFIG_PHY_ADDR << 8 | uiRegister;
+
+       *get_eth_reg_addr(NS7520_ETH_MWTD) = uiData;
+
+       if (!ns7520_mii_poll_busy()) {
+               printf(KERN_WARNING NS7520_DRIVER_NAME
+                      ": MII still busy in write\n");
+       }
+}
+
+/***********************************************************************
+ * @Function: ns7520_mii_get_clock_divisor
+ * @Return: the clock divisor that should be used in NS7520_ETH_MCFG_CLKS
+ * @Descr: if no clock divisor can be calculated for the
+ *        current SYSCLK and the maximum MDIO Clock, a warning is printed
+ *        and the greatest divisor is taken
+ ***********************************************************************/
+
+static unsigned int ns7520_mii_get_clock_divisor(unsigned int unMaxMDIOClk)
+{
+       struct {
+               unsigned int unSysClkDivisor;
+               unsigned int unClks;    /* field for NS7520_ETH_MCFG_CLKS */
+       } PHYClockDivisors[] = {
+               {
+               4, NS7520_ETH_MCFG_CLKS_4}, {
+               6, NS7520_ETH_MCFG_CLKS_6}, {
+               8, NS7520_ETH_MCFG_CLKS_8}, {
+               10, NS7520_ETH_MCFG_CLKS_10}, {
+               14, NS7520_ETH_MCFG_CLKS_14}, {
+               20, NS7520_ETH_MCFG_CLKS_20}, {
+               28, NS7520_ETH_MCFG_CLKS_28}
+       };
+
+       int nIndexSysClkDiv;
+       int nArraySize =
+           sizeof(PHYClockDivisors) / sizeof(PHYClockDivisors[0]);
+       unsigned int unClks = NS7520_ETH_MCFG_CLKS_28;  /* defaults to
+                                                          greatest div */
+
+       DEBUG_FN(DEBUG_INIT);
+
+       for (nIndexSysClkDiv = 0; nIndexSysClkDiv < nArraySize;
+            nIndexSysClkDiv++) {
+               /* find first sysclock divisor that isn't higher than 2.5 MHz
+                  clock */
+               if (NETARM_XTAL_FREQ /
+                   PHYClockDivisors[nIndexSysClkDiv].unSysClkDivisor <=
+                   unMaxMDIOClk) {
+                       unClks = PHYClockDivisors[nIndexSysClkDiv].unClks;
+                       break;
+               }
+       }
+
+       DEBUG_ARGS2(DEBUG_INIT,
+                   "Taking MDIO Clock bit mask 0x%0x for max clock %i\n",
+                   unClks, unMaxMDIOClk);
+
+       /* return greatest divisor */
+       return unClks;
+}
+
+/***********************************************************************
+ * @Function: ns7520_mii_poll_busy
+ * @Return: 0 if timed out otherwise the remaing timeout
+ * @Descr: waits until the MII has completed a command or it times out
+ *        code may be interrupted by hard interrupts.
+ *        It is not checked what happens on multiple actions when
+ *        the first is still being busy and we timeout.
+ ***********************************************************************/
+
+static unsigned int ns7520_mii_poll_busy(void)
+{
+       unsigned int unTimeout = 1000;
+
+       DEBUG_FN(DEBUG_MII_LOW);
+
+       while (((*get_eth_reg_addr(NS7520_ETH_MIND) & NS7520_ETH_MIND_BUSY)
+               == NS7520_ETH_MIND_BUSY) && unTimeout)
+               unTimeout--;
+
+       return unTimeout;
+}
+
+/* ----------------------------------------------------------------------------
+ * Net+ARM ethernet MII functionality.
+ */
+#if defined(CONFIG_MII)
+
+/**
+ * Maximum MII address we support
+ */
+#define MII_ADDRESS_MAX                        (31)
+
+/**
+ * Maximum MII register address we support
+ */
+#define MII_REGISTER_MAX               (31)
+
+/**
+ * Ethernet MII interface return values for public functions.
+ */
+enum mii_status {
+       MII_STATUS_SUCCESS = 0,
+       MII_STATUS_FAILURE = 1,
+};
+
+/**
+ * Read a 16-bit value from an MII register.
+ */
+extern int ns7520_miiphy_read(char *devname, unsigned char const addr,
+               unsigned char const reg, unsigned short *const value)
+{
+       int ret = MII_STATUS_FAILURE;
+
+       /* Parameter checks */
+       if (addr > MII_ADDRESS_MAX) {
+               ERROR(("invalid addr, 0x%02X", addr));
+               goto miiphy_read_failed_0;
+       }
+
+       if (reg > MII_REGISTER_MAX) {
+               ERROR(("invalid reg, 0x%02X", reg));
+               goto miiphy_read_failed_0;
+       }
+
+       if (value == NULL) {
+               ERROR(("NULL value"));
+               goto miiphy_read_failed_0;
+       }
+
+       DEBUG_FN(DEBUG_MII_LOW);
+
+       /* write MII register to be read */
+       *get_eth_reg_addr(NS7520_ETH_MADR) = (addr << 8) | reg;
+
+       *get_eth_reg_addr(NS7520_ETH_MCMD) = NS7520_ETH_MCMD_READ;
+
+       if (!ns7520_mii_poll_busy())
+               printk(KERN_WARNING NS7520_DRIVER_NAME
+                      ": MII still busy in read\n");
+       /* continue to read */
+
+       *get_eth_reg_addr(NS7520_ETH_MCMD) = 0;
+
+       *value = (*get_eth_reg_addr(NS7520_ETH_MRDD));
+       ret = MII_STATUS_SUCCESS;
+       /* Fall through */
+
+      miiphy_read_failed_0:
+       return (ret);
+}
+
+/**
+ * Write a 16-bit value to an MII register.
+ */
+extern int ns7520_miiphy_write(char *devname, unsigned char const addr,
+               unsigned char const reg, unsigned short const value)
+{
+       int ret = MII_STATUS_FAILURE;
+
+       /* Parameter checks */
+       if (addr > MII_ADDRESS_MAX) {
+               ERROR(("invalid addr, 0x%02X", addr));
+               goto miiphy_write_failed_0;
+       }
+
+       if (reg > MII_REGISTER_MAX) {
+               ERROR(("invalid reg, 0x%02X", reg));
+               goto miiphy_write_failed_0;
+       }
+
+       /* write MII register to be written */
+       *get_eth_reg_addr(NS7520_ETH_MADR) = (addr << 8) | reg;
+
+       *get_eth_reg_addr(NS7520_ETH_MWTD) = value;
+
+       if (!ns7520_mii_poll_busy()) {
+               printf(KERN_WARNING NS7520_DRIVER_NAME
+                      ": MII still busy in write\n");
+       }
+
+       ret = MII_STATUS_SUCCESS;
+       /* Fall through */
+
+      miiphy_write_failed_0:
+       return (ret);
+}
+#endif                         /* defined(CONFIG_MII) */
+
+int ns7520_miiphy_initialize(bd_t *bis)
+{
+#if defined(CONFIG_MII)
+       miiphy_register("ns7520phy", ns7520_miiphy_read, ns7520_miiphy_write);
+#endif
+       return 0;
+}
diff -Naur u-boot-2009.03_orig/drivers/net/ns9750_eth.c u-boot-2009.03/drivers/net/ns9750_eth.c
--- u-boot-2009.03_orig/drivers/net/ns9750_eth.c        2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/drivers/net/ns9750_eth.c     2009-03-31 14:53:34.253836800 -0700
@@ -1,790 +1,790 @@
-/***********************************************************************
- *
- * Copyright (C) 2004 by FS Forth-Systeme GmbH.
- * All rights reserved.
- *
- * $Id: ns9750_eth.c,v 1.2 2004/02/24 14:09:39 mpietrek Exp $
- * @Author: Markus Pietrek
- * @Descr: Ethernet driver for the NS9750. Uses DMA Engine with polling
- *        interrupt status. But interrupts are not enabled.
- *        Only one tx buffer descriptor and the RXA buffer descriptor are used
- *        Currently no transmit lockup handling is included. eth_send has a 5s
- *        timeout for sending frames. No retransmits are performed when an
- *        error occurs.
- * @References: [1] NS9750 Hardware Reference, December 2003
- *             [2] Intel LXT971 Datasheet #249414 Rev. 02
- *             [3] NS7520 Linux Ethernet Driver
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.         See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- *
- ***********************************************************************/
-
-#include <common.h>
-#include <net.h>               /* NetSendPacket */
-
-#include "ns9750_eth.h"                /* for Ethernet and PHY */
-
-/* some definition to make transition to linux easier */
-
-#define NS9750_DRIVER_NAME     "eth"
-#define KERN_WARNING           "Warning:"
-#define KERN_ERR               "Error:"
-#define KERN_INFO              "Info:"
-
-#if 0
-# define DEBUG
-#endif
-
-#ifdef DEBUG
-# define printk                        printf
-
-# define DEBUG_INIT            0x0001
-# define DEBUG_MINOR           0x0002
-# define DEBUG_RX              0x0004
-# define DEBUG_TX              0x0008
-# define DEBUG_INT             0x0010
-# define DEBUG_POLL            0x0020
-# define DEBUG_LINK            0x0040
-# define DEBUG_MII             0x0100
-# define DEBUG_MII_LOW         0x0200
-# define DEBUG_MEM             0x0400
-# define DEBUG_ERROR           0x4000
-# define DEBUG_ERROR_CRIT      0x8000
-
-static int nDebugLvl = DEBUG_ERROR_CRIT;
-
-# define DEBUG_ARGS0( FLG, a0 ) if( ( nDebugLvl & (FLG) ) == (FLG) ) \
-               printf("%s: " a0, __FUNCTION__, 0, 0, 0, 0, 0, 0 )
-# define DEBUG_ARGS1( FLG, a0, a1 ) if( ( nDebugLvl & (FLG) ) == (FLG)) \
-               printf("%s: " a0, __FUNCTION__, (int)(a1), 0, 0, 0, 0, 0 )
-# define DEBUG_ARGS2( FLG, a0, a1, a2 ) if( (nDebugLvl & (FLG)) ==(FLG))\
-               printf("%s: " a0, __FUNCTION__, (int)(a1), (int)(a2), 0, 0,0,0 )
-# define DEBUG_ARGS3( FLG, a0, a1, a2, a3 ) if((nDebugLvl &(FLG))==(FLG))\
-               printf("%s: "a0,__FUNCTION__,(int)(a1),(int)(a2),(int)(a3),0,0,0)
-# define DEBUG_FN( FLG ) if( (nDebugLvl & (FLG)) == (FLG) ) \
-               printf("\r%s:line %d\n", (int)__FUNCTION__, __LINE__, 0,0,0,0);
-# define ASSERT( expr, func ) if( !( expr ) ) { \
-               printf( "Assertion failed! %s:line %d %s\n", \
-               (int)__FUNCTION__,__LINE__,(int)(#expr),0,0,0); \
-               func }
-#else /* DEBUG */
-# define printk(...)
-# define DEBUG_ARGS0( FLG, a0 )
-# define DEBUG_ARGS1( FLG, a0, a1 )
-# define DEBUG_ARGS2( FLG, a0, a1, a2 )
-# define DEBUG_ARGS3( FLG, a0, a1, a2, a3 )
-# define DEBUG_FN( n )
-# define ASSERT(expr, func)
-#endif /* DEBUG */
-
-#define NS9750_MII_NEG_DELAY           (5*CONFIG_SYS_HZ) /* in s */
-#define TX_TIMEOUT                     (5*CONFIG_SYS_HZ) /* in s */
-
-/* @TODO move it to eeprom.h */
-#define FS_EEPROM_AUTONEG_MASK         0x7
-#define FS_EEPROM_AUTONEG_SPEED_MASK   0x1
-#define FS_EEPROM_AUTONEG_SPEED_10     0x0
-#define FS_EEPROM_AUTONEG_SPEED_100    0x1
-#define FS_EEPROM_AUTONEG_DUPLEX_MASK  0x2
-#define FS_EEPROM_AUTONEG_DUPLEX_HALF  0x0
-#define FS_EEPROM_AUTONEG_DUPLEX_FULL  0x2
-#define FS_EEPROM_AUTONEG_ENABLE_MASK  0x4
-#define FS_EEPROM_AUTONEG_DISABLE      0x0
-#define FS_EEPROM_AUTONEG_ENABLE       0x4
-
-/* buffer descriptors taken from [1] p.306 */
-typedef struct
-{
-       unsigned int* punSrc;
-       unsigned int unLen;     /* 11 bits */
-       unsigned int* punDest;  /* unused */
-       union {
-               unsigned int unReg;
-               struct {
-                       unsigned uStatus : 16;
-                       unsigned uRes : 12;
-                       unsigned uFull : 1;
-                       unsigned uEnable : 1;
-                       unsigned uInt : 1;
-                       unsigned uWrap : 1;
-               } bits;
-       } s;
-} rx_buffer_desc_t;
-
-typedef struct
-{
-       unsigned int* punSrc;
-       unsigned int unLen;     /* 10 bits */
-       unsigned int* punDest;  /* unused */
-       union {
-               unsigned int unReg; /* only 32bit accesses may done to NS9750
-                                    * eth engine */
-               struct {
-                       unsigned uStatus : 16;
-                       unsigned uRes : 12;
-                       unsigned uFull : 1;
-                       unsigned uLast : 1;
-                       unsigned uInt : 1;
-                       unsigned uWrap : 1;
-               } bits;
-       } s;
-} tx_buffer_desc_t;
-
-static int ns9750_eth_reset( void );
-
-static void ns9750_link_force( void );
-static void ns9750_link_auto_negotiate( void );
-static void ns9750_link_update_egcr( void );
-static void ns9750_link_print_changed( void );
-
-/* the PHY stuff */
-
-static char ns9750_mii_identify_phy( void );
-static unsigned short ns9750_mii_read( unsigned short uiRegister );
-static void ns9750_mii_write( unsigned short uiRegister, unsigned short uiData );
-static unsigned int ns9750_mii_get_clock_divisor( unsigned int unMaxMDIOClk );
-static unsigned int ns9750_mii_poll_busy( void );
-
-static unsigned int nPhyMaxMdioClock = PHY_MDIO_MAX_CLK;
-static unsigned char ucLinkMode =      FS_EEPROM_AUTONEG_ENABLE;
-static unsigned int uiLastLinkStatus;
-static PhyType phyDetected = PHY_NONE;
-
-/* we use only one tx buffer descriptor */
-static tx_buffer_desc_t* pTxBufferDesc =
-       (tx_buffer_desc_t*) get_eth_reg_addr( NS9750_ETH_TXBD );
-
-/* we use only one rx buffer descriptor of the 4 */
-static rx_buffer_desc_t aRxBufferDesc[ 4 ];
-
-/***********************************************************************
- * @Function: eth_init
- * @Return: -1 on failure otherwise 0
- * @Descr: Initializes the ethernet engine and uses either FS Forth's default
- *        MAC addr or the one in environment
- ***********************************************************************/
-
-int eth_init (bd_t * pbis)
-{
-       /* This default MAC Addr is reserved by FS Forth-Systeme for the case of
-          EEPROM failures */
-       unsigned char aucMACAddr[6] = { 0x00, 0x04, 0xf3, 0x00, 0x06, 0x35 };
-       char *pcTmp = getenv ("ethaddr");
-       char *pcEnd;
-       int i;
-
-       DEBUG_FN (DEBUG_INIT);
-
-       /* no need to check for hardware */
-
-       if (!ns9750_eth_reset ())
-               return -1;
-
-       if (pcTmp != NULL)
-               for (i = 0; i < 6; i++) {
-                       aucMACAddr[i] =
-                               pcTmp ? simple_strtoul (pcTmp, &pcEnd,
-                                                       16) : 0;
-                       pcTmp = (*pcTmp) ? pcEnd + 1 : pcEnd;
-               }
-
-       /* configure ethernet address */
-
-       *get_eth_reg_addr (NS9750_ETH_SA1) =
-               aucMACAddr[5] << 8 | aucMACAddr[4];
-       *get_eth_reg_addr (NS9750_ETH_SA2) =
-               aucMACAddr[3] << 8 | aucMACAddr[2];
-       *get_eth_reg_addr (NS9750_ETH_SA3) =
-               aucMACAddr[1] << 8 | aucMACAddr[0];
-
-       /* enable hardware */
-
-       *get_eth_reg_addr (NS9750_ETH_MAC1) = NS9750_ETH_MAC1_RXEN;
-
-       /* the linux kernel may give packets < 60 bytes, for example arp */
-       *get_eth_reg_addr (NS9750_ETH_MAC2) = NS9750_ETH_MAC2_CRCEN |
-               NS9750_ETH_MAC2_PADEN | NS9750_ETH_MAC2_HUGE;
-
-       /* enable receive and transmit FIFO, use 10/100 Mbps MII */
-       *get_eth_reg_addr (NS9750_ETH_EGCR1) =
-               NS9750_ETH_EGCR1_ETXWM |
-               NS9750_ETH_EGCR1_ERX |
-               NS9750_ETH_EGCR1_ERXDMA |
-               NS9750_ETH_EGCR1_ETX |
-               NS9750_ETH_EGCR1_ETXDMA | NS9750_ETH_EGCR1_ITXA;
-
-       /* prepare DMA descriptors */
-       for (i = 0; i < 4; i++) {
-               aRxBufferDesc[i].punSrc = 0;
-               aRxBufferDesc[i].unLen = 0;
-               aRxBufferDesc[i].s.bits.uWrap = 1;
-               aRxBufferDesc[i].s.bits.uInt = 1;
-               aRxBufferDesc[i].s.bits.uEnable = 0;
-               aRxBufferDesc[i].s.bits.uFull = 0;
-       }
-
-       /* NetRxPackets[ 0 ] is initialized before eth_init is called and never
-          changes. NetRxPackets is 32bit aligned */
-       aRxBufferDesc[0].punSrc = (unsigned int *) NetRxPackets[0];
-       aRxBufferDesc[0].s.bits.uEnable = 1;
-       aRxBufferDesc[0].unLen = 1522;  /* as stated in [1] p.307 */
-
-       *get_eth_reg_addr (NS9750_ETH_RXAPTR) =
-               (unsigned int) &aRxBufferDesc[0];
-
-       /* [1] Tab. 221 states less than 5us */
-       *get_eth_reg_addr (NS9750_ETH_EGCR1) |= NS9750_ETH_EGCR1_ERXINIT;
-       while (!
-              (*get_eth_reg_addr (NS9750_ETH_EGSR) & NS9750_ETH_EGSR_RXINIT))
-               /* wait for finish */
-               udelay (1);
-
-       /* @TODO do we need to clear RXINIT? */
-       *get_eth_reg_addr (NS9750_ETH_EGCR1) &= ~NS9750_ETH_EGCR1_ERXINIT;
-
-       *get_eth_reg_addr (NS9750_ETH_RXFREE) = 0x1;
-
-       return 0;
-}
-
-/***********************************************************************
- * @Function: eth_send
- * @Return: -1 on timeout otherwise 1
- * @Descr: sends one frame by DMA
- ***********************************************************************/
-
-int eth_send (volatile void *pPacket, int nLen)
-{
-       ulong ulTimeout;
-
-       DEBUG_FN (DEBUG_TX);
-
-       /* clear old status values */
-       *get_eth_reg_addr (NS9750_ETH_EINTR) &=
-               *get_eth_reg_addr (NS9750_ETH_EINTR) & NS9750_ETH_EINTR_TX_MA;
-
-       /* prepare Tx Descriptors */
-
-       pTxBufferDesc->punSrc = (unsigned int *) pPacket;       /* pPacket is 32bit
-                                                                * aligned */
-       pTxBufferDesc->unLen = nLen;
-       /* only 32bit accesses allowed. wrap, full, interrupt and enabled to 1 */
-       pTxBufferDesc->s.unReg = 0xf0000000;
-       /* pTxBufferDesc is the first possible buffer descriptor */
-       *get_eth_reg_addr (NS9750_ETH_TXPTR) = 0x0;
-
-       /* enable processor for next frame */
-
-       *get_eth_reg_addr (NS9750_ETH_EGCR2) &= ~NS9750_ETH_EGCR2_TCLER;
-       *get_eth_reg_addr (NS9750_ETH_EGCR2) |= NS9750_ETH_EGCR2_TCLER;
-
-       ulTimeout = get_timer (0);
-
-       DEBUG_ARGS0 (DEBUG_TX | DEBUG_MINOR,
-                    "Waiting for transmission to finish\n");
-       while (!
-              (*get_eth_reg_addr (NS9750_ETH_EINTR) &
-               (NS9750_ETH_EINTR_TXDONE | NS9750_ETH_EINTR_TXERR))) {
-               /* do nothing, wait for completion */
-               if (get_timer (0) - ulTimeout > TX_TIMEOUT) {
-                       DEBUG_ARGS0 (DEBUG_TX, "Transmit Timed out\n");
-                       return -1;
-               }
-       }
-       DEBUG_ARGS0 (DEBUG_TX | DEBUG_MINOR, "transmitted...\n");
-
-       return 0;
-}
-
-/***********************************************************************
- * @Function: eth_rx
- * @Return: size of last frame in bytes or 0 if no frame available
- * @Descr: gives one frame to U-Boot which has been copied by DMA engine already
- *        to NetRxPackets[ 0 ].
- ***********************************************************************/
-
-int eth_rx (void)
-{
-       int nLen = 0;
-       unsigned int unStatus;
-
-       unStatus =
-               *get_eth_reg_addr (NS9750_ETH_EINTR) & NS9750_ETH_EINTR_RX_MA;
-
-       if (!unStatus)
-               /* no packet available, return immediately */
-               return 0;
-
-       DEBUG_FN (DEBUG_RX);
-
-       /* unLen always < max(nLen) and discard checksum */
-       nLen = (int) aRxBufferDesc[0].unLen - 4;
-
-       /* acknowledge status register */
-       *get_eth_reg_addr (NS9750_ETH_EINTR) = unStatus;
-
-       aRxBufferDesc[0].unLen = 1522;
-       aRxBufferDesc[0].s.bits.uFull = 0;
-
-       /* Buffer A descriptor available again */
-       *get_eth_reg_addr (NS9750_ETH_RXFREE) |= 0x1;
-
-       /* NetReceive may call eth_send. Due to a possible bug of the NS9750 we
-        * have to acknowledge the received frame before sending a new one */
-       if (unStatus & NS9750_ETH_EINTR_RXDONEA)
-               NetReceive (NetRxPackets[0], nLen);
-
-       return nLen;
-}
-
-/***********************************************************************
- * @Function: eth_halt
- * @Return: n/a
- * @Descr: stops the ethernet engine
- ***********************************************************************/
-
-void eth_halt (void)
-{
-       DEBUG_FN (DEBUG_INIT);
-
-       *get_eth_reg_addr (NS9750_ETH_MAC1) &= ~NS9750_ETH_MAC1_RXEN;
-       *get_eth_reg_addr (NS9750_ETH_EGCR1) &= ~(NS9750_ETH_EGCR1_ERX |
-                                                 NS9750_ETH_EGCR1_ERXDMA |
-                                                 NS9750_ETH_EGCR1_ETX |
-                                                 NS9750_ETH_EGCR1_ETXDMA);
-}
-
-/***********************************************************************
- * @Function: ns9750_eth_reset
- * @Return: 0 on failure otherwise 1
- * @Descr: resets the ethernet interface and the PHY,
- *        performs auto negotiation or fixed modes
- ***********************************************************************/
-
-static int ns9750_eth_reset (void)
-{
-       DEBUG_FN (DEBUG_MINOR);
-
-       /* Reset MAC */
-       *get_eth_reg_addr (NS9750_ETH_EGCR1) |= NS9750_ETH_EGCR1_MAC_HRST;
-       udelay (5);             /* according to [1], p.322 */
-       *get_eth_reg_addr (NS9750_ETH_EGCR1) &= ~NS9750_ETH_EGCR1_MAC_HRST;
-
-       /* reset and initialize PHY */
-
-       *get_eth_reg_addr (NS9750_ETH_MAC1) &= ~NS9750_ETH_MAC1_SRST;
-
-       /* we don't support hot plugging of PHY, therefore we don't reset
-          phyDetected and nPhyMaxMdioClock here. The risk is if the setting is
-          incorrect the first open
-          may detect the PHY correctly but succeding will fail
-          For reseting the PHY and identifying we have to use the standard
-          MDIO CLOCK value 2.5 MHz only after hardware reset
-          After having identified the PHY we will do faster */
-
-       *get_eth_reg_addr (NS9750_ETH_MCFG) =
-               ns9750_mii_get_clock_divisor (nPhyMaxMdioClock);
-
-       /* reset PHY */
-       ns9750_mii_write(PHY_BMCR, PHY_BMCR_RESET);
-       ns9750_mii_write(PHY_BMCR, 0);
-
-       /* @TODO check time */
-       udelay (3000);          /* [2] p.70 says at least 300us reset recovery time. But
-                                  go sure, it didn't worked stable at higher timer
-                                  frequencies under LxNETES-2.x */
-
-       /* MII clock has been setup to default, ns9750_mii_identify_phy should
-          work for all */
-
-       if (!ns9750_mii_identify_phy ()) {
-               printk (KERN_ERR NS9750_DRIVER_NAME
-                       ": Unsupported PHY, aborting\n");
-               return 0;
-       }
-
-       /* now take the highest MDIO clock possible after detection */
-       *get_eth_reg_addr (NS9750_ETH_MCFG) =
-               ns9750_mii_get_clock_divisor (nPhyMaxMdioClock);
-
-
-       /* PHY has been detected, so there can be no abort reason and we can
-          finish initializing ethernet */
-
-       uiLastLinkStatus = 0xff;        /* undefined */
-
-       if ((ucLinkMode & FS_EEPROM_AUTONEG_ENABLE_MASK) ==
-           FS_EEPROM_AUTONEG_DISABLE)
-               /* use parameters defined */
-               ns9750_link_force ();
-       else
-               ns9750_link_auto_negotiate ();
-
-       if (phyDetected == PHY_LXT971A)
-               /* set LED2 to link mode */
-               ns9750_mii_write (PHY_LXT971_LED_CFG,
-                                 PHY_LXT971_LED_CFG_LINK_ACT <<
-                                 PHY_LXT971_LED_CFG_SHIFT_LED2);
-
-       return 1;
-}
-
-/***********************************************************************
- * @Function: ns9750_link_force
- * @Return: void
- * @Descr: configures eth and MII to use the link mode defined in
- *        ucLinkMode
- ***********************************************************************/
-
-static void ns9750_link_force (void)
-{
-       unsigned short uiControl;
-
-       DEBUG_FN (DEBUG_LINK);
-
-       uiControl = ns9750_mii_read(PHY_BMCR);
-       uiControl &= ~(PHY_BMCR_SPEED_MASK |
-                      PHY_BMCR_AUTON | PHY_BMCR_DPLX);
-
-       uiLastLinkStatus = 0;
-
-       if ((ucLinkMode & FS_EEPROM_AUTONEG_SPEED_MASK) ==
-           FS_EEPROM_AUTONEG_SPEED_100) {
-               uiControl |= PHY_BMCR_100MB;
-               uiLastLinkStatus |= PHY_LXT971_STAT2_100BTX;
-       } else
-               uiControl |= PHY_BMCR_10_MBPS;
-
-       if ((ucLinkMode & FS_EEPROM_AUTONEG_DUPLEX_MASK) ==
-           FS_EEPROM_AUTONEG_DUPLEX_FULL) {
-               uiControl |= PHY_BMCR_DPLX;
-               uiLastLinkStatus |= PHY_LXT971_STAT2_DUPLEX_MODE;
-       }
-
-       ns9750_mii_write(PHY_BMCR, uiControl);
-
-       ns9750_link_print_changed ();
-       ns9750_link_update_egcr ();
-}
-
-/***********************************************************************
- * @Function: ns9750_link_auto_negotiate
- * @Return: void
- * @Descr: performs auto-negotation of link.
- ***********************************************************************/
-
-static void ns9750_link_auto_negotiate (void)
-{
-       unsigned long ulStartJiffies;
-       unsigned short uiStatus;
-
-       DEBUG_FN (DEBUG_LINK);
-
-       /* run auto-negotation */
-       /* define what we are capable of */
-       ns9750_mii_write(PHY_ANAR,
-                        PHY_ANLPAR_TXFD |
-                        PHY_ANLPAR_TX |
-                        PHY_ANLPAR_10FD |
-                        PHY_ANLPAR_10 |
-                        PHY_ANLPAR_PSB_802_3);
-       /* start auto-negotiation */
-       ns9750_mii_write(PHY_BMCR, PHY_BMCR_AUTON | PHY_BMCR_RST_NEG);
-
-       /* wait for completion */
-
-       ulStartJiffies = get_ticks ();
-       while (get_ticks () < ulStartJiffies + NS9750_MII_NEG_DELAY) {
-               uiStatus = ns9750_mii_read(PHY_BMSR);
-               if ((uiStatus &
-                    (PHY_BMSR_AUTN_COMP | PHY_BMSR_LS)) ==
-                   (PHY_BMSR_AUTN_COMP | PHY_BMSR_LS)) {
-                       /* lucky we are, auto-negotiation succeeded */
-                       ns9750_link_print_changed ();
-                       ns9750_link_update_egcr ();
-                       return;
-               }
-       }
-
-       DEBUG_ARGS0 (DEBUG_LINK, "auto-negotiation timed out\n");
-       /* ignore invalid link settings */
-}
-
-/***********************************************************************
- * @Function: ns9750_link_update_egcr
- * @Return: void
- * @Descr: updates the EGCR and MAC2 link status after mode change or
- *        auto-negotation
- ***********************************************************************/
-
-static void ns9750_link_update_egcr (void)
-{
-       unsigned int unEGCR;
-       unsigned int unMAC2;
-       unsigned int unIPGT;
-
-       DEBUG_FN (DEBUG_LINK);
-
-       unEGCR = *get_eth_reg_addr (NS9750_ETH_EGCR1);
-       unMAC2 = *get_eth_reg_addr (NS9750_ETH_MAC2);
-       unIPGT = *get_eth_reg_addr (NS9750_ETH_IPGT) & ~NS9750_ETH_IPGT_MA;
-
-       unMAC2 &= ~NS9750_ETH_MAC2_FULLD;
-       if ((uiLastLinkStatus & PHY_LXT971_STAT2_DUPLEX_MODE)
-           == PHY_LXT971_STAT2_DUPLEX_MODE) {
-               unMAC2 |= NS9750_ETH_MAC2_FULLD;
-               unIPGT |= 0x15; /* see [1] p. 339 */
-       } else
-               unIPGT |= 0x12; /* see [1] p. 339 */
-
-       *get_eth_reg_addr (NS9750_ETH_MAC2) = unMAC2;
-       *get_eth_reg_addr (NS9750_ETH_EGCR1) = unEGCR;
-       *get_eth_reg_addr (NS9750_ETH_IPGT) = unIPGT;
-}
-
-/***********************************************************************
- * @Function: ns9750_link_print_changed
- * @Return: void
- * @Descr: checks whether the link status has changed and if so prints
- *        the new mode
- ***********************************************************************/
-
-static void ns9750_link_print_changed (void)
-{
-       unsigned short uiStatus;
-       unsigned short uiControl;
-
-       DEBUG_FN (DEBUG_LINK);
-
-       uiControl = ns9750_mii_read(PHY_BMCR);
-
-       if ((uiControl & PHY_BMCR_AUTON) == PHY_BMCR_AUTON) {
-               /* PHY_BMSR_LS is only set on autonegotiation */
-               uiStatus = ns9750_mii_read(PHY_BMSR);
-
-               if (!(uiStatus & PHY_BMSR_LS)) {
-                       printk (KERN_WARNING NS9750_DRIVER_NAME
-                               ": link down\n");
-                       /* @TODO Linux: carrier_off */
-               } else {
-                       /* @TODO Linux: carrier_on */
-                       if (phyDetected == PHY_LXT971A) {
-                               uiStatus = ns9750_mii_read (PHY_LXT971_STAT2);
-                               uiStatus &= (PHY_LXT971_STAT2_100BTX |
-                                            PHY_LXT971_STAT2_DUPLEX_MODE |
-                                            PHY_LXT971_STAT2_AUTO_NEG);
-
-                               /* mask out all uninteresting parts */
-                       }
-                       /* other PHYs must store their link information in
-                          uiStatus as PHY_LXT971 */
-               }
-       } else {
-               /* mode has been forced, so uiStatus should be the same as the
-                  last link status, enforce printing */
-               uiStatus = uiLastLinkStatus;
-               uiLastLinkStatus = 0xff;
-       }
-
-       if (uiStatus != uiLastLinkStatus) {
-               /* save current link status */
-               uiLastLinkStatus = uiStatus;
-
-               /* print new link status */
-
-               printk (KERN_INFO NS9750_DRIVER_NAME
-                       ": link mode %i Mbps %s duplex %s\n",
-                       (uiStatus & PHY_LXT971_STAT2_100BTX) ? 100 : 10,
-                       (uiStatus & PHY_LXT971_STAT2_DUPLEX_MODE) ? "full" :
-                       "half",
-                       (uiStatus & PHY_LXT971_STAT2_AUTO_NEG) ? "(auto)" :
-                       "");
-       }
-}
-
-/***********************************************************************
- * the MII low level stuff
- ***********************************************************************/
-
-/***********************************************************************
- * @Function: ns9750_mii_identify_phy
- * @Return: 1 if supported PHY has been detected otherwise 0
- * @Descr: checks for supported PHY and prints the IDs.
- ***********************************************************************/
-
-static char ns9750_mii_identify_phy (void)
-{
-       unsigned short uiID1;
-       unsigned short uiID2;
-       unsigned char *szName;
-       char cRes = 0;
-
-       DEBUG_FN (DEBUG_MII);
-
-       phyDetected = (PhyType) uiID1 = ns9750_mii_read(PHY_PHYIDR1);
-
-       switch (phyDetected) {
-       case PHY_LXT971A:
-               szName = "LXT971A";
-               uiID2 = ns9750_mii_read(PHY_PHYIDR2);
-               nPhyMaxMdioClock = PHY_LXT971_MDIO_MAX_CLK;
-               cRes = 1;
-               break;
-       case PHY_NONE:
-       default:
-               /* in case uiID1 == 0 && uiID2 == 0 we may have the wrong
-                  address or reset sets the wrong NS9750_ETH_MCFG_CLKS */
-
-               uiID2 = 0;
-               szName = "unknown";
-               nPhyMaxMdioClock = PHY_MDIO_MAX_CLK;
-               phyDetected = PHY_NONE;
-       }
-
-       printk (KERN_INFO NS9750_DRIVER_NAME
-               ": PHY (0x%x, 0x%x) = %s detected\n", uiID1, uiID2, szName);
-
-       return cRes;
-}
-
-/***********************************************************************
- * @Function: ns9750_mii_read
- * @Return: the data read from PHY register uiRegister
- * @Descr: the data read may be invalid if timed out. If so, a message
- *        is printed but the invalid data is returned.
- *        The fixed device address is being used.
- ***********************************************************************/
-
-static unsigned short ns9750_mii_read (unsigned short uiRegister)
-{
-       DEBUG_FN (DEBUG_MII_LOW);
-
-       /* write MII register to be read */
-       *get_eth_reg_addr (NS9750_ETH_MADR) =
-               NS9750_ETH_PHY_ADDRESS << 8 | uiRegister;
-
-       *get_eth_reg_addr (NS9750_ETH_MCMD) = NS9750_ETH_MCMD_READ;
-
-       if (!ns9750_mii_poll_busy ())
-               printk (KERN_WARNING NS9750_DRIVER_NAME
-                       ": MII still busy in read\n");
-       /* continue to read */
-
-       *get_eth_reg_addr (NS9750_ETH_MCMD) = 0;
-
-       return (unsigned short) (*get_eth_reg_addr (NS9750_ETH_MRDD));
-}
-
-
-/***********************************************************************
- * @Function: ns9750_mii_write
- * @Return: nothing
- * @Descr: writes the data to the PHY register. In case of a timeout,
- *        no special handling is performed but a message printed
- *        The fixed device address is being used.
- ***********************************************************************/
-
-static void ns9750_mii_write (unsigned short uiRegister,
-                             unsigned short uiData)
-{
-       DEBUG_FN (DEBUG_MII_LOW);
-
-       /* write MII register to be written */
-       *get_eth_reg_addr (NS9750_ETH_MADR) =
-               NS9750_ETH_PHY_ADDRESS << 8 | uiRegister;
-
-       *get_eth_reg_addr (NS9750_ETH_MWTD) = uiData;
-
-       if (!ns9750_mii_poll_busy ()) {
-               printf (KERN_WARNING NS9750_DRIVER_NAME
-                       ": MII still busy in write\n");
-       }
-}
-
-
-/***********************************************************************
- * @Function: ns9750_mii_get_clock_divisor
- * @Return: the clock divisor that should be used in NS9750_ETH_MCFG_CLKS
- * @Descr: if no clock divisor can be calculated for the
- *        current SYSCLK and the maximum MDIO Clock, a warning is printed
- *        and the greatest divisor is taken
- ***********************************************************************/
-
-static unsigned int ns9750_mii_get_clock_divisor (unsigned int unMaxMDIOClk)
-{
-       struct {
-               unsigned int unSysClkDivisor;
-               unsigned int unClks;    /* field for NS9750_ETH_MCFG_CLKS */
-       } PHYClockDivisors[] = {
-               {
-               4, NS9750_ETH_MCFG_CLKS_4}, {
-               6, NS9750_ETH_MCFG_CLKS_6}, {
-               8, NS9750_ETH_MCFG_CLKS_8}, {
-               10, NS9750_ETH_MCFG_CLKS_10}, {
-               20, NS9750_ETH_MCFG_CLKS_20}, {
-               30, NS9750_ETH_MCFG_CLKS_30}, {
-               40, NS9750_ETH_MCFG_CLKS_40}
-       };
-
-       int nIndexSysClkDiv;
-       int nArraySize =
-               sizeof (PHYClockDivisors) / sizeof (PHYClockDivisors[0]);
-       unsigned int unClks = NS9750_ETH_MCFG_CLKS_40;  /* defaults to
-                                                          greatest div */
-
-       DEBUG_FN (DEBUG_INIT);
-
-       for (nIndexSysClkDiv = 0; nIndexSysClkDiv < nArraySize;
-            nIndexSysClkDiv++) {
-               /* find first sysclock divisor that isn't higher than 2.5 MHz
-                  clock */
-               if (AHB_CLK_FREQ /
-                   PHYClockDivisors[nIndexSysClkDiv].unSysClkDivisor <=
-                   unMaxMDIOClk) {
-                       unClks = PHYClockDivisors[nIndexSysClkDiv].unClks;
-                       break;
-               }
-       }
-
-       DEBUG_ARGS2 (DEBUG_INIT,
-                    "Taking MDIO Clock bit mask 0x%0x for max clock %i\n",
-                    unClks, unMaxMDIOClk);
-
-       /* return greatest divisor */
-       return unClks;
-}
-
-/***********************************************************************
- * @Function: ns9750_mii_poll_busy
- * @Return: 0 if timed out otherwise the remaing timeout
- * @Descr: waits until the MII has completed a command or it times out
- *        code may be interrupted by hard interrupts.
- *        It is not checked what happens on multiple actions when
- *        the first is still being busy and we timeout.
- ***********************************************************************/
-
-static unsigned int ns9750_mii_poll_busy (void)
-{
-       unsigned int unTimeout = 10000;
-
-       DEBUG_FN (DEBUG_MII_LOW);
-
-       while (((*get_eth_reg_addr (NS9750_ETH_MIND) & NS9750_ETH_MIND_BUSY)
-               == NS9750_ETH_MIND_BUSY) && unTimeout)
-               unTimeout--;
-
-       return unTimeout;
-}
+/***********************************************************************
+ *
+ * Copyright (C) 2004 by FS Forth-Systeme GmbH.
+ * All rights reserved.
+ *
+ * $Id: ns9750_eth.c,v 1.1.1.1 2009/03/25 22:22:09 kenagy Exp $
+ * @Author: Markus Pietrek
+ * @Descr: Ethernet driver for the NS9750. Uses DMA Engine with polling
+ *        interrupt status. But interrupts are not enabled.
+ *        Only one tx buffer descriptor and the RXA buffer descriptor are used
+ *        Currently no transmit lockup handling is included. eth_send has a 5s
+ *        timeout for sending frames. No retransmits are performed when an
+ *        error occurs.
+ * @References: [1] NS9750 Hardware Reference, December 2003
+ *             [2] Intel LXT971 Datasheet #249414 Rev. 02
+ *             [3] NS7520 Linux Ethernet Driver
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.         See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ ***********************************************************************/
+
+#include <common.h>
+#include <net.h>               /* NetSendPacket */
+
+#include "ns9750_eth.h"                /* for Ethernet and PHY */
+
+/* some definition to make transition to linux easier */
+
+#define NS9750_DRIVER_NAME     "eth"
+#define KERN_WARNING           "Warning:"
+#define KERN_ERR               "Error:"
+#define KERN_INFO              "Info:"
+
+#if 0
+# define DEBUG
+#endif
+
+#ifdef DEBUG
+# define printk                        printf
+
+# define DEBUG_INIT            0x0001
+# define DEBUG_MINOR           0x0002
+# define DEBUG_RX              0x0004
+# define DEBUG_TX              0x0008
+# define DEBUG_INT             0x0010
+# define DEBUG_POLL            0x0020
+# define DEBUG_LINK            0x0040
+# define DEBUG_MII             0x0100
+# define DEBUG_MII_LOW         0x0200
+# define DEBUG_MEM             0x0400
+# define DEBUG_ERROR           0x4000
+# define DEBUG_ERROR_CRIT      0x8000
+
+static int nDebugLvl = DEBUG_ERROR_CRIT;
+
+# define DEBUG_ARGS0( FLG, a0 ) if( ( nDebugLvl & (FLG) ) == (FLG) ) \
+               printf("%s: " a0, __FUNCTION__, 0, 0, 0, 0, 0, 0 )
+# define DEBUG_ARGS1( FLG, a0, a1 ) if( ( nDebugLvl & (FLG) ) == (FLG)) \
+               printf("%s: " a0, __FUNCTION__, (int)(a1), 0, 0, 0, 0, 0 )
+# define DEBUG_ARGS2( FLG, a0, a1, a2 ) if( (nDebugLvl & (FLG)) ==(FLG))\
+               printf("%s: " a0, __FUNCTION__, (int)(a1), (int)(a2), 0, 0,0,0 )
+# define DEBUG_ARGS3( FLG, a0, a1, a2, a3 ) if((nDebugLvl &(FLG))==(FLG))\
+               printf("%s: "a0,__FUNCTION__,(int)(a1),(int)(a2),(int)(a3),0,0,0)
+# define DEBUG_FN( FLG ) if( (nDebugLvl & (FLG)) == (FLG) ) \
+               printf("\r%s:line %d\n", (int)__FUNCTION__, __LINE__, 0,0,0,0);
+# define ASSERT( expr, func ) if( !( expr ) ) { \
+               printf( "Assertion failed! %s:line %d %s\n", \
+               (int)__FUNCTION__,__LINE__,(int)(#expr),0,0,0); \
+               func }
+#else /* DEBUG */
+# define printk(...)
+# define DEBUG_ARGS0( FLG, a0 )
+# define DEBUG_ARGS1( FLG, a0, a1 )
+# define DEBUG_ARGS2( FLG, a0, a1, a2 )
+# define DEBUG_ARGS3( FLG, a0, a1, a2, a3 )
+# define DEBUG_FN( n )
+# define ASSERT(expr, func)
+#endif /* DEBUG */
+
+#define NS9750_MII_NEG_DELAY           (5*CONFIG_SYS_HZ) /* in s */
+#define TX_TIMEOUT                     (5*CONFIG_SYS_HZ) /* in s */
+
+/* @TODO move it to eeprom.h */
+#define FS_EEPROM_AUTONEG_MASK         0x7
+#define FS_EEPROM_AUTONEG_SPEED_MASK   0x1
+#define FS_EEPROM_AUTONEG_SPEED_10     0x0
+#define FS_EEPROM_AUTONEG_SPEED_100    0x1
+#define FS_EEPROM_AUTONEG_DUPLEX_MASK  0x2
+#define FS_EEPROM_AUTONEG_DUPLEX_HALF  0x0
+#define FS_EEPROM_AUTONEG_DUPLEX_FULL  0x2
+#define FS_EEPROM_AUTONEG_ENABLE_MASK  0x4
+#define FS_EEPROM_AUTONEG_DISABLE      0x0
+#define FS_EEPROM_AUTONEG_ENABLE       0x4
+
+/* buffer descriptors taken from [1] p.306 */
+typedef struct
+{
+       unsigned int* punSrc;
+       unsigned int unLen;     /* 11 bits */
+       unsigned int* punDest;  /* unused */
+       union {
+               unsigned int unReg;
+               struct {
+                       unsigned uStatus : 16;
+                       unsigned uRes : 12;
+                       unsigned uFull : 1;
+                       unsigned uEnable : 1;
+                       unsigned uInt : 1;
+                       unsigned uWrap : 1;
+               } bits;
+       } s;
+} rx_buffer_desc_t;
+
+typedef struct
+{
+       unsigned int* punSrc;
+       unsigned int unLen;     /* 10 bits */
+       unsigned int* punDest;  /* unused */
+       union {
+               unsigned int unReg; /* only 32bit accesses may done to NS9750
+                                    * eth engine */
+               struct {
+                       unsigned uStatus : 16;
+                       unsigned uRes : 12;
+                       unsigned uFull : 1;
+                       unsigned uLast : 1;
+                       unsigned uInt : 1;
+                       unsigned uWrap : 1;
+               } bits;
+       } s;
+} tx_buffer_desc_t;
+
+static int ns9750_eth_reset( void );
+
+static void ns9750_link_force( void );
+static void ns9750_link_auto_negotiate( void );
+static void ns9750_link_update_egcr( void );
+static void ns9750_link_print_changed( void );
+
+/* the PHY stuff */
+
+static char ns9750_mii_identify_phy( void );
+static unsigned short ns9750_mii_read( unsigned short uiRegister );
+static void ns9750_mii_write( unsigned short uiRegister, unsigned short uiData );
+static unsigned int ns9750_mii_get_clock_divisor( unsigned int unMaxMDIOClk );
+static unsigned int ns9750_mii_poll_busy( void );
+
+static unsigned int nPhyMaxMdioClock = PHY_MDIO_MAX_CLK;
+static unsigned char ucLinkMode =      FS_EEPROM_AUTONEG_ENABLE;
+static unsigned int uiLastLinkStatus;
+static PhyType phyDetected = PHY_NONE;
+
+/* we use only one tx buffer descriptor */
+static tx_buffer_desc_t* pTxBufferDesc =
+       (tx_buffer_desc_t*) get_eth_reg_addr( NS9750_ETH_TXBD );
+
+/* we use only one rx buffer descriptor of the 4 */
+static rx_buffer_desc_t aRxBufferDesc[ 4 ];
+
+/***********************************************************************
+ * @Function: eth_init
+ * @Return: -1 on failure otherwise 0
+ * @Descr: Initializes the ethernet engine and uses either FS Forth's default
+ *        MAC addr or the one in environment
+ ***********************************************************************/
+
+int eth_init (bd_t * pbis)
+{
+       /* This default MAC Addr is reserved by FS Forth-Systeme for the case of
+          EEPROM failures */
+       unsigned char aucMACAddr[6] = { 0x00, 0x04, 0xf3, 0x00, 0x06, 0x35 };
+       char *pcTmp = getenv ("ethaddr");
+       char *pcEnd;
+       int i;
+
+       DEBUG_FN (DEBUG_INIT);
+
+       /* no need to check for hardware */
+
+       if (!ns9750_eth_reset ())
+               return -1;
+
+       if (pcTmp != NULL)
+               for (i = 0; i < 6; i++) {
+                       aucMACAddr[i] =
+                               pcTmp ? simple_strtoul (pcTmp, &pcEnd,
+                                                       16) : 0;
+                       pcTmp = (*pcTmp) ? pcEnd + 1 : pcEnd;
+               }
+
+       /* configure ethernet address */
+
+       *get_eth_reg_addr (NS9750_ETH_SA1) =
+               aucMACAddr[5] << 8 | aucMACAddr[4];
+       *get_eth_reg_addr (NS9750_ETH_SA2) =
+               aucMACAddr[3] << 8 | aucMACAddr[2];
+       *get_eth_reg_addr (NS9750_ETH_SA3) =
+               aucMACAddr[1] << 8 | aucMACAddr[0];
+
+       /* enable hardware */
+
+       *get_eth_reg_addr (NS9750_ETH_MAC1) = NS9750_ETH_MAC1_RXEN;
+
+       /* the linux kernel may give packets < 60 bytes, for example arp */
+       *get_eth_reg_addr (NS9750_ETH_MAC2) = NS9750_ETH_MAC2_CRCEN |
+               NS9750_ETH_MAC2_PADEN | NS9750_ETH_MAC2_HUGE;
+
+       /* enable receive and transmit FIFO, use 10/100 Mbps MII */
+       *get_eth_reg_addr (NS9750_ETH_EGCR1) =
+               NS9750_ETH_EGCR1_ETXWM |
+               NS9750_ETH_EGCR1_ERX |
+               NS9750_ETH_EGCR1_ERXDMA |
+               NS9750_ETH_EGCR1_ETX |
+               NS9750_ETH_EGCR1_ETXDMA | NS9750_ETH_EGCR1_ITXA;
+
+       /* prepare DMA descriptors */
+       for (i = 0; i < 4; i++) {
+               aRxBufferDesc[i].punSrc = 0;
+               aRxBufferDesc[i].unLen = 0;
+               aRxBufferDesc[i].s.bits.uWrap = 1;
+               aRxBufferDesc[i].s.bits.uInt = 1;
+               aRxBufferDesc[i].s.bits.uEnable = 0;
+               aRxBufferDesc[i].s.bits.uFull = 0;
+       }
+
+       /* NetRxPackets[ 0 ] is initialized before eth_init is called and never
+          changes. NetRxPackets is 32bit aligned */
+       aRxBufferDesc[0].punSrc = (unsigned int *) NetRxPackets[0];
+       aRxBufferDesc[0].s.bits.uEnable = 1;
+       aRxBufferDesc[0].unLen = 1522;  /* as stated in [1] p.307 */
+
+       *get_eth_reg_addr (NS9750_ETH_RXAPTR) =
+               (unsigned int) &aRxBufferDesc[0];
+
+       /* [1] Tab. 221 states less than 5us */
+       *get_eth_reg_addr (NS9750_ETH_EGCR1) |= NS9750_ETH_EGCR1_ERXINIT;
+       while (!
+              (*get_eth_reg_addr (NS9750_ETH_EGSR) & NS9750_ETH_EGSR_RXINIT))
+               /* wait for finish */
+               udelay (1);
+
+       /* @TODO do we need to clear RXINIT? */
+       *get_eth_reg_addr (NS9750_ETH_EGCR1) &= ~NS9750_ETH_EGCR1_ERXINIT;
+
+       *get_eth_reg_addr (NS9750_ETH_RXFREE) = 0x1;
+
+       return 0;
+}
+
+/***********************************************************************
+ * @Function: eth_send
+ * @Return: -1 on timeout otherwise 1
+ * @Descr: sends one frame by DMA
+ ***********************************************************************/
+
+int eth_send (volatile void *pPacket, int nLen)
+{
+       ulong ulTimeout;
+
+       DEBUG_FN (DEBUG_TX);
+
+       /* clear old status values */
+       *get_eth_reg_addr (NS9750_ETH_EINTR) &=
+               *get_eth_reg_addr (NS9750_ETH_EINTR) & NS9750_ETH_EINTR_TX_MA;
+
+       /* prepare Tx Descriptors */
+
+       pTxBufferDesc->punSrc = (unsigned int *) pPacket;       /* pPacket is 32bit
+                                                                * aligned */
+       pTxBufferDesc->unLen = nLen;
+       /* only 32bit accesses allowed. wrap, full, interrupt and enabled to 1 */
+       pTxBufferDesc->s.unReg = 0xf0000000;
+       /* pTxBufferDesc is the first possible buffer descriptor */
+       *get_eth_reg_addr (NS9750_ETH_TXPTR) = 0x0;
+
+       /* enable processor for next frame */
+
+       *get_eth_reg_addr (NS9750_ETH_EGCR2) &= ~NS9750_ETH_EGCR2_TCLER;
+       *get_eth_reg_addr (NS9750_ETH_EGCR2) |= NS9750_ETH_EGCR2_TCLER;
+
+       ulTimeout = get_timer (0);
+
+       DEBUG_ARGS0 (DEBUG_TX | DEBUG_MINOR,
+                    "Waiting for transmission to finish\n");
+       while (!
+              (*get_eth_reg_addr (NS9750_ETH_EINTR) &
+               (NS9750_ETH_EINTR_TXDONE | NS9750_ETH_EINTR_TXERR))) {
+               /* do nothing, wait for completion */
+               if (get_timer (0) - ulTimeout > TX_TIMEOUT) {
+                       DEBUG_ARGS0 (DEBUG_TX, "Transmit Timed out\n");
+                       return -1;
+               }
+       }
+       DEBUG_ARGS0 (DEBUG_TX | DEBUG_MINOR, "transmitted...\n");
+
+       return 0;
+}
+
+/***********************************************************************
+ * @Function: eth_rx
+ * @Return: size of last frame in bytes or 0 if no frame available
+ * @Descr: gives one frame to U-Boot which has been copied by DMA engine already
+ *        to NetRxPackets[ 0 ].
+ ***********************************************************************/
+
+int eth_rx (void)
+{
+       int nLen = 0;
+       unsigned int unStatus;
+
+       unStatus =
+               *get_eth_reg_addr (NS9750_ETH_EINTR) & NS9750_ETH_EINTR_RX_MA;
+
+       if (!unStatus)
+               /* no packet available, return immediately */
+               return 0;
+
+       DEBUG_FN (DEBUG_RX);
+
+       /* unLen always < max(nLen) and discard checksum */
+       nLen = (int) aRxBufferDesc[0].unLen - 4;
+
+       /* acknowledge status register */
+       *get_eth_reg_addr (NS9750_ETH_EINTR) = unStatus;
+
+       aRxBufferDesc[0].unLen = 1522;
+       aRxBufferDesc[0].s.bits.uFull = 0;
+
+       /* Buffer A descriptor available again */
+       *get_eth_reg_addr (NS9750_ETH_RXFREE) |= 0x1;
+
+       /* NetReceive may call eth_send. Due to a possible bug of the NS9750 we
+        * have to acknowledge the received frame before sending a new one */
+       if (unStatus & NS9750_ETH_EINTR_RXDONEA)
+               NetReceive (NetRxPackets[0], nLen);
+
+       return nLen;
+}
+
+/***********************************************************************
+ * @Function: eth_halt
+ * @Return: n/a
+ * @Descr: stops the ethernet engine
+ ***********************************************************************/
+
+void eth_halt (void)
+{
+       DEBUG_FN (DEBUG_INIT);
+
+       *get_eth_reg_addr (NS9750_ETH_MAC1) &= ~NS9750_ETH_MAC1_RXEN;
+       *get_eth_reg_addr (NS9750_ETH_EGCR1) &= ~(NS9750_ETH_EGCR1_ERX |
+                                                 NS9750_ETH_EGCR1_ERXDMA |
+                                                 NS9750_ETH_EGCR1_ETX |
+                                                 NS9750_ETH_EGCR1_ETXDMA);
+}
+
+/***********************************************************************
+ * @Function: ns9750_eth_reset
+ * @Return: 0 on failure otherwise 1
+ * @Descr: resets the ethernet interface and the PHY,
+ *        performs auto negotiation or fixed modes
+ ***********************************************************************/
+
+static int ns9750_eth_reset (void)
+{
+       DEBUG_FN (DEBUG_MINOR);
+
+       /* Reset MAC */
+       *get_eth_reg_addr (NS9750_ETH_EGCR1) |= NS9750_ETH_EGCR1_MAC_HRST;
+       udelay (5);             /* according to [1], p.322 */
+       *get_eth_reg_addr (NS9750_ETH_EGCR1) &= ~NS9750_ETH_EGCR1_MAC_HRST;
+
+       /* reset and initialize PHY */
+
+       *get_eth_reg_addr (NS9750_ETH_MAC1) &= ~NS9750_ETH_MAC1_SRST;
+
+       /* we don't support hot plugging of PHY, therefore we don't reset
+          phyDetected and nPhyMaxMdioClock here. The risk is if the setting is
+          incorrect the first open
+          may detect the PHY correctly but succeding will fail
+          For reseting the PHY and identifying we have to use the standard
+          MDIO CLOCK value 2.5 MHz only after hardware reset
+          After having identified the PHY we will do faster */
+
+       *get_eth_reg_addr (NS9750_ETH_MCFG) =
+               ns9750_mii_get_clock_divisor (nPhyMaxMdioClock);
+
+       /* reset PHY */
+       ns9750_mii_write(PHY_BMCR, PHY_BMCR_RESET);
+       ns9750_mii_write(PHY_BMCR, 0);
+
+       /* @TODO check time */
+       udelay (3000);          /* [2] p.70 says at least 300us reset recovery time. But
+                                  go sure, it didn't worked stable at higher timer
+                                  frequencies under LxNETES-2.x */
+
+       /* MII clock has been setup to default, ns9750_mii_identify_phy should
+          work for all */
+
+       if (!ns9750_mii_identify_phy ()) {
+               printk (KERN_ERR NS9750_DRIVER_NAME
+                       ": Unsupported PHY, aborting\n");
+               return 0;
+       }
+
+       /* now take the highest MDIO clock possible after detection */
+       *get_eth_reg_addr (NS9750_ETH_MCFG) =
+               ns9750_mii_get_clock_divisor (nPhyMaxMdioClock);
+
+
+       /* PHY has been detected, so there can be no abort reason and we can
+          finish initializing ethernet */
+
+       uiLastLinkStatus = 0xff;        /* undefined */
+
+       if ((ucLinkMode & FS_EEPROM_AUTONEG_ENABLE_MASK) ==
+           FS_EEPROM_AUTONEG_DISABLE)
+               /* use parameters defined */
+               ns9750_link_force ();
+       else
+               ns9750_link_auto_negotiate ();
+
+       if (phyDetected == PHY_LXT971A)
+               /* set LED2 to link mode */
+               ns9750_mii_write (PHY_LXT971_LED_CFG,
+                                 PHY_LXT971_LED_CFG_LINK_ACT <<
+                                 PHY_LXT971_LED_CFG_SHIFT_LED2);
+
+       return 1;
+}
+
+/***********************************************************************
+ * @Function: ns9750_link_force
+ * @Return: void
+ * @Descr: configures eth and MII to use the link mode defined in
+ *        ucLinkMode
+ ***********************************************************************/
+
+static void ns9750_link_force (void)
+{
+       unsigned short uiControl;
+
+       DEBUG_FN (DEBUG_LINK);
+
+       uiControl = ns9750_mii_read(PHY_BMCR);
+       uiControl &= ~(PHY_BMCR_SPEED_MASK |
+                      PHY_BMCR_AUTON | PHY_BMCR_DPLX);
+
+       uiLastLinkStatus = 0;
+
+       if ((ucLinkMode & FS_EEPROM_AUTONEG_SPEED_MASK) ==
+           FS_EEPROM_AUTONEG_SPEED_100) {
+               uiControl |= PHY_BMCR_100MB;
+               uiLastLinkStatus |= PHY_LXT971_STAT2_100BTX;
+       } else
+               uiControl |= PHY_BMCR_10_MBPS;
+
+       if ((ucLinkMode & FS_EEPROM_AUTONEG_DUPLEX_MASK) ==
+           FS_EEPROM_AUTONEG_DUPLEX_FULL) {
+               uiControl |= PHY_BMCR_DPLX;
+               uiLastLinkStatus |= PHY_LXT971_STAT2_DUPLEX_MODE;
+       }
+
+       ns9750_mii_write(PHY_BMCR, uiControl);
+
+       ns9750_link_print_changed ();
+       ns9750_link_update_egcr ();
+}
+
+/***********************************************************************
+ * @Function: ns9750_link_auto_negotiate
+ * @Return: void
+ * @Descr: performs auto-negotation of link.
+ ***********************************************************************/
+
+static void ns9750_link_auto_negotiate (void)
+{
+       unsigned long ulStartJiffies;
+       unsigned short uiStatus;
+
+       DEBUG_FN (DEBUG_LINK);
+
+       /* run auto-negotation */
+       /* define what we are capable of */
+       ns9750_mii_write(PHY_ANAR,
+                        PHY_ANLPAR_TXFD |
+                        PHY_ANLPAR_TX |
+                        PHY_ANLPAR_10FD |
+                        PHY_ANLPAR_10 |
+                        PHY_ANLPAR_PSB_802_3);
+       /* start auto-negotiation */
+       ns9750_mii_write(PHY_BMCR, PHY_BMCR_AUTON | PHY_BMCR_RST_NEG);
+
+       /* wait for completion */
+
+       ulStartJiffies = get_ticks ();
+       while (get_ticks () < ulStartJiffies + NS9750_MII_NEG_DELAY) {
+               uiStatus = ns9750_mii_read(PHY_BMSR);
+               if ((uiStatus &
+                    (PHY_BMSR_AUTN_COMP | PHY_BMSR_LS)) ==
+                   (PHY_BMSR_AUTN_COMP | PHY_BMSR_LS)) {
+                       /* lucky we are, auto-negotiation succeeded */
+                       ns9750_link_print_changed ();
+                       ns9750_link_update_egcr ();
+                       return;
+               }
+       }
+
+       DEBUG_ARGS0 (DEBUG_LINK, "auto-negotiation timed out\n");
+       /* ignore invalid link settings */
+}
+
+/***********************************************************************
+ * @Function: ns9750_link_update_egcr
+ * @Return: void
+ * @Descr: updates the EGCR and MAC2 link status after mode change or
+ *        auto-negotation
+ ***********************************************************************/
+
+static void ns9750_link_update_egcr (void)
+{
+       unsigned int unEGCR;
+       unsigned int unMAC2;
+       unsigned int unIPGT;
+
+       DEBUG_FN (DEBUG_LINK);
+
+       unEGCR = *get_eth_reg_addr (NS9750_ETH_EGCR1);
+       unMAC2 = *get_eth_reg_addr (NS9750_ETH_MAC2);
+       unIPGT = *get_eth_reg_addr (NS9750_ETH_IPGT) & ~NS9750_ETH_IPGT_MA;
+
+       unMAC2 &= ~NS9750_ETH_MAC2_FULLD;
+       if ((uiLastLinkStatus & PHY_LXT971_STAT2_DUPLEX_MODE)
+           == PHY_LXT971_STAT2_DUPLEX_MODE) {
+               unMAC2 |= NS9750_ETH_MAC2_FULLD;
+               unIPGT |= 0x15; /* see [1] p. 339 */
+       } else
+               unIPGT |= 0x12; /* see [1] p. 339 */
+
+       *get_eth_reg_addr (NS9750_ETH_MAC2) = unMAC2;
+       *get_eth_reg_addr (NS9750_ETH_EGCR1) = unEGCR;
+       *get_eth_reg_addr (NS9750_ETH_IPGT) = unIPGT;
+}
+
+/***********************************************************************
+ * @Function: ns9750_link_print_changed
+ * @Return: void
+ * @Descr: checks whether the link status has changed and if so prints
+ *        the new mode
+ ***********************************************************************/
+
+static void ns9750_link_print_changed (void)
+{
+       unsigned short uiStatus;
+       unsigned short uiControl;
+
+       DEBUG_FN (DEBUG_LINK);
+
+       uiControl = ns9750_mii_read(PHY_BMCR);
+
+       if ((uiControl & PHY_BMCR_AUTON) == PHY_BMCR_AUTON) {
+               /* PHY_BMSR_LS is only set on autonegotiation */
+               uiStatus = ns9750_mii_read(PHY_BMSR);
+
+               if (!(uiStatus & PHY_BMSR_LS)) {
+                       printk (KERN_WARNING NS9750_DRIVER_NAME
+                               ": link down\n");
+                       /* @TODO Linux: carrier_off */
+               } else {
+                       /* @TODO Linux: carrier_on */
+                       if (phyDetected == PHY_LXT971A) {
+                               uiStatus = ns9750_mii_read (PHY_LXT971_STAT2);
+                               uiStatus &= (PHY_LXT971_STAT2_100BTX |
+                                            PHY_LXT971_STAT2_DUPLEX_MODE |
+                                            PHY_LXT971_STAT2_AUTO_NEG);
+
+                               /* mask out all uninteresting parts */
+                       }
+                       /* other PHYs must store their link information in
+                          uiStatus as PHY_LXT971 */
+               }
+       } else {
+               /* mode has been forced, so uiStatus should be the same as the
+                  last link status, enforce printing */
+               uiStatus = uiLastLinkStatus;
+               uiLastLinkStatus = 0xff;
+       }
+
+       if (uiStatus != uiLastLinkStatus) {
+               /* save current link status */
+               uiLastLinkStatus = uiStatus;
+
+               /* print new link status */
+
+               printk (KERN_INFO NS9750_DRIVER_NAME
+                       ": link mode %i Mbps %s duplex %s\n",
+                       (uiStatus & PHY_LXT971_STAT2_100BTX) ? 100 : 10,
+                       (uiStatus & PHY_LXT971_STAT2_DUPLEX_MODE) ? "full" :
+                       "half",
+                       (uiStatus & PHY_LXT971_STAT2_AUTO_NEG) ? "(auto)" :
+                       "");
+       }
+}
+
+/***********************************************************************
+ * the MII low level stuff
+ ***********************************************************************/
+
+/***********************************************************************
+ * @Function: ns9750_mii_identify_phy
+ * @Return: 1 if supported PHY has been detected otherwise 0
+ * @Descr: checks for supported PHY and prints the IDs.
+ ***********************************************************************/
+
+static char ns9750_mii_identify_phy (void)
+{
+       unsigned short uiID1;
+       unsigned short uiID2;
+       unsigned char *szName;
+       char cRes = 0;
+
+       DEBUG_FN (DEBUG_MII);
+
+       phyDetected = (PhyType) uiID1 = ns9750_mii_read(PHY_PHYIDR1);
+
+       switch (phyDetected) {
+       case PHY_LXT971A:
+               szName = "LXT971A";
+               uiID2 = ns9750_mii_read(PHY_PHYIDR2);
+               nPhyMaxMdioClock = PHY_LXT971_MDIO_MAX_CLK;
+               cRes = 1;
+               break;
+       case PHY_NONE:
+       default:
+               /* in case uiID1 == 0 && uiID2 == 0 we may have the wrong
+                  address or reset sets the wrong NS9750_ETH_MCFG_CLKS */
+
+               uiID2 = 0;
+               szName = "unknown";
+               nPhyMaxMdioClock = PHY_MDIO_MAX_CLK;
+               phyDetected = PHY_NONE;
+       }
+
+       printk (KERN_INFO NS9750_DRIVER_NAME
+               ": PHY (0x%x, 0x%x) = %s detected\n", uiID1, uiID2, szName);
+
+       return cRes;
+}
+
+/***********************************************************************
+ * @Function: ns9750_mii_read
+ * @Return: the data read from PHY register uiRegister
+ * @Descr: the data read may be invalid if timed out. If so, a message
+ *        is printed but the invalid data is returned.
+ *        The fixed device address is being used.
+ ***********************************************************************/
+
+static unsigned short ns9750_mii_read (unsigned short uiRegister)
+{
+       DEBUG_FN (DEBUG_MII_LOW);
+
+       /* write MII register to be read */
+       *get_eth_reg_addr (NS9750_ETH_MADR) =
+               NS9750_ETH_PHY_ADDRESS << 8 | uiRegister;
+
+       *get_eth_reg_addr (NS9750_ETH_MCMD) = NS9750_ETH_MCMD_READ;
+
+       if (!ns9750_mii_poll_busy ())
+               printk (KERN_WARNING NS9750_DRIVER_NAME
+                       ": MII still busy in read\n");
+       /* continue to read */
+
+       *get_eth_reg_addr (NS9750_ETH_MCMD) = 0;
+
+       return (unsigned short) (*get_eth_reg_addr (NS9750_ETH_MRDD));
+}
+
+
+/***********************************************************************
+ * @Function: ns9750_mii_write
+ * @Return: nothing
+ * @Descr: writes the data to the PHY register. In case of a timeout,
+ *        no special handling is performed but a message printed
+ *        The fixed device address is being used.
+ ***********************************************************************/
+
+static void ns9750_mii_write (unsigned short uiRegister,
+                             unsigned short uiData)
+{
+       DEBUG_FN (DEBUG_MII_LOW);
+
+       /* write MII register to be written */
+       *get_eth_reg_addr (NS9750_ETH_MADR) =
+               NS9750_ETH_PHY_ADDRESS << 8 | uiRegister;
+
+       *get_eth_reg_addr (NS9750_ETH_MWTD) = uiData;
+
+       if (!ns9750_mii_poll_busy ()) {
+               printf (KERN_WARNING NS9750_DRIVER_NAME
+                       ": MII still busy in write\n");
+       }
+}
+
+
+/***********************************************************************
+ * @Function: ns9750_mii_get_clock_divisor
+ * @Return: the clock divisor that should be used in NS9750_ETH_MCFG_CLKS
+ * @Descr: if no clock divisor can be calculated for the
+ *        current SYSCLK and the maximum MDIO Clock, a warning is printed
+ *        and the greatest divisor is taken
+ ***********************************************************************/
+
+static unsigned int ns9750_mii_get_clock_divisor (unsigned int unMaxMDIOClk)
+{
+       struct {
+               unsigned int unSysClkDivisor;
+               unsigned int unClks;    /* field for NS9750_ETH_MCFG_CLKS */
+       } PHYClockDivisors[] = {
+               {
+               4, NS9750_ETH_MCFG_CLKS_4}, {
+               6, NS9750_ETH_MCFG_CLKS_6}, {
+               8, NS9750_ETH_MCFG_CLKS_8}, {
+               10, NS9750_ETH_MCFG_CLKS_10}, {
+               20, NS9750_ETH_MCFG_CLKS_20}, {
+               30, NS9750_ETH_MCFG_CLKS_30}, {
+               40, NS9750_ETH_MCFG_CLKS_40}
+       };
+
+       int nIndexSysClkDiv;
+       int nArraySize =
+               sizeof (PHYClockDivisors) / sizeof (PHYClockDivisors[0]);
+       unsigned int unClks = NS9750_ETH_MCFG_CLKS_40;  /* defaults to
+                                                          greatest div */
+
+       DEBUG_FN (DEBUG_INIT);
+
+       for (nIndexSysClkDiv = 0; nIndexSysClkDiv < nArraySize;
+            nIndexSysClkDiv++) {
+               /* find first sysclock divisor that isn't higher than 2.5 MHz
+                  clock */
+               if (AHB_CLK_FREQ /
+                   PHYClockDivisors[nIndexSysClkDiv].unSysClkDivisor <=
+                   unMaxMDIOClk) {
+                       unClks = PHYClockDivisors[nIndexSysClkDiv].unClks;
+                       break;
+               }
+       }
+
+       DEBUG_ARGS2 (DEBUG_INIT,
+                    "Taking MDIO Clock bit mask 0x%0x for max clock %i\n",
+                    unClks, unMaxMDIOClk);
+
+       /* return greatest divisor */
+       return unClks;
+}
+
+/***********************************************************************
+ * @Function: ns9750_mii_poll_busy
+ * @Return: 0 if timed out otherwise the remaing timeout
+ * @Descr: waits until the MII has completed a command or it times out
+ *        code may be interrupted by hard interrupts.
+ *        It is not checked what happens on multiple actions when
+ *        the first is still being busy and we timeout.
+ ***********************************************************************/
+
+static unsigned int ns9750_mii_poll_busy (void)
+{
+       unsigned int unTimeout = 10000;
+
+       DEBUG_FN (DEBUG_MII_LOW);
+
+       while (((*get_eth_reg_addr (NS9750_ETH_MIND) & NS9750_ETH_MIND_BUSY)
+               == NS9750_ETH_MIND_BUSY) && unTimeout)
+               unTimeout--;
+
+       return unTimeout;
+}
diff -Naur u-boot-2009.03_orig/drivers/net/phy/CVS/Entries u-boot-2009.03/drivers/net/phy/CVS/Entries
--- u-boot-2009.03_orig/drivers/net/phy/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/net/phy/CVS/Entries  2009-03-25 15:58:02.715503800 -0700
@@ -0,0 +1,3 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/miiphybb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/drivers/net/phy/CVS/Entries.Extra u-boot-2009.03/drivers/net/phy/CVS/Entries.Extra
--- u-boot-2009.03_orig/drivers/net/phy/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/net/phy/CVS/Entries.Extra    2009-03-25 15:58:02.715503800 -0700
@@ -0,0 +1,2 @@
+/Makefile///1238019729/
+/miiphybb.c///1238019729/
diff -Naur u-boot-2009.03_orig/drivers/net/phy/CVS/Entries.Extra.Old u-boot-2009.03/drivers/net/phy/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/drivers/net/phy/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/net/phy/CVS/Entries.Extra.Old        2009-03-25 15:25:30.000000000 -0700
@@ -0,0 +1,2 @@
+/Makefile///1238019729/
+/miiphybb.c///1238019729/
diff -Naur u-boot-2009.03_orig/drivers/net/phy/CVS/Entries.Old u-boot-2009.03/drivers/net/phy/CVS/Entries.Old
--- u-boot-2009.03_orig/drivers/net/phy/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/net/phy/CVS/Entries.Old      2009-03-25 15:25:30.000000000 -0700
@@ -0,0 +1,3 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:09 2009//
+/miiphybb.c/1.1.1.1/Wed Mar 25 22:22:09 2009//
+D
diff -Naur u-boot-2009.03_orig/drivers/net/phy/CVS/Repository u-boot-2009.03/drivers/net/phy/CVS/Repository
--- u-boot-2009.03_orig/drivers/net/phy/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/net/phy/CVS/Repository       2009-03-25 15:25:30.790496200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/drivers/net/phy
diff -Naur u-boot-2009.03_orig/drivers/net/phy/CVS/Root u-boot-2009.03/drivers/net/phy/CVS/Root
--- u-boot-2009.03_orig/drivers/net/phy/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/net/phy/CVS/Root     2009-03-25 15:25:30.790496200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/drivers/net/s3c4510b_eth.h u-boot-2009.03/drivers/net/s3c4510b_eth.h
--- u-boot-2009.03_orig/drivers/net/s3c4510b_eth.h      2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/drivers/net/s3c4510b_eth.h   2009-03-31 14:53:44.441206400 -0700
@@ -1,302 +1,302 @@
-#ifndef __S3C4510B_ETH_H
-#define __S3C4510B_ETH_H
-/*
- * Copyright (c) 2004  Cucy Systems (http://www.cucy.com)
- * Curt Brune <curt@cucy.com>
- *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- *
- * MODULE:        $Id:$
- * Description:   Ethernet interface
- * Runtime Env:   ARM7TDMI
- * Change History:
- *     03-02-04    Create (Curt Brune) curt@cucy.com
- *
- */
-
-#define ETH_MAC_ADDR_SIZE           (6)    /*  dst,src addr is 6bytes each */
-#define ETH_MaxTxFrames             (16)   /*  Max number of Tx Frames */
-
-/*  Buffered DMA Receiver Control Register  */
-#define ETH_BRxBRST     0x0000F  /*  BDMA Rx Burst Size * BRxBRST  */
-                                /*  = Burst Data Size 16 */
-#define ETH_BRxSTSKO    0x00020  /*  BDMA Rx Stop/Skip  Frame or Interrupt(=1)  */
-                                /*  case of not OWNER the current Frame  */
-#define ETH_BRxMAINC    0x00040  /*  BDMA Rx Memory Address Inc/Dec  */
-#define ETH_BRxDIE      0x00080  /*  BDMA Rx Every Received Frame Interrupt Enable */
-#define ETH_BRxNLIE     0x00100  /*  BDMA Rx NULL List Interrupt Enable  */
-#define ETH_BRxNOIE     0x00200  /*  BDMA Rx Not Owner Interrupt Enable */
-#define ETH_BRxMSOIE    0x00400  /*  BDMA Rx Maximum Size over Interrupr Enable  */
-#define ETH_BRxLittle   0x00800  /*  BDMA Rx Big/Little Endian  */
-#define ETH_BRxBig      0x00000  /*  BDMA Rx Big/Little Endian */
-#define ETH_BRxWA01     0x01000  /*  BDMA Rx Word Alignment- one invalid byte  */
-#define ETH_BRxWA10     0x02000  /*  BDMA Rx Word Alignment- two invalid byte */
-#define ETH_BRxWA11     0x03000  /*  BDMA Rx Word Alignment- three invalid byte  */
-#define ETH_BRxEn       0x04000  /*  BDMA Rx Enable */
-#define ETH_BRxRS       0x08000  /*  BDMA Rx Reset */
-#define ETH_RxEmpty     0x10000  /*  BDMA Rx Buffer empty interrupt  */
-#define ETH_BRxEarly    0x20000  /*  BDMA Rx Early notify Interrupt */
-
-/*  Buffered DMA Trasmit Control Register(BDMATXCON)  */
-#define ETH_BTxBRST     0x0000F  /*  BDMA Tx Burst Size = 16  */
-#define ETH_BTxSTSKO    0x00020  /*  BDMA Tx Stop/Skip Frame or Interrupt in case */
-                                /*  of not Owner the current frame  */
-#define ETH_BTxCPIE     0x00080  /*  BDMA Tx Complete to send control  */
-                                /*  packet Enable */
-#define ETH_BTxNOIE     0x00200  /*  BDMA Tx Buffer Not Owner */
-#define ETH_BTxEmpty    0x00400  /*  BDMA Tx Buffer Empty Interrupt  */
-
-/*  BDMA Tx buffer can be moved to the MAC Tx IO when the new frame comes in.  */
-#define ETH_BTxMSL000   0x00000  /*  No wait to fill the BDMA  */
-#define ETH_BTxMSL001   0x00800  /*  wait to fill 1/8 of the BDMA  */
-#define ETH_BTxMSL010   0x01000  /*  wait to fill 2/8 of the BDMA */
-#define ETH_BTxMSL011   0x01800  /*  wait to fill 3/8 of the BDMA */
-#define ETH_BTxMSL100   0x02000  /*  wait to fill 4/8 of the BDMA */
-#define ETH_BTxMSL101   0x02800  /*  wait to fill 5/8 of the BDMA */
-#define ETH_BTxMSL110   0x03000  /*  wait to fill 6/8 of the BDMA */
-#define ETH_BTxMSL111   0x03800  /*  wait to fill 7/8 of the BDMA */
-#define ETH_BTxEn       0x04000  /*  BDMA Tx Enable  */
-#define ETH_BTxRS       0x08000  /*  BDMA Tx Reset  */
-
-/*  BDMA Status Register  */
-#define ETH_S_BRxRDF    0x00001  /*  BDMA Rx Done Every Received Frame  */
-#define ETH_S_BRxNL     0x00002  /*  BDMA Rx NULL List  */
-#define ETH_S_BRxNO     0x00004  /*  BDMA Rx Not Owner  */
-#define ETH_S_BRxMSO    0x00008  /*  BDMA Rx Maximum Size Over  */
-#define ETH_S_BRxEmpty  0x00010  /*  BDMA Rx Buffer Empty  */
-#define ETH_S_BRxSEarly 0x00020  /*  Early Notify  */
-#define ETH_S_BRxFRF    0x00080  /*  One more frame data in BDMA receive buffer  */
-#define ETH_S_BTxCCP    0x10000  /*  BDMA Tx Complete to send Control Packet  */
-#define ETH_S_BTxNL     0x20000  /*  BDMA Tx Null List  */
-#define ETH_S_BTxNO     0x40000  /*  BDMA Tx Not Owner */
-#define ETH_S_BTxEmpty  0x100000 /*  BDMA Tx Buffer Empty  */
-
-/*  MAC Control Register  */
-#define ETH_HaltReg     0x0001   /*  stop transmission and reception  */
-                                /*  after completion of any current packets  */
-#define ETH_HaltImm     0x0002   /*  Stop transmission and reception immediately  */
-#define ETH_SwReset     0x0004   /*  reset all Ethernet controller state machines */
-                                /*  and FIFOs  */
-#define ETH_FullDup     0x0008   /*  allow transmission to begin while reception */
-                                /*  is occurring  */
-#define ETH_MACLoop     0x0010   /*  MAC loopback */
-#define ETH_ConnM00     0x0000   /*  Automatic-default  */
-#define ETH_ConnM01     0x0020   /*  Force 10Mbits endec */
-#define ETH_ConnM10     0x0040   /*  Force MII (rate determined by MII clock  */
-#define ETH_MIIOFF      0x0040   /*  Force MII (rate determined by MII clock  */
-#define ETH_Loop10      0x0080   /*  Loop 10Mbps  */
-#define ETH_MissRoll    0x0400   /*  Missed error counter rolled over  */
-#define ETH_MDCOFF      0x1000   /*  MII Station Management Clock Off */
-#define ETH_EnMissRoll  0x2000   /*  Interrupt when missed error counter rolls  */
-                                /*  over  */
-#define ETH_Link10      0x8000   /*  Link status 10Mbps  */
-
-/*  CAM control register(CAMCON)  */
-#define ETH_StationAcc  0x0001   /*  Accept any packet with a unicast station  */
-                                /*  address  */
-#define ETH_GroupAcc    0x0002   /*  Accept any packet with multicast-group  */
-                                /*  station address   */
-#define ETH_BroadAcc    0x0004   /*  Accept any packet with a broadcast station */
-                                /*  address  */
-#define ETH_NegCAM      0x0008   /*  0: Accept packets CAM recognizes,  */
-                                /*     reject others */
-                                /*  1: reject packets CAM recognizes,  */
-                                /*     accept others  */
-#define ETH_CompEn      0x0010   /*  Compare Enable mode */
-
-/*  Transmit Control Register(MACTXCON) */
-#define ETH_TxEn        0x0001   /*  transmit Enable  */
-#define ETH_TxHalt      0x0002   /*  Transmit Halt Request  */
-#define ETH_NoPad       0x0004   /*  suppress Padding  */
-#define ETH_NoCRC       0x0008   /*  Suppress CRC  */
-#define ETH_FBack       0x0010   /*  Fast Back-off */
-#define ETH_NoDef       0x0020   /*  Disable the defer counter */
-#define ETH_SdPause     0x0040   /*  Send Pause */
-#define ETH_MII10En     0x0080   /*  MII 10Mbps mode enable */
-#define ETH_EnUnder     0x0100   /*  Enable Underrun */
-#define ETH_EnDefer     0x0200   /*  Enable Deferral */
-#define ETH_EnNCarr     0x0400   /*  Enable No Carrier  */
-#define ETH_EnExColl    0x0800   /*  interrupt if 16 collision occur  */
-                                /*  in the same packet  */
-#define ETH_EnLateColl  0x1000   /*  interrupt if collision occurs after  */
-                                /*  512 bit times(64 bytes times)  */
-#define ETH_EnTxPar     0x2000   /*  interrupt if the MAC transmit FIFO  */
-                                /*  has a parity error  */
-#define ETH_EnComp      0x4000   /*  interrupt when the MAC transmits or  */
-                                /*  discards one packet  */
-
-/*  Transmit Status Register(MACTXSTAT) */
-#define ETH_ExColl      0x0010   /*  Excessive collision  */
-#define ETH_TxDeffered  0x0020   /*  set if 16 collisions occur for same packet */
-#define ETH_Paused      0x0040   /*  packet waited because of pause during  */
-                                /*  transmission  */
-#define ETH_IntTx       0x0080   /*  set if transmission of packet causes an  */
-                                /*  interrupt condiftion  */
-#define ETH_Under       0x0100   /*  MAC transmit FIFO becomes empty during  */
-                                /*  transmission  */
-#define ETH_Defer       0x0200   /*  MAC defers for MAC deferral  */
-#define ETH_NCarr       0x0400   /*  No carrier sense detected during the  */
-                                /*  transmission of a packet  */
-#define ETH_SQE         0x0800   /*  Signal Quality Error */
-#define ETH_LateColl    0x1000   /*  a collision occures after 512 bit times  */
-#define ETH_TxPar       0x2000   /*  MAC transmit FIFO has detected a parity error */
-#define ETH_Comp        0x4000   /*  MAC transmit or discards one packet  */
-#define ETH_TxHalted    0x8000   /*  Transmission was halted by clearing  */
-                                /*  TxEn or Halt immedite  */
-
-/*  Receive Control Register (MACRXCON)  */
-#define ETH_RxEn        0x0001
-#define ETH_RxHalt      0x0002
-#define ETH_LongEn      0x0004
-#define ETH_ShortEn     0x0008
-#define ETH_StripCRC    0x0010
-#define ETH_PassCtl     0x0020
-#define ETH_IgnoreCRC   0x0040
-#define ETH_EnAlign     0x0100
-#define ETH_EnCRCErr    0x0200
-#define ETH_EnOver      0x0400
-#define ETH_EnLongErr   0x0800
-#define ETH_EnRxPar     0x2000
-#define ETH_EnGood      0x4000
-
-/*  Receive Status Register(MACRXSTAT) */
-#define ETH_MCtlRecd    0x0020
-#define ETH_MIntRx      0x0040
-#define ETH_MRx10Stat   0x0080
-#define ETH_MAllignErr  0x0100
-#define ETH_MCRCErr     0x0200
-#define ETH_MOverflow   0x0400
-#define ETH_MLongErr    0x0800
-#define ETH_MRxPar      0x2000
-#define ETH_MRxGood     0x4000
-#define ETH_MRxHalted   0x8000
-
-/*  type of ethernet packets */
-#define ETH_TYPE_ARP  (0x0806)
-#define ETH_TYPE_IP   (0x0800)
-
-#define ETH_HDR_SIZE  (14)
-
-/*  bit field for frame data pointer word */
-typedef struct __BF_FrameDataPtr {
-       u32 dataPtr:31;
-       u32   owner: 1;
-} BF_FrameDataPtr;
-
-typedef union _FrameDataPtr {
-       u32             ui;
-       BF_FrameDataPtr bf;
-} FrameDataPtr;
-
-typedef struct __BF_TX_Options {
-       u32    no_padding: 1;
-       u32        no_crc: 1;
-       u32  macTxIrqEnbl: 1;
-       u32  littleEndian: 1;
-       u32  frameDataDir: 1;
-       u32   widgetAlign: 2;
-       u32      reserved:25;
-} BF_TX_Options;
-
-typedef union _TX_Options {
-       u32    ui;
-       BF_TX_Options   bf;
-} TX_Options;
-
-typedef struct __BF_RX_Status {
-       u32           len:16;   /*  frame length */
-       u32     reserved1: 3;
-       u32       overMax: 1;
-       u32     reserved2: 1;
-       u32       ctrlRcv: 1;
-       u32         intRx: 1;
-       u32      rx10stat: 1;
-       u32      alignErr: 1;
-       u32        crcErr: 1;
-       u32      overFlow: 1;
-       u32       longErr: 1;
-       u32     reserved3: 1;
-       u32     parityErr: 1;
-       u32          good: 1;
-       u32        halted: 1;
-} BF_RX_Status;
-
-typedef union _RX_Status {
-       u32             ui;
-       BF_RX_Status    bf;
-} RX_Status;
-
-typedef struct __BF_TX_Status {
-       u32           len:16;   /*  frame length */
-       u32     txCollCnt: 4;
-       u32        exColl: 1;
-       u32       txDefer: 1;
-       u32        paused: 1;
-       u32         intTx: 1;
-       u32      underRun: 1;
-       u32         defer: 1;
-       u32     noCarrier: 1;
-       u32         SQErr: 1;
-       u32      lateColl: 1;
-       u32     parityErr: 1;
-       u32      complete: 1;
-       u32        halted: 1;
-} BF_TX_Status;
-
-typedef union _TX_Status {
-       u32    ui;
-       BF_TX_Status    bf;
-} TX_Status;
-
-/*  TX descriptor structure  */
-typedef struct __TX_FrameDescriptor {
-       volatile FrameDataPtr  m_frameDataPtr;
-       TX_Options                      m_opt;
-       volatile TX_Status           m_status;
-       struct __TX_FrameDescriptor *m_nextFD;
-} TX_FrameDescriptor;
-
-/*  RX descriptor structure  */
-typedef struct __RX_FrameDescriptor {
-       volatile FrameDataPtr  m_frameDataPtr;
-       u32                        m_reserved;
-       volatile RX_Status           m_status;
-       struct __RX_FrameDescriptor *m_nextFD;
-} RX_FrameDescriptor;
-
-/*  MAC Frame Structure */
-struct __MACFrame {
-       u8     m_dstAddr[6];
-       u8     m_srcAddr[6];
-       u16  m_lengthOrType;
-       u8  m_payload[1506];
-} __attribute__ ((packed));
-
-typedef struct __MACFrame MACFrame;
-
-/* Ethernet Control block */
-typedef struct __ETH {
-       TX_FrameDescriptor   *m_curTX_FD; /*  pointer to current TX frame descriptor */
-       TX_FrameDescriptor  *m_baseTX_FD; /*  pointer to base TX frame descriptor    */
-       RX_FrameDescriptor   *m_curRX_FD; /*  pointer to current RX frame descriptor */
-       RX_FrameDescriptor  *m_baseRX_FD; /*  pointer to base RX frame descriptor    */
-       u8                        *m_mac; /*  pointer to our MAC address             */
-} ETH;
-
-#endif
+#ifndef __S3C4510B_ETH_H
+#define __S3C4510B_ETH_H
+/*
+ * Copyright (c) 2004  Cucy Systems (http://www.cucy.com)
+ * Curt Brune <curt@cucy.com>
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ * MODULE:        $Id: s3c4510b_eth.h,v 1.1.1.1 2009/03/25 22:22:09 kenagy Exp $
+ * Description:   Ethernet interface
+ * Runtime Env:   ARM7TDMI
+ * Change History:
+ *     03-02-04    Create (Curt Brune) curt@cucy.com
+ *
+ */
+
+#define ETH_MAC_ADDR_SIZE           (6)    /*  dst,src addr is 6bytes each */
+#define ETH_MaxTxFrames             (16)   /*  Max number of Tx Frames */
+
+/*  Buffered DMA Receiver Control Register  */
+#define ETH_BRxBRST     0x0000F  /*  BDMA Rx Burst Size * BRxBRST  */
+                                /*  = Burst Data Size 16 */
+#define ETH_BRxSTSKO    0x00020  /*  BDMA Rx Stop/Skip  Frame or Interrupt(=1)  */
+                                /*  case of not OWNER the current Frame  */
+#define ETH_BRxMAINC    0x00040  /*  BDMA Rx Memory Address Inc/Dec  */
+#define ETH_BRxDIE      0x00080  /*  BDMA Rx Every Received Frame Interrupt Enable */
+#define ETH_BRxNLIE     0x00100  /*  BDMA Rx NULL List Interrupt Enable  */
+#define ETH_BRxNOIE     0x00200  /*  BDMA Rx Not Owner Interrupt Enable */
+#define ETH_BRxMSOIE    0x00400  /*  BDMA Rx Maximum Size over Interrupr Enable  */
+#define ETH_BRxLittle   0x00800  /*  BDMA Rx Big/Little Endian  */
+#define ETH_BRxBig      0x00000  /*  BDMA Rx Big/Little Endian */
+#define ETH_BRxWA01     0x01000  /*  BDMA Rx Word Alignment- one invalid byte  */
+#define ETH_BRxWA10     0x02000  /*  BDMA Rx Word Alignment- two invalid byte */
+#define ETH_BRxWA11     0x03000  /*  BDMA Rx Word Alignment- three invalid byte  */
+#define ETH_BRxEn       0x04000  /*  BDMA Rx Enable */
+#define ETH_BRxRS       0x08000  /*  BDMA Rx Reset */
+#define ETH_RxEmpty     0x10000  /*  BDMA Rx Buffer empty interrupt  */
+#define ETH_BRxEarly    0x20000  /*  BDMA Rx Early notify Interrupt */
+
+/*  Buffered DMA Trasmit Control Register(BDMATXCON)  */
+#define ETH_BTxBRST     0x0000F  /*  BDMA Tx Burst Size = 16  */
+#define ETH_BTxSTSKO    0x00020  /*  BDMA Tx Stop/Skip Frame or Interrupt in case */
+                                /*  of not Owner the current frame  */
+#define ETH_BTxCPIE     0x00080  /*  BDMA Tx Complete to send control  */
+                                /*  packet Enable */
+#define ETH_BTxNOIE     0x00200  /*  BDMA Tx Buffer Not Owner */
+#define ETH_BTxEmpty    0x00400  /*  BDMA Tx Buffer Empty Interrupt  */
+
+/*  BDMA Tx buffer can be moved to the MAC Tx IO when the new frame comes in.  */
+#define ETH_BTxMSL000   0x00000  /*  No wait to fill the BDMA  */
+#define ETH_BTxMSL001   0x00800  /*  wait to fill 1/8 of the BDMA  */
+#define ETH_BTxMSL010   0x01000  /*  wait to fill 2/8 of the BDMA */
+#define ETH_BTxMSL011   0x01800  /*  wait to fill 3/8 of the BDMA */
+#define ETH_BTxMSL100   0x02000  /*  wait to fill 4/8 of the BDMA */
+#define ETH_BTxMSL101   0x02800  /*  wait to fill 5/8 of the BDMA */
+#define ETH_BTxMSL110   0x03000  /*  wait to fill 6/8 of the BDMA */
+#define ETH_BTxMSL111   0x03800  /*  wait to fill 7/8 of the BDMA */
+#define ETH_BTxEn       0x04000  /*  BDMA Tx Enable  */
+#define ETH_BTxRS       0x08000  /*  BDMA Tx Reset  */
+
+/*  BDMA Status Register  */
+#define ETH_S_BRxRDF    0x00001  /*  BDMA Rx Done Every Received Frame  */
+#define ETH_S_BRxNL     0x00002  /*  BDMA Rx NULL List  */
+#define ETH_S_BRxNO     0x00004  /*  BDMA Rx Not Owner  */
+#define ETH_S_BRxMSO    0x00008  /*  BDMA Rx Maximum Size Over  */
+#define ETH_S_BRxEmpty  0x00010  /*  BDMA Rx Buffer Empty  */
+#define ETH_S_BRxSEarly 0x00020  /*  Early Notify  */
+#define ETH_S_BRxFRF    0x00080  /*  One more frame data in BDMA receive buffer  */
+#define ETH_S_BTxCCP    0x10000  /*  BDMA Tx Complete to send Control Packet  */
+#define ETH_S_BTxNL     0x20000  /*  BDMA Tx Null List  */
+#define ETH_S_BTxNO     0x40000  /*  BDMA Tx Not Owner */
+#define ETH_S_BTxEmpty  0x100000 /*  BDMA Tx Buffer Empty  */
+
+/*  MAC Control Register  */
+#define ETH_HaltReg     0x0001   /*  stop transmission and reception  */
+                                /*  after completion of any current packets  */
+#define ETH_HaltImm     0x0002   /*  Stop transmission and reception immediately  */
+#define ETH_SwReset     0x0004   /*  reset all Ethernet controller state machines */
+                                /*  and FIFOs  */
+#define ETH_FullDup     0x0008   /*  allow transmission to begin while reception */
+                                /*  is occurring  */
+#define ETH_MACLoop     0x0010   /*  MAC loopback */
+#define ETH_ConnM00     0x0000   /*  Automatic-default  */
+#define ETH_ConnM01     0x0020   /*  Force 10Mbits endec */
+#define ETH_ConnM10     0x0040   /*  Force MII (rate determined by MII clock  */
+#define ETH_MIIOFF      0x0040   /*  Force MII (rate determined by MII clock  */
+#define ETH_Loop10      0x0080   /*  Loop 10Mbps  */
+#define ETH_MissRoll    0x0400   /*  Missed error counter rolled over  */
+#define ETH_MDCOFF      0x1000   /*  MII Station Management Clock Off */
+#define ETH_EnMissRoll  0x2000   /*  Interrupt when missed error counter rolls  */
+                                /*  over  */
+#define ETH_Link10      0x8000   /*  Link status 10Mbps  */
+
+/*  CAM control register(CAMCON)  */
+#define ETH_StationAcc  0x0001   /*  Accept any packet with a unicast station  */
+                                /*  address  */
+#define ETH_GroupAcc    0x0002   /*  Accept any packet with multicast-group  */
+                                /*  station address   */
+#define ETH_BroadAcc    0x0004   /*  Accept any packet with a broadcast station */
+                                /*  address  */
+#define ETH_NegCAM      0x0008   /*  0: Accept packets CAM recognizes,  */
+                                /*     reject others */
+                                /*  1: reject packets CAM recognizes,  */
+                                /*     accept others  */
+#define ETH_CompEn      0x0010   /*  Compare Enable mode */
+
+/*  Transmit Control Register(MACTXCON) */
+#define ETH_TxEn        0x0001   /*  transmit Enable  */
+#define ETH_TxHalt      0x0002   /*  Transmit Halt Request  */
+#define ETH_NoPad       0x0004   /*  suppress Padding  */
+#define ETH_NoCRC       0x0008   /*  Suppress CRC  */
+#define ETH_FBack       0x0010   /*  Fast Back-off */
+#define ETH_NoDef       0x0020   /*  Disable the defer counter */
+#define ETH_SdPause     0x0040   /*  Send Pause */
+#define ETH_MII10En     0x0080   /*  MII 10Mbps mode enable */
+#define ETH_EnUnder     0x0100   /*  Enable Underrun */
+#define ETH_EnDefer     0x0200   /*  Enable Deferral */
+#define ETH_EnNCarr     0x0400   /*  Enable No Carrier  */
+#define ETH_EnExColl    0x0800   /*  interrupt if 16 collision occur  */
+                                /*  in the same packet  */
+#define ETH_EnLateColl  0x1000   /*  interrupt if collision occurs after  */
+                                /*  512 bit times(64 bytes times)  */
+#define ETH_EnTxPar     0x2000   /*  interrupt if the MAC transmit FIFO  */
+                                /*  has a parity error  */
+#define ETH_EnComp      0x4000   /*  interrupt when the MAC transmits or  */
+                                /*  discards one packet  */
+
+/*  Transmit Status Register(MACTXSTAT) */
+#define ETH_ExColl      0x0010   /*  Excessive collision  */
+#define ETH_TxDeffered  0x0020   /*  set if 16 collisions occur for same packet */
+#define ETH_Paused      0x0040   /*  packet waited because of pause during  */
+                                /*  transmission  */
+#define ETH_IntTx       0x0080   /*  set if transmission of packet causes an  */
+                                /*  interrupt condiftion  */
+#define ETH_Under       0x0100   /*  MAC transmit FIFO becomes empty during  */
+                                /*  transmission  */
+#define ETH_Defer       0x0200   /*  MAC defers for MAC deferral  */
+#define ETH_NCarr       0x0400   /*  No carrier sense detected during the  */
+                                /*  transmission of a packet  */
+#define ETH_SQE         0x0800   /*  Signal Quality Error */
+#define ETH_LateColl    0x1000   /*  a collision occures after 512 bit times  */
+#define ETH_TxPar       0x2000   /*  MAC transmit FIFO has detected a parity error */
+#define ETH_Comp        0x4000   /*  MAC transmit or discards one packet  */
+#define ETH_TxHalted    0x8000   /*  Transmission was halted by clearing  */
+                                /*  TxEn or Halt immedite  */
+
+/*  Receive Control Register (MACRXCON)  */
+#define ETH_RxEn        0x0001
+#define ETH_RxHalt      0x0002
+#define ETH_LongEn      0x0004
+#define ETH_ShortEn     0x0008
+#define ETH_StripCRC    0x0010
+#define ETH_PassCtl     0x0020
+#define ETH_IgnoreCRC   0x0040
+#define ETH_EnAlign     0x0100
+#define ETH_EnCRCErr    0x0200
+#define ETH_EnOver      0x0400
+#define ETH_EnLongErr   0x0800
+#define ETH_EnRxPar     0x2000
+#define ETH_EnGood      0x4000
+
+/*  Receive Status Register(MACRXSTAT) */
+#define ETH_MCtlRecd    0x0020
+#define ETH_MIntRx      0x0040
+#define ETH_MRx10Stat   0x0080
+#define ETH_MAllignErr  0x0100
+#define ETH_MCRCErr     0x0200
+#define ETH_MOverflow   0x0400
+#define ETH_MLongErr    0x0800
+#define ETH_MRxPar      0x2000
+#define ETH_MRxGood     0x4000
+#define ETH_MRxHalted   0x8000
+
+/*  type of ethernet packets */
+#define ETH_TYPE_ARP  (0x0806)
+#define ETH_TYPE_IP   (0x0800)
+
+#define ETH_HDR_SIZE  (14)
+
+/*  bit field for frame data pointer word */
+typedef struct __BF_FrameDataPtr {
+       u32 dataPtr:31;
+       u32   owner: 1;
+} BF_FrameDataPtr;
+
+typedef union _FrameDataPtr {
+       u32             ui;
+       BF_FrameDataPtr bf;
+} FrameDataPtr;
+
+typedef struct __BF_TX_Options {
+       u32    no_padding: 1;
+       u32        no_crc: 1;
+       u32  macTxIrqEnbl: 1;
+       u32  littleEndian: 1;
+       u32  frameDataDir: 1;
+       u32   widgetAlign: 2;
+       u32      reserved:25;
+} BF_TX_Options;
+
+typedef union _TX_Options {
+       u32    ui;
+       BF_TX_Options   bf;
+} TX_Options;
+
+typedef struct __BF_RX_Status {
+       u32           len:16;   /*  frame length */
+       u32     reserved1: 3;
+       u32       overMax: 1;
+       u32     reserved2: 1;
+       u32       ctrlRcv: 1;
+       u32         intRx: 1;
+       u32      rx10stat: 1;
+       u32      alignErr: 1;
+       u32        crcErr: 1;
+       u32      overFlow: 1;
+       u32       longErr: 1;
+       u32     reserved3: 1;
+       u32     parityErr: 1;
+       u32          good: 1;
+       u32        halted: 1;
+} BF_RX_Status;
+
+typedef union _RX_Status {
+       u32             ui;
+       BF_RX_Status    bf;
+} RX_Status;
+
+typedef struct __BF_TX_Status {
+       u32           len:16;   /*  frame length */
+       u32     txCollCnt: 4;
+       u32        exColl: 1;
+       u32       txDefer: 1;
+       u32        paused: 1;
+       u32         intTx: 1;
+       u32      underRun: 1;
+       u32         defer: 1;
+       u32     noCarrier: 1;
+       u32         SQErr: 1;
+       u32      lateColl: 1;
+       u32     parityErr: 1;
+       u32      complete: 1;
+       u32        halted: 1;
+} BF_TX_Status;
+
+typedef union _TX_Status {
+       u32    ui;
+       BF_TX_Status    bf;
+} TX_Status;
+
+/*  TX descriptor structure  */
+typedef struct __TX_FrameDescriptor {
+       volatile FrameDataPtr  m_frameDataPtr;
+       TX_Options                      m_opt;
+       volatile TX_Status           m_status;
+       struct __TX_FrameDescriptor *m_nextFD;
+} TX_FrameDescriptor;
+
+/*  RX descriptor structure  */
+typedef struct __RX_FrameDescriptor {
+       volatile FrameDataPtr  m_frameDataPtr;
+       u32                        m_reserved;
+       volatile RX_Status           m_status;
+       struct __RX_FrameDescriptor *m_nextFD;
+} RX_FrameDescriptor;
+
+/*  MAC Frame Structure */
+struct __MACFrame {
+       u8     m_dstAddr[6];
+       u8     m_srcAddr[6];
+       u16  m_lengthOrType;
+       u8  m_payload[1506];
+} __attribute__ ((packed));
+
+typedef struct __MACFrame MACFrame;
+
+/* Ethernet Control block */
+typedef struct __ETH {
+       TX_FrameDescriptor   *m_curTX_FD; /*  pointer to current TX frame descriptor */
+       TX_FrameDescriptor  *m_baseTX_FD; /*  pointer to base TX frame descriptor    */
+       RX_FrameDescriptor   *m_curRX_FD; /*  pointer to current RX frame descriptor */
+       RX_FrameDescriptor  *m_baseRX_FD; /*  pointer to base RX frame descriptor    */
+       u8                        *m_mac; /*  pointer to our MAC address             */
+} ETH;
+
+#endif
diff -Naur u-boot-2009.03_orig/drivers/net/sk98lin/CVS/Entries u-boot-2009.03/drivers/net/sk98lin/CVS/Entries
--- u-boot-2009.03_orig/drivers/net/sk98lin/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/net/sk98lin/CVS/Entries      2009-03-31 14:54:29.893749600 -0700
@@ -0,0 +1,21 @@
+D/h////
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot_compat.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/uboot_drv.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/uboot_skb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/skaddr.c/1.1.1.1/Tue Mar 31 21:54:29 2009//T1.1.1.1
+/skcsum.c/1.1.1.1/Tue Mar 31 21:54:29 2009//T1.1.1.1
+/skge.c/1.1.1.1/Tue Mar 31 21:54:29 2009//T1.1.1.1
+/skgehwt.c/1.1.1.1/Tue Mar 31 21:54:29 2009//T1.1.1.1
+/skgeinit.c/1.1.1.1/Tue Mar 31 21:54:29 2009//T1.1.1.1
+/skgemib.c/1.1.1.1/Tue Mar 31 21:54:29 2009//T1.1.1.1
+/skgepnmi.c/1.1.1.1/Tue Mar 31 21:54:29 2009//T1.1.1.1
+/skgesirq.c/1.1.1.1/Tue Mar 31 21:54:29 2009//T1.1.1.1
+/ski2c.c/1.1.1.1/Tue Mar 31 21:54:29 2009//T1.1.1.1
+/sklm80.c/1.1.1.1/Tue Mar 31 21:54:29 2009//T1.1.1.1
+/skproc.c/1.1.1.1/Tue Mar 31 21:54:29 2009//T1.1.1.1
+/skqueue.c/1.1.1.1/Tue Mar 31 21:54:29 2009//T1.1.1.1
+/skrlmt.c/1.1.1.1/Tue Mar 31 21:54:29 2009//T1.1.1.1
+/sktimer.c/1.1.1.1/Tue Mar 31 21:54:29 2009//T1.1.1.1
+/skvpd.c/1.1.1.1/Tue Mar 31 21:54:29 2009//T1.1.1.1
+/skxmac2.c/1.1.1.1/Tue Mar 31 21:54:29 2009//T1.1.1.1
diff -Naur u-boot-2009.03_orig/drivers/net/sk98lin/CVS/Entries.Extra u-boot-2009.03/drivers/net/sk98lin/CVS/Entries.Extra
--- u-boot-2009.03_orig/drivers/net/sk98lin/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/net/sk98lin/CVS/Entries.Extra        2009-03-31 14:54:29.893749600 -0700
@@ -0,0 +1,21 @@
+D/h////
+/Makefile///1238019729/
+/u-boot_compat.h///1238019729/
+/uboot_drv.c///1238019729/
+/uboot_skb.c///1238019729/
+/skaddr.c///1238019729/
+/skcsum.c///1238019729/
+/skge.c///1238019729/
+/skgehwt.c///1238019729/
+/skgeinit.c///1238019729/
+/skgemib.c///1238019729/
+/skgepnmi.c///1238019729/
+/skgesirq.c///1238019729/
+/ski2c.c///1238019729/
+/sklm80.c///1238019729/
+/skproc.c///1238019729/
+/skqueue.c///1238019729/
+/skrlmt.c///1238019729/
+/sktimer.c///1238019729/
+/skvpd.c///1238019729/
+/skxmac2.c///1238019729/
diff -Naur u-boot-2009.03_orig/drivers/net/sk98lin/CVS/Entries.Extra.Old u-boot-2009.03/drivers/net/sk98lin/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/drivers/net/sk98lin/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/net/sk98lin/CVS/Entries.Extra.Old    2009-03-25 17:51:47.000000000 -0700
@@ -0,0 +1,21 @@
+D/h////
+/Makefile///1238019729/
+/u-boot_compat.h///1238019729/
+/uboot_drv.c///1238019729/
+/uboot_skb.c///1238019729/
+/skaddr.c///1238028704/
+/skcsum.c///1238028704/
+/skge.c///1238028704/
+/skgehwt.c///1238028704/
+/skgeinit.c///1238028704/
+/skgemib.c///1238028704/
+/skgepnmi.c///1238028704/
+/skgesirq.c///1238028704/
+/ski2c.c///1238028704/
+/sklm80.c///1238028704/
+/skproc.c///1238028704/
+/skqueue.c///1238028704/
+/skrlmt.c///1238028705/
+/sktimer.c///1238028705/
+/skvpd.c///1238028705/
+/skxmac2.c///1238028705/
diff -Naur u-boot-2009.03_orig/drivers/net/sk98lin/CVS/Entries.Old u-boot-2009.03/drivers/net/sk98lin/CVS/Entries.Old
--- u-boot-2009.03_orig/drivers/net/sk98lin/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/net/sk98lin/CVS/Entries.Old  2009-03-25 17:51:47.000000000 -0700
@@ -0,0 +1,21 @@
+D/h////
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot_compat.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/uboot_drv.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/uboot_skb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/skaddr.c/1.2/Thu Mar 26 00:51:44 2009//
+/skcsum.c/1.2/Thu Mar 26 00:51:44 2009//
+/skge.c/1.2/Thu Mar 26 00:51:44 2009//
+/skgehwt.c/1.2/Thu Mar 26 00:51:44 2009//
+/skgeinit.c/1.2/Thu Mar 26 00:51:44 2009//
+/skgemib.c/1.2/Thu Mar 26 00:51:44 2009//
+/skgepnmi.c/1.2/Thu Mar 26 00:51:44 2009//
+/skgesirq.c/1.2/Thu Mar 26 00:51:44 2009//
+/ski2c.c/1.2/Thu Mar 26 00:51:44 2009//
+/sklm80.c/1.2/Thu Mar 26 00:51:44 2009//
+/skproc.c/1.2/Thu Mar 26 00:51:44 2009//
+/skqueue.c/1.2/Thu Mar 26 00:51:44 2009//
+/skrlmt.c/1.2/Thu Mar 26 00:51:45 2009//
+/sktimer.c/1.2/Thu Mar 26 00:51:45 2009//
+/skvpd.c/1.2/Thu Mar 26 00:51:45 2009//
+/skxmac2.c/1.2/Thu Mar 26 00:51:45 2009//
diff -Naur u-boot-2009.03_orig/drivers/net/sk98lin/CVS/Repository u-boot-2009.03/drivers/net/sk98lin/CVS/Repository
--- u-boot-2009.03_orig/drivers/net/sk98lin/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/net/sk98lin/CVS/Repository   2009-03-25 15:25:30.915495400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/drivers/net/sk98lin
diff -Naur u-boot-2009.03_orig/drivers/net/sk98lin/CVS/Root u-boot-2009.03/drivers/net/sk98lin/CVS/Root
--- u-boot-2009.03_orig/drivers/net/sk98lin/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/net/sk98lin/CVS/Root 2009-03-25 15:25:30.915495400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/drivers/net/sk98lin/h/CVS/Entries u-boot-2009.03/drivers/net/sk98lin/h/CVS/Entries
--- u-boot-2009.03_orig/drivers/net/sk98lin/h/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/net/sk98lin/h/CVS/Entries    2009-03-31 14:54:46.284164800 -0700
@@ -0,0 +1,24 @@
+/lm80.h/1.1.1.1/Tue Mar 31 21:54:45 2009//T1.1.1.1
+/skaddr.h/1.1.1.1/Tue Mar 31 21:54:45 2009//T1.1.1.1
+/skcsum.h/1.1.1.1/Tue Mar 31 21:54:45 2009//T1.1.1.1
+/skdebug.h/1.1.1.1/Tue Mar 31 21:54:45 2009//T1.1.1.1
+/skdrv1st.h/1.1.1.1/Tue Mar 31 21:54:45 2009//T1.1.1.1
+/skdrv2nd.h/1.1.1.1/Tue Mar 31 21:54:45 2009//T1.1.1.1
+/skerror.h/1.1.1.1/Tue Mar 31 21:54:45 2009//T1.1.1.1
+/skgedrv.h/1.1.1.1/Tue Mar 31 21:54:45 2009//T1.1.1.1
+/skgehw.h/1.1.1.1/Tue Mar 31 21:54:45 2009//T1.1.1.1
+/skgehwt.h/1.1.1.1/Tue Mar 31 21:54:45 2009//T1.1.1.1
+/skgei2c.h/1.1.1.1/Tue Mar 31 21:54:45 2009//T1.1.1.1
+/skgeinit.h/1.1.1.1/Tue Mar 31 21:54:45 2009//T1.1.1.1
+/skgepnm2.h/1.1.1.1/Tue Mar 31 21:54:45 2009//T1.1.1.1
+/skgepnmi.h/1.1.1.1/Tue Mar 31 21:54:45 2009//T1.1.1.1
+/skgesirq.h/1.1.1.1/Tue Mar 31 21:54:45 2009//T1.1.1.1
+/ski2c.h/1.1.1.1/Tue Mar 31 21:54:46 2009//T1.1.1.1
+/skqueue.h/1.1.1.1/Tue Mar 31 21:54:46 2009//T1.1.1.1
+/skrlmt.h/1.1.1.1/Tue Mar 31 21:54:46 2009//T1.1.1.1
+/sktimer.h/1.1.1.1/Tue Mar 31 21:54:46 2009//T1.1.1.1
+/sktypes.h/1.1.1.1/Tue Mar 31 21:54:46 2009//T1.1.1.1
+/skversion.h/1.1.1.1/Tue Mar 31 21:54:46 2009//T1.1.1.1
+/skvpd.h/1.1.1.1/Tue Mar 31 21:54:46 2009//T1.1.1.1
+/xmac_ii.h/1.1.1.1/Tue Mar 31 21:54:46 2009//T1.1.1.1
+D
diff -Naur u-boot-2009.03_orig/drivers/net/sk98lin/h/CVS/Entries.Extra u-boot-2009.03/drivers/net/sk98lin/h/CVS/Entries.Extra
--- u-boot-2009.03_orig/drivers/net/sk98lin/h/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/net/sk98lin/h/CVS/Entries.Extra      2009-03-31 14:54:46.299789600 -0700
@@ -0,0 +1,23 @@
+/lm80.h///1238019729/
+/skaddr.h///1238019729/
+/skcsum.h///1238019729/
+/skdebug.h///1238019729/
+/skdrv1st.h///1238019729/
+/skdrv2nd.h///1238019729/
+/skerror.h///1238019729/
+/skgedrv.h///1238019729/
+/skgehw.h///1238019729/
+/skgehwt.h///1238019729/
+/skgei2c.h///1238019729/
+/skgeinit.h///1238019729/
+/skgepnm2.h///1238019729/
+/skgepnmi.h///1238019729/
+/skgesirq.h///1238019729/
+/ski2c.h///1238019729/
+/skqueue.h///1238019730/
+/skrlmt.h///1238019730/
+/sktimer.h///1238019730/
+/sktypes.h///1238019730/
+/skversion.h///1238019730/
+/skvpd.h///1238019730/
+/xmac_ii.h///1238019730/
diff -Naur u-boot-2009.03_orig/drivers/net/sk98lin/h/CVS/Entries.Extra.Old u-boot-2009.03/drivers/net/sk98lin/h/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/drivers/net/sk98lin/h/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/net/sk98lin/h/CVS/Entries.Extra.Old  2009-03-25 17:51:47.000000000 -0700
@@ -0,0 +1,23 @@
+/lm80.h///1238028705/
+/skaddr.h///1238028705/
+/skcsum.h///1238028705/
+/skdebug.h///1238028705/
+/skdrv1st.h///1238028705/
+/skdrv2nd.h///1238028705/
+/skerror.h///1238028705/
+/skgedrv.h///1238028705/
+/skgehw.h///1238028706/
+/skgehwt.h///1238028706/
+/skgei2c.h///1238028706/
+/skgeinit.h///1238028706/
+/skgepnm2.h///1238028706/
+/skgepnmi.h///1238028706/
+/skgesirq.h///1238028706/
+/ski2c.h///1238028706/
+/skqueue.h///1238028706/
+/skrlmt.h///1238028706/
+/sktimer.h///1238028706/
+/sktypes.h///1238028706/
+/skversion.h///1238028706/
+/skvpd.h///1238028706/
+/xmac_ii.h///1238028706/
diff -Naur u-boot-2009.03_orig/drivers/net/sk98lin/h/CVS/Entries.Old u-boot-2009.03/drivers/net/sk98lin/h/CVS/Entries.Old
--- u-boot-2009.03_orig/drivers/net/sk98lin/h/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/net/sk98lin/h/CVS/Entries.Old        2009-03-25 17:51:47.000000000 -0700
@@ -0,0 +1,24 @@
+/lm80.h/1.2/Thu Mar 26 00:51:45 2009//
+/skaddr.h/1.2/Thu Mar 26 00:51:45 2009//
+/skcsum.h/1.2/Thu Mar 26 00:51:45 2009//
+/skdebug.h/1.2/Thu Mar 26 00:51:45 2009//
+/skdrv1st.h/1.2/Thu Mar 26 00:51:45 2009//
+/skdrv2nd.h/1.2/Thu Mar 26 00:51:45 2009//
+/skerror.h/1.2/Thu Mar 26 00:51:45 2009//
+/skgedrv.h/1.2/Thu Mar 26 00:51:45 2009//
+/skgehw.h/1.2/Thu Mar 26 00:51:46 2009//
+/skgehwt.h/1.2/Thu Mar 26 00:51:46 2009//
+/skgei2c.h/1.2/Thu Mar 26 00:51:46 2009//
+/skgeinit.h/1.2/Thu Mar 26 00:51:46 2009//
+/skgepnm2.h/1.2/Thu Mar 26 00:51:46 2009//
+/skgepnmi.h/1.2/Thu Mar 26 00:51:46 2009//
+/skgesirq.h/1.2/Thu Mar 26 00:51:46 2009//
+/ski2c.h/1.2/Thu Mar 26 00:51:46 2009//
+/skqueue.h/1.2/Thu Mar 26 00:51:46 2009//
+/skrlmt.h/1.2/Thu Mar 26 00:51:46 2009//
+/sktimer.h/1.2/Thu Mar 26 00:51:46 2009//
+/sktypes.h/1.2/Thu Mar 26 00:51:46 2009//
+/skversion.h/1.2/Thu Mar 26 00:51:46 2009//
+/skvpd.h/1.2/Thu Mar 26 00:51:46 2009//
+/xmac_ii.h/1.2/Thu Mar 26 00:51:46 2009//
+D
diff -Naur u-boot-2009.03_orig/drivers/net/sk98lin/h/CVS/Repository u-boot-2009.03/drivers/net/sk98lin/h/CVS/Repository
--- u-boot-2009.03_orig/drivers/net/sk98lin/h/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/net/sk98lin/h/CVS/Repository 2009-03-25 15:25:31.181118700 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/drivers/net/sk98lin/h
diff -Naur u-boot-2009.03_orig/drivers/net/sk98lin/h/CVS/Root u-boot-2009.03/drivers/net/sk98lin/h/CVS/Root
--- u-boot-2009.03_orig/drivers/net/sk98lin/h/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/net/sk98lin/h/CVS/Root       2009-03-25 15:25:31.181118700 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/drivers/net/sk98lin/h/lm80.h u-boot-2009.03/drivers/net/sk98lin/h/lm80.h
--- u-boot-2009.03_orig/drivers/net/sk98lin/h/lm80.h    2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/drivers/net/sk98lin/h/lm80.h 2009-03-31 14:54:45.440425600 -0700
@@ -1,197 +1,200 @@
-/******************************************************************************
- *
- * Name:       lm80.h
- * Project:    GEnesis, PCI Gigabit Ethernet Adapter
- * Version:    $Revision: 1.4 $
- * Date:       $Date: 2002/04/25 11:04:10 $
- * Purpose:    Contains all defines for the LM80 Chip
- *             (National Semiconductor).
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- *     (C)Copyright 1998-2002 SysKonnect GmbH.
- *
- *     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.
- *
- *     The information in this file is provided "AS IS" without warranty.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * History:
- *     $Log: lm80.h,v $
- *     Revision 1.4  2002/04/25 11:04:10  rschmidt
- *     Editorial changes
- *
- *     Revision 1.3  1999/11/22 13:41:19  cgoos
- *     Changed license header to GPL.
- *
- *     Revision 1.2  1999/03/12 13:26:51  malthoff
- *     remove __STDC__.
- *
- *     Revision 1.1  1998/06/19 09:28:31  malthoff
- *     created.
- *
- *
- ******************************************************************************/
-
-#ifndef __INC_LM80_H
-#define __INC_LM80_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/* defines ********************************************************************/
-
-/*
- * LM80 register definition
- *
- * All registers are 8 bit wide
- */
-#define        LM80_CFG                        0x00    /* Configuration Register */
-#define        LM80_ISRC_1                     0x01    /* Interrupt Status Register 1 */
-#define LM80_ISRC_2                    0x02    /* Interrupt Status Register 2 */
-#define LM80_IMSK_1                    0x03    /* Interrupt Mask Register 1 */
-#define LM80_IMSK_2                    0x04    /* Interrupt Mask Register 2 */
-#define LM80_FAN_CTRL          0x05    /* Fan Devisor/RST#/OS# Register */
-#define LM80_TEMP_CTRL         0x06    /* OS# Config, Temp Res. Reg */
-       /* 0x07 - 0x1f reserved */
-       /* current values */
-#define LM80_VT0_IN                    0x20    /* current Voltage 0 value */
-#define LM80_VT1_IN                    0x21    /* current Voltage 1 value */
-#define LM80_VT2_IN                    0x22    /* current Voltage 2 value */
-#define LM80_VT3_IN                    0x23    /* current Voltage 3 value */
-#define LM80_VT4_IN                    0x24    /* current Voltage 4 value */
-#define LM80_VT5_IN                    0x25    /* current Voltage 5 value */
-#define LM80_VT6_IN                    0x26    /* current Voltage 6 value */
-#define LM80_TEMP_IN           0x27    /* current Temperature value */
-#define LM80_FAN1_IN           0x28    /* current Fan 1 count */
-#define LM80_FAN2_IN           0x29    /* current Fan 2 count */
-       /* limit values */
-#define LM80_VT0_HIGH_LIM      0x2a    /* high limit val for Voltage 0 */
-#define LM80_VT0_LOW_LIM       0x2b    /* low limit val for Voltage 0 */
-#define LM80_VT1_HIGH_LIM      0x2c    /* high limit val for Voltage 1 */
-#define LM80_VT1_LOW_LIM       0x2d    /* low limit val for Voltage 1 */
-#define LM80_VT2_HIGH_LIM      0x2e    /* high limit val for Voltage 2 */
-#define LM80_VT2_LOW_LIM       0x2f    /* low limit val for Voltage 2 */
-#define LM80_VT3_HIGH_LIM      0x30    /* high limit val for Voltage 3 */
-#define LM80_VT3_LOW_LIM       0x31    /* low limit val for Voltage 3 */
-#define LM80_VT4_HIGH_LIM      0x32    /* high limit val for Voltage 4 */
-#define LM80_VT4_LOW_LIM       0x33    /* low limit val for Voltage 4 */
-#define LM80_VT5_HIGH_LIM      0x34    /* high limit val for Voltage 5 */
-#define LM80_VT5_LOW_LIM       0x35    /* low limit val for Voltage 5 */
-#define LM80_VT6_HIGH_LIM      0x36    /* high limit val for Voltage 6 */
-#define LM80_VT6_LOW_LIM       0x37    /* low limit val for Voltage 6 */
-#define LM80_THOT_LIM_UP       0x38    /* hot temperature limit (high) */
-#define LM80_THOT_LIM_LO       0x39    /* hot temperature limit (low) */
-#define LM80_TOS_LIM_UP                0x3a    /* OS temperature limit (high) */
-#define LM80_TOS_LIM_LO                0x3b    /* OS temperature limit (low) */
-#define        LM80_FAN1_COUNT_LIM     0x3c    /* Fan 1 count limit (high) */
-#define        LM80_FAN2_COUNT_LIM     0x3d    /* Fan 2 count limit (low) */
-       /* 0x3e - 0x3f reserved */
-
-/*
- * LM80 bit definitions
- */
-
-/*     LM80_CFG                Configuration Register */
-#define LM80_CFG_START         (1<<0)  /* start monitoring operation */
-#define LM80_CFG_INT_ENA       (1<<1)  /* enables the INT# Interrupt output */
-#define LM80_CFG_INT_POL       (1<<2)  /* INT# pol: 0 act low, 1 act high */
-#define LM80_CFG_INT_CLR       (1<<3)  /* disables INT#/RST_OUT#/OS# outputs */
-#define LM80_CFG_RESET         (1<<4)  /* signals a reset */
-#define LM80_CFG_CHASS_CLR     (1<<5)  /* clears Chassis Intrusion (CI) pin */
-#define LM80_CFG_GPO           (1<<6)  /* drives the GPO# pin */
-#define LM80_CFG_INIT          (1<<7)  /* restore power on defaults */
-
-/*     LM80_ISRC_1             Interrupt Status Register 1 */
-/*     LM80_IMSK_1             Interrupt Mask Register 1 */
-#define LM80_IS_VT0                    (1<<0)  /* limit exceeded for Voltage 0 */
-#define LM80_IS_VT1                    (1<<1)  /* limit exceeded for Voltage 1 */
-#define LM80_IS_VT2                    (1<<2)  /* limit exceeded for Voltage 2 */
-#define LM80_IS_VT3                    (1<<3)  /* limit exceeded for Voltage 3 */
-#define LM80_IS_VT4                    (1<<4)  /* limit exceeded for Voltage 4 */
-#define LM80_IS_VT5                    (1<<5)  /* limit exceeded for Voltage 5 */
-#define LM80_IS_VT6                    (1<<6)  /* limit exceeded for Voltage 6 */
-#define LM80_IS_INT_IN         (1<<7)  /* state of INT_IN# */
-
-/*     LM80_ISRC_2             Interrupt Status Register 2 */
-/*     LM80_IMSK_2             Interrupt Mask Register 2 */
-#define        LM80_IS_TEMP            (1<<0)  /* HOT temperature limit exceeded */
-#define LM80_IS_BTI                    (1<<1)  /* state of BTI# pin */
-#define LM80_IS_FAN1           (1<<2)  /* count limit exceeded for Fan 1 */
-#define LM80_IS_FAN2           (1<<3)  /* count limit exceeded for Fan 2 */
-#define LM80_IS_CI                     (1<<4)  /* Chassis Intrusion occured */
-#define LM80_IS_OS                     (1<<5)  /* OS temperature limit exceeded */
-       /* bit 6 and 7 are reserved in LM80_ISRC_2 */
-#define LM80_IS_HT_IRQ_MD      (1<<6)  /* Hot temperature interrupt mode */
-#define LM80_IS_OT_IRQ_MD      (1<<7)  /* OS temperature interrupt mode */
-
-/*     LM80_FAN_CTRL           Fan Devisor/RST#/OS# Register */
-#define LM80_FAN1_MD_SEL       (1<<0)  /* Fan 1 mode select */
-#define LM80_FAN2_MD_SEL       (1<<1)  /* Fan 2 mode select */
-#define LM80_FAN1_PRM_CTL      (3<<2)  /* Fan 1 speed control */
-#define LM80_FAN2_PRM_CTL      (3<<4)  /* Fan 2 speed control */
-#define LM80_FAN_OS_ENA                (1<<6)  /* enable OS mode on RST_OUT#/OS# pins*/
-#define LM80_FAN_RST_ENA       (1<<7)  /* sets RST_OUT#/OS# pins in RST mode */
-
-/*     LM80_TEMP_CTRL          OS# Config, Temp Res. Reg */
-#define        LM80_TEMP_OS_STAT       (1<<0)  /* mirrors the state of RST_OUT#/OS# */
-#define LM80_TEMP_OS_POL       (1<<1)  /* select OS# polarity */
-#define LM80_TEMP_OS_MODE      (1<<2)  /* selects Interrupt mode */
-#define LM80_TEMP_RES          (1<<3)  /* selects 9 or 11 bit temp resulution*/
-#define LM80_TEMP_LSB          (0xf<<4)/* 4 LSBs of 11 bit temp data */
-#define LM80_TEMP_LSB_9                (1<<7)  /* LSB of 9 bit temperature data */
-
-       /* 0x07 - 0x1f reserved */
-/*     LM80_VT0_IN             current Voltage 0 value */
-/*     LM80_VT1_IN             current Voltage 1 value */
-/*     LM80_VT2_IN             current Voltage 2 value */
-/*     LM80_VT3_IN             current Voltage 3 value */
-/*     LM80_VT4_IN             current Voltage 4 value */
-/*     LM80_VT5_IN             current Voltage 5 value */
-/*     LM80_VT6_IN             current Voltage 6 value */
-/*     LM80_TEMP_IN            current temperature value */
-/*     LM80_FAN1_IN            current Fan 1 count */
-/*     LM80_FAN2_IN            current Fan 2 count */
-/*     LM80_VT0_HIGH_LIM       high limit val for Voltage 0 */
-/*     LM80_VT0_LOW_LIM        low limit val for Voltage 0 */
-/*     LM80_VT1_HIGH_LIM       high limit val for Voltage 1 */
-/*     LM80_VT1_LOW_LIM        low limit val for Voltage 1 */
-/*     LM80_VT2_HIGH_LIM       high limit val for Voltage 2 */
-/*     LM80_VT2_LOW_LIM        low limit val for Voltage 2 */
-/*     LM80_VT3_HIGH_LIM       high limit val for Voltage 3 */
-/*     LM80_VT3_LOW_LIM        low limit val for Voltage 3 */
-/*     LM80_VT4_HIGH_LIM       high limit val for Voltage 4 */
-/*     LM80_VT4_LOW_LIM        low limit val for Voltage 4 */
-/*     LM80_VT5_HIGH_LIM       high limit val for Voltage 5 */
-/*     LM80_VT5_LOW_LIM        low limit val for Voltage 5 */
-/*     LM80_VT6_HIGH_LIM       high limit val for Voltage 6 */
-/*     LM80_VT6_LOW_LIM        low limit val for Voltage 6 */
-/*     LM80_THOT_LIM_UP        hot temperature limit (high) */
-/*     LM80_THOT_LIM_LO        hot temperature limit (low) */
-/*     LM80_TOS_LIM_UP         OS temperature limit (high) */
-/*     LM80_TOS_LIM_LO         OS temperature limit (low) */
-/*     LM80_FAN1_COUNT_LIM     Fan 1 count limit (high) */
-/*     LM80_FAN2_COUNT_LIM     Fan 2 count limit (low) */
-       /* 0x3e - 0x3f reserved */
-
-#define LM80_ADDR              0x28    /* LM80 default addr */
-
-/* typedefs *******************************************************************/
-
-
-/* function prototypes ********************************************************/
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* __INC_LM80_H */
+/******************************************************************************
+ *
+ * Name:       lm80.h
+ * Project:    GEnesis, PCI Gigabit Ethernet Adapter
+ * Version:    $Revision: 1.1.1.1 $
+ * Date:       $Date: 2009/03/25 22:22:09 $
+ * Purpose:    Contains all defines for the LM80 Chip
+ *             (National Semiconductor).
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ *     (C)Copyright 1998-2002 SysKonnect GmbH.
+ *
+ *     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.
+ *
+ *     The information in this file is provided "AS IS" without warranty.
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ * History:
+ *     $Log: lm80.h,v $
+ *     Revision 1.1.1.1  2009/03/25 22:22:09  kenagy
+ *     no message
+ *     
+ *     Revision 1.4  2002/04/25 11:04:10  rschmidt
+ *     Editorial changes
+ *
+ *     Revision 1.3  1999/11/22 13:41:19  cgoos
+ *     Changed license header to GPL.
+ *
+ *     Revision 1.2  1999/03/12 13:26:51  malthoff
+ *     remove __STDC__.
+ *
+ *     Revision 1.1  1998/06/19 09:28:31  malthoff
+ *     created.
+ *
+ *
+ ******************************************************************************/
+
+#ifndef __INC_LM80_H
+#define __INC_LM80_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+/* defines ********************************************************************/
+
+/*
+ * LM80 register definition
+ *
+ * All registers are 8 bit wide
+ */
+#define        LM80_CFG                        0x00    /* Configuration Register */
+#define        LM80_ISRC_1                     0x01    /* Interrupt Status Register 1 */
+#define LM80_ISRC_2                    0x02    /* Interrupt Status Register 2 */
+#define LM80_IMSK_1                    0x03    /* Interrupt Mask Register 1 */
+#define LM80_IMSK_2                    0x04    /* Interrupt Mask Register 2 */
+#define LM80_FAN_CTRL          0x05    /* Fan Devisor/RST#/OS# Register */
+#define LM80_TEMP_CTRL         0x06    /* OS# Config, Temp Res. Reg */
+       /* 0x07 - 0x1f reserved */
+       /* current values */
+#define LM80_VT0_IN                    0x20    /* current Voltage 0 value */
+#define LM80_VT1_IN                    0x21    /* current Voltage 1 value */
+#define LM80_VT2_IN                    0x22    /* current Voltage 2 value */
+#define LM80_VT3_IN                    0x23    /* current Voltage 3 value */
+#define LM80_VT4_IN                    0x24    /* current Voltage 4 value */
+#define LM80_VT5_IN                    0x25    /* current Voltage 5 value */
+#define LM80_VT6_IN                    0x26    /* current Voltage 6 value */
+#define LM80_TEMP_IN           0x27    /* current Temperature value */
+#define LM80_FAN1_IN           0x28    /* current Fan 1 count */
+#define LM80_FAN2_IN           0x29    /* current Fan 2 count */
+       /* limit values */
+#define LM80_VT0_HIGH_LIM      0x2a    /* high limit val for Voltage 0 */
+#define LM80_VT0_LOW_LIM       0x2b    /* low limit val for Voltage 0 */
+#define LM80_VT1_HIGH_LIM      0x2c    /* high limit val for Voltage 1 */
+#define LM80_VT1_LOW_LIM       0x2d    /* low limit val for Voltage 1 */
+#define LM80_VT2_HIGH_LIM      0x2e    /* high limit val for Voltage 2 */
+#define LM80_VT2_LOW_LIM       0x2f    /* low limit val for Voltage 2 */
+#define LM80_VT3_HIGH_LIM      0x30    /* high limit val for Voltage 3 */
+#define LM80_VT3_LOW_LIM       0x31    /* low limit val for Voltage 3 */
+#define LM80_VT4_HIGH_LIM      0x32    /* high limit val for Voltage 4 */
+#define LM80_VT4_LOW_LIM       0x33    /* low limit val for Voltage 4 */
+#define LM80_VT5_HIGH_LIM      0x34    /* high limit val for Voltage 5 */
+#define LM80_VT5_LOW_LIM       0x35    /* low limit val for Voltage 5 */
+#define LM80_VT6_HIGH_LIM      0x36    /* high limit val for Voltage 6 */
+#define LM80_VT6_LOW_LIM       0x37    /* low limit val for Voltage 6 */
+#define LM80_THOT_LIM_UP       0x38    /* hot temperature limit (high) */
+#define LM80_THOT_LIM_LO       0x39    /* hot temperature limit (low) */
+#define LM80_TOS_LIM_UP                0x3a    /* OS temperature limit (high) */
+#define LM80_TOS_LIM_LO                0x3b    /* OS temperature limit (low) */
+#define        LM80_FAN1_COUNT_LIM     0x3c    /* Fan 1 count limit (high) */
+#define        LM80_FAN2_COUNT_LIM     0x3d    /* Fan 2 count limit (low) */
+       /* 0x3e - 0x3f reserved */
+
+/*
+ * LM80 bit definitions
+ */
+
+/*     LM80_CFG                Configuration Register */
+#define LM80_CFG_START         (1<<0)  /* start monitoring operation */
+#define LM80_CFG_INT_ENA       (1<<1)  /* enables the INT# Interrupt output */
+#define LM80_CFG_INT_POL       (1<<2)  /* INT# pol: 0 act low, 1 act high */
+#define LM80_CFG_INT_CLR       (1<<3)  /* disables INT#/RST_OUT#/OS# outputs */
+#define LM80_CFG_RESET         (1<<4)  /* signals a reset */
+#define LM80_CFG_CHASS_CLR     (1<<5)  /* clears Chassis Intrusion (CI) pin */
+#define LM80_CFG_GPO           (1<<6)  /* drives the GPO# pin */
+#define LM80_CFG_INIT          (1<<7)  /* restore power on defaults */
+
+/*     LM80_ISRC_1             Interrupt Status Register 1 */
+/*     LM80_IMSK_1             Interrupt Mask Register 1 */
+#define LM80_IS_VT0                    (1<<0)  /* limit exceeded for Voltage 0 */
+#define LM80_IS_VT1                    (1<<1)  /* limit exceeded for Voltage 1 */
+#define LM80_IS_VT2                    (1<<2)  /* limit exceeded for Voltage 2 */
+#define LM80_IS_VT3                    (1<<3)  /* limit exceeded for Voltage 3 */
+#define LM80_IS_VT4                    (1<<4)  /* limit exceeded for Voltage 4 */
+#define LM80_IS_VT5                    (1<<5)  /* limit exceeded for Voltage 5 */
+#define LM80_IS_VT6                    (1<<6)  /* limit exceeded for Voltage 6 */
+#define LM80_IS_INT_IN         (1<<7)  /* state of INT_IN# */
+
+/*     LM80_ISRC_2             Interrupt Status Register 2 */
+/*     LM80_IMSK_2             Interrupt Mask Register 2 */
+#define        LM80_IS_TEMP            (1<<0)  /* HOT temperature limit exceeded */
+#define LM80_IS_BTI                    (1<<1)  /* state of BTI# pin */
+#define LM80_IS_FAN1           (1<<2)  /* count limit exceeded for Fan 1 */
+#define LM80_IS_FAN2           (1<<3)  /* count limit exceeded for Fan 2 */
+#define LM80_IS_CI                     (1<<4)  /* Chassis Intrusion occured */
+#define LM80_IS_OS                     (1<<5)  /* OS temperature limit exceeded */
+       /* bit 6 and 7 are reserved in LM80_ISRC_2 */
+#define LM80_IS_HT_IRQ_MD      (1<<6)  /* Hot temperature interrupt mode */
+#define LM80_IS_OT_IRQ_MD      (1<<7)  /* OS temperature interrupt mode */
+
+/*     LM80_FAN_CTRL           Fan Devisor/RST#/OS# Register */
+#define LM80_FAN1_MD_SEL       (1<<0)  /* Fan 1 mode select */
+#define LM80_FAN2_MD_SEL       (1<<1)  /* Fan 2 mode select */
+#define LM80_FAN1_PRM_CTL      (3<<2)  /* Fan 1 speed control */
+#define LM80_FAN2_PRM_CTL      (3<<4)  /* Fan 2 speed control */
+#define LM80_FAN_OS_ENA                (1<<6)  /* enable OS mode on RST_OUT#/OS# pins*/
+#define LM80_FAN_RST_ENA       (1<<7)  /* sets RST_OUT#/OS# pins in RST mode */
+
+/*     LM80_TEMP_CTRL          OS# Config, Temp Res. Reg */
+#define        LM80_TEMP_OS_STAT       (1<<0)  /* mirrors the state of RST_OUT#/OS# */
+#define LM80_TEMP_OS_POL       (1<<1)  /* select OS# polarity */
+#define LM80_TEMP_OS_MODE      (1<<2)  /* selects Interrupt mode */
+#define LM80_TEMP_RES          (1<<3)  /* selects 9 or 11 bit temp resulution*/
+#define LM80_TEMP_LSB          (0xf<<4)/* 4 LSBs of 11 bit temp data */
+#define LM80_TEMP_LSB_9                (1<<7)  /* LSB of 9 bit temperature data */
+
+       /* 0x07 - 0x1f reserved */
+/*     LM80_VT0_IN             current Voltage 0 value */
+/*     LM80_VT1_IN             current Voltage 1 value */
+/*     LM80_VT2_IN             current Voltage 2 value */
+/*     LM80_VT3_IN             current Voltage 3 value */
+/*     LM80_VT4_IN             current Voltage 4 value */
+/*     LM80_VT5_IN             current Voltage 5 value */
+/*     LM80_VT6_IN             current Voltage 6 value */
+/*     LM80_TEMP_IN            current temperature value */
+/*     LM80_FAN1_IN            current Fan 1 count */
+/*     LM80_FAN2_IN            current Fan 2 count */
+/*     LM80_VT0_HIGH_LIM       high limit val for Voltage 0 */
+/*     LM80_VT0_LOW_LIM        low limit val for Voltage 0 */
+/*     LM80_VT1_HIGH_LIM       high limit val for Voltage 1 */
+/*     LM80_VT1_LOW_LIM        low limit val for Voltage 1 */
+/*     LM80_VT2_HIGH_LIM       high limit val for Voltage 2 */
+/*     LM80_VT2_LOW_LIM        low limit val for Voltage 2 */
+/*     LM80_VT3_HIGH_LIM       high limit val for Voltage 3 */
+/*     LM80_VT3_LOW_LIM        low limit val for Voltage 3 */
+/*     LM80_VT4_HIGH_LIM       high limit val for Voltage 4 */
+/*     LM80_VT4_LOW_LIM        low limit val for Voltage 4 */
+/*     LM80_VT5_HIGH_LIM       high limit val for Voltage 5 */
+/*     LM80_VT5_LOW_LIM        low limit val for Voltage 5 */
+/*     LM80_VT6_HIGH_LIM       high limit val for Voltage 6 */
+/*     LM80_VT6_LOW_LIM        low limit val for Voltage 6 */
+/*     LM80_THOT_LIM_UP        hot temperature limit (high) */
+/*     LM80_THOT_LIM_LO        hot temperature limit (low) */
+/*     LM80_TOS_LIM_UP         OS temperature limit (high) */
+/*     LM80_TOS_LIM_LO         OS temperature limit (low) */
+/*     LM80_FAN1_COUNT_LIM     Fan 1 count limit (high) */
+/*     LM80_FAN2_COUNT_LIM     Fan 2 count limit (low) */
+       /* 0x3e - 0x3f reserved */
+
+#define LM80_ADDR              0x28    /* LM80 default addr */
+
+/* typedefs *******************************************************************/
+
+
+/* function prototypes ********************************************************/
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* __INC_LM80_H */
diff -Naur u-boot-2009.03_orig/drivers/net/sk98lin/h/skaddr.h u-boot-2009.03/drivers/net/sk98lin/h/skaddr.h
--- u-boot-2009.03_orig/drivers/net/sk98lin/h/skaddr.h  2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/drivers/net/sk98lin/h/skaddr.h       2009-03-31 14:54:45.549799200 -0700
@@ -1,425 +1,428 @@
-/******************************************************************************
- *
- * Name:       skaddr.h
- * Project:    GEnesis, PCI Gigabit Ethernet Adapter
- * Version:    $Revision: 1.26 $
- * Date:       $Date: 2002/11/15 07:24:42 $
- * Purpose:    Header file for Address Management (MC, UC, Prom).
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- *     (C)Copyright 1998-2001 SysKonnect GmbH.
- *
- *     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.
- *
- *     The information in this file is provided "AS IS" without warranty.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * History:
- *
- *     $Log: skaddr.h,v $
- *     Revision 1.26  2002/11/15 07:24:42  tschilli
- *     SK_ADDR_EQUAL macro fixed.
- *
- *     Revision 1.25  2002/06/10 13:55:18  tschilli
- *     Changes for handling YUKON.
- *     All changes are internally and not visible to the programmer
- *     using this module.
- *
- *     Revision 1.24  2001/01/22 13:41:34  rassmann
- *     Supporting two nets on dual-port adapters.
- *
- *     Revision 1.23  2000/08/10 11:27:50  rassmann
- *     Editorial changes.
- *     Preserving 32-bit alignment in structs for the adapter context.
- *
- *     Revision 1.22  2000/08/07 11:10:40  rassmann
- *     Editorial changes.
- *
- *     Revision 1.21  2000/05/04 09:39:59  rassmann
- *     Editorial changes.
- *     Corrected multicast address hashing.
- *
- *     Revision 1.20  1999/11/22 13:46:14  cgoos
- *     Changed license header to GPL.
- *     Allowing overwrite for SK_ADDR_EQUAL.
- *
- *     Revision 1.19  1999/05/28 10:56:07  rassmann
- *     Editorial changes.
- *
- *     Revision 1.18  1999/04/06 17:22:04  rassmann
- *     Added private "ActivePort".
- *
- *     Revision 1.17  1999/01/14 16:18:19  rassmann
- *     Corrected multicast initialization.
- *
- *     Revision 1.16  1999/01/04 10:30:36  rassmann
- *     SkAddrOverride only possible after SK_INIT_IO phase.
- *
- *     Revision 1.15  1998/12/29 13:13:11  rassmann
- *     An address override is now preserved in the SK_INIT_IO phase.
- *     All functions return an int now.
- *     Extended parameter checking.
- *
- *     Revision 1.14  1998/11/24 12:39:45  rassmann
- *     Reserved multicast entry for BPDU address.
- *     13 multicast entries left for protocol.
- *
- *     Revision 1.13  1998/11/13 17:24:32  rassmann
- *     Changed return value of SkAddrOverride to int.
- *
- *     Revision 1.12  1998/11/13 16:56:19  rassmann
- *     Added macro SK_ADDR_COMPARE.
- *     Changed return type of SkAddrOverride to SK_BOOL.
- *
- *     Revision 1.11  1998/10/28 18:16:35  rassmann
- *     Avoiding I/Os before SK_INIT_RUN level.
- *     Aligning InexactFilter.
- *
- *     Revision 1.10  1998/10/22 11:39:10  rassmann
- *     Corrected signed/unsigned mismatches.
- *
- *     Revision 1.9  1998/10/15 15:15:49  rassmann
- *     Changed Flags Parameters from SK_U8 to int.
- *     Checked with lint.
- *
- *     Revision 1.8  1998/09/24 19:15:12  rassmann
- *     Code cleanup.
- *
- *     Revision 1.7  1998/09/18 20:22:13  rassmann
- *     Added HW access.
- *
- *     Revision 1.6  1998/09/04 19:40:20  rassmann
- *     Interface enhancements.
- *
- *     Revision 1.5  1998/09/04 12:40:57  rassmann
- *     Interface cleanup.
- *
- *     Revision 1.4  1998/09/04 12:14:13  rassmann
- *     Interface cleanup.
- *
- *     Revision 1.3  1998/09/02 16:56:40  rassmann
- *     Updated interface.
- *
- *     Revision 1.2  1998/08/27 14:26:09  rassmann
- *     Updated interface.
- *
- *     Revision 1.1  1998/08/21 08:31:08  rassmann
- *     First public version.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * Description:
- *
- * This module is intended to manage multicast addresses and promiscuous mode
- * on GEnesis adapters.
- *
- * Include File Hierarchy:
- *
- *     "skdrv1st.h"
- *     ...
- *     "sktypes.h"
- *     "skqueue.h"
- *     "skaddr.h"
- *     ...
- *     "skdrv2nd.h"
- *
- ******************************************************************************/
-
-#ifndef __INC_SKADDR_H
-#define __INC_SKADDR_H
-
-#ifdef __cplusplus
-#error C++ is not yet supported.
-extern "C" {
-#endif /* cplusplus */
-
-/* defines ********************************************************************/
-
-#define SK_MAC_ADDR_LEN                                6       /* Length of MAC address. */
-#define        SK_MAX_ADDRS                            14      /* #Addrs for exact match. */
-
-/* ----- Common return values ----- */
-
-#define SK_ADDR_SUCCESS                                0        /* Function returned successfully. */
-#define SK_ADDR_ILLEGAL_PORT                   100     /* Port number too high. */
-#define SK_ADDR_TOO_EARLY                      101     /* Function called too early. */
-
-/* ----- Clear/Add flag bits ----- */
-
-#define SK_ADDR_PERMANENT                      1       /* RLMT Address */
-
-/* ----- Additional Clear flag bits ----- */
-
-#define SK_MC_SW_ONLY                          2       /* Do not update HW when clearing. */
-
-/* ----- Override flag bits ----- */
-
-#define SK_ADDR_LOGICAL_ADDRESS                0
-#define SK_ADDR_VIRTUAL_ADDRESS                (SK_ADDR_LOGICAL_ADDRESS)       /* old */
-#define SK_ADDR_PHYSICAL_ADDRESS       1
-#define SK_ADDR_CLEAR_LOGICAL          2
-#define SK_ADDR_SET_LOGICAL                    4
-
-/* ----- Override return values ----- */
-
-#define SK_ADDR_OVERRIDE_SUCCESS       (SK_ADDR_SUCCESS)
-#define SK_ADDR_DUPLICATE_ADDRESS      1
-#define SK_ADDR_MULTICAST_ADDRESS      2
-
-/* ----- Partitioning of excact match table ----- */
-
-#define SK_ADDR_EXACT_MATCHES          16      /* #Exact match entries. */
-
-#define SK_ADDR_FIRST_MATCH_RLMT       1
-#define SK_ADDR_LAST_MATCH_RLMT                2
-#define SK_ADDR_FIRST_MATCH_DRV                3
-#define SK_ADDR_LAST_MATCH_DRV         (SK_ADDR_EXACT_MATCHES - 1)
-
-/* ----- SkAddrMcAdd/SkAddrMcUpdate return values ----- */
-
-#define SK_MC_FILTERING_EXACT          0        /* Exact filtering. */
-#define SK_MC_FILTERING_INEXACT                1       /* Inexact filtering. */
-
-/* ----- Additional SkAddrMcAdd return values ----- */
-
-#define SK_MC_ILLEGAL_ADDRESS          2       /* Illegal address. */
-#define SK_MC_ILLEGAL_PORT                     3       /* Illegal port (not the active one). */
-#define SK_MC_RLMT_OVERFLOW                    4       /* Too many RLMT mc addresses. */
-
-/* Promiscuous mode bits ----- */
-
-#define SK_PROM_MODE_NONE                      0        /* Normal receive. */
-#define SK_PROM_MODE_LLC                       1       /* Receive all LLC frames. */
-#define SK_PROM_MODE_ALL_MC                    2       /* Receive all multicast frames. */
-/* #define SK_PROM_MODE_NON_LLC                4 */    /* Receive all non-LLC frames. */
-
-/* Macros */
-
-#if 0
-#ifndef SK_ADDR_EQUAL
-/*
- * "&" instead of "&&" allows better optimization on IA-64.
- * The replacement is safe here, as all bytes exist.
- */
-#ifndef SK_ADDR_DWORD_COMPARE
-#define SK_ADDR_EQUAL(A1,A2)   ( \
-       (((SK_U8 *)(A1))[5] == ((SK_U8 *)(A2))[5]) & \
-       (((SK_U8 *)(A1))[4] == ((SK_U8 *)(A2))[4]) & \
-       (((SK_U8 *)(A1))[3] == ((SK_U8 *)(A2))[3]) & \
-       (((SK_U8 *)(A1))[2] == ((SK_U8 *)(A2))[2]) & \
-       (((SK_U8 *)(A1))[1] == ((SK_U8 *)(A2))[1]) & \
-       (((SK_U8 *)(A1))[0] == ((SK_U8 *)(A2))[0]))
-#else  /* SK_ADDR_DWORD_COMPARE */
-#define SK_ADDR_EQUAL(A1,A2)   ( \
-       (*(SK_U32 *)&(((SK_U8 *)(A1))[2]) == *(SK_U32 *)&(((SK_U8 *)(A2))[2])) & \
-       (*(SK_U32 *)&(((SK_U8 *)(A1))[0]) == *(SK_U32 *)&(((SK_U8 *)(A2))[0])))
-#endif /* SK_ADDR_DWORD_COMPARE */
-#endif /* SK_ADDR_EQUAL */
-#endif /* 0 */
-
-#ifndef SK_ADDR_EQUAL
-#ifndef SK_ADDR_DWORD_COMPARE
-#define SK_ADDR_EQUAL(A1,A2)   ( \
-       (((SK_U8 *)(A1))[5] == ((SK_U8 *)(A2))[5]) & \
-       (((SK_U8 *)(A1))[4] == ((SK_U8 *)(A2))[4]) & \
-       (((SK_U8 *)(A1))[3] == ((SK_U8 *)(A2))[3]) & \
-       (((SK_U8 *)(A1))[2] == ((SK_U8 *)(A2))[2]) & \
-       (((SK_U8 *)(A1))[1] == ((SK_U8 *)(A2))[1]) & \
-       (((SK_U8 *)(A1))[0] == ((SK_U8 *)(A2))[0]))
-#else  /* SK_ADDR_DWORD_COMPARE */
-#define SK_ADDR_EQUAL(A1,A2)   ( \
-       (*(SK_U16 *)&(((SK_U8 *)(A1))[4]) == *(SK_U16 *)&(((SK_U8 *)(A2))[4])) && \
-       (*(SK_U32 *)&(((SK_U8 *)(A1))[0]) == *(SK_U32 *)&(((SK_U8 *)(A2))[0])))
-#endif /* SK_ADDR_DWORD_COMPARE */
-#endif /* SK_ADDR_EQUAL */
-
-/* typedefs *******************************************************************/
-
-typedef struct s_MacAddr {
-       SK_U8   a[SK_MAC_ADDR_LEN];
-} SK_MAC_ADDR;
-
-
-/* SK_FILTER is used to ensure alignment of the filter. */
-typedef union s_InexactFilter {
-       SK_U8   Bytes[8];
-       SK_U64  Val;    /* Dummy entry for alignment only. */
-} SK_FILTER64;
-
-
-typedef struct s_AddrNet SK_ADDR_NET;
-
-
-typedef struct s_AddrPort {
-
-/* ----- Public part (read-only) ----- */
-
-       SK_MAC_ADDR     CurrentMacAddress;      /* Current physical MAC Address. */
-       SK_MAC_ADDR     PermanentMacAddress;    /* Permanent physical MAC Address. */
-       int             PromMode;               /* Promiscuous Mode. */
-
-/* ----- Private part ----- */
-
-       SK_MAC_ADDR     PreviousMacAddress;     /* Prev. phys. MAC Address. */
-       SK_BOOL         CurrentMacAddressSet;   /* CurrentMacAddress is set. */
-       SK_U8           Align01;
-
-       SK_U32          FirstExactMatchRlmt;
-       SK_U32          NextExactMatchRlmt;
-       SK_U32          FirstExactMatchDrv;
-       SK_U32          NextExactMatchDrv;
-       SK_MAC_ADDR     Exact[SK_ADDR_EXACT_MATCHES];
-       SK_FILTER64     InexactFilter;                  /* For 64-bit hash register. */
-       SK_FILTER64     InexactRlmtFilter;              /* For 64-bit hash register. */
-       SK_FILTER64     InexactDrvFilter;               /* For 64-bit hash register. */
-} SK_ADDR_PORT;
-
-
-struct s_AddrNet {
-/* ----- Public part (read-only) ----- */
-
-       SK_MAC_ADDR             CurrentMacAddress;      /* Logical MAC Address. */
-       SK_MAC_ADDR             PermanentMacAddress;    /* Logical MAC Address. */
-
-/* ----- Private part ----- */
-
-       SK_U32                  ActivePort;             /* View of module ADDR. */
-       SK_BOOL                 CurrentMacAddressSet;   /* CurrentMacAddress is set. */
-       SK_U8                   Align01;
-       SK_U16                  Align02;
-};
-
-
-typedef struct s_Addr {
-
-/* ----- Public part (read-only) ----- */
-
-       SK_ADDR_NET             Net[SK_MAX_NETS];
-       SK_ADDR_PORT    Port[SK_MAX_MACS];
-
-/* ----- Private part ----- */
-} SK_ADDR;
-
-/* function prototypes ********************************************************/
-
-#ifndef SK_KR_PROTO
-
-/* Functions provided by SkAddr */
-
-/* ANSI/C++ compliant function prototypes */
-
-extern int     SkAddrInit(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       int     Level);
-
-extern int     SkAddrMcClear(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       SK_U32  PortNumber,
-       int     Flags);
-
-extern int     SkAddrXmacMcClear(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       SK_U32  PortNumber,
-       int     Flags);
-
-extern int     SkAddrGmacMcClear(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       SK_U32  PortNumber,
-       int     Flags);
-
-extern int     SkAddrMcAdd(
-       SK_AC           *pAC,
-       SK_IOC          IoC,
-       SK_U32          PortNumber,
-       SK_MAC_ADDR     *pMc,
-       int             Flags);
-
-extern int     SkAddrXmacMcAdd(
-       SK_AC           *pAC,
-       SK_IOC          IoC,
-       SK_U32          PortNumber,
-       SK_MAC_ADDR     *pMc,
-       int             Flags);
-
-extern int     SkAddrGmacMcAdd(
-       SK_AC           *pAC,
-       SK_IOC          IoC,
-       SK_U32          PortNumber,
-       SK_MAC_ADDR     *pMc,
-       int             Flags);
-
-extern int     SkAddrMcUpdate(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       SK_U32  PortNumber);
-
-extern int     SkAddrXmacMcUpdate(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       SK_U32  PortNumber);
-
-extern int     SkAddrGmacMcUpdate(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       SK_U32  PortNumber);
-
-extern int     SkAddrOverride(
-       SK_AC           *pAC,
-       SK_IOC          IoC,
-       SK_U32          PortNumber,
-       SK_MAC_ADDR     *pNewAddr,
-       int             Flags);
-
-extern int     SkAddrPromiscuousChange(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       SK_U32  PortNumber,
-       int     NewPromMode);
-
-extern int     SkAddrXmacPromiscuousChange(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       SK_U32  PortNumber,
-       int     NewPromMode);
-
-extern int     SkAddrGmacPromiscuousChange(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       SK_U32  PortNumber,
-       int     NewPromMode);
-
-extern int     SkAddrSwap(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       SK_U32  FromPortNumber,
-       SK_U32  ToPortNumber);
-
-#else  /* defined(SK_KR_PROTO)) */
-
-/* Non-ANSI/C++ compliant function prototypes */
-
-#error KR-style prototypes are not yet provided.
-
-#endif /* defined(SK_KR_PROTO)) */
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* __INC_SKADDR_H */
+/******************************************************************************
+ *
+ * Name:       skaddr.h
+ * Project:    GEnesis, PCI Gigabit Ethernet Adapter
+ * Version:    $Revision: 1.1.1.1 $
+ * Date:       $Date: 2009/03/25 22:22:09 $
+ * Purpose:    Header file for Address Management (MC, UC, Prom).
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ *     (C)Copyright 1998-2001 SysKonnect GmbH.
+ *
+ *     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.
+ *
+ *     The information in this file is provided "AS IS" without warranty.
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ * History:
+ *
+ *     $Log: skaddr.h,v $
+ *     Revision 1.1.1.1  2009/03/25 22:22:09  kenagy
+ *     no message
+ *     
+ *     Revision 1.26  2002/11/15 07:24:42  tschilli
+ *     SK_ADDR_EQUAL macro fixed.
+ *
+ *     Revision 1.25  2002/06/10 13:55:18  tschilli
+ *     Changes for handling YUKON.
+ *     All changes are internally and not visible to the programmer
+ *     using this module.
+ *
+ *     Revision 1.24  2001/01/22 13:41:34  rassmann
+ *     Supporting two nets on dual-port adapters.
+ *
+ *     Revision 1.23  2000/08/10 11:27:50  rassmann
+ *     Editorial changes.
+ *     Preserving 32-bit alignment in structs for the adapter context.
+ *
+ *     Revision 1.22  2000/08/07 11:10:40  rassmann
+ *     Editorial changes.
+ *
+ *     Revision 1.21  2000/05/04 09:39:59  rassmann
+ *     Editorial changes.
+ *     Corrected multicast address hashing.
+ *
+ *     Revision 1.20  1999/11/22 13:46:14  cgoos
+ *     Changed license header to GPL.
+ *     Allowing overwrite for SK_ADDR_EQUAL.
+ *
+ *     Revision 1.19  1999/05/28 10:56:07  rassmann
+ *     Editorial changes.
+ *
+ *     Revision 1.18  1999/04/06 17:22:04  rassmann
+ *     Added private "ActivePort".
+ *
+ *     Revision 1.17  1999/01/14 16:18:19  rassmann
+ *     Corrected multicast initialization.
+ *
+ *     Revision 1.16  1999/01/04 10:30:36  rassmann
+ *     SkAddrOverride only possible after SK_INIT_IO phase.
+ *
+ *     Revision 1.15  1998/12/29 13:13:11  rassmann
+ *     An address override is now preserved in the SK_INIT_IO phase.
+ *     All functions return an int now.
+ *     Extended parameter checking.
+ *
+ *     Revision 1.14  1998/11/24 12:39:45  rassmann
+ *     Reserved multicast entry for BPDU address.
+ *     13 multicast entries left for protocol.
+ *
+ *     Revision 1.13  1998/11/13 17:24:32  rassmann
+ *     Changed return value of SkAddrOverride to int.
+ *
+ *     Revision 1.12  1998/11/13 16:56:19  rassmann
+ *     Added macro SK_ADDR_COMPARE.
+ *     Changed return type of SkAddrOverride to SK_BOOL.
+ *
+ *     Revision 1.11  1998/10/28 18:16:35  rassmann
+ *     Avoiding I/Os before SK_INIT_RUN level.
+ *     Aligning InexactFilter.
+ *
+ *     Revision 1.10  1998/10/22 11:39:10  rassmann
+ *     Corrected signed/unsigned mismatches.
+ *
+ *     Revision 1.9  1998/10/15 15:15:49  rassmann
+ *     Changed Flags Parameters from SK_U8 to int.
+ *     Checked with lint.
+ *
+ *     Revision 1.8  1998/09/24 19:15:12  rassmann
+ *     Code cleanup.
+ *
+ *     Revision 1.7  1998/09/18 20:22:13  rassmann
+ *     Added HW access.
+ *
+ *     Revision 1.6  1998/09/04 19:40:20  rassmann
+ *     Interface enhancements.
+ *
+ *     Revision 1.5  1998/09/04 12:40:57  rassmann
+ *     Interface cleanup.
+ *
+ *     Revision 1.4  1998/09/04 12:14:13  rassmann
+ *     Interface cleanup.
+ *
+ *     Revision 1.3  1998/09/02 16:56:40  rassmann
+ *     Updated interface.
+ *
+ *     Revision 1.2  1998/08/27 14:26:09  rassmann
+ *     Updated interface.
+ *
+ *     Revision 1.1  1998/08/21 08:31:08  rassmann
+ *     First public version.
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ * Description:
+ *
+ * This module is intended to manage multicast addresses and promiscuous mode
+ * on GEnesis adapters.
+ *
+ * Include File Hierarchy:
+ *
+ *     "skdrv1st.h"
+ *     ...
+ *     "sktypes.h"
+ *     "skqueue.h"
+ *     "skaddr.h"
+ *     ...
+ *     "skdrv2nd.h"
+ *
+ ******************************************************************************/
+
+#ifndef __INC_SKADDR_H
+#define __INC_SKADDR_H
+
+#ifdef __cplusplus
+#error C++ is not yet supported.
+extern "C" {
+#endif /* cplusplus */
+
+/* defines ********************************************************************/
+
+#define SK_MAC_ADDR_LEN                                6       /* Length of MAC address. */
+#define        SK_MAX_ADDRS                            14      /* #Addrs for exact match. */
+
+/* ----- Common return values ----- */
+
+#define SK_ADDR_SUCCESS                                0        /* Function returned successfully. */
+#define SK_ADDR_ILLEGAL_PORT                   100     /* Port number too high. */
+#define SK_ADDR_TOO_EARLY                      101     /* Function called too early. */
+
+/* ----- Clear/Add flag bits ----- */
+
+#define SK_ADDR_PERMANENT                      1       /* RLMT Address */
+
+/* ----- Additional Clear flag bits ----- */
+
+#define SK_MC_SW_ONLY                          2       /* Do not update HW when clearing. */
+
+/* ----- Override flag bits ----- */
+
+#define SK_ADDR_LOGICAL_ADDRESS                0
+#define SK_ADDR_VIRTUAL_ADDRESS                (SK_ADDR_LOGICAL_ADDRESS)       /* old */
+#define SK_ADDR_PHYSICAL_ADDRESS       1
+#define SK_ADDR_CLEAR_LOGICAL          2
+#define SK_ADDR_SET_LOGICAL                    4
+
+/* ----- Override return values ----- */
+
+#define SK_ADDR_OVERRIDE_SUCCESS       (SK_ADDR_SUCCESS)
+#define SK_ADDR_DUPLICATE_ADDRESS      1
+#define SK_ADDR_MULTICAST_ADDRESS      2
+
+/* ----- Partitioning of excact match table ----- */
+
+#define SK_ADDR_EXACT_MATCHES          16      /* #Exact match entries. */
+
+#define SK_ADDR_FIRST_MATCH_RLMT       1
+#define SK_ADDR_LAST_MATCH_RLMT                2
+#define SK_ADDR_FIRST_MATCH_DRV                3
+#define SK_ADDR_LAST_MATCH_DRV         (SK_ADDR_EXACT_MATCHES - 1)
+
+/* ----- SkAddrMcAdd/SkAddrMcUpdate return values ----- */
+
+#define SK_MC_FILTERING_EXACT          0        /* Exact filtering. */
+#define SK_MC_FILTERING_INEXACT                1       /* Inexact filtering. */
+
+/* ----- Additional SkAddrMcAdd return values ----- */
+
+#define SK_MC_ILLEGAL_ADDRESS          2       /* Illegal address. */
+#define SK_MC_ILLEGAL_PORT                     3       /* Illegal port (not the active one). */
+#define SK_MC_RLMT_OVERFLOW                    4       /* Too many RLMT mc addresses. */
+
+/* Promiscuous mode bits ----- */
+
+#define SK_PROM_MODE_NONE                      0        /* Normal receive. */
+#define SK_PROM_MODE_LLC                       1       /* Receive all LLC frames. */
+#define SK_PROM_MODE_ALL_MC                    2       /* Receive all multicast frames. */
+/* #define SK_PROM_MODE_NON_LLC                4 */    /* Receive all non-LLC frames. */
+
+/* Macros */
+
+#if 0
+#ifndef SK_ADDR_EQUAL
+/*
+ * "&" instead of "&&" allows better optimization on IA-64.
+ * The replacement is safe here, as all bytes exist.
+ */
+#ifndef SK_ADDR_DWORD_COMPARE
+#define SK_ADDR_EQUAL(A1,A2)   ( \
+       (((SK_U8 *)(A1))[5] == ((SK_U8 *)(A2))[5]) & \
+       (((SK_U8 *)(A1))[4] == ((SK_U8 *)(A2))[4]) & \
+       (((SK_U8 *)(A1))[3] == ((SK_U8 *)(A2))[3]) & \
+       (((SK_U8 *)(A1))[2] == ((SK_U8 *)(A2))[2]) & \
+       (((SK_U8 *)(A1))[1] == ((SK_U8 *)(A2))[1]) & \
+       (((SK_U8 *)(A1))[0] == ((SK_U8 *)(A2))[0]))
+#else  /* SK_ADDR_DWORD_COMPARE */
+#define SK_ADDR_EQUAL(A1,A2)   ( \
+       (*(SK_U32 *)&(((SK_U8 *)(A1))[2]) == *(SK_U32 *)&(((SK_U8 *)(A2))[2])) & \
+       (*(SK_U32 *)&(((SK_U8 *)(A1))[0]) == *(SK_U32 *)&(((SK_U8 *)(A2))[0])))
+#endif /* SK_ADDR_DWORD_COMPARE */
+#endif /* SK_ADDR_EQUAL */
+#endif /* 0 */
+
+#ifndef SK_ADDR_EQUAL
+#ifndef SK_ADDR_DWORD_COMPARE
+#define SK_ADDR_EQUAL(A1,A2)   ( \
+       (((SK_U8 *)(A1))[5] == ((SK_U8 *)(A2))[5]) & \
+       (((SK_U8 *)(A1))[4] == ((SK_U8 *)(A2))[4]) & \
+       (((SK_U8 *)(A1))[3] == ((SK_U8 *)(A2))[3]) & \
+       (((SK_U8 *)(A1))[2] == ((SK_U8 *)(A2))[2]) & \
+       (((SK_U8 *)(A1))[1] == ((SK_U8 *)(A2))[1]) & \
+       (((SK_U8 *)(A1))[0] == ((SK_U8 *)(A2))[0]))
+#else  /* SK_ADDR_DWORD_COMPARE */
+#define SK_ADDR_EQUAL(A1,A2)   ( \
+       (*(SK_U16 *)&(((SK_U8 *)(A1))[4]) == *(SK_U16 *)&(((SK_U8 *)(A2))[4])) && \
+       (*(SK_U32 *)&(((SK_U8 *)(A1))[0]) == *(SK_U32 *)&(((SK_U8 *)(A2))[0])))
+#endif /* SK_ADDR_DWORD_COMPARE */
+#endif /* SK_ADDR_EQUAL */
+
+/* typedefs *******************************************************************/
+
+typedef struct s_MacAddr {
+       SK_U8   a[SK_MAC_ADDR_LEN];
+} SK_MAC_ADDR;
+
+
+/* SK_FILTER is used to ensure alignment of the filter. */
+typedef union s_InexactFilter {
+       SK_U8   Bytes[8];
+       SK_U64  Val;    /* Dummy entry for alignment only. */
+} SK_FILTER64;
+
+
+typedef struct s_AddrNet SK_ADDR_NET;
+
+
+typedef struct s_AddrPort {
+
+/* ----- Public part (read-only) ----- */
+
+       SK_MAC_ADDR     CurrentMacAddress;      /* Current physical MAC Address. */
+       SK_MAC_ADDR     PermanentMacAddress;    /* Permanent physical MAC Address. */
+       int             PromMode;               /* Promiscuous Mode. */
+
+/* ----- Private part ----- */
+
+       SK_MAC_ADDR     PreviousMacAddress;     /* Prev. phys. MAC Address. */
+       SK_BOOL         CurrentMacAddressSet;   /* CurrentMacAddress is set. */
+       SK_U8           Align01;
+
+       SK_U32          FirstExactMatchRlmt;
+       SK_U32          NextExactMatchRlmt;
+       SK_U32          FirstExactMatchDrv;
+       SK_U32          NextExactMatchDrv;
+       SK_MAC_ADDR     Exact[SK_ADDR_EXACT_MATCHES];
+       SK_FILTER64     InexactFilter;                  /* For 64-bit hash register. */
+       SK_FILTER64     InexactRlmtFilter;              /* For 64-bit hash register. */
+       SK_FILTER64     InexactDrvFilter;               /* For 64-bit hash register. */
+} SK_ADDR_PORT;
+
+
+struct s_AddrNet {
+/* ----- Public part (read-only) ----- */
+
+       SK_MAC_ADDR             CurrentMacAddress;      /* Logical MAC Address. */
+       SK_MAC_ADDR             PermanentMacAddress;    /* Logical MAC Address. */
+
+/* ----- Private part ----- */
+
+       SK_U32                  ActivePort;             /* View of module ADDR. */
+       SK_BOOL                 CurrentMacAddressSet;   /* CurrentMacAddress is set. */
+       SK_U8                   Align01;
+       SK_U16                  Align02;
+};
+
+
+typedef struct s_Addr {
+
+/* ----- Public part (read-only) ----- */
+
+       SK_ADDR_NET             Net[SK_MAX_NETS];
+       SK_ADDR_PORT    Port[SK_MAX_MACS];
+
+/* ----- Private part ----- */
+} SK_ADDR;
+
+/* function prototypes ********************************************************/
+
+#ifndef SK_KR_PROTO
+
+/* Functions provided by SkAddr */
+
+/* ANSI/C++ compliant function prototypes */
+
+extern int     SkAddrInit(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       int     Level);
+
+extern int     SkAddrMcClear(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       SK_U32  PortNumber,
+       int     Flags);
+
+extern int     SkAddrXmacMcClear(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       SK_U32  PortNumber,
+       int     Flags);
+
+extern int     SkAddrGmacMcClear(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       SK_U32  PortNumber,
+       int     Flags);
+
+extern int     SkAddrMcAdd(
+       SK_AC           *pAC,
+       SK_IOC          IoC,
+       SK_U32          PortNumber,
+       SK_MAC_ADDR     *pMc,
+       int             Flags);
+
+extern int     SkAddrXmacMcAdd(
+       SK_AC           *pAC,
+       SK_IOC          IoC,
+       SK_U32          PortNumber,
+       SK_MAC_ADDR     *pMc,
+       int             Flags);
+
+extern int     SkAddrGmacMcAdd(
+       SK_AC           *pAC,
+       SK_IOC          IoC,
+       SK_U32          PortNumber,
+       SK_MAC_ADDR     *pMc,
+       int             Flags);
+
+extern int     SkAddrMcUpdate(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       SK_U32  PortNumber);
+
+extern int     SkAddrXmacMcUpdate(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       SK_U32  PortNumber);
+
+extern int     SkAddrGmacMcUpdate(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       SK_U32  PortNumber);
+
+extern int     SkAddrOverride(
+       SK_AC           *pAC,
+       SK_IOC          IoC,
+       SK_U32          PortNumber,
+       SK_MAC_ADDR     *pNewAddr,
+       int             Flags);
+
+extern int     SkAddrPromiscuousChange(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       SK_U32  PortNumber,
+       int     NewPromMode);
+
+extern int     SkAddrXmacPromiscuousChange(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       SK_U32  PortNumber,
+       int     NewPromMode);
+
+extern int     SkAddrGmacPromiscuousChange(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       SK_U32  PortNumber,
+       int     NewPromMode);
+
+extern int     SkAddrSwap(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       SK_U32  FromPortNumber,
+       SK_U32  ToPortNumber);
+
+#else  /* defined(SK_KR_PROTO)) */
+
+/* Non-ANSI/C++ compliant function prototypes */
+
+#error KR-style prototypes are not yet provided.
+
+#endif /* defined(SK_KR_PROTO)) */
+
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* __INC_SKADDR_H */
diff -Naur u-boot-2009.03_orig/drivers/net/sk98lin/h/skcsum.h u-boot-2009.03/drivers/net/sk98lin/h/skcsum.h
--- u-boot-2009.03_orig/drivers/net/sk98lin/h/skcsum.h  2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/drivers/net/sk98lin/h/skcsum.h       2009-03-31 14:54:45.596673600 -0700
@@ -1,261 +1,264 @@
-/******************************************************************************
- *
- * Name:       skcsum.h
- * Project:    GEnesis - SysKonnect SK-NET Gigabit Ethernet (SK-98xx)
- * Version:    $Revision: 1.9 $
- * Date:       $Date: 2001/02/06 11:21:39 $
- * Purpose:    Store/verify Internet checksum in send/receive packets.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- *     (C)Copyright 1998-2001 SysKonnect GmbH.
- *
- *     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.
- *
- *     The information in this file is provided "AS IS" without warranty.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * History:
- *
- *     $Log: skcsum.h,v $
- *     Revision 1.9  2001/02/06 11:21:39  rassmann
- *     Editorial changes.
- *
- *     Revision 1.8  2001/02/06 11:15:36  rassmann
- *     Supporting two nets on dual-port adapters.
- *
- *     Revision 1.7  2000/06/29 13:17:05  rassmann
- *     Corrected reception of a packet with UDP checksum == 0 (which means there
- *     is no UDP checksum).
- *
- *     Revision 1.6  2000/02/28 12:33:44  cgoos
- *     Changed C++ style comments to C style.
- *
- *     Revision 1.5  2000/02/21 12:10:05  cgoos
- *     Fixed license comment.
- *
- *     Revision 1.4  2000/02/21 11:08:37  cgoos
- *     Merged changes back into common source.
- *
- *     Revision 1.1  1999/07/26 14:47:49  mkarl
- *     changed from common source to windows specific source
- *     added return SKCS_STATUS_IP_CSUM_ERROR_UDP and
- *     SKCS_STATUS_IP_CSUM_ERROR_TCP to pass the NidsTester
- *     changes for Tx csum offload
- *
- *     Revision 1.2  1998/09/04 12:16:34  mhaveman
- *     Checked in for Stephan to allow compilation.
- *     -Added definition SK_CSUM_EVENT_CLEAR_PROTO_STATS to clear statistic
- *     -Added prototype for SkCsEvent()
- *
- *     Revision 1.1  1998/09/01 15:36:53  swolf
- *     initial revision
- *
- *     01-Sep-1998 sw  Created.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * Description:
- *
- * Public header file for the "GEnesis" common module "CSUM".
- *
- * "GEnesis" is an abbreviation of "Gigabit Ethernet Network System in Silicon"
- * and is the code name of this SysKonnect project.
- *
- * Compilation Options:
- *
- *     SK_USE_CSUM - Define if CSUM is to be used. Otherwise, CSUM will be an
- *     empty module.
- *
- *     SKCS_OVERWRITE_PROTO - Define to overwrite the default protocol id
- *     definitions. In this case, all SKCS_PROTO_xxx definitions must be made
- *     external.
- *
- *     SKCS_OVERWRITE_STATUS - Define to overwrite the default return status
- *     definitions. In this case, all SKCS_STATUS_xxx definitions must be made
- *     external.
- *
- * Include File Hierarchy:
- *
- *     "h/skcsum.h"
- *      "h/sktypes.h"
- *      "h/skqueue.h"
- *
- ******************************************************************************/
-
-#ifndef __INC_SKCSUM_H
-#define __INC_SKCSUM_H
-
-#include "h/sktypes.h"
-#include "h/skqueue.h"
-
-/* defines ********************************************************************/
-
-/*
- * Define the default bit flags for 'SKCS_PACKET_INFO.ProtocolFlags'  if no user
- * overwrite.
- */
-#ifndef SKCS_OVERWRITE_PROTO   /* User overwrite? */
-#define SKCS_PROTO_IP  0x1     /* IP (Internet Protocol version 4) */
-#define SKCS_PROTO_TCP 0x2     /* TCP (Transmission Control Protocol) */
-#define SKCS_PROTO_UDP 0x4     /* UDP (User Datagram Protocol) */
-
-/* Indices for protocol statistics. */
-#define SKCS_PROTO_STATS_IP    0
-#define SKCS_PROTO_STATS_UDP   1
-#define SKCS_PROTO_STATS_TCP   2
-#define SKCS_NUM_PROTOCOLS     3       /* Number of supported protocols. */
-#endif /* !SKCS_OVERWRITE_PROTO */
-
-/*
- * Define the default SKCS_STATUS type and values if no user overwrite.
- *
- *     SKCS_STATUS_UNKNOWN_IP_VERSION - Not an IP v4 frame.
- *     SKCS_STATUS_IP_CSUM_ERROR - IP checksum error.
- *     SKCS_STATUS_IP_CSUM_ERROR_TCP - IP checksum error in TCP frame.
- *     SKCS_STATUS_IP_CSUM_ERROR_UDP - IP checksum error in UDP frame
- *     SKCS_STATUS_IP_FRAGMENT - IP fragment (IP checksum ok).
- *     SKCS_STATUS_IP_CSUM_OK - IP checksum ok (not a TCP or UDP frame).
- *     SKCS_STATUS_TCP_CSUM_ERROR - TCP checksum error (IP checksum ok).
- *     SKCS_STATUS_UDP_CSUM_ERROR - UDP checksum error (IP checksum ok).
- *     SKCS_STATUS_TCP_CSUM_OK - IP and TCP checksum ok.
- *     SKCS_STATUS_UDP_CSUM_OK - IP and UDP checksum ok.
- *     SKCS_STATUS_IP_CSUM_OK_NO_UDP - IP checksum OK and no UDP checksum.
- */
-#ifndef SKCS_OVERWRITE_STATUS  /* User overwrite? */
-#define SKCS_STATUS    int     /* Define status type. */
-
-#define SKCS_STATUS_UNKNOWN_IP_VERSION 1
-#define SKCS_STATUS_IP_CSUM_ERROR              2
-#define SKCS_STATUS_IP_FRAGMENT                        3
-#define SKCS_STATUS_IP_CSUM_OK                 4
-#define SKCS_STATUS_TCP_CSUM_ERROR             5
-#define SKCS_STATUS_UDP_CSUM_ERROR             6
-#define SKCS_STATUS_TCP_CSUM_OK                        7
-#define SKCS_STATUS_UDP_CSUM_OK                        8
-/* needed for Microsoft */
-#define SKCS_STATUS_IP_CSUM_ERROR_UDP  9
-#define SKCS_STATUS_IP_CSUM_ERROR_TCP  10
-/* UDP checksum may be omitted */
-#define SKCS_STATUS_IP_CSUM_OK_NO_UDP  11
-#endif /* !SKCS_OVERWRITE_STATUS */
-
-/* Clear protocol statistics event. */
-#define SK_CSUM_EVENT_CLEAR_PROTO_STATS        1
-
-/*
- * Add two values in one's complement.
- *
- * Note: One of the two input values may be "longer" than 16-bit, but then the
- * resulting sum may be 17 bits long. In this case, add zero to the result using
- * SKCS_OC_ADD() again.
- *
- *     Result = Value1 + Value2
- */
-#define SKCS_OC_ADD(Result, Value1, Value2) {                          \
-       unsigned long Sum;                                              \
-                                                                       \
-       Sum = (unsigned long) (Value1) + (unsigned long) (Value2);      \
-       /* Add-in any carry. */                                         \
-       (Result) = (Sum & 0xffff) + (Sum >> 16);                        \
-}
-
-/*
- * Subtract two values in one's complement.
- *
- *     Result = Value1 - Value2
- */
-#define SKCS_OC_SUB(Result, Value1, Value2)    \
-       SKCS_OC_ADD((Result), (Value1), ~(Value2) & 0xffff)
-
-/* typedefs *******************************************************************/
-
-/*
- * SKCS_PROTO_STATS - The CSUM protocol statistics structure.
- *
- * There is one instance of this structure for each protocol supported.
- */
-typedef struct s_CsProtocolStatistics {
-       SK_U64 RxOkCts;         /* Receive checksum ok. */
-       SK_U64 RxUnableCts;     /* Unable to verify receive checksum. */
-       SK_U64 RxErrCts;        /* Receive checksum error. */
-       SK_U64 TxOkCts;         /* Transmit checksum ok. */
-       SK_U64 TxUnableCts;     /* Unable to calculate checksum in hw. */
-} SKCS_PROTO_STATS;
-
-/*
- * s_Csum - The CSUM module context structure.
- */
-typedef struct s_Csum {
-       /* Enabled receive SK_PROTO_XXX bit flags. */
-       unsigned ReceiveFlags[SK_MAX_NETS];
-#ifdef TX_CSUM
-       unsigned TransmitFlags[SK_MAX_NETS];
-#endif /* TX_CSUM */
-
-       /* The protocol statistics structure; one per supported protocol. */
-       SKCS_PROTO_STATS ProtoStats[SK_MAX_NETS][SKCS_NUM_PROTOCOLS];
-} SK_CSUM;
-
-/*
- * SKCS_PACKET_INFO - The packet information structure.
- */
-typedef struct s_CsPacketInfo {
-       /* Bit field specifiying the desired/found protocols. */
-       unsigned ProtocolFlags;
-
-       /* Length of complete IP header, including any option fields. */
-       unsigned IpHeaderLength;
-
-       /* IP header checksum. */
-       unsigned IpHeaderChecksum;
-
-       /* TCP/UDP pseudo header checksum. */
-       unsigned PseudoHeaderChecksum;
-} SKCS_PACKET_INFO;
-
-/* function prototypes ********************************************************/
-
-#ifndef SkCsCalculateChecksum
-extern unsigned SkCsCalculateChecksum(
-       void            *pData,
-       unsigned        Length);
-#endif
-
-extern int SkCsEvent(
-       SK_AC           *pAc,
-       SK_IOC          Ioc,
-       SK_U32          Event,
-       SK_EVPARA       Param);
-
-extern SKCS_STATUS SkCsGetReceiveInfo(
-       SK_AC           *pAc,
-       void            *pIpHeader,
-       unsigned        Checksum1,
-       unsigned        Checksum2,
-       int                     NetNumber);
-
-extern void SkCsGetSendInfo(
-       SK_AC                           *pAc,
-       void                            *pIpHeader,
-       SKCS_PACKET_INFO        *pPacketInfo,
-       int                                     NetNumber);
-
-extern void SkCsSetReceiveFlags(
-       SK_AC           *pAc,
-       unsigned        ReceiveFlags,
-       unsigned        *pChecksum1Offset,
-       unsigned        *pChecksum2Offset,
-       int                     NetNumber);
-
-#endif /* __INC_SKCSUM_H */
+/******************************************************************************
+ *
+ * Name:       skcsum.h
+ * Project:    GEnesis - SysKonnect SK-NET Gigabit Ethernet (SK-98xx)
+ * Version:    $Revision: 1.1.1.1 $
+ * Date:       $Date: 2009/03/25 22:22:09 $
+ * Purpose:    Store/verify Internet checksum in send/receive packets.
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ *     (C)Copyright 1998-2001 SysKonnect GmbH.
+ *
+ *     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.
+ *
+ *     The information in this file is provided "AS IS" without warranty.
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ * History:
+ *
+ *     $Log: skcsum.h,v $
+ *     Revision 1.1.1.1  2009/03/25 22:22:09  kenagy
+ *     no message
+ *     
+ *     Revision 1.9  2001/02/06 11:21:39  rassmann
+ *     Editorial changes.
+ *
+ *     Revision 1.8  2001/02/06 11:15:36  rassmann
+ *     Supporting two nets on dual-port adapters.
+ *
+ *     Revision 1.7  2000/06/29 13:17:05  rassmann
+ *     Corrected reception of a packet with UDP checksum == 0 (which means there
+ *     is no UDP checksum).
+ *
+ *     Revision 1.6  2000/02/28 12:33:44  cgoos
+ *     Changed C++ style comments to C style.
+ *
+ *     Revision 1.5  2000/02/21 12:10:05  cgoos
+ *     Fixed license comment.
+ *
+ *     Revision 1.4  2000/02/21 11:08:37  cgoos
+ *     Merged changes back into common source.
+ *
+ *     Revision 1.1  1999/07/26 14:47:49  mkarl
+ *     changed from common source to windows specific source
+ *     added return SKCS_STATUS_IP_CSUM_ERROR_UDP and
+ *     SKCS_STATUS_IP_CSUM_ERROR_TCP to pass the NidsTester
+ *     changes for Tx csum offload
+ *
+ *     Revision 1.2  1998/09/04 12:16:34  mhaveman
+ *     Checked in for Stephan to allow compilation.
+ *     -Added definition SK_CSUM_EVENT_CLEAR_PROTO_STATS to clear statistic
+ *     -Added prototype for SkCsEvent()
+ *
+ *     Revision 1.1  1998/09/01 15:36:53  swolf
+ *     initial revision
+ *
+ *     01-Sep-1998 sw  Created.
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ * Description:
+ *
+ * Public header file for the "GEnesis" common module "CSUM".
+ *
+ * "GEnesis" is an abbreviation of "Gigabit Ethernet Network System in Silicon"
+ * and is the code name of this SysKonnect project.
+ *
+ * Compilation Options:
+ *
+ *     SK_USE_CSUM - Define if CSUM is to be used. Otherwise, CSUM will be an
+ *     empty module.
+ *
+ *     SKCS_OVERWRITE_PROTO - Define to overwrite the default protocol id
+ *     definitions. In this case, all SKCS_PROTO_xxx definitions must be made
+ *     external.
+ *
+ *     SKCS_OVERWRITE_STATUS - Define to overwrite the default return status
+ *     definitions. In this case, all SKCS_STATUS_xxx definitions must be made
+ *     external.
+ *
+ * Include File Hierarchy:
+ *
+ *     "h/skcsum.h"
+ *      "h/sktypes.h"
+ *      "h/skqueue.h"
+ *
+ ******************************************************************************/
+
+#ifndef __INC_SKCSUM_H
+#define __INC_SKCSUM_H
+
+#include "h/sktypes.h"
+#include "h/skqueue.h"
+
+/* defines ********************************************************************/
+
+/*
+ * Define the default bit flags for 'SKCS_PACKET_INFO.ProtocolFlags'  if no user
+ * overwrite.
+ */
+#ifndef SKCS_OVERWRITE_PROTO   /* User overwrite? */
+#define SKCS_PROTO_IP  0x1     /* IP (Internet Protocol version 4) */
+#define SKCS_PROTO_TCP 0x2     /* TCP (Transmission Control Protocol) */
+#define SKCS_PROTO_UDP 0x4     /* UDP (User Datagram Protocol) */
+
+/* Indices for protocol statistics. */
+#define SKCS_PROTO_STATS_IP    0
+#define SKCS_PROTO_STATS_UDP   1
+#define SKCS_PROTO_STATS_TCP   2
+#define SKCS_NUM_PROTOCOLS     3       /* Number of supported protocols. */
+#endif /* !SKCS_OVERWRITE_PROTO */
+
+/*
+ * Define the default SKCS_STATUS type and values if no user overwrite.
+ *
+ *     SKCS_STATUS_UNKNOWN_IP_VERSION - Not an IP v4 frame.
+ *     SKCS_STATUS_IP_CSUM_ERROR - IP checksum error.
+ *     SKCS_STATUS_IP_CSUM_ERROR_TCP - IP checksum error in TCP frame.
+ *     SKCS_STATUS_IP_CSUM_ERROR_UDP - IP checksum error in UDP frame
+ *     SKCS_STATUS_IP_FRAGMENT - IP fragment (IP checksum ok).
+ *     SKCS_STATUS_IP_CSUM_OK - IP checksum ok (not a TCP or UDP frame).
+ *     SKCS_STATUS_TCP_CSUM_ERROR - TCP checksum error (IP checksum ok).
+ *     SKCS_STATUS_UDP_CSUM_ERROR - UDP checksum error (IP checksum ok).
+ *     SKCS_STATUS_TCP_CSUM_OK - IP and TCP checksum ok.
+ *     SKCS_STATUS_UDP_CSUM_OK - IP and UDP checksum ok.
+ *     SKCS_STATUS_IP_CSUM_OK_NO_UDP - IP checksum OK and no UDP checksum.
+ */
+#ifndef SKCS_OVERWRITE_STATUS  /* User overwrite? */
+#define SKCS_STATUS    int     /* Define status type. */
+
+#define SKCS_STATUS_UNKNOWN_IP_VERSION 1
+#define SKCS_STATUS_IP_CSUM_ERROR              2
+#define SKCS_STATUS_IP_FRAGMENT                        3
+#define SKCS_STATUS_IP_CSUM_OK                 4
+#define SKCS_STATUS_TCP_CSUM_ERROR             5
+#define SKCS_STATUS_UDP_CSUM_ERROR             6
+#define SKCS_STATUS_TCP_CSUM_OK                        7
+#define SKCS_STATUS_UDP_CSUM_OK                        8
+/* needed for Microsoft */
+#define SKCS_STATUS_IP_CSUM_ERROR_UDP  9
+#define SKCS_STATUS_IP_CSUM_ERROR_TCP  10
+/* UDP checksum may be omitted */
+#define SKCS_STATUS_IP_CSUM_OK_NO_UDP  11
+#endif /* !SKCS_OVERWRITE_STATUS */
+
+/* Clear protocol statistics event. */
+#define SK_CSUM_EVENT_CLEAR_PROTO_STATS        1
+
+/*
+ * Add two values in one's complement.
+ *
+ * Note: One of the two input values may be "longer" than 16-bit, but then the
+ * resulting sum may be 17 bits long. In this case, add zero to the result using
+ * SKCS_OC_ADD() again.
+ *
+ *     Result = Value1 + Value2
+ */
+#define SKCS_OC_ADD(Result, Value1, Value2) {                          \
+       unsigned long Sum;                                              \
+                                                                       \
+       Sum = (unsigned long) (Value1) + (unsigned long) (Value2);      \
+       /* Add-in any carry. */                                         \
+       (Result) = (Sum & 0xffff) + (Sum >> 16);                        \
+}
+
+/*
+ * Subtract two values in one's complement.
+ *
+ *     Result = Value1 - Value2
+ */
+#define SKCS_OC_SUB(Result, Value1, Value2)    \
+       SKCS_OC_ADD((Result), (Value1), ~(Value2) & 0xffff)
+
+/* typedefs *******************************************************************/
+
+/*
+ * SKCS_PROTO_STATS - The CSUM protocol statistics structure.
+ *
+ * There is one instance of this structure for each protocol supported.
+ */
+typedef struct s_CsProtocolStatistics {
+       SK_U64 RxOkCts;         /* Receive checksum ok. */
+       SK_U64 RxUnableCts;     /* Unable to verify receive checksum. */
+       SK_U64 RxErrCts;        /* Receive checksum error. */
+       SK_U64 TxOkCts;         /* Transmit checksum ok. */
+       SK_U64 TxUnableCts;     /* Unable to calculate checksum in hw. */
+} SKCS_PROTO_STATS;
+
+/*
+ * s_Csum - The CSUM module context structure.
+ */
+typedef struct s_Csum {
+       /* Enabled receive SK_PROTO_XXX bit flags. */
+       unsigned ReceiveFlags[SK_MAX_NETS];
+#ifdef TX_CSUM
+       unsigned TransmitFlags[SK_MAX_NETS];
+#endif /* TX_CSUM */
+
+       /* The protocol statistics structure; one per supported protocol. */
+       SKCS_PROTO_STATS ProtoStats[SK_MAX_NETS][SKCS_NUM_PROTOCOLS];
+} SK_CSUM;
+
+/*
+ * SKCS_PACKET_INFO - The packet information structure.
+ */
+typedef struct s_CsPacketInfo {
+       /* Bit field specifiying the desired/found protocols. */
+       unsigned ProtocolFlags;
+
+       /* Length of complete IP header, including any option fields. */
+       unsigned IpHeaderLength;
+
+       /* IP header checksum. */
+       unsigned IpHeaderChecksum;
+
+       /* TCP/UDP pseudo header checksum. */
+       unsigned PseudoHeaderChecksum;
+} SKCS_PACKET_INFO;
+
+/* function prototypes ********************************************************/
+
+#ifndef SkCsCalculateChecksum
+extern unsigned SkCsCalculateChecksum(
+       void            *pData,
+       unsigned        Length);
+#endif
+
+extern int SkCsEvent(
+       SK_AC           *pAc,
+       SK_IOC          Ioc,
+       SK_U32          Event,
+       SK_EVPARA       Param);
+
+extern SKCS_STATUS SkCsGetReceiveInfo(
+       SK_AC           *pAc,
+       void            *pIpHeader,
+       unsigned        Checksum1,
+       unsigned        Checksum2,
+       int                     NetNumber);
+
+extern void SkCsGetSendInfo(
+       SK_AC                           *pAc,
+       void                            *pIpHeader,
+       SKCS_PACKET_INFO        *pPacketInfo,
+       int                                     NetNumber);
+
+extern void SkCsSetReceiveFlags(
+       SK_AC           *pAc,
+       unsigned        ReceiveFlags,
+       unsigned        *pChecksum1Offset,
+       unsigned        *pChecksum2Offset,
+       int                     NetNumber);
+
+#endif /* __INC_SKCSUM_H */
diff -Naur u-boot-2009.03_orig/drivers/net/sk98lin/h/skdebug.h u-boot-2009.03/drivers/net/sk98lin/h/skdebug.h
--- u-boot-2009.03_orig/drivers/net/sk98lin/h/skdebug.h 2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/drivers/net/sk98lin/h/skdebug.h      2009-03-31 14:54:45.627923200 -0700
@@ -1,119 +1,122 @@
-/******************************************************************************
- *
- * Name:       skdebug.h
- * Project:    GEnesis, PCI Gigabit Ethernet Adapter
- * Version:    $Revision: 1.12 $
- * Date:       $Date: 2002/07/15 15:37:13 $
- * Purpose:    SK specific DEBUG support
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- *     (C)Copyright 1998-2002 SysKonnect GmbH.
- *
- *     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.
- *
- *     The information in this file is provided "AS IS" without warranty.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * History:
- *     $Log: skdebug.h,v $
- *     Revision 1.12  2002/07/15 15:37:13  rschmidt
- *     Power Management support
- *     Editorial changes
- *
- *     Revision 1.11  2002/04/25 11:04:39  rschmidt
- *     Editorial changes
- *
- *     Revision 1.10  1999/11/22 13:47:40  cgoos
- *     Changed license header to GPL.
- *
- *     Revision 1.9  1999/09/14 14:02:43  rwahl
- *     Added SK_DBGMOD_PECP.
- *
- *     Revision 1.8  1998/11/25 08:31:54  gklug
- *     fix: no C++ comments allowed in common sources
- *
- *     Revision 1.7  1998/11/24 16:47:24  swolf
- *     Driver may now define its own SK_DBG_MSG() (eg. in "h/skdrv1st.h").
- *
- *     Revision 1.6  1998/10/28 10:23:55  rassmann
- *     ADDED SK_DBGMOD_ADDR.
- *
- *     Revision 1.5  1998/10/22 09:43:55  gklug
- *     add: CSUM module
- *
- *     Revision 1.4  1998/10/01 07:54:44  gklug
- *     add: PNMI debug module
- *
- *     Revision 1.3  1998/09/18 08:32:34  afischer
- *     Macros changed according ssr-spec.:
- *             SK_DBG_MODCHK -> SK_DBG_CHKMOD
- *             SK_DBG_CATCHK -> SK_DBG_CHKCAT
- *
- *     Revision 1.2  1998/07/03 14:38:25  malthoff
- *     Add category SK_DBGCAT_FATAL.
- *
- *     Revision 1.1  1998/06/19 13:39:01  malthoff
- *     created.
- *
- *
- ******************************************************************************/
-
-#ifndef __INC_SKDEBUG_H
-#define __INC_SKDEBUG_H
-
-#ifdef DEBUG
-#ifndef SK_DBG_MSG
-#define SK_DBG_MSG(pAC,comp,cat,arg) \
-               if ( ((comp) & SK_DBG_CHKMOD(pAC)) &&   \
-                     ((cat) & SK_DBG_CHKCAT(pAC)) ) {  \
-                       SK_DBG_PRINTF arg ;             \
-               }
-#endif
-#else
-#define SK_DBG_MSG(pAC,comp,lev,arg)
-#endif
-
-/* PLS NOTE:
- * =========
- * Due to any restrictions of kernel printf routines do not use other
- * format identifiers as: %x %d %c %s .
- * Never use any combined format identifiers such as: %lx %ld in your
- * printf - argument (arg) because some OS specific kernel printfs may
- * only support some basic identifiers.
- */
-
-/* Debug modules */
-
-#define SK_DBGMOD_MERR 0x00000001L     /* general module error indication */
-#define SK_DBGMOD_HWM  0x00000002L     /* Hardware init module */
-#define SK_DBGMOD_RLMT 0x00000004L     /* RLMT module */
-#define SK_DBGMOD_VPD  0x00000008L     /* VPD module */
-#define SK_DBGMOD_I2C  0x00000010L     /* I2C module */
-#define SK_DBGMOD_PNMI 0x00000020L     /* PNMI module */
-#define SK_DBGMOD_CSUM 0x00000040L     /* CSUM module */
-#define SK_DBGMOD_ADDR 0x00000080L     /* ADDR module */
-#define SK_DBGMOD_PECP 0x00000100L     /* PECP module */
-#define SK_DBGMOD_POWM 0x00000200L     /* Power Management module */
-
-/* Debug events */
-
-#define SK_DBGCAT_INIT 0x00000001L     /* module/driver initialization */
-#define SK_DBGCAT_CTRL 0x00000002L     /* controlling devices */
-#define SK_DBGCAT_ERR  0x00000004L     /* error handling paths */
-#define SK_DBGCAT_TX   0x00000008L     /* transmit path */
-#define SK_DBGCAT_RX   0x00000010L     /* receive path */
-#define SK_DBGCAT_IRQ  0x00000020L     /* general IRQ handling */
-#define SK_DBGCAT_QUEUE        0x00000040L     /* any queue management */
-#define SK_DBGCAT_DUMP 0x00000080L     /* large data output e.g. hex dump */
-#define SK_DBGCAT_FATAL        0x00000100L     /* fatal error */
-
-#endif /* __INC_SKDEBUG_H */
+/******************************************************************************
+ *
+ * Name:       skdebug.h
+ * Project:    GEnesis, PCI Gigabit Ethernet Adapter
+ * Version:    $Revision: 1.1.1.1 $
+ * Date:       $Date: 2009/03/25 22:22:09 $
+ * Purpose:    SK specific DEBUG support
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ *     (C)Copyright 1998-2002 SysKonnect GmbH.
+ *
+ *     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.
+ *
+ *     The information in this file is provided "AS IS" without warranty.
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ * History:
+ *     $Log: skdebug.h,v $
+ *     Revision 1.1.1.1  2009/03/25 22:22:09  kenagy
+ *     no message
+ *     
+ *     Revision 1.12  2002/07/15 15:37:13  rschmidt
+ *     Power Management support
+ *     Editorial changes
+ *
+ *     Revision 1.11  2002/04/25 11:04:39  rschmidt
+ *     Editorial changes
+ *
+ *     Revision 1.10  1999/11/22 13:47:40  cgoos
+ *     Changed license header to GPL.
+ *
+ *     Revision 1.9  1999/09/14 14:02:43  rwahl
+ *     Added SK_DBGMOD_PECP.
+ *
+ *     Revision 1.8  1998/11/25 08:31:54  gklug
+ *     fix: no C++ comments allowed in common sources
+ *
+ *     Revision 1.7  1998/11/24 16:47:24  swolf
+ *     Driver may now define its own SK_DBG_MSG() (eg. in "h/skdrv1st.h").
+ *
+ *     Revision 1.6  1998/10/28 10:23:55  rassmann
+ *     ADDED SK_DBGMOD_ADDR.
+ *
+ *     Revision 1.5  1998/10/22 09:43:55  gklug
+ *     add: CSUM module
+ *
+ *     Revision 1.4  1998/10/01 07:54:44  gklug
+ *     add: PNMI debug module
+ *
+ *     Revision 1.3  1998/09/18 08:32:34  afischer
+ *     Macros changed according ssr-spec.:
+ *             SK_DBG_MODCHK -> SK_DBG_CHKMOD
+ *             SK_DBG_CATCHK -> SK_DBG_CHKCAT
+ *
+ *     Revision 1.2  1998/07/03 14:38:25  malthoff
+ *     Add category SK_DBGCAT_FATAL.
+ *
+ *     Revision 1.1  1998/06/19 13:39:01  malthoff
+ *     created.
+ *
+ *
+ ******************************************************************************/
+
+#ifndef __INC_SKDEBUG_H
+#define __INC_SKDEBUG_H
+
+#ifdef DEBUG
+#ifndef SK_DBG_MSG
+#define SK_DBG_MSG(pAC,comp,cat,arg) \
+               if ( ((comp) & SK_DBG_CHKMOD(pAC)) &&   \
+                     ((cat) & SK_DBG_CHKCAT(pAC)) ) {  \
+                       SK_DBG_PRINTF arg ;             \
+               }
+#endif
+#else
+#define SK_DBG_MSG(pAC,comp,lev,arg)
+#endif
+
+/* PLS NOTE:
+ * =========
+ * Due to any restrictions of kernel printf routines do not use other
+ * format identifiers as: %x %d %c %s .
+ * Never use any combined format identifiers such as: %lx %ld in your
+ * printf - argument (arg) because some OS specific kernel printfs may
+ * only support some basic identifiers.
+ */
+
+/* Debug modules */
+
+#define SK_DBGMOD_MERR 0x00000001L     /* general module error indication */
+#define SK_DBGMOD_HWM  0x00000002L     /* Hardware init module */
+#define SK_DBGMOD_RLMT 0x00000004L     /* RLMT module */
+#define SK_DBGMOD_VPD  0x00000008L     /* VPD module */
+#define SK_DBGMOD_I2C  0x00000010L     /* I2C module */
+#define SK_DBGMOD_PNMI 0x00000020L     /* PNMI module */
+#define SK_DBGMOD_CSUM 0x00000040L     /* CSUM module */
+#define SK_DBGMOD_ADDR 0x00000080L     /* ADDR module */
+#define SK_DBGMOD_PECP 0x00000100L     /* PECP module */
+#define SK_DBGMOD_POWM 0x00000200L     /* Power Management module */
+
+/* Debug events */
+
+#define SK_DBGCAT_INIT 0x00000001L     /* module/driver initialization */
+#define SK_DBGCAT_CTRL 0x00000002L     /* controlling devices */
+#define SK_DBGCAT_ERR  0x00000004L     /* error handling paths */
+#define SK_DBGCAT_TX   0x00000008L     /* transmit path */
+#define SK_DBGCAT_RX   0x00000010L     /* receive path */
+#define SK_DBGCAT_IRQ  0x00000020L     /* general IRQ handling */
+#define SK_DBGCAT_QUEUE        0x00000040L     /* any queue management */
+#define SK_DBGCAT_DUMP 0x00000080L     /* large data output e.g. hex dump */
+#define SK_DBGCAT_FATAL        0x00000100L     /* fatal error */
+
+#endif /* __INC_SKDEBUG_H */
diff -Naur u-boot-2009.03_orig/drivers/net/sk98lin/h/skdrv1st.h u-boot-2009.03/drivers/net/sk98lin/h/skdrv1st.h
--- u-boot-2009.03_orig/drivers/net/sk98lin/h/skdrv1st.h        2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/drivers/net/sk98lin/h/skdrv1st.h     2009-03-31 14:54:45.659172800 -0700
@@ -1,264 +1,267 @@
-/******************************************************************************
- *
- * Name:       skdrv1st.h
- * Project:    GEnesis, PCI Gigabit Ethernet Adapter
- * Version:    $Revision: 1.11 $
- * Date:       $Date: 2003/02/25 14:16:40 $
- * Purpose:    First header file for driver and all other modules
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- *     (C)Copyright 1998-2003 SysKonnect GmbH.
- *
- *     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.
- *
- *     The information in this file is provided "AS IS" without warranty.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * History:
- *
- *     $Log: skdrv1st.h,v $
- *     Revision 1.11  2003/02/25 14:16:40  mlindner
- *     Fix: Copyright statement
- *
- *     Revision 1.10  2002/10/02 12:46:02  mlindner
- *     Add: Support for Yukon
- *
- *     Revision 1.9.2.2  2001/12/07 12:06:42  mlindner
- *     Fix: malloc -> slab changes
- *
- *     Revision 1.9.2.1  2001/03/12 16:50:59  mlindner
- *     chg: kernel 2.4 adaption
- *
- *     Revision 1.9  2001/01/22 14:16:04  mlindner
- *     added ProcFs functionality
- *     Dual Net functionality integrated
- *     Rlmt networks added
- *
- *     Revision 1.8  2000/02/21 12:19:18  cgoos
- *     Added default for SK_DEBUG_CHKMOD/_CHKCAT
- *
- *     Revision 1.7  1999/11/22 13:50:00  cgoos
- *     Changed license header to GPL.
- *     Added overwrite for several functions.
- *     Removed linux 2.0.x definitions.
- *     Removed PCI vendor ID definition (now in kernel).
- *
- *     Revision 1.6  1999/07/27 08:03:33  cgoos
- *     Changed SK_IN/OUT macros to readX/writeX instead of memory
- *     accesses (necessary for ALPHA).
- *
- *     Revision 1.5  1999/07/23 12:10:21  cgoos
- *     Removed SK_RLMT_SLOW_LOOKAHEAD define.
- *
- *     Revision 1.4  1999/07/14 12:31:13  cgoos
- *     Added SK_RLMT_SLOW_LOOKAHEAD define.
- *
- *     Revision 1.3  1999/04/07 10:12:54  cgoos
- *     Added check for KERNEL and OPTIMIZATION defines.
- *
- *     Revision 1.2  1999/03/01 08:51:47  cgoos
- *     Fixed pcibios_read/write definitions.
- *
- *     Revision 1.1  1999/02/16 07:40:49  cgoos
- *     First version.
- *
- *
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * Description:
- *
- * This is the first include file of the driver, which includes all
- * neccessary system header files and some of the GEnesis header files.
- * It also defines some basic items.
- *
- * Include File Hierarchy:
- *
- *     see skge.c
- *
- ******************************************************************************/
-
-#ifndef __INC_SKDRV1ST_H
-#define __INC_SKDRV1ST_H
-
-#if 0
-/* Check kernel version */
-#include <linux/version.h>
-#if (LINUX_VERSION_CODE > 0x020300)
-#endif
-#endif
-
-typedef struct s_AC    SK_AC;
-
-/* override some default functions with optimized linux functions */
-
-#define SK_PNMI_STORE_U16(p,v)         memcpy((char*)(p),(char*)&(v),2)
-#define SK_PNMI_STORE_U32(p,v)         memcpy((char*)(p),(char*)&(v),4)
-#define SK_PNMI_STORE_U64(p,v)         memcpy((char*)(p),(char*)&(v),8)
-#define SK_PNMI_READ_U16(p,v)          memcpy((char*)&(v),(char*)(p),2)
-#define SK_PNMI_READ_U32(p,v)          memcpy((char*)&(v),(char*)(p),2)
-#define SK_PNMI_READ_U64(p,v)          memcpy((char*)&(v),(char*)(p),2)
-
-#define SkCsCalculateChecksum(p,l)     ((~ip_compute_csum(p, l)) & 0xffff)
-
-#define SK_ADDR_EQUAL(a1,a2)           (!memcmp(a1,a2,6))
-
-
-#if !defined(__OPTIMIZE__)  ||  !defined(__KERNEL__)
-#warning  You must compile this file with the correct options!
-#warning  See the last lines of the source file.
-#error You must compile this driver with "-O".
-#endif
-
-#if 0
-#include <linux/version.h>
-#endif
-#include <linux/types.h>
-#if 0
-#include <linux/kernel.h>
-#endif
-#include <linux/string.h>
-#if 0
-#include <linux/errno.h>
-#include <linux/ioport.h>
-#include <linux/slab.h>
-#include <linux/interrupt.h>
-#include <linux/pci.h>
-#endif
-#include <asm/byteorder.h>
-#include <asm/bitops.h>
-#include <asm/io.h>
-#if 0
-#include <linux/netdevice.h>
-#include <linux/etherdevice.h>
-#include <linux/skbuff.h>
-
-#include <linux/init.h>
-#include <asm/uaccess.h>
-#include <net/checksum.h>
-#endif
-
-#include       "h/sktypes.h"
-#include       "h/skerror.h"
-#include       "h/skdebug.h"
-#include       "h/lm80.h"
-#include       "h/xmac_ii.h"
-
-#include "u-boot_compat.h"
-
-#ifdef __LITTLE_ENDIAN
-#define SK_LITTLE_ENDIAN
-#else
-#define SK_BIG_ENDIAN
-#endif
-
-#if 0
-#define SK_NET_DEVICE  net_device
-#else
-#define SK_NET_DEVICE  eth_device
-#endif
-
-
-/* we use gethrtime(), return unit: nanoseconds */
-#if 0
-#define SK_TICKS_PER_SEC       HZ
-#else
-#define SK_TICKS_PER_SEC       CONFIG_SYS_HZ
-#endif
-
-#define        SK_MEM_MAPPED_IO
-
-/* #define SK_RLMT_SLOW_LOOKAHEAD */
-
-#define SK_MAX_MACS            2
-#define SK_MAX_NETS            2
-
-#define SK_IOC                 char*
-
-typedef struct s_DrvRlmtMbuf SK_MBUF;
-
-#define        SK_CONST64      INT64_C
-#define        SK_CONSTU64     UINT64_C
-
-#define SK_MEMCPY(dest,src,size)       memcpy(dest,src,size)
-#define SK_MEMCMP(s1,s2,size)          memcmp(s1,s2,size)
-#define SK_MEMSET(dest,val,size)       memset(dest,val,size)
-#define SK_STRLEN(pStr)                        strlen((char*)(pStr))
-#define SK_STRNCPY(pDest,pSrc,size)    strncpy((char*)(pDest),(char*)(pSrc),size)
-#define SK_STRCMP(pStr1,pStr2)         strcmp((char*)(pStr1),(char*)(pStr2))
-
-/* macros to access the adapter */
-#define SK_OUT8(b,a,v)         writeb((v), ((b)+(a)))
-#define SK_OUT16(b,a,v)                writew((v), ((b)+(a)))
-#define SK_OUT32(b,a,v)                writel((v), ((b)+(a)))
-#define SK_IN8(b,a,pv)         (*(pv) = readb((b)+(a)))
-#define SK_IN16(b,a,pv)                (*(pv) = readw((b)+(a)))
-#define SK_IN32(b,a,pv)                (*(pv) = readl((b)+(a)))
-
-#define int8_t         char
-#define int16_t                short
-#define int32_t                long
-#define int64_t                long long
-#define uint8_t                u_char
-#define uint16_t       u_short
-#define uint32_t       u_long
-#define uint64_t       unsigned long long
-#define t_scalar_t     int
-#define t_uscalar_t    unsigned int
-#define uintptr_t      unsigned long
-
-#define __CONCAT__(A,B) A##B
-
-#define INT32_C(a)             __CONCAT__(a,L)
-#define INT64_C(a)             __CONCAT__(a,LL)
-#define UINT32_C(a)            __CONCAT__(a,UL)
-#define UINT64_C(a)            __CONCAT__(a,ULL)
-
-#ifdef DEBUG
-#define SK_DBG_PRINTF          printk
-#ifndef SK_DEBUG_CHKMOD
-#define SK_DEBUG_CHKMOD                0
-#endif
-#ifndef SK_DEBUG_CHKCAT
-#define SK_DEBUG_CHKCAT                0
-#endif
-/* those come from the makefile */
-#define SK_DBG_CHKMOD(pAC)     (SK_DEBUG_CHKMOD)
-#define SK_DBG_CHKCAT(pAC)     (SK_DEBUG_CHKCAT)
-
-extern void SkDbgPrintf(const char *format,...);
-
-#define SK_DBGMOD_DRV                  0x00010000
-
-/**** possible driver debug categories ********************************/
-#define SK_DBGCAT_DRV_ENTRY            0x00010000
-#define SK_DBGCAT_DRV_SAP              0x00020000
-#define SK_DBGCAT_DRV_MCA              0x00040000
-#define SK_DBGCAT_DRV_TX_PROGRESS      0x00080000
-#define SK_DBGCAT_DRV_RX_PROGRESS      0x00100000
-#define SK_DBGCAT_DRV_PROGRESS         0x00200000
-#define SK_DBGCAT_DRV_MSG              0x00400000
-#define SK_DBGCAT_DRV_PROM             0x00800000
-#define SK_DBGCAT_DRV_TX_FRAME         0x01000000
-#define SK_DBGCAT_DRV_ERROR            0x02000000
-#define SK_DBGCAT_DRV_INT_SRC          0x04000000
-#define SK_DBGCAT_DRV_EVENT            0x08000000
-
-#endif
-
-#define SK_ERR_LOG             SkErrorLog
-
-extern void SkErrorLog(SK_AC*, int, int, char*);
-
-#endif
+/******************************************************************************
+ *
+ * Name:       skdrv1st.h
+ * Project:    GEnesis, PCI Gigabit Ethernet Adapter
+ * Version:    $Revision: 1.1.1.1 $
+ * Date:       $Date: 2009/03/25 22:22:09 $
+ * Purpose:    First header file for driver and all other modules
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ *     (C)Copyright 1998-2003 SysKonnect GmbH.
+ *
+ *     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.
+ *
+ *     The information in this file is provided "AS IS" without warranty.
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ * History:
+ *
+ *     $Log: skdrv1st.h,v $
+ *     Revision 1.1.1.1  2009/03/25 22:22:09  kenagy
+ *     no message
+ *     
+ *     Revision 1.11  2003/02/25 14:16:40  mlindner
+ *     Fix: Copyright statement
+ *
+ *     Revision 1.10  2002/10/02 12:46:02  mlindner
+ *     Add: Support for Yukon
+ *
+ *     Revision 1.9.2.2  2001/12/07 12:06:42  mlindner
+ *     Fix: malloc -> slab changes
+ *
+ *     Revision 1.9.2.1  2001/03/12 16:50:59  mlindner
+ *     chg: kernel 2.4 adaption
+ *
+ *     Revision 1.9  2001/01/22 14:16:04  mlindner
+ *     added ProcFs functionality
+ *     Dual Net functionality integrated
+ *     Rlmt networks added
+ *
+ *     Revision 1.8  2000/02/21 12:19:18  cgoos
+ *     Added default for SK_DEBUG_CHKMOD/_CHKCAT
+ *
+ *     Revision 1.7  1999/11/22 13:50:00  cgoos
+ *     Changed license header to GPL.
+ *     Added overwrite for several functions.
+ *     Removed linux 2.0.x definitions.
+ *     Removed PCI vendor ID definition (now in kernel).
+ *
+ *     Revision 1.6  1999/07/27 08:03:33  cgoos
+ *     Changed SK_IN/OUT macros to readX/writeX instead of memory
+ *     accesses (necessary for ALPHA).
+ *
+ *     Revision 1.5  1999/07/23 12:10:21  cgoos
+ *     Removed SK_RLMT_SLOW_LOOKAHEAD define.
+ *
+ *     Revision 1.4  1999/07/14 12:31:13  cgoos
+ *     Added SK_RLMT_SLOW_LOOKAHEAD define.
+ *
+ *     Revision 1.3  1999/04/07 10:12:54  cgoos
+ *     Added check for KERNEL and OPTIMIZATION defines.
+ *
+ *     Revision 1.2  1999/03/01 08:51:47  cgoos
+ *     Fixed pcibios_read/write definitions.
+ *
+ *     Revision 1.1  1999/02/16 07:40:49  cgoos
+ *     First version.
+ *
+ *
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ * Description:
+ *
+ * This is the first include file of the driver, which includes all
+ * neccessary system header files and some of the GEnesis header files.
+ * It also defines some basic items.
+ *
+ * Include File Hierarchy:
+ *
+ *     see skge.c
+ *
+ ******************************************************************************/
+
+#ifndef __INC_SKDRV1ST_H
+#define __INC_SKDRV1ST_H
+
+#if 0
+/* Check kernel version */
+#include <linux/version.h>
+#if (LINUX_VERSION_CODE > 0x020300)
+#endif
+#endif
+
+typedef struct s_AC    SK_AC;
+
+/* override some default functions with optimized linux functions */
+
+#define SK_PNMI_STORE_U16(p,v)         memcpy((char*)(p),(char*)&(v),2)
+#define SK_PNMI_STORE_U32(p,v)         memcpy((char*)(p),(char*)&(v),4)
+#define SK_PNMI_STORE_U64(p,v)         memcpy((char*)(p),(char*)&(v),8)
+#define SK_PNMI_READ_U16(p,v)          memcpy((char*)&(v),(char*)(p),2)
+#define SK_PNMI_READ_U32(p,v)          memcpy((char*)&(v),(char*)(p),2)
+#define SK_PNMI_READ_U64(p,v)          memcpy((char*)&(v),(char*)(p),2)
+
+#define SkCsCalculateChecksum(p,l)     ((~ip_compute_csum(p, l)) & 0xffff)
+
+#define SK_ADDR_EQUAL(a1,a2)           (!memcmp(a1,a2,6))
+
+
+#if !defined(__OPTIMIZE__)  ||  !defined(__KERNEL__)
+#warning  You must compile this file with the correct options!
+#warning  See the last lines of the source file.
+#error You must compile this driver with "-O".
+#endif
+
+#if 0
+#include <linux/version.h>
+#endif
+#include <linux/types.h>
+#if 0
+#include <linux/kernel.h>
+#endif
+#include <linux/string.h>
+#if 0
+#include <linux/errno.h>
+#include <linux/ioport.h>
+#include <linux/slab.h>
+#include <linux/interrupt.h>
+#include <linux/pci.h>
+#endif
+#include <asm/byteorder.h>
+#include <asm/bitops.h>
+#include <asm/io.h>
+#if 0
+#include <linux/netdevice.h>
+#include <linux/etherdevice.h>
+#include <linux/skbuff.h>
+
+#include <linux/init.h>
+#include <asm/uaccess.h>
+#include <net/checksum.h>
+#endif
+
+#include       "h/sktypes.h"
+#include       "h/skerror.h"
+#include       "h/skdebug.h"
+#include       "h/lm80.h"
+#include       "h/xmac_ii.h"
+
+#include "u-boot_compat.h"
+
+#ifdef __LITTLE_ENDIAN
+#define SK_LITTLE_ENDIAN
+#else
+#define SK_BIG_ENDIAN
+#endif
+
+#if 0
+#define SK_NET_DEVICE  net_device
+#else
+#define SK_NET_DEVICE  eth_device
+#endif
+
+
+/* we use gethrtime(), return unit: nanoseconds */
+#if 0
+#define SK_TICKS_PER_SEC       HZ
+#else
+#define SK_TICKS_PER_SEC       CONFIG_SYS_HZ
+#endif
+
+#define        SK_MEM_MAPPED_IO
+
+/* #define SK_RLMT_SLOW_LOOKAHEAD */
+
+#define SK_MAX_MACS            2
+#define SK_MAX_NETS            2
+
+#define SK_IOC                 char*
+
+typedef struct s_DrvRlmtMbuf SK_MBUF;
+
+#define        SK_CONST64      INT64_C
+#define        SK_CONSTU64     UINT64_C
+
+#define SK_MEMCPY(dest,src,size)       memcpy(dest,src,size)
+#define SK_MEMCMP(s1,s2,size)          memcmp(s1,s2,size)
+#define SK_MEMSET(dest,val,size)       memset(dest,val,size)
+#define SK_STRLEN(pStr)                        strlen((char*)(pStr))
+#define SK_STRNCPY(pDest,pSrc,size)    strncpy((char*)(pDest),(char*)(pSrc),size)
+#define SK_STRCMP(pStr1,pStr2)         strcmp((char*)(pStr1),(char*)(pStr2))
+
+/* macros to access the adapter */
+#define SK_OUT8(b,a,v)         writeb((v), ((b)+(a)))
+#define SK_OUT16(b,a,v)                writew((v), ((b)+(a)))
+#define SK_OUT32(b,a,v)                writel((v), ((b)+(a)))
+#define SK_IN8(b,a,pv)         (*(pv) = readb((b)+(a)))
+#define SK_IN16(b,a,pv)                (*(pv) = readw((b)+(a)))
+#define SK_IN32(b,a,pv)                (*(pv) = readl((b)+(a)))
+
+#define int8_t         char
+#define int16_t                short
+#define int32_t                long
+#define int64_t                long long
+#define uint8_t                u_char
+#define uint16_t       u_short
+#define uint32_t       u_long
+#define uint64_t       unsigned long long
+#define t_scalar_t     int
+#define t_uscalar_t    unsigned int
+#define uintptr_t      unsigned long
+
+#define __CONCAT__(A,B) A##B
+
+#define INT32_C(a)             __CONCAT__(a,L)
+#define INT64_C(a)             __CONCAT__(a,LL)
+#define UINT32_C(a)            __CONCAT__(a,UL)
+#define UINT64_C(a)            __CONCAT__(a,ULL)
+
+#ifdef DEBUG
+#define SK_DBG_PRINTF          printk
+#ifndef SK_DEBUG_CHKMOD
+#define SK_DEBUG_CHKMOD                0
+#endif
+#ifndef SK_DEBUG_CHKCAT
+#define SK_DEBUG_CHKCAT                0
+#endif
+/* those come from the makefile */
+#define SK_DBG_CHKMOD(pAC)     (SK_DEBUG_CHKMOD)
+#define SK_DBG_CHKCAT(pAC)     (SK_DEBUG_CHKCAT)
+
+extern void SkDbgPrintf(const char *format,...);
+
+#define SK_DBGMOD_DRV                  0x00010000
+
+/**** possible driver debug categories ********************************/
+#define SK_DBGCAT_DRV_ENTRY            0x00010000
+#define SK_DBGCAT_DRV_SAP              0x00020000
+#define SK_DBGCAT_DRV_MCA              0x00040000
+#define SK_DBGCAT_DRV_TX_PROGRESS      0x00080000
+#define SK_DBGCAT_DRV_RX_PROGRESS      0x00100000
+#define SK_DBGCAT_DRV_PROGRESS         0x00200000
+#define SK_DBGCAT_DRV_MSG              0x00400000
+#define SK_DBGCAT_DRV_PROM             0x00800000
+#define SK_DBGCAT_DRV_TX_FRAME         0x01000000
+#define SK_DBGCAT_DRV_ERROR            0x02000000
+#define SK_DBGCAT_DRV_INT_SRC          0x04000000
+#define SK_DBGCAT_DRV_EVENT            0x08000000
+
+#endif
+
+#define SK_ERR_LOG             SkErrorLog
+
+extern void SkErrorLog(SK_AC*, int, int, char*);
+
+#endif
diff -Naur u-boot-2009.03_orig/drivers/net/sk98lin/h/skdrv2nd.h u-boot-2009.03/drivers/net/sk98lin/h/skdrv2nd.h
--- u-boot-2009.03_orig/drivers/net/sk98lin/h/skdrv2nd.h        2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/drivers/net/sk98lin/h/skdrv2nd.h     2009-03-31 14:54:45.690422400 -0700
@@ -1,561 +1,564 @@
-/******************************************************************************
- *
- * Name:       skdrv2nd.h
- * Project:    GEnesis, PCI Gigabit Ethernet Adapter
- * Version:    $Revision: 1.15 $
- * Date:       $Date: 2003/02/25 14:16:40 $
- * Purpose:    Second header file for driver and all other modules
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- *     (C)Copyright 1998-2003 SysKonnect GmbH.
- *
- *     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.
- *
- *     The information in this file is provided "AS IS" without warranty.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * History:
- *
- *     $Log: skdrv2nd.h,v $
- *     Revision 1.15  2003/02/25 14:16:40  mlindner
- *     Fix: Copyright statement
- *
- *     Revision 1.14  2003/02/25 13:26:26  mlindner
- *     Add: Support for various vendors
- *
- *     Revision 1.13  2002/10/02 12:46:02  mlindner
- *     Add: Support for Yukon
- *
- *     Revision 1.12.2.2  2001/09/05 12:14:50  mlindner
- *     add: New hardware revision int
- *
- *     Revision 1.12.2.1  2001/03/12 16:50:59  mlindner
- *     chg: kernel 2.4 adaption
- *
- *     Revision 1.12  2001/03/01 12:52:15  mlindner
- *     Fixed ring size
- *
- *     Revision 1.11  2001/02/19 13:28:02  mlindner
- *     Changed PNMI parameter values
- *
- *     Revision 1.10  2001/01/22 14:16:04  mlindner
- *     added ProcFs functionality
- *     Dual Net functionality integrated
- *     Rlmt networks added
- *
- *     Revision 1.1  2000/10/05 19:46:50  phargrov
- *     Add directory src/vipk_devs_nonlbl/vipk_sk98lin/
- *     This is the SysKonnect SK-98xx Gigabit Ethernet driver,
- *     contributed by SysKonnect.
- *
- *     Revision 1.9  2000/02/21 10:39:55  cgoos
- *     Added flag for jumbo support usage.
- *
- *     Revision 1.8  1999/11/22 13:50:44  cgoos
- *     Changed license header to GPL.
- *     Fixed two comments.
- *
- *     Revision 1.7  1999/09/28 12:38:21  cgoos
- *     Added CheckQueue to SK_AC.
- *
- *     Revision 1.6  1999/07/27 08:04:05  cgoos
- *     Added checksumming variables to SK_AC.
- *
- *     Revision 1.5  1999/03/29 12:33:26  cgoos
- *     Rreversed to fine lock granularity.
- *
- *     Revision 1.4  1999/03/15 12:14:02  cgoos
- *     Added DriverLock to SK_AC.
- *     Removed other locks.
- *
- *     Revision 1.3  1999/03/01 08:52:27  cgoos
- *     Changed pAC->PciDev declaration.
- *
- *     Revision 1.2  1999/02/18 10:57:14  cgoos
- *     Removed SkDrvTimeStamp prototype.
- *     Fixed SkGeOsGetTime prototype.
- *
- *     Revision 1.1  1999/02/16 07:41:01  cgoos
- *     First version.
- *
- *
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * Description:
- *
- * This is the second include file of the driver, which includes all other
- * neccessary files and defines all structures and constants used by the
- * driver and the common modules.
- *
- * Include File Hierarchy:
- *
- *     see skge.c
- *
- ******************************************************************************/
-
-#ifndef __INC_SKDRV2ND_H
-#define __INC_SKDRV2ND_H
-
-#include "h/skqueue.h"
-#include "h/skgehwt.h"
-#include "h/sktimer.h"
-#include "h/ski2c.h"
-#include "h/skgepnmi.h"
-#include "h/skvpd.h"
-#include "h/skgehw.h"
-#include "h/skgeinit.h"
-#include "h/skaddr.h"
-#include "h/skgesirq.h"
-#include "h/skcsum.h"
-#include "h/skrlmt.h"
-#include "h/skgedrv.h"
-
-#define SK_PCI_ISCOMPLIANT(result, pdev) {     \
-    result = SK_FALSE; /* default */     \
-    /* 3Com (0x10b7) */     \
-    if (pdev->vendor == 0x10b7) {     \
-       /* Gigabit Ethernet Adapter (0x1700) */     \
-       if ((pdev->device == 0x1700)) { \
-           result = SK_TRUE;     \
-       }     \
-    /* SysKonnect (0x1148) */     \
-    } else if (pdev->vendor == 0x1148) {     \
-       /* SK-98xx Gigabit Ethernet Server Adapter (0x4300) */     \
-       /* SK-98xx V2 Gigabit Ethernet Adapter (0x4320) */     \
-       if ((pdev->device == 0x4300) || \
-           (pdev->device == 0x4320)) { \
-           result = SK_TRUE;     \
-       }     \
-    /* D-Link (0x1186) */     \
-    } else if (pdev->vendor == 0x1186) {     \
-       /* Gigabit Ethernet Adapter (0x4c00) */     \
-       if ((pdev->device == 0x4c00)) { \
-           result = SK_TRUE;     \
-       }     \
-    /* CNet (0x1371) */     \
-    } else if (pdev->vendor == 0x1371) {     \
-       /* GigaCard Network Adapter (0x434e) */     \
-       if ((pdev->device == 0x434e)) { \
-           result = SK_TRUE;     \
-       }     \
-    /* Linksys (0x1737) */     \
-    } else if (pdev->vendor == 0x1737) {     \
-       /* Gigabit Network Adapter (0x1032) */     \
-       /* Gigabit Network Adapter (0x1064) */     \
-       if ((pdev->device == 0x1032) || \
-           (pdev->device == 0x1064)) { \
-           result = SK_TRUE;     \
-       }     \
-    } else {     \
-       result = SK_FALSE;     \
-    }     \
-}
-
-
-extern SK_MBUF         *SkDrvAllocRlmtMbuf(SK_AC*, SK_IOC, unsigned);
-extern void            SkDrvFreeRlmtMbuf(SK_AC*, SK_IOC, SK_MBUF*);
-extern SK_U64          SkOsGetTime(SK_AC*);
-extern int             SkPciReadCfgDWord(SK_AC*, int, SK_U32*);
-extern int             SkPciReadCfgWord(SK_AC*, int, SK_U16*);
-extern int             SkPciReadCfgByte(SK_AC*, int, SK_U8*);
-extern int             SkPciWriteCfgDWord(SK_AC*, int, SK_U32);
-extern int             SkPciWriteCfgWord(SK_AC*, int, SK_U16);
-extern int             SkPciWriteCfgByte(SK_AC*, int, SK_U8);
-extern int             SkDrvEvent(SK_AC*, SK_IOC IoC, SK_U32, SK_EVPARA);
-
-struct s_DrvRlmtMbuf {
-       SK_MBUF         *pNext;         /* Pointer to next RLMT Mbuf. */
-       SK_U8           *pData;         /* Data buffer (virtually contig.). */
-       unsigned        Size;           /* Data buffer size. */
-       unsigned        Length;         /* Length of packet (<= Size). */
-       SK_U32          PortIdx;        /* Receiving/transmitting port. */
-#ifdef SK_RLMT_MBUF_PRIVATE
-       SK_RLMT_MBUF    Rlmt;           /* Private part for RLMT. */
-#endif  /* SK_RLMT_MBUF_PRIVATE */
-       struct sk_buff  *pOs;           /* Pointer to message block */
-};
-
-
-/*
- * ioctl definitions
- */
-#define                SK_IOCTL_BASE           (SIOCDEVPRIVATE)
-#define                SK_IOCTL_GETMIB         (SK_IOCTL_BASE + 0)
-#define                SK_IOCTL_SETMIB         (SK_IOCTL_BASE + 1)
-#define                SK_IOCTL_PRESETMIB      (SK_IOCTL_BASE + 2)
-
-typedef struct s_IOCTL SK_GE_IOCTL;
-
-struct s_IOCTL {
-       char*           pData;
-       unsigned int    Len;
-};
-
-
-/*
- * define sizes of descriptor rings in bytes
- */
-
-#if 0
-#define                TX_RING_SIZE    (8*1024)
-#define                RX_RING_SIZE    (24*1024)
-#else
-#define                TX_RING_SIZE    (10 * 40)
-#define                RX_RING_SIZE    (10 * 40)
-#endif
-
-/*
- * Buffer size for ethernet packets
- */
-#define        ETH_BUF_SIZE    1540
-#define        ETH_MAX_MTU     1514
-#define ETH_MIN_MTU    60
-#define ETH_MULTICAST_BIT      0x01
-#define SK_JUMBO_MTU   9000
-
-/*
- * transmit priority selects the queue: LOW=asynchron, HIGH=synchron
- */
-#define TX_PRIO_LOW    0
-#define TX_PRIO_HIGH   1
-
-/*
- * alignment of rx/tx descriptors
- */
-#define DESCR_ALIGN    8
-
-/*
- * definitions for pnmi. TODO
- */
-#define SK_DRIVER_RESET(pAC, IoC)      0
-#define SK_DRIVER_SENDEVENT(pAC, IoC)  0
-#define SK_DRIVER_SELFTEST(pAC, IoC)   0
-/* For get mtu you must add an own function */
-#define SK_DRIVER_GET_MTU(pAc,IoC,i)   0
-#define SK_DRIVER_SET_MTU(pAc,IoC,i,v) 0
-#define SK_DRIVER_PRESET_MTU(pAc,IoC,i,v)      0
-
-
-/* TX and RX descriptors *****************************************************/
-
-typedef struct s_RxD RXD; /* the receive descriptor */
-
-struct s_RxD {
-       volatile SK_U32 RBControl;      /* Receive Buffer Control */
-       SK_U32          VNextRxd;       /* Next receive descriptor,low dword */
-       SK_U32          VDataLow;       /* Receive buffer Addr, low dword */
-       SK_U32          VDataHigh;      /* Receive buffer Addr, high dword */
-       SK_U32          FrameStat;      /* Receive Frame Status word */
-       SK_U32          TimeStamp;      /* Time stamp from XMAC */
-       SK_U32          TcpSums;        /* TCP Sum 2 / TCP Sum 1 */
-       SK_U32          TcpSumStarts;   /* TCP Sum Start 2 / TCP Sum Start 1 */
-       RXD             *pNextRxd;      /* Pointer to next Rxd */
-       struct sk_buff  *pMBuf;         /* Pointer to Linux' socket buffer */
-};
-
-typedef struct s_TxD TXD; /* the transmit descriptor */
-
-struct s_TxD {
-       volatile SK_U32 TBControl;      /* Transmit Buffer Control */
-       SK_U32          VNextTxd;       /* Next transmit descriptor,low dword */
-       SK_U32          VDataLow;       /* Transmit Buffer Addr, low dword */
-       SK_U32          VDataHigh;      /* Transmit Buffer Addr, high dword */
-       SK_U32          FrameStat;      /* Transmit Frame Status Word */
-       SK_U32          TcpSumOfs;      /* Reserved / TCP Sum Offset */
-       SK_U16          TcpSumSt;       /* TCP Sum Start */
-       SK_U16          TcpSumWr;       /* TCP Sum Write */
-       SK_U32          TcpReserved;    /* not used */
-       TXD             *pNextTxd;      /* Pointer to next Txd */
-       struct sk_buff  *pMBuf;         /* Pointer to Linux' socket buffer */
-};
-
-
-/* definition of flags in descriptor control field */
-#define        RX_CTRL_OWN_BMU         UINT32_C(0x80000000)
-#define        RX_CTRL_STF             UINT32_C(0x40000000)
-#define        RX_CTRL_EOF             UINT32_C(0x20000000)
-#define        RX_CTRL_EOB_IRQ         UINT32_C(0x10000000)
-#define        RX_CTRL_EOF_IRQ         UINT32_C(0x08000000)
-#define RX_CTRL_DEV_NULL       UINT32_C(0x04000000)
-#define RX_CTRL_STAT_VALID     UINT32_C(0x02000000)
-#define RX_CTRL_TIME_VALID     UINT32_C(0x01000000)
-#define RX_CTRL_CHECK_DEFAULT  UINT32_C(0x00550000)
-#define RX_CTRL_CHECK_CSUM     UINT32_C(0x00560000)
-#define        RX_CTRL_LEN_MASK        UINT32_C(0x0000FFFF)
-
-#define        TX_CTRL_OWN_BMU         UINT32_C(0x80000000)
-#define        TX_CTRL_STF             UINT32_C(0x40000000)
-#define        TX_CTRL_EOF             UINT32_C(0x20000000)
-#define        TX_CTRL_EOB_IRQ         UINT32_C(0x10000000)
-#define        TX_CTRL_EOF_IRQ         UINT32_C(0x08000000)
-#define TX_CTRL_ST_FWD         UINT32_C(0x04000000)
-#define TX_CTRL_DISAB_CRC      UINT32_C(0x02000000)
-#define TX_CTRL_SOFTWARE       UINT32_C(0x01000000)
-#define TX_CTRL_CHECK_DEFAULT  UINT32_C(0x00550000)
-#define TX_CTRL_CHECK_CSUM     UINT32_C(0x00560000)
-#define        TX_CTRL_LEN_MASK        UINT32_C(0x0000FFFF)
-
-
-/* The offsets of registers in the TX and RX queue control io area ***********/
-
-#define RX_Q_BUF_CTRL_CNT      0x00
-#define RX_Q_NEXT_DESCR_LOW    0x04
-#define RX_Q_BUF_ADDR_LOW      0x08
-#define RX_Q_BUF_ADDR_HIGH     0x0c
-#define RX_Q_FRAME_STAT                0x10
-#define RX_Q_TIME_STAMP                0x14
-#define RX_Q_CSUM_1_2          0x18
-#define RX_Q_CSUM_START_1_2    0x1c
-#define RX_Q_CUR_DESCR_LOW     0x20
-#define RX_Q_DESCR_HIGH                0x24
-#define RX_Q_CUR_ADDR_LOW      0x28
-#define RX_Q_CUR_ADDR_HIGH     0x2c
-#define RX_Q_CUR_BYTE_CNT      0x30
-#define RX_Q_CTRL              0x34
-#define RX_Q_FLAG              0x38
-#define RX_Q_TEST1             0x3c
-#define RX_Q_TEST2             0x40
-#define RX_Q_TEST3             0x44
-
-#define TX_Q_BUF_CTRL_CNT      0x00
-#define TX_Q_NEXT_DESCR_LOW    0x04
-#define TX_Q_BUF_ADDR_LOW      0x08
-#define TX_Q_BUF_ADDR_HIGH     0x0c
-#define TX_Q_FRAME_STAT                0x10
-#define TX_Q_CSUM_START                0x14
-#define TX_Q_CSUM_START_POS    0x18
-#define TX_Q_RESERVED          0x1c
-#define TX_Q_CUR_DESCR_LOW     0x20
-#define TX_Q_DESCR_HIGH                0x24
-#define TX_Q_CUR_ADDR_LOW      0x28
-#define TX_Q_CUR_ADDR_HIGH     0x2c
-#define TX_Q_CUR_BYTE_CNT      0x30
-#define TX_Q_CTRL              0x34
-#define TX_Q_FLAG              0x38
-#define TX_Q_TEST1             0x3c
-#define TX_Q_TEST2             0x40
-#define TX_Q_TEST3             0x44
-
-/* definition of flags in the queue control field */
-#define RX_Q_CTRL_POLL_ON      0x00000080
-#define RX_Q_CTRL_POLL_OFF     0x00000040
-#define RX_Q_CTRL_STOP         0x00000020
-#define RX_Q_CTRL_START                0x00000010
-#define RX_Q_CTRL_CLR_I_PAR    0x00000008
-#define RX_Q_CTRL_CLR_I_EOB    0x00000004
-#define RX_Q_CTRL_CLR_I_EOF    0x00000002
-#define RX_Q_CTRL_CLR_I_ERR    0x00000001
-
-#define TX_Q_CTRL_POLL_ON      0x00000080
-#define TX_Q_CTRL_POLL_OFF     0x00000040
-#define TX_Q_CTRL_STOP         0x00000020
-#define TX_Q_CTRL_START                0x00000010
-#define TX_Q_CTRL_CLR_I_EOB    0x00000004
-#define TX_Q_CTRL_CLR_I_EOF    0x00000002
-#define TX_Q_CTRL_CLR_I_ERR    0x00000001
-
-
-/* Interrupt bits in the interrupts source register **************************/
-#define IRQ_HW_ERROR           0x80000000
-#define IRQ_RESERVED           0x40000000
-#define IRQ_PKT_TOUT_RX1       0x20000000
-#define IRQ_PKT_TOUT_RX2       0x10000000
-#define IRQ_PKT_TOUT_TX1       0x08000000
-#define IRQ_PKT_TOUT_TX2       0x04000000
-#define IRQ_I2C_READY          0x02000000
-#define IRQ_SW                 0x01000000
-#define IRQ_EXTERNAL_REG       0x00800000
-#define IRQ_TIMER              0x00400000
-#define IRQ_MAC1               0x00200000
-#define IRQ_LINK_SYNC_C_M1     0x00100000
-#define IRQ_MAC2               0x00080000
-#define IRQ_LINK_SYNC_C_M2     0x00040000
-#define IRQ_EOB_RX1            0x00020000
-#define IRQ_EOF_RX1            0x00010000
-#define IRQ_CHK_RX1            0x00008000
-#define IRQ_EOB_RX2            0x00004000
-#define IRQ_EOF_RX2            0x00002000
-#define IRQ_CHK_RX2            0x00001000
-#define IRQ_EOB_SY_TX1         0x00000800
-#define IRQ_EOF_SY_TX1         0x00000400
-#define IRQ_CHK_SY_TX1         0x00000200
-#define IRQ_EOB_AS_TX1         0x00000100
-#define IRQ_EOF_AS_TX1         0x00000080
-#define IRQ_CHK_AS_TX1         0x00000040
-#define IRQ_EOB_SY_TX2         0x00000020
-#define IRQ_EOF_SY_TX2         0x00000010
-#define IRQ_CHK_SY_TX2         0x00000008
-#define IRQ_EOB_AS_TX2         0x00000004
-#define IRQ_EOF_AS_TX2         0x00000002
-#define IRQ_CHK_AS_TX2         0x00000001
-
-#define DRIVER_IRQS    (IRQ_SW | IRQ_EOF_RX1 | IRQ_EOF_RX2 | \
-                       IRQ_EOF_SY_TX1 | IRQ_EOF_AS_TX1 | \
-                       IRQ_EOF_SY_TX2 | IRQ_EOF_AS_TX2)
-
-#define SPECIAL_IRQS   (IRQ_HW_ERROR | IRQ_PKT_TOUT_RX1 | IRQ_PKT_TOUT_RX2 | \
-                       IRQ_PKT_TOUT_TX1 | IRQ_PKT_TOUT_TX2 | \
-                       IRQ_I2C_READY | IRQ_EXTERNAL_REG | IRQ_TIMER | \
-                       IRQ_MAC1 | IRQ_LINK_SYNC_C_M1 | \
-                       IRQ_MAC2 | IRQ_LINK_SYNC_C_M2 | \
-                       IRQ_CHK_RX1 | IRQ_CHK_RX2 | \
-                       IRQ_CHK_SY_TX1 | IRQ_CHK_AS_TX1 | \
-                       IRQ_CHK_SY_TX2 | IRQ_CHK_AS_TX2)
-
-#define IRQ_MASK       (IRQ_SW | IRQ_EOB_RX1 | IRQ_EOF_RX1 | \
-                       IRQ_EOB_RX2 | IRQ_EOF_RX2 | \
-                       IRQ_EOB_SY_TX1 | IRQ_EOF_SY_TX1 | \
-                       IRQ_EOB_AS_TX1 | IRQ_EOF_AS_TX1 | \
-                       IRQ_EOB_SY_TX2 | IRQ_EOF_SY_TX2 | \
-                       IRQ_EOB_AS_TX2 | IRQ_EOF_AS_TX2 | \
-                       IRQ_HW_ERROR | IRQ_PKT_TOUT_RX1 | IRQ_PKT_TOUT_RX2 | \
-                       IRQ_PKT_TOUT_TX1 | IRQ_PKT_TOUT_TX2 | \
-                       IRQ_I2C_READY | IRQ_EXTERNAL_REG | IRQ_TIMER | \
-                       IRQ_MAC1 | \
-                       IRQ_MAC2 | \
-                       IRQ_CHK_RX1 | IRQ_CHK_RX2 | \
-                       IRQ_CHK_SY_TX1 | IRQ_CHK_AS_TX1 | \
-                       IRQ_CHK_SY_TX2 | IRQ_CHK_AS_TX2)
-
-#define IRQ_HWE_MASK   0x00000FFF /* enable all HW irqs */
-
-typedef struct s_DevNet DEV_NET;
-
-struct s_DevNet {
-       int             PortNr;
-       int             NetNr;
-       int             Mtu;
-       int             Up;
-       SK_AC   *pAC;
-};
-
-typedef struct s_TxPort                TX_PORT;
-
-struct s_TxPort {
-       /* the transmit descriptor rings */
-       caddr_t         pTxDescrRing;   /* descriptor area memory */
-       SK_U64          VTxDescrRing;   /* descr. area bus virt. addr. */
-       TXD             *pTxdRingHead;  /* Head of Tx rings */
-       TXD             *pTxdRingTail;  /* Tail of Tx rings */
-       TXD             *pTxdRingPrev;  /* descriptor sent previously */
-       int             TxdRingFree;    /* # of free entrys */
-#if 0
-       spinlock_t      TxDesRingLock;  /* serialize descriptor accesses */
-#endif
-       caddr_t         HwAddr;         /* bmu registers address */
-       int             PortIndex;      /* index number of port (0 or 1) */
-};
-
-typedef struct s_RxPort                RX_PORT;
-
-struct s_RxPort {
-       /* the receive descriptor rings */
-       caddr_t         pRxDescrRing;   /* descriptor area memory */
-       SK_U64          VRxDescrRing;   /* descr. area bus virt. addr. */
-       RXD             *pRxdRingHead;  /* Head of Rx rings */
-       RXD             *pRxdRingTail;  /* Tail of Rx rings */
-       RXD             *pRxdRingPrev;  /* descriptor given to BMU previously */
-       int             RxdRingFree;    /* # of free entrys */
-#if 0
-       spinlock_t      RxDesRingLock;  /* serialize descriptor accesses */
-#endif
-       int             RxFillLimit;    /* limit for buffers in ring */
-       caddr_t         HwAddr;         /* bmu registers address */
-       int             PortIndex;      /* index number of port (0 or 1) */
-};
-
-typedef struct s_PerStrm       PER_STRM;
-
-#define SK_ALLOC_IRQ   0x00000001
-
-/****************************************************************************
- * Per board structure / Adapter Context structure:
- *     Allocated within attach(9e) and freed within detach(9e).
- *     Contains all 'per device' necessary handles, flags, locks etc.:
- */
-struct s_AC  {
-       SK_GEINIT       GIni;           /* GE init struct */
-       SK_PNMI         Pnmi;           /* PNMI data struct */
-       SK_VPD          vpd;            /* vpd data struct */
-       SK_QUEUE        Event;          /* Event queue */
-       SK_HWT          Hwt;            /* Hardware Timer control struct */
-       SK_TIMCTRL      Tim;            /* Software Timer control struct */
-       SK_I2C          I2c;            /* I2C relevant data structure */
-       SK_ADDR         Addr;           /* for Address module */
-       SK_CSUM         Csum;           /* for checksum module */
-       SK_RLMT         Rlmt;           /* for rlmt module */
-#if 0
-       spinlock_t      SlowPathLock;   /* Normal IRQ lock */
-#endif
-       SK_PNMI_STRUCT_DATA PnmiStruct; /* structure to get all Pnmi-Data */
-       int                     RlmtMode;       /* link check mode to set */
-       int                     RlmtNets;       /* Number of nets */
-
-       SK_IOC          IoBase;         /* register set of adapter */
-       int             BoardLevel;     /* level of active hw init (0-2) */
-       char            DeviceStr[80];  /* adapter string from vpd */
-       SK_U32          AllocFlag;      /* flag allocation of resources */
-#if 0
-       struct pci_dev  *PciDev;        /* for access to pci config space */
-       SK_U32          PciDevId;       /* pci device id */
-#else
-       int             PciDev;
-#endif
-       struct SK_NET_DEVICE    *dev[2];        /* pointer to device struct */
-       char            Name[30];       /* driver name */
-       struct SK_NET_DEVICE    *Next;          /* link all devices (for clearing) */
-       int             RxBufSize;      /* length of receive buffers */
-#if 0
-       struct net_device_stats stats;  /* linux 'netstat -i' statistics */
-#endif
-       int             Index;          /* internal board index number */
-
-       /* adapter RAM sizes for queues of active port */
-       int             RxQueueSize;    /* memory used for receive queue */
-       int             TxSQueueSize;   /* memory used for sync. tx queue */
-       int             TxAQueueSize;   /* memory used for async. tx queue */
-
-       int             PromiscCount;   /* promiscuous mode counter  */
-       int             AllMultiCount;  /* allmulticast mode counter */
-       int             MulticCount;    /* number of different MC    */
-                                       /*  addresses for this board */
-                                       /*  (may be more than HW can)*/
-
-       int             HWRevision;     /* Hardware revision */
-       int             ActivePort;     /* the active XMAC port */
-       int             MaxPorts;               /* number of activated ports */
-       int             TxDescrPerRing; /* # of descriptors per tx ring */
-       int             RxDescrPerRing; /* # of descriptors per rx ring */
-
-       caddr_t         pDescrMem;      /* Pointer to the descriptor area */
-       dma_addr_t      pDescrMemDMA;   /* PCI DMA address of area */
-
-       /* the port structures with descriptor rings */
-       TX_PORT         TxPort[SK_MAX_MACS][2];
-       RX_PORT         RxPort[SK_MAX_MACS];
-
-       unsigned int    CsOfs1;         /* for checksum calculation */
-       unsigned int    CsOfs2;         /* for checksum calculation */
-       SK_U32          CsOfs;          /* for checksum calculation */
-
-       SK_BOOL         CheckQueue;     /* check event queue soon */
-
-       /* Only for tests */
-       int             PortUp;
-       int             PortDown;
-
-};
-
-#endif /* __INC_SKDRV2ND_H */
+/******************************************************************************
+ *
+ * Name:       skdrv2nd.h
+ * Project:    GEnesis, PCI Gigabit Ethernet Adapter
+ * Version:    $Revision: 1.1.1.1 $
+ * Date:       $Date: 2009/03/25 22:22:09 $
+ * Purpose:    Second header file for driver and all other modules
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ *     (C)Copyright 1998-2003 SysKonnect GmbH.
+ *
+ *     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.
+ *
+ *     The information in this file is provided "AS IS" without warranty.
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ * History:
+ *
+ *     $Log: skdrv2nd.h,v $
+ *     Revision 1.1.1.1  2009/03/25 22:22:09  kenagy
+ *     no message
+ *     
+ *     Revision 1.15  2003/02/25 14:16:40  mlindner
+ *     Fix: Copyright statement
+ *
+ *     Revision 1.14  2003/02/25 13:26:26  mlindner
+ *     Add: Support for various vendors
+ *
+ *     Revision 1.13  2002/10/02 12:46:02  mlindner
+ *     Add: Support for Yukon
+ *
+ *     Revision 1.12.2.2  2001/09/05 12:14:50  mlindner
+ *     add: New hardware revision int
+ *
+ *     Revision 1.12.2.1  2001/03/12 16:50:59  mlindner
+ *     chg: kernel 2.4 adaption
+ *
+ *     Revision 1.12  2001/03/01 12:52:15  mlindner
+ *     Fixed ring size
+ *
+ *     Revision 1.11  2001/02/19 13:28:02  mlindner
+ *     Changed PNMI parameter values
+ *
+ *     Revision 1.10  2001/01/22 14:16:04  mlindner
+ *     added ProcFs functionality
+ *     Dual Net functionality integrated
+ *     Rlmt networks added
+ *
+ *     Revision 1.1  2000/10/05 19:46:50  phargrov
+ *     Add directory src/vipk_devs_nonlbl/vipk_sk98lin/
+ *     This is the SysKonnect SK-98xx Gigabit Ethernet driver,
+ *     contributed by SysKonnect.
+ *
+ *     Revision 1.9  2000/02/21 10:39:55  cgoos
+ *     Added flag for jumbo support usage.
+ *
+ *     Revision 1.8  1999/11/22 13:50:44  cgoos
+ *     Changed license header to GPL.
+ *     Fixed two comments.
+ *
+ *     Revision 1.7  1999/09/28 12:38:21  cgoos
+ *     Added CheckQueue to SK_AC.
+ *
+ *     Revision 1.6  1999/07/27 08:04:05  cgoos
+ *     Added checksumming variables to SK_AC.
+ *
+ *     Revision 1.5  1999/03/29 12:33:26  cgoos
+ *     Rreversed to fine lock granularity.
+ *
+ *     Revision 1.4  1999/03/15 12:14:02  cgoos
+ *     Added DriverLock to SK_AC.
+ *     Removed other locks.
+ *
+ *     Revision 1.3  1999/03/01 08:52:27  cgoos
+ *     Changed pAC->PciDev declaration.
+ *
+ *     Revision 1.2  1999/02/18 10:57:14  cgoos
+ *     Removed SkDrvTimeStamp prototype.
+ *     Fixed SkGeOsGetTime prototype.
+ *
+ *     Revision 1.1  1999/02/16 07:41:01  cgoos
+ *     First version.
+ *
+ *
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ * Description:
+ *
+ * This is the second include file of the driver, which includes all other
+ * neccessary files and defines all structures and constants used by the
+ * driver and the common modules.
+ *
+ * Include File Hierarchy:
+ *
+ *     see skge.c
+ *
+ ******************************************************************************/
+
+#ifndef __INC_SKDRV2ND_H
+#define __INC_SKDRV2ND_H
+
+#include "h/skqueue.h"
+#include "h/skgehwt.h"
+#include "h/sktimer.h"
+#include "h/ski2c.h"
+#include "h/skgepnmi.h"
+#include "h/skvpd.h"
+#include "h/skgehw.h"
+#include "h/skgeinit.h"
+#include "h/skaddr.h"
+#include "h/skgesirq.h"
+#include "h/skcsum.h"
+#include "h/skrlmt.h"
+#include "h/skgedrv.h"
+
+#define SK_PCI_ISCOMPLIANT(result, pdev) {     \
+    result = SK_FALSE; /* default */     \
+    /* 3Com (0x10b7) */     \
+    if (pdev->vendor == 0x10b7) {     \
+       /* Gigabit Ethernet Adapter (0x1700) */     \
+       if ((pdev->device == 0x1700)) { \
+           result = SK_TRUE;     \
+       }     \
+    /* SysKonnect (0x1148) */     \
+    } else if (pdev->vendor == 0x1148) {     \
+       /* SK-98xx Gigabit Ethernet Server Adapter (0x4300) */     \
+       /* SK-98xx V2 Gigabit Ethernet Adapter (0x4320) */     \
+       if ((pdev->device == 0x4300) || \
+           (pdev->device == 0x4320)) { \
+           result = SK_TRUE;     \
+       }     \
+    /* D-Link (0x1186) */     \
+    } else if (pdev->vendor == 0x1186) {     \
+       /* Gigabit Ethernet Adapter (0x4c00) */     \
+       if ((pdev->device == 0x4c00)) { \
+           result = SK_TRUE;     \
+       }     \
+    /* CNet (0x1371) */     \
+    } else if (pdev->vendor == 0x1371) {     \
+       /* GigaCard Network Adapter (0x434e) */     \
+       if ((pdev->device == 0x434e)) { \
+           result = SK_TRUE;     \
+       }     \
+    /* Linksys (0x1737) */     \
+    } else if (pdev->vendor == 0x1737) {     \
+       /* Gigabit Network Adapter (0x1032) */     \
+       /* Gigabit Network Adapter (0x1064) */     \
+       if ((pdev->device == 0x1032) || \
+           (pdev->device == 0x1064)) { \
+           result = SK_TRUE;     \
+       }     \
+    } else {     \
+       result = SK_FALSE;     \
+    }     \
+}
+
+
+extern SK_MBUF         *SkDrvAllocRlmtMbuf(SK_AC*, SK_IOC, unsigned);
+extern void            SkDrvFreeRlmtMbuf(SK_AC*, SK_IOC, SK_MBUF*);
+extern SK_U64          SkOsGetTime(SK_AC*);
+extern int             SkPciReadCfgDWord(SK_AC*, int, SK_U32*);
+extern int             SkPciReadCfgWord(SK_AC*, int, SK_U16*);
+extern int             SkPciReadCfgByte(SK_AC*, int, SK_U8*);
+extern int             SkPciWriteCfgDWord(SK_AC*, int, SK_U32);
+extern int             SkPciWriteCfgWord(SK_AC*, int, SK_U16);
+extern int             SkPciWriteCfgByte(SK_AC*, int, SK_U8);
+extern int             SkDrvEvent(SK_AC*, SK_IOC IoC, SK_U32, SK_EVPARA);
+
+struct s_DrvRlmtMbuf {
+       SK_MBUF         *pNext;         /* Pointer to next RLMT Mbuf. */
+       SK_U8           *pData;         /* Data buffer (virtually contig.). */
+       unsigned        Size;           /* Data buffer size. */
+       unsigned        Length;         /* Length of packet (<= Size). */
+       SK_U32          PortIdx;        /* Receiving/transmitting port. */
+#ifdef SK_RLMT_MBUF_PRIVATE
+       SK_RLMT_MBUF    Rlmt;           /* Private part for RLMT. */
+#endif  /* SK_RLMT_MBUF_PRIVATE */
+       struct sk_buff  *pOs;           /* Pointer to message block */
+};
+
+
+/*
+ * ioctl definitions
+ */
+#define                SK_IOCTL_BASE           (SIOCDEVPRIVATE)
+#define                SK_IOCTL_GETMIB         (SK_IOCTL_BASE + 0)
+#define                SK_IOCTL_SETMIB         (SK_IOCTL_BASE + 1)
+#define                SK_IOCTL_PRESETMIB      (SK_IOCTL_BASE + 2)
+
+typedef struct s_IOCTL SK_GE_IOCTL;
+
+struct s_IOCTL {
+       char*           pData;
+       unsigned int    Len;
+};
+
+
+/*
+ * define sizes of descriptor rings in bytes
+ */
+
+#if 0
+#define                TX_RING_SIZE    (8*1024)
+#define                RX_RING_SIZE    (24*1024)
+#else
+#define                TX_RING_SIZE    (10 * 40)
+#define                RX_RING_SIZE    (10 * 40)
+#endif
+
+/*
+ * Buffer size for ethernet packets
+ */
+#define        ETH_BUF_SIZE    1540
+#define        ETH_MAX_MTU     1514
+#define ETH_MIN_MTU    60
+#define ETH_MULTICAST_BIT      0x01
+#define SK_JUMBO_MTU   9000
+
+/*
+ * transmit priority selects the queue: LOW=asynchron, HIGH=synchron
+ */
+#define TX_PRIO_LOW    0
+#define TX_PRIO_HIGH   1
+
+/*
+ * alignment of rx/tx descriptors
+ */
+#define DESCR_ALIGN    8
+
+/*
+ * definitions for pnmi. TODO
+ */
+#define SK_DRIVER_RESET(pAC, IoC)      0
+#define SK_DRIVER_SENDEVENT(pAC, IoC)  0
+#define SK_DRIVER_SELFTEST(pAC, IoC)   0
+/* For get mtu you must add an own function */
+#define SK_DRIVER_GET_MTU(pAc,IoC,i)   0
+#define SK_DRIVER_SET_MTU(pAc,IoC,i,v) 0
+#define SK_DRIVER_PRESET_MTU(pAc,IoC,i,v)      0
+
+
+/* TX and RX descriptors *****************************************************/
+
+typedef struct s_RxD RXD; /* the receive descriptor */
+
+struct s_RxD {
+       volatile SK_U32 RBControl;      /* Receive Buffer Control */
+       SK_U32          VNextRxd;       /* Next receive descriptor,low dword */
+       SK_U32          VDataLow;       /* Receive buffer Addr, low dword */
+       SK_U32          VDataHigh;      /* Receive buffer Addr, high dword */
+       SK_U32          FrameStat;      /* Receive Frame Status word */
+       SK_U32          TimeStamp;      /* Time stamp from XMAC */
+       SK_U32          TcpSums;        /* TCP Sum 2 / TCP Sum 1 */
+       SK_U32          TcpSumStarts;   /* TCP Sum Start 2 / TCP Sum Start 1 */
+       RXD             *pNextRxd;      /* Pointer to next Rxd */
+       struct sk_buff  *pMBuf;         /* Pointer to Linux' socket buffer */
+};
+
+typedef struct s_TxD TXD; /* the transmit descriptor */
+
+struct s_TxD {
+       volatile SK_U32 TBControl;      /* Transmit Buffer Control */
+       SK_U32          VNextTxd;       /* Next transmit descriptor,low dword */
+       SK_U32          VDataLow;       /* Transmit Buffer Addr, low dword */
+       SK_U32          VDataHigh;      /* Transmit Buffer Addr, high dword */
+       SK_U32          FrameStat;      /* Transmit Frame Status Word */
+       SK_U32          TcpSumOfs;      /* Reserved / TCP Sum Offset */
+       SK_U16          TcpSumSt;       /* TCP Sum Start */
+       SK_U16          TcpSumWr;       /* TCP Sum Write */
+       SK_U32          TcpReserved;    /* not used */
+       TXD             *pNextTxd;      /* Pointer to next Txd */
+       struct sk_buff  *pMBuf;         /* Pointer to Linux' socket buffer */
+};
+
+
+/* definition of flags in descriptor control field */
+#define        RX_CTRL_OWN_BMU         UINT32_C(0x80000000)
+#define        RX_CTRL_STF             UINT32_C(0x40000000)
+#define        RX_CTRL_EOF             UINT32_C(0x20000000)
+#define        RX_CTRL_EOB_IRQ         UINT32_C(0x10000000)
+#define        RX_CTRL_EOF_IRQ         UINT32_C(0x08000000)
+#define RX_CTRL_DEV_NULL       UINT32_C(0x04000000)
+#define RX_CTRL_STAT_VALID     UINT32_C(0x02000000)
+#define RX_CTRL_TIME_VALID     UINT32_C(0x01000000)
+#define RX_CTRL_CHECK_DEFAULT  UINT32_C(0x00550000)
+#define RX_CTRL_CHECK_CSUM     UINT32_C(0x00560000)
+#define        RX_CTRL_LEN_MASK        UINT32_C(0x0000FFFF)
+
+#define        TX_CTRL_OWN_BMU         UINT32_C(0x80000000)
+#define        TX_CTRL_STF             UINT32_C(0x40000000)
+#define        TX_CTRL_EOF             UINT32_C(0x20000000)
+#define        TX_CTRL_EOB_IRQ         UINT32_C(0x10000000)
+#define        TX_CTRL_EOF_IRQ         UINT32_C(0x08000000)
+#define TX_CTRL_ST_FWD         UINT32_C(0x04000000)
+#define TX_CTRL_DISAB_CRC      UINT32_C(0x02000000)
+#define TX_CTRL_SOFTWARE       UINT32_C(0x01000000)
+#define TX_CTRL_CHECK_DEFAULT  UINT32_C(0x00550000)
+#define TX_CTRL_CHECK_CSUM     UINT32_C(0x00560000)
+#define        TX_CTRL_LEN_MASK        UINT32_C(0x0000FFFF)
+
+
+/* The offsets of registers in the TX and RX queue control io area ***********/
+
+#define RX_Q_BUF_CTRL_CNT      0x00
+#define RX_Q_NEXT_DESCR_LOW    0x04
+#define RX_Q_BUF_ADDR_LOW      0x08
+#define RX_Q_BUF_ADDR_HIGH     0x0c
+#define RX_Q_FRAME_STAT                0x10
+#define RX_Q_TIME_STAMP                0x14
+#define RX_Q_CSUM_1_2          0x18
+#define RX_Q_CSUM_START_1_2    0x1c
+#define RX_Q_CUR_DESCR_LOW     0x20
+#define RX_Q_DESCR_HIGH                0x24
+#define RX_Q_CUR_ADDR_LOW      0x28
+#define RX_Q_CUR_ADDR_HIGH     0x2c
+#define RX_Q_CUR_BYTE_CNT      0x30
+#define RX_Q_CTRL              0x34
+#define RX_Q_FLAG              0x38
+#define RX_Q_TEST1             0x3c
+#define RX_Q_TEST2             0x40
+#define RX_Q_TEST3             0x44
+
+#define TX_Q_BUF_CTRL_CNT      0x00
+#define TX_Q_NEXT_DESCR_LOW    0x04
+#define TX_Q_BUF_ADDR_LOW      0x08
+#define TX_Q_BUF_ADDR_HIGH     0x0c
+#define TX_Q_FRAME_STAT                0x10
+#define TX_Q_CSUM_START                0x14
+#define TX_Q_CSUM_START_POS    0x18
+#define TX_Q_RESERVED          0x1c
+#define TX_Q_CUR_DESCR_LOW     0x20
+#define TX_Q_DESCR_HIGH                0x24
+#define TX_Q_CUR_ADDR_LOW      0x28
+#define TX_Q_CUR_ADDR_HIGH     0x2c
+#define TX_Q_CUR_BYTE_CNT      0x30
+#define TX_Q_CTRL              0x34
+#define TX_Q_FLAG              0x38
+#define TX_Q_TEST1             0x3c
+#define TX_Q_TEST2             0x40
+#define TX_Q_TEST3             0x44
+
+/* definition of flags in the queue control field */
+#define RX_Q_CTRL_POLL_ON      0x00000080
+#define RX_Q_CTRL_POLL_OFF     0x00000040
+#define RX_Q_CTRL_STOP         0x00000020
+#define RX_Q_CTRL_START                0x00000010
+#define RX_Q_CTRL_CLR_I_PAR    0x00000008
+#define RX_Q_CTRL_CLR_I_EOB    0x00000004
+#define RX_Q_CTRL_CLR_I_EOF    0x00000002
+#define RX_Q_CTRL_CLR_I_ERR    0x00000001
+
+#define TX_Q_CTRL_POLL_ON      0x00000080
+#define TX_Q_CTRL_POLL_OFF     0x00000040
+#define TX_Q_CTRL_STOP         0x00000020
+#define TX_Q_CTRL_START                0x00000010
+#define TX_Q_CTRL_CLR_I_EOB    0x00000004
+#define TX_Q_CTRL_CLR_I_EOF    0x00000002
+#define TX_Q_CTRL_CLR_I_ERR    0x00000001
+
+
+/* Interrupt bits in the interrupts source register **************************/
+#define IRQ_HW_ERROR           0x80000000
+#define IRQ_RESERVED           0x40000000
+#define IRQ_PKT_TOUT_RX1       0x20000000
+#define IRQ_PKT_TOUT_RX2       0x10000000
+#define IRQ_PKT_TOUT_TX1       0x08000000
+#define IRQ_PKT_TOUT_TX2       0x04000000
+#define IRQ_I2C_READY          0x02000000
+#define IRQ_SW                 0x01000000
+#define IRQ_EXTERNAL_REG       0x00800000
+#define IRQ_TIMER              0x00400000
+#define IRQ_MAC1               0x00200000
+#define IRQ_LINK_SYNC_C_M1     0x00100000
+#define IRQ_MAC2               0x00080000
+#define IRQ_LINK_SYNC_C_M2     0x00040000
+#define IRQ_EOB_RX1            0x00020000
+#define IRQ_EOF_RX1            0x00010000
+#define IRQ_CHK_RX1            0x00008000
+#define IRQ_EOB_RX2            0x00004000
+#define IRQ_EOF_RX2            0x00002000
+#define IRQ_CHK_RX2            0x00001000
+#define IRQ_EOB_SY_TX1         0x00000800
+#define IRQ_EOF_SY_TX1         0x00000400
+#define IRQ_CHK_SY_TX1         0x00000200
+#define IRQ_EOB_AS_TX1         0x00000100
+#define IRQ_EOF_AS_TX1         0x00000080
+#define IRQ_CHK_AS_TX1         0x00000040
+#define IRQ_EOB_SY_TX2         0x00000020
+#define IRQ_EOF_SY_TX2         0x00000010
+#define IRQ_CHK_SY_TX2         0x00000008
+#define IRQ_EOB_AS_TX2         0x00000004
+#define IRQ_EOF_AS_TX2         0x00000002
+#define IRQ_CHK_AS_TX2         0x00000001
+
+#define DRIVER_IRQS    (IRQ_SW | IRQ_EOF_RX1 | IRQ_EOF_RX2 | \
+                       IRQ_EOF_SY_TX1 | IRQ_EOF_AS_TX1 | \
+                       IRQ_EOF_SY_TX2 | IRQ_EOF_AS_TX2)
+
+#define SPECIAL_IRQS   (IRQ_HW_ERROR | IRQ_PKT_TOUT_RX1 | IRQ_PKT_TOUT_RX2 | \
+                       IRQ_PKT_TOUT_TX1 | IRQ_PKT_TOUT_TX2 | \
+                       IRQ_I2C_READY | IRQ_EXTERNAL_REG | IRQ_TIMER | \
+                       IRQ_MAC1 | IRQ_LINK_SYNC_C_M1 | \
+                       IRQ_MAC2 | IRQ_LINK_SYNC_C_M2 | \
+                       IRQ_CHK_RX1 | IRQ_CHK_RX2 | \
+                       IRQ_CHK_SY_TX1 | IRQ_CHK_AS_TX1 | \
+                       IRQ_CHK_SY_TX2 | IRQ_CHK_AS_TX2)
+
+#define IRQ_MASK       (IRQ_SW | IRQ_EOB_RX1 | IRQ_EOF_RX1 | \
+                       IRQ_EOB_RX2 | IRQ_EOF_RX2 | \
+                       IRQ_EOB_SY_TX1 | IRQ_EOF_SY_TX1 | \
+                       IRQ_EOB_AS_TX1 | IRQ_EOF_AS_TX1 | \
+                       IRQ_EOB_SY_TX2 | IRQ_EOF_SY_TX2 | \
+                       IRQ_EOB_AS_TX2 | IRQ_EOF_AS_TX2 | \
+                       IRQ_HW_ERROR | IRQ_PKT_TOUT_RX1 | IRQ_PKT_TOUT_RX2 | \
+                       IRQ_PKT_TOUT_TX1 | IRQ_PKT_TOUT_TX2 | \
+                       IRQ_I2C_READY | IRQ_EXTERNAL_REG | IRQ_TIMER | \
+                       IRQ_MAC1 | \
+                       IRQ_MAC2 | \
+                       IRQ_CHK_RX1 | IRQ_CHK_RX2 | \
+                       IRQ_CHK_SY_TX1 | IRQ_CHK_AS_TX1 | \
+                       IRQ_CHK_SY_TX2 | IRQ_CHK_AS_TX2)
+
+#define IRQ_HWE_MASK   0x00000FFF /* enable all HW irqs */
+
+typedef struct s_DevNet DEV_NET;
+
+struct s_DevNet {
+       int             PortNr;
+       int             NetNr;
+       int             Mtu;
+       int             Up;
+       SK_AC   *pAC;
+};
+
+typedef struct s_TxPort                TX_PORT;
+
+struct s_TxPort {
+       /* the transmit descriptor rings */
+       caddr_t         pTxDescrRing;   /* descriptor area memory */
+       SK_U64          VTxDescrRing;   /* descr. area bus virt. addr. */
+       TXD             *pTxdRingHead;  /* Head of Tx rings */
+       TXD             *pTxdRingTail;  /* Tail of Tx rings */
+       TXD             *pTxdRingPrev;  /* descriptor sent previously */
+       int             TxdRingFree;    /* # of free entrys */
+#if 0
+       spinlock_t      TxDesRingLock;  /* serialize descriptor accesses */
+#endif
+       caddr_t         HwAddr;         /* bmu registers address */
+       int             PortIndex;      /* index number of port (0 or 1) */
+};
+
+typedef struct s_RxPort                RX_PORT;
+
+struct s_RxPort {
+       /* the receive descriptor rings */
+       caddr_t         pRxDescrRing;   /* descriptor area memory */
+       SK_U64          VRxDescrRing;   /* descr. area bus virt. addr. */
+       RXD             *pRxdRingHead;  /* Head of Rx rings */
+       RXD             *pRxdRingTail;  /* Tail of Rx rings */
+       RXD             *pRxdRingPrev;  /* descriptor given to BMU previously */
+       int             RxdRingFree;    /* # of free entrys */
+#if 0
+       spinlock_t      RxDesRingLock;  /* serialize descriptor accesses */
+#endif
+       int             RxFillLimit;    /* limit for buffers in ring */
+       caddr_t         HwAddr;         /* bmu registers address */
+       int             PortIndex;      /* index number of port (0 or 1) */
+};
+
+typedef struct s_PerStrm       PER_STRM;
+
+#define SK_ALLOC_IRQ   0x00000001
+
+/****************************************************************************
+ * Per board structure / Adapter Context structure:
+ *     Allocated within attach(9e) and freed within detach(9e).
+ *     Contains all 'per device' necessary handles, flags, locks etc.:
+ */
+struct s_AC  {
+       SK_GEINIT       GIni;           /* GE init struct */
+       SK_PNMI         Pnmi;           /* PNMI data struct */
+       SK_VPD          vpd;            /* vpd data struct */
+       SK_QUEUE        Event;          /* Event queue */
+       SK_HWT          Hwt;            /* Hardware Timer control struct */
+       SK_TIMCTRL      Tim;            /* Software Timer control struct */
+       SK_I2C          I2c;            /* I2C relevant data structure */
+       SK_ADDR         Addr;           /* for Address module */
+       SK_CSUM         Csum;           /* for checksum module */
+       SK_RLMT         Rlmt;           /* for rlmt module */
+#if 0
+       spinlock_t      SlowPathLock;   /* Normal IRQ lock */
+#endif
+       SK_PNMI_STRUCT_DATA PnmiStruct; /* structure to get all Pnmi-Data */
+       int                     RlmtMode;       /* link check mode to set */
+       int                     RlmtNets;       /* Number of nets */
+
+       SK_IOC          IoBase;         /* register set of adapter */
+       int             BoardLevel;     /* level of active hw init (0-2) */
+       char            DeviceStr[80];  /* adapter string from vpd */
+       SK_U32          AllocFlag;      /* flag allocation of resources */
+#if 0
+       struct pci_dev  *PciDev;        /* for access to pci config space */
+       SK_U32          PciDevId;       /* pci device id */
+#else
+       int             PciDev;
+#endif
+       struct SK_NET_DEVICE    *dev[2];        /* pointer to device struct */
+       char            Name[30];       /* driver name */
+       struct SK_NET_DEVICE    *Next;          /* link all devices (for clearing) */
+       int             RxBufSize;      /* length of receive buffers */
+#if 0
+       struct net_device_stats stats;  /* linux 'netstat -i' statistics */
+#endif
+       int             Index;          /* internal board index number */
+
+       /* adapter RAM sizes for queues of active port */
+       int             RxQueueSize;    /* memory used for receive queue */
+       int             TxSQueueSize;   /* memory used for sync. tx queue */
+       int             TxAQueueSize;   /* memory used for async. tx queue */
+
+       int             PromiscCount;   /* promiscuous mode counter  */
+       int             AllMultiCount;  /* allmulticast mode counter */
+       int             MulticCount;    /* number of different MC    */
+                                       /*  addresses for this board */
+                                       /*  (may be more than HW can)*/
+
+       int             HWRevision;     /* Hardware revision */
+       int             ActivePort;     /* the active XMAC port */
+       int             MaxPorts;               /* number of activated ports */
+       int             TxDescrPerRing; /* # of descriptors per tx ring */
+       int             RxDescrPerRing; /* # of descriptors per rx ring */
+
+       caddr_t         pDescrMem;      /* Pointer to the descriptor area */
+       dma_addr_t      pDescrMemDMA;   /* PCI DMA address of area */
+
+       /* the port structures with descriptor rings */
+       TX_PORT         TxPort[SK_MAX_MACS][2];
+       RX_PORT         RxPort[SK_MAX_MACS];
+
+       unsigned int    CsOfs1;         /* for checksum calculation */
+       unsigned int    CsOfs2;         /* for checksum calculation */
+       SK_U32          CsOfs;          /* for checksum calculation */
+
+       SK_BOOL         CheckQueue;     /* check event queue soon */
+
+       /* Only for tests */
+       int             PortUp;
+       int             PortDown;
+
+};
+
+#endif /* __INC_SKDRV2ND_H */
diff -Naur u-boot-2009.03_orig/drivers/net/sk98lin/h/skerror.h u-boot-2009.03/drivers/net/sk98lin/h/skerror.h
--- u-boot-2009.03_orig/drivers/net/sk98lin/h/skerror.h 2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/drivers/net/sk98lin/h/skerror.h      2009-03-31 14:54:45.721672000 -0700
@@ -1,80 +1,83 @@
-/******************************************************************************
- *
- * Name:       skerror.h
- * Project:    GEnesis, PCI Gigabit Ethernet Adapter
- * Version:    $Revision: 1.5 $
- * Date:       $Date: 2002/04/25 11:05:10 $
- * Purpose:    SK specific Error log support
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- *     (C)Copyright 1998-2002 SysKonnect GmbH.
- *
- *     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.
- *
- *     The information in this file is provided "AS IS" without warranty.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * History:
- *     $Log: skerror.h,v $
- *     Revision 1.5  2002/04/25 11:05:10  rschmidt
- *     Editorial changes
- *
- *     Revision 1.4  1999/11/22 13:51:59  cgoos
- *     Changed license header to GPL.
- *
- *     Revision 1.3  1999/09/14 14:04:42  rwahl
- *     Added error base SK_ERRBASE_PECP.
- *     Changed error base for driver.
- *
- *     Revision 1.2  1998/08/11 11:15:41  gklug
- *     chg: comments
- *
- *     Revision 1.1  1998/08/11 11:09:38  gklug
- *     add: error bases
- *     add: error Classes
- *     first version
- *
- *
- *
- ******************************************************************************/
-
-#ifndef _INC_SKERROR_H_
-#define _INC_SKERROR_H_
-
-/*
- * Define Error Classes
- */
-#define        SK_ERRCL_OTHER          (0)             /* Other error */
-#define        SK_ERRCL_CONFIG         (1L<<0) /* Configuration error */
-#define        SK_ERRCL_INIT           (1L<<1) /* Initialization error */
-#define        SK_ERRCL_NORES          (1L<<2) /* Out of Resources error */
-#define        SK_ERRCL_SW                     (1L<<3) /* Internal Software error */
-#define        SK_ERRCL_HW                     (1L<<4) /* Hardware Failure */
-#define        SK_ERRCL_COMM           (1L<<5) /* Communication error */
-
-
-/*
- * Define Error Code Bases
- */
-#define        SK_ERRBASE_RLMT          100    /* Base Error number for RLMT */
-#define        SK_ERRBASE_HWINIT        200    /* Base Error number for HWInit */
-#define        SK_ERRBASE_VPD           300    /* Base Error number for VPD */
-#define        SK_ERRBASE_PNMI          400    /* Base Error number for PNMI */
-#define        SK_ERRBASE_CSUM          500    /* Base Error number for Checksum */
-#define        SK_ERRBASE_SIRQ          600    /* Base Error number for Special IRQ */
-#define        SK_ERRBASE_I2C           700    /* Base Error number for I2C module */
-#define        SK_ERRBASE_QUEUE         800    /* Base Error number for Scheduler */
-#define        SK_ERRBASE_ADDR          900    /* Base Error number for Address module */
-#define SK_ERRBASE_PECP                1000    /* Base Error number for PECP */
-#define        SK_ERRBASE_DRV          1100    /* Base Error number for Driver */
-
-#endif /* _INC_SKERROR_H_ */
+/******************************************************************************
+ *
+ * Name:       skerror.h
+ * Project:    GEnesis, PCI Gigabit Ethernet Adapter
+ * Version:    $Revision: 1.1.1.1 $
+ * Date:       $Date: 2009/03/25 22:22:09 $
+ * Purpose:    SK specific Error log support
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ *     (C)Copyright 1998-2002 SysKonnect GmbH.
+ *
+ *     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.
+ *
+ *     The information in this file is provided "AS IS" without warranty.
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ * History:
+ *     $Log: skerror.h,v $
+ *     Revision 1.1.1.1  2009/03/25 22:22:09  kenagy
+ *     no message
+ *     
+ *     Revision 1.5  2002/04/25 11:05:10  rschmidt
+ *     Editorial changes
+ *
+ *     Revision 1.4  1999/11/22 13:51:59  cgoos
+ *     Changed license header to GPL.
+ *
+ *     Revision 1.3  1999/09/14 14:04:42  rwahl
+ *     Added error base SK_ERRBASE_PECP.
+ *     Changed error base for driver.
+ *
+ *     Revision 1.2  1998/08/11 11:15:41  gklug
+ *     chg: comments
+ *
+ *     Revision 1.1  1998/08/11 11:09:38  gklug
+ *     add: error bases
+ *     add: error Classes
+ *     first version
+ *
+ *
+ *
+ ******************************************************************************/
+
+#ifndef _INC_SKERROR_H_
+#define _INC_SKERROR_H_
+
+/*
+ * Define Error Classes
+ */
+#define        SK_ERRCL_OTHER          (0)             /* Other error */
+#define        SK_ERRCL_CONFIG         (1L<<0) /* Configuration error */
+#define        SK_ERRCL_INIT           (1L<<1) /* Initialization error */
+#define        SK_ERRCL_NORES          (1L<<2) /* Out of Resources error */
+#define        SK_ERRCL_SW                     (1L<<3) /* Internal Software error */
+#define        SK_ERRCL_HW                     (1L<<4) /* Hardware Failure */
+#define        SK_ERRCL_COMM           (1L<<5) /* Communication error */
+
+
+/*
+ * Define Error Code Bases
+ */
+#define        SK_ERRBASE_RLMT          100    /* Base Error number for RLMT */
+#define        SK_ERRBASE_HWINIT        200    /* Base Error number for HWInit */
+#define        SK_ERRBASE_VPD           300    /* Base Error number for VPD */
+#define        SK_ERRBASE_PNMI          400    /* Base Error number for PNMI */
+#define        SK_ERRBASE_CSUM          500    /* Base Error number for Checksum */
+#define        SK_ERRBASE_SIRQ          600    /* Base Error number for Special IRQ */
+#define        SK_ERRBASE_I2C           700    /* Base Error number for I2C module */
+#define        SK_ERRBASE_QUEUE         800    /* Base Error number for Scheduler */
+#define        SK_ERRBASE_ADDR          900    /* Base Error number for Address module */
+#define SK_ERRBASE_PECP                1000    /* Base Error number for PECP */
+#define        SK_ERRBASE_DRV          1100    /* Base Error number for Driver */
+
+#endif /* _INC_SKERROR_H_ */
diff -Naur u-boot-2009.03_orig/drivers/net/sk98lin/h/skgedrv.h u-boot-2009.03/drivers/net/sk98lin/h/skgedrv.h
--- u-boot-2009.03_orig/drivers/net/sk98lin/h/skgedrv.h 2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/drivers/net/sk98lin/h/skgedrv.h      2009-03-31 14:54:45.752921600 -0700
@@ -1,72 +1,75 @@
-/******************************************************************************
- *
- * Name:       skgedrv.h
- * Project:    GEnesis, PCI Gigabit Ethernet Adapter
- * Version:    $Revision: 1.6 $
- * Date:       $Date: 2002/07/15 15:38:01 $
- * Purpose:    Interface with the driver
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- *     (C)Copyright 1998-2002 SysKonnect GmbH.
- *
- *     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.
- *
- *     The information in this file is provided "AS IS" without warranty.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * History:
- *
- *     $Log: skgedrv.h,v $
- *     Revision 1.6  2002/07/15 15:38:01  rschmidt
- *     Power Management support
- *     Editorial changes
- *
- *     Revision 1.5  2002/04/25 11:05:47  rschmidt
- *     Editorial changes
- *
- *     Revision 1.4  1999/11/22 13:52:46  cgoos
- *     Changed license header to GPL.
- *
- *     Revision 1.3  1998/12/01 13:31:39  cgoos
- *     SWITCH INTERN Event added.
- *
- *     Revision 1.2  1998/11/25 08:28:38  gklug
- *     rmv: PORT SWITCH Event
- *
- *     Revision 1.1  1998/09/29 06:14:07  gklug
- *     add: driver events (initial version)
- *
- *
- ******************************************************************************/
-
-#ifndef __INC_SKGEDRV_H_
-#define __INC_SKGEDRV_H_
-
-/* defines ********************************************************************/
-
-/*
- * Define the driver events.
- * Usually the events are defined by the destination module.
- * In case of the driver we put the definition of the events here.
- */
-#define SK_DRV_PORT_RESET       1      /* The port needs to be reset */
-#define SK_DRV_NET_UP           2      /* The net is operational */
-#define SK_DRV_NET_DOWN                 3      /* The net is down */
-#define SK_DRV_SWITCH_SOFT      4      /* Ports switch with both links connected */
-#define SK_DRV_SWITCH_HARD      5      /* Port switch due to link failure */
-#define SK_DRV_RLMT_SEND        6      /* Send a RLMT packet */
-#define SK_DRV_ADAP_FAIL        7      /* The whole adapter fails */
-#define SK_DRV_PORT_FAIL        8      /* One port fails */
-#define SK_DRV_SWITCH_INTERN    9      /* Port switch by the driver itself */
-#define SK_DRV_POWER_DOWN      10      /* Power down mode */
-
-#endif /* __INC_SKGEDRV_H_ */
+/******************************************************************************
+ *
+ * Name:       skgedrv.h
+ * Project:    GEnesis, PCI Gigabit Ethernet Adapter
+ * Version:    $Revision: 1.1.1.1 $
+ * Date:       $Date: 2009/03/25 22:22:09 $
+ * Purpose:    Interface with the driver
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ *     (C)Copyright 1998-2002 SysKonnect GmbH.
+ *
+ *     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.
+ *
+ *     The information in this file is provided "AS IS" without warranty.
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ * History:
+ *
+ *     $Log: skgedrv.h,v $
+ *     Revision 1.1.1.1  2009/03/25 22:22:09  kenagy
+ *     no message
+ *     
+ *     Revision 1.6  2002/07/15 15:38:01  rschmidt
+ *     Power Management support
+ *     Editorial changes
+ *
+ *     Revision 1.5  2002/04/25 11:05:47  rschmidt
+ *     Editorial changes
+ *
+ *     Revision 1.4  1999/11/22 13:52:46  cgoos
+ *     Changed license header to GPL.
+ *
+ *     Revision 1.3  1998/12/01 13:31:39  cgoos
+ *     SWITCH INTERN Event added.
+ *
+ *     Revision 1.2  1998/11/25 08:28:38  gklug
+ *     rmv: PORT SWITCH Event
+ *
+ *     Revision 1.1  1998/09/29 06:14:07  gklug
+ *     add: driver events (initial version)
+ *
+ *
+ ******************************************************************************/
+
+#ifndef __INC_SKGEDRV_H_
+#define __INC_SKGEDRV_H_
+
+/* defines ********************************************************************/
+
+/*
+ * Define the driver events.
+ * Usually the events are defined by the destination module.
+ * In case of the driver we put the definition of the events here.
+ */
+#define SK_DRV_PORT_RESET       1      /* The port needs to be reset */
+#define SK_DRV_NET_UP           2      /* The net is operational */
+#define SK_DRV_NET_DOWN                 3      /* The net is down */
+#define SK_DRV_SWITCH_SOFT      4      /* Ports switch with both links connected */
+#define SK_DRV_SWITCH_HARD      5      /* Port switch due to link failure */
+#define SK_DRV_RLMT_SEND        6      /* Send a RLMT packet */
+#define SK_DRV_ADAP_FAIL        7      /* The whole adapter fails */
+#define SK_DRV_PORT_FAIL        8      /* One port fails */
+#define SK_DRV_SWITCH_INTERN    9      /* Port switch by the driver itself */
+#define SK_DRV_POWER_DOWN      10      /* Power down mode */
+
+#endif /* __INC_SKGEDRV_H_ */
diff -Naur u-boot-2009.03_orig/drivers/net/sk98lin/h/skgehw.h u-boot-2009.03/drivers/net/sk98lin/h/skgehw.h
--- u-boot-2009.03_orig/drivers/net/sk98lin/h/skgehw.h  2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/drivers/net/sk98lin/h/skgehw.h       2009-03-31 14:54:45.784171200 -0700
@@ -1,2336 +1,2339 @@
-/******************************************************************************
- *
- * Name:       skgehw.h
- * Project:    GEnesis, PCI Gigabit Ethernet Adapter
- * Version:    $Revision: 1.49 $
- * Date:       $Date: 2003/01/28 09:43:49 $
- * Purpose:    Defines and Macros for the Gigabit Ethernet Adapter Product Family
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- *     (C)Copyright 1998-2003 SysKonnect GmbH.
- *
- *     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.
- *
- *     The information in this file is provided "AS IS" without warranty.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * History:
- * $Log: skgehw.h,v $
- * Revision 1.49  2003/01/28 09:43:49  rschmidt
- * Added defines for PCI-Spec. 2.3 IRQ
- * Added defines for CLK_RUN (YUKON-Lite)
- * Editorial changes
- *
- * Revision 1.48  2002/12/05 10:25:11  rschmidt
- * Added defines for Half Duplex Burst Mode On/Off
- * Added defines for Rx GMAC FIFO Flush feature
- * Editorial changes
- *
- * Revision 1.47  2002/11/12 17:01:31  rschmidt
- * Added defines for WOL_CTL_DEFAULT
- * Editorial changes
- *
- * Revision 1.46  2002/10/14 14:47:57  rschmidt
- * Corrected bit mask for HW self test results
- * Added defines for WOL Registers
- * Editorial changes
- *
- * Revision 1.45  2002/10/11 09:25:22  mkarl
- * Added bit mask for HW self test results.
- *
- * Revision 1.44  2002/08/16 14:44:36  rschmidt
- * Added define GPC_HWCFG_GMII_FIB for YUKON Fiber
- *
- * Revision 1.43  2002/08/12 13:31:50  rschmidt
- * Corrected macros for GMAC Address Registers: GM_INADDR(),
- * GM_OUTADDR(), GM_INHASH, GM_OUTHASH.
- * Editorial changes
- *
- * Revision 1.42  2002/08/08 15:37:56  rschmidt
- * Added defines for Power Management Capabilities
- * Editorial changes
- *
- * Revision 1.41  2002/07/23 16:02:25  rschmidt
- * Added macro WOL_REG() to access WOL reg. (HW-Bug in YUKON 1st rev.)
- *
- * Revision 1.40  2002/07/15 15:41:37  rschmidt
- * Added new defines for Power Management Cap. & Control
- * Editorial changes
- *
- * Revision 1.39  2002/06/10 09:37:07  rschmidt
- * Added macros for the ADDR-Modul
- *
- * Revision 1.38  2002/06/05 08:15:19  rschmidt
- * Added defines for WOL Registers
- * Editorial changes
- *
- * Revision 1.37  2002/04/25 11:39:23  rschmidt
- * Added new defines for PCI Our Register 1
- * Added new registers and defines for YUKON (Rx FIFO, Tx FIFO,
- * Time Stamp Timer, GMAC Control, GPHY Control,Link Control,
- * GMAC IRQ Source and Mask, Wake-up Frame Pattern Match);
- * Added new defines for Control/Status (VAUX available)
- * Added Chip ID for YUKON
- * Added define for descriptors with UDP ext. for YUKON
- * Added macros to access the GMAC
- * Added new Phy Type for Marvell 88E1011S (GPHY)
- * Editorial changes
- *
- * Revision 1.36  2000/11/09 12:32:49  rassmann
- * Renamed variables.
- *
- * Revision 1.35  2000/05/19 10:17:13  cgoos
- * Added inactivity check in PHY_READ (in DEBUG mode only).
- *
- * Revision 1.34  1999/11/22 13:53:40  cgoos
- * Changed license header to GPL.
- *
- * Revision 1.33  1999/08/27 11:17:10  malthoff
- * It's more savely to put brackets around macro parameters.
- * Brackets added for PHY_READ and PHY_WRITE.
- *
- * Revision 1.32  1999/05/19 07:31:01  cgoos
- * Changes for 1000Base-T.
- * Added HWAC_LINK_LED macro.
- *
- * Revision 1.31  1999/03/12 13:27:40  malthoff
- * Remove __STDC__.
- *
- * Revision 1.30  1999/02/09 09:28:20  malthoff
- * Add PCI_ERRBITS.
- *
- * Revision 1.29  1999/01/26 08:55:48  malthoff
- * Bugfix: The 16 bit field relations inside the descriptor are
- *     endianess dependend if the descriptor reversal feature
- *     (PCI_REV_DESC bit in PCI_OUR_REG_2) is enabled.
- *     Drivers which use this feature has to set the define
- *     SK_USE_REV_DESC.
- *
- * Revision 1.28  1998/12/10 11:10:22  malthoff
- * bug fix: IS_IRQ_STAT and IS_IRQ_MST_ERR has been twisted.
- *
- * Revision 1.27  1998/11/13 14:19:21  malthoff
- * Bug Fix: The bit definition of B3_PA_CTRL has completely
- * changed from HW Spec v1.3 to v1.5.
- *
- * Revision 1.26  1998/11/04 08:31:48  cgoos
- * Fixed byte ordering in XM_OUTADDR/XM_OUTHASH macros.
- *
- * Revision 1.25  1998/11/04 07:16:25  cgoos
- * Changed byte ordering in XM_INADDR/XM_INHASH again.
- *
- * Revision 1.24  1998/11/02 11:08:43  malthoff
- * RxCtrl and TxCtrl must be volatile.
- *
- * Revision 1.23  1998/10/28 13:50:45  malthoff
- * Fix: Endian support missing in XM_IN/OUT-ADDR/HASH macros.
- *
- * Revision 1.22  1998/10/26 08:01:36  malthoff
- * RX_MFF_CTRL1 is split up into RX_MFF_CTRL1,
- * RX_MFF_STAT_TO, and RX_MFF_TIST_TO.
- * TX_MFF_CTRL1 is split up TX_MFF_CTRL1 and TX_MFF_WAF.
- *
- * Revision 1.21  1998/10/20 07:43:10  malthoff
- * Fix: XM_IN/OUT/ADDR/HASH macros:
- * The pointer must be casted.
- *
- * Revision 1.20  1998/10/19 15:53:59  malthoff
- * Remove ML proto definitions.
- *
- * Revision 1.19  1998/10/16 14:40:17  gklug
- * fix: typo B0_XM_IMSK regs
- *
- * Revision 1.18  1998/10/16 09:46:54  malthoff
- * Remove temp defines for ML diag prototype.
- * Fix register definition for B0_XM1_PHY_DATA, B0_XM1_PHY_DATA
- * B0_XM2_PHY_DATA, B0_XM2_PHY_ADDR, B0_XA1_CSR, B0_XS1_CSR,
- * B0_XS2_CSR, and B0_XA2_CSR.
- *
- * Revision 1.17  1998/10/14 06:03:14  cgoos
- * Changed shifted constant to ULONG.
- *
- * Revision 1.16  1998/10/09 07:05:41  malthoff
- * Rename ALL_PA_ENA_TO to PA_ENA_TO_ALL.
- *
- * Revision 1.15  1998/10/05 07:54:23  malthoff
- * Split up RB_CTRL and it's bit definition into
- * RB_CTRL, RB_TST1, and RB_TST2.
- * Rename RB_RX_HTPP to RB_RX_LTPP.
- * Add ALL_PA_ENA_TO. Modify F_WATER_MARK
- * according to HW Spec. v1.5.
- * Add MFF_TX_CTRL_DEF.
- *
- * Revision 1.14  1998/09/28 13:31:16  malthoff
- * bug fix: B2_MAC_3 is 0x110 not 0x114
- *
- * Revision 1.13  1998/09/24 14:42:56  malthoff
- * Split the RX_MFF_TST into RX_MFF_CTRL2,
- * RX_MFF_TST1, and RX_MFF_TST2.
- * Rename RX_MFF_CTRL to RX_MFF_CTRL1.
- * Add BMU bit CSR_SV_IDLE.
- * Add macros PHY_READ() and PHY_WRITE().
- * Rename macro SK_ADDR() to SK_HW_ADDR()
- * because of conflicts with the Address Module.
- *
- * Revision 1.12  1998/09/16 07:25:33  malthoff
- * Change the parameter order in the XM_INxx and XM_OUTxx macros,
- * to have the IoC as first parameter.
- *
- * Revision 1.11  1998/09/03 09:58:41  malthoff
- * Rework the XM_xxx macros. Use {} instead of () to
- * be compatible with SK_xxx macros which are defined
- * with {}.
- *
- * Revision 1.10  1998/09/02 11:16:39  malthoff
- * Temporary modify B2_I2C_SW to make tests with
- * the GE/ML prototype.
- *
- * Revision 1.9  1998/08/19 09:11:49  gklug
- * fix: struct are removed from c-source (see CCC)
- * add: typedefs for all structs
- *
- * Revision 1.8  1998/08/18 08:27:27  malthoff
- * Add some temporary workarounds to test GE
- * sources with the ML.
- *
- * Revision 1.7  1998/07/03 14:42:26  malthoff
- * bug fix: Correct macro XMA().
- * Add temporary workaround to access the PCI config space over I/O
- *
- * Revision 1.6  1998/06/23 11:30:36  malthoff
- * Remove ';' with ',' in macors.
- *
- * Revision 1.5  1998/06/22 14:20:57  malthoff
- * Add macro SK_ADDR(Base,Addr).
- *
- * Revision 1.4  1998/06/19 13:35:43  malthoff
- * change 'pGec' with 'pAC'
- *
- * Revision 1.3  1998/06/17 14:58:16  cvs
- * Lost keywords reinserted.
- *
- * Revision 1.1  1998/06/17 14:16:36  cvs
- * created
- *
- *
- ******************************************************************************/
-
-#ifndef __INC_SKGEHW_H
-#define __INC_SKGEHW_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/* defines ********************************************************************/
-
-#define BIT_31         (1UL << 31)
-#define BIT_30         (1L << 30)
-#define BIT_29         (1L << 29)
-#define BIT_28         (1L << 28)
-#define BIT_27         (1L << 27)
-#define BIT_26         (1L << 26)
-#define BIT_25         (1L << 25)
-#define BIT_24         (1L << 24)
-#define BIT_23         (1L << 23)
-#define BIT_22         (1L << 22)
-#define BIT_21         (1L << 21)
-#define BIT_20         (1L << 20)
-#define BIT_19         (1L << 19)
-#define BIT_18         (1L << 18)
-#define BIT_17         (1L << 17)
-#define BIT_16         (1L << 16)
-#define BIT_15         (1L << 15)
-#define BIT_14         (1L << 14)
-#define BIT_13         (1L << 13)
-#define BIT_12         (1L << 12)
-#define BIT_11         (1L << 11)
-#define BIT_10         (1L << 10)
-#define BIT_9          (1L << 9)
-#define BIT_8          (1L << 8)
-#define BIT_7          (1L << 7)
-#define BIT_6          (1L << 6)
-#define BIT_5          (1L << 5)
-#define BIT_4          (1L << 4)
-#define BIT_3          (1L << 3)
-#define BIT_2          (1L << 2)
-#define BIT_1          (1L << 1)
-#define BIT_0          1L
-
-#define BIT_15S                (1U << 15)
-#define BIT_14S                (1 << 14)
-#define BIT_13S                (1 << 13)
-#define BIT_12S                (1 << 12)
-#define BIT_11S                (1 << 11)
-#define BIT_10S                (1 << 10)
-#define BIT_9S         (1 << 9)
-#define BIT_8S         (1 << 8)
-#define BIT_7S         (1 << 7)
-#define BIT_6S         (1 << 6)
-#define BIT_5S         (1 << 5)
-#define BIT_4S         (1 << 4)
-#define BIT_3S         (1 << 3)
-#define BIT_2S         (1 << 2)
-#define BIT_1S         (1 << 1)
-#define BIT_0S         1
-
-#define SHIFT31(x)     ((x) << 31)
-#define SHIFT30(x)     ((x) << 30)
-#define SHIFT29(x)     ((x) << 29)
-#define SHIFT28(x)     ((x) << 28)
-#define SHIFT27(x)     ((x) << 27)
-#define SHIFT26(x)     ((x) << 26)
-#define SHIFT25(x)     ((x) << 25)
-#define SHIFT24(x)     ((x) << 24)
-#define SHIFT23(x)     ((x) << 23)
-#define SHIFT22(x)     ((x) << 22)
-#define SHIFT21(x)     ((x) << 21)
-#define SHIFT20(x)     ((x) << 20)
-#define SHIFT19(x)     ((x) << 19)
-#define SHIFT18(x)     ((x) << 18)
-#define SHIFT17(x)     ((x) << 17)
-#define SHIFT16(x)     ((x) << 16)
-#define SHIFT15(x)     ((x) << 15)
-#define SHIFT14(x)     ((x) << 14)
-#define SHIFT13(x)     ((x) << 13)
-#define SHIFT12(x)     ((x) << 12)
-#define SHIFT11(x)     ((x) << 11)
-#define SHIFT10(x)     ((x) << 10)
-#define SHIFT9(x)      ((x) << 9)
-#define SHIFT8(x)      ((x) << 8)
-#define SHIFT7(x)      ((x) << 7)
-#define SHIFT6(x)      ((x) << 6)
-#define SHIFT5(x)      ((x) << 5)
-#define SHIFT4(x)      ((x) << 4)
-#define SHIFT3(x)      ((x) << 3)
-#define SHIFT2(x)      ((x) << 2)
-#define SHIFT1(x)      ((x) << 1)
-#define SHIFT0(x)      ((x) << 0)
-
-/*
- * Configuration Space header
- * Since this module is used for different OS', those may be
- * duplicate on some of them (e.g. Linux). But to keep the
- * common source, we have to live with this...
- */
-#define PCI_VENDOR_ID  0x00    /* 16 bit       Vendor ID */
-#define PCI_DEVICE_ID  0x02    /* 16 bit       Device ID */
-#define PCI_COMMAND            0x04    /* 16 bit       Command */
-#define PCI_STATUS             0x06    /* 16 bit       Status */
-#define PCI_REV_ID             0x08    /*  8 bit       Revision ID */
-#if 0
-#define PCI_CLASS_CODE 0x09    /* 24 bit       Class Code */
-#endif
-#define PCI_CACHE_LSZ  0x0c    /*  8 bit       Cache Line Size */
-#define PCI_LAT_TIM            0x0d    /*  8 bit       Latency Timer */
-#define PCI_HEADER_T   0x0e    /*  8 bit       Header Type */
-#define PCI_BIST               0x0f    /*  8 bit       Built-in selftest */
-#define PCI_BASE_1ST   0x10    /* 32 bit       1st Base address */
-#define PCI_BASE_2ND   0x14    /* 32 bit       2nd Base address */
-       /* Byte 0x18..0x2b:     reserved */
-#define PCI_SUB_VID            0x2c    /* 16 bit       Subsystem Vendor ID */
-#define PCI_SUB_ID             0x2e    /* 16 bit       Subsystem ID */
-#define PCI_BASE_ROM   0x30    /* 32 bit       Expansion ROM Base Address */
-#define PCI_CAP_PTR            0x34    /*  8 bit       Capabilities Ptr */
-       /* Byte 35..3b: reserved */
-#define PCI_IRQ_LINE   0x3c    /*  8 bit       Interrupt Line */
-#define PCI_IRQ_PIN            0x3d    /*  8 bit       Interrupt Pin */
-#define PCI_MIN_GNT            0x3e    /*  8 bit       Min_Gnt */
-#define PCI_MAX_LAT            0x3f    /*  8 bit       Max_Lat */
-       /* Device Dependent Region */
-#define PCI_OUR_REG_1  0x40    /* 32 bit       Our Register 1 */
-#define PCI_OUR_REG_2  0x44    /* 32 bit       Our Register 2 */
-       /* Power Management Region */
-#define PCI_PM_CAP_ID  0x48    /*  8 bit       Power Management Cap. ID */
-#define PCI_PM_NITEM   0x49    /*  8 bit       Next Item Ptr */
-#define PCI_PM_CAP_REG 0x4a    /* 16 bit       Power Management Capabilities */
-#define PCI_PM_CTL_STS 0x4c    /* 16 bit       Power Manag. Control/Status */
-       /* Byte 0x4e:   reserved */
-#define PCI_PM_DAT_REG 0x4f    /*  8 bit       Power Manag. Data Register */
-       /* VPD Region */
-#define PCI_VPD_CAP_ID 0x50    /*  8 bit       VPD Cap. ID */
-#define PCI_VPD_NITEM  0x51    /*  8 bit       Next Item Ptr */
-#define PCI_VPD_ADR_REG        0x52    /* 16 bit       VPD Address Register */
-#define PCI_VPD_DAT_REG        0x54    /* 32 bit       VPD Data Register */
-       /* Byte 0x58..0xff:     reserved */
-
-/*
- * I2C Address (PCI Config)
- *
- * Note: The temperature and voltage sensors are relocated on a different
- *      I2C bus.
- */
-#define I2C_ADDR_VPD   0xA0    /* I2C address for the VPD EEPROM */
-
-/*
- * Define Bits and Values of the registers
- */
-/*     PCI_COMMAND     16 bit  Command */
-                                                               /* Bit 15..11:  reserved */
-#define PCI_INT_DIS            BIT_10S         /* Interrupt INTx# disable (PCI 2.3) */
-#define PCI_FBTEN              BIT_9S          /* Fast Back-To-Back enable */
-#define PCI_SERREN             BIT_8S          /* SERR enable */
-#define PCI_ADSTEP             BIT_7S          /* Address Stepping */
-#define PCI_PERREN             BIT_6S          /* Parity Report Response enable */
-#define PCI_VGA_SNOOP  BIT_5S          /* VGA palette snoop */
-#define PCI_MWIEN              BIT_4S          /* Memory write an inv cycl ena */
-#define PCI_SCYCEN             BIT_3S          /* Special Cycle enable */
-#define PCI_BMEN               BIT_2S          /* Bus Master enable */
-#define PCI_MEMEN              BIT_1S          /* Memory Space Access enable */
-#define PCI_IOEN               BIT_0S          /* I/O Space Access enable */
-
-#define PCI_COMMAND_VAL        (PCI_FBTEN | PCI_SERREN | PCI_PERREN | PCI_MWIEN |\
-                                                PCI_BMEN | PCI_MEMEN | PCI_IOEN)
-
-/*     PCI_STATUS      16 bit  Status */
-#define PCI_PERR               BIT_15S         /* Parity Error */
-#define PCI_SERR               BIT_14S         /* Signaled SERR */
-#define PCI_RMABORT            BIT_13S         /* Received Master Abort */
-#define PCI_RTABORT            BIT_12S         /* Received Target Abort */
-                                                               /* Bit 11:      reserved */
-#define PCI_DEVSEL             (3<<9)          /* Bit 10.. 9:  DEVSEL Timing */
-#define PCI_DEV_FAST   (0<<9)          /*              fast */
-#define PCI_DEV_MEDIUM (1<<9)          /*              medium */
-#define PCI_DEV_SLOW   (2<<9)          /*              slow */
-#define PCI_DATAPERR   BIT_8S          /* DATA Parity error detected */
-#define PCI_FB2BCAP            BIT_7S          /* Fast Back-to-Back Capability */
-#define PCI_UDF                        BIT_6S          /* User Defined Features */
-#define PCI_66MHZCAP   BIT_5S          /* 66 MHz PCI bus clock capable */
-#define PCI_NEWCAP             BIT_4S          /* New cap. list implemented */
-#define PCI_INT_STAT   BIT_3S          /* Interrupt INTx# Status (PCI 2.3) */
-                                                               /* Bit  2.. 0:  reserved */
-
-#define PCI_ERRBITS    (PCI_PERR | PCI_SERR | PCI_RMABORT | PCI_RTABORT |\
-                       PCI_DATAPERR)
-
-/*     PCI_CLASS_CODE  24 bit  Class Code */
-/*     Byte 2:         Base Class              (02) */
-/*     Byte 1:         SubClass                (00) */
-/*     Byte 0:         Programming Interface   (00) */
-
-/*     PCI_CACHE_LSZ   8 bit   Cache Line Size */
-/*     Possible values: 0,2,4,8,16,32,64,128   */
-
-/*     PCI_HEADER_T    8 bit   Header Type */
-#define PCI_HD_MF_DEV  BIT_7S  /* 0= single, 1= multi-func dev */
-#define PCI_HD_TYPE            0x7f    /* Bit 6..0:    Header Layout 0= normal */
-
-/*     PCI_BIST        8 bit   Built-in selftest */
-/*     Built-in Self test not supported (optional) */
-
-/*     PCI_BASE_1ST    32 bit  1st Base address */
-#define PCI_MEMSIZE            0x4000L         /* use 16 kB Memory Base */
-#define PCI_MEMBASE_MSK 0xffffc000L    /* Bit 31..14:  Memory Base Address */
-#define PCI_MEMSIZE_MSK 0x00003ff0L    /* Bit 13.. 4:  Memory Size Req. */
-#define PCI_PREFEN             BIT_3           /* Prefetchable */
-#define PCI_MEM_TYP            (3L<<2)         /* Bit  2.. 1:  Memory Type */
-#define PCI_MEM32BIT   (0L<<1)         /* Base addr anywhere in 32 Bit range */
-#define PCI_MEM1M              (1L<<1)         /* Base addr below 1 MegaByte */
-#define PCI_MEM64BIT   (2L<<1)         /* Base addr anywhere in 64 Bit range */
-#define PCI_MEMSPACE   BIT_0           /* Memory Space Indic. */
-
-/*     PCI_BASE_2ND    32 bit  2nd Base address */
-#define PCI_IOBASE             0xffffff00L     /* Bit 31.. 8:  I/O Base address */
-#define PCI_IOSIZE             0x000000fcL     /* Bit  7.. 2:  I/O Size Requirements */
-                                                                       /* Bit  1:      reserved */
-#define PCI_IOSPACE            BIT_0           /* I/O Space Indicator */
-
-/*     PCI_BASE_ROM    32 bit  Expansion ROM Base Address */
-#define PCI_ROMBASE            0xfffe0000L     /* Bit 31..17:  ROM BASE address (1st)*/
-#define PCI_ROMBASZ            (0x1cL<<14)     /* Bit 16..14:  Treat as BASE or SIZE */
-#define PCI_ROMSIZE            (0x38L<<11)     /* Bit 13..11:  ROM Size Requirements */
-                                                                       /* Bit 10.. 1:  reserved */
-#define PCI_ROMEN              BIT_0           /* Address Decode enable */
-
-/* Device Dependent Region */
-/*     PCI_OUR_REG_1           32 bit  Our Register 1 */
-                                                                       /* Bit 31..29:  reserved */
-#define PCI_PHY_COMA   BIT_28          /* Set PHY to Coma Mode */
-#define PCI_EN_CAL             BIT_27          /* Enable  PCI buffer strength calibr. */
-#define PCI_DIS_CAL            BIT_26          /* Disable PCI buffer strength calibr. */
-#define PCI_VIO                        BIT_25          /* PCI I/O Voltage, 0 = 3.3V, 1 = 5V */
-#define PCI_DIS_BOOT   BIT_24          /* Disable BOOT via ROM */
-#define PCI_EN_IO              BIT_23          /* Mapping to I/O space */
-#define PCI_EN_FPROM   BIT_22          /* Enable FLASH mapping to memory */
-                                                                       /*              1 = Map Flash to memory */
-                                                                       /*              0 = Disable addr. dec */
-#define PCI_PAGESIZE   (3L<<20)        /* Bit 21..20:  FLASH Page Size */
-#define PCI_PAGE_16            (0L<<20)        /*              16 k pages      */
-#define PCI_PAGE_32K   (1L<<20)        /*              32 k pages      */
-#define PCI_PAGE_64K   (2L<<20)        /*              64 k pages      */
-#define PCI_PAGE_128K  (3L<<20)        /*              128 k pages     */
-                                                                       /* Bit 19:      reserved        */
-#define PCI_PAGEREG            (7L<<16)        /* Bit 18..16:  Page Register   */
-#define PCI_NOTAR              BIT_15          /* No turnaround cycle */
-#define PCI_FORCE_BE   BIT_14          /* Assert all BEs on MR */
-#define PCI_DIS_MRL            BIT_13          /* Disable Mem Read Line */
-#define PCI_DIS_MRM            BIT_12          /* Disable Mem Read Multiple */
-#define PCI_DIS_MWI            BIT_11          /* Disable Mem Write & Invalidate */
-#define PCI_DISC_CLS   BIT_10          /* Disc: cacheLsz bound */
-#define PCI_BURST_DIS  BIT_9           /* Burst Disable */
-#define PCI_DIS_PCI_CLK        BIT_8           /* Disable PCI clock driving */
-#define PCI_SKEW_DAS   (0xfL<<4)       /* Bit  7.. 4:  Skew Ctrl, DAS Ext */
-#define PCI_SKEW_BASE  0xfL            /* Bit  3.. 0:  Skew Ctrl, Base */
-
-
-/*     PCI_OUR_REG_2           32 bit  Our Register 2 */
-#define PCI_VPD_WR_THR (0xffL<<24)     /* Bit 31..24:  VPD Write Threshold */
-#define PCI_DEV_SEL            (0x7fL<<17)     /* Bit 23..17:  EEPROM Device Select */
-#define PCI_VPD_ROM_SZ (7L<<14)        /* Bit 16..14:  VPD ROM Size    */
-                                                                       /* Bit 13..12:  reserved        */
-#define PCI_PATCH_DIR  (0xfL<<8)       /* Bit 11.. 8:  Ext Patches dir 3..0 */
-#define PCI_PATCH_DIR_3        BIT_11
-#define PCI_PATCH_DIR_2        BIT_10
-#define PCI_PATCH_DIR_1        BIT_9
-#define PCI_PATCH_DIR_0        BIT_8
-#define PCI_EXT_PATCHS (0xfL<<4)       /* Bit  7.. 4:  Extended Patches 3..0 */
-#define PCI_EXT_PATCH_3        BIT_7
-#define PCI_EXT_PATCH_2        BIT_6
-#define PCI_EXT_PATCH_1        BIT_5
-#define PCI_EXT_PATCH_0        BIT_4
-#define PCI_EN_DUMMY_RD        BIT_3           /* Enable Dummy Read */
-#define PCI_REV_DESC   BIT_2           /* Reverse Desc. Bytes */
-                                                                       /* Bit  1:      reserved */
-#define PCI_USEDATA64  BIT_0           /* Use 64Bit Data bus ext */
-
-
-/* Power Management Region */
-/*     PCI_PM_CAP_REG          16 bit  Power Management Capabilities */
-#define PCI_PME_SUP_MSK        (0x1f<<11)      /* Bit 15..11:  PM Event Support Mask */
-#define PCI_PME_D3C_SUP        BIT_15S         /* PME from D3cold Support (if Vaux) */
-#define PCI_PME_D3H_SUP        BIT_14S         /* PME from D3hot Support */
-#define PCI_PME_D2_SUP BIT_13S         /* PME from D2 Support */
-#define PCI_PME_D1_SUP BIT_12S         /* PME from D1 Support */
-#define PCI_PME_D0_SUP BIT_11S         /* PME from D0 Support */
-#define PCI_PM_D2_SUP  BIT_10S         /* D2 Support in 33 MHz mode */
-#define PCI_PM_D1_SUP  BIT_9S          /* D1 Support */
-                                                                       /* Bit  8.. 6:  reserved */
-#define PCI_PM_DSI             BIT_5S          /* Device Specific Initialization */
-#define PCI_PM_APS             BIT_4S          /* Auxialiary Power Source */
-#define PCI_PME_CLOCK  BIT_3S          /* PM Event Clock */
-#define PCI_PM_VER_MSK         7               /* Bit  2.. 0:  PM PCI Spec. version */
-
-/*     PCI_PM_CTL_STS          16 bit  Power Management Control/Status */
-#define PCI_PME_STATUS BIT_15S         /* PME Status (YUKON only) */
-#define PCI_PM_DAT_SCL (3<<13)         /* Bit 14..13:  Data Reg. scaling factor */
-#define PCI_PM_DAT_SEL (0xf<<9)        /* Bit 12.. 9:  PM data selector field */
-#define PCI_PME_EN             BIT_8S          /* Enable PME# generation (YUKON only) */
-                                                                       /* Bit  7.. 2:  reserved */
-#define PCI_PM_STATE_MSK       3               /* Bit  1.. 0:  Power Management State */
-
-#define PCI_PM_STATE_D0                0                /* D0:  Operational (default) */
-#define PCI_PM_STATE_D1                1               /* D1:  (YUKON only) */
-#define PCI_PM_STATE_D2                2               /* D2:  (YUKON only) */
-#define PCI_PM_STATE_D3                3               /* D3:  HOT, Power Down and Reset */
-
-/* VPD Region */
-/*     PCI_VPD_ADR_REG         16 bit  VPD Address Register */
-#define PCI_VPD_FLAG   BIT_15S         /* starts VPD rd/wr cycle */
-#define PCI_VPD_ADR_MSK        0x7fffL         /* Bit 14.. 0:  VPD address mask */
-
-/*     Control Register File (Address Map) */
-
-/*
- *     Bank 0
- */
-#define B0_RAP                 0x0000  /*  8 bit       Register Address Port */
-       /* 0x0001 - 0x0003:     reserved */
-#define B0_CTST                        0x0004  /* 16 bit       Control/Status register */
-#define B0_LED                 0x0006  /*  8 Bit       LED register */
-#define B0_POWER_CTRL  0x0007  /*  8 Bit       Power Control reg (YUKON only) */
-#define B0_ISRC                        0x0008  /* 32 bit       Interrupt Source Register */
-#define B0_IMSK                        0x000c  /* 32 bit       Interrupt Mask Register */
-#define B0_HWE_ISRC            0x0010  /* 32 bit       HW Error Interrupt Src Reg */
-#define B0_HWE_IMSK            0x0014  /* 32 bit       HW Error Interrupt Mask Reg */
-#define B0_SP_ISRC             0x0018  /* 32 bit       Special Interrupt Source Reg */
-       /* 0x001c:              reserved */
-
-/* B0 XMAC 1 registers (GENESIS only) */
-#define B0_XM1_IMSK            0x0020  /* 16 bit r/w   XMAC 1 Interrupt Mask Register*/
-       /* 0x0022 - 0x0027:     reserved */
-#define B0_XM1_ISRC            0x0028  /* 16 bit ro    XMAC 1 Interrupt Status Reg */
-       /* 0x002a - 0x002f:     reserved */
-#define B0_XM1_PHY_ADDR 0x0030 /* 16 bit r/w   XMAC 1 PHY Address Register */
-       /* 0x0032 - 0x0033:     reserved */
-#define B0_XM1_PHY_DATA 0x0034 /* 16 bit r/w   XMAC 1 PHY Data Register */
-       /* 0x0036 - 0x003f:     reserved */
-
-/* B0 XMAC 2 registers (GENESIS only) */
-#define B0_XM2_IMSK            0x0040  /* 16 bit r/w   XMAC 2 Interrupt Mask Register*/
-       /* 0x0042 - 0x0047:     reserved */
-#define B0_XM2_ISRC            0x0048  /* 16 bit ro    XMAC 2 Interrupt Status Reg */
-       /* 0x004a - 0x004f:     reserved */
-#define B0_XM2_PHY_ADDR 0x0050 /* 16 bit r/w   XMAC 2 PHY Address Register */
-       /* 0x0052 - 0x0053:     reserved */
-#define B0_XM2_PHY_DATA 0x0054 /* 16 bit r/w   XMAC 2 PHY Data Register */
-       /* 0x0056 - 0x005f:     reserved */
-
-/* BMU Control Status Registers */
-#define B0_R1_CSR              0x0060  /* 32 bit       BMU Ctrl/Stat Rx Queue 1 */
-#define B0_R2_CSR              0x0064  /* 32 bit       BMU Ctrl/Stat Rx Queue 2 */
-#define B0_XS1_CSR             0x0068  /* 32 bit       BMU Ctrl/Stat Sync Tx Queue 1 */
-#define B0_XA1_CSR             0x006c  /* 32 bit       BMU Ctrl/Stat Async Tx Queue 1*/
-#define B0_XS2_CSR             0x0070  /* 32 bit       BMU Ctrl/Stat Sync Tx Queue 2 */
-#define B0_XA2_CSR             0x0074  /* 32 bit       BMU Ctrl/Stat Async Tx Queue 2*/
-       /* 0x0078 - 0x007f:     reserved */
-
-/*
- *     Bank 1
- *     - completely empty (this is the RAP Block window)
- *     Note: if RAP = 1 this page is reserved
- */
-
-/*
- *     Bank 2
- */
-/* NA reg = 48 bit Network Address Register, 3x16 or 8x8 bit readable */
-#define B2_MAC_1               0x0100  /* NA reg        MAC Address 1 */
-       /* 0x0106 - 0x0107:     reserved */
-#define B2_MAC_2               0x0108  /* NA reg        MAC Address 2 */
-       /* 0x010e - 0x010f:     reserved */
-#define B2_MAC_3               0x0110  /* NA reg        MAC Address 3 */
-       /* 0x0116 - 0x0117:     reserved */
-#define B2_CONN_TYP            0x0118  /*  8 bit       Connector type */
-#define B2_PMD_TYP             0x0119  /*  8 bit       PMD type */
-#define B2_MAC_CFG             0x011a  /*  8 bit       MAC Configuration / Chip Revision */
-#define B2_CHIP_ID             0x011b  /*  8 bit       Chip Identification Number */
-       /* Eprom registers are currently of no use */
-#define B2_E_0                 0x011c  /*  8 bit       EPROM Byte 0 (ext. SRAM size */
-#define B2_E_1                 0x011d  /*  8 bit       EPROM Byte 1 (PHY type) */
-#define B2_E_2                 0x011e  /*  8 bit       EPROM Byte 2 */
-#define B2_E_3                 0x011f  /*  8 bit       EPROM Byte 3 */
-#define B2_FAR                 0x0120  /* 32 bit       Flash-Prom Addr Reg/Cnt */
-#define B2_FDP                 0x0124  /*  8 bit       Flash-Prom Data Port */
-       /* 0x0125 - 0x0127:     reserved */
-#define B2_LD_CRTL             0x0128  /*  8 bit       EPROM loader control register */
-#define B2_LD_TEST             0x0129  /*  8 bit       EPROM loader test register */
-       /* 0x012a - 0x012f:     reserved */
-#define B2_TI_INI              0x0130  /* 32 bit       Timer Init Value */
-#define B2_TI_VAL              0x0134  /* 32 bit       Timer Value */
-#define B2_TI_CRTL             0x0138  /*  8 bit       Timer Control */
-#define B2_TI_TEST             0x0139  /*  8 Bit       Timer Test */
-       /* 0x013a - 0x013f:     reserved */
-#define B2_IRQM_INI            0x0140  /* 32 bit       IRQ Moderation Timer Init Reg.*/
-#define B2_IRQM_VAL            0x0144  /* 32 bit       IRQ Moderation Timer Value */
-#define B2_IRQM_CTRL   0x0148  /*  8 bit       IRQ Moderation Timer Control */
-#define B2_IRQM_TEST   0x0149  /*  8 bit       IRQ Moderation Timer Test */
-#define B2_IRQM_MSK    0x014c  /* 32 bit       IRQ Moderation Mask */
-#define B2_IRQM_HWE_MSK 0x0150 /* 32 bit       IRQ Moderation HW Error Mask */
-       /* 0x0154 - 0x0157:     reserved */
-#define B2_TST_CTRL1   0x0158  /*  8 bit       Test Control Register 1 */
-#define B2_TST_CTRL2   0x0159  /*  8 bit       Test Control Register 2 */
-       /* 0x015a - 0x015b:     reserved */
-#define B2_GP_IO               0x015c  /* 32 bit       General Purpose I/O Register */
-#define B2_I2C_CTRL            0x0160  /* 32 bit       I2C HW Control Register */
-#define B2_I2C_DATA            0x0164  /* 32 bit       I2C HW Data Register */
-#define B2_I2C_IRQ             0x0168  /* 32 bit       I2C HW IRQ Register */
-#define B2_I2C_SW              0x016c  /* 32 bit       I2C SW Port Register */
-
-/* Blink Source Counter (GENESIS only) */
-#define B2_BSC_INI             0x0170  /* 32 bit       Blink Source Counter Init Val */
-#define B2_BSC_VAL             0x0174  /* 32 bit       Blink Source Counter Value */
-#define B2_BSC_CTRL            0x0178  /*  8 bit       Blink Source Counter Control */
-#define B2_BSC_STAT            0x0179  /*  8 bit       Blink Source Counter Status */
-#define B2_BSC_TST             0x017a  /* 16 bit       Blink Source Counter Test Reg */
-       /* 0x017c - 0x017f:     reserved */
-
-/*
- *     Bank 3
- */
-/* RAM Random Registers */
-#define B3_RAM_ADDR            0x0180  /* 32 bit       RAM Address, to read or write */
-#define B3_RAM_DATA_LO 0x0184  /* 32 bit       RAM Data Word (low dWord) */
-#define B3_RAM_DATA_HI 0x0188  /* 32 bit       RAM Data Word (high dWord) */
-       /* 0x018c - 0x018f:     reserved */
-
-/* RAM Interface Registers */
-/*
- * The HW-Spec. calls this registers Timeout Value 0..11. But this names are
- * not usable in SW. Please notice these are NOT real timeouts, these are
- * the number of qWords transferred continuously.
- */
-#define B3_RI_WTO_R1   0x0190  /*  8 bit       WR Timeout Queue R1             (TO0) */
-#define B3_RI_WTO_XA1  0x0191  /*  8 bit       WR Timeout Queue XA1    (TO1) */
-#define B3_RI_WTO_XS1  0x0192  /*  8 bit       WR Timeout Queue XS1    (TO2) */
-#define B3_RI_RTO_R1   0x0193  /*  8 bit       RD Timeout Queue R1             (TO3) */
-#define B3_RI_RTO_XA1  0x0194  /*  8 bit       RD Timeout Queue XA1    (TO4) */
-#define B3_RI_RTO_XS1  0x0195  /*  8 bit       RD Timeout Queue XS1    (TO5) */
-#define B3_RI_WTO_R2   0x0196  /*  8 bit       WR Timeout Queue R2             (TO6) */
-#define B3_RI_WTO_XA2  0x0197  /*  8 bit       WR Timeout Queue XA2    (TO7) */
-#define B3_RI_WTO_XS2  0x0198  /*  8 bit       WR Timeout Queue XS2    (TO8) */
-#define B3_RI_RTO_R2   0x0199  /*  8 bit       RD Timeout Queue R2             (TO9) */
-#define B3_RI_RTO_XA2  0x019a  /*  8 bit       RD Timeout Queue XA2    (TO10)*/
-#define B3_RI_RTO_XS2  0x019b  /*  8 bit       RD Timeout Queue XS2    (TO11)*/
-#define B3_RI_TO_VAL   0x019c  /*  8 bit       Current Timeout Count Val */
-       /* 0x019d - 0x019f:     reserved */
-#define B3_RI_CTRL             0x01a0  /* 16 bit       RAM Interface Control Register */
-#define B3_RI_TEST             0x01a2  /*  8 bit       RAM Interface Test Register */
-       /* 0x01a3 - 0x01af:     reserved */
-
-/* MAC Arbiter Registers (GENESIS only) */
-/* these are the no. of qWord transferred continuously and NOT real timeouts */
-#define B3_MA_TOINI_RX1        0x01b0  /*  8 bit       Timeout Init Val Rx Path MAC 1 */
-#define B3_MA_TOINI_RX2        0x01b1  /*  8 bit       Timeout Init Val Rx Path MAC 2 */
-#define B3_MA_TOINI_TX1        0x01b2  /*  8 bit       Timeout Init Val Tx Path MAC 1 */
-#define B3_MA_TOINI_TX2        0x01b3  /*  8 bit       Timeout Init Val Tx Path MAC 2 */
-#define B3_MA_TOVAL_RX1        0x01b4  /*  8 bit       Timeout Value Rx Path MAC 1 */
-#define B3_MA_TOVAL_RX2        0x01b5  /*  8 bit       Timeout Value Rx Path MAC 1 */
-#define B3_MA_TOVAL_TX1        0x01b6  /*  8 bit       Timeout Value Tx Path MAC 2 */
-#define B3_MA_TOVAL_TX2        0x01b7  /*  8 bit       Timeout Value Tx Path MAC 2 */
-#define B3_MA_TO_CTRL  0x01b8  /* 16 bit       MAC Arbiter Timeout Ctrl Reg */
-#define B3_MA_TO_TEST  0x01ba  /* 16 bit       MAC Arbiter Timeout Test Reg */
-       /* 0x01bc - 0x01bf:     reserved */
-#define B3_MA_RCINI_RX1        0x01c0  /*  8 bit       Recovery Init Val Rx Path MAC 1 */
-#define B3_MA_RCINI_RX2        0x01c1  /*  8 bit       Recovery Init Val Rx Path MAC 2 */
-#define B3_MA_RCINI_TX1        0x01c2  /*  8 bit       Recovery Init Val Tx Path MAC 1 */
-#define B3_MA_RCINI_TX2        0x01c3  /*  8 bit       Recovery Init Val Tx Path MAC 2 */
-#define B3_MA_RCVAL_RX1        0x01c4  /*  8 bit       Recovery Value Rx Path MAC 1 */
-#define B3_MA_RCVAL_RX2        0x01c5  /*  8 bit       Recovery Value Rx Path MAC 1 */
-#define B3_MA_RCVAL_TX1        0x01c6  /*  8 bit       Recovery Value Tx Path MAC 2 */
-#define B3_MA_RCVAL_TX2        0x01c7  /*  8 bit       Recovery Value Tx Path MAC 2 */
-#define B3_MA_RC_CTRL  0x01c8  /* 16 bit       MAC Arbiter Recovery Ctrl Reg */
-#define B3_MA_RC_TEST  0x01ca  /* 16 bit       MAC Arbiter Recovery Test Reg */
-       /* 0x01cc - 0x01cf:     reserved */
-
-/* Packet Arbiter Registers (GENESIS only) */
-/* these are real timeouts */
-#define B3_PA_TOINI_RX1        0x01d0  /* 16 bit       Timeout Init Val Rx Path MAC 1 */
-       /* 0x01d2 - 0x01d3:     reserved */
-#define B3_PA_TOINI_RX2        0x01d4  /* 16 bit       Timeout Init Val Rx Path MAC 2 */
-       /* 0x01d6 - 0x01d7:     reserved */
-#define B3_PA_TOINI_TX1        0x01d8  /* 16 bit       Timeout Init Val Tx Path MAC 1 */
-       /* 0x01da - 0x01db:     reserved */
-#define B3_PA_TOINI_TX2        0x01dc  /* 16 bit       Timeout Init Val Tx Path MAC 2 */
-       /* 0x01de - 0x01df:     reserved */
-#define B3_PA_TOVAL_RX1        0x01e0  /* 16 bit       Timeout Val Rx Path MAC 1 */
-       /* 0x01e2 - 0x01e3:     reserved */
-#define B3_PA_TOVAL_RX2        0x01e4  /* 16 bit       Timeout Val Rx Path MAC 2 */
-       /* 0x01e6 - 0x01e7:     reserved */
-#define B3_PA_TOVAL_TX1        0x01e8  /* 16 bit       Timeout Val Tx Path MAC 1 */
-       /* 0x01ea - 0x01eb:     reserved */
-#define B3_PA_TOVAL_TX2        0x01ec  /* 16 bit       Timeout Val Tx Path MAC 2 */
-       /* 0x01ee - 0x01ef:     reserved */
-#define B3_PA_CTRL     0x01f0  /* 16 bit       Packet Arbiter Ctrl Register */
-#define B3_PA_TEST     0x01f2  /* 16 bit       Packet Arbiter Test Register */
-       /* 0x01f4 - 0x01ff:     reserved */
-
-/*
- *     Bank 4 - 5
- */
-/* Transmit Arbiter Registers MAC 1 and 2, use MR_ADDR() to access */
-#define TXA_ITI_INI            0x0200  /* 32 bit       Tx Arb Interval Timer Init Val*/
-#define TXA_ITI_VAL            0x0204  /* 32 bit       Tx Arb Interval Timer Value */
-#define TXA_LIM_INI            0x0208  /* 32 bit       Tx Arb Limit Counter Init Val */
-#define TXA_LIM_VAL            0x020c  /* 32 bit       Tx Arb Limit Counter Value */
-#define TXA_CTRL               0x0210  /*  8 bit       Tx Arbiter Control Register */
-#define TXA_TEST               0x0211  /*  8 bit       Tx Arbiter Test Register */
-#define TXA_STAT               0x0212  /*  8 bit       Tx Arbiter Status Register */
-       /* 0x0213 - 0x027f:     reserved */
-       /* 0x0280 - 0x0292:     MAC 2 */
-       /* 0x0213 - 0x027f:     reserved */
-
-/*
- *     Bank 6
- */
-/* External registers (GENESIS only) */
-#define B6_EXT_REG             0x0300
-
-/*
- *     Bank 7
- */
-/* This is a copy of the Configuration register file (lower half) */
-#define B7_CFG_SPC             0x0380
-
-/*
- *     Bank 8 - 15
- */
-/* Receive and Transmit Queue Registers, use Q_ADDR() to access */
-#define B8_Q_REGS              0x0400
-
-/* Queue Register Offsets, use Q_ADDR() to access */
-#define Q_D            0x00    /* 8*32 bit     Current Descriptor */
-#define Q_DA_L 0x20    /* 32 bit       Current Descriptor Address Low dWord */
-#define Q_DA_H 0x24    /* 32 bit       Current Descriptor Address High dWord */
-#define Q_AC_L 0x28    /* 32 bit       Current Address Counter Low dWord */
-#define Q_AC_H 0x2c    /* 32 bit       Current Address Counter High dWord */
-#define Q_BC   0x30    /* 32 bit       Current Byte Counter */
-#define Q_CSR  0x34    /* 32 bit       BMU Control/Status Register */
-#define Q_F            0x38    /* 32 bit       Flag Register */
-#define Q_T1   0x3c    /* 32 bit       Test Register 1 */
-#define Q_T1_TR        0x3c    /*  8 bit       Test Register 1 Transfer SM */
-#define Q_T1_WR        0x3d    /*  8 bit       Test Register 1 Write Descriptor SM */
-#define Q_T1_RD        0x3e    /*  8 bit       Test Register 1 Read Descriptor SM */
-#define Q_T1_SV        0x3f    /*  8 bit       Test Register 1 Supervisor SM */
-#define Q_T2   0x40    /* 32 bit       Test Register 2 */
-#define Q_T3   0x44    /* 32 bit       Test Register 3 */
-       /* 0x48 - 0x7f: reserved */
-
-/*
- *     Bank 16 - 23
- */
-/* RAM Buffer Registers */
-#define B16_RAM_REGS   0x0800
-
-/* RAM Buffer Register Offsets, use RB_ADDR() to access */
-#define RB_START               0x00    /* 32 bit       RAM Buffer Start Address */
-#define RB_END                 0x04    /* 32 bit       RAM Buffer End Address */
-#define RB_WP                  0x08    /* 32 bit       RAM Buffer Write Pointer */
-#define RB_RP                  0x0c    /* 32 bit       RAM Buffer Read Pointer */
-#define RB_RX_UTPP             0x10    /* 32 bit       Rx Upper Threshold, Pause Pack */
-#define RB_RX_LTPP             0x14    /* 32 bit       Rx Lower Threshold, Pause Pack */
-#define RB_RX_UTHP             0x18    /* 32 bit       Rx Upper Threshold, High Prio */
-#define RB_RX_LTHP             0x1c    /* 32 bit       Rx Lower Threshold, High Prio */
-       /* 0x10 - 0x1f: reserved at Tx RAM Buffer Registers */
-#define RB_PC                  0x20    /* 32 bit       RAM Buffer Packet Counter */
-#define RB_LEV                 0x24    /* 32 bit       RAM Buffer Level Register */
-#define RB_CTRL                        0x28    /*  8 bit       RAM Buffer Control Register */
-#define RB_TST1                        0x29    /*  8 bit       RAM Buffer Test Register 1 */
-#define RB_TST2                        0x2A    /*  8 bit       RAM Buffer Test Register 2 */
-       /* 0x2c - 0x7f: reserved */
-
-/*
- *     Bank 24
- */
-/*
- * Receive MAC FIFO, Receive LED, and Link_Sync regs (GENESIS only)
- * use MR_ADDR() to access
- */
-#define RX_MFF_EA              0x0c00  /* 32 bit       Receive MAC FIFO End Address */
-#define RX_MFF_WP              0x0c04  /* 32 bit       Receive MAC FIFO Write Pointer */
-       /* 0x0c08 - 0x0c0b:     reserved */
-#define RX_MFF_RP              0x0c0c  /* 32 bit       Receive MAC FIFO Read Pointer */
-#define RX_MFF_PC              0x0c10  /* 32 bit       Receive MAC FIFO Packet Cnt */
-#define RX_MFF_LEV             0x0c14  /* 32 bit       Receive MAC FIFO Level */
-#define RX_MFF_CTRL1   0x0c18  /* 16 bit       Receive MAC FIFO Control Reg 1*/
-#define RX_MFF_STAT_TO 0x0c1a  /*  8 bit       Receive MAC Status Timeout */
-#define RX_MFF_TIST_TO 0x0c1b  /*  8 bit       Receive MAC Time Stamp Timeout */
-#define RX_MFF_CTRL2   0x0c1c  /*  8 bit       Receive MAC FIFO Control Reg 2*/
-#define RX_MFF_TST1            0x0c1d  /*  8 bit       Receive MAC FIFO Test Reg 1 */
-#define RX_MFF_TST2            0x0c1e  /*  8 bit       Receive MAC FIFO Test Reg 2 */
-       /* 0x0c1f:      reserved */
-#define RX_LED_INI             0x0c20  /* 32 bit       Receive LED Cnt Init Value */
-#define RX_LED_VAL             0x0c24  /* 32 bit       Receive LED Cnt Current Value */
-#define RX_LED_CTRL            0x0c28  /*  8 bit       Receive LED Cnt Control Reg */
-#define RX_LED_TST             0x0c29  /*  8 bit       Receive LED Cnt Test Register */
-       /* 0x0c2a - 0x0c2f:     reserved */
-#define LNK_SYNC_INI   0x0c30  /* 32 bit       Link Sync Cnt Init Value */
-#define LNK_SYNC_VAL   0x0c34  /* 32 bit       Link Sync Cnt Current Value */
-#define LNK_SYNC_CTRL  0x0c38  /*  8 bit       Link Sync Cnt Control Register */
-#define LNK_SYNC_TST   0x0c39  /*  8 bit       Link Sync Cnt Test Register */
-       /* 0x0c3a - 0x0c3b:     reserved */
-#define LNK_LED_REG            0x0c3c  /*  8 bit       Link LED Register */
-       /* 0x0c3d - 0x0c3f:     reserved */
-
-/* Receive GMAC FIFO (YUKON only), use MR_ADDR() to access */
-#define RX_GMF_EA              0x0c40  /* 32 bit       Rx GMAC FIFO End Address */
-#define RX_GMF_AF_THR  0x0c44  /* 32 bit       Rx GMAC FIFO Almost Full Thresh. */
-#define RX_GMF_CTRL_T  0x0c48  /* 32 bit       Rx GMAC FIFO Control/Test */
-#define RX_GMF_FL_MSK  0x0c4c  /* 32 bit       Rx GMAC FIFO Flush Mask */
-#define RX_GMF_FL_THR  0x0c50  /* 32 bit       Rx GMAC FIFO Flush Threshold */
-       /* 0x0c54 - 0x0c5f:     reserved */
-#define RX_GMF_WP              0x0c60  /* 32 bit       Rx GMAC FIFO Write Pointer */
-       /* 0x0c64 - 0x0c67:     reserved */
-#define RX_GMF_WLEV            0x0c68  /* 32 bit       Rx GMAC FIFO Write Level */
-       /* 0x0c6c - 0x0c6f:     reserved */
-#define RX_GMF_RP              0x0c70  /* 32 bit       Rx GMAC FIFO Read Pointer */
-       /* 0x0c74 - 0x0c77:     reserved */
-#define RX_GMF_RLEV            0x0c78  /* 32 bit       Rx GMAC FIFO Read Level */
-       /* 0x0c7c - 0x0c7f:     reserved */
-
-/*
- *     Bank 25
- */
-       /* 0x0c80 - 0x0cbf:     MAC 2 */
-       /* 0x0cc0 - 0x0cff:     reserved */
-
-/*
- *     Bank 26
- */
-/*
- * Transmit MAC FIFO and Transmit LED Registers (GENESIS only),
- * use MR_ADDR() to access
- */
-#define TX_MFF_EA              0x0d00  /* 32 bit       Transmit MAC FIFO End Address */
-#define TX_MFF_WP              0x0d04  /* 32 bit       Transmit MAC FIFO WR Pointer */
-#define TX_MFF_WSP             0x0d08  /* 32 bit       Transmit MAC FIFO WR Shadow Ptr */
-#define TX_MFF_RP              0x0d0c  /* 32 bit       Transmit MAC FIFO RD Pointer */
-#define TX_MFF_PC              0x0d10  /* 32 bit       Transmit MAC FIFO Packet Cnt */
-#define TX_MFF_LEV             0x0d14  /* 32 bit       Transmit MAC FIFO Level */
-#define TX_MFF_CTRL1   0x0d18  /* 16 bit       Transmit MAC FIFO Ctrl Reg 1 */
-#define TX_MFF_WAF             0x0d1a  /*  8 bit       Transmit MAC Wait after flush */
-       /* 0x0c1b:      reserved */
-#define TX_MFF_CTRL2   0x0d1c  /*  8 bit       Transmit MAC FIFO Ctrl Reg 2 */
-#define TX_MFF_TST1            0x0d1d  /*  8 bit       Transmit MAC FIFO Test Reg 1 */
-#define TX_MFF_TST2            0x0d1e  /*  8 bit       Transmit MAC FIFO Test Reg 2 */
-       /* 0x0d1f:      reserved */
-#define TX_LED_INI             0x0d20  /* 32 bit       Transmit LED Cnt Init Value */
-#define TX_LED_VAL             0x0d24  /* 32 bit       Transmit LED Cnt Current Val */
-#define TX_LED_CTRL            0x0d28  /*  8 bit       Transmit LED Cnt Control Reg */
-#define TX_LED_TST             0x0d29  /*  8 bit       Transmit LED Cnt Test Reg */
-       /* 0x0d2a - 0x0d3f:     reserved */
-
-/* Transmit GMAC FIFO (YUKON only), use MR_ADDR() to access */
-#define TX_GMF_EA              0x0d40  /* 32 bit       Tx GMAC FIFO End Address */
-#define TX_GMF_AE_THR  0x0d44  /* 32 bit       Tx GMAC FIFO Almost Empty Thresh.*/
-#define TX_GMF_CTRL_T  0x0d48  /* 32 bit       Tx GMAC FIFO Control/Test */
-       /* 0x0d4c - 0x0d5f:     reserved */
-#define TX_GMF_WP              0x0d60  /* 32 bit       Tx GMAC FIFO Write Pointer */
-#define TX_GMF_WSP             0x0d64  /* 32 bit       Tx GMAC FIFO Write Shadow Ptr. */
-#define TX_GMF_WLEV            0x0d68  /* 32 bit       Tx GMAC FIFO Write Level */
-       /* 0x0d6c - 0x0d6f:     reserved */
-#define TX_GMF_RP              0x0d70  /* 32 bit       Tx GMAC FIFO Read Pointer */
-#define TX_GMF_RSTP            0x0d74  /* 32 bit       Tx GMAC FIFO Restart Pointer */
-#define TX_GMF_RLEV            0x0d78  /* 32 bit       Tx GMAC FIFO Read Level */
-       /* 0x0d7c - 0x0d7f:     reserved */
-
-/*
- *     Bank 27
- */
-       /* 0x0d80 - 0x0dbf:     MAC 2 */
-       /* 0x0daa - 0x0dff:     reserved */
-
-/*
- *     Bank 28
- */
-/* Descriptor Poll Timer Registers */
-#define B28_DPT_INI            0x0e00  /* 24 bit       Descriptor Poll Timer Init Val */
-#define B28_DPT_VAL            0x0e04  /* 24 bit       Descriptor Poll Timer Curr Val */
-#define B28_DPT_CTRL   0x0e08  /*  8 bit       Descriptor Poll Timer Ctrl Reg */
-       /* 0x0e09:      reserved */
-#define B28_DPT_TST            0x0e0a  /*  8 bit       Descriptor Poll Timer Test Reg */
-       /* 0x0e0b:      reserved */
-
-/* Time Stamp Timer Registers (YUKON only) */
-       /* 0x0e10:      reserved */
-#define GMAC_TI_ST_VAL 0x0e14  /* 32 bit       Time Stamp Timer Curr Val */
-#define GMAC_TI_ST_CTRL        0x0e18  /*  8 bit       Time Stamp Timer Ctrl Reg */
-       /* 0x0e19:      reserved */
-#define GMAC_TI_ST_TST 0x0e1a  /*  8 bit       Time Stamp Timer Test Reg */
-       /* 0x0e1b - 0x0e7f:     reserved */
-
-/*
- *     Bank 29
- */
-       /* 0x0e80 - 0x0efc:     reserved */
-
-/*
- *     Bank 30
- */
-/* GMAC and GPHY Control Registers (YUKON only) */
-#define GMAC_CTRL              0x0f00  /* 32 bit       GMAC Control Reg */
-#define GPHY_CTRL              0x0f04  /* 32 bit       GPHY Control Reg */
-#define GMAC_IRQ_SRC   0x0f08  /*  8 bit       GMAC Interrupt Source Reg */
-       /* 0x0f09 - 0x0f0b:     reserved */
-#define GMAC_IRQ_MSK   0x0f0c  /*  8 bit       GMAC Interrupt Mask Reg */
-       /* 0x0f0d - 0x0f0f:     reserved */
-#define GMAC_LINK_CTRL 0x0f10  /* 16 bit       Link Control Reg */
-       /* 0x0f14 - 0x0f1f:     reserved */
-
-/* Wake-up Frame Pattern Match Control Registers (YUKON only) */
-
-#define WOL_REG_OFFS   0x20    /* HW-Bug: Address is + 0x20 against spec. */
-
-#define WOL_CTRL_STAT  0x0f20  /* 16 bit       WOL Control/Status Reg */
-#define WOL_MATCH_CTL  0x0f22  /*  8 bit       WOL Match Control Reg */
-#define WOL_MATCH_RES  0x0f23  /*  8 bit       WOL Match Result Reg */
-#define WOL_MAC_ADDR_LO        0x0f24  /* 32 bit       WOL MAC Address Low */
-#define WOL_MAC_ADDR_HI        0x0f28  /* 16 bit       WOL MAC Address High */
-#define WOL_PATT_RPTR  0x0f2c  /*  8 bit       WOL Pattern Read Ptr */
-
-/* use this macro to access above registers */
-#define WOL_REG(Reg)   ((Reg) + (pAC->GIni.GIWolOffs))
-
-
-/* WOL Pattern Length Registers (YUKON only) */
-
-#define WOL_PATT_LEN_LO        0x0f30          /* 32 bit       WOL Pattern Length 3..0 */
-#define WOL_PATT_LEN_HI        0x0f34          /* 24 bit       WOL Pattern Length 6..4 */
-
-/* WOL Pattern Counter Registers (YUKON only) */
-
-#define WOL_PATT_CNT_0 0x0f38          /* 32 bit       WOL Pattern Counter 3..0 */
-#define WOL_PATT_CNT_4 0x0f3c          /* 24 bit       WOL Pattern Counter 6..4 */
-       /* 0x0f40 - 0x0f7f:     reserved */
-
-/*
- *     Bank 31
- */
-/* 0x0f80 - 0x0fff:    reserved */
-
-/*
- *     Bank 32 - 33
- */
-#define WOL_PATT_RAM_1 0x1000  /*  WOL Pattern RAM Link 1 */
-
-/*
- *     Bank 0x22 - 0x3f
- */
-/* 0x1100 - 0x1fff:    reserved */
-
-/*
- *     Bank 0x40 - 0x4f
- */
-#define BASE_XMAC_1            0x2000  /* XMAC 1 registers */
-
-/*
- *     Bank 0x50 - 0x5f
- */
-
-#define BASE_GMAC_1            0x2800  /* GMAC 1 registers */
-
-/*
- *     Bank 0x60 - 0x6f
- */
-#define BASE_XMAC_2            0x3000  /* XMAC 2 registers */
-
-/*
- *     Bank 0x70 - 0x7f
- */
-#define BASE_GMAC_2            0x3800  /* GMAC 2 registers */
-
-/*
- *     Control Register Bit Definitions:
- */
-/*     B0_RAP          8 bit   Register Address Port */
-                                                               /* Bit 7:       reserved */
-#define RAP_RAP                        0x3f    /* Bit 6..0:    0 = block 0,..,6f = block 6f */
-
-/*     B0_CTST         16 bit  Control/Status register */
-                                                               /* Bit 15..14:  reserved */
-#define CS_CLK_RUN_HOT BIT_13S         /* CLK_RUN hot m. (YUKON-Lite only) */
-#define CS_CLK_RUN_RST BIT_12S         /* CLK_RUN reset  (YUKON-Lite only) */
-#define CS_CLK_RUN_ENA BIT_11S         /* CLK_RUN enable (YUKON-Lite only) */
-#define CS_VAUX_AVAIL  BIT_10S         /* VAUX available (YUKON only) */
-#define CS_BUS_CLOCK   BIT_9S          /* Bus Clock 0/1 = 33/66 MHz */
-#define CS_BUS_SLOT_SZ BIT_8S          /* Slot Size 0/1 = 32/64 bit slot */
-#define CS_ST_SW_IRQ   BIT_7S          /* Set IRQ SW Request */
-#define CS_CL_SW_IRQ   BIT_6S          /* Clear IRQ SW Request */
-#define CS_STOP_DONE   BIT_5S          /* Stop Master is finished */
-#define CS_STOP_MAST   BIT_4S          /* Command Bit to stop the master */
-#define CS_MRST_CLR            BIT_3S          /* Clear Master reset   */
-#define CS_MRST_SET            BIT_2S          /* Set Master reset     */
-#define CS_RST_CLR             BIT_1S          /* Clear Software reset */
-#define CS_RST_SET             BIT_0S          /* Set   Software reset */
-
-/*     B0_LED           8 Bit  LED register */
-                                                               /* Bit  7.. 2:  reserved */
-#define LED_STAT_ON            BIT_1S          /* Status LED on        */
-#define LED_STAT_OFF   BIT_0S          /* Status LED off       */
-
-/*     B0_POWER_CTRL    8 Bit  Power Control reg (YUKON only) */
-#define PC_VAUX_ENA            BIT_7           /* Switch VAUX Enable  */
-#define PC_VAUX_DIS            BIT_6       /* Switch VAUX Disable */
-#define PC_VCC_ENA             BIT_5       /* Switch VCC Enable  */
-#define PC_VCC_DIS             BIT_4       /* Switch VCC Disable */
-#define PC_VAUX_ON             BIT_3       /* Switch VAUX On  */
-#define PC_VAUX_OFF            BIT_2       /* Switch VAUX Off */
-#define PC_VCC_ON              BIT_1       /* Switch VCC On  */
-#define PC_VCC_OFF             BIT_0       /* Switch VCC Off */
-
-/*     B0_ISRC         32 bit  Interrupt Source Register */
-/*     B0_IMSK         32 bit  Interrupt Mask Register */
-/*     B0_SP_ISRC      32 bit  Special Interrupt Source Reg */
-/*     B2_IRQM_MSK     32 bit  IRQ Moderation Mask */
-#define IS_ALL_MSK             0xbfffffffL     /*              All Interrupt bits */
-#define IS_HW_ERR              BIT_31          /* Interrupt HW Error */
-                                                               /* Bit 30:      reserved */
-#define IS_PA_TO_RX1   BIT_29          /* Packet Arb Timeout Rx1 */
-#define IS_PA_TO_RX2   BIT_28          /* Packet Arb Timeout Rx2 */
-#define IS_PA_TO_TX1   BIT_27          /* Packet Arb Timeout Tx1 */
-#define IS_PA_TO_TX2   BIT_26          /* Packet Arb Timeout Tx2 */
-#define IS_I2C_READY   BIT_25          /* IRQ on end of I2C Tx */
-#define IS_IRQ_SW              BIT_24          /* SW forced IRQ        */
-#define IS_EXT_REG             BIT_23          /* IRQ from LM80 or PHY (GENESIS only) */
-                                                                       /* IRQ from PHY (YUKON only) */
-#define IS_TIMINT              BIT_22          /* IRQ from Timer       */
-#define IS_MAC1                        BIT_21          /* IRQ from MAC 1       */
-#define IS_LNK_SYNC_M1 BIT_20          /* Link Sync Cnt wrap MAC 1 */
-#define IS_MAC2                        BIT_19          /* IRQ from MAC 2       */
-#define IS_LNK_SYNC_M2 BIT_18          /* Link Sync Cnt wrap MAC 2 */
-/* Receive Queue 1 */
-#define IS_R1_B                        BIT_17          /* Q_R1 End of Buffer */
-#define IS_R1_F                        BIT_16          /* Q_R1 End of Frame */
-#define IS_R1_C                        BIT_15          /* Q_R1 Encoding Error */
-/* Receive Queue 2 */
-#define IS_R2_B                        BIT_14          /* Q_R2 End of Buffer */
-#define IS_R2_F                        BIT_13          /* Q_R2 End of Frame */
-#define IS_R2_C                        BIT_12          /* Q_R2 Encoding Error */
-/* Synchronous Transmit Queue 1 */
-#define IS_XS1_B               BIT_11          /* Q_XS1 End of Buffer */
-#define IS_XS1_F               BIT_10          /* Q_XS1 End of Frame */
-#define IS_XS1_C               BIT_9           /* Q_XS1 Encoding Error */
-/* Asynchronous Transmit Queue 1 */
-#define IS_XA1_B               BIT_8           /* Q_XA1 End of Buffer */
-#define IS_XA1_F               BIT_7           /* Q_XA1 End of Frame */
-#define IS_XA1_C               BIT_6           /* Q_XA1 Encoding Error */
-/* Synchronous Transmit Queue 2 */
-#define IS_XS2_B               BIT_5           /* Q_XS2 End of Buffer */
-#define IS_XS2_F               BIT_4           /* Q_XS2 End of Frame */
-#define IS_XS2_C               BIT_3           /* Q_XS2 Encoding Error */
-/* Asynchronous Transmit Queue 2 */
-#define IS_XA2_B               BIT_2           /* Q_XA2 End of Buffer */
-#define IS_XA2_F               BIT_1           /* Q_XA2 End of Frame */
-#define IS_XA2_C               BIT_0           /* Q_XA2 Encoding Error */
-
-
-/*     B0_HWE_ISRC     32 bit  HW Error Interrupt Src Reg */
-/*     B0_HWE_IMSK     32 bit  HW Error Interrupt Mask Reg */
-/*     B2_IRQM_HWE_MSK 32 bit  IRQ Moderation HW Error Mask */
-#define IS_ERR_MSK             0x00000fffL     /*              All Error bits */
-                                                               /* Bit 31..14:  reserved */
-#define IS_IRQ_TIST_OV BIT_13  /* Time Stamp Timer Overflow (YUKON only) */
-#define IS_IRQ_SENSOR  BIT_12  /* IRQ from Sensor (YUKON only) */
-#define IS_IRQ_MST_ERR BIT_11  /* IRQ master error detected */
-#define IS_IRQ_STAT            BIT_10  /* IRQ status exception */
-#define IS_NO_STAT_M1  BIT_9   /* No Rx Status from MAC 1 */
-#define IS_NO_STAT_M2  BIT_8   /* No Rx Status from MAC 2 */
-#define IS_NO_TIST_M1  BIT_7   /* No Time Stamp from MAC 1 */
-#define IS_NO_TIST_M2  BIT_6   /* No Time Stamp from MAC 2 */
-#define IS_RAM_RD_PAR  BIT_5   /* RAM Read  Parity Error */
-#define IS_RAM_WR_PAR  BIT_4   /* RAM Write Parity Error */
-#define IS_M1_PAR_ERR  BIT_3   /* MAC 1 Parity Error */
-#define IS_M2_PAR_ERR  BIT_2   /* MAC 2 Parity Error */
-#define IS_R1_PAR_ERR  BIT_1   /* Queue R1 Parity Error */
-#define IS_R2_PAR_ERR  BIT_0   /* Queue R2 Parity Error */
-
-/*     B2_CONN_TYP      8 bit  Connector type */
-/*     B2_PMD_TYP       8 bit  PMD type */
-/*     Values of connector and PMD type comply to SysKonnect internal std */
-
-/*     B2_MAC_CFG       8 bit  MAC Configuration / Chip Revision */
-#define CONFIG_SYS_CHIP_R_MSK  (0xf<<4)        /* Bit 7.. 4: Chip Revision */
-                                                                       /* Bit 3.. 2:   reserved */
-#define CONFIG_SYS_DIS_M2_CLK  BIT_1S          /* Disable Clock for 2nd MAC */
-#define CONFIG_SYS_SNG_MAC             BIT_0S          /* MAC Config: 0=2 MACs / 1=1 MAC*/
-
-/*     B2_CHIP_ID       8 bit  Chip Identification Number */
-#define CHIP_ID_GENESIS        0x0a            /* Chip ID for GENESIS */
-#define CHIP_ID_YUKON  0xb0            /* Chip ID for YUKON */
-
-/*     B2_FAR          32 bit  Flash-Prom Addr Reg/Cnt */
-#define FAR_ADDR               0x1ffffL        /* Bit 16.. 0:  FPROM Address mask */
-
-/*     B2_LD_CRTL       8 bit  EPROM loader control register */
-/*     Bits are currently reserved */
-
-/*     B2_LD_TEST       8 bit  EPROM loader test register */
-                                                               /* Bit 7.. 4:   reserved */
-#define LD_T_ON                        BIT_3S  /* Loader Test mode on */
-#define LD_T_OFF               BIT_2S  /* Loader Test mode off */
-#define LD_T_STEP              BIT_1S  /* Decrement FPROM addr. Counter */
-#define LD_START               BIT_0S  /* Start loading FPROM */
-
-/*
- *     Timer Section
- */
-/*     B2_TI_CRTL       8 bit  Timer control */
-/*     B2_IRQM_CTRL     8 bit  IRQ Moderation Timer Control */
-                                                               /* Bit 7.. 3:   reserved */
-#define TIM_START              BIT_2S  /* Start Timer */
-#define TIM_STOP               BIT_1S  /* Stop  Timer */
-#define TIM_CLR_IRQ            BIT_0S  /* Clear Timer IRQ (!IRQM) */
-
-/*     B2_TI_TEST       8 Bit  Timer Test */
-/*     B2_IRQM_TEST     8 bit  IRQ Moderation Timer Test */
-/*     B28_DPT_TST      8 bit  Descriptor Poll Timer Test Reg */
-                                                               /* Bit 7.. 3:   reserved */
-#define TIM_T_ON               BIT_2S  /* Test mode on */
-#define TIM_T_OFF              BIT_1S  /* Test mode off */
-#define TIM_T_STEP             BIT_0S  /* Test step */
-
-/*     B28_DPT_INI     32 bit  Descriptor Poll Timer Init Val */
-/*     B28_DPT_VAL     32 bit  Descriptor Poll Timer Curr Val */
-                                                               /* Bit 31..24:  reserved */
-#define DPT_MSK                0x00ffffffL     /* Bit 23.. 0:  Desc Poll Timer Bits */
-
-/*     B28_DPT_CTRL     8 bit  Descriptor Poll Timer Ctrl Reg */
-                                                               /* Bit  7.. 2:  reserved */
-#define DPT_START              BIT_1S  /* Start Descriptor Poll Timer */
-#define DPT_STOP               BIT_0S  /* Stop  Descriptor Poll Timer */
-
-/*     B2_E_3                   8 bit  lower 4 bits used for HW self test result */
-#define B2_E3_RES_MASK 0x0f
-
-/*     B2_TST_CTRL1     8 bit  Test Control Register 1 */
-#define TST_FRC_DPERR_MR       BIT_7S  /* force DATAPERR on MST RD */
-#define TST_FRC_DPERR_MW       BIT_6S  /* force DATAPERR on MST WR */
-#define TST_FRC_DPERR_TR       BIT_5S  /* force DATAPERR on TRG RD */
-#define TST_FRC_DPERR_TW       BIT_4S  /* force DATAPERR on TRG WR */
-#define TST_FRC_APERR_M                BIT_3S  /* force ADDRPERR on MST */
-#define TST_FRC_APERR_T                BIT_2S  /* force ADDRPERR on TRG */
-#define TST_CFG_WRITE_ON       BIT_1S  /* Enable  Config Reg WR */
-#define TST_CFG_WRITE_OFF      BIT_0S  /* Disable Config Reg WR */
-
-/*     B2_TST_CTRL2     8 bit  Test Control Register 2 */
-                                                                       /* Bit 7.. 4:   reserved */
-                       /* force the following error on the next master read/write      */
-#define TST_FRC_DPERR_MR64     BIT_3S  /* DataPERR RD 64       */
-#define TST_FRC_DPERR_MW64     BIT_2S  /* DataPERR WR 64       */
-#define TST_FRC_APERR_1M64     BIT_1S  /* AddrPERR on 1. phase */
-#define TST_FRC_APERR_2M64     BIT_0S  /* AddrPERR on 2. phase */
-
-/*     B2_GP_IO        32 bit  General Purpose I/O Register */
-                                                       /* Bit 31..26:  reserved */
-#define GP_DIR_9       BIT_25  /* IO_9 direct, 0=I/1=O */
-#define GP_DIR_8       BIT_24  /* IO_8 direct, 0=I/1=O */
-#define GP_DIR_7       BIT_23  /* IO_7 direct, 0=I/1=O */
-#define GP_DIR_6       BIT_22  /* IO_6 direct, 0=I/1=O */
-#define GP_DIR_5       BIT_21  /* IO_5 direct, 0=I/1=O */
-#define GP_DIR_4       BIT_20  /* IO_4 direct, 0=I/1=O */
-#define GP_DIR_3       BIT_19  /* IO_3 direct, 0=I/1=O */
-#define GP_DIR_2       BIT_18  /* IO_2 direct, 0=I/1=O */
-#define GP_DIR_1       BIT_17  /* IO_1 direct, 0=I/1=O */
-#define GP_DIR_0       BIT_16  /* IO_0 direct, 0=I/1=O */
-                                               /* Bit 15..10:  reserved */
-#define GP_IO_9                BIT_9   /* IO_9 pin */
-#define GP_IO_8                BIT_8   /* IO_8 pin */
-#define GP_IO_7                BIT_7   /* IO_7 pin */
-#define GP_IO_6                BIT_6   /* IO_6 pin */
-#define GP_IO_5                BIT_5   /* IO_5 pin */
-#define GP_IO_4                BIT_4   /* IO_4 pin */
-#define GP_IO_3                BIT_3   /* IO_3 pin */
-#define GP_IO_2                BIT_2   /* IO_2 pin */
-#define GP_IO_1                BIT_1   /* IO_1 pin */
-#define GP_IO_0                BIT_0   /* IO_0 pin */
-
-/*     B2_I2C_CTRL     32 bit  I2C HW Control Register */
-#define I2C_FLAG               BIT_31          /* Start read/write if WR */
-#define I2C_ADDR               (0x7fffL<<16)   /* Bit 30..16:  Addr to be RD/WR */
-#define I2C_DEV_SEL            (0x7fL<<9)              /* Bit 15.. 9:  I2C Device Select */
-                                                               /* Bit  8.. 5:  reserved        */
-#define I2C_BURST_LEN  BIT_4           /* Burst Len, 1/4 bytes */
-#define I2C_DEV_SIZE   (7L<<1)         /* Bit  3.. 1:  I2C Device Size */
-#define I2C_025K_DEV   (0L<<1)         /*              0: 256 Bytes or smal. */
-#define I2C_05K_DEV            (1L<<1)         /*              1: 512  Bytes   */
-#define I2C_1K_DEV             (2L<<1)         /*              2: 1024 Bytes   */
-#define I2C_2K_DEV             (3L<<1)         /*              3: 2048 Bytes   */
-#define I2C_4K_DEV             (4L<<1)         /*              4: 4096 Bytes   */
-#define I2C_8K_DEV             (5L<<1)         /*              5: 8192 Bytes   */
-#define I2C_16K_DEV            (6L<<1)         /*              6: 16384 Bytes  */
-#define I2C_32K_DEV            (7L<<1)         /*              7: 32768 Bytes  */
-#define I2C_STOP               BIT_0           /* Interrupt I2C transfer */
-
-/*     B2_I2C_IRQ      32 bit  I2C HW IRQ Register */
-                                                               /* Bit 31.. 1   reserved */
-#define I2C_CLR_IRQ            BIT_0   /* Clear I2C IRQ */
-
-/*     B2_I2C_SW       32 bit (8 bit access)   I2C HW SW Port Register */
-                                                               /* Bit  7.. 3:  reserved */
-#define I2C_DATA_DIR   BIT_2S          /* direction of I2C_DATA */
-#define I2C_DATA               BIT_1S          /* I2C Data Port        */
-#define I2C_CLK                        BIT_0S          /* I2C Clock Port       */
-
-/*
- * I2C Address
- */
-#define I2C_SENS_ADDR  LM80_ADDR       /* I2C Sensor Address, (Volt and Temp)*/
-
-
-/*     B2_BSC_CTRL      8 bit  Blink Source Counter Control */
-                                                       /* Bit  7.. 2:  reserved */
-#define BSC_START      BIT_1S          /* Start Blink Source Counter */
-#define BSC_STOP       BIT_0S          /* Stop  Blink Source Counter */
-
-/*     B2_BSC_STAT      8 bit  Blink Source Counter Status */
-                                                       /* Bit  7.. 1:  reserved */
-#define BSC_SRC                BIT_0S          /* Blink Source, 0=Off / 1=On */
-
-/*     B2_BSC_TST      16 bit  Blink Source Counter Test Reg */
-#define BSC_T_ON       BIT_2S          /* Test mode on */
-#define BSC_T_OFF      BIT_1S          /* Test mode off */
-#define BSC_T_STEP     BIT_0S          /* Test step */
-
-
-/*     B3_RAM_ADDR     32 bit  RAM Address, to read or write */
-                                       /* Bit 31..19:  reserved */
-#define RAM_ADR_RAN    0x0007ffffL     /* Bit 18.. 0:  RAM Address Range */
-
-/* RAM Interface Registers */
-/*     B3_RI_CTRL      16 bit  RAM Iface Control Register */
-                                                               /* Bit 15..10:  reserved */
-#define RI_CLR_RD_PERR BIT_9S  /* Clear IRQ RAM Read Parity Err */
-#define RI_CLR_WR_PERR BIT_8S  /* Clear IRQ RAM Write Parity Err*/
-                                                               /* Bit  7.. 2:  reserved */
-#define RI_RST_CLR             BIT_1S  /* Clear RAM Interface Reset */
-#define RI_RST_SET             BIT_0S  /* Set   RAM Interface Reset */
-
-/*     B3_RI_TEST       8 bit  RAM Iface Test Register */
-                                                               /* Bit 15.. 4:  reserved */
-#define RI_T_EV                        BIT_3S  /* Timeout Event occured */
-#define RI_T_ON                        BIT_2S  /* Timeout Timer Test On */
-#define RI_T_OFF               BIT_1S  /* Timeout Timer Test Off */
-#define RI_T_STEP              BIT_0S  /* Timeout Timer Step */
-
-/* MAC Arbiter Registers */
-/*     B3_MA_TO_CTRL   16 bit  MAC Arbiter Timeout Ctrl Reg */
-                                                               /* Bit 15.. 4:  reserved */
-#define MA_FOE_ON              BIT_3S  /* XMAC Fast Output Enable ON */
-#define MA_FOE_OFF             BIT_2S  /* XMAC Fast Output Enable OFF */
-#define MA_RST_CLR             BIT_1S  /* Clear MAC Arbiter Reset */
-#define MA_RST_SET             BIT_0S  /* Set   MAC Arbiter Reset */
-
-/*     B3_MA_RC_CTRL   16 bit  MAC Arbiter Recovery Ctrl Reg */
-                                                               /* Bit 15.. 8:  reserved */
-#define MA_ENA_REC_TX2 BIT_7S  /* Enable  Recovery Timer TX2 */
-#define MA_DIS_REC_TX2 BIT_6S  /* Disable Recovery Timer TX2 */
-#define MA_ENA_REC_TX1 BIT_5S  /* Enable  Recovery Timer TX1 */
-#define MA_DIS_REC_TX1 BIT_4S  /* Disable Recovery Timer TX1 */
-#define MA_ENA_REC_RX2 BIT_3S  /* Enable  Recovery Timer RX2 */
-#define MA_DIS_REC_RX2 BIT_2S  /* Disable Recovery Timer RX2 */
-#define MA_ENA_REC_RX1 BIT_1S  /* Enable  Recovery Timer RX1 */
-#define MA_DIS_REC_RX1 BIT_0S  /* Disable Recovery Timer RX1 */
-
-/* Packet Arbiter Registers */
-/*     B3_PA_CTRL      16 bit  Packet Arbiter Ctrl Register */
-                                                               /* Bit 15..14:  reserved */
-#define PA_CLR_TO_TX2  BIT_13S /* Clear IRQ Packet Timeout TX2 */
-#define PA_CLR_TO_TX1  BIT_12S /* Clear IRQ Packet Timeout TX1 */
-#define PA_CLR_TO_RX2  BIT_11S /* Clear IRQ Packet Timeout RX2 */
-#define PA_CLR_TO_RX1  BIT_10S /* Clear IRQ Packet Timeout RX1 */
-#define PA_ENA_TO_TX2  BIT_9S  /* Enable  Timeout Timer TX2 */
-#define PA_DIS_TO_TX2  BIT_8S  /* Disable Timeout Timer TX2 */
-#define PA_ENA_TO_TX1  BIT_7S  /* Enable  Timeout Timer TX1 */
-#define PA_DIS_TO_TX1  BIT_6S  /* Disable Timeout Timer TX1 */
-#define PA_ENA_TO_RX2  BIT_5S  /* Enable  Timeout Timer RX2 */
-#define PA_DIS_TO_RX2  BIT_4S  /* Disable Timeout Timer RX2 */
-#define PA_ENA_TO_RX1  BIT_3S  /* Enable  Timeout Timer RX1 */
-#define PA_DIS_TO_RX1  BIT_2S  /* Disable Timeout Timer RX1 */
-#define PA_RST_CLR             BIT_1S  /* Clear MAC Arbiter Reset */
-#define PA_RST_SET             BIT_0S  /* Set   MAC Arbiter Reset */
-
-#define PA_ENA_TO_ALL  (PA_ENA_TO_RX1 | PA_ENA_TO_RX2 |\
-                                               PA_ENA_TO_TX1 | PA_ENA_TO_TX2)
-
-/* Rx/Tx Path related Arbiter Test Registers */
-/*     B3_MA_TO_TEST   16 bit  MAC Arbiter Timeout Test Reg */
-/*     B3_MA_RC_TEST   16 bit  MAC Arbiter Recovery Test Reg */
-/*     B3_PA_TEST      16 bit  Packet Arbiter Test Register */
-/*                     Bit 15, 11, 7, and 3 are reserved in B3_PA_TEST */
-#define TX2_T_EV       BIT_15S         /* TX2 Timeout/Recv Event occured */
-#define TX2_T_ON       BIT_14S         /* TX2 Timeout/Recv Timer Test On */
-#define TX2_T_OFF      BIT_13S         /* TX2 Timeout/Recv Timer Tst Off */
-#define TX2_T_STEP     BIT_12S         /* TX2 Timeout/Recv Timer Step */
-#define TX1_T_EV       BIT_11S         /* TX1 Timeout/Recv Event occured */
-#define TX1_T_ON       BIT_10S         /* TX1 Timeout/Recv Timer Test On */
-#define TX1_T_OFF      BIT_9S          /* TX1 Timeout/Recv Timer Tst Off */
-#define TX1_T_STEP     BIT_8S          /* TX1 Timeout/Recv Timer Step */
-#define RX2_T_EV       BIT_7S          /* RX2 Timeout/Recv Event occured */
-#define RX2_T_ON       BIT_6S          /* RX2 Timeout/Recv Timer Test On */
-#define RX2_T_OFF      BIT_5S          /* RX2 Timeout/Recv Timer Tst Off */
-#define RX2_T_STEP     BIT_4S          /* RX2 Timeout/Recv Timer Step */
-#define RX1_T_EV       BIT_3S          /* RX1 Timeout/Recv Event occured */
-#define RX1_T_ON       BIT_2S          /* RX1 Timeout/Recv Timer Test On */
-#define RX1_T_OFF      BIT_1S          /* RX1 Timeout/Recv Timer Tst Off */
-#define RX1_T_STEP     BIT_0S          /* RX1 Timeout/Recv Timer Step */
-
-
-/* Transmit Arbiter Registers MAC 1 and 2, use MR_ADDR() to access */
-/*     TXA_ITI_INI     32 bit  Tx Arb Interval Timer Init Val */
-/*     TXA_ITI_VAL     32 bit  Tx Arb Interval Timer Value */
-/*     TXA_LIM_INI     32 bit  Tx Arb Limit Counter Init Val */
-/*     TXA_LIM_VAL     32 bit  Tx Arb Limit Counter Value */
-                                                               /* Bit 31..24:  reserved */
-#define TXA_MAX_VAL    0x00ffffffL     /* Bit 23.. 0:  Max TXA Timer/Cnt Val */
-
-/*     TXA_CTRL         8 bit  Tx Arbiter Control Register */
-#define TXA_ENA_FSYNC  BIT_7S  /* Enable  force of sync Tx queue */
-#define TXA_DIS_FSYNC  BIT_6S  /* Disable force of sync Tx queue */
-#define TXA_ENA_ALLOC  BIT_5S  /* Enable  alloc of free bandwidth */
-#define TXA_DIS_ALLOC  BIT_4S  /* Disable alloc of free bandwidth */
-#define TXA_START_RC   BIT_3S  /* Start sync Rate Control */
-#define TXA_STOP_RC            BIT_2S  /* Stop  sync Rate Control */
-#define TXA_ENA_ARB            BIT_1S  /* Enable  Tx Arbiter */
-#define TXA_DIS_ARB            BIT_0S  /* Disable Tx Arbiter */
-
-/*     TXA_TEST         8 bit  Tx Arbiter Test Register */
-                                                               /* Bit 7.. 6:   reserved */
-#define TXA_INT_T_ON   BIT_5S  /* Tx Arb Interval Timer Test On */
-#define TXA_INT_T_OFF  BIT_4S  /* Tx Arb Interval Timer Test Off */
-#define TXA_INT_T_STEP BIT_3S  /* Tx Arb Interval Timer Step */
-#define TXA_LIM_T_ON   BIT_2S  /* Tx Arb Limit Timer Test On */
-#define TXA_LIM_T_OFF  BIT_1S  /* Tx Arb Limit Timer Test Off */
-#define TXA_LIM_T_STEP BIT_0S  /* Tx Arb Limit Timer Step */
-
-/*     TXA_STAT         8 bit  Tx Arbiter Status Register */
-                                                               /* Bit 7.. 1:   reserved */
-#define TXA_PRIO_XS            BIT_0S  /* sync queue has prio to send */
-
-/*     Q_BC    32 bit  Current Byte Counter */
-                                                               /* Bit 31..16:  reserved */
-#define BC_MAX                 0xffff  /* Bit 15.. 0:  Byte counter */
-
-/* BMU Control Status Registers */
-/*     B0_R1_CSR       32 bit  BMU Ctrl/Stat Rx Queue 1 */
-/*     B0_R2_CSR       32 bit  BMU Ctrl/Stat Rx Queue 2 */
-/*     B0_XA1_CSR      32 bit  BMU Ctrl/Stat Sync Tx Queue 1 */
-/*     B0_XS1_CSR      32 bit  BMU Ctrl/Stat Async Tx Queue 1 */
-/*     B0_XA2_CSR      32 bit  BMU Ctrl/Stat Sync Tx Queue 2 */
-/*     B0_XS2_CSR      32 bit  BMU Ctrl/Stat Async Tx Queue 2 */
-/*     Q_CSR           32 bit  BMU Control/Status Register */
-                                                               /* Bit 31..25:  reserved */
-#define CSR_SV_IDLE            BIT_24          /* BMU SM Idle */
-                                                               /* Bit 23..22:  reserved */
-#define CSR_DESC_CLR   BIT_21          /* Clear Reset for Descr */
-#define CSR_DESC_SET   BIT_20          /* Set   Reset for Descr */
-#define CSR_FIFO_CLR   BIT_19          /* Clear Reset for FIFO */
-#define CSR_FIFO_SET   BIT_18          /* Set   Reset for FIFO */
-#define CSR_HPI_RUN            BIT_17          /* Release HPI SM */
-#define CSR_HPI_RST            BIT_16          /* Reset   HPI SM to Idle */
-#define CSR_SV_RUN             BIT_15          /* Release Supervisor SM */
-#define CSR_SV_RST             BIT_14          /* Reset   Supervisor SM */
-#define CSR_DREAD_RUN  BIT_13          /* Release Descr Read SM */
-#define CSR_DREAD_RST  BIT_12          /* Reset   Descr Read SM */
-#define CSR_DWRITE_RUN BIT_11          /* Release Descr Write SM */
-#define CSR_DWRITE_RST BIT_10          /* Reset   Descr Write SM */
-#define CSR_TRANS_RUN  BIT_9           /* Release Transfer SM */
-#define CSR_TRANS_RST  BIT_8           /* Reset   Transfer SM */
-#define CSR_ENA_POL            BIT_7           /* Enable  Descr Polling */
-#define CSR_DIS_POL            BIT_6           /* Disable Descr Polling */
-#define CSR_STOP               BIT_5           /* Stop  Rx/Tx Queue */
-#define CSR_START              BIT_4           /* Start Rx/Tx Queue */
-#define CSR_IRQ_CL_P   BIT_3           /* (Rx) Clear Parity IRQ */
-#define CSR_IRQ_CL_B   BIT_2           /* Clear EOB IRQ */
-#define CSR_IRQ_CL_F   BIT_1           /* Clear EOF IRQ */
-#define CSR_IRQ_CL_C   BIT_0           /* Clear ERR IRQ */
-
-#define CSR_SET_RESET  (CSR_DESC_SET | CSR_FIFO_SET | CSR_HPI_RST |\
-                                               CSR_SV_RST | CSR_DREAD_RST | CSR_DWRITE_RST |\
-                                               CSR_TRANS_RST)
-#define CSR_CLR_RESET  (CSR_DESC_CLR | CSR_FIFO_CLR | CSR_HPI_RUN |\
-                                               CSR_SV_RUN | CSR_DREAD_RUN | CSR_DWRITE_RUN |\
-                                               CSR_TRANS_RUN)
-
-/*     Q_F     32 bit  Flag Register */
-                                                                       /* Bit 31..28:  reserved */
-#define F_ALM_FULL             BIT_27          /* Rx FIFO: almost full */
-#define F_EMPTY                        BIT_27          /* Tx FIFO: empty flag */
-#define F_FIFO_EOF             BIT_26          /* Tag (EOF Flag) bit in FIFO */
-#define F_WM_REACHED   BIT_25          /* Watermark reached */
-                                                                       /* reserved */
-#define F_FIFO_LEVEL   (0x1fL<<16)     /* Bit 23..16:  # of Qwords in FIFO */
-                                                                       /* Bit 15..11:  reserved */
-#define F_WATER_MARK   0x0007ffL       /* Bit 10.. 0:  Watermark */
-
-/*     Q_T1    32 bit  Test Register 1 */
-/*             Holds four State Machine control Bytes */
-#define SM_CRTL_SV_MSK (0xffL<<24)     /* Bit 31..24:  Control Supervisor SM */
-#define SM_CRTL_RD_MSK (0xffL<<16)     /* Bit 23..16:  Control Read Desc SM */
-#define SM_CRTL_WR_MSK (0xffL<<8)      /* Bit 15.. 8:  Control Write Desc SM */
-#define SM_CRTL_TR_MSK 0xffL           /* Bit  7.. 0:  Control Transfer SM */
-
-/*     Q_T1_TR  8 bit  Test Register 1 Transfer SM */
-/*     Q_T1_WR  8 bit  Test Register 1 Write Descriptor SM */
-/*     Q_T1_RD  8 bit  Test Register 1 Read Descriptor SM */
-/*     Q_T1_SV  8 bit  Test Register 1 Supervisor SM */
-
-/* The control status byte of each machine looks like ... */
-#define SM_STATE               0xf0    /* Bit 7.. 4:   State which shall be loaded */
-#define SM_LOAD                        BIT_3S  /* Load the SM with SM_STATE */
-#define SM_TEST_ON             BIT_2S  /* Switch on SM Test Mode */
-#define SM_TEST_OFF            BIT_1S  /* Go off the Test Mode */
-#define SM_STEP                        BIT_0S  /* Step the State Machine */
-/* The encoding of the states is not supported by the Diagnostics Tool */
-
-/*     Q_T2    32 bit  Test Register 2 */
-                                                               /* Bit 31.. 8:  reserved */
-#define T2_AC_T_ON             BIT_7   /* Address Counter Test Mode on */
-#define T2_AC_T_OFF            BIT_6   /* Address Counter Test Mode off */
-#define T2_BC_T_ON             BIT_5   /* Byte Counter Test Mode on */
-#define T2_BC_T_OFF            BIT_4   /* Byte Counter Test Mode off */
-#define T2_STEP04              BIT_3   /* Inc AC/Dec BC by 4 */
-#define T2_STEP03              BIT_2   /* Inc AC/Dec BC by 3 */
-#define T2_STEP02              BIT_1   /* Inc AC/Dec BC by 2 */
-#define T2_STEP01              BIT_0   /* Inc AC/Dec BC by 1 */
-
-/*     Q_T3    32 bit  Test Register 3 */
-                                                               /* Bit 31.. 7:  reserved */
-#define T3_MUX_MSK             (7<<4)  /* Bit  6.. 4:  Mux Position */
-                                                               /* Bit  3:      reserved */
-#define T3_VRAM_MSK            7               /* Bit  2.. 0:  Virtual RAM Buffer Address */
-
-/* RAM Buffer Register Offsets, use RB_ADDR(Queue, Offs) to access */
-/*     RB_START        32 bit  RAM Buffer Start Address */
-/*     RB_END          32 bit  RAM Buffer End Address */
-/*     RB_WP           32 bit  RAM Buffer Write Pointer */
-/*     RB_RP           32 bit  RAM Buffer Read Pointer */
-/*     RB_RX_UTPP      32 bit  Rx Upper Threshold, Pause Pack */
-/*     RB_RX_LTPP      32 bit  Rx Lower Threshold, Pause Pack */
-/*     RB_RX_UTHP      32 bit  Rx Upper Threshold, High Prio */
-/*     RB_RX_LTHP      32 bit  Rx Lower Threshold, High Prio */
-/*     RB_PC           32 bit  RAM Buffer Packet Counter */
-/*     RB_LEV          32 bit  RAM Buffer Level Register */
-                               /* Bit 31..19:  reserved */
-#define RB_MSK 0x0007ffff      /* Bit 18.. 0:  RAM Buffer Pointer Bits */
-
-/*     RB_TST2                  8 bit  RAM Buffer Test Register 2 */
-                                                               /* Bit 7.. 4:   reserved */
-#define RB_PC_DEC              BIT_3S  /* Packet Counter Decrem */
-#define RB_PC_T_ON             BIT_2S  /* Packet Counter Test On */
-#define RB_PC_T_OFF            BIT_1S  /* Packet Counter Tst Off */
-#define RB_PC_INC              BIT_0S  /* Packet Counter Increm */
-
-/*     RB_TST1                  8 bit  RAM Buffer Test Register 1 */
-                                                       /* Bit 7:       reserved */
-#define RB_WP_T_ON             BIT_6S  /* Write Pointer Test On */
-#define RB_WP_T_OFF            BIT_5S  /* Write Pointer Test Off */
-#define RB_WP_INC              BIT_4S  /* Write Pointer Increm */
-                                                               /* Bit 3:       reserved */
-#define RB_RP_T_ON             BIT_2S  /* Read Pointer Test On */
-#define RB_RP_T_OFF            BIT_1S  /* Read Pointer Test Off */
-#define RB_RP_DEC              BIT_0S  /* Read Pointer Decrement */
-
-/*     RB_CTRL                  8 bit  RAM Buffer Control Register */
-                                                               /* Bit 7.. 6:   reserved */
-#define RB_ENA_STFWD   BIT_5S  /* Enable  Store & Forward */
-#define RB_DIS_STFWD   BIT_4S  /* Disable Store & Forward */
-#define RB_ENA_OP_MD   BIT_3S  /* Enable  Operation Mode */
-#define RB_DIS_OP_MD   BIT_2S  /* Disable Operation Mode */
-#define RB_RST_CLR             BIT_1S  /* Clear RAM Buf STM Reset */
-#define RB_RST_SET             BIT_0S  /* Set   RAM Buf STM Reset */
-
-
-/* Receive and Transmit MAC FIFO Registers (GENESIS only) */
-
-/*     RX_MFF_EA       32 bit  Receive MAC FIFO End Address */
-/*     RX_MFF_WP       32 bit  Receive MAC FIFO Write Pointer */
-/*     RX_MFF_RP       32 bit  Receive MAC FIFO Read Pointer */
-/*     RX_MFF_PC       32 bit  Receive MAC FIFO Packet Counter */
-/*     RX_MFF_LEV      32 bit  Receive MAC FIFO Level */
-/*     TX_MFF_EA       32 bit  Transmit MAC FIFO End Address */
-/*     TX_MFF_WP       32 bit  Transmit MAC FIFO Write Pointer */
-/*     TX_MFF_WSP      32 bit  Transmit MAC FIFO WR Shadow Pointer */
-/*     TX_MFF_RP       32 bit  Transmit MAC FIFO Read Pointer */
-/*     TX_MFF_PC       32 bit  Transmit MAC FIFO Packet Cnt */
-/*     TX_MFF_LEV      32 bit  Transmit MAC FIFO Level */
-                                                               /* Bit 31.. 6:  reserved */
-#define MFF_MSK                        0x007fL /* Bit  5.. 0:  MAC FIFO Address/Ptr Bits */
-
-/*     RX_MFF_CTRL1    16 bit  Receive MAC FIFO Control Reg 1 */
-                                                               /* Bit 15..14:  reserved */
-#define MFF_ENA_RDY_PAT        BIT_13S         /* Enable  Ready Patch */
-#define MFF_DIS_RDY_PAT        BIT_12S         /* Disable Ready Patch */
-#define MFF_ENA_TIM_PAT        BIT_11S         /* Enable  Timing Patch */
-#define MFF_DIS_TIM_PAT        BIT_10S         /* Disable Timing Patch */
-#define MFF_ENA_ALM_FUL        BIT_9S          /* Enable  AlmostFull Sign */
-#define MFF_DIS_ALM_FUL        BIT_8S          /* Disable AlmostFull Sign */
-#define MFF_ENA_PAUSE  BIT_7S          /* Enable  Pause Signaling */
-#define MFF_DIS_PAUSE  BIT_6S          /* Disable Pause Signaling */
-#define MFF_ENA_FLUSH  BIT_5S          /* Enable  Frame Flushing */
-#define MFF_DIS_FLUSH  BIT_4S          /* Disable Frame Flushing */
-#define MFF_ENA_TIST   BIT_3S          /* Enable  Time Stamp Gener */
-#define MFF_DIS_TIST   BIT_2S          /* Disable Time Stamp Gener */
-#define MFF_CLR_INTIST BIT_1S          /* Clear IRQ No Time Stamp */
-#define MFF_CLR_INSTAT BIT_0S          /* Clear IRQ No Status */
-
-#define MFF_RX_CTRL_DEF MFF_ENA_TIM_PAT
-
-/*     TX_MFF_CTRL1    16 bit  Transmit MAC FIFO Control Reg 1 */
-#define MFF_CLR_PERR   BIT_15S         /* Clear Parity Error IRQ */
-                                                               /* Bit 14:      reserved */
-#define MFF_ENA_PKT_REC        BIT_13S         /* Enable  Packet Recovery */
-#define MFF_DIS_PKT_REC BIT_12S                /* Disable Packet Recovery */
-/*     MFF_ENA_TIM_PAT  (see RX_MFF_CTRL1) Bit 11:     Enable  Timing Patch */
-/*     MFF_DIS_TIM_PAT  (see RX_MFF_CTRL1) Bit 10:     Disable Timing Patch */
-/*     MFF_ENA_ALM_FUL  (see RX_MFF_CTRL1) Bit  9:     Enable  Almost Full Sign */
-/*     MFF_DIS_ALM_FUL  (see RX_MFF_CTRL1) Bit  8:     Disable Almost Full Sign */
-#define MFF_ENA_W4E            BIT_7S          /* Enable  Wait for Empty */
-#define MFF_DIS_W4E            BIT_6S          /* Disable Wait for Empty */
-/*     MFF_ENA_FLUSH    (see RX_MFF_CTRL1) Bit  5:     Enable  Frame Flushing */
-/*     MFF_DIS_FLUSH    (see RX_MFF_CTRL1) Bit  4:     Disable Frame Flushing */
-#define MFF_ENA_LOOPB  BIT_3S          /* Enable  Loopback */
-#define MFF_DIS_LOOPB  BIT_2S          /* Disable Loopback */
-#define MFF_CLR_MAC_RST        BIT_1S          /* Clear XMAC Reset */
-#define MFF_SET_MAC_RST        BIT_0S          /* Set   XMAC Reset */
-
-#define MFF_TX_CTRL_DEF        (MFF_ENA_PKT_REC | MFF_ENA_TIM_PAT | MFF_ENA_FLUSH)
-
-/*     RX_MFF_TST2              8 bit  Receive MAC FIFO Test Register 2 */
-/*     TX_MFF_TST2              8 bit  Transmit MAC FIFO Test Register 2 */
-                                                               /* Bit 7:       reserved */
-#define MFF_WSP_T_ON   BIT_6S  /* Tx: Write Shadow Ptr TestOn */
-#define MFF_WSP_T_OFF  BIT_5S  /* Tx: Write Shadow Ptr TstOff */
-#define MFF_WSP_INC            BIT_4S  /* Tx: Write Shadow Ptr Increment */
-#define MFF_PC_DEC             BIT_3S  /* Packet Counter Decrement */
-#define MFF_PC_T_ON            BIT_2S  /* Packet Counter Test On */
-#define MFF_PC_T_OFF   BIT_1S  /* Packet Counter Test Off */
-#define MFF_PC_INC             BIT_0S  /* Packet Counter Increment */
-
-/*     RX_MFF_TST1              8 bit  Receive MAC FIFO Test Register 1 */
-/*     TX_MFF_TST1              8 bit  Transmit MAC FIFO Test Register 1 */
-                                       /* Bit 7:       reserved */
-#define MFF_WP_T_ON            BIT_6S  /* Write Pointer Test On */
-#define MFF_WP_T_OFF   BIT_5S  /* Write Pointer Test Off */
-#define MFF_WP_INC             BIT_4S  /* Write Pointer Increm */
-                                                       /* Bit 3:       reserved */
-#define MFF_RP_T_ON            BIT_2S  /* Read Pointer Test On */
-#define MFF_RP_T_OFF   BIT_1S  /* Read Pointer Test Off */
-#define MFF_RP_DEC             BIT_0S  /* Read Pointer Decrement */
-
-/*     RX_MFF_CTRL2     8 bit  Receive MAC FIFO Control Reg 2 */
-/*     TX_MFF_CTRL2     8 bit  Transmit MAC FIFO Control Reg 2 */
-                                                               /* Bit 7..4:    reserved */
-#define MFF_ENA_OP_MD  BIT_3S  /* Enable  Operation Mode */
-#define MFF_DIS_OP_MD  BIT_2S  /* Disable Operation Mode */
-#define MFF_RST_CLR            BIT_1S  /* Clear MAC FIFO Reset */
-#define MFF_RST_SET            BIT_0S  /* Set   MAC FIFO Reset */
-
-
-/*     Link LED Counter Registers (GENESIS only) */
-
-/*     RX_LED_CTRL              8 bit  Receive LED Cnt Control Reg */
-/*     TX_LED_CTRL              8 bit  Transmit LED Cnt Control Reg */
-/*     LNK_SYNC_CTRL    8 bit  Link Sync Cnt Control Register */
-                                                       /* Bit 7.. 3:   reserved */
-#define LED_START              BIT_2S  /* Start Timer */
-#define LED_STOP               BIT_1S  /* Stop Timer */
-#define LED_STATE              BIT_0S  /* Rx/Tx: LED State, 1=LED on */
-#define LED_CLR_IRQ            BIT_0S  /* Lnk:         Clear Link IRQ */
-
-/*     RX_LED_TST               8 bit  Receive LED Cnt Test Register */
-/*     TX_LED_TST               8 bit  Transmit LED Cnt Test Register */
-/*     LNK_SYNC_TST     8 bit  Link Sync Cnt Test Register */
-                                                       /* Bit 7.. 3:   reserved */
-#define LED_T_ON               BIT_2S  /* LED Counter Test mode On */
-#define LED_T_OFF              BIT_1S  /* LED Counter Test mode Off */
-#define LED_T_STEP             BIT_0S  /* LED Counter Step */
-
-/*     LNK_LED_REG              8 bit  Link LED Register */
-                                                               /* Bit 7.. 6:   reserved */
-#define LED_BLK_ON             BIT_5S  /* Link LED Blinking On */
-#define LED_BLK_OFF            BIT_4S  /* Link LED Blinking Off */
-#define LED_SYNC_ON            BIT_3S  /* Use Sync Wire to switch LED */
-#define LED_SYNC_OFF   BIT_2S  /* Disable Sync Wire Input */
-#define LED_ON                 BIT_1S  /* switch LED on */
-#define LED_OFF                        BIT_0S  /* switch LED off */
-
-/*     Receive and Transmit GMAC FIFO Registers (YUKON only) */
-
-/*     RX_GMF_EA               32 bit  Rx GMAC FIFO End Address */
-/*     RX_GMF_AF_THR   32 bit  Rx GMAC FIFO Almost Full Thresh. */
-/*     RX_GMF_WP               32 bit  Rx GMAC FIFO Write Pointer */
-/*     RX_GMF_WLEV             32 bit  Rx GMAC FIFO Write Level */
-/*     RX_GMF_RP               32 bit  Rx GMAC FIFO Read Pointer */
-/*     RX_GMF_RLEV             32 bit  Rx GMAC FIFO Read Level */
-/*     TX_GMF_EA               32 bit  Tx GMAC FIFO End Address */
-/*     TX_GMF_AE_THR   32 bit  Tx GMAC FIFO Almost Empty Thresh.*/
-/*     TX_GMF_WP               32 bit  Tx GMAC FIFO Write Pointer */
-/*     TX_GMF_WSP              32 bit  Tx GMAC FIFO Write Shadow Ptr. */
-/*     TX_GMF_WLEV             32 bit  Tx GMAC FIFO Write Level */
-/*     TX_GMF_RP               32 bit  Tx GMAC FIFO Read Pointer */
-/*     TX_GMF_RSTP             32 bit  Tx GMAC FIFO Restart Pointer */
-/*     TX_GMF_RLEV             32 bit  Tx GMAC FIFO Read Level */
-
-/*     RX_GMF_CTRL_T   32 bit  Rx GMAC FIFO Control/Test */
-                                               /* Bits 31..15: reserved */
-#define GMF_WP_TST_ON  BIT_14          /* Write Pointer Test On */
-#define GMF_WP_TST_OFF BIT_13          /* Write Pointer Test Off */
-#define GMF_WP_STEP            BIT_12          /* Write Pointer Step/Increment */
-                                               /* Bit 11:      reserved */
-#define GMF_RP_TST_ON  BIT_10          /* Read Pointer Test On */
-#define GMF_RP_TST_OFF BIT_9           /* Read Pointer Test Off */
-#define GMF_RP_STEP            BIT_8           /* Read Pointer Step/Increment */
-#define GMF_RX_F_FL_ON BIT_7           /* Rx FIFO Flush Mode On */
-#define GMF_RX_F_FL_OFF        BIT_6           /* Rx FIFO Flush Mode Off */
-#define GMF_CLI_RX_FO  BIT_5           /* Clear IRQ Rx FIFO Overrun */
-#define GMF_CLI_RX_FC  BIT_4           /* Clear IRQ Rx Frame Complete */
-#define GMF_OPER_ON            BIT_3           /* Operational Mode On */
-#define GMF_OPER_OFF   BIT_2           /* Operational Mode Off */
-#define GMF_RST_CLR            BIT_1           /* Clear GMAC FIFO Reset */
-#define GMF_RST_SET            BIT_0           /* Set   GMAC FIFO Reset */
-
-/*     TX_GMF_CTRL_T   32 bit  Tx GMAC FIFO Control/Test */
-                                               /* Bits 31..19: reserved */
-#define GMF_WSP_TST_ON BIT_18          /* Write Shadow Pointer Test On */
-#define GMF_WSP_TST_OFF        BIT_17          /* Write Shadow Pointer Test Off */
-#define GMF_WSP_STEP   BIT_16          /* Write Shadow Pointer Step/Increment */
-                                               /* Bits 15..7: same as for RX_GMF_CTRL_T */
-#define GMF_CLI_TX_FU  BIT_6           /* Clear IRQ Tx FIFO Underrun */
-#define GMF_CLI_TX_FC  BIT_5           /* Clear IRQ Tx Frame Complete */
-#define GMF_CLI_TX_PE  BIT_4           /* Clear IRQ Tx Parity Error */
-                                               /* Bits 3..0: same as for RX_GMF_CTRL_T */
-
-#define GMF_RX_CTRL_DEF                (GMF_OPER_ON | GMF_RX_F_FL_ON)
-#define GMF_TX_CTRL_DEF                GMF_OPER_ON
-
-#define RX_GMF_FL_THR_DEF      0x0a    /* Rx GMAC FIFO Flush Threshold default */
-
-/*     GMAC_TI_ST_CTRL           8 bit Time Stamp Timer Ctrl Reg (YUKON only) */
-                                                               /* Bit 7.. 3:   reserved */
-#define GMT_ST_START   BIT_2S          /* Start Time Stamp Timer */
-#define GMT_ST_STOP            BIT_1S          /* Stop  Time Stamp Timer */
-#define GMT_ST_CLR_IRQ BIT_0S          /* Clear Time Stamp Timer IRQ */
-
-/*     GMAC_CTRL               32 bit  GMAC Control Reg (YUKON only) */
-                                               /* Bits 31.. 8: reserved */
-#define GMC_H_BURST_ON BIT_7           /* Half Duplex Burst Mode On */
-#define GMC_H_BURST_OFF        BIT_6           /* Half Duplex Burst Mode Off */
-#define GMC_F_LOOPB_ON BIT_5           /* FIFO Loopback On */
-#define GMC_F_LOOPB_OFF        BIT_4           /* FIFO Loopback Off */
-#define GMC_PAUSE_ON   BIT_3           /* Pause On */
-#define GMC_PAUSE_OFF  BIT_2           /* Pause Off */
-#define GMC_RST_CLR            BIT_1           /* Clear GMAC Reset */
-#define GMC_RST_SET            BIT_0           /* Set   GMAC Reset */
-
-/*     GPHY_CTRL               32 bit  GPHY Control Reg (YUKON only) */
-                                               /* Bits 31..29: reserved */
-#define GPC_SEL_BDT            BIT_28  /* Select Bi-Dir. Transfer for MDC/MDIO */
-#define GPC_INT_POL_HI BIT_27  /* IRQ Polarity is Active HIGH */
-#define GPC_75_OHM             BIT_26  /* Use 75 Ohm Termination instead of 50 */
-#define GPC_DIS_FC             BIT_25  /* Disable Automatic Fiber/Copper Detection */
-#define GPC_DIS_SLEEP  BIT_24  /* Disable Energy Detect */
-#define GPC_HWCFG_M_3  BIT_23  /* HWCFG_MODE[3] */
-#define GPC_HWCFG_M_2  BIT_22  /* HWCFG_MODE[2] */
-#define GPC_HWCFG_M_1  BIT_21  /* HWCFG_MODE[1] */
-#define GPC_HWCFG_M_0  BIT_20  /* HWCFG_MODE[0] */
-#define GPC_ANEG_0             BIT_19  /* ANEG[0] */
-#define GPC_ENA_XC             BIT_18  /* Enable MDI crossover */
-#define GPC_DIS_125            BIT_17  /* Disable 125 MHz clock */
-#define GPC_ANEG_3             BIT_16  /* ANEG[3] */
-#define GPC_ANEG_2             BIT_15  /* ANEG[2] */
-#define GPC_ANEG_1             BIT_14  /* ANEG[1] */
-#define GPC_ENA_PAUSE  BIT_13  /* Enable Pause (SYM_OR_REM) */
-#define GPC_PHYADDR_4  BIT_12  /* Bit 4 of Phy Addr */
-#define GPC_PHYADDR_3  BIT_11  /* Bit 3 of Phy Addr */
-#define GPC_PHYADDR_2  BIT_10  /* Bit 2 of Phy Addr */
-#define GPC_PHYADDR_1  BIT_9   /* Bit 1 of Phy Addr */
-#define GPC_PHYADDR_0  BIT_8   /* Bit 0 of Phy Addr */
-                                               /* Bits  7..2:  reserved */
-#define GPC_RST_CLR            BIT_1   /* Clear GPHY Reset */
-#define GPC_RST_SET            BIT_0   /* Set   GPHY Reset */
-
-#define GPC_HWCFG_GMII_COP     (GPC_HWCFG_M_3 | GPC_HWCFG_M_2 | \
-                                                        GPC_HWCFG_M_1 | GPC_HWCFG_M_0)
-
-#define GPC_HWCFG_GMII_FIB     (                                GPC_HWCFG_M_2 | \
-                                                        GPC_HWCFG_M_1 | GPC_HWCFG_M_0)
-
-#define GPC_ANEG_ADV_ALL_M     (GPC_ANEG_3 | GPC_ANEG_2 | \
-                                                        GPC_ANEG_1 | GPC_ANEG_0)
-
-/* forced speed and duplex mode (don't mix with other ANEG bits) */
-#define GPC_FRC10MBIT_HALF     0
-#define GPC_FRC10MBIT_FULL     GPC_ANEG_0
-#define GPC_FRC100MBIT_HALF    GPC_ANEG_1
-#define GPC_FRC100MBIT_FULL    (GPC_ANEG_0 | GPC_ANEG_1)
-
-/* auto-negotiation with limited advertised speeds */
-/* mix only with master/slave settings (for copper) */
-#define GPC_ADV_1000_HALF      GPC_ANEG_2
-#define GPC_ADV_1000_FULL      GPC_ANEG_3
-#define GPC_ADV_ALL                    (GPC_ANEG_2 | GPC_ANEG_3)
-
-/* master/slave settings */
-/* only for copper with 1000 Mbps */
-#define GPC_FORCE_MASTER       0
-#define GPC_FORCE_SLAVE                GPC_ANEG_0
-#define GPC_PREF_MASTER                GPC_ANEG_1
-#define GPC_PREF_SLAVE         (GPC_ANEG_1 | GPC_ANEG_0)
-
-/*     GMAC_IRQ_SRC     8 bit  GMAC Interrupt Source Reg (YUKON only) */
-/*     GMAC_IRQ_MSK     8 bit  GMAC Interrupt Mask   Reg (YUKON only) */
-#define GM_IS_TX_CO_OV BIT_5           /* Transmit Counter Overflow IRQ */
-#define GM_IS_RX_CO_OV BIT_4           /* Receive Counter Overflow IRQ */
-#define GM_IS_TX_FF_UR BIT_3           /* Transmit FIFO Underrun */
-#define GM_IS_TX_COMPL BIT_2           /* Frame Transmission Complete */
-#define GM_IS_RX_FF_OR BIT_1           /* Receive FIFO Overrun */
-#define GM_IS_RX_COMPL BIT_0           /* Frame Reception Complete */
-
-#define GMAC_DEF_MSK   (GM_IS_TX_CO_OV | GM_IS_RX_CO_OV | \
-                                               GM_IS_TX_FF_UR)
-
-/*     GMAC_LINK_CTRL          16 bit  GMAC Link Control Reg (YUKON only) */
-                                               /* Bits 15.. 2: reserved */
-#define GMLC_RST_CLR   BIT_1S          /* Clear GMAC Link Reset */
-#define GMLC_RST_SET   BIT_0S          /* Set   GMAC Link Reset */
-
-
-/*     WOL_CTRL_STAT           16 bit  WOL Control/Status Reg */
-#define WOL_CTL_LINK_CHG_OCC                   BIT_15S
-#define WOL_CTL_MAGIC_PKT_OCC                  BIT_14S
-#define WOL_CTL_PATTERN_OCC                            BIT_13S
-
-#define WOL_CTL_CLEAR_RESULT                   BIT_12S
-
-#define WOL_CTL_ENA_PME_ON_LINK_CHG            BIT_11S
-#define WOL_CTL_DIS_PME_ON_LINK_CHG            BIT_10S
-#define WOL_CTL_ENA_PME_ON_MAGIC_PKT   BIT_9S
-#define WOL_CTL_DIS_PME_ON_MAGIC_PKT   BIT_8S
-#define WOL_CTL_ENA_PME_ON_PATTERN             BIT_7S
-#define WOL_CTL_DIS_PME_ON_PATTERN             BIT_6S
-
-#define WOL_CTL_ENA_LINK_CHG_UNIT              BIT_5S
-#define WOL_CTL_DIS_LINK_CHG_UNIT              BIT_4S
-#define WOL_CTL_ENA_MAGIC_PKT_UNIT             BIT_3S
-#define WOL_CTL_DIS_MAGIC_PKT_UNIT             BIT_2S
-#define WOL_CTL_ENA_PATTERN_UNIT               BIT_1S
-#define WOL_CTL_DIS_PATTERN_UNIT               BIT_0S
-
-#define WOL_CTL_DEFAULT                                \
-       (WOL_CTL_DIS_PME_ON_LINK_CHG |  \
-       WOL_CTL_DIS_PME_ON_PATTERN |    \
-       WOL_CTL_DIS_PME_ON_MAGIC_PKT |  \
-       WOL_CTL_DIS_LINK_CHG_UNIT |             \
-       WOL_CTL_DIS_PATTERN_UNIT |              \
-       WOL_CTL_DIS_MAGIC_PKT_UNIT)
-
-/*     WOL_MATCH_CTL            8 bit  WOL Match Control Reg */
-#define WOL_CTL_PATT_ENA(x)                            (BIT_0 << (x))
-
-#define SK_NUM_WOL_PATTERN             7
-#define SK_PATTERN_PER_WORD            4
-#define SK_BITMASK_PATTERN             7
-#define SK_POW_PATTERN_LENGTH  128
-
-#define WOL_LENGTH_MSK         0x7f
-#define WOL_LENGTH_SHIFT       8
-
-
-/* Receive and Transmit Descriptors ******************************************/
-
-/* Transmit Descriptor struct */
-typedef        struct s_HwTxd {
-       SK_U32 volatile TxCtrl; /* Transmit Buffer Control Field */
-       SK_U32  TxNext;                 /* Physical Address Pointer to the next TxD */
-       SK_U32  TxAdrLo;                /* Physical Tx Buffer Address lower dword */
-       SK_U32  TxAdrHi;                /* Physical Tx Buffer Address upper dword */
-       SK_U32  TxStat;                 /* Transmit Frame Status Word */
-#ifndef        SK_USE_REV_DESC
-       SK_U16  TxTcpOffs;              /* TCP Checksum Calculation Start Value */
-       SK_U16  TxRes1;                 /* 16 bit reserved field */
-       SK_U16  TxTcpWp;                /* TCP Checksum Write Position */
-       SK_U16  TxTcpSp;                /* TCP Checksum Calculation Start Position */
-#else  /* SK_USE_REV_DESC */
-       SK_U16  TxRes1;                 /* 16 bit reserved field */
-       SK_U16  TxTcpOffs;              /* TCP Checksum Calculation Start Value */
-       SK_U16  TxTcpSp;                /* TCP Checksum Calculation Start Position */
-       SK_U16  TxTcpWp;                /* TCP Checksum Write Position */
-#endif /* SK_USE_REV_DESC */
-       SK_U32  TxRes2;                 /* 32 bit reserved field */
-} SK_HWTXD;
-
-/* Receive Descriptor struct */
-typedef        struct s_HwRxd {
-       SK_U32 volatile RxCtrl; /* Receive Buffer Control Field */
-       SK_U32  RxNext;                 /* Physical Address Pointer to the next RxD */
-       SK_U32  RxAdrLo;                /* Physical Rx Buffer Address lower dword */
-       SK_U32  RxAdrHi;                /* Physical Rx Buffer Address upper dword */
-       SK_U32  RxStat;                 /* Receive Frame Status Word */
-       SK_U32  RxTiSt;                 /* Receive Time Stamp (from XMAC on GENESIS) */
-#ifndef        SK_USE_REV_DESC
-       SK_U16  RxTcpSum1;              /* TCP Checksum 1 */
-       SK_U16  RxTcpSum2;              /* TCP Checksum 2 */
-       SK_U16  RxTcpSp1;               /* TCP Checksum Calculation Start Position 1 */
-       SK_U16  RxTcpSp2;               /* TCP Checksum Calculation Start Position 2 */
-#else  /* SK_USE_REV_DESC */
-       SK_U16  RxTcpSum2;              /* TCP Checksum 2 */
-       SK_U16  RxTcpSum1;              /* TCP Checksum 1 */
-       SK_U16  RxTcpSp2;               /* TCP Checksum Calculation Start Position 2 */
-       SK_U16  RxTcpSp1;               /* TCP Checksum Calculation Start Position 1 */
-#endif /* SK_USE_REV_DESC */
-} SK_HWRXD;
-
-/*
- * Drivers which use the reverse descriptor feature (PCI_OUR_REG_2)
- * should set the define SK_USE_REV_DESC.
- * Structures are 'normaly' not endianess dependent. But in
- * this case the SK_U16 fields are bound to bit positions inside the
- * descriptor. RxTcpSum1 e.g. must start at bit 0 within the 6.th DWord.
- * The bit positions inside a DWord are of course endianess dependent and
- * swaps if the DWord is swapped by the hardware.
- */
-
-
-/* Descriptor Bit Definition */
-/*     TxCtrl          Transmit Buffer Control Field */
-/*     RxCtrl          Receive  Buffer Control Field */
-#define BMU_OWN                        BIT_31  /* OWN bit: 0=host/1=BMU */
-#define BMU_STF                        BIT_30  /* Start of Frame */
-#define BMU_EOF                        BIT_29  /* End of Frame */
-#define BMU_IRQ_EOB            BIT_28  /* Req "End of Buffer" IRQ */
-#define BMU_IRQ_EOF            BIT_27  /* Req "End of Frame" IRQ */
-/* TxCtrl specific bits */
-#define BMU_STFWD              BIT_26  /* (Tx) Store & Forward Frame */
-#define BMU_NO_FCS             BIT_25  /* (Tx) Disable MAC FCS (CRC) generation */
-#define BMU_SW                 BIT_24  /* (Tx) 1 bit res. for SW use */
-/* RxCtrl specific bits */
-#define BMU_DEV_0              BIT_26  /* (Rx) Transfer data to Dev0 */
-#define BMU_STAT_VAL   BIT_25  /* (Rx) Rx Status Valid */
-#define BMU_TIST_VAL   BIT_24  /* (Rx) Rx TimeStamp Valid */
-                                                               /* Bit 23..16:  BMU Check Opcodes */
-#define BMU_CHECK              (0x55L<<16)     /* Default BMU check */
-#define BMU_TCP_CHECK  (0x56L<<16)     /* Descr with TCP ext */
-#define BMU_UDP_CHECK  (0x57L<<16)     /* Descr with UDP ext (YUKON only) */
-#define BMU_BBC                        0xFFFFL /* Bit 15.. 0:  Buffer Byte Counter */
-
-/*     TxStat          Transmit Frame Status Word */
-/*     RxStat          Receive Frame Status Word */
-/*
- *Note: TxStat is reserved for ASIC loopback mode only
- *
- *     The Bits of the Status words are defined in xmac_ii.h
- *     (see XMR_FS bits)
- */
-
-/* other defines *************************************************************/
-
-/*
- * FlashProm specification
- */
-#define MAX_PAGES      0x20000L        /* Every byte has a single page */
-#define MAX_FADDR      1                       /* 1 byte per page */
-#define SKFDDI_PSZ     8                       /* address PROM size */
-
-/* macros ********************************************************************/
-
-/*
- * Receive and Transmit Queues
- */
-#define Q_R1   0x0000          /* Receive Queue 1 */
-#define Q_R2   0x0080          /* Receive Queue 2 */
-#define Q_XS1  0x0200          /* Synchronous Transmit Queue 1 */
-#define Q_XA1  0x0280          /* Asynchronous Transmit Queue 1 */
-#define Q_XS2  0x0300          /* Synchronous Transmit Queue 2 */
-#define Q_XA2  0x0380          /* Asynchronous Transmit Queue 2 */
-
-/*
- *     Macro Q_ADDR()
- *
- *     Use this macro to access the Receive and Transmit Queue Registers.
- *
- * para:
- *     Queue   Queue to access.
- *                             Values: Q_R1, Q_R2, Q_XS1, Q_XA1, Q_XS2, and Q_XA2
- *     Offs    Queue register offset.
- *                             Values: Q_D, Q_DA_L ... Q_T2, Q_T3
- *
- * usage       SK_IN32(pAC, Q_ADDR(Q_R2, Q_BC), pVal)
- */
-#define Q_ADDR(Queue, Offs)    (B8_Q_REGS + (Queue) + (Offs))
-
-/*
- *     Macro RB_ADDR()
- *
- *     Use this macro to access the RAM Buffer Registers.
- *
- * para:
- *     Queue   Queue to access.
- *                             Values: Q_R1, Q_R2, Q_XS1, Q_XA1, Q_XS2, and Q_XA2
- *     Offs    Queue register offset.
- *                             Values: RB_START, RB_END ... RB_LEV, RB_CTRL
- *
- * usage       SK_IN32(pAC, RB_ADDR(Q_R2, RB_RP), pVal)
- */
-#define RB_ADDR(Queue, Offs)   (B16_RAM_REGS + (Queue) + (Offs))
-
-
-/*
- * MAC Related Registers
- */
-#define MAC_1          0        /* belongs to the port near the slot */
-#define MAC_2          1       /* belongs to the port far away from the slot */
-
-/*
- *     Macro MR_ADDR()
- *
- *     Use this macro to access a MAC Related Registers inside the ASIC.
- *
- * para:
- *     Mac             MAC to access.
- *                             Values: MAC_1, MAC_2
- *     Offs    MAC register offset.
- *                             Values: RX_MFF_EA, RX_MFF_WP ... LNK_LED_REG,
- *                                             TX_MFF_EA, TX_MFF_WP ... TX_LED_TST
- *
- * usage       SK_IN32(pAC, MR_ADDR(MAC_1, TX_MFF_EA), pVal)
- */
-#define MR_ADDR(Mac, Offs)     (((Mac) << 7) + (Offs))
-
-#ifdef SK_LITTLE_ENDIAN
-#define XM_WORD_LO     0
-#define XM_WORD_HI     1
-#else  /* !SK_LITTLE_ENDIAN */
-#define XM_WORD_LO     1
-#define XM_WORD_HI     0
-#endif /* !SK_LITTLE_ENDIAN */
-
-
-/*
- * macros to access the XMAC (GENESIS only)
- *
- * XM_IN16(),          to read a 16 bit register (e.g. XM_MMU_CMD)
- * XM_OUT16(),         to write a 16 bit register (e.g. XM_MMU_CMD)
- * XM_IN32(),          to read a 32 bit register (e.g. XM_TX_EV_CNT)
- * XM_OUT32(),         to write a 32 bit register (e.g. XM_TX_EV_CNT)
- * XM_INADDR(),                to read a network address register (e.g. XM_SRC_CHK)
- * XM_OUTADDR(),       to write a network address register (e.g. XM_SRC_CHK)
- * XM_INHASH(),                to read the XM_HSM_CHK register
- * XM_OUTHASH()                to write the XM_HSM_CHK register
- *
- * para:
- *     Mac             XMAC to access          values: MAC_1 or MAC_2
- *     IoC             I/O context needed for SK I/O macros
- *     Reg             XMAC Register to read or write
- *     (p)Val  Value or pointer to the value which should be read or written
- *
- * usage:      XM_OUT16(IoC, MAC_1, XM_MMU_CMD, Value);
- */
-
-#define XMA(Mac, Reg)                                                                  \
-       ((BASE_XMAC_1 + (Mac) * (BASE_XMAC_2 - BASE_XMAC_1)) | ((Reg) << 1))
-
-#define XM_IN16(IoC, Mac, Reg, pVal)                                   \
-       SK_IN16((IoC), XMA((Mac), (Reg)), (pVal))
-
-#define XM_OUT16(IoC, Mac, Reg, Val)                                   \
-       SK_OUT16((IoC), XMA((Mac), (Reg)), (Val))
-
-#define XM_IN32(IoC, Mac, Reg, pVal) {                                 \
-       SK_IN16((IoC), XMA((Mac), (Reg)),                                       \
-               (SK_U16 *)&((SK_U16 *)(pVal))[XM_WORD_LO]);             \
-       SK_IN16((IoC), XMA((Mac), (Reg+2)),                                     \
-               (SK_U16 *)&((SK_U16 *)(pVal))[XM_WORD_HI]);             \
-}
-
-#define XM_OUT32(IoC, Mac, Reg, Val) {                                                                         \
-       SK_OUT16((IoC), XMA((Mac), (Reg)), (SK_U16)((Val) & 0xffffL));                  \
-       SK_OUT16((IoC), XMA((Mac), (Reg+2)), (SK_U16)(((Val) >> 16) & 0xffffL));\
-}
-
-/* Remember: we are always writing to / reading from LITTLE ENDIAN memory */
-
-#define XM_INADDR(IoC, Mac, Reg, pVal) {                               \
-       SK_U16  Word;                                                                           \
-       SK_U8   *pByte;                                                                         \
-       pByte = (SK_U8 *)&((SK_U8 *)(pVal))[0];                         \
-       SK_IN16((IoC), XMA((Mac), (Reg)), &Word);                       \
-       pByte[0] = (SK_U8)(Word  & 0x00ff);                                     \
-       pByte[1] = (SK_U8)((Word >> 8) & 0x00ff);                       \
-       SK_IN16((IoC), XMA((Mac), (Reg+2)), &Word);                     \
-       pByte[2] = (SK_U8)(Word  & 0x00ff);                                     \
-       pByte[3] = (SK_U8)((Word >> 8) & 0x00ff);                       \
-       SK_IN16((IoC), XMA((Mac), (Reg+4)), &Word);                     \
-       pByte[4] = (SK_U8)(Word  & 0x00ff);                                     \
-       pByte[5] = (SK_U8)((Word >> 8) & 0x00ff);                       \
-}
-
-#define XM_OUTADDR(IoC, Mac, Reg, pVal) {                              \
-       SK_U8   *pByte;                                                                         \
-       pByte = (SK_U8 *)&((SK_U8 *)(pVal))[0];                         \
-       SK_OUT16((IoC), XMA((Mac), (Reg)), (SK_U16)                     \
-               (((SK_U16)(pByte[0]) & 0x00ff) |                                \
-               (((SK_U16)(pByte[1]) << 8) & 0xff00)));                 \
-       SK_OUT16((IoC), XMA((Mac), (Reg+2)), (SK_U16)           \
-               (((SK_U16)(pByte[2]) & 0x00ff) |                                \
-               (((SK_U16)(pByte[3]) << 8) & 0xff00)));                 \
-       SK_OUT16((IoC), XMA((Mac), (Reg+4)), (SK_U16)           \
-               (((SK_U16)(pByte[4]) & 0x00ff) |                                \
-               (((SK_U16)(pByte[5]) << 8) & 0xff00)));                 \
-}
-
-#define XM_INHASH(IoC, Mac, Reg, pVal) {                               \
-       SK_U16  Word;                                                                           \
-       SK_U8   *pByte;                                                                         \
-       pByte = (SK_U8 *)&((SK_U8 *)(pVal))[0];                         \
-       SK_IN16((IoC), XMA((Mac), (Reg)), &Word);                       \
-       pByte[0] = (SK_U8)(Word  & 0x00ff);                                     \
-       pByte[1] = (SK_U8)((Word >> 8) & 0x00ff);                       \
-       SK_IN16((IoC), XMA((Mac), (Reg+2)), &Word);                     \
-       pByte[2] = (SK_U8)(Word  & 0x00ff);                                     \
-       pByte[3] = (SK_U8)((Word >> 8) & 0x00ff);                       \
-       SK_IN16((IoC), XMA((Mac), (Reg+4)), &Word);                     \
-       pByte[4] = (SK_U8)(Word  & 0x00ff);                                     \
-       pByte[5] = (SK_U8)((Word >> 8) & 0x00ff);                       \
-       SK_IN16((IoC), XMA((Mac), (Reg+6)), &Word);                     \
-       pByte[6] = (SK_U8)(Word  & 0x00ff);                                     \
-       pByte[7] = (SK_U8)((Word >> 8) & 0x00ff);                       \
-}
-
-#define XM_OUTHASH(IoC, Mac, Reg, pVal) {                              \
-       SK_U8   *pByte;                                                                         \
-       pByte = (SK_U8 *)&((SK_U8 *)(pVal))[0];                         \
-       SK_OUT16((IoC), XMA((Mac), (Reg)), (SK_U16)                     \
-               (((SK_U16)(pByte[0]) & 0x00ff)|                                 \
-               (((SK_U16)(pByte[1]) << 8) & 0xff00)));                 \
-       SK_OUT16((IoC), XMA((Mac), (Reg+2)), (SK_U16)           \
-               (((SK_U16)(pByte[2]) & 0x00ff)|                                 \
-               (((SK_U16)(pByte[3]) << 8) & 0xff00)));                 \
-       SK_OUT16((IoC), XMA((Mac), (Reg+4)), (SK_U16)           \
-               (((SK_U16)(pByte[4]) & 0x00ff)|                                 \
-               (((SK_U16)(pByte[5]) << 8) & 0xff00)));                 \
-       SK_OUT16((IoC), XMA((Mac), (Reg+6)), (SK_U16)           \
-               (((SK_U16)(pByte[6]) & 0x00ff)|                                 \
-               (((SK_U16)(pByte[7]) << 8) & 0xff00)));                 \
-}
-
-/*
- * macros to access the GMAC (YUKON only)
- *
- * GM_IN16(),          to read  a 16 bit register (e.g. GM_GP_STAT)
- * GM_OUT16(),         to write a 16 bit register (e.g. GM_GP_CTRL)
- * GM_IN32(),          to read  a 32 bit register (e.g. GM_)
- * GM_OUT32(),         to write a 32 bit register (e.g. GM_)
- * GM_INADDR(),                to read  a network address register (e.g. GM_SRC_ADDR_1L)
- * GM_OUTADDR(),       to write a network address register (e.g. GM_SRC_ADDR_2L)
- * GM_INHASH(),                to read  the GM_MC_ADDR_H1 register
- * GM_OUTHASH()                to write the GM_MC_ADDR_H1 register
- *
- * para:
- *     Mac             GMAC to access          values: MAC_1 or MAC_2
- *     IoC             I/O context needed for SK I/O macros
- *     Reg             GMAC Register to read or write
- *     (p)Val  Value or pointer to the value which should be read or written
- *
- * usage:      GM_OUT16(IoC, MAC_1, GM_GP_CTRL, Value);
- */
-
-#define GMA(Mac, Reg)                                                                  \
-       ((BASE_GMAC_1 + (Mac) * (BASE_GMAC_2 - BASE_GMAC_1)) | (Reg))
-
-#define GM_IN16(IoC, Mac, Reg, pVal)                                   \
-       SK_IN16((IoC), GMA((Mac), (Reg)), (pVal))
-
-#define GM_OUT16(IoC, Mac, Reg, Val)                                   \
-       SK_OUT16((IoC), GMA((Mac), (Reg)), (Val))
-
-#define GM_IN32(IoC, Mac, Reg, pVal) {                                 \
-       SK_IN16((IoC), GMA((Mac), (Reg)),                                       \
-               (SK_U16 *)&((SK_U16 *)(pVal))[XM_WORD_LO]);             \
-       SK_IN16((IoC), GMA((Mac), (Reg+4)),                                     \
-               (SK_U16 *)&((SK_U16 *)(pVal))[XM_WORD_HI]);             \
-}
-
-#define GM_OUT32(IoC, Mac, Reg, Val) {                                                                         \
-       SK_OUT16((IoC), GMA((Mac), (Reg)), (SK_U16)((Val) & 0xffffL));                  \
-       SK_OUT16((IoC), GMA((Mac), (Reg+4)), (SK_U16)(((Val) >> 16) & 0xffffL));\
-}
-
-#define GM_INADDR(IoC, Mac, Reg, pVal) {                               \
-       SK_U16  Word;                                                                           \
-       SK_U8   *pByte;                                                                         \
-       pByte = (SK_U8 *)&((SK_U8 *)(pVal))[0];                         \
-       SK_IN16((IoC), GMA((Mac), (Reg)), &Word);                       \
-       pByte[0] = (SK_U8)(Word  & 0x00ff);                                     \
-       pByte[1] = (SK_U8)((Word >> 8) & 0x00ff);                       \
-       SK_IN16((IoC), GMA((Mac), (Reg+4)), &Word);                     \
-       pByte[2] = (SK_U8)(Word  & 0x00ff);                                     \
-       pByte[3] = (SK_U8)((Word >> 8) & 0x00ff);                       \
-       SK_IN16((IoC), GMA((Mac), (Reg+8)), &Word);                     \
-       pByte[4] = (SK_U8)(Word  & 0x00ff);                                     \
-       pByte[5] = (SK_U8)((Word >> 8) & 0x00ff);                       \
-}
-
-#define GM_OUTADDR(IoC, Mac, Reg, pVal) {                              \
-       SK_U8   *pByte;                                                                         \
-       pByte = (SK_U8 *)&((SK_U8 *)(pVal))[0];                         \
-       SK_OUT16((IoC), GMA((Mac), (Reg)), (SK_U16)                     \
-               (((SK_U16)(pByte[0]) & 0x00ff) |                                \
-               (((SK_U16)(pByte[1]) << 8) & 0xff00)));                 \
-       SK_OUT16((IoC), GMA((Mac), (Reg+4)), (SK_U16)           \
-               (((SK_U16)(pByte[2]) & 0x00ff) |                                \
-               (((SK_U16)(pByte[3]) << 8) & 0xff00)));                 \
-       SK_OUT16((IoC), GMA((Mac), (Reg+8)), (SK_U16)           \
-               (((SK_U16)(pByte[4]) & 0x00ff) |                                \
-               (((SK_U16)(pByte[5]) << 8) & 0xff00)));                 \
-}
-
-#define GM_INHASH(IoC, Mac, Reg, pVal) {                               \
-       SK_U16  Word;                                                                           \
-       SK_U8   *pByte;                                                                         \
-       pByte = (SK_U8 *)&((SK_U8 *)(pVal))[0];                         \
-       SK_IN16((IoC), GMA((Mac), (Reg)), &Word);                       \
-       pByte[0] = (SK_U8)(Word  & 0x00ff);                                     \
-       pByte[1] = (SK_U8)((Word >> 8) & 0x00ff);                       \
-       SK_IN16((IoC), GMA((Mac), (Reg+4)), &Word);                     \
-       pByte[2] = (SK_U8)(Word  & 0x00ff);                                     \
-       pByte[3] = (SK_U8)((Word >> 8) & 0x00ff);                       \
-       SK_IN16((IoC), GMA((Mac), (Reg+8)), &Word);                     \
-       pByte[4] = (SK_U8)(Word  & 0x00ff);                                     \
-       pByte[5] = (SK_U8)((Word >> 8) & 0x00ff);                       \
-       SK_IN16((IoC), GMA((Mac), (Reg+12)), &Word);            \
-       pByte[6] = (SK_U8)(Word  & 0x00ff);                                     \
-       pByte[7] = (SK_U8)((Word >> 8) & 0x00ff);                       \
-}
-
-#define GM_OUTHASH(IoC, Mac, Reg, pVal) {                              \
-       SK_U8   *pByte;                                                                         \
-       pByte = (SK_U8 *)&((SK_U8 *)(pVal))[0];                         \
-       SK_OUT16((IoC), GMA((Mac), (Reg)), (SK_U16)                     \
-               (((SK_U16)(pByte[0]) & 0x00ff)|                                 \
-               (((SK_U16)(pByte[1]) << 8) & 0xff00)));                 \
-       SK_OUT16((IoC), GMA((Mac), (Reg+4)), (SK_U16)           \
-               (((SK_U16)(pByte[2]) & 0x00ff)|                                 \
-               (((SK_U16)(pByte[3]) << 8) & 0xff00)));                 \
-       SK_OUT16((IoC), GMA((Mac), (Reg+8)), (SK_U16)           \
-               (((SK_U16)(pByte[4]) & 0x00ff)|                                 \
-               (((SK_U16)(pByte[5]) << 8) & 0xff00)));                 \
-       SK_OUT16((IoC), GMA((Mac), (Reg+12)), (SK_U16)          \
-               (((SK_U16)(pByte[6]) & 0x00ff)|                                 \
-               (((SK_U16)(pByte[7]) << 8) & 0xff00)));                 \
-}
-
-/*
- * Different MAC Types
- */
-#define SK_MAC_XMAC            0        /* Xaqti XMAC II */
-#define SK_MAC_GMAC            1       /* Marvell GMAC */
-
-/*
- * Different PHY Types
- */
-#define SK_PHY_XMAC                    0        /* integrated in XMAC II */
-#define SK_PHY_BCOM                    1       /* Broadcom BCM5400 */
-#define SK_PHY_LONE                    2       /* Level One LXT1000 */
-#define SK_PHY_NAT                     3       /* National DP83891 */
-#define SK_PHY_MARV_COPPER     4       /* Marvell 88E1011S */
-#define SK_PHY_MARV_FIBER      5       /* Marvell 88E1011S working on fiber */
-
-/*
- * PHY addresses (bits 12..8 of PHY address reg)
- */
-#define PHY_ADDR_XMAC  (0<<8)
-#define PHY_ADDR_BCOM  (1<<8)
-#define PHY_ADDR_LONE  (3<<8)
-#define PHY_ADDR_NAT   (0<<8)
-
-/* GPHY address (bits 15..11 of SMI control reg) */
-#define PHY_ADDR_MARV  0
-
-/*
- * macros to access the PHY
- *
- * PHY_READ()          read a 16 bit value from the PHY
- * PHY_WRITE()         write a 16 bit value to the PHY
- *
- * para:
- *     IoC             I/O context needed for SK I/O macros
- *     pPort   Pointer to port struct for PhyAddr
- *     Mac             XMAC to access          values: MAC_1 or MAC_2
- *     PhyReg  PHY Register to read or write
- *     (p)Val  Value or pointer to the value which should be read or
- *                     written.
- *
- * usage:      PHY_READ(IoC, pPort, MAC_1, PHY_CTRL, Value);
- * Warning: a PHY_READ on an uninitialized PHY (PHY still in reset) never
- *          comes back. This is checked in DEBUG mode.
- */
-#ifndef DEBUG
-#define PHY_READ(IoC, pPort, Mac, PhyReg, pVal) {                                              \
-       SK_U16 Mmu;                                                                                                             \
-                                                                                                                                               \
-       XM_OUT16((IoC), (Mac), XM_PHY_ADDR, (PhyReg) | (pPort)->PhyAddr);       \
-       XM_IN16((IoC), (Mac), XM_PHY_DATA, (pVal));                                                     \
-       if ((pPort)->PhyType != SK_PHY_XMAC) {                                                          \
-               do {                                                                                                                    \
-                       XM_IN16((IoC), (Mac), XM_MMU_CMD, &Mmu);                                        \
-               } while ((Mmu & XM_MMU_PHY_RDY) == 0);                                                  \
-               XM_IN16((IoC), (Mac), XM_PHY_DATA, (pVal));                                             \
-       }                                                                                                                                       \
-}
-#else
-#define PHY_READ(IoC, pPort, Mac, PhyReg, pVal) {                                              \
-       SK_U16 Mmu;                                                                                                             \
-       int __i = 0;                                                                                                            \
-                                                                                                                                               \
-       XM_OUT16((IoC), (Mac), XM_PHY_ADDR, (PhyReg) | (pPort)->PhyAddr);       \
-       XM_IN16((IoC), (Mac), XM_PHY_DATA, (pVal));                                                     \
-       if ((pPort)->PhyType != SK_PHY_XMAC) {                                                          \
-               do {                                                                                                                    \
-                       XM_IN16((IoC), (Mac), XM_MMU_CMD, &Mmu);                                        \
-                       __i++;                                                                                                          \
-                       if (__i > 100000) {                                                                                     \
-                               SK_DBG_PRINTF("*****************************\n");               \
-                               SK_DBG_PRINTF("PHY_READ on uninitialized PHY\n");               \
-                               SK_DBG_PRINTF("*****************************\n");               \
-                               break;                                                                                                  \
-                       }                                                                                                                       \
-               } while ((Mmu & XM_MMU_PHY_RDY) == 0);                                                  \
-               XM_IN16((IoC), (Mac), XM_PHY_DATA, (pVal));                                             \
-       }                                                                                                                                       \
-}
-#endif /* DEBUG */
-
-#define PHY_WRITE(IoC, pPort, Mac, PhyReg, Val) {                                              \
-       SK_U16 Mmu;                                                                                                                     \
-                                                                                                                                               \
-       if ((pPort)->PhyType != SK_PHY_XMAC) {                                                          \
-               do {                                                                                                                    \
-                       XM_IN16((IoC), (Mac), XM_MMU_CMD, &Mmu);                                        \
-               } while ((Mmu & XM_MMU_PHY_BUSY) != 0);                                                 \
-       }                                                                                                                                       \
-       XM_OUT16((IoC), (Mac), XM_PHY_ADDR, (PhyReg) | (pPort)->PhyAddr);       \
-       XM_OUT16((IoC), (Mac), XM_PHY_DATA, (Val));                                                     \
-       if ((pPort)->PhyType != SK_PHY_XMAC) {                                                          \
-               do {                                                                                                                    \
-                       XM_IN16((IoC), (Mac), XM_MMU_CMD, &Mmu);                                        \
-               } while ((Mmu & XM_MMU_PHY_BUSY) != 0);                                                 \
-       }                                                                                                                                       \
-}
-
-/*
- *     Macro PCI_C()
- *
- *     Use this macro to access PCI config register from the I/O space.
- *
- * para:
- *     Addr    PCI configuration register to access.
- *                     Values: PCI_VENDOR_ID ... PCI_VPD_ADR_REG,
- *
- * usage       SK_IN16(pAC, PCI_C(PCI_VENDOR_ID), pVal);
- */
-#define PCI_C(Addr)    (B7_CFG_SPC + (Addr))   /* PCI Config Space */
-
-/*
- *     Macro SK_HW_ADDR(Base, Addr)
- *
- *     Calculates the effective HW address
- *
- * para:
- *     Base    I/O or memory base address
- *     Addr    Address offset
- *
- * usage:      May be used in SK_INxx and SK_OUTxx macros
- *             #define SK_IN8(pAC, Addr, pVal) ...\
- *                     *pVal = (SK_U8)inp(SK_HW_ADDR(pAC->Hw.Iop, Addr)))
- */
-#ifdef SK_MEM_MAPPED_IO
-#define SK_HW_ADDR(Base, Addr) ((Base) + (Addr))
-#else  /* SK_MEM_MAPPED_IO */
-#define SK_HW_ADDR(Base, Addr) \
-                       ((Base) + (((Addr) & 0x7f) | (((Addr) >> 7 > 0) ? 0x80 : 0)))
-#endif /* SK_MEM_MAPPED_IO */
-
-#define SZ_LONG        (sizeof(SK_U32))
-
-/*
- *     Macro SK_HWAC_LINK_LED()
- *
- *     Use this macro to set the link LED mode.
- * para:
- *     pAC             Pointer to adapter context struct
- *     IoC             I/O context needed for SK I/O macros
- *  Port       Port number
- *     Mode    Mode to set for this LED
- */
-#define SK_HWAC_LINK_LED(pAC, IoC, Port, Mode) \
-       SK_OUT8(IoC, MR_ADDR(Port, LNK_LED_REG), Mode);
-
-
-/* typedefs *******************************************************************/
-
-
-/* function prototypes ********************************************************/
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* __INC_SKGEHW_H */
+/******************************************************************************
+ *
+ * Name:       skgehw.h
+ * Project:    GEnesis, PCI Gigabit Ethernet Adapter
+ * Version:    $Revision: 1.1.1.1 $
+ * Date:       $Date: 2009/03/25 22:22:09 $
+ * Purpose:    Defines and Macros for the Gigabit Ethernet Adapter Product Family
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ *     (C)Copyright 1998-2003 SysKonnect GmbH.
+ *
+ *     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.
+ *
+ *     The information in this file is provided "AS IS" without warranty.
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ * History:
+ * $Log: skgehw.h,v $
+ * Revision 1.1.1.1  2009/03/25 22:22:09  kenagy
+ * no message
+ *
+ * Revision 1.49  2003/01/28 09:43:49  rschmidt
+ * Added defines for PCI-Spec. 2.3 IRQ
+ * Added defines for CLK_RUN (YUKON-Lite)
+ * Editorial changes
+ *
+ * Revision 1.48  2002/12/05 10:25:11  rschmidt
+ * Added defines for Half Duplex Burst Mode On/Off
+ * Added defines for Rx GMAC FIFO Flush feature
+ * Editorial changes
+ *
+ * Revision 1.47  2002/11/12 17:01:31  rschmidt
+ * Added defines for WOL_CTL_DEFAULT
+ * Editorial changes
+ *
+ * Revision 1.46  2002/10/14 14:47:57  rschmidt
+ * Corrected bit mask for HW self test results
+ * Added defines for WOL Registers
+ * Editorial changes
+ *
+ * Revision 1.45  2002/10/11 09:25:22  mkarl
+ * Added bit mask for HW self test results.
+ *
+ * Revision 1.44  2002/08/16 14:44:36  rschmidt
+ * Added define GPC_HWCFG_GMII_FIB for YUKON Fiber
+ *
+ * Revision 1.43  2002/08/12 13:31:50  rschmidt
+ * Corrected macros for GMAC Address Registers: GM_INADDR(),
+ * GM_OUTADDR(), GM_INHASH, GM_OUTHASH.
+ * Editorial changes
+ *
+ * Revision 1.42  2002/08/08 15:37:56  rschmidt
+ * Added defines for Power Management Capabilities
+ * Editorial changes
+ *
+ * Revision 1.41  2002/07/23 16:02:25  rschmidt
+ * Added macro WOL_REG() to access WOL reg. (HW-Bug in YUKON 1st rev.)
+ *
+ * Revision 1.40  2002/07/15 15:41:37  rschmidt
+ * Added new defines for Power Management Cap. & Control
+ * Editorial changes
+ *
+ * Revision 1.39  2002/06/10 09:37:07  rschmidt
+ * Added macros for the ADDR-Modul
+ *
+ * Revision 1.38  2002/06/05 08:15:19  rschmidt
+ * Added defines for WOL Registers
+ * Editorial changes
+ *
+ * Revision 1.37  2002/04/25 11:39:23  rschmidt
+ * Added new defines for PCI Our Register 1
+ * Added new registers and defines for YUKON (Rx FIFO, Tx FIFO,
+ * Time Stamp Timer, GMAC Control, GPHY Control,Link Control,
+ * GMAC IRQ Source and Mask, Wake-up Frame Pattern Match);
+ * Added new defines for Control/Status (VAUX available)
+ * Added Chip ID for YUKON
+ * Added define for descriptors with UDP ext. for YUKON
+ * Added macros to access the GMAC
+ * Added new Phy Type for Marvell 88E1011S (GPHY)
+ * Editorial changes
+ *
+ * Revision 1.36  2000/11/09 12:32:49  rassmann
+ * Renamed variables.
+ *
+ * Revision 1.35  2000/05/19 10:17:13  cgoos
+ * Added inactivity check in PHY_READ (in DEBUG mode only).
+ *
+ * Revision 1.34  1999/11/22 13:53:40  cgoos
+ * Changed license header to GPL.
+ *
+ * Revision 1.33  1999/08/27 11:17:10  malthoff
+ * It's more savely to put brackets around macro parameters.
+ * Brackets added for PHY_READ and PHY_WRITE.
+ *
+ * Revision 1.32  1999/05/19 07:31:01  cgoos
+ * Changes for 1000Base-T.
+ * Added HWAC_LINK_LED macro.
+ *
+ * Revision 1.31  1999/03/12 13:27:40  malthoff
+ * Remove __STDC__.
+ *
+ * Revision 1.30  1999/02/09 09:28:20  malthoff
+ * Add PCI_ERRBITS.
+ *
+ * Revision 1.29  1999/01/26 08:55:48  malthoff
+ * Bugfix: The 16 bit field relations inside the descriptor are
+ *     endianess dependend if the descriptor reversal feature
+ *     (PCI_REV_DESC bit in PCI_OUR_REG_2) is enabled.
+ *     Drivers which use this feature has to set the define
+ *     SK_USE_REV_DESC.
+ *
+ * Revision 1.28  1998/12/10 11:10:22  malthoff
+ * bug fix: IS_IRQ_STAT and IS_IRQ_MST_ERR has been twisted.
+ *
+ * Revision 1.27  1998/11/13 14:19:21  malthoff
+ * Bug Fix: The bit definition of B3_PA_CTRL has completely
+ * changed from HW Spec v1.3 to v1.5.
+ *
+ * Revision 1.26  1998/11/04 08:31:48  cgoos
+ * Fixed byte ordering in XM_OUTADDR/XM_OUTHASH macros.
+ *
+ * Revision 1.25  1998/11/04 07:16:25  cgoos
+ * Changed byte ordering in XM_INADDR/XM_INHASH again.
+ *
+ * Revision 1.24  1998/11/02 11:08:43  malthoff
+ * RxCtrl and TxCtrl must be volatile.
+ *
+ * Revision 1.23  1998/10/28 13:50:45  malthoff
+ * Fix: Endian support missing in XM_IN/OUT-ADDR/HASH macros.
+ *
+ * Revision 1.22  1998/10/26 08:01:36  malthoff
+ * RX_MFF_CTRL1 is split up into RX_MFF_CTRL1,
+ * RX_MFF_STAT_TO, and RX_MFF_TIST_TO.
+ * TX_MFF_CTRL1 is split up TX_MFF_CTRL1 and TX_MFF_WAF.
+ *
+ * Revision 1.21  1998/10/20 07:43:10  malthoff
+ * Fix: XM_IN/OUT/ADDR/HASH macros:
+ * The pointer must be casted.
+ *
+ * Revision 1.20  1998/10/19 15:53:59  malthoff
+ * Remove ML proto definitions.
+ *
+ * Revision 1.19  1998/10/16 14:40:17  gklug
+ * fix: typo B0_XM_IMSK regs
+ *
+ * Revision 1.18  1998/10/16 09:46:54  malthoff
+ * Remove temp defines for ML diag prototype.
+ * Fix register definition for B0_XM1_PHY_DATA, B0_XM1_PHY_DATA
+ * B0_XM2_PHY_DATA, B0_XM2_PHY_ADDR, B0_XA1_CSR, B0_XS1_CSR,
+ * B0_XS2_CSR, and B0_XA2_CSR.
+ *
+ * Revision 1.17  1998/10/14 06:03:14  cgoos
+ * Changed shifted constant to ULONG.
+ *
+ * Revision 1.16  1998/10/09 07:05:41  malthoff
+ * Rename ALL_PA_ENA_TO to PA_ENA_TO_ALL.
+ *
+ * Revision 1.15  1998/10/05 07:54:23  malthoff
+ * Split up RB_CTRL and it's bit definition into
+ * RB_CTRL, RB_TST1, and RB_TST2.
+ * Rename RB_RX_HTPP to RB_RX_LTPP.
+ * Add ALL_PA_ENA_TO. Modify F_WATER_MARK
+ * according to HW Spec. v1.5.
+ * Add MFF_TX_CTRL_DEF.
+ *
+ * Revision 1.14  1998/09/28 13:31:16  malthoff
+ * bug fix: B2_MAC_3 is 0x110 not 0x114
+ *
+ * Revision 1.13  1998/09/24 14:42:56  malthoff
+ * Split the RX_MFF_TST into RX_MFF_CTRL2,
+ * RX_MFF_TST1, and RX_MFF_TST2.
+ * Rename RX_MFF_CTRL to RX_MFF_CTRL1.
+ * Add BMU bit CSR_SV_IDLE.
+ * Add macros PHY_READ() and PHY_WRITE().
+ * Rename macro SK_ADDR() to SK_HW_ADDR()
+ * because of conflicts with the Address Module.
+ *
+ * Revision 1.12  1998/09/16 07:25:33  malthoff
+ * Change the parameter order in the XM_INxx and XM_OUTxx macros,
+ * to have the IoC as first parameter.
+ *
+ * Revision 1.11  1998/09/03 09:58:41  malthoff
+ * Rework the XM_xxx macros. Use {} instead of () to
+ * be compatible with SK_xxx macros which are defined
+ * with {}.
+ *
+ * Revision 1.10  1998/09/02 11:16:39  malthoff
+ * Temporary modify B2_I2C_SW to make tests with
+ * the GE/ML prototype.
+ *
+ * Revision 1.9  1998/08/19 09:11:49  gklug
+ * fix: struct are removed from c-source (see CCC)
+ * add: typedefs for all structs
+ *
+ * Revision 1.8  1998/08/18 08:27:27  malthoff
+ * Add some temporary workarounds to test GE
+ * sources with the ML.
+ *
+ * Revision 1.7  1998/07/03 14:42:26  malthoff
+ * bug fix: Correct macro XMA().
+ * Add temporary workaround to access the PCI config space over I/O
+ *
+ * Revision 1.6  1998/06/23 11:30:36  malthoff
+ * Remove ';' with ',' in macors.
+ *
+ * Revision 1.5  1998/06/22 14:20:57  malthoff
+ * Add macro SK_ADDR(Base,Addr).
+ *
+ * Revision 1.4  1998/06/19 13:35:43  malthoff
+ * change 'pGec' with 'pAC'
+ *
+ * Revision 1.3  1998/06/17 14:58:16  cvs
+ * Lost keywords reinserted.
+ *
+ * Revision 1.1  1998/06/17 14:16:36  cvs
+ * created
+ *
+ *
+ ******************************************************************************/
+
+#ifndef __INC_SKGEHW_H
+#define __INC_SKGEHW_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+/* defines ********************************************************************/
+
+#define BIT_31         (1UL << 31)
+#define BIT_30         (1L << 30)
+#define BIT_29         (1L << 29)
+#define BIT_28         (1L << 28)
+#define BIT_27         (1L << 27)
+#define BIT_26         (1L << 26)
+#define BIT_25         (1L << 25)
+#define BIT_24         (1L << 24)
+#define BIT_23         (1L << 23)
+#define BIT_22         (1L << 22)
+#define BIT_21         (1L << 21)
+#define BIT_20         (1L << 20)
+#define BIT_19         (1L << 19)
+#define BIT_18         (1L << 18)
+#define BIT_17         (1L << 17)
+#define BIT_16         (1L << 16)
+#define BIT_15         (1L << 15)
+#define BIT_14         (1L << 14)
+#define BIT_13         (1L << 13)
+#define BIT_12         (1L << 12)
+#define BIT_11         (1L << 11)
+#define BIT_10         (1L << 10)
+#define BIT_9          (1L << 9)
+#define BIT_8          (1L << 8)
+#define BIT_7          (1L << 7)
+#define BIT_6          (1L << 6)
+#define BIT_5          (1L << 5)
+#define BIT_4          (1L << 4)
+#define BIT_3          (1L << 3)
+#define BIT_2          (1L << 2)
+#define BIT_1          (1L << 1)
+#define BIT_0          1L
+
+#define BIT_15S                (1U << 15)
+#define BIT_14S                (1 << 14)
+#define BIT_13S                (1 << 13)
+#define BIT_12S                (1 << 12)
+#define BIT_11S                (1 << 11)
+#define BIT_10S                (1 << 10)
+#define BIT_9S         (1 << 9)
+#define BIT_8S         (1 << 8)
+#define BIT_7S         (1 << 7)
+#define BIT_6S         (1 << 6)
+#define BIT_5S         (1 << 5)
+#define BIT_4S         (1 << 4)
+#define BIT_3S         (1 << 3)
+#define BIT_2S         (1 << 2)
+#define BIT_1S         (1 << 1)
+#define BIT_0S         1
+
+#define SHIFT31(x)     ((x) << 31)
+#define SHIFT30(x)     ((x) << 30)
+#define SHIFT29(x)     ((x) << 29)
+#define SHIFT28(x)     ((x) << 28)
+#define SHIFT27(x)     ((x) << 27)
+#define SHIFT26(x)     ((x) << 26)
+#define SHIFT25(x)     ((x) << 25)
+#define SHIFT24(x)     ((x) << 24)
+#define SHIFT23(x)     ((x) << 23)
+#define SHIFT22(x)     ((x) << 22)
+#define SHIFT21(x)     ((x) << 21)
+#define SHIFT20(x)     ((x) << 20)
+#define SHIFT19(x)     ((x) << 19)
+#define SHIFT18(x)     ((x) << 18)
+#define SHIFT17(x)     ((x) << 17)
+#define SHIFT16(x)     ((x) << 16)
+#define SHIFT15(x)     ((x) << 15)
+#define SHIFT14(x)     ((x) << 14)
+#define SHIFT13(x)     ((x) << 13)
+#define SHIFT12(x)     ((x) << 12)
+#define SHIFT11(x)     ((x) << 11)
+#define SHIFT10(x)     ((x) << 10)
+#define SHIFT9(x)      ((x) << 9)
+#define SHIFT8(x)      ((x) << 8)
+#define SHIFT7(x)      ((x) << 7)
+#define SHIFT6(x)      ((x) << 6)
+#define SHIFT5(x)      ((x) << 5)
+#define SHIFT4(x)      ((x) << 4)
+#define SHIFT3(x)      ((x) << 3)
+#define SHIFT2(x)      ((x) << 2)
+#define SHIFT1(x)      ((x) << 1)
+#define SHIFT0(x)      ((x) << 0)
+
+/*
+ * Configuration Space header
+ * Since this module is used for different OS', those may be
+ * duplicate on some of them (e.g. Linux). But to keep the
+ * common source, we have to live with this...
+ */
+#define PCI_VENDOR_ID  0x00    /* 16 bit       Vendor ID */
+#define PCI_DEVICE_ID  0x02    /* 16 bit       Device ID */
+#define PCI_COMMAND            0x04    /* 16 bit       Command */
+#define PCI_STATUS             0x06    /* 16 bit       Status */
+#define PCI_REV_ID             0x08    /*  8 bit       Revision ID */
+#if 0
+#define PCI_CLASS_CODE 0x09    /* 24 bit       Class Code */
+#endif
+#define PCI_CACHE_LSZ  0x0c    /*  8 bit       Cache Line Size */
+#define PCI_LAT_TIM            0x0d    /*  8 bit       Latency Timer */
+#define PCI_HEADER_T   0x0e    /*  8 bit       Header Type */
+#define PCI_BIST               0x0f    /*  8 bit       Built-in selftest */
+#define PCI_BASE_1ST   0x10    /* 32 bit       1st Base address */
+#define PCI_BASE_2ND   0x14    /* 32 bit       2nd Base address */
+       /* Byte 0x18..0x2b:     reserved */
+#define PCI_SUB_VID            0x2c    /* 16 bit       Subsystem Vendor ID */
+#define PCI_SUB_ID             0x2e    /* 16 bit       Subsystem ID */
+#define PCI_BASE_ROM   0x30    /* 32 bit       Expansion ROM Base Address */
+#define PCI_CAP_PTR            0x34    /*  8 bit       Capabilities Ptr */
+       /* Byte 35..3b: reserved */
+#define PCI_IRQ_LINE   0x3c    /*  8 bit       Interrupt Line */
+#define PCI_IRQ_PIN            0x3d    /*  8 bit       Interrupt Pin */
+#define PCI_MIN_GNT            0x3e    /*  8 bit       Min_Gnt */
+#define PCI_MAX_LAT            0x3f    /*  8 bit       Max_Lat */
+       /* Device Dependent Region */
+#define PCI_OUR_REG_1  0x40    /* 32 bit       Our Register 1 */
+#define PCI_OUR_REG_2  0x44    /* 32 bit       Our Register 2 */
+       /* Power Management Region */
+#define PCI_PM_CAP_ID  0x48    /*  8 bit       Power Management Cap. ID */
+#define PCI_PM_NITEM   0x49    /*  8 bit       Next Item Ptr */
+#define PCI_PM_CAP_REG 0x4a    /* 16 bit       Power Management Capabilities */
+#define PCI_PM_CTL_STS 0x4c    /* 16 bit       Power Manag. Control/Status */
+       /* Byte 0x4e:   reserved */
+#define PCI_PM_DAT_REG 0x4f    /*  8 bit       Power Manag. Data Register */
+       /* VPD Region */
+#define PCI_VPD_CAP_ID 0x50    /*  8 bit       VPD Cap. ID */
+#define PCI_VPD_NITEM  0x51    /*  8 bit       Next Item Ptr */
+#define PCI_VPD_ADR_REG        0x52    /* 16 bit       VPD Address Register */
+#define PCI_VPD_DAT_REG        0x54    /* 32 bit       VPD Data Register */
+       /* Byte 0x58..0xff:     reserved */
+
+/*
+ * I2C Address (PCI Config)
+ *
+ * Note: The temperature and voltage sensors are relocated on a different
+ *      I2C bus.
+ */
+#define I2C_ADDR_VPD   0xA0    /* I2C address for the VPD EEPROM */
+
+/*
+ * Define Bits and Values of the registers
+ */
+/*     PCI_COMMAND     16 bit  Command */
+                                                               /* Bit 15..11:  reserved */
+#define PCI_INT_DIS            BIT_10S         /* Interrupt INTx# disable (PCI 2.3) */
+#define PCI_FBTEN              BIT_9S          /* Fast Back-To-Back enable */
+#define PCI_SERREN             BIT_8S          /* SERR enable */
+#define PCI_ADSTEP             BIT_7S          /* Address Stepping */
+#define PCI_PERREN             BIT_6S          /* Parity Report Response enable */
+#define PCI_VGA_SNOOP  BIT_5S          /* VGA palette snoop */
+#define PCI_MWIEN              BIT_4S          /* Memory write an inv cycl ena */
+#define PCI_SCYCEN             BIT_3S          /* Special Cycle enable */
+#define PCI_BMEN               BIT_2S          /* Bus Master enable */
+#define PCI_MEMEN              BIT_1S          /* Memory Space Access enable */
+#define PCI_IOEN               BIT_0S          /* I/O Space Access enable */
+
+#define PCI_COMMAND_VAL        (PCI_FBTEN | PCI_SERREN | PCI_PERREN | PCI_MWIEN |\
+                                                PCI_BMEN | PCI_MEMEN | PCI_IOEN)
+
+/*     PCI_STATUS      16 bit  Status */
+#define PCI_PERR               BIT_15S         /* Parity Error */
+#define PCI_SERR               BIT_14S         /* Signaled SERR */
+#define PCI_RMABORT            BIT_13S         /* Received Master Abort */
+#define PCI_RTABORT            BIT_12S         /* Received Target Abort */
+                                                               /* Bit 11:      reserved */
+#define PCI_DEVSEL             (3<<9)          /* Bit 10.. 9:  DEVSEL Timing */
+#define PCI_DEV_FAST   (0<<9)          /*              fast */
+#define PCI_DEV_MEDIUM (1<<9)          /*              medium */
+#define PCI_DEV_SLOW   (2<<9)          /*              slow */
+#define PCI_DATAPERR   BIT_8S          /* DATA Parity error detected */
+#define PCI_FB2BCAP            BIT_7S          /* Fast Back-to-Back Capability */
+#define PCI_UDF                        BIT_6S          /* User Defined Features */
+#define PCI_66MHZCAP   BIT_5S          /* 66 MHz PCI bus clock capable */
+#define PCI_NEWCAP             BIT_4S          /* New cap. list implemented */
+#define PCI_INT_STAT   BIT_3S          /* Interrupt INTx# Status (PCI 2.3) */
+                                                               /* Bit  2.. 0:  reserved */
+
+#define PCI_ERRBITS    (PCI_PERR | PCI_SERR | PCI_RMABORT | PCI_RTABORT |\
+                       PCI_DATAPERR)
+
+/*     PCI_CLASS_CODE  24 bit  Class Code */
+/*     Byte 2:         Base Class              (02) */
+/*     Byte 1:         SubClass                (00) */
+/*     Byte 0:         Programming Interface   (00) */
+
+/*     PCI_CACHE_LSZ   8 bit   Cache Line Size */
+/*     Possible values: 0,2,4,8,16,32,64,128   */
+
+/*     PCI_HEADER_T    8 bit   Header Type */
+#define PCI_HD_MF_DEV  BIT_7S  /* 0= single, 1= multi-func dev */
+#define PCI_HD_TYPE            0x7f    /* Bit 6..0:    Header Layout 0= normal */
+
+/*     PCI_BIST        8 bit   Built-in selftest */
+/*     Built-in Self test not supported (optional) */
+
+/*     PCI_BASE_1ST    32 bit  1st Base address */
+#define PCI_MEMSIZE            0x4000L         /* use 16 kB Memory Base */
+#define PCI_MEMBASE_MSK 0xffffc000L    /* Bit 31..14:  Memory Base Address */
+#define PCI_MEMSIZE_MSK 0x00003ff0L    /* Bit 13.. 4:  Memory Size Req. */
+#define PCI_PREFEN             BIT_3           /* Prefetchable */
+#define PCI_MEM_TYP            (3L<<2)         /* Bit  2.. 1:  Memory Type */
+#define PCI_MEM32BIT   (0L<<1)         /* Base addr anywhere in 32 Bit range */
+#define PCI_MEM1M              (1L<<1)         /* Base addr below 1 MegaByte */
+#define PCI_MEM64BIT   (2L<<1)         /* Base addr anywhere in 64 Bit range */
+#define PCI_MEMSPACE   BIT_0           /* Memory Space Indic. */
+
+/*     PCI_BASE_2ND    32 bit  2nd Base address */
+#define PCI_IOBASE             0xffffff00L     /* Bit 31.. 8:  I/O Base address */
+#define PCI_IOSIZE             0x000000fcL     /* Bit  7.. 2:  I/O Size Requirements */
+                                                                       /* Bit  1:      reserved */
+#define PCI_IOSPACE            BIT_0           /* I/O Space Indicator */
+
+/*     PCI_BASE_ROM    32 bit  Expansion ROM Base Address */
+#define PCI_ROMBASE            0xfffe0000L     /* Bit 31..17:  ROM BASE address (1st)*/
+#define PCI_ROMBASZ            (0x1cL<<14)     /* Bit 16..14:  Treat as BASE or SIZE */
+#define PCI_ROMSIZE            (0x38L<<11)     /* Bit 13..11:  ROM Size Requirements */
+                                                                       /* Bit 10.. 1:  reserved */
+#define PCI_ROMEN              BIT_0           /* Address Decode enable */
+
+/* Device Dependent Region */
+/*     PCI_OUR_REG_1           32 bit  Our Register 1 */
+                                                                       /* Bit 31..29:  reserved */
+#define PCI_PHY_COMA   BIT_28          /* Set PHY to Coma Mode */
+#define PCI_EN_CAL             BIT_27          /* Enable  PCI buffer strength calibr. */
+#define PCI_DIS_CAL            BIT_26          /* Disable PCI buffer strength calibr. */
+#define PCI_VIO                        BIT_25          /* PCI I/O Voltage, 0 = 3.3V, 1 = 5V */
+#define PCI_DIS_BOOT   BIT_24          /* Disable BOOT via ROM */
+#define PCI_EN_IO              BIT_23          /* Mapping to I/O space */
+#define PCI_EN_FPROM   BIT_22          /* Enable FLASH mapping to memory */
+                                                                       /*              1 = Map Flash to memory */
+                                                                       /*              0 = Disable addr. dec */
+#define PCI_PAGESIZE   (3L<<20)        /* Bit 21..20:  FLASH Page Size */
+#define PCI_PAGE_16            (0L<<20)        /*              16 k pages      */
+#define PCI_PAGE_32K   (1L<<20)        /*              32 k pages      */
+#define PCI_PAGE_64K   (2L<<20)        /*              64 k pages      */
+#define PCI_PAGE_128K  (3L<<20)        /*              128 k pages     */
+                                                                       /* Bit 19:      reserved        */
+#define PCI_PAGEREG            (7L<<16)        /* Bit 18..16:  Page Register   */
+#define PCI_NOTAR              BIT_15          /* No turnaround cycle */
+#define PCI_FORCE_BE   BIT_14          /* Assert all BEs on MR */
+#define PCI_DIS_MRL            BIT_13          /* Disable Mem Read Line */
+#define PCI_DIS_MRM            BIT_12          /* Disable Mem Read Multiple */
+#define PCI_DIS_MWI            BIT_11          /* Disable Mem Write & Invalidate */
+#define PCI_DISC_CLS   BIT_10          /* Disc: cacheLsz bound */
+#define PCI_BURST_DIS  BIT_9           /* Burst Disable */
+#define PCI_DIS_PCI_CLK        BIT_8           /* Disable PCI clock driving */
+#define PCI_SKEW_DAS   (0xfL<<4)       /* Bit  7.. 4:  Skew Ctrl, DAS Ext */
+#define PCI_SKEW_BASE  0xfL            /* Bit  3.. 0:  Skew Ctrl, Base */
+
+
+/*     PCI_OUR_REG_2           32 bit  Our Register 2 */
+#define PCI_VPD_WR_THR (0xffL<<24)     /* Bit 31..24:  VPD Write Threshold */
+#define PCI_DEV_SEL            (0x7fL<<17)     /* Bit 23..17:  EEPROM Device Select */
+#define PCI_VPD_ROM_SZ (7L<<14)        /* Bit 16..14:  VPD ROM Size    */
+                                                                       /* Bit 13..12:  reserved        */
+#define PCI_PATCH_DIR  (0xfL<<8)       /* Bit 11.. 8:  Ext Patches dir 3..0 */
+#define PCI_PATCH_DIR_3        BIT_11
+#define PCI_PATCH_DIR_2        BIT_10
+#define PCI_PATCH_DIR_1        BIT_9
+#define PCI_PATCH_DIR_0        BIT_8
+#define PCI_EXT_PATCHS (0xfL<<4)       /* Bit  7.. 4:  Extended Patches 3..0 */
+#define PCI_EXT_PATCH_3        BIT_7
+#define PCI_EXT_PATCH_2        BIT_6
+#define PCI_EXT_PATCH_1        BIT_5
+#define PCI_EXT_PATCH_0        BIT_4
+#define PCI_EN_DUMMY_RD        BIT_3           /* Enable Dummy Read */
+#define PCI_REV_DESC   BIT_2           /* Reverse Desc. Bytes */
+                                                                       /* Bit  1:      reserved */
+#define PCI_USEDATA64  BIT_0           /* Use 64Bit Data bus ext */
+
+
+/* Power Management Region */
+/*     PCI_PM_CAP_REG          16 bit  Power Management Capabilities */
+#define PCI_PME_SUP_MSK        (0x1f<<11)      /* Bit 15..11:  PM Event Support Mask */
+#define PCI_PME_D3C_SUP        BIT_15S         /* PME from D3cold Support (if Vaux) */
+#define PCI_PME_D3H_SUP        BIT_14S         /* PME from D3hot Support */
+#define PCI_PME_D2_SUP BIT_13S         /* PME from D2 Support */
+#define PCI_PME_D1_SUP BIT_12S         /* PME from D1 Support */
+#define PCI_PME_D0_SUP BIT_11S         /* PME from D0 Support */
+#define PCI_PM_D2_SUP  BIT_10S         /* D2 Support in 33 MHz mode */
+#define PCI_PM_D1_SUP  BIT_9S          /* D1 Support */
+                                                                       /* Bit  8.. 6:  reserved */
+#define PCI_PM_DSI             BIT_5S          /* Device Specific Initialization */
+#define PCI_PM_APS             BIT_4S          /* Auxialiary Power Source */
+#define PCI_PME_CLOCK  BIT_3S          /* PM Event Clock */
+#define PCI_PM_VER_MSK         7               /* Bit  2.. 0:  PM PCI Spec. version */
+
+/*     PCI_PM_CTL_STS          16 bit  Power Management Control/Status */
+#define PCI_PME_STATUS BIT_15S         /* PME Status (YUKON only) */
+#define PCI_PM_DAT_SCL (3<<13)         /* Bit 14..13:  Data Reg. scaling factor */
+#define PCI_PM_DAT_SEL (0xf<<9)        /* Bit 12.. 9:  PM data selector field */
+#define PCI_PME_EN             BIT_8S          /* Enable PME# generation (YUKON only) */
+                                                                       /* Bit  7.. 2:  reserved */
+#define PCI_PM_STATE_MSK       3               /* Bit  1.. 0:  Power Management State */
+
+#define PCI_PM_STATE_D0                0                /* D0:  Operational (default) */
+#define PCI_PM_STATE_D1                1               /* D1:  (YUKON only) */
+#define PCI_PM_STATE_D2                2               /* D2:  (YUKON only) */
+#define PCI_PM_STATE_D3                3               /* D3:  HOT, Power Down and Reset */
+
+/* VPD Region */
+/*     PCI_VPD_ADR_REG         16 bit  VPD Address Register */
+#define PCI_VPD_FLAG   BIT_15S         /* starts VPD rd/wr cycle */
+#define PCI_VPD_ADR_MSK        0x7fffL         /* Bit 14.. 0:  VPD address mask */
+
+/*     Control Register File (Address Map) */
+
+/*
+ *     Bank 0
+ */
+#define B0_RAP                 0x0000  /*  8 bit       Register Address Port */
+       /* 0x0001 - 0x0003:     reserved */
+#define B0_CTST                        0x0004  /* 16 bit       Control/Status register */
+#define B0_LED                 0x0006  /*  8 Bit       LED register */
+#define B0_POWER_CTRL  0x0007  /*  8 Bit       Power Control reg (YUKON only) */
+#define B0_ISRC                        0x0008  /* 32 bit       Interrupt Source Register */
+#define B0_IMSK                        0x000c  /* 32 bit       Interrupt Mask Register */
+#define B0_HWE_ISRC            0x0010  /* 32 bit       HW Error Interrupt Src Reg */
+#define B0_HWE_IMSK            0x0014  /* 32 bit       HW Error Interrupt Mask Reg */
+#define B0_SP_ISRC             0x0018  /* 32 bit       Special Interrupt Source Reg */
+       /* 0x001c:              reserved */
+
+/* B0 XMAC 1 registers (GENESIS only) */
+#define B0_XM1_IMSK            0x0020  /* 16 bit r/w   XMAC 1 Interrupt Mask Register*/
+       /* 0x0022 - 0x0027:     reserved */
+#define B0_XM1_ISRC            0x0028  /* 16 bit ro    XMAC 1 Interrupt Status Reg */
+       /* 0x002a - 0x002f:     reserved */
+#define B0_XM1_PHY_ADDR 0x0030 /* 16 bit r/w   XMAC 1 PHY Address Register */
+       /* 0x0032 - 0x0033:     reserved */
+#define B0_XM1_PHY_DATA 0x0034 /* 16 bit r/w   XMAC 1 PHY Data Register */
+       /* 0x0036 - 0x003f:     reserved */
+
+/* B0 XMAC 2 registers (GENESIS only) */
+#define B0_XM2_IMSK            0x0040  /* 16 bit r/w   XMAC 2 Interrupt Mask Register*/
+       /* 0x0042 - 0x0047:     reserved */
+#define B0_XM2_ISRC            0x0048  /* 16 bit ro    XMAC 2 Interrupt Status Reg */
+       /* 0x004a - 0x004f:     reserved */
+#define B0_XM2_PHY_ADDR 0x0050 /* 16 bit r/w   XMAC 2 PHY Address Register */
+       /* 0x0052 - 0x0053:     reserved */
+#define B0_XM2_PHY_DATA 0x0054 /* 16 bit r/w   XMAC 2 PHY Data Register */
+       /* 0x0056 - 0x005f:     reserved */
+
+/* BMU Control Status Registers */
+#define B0_R1_CSR              0x0060  /* 32 bit       BMU Ctrl/Stat Rx Queue 1 */
+#define B0_R2_CSR              0x0064  /* 32 bit       BMU Ctrl/Stat Rx Queue 2 */
+#define B0_XS1_CSR             0x0068  /* 32 bit       BMU Ctrl/Stat Sync Tx Queue 1 */
+#define B0_XA1_CSR             0x006c  /* 32 bit       BMU Ctrl/Stat Async Tx Queue 1*/
+#define B0_XS2_CSR             0x0070  /* 32 bit       BMU Ctrl/Stat Sync Tx Queue 2 */
+#define B0_XA2_CSR             0x0074  /* 32 bit       BMU Ctrl/Stat Async Tx Queue 2*/
+       /* 0x0078 - 0x007f:     reserved */
+
+/*
+ *     Bank 1
+ *     - completely empty (this is the RAP Block window)
+ *     Note: if RAP = 1 this page is reserved
+ */
+
+/*
+ *     Bank 2
+ */
+/* NA reg = 48 bit Network Address Register, 3x16 or 8x8 bit readable */
+#define B2_MAC_1               0x0100  /* NA reg        MAC Address 1 */
+       /* 0x0106 - 0x0107:     reserved */
+#define B2_MAC_2               0x0108  /* NA reg        MAC Address 2 */
+       /* 0x010e - 0x010f:     reserved */
+#define B2_MAC_3               0x0110  /* NA reg        MAC Address 3 */
+       /* 0x0116 - 0x0117:     reserved */
+#define B2_CONN_TYP            0x0118  /*  8 bit       Connector type */
+#define B2_PMD_TYP             0x0119  /*  8 bit       PMD type */
+#define B2_MAC_CFG             0x011a  /*  8 bit       MAC Configuration / Chip Revision */
+#define B2_CHIP_ID             0x011b  /*  8 bit       Chip Identification Number */
+       /* Eprom registers are currently of no use */
+#define B2_E_0                 0x011c  /*  8 bit       EPROM Byte 0 (ext. SRAM size */
+#define B2_E_1                 0x011d  /*  8 bit       EPROM Byte 1 (PHY type) */
+#define B2_E_2                 0x011e  /*  8 bit       EPROM Byte 2 */
+#define B2_E_3                 0x011f  /*  8 bit       EPROM Byte 3 */
+#define B2_FAR                 0x0120  /* 32 bit       Flash-Prom Addr Reg/Cnt */
+#define B2_FDP                 0x0124  /*  8 bit       Flash-Prom Data Port */
+       /* 0x0125 - 0x0127:     reserved */
+#define B2_LD_CRTL             0x0128  /*  8 bit       EPROM loader control register */
+#define B2_LD_TEST             0x0129  /*  8 bit       EPROM loader test register */
+       /* 0x012a - 0x012f:     reserved */
+#define B2_TI_INI              0x0130  /* 32 bit       Timer Init Value */
+#define B2_TI_VAL              0x0134  /* 32 bit       Timer Value */
+#define B2_TI_CRTL             0x0138  /*  8 bit       Timer Control */
+#define B2_TI_TEST             0x0139  /*  8 Bit       Timer Test */
+       /* 0x013a - 0x013f:     reserved */
+#define B2_IRQM_INI            0x0140  /* 32 bit       IRQ Moderation Timer Init Reg.*/
+#define B2_IRQM_VAL            0x0144  /* 32 bit       IRQ Moderation Timer Value */
+#define B2_IRQM_CTRL   0x0148  /*  8 bit       IRQ Moderation Timer Control */
+#define B2_IRQM_TEST   0x0149  /*  8 bit       IRQ Moderation Timer Test */
+#define B2_IRQM_MSK    0x014c  /* 32 bit       IRQ Moderation Mask */
+#define B2_IRQM_HWE_MSK 0x0150 /* 32 bit       IRQ Moderation HW Error Mask */
+       /* 0x0154 - 0x0157:     reserved */
+#define B2_TST_CTRL1   0x0158  /*  8 bit       Test Control Register 1 */
+#define B2_TST_CTRL2   0x0159  /*  8 bit       Test Control Register 2 */
+       /* 0x015a - 0x015b:     reserved */
+#define B2_GP_IO               0x015c  /* 32 bit       General Purpose I/O Register */
+#define B2_I2C_CTRL            0x0160  /* 32 bit       I2C HW Control Register */
+#define B2_I2C_DATA            0x0164  /* 32 bit       I2C HW Data Register */
+#define B2_I2C_IRQ             0x0168  /* 32 bit       I2C HW IRQ Register */
+#define B2_I2C_SW              0x016c  /* 32 bit       I2C SW Port Register */
+
+/* Blink Source Counter (GENESIS only) */
+#define B2_BSC_INI             0x0170  /* 32 bit       Blink Source Counter Init Val */
+#define B2_BSC_VAL             0x0174  /* 32 bit       Blink Source Counter Value */
+#define B2_BSC_CTRL            0x0178  /*  8 bit       Blink Source Counter Control */
+#define B2_BSC_STAT            0x0179  /*  8 bit       Blink Source Counter Status */
+#define B2_BSC_TST             0x017a  /* 16 bit       Blink Source Counter Test Reg */
+       /* 0x017c - 0x017f:     reserved */
+
+/*
+ *     Bank 3
+ */
+/* RAM Random Registers */
+#define B3_RAM_ADDR            0x0180  /* 32 bit       RAM Address, to read or write */
+#define B3_RAM_DATA_LO 0x0184  /* 32 bit       RAM Data Word (low dWord) */
+#define B3_RAM_DATA_HI 0x0188  /* 32 bit       RAM Data Word (high dWord) */
+       /* 0x018c - 0x018f:     reserved */
+
+/* RAM Interface Registers */
+/*
+ * The HW-Spec. calls this registers Timeout Value 0..11. But this names are
+ * not usable in SW. Please notice these are NOT real timeouts, these are
+ * the number of qWords transferred continuously.
+ */
+#define B3_RI_WTO_R1   0x0190  /*  8 bit       WR Timeout Queue R1             (TO0) */
+#define B3_RI_WTO_XA1  0x0191  /*  8 bit       WR Timeout Queue XA1    (TO1) */
+#define B3_RI_WTO_XS1  0x0192  /*  8 bit       WR Timeout Queue XS1    (TO2) */
+#define B3_RI_RTO_R1   0x0193  /*  8 bit       RD Timeout Queue R1             (TO3) */
+#define B3_RI_RTO_XA1  0x0194  /*  8 bit       RD Timeout Queue XA1    (TO4) */
+#define B3_RI_RTO_XS1  0x0195  /*  8 bit       RD Timeout Queue XS1    (TO5) */
+#define B3_RI_WTO_R2   0x0196  /*  8 bit       WR Timeout Queue R2             (TO6) */
+#define B3_RI_WTO_XA2  0x0197  /*  8 bit       WR Timeout Queue XA2    (TO7) */
+#define B3_RI_WTO_XS2  0x0198  /*  8 bit       WR Timeout Queue XS2    (TO8) */
+#define B3_RI_RTO_R2   0x0199  /*  8 bit       RD Timeout Queue R2             (TO9) */
+#define B3_RI_RTO_XA2  0x019a  /*  8 bit       RD Timeout Queue XA2    (TO10)*/
+#define B3_RI_RTO_XS2  0x019b  /*  8 bit       RD Timeout Queue XS2    (TO11)*/
+#define B3_RI_TO_VAL   0x019c  /*  8 bit       Current Timeout Count Val */
+       /* 0x019d - 0x019f:     reserved */
+#define B3_RI_CTRL             0x01a0  /* 16 bit       RAM Interface Control Register */
+#define B3_RI_TEST             0x01a2  /*  8 bit       RAM Interface Test Register */
+       /* 0x01a3 - 0x01af:     reserved */
+
+/* MAC Arbiter Registers (GENESIS only) */
+/* these are the no. of qWord transferred continuously and NOT real timeouts */
+#define B3_MA_TOINI_RX1        0x01b0  /*  8 bit       Timeout Init Val Rx Path MAC 1 */
+#define B3_MA_TOINI_RX2        0x01b1  /*  8 bit       Timeout Init Val Rx Path MAC 2 */
+#define B3_MA_TOINI_TX1        0x01b2  /*  8 bit       Timeout Init Val Tx Path MAC 1 */
+#define B3_MA_TOINI_TX2        0x01b3  /*  8 bit       Timeout Init Val Tx Path MAC 2 */
+#define B3_MA_TOVAL_RX1        0x01b4  /*  8 bit       Timeout Value Rx Path MAC 1 */
+#define B3_MA_TOVAL_RX2        0x01b5  /*  8 bit       Timeout Value Rx Path MAC 1 */
+#define B3_MA_TOVAL_TX1        0x01b6  /*  8 bit       Timeout Value Tx Path MAC 2 */
+#define B3_MA_TOVAL_TX2        0x01b7  /*  8 bit       Timeout Value Tx Path MAC 2 */
+#define B3_MA_TO_CTRL  0x01b8  /* 16 bit       MAC Arbiter Timeout Ctrl Reg */
+#define B3_MA_TO_TEST  0x01ba  /* 16 bit       MAC Arbiter Timeout Test Reg */
+       /* 0x01bc - 0x01bf:     reserved */
+#define B3_MA_RCINI_RX1        0x01c0  /*  8 bit       Recovery Init Val Rx Path MAC 1 */
+#define B3_MA_RCINI_RX2        0x01c1  /*  8 bit       Recovery Init Val Rx Path MAC 2 */
+#define B3_MA_RCINI_TX1        0x01c2  /*  8 bit       Recovery Init Val Tx Path MAC 1 */
+#define B3_MA_RCINI_TX2        0x01c3  /*  8 bit       Recovery Init Val Tx Path MAC 2 */
+#define B3_MA_RCVAL_RX1        0x01c4  /*  8 bit       Recovery Value Rx Path MAC 1 */
+#define B3_MA_RCVAL_RX2        0x01c5  /*  8 bit       Recovery Value Rx Path MAC 1 */
+#define B3_MA_RCVAL_TX1        0x01c6  /*  8 bit       Recovery Value Tx Path MAC 2 */
+#define B3_MA_RCVAL_TX2        0x01c7  /*  8 bit       Recovery Value Tx Path MAC 2 */
+#define B3_MA_RC_CTRL  0x01c8  /* 16 bit       MAC Arbiter Recovery Ctrl Reg */
+#define B3_MA_RC_TEST  0x01ca  /* 16 bit       MAC Arbiter Recovery Test Reg */
+       /* 0x01cc - 0x01cf:     reserved */
+
+/* Packet Arbiter Registers (GENESIS only) */
+/* these are real timeouts */
+#define B3_PA_TOINI_RX1        0x01d0  /* 16 bit       Timeout Init Val Rx Path MAC 1 */
+       /* 0x01d2 - 0x01d3:     reserved */
+#define B3_PA_TOINI_RX2        0x01d4  /* 16 bit       Timeout Init Val Rx Path MAC 2 */
+       /* 0x01d6 - 0x01d7:     reserved */
+#define B3_PA_TOINI_TX1        0x01d8  /* 16 bit       Timeout Init Val Tx Path MAC 1 */
+       /* 0x01da - 0x01db:     reserved */
+#define B3_PA_TOINI_TX2        0x01dc  /* 16 bit       Timeout Init Val Tx Path MAC 2 */
+       /* 0x01de - 0x01df:     reserved */
+#define B3_PA_TOVAL_RX1        0x01e0  /* 16 bit       Timeout Val Rx Path MAC 1 */
+       /* 0x01e2 - 0x01e3:     reserved */
+#define B3_PA_TOVAL_RX2        0x01e4  /* 16 bit       Timeout Val Rx Path MAC 2 */
+       /* 0x01e6 - 0x01e7:     reserved */
+#define B3_PA_TOVAL_TX1        0x01e8  /* 16 bit       Timeout Val Tx Path MAC 1 */
+       /* 0x01ea - 0x01eb:     reserved */
+#define B3_PA_TOVAL_TX2        0x01ec  /* 16 bit       Timeout Val Tx Path MAC 2 */
+       /* 0x01ee - 0x01ef:     reserved */
+#define B3_PA_CTRL     0x01f0  /* 16 bit       Packet Arbiter Ctrl Register */
+#define B3_PA_TEST     0x01f2  /* 16 bit       Packet Arbiter Test Register */
+       /* 0x01f4 - 0x01ff:     reserved */
+
+/*
+ *     Bank 4 - 5
+ */
+/* Transmit Arbiter Registers MAC 1 and 2, use MR_ADDR() to access */
+#define TXA_ITI_INI            0x0200  /* 32 bit       Tx Arb Interval Timer Init Val*/
+#define TXA_ITI_VAL            0x0204  /* 32 bit       Tx Arb Interval Timer Value */
+#define TXA_LIM_INI            0x0208  /* 32 bit       Tx Arb Limit Counter Init Val */
+#define TXA_LIM_VAL            0x020c  /* 32 bit       Tx Arb Limit Counter Value */
+#define TXA_CTRL               0x0210  /*  8 bit       Tx Arbiter Control Register */
+#define TXA_TEST               0x0211  /*  8 bit       Tx Arbiter Test Register */
+#define TXA_STAT               0x0212  /*  8 bit       Tx Arbiter Status Register */
+       /* 0x0213 - 0x027f:     reserved */
+       /* 0x0280 - 0x0292:     MAC 2 */
+       /* 0x0213 - 0x027f:     reserved */
+
+/*
+ *     Bank 6
+ */
+/* External registers (GENESIS only) */
+#define B6_EXT_REG             0x0300
+
+/*
+ *     Bank 7
+ */
+/* This is a copy of the Configuration register file (lower half) */
+#define B7_CFG_SPC             0x0380
+
+/*
+ *     Bank 8 - 15
+ */
+/* Receive and Transmit Queue Registers, use Q_ADDR() to access */
+#define B8_Q_REGS              0x0400
+
+/* Queue Register Offsets, use Q_ADDR() to access */
+#define Q_D            0x00    /* 8*32 bit     Current Descriptor */
+#define Q_DA_L 0x20    /* 32 bit       Current Descriptor Address Low dWord */
+#define Q_DA_H 0x24    /* 32 bit       Current Descriptor Address High dWord */
+#define Q_AC_L 0x28    /* 32 bit       Current Address Counter Low dWord */
+#define Q_AC_H 0x2c    /* 32 bit       Current Address Counter High dWord */
+#define Q_BC   0x30    /* 32 bit       Current Byte Counter */
+#define Q_CSR  0x34    /* 32 bit       BMU Control/Status Register */
+#define Q_F            0x38    /* 32 bit       Flag Register */
+#define Q_T1   0x3c    /* 32 bit       Test Register 1 */
+#define Q_T1_TR        0x3c    /*  8 bit       Test Register 1 Transfer SM */
+#define Q_T1_WR        0x3d    /*  8 bit       Test Register 1 Write Descriptor SM */
+#define Q_T1_RD        0x3e    /*  8 bit       Test Register 1 Read Descriptor SM */
+#define Q_T1_SV        0x3f    /*  8 bit       Test Register 1 Supervisor SM */
+#define Q_T2   0x40    /* 32 bit       Test Register 2 */
+#define Q_T3   0x44    /* 32 bit       Test Register 3 */
+       /* 0x48 - 0x7f: reserved */
+
+/*
+ *     Bank 16 - 23
+ */
+/* RAM Buffer Registers */
+#define B16_RAM_REGS   0x0800
+
+/* RAM Buffer Register Offsets, use RB_ADDR() to access */
+#define RB_START               0x00    /* 32 bit       RAM Buffer Start Address */
+#define RB_END                 0x04    /* 32 bit       RAM Buffer End Address */
+#define RB_WP                  0x08    /* 32 bit       RAM Buffer Write Pointer */
+#define RB_RP                  0x0c    /* 32 bit       RAM Buffer Read Pointer */
+#define RB_RX_UTPP             0x10    /* 32 bit       Rx Upper Threshold, Pause Pack */
+#define RB_RX_LTPP             0x14    /* 32 bit       Rx Lower Threshold, Pause Pack */
+#define RB_RX_UTHP             0x18    /* 32 bit       Rx Upper Threshold, High Prio */
+#define RB_RX_LTHP             0x1c    /* 32 bit       Rx Lower Threshold, High Prio */
+       /* 0x10 - 0x1f: reserved at Tx RAM Buffer Registers */
+#define RB_PC                  0x20    /* 32 bit       RAM Buffer Packet Counter */
+#define RB_LEV                 0x24    /* 32 bit       RAM Buffer Level Register */
+#define RB_CTRL                        0x28    /*  8 bit       RAM Buffer Control Register */
+#define RB_TST1                        0x29    /*  8 bit       RAM Buffer Test Register 1 */
+#define RB_TST2                        0x2A    /*  8 bit       RAM Buffer Test Register 2 */
+       /* 0x2c - 0x7f: reserved */
+
+/*
+ *     Bank 24
+ */
+/*
+ * Receive MAC FIFO, Receive LED, and Link_Sync regs (GENESIS only)
+ * use MR_ADDR() to access
+ */
+#define RX_MFF_EA              0x0c00  /* 32 bit       Receive MAC FIFO End Address */
+#define RX_MFF_WP              0x0c04  /* 32 bit       Receive MAC FIFO Write Pointer */
+       /* 0x0c08 - 0x0c0b:     reserved */
+#define RX_MFF_RP              0x0c0c  /* 32 bit       Receive MAC FIFO Read Pointer */
+#define RX_MFF_PC              0x0c10  /* 32 bit       Receive MAC FIFO Packet Cnt */
+#define RX_MFF_LEV             0x0c14  /* 32 bit       Receive MAC FIFO Level */
+#define RX_MFF_CTRL1   0x0c18  /* 16 bit       Receive MAC FIFO Control Reg 1*/
+#define RX_MFF_STAT_TO 0x0c1a  /*  8 bit       Receive MAC Status Timeout */
+#define RX_MFF_TIST_TO 0x0c1b  /*  8 bit       Receive MAC Time Stamp Timeout */
+#define RX_MFF_CTRL2   0x0c1c  /*  8 bit       Receive MAC FIFO Control Reg 2*/
+#define RX_MFF_TST1            0x0c1d  /*  8 bit       Receive MAC FIFO Test Reg 1 */
+#define RX_MFF_TST2            0x0c1e  /*  8 bit       Receive MAC FIFO Test Reg 2 */
+       /* 0x0c1f:      reserved */
+#define RX_LED_INI             0x0c20  /* 32 bit       Receive LED Cnt Init Value */
+#define RX_LED_VAL             0x0c24  /* 32 bit       Receive LED Cnt Current Value */
+#define RX_LED_CTRL            0x0c28  /*  8 bit       Receive LED Cnt Control Reg */
+#define RX_LED_TST             0x0c29  /*  8 bit       Receive LED Cnt Test Register */
+       /* 0x0c2a - 0x0c2f:     reserved */
+#define LNK_SYNC_INI   0x0c30  /* 32 bit       Link Sync Cnt Init Value */
+#define LNK_SYNC_VAL   0x0c34  /* 32 bit       Link Sync Cnt Current Value */
+#define LNK_SYNC_CTRL  0x0c38  /*  8 bit       Link Sync Cnt Control Register */
+#define LNK_SYNC_TST   0x0c39  /*  8 bit       Link Sync Cnt Test Register */
+       /* 0x0c3a - 0x0c3b:     reserved */
+#define LNK_LED_REG            0x0c3c  /*  8 bit       Link LED Register */
+       /* 0x0c3d - 0x0c3f:     reserved */
+
+/* Receive GMAC FIFO (YUKON only), use MR_ADDR() to access */
+#define RX_GMF_EA              0x0c40  /* 32 bit       Rx GMAC FIFO End Address */
+#define RX_GMF_AF_THR  0x0c44  /* 32 bit       Rx GMAC FIFO Almost Full Thresh. */
+#define RX_GMF_CTRL_T  0x0c48  /* 32 bit       Rx GMAC FIFO Control/Test */
+#define RX_GMF_FL_MSK  0x0c4c  /* 32 bit       Rx GMAC FIFO Flush Mask */
+#define RX_GMF_FL_THR  0x0c50  /* 32 bit       Rx GMAC FIFO Flush Threshold */
+       /* 0x0c54 - 0x0c5f:     reserved */
+#define RX_GMF_WP              0x0c60  /* 32 bit       Rx GMAC FIFO Write Pointer */
+       /* 0x0c64 - 0x0c67:     reserved */
+#define RX_GMF_WLEV            0x0c68  /* 32 bit       Rx GMAC FIFO Write Level */
+       /* 0x0c6c - 0x0c6f:     reserved */
+#define RX_GMF_RP              0x0c70  /* 32 bit       Rx GMAC FIFO Read Pointer */
+       /* 0x0c74 - 0x0c77:     reserved */
+#define RX_GMF_RLEV            0x0c78  /* 32 bit       Rx GMAC FIFO Read Level */
+       /* 0x0c7c - 0x0c7f:     reserved */
+
+/*
+ *     Bank 25
+ */
+       /* 0x0c80 - 0x0cbf:     MAC 2 */
+       /* 0x0cc0 - 0x0cff:     reserved */
+
+/*
+ *     Bank 26
+ */
+/*
+ * Transmit MAC FIFO and Transmit LED Registers (GENESIS only),
+ * use MR_ADDR() to access
+ */
+#define TX_MFF_EA              0x0d00  /* 32 bit       Transmit MAC FIFO End Address */
+#define TX_MFF_WP              0x0d04  /* 32 bit       Transmit MAC FIFO WR Pointer */
+#define TX_MFF_WSP             0x0d08  /* 32 bit       Transmit MAC FIFO WR Shadow Ptr */
+#define TX_MFF_RP              0x0d0c  /* 32 bit       Transmit MAC FIFO RD Pointer */
+#define TX_MFF_PC              0x0d10  /* 32 bit       Transmit MAC FIFO Packet Cnt */
+#define TX_MFF_LEV             0x0d14  /* 32 bit       Transmit MAC FIFO Level */
+#define TX_MFF_CTRL1   0x0d18  /* 16 bit       Transmit MAC FIFO Ctrl Reg 1 */
+#define TX_MFF_WAF             0x0d1a  /*  8 bit       Transmit MAC Wait after flush */
+       /* 0x0c1b:      reserved */
+#define TX_MFF_CTRL2   0x0d1c  /*  8 bit       Transmit MAC FIFO Ctrl Reg 2 */
+#define TX_MFF_TST1            0x0d1d  /*  8 bit       Transmit MAC FIFO Test Reg 1 */
+#define TX_MFF_TST2            0x0d1e  /*  8 bit       Transmit MAC FIFO Test Reg 2 */
+       /* 0x0d1f:      reserved */
+#define TX_LED_INI             0x0d20  /* 32 bit       Transmit LED Cnt Init Value */
+#define TX_LED_VAL             0x0d24  /* 32 bit       Transmit LED Cnt Current Val */
+#define TX_LED_CTRL            0x0d28  /*  8 bit       Transmit LED Cnt Control Reg */
+#define TX_LED_TST             0x0d29  /*  8 bit       Transmit LED Cnt Test Reg */
+       /* 0x0d2a - 0x0d3f:     reserved */
+
+/* Transmit GMAC FIFO (YUKON only), use MR_ADDR() to access */
+#define TX_GMF_EA              0x0d40  /* 32 bit       Tx GMAC FIFO End Address */
+#define TX_GMF_AE_THR  0x0d44  /* 32 bit       Tx GMAC FIFO Almost Empty Thresh.*/
+#define TX_GMF_CTRL_T  0x0d48  /* 32 bit       Tx GMAC FIFO Control/Test */
+       /* 0x0d4c - 0x0d5f:     reserved */
+#define TX_GMF_WP              0x0d60  /* 32 bit       Tx GMAC FIFO Write Pointer */
+#define TX_GMF_WSP             0x0d64  /* 32 bit       Tx GMAC FIFO Write Shadow Ptr. */
+#define TX_GMF_WLEV            0x0d68  /* 32 bit       Tx GMAC FIFO Write Level */
+       /* 0x0d6c - 0x0d6f:     reserved */
+#define TX_GMF_RP              0x0d70  /* 32 bit       Tx GMAC FIFO Read Pointer */
+#define TX_GMF_RSTP            0x0d74  /* 32 bit       Tx GMAC FIFO Restart Pointer */
+#define TX_GMF_RLEV            0x0d78  /* 32 bit       Tx GMAC FIFO Read Level */
+       /* 0x0d7c - 0x0d7f:     reserved */
+
+/*
+ *     Bank 27
+ */
+       /* 0x0d80 - 0x0dbf:     MAC 2 */
+       /* 0x0daa - 0x0dff:     reserved */
+
+/*
+ *     Bank 28
+ */
+/* Descriptor Poll Timer Registers */
+#define B28_DPT_INI            0x0e00  /* 24 bit       Descriptor Poll Timer Init Val */
+#define B28_DPT_VAL            0x0e04  /* 24 bit       Descriptor Poll Timer Curr Val */
+#define B28_DPT_CTRL   0x0e08  /*  8 bit       Descriptor Poll Timer Ctrl Reg */
+       /* 0x0e09:      reserved */
+#define B28_DPT_TST            0x0e0a  /*  8 bit       Descriptor Poll Timer Test Reg */
+       /* 0x0e0b:      reserved */
+
+/* Time Stamp Timer Registers (YUKON only) */
+       /* 0x0e10:      reserved */
+#define GMAC_TI_ST_VAL 0x0e14  /* 32 bit       Time Stamp Timer Curr Val */
+#define GMAC_TI_ST_CTRL        0x0e18  /*  8 bit       Time Stamp Timer Ctrl Reg */
+       /* 0x0e19:      reserved */
+#define GMAC_TI_ST_TST 0x0e1a  /*  8 bit       Time Stamp Timer Test Reg */
+       /* 0x0e1b - 0x0e7f:     reserved */
+
+/*
+ *     Bank 29
+ */
+       /* 0x0e80 - 0x0efc:     reserved */
+
+/*
+ *     Bank 30
+ */
+/* GMAC and GPHY Control Registers (YUKON only) */
+#define GMAC_CTRL              0x0f00  /* 32 bit       GMAC Control Reg */
+#define GPHY_CTRL              0x0f04  /* 32 bit       GPHY Control Reg */
+#define GMAC_IRQ_SRC   0x0f08  /*  8 bit       GMAC Interrupt Source Reg */
+       /* 0x0f09 - 0x0f0b:     reserved */
+#define GMAC_IRQ_MSK   0x0f0c  /*  8 bit       GMAC Interrupt Mask Reg */
+       /* 0x0f0d - 0x0f0f:     reserved */
+#define GMAC_LINK_CTRL 0x0f10  /* 16 bit       Link Control Reg */
+       /* 0x0f14 - 0x0f1f:     reserved */
+
+/* Wake-up Frame Pattern Match Control Registers (YUKON only) */
+
+#define WOL_REG_OFFS   0x20    /* HW-Bug: Address is + 0x20 against spec. */
+
+#define WOL_CTRL_STAT  0x0f20  /* 16 bit       WOL Control/Status Reg */
+#define WOL_MATCH_CTL  0x0f22  /*  8 bit       WOL Match Control Reg */
+#define WOL_MATCH_RES  0x0f23  /*  8 bit       WOL Match Result Reg */
+#define WOL_MAC_ADDR_LO        0x0f24  /* 32 bit       WOL MAC Address Low */
+#define WOL_MAC_ADDR_HI        0x0f28  /* 16 bit       WOL MAC Address High */
+#define WOL_PATT_RPTR  0x0f2c  /*  8 bit       WOL Pattern Read Ptr */
+
+/* use this macro to access above registers */
+#define WOL_REG(Reg)   ((Reg) + (pAC->GIni.GIWolOffs))
+
+
+/* WOL Pattern Length Registers (YUKON only) */
+
+#define WOL_PATT_LEN_LO        0x0f30          /* 32 bit       WOL Pattern Length 3..0 */
+#define WOL_PATT_LEN_HI        0x0f34          /* 24 bit       WOL Pattern Length 6..4 */
+
+/* WOL Pattern Counter Registers (YUKON only) */
+
+#define WOL_PATT_CNT_0 0x0f38          /* 32 bit       WOL Pattern Counter 3..0 */
+#define WOL_PATT_CNT_4 0x0f3c          /* 24 bit       WOL Pattern Counter 6..4 */
+       /* 0x0f40 - 0x0f7f:     reserved */
+
+/*
+ *     Bank 31
+ */
+/* 0x0f80 - 0x0fff:    reserved */
+
+/*
+ *     Bank 32 - 33
+ */
+#define WOL_PATT_RAM_1 0x1000  /*  WOL Pattern RAM Link 1 */
+
+/*
+ *     Bank 0x22 - 0x3f
+ */
+/* 0x1100 - 0x1fff:    reserved */
+
+/*
+ *     Bank 0x40 - 0x4f
+ */
+#define BASE_XMAC_1            0x2000  /* XMAC 1 registers */
+
+/*
+ *     Bank 0x50 - 0x5f
+ */
+
+#define BASE_GMAC_1            0x2800  /* GMAC 1 registers */
+
+/*
+ *     Bank 0x60 - 0x6f
+ */
+#define BASE_XMAC_2            0x3000  /* XMAC 2 registers */
+
+/*
+ *     Bank 0x70 - 0x7f
+ */
+#define BASE_GMAC_2            0x3800  /* GMAC 2 registers */
+
+/*
+ *     Control Register Bit Definitions:
+ */
+/*     B0_RAP          8 bit   Register Address Port */
+                                                               /* Bit 7:       reserved */
+#define RAP_RAP                        0x3f    /* Bit 6..0:    0 = block 0,..,6f = block 6f */
+
+/*     B0_CTST         16 bit  Control/Status register */
+                                                               /* Bit 15..14:  reserved */
+#define CS_CLK_RUN_HOT BIT_13S         /* CLK_RUN hot m. (YUKON-Lite only) */
+#define CS_CLK_RUN_RST BIT_12S         /* CLK_RUN reset  (YUKON-Lite only) */
+#define CS_CLK_RUN_ENA BIT_11S         /* CLK_RUN enable (YUKON-Lite only) */
+#define CS_VAUX_AVAIL  BIT_10S         /* VAUX available (YUKON only) */
+#define CS_BUS_CLOCK   BIT_9S          /* Bus Clock 0/1 = 33/66 MHz */
+#define CS_BUS_SLOT_SZ BIT_8S          /* Slot Size 0/1 = 32/64 bit slot */
+#define CS_ST_SW_IRQ   BIT_7S          /* Set IRQ SW Request */
+#define CS_CL_SW_IRQ   BIT_6S          /* Clear IRQ SW Request */
+#define CS_STOP_DONE   BIT_5S          /* Stop Master is finished */
+#define CS_STOP_MAST   BIT_4S          /* Command Bit to stop the master */
+#define CS_MRST_CLR            BIT_3S          /* Clear Master reset   */
+#define CS_MRST_SET            BIT_2S          /* Set Master reset     */
+#define CS_RST_CLR             BIT_1S          /* Clear Software reset */
+#define CS_RST_SET             BIT_0S          /* Set   Software reset */
+
+/*     B0_LED           8 Bit  LED register */
+                                                               /* Bit  7.. 2:  reserved */
+#define LED_STAT_ON            BIT_1S          /* Status LED on        */
+#define LED_STAT_OFF   BIT_0S          /* Status LED off       */
+
+/*     B0_POWER_CTRL    8 Bit  Power Control reg (YUKON only) */
+#define PC_VAUX_ENA            BIT_7           /* Switch VAUX Enable  */
+#define PC_VAUX_DIS            BIT_6       /* Switch VAUX Disable */
+#define PC_VCC_ENA             BIT_5       /* Switch VCC Enable  */
+#define PC_VCC_DIS             BIT_4       /* Switch VCC Disable */
+#define PC_VAUX_ON             BIT_3       /* Switch VAUX On  */
+#define PC_VAUX_OFF            BIT_2       /* Switch VAUX Off */
+#define PC_VCC_ON              BIT_1       /* Switch VCC On  */
+#define PC_VCC_OFF             BIT_0       /* Switch VCC Off */
+
+/*     B0_ISRC         32 bit  Interrupt Source Register */
+/*     B0_IMSK         32 bit  Interrupt Mask Register */
+/*     B0_SP_ISRC      32 bit  Special Interrupt Source Reg */
+/*     B2_IRQM_MSK     32 bit  IRQ Moderation Mask */
+#define IS_ALL_MSK             0xbfffffffL     /*              All Interrupt bits */
+#define IS_HW_ERR              BIT_31          /* Interrupt HW Error */
+                                                               /* Bit 30:      reserved */
+#define IS_PA_TO_RX1   BIT_29          /* Packet Arb Timeout Rx1 */
+#define IS_PA_TO_RX2   BIT_28          /* Packet Arb Timeout Rx2 */
+#define IS_PA_TO_TX1   BIT_27          /* Packet Arb Timeout Tx1 */
+#define IS_PA_TO_TX2   BIT_26          /* Packet Arb Timeout Tx2 */
+#define IS_I2C_READY   BIT_25          /* IRQ on end of I2C Tx */
+#define IS_IRQ_SW              BIT_24          /* SW forced IRQ        */
+#define IS_EXT_REG             BIT_23          /* IRQ from LM80 or PHY (GENESIS only) */
+                                                                       /* IRQ from PHY (YUKON only) */
+#define IS_TIMINT              BIT_22          /* IRQ from Timer       */
+#define IS_MAC1                        BIT_21          /* IRQ from MAC 1       */
+#define IS_LNK_SYNC_M1 BIT_20          /* Link Sync Cnt wrap MAC 1 */
+#define IS_MAC2                        BIT_19          /* IRQ from MAC 2       */
+#define IS_LNK_SYNC_M2 BIT_18          /* Link Sync Cnt wrap MAC 2 */
+/* Receive Queue 1 */
+#define IS_R1_B                        BIT_17          /* Q_R1 End of Buffer */
+#define IS_R1_F                        BIT_16          /* Q_R1 End of Frame */
+#define IS_R1_C                        BIT_15          /* Q_R1 Encoding Error */
+/* Receive Queue 2 */
+#define IS_R2_B                        BIT_14          /* Q_R2 End of Buffer */
+#define IS_R2_F                        BIT_13          /* Q_R2 End of Frame */
+#define IS_R2_C                        BIT_12          /* Q_R2 Encoding Error */
+/* Synchronous Transmit Queue 1 */
+#define IS_XS1_B               BIT_11          /* Q_XS1 End of Buffer */
+#define IS_XS1_F               BIT_10          /* Q_XS1 End of Frame */
+#define IS_XS1_C               BIT_9           /* Q_XS1 Encoding Error */
+/* Asynchronous Transmit Queue 1 */
+#define IS_XA1_B               BIT_8           /* Q_XA1 End of Buffer */
+#define IS_XA1_F               BIT_7           /* Q_XA1 End of Frame */
+#define IS_XA1_C               BIT_6           /* Q_XA1 Encoding Error */
+/* Synchronous Transmit Queue 2 */
+#define IS_XS2_B               BIT_5           /* Q_XS2 End of Buffer */
+#define IS_XS2_F               BIT_4           /* Q_XS2 End of Frame */
+#define IS_XS2_C               BIT_3           /* Q_XS2 Encoding Error */
+/* Asynchronous Transmit Queue 2 */
+#define IS_XA2_B               BIT_2           /* Q_XA2 End of Buffer */
+#define IS_XA2_F               BIT_1           /* Q_XA2 End of Frame */
+#define IS_XA2_C               BIT_0           /* Q_XA2 Encoding Error */
+
+
+/*     B0_HWE_ISRC     32 bit  HW Error Interrupt Src Reg */
+/*     B0_HWE_IMSK     32 bit  HW Error Interrupt Mask Reg */
+/*     B2_IRQM_HWE_MSK 32 bit  IRQ Moderation HW Error Mask */
+#define IS_ERR_MSK             0x00000fffL     /*              All Error bits */
+                                                               /* Bit 31..14:  reserved */
+#define IS_IRQ_TIST_OV BIT_13  /* Time Stamp Timer Overflow (YUKON only) */
+#define IS_IRQ_SENSOR  BIT_12  /* IRQ from Sensor (YUKON only) */
+#define IS_IRQ_MST_ERR BIT_11  /* IRQ master error detected */
+#define IS_IRQ_STAT            BIT_10  /* IRQ status exception */
+#define IS_NO_STAT_M1  BIT_9   /* No Rx Status from MAC 1 */
+#define IS_NO_STAT_M2  BIT_8   /* No Rx Status from MAC 2 */
+#define IS_NO_TIST_M1  BIT_7   /* No Time Stamp from MAC 1 */
+#define IS_NO_TIST_M2  BIT_6   /* No Time Stamp from MAC 2 */
+#define IS_RAM_RD_PAR  BIT_5   /* RAM Read  Parity Error */
+#define IS_RAM_WR_PAR  BIT_4   /* RAM Write Parity Error */
+#define IS_M1_PAR_ERR  BIT_3   /* MAC 1 Parity Error */
+#define IS_M2_PAR_ERR  BIT_2   /* MAC 2 Parity Error */
+#define IS_R1_PAR_ERR  BIT_1   /* Queue R1 Parity Error */
+#define IS_R2_PAR_ERR  BIT_0   /* Queue R2 Parity Error */
+
+/*     B2_CONN_TYP      8 bit  Connector type */
+/*     B2_PMD_TYP       8 bit  PMD type */
+/*     Values of connector and PMD type comply to SysKonnect internal std */
+
+/*     B2_MAC_CFG       8 bit  MAC Configuration / Chip Revision */
+#define CONFIG_SYS_CHIP_R_MSK  (0xf<<4)        /* Bit 7.. 4: Chip Revision */
+                                                                       /* Bit 3.. 2:   reserved */
+#define CONFIG_SYS_DIS_M2_CLK  BIT_1S          /* Disable Clock for 2nd MAC */
+#define CONFIG_SYS_SNG_MAC             BIT_0S          /* MAC Config: 0=2 MACs / 1=1 MAC*/
+
+/*     B2_CHIP_ID       8 bit  Chip Identification Number */
+#define CHIP_ID_GENESIS        0x0a            /* Chip ID for GENESIS */
+#define CHIP_ID_YUKON  0xb0            /* Chip ID for YUKON */
+
+/*     B2_FAR          32 bit  Flash-Prom Addr Reg/Cnt */
+#define FAR_ADDR               0x1ffffL        /* Bit 16.. 0:  FPROM Address mask */
+
+/*     B2_LD_CRTL       8 bit  EPROM loader control register */
+/*     Bits are currently reserved */
+
+/*     B2_LD_TEST       8 bit  EPROM loader test register */
+                                                               /* Bit 7.. 4:   reserved */
+#define LD_T_ON                        BIT_3S  /* Loader Test mode on */
+#define LD_T_OFF               BIT_2S  /* Loader Test mode off */
+#define LD_T_STEP              BIT_1S  /* Decrement FPROM addr. Counter */
+#define LD_START               BIT_0S  /* Start loading FPROM */
+
+/*
+ *     Timer Section
+ */
+/*     B2_TI_CRTL       8 bit  Timer control */
+/*     B2_IRQM_CTRL     8 bit  IRQ Moderation Timer Control */
+                                                               /* Bit 7.. 3:   reserved */
+#define TIM_START              BIT_2S  /* Start Timer */
+#define TIM_STOP               BIT_1S  /* Stop  Timer */
+#define TIM_CLR_IRQ            BIT_0S  /* Clear Timer IRQ (!IRQM) */
+
+/*     B2_TI_TEST       8 Bit  Timer Test */
+/*     B2_IRQM_TEST     8 bit  IRQ Moderation Timer Test */
+/*     B28_DPT_TST      8 bit  Descriptor Poll Timer Test Reg */
+                                                               /* Bit 7.. 3:   reserved */
+#define TIM_T_ON               BIT_2S  /* Test mode on */
+#define TIM_T_OFF              BIT_1S  /* Test mode off */
+#define TIM_T_STEP             BIT_0S  /* Test step */
+
+/*     B28_DPT_INI     32 bit  Descriptor Poll Timer Init Val */
+/*     B28_DPT_VAL     32 bit  Descriptor Poll Timer Curr Val */
+                                                               /* Bit 31..24:  reserved */
+#define DPT_MSK                0x00ffffffL     /* Bit 23.. 0:  Desc Poll Timer Bits */
+
+/*     B28_DPT_CTRL     8 bit  Descriptor Poll Timer Ctrl Reg */
+                                                               /* Bit  7.. 2:  reserved */
+#define DPT_START              BIT_1S  /* Start Descriptor Poll Timer */
+#define DPT_STOP               BIT_0S  /* Stop  Descriptor Poll Timer */
+
+/*     B2_E_3                   8 bit  lower 4 bits used for HW self test result */
+#define B2_E3_RES_MASK 0x0f
+
+/*     B2_TST_CTRL1     8 bit  Test Control Register 1 */
+#define TST_FRC_DPERR_MR       BIT_7S  /* force DATAPERR on MST RD */
+#define TST_FRC_DPERR_MW       BIT_6S  /* force DATAPERR on MST WR */
+#define TST_FRC_DPERR_TR       BIT_5S  /* force DATAPERR on TRG RD */
+#define TST_FRC_DPERR_TW       BIT_4S  /* force DATAPERR on TRG WR */
+#define TST_FRC_APERR_M                BIT_3S  /* force ADDRPERR on MST */
+#define TST_FRC_APERR_T                BIT_2S  /* force ADDRPERR on TRG */
+#define TST_CFG_WRITE_ON       BIT_1S  /* Enable  Config Reg WR */
+#define TST_CFG_WRITE_OFF      BIT_0S  /* Disable Config Reg WR */
+
+/*     B2_TST_CTRL2     8 bit  Test Control Register 2 */
+                                                                       /* Bit 7.. 4:   reserved */
+                       /* force the following error on the next master read/write      */
+#define TST_FRC_DPERR_MR64     BIT_3S  /* DataPERR RD 64       */
+#define TST_FRC_DPERR_MW64     BIT_2S  /* DataPERR WR 64       */
+#define TST_FRC_APERR_1M64     BIT_1S  /* AddrPERR on 1. phase */
+#define TST_FRC_APERR_2M64     BIT_0S  /* AddrPERR on 2. phase */
+
+/*     B2_GP_IO        32 bit  General Purpose I/O Register */
+                                                       /* Bit 31..26:  reserved */
+#define GP_DIR_9       BIT_25  /* IO_9 direct, 0=I/1=O */
+#define GP_DIR_8       BIT_24  /* IO_8 direct, 0=I/1=O */
+#define GP_DIR_7       BIT_23  /* IO_7 direct, 0=I/1=O */
+#define GP_DIR_6       BIT_22  /* IO_6 direct, 0=I/1=O */
+#define GP_DIR_5       BIT_21  /* IO_5 direct, 0=I/1=O */
+#define GP_DIR_4       BIT_20  /* IO_4 direct, 0=I/1=O */
+#define GP_DIR_3       BIT_19  /* IO_3 direct, 0=I/1=O */
+#define GP_DIR_2       BIT_18  /* IO_2 direct, 0=I/1=O */
+#define GP_DIR_1       BIT_17  /* IO_1 direct, 0=I/1=O */
+#define GP_DIR_0       BIT_16  /* IO_0 direct, 0=I/1=O */
+                                               /* Bit 15..10:  reserved */
+#define GP_IO_9                BIT_9   /* IO_9 pin */
+#define GP_IO_8                BIT_8   /* IO_8 pin */
+#define GP_IO_7                BIT_7   /* IO_7 pin */
+#define GP_IO_6                BIT_6   /* IO_6 pin */
+#define GP_IO_5                BIT_5   /* IO_5 pin */
+#define GP_IO_4                BIT_4   /* IO_4 pin */
+#define GP_IO_3                BIT_3   /* IO_3 pin */
+#define GP_IO_2                BIT_2   /* IO_2 pin */
+#define GP_IO_1                BIT_1   /* IO_1 pin */
+#define GP_IO_0                BIT_0   /* IO_0 pin */
+
+/*     B2_I2C_CTRL     32 bit  I2C HW Control Register */
+#define I2C_FLAG               BIT_31          /* Start read/write if WR */
+#define I2C_ADDR               (0x7fffL<<16)   /* Bit 30..16:  Addr to be RD/WR */
+#define I2C_DEV_SEL            (0x7fL<<9)              /* Bit 15.. 9:  I2C Device Select */
+                                                               /* Bit  8.. 5:  reserved        */
+#define I2C_BURST_LEN  BIT_4           /* Burst Len, 1/4 bytes */
+#define I2C_DEV_SIZE   (7L<<1)         /* Bit  3.. 1:  I2C Device Size */
+#define I2C_025K_DEV   (0L<<1)         /*              0: 256 Bytes or smal. */
+#define I2C_05K_DEV            (1L<<1)         /*              1: 512  Bytes   */
+#define I2C_1K_DEV             (2L<<1)         /*              2: 1024 Bytes   */
+#define I2C_2K_DEV             (3L<<1)         /*              3: 2048 Bytes   */
+#define I2C_4K_DEV             (4L<<1)         /*              4: 4096 Bytes   */
+#define I2C_8K_DEV             (5L<<1)         /*              5: 8192 Bytes   */
+#define I2C_16K_DEV            (6L<<1)         /*              6: 16384 Bytes  */
+#define I2C_32K_DEV            (7L<<1)         /*              7: 32768 Bytes  */
+#define I2C_STOP               BIT_0           /* Interrupt I2C transfer */
+
+/*     B2_I2C_IRQ      32 bit  I2C HW IRQ Register */
+                                                               /* Bit 31.. 1   reserved */
+#define I2C_CLR_IRQ            BIT_0   /* Clear I2C IRQ */
+
+/*     B2_I2C_SW       32 bit (8 bit access)   I2C HW SW Port Register */
+                                                               /* Bit  7.. 3:  reserved */
+#define I2C_DATA_DIR   BIT_2S          /* direction of I2C_DATA */
+#define I2C_DATA               BIT_1S          /* I2C Data Port        */
+#define I2C_CLK                        BIT_0S          /* I2C Clock Port       */
+
+/*
+ * I2C Address
+ */
+#define I2C_SENS_ADDR  LM80_ADDR       /* I2C Sensor Address, (Volt and Temp)*/
+
+
+/*     B2_BSC_CTRL      8 bit  Blink Source Counter Control */
+                                                       /* Bit  7.. 2:  reserved */
+#define BSC_START      BIT_1S          /* Start Blink Source Counter */
+#define BSC_STOP       BIT_0S          /* Stop  Blink Source Counter */
+
+/*     B2_BSC_STAT      8 bit  Blink Source Counter Status */
+                                                       /* Bit  7.. 1:  reserved */
+#define BSC_SRC                BIT_0S          /* Blink Source, 0=Off / 1=On */
+
+/*     B2_BSC_TST      16 bit  Blink Source Counter Test Reg */
+#define BSC_T_ON       BIT_2S          /* Test mode on */
+#define BSC_T_OFF      BIT_1S          /* Test mode off */
+#define BSC_T_STEP     BIT_0S          /* Test step */
+
+
+/*     B3_RAM_ADDR     32 bit  RAM Address, to read or write */
+                                       /* Bit 31..19:  reserved */
+#define RAM_ADR_RAN    0x0007ffffL     /* Bit 18.. 0:  RAM Address Range */
+
+/* RAM Interface Registers */
+/*     B3_RI_CTRL      16 bit  RAM Iface Control Register */
+                                                               /* Bit 15..10:  reserved */
+#define RI_CLR_RD_PERR BIT_9S  /* Clear IRQ RAM Read Parity Err */
+#define RI_CLR_WR_PERR BIT_8S  /* Clear IRQ RAM Write Parity Err*/
+                                                               /* Bit  7.. 2:  reserved */
+#define RI_RST_CLR             BIT_1S  /* Clear RAM Interface Reset */
+#define RI_RST_SET             BIT_0S  /* Set   RAM Interface Reset */
+
+/*     B3_RI_TEST       8 bit  RAM Iface Test Register */
+                                                               /* Bit 15.. 4:  reserved */
+#define RI_T_EV                        BIT_3S  /* Timeout Event occured */
+#define RI_T_ON                        BIT_2S  /* Timeout Timer Test On */
+#define RI_T_OFF               BIT_1S  /* Timeout Timer Test Off */
+#define RI_T_STEP              BIT_0S  /* Timeout Timer Step */
+
+/* MAC Arbiter Registers */
+/*     B3_MA_TO_CTRL   16 bit  MAC Arbiter Timeout Ctrl Reg */
+                                                               /* Bit 15.. 4:  reserved */
+#define MA_FOE_ON              BIT_3S  /* XMAC Fast Output Enable ON */
+#define MA_FOE_OFF             BIT_2S  /* XMAC Fast Output Enable OFF */
+#define MA_RST_CLR             BIT_1S  /* Clear MAC Arbiter Reset */
+#define MA_RST_SET             BIT_0S  /* Set   MAC Arbiter Reset */
+
+/*     B3_MA_RC_CTRL   16 bit  MAC Arbiter Recovery Ctrl Reg */
+                                                               /* Bit 15.. 8:  reserved */
+#define MA_ENA_REC_TX2 BIT_7S  /* Enable  Recovery Timer TX2 */
+#define MA_DIS_REC_TX2 BIT_6S  /* Disable Recovery Timer TX2 */
+#define MA_ENA_REC_TX1 BIT_5S  /* Enable  Recovery Timer TX1 */
+#define MA_DIS_REC_TX1 BIT_4S  /* Disable Recovery Timer TX1 */
+#define MA_ENA_REC_RX2 BIT_3S  /* Enable  Recovery Timer RX2 */
+#define MA_DIS_REC_RX2 BIT_2S  /* Disable Recovery Timer RX2 */
+#define MA_ENA_REC_RX1 BIT_1S  /* Enable  Recovery Timer RX1 */
+#define MA_DIS_REC_RX1 BIT_0S  /* Disable Recovery Timer RX1 */
+
+/* Packet Arbiter Registers */
+/*     B3_PA_CTRL      16 bit  Packet Arbiter Ctrl Register */
+                                                               /* Bit 15..14:  reserved */
+#define PA_CLR_TO_TX2  BIT_13S /* Clear IRQ Packet Timeout TX2 */
+#define PA_CLR_TO_TX1  BIT_12S /* Clear IRQ Packet Timeout TX1 */
+#define PA_CLR_TO_RX2  BIT_11S /* Clear IRQ Packet Timeout RX2 */
+#define PA_CLR_TO_RX1  BIT_10S /* Clear IRQ Packet Timeout RX1 */
+#define PA_ENA_TO_TX2  BIT_9S  /* Enable  Timeout Timer TX2 */
+#define PA_DIS_TO_TX2  BIT_8S  /* Disable Timeout Timer TX2 */
+#define PA_ENA_TO_TX1  BIT_7S  /* Enable  Timeout Timer TX1 */
+#define PA_DIS_TO_TX1  BIT_6S  /* Disable Timeout Timer TX1 */
+#define PA_ENA_TO_RX2  BIT_5S  /* Enable  Timeout Timer RX2 */
+#define PA_DIS_TO_RX2  BIT_4S  /* Disable Timeout Timer RX2 */
+#define PA_ENA_TO_RX1  BIT_3S  /* Enable  Timeout Timer RX1 */
+#define PA_DIS_TO_RX1  BIT_2S  /* Disable Timeout Timer RX1 */
+#define PA_RST_CLR             BIT_1S  /* Clear MAC Arbiter Reset */
+#define PA_RST_SET             BIT_0S  /* Set   MAC Arbiter Reset */
+
+#define PA_ENA_TO_ALL  (PA_ENA_TO_RX1 | PA_ENA_TO_RX2 |\
+                                               PA_ENA_TO_TX1 | PA_ENA_TO_TX2)
+
+/* Rx/Tx Path related Arbiter Test Registers */
+/*     B3_MA_TO_TEST   16 bit  MAC Arbiter Timeout Test Reg */
+/*     B3_MA_RC_TEST   16 bit  MAC Arbiter Recovery Test Reg */
+/*     B3_PA_TEST      16 bit  Packet Arbiter Test Register */
+/*                     Bit 15, 11, 7, and 3 are reserved in B3_PA_TEST */
+#define TX2_T_EV       BIT_15S         /* TX2 Timeout/Recv Event occured */
+#define TX2_T_ON       BIT_14S         /* TX2 Timeout/Recv Timer Test On */
+#define TX2_T_OFF      BIT_13S         /* TX2 Timeout/Recv Timer Tst Off */
+#define TX2_T_STEP     BIT_12S         /* TX2 Timeout/Recv Timer Step */
+#define TX1_T_EV       BIT_11S         /* TX1 Timeout/Recv Event occured */
+#define TX1_T_ON       BIT_10S         /* TX1 Timeout/Recv Timer Test On */
+#define TX1_T_OFF      BIT_9S          /* TX1 Timeout/Recv Timer Tst Off */
+#define TX1_T_STEP     BIT_8S          /* TX1 Timeout/Recv Timer Step */
+#define RX2_T_EV       BIT_7S          /* RX2 Timeout/Recv Event occured */
+#define RX2_T_ON       BIT_6S          /* RX2 Timeout/Recv Timer Test On */
+#define RX2_T_OFF      BIT_5S          /* RX2 Timeout/Recv Timer Tst Off */
+#define RX2_T_STEP     BIT_4S          /* RX2 Timeout/Recv Timer Step */
+#define RX1_T_EV       BIT_3S          /* RX1 Timeout/Recv Event occured */
+#define RX1_T_ON       BIT_2S          /* RX1 Timeout/Recv Timer Test On */
+#define RX1_T_OFF      BIT_1S          /* RX1 Timeout/Recv Timer Tst Off */
+#define RX1_T_STEP     BIT_0S          /* RX1 Timeout/Recv Timer Step */
+
+
+/* Transmit Arbiter Registers MAC 1 and 2, use MR_ADDR() to access */
+/*     TXA_ITI_INI     32 bit  Tx Arb Interval Timer Init Val */
+/*     TXA_ITI_VAL     32 bit  Tx Arb Interval Timer Value */
+/*     TXA_LIM_INI     32 bit  Tx Arb Limit Counter Init Val */
+/*     TXA_LIM_VAL     32 bit  Tx Arb Limit Counter Value */
+                                                               /* Bit 31..24:  reserved */
+#define TXA_MAX_VAL    0x00ffffffL     /* Bit 23.. 0:  Max TXA Timer/Cnt Val */
+
+/*     TXA_CTRL         8 bit  Tx Arbiter Control Register */
+#define TXA_ENA_FSYNC  BIT_7S  /* Enable  force of sync Tx queue */
+#define TXA_DIS_FSYNC  BIT_6S  /* Disable force of sync Tx queue */
+#define TXA_ENA_ALLOC  BIT_5S  /* Enable  alloc of free bandwidth */
+#define TXA_DIS_ALLOC  BIT_4S  /* Disable alloc of free bandwidth */
+#define TXA_START_RC   BIT_3S  /* Start sync Rate Control */
+#define TXA_STOP_RC            BIT_2S  /* Stop  sync Rate Control */
+#define TXA_ENA_ARB            BIT_1S  /* Enable  Tx Arbiter */
+#define TXA_DIS_ARB            BIT_0S  /* Disable Tx Arbiter */
+
+/*     TXA_TEST         8 bit  Tx Arbiter Test Register */
+                                                               /* Bit 7.. 6:   reserved */
+#define TXA_INT_T_ON   BIT_5S  /* Tx Arb Interval Timer Test On */
+#define TXA_INT_T_OFF  BIT_4S  /* Tx Arb Interval Timer Test Off */
+#define TXA_INT_T_STEP BIT_3S  /* Tx Arb Interval Timer Step */
+#define TXA_LIM_T_ON   BIT_2S  /* Tx Arb Limit Timer Test On */
+#define TXA_LIM_T_OFF  BIT_1S  /* Tx Arb Limit Timer Test Off */
+#define TXA_LIM_T_STEP BIT_0S  /* Tx Arb Limit Timer Step */
+
+/*     TXA_STAT         8 bit  Tx Arbiter Status Register */
+                                                               /* Bit 7.. 1:   reserved */
+#define TXA_PRIO_XS            BIT_0S  /* sync queue has prio to send */
+
+/*     Q_BC    32 bit  Current Byte Counter */
+                                                               /* Bit 31..16:  reserved */
+#define BC_MAX                 0xffff  /* Bit 15.. 0:  Byte counter */
+
+/* BMU Control Status Registers */
+/*     B0_R1_CSR       32 bit  BMU Ctrl/Stat Rx Queue 1 */
+/*     B0_R2_CSR       32 bit  BMU Ctrl/Stat Rx Queue 2 */
+/*     B0_XA1_CSR      32 bit  BMU Ctrl/Stat Sync Tx Queue 1 */
+/*     B0_XS1_CSR      32 bit  BMU Ctrl/Stat Async Tx Queue 1 */
+/*     B0_XA2_CSR      32 bit  BMU Ctrl/Stat Sync Tx Queue 2 */
+/*     B0_XS2_CSR      32 bit  BMU Ctrl/Stat Async Tx Queue 2 */
+/*     Q_CSR           32 bit  BMU Control/Status Register */
+                                                               /* Bit 31..25:  reserved */
+#define CSR_SV_IDLE            BIT_24          /* BMU SM Idle */
+                                                               /* Bit 23..22:  reserved */
+#define CSR_DESC_CLR   BIT_21          /* Clear Reset for Descr */
+#define CSR_DESC_SET   BIT_20          /* Set   Reset for Descr */
+#define CSR_FIFO_CLR   BIT_19          /* Clear Reset for FIFO */
+#define CSR_FIFO_SET   BIT_18          /* Set   Reset for FIFO */
+#define CSR_HPI_RUN            BIT_17          /* Release HPI SM */
+#define CSR_HPI_RST            BIT_16          /* Reset   HPI SM to Idle */
+#define CSR_SV_RUN             BIT_15          /* Release Supervisor SM */
+#define CSR_SV_RST             BIT_14          /* Reset   Supervisor SM */
+#define CSR_DREAD_RUN  BIT_13          /* Release Descr Read SM */
+#define CSR_DREAD_RST  BIT_12          /* Reset   Descr Read SM */
+#define CSR_DWRITE_RUN BIT_11          /* Release Descr Write SM */
+#define CSR_DWRITE_RST BIT_10          /* Reset   Descr Write SM */
+#define CSR_TRANS_RUN  BIT_9           /* Release Transfer SM */
+#define CSR_TRANS_RST  BIT_8           /* Reset   Transfer SM */
+#define CSR_ENA_POL            BIT_7           /* Enable  Descr Polling */
+#define CSR_DIS_POL            BIT_6           /* Disable Descr Polling */
+#define CSR_STOP               BIT_5           /* Stop  Rx/Tx Queue */
+#define CSR_START              BIT_4           /* Start Rx/Tx Queue */
+#define CSR_IRQ_CL_P   BIT_3           /* (Rx) Clear Parity IRQ */
+#define CSR_IRQ_CL_B   BIT_2           /* Clear EOB IRQ */
+#define CSR_IRQ_CL_F   BIT_1           /* Clear EOF IRQ */
+#define CSR_IRQ_CL_C   BIT_0           /* Clear ERR IRQ */
+
+#define CSR_SET_RESET  (CSR_DESC_SET | CSR_FIFO_SET | CSR_HPI_RST |\
+                                               CSR_SV_RST | CSR_DREAD_RST | CSR_DWRITE_RST |\
+                                               CSR_TRANS_RST)
+#define CSR_CLR_RESET  (CSR_DESC_CLR | CSR_FIFO_CLR | CSR_HPI_RUN |\
+                                               CSR_SV_RUN | CSR_DREAD_RUN | CSR_DWRITE_RUN |\
+                                               CSR_TRANS_RUN)
+
+/*     Q_F     32 bit  Flag Register */
+                                                                       /* Bit 31..28:  reserved */
+#define F_ALM_FULL             BIT_27          /* Rx FIFO: almost full */
+#define F_EMPTY                        BIT_27          /* Tx FIFO: empty flag */
+#define F_FIFO_EOF             BIT_26          /* Tag (EOF Flag) bit in FIFO */
+#define F_WM_REACHED   BIT_25          /* Watermark reached */
+                                                                       /* reserved */
+#define F_FIFO_LEVEL   (0x1fL<<16)     /* Bit 23..16:  # of Qwords in FIFO */
+                                                                       /* Bit 15..11:  reserved */
+#define F_WATER_MARK   0x0007ffL       /* Bit 10.. 0:  Watermark */
+
+/*     Q_T1    32 bit  Test Register 1 */
+/*             Holds four State Machine control Bytes */
+#define SM_CRTL_SV_MSK (0xffL<<24)     /* Bit 31..24:  Control Supervisor SM */
+#define SM_CRTL_RD_MSK (0xffL<<16)     /* Bit 23..16:  Control Read Desc SM */
+#define SM_CRTL_WR_MSK (0xffL<<8)      /* Bit 15.. 8:  Control Write Desc SM */
+#define SM_CRTL_TR_MSK 0xffL           /* Bit  7.. 0:  Control Transfer SM */
+
+/*     Q_T1_TR  8 bit  Test Register 1 Transfer SM */
+/*     Q_T1_WR  8 bit  Test Register 1 Write Descriptor SM */
+/*     Q_T1_RD  8 bit  Test Register 1 Read Descriptor SM */
+/*     Q_T1_SV  8 bit  Test Register 1 Supervisor SM */
+
+/* The control status byte of each machine looks like ... */
+#define SM_STATE               0xf0    /* Bit 7.. 4:   State which shall be loaded */
+#define SM_LOAD                        BIT_3S  /* Load the SM with SM_STATE */
+#define SM_TEST_ON             BIT_2S  /* Switch on SM Test Mode */
+#define SM_TEST_OFF            BIT_1S  /* Go off the Test Mode */
+#define SM_STEP                        BIT_0S  /* Step the State Machine */
+/* The encoding of the states is not supported by the Diagnostics Tool */
+
+/*     Q_T2    32 bit  Test Register 2 */
+                                                               /* Bit 31.. 8:  reserved */
+#define T2_AC_T_ON             BIT_7   /* Address Counter Test Mode on */
+#define T2_AC_T_OFF            BIT_6   /* Address Counter Test Mode off */
+#define T2_BC_T_ON             BIT_5   /* Byte Counter Test Mode on */
+#define T2_BC_T_OFF            BIT_4   /* Byte Counter Test Mode off */
+#define T2_STEP04              BIT_3   /* Inc AC/Dec BC by 4 */
+#define T2_STEP03              BIT_2   /* Inc AC/Dec BC by 3 */
+#define T2_STEP02              BIT_1   /* Inc AC/Dec BC by 2 */
+#define T2_STEP01              BIT_0   /* Inc AC/Dec BC by 1 */
+
+/*     Q_T3    32 bit  Test Register 3 */
+                                                               /* Bit 31.. 7:  reserved */
+#define T3_MUX_MSK             (7<<4)  /* Bit  6.. 4:  Mux Position */
+                                                               /* Bit  3:      reserved */
+#define T3_VRAM_MSK            7               /* Bit  2.. 0:  Virtual RAM Buffer Address */
+
+/* RAM Buffer Register Offsets, use RB_ADDR(Queue, Offs) to access */
+/*     RB_START        32 bit  RAM Buffer Start Address */
+/*     RB_END          32 bit  RAM Buffer End Address */
+/*     RB_WP           32 bit  RAM Buffer Write Pointer */
+/*     RB_RP           32 bit  RAM Buffer Read Pointer */
+/*     RB_RX_UTPP      32 bit  Rx Upper Threshold, Pause Pack */
+/*     RB_RX_LTPP      32 bit  Rx Lower Threshold, Pause Pack */
+/*     RB_RX_UTHP      32 bit  Rx Upper Threshold, High Prio */
+/*     RB_RX_LTHP      32 bit  Rx Lower Threshold, High Prio */
+/*     RB_PC           32 bit  RAM Buffer Packet Counter */
+/*     RB_LEV          32 bit  RAM Buffer Level Register */
+                               /* Bit 31..19:  reserved */
+#define RB_MSK 0x0007ffff      /* Bit 18.. 0:  RAM Buffer Pointer Bits */
+
+/*     RB_TST2                  8 bit  RAM Buffer Test Register 2 */
+                                                               /* Bit 7.. 4:   reserved */
+#define RB_PC_DEC              BIT_3S  /* Packet Counter Decrem */
+#define RB_PC_T_ON             BIT_2S  /* Packet Counter Test On */
+#define RB_PC_T_OFF            BIT_1S  /* Packet Counter Tst Off */
+#define RB_PC_INC              BIT_0S  /* Packet Counter Increm */
+
+/*     RB_TST1                  8 bit  RAM Buffer Test Register 1 */
+                                                       /* Bit 7:       reserved */
+#define RB_WP_T_ON             BIT_6S  /* Write Pointer Test On */
+#define RB_WP_T_OFF            BIT_5S  /* Write Pointer Test Off */
+#define RB_WP_INC              BIT_4S  /* Write Pointer Increm */
+                                                               /* Bit 3:       reserved */
+#define RB_RP_T_ON             BIT_2S  /* Read Pointer Test On */
+#define RB_RP_T_OFF            BIT_1S  /* Read Pointer Test Off */
+#define RB_RP_DEC              BIT_0S  /* Read Pointer Decrement */
+
+/*     RB_CTRL                  8 bit  RAM Buffer Control Register */
+                                                               /* Bit 7.. 6:   reserved */
+#define RB_ENA_STFWD   BIT_5S  /* Enable  Store & Forward */
+#define RB_DIS_STFWD   BIT_4S  /* Disable Store & Forward */
+#define RB_ENA_OP_MD   BIT_3S  /* Enable  Operation Mode */
+#define RB_DIS_OP_MD   BIT_2S  /* Disable Operation Mode */
+#define RB_RST_CLR             BIT_1S  /* Clear RAM Buf STM Reset */
+#define RB_RST_SET             BIT_0S  /* Set   RAM Buf STM Reset */
+
+
+/* Receive and Transmit MAC FIFO Registers (GENESIS only) */
+
+/*     RX_MFF_EA       32 bit  Receive MAC FIFO End Address */
+/*     RX_MFF_WP       32 bit  Receive MAC FIFO Write Pointer */
+/*     RX_MFF_RP       32 bit  Receive MAC FIFO Read Pointer */
+/*     RX_MFF_PC       32 bit  Receive MAC FIFO Packet Counter */
+/*     RX_MFF_LEV      32 bit  Receive MAC FIFO Level */
+/*     TX_MFF_EA       32 bit  Transmit MAC FIFO End Address */
+/*     TX_MFF_WP       32 bit  Transmit MAC FIFO Write Pointer */
+/*     TX_MFF_WSP      32 bit  Transmit MAC FIFO WR Shadow Pointer */
+/*     TX_MFF_RP       32 bit  Transmit MAC FIFO Read Pointer */
+/*     TX_MFF_PC       32 bit  Transmit MAC FIFO Packet Cnt */
+/*     TX_MFF_LEV      32 bit  Transmit MAC FIFO Level */
+                                                               /* Bit 31.. 6:  reserved */
+#define MFF_MSK                        0x007fL /* Bit  5.. 0:  MAC FIFO Address/Ptr Bits */
+
+/*     RX_MFF_CTRL1    16 bit  Receive MAC FIFO Control Reg 1 */
+                                                               /* Bit 15..14:  reserved */
+#define MFF_ENA_RDY_PAT        BIT_13S         /* Enable  Ready Patch */
+#define MFF_DIS_RDY_PAT        BIT_12S         /* Disable Ready Patch */
+#define MFF_ENA_TIM_PAT        BIT_11S         /* Enable  Timing Patch */
+#define MFF_DIS_TIM_PAT        BIT_10S         /* Disable Timing Patch */
+#define MFF_ENA_ALM_FUL        BIT_9S          /* Enable  AlmostFull Sign */
+#define MFF_DIS_ALM_FUL        BIT_8S          /* Disable AlmostFull Sign */
+#define MFF_ENA_PAUSE  BIT_7S          /* Enable  Pause Signaling */
+#define MFF_DIS_PAUSE  BIT_6S          /* Disable Pause Signaling */
+#define MFF_ENA_FLUSH  BIT_5S          /* Enable  Frame Flushing */
+#define MFF_DIS_FLUSH  BIT_4S          /* Disable Frame Flushing */
+#define MFF_ENA_TIST   BIT_3S          /* Enable  Time Stamp Gener */
+#define MFF_DIS_TIST   BIT_2S          /* Disable Time Stamp Gener */
+#define MFF_CLR_INTIST BIT_1S          /* Clear IRQ No Time Stamp */
+#define MFF_CLR_INSTAT BIT_0S          /* Clear IRQ No Status */
+
+#define MFF_RX_CTRL_DEF MFF_ENA_TIM_PAT
+
+/*     TX_MFF_CTRL1    16 bit  Transmit MAC FIFO Control Reg 1 */
+#define MFF_CLR_PERR   BIT_15S         /* Clear Parity Error IRQ */
+                                                               /* Bit 14:      reserved */
+#define MFF_ENA_PKT_REC        BIT_13S         /* Enable  Packet Recovery */
+#define MFF_DIS_PKT_REC BIT_12S                /* Disable Packet Recovery */
+/*     MFF_ENA_TIM_PAT  (see RX_MFF_CTRL1) Bit 11:     Enable  Timing Patch */
+/*     MFF_DIS_TIM_PAT  (see RX_MFF_CTRL1) Bit 10:     Disable Timing Patch */
+/*     MFF_ENA_ALM_FUL  (see RX_MFF_CTRL1) Bit  9:     Enable  Almost Full Sign */
+/*     MFF_DIS_ALM_FUL  (see RX_MFF_CTRL1) Bit  8:     Disable Almost Full Sign */
+#define MFF_ENA_W4E            BIT_7S          /* Enable  Wait for Empty */
+#define MFF_DIS_W4E            BIT_6S          /* Disable Wait for Empty */
+/*     MFF_ENA_FLUSH    (see RX_MFF_CTRL1) Bit  5:     Enable  Frame Flushing */
+/*     MFF_DIS_FLUSH    (see RX_MFF_CTRL1) Bit  4:     Disable Frame Flushing */
+#define MFF_ENA_LOOPB  BIT_3S          /* Enable  Loopback */
+#define MFF_DIS_LOOPB  BIT_2S          /* Disable Loopback */
+#define MFF_CLR_MAC_RST        BIT_1S          /* Clear XMAC Reset */
+#define MFF_SET_MAC_RST        BIT_0S          /* Set   XMAC Reset */
+
+#define MFF_TX_CTRL_DEF        (MFF_ENA_PKT_REC | MFF_ENA_TIM_PAT | MFF_ENA_FLUSH)
+
+/*     RX_MFF_TST2              8 bit  Receive MAC FIFO Test Register 2 */
+/*     TX_MFF_TST2              8 bit  Transmit MAC FIFO Test Register 2 */
+                                                               /* Bit 7:       reserved */
+#define MFF_WSP_T_ON   BIT_6S  /* Tx: Write Shadow Ptr TestOn */
+#define MFF_WSP_T_OFF  BIT_5S  /* Tx: Write Shadow Ptr TstOff */
+#define MFF_WSP_INC            BIT_4S  /* Tx: Write Shadow Ptr Increment */
+#define MFF_PC_DEC             BIT_3S  /* Packet Counter Decrement */
+#define MFF_PC_T_ON            BIT_2S  /* Packet Counter Test On */
+#define MFF_PC_T_OFF   BIT_1S  /* Packet Counter Test Off */
+#define MFF_PC_INC             BIT_0S  /* Packet Counter Increment */
+
+/*     RX_MFF_TST1              8 bit  Receive MAC FIFO Test Register 1 */
+/*     TX_MFF_TST1              8 bit  Transmit MAC FIFO Test Register 1 */
+                                       /* Bit 7:       reserved */
+#define MFF_WP_T_ON            BIT_6S  /* Write Pointer Test On */
+#define MFF_WP_T_OFF   BIT_5S  /* Write Pointer Test Off */
+#define MFF_WP_INC             BIT_4S  /* Write Pointer Increm */
+                                                       /* Bit 3:       reserved */
+#define MFF_RP_T_ON            BIT_2S  /* Read Pointer Test On */
+#define MFF_RP_T_OFF   BIT_1S  /* Read Pointer Test Off */
+#define MFF_RP_DEC             BIT_0S  /* Read Pointer Decrement */
+
+/*     RX_MFF_CTRL2     8 bit  Receive MAC FIFO Control Reg 2 */
+/*     TX_MFF_CTRL2     8 bit  Transmit MAC FIFO Control Reg 2 */
+                                                               /* Bit 7..4:    reserved */
+#define MFF_ENA_OP_MD  BIT_3S  /* Enable  Operation Mode */
+#define MFF_DIS_OP_MD  BIT_2S  /* Disable Operation Mode */
+#define MFF_RST_CLR            BIT_1S  /* Clear MAC FIFO Reset */
+#define MFF_RST_SET            BIT_0S  /* Set   MAC FIFO Reset */
+
+
+/*     Link LED Counter Registers (GENESIS only) */
+
+/*     RX_LED_CTRL              8 bit  Receive LED Cnt Control Reg */
+/*     TX_LED_CTRL              8 bit  Transmit LED Cnt Control Reg */
+/*     LNK_SYNC_CTRL    8 bit  Link Sync Cnt Control Register */
+                                                       /* Bit 7.. 3:   reserved */
+#define LED_START              BIT_2S  /* Start Timer */
+#define LED_STOP               BIT_1S  /* Stop Timer */
+#define LED_STATE              BIT_0S  /* Rx/Tx: LED State, 1=LED on */
+#define LED_CLR_IRQ            BIT_0S  /* Lnk:         Clear Link IRQ */
+
+/*     RX_LED_TST               8 bit  Receive LED Cnt Test Register */
+/*     TX_LED_TST               8 bit  Transmit LED Cnt Test Register */
+/*     LNK_SYNC_TST     8 bit  Link Sync Cnt Test Register */
+                                                       /* Bit 7.. 3:   reserved */
+#define LED_T_ON               BIT_2S  /* LED Counter Test mode On */
+#define LED_T_OFF              BIT_1S  /* LED Counter Test mode Off */
+#define LED_T_STEP             BIT_0S  /* LED Counter Step */
+
+/*     LNK_LED_REG              8 bit  Link LED Register */
+                                                               /* Bit 7.. 6:   reserved */
+#define LED_BLK_ON             BIT_5S  /* Link LED Blinking On */
+#define LED_BLK_OFF            BIT_4S  /* Link LED Blinking Off */
+#define LED_SYNC_ON            BIT_3S  /* Use Sync Wire to switch LED */
+#define LED_SYNC_OFF   BIT_2S  /* Disable Sync Wire Input */
+#define LED_ON                 BIT_1S  /* switch LED on */
+#define LED_OFF                        BIT_0S  /* switch LED off */
+
+/*     Receive and Transmit GMAC FIFO Registers (YUKON only) */
+
+/*     RX_GMF_EA               32 bit  Rx GMAC FIFO End Address */
+/*     RX_GMF_AF_THR   32 bit  Rx GMAC FIFO Almost Full Thresh. */
+/*     RX_GMF_WP               32 bit  Rx GMAC FIFO Write Pointer */
+/*     RX_GMF_WLEV             32 bit  Rx GMAC FIFO Write Level */
+/*     RX_GMF_RP               32 bit  Rx GMAC FIFO Read Pointer */
+/*     RX_GMF_RLEV             32 bit  Rx GMAC FIFO Read Level */
+/*     TX_GMF_EA               32 bit  Tx GMAC FIFO End Address */
+/*     TX_GMF_AE_THR   32 bit  Tx GMAC FIFO Almost Empty Thresh.*/
+/*     TX_GMF_WP               32 bit  Tx GMAC FIFO Write Pointer */
+/*     TX_GMF_WSP              32 bit  Tx GMAC FIFO Write Shadow Ptr. */
+/*     TX_GMF_WLEV             32 bit  Tx GMAC FIFO Write Level */
+/*     TX_GMF_RP               32 bit  Tx GMAC FIFO Read Pointer */
+/*     TX_GMF_RSTP             32 bit  Tx GMAC FIFO Restart Pointer */
+/*     TX_GMF_RLEV             32 bit  Tx GMAC FIFO Read Level */
+
+/*     RX_GMF_CTRL_T   32 bit  Rx GMAC FIFO Control/Test */
+                                               /* Bits 31..15: reserved */
+#define GMF_WP_TST_ON  BIT_14          /* Write Pointer Test On */
+#define GMF_WP_TST_OFF BIT_13          /* Write Pointer Test Off */
+#define GMF_WP_STEP            BIT_12          /* Write Pointer Step/Increment */
+                                               /* Bit 11:      reserved */
+#define GMF_RP_TST_ON  BIT_10          /* Read Pointer Test On */
+#define GMF_RP_TST_OFF BIT_9           /* Read Pointer Test Off */
+#define GMF_RP_STEP            BIT_8           /* Read Pointer Step/Increment */
+#define GMF_RX_F_FL_ON BIT_7           /* Rx FIFO Flush Mode On */
+#define GMF_RX_F_FL_OFF        BIT_6           /* Rx FIFO Flush Mode Off */
+#define GMF_CLI_RX_FO  BIT_5           /* Clear IRQ Rx FIFO Overrun */
+#define GMF_CLI_RX_FC  BIT_4           /* Clear IRQ Rx Frame Complete */
+#define GMF_OPER_ON            BIT_3           /* Operational Mode On */
+#define GMF_OPER_OFF   BIT_2           /* Operational Mode Off */
+#define GMF_RST_CLR            BIT_1           /* Clear GMAC FIFO Reset */
+#define GMF_RST_SET            BIT_0           /* Set   GMAC FIFO Reset */
+
+/*     TX_GMF_CTRL_T   32 bit  Tx GMAC FIFO Control/Test */
+                                               /* Bits 31..19: reserved */
+#define GMF_WSP_TST_ON BIT_18          /* Write Shadow Pointer Test On */
+#define GMF_WSP_TST_OFF        BIT_17          /* Write Shadow Pointer Test Off */
+#define GMF_WSP_STEP   BIT_16          /* Write Shadow Pointer Step/Increment */
+                                               /* Bits 15..7: same as for RX_GMF_CTRL_T */
+#define GMF_CLI_TX_FU  BIT_6           /* Clear IRQ Tx FIFO Underrun */
+#define GMF_CLI_TX_FC  BIT_5           /* Clear IRQ Tx Frame Complete */
+#define GMF_CLI_TX_PE  BIT_4           /* Clear IRQ Tx Parity Error */
+                                               /* Bits 3..0: same as for RX_GMF_CTRL_T */
+
+#define GMF_RX_CTRL_DEF                (GMF_OPER_ON | GMF_RX_F_FL_ON)
+#define GMF_TX_CTRL_DEF                GMF_OPER_ON
+
+#define RX_GMF_FL_THR_DEF      0x0a    /* Rx GMAC FIFO Flush Threshold default */
+
+/*     GMAC_TI_ST_CTRL           8 bit Time Stamp Timer Ctrl Reg (YUKON only) */
+                                                               /* Bit 7.. 3:   reserved */
+#define GMT_ST_START   BIT_2S          /* Start Time Stamp Timer */
+#define GMT_ST_STOP            BIT_1S          /* Stop  Time Stamp Timer */
+#define GMT_ST_CLR_IRQ BIT_0S          /* Clear Time Stamp Timer IRQ */
+
+/*     GMAC_CTRL               32 bit  GMAC Control Reg (YUKON only) */
+                                               /* Bits 31.. 8: reserved */
+#define GMC_H_BURST_ON BIT_7           /* Half Duplex Burst Mode On */
+#define GMC_H_BURST_OFF        BIT_6           /* Half Duplex Burst Mode Off */
+#define GMC_F_LOOPB_ON BIT_5           /* FIFO Loopback On */
+#define GMC_F_LOOPB_OFF        BIT_4           /* FIFO Loopback Off */
+#define GMC_PAUSE_ON   BIT_3           /* Pause On */
+#define GMC_PAUSE_OFF  BIT_2           /* Pause Off */
+#define GMC_RST_CLR            BIT_1           /* Clear GMAC Reset */
+#define GMC_RST_SET            BIT_0           /* Set   GMAC Reset */
+
+/*     GPHY_CTRL               32 bit  GPHY Control Reg (YUKON only) */
+                                               /* Bits 31..29: reserved */
+#define GPC_SEL_BDT            BIT_28  /* Select Bi-Dir. Transfer for MDC/MDIO */
+#define GPC_INT_POL_HI BIT_27  /* IRQ Polarity is Active HIGH */
+#define GPC_75_OHM             BIT_26  /* Use 75 Ohm Termination instead of 50 */
+#define GPC_DIS_FC             BIT_25  /* Disable Automatic Fiber/Copper Detection */
+#define GPC_DIS_SLEEP  BIT_24  /* Disable Energy Detect */
+#define GPC_HWCFG_M_3  BIT_23  /* HWCFG_MODE[3] */
+#define GPC_HWCFG_M_2  BIT_22  /* HWCFG_MODE[2] */
+#define GPC_HWCFG_M_1  BIT_21  /* HWCFG_MODE[1] */
+#define GPC_HWCFG_M_0  BIT_20  /* HWCFG_MODE[0] */
+#define GPC_ANEG_0             BIT_19  /* ANEG[0] */
+#define GPC_ENA_XC             BIT_18  /* Enable MDI crossover */
+#define GPC_DIS_125            BIT_17  /* Disable 125 MHz clock */
+#define GPC_ANEG_3             BIT_16  /* ANEG[3] */
+#define GPC_ANEG_2             BIT_15  /* ANEG[2] */
+#define GPC_ANEG_1             BIT_14  /* ANEG[1] */
+#define GPC_ENA_PAUSE  BIT_13  /* Enable Pause (SYM_OR_REM) */
+#define GPC_PHYADDR_4  BIT_12  /* Bit 4 of Phy Addr */
+#define GPC_PHYADDR_3  BIT_11  /* Bit 3 of Phy Addr */
+#define GPC_PHYADDR_2  BIT_10  /* Bit 2 of Phy Addr */
+#define GPC_PHYADDR_1  BIT_9   /* Bit 1 of Phy Addr */
+#define GPC_PHYADDR_0  BIT_8   /* Bit 0 of Phy Addr */
+                                               /* Bits  7..2:  reserved */
+#define GPC_RST_CLR            BIT_1   /* Clear GPHY Reset */
+#define GPC_RST_SET            BIT_0   /* Set   GPHY Reset */
+
+#define GPC_HWCFG_GMII_COP     (GPC_HWCFG_M_3 | GPC_HWCFG_M_2 | \
+                                                        GPC_HWCFG_M_1 | GPC_HWCFG_M_0)
+
+#define GPC_HWCFG_GMII_FIB     (                                GPC_HWCFG_M_2 | \
+                                                        GPC_HWCFG_M_1 | GPC_HWCFG_M_0)
+
+#define GPC_ANEG_ADV_ALL_M     (GPC_ANEG_3 | GPC_ANEG_2 | \
+                                                        GPC_ANEG_1 | GPC_ANEG_0)
+
+/* forced speed and duplex mode (don't mix with other ANEG bits) */
+#define GPC_FRC10MBIT_HALF     0
+#define GPC_FRC10MBIT_FULL     GPC_ANEG_0
+#define GPC_FRC100MBIT_HALF    GPC_ANEG_1
+#define GPC_FRC100MBIT_FULL    (GPC_ANEG_0 | GPC_ANEG_1)
+
+/* auto-negotiation with limited advertised speeds */
+/* mix only with master/slave settings (for copper) */
+#define GPC_ADV_1000_HALF      GPC_ANEG_2
+#define GPC_ADV_1000_FULL      GPC_ANEG_3
+#define GPC_ADV_ALL                    (GPC_ANEG_2 | GPC_ANEG_3)
+
+/* master/slave settings */
+/* only for copper with 1000 Mbps */
+#define GPC_FORCE_MASTER       0
+#define GPC_FORCE_SLAVE                GPC_ANEG_0
+#define GPC_PREF_MASTER                GPC_ANEG_1
+#define GPC_PREF_SLAVE         (GPC_ANEG_1 | GPC_ANEG_0)
+
+/*     GMAC_IRQ_SRC     8 bit  GMAC Interrupt Source Reg (YUKON only) */
+/*     GMAC_IRQ_MSK     8 bit  GMAC Interrupt Mask   Reg (YUKON only) */
+#define GM_IS_TX_CO_OV BIT_5           /* Transmit Counter Overflow IRQ */
+#define GM_IS_RX_CO_OV BIT_4           /* Receive Counter Overflow IRQ */
+#define GM_IS_TX_FF_UR BIT_3           /* Transmit FIFO Underrun */
+#define GM_IS_TX_COMPL BIT_2           /* Frame Transmission Complete */
+#define GM_IS_RX_FF_OR BIT_1           /* Receive FIFO Overrun */
+#define GM_IS_RX_COMPL BIT_0           /* Frame Reception Complete */
+
+#define GMAC_DEF_MSK   (GM_IS_TX_CO_OV | GM_IS_RX_CO_OV | \
+                                               GM_IS_TX_FF_UR)
+
+/*     GMAC_LINK_CTRL          16 bit  GMAC Link Control Reg (YUKON only) */
+                                               /* Bits 15.. 2: reserved */
+#define GMLC_RST_CLR   BIT_1S          /* Clear GMAC Link Reset */
+#define GMLC_RST_SET   BIT_0S          /* Set   GMAC Link Reset */
+
+
+/*     WOL_CTRL_STAT           16 bit  WOL Control/Status Reg */
+#define WOL_CTL_LINK_CHG_OCC                   BIT_15S
+#define WOL_CTL_MAGIC_PKT_OCC                  BIT_14S
+#define WOL_CTL_PATTERN_OCC                            BIT_13S
+
+#define WOL_CTL_CLEAR_RESULT                   BIT_12S
+
+#define WOL_CTL_ENA_PME_ON_LINK_CHG            BIT_11S
+#define WOL_CTL_DIS_PME_ON_LINK_CHG            BIT_10S
+#define WOL_CTL_ENA_PME_ON_MAGIC_PKT   BIT_9S
+#define WOL_CTL_DIS_PME_ON_MAGIC_PKT   BIT_8S
+#define WOL_CTL_ENA_PME_ON_PATTERN             BIT_7S
+#define WOL_CTL_DIS_PME_ON_PATTERN             BIT_6S
+
+#define WOL_CTL_ENA_LINK_CHG_UNIT              BIT_5S
+#define WOL_CTL_DIS_LINK_CHG_UNIT              BIT_4S
+#define WOL_CTL_ENA_MAGIC_PKT_UNIT             BIT_3S
+#define WOL_CTL_DIS_MAGIC_PKT_UNIT             BIT_2S
+#define WOL_CTL_ENA_PATTERN_UNIT               BIT_1S
+#define WOL_CTL_DIS_PATTERN_UNIT               BIT_0S
+
+#define WOL_CTL_DEFAULT                                \
+       (WOL_CTL_DIS_PME_ON_LINK_CHG |  \
+       WOL_CTL_DIS_PME_ON_PATTERN |    \
+       WOL_CTL_DIS_PME_ON_MAGIC_PKT |  \
+       WOL_CTL_DIS_LINK_CHG_UNIT |             \
+       WOL_CTL_DIS_PATTERN_UNIT |              \
+       WOL_CTL_DIS_MAGIC_PKT_UNIT)
+
+/*     WOL_MATCH_CTL            8 bit  WOL Match Control Reg */
+#define WOL_CTL_PATT_ENA(x)                            (BIT_0 << (x))
+
+#define SK_NUM_WOL_PATTERN             7
+#define SK_PATTERN_PER_WORD            4
+#define SK_BITMASK_PATTERN             7
+#define SK_POW_PATTERN_LENGTH  128
+
+#define WOL_LENGTH_MSK         0x7f
+#define WOL_LENGTH_SHIFT       8
+
+
+/* Receive and Transmit Descriptors ******************************************/
+
+/* Transmit Descriptor struct */
+typedef        struct s_HwTxd {
+       SK_U32 volatile TxCtrl; /* Transmit Buffer Control Field */
+       SK_U32  TxNext;                 /* Physical Address Pointer to the next TxD */
+       SK_U32  TxAdrLo;                /* Physical Tx Buffer Address lower dword */
+       SK_U32  TxAdrHi;                /* Physical Tx Buffer Address upper dword */
+       SK_U32  TxStat;                 /* Transmit Frame Status Word */
+#ifndef        SK_USE_REV_DESC
+       SK_U16  TxTcpOffs;              /* TCP Checksum Calculation Start Value */
+       SK_U16  TxRes1;                 /* 16 bit reserved field */
+       SK_U16  TxTcpWp;                /* TCP Checksum Write Position */
+       SK_U16  TxTcpSp;                /* TCP Checksum Calculation Start Position */
+#else  /* SK_USE_REV_DESC */
+       SK_U16  TxRes1;                 /* 16 bit reserved field */
+       SK_U16  TxTcpOffs;              /* TCP Checksum Calculation Start Value */
+       SK_U16  TxTcpSp;                /* TCP Checksum Calculation Start Position */
+       SK_U16  TxTcpWp;                /* TCP Checksum Write Position */
+#endif /* SK_USE_REV_DESC */
+       SK_U32  TxRes2;                 /* 32 bit reserved field */
+} SK_HWTXD;
+
+/* Receive Descriptor struct */
+typedef        struct s_HwRxd {
+       SK_U32 volatile RxCtrl; /* Receive Buffer Control Field */
+       SK_U32  RxNext;                 /* Physical Address Pointer to the next RxD */
+       SK_U32  RxAdrLo;                /* Physical Rx Buffer Address lower dword */
+       SK_U32  RxAdrHi;                /* Physical Rx Buffer Address upper dword */
+       SK_U32  RxStat;                 /* Receive Frame Status Word */
+       SK_U32  RxTiSt;                 /* Receive Time Stamp (from XMAC on GENESIS) */
+#ifndef        SK_USE_REV_DESC
+       SK_U16  RxTcpSum1;              /* TCP Checksum 1 */
+       SK_U16  RxTcpSum2;              /* TCP Checksum 2 */
+       SK_U16  RxTcpSp1;               /* TCP Checksum Calculation Start Position 1 */
+       SK_U16  RxTcpSp2;               /* TCP Checksum Calculation Start Position 2 */
+#else  /* SK_USE_REV_DESC */
+       SK_U16  RxTcpSum2;              /* TCP Checksum 2 */
+       SK_U16  RxTcpSum1;              /* TCP Checksum 1 */
+       SK_U16  RxTcpSp2;               /* TCP Checksum Calculation Start Position 2 */
+       SK_U16  RxTcpSp1;               /* TCP Checksum Calculation Start Position 1 */
+#endif /* SK_USE_REV_DESC */
+} SK_HWRXD;
+
+/*
+ * Drivers which use the reverse descriptor feature (PCI_OUR_REG_2)
+ * should set the define SK_USE_REV_DESC.
+ * Structures are 'normaly' not endianess dependent. But in
+ * this case the SK_U16 fields are bound to bit positions inside the
+ * descriptor. RxTcpSum1 e.g. must start at bit 0 within the 6.th DWord.
+ * The bit positions inside a DWord are of course endianess dependent and
+ * swaps if the DWord is swapped by the hardware.
+ */
+
+
+/* Descriptor Bit Definition */
+/*     TxCtrl          Transmit Buffer Control Field */
+/*     RxCtrl          Receive  Buffer Control Field */
+#define BMU_OWN                        BIT_31  /* OWN bit: 0=host/1=BMU */
+#define BMU_STF                        BIT_30  /* Start of Frame */
+#define BMU_EOF                        BIT_29  /* End of Frame */
+#define BMU_IRQ_EOB            BIT_28  /* Req "End of Buffer" IRQ */
+#define BMU_IRQ_EOF            BIT_27  /* Req "End of Frame" IRQ */
+/* TxCtrl specific bits */
+#define BMU_STFWD              BIT_26  /* (Tx) Store & Forward Frame */
+#define BMU_NO_FCS             BIT_25  /* (Tx) Disable MAC FCS (CRC) generation */
+#define BMU_SW                 BIT_24  /* (Tx) 1 bit res. for SW use */
+/* RxCtrl specific bits */
+#define BMU_DEV_0              BIT_26  /* (Rx) Transfer data to Dev0 */
+#define BMU_STAT_VAL   BIT_25  /* (Rx) Rx Status Valid */
+#define BMU_TIST_VAL   BIT_24  /* (Rx) Rx TimeStamp Valid */
+                                                               /* Bit 23..16:  BMU Check Opcodes */
+#define BMU_CHECK              (0x55L<<16)     /* Default BMU check */
+#define BMU_TCP_CHECK  (0x56L<<16)     /* Descr with TCP ext */
+#define BMU_UDP_CHECK  (0x57L<<16)     /* Descr with UDP ext (YUKON only) */
+#define BMU_BBC                        0xFFFFL /* Bit 15.. 0:  Buffer Byte Counter */
+
+/*     TxStat          Transmit Frame Status Word */
+/*     RxStat          Receive Frame Status Word */
+/*
+ *Note: TxStat is reserved for ASIC loopback mode only
+ *
+ *     The Bits of the Status words are defined in xmac_ii.h
+ *     (see XMR_FS bits)
+ */
+
+/* other defines *************************************************************/
+
+/*
+ * FlashProm specification
+ */
+#define MAX_PAGES      0x20000L        /* Every byte has a single page */
+#define MAX_FADDR      1                       /* 1 byte per page */
+#define SKFDDI_PSZ     8                       /* address PROM size */
+
+/* macros ********************************************************************/
+
+/*
+ * Receive and Transmit Queues
+ */
+#define Q_R1   0x0000          /* Receive Queue 1 */
+#define Q_R2   0x0080          /* Receive Queue 2 */
+#define Q_XS1  0x0200          /* Synchronous Transmit Queue 1 */
+#define Q_XA1  0x0280          /* Asynchronous Transmit Queue 1 */
+#define Q_XS2  0x0300          /* Synchronous Transmit Queue 2 */
+#define Q_XA2  0x0380          /* Asynchronous Transmit Queue 2 */
+
+/*
+ *     Macro Q_ADDR()
+ *
+ *     Use this macro to access the Receive and Transmit Queue Registers.
+ *
+ * para:
+ *     Queue   Queue to access.
+ *                             Values: Q_R1, Q_R2, Q_XS1, Q_XA1, Q_XS2, and Q_XA2
+ *     Offs    Queue register offset.
+ *                             Values: Q_D, Q_DA_L ... Q_T2, Q_T3
+ *
+ * usage       SK_IN32(pAC, Q_ADDR(Q_R2, Q_BC), pVal)
+ */
+#define Q_ADDR(Queue, Offs)    (B8_Q_REGS + (Queue) + (Offs))
+
+/*
+ *     Macro RB_ADDR()
+ *
+ *     Use this macro to access the RAM Buffer Registers.
+ *
+ * para:
+ *     Queue   Queue to access.
+ *                             Values: Q_R1, Q_R2, Q_XS1, Q_XA1, Q_XS2, and Q_XA2
+ *     Offs    Queue register offset.
+ *                             Values: RB_START, RB_END ... RB_LEV, RB_CTRL
+ *
+ * usage       SK_IN32(pAC, RB_ADDR(Q_R2, RB_RP), pVal)
+ */
+#define RB_ADDR(Queue, Offs)   (B16_RAM_REGS + (Queue) + (Offs))
+
+
+/*
+ * MAC Related Registers
+ */
+#define MAC_1          0        /* belongs to the port near the slot */
+#define MAC_2          1       /* belongs to the port far away from the slot */
+
+/*
+ *     Macro MR_ADDR()
+ *
+ *     Use this macro to access a MAC Related Registers inside the ASIC.
+ *
+ * para:
+ *     Mac             MAC to access.
+ *                             Values: MAC_1, MAC_2
+ *     Offs    MAC register offset.
+ *                             Values: RX_MFF_EA, RX_MFF_WP ... LNK_LED_REG,
+ *                                             TX_MFF_EA, TX_MFF_WP ... TX_LED_TST
+ *
+ * usage       SK_IN32(pAC, MR_ADDR(MAC_1, TX_MFF_EA), pVal)
+ */
+#define MR_ADDR(Mac, Offs)     (((Mac) << 7) + (Offs))
+
+#ifdef SK_LITTLE_ENDIAN
+#define XM_WORD_LO     0
+#define XM_WORD_HI     1
+#else  /* !SK_LITTLE_ENDIAN */
+#define XM_WORD_LO     1
+#define XM_WORD_HI     0
+#endif /* !SK_LITTLE_ENDIAN */
+
+
+/*
+ * macros to access the XMAC (GENESIS only)
+ *
+ * XM_IN16(),          to read a 16 bit register (e.g. XM_MMU_CMD)
+ * XM_OUT16(),         to write a 16 bit register (e.g. XM_MMU_CMD)
+ * XM_IN32(),          to read a 32 bit register (e.g. XM_TX_EV_CNT)
+ * XM_OUT32(),         to write a 32 bit register (e.g. XM_TX_EV_CNT)
+ * XM_INADDR(),                to read a network address register (e.g. XM_SRC_CHK)
+ * XM_OUTADDR(),       to write a network address register (e.g. XM_SRC_CHK)
+ * XM_INHASH(),                to read the XM_HSM_CHK register
+ * XM_OUTHASH()                to write the XM_HSM_CHK register
+ *
+ * para:
+ *     Mac             XMAC to access          values: MAC_1 or MAC_2
+ *     IoC             I/O context needed for SK I/O macros
+ *     Reg             XMAC Register to read or write
+ *     (p)Val  Value or pointer to the value which should be read or written
+ *
+ * usage:      XM_OUT16(IoC, MAC_1, XM_MMU_CMD, Value);
+ */
+
+#define XMA(Mac, Reg)                                                                  \
+       ((BASE_XMAC_1 + (Mac) * (BASE_XMAC_2 - BASE_XMAC_1)) | ((Reg) << 1))
+
+#define XM_IN16(IoC, Mac, Reg, pVal)                                   \
+       SK_IN16((IoC), XMA((Mac), (Reg)), (pVal))
+
+#define XM_OUT16(IoC, Mac, Reg, Val)                                   \
+       SK_OUT16((IoC), XMA((Mac), (Reg)), (Val))
+
+#define XM_IN32(IoC, Mac, Reg, pVal) {                                 \
+       SK_IN16((IoC), XMA((Mac), (Reg)),                                       \
+               (SK_U16 *)&((SK_U16 *)(pVal))[XM_WORD_LO]);             \
+       SK_IN16((IoC), XMA((Mac), (Reg+2)),                                     \
+               (SK_U16 *)&((SK_U16 *)(pVal))[XM_WORD_HI]);             \
+}
+
+#define XM_OUT32(IoC, Mac, Reg, Val) {                                                                         \
+       SK_OUT16((IoC), XMA((Mac), (Reg)), (SK_U16)((Val) & 0xffffL));                  \
+       SK_OUT16((IoC), XMA((Mac), (Reg+2)), (SK_U16)(((Val) >> 16) & 0xffffL));\
+}
+
+/* Remember: we are always writing to / reading from LITTLE ENDIAN memory */
+
+#define XM_INADDR(IoC, Mac, Reg, pVal) {                               \
+       SK_U16  Word;                                                                           \
+       SK_U8   *pByte;                                                                         \
+       pByte = (SK_U8 *)&((SK_U8 *)(pVal))[0];                         \
+       SK_IN16((IoC), XMA((Mac), (Reg)), &Word);                       \
+       pByte[0] = (SK_U8)(Word  & 0x00ff);                                     \
+       pByte[1] = (SK_U8)((Word >> 8) & 0x00ff);                       \
+       SK_IN16((IoC), XMA((Mac), (Reg+2)), &Word);                     \
+       pByte[2] = (SK_U8)(Word  & 0x00ff);                                     \
+       pByte[3] = (SK_U8)((Word >> 8) & 0x00ff);                       \
+       SK_IN16((IoC), XMA((Mac), (Reg+4)), &Word);                     \
+       pByte[4] = (SK_U8)(Word  & 0x00ff);                                     \
+       pByte[5] = (SK_U8)((Word >> 8) & 0x00ff);                       \
+}
+
+#define XM_OUTADDR(IoC, Mac, Reg, pVal) {                              \
+       SK_U8   *pByte;                                                                         \
+       pByte = (SK_U8 *)&((SK_U8 *)(pVal))[0];                         \
+       SK_OUT16((IoC), XMA((Mac), (Reg)), (SK_U16)                     \
+               (((SK_U16)(pByte[0]) & 0x00ff) |                                \
+               (((SK_U16)(pByte[1]) << 8) & 0xff00)));                 \
+       SK_OUT16((IoC), XMA((Mac), (Reg+2)), (SK_U16)           \
+               (((SK_U16)(pByte[2]) & 0x00ff) |                                \
+               (((SK_U16)(pByte[3]) << 8) & 0xff00)));                 \
+       SK_OUT16((IoC), XMA((Mac), (Reg+4)), (SK_U16)           \
+               (((SK_U16)(pByte[4]) & 0x00ff) |                                \
+               (((SK_U16)(pByte[5]) << 8) & 0xff00)));                 \
+}
+
+#define XM_INHASH(IoC, Mac, Reg, pVal) {                               \
+       SK_U16  Word;                                                                           \
+       SK_U8   *pByte;                                                                         \
+       pByte = (SK_U8 *)&((SK_U8 *)(pVal))[0];                         \
+       SK_IN16((IoC), XMA((Mac), (Reg)), &Word);                       \
+       pByte[0] = (SK_U8)(Word  & 0x00ff);                                     \
+       pByte[1] = (SK_U8)((Word >> 8) & 0x00ff);                       \
+       SK_IN16((IoC), XMA((Mac), (Reg+2)), &Word);                     \
+       pByte[2] = (SK_U8)(Word  & 0x00ff);                                     \
+       pByte[3] = (SK_U8)((Word >> 8) & 0x00ff);                       \
+       SK_IN16((IoC), XMA((Mac), (Reg+4)), &Word);                     \
+       pByte[4] = (SK_U8)(Word  & 0x00ff);                                     \
+       pByte[5] = (SK_U8)((Word >> 8) & 0x00ff);                       \
+       SK_IN16((IoC), XMA((Mac), (Reg+6)), &Word);                     \
+       pByte[6] = (SK_U8)(Word  & 0x00ff);                                     \
+       pByte[7] = (SK_U8)((Word >> 8) & 0x00ff);                       \
+}
+
+#define XM_OUTHASH(IoC, Mac, Reg, pVal) {                              \
+       SK_U8   *pByte;                                                                         \
+       pByte = (SK_U8 *)&((SK_U8 *)(pVal))[0];                         \
+       SK_OUT16((IoC), XMA((Mac), (Reg)), (SK_U16)                     \
+               (((SK_U16)(pByte[0]) & 0x00ff)|                                 \
+               (((SK_U16)(pByte[1]) << 8) & 0xff00)));                 \
+       SK_OUT16((IoC), XMA((Mac), (Reg+2)), (SK_U16)           \
+               (((SK_U16)(pByte[2]) & 0x00ff)|                                 \
+               (((SK_U16)(pByte[3]) << 8) & 0xff00)));                 \
+       SK_OUT16((IoC), XMA((Mac), (Reg+4)), (SK_U16)           \
+               (((SK_U16)(pByte[4]) & 0x00ff)|                                 \
+               (((SK_U16)(pByte[5]) << 8) & 0xff00)));                 \
+       SK_OUT16((IoC), XMA((Mac), (Reg+6)), (SK_U16)           \
+               (((SK_U16)(pByte[6]) & 0x00ff)|                                 \
+               (((SK_U16)(pByte[7]) << 8) & 0xff00)));                 \
+}
+
+/*
+ * macros to access the GMAC (YUKON only)
+ *
+ * GM_IN16(),          to read  a 16 bit register (e.g. GM_GP_STAT)
+ * GM_OUT16(),         to write a 16 bit register (e.g. GM_GP_CTRL)
+ * GM_IN32(),          to read  a 32 bit register (e.g. GM_)
+ * GM_OUT32(),         to write a 32 bit register (e.g. GM_)
+ * GM_INADDR(),                to read  a network address register (e.g. GM_SRC_ADDR_1L)
+ * GM_OUTADDR(),       to write a network address register (e.g. GM_SRC_ADDR_2L)
+ * GM_INHASH(),                to read  the GM_MC_ADDR_H1 register
+ * GM_OUTHASH()                to write the GM_MC_ADDR_H1 register
+ *
+ * para:
+ *     Mac             GMAC to access          values: MAC_1 or MAC_2
+ *     IoC             I/O context needed for SK I/O macros
+ *     Reg             GMAC Register to read or write
+ *     (p)Val  Value or pointer to the value which should be read or written
+ *
+ * usage:      GM_OUT16(IoC, MAC_1, GM_GP_CTRL, Value);
+ */
+
+#define GMA(Mac, Reg)                                                                  \
+       ((BASE_GMAC_1 + (Mac) * (BASE_GMAC_2 - BASE_GMAC_1)) | (Reg))
+
+#define GM_IN16(IoC, Mac, Reg, pVal)                                   \
+       SK_IN16((IoC), GMA((Mac), (Reg)), (pVal))
+
+#define GM_OUT16(IoC, Mac, Reg, Val)                                   \
+       SK_OUT16((IoC), GMA((Mac), (Reg)), (Val))
+
+#define GM_IN32(IoC, Mac, Reg, pVal) {                                 \
+       SK_IN16((IoC), GMA((Mac), (Reg)),                                       \
+               (SK_U16 *)&((SK_U16 *)(pVal))[XM_WORD_LO]);             \
+       SK_IN16((IoC), GMA((Mac), (Reg+4)),                                     \
+               (SK_U16 *)&((SK_U16 *)(pVal))[XM_WORD_HI]);             \
+}
+
+#define GM_OUT32(IoC, Mac, Reg, Val) {                                                                         \
+       SK_OUT16((IoC), GMA((Mac), (Reg)), (SK_U16)((Val) & 0xffffL));                  \
+       SK_OUT16((IoC), GMA((Mac), (Reg+4)), (SK_U16)(((Val) >> 16) & 0xffffL));\
+}
+
+#define GM_INADDR(IoC, Mac, Reg, pVal) {                               \
+       SK_U16  Word;                                                                           \
+       SK_U8   *pByte;                                                                         \
+       pByte = (SK_U8 *)&((SK_U8 *)(pVal))[0];                         \
+       SK_IN16((IoC), GMA((Mac), (Reg)), &Word);                       \
+       pByte[0] = (SK_U8)(Word  & 0x00ff);                                     \
+       pByte[1] = (SK_U8)((Word >> 8) & 0x00ff);                       \
+       SK_IN16((IoC), GMA((Mac), (Reg+4)), &Word);                     \
+       pByte[2] = (SK_U8)(Word  & 0x00ff);                                     \
+       pByte[3] = (SK_U8)((Word >> 8) & 0x00ff);                       \
+       SK_IN16((IoC), GMA((Mac), (Reg+8)), &Word);                     \
+       pByte[4] = (SK_U8)(Word  & 0x00ff);                                     \
+       pByte[5] = (SK_U8)((Word >> 8) & 0x00ff);                       \
+}
+
+#define GM_OUTADDR(IoC, Mac, Reg, pVal) {                              \
+       SK_U8   *pByte;                                                                         \
+       pByte = (SK_U8 *)&((SK_U8 *)(pVal))[0];                         \
+       SK_OUT16((IoC), GMA((Mac), (Reg)), (SK_U16)                     \
+               (((SK_U16)(pByte[0]) & 0x00ff) |                                \
+               (((SK_U16)(pByte[1]) << 8) & 0xff00)));                 \
+       SK_OUT16((IoC), GMA((Mac), (Reg+4)), (SK_U16)           \
+               (((SK_U16)(pByte[2]) & 0x00ff) |                                \
+               (((SK_U16)(pByte[3]) << 8) & 0xff00)));                 \
+       SK_OUT16((IoC), GMA((Mac), (Reg+8)), (SK_U16)           \
+               (((SK_U16)(pByte[4]) & 0x00ff) |                                \
+               (((SK_U16)(pByte[5]) << 8) & 0xff00)));                 \
+}
+
+#define GM_INHASH(IoC, Mac, Reg, pVal) {                               \
+       SK_U16  Word;                                                                           \
+       SK_U8   *pByte;                                                                         \
+       pByte = (SK_U8 *)&((SK_U8 *)(pVal))[0];                         \
+       SK_IN16((IoC), GMA((Mac), (Reg)), &Word);                       \
+       pByte[0] = (SK_U8)(Word  & 0x00ff);                                     \
+       pByte[1] = (SK_U8)((Word >> 8) & 0x00ff);                       \
+       SK_IN16((IoC), GMA((Mac), (Reg+4)), &Word);                     \
+       pByte[2] = (SK_U8)(Word  & 0x00ff);                                     \
+       pByte[3] = (SK_U8)((Word >> 8) & 0x00ff);                       \
+       SK_IN16((IoC), GMA((Mac), (Reg+8)), &Word);                     \
+       pByte[4] = (SK_U8)(Word  & 0x00ff);                                     \
+       pByte[5] = (SK_U8)((Word >> 8) & 0x00ff);                       \
+       SK_IN16((IoC), GMA((Mac), (Reg+12)), &Word);            \
+       pByte[6] = (SK_U8)(Word  & 0x00ff);                                     \
+       pByte[7] = (SK_U8)((Word >> 8) & 0x00ff);                       \
+}
+
+#define GM_OUTHASH(IoC, Mac, Reg, pVal) {                              \
+       SK_U8   *pByte;                                                                         \
+       pByte = (SK_U8 *)&((SK_U8 *)(pVal))[0];                         \
+       SK_OUT16((IoC), GMA((Mac), (Reg)), (SK_U16)                     \
+               (((SK_U16)(pByte[0]) & 0x00ff)|                                 \
+               (((SK_U16)(pByte[1]) << 8) & 0xff00)));                 \
+       SK_OUT16((IoC), GMA((Mac), (Reg+4)), (SK_U16)           \
+               (((SK_U16)(pByte[2]) & 0x00ff)|                                 \
+               (((SK_U16)(pByte[3]) << 8) & 0xff00)));                 \
+       SK_OUT16((IoC), GMA((Mac), (Reg+8)), (SK_U16)           \
+               (((SK_U16)(pByte[4]) & 0x00ff)|                                 \
+               (((SK_U16)(pByte[5]) << 8) & 0xff00)));                 \
+       SK_OUT16((IoC), GMA((Mac), (Reg+12)), (SK_U16)          \
+               (((SK_U16)(pByte[6]) & 0x00ff)|                                 \
+               (((SK_U16)(pByte[7]) << 8) & 0xff00)));                 \
+}
+
+/*
+ * Different MAC Types
+ */
+#define SK_MAC_XMAC            0        /* Xaqti XMAC II */
+#define SK_MAC_GMAC            1       /* Marvell GMAC */
+
+/*
+ * Different PHY Types
+ */
+#define SK_PHY_XMAC                    0        /* integrated in XMAC II */
+#define SK_PHY_BCOM                    1       /* Broadcom BCM5400 */
+#define SK_PHY_LONE                    2       /* Level One LXT1000 */
+#define SK_PHY_NAT                     3       /* National DP83891 */
+#define SK_PHY_MARV_COPPER     4       /* Marvell 88E1011S */
+#define SK_PHY_MARV_FIBER      5       /* Marvell 88E1011S working on fiber */
+
+/*
+ * PHY addresses (bits 12..8 of PHY address reg)
+ */
+#define PHY_ADDR_XMAC  (0<<8)
+#define PHY_ADDR_BCOM  (1<<8)
+#define PHY_ADDR_LONE  (3<<8)
+#define PHY_ADDR_NAT   (0<<8)
+
+/* GPHY address (bits 15..11 of SMI control reg) */
+#define PHY_ADDR_MARV  0
+
+/*
+ * macros to access the PHY
+ *
+ * PHY_READ()          read a 16 bit value from the PHY
+ * PHY_WRITE()         write a 16 bit value to the PHY
+ *
+ * para:
+ *     IoC             I/O context needed for SK I/O macros
+ *     pPort   Pointer to port struct for PhyAddr
+ *     Mac             XMAC to access          values: MAC_1 or MAC_2
+ *     PhyReg  PHY Register to read or write
+ *     (p)Val  Value or pointer to the value which should be read or
+ *                     written.
+ *
+ * usage:      PHY_READ(IoC, pPort, MAC_1, PHY_CTRL, Value);
+ * Warning: a PHY_READ on an uninitialized PHY (PHY still in reset) never
+ *          comes back. This is checked in DEBUG mode.
+ */
+#ifndef DEBUG
+#define PHY_READ(IoC, pPort, Mac, PhyReg, pVal) {                                              \
+       SK_U16 Mmu;                                                                                                             \
+                                                                                                                                               \
+       XM_OUT16((IoC), (Mac), XM_PHY_ADDR, (PhyReg) | (pPort)->PhyAddr);       \
+       XM_IN16((IoC), (Mac), XM_PHY_DATA, (pVal));                                                     \
+       if ((pPort)->PhyType != SK_PHY_XMAC) {                                                          \
+               do {                                                                                                                    \
+                       XM_IN16((IoC), (Mac), XM_MMU_CMD, &Mmu);                                        \
+               } while ((Mmu & XM_MMU_PHY_RDY) == 0);                                                  \
+               XM_IN16((IoC), (Mac), XM_PHY_DATA, (pVal));                                             \
+       }                                                                                                                                       \
+}
+#else
+#define PHY_READ(IoC, pPort, Mac, PhyReg, pVal) {                                              \
+       SK_U16 Mmu;                                                                                                             \
+       int __i = 0;                                                                                                            \
+                                                                                                                                               \
+       XM_OUT16((IoC), (Mac), XM_PHY_ADDR, (PhyReg) | (pPort)->PhyAddr);       \
+       XM_IN16((IoC), (Mac), XM_PHY_DATA, (pVal));                                                     \
+       if ((pPort)->PhyType != SK_PHY_XMAC) {                                                          \
+               do {                                                                                                                    \
+                       XM_IN16((IoC), (Mac), XM_MMU_CMD, &Mmu);                                        \
+                       __i++;                                                                                                          \
+                       if (__i > 100000) {                                                                                     \
+                               SK_DBG_PRINTF("*****************************\n");               \
+                               SK_DBG_PRINTF("PHY_READ on uninitialized PHY\n");               \
+                               SK_DBG_PRINTF("*****************************\n");               \
+                               break;                                                                                                  \
+                       }                                                                                                                       \
+               } while ((Mmu & XM_MMU_PHY_RDY) == 0);                                                  \
+               XM_IN16((IoC), (Mac), XM_PHY_DATA, (pVal));                                             \
+       }                                                                                                                                       \
+}
+#endif /* DEBUG */
+
+#define PHY_WRITE(IoC, pPort, Mac, PhyReg, Val) {                                              \
+       SK_U16 Mmu;                                                                                                                     \
+                                                                                                                                               \
+       if ((pPort)->PhyType != SK_PHY_XMAC) {                                                          \
+               do {                                                                                                                    \
+                       XM_IN16((IoC), (Mac), XM_MMU_CMD, &Mmu);                                        \
+               } while ((Mmu & XM_MMU_PHY_BUSY) != 0);                                                 \
+       }                                                                                                                                       \
+       XM_OUT16((IoC), (Mac), XM_PHY_ADDR, (PhyReg) | (pPort)->PhyAddr);       \
+       XM_OUT16((IoC), (Mac), XM_PHY_DATA, (Val));                                                     \
+       if ((pPort)->PhyType != SK_PHY_XMAC) {                                                          \
+               do {                                                                                                                    \
+                       XM_IN16((IoC), (Mac), XM_MMU_CMD, &Mmu);                                        \
+               } while ((Mmu & XM_MMU_PHY_BUSY) != 0);                                                 \
+       }                                                                                                                                       \
+}
+
+/*
+ *     Macro PCI_C()
+ *
+ *     Use this macro to access PCI config register from the I/O space.
+ *
+ * para:
+ *     Addr    PCI configuration register to access.
+ *                     Values: PCI_VENDOR_ID ... PCI_VPD_ADR_REG,
+ *
+ * usage       SK_IN16(pAC, PCI_C(PCI_VENDOR_ID), pVal);
+ */
+#define PCI_C(Addr)    (B7_CFG_SPC + (Addr))   /* PCI Config Space */
+
+/*
+ *     Macro SK_HW_ADDR(Base, Addr)
+ *
+ *     Calculates the effective HW address
+ *
+ * para:
+ *     Base    I/O or memory base address
+ *     Addr    Address offset
+ *
+ * usage:      May be used in SK_INxx and SK_OUTxx macros
+ *             #define SK_IN8(pAC, Addr, pVal) ...\
+ *                     *pVal = (SK_U8)inp(SK_HW_ADDR(pAC->Hw.Iop, Addr)))
+ */
+#ifdef SK_MEM_MAPPED_IO
+#define SK_HW_ADDR(Base, Addr) ((Base) + (Addr))
+#else  /* SK_MEM_MAPPED_IO */
+#define SK_HW_ADDR(Base, Addr) \
+                       ((Base) + (((Addr) & 0x7f) | (((Addr) >> 7 > 0) ? 0x80 : 0)))
+#endif /* SK_MEM_MAPPED_IO */
+
+#define SZ_LONG        (sizeof(SK_U32))
+
+/*
+ *     Macro SK_HWAC_LINK_LED()
+ *
+ *     Use this macro to set the link LED mode.
+ * para:
+ *     pAC             Pointer to adapter context struct
+ *     IoC             I/O context needed for SK I/O macros
+ *  Port       Port number
+ *     Mode    Mode to set for this LED
+ */
+#define SK_HWAC_LINK_LED(pAC, IoC, Port, Mode) \
+       SK_OUT8(IoC, MR_ADDR(Port, LNK_LED_REG), Mode);
+
+
+/* typedefs *******************************************************************/
+
+
+/* function prototypes ********************************************************/
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* __INC_SKGEHW_H */
diff -Naur u-boot-2009.03_orig/drivers/net/sk98lin/h/skgehwt.h u-boot-2009.03/drivers/net/sk98lin/h/skgehwt.h
--- u-boot-2009.03_orig/drivers/net/sk98lin/h/skgehwt.h 2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/drivers/net/sk98lin/h/skgehwt.h      2009-03-31 14:54:45.815420800 -0700
@@ -1,74 +1,77 @@
-/******************************************************************************
- *
- * Name:       skhwt.h
- * Project:    GEnesis, PCI Gigabit Ethernet Adapter
- * Version:    $Revision: 1.5 $
- * Date:       $Date: 1999/11/22 13:54:24 $
- * Purpose:    Defines for the hardware timer functions
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- *     (C)Copyright 1998,1999 SysKonnect,
- *     a business unit of Schneider & Koch & Co. Datensysteme GmbH.
- *
- *     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.
- *
- *     The information in this file is provided "AS IS" without warranty.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * History:
- *
- *     $Log: skgehwt.h,v $
- *     Revision 1.5  1999/11/22 13:54:24  cgoos
- *     Changed license header to GPL.
- *
- *     Revision 1.4  1998/08/19 09:50:58  gklug
- *     fix: remove struct keyword from c-code (see CCC) add typedefs
- *
- *     Revision 1.3  1998/08/14 07:09:29  gklug
- *     fix: chg pAc -> pAC
- *
- *     Revision 1.2  1998/08/07 12:54:21  gklug
- *     fix: first compiled version
- *
- *     Revision 1.1  1998/08/07 09:32:58  gklug
- *     first version
- *
- *
- *
- *
- *
- ******************************************************************************/
-
-/*
- * SKGEHWT.H   contains all defines and types for the timer functions
- */
-
-#ifndef        _SKGEHWT_H_
-#define _SKGEHWT_H_
-
-/*
- * SK Hardware Timer
- * - needed wherever the HWT module is used
- * - use in Adapters context name pAC->Hwt
- */
-typedef        struct s_Hwt {
-       SK_U32          TStart ;        /* HWT start */
-       SK_U32          TStop ;         /* HWT stop */
-       int             TActive ;       /* HWT: flag : active/inactive */
-} SK_HWT;
-
-extern void SkHwtInit(SK_AC *pAC, SK_IOC Ioc);
-extern void SkHwtStart(SK_AC *pAC, SK_IOC Ioc, SK_U32 Time);
-extern void SkHwtStop(SK_AC *pAC, SK_IOC Ioc);
-extern SK_U32 SkHwtRead(SK_AC *pAC,SK_IOC Ioc);
-extern void SkHwtIsr(SK_AC *pAC, SK_IOC Ioc);
-#endif /* _SKGEHWT_H_ */
+/******************************************************************************
+ *
+ * Name:       skhwt.h
+ * Project:    GEnesis, PCI Gigabit Ethernet Adapter
+ * Version:    $Revision: 1.1.1.1 $
+ * Date:       $Date: 2009/03/25 22:22:09 $
+ * Purpose:    Defines for the hardware timer functions
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ *     (C)Copyright 1998,1999 SysKonnect,
+ *     a business unit of Schneider & Koch & Co. Datensysteme GmbH.
+ *
+ *     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.
+ *
+ *     The information in this file is provided "AS IS" without warranty.
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ * History:
+ *
+ *     $Log: skgehwt.h,v $
+ *     Revision 1.1.1.1  2009/03/25 22:22:09  kenagy
+ *     no message
+ *     
+ *     Revision 1.5  1999/11/22 13:54:24  cgoos
+ *     Changed license header to GPL.
+ *
+ *     Revision 1.4  1998/08/19 09:50:58  gklug
+ *     fix: remove struct keyword from c-code (see CCC) add typedefs
+ *
+ *     Revision 1.3  1998/08/14 07:09:29  gklug
+ *     fix: chg pAc -> pAC
+ *
+ *     Revision 1.2  1998/08/07 12:54:21  gklug
+ *     fix: first compiled version
+ *
+ *     Revision 1.1  1998/08/07 09:32:58  gklug
+ *     first version
+ *
+ *
+ *
+ *
+ *
+ ******************************************************************************/
+
+/*
+ * SKGEHWT.H   contains all defines and types for the timer functions
+ */
+
+#ifndef        _SKGEHWT_H_
+#define _SKGEHWT_H_
+
+/*
+ * SK Hardware Timer
+ * - needed wherever the HWT module is used
+ * - use in Adapters context name pAC->Hwt
+ */
+typedef        struct s_Hwt {
+       SK_U32          TStart ;        /* HWT start */
+       SK_U32          TStop ;         /* HWT stop */
+       int             TActive ;       /* HWT: flag : active/inactive */
+} SK_HWT;
+
+extern void SkHwtInit(SK_AC *pAC, SK_IOC Ioc);
+extern void SkHwtStart(SK_AC *pAC, SK_IOC Ioc, SK_U32 Time);
+extern void SkHwtStop(SK_AC *pAC, SK_IOC Ioc);
+extern SK_U32 SkHwtRead(SK_AC *pAC,SK_IOC Ioc);
+extern void SkHwtIsr(SK_AC *pAC, SK_IOC Ioc);
+#endif /* _SKGEHWT_H_ */
diff -Naur u-boot-2009.03_orig/drivers/net/sk98lin/h/skgei2c.h u-boot-2009.03/drivers/net/sk98lin/h/skgei2c.h
--- u-boot-2009.03_orig/drivers/net/sk98lin/h/skgei2c.h 2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/drivers/net/sk98lin/h/skgei2c.h      2009-03-31 14:54:45.846670400 -0700
@@ -1,299 +1,302 @@
-/******************************************************************************
- *
- * Name:       skgei2c.h
- * Project:    GEnesis, PCI Gigabit Ethernet Adapter
- * Version:    $Revision: 1.23 $
- * Date:       $Date: 2002/12/19 14:34:27 $
- * Purpose:    Special GEnesis defines for TWSI
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- *     (C)Copyright 1998-2002 SysKonnect GmbH.
- *
- *     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.
- *
- *     The information in this file is provided "AS IS" without warranty.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * History:
- *
- *     $Log: skgei2c.h,v $
- *     Revision 1.23  2002/12/19 14:34:27  rschmidt
- *     Added cast in macros SK_I2C_SET_BIT() and SK_I2C_CLR_BIT()
- *     Editorial changes (TWSI)
- *
- *     Revision 1.22  2002/10/14 16:45:56  rschmidt
- *     Editorial changes (TWSI)
- *
- *     Revision 1.21  2002/08/13 08:42:24  rschmidt
- *     Changed define for SK_MIN_SENSORS back to 5
- *     Merged defines for PHY PLL 3V3 voltage (A and B)
- *     Editorial changes
- *
- *     Revision 1.20  2002/08/06 09:43:56  jschmalz
- *     Extensions and changes for Yukon
- *
- *     Revision 1.19  2002/08/02 12:00:08  rschmidt
- *     Added defines for YUKON sensors
- *     Editorial changes
- *
- *     Revision 1.18  2001/08/16 12:44:33  afischer
- *     LM80 sensor init values corrected
- *
- *     Revision 1.17  1999/11/22 13:55:25  cgoos
- *     Changed license header to GPL.
- *
- *     Revision 1.16  1999/11/12 08:24:10  malthoff
- *     Change voltage warning and error limits
- *     (warning +-5%, error +-10%).
- *
- *     Revision 1.15  1999/09/14 14:14:43  malthoff
- *     The 1000BT Dual Link adapter has got only one Fan.
- *     The second Fan has been removed.
- *
- *     Revision 1.14  1999/05/27 13:40:50  malthoff
- *     Fan Divisor = 1. Assuming fan with 6500 rpm.
- *
- *     Revision 1.13  1999/05/20 14:56:55  malthoff
- *     Bug Fix: Missing brace in SK_LM80_FAN_FAKTOR.
- *
- *     Revision 1.12  1999/05/20 09:22:00  cgoos
- *     Changes for 1000Base-T (Fan sensors).
- *
- *     Revision 1.11  1998/10/14 05:57:22  cgoos
- *     Fixed compilation warnings.
- *
- *     Revision 1.10  1998/09/04 08:37:00  malthoff
- *     bugfix: correct the SK_I2C_GET_CTL() macro.
- *
- *     Revision 1.9  1998/08/25 06:10:03  gklug
- *     add: thresholds for all sensors
- *
- *     Revision 1.8  1998/08/20 11:37:42  gklug
- *     chg: change Ioc to IoC
- *
- *     Revision 1.7  1998/08/20 08:53:11  gklug
- *     fix: compiler errors
- *     add: Threshold values
- *
- *     Revision 1.6  1998/08/17 11:37:09  malthoff
- *     Bugfix in SK_I2C_CTL macro. The parameter 'dev'
- *     has to be shifted 9 bits.
- *
- *     Revision 1.5  1998/08/17 06:52:21  malthoff
- *     Remove unrequired macros.
- *     Add macros for accessing TWSI SW register.
- *
- *     Revision 1.4  1998/08/13 08:30:18  gklug
- *     add: conversion factors for read values
- *     add: new state SEN_VALEXT to read extension value of temperature sensor
- *
- *     Revision 1.3  1998/08/12 13:37:56  gklug
- *     rmv: error numbers and messages
- *
- *     Revision 1.2  1998/08/11 07:54:38  gklug
- *     add: sensor states for GE sensors
- *     add: Macro to access TWSI hardware register
- *     chg: Error messages for TWSI errors
- *
- *     Revision 1.1  1998/07/17 11:27:56  gklug
- *     Created.
- *
- *
- *
- ******************************************************************************/
-
-/*
- * SKGEI2C.H   contains all SK-98xx specific defines for the TWSI handling
- */
-
-#ifndef _INC_SKGEI2C_H_
-#define _INC_SKGEI2C_H_
-
-/*
- * Macros to access the B2_I2C_CTRL
- */
-#define SK_I2C_CTL(IoC, flag, dev, reg, burst) \
-       SK_OUT32(IoC, B2_I2C_CTRL,\
-               (flag ? 0x80000000UL : 0x0L) | \
-               (((SK_U32) reg << 16) & I2C_ADDR) | \
-               (((SK_U32) dev << 9) & I2C_DEV_SEL) | \
-               (( burst << 4) & I2C_BURST_LEN))
-
-#define SK_I2C_STOP(IoC) {                             \
-       SK_U32  I2cCtrl;                                \
-       SK_IN32(IoC, B2_I2C_CTRL, &I2cCtrl);            \
-       SK_OUT32(IoC, B2_I2C_CTRL, I2cCtrl | I2C_STOP); \
-}
-
-#define SK_I2C_GET_CTL(IoC, pI2cCtrl)  SK_IN32(IoC, B2_I2C_CTRL, pI2cCtrl)
-
-/*
- * Macros to access the TWSI SW Registers
- */
-#define SK_I2C_SET_BIT(IoC, SetBits) {                 \
-       SK_U8   OrgBits;                                \
-       SK_IN8(IoC, B2_I2C_SW, &OrgBits);               \
-       SK_OUT8(IoC, B2_I2C_SW, OrgBits | (SK_U8)(SetBits));    \
-}
-
-#define SK_I2C_CLR_BIT(IoC, ClrBits) {                 \
-       SK_U8   OrgBits;                                \
-       SK_IN8(IoC, B2_I2C_SW, &OrgBits);               \
-       SK_OUT8(IoC, B2_I2C_SW, OrgBits & ~((SK_U8)(ClrBits))); \
-}
-
-#define SK_I2C_GET_SW(IoC, pI2cSw)     SK_IN8(IoC, B2_I2C_SW, pI2cSw)
-
-/*
- * define the possible sensor states
- */
-#define        SK_SEN_IDLE             0        /* Idle: sensor not read */
-#define        SK_SEN_VALUE    1       /* Value Read cycle */
-#define        SK_SEN_VALEXT   2       /* Extended Value Read cycle */
-
-/*
- * Conversion factor to convert read Voltage sensor to milli Volt
- * Conversion factor to convert read Temperature sensor to 10th degree Celsius
- */
-#define        SK_LM80_VT_LSB          22      /* 22mV LSB resolution */
-#define        SK_LM80_TEMP_LSB        10      /* 1 degree LSB resolution */
-#define        SK_LM80_TEMPEXT_LSB     5       /* 0.5 degree LSB resolution for the
-                                        * extension value
-                                        */
-#define SK_LM80_FAN_FAKTOR     ((22500L*60)/(1*2))
-/* formula: counter = (22500*60)/(rpm * divisor * pulses/2)
- * assuming: 6500rpm, 4 pulses, divisor 1
- */
-
-/*
- * Define sensor management data
- * Maximum is reached on copperfield with dual Broadcom.
- * Board specific maximum is in pAC->I2c.MaxSens
- */
-#define        SK_MAX_SENSORS  8       /* maximal no. of installed sensors */
-#define        SK_MIN_SENSORS  5       /* minimal no. of installed sensors */
-
-/*
- * To watch the statemachine (JS) use the timer in two ways instead of one as hitherto
- */
-#define        SK_TIMER_WATCH_STATEMACHINE     0        /* Watch the statemachine to finish in a specific time */
-#define        SK_TIMER_NEW_GAUGING            1       /* Start a new gauging when timer expires */
-
-
-/*
- * Defines for the individual Thresholds
- */
-
-/* Temperature sensor */
-#define        SK_SEN_TEMP_HIGH_ERR    800     /* Temperature High Err  Threshold */
-#define        SK_SEN_TEMP_HIGH_WARN   700     /* Temperature High Warn Threshold */
-#define        SK_SEN_TEMP_LOW_WARN    100     /* Temperature Low  Warn Threshold */
-#define        SK_SEN_TEMP_LOW_ERR       0     /* Temperature Low  Err  Threshold */
-
-/* VCC which should be 5 V */
-#define        SK_SEN_PCI_5V_HIGH_ERR  5588    /* Voltage PCI High Err  Threshold */
-#define        SK_SEN_PCI_5V_HIGH_WARN     5346        /* Voltage PCI High Warn Threshold */
-#define        SK_SEN_PCI_5V_LOW_WARN          4664    /* Voltage PCI Low  Warn Threshold */
-#define        SK_SEN_PCI_5V_LOW_ERR           4422    /* Voltage PCI Low  Err  Threshold */
-
-/*
- * VIO may be 5 V or 3.3 V. Initialization takes two parts:
- * 1. Initialize lowest lower limit and highest higher limit.
- * 2. After the first value is read correct the upper or the lower limit to
- *    the appropriate C constant.
- *
- * Warning limits are +-5% of the exepected voltage.
- * Error limits are +-10% of the expected voltage.
- */
-
-/* Bug fix AF: 16.Aug.2001: Correct the init base of LM80 sensor */
-
-#define        SK_SEN_PCI_IO_5V_HIGH_ERR       5566    /* + 10% V PCI-IO High Err Threshold */
-#define        SK_SEN_PCI_IO_5V_HIGH_WARN      5324    /* +  5% V PCI-IO High Warn Threshold */
-                                       /*              5000    mVolt */
-#define        SK_SEN_PCI_IO_5V_LOW_WARN       4686    /* -  5% V PCI-IO Low Warn Threshold */
-#define        SK_SEN_PCI_IO_5V_LOW_ERR        4444    /* - 10% V PCI-IO Low Err Threshold */
-
-#define        SK_SEN_PCI_IO_RANGE_LIMITER     4000    /* 4000 mV range delimiter */
-
-/* correction values for the second pass */
-#define        SK_SEN_PCI_IO_3V3_HIGH_ERR      3850    /* + 15% V PCI-IO High Err Threshold */
-#define        SK_SEN_PCI_IO_3V3_HIGH_WARN     3674    /* + 10% V PCI-IO High Warn Threshold */
-                                       /*              3300    mVolt */
-#define        SK_SEN_PCI_IO_3V3_LOW_WARN  2926        /* - 10% V PCI-IO Low Warn Threshold */
-#define        SK_SEN_PCI_IO_3V3_LOW_ERR   2772        /* - 15% V PCI-IO Low Err  Threshold */
-
-
-/*
- * VDD voltage
- */
-#define        SK_SEN_VDD_HIGH_ERR         3630        /* Voltage ASIC High Err  Threshold */
-#define        SK_SEN_VDD_HIGH_WARN    3476    /* Voltage ASIC High Warn Threshold */
-#define        SK_SEN_VDD_LOW_WARN     3146    /* Voltage ASIC Low  Warn Threshold */
-#define        SK_SEN_VDD_LOW_ERR      2970    /* Voltage ASIC Low  Err  Threshold */
-
-/*
- * PHY PLL 3V3 voltage
- */
-#define        SK_SEN_PLL_3V3_HIGH_ERR         3630    /* Voltage PMA High Err  Threshold */
-#define        SK_SEN_PLL_3V3_HIGH_WARN        3476    /* Voltage PMA High Warn Threshold */
-#define        SK_SEN_PLL_3V3_LOW_WARN         3146    /* Voltage PMA Low  Warn Threshold */
-#define        SK_SEN_PLL_3V3_LOW_ERR          2970    /* Voltage PMA Low  Err  Threshold */
-
-/*
- * VAUX (YUKON only)
- */
-#define        SK_SEN_VAUX_3V3_HIGH_ERR        3630    /* Voltage VAUX High Err Threshold */
-#define        SK_SEN_VAUX_3V3_HIGH_WARN       3476    /* Voltage VAUX High Warn Threshold */
-#define        SK_SEN_VAUX_3V3_LOW_WARN        3146    /* Voltage VAUX Low Warn Threshold */
-#define        SK_SEN_VAUX_3V3_LOW_ERR     2970        /* Voltage VAUX Low Err Threshold */
-#define        SK_SEN_VAUX_0V_WARN_ERR        0        /* if VAUX not present */
-#define        SK_SEN_VAUX_RANGE_LIMITER       1000    /* 1000 mV range delimiter */
-
-/*
- * PHY 2V5 voltage
- */
-#define        SK_SEN_PHY_2V5_HIGH_ERR         2750    /* Voltage PHY High Err Threshold */
-#define        SK_SEN_PHY_2V5_HIGH_WARN        2640    /* Voltage PHY High Warn Threshold */
-#define        SK_SEN_PHY_2V5_LOW_WARN         2376    /* Voltage PHY Low Warn Threshold */
-#define        SK_SEN_PHY_2V5_LOW_ERR          2222    /* Voltage PHY Low Err Threshold */
-
-/*
- * ASIC Core 1V5 voltage (YUKON only)
- */
-#define        SK_SEN_CORE_1V5_HIGH_ERR        1650    /* Voltage ASIC Core High Err Threshold */
-#define        SK_SEN_CORE_1V5_HIGH_WARN       1575    /* Voltage ASIC Core High Warn Threshold */
-#define        SK_SEN_CORE_1V5_LOW_WARN        1425    /* Voltage ASIC Core Low Warn Threshold */
-#define        SK_SEN_CORE_1V5_LOW_ERR         1350    /* Voltage ASIC Core Low Err Threshold */
-
-/*
- * FAN 1 speed
- */
-/* assuming: 6500rpm +-15%, 4 pulses,
- * warning at: 80 %
- * error at:   70 %
- * no upper limit
- */
-#define        SK_SEN_FAN_HIGH_ERR             20000   /* FAN Speed High Err Threshold */
-#define        SK_SEN_FAN_HIGH_WARN    20000   /* FAN Speed High Warn Threshold */
-#define        SK_SEN_FAN_LOW_WARN     5200    /* FAN Speed Low Warn Threshold */
-#define        SK_SEN_FAN_LOW_ERR              4550    /* FAN Speed Low Err Threshold */
-
-/*
- * Some Voltages need dynamic thresholds
- */
-#define        SK_SEN_DYN_INIT_NONE             0  /* No dynamic init of thresholds */
-#define        SK_SEN_DYN_INIT_PCI_IO          10  /* Init PCI-IO with new thresholds */
-#define        SK_SEN_DYN_INIT_VAUX            11  /* Init VAUX with new thresholds */
-
-extern int SkLm80ReadSensor(SK_AC *pAC, SK_IOC IoC, SK_SENSOR *pSen);
-#endif /* n_INC_SKGEI2C_H */
+/******************************************************************************
+ *
+ * Name:       skgei2c.h
+ * Project:    GEnesis, PCI Gigabit Ethernet Adapter
+ * Version:    $Revision: 1.1.1.1 $
+ * Date:       $Date: 2009/03/25 22:22:09 $
+ * Purpose:    Special GEnesis defines for TWSI
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ *     (C)Copyright 1998-2002 SysKonnect GmbH.
+ *
+ *     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.
+ *
+ *     The information in this file is provided "AS IS" without warranty.
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ * History:
+ *
+ *     $Log: skgei2c.h,v $
+ *     Revision 1.1.1.1  2009/03/25 22:22:09  kenagy
+ *     no message
+ *     
+ *     Revision 1.23  2002/12/19 14:34:27  rschmidt
+ *     Added cast in macros SK_I2C_SET_BIT() and SK_I2C_CLR_BIT()
+ *     Editorial changes (TWSI)
+ *
+ *     Revision 1.22  2002/10/14 16:45:56  rschmidt
+ *     Editorial changes (TWSI)
+ *
+ *     Revision 1.21  2002/08/13 08:42:24  rschmidt
+ *     Changed define for SK_MIN_SENSORS back to 5
+ *     Merged defines for PHY PLL 3V3 voltage (A and B)
+ *     Editorial changes
+ *
+ *     Revision 1.20  2002/08/06 09:43:56  jschmalz
+ *     Extensions and changes for Yukon
+ *
+ *     Revision 1.19  2002/08/02 12:00:08  rschmidt
+ *     Added defines for YUKON sensors
+ *     Editorial changes
+ *
+ *     Revision 1.18  2001/08/16 12:44:33  afischer
+ *     LM80 sensor init values corrected
+ *
+ *     Revision 1.17  1999/11/22 13:55:25  cgoos
+ *     Changed license header to GPL.
+ *
+ *     Revision 1.16  1999/11/12 08:24:10  malthoff
+ *     Change voltage warning and error limits
+ *     (warning +-5%, error +-10%).
+ *
+ *     Revision 1.15  1999/09/14 14:14:43  malthoff
+ *     The 1000BT Dual Link adapter has got only one Fan.
+ *     The second Fan has been removed.
+ *
+ *     Revision 1.14  1999/05/27 13:40:50  malthoff
+ *     Fan Divisor = 1. Assuming fan with 6500 rpm.
+ *
+ *     Revision 1.13  1999/05/20 14:56:55  malthoff
+ *     Bug Fix: Missing brace in SK_LM80_FAN_FAKTOR.
+ *
+ *     Revision 1.12  1999/05/20 09:22:00  cgoos
+ *     Changes for 1000Base-T (Fan sensors).
+ *
+ *     Revision 1.11  1998/10/14 05:57:22  cgoos
+ *     Fixed compilation warnings.
+ *
+ *     Revision 1.10  1998/09/04 08:37:00  malthoff
+ *     bugfix: correct the SK_I2C_GET_CTL() macro.
+ *
+ *     Revision 1.9  1998/08/25 06:10:03  gklug
+ *     add: thresholds for all sensors
+ *
+ *     Revision 1.8  1998/08/20 11:37:42  gklug
+ *     chg: change Ioc to IoC
+ *
+ *     Revision 1.7  1998/08/20 08:53:11  gklug
+ *     fix: compiler errors
+ *     add: Threshold values
+ *
+ *     Revision 1.6  1998/08/17 11:37:09  malthoff
+ *     Bugfix in SK_I2C_CTL macro. The parameter 'dev'
+ *     has to be shifted 9 bits.
+ *
+ *     Revision 1.5  1998/08/17 06:52:21  malthoff
+ *     Remove unrequired macros.
+ *     Add macros for accessing TWSI SW register.
+ *
+ *     Revision 1.4  1998/08/13 08:30:18  gklug
+ *     add: conversion factors for read values
+ *     add: new state SEN_VALEXT to read extension value of temperature sensor
+ *
+ *     Revision 1.3  1998/08/12 13:37:56  gklug
+ *     rmv: error numbers and messages
+ *
+ *     Revision 1.2  1998/08/11 07:54:38  gklug
+ *     add: sensor states for GE sensors
+ *     add: Macro to access TWSI hardware register
+ *     chg: Error messages for TWSI errors
+ *
+ *     Revision 1.1  1998/07/17 11:27:56  gklug
+ *     Created.
+ *
+ *
+ *
+ ******************************************************************************/
+
+/*
+ * SKGEI2C.H   contains all SK-98xx specific defines for the TWSI handling
+ */
+
+#ifndef _INC_SKGEI2C_H_
+#define _INC_SKGEI2C_H_
+
+/*
+ * Macros to access the B2_I2C_CTRL
+ */
+#define SK_I2C_CTL(IoC, flag, dev, reg, burst) \
+       SK_OUT32(IoC, B2_I2C_CTRL,\
+               (flag ? 0x80000000UL : 0x0L) | \
+               (((SK_U32) reg << 16) & I2C_ADDR) | \
+               (((SK_U32) dev << 9) & I2C_DEV_SEL) | \
+               (( burst << 4) & I2C_BURST_LEN))
+
+#define SK_I2C_STOP(IoC) {                             \
+       SK_U32  I2cCtrl;                                \
+       SK_IN32(IoC, B2_I2C_CTRL, &I2cCtrl);            \
+       SK_OUT32(IoC, B2_I2C_CTRL, I2cCtrl | I2C_STOP); \
+}
+
+#define SK_I2C_GET_CTL(IoC, pI2cCtrl)  SK_IN32(IoC, B2_I2C_CTRL, pI2cCtrl)
+
+/*
+ * Macros to access the TWSI SW Registers
+ */
+#define SK_I2C_SET_BIT(IoC, SetBits) {                 \
+       SK_U8   OrgBits;                                \
+       SK_IN8(IoC, B2_I2C_SW, &OrgBits);               \
+       SK_OUT8(IoC, B2_I2C_SW, OrgBits | (SK_U8)(SetBits));    \
+}
+
+#define SK_I2C_CLR_BIT(IoC, ClrBits) {                 \
+       SK_U8   OrgBits;                                \
+       SK_IN8(IoC, B2_I2C_SW, &OrgBits);               \
+       SK_OUT8(IoC, B2_I2C_SW, OrgBits & ~((SK_U8)(ClrBits))); \
+}
+
+#define SK_I2C_GET_SW(IoC, pI2cSw)     SK_IN8(IoC, B2_I2C_SW, pI2cSw)
+
+/*
+ * define the possible sensor states
+ */
+#define        SK_SEN_IDLE             0        /* Idle: sensor not read */
+#define        SK_SEN_VALUE    1       /* Value Read cycle */
+#define        SK_SEN_VALEXT   2       /* Extended Value Read cycle */
+
+/*
+ * Conversion factor to convert read Voltage sensor to milli Volt
+ * Conversion factor to convert read Temperature sensor to 10th degree Celsius
+ */
+#define        SK_LM80_VT_LSB          22      /* 22mV LSB resolution */
+#define        SK_LM80_TEMP_LSB        10      /* 1 degree LSB resolution */
+#define        SK_LM80_TEMPEXT_LSB     5       /* 0.5 degree LSB resolution for the
+                                        * extension value
+                                        */
+#define SK_LM80_FAN_FAKTOR     ((22500L*60)/(1*2))
+/* formula: counter = (22500*60)/(rpm * divisor * pulses/2)
+ * assuming: 6500rpm, 4 pulses, divisor 1
+ */
+
+/*
+ * Define sensor management data
+ * Maximum is reached on copperfield with dual Broadcom.
+ * Board specific maximum is in pAC->I2c.MaxSens
+ */
+#define        SK_MAX_SENSORS  8       /* maximal no. of installed sensors */
+#define        SK_MIN_SENSORS  5       /* minimal no. of installed sensors */
+
+/*
+ * To watch the statemachine (JS) use the timer in two ways instead of one as hitherto
+ */
+#define        SK_TIMER_WATCH_STATEMACHINE     0        /* Watch the statemachine to finish in a specific time */
+#define        SK_TIMER_NEW_GAUGING            1       /* Start a new gauging when timer expires */
+
+
+/*
+ * Defines for the individual Thresholds
+ */
+
+/* Temperature sensor */
+#define        SK_SEN_TEMP_HIGH_ERR    800     /* Temperature High Err  Threshold */
+#define        SK_SEN_TEMP_HIGH_WARN   700     /* Temperature High Warn Threshold */
+#define        SK_SEN_TEMP_LOW_WARN    100     /* Temperature Low  Warn Threshold */
+#define        SK_SEN_TEMP_LOW_ERR       0     /* Temperature Low  Err  Threshold */
+
+/* VCC which should be 5 V */
+#define        SK_SEN_PCI_5V_HIGH_ERR  5588    /* Voltage PCI High Err  Threshold */
+#define        SK_SEN_PCI_5V_HIGH_WARN     5346        /* Voltage PCI High Warn Threshold */
+#define        SK_SEN_PCI_5V_LOW_WARN          4664    /* Voltage PCI Low  Warn Threshold */
+#define        SK_SEN_PCI_5V_LOW_ERR           4422    /* Voltage PCI Low  Err  Threshold */
+
+/*
+ * VIO may be 5 V or 3.3 V. Initialization takes two parts:
+ * 1. Initialize lowest lower limit and highest higher limit.
+ * 2. After the first value is read correct the upper or the lower limit to
+ *    the appropriate C constant.
+ *
+ * Warning limits are +-5% of the exepected voltage.
+ * Error limits are +-10% of the expected voltage.
+ */
+
+/* Bug fix AF: 16.Aug.2001: Correct the init base of LM80 sensor */
+
+#define        SK_SEN_PCI_IO_5V_HIGH_ERR       5566    /* + 10% V PCI-IO High Err Threshold */
+#define        SK_SEN_PCI_IO_5V_HIGH_WARN      5324    /* +  5% V PCI-IO High Warn Threshold */
+                                       /*              5000    mVolt */
+#define        SK_SEN_PCI_IO_5V_LOW_WARN       4686    /* -  5% V PCI-IO Low Warn Threshold */
+#define        SK_SEN_PCI_IO_5V_LOW_ERR        4444    /* - 10% V PCI-IO Low Err Threshold */
+
+#define        SK_SEN_PCI_IO_RANGE_LIMITER     4000    /* 4000 mV range delimiter */
+
+/* correction values for the second pass */
+#define        SK_SEN_PCI_IO_3V3_HIGH_ERR      3850    /* + 15% V PCI-IO High Err Threshold */
+#define        SK_SEN_PCI_IO_3V3_HIGH_WARN     3674    /* + 10% V PCI-IO High Warn Threshold */
+                                       /*              3300    mVolt */
+#define        SK_SEN_PCI_IO_3V3_LOW_WARN  2926        /* - 10% V PCI-IO Low Warn Threshold */
+#define        SK_SEN_PCI_IO_3V3_LOW_ERR   2772        /* - 15% V PCI-IO Low Err  Threshold */
+
+
+/*
+ * VDD voltage
+ */
+#define        SK_SEN_VDD_HIGH_ERR         3630        /* Voltage ASIC High Err  Threshold */
+#define        SK_SEN_VDD_HIGH_WARN    3476    /* Voltage ASIC High Warn Threshold */
+#define        SK_SEN_VDD_LOW_WARN     3146    /* Voltage ASIC Low  Warn Threshold */
+#define        SK_SEN_VDD_LOW_ERR      2970    /* Voltage ASIC Low  Err  Threshold */
+
+/*
+ * PHY PLL 3V3 voltage
+ */
+#define        SK_SEN_PLL_3V3_HIGH_ERR         3630    /* Voltage PMA High Err  Threshold */
+#define        SK_SEN_PLL_3V3_HIGH_WARN        3476    /* Voltage PMA High Warn Threshold */
+#define        SK_SEN_PLL_3V3_LOW_WARN         3146    /* Voltage PMA Low  Warn Threshold */
+#define        SK_SEN_PLL_3V3_LOW_ERR          2970    /* Voltage PMA Low  Err  Threshold */
+
+/*
+ * VAUX (YUKON only)
+ */
+#define        SK_SEN_VAUX_3V3_HIGH_ERR        3630    /* Voltage VAUX High Err Threshold */
+#define        SK_SEN_VAUX_3V3_HIGH_WARN       3476    /* Voltage VAUX High Warn Threshold */
+#define        SK_SEN_VAUX_3V3_LOW_WARN        3146    /* Voltage VAUX Low Warn Threshold */
+#define        SK_SEN_VAUX_3V3_LOW_ERR     2970        /* Voltage VAUX Low Err Threshold */
+#define        SK_SEN_VAUX_0V_WARN_ERR        0        /* if VAUX not present */
+#define        SK_SEN_VAUX_RANGE_LIMITER       1000    /* 1000 mV range delimiter */
+
+/*
+ * PHY 2V5 voltage
+ */
+#define        SK_SEN_PHY_2V5_HIGH_ERR         2750    /* Voltage PHY High Err Threshold */
+#define        SK_SEN_PHY_2V5_HIGH_WARN        2640    /* Voltage PHY High Warn Threshold */
+#define        SK_SEN_PHY_2V5_LOW_WARN         2376    /* Voltage PHY Low Warn Threshold */
+#define        SK_SEN_PHY_2V5_LOW_ERR          2222    /* Voltage PHY Low Err Threshold */
+
+/*
+ * ASIC Core 1V5 voltage (YUKON only)
+ */
+#define        SK_SEN_CORE_1V5_HIGH_ERR        1650    /* Voltage ASIC Core High Err Threshold */
+#define        SK_SEN_CORE_1V5_HIGH_WARN       1575    /* Voltage ASIC Core High Warn Threshold */
+#define        SK_SEN_CORE_1V5_LOW_WARN        1425    /* Voltage ASIC Core Low Warn Threshold */
+#define        SK_SEN_CORE_1V5_LOW_ERR         1350    /* Voltage ASIC Core Low Err Threshold */
+
+/*
+ * FAN 1 speed
+ */
+/* assuming: 6500rpm +-15%, 4 pulses,
+ * warning at: 80 %
+ * error at:   70 %
+ * no upper limit
+ */
+#define        SK_SEN_FAN_HIGH_ERR             20000   /* FAN Speed High Err Threshold */
+#define        SK_SEN_FAN_HIGH_WARN    20000   /* FAN Speed High Warn Threshold */
+#define        SK_SEN_FAN_LOW_WARN     5200    /* FAN Speed Low Warn Threshold */
+#define        SK_SEN_FAN_LOW_ERR              4550    /* FAN Speed Low Err Threshold */
+
+/*
+ * Some Voltages need dynamic thresholds
+ */
+#define        SK_SEN_DYN_INIT_NONE             0  /* No dynamic init of thresholds */
+#define        SK_SEN_DYN_INIT_PCI_IO          10  /* Init PCI-IO with new thresholds */
+#define        SK_SEN_DYN_INIT_VAUX            11  /* Init VAUX with new thresholds */
+
+extern int SkLm80ReadSensor(SK_AC *pAC, SK_IOC IoC, SK_SENSOR *pSen);
+#endif /* n_INC_SKGEI2C_H */
diff -Naur u-boot-2009.03_orig/drivers/net/sk98lin/h/skgeinit.h u-boot-2009.03/drivers/net/sk98lin/h/skgeinit.h
--- u-boot-2009.03_orig/drivers/net/sk98lin/h/skgeinit.h        2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/drivers/net/sk98lin/h/skgeinit.h     2009-03-31 14:54:45.877920000 -0700
@@ -1,1113 +1,1116 @@
-/******************************************************************************
- *
- * Name:       skgeinit.h
- * Project:    GEnesis, PCI Gigabit Ethernet Adapter
- * Version:    $Revision: 1.75 $
- * Date:       $Date: 2003/02/05 13:36:39 $
- * Purpose:    Structures and prototypes for the GE Init Module
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- *     (C)Copyright 1998-2003 SysKonnect GmbH.
- *
- *     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.
- *
- *     The information in this file is provided "AS IS" without warranty.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * History:
- *
- *     $Log: skgeinit.h,v $
- *     Revision 1.75  2003/02/05 13:36:39  rschmidt
- *     Added define SK_FACT_78 for YUKON's Host Clock of 78.12 MHz
- *     Editorial changes
- *
- *     Revision 1.74  2003/01/28 09:39:16  rschmidt
- *     Added entry GIYukonLite in s_GeInit structure
- *     Editorial changes
- *
- *     Revision 1.73  2002/11/15 12:47:25  rschmidt
- *     Replaced error message SKERR_HWI_E024 for Cable Diagnostic with
- *     Rx queue error in SkGeStopPort().
- *
- *     Revision 1.72  2002/11/12 17:08:35  rschmidt
- *     Added entries for Cable Diagnostic to Port structure
- *     Added entries GIPciSlot64 and GIPciClock66 in s_GeInit structure
- *     Added error message for Cable Diagnostic
- *     Added prototypes for SkGmCableDiagStatus()
- *     Editorial changes
- *
- *     Revision 1.71  2002/10/21 11:26:10  mkarl
- *     Changed interface of SkGeInitAssignRamToQueues().
- *
- *     Revision 1.70  2002/10/14 08:21:32  rschmidt
- *     Changed type of GICopperType, GIVauxAvail to SK_BOOL
- *     Added entry PRxOverCnt to Port structure
- *     Added entry GIYukon32Bit in s_GeInit structure
- *     Editorial changes
- *
- *     Revision 1.69  2002/10/09 16:57:15  mkarl
- *     Added some constants and macros for SkGeInitAssignRamToQueues().
- *
- *     Revision 1.68  2002/09/12 08:58:51  rwahl
- *     Retrieve counters needed for XMAC errata workarounds directly because
- *     PNMI returns corrected counter values (e.g. #10620).
- *
- *     Revision 1.67  2002/08/16 14:40:30  rschmidt
- *     Added entries GIGenesis and GICopperType in s_GeInit structure
- *     Added prototypes for SkMacHashing()
- *     Editorial changes
- *
- *     Revision 1.66  2002/08/12 13:27:21  rschmidt
- *     Added defines for Link speed capabilities
- *     Added entry PLinkSpeedCap to Port structure
- *     Added entry GIVauxAvail in s_GeInit structure
- *     Added prototypes for SkMacPromiscMode()
- *     Editorial changes
- *
- *     Revision 1.65  2002/08/08 15:46:18  rschmidt
- *     Added define SK_PHY_ACC_TO for PHY access timeout
- *     Added define SK_XM_RX_HI_WM for XMAC Rx High Watermark
- *     Added define SK_MIN_TXQ_SIZE for Min RAM Buffer Tx Queue Size
- *     Added entry PhyId1 to Port structure
- *
- *     Revision 1.64  2002/07/23 16:02:56  rschmidt
- *     Added entry GIWolOffs in s_GeInit struct (HW-Bug in YUKON 1st rev.)
- *     Added prototypes for: SkGePhyRead(), SkGePhyWrite()
- *
- *     Revision 1.63  2002/07/18 08:17:38  rwahl
- *     Corrected definitions for SK_LSPEED_xxx & SK_LSPEED_STAT_xxx.
- *
- *     Revision 1.62  2002/07/17 18:21:55  rwahl
- *     Added SK_LSPEED_INDETERMINATED define.
- *
- *     Revision 1.61  2002/07/17 17:16:03  rwahl
- *     - MacType now member of GIni struct.
- *     - Struct alignment to 32bit.
- *     - Editorial change.
- *
- *     Revision 1.60  2002/07/15 18:23:39  rwahl
- *     Added GeMacFunc to GE Init structure.
- *     Added prototypes for SkXmUpdateStats(), SkGmUpdateStats(),
- *       SkXmMacStatistic(), SkGmMacStatistic(), SkXmResetCounter(),
- *       SkGmResetCounter(), SkXmOverflowStatus(), SkGmOverflowStatus().
- *     Added defines for current link speed state.
- *     Added ERRMSG defintions for MacUpdateStat() & MacStatistics().
- *
- *     Revision 1.59  2002/07/15 15:40:22  rschmidt
- *     Added entry PLinkSpeedUsed to Port structure
- *     Editorial changes
- *
- *     Revision 1.58  2002/06/10 09:36:30  rschmidt
- *     Editorial changes.
- *
- *     Revision 1.57  2002/06/05 08:18:00  rschmidt
- *     Corrected alignment in Port Structure
- *     Added new prototypes for GMAC
- *     Editorial changes
- *
- *     Revision 1.56  2002/04/25 11:38:12  rschmidt
- *     Added defines for Link speed values
- *     Added defines for Loopback parameters for MAC and PHY
- *     Removed entry PRxCmd from Port structure
- *     Added entry PLinkSpeed to Port structure
- *     Added entries GIChipId and GIChipRev to GE Init structure
- *     Removed entry GIAnyPortAct from GE Init structure
- *     Added prototypes for: SkMacInit(), SkMacInitPhy(),
- *     SkMacRxTxDisable(), SkMacSoftRst(), SkMacHardRst(), SkMacIrq(),
- *     SkMacIrqDisable(), SkMacFlushTxFifo(), SkMacFlushRxFifo(),
- *     SkMacAutoNegDone(), SkMacAutoNegLipaPhy(), SkMacSetRxTxEn(),
- *     SkXmPhyRead(), SkXmPhyRead(), SkGmPhyWrite(), SkGmPhyWrite();
- *     Removed prototypes for static functions in SkXmac2.c
- *     Editorial changes
- *
- *     Revision 1.55  2002/02/26 15:24:53  rwahl
- *     Fix: no link with manual configuration (#10673). The previous fix for
- *     #10639 was removed. So for RLMT mode = CLS the RLMT may switch to
- *     misconfigured port. It should not occur for the other RLMT modes.
- *
- *     Revision 1.54  2002/01/18 16:52:52  rwahl
- *     Editorial corrections.
- *
- *     Revision 1.53  2001/11/20 09:19:58  rwahl
- *     Reworked bugfix #10639 (no dependency to RLMT mode).
- *
- *     Revision 1.52  2001/10/26 07:52:23  afischer
- *     Port switching bug in `check local link` mode
- *
- *     Revision 1.51  2001/02/09 12:26:38  cgoos
- *     Inserted #ifdef DIAG for half duplex workaround timer.
- *
- *     Revision 1.50  2001/02/07 07:56:40  rassmann
- *     Corrected copyright.
- *
- *     Revision 1.49  2001/01/31 15:32:18  gklug
- *     fix: problem with autosensing an SR8800 switch
- *     add: counter for autoneg timeouts
- *
- *     Revision 1.48  2000/11/09 11:30:10  rassmann
- *     WA: Waiting after releasing reset until BCom chip is accessible.
- *
- *     Revision 1.47  2000/10/18 12:22:40  cgoos
- *     Added workaround for half duplex hangup.
- *
- *     Revision 1.46  2000/08/10 11:28:00  rassmann
- *     Editorial changes.
- *     Preserving 32-bit alignment in structs for the adapter context.
- *
- *     Revision 1.45  1999/11/22 13:56:19  cgoos
- *     Changed license header to GPL.
- *
- *     Revision 1.44  1999/10/26 07:34:15  malthoff
- *     The define SK_LNK_ON has been lost in v1.41.
- *
- *     Revision 1.43  1999/10/06 09:30:16  cgoos
- *     Changed SK_XM_THR_JUMBO.
- *
- *     Revision 1.42  1999/09/16 12:58:26  cgoos
- *     Changed SK_LED_STANDY macro to be independent of HW link sync.
- *
- *     Revision 1.41  1999/07/30 06:56:14  malthoff
- *     Correct comment for SK_MS_STAT_UNSET.
- *
- *     Revision 1.40  1999/05/27 13:38:46  cgoos
- *     Added SK_BMU_TX_WM.
- *     Made SK_BMU_TX_WM and SK_BMU_RX_WM user-definable.
- *     Changed XMAC Tx treshold to max. values.
- *
- *     Revision 1.39  1999/05/20 14:35:26  malthoff
- *     Remove prototypes for SkGeLinkLED().
- *
- *     Revision 1.38  1999/05/19 11:59:12  cgoos
- *     Added SK_MS_CAP_INDETERMINATED define.
- *
- *     Revision 1.37  1999/05/19 07:32:33  cgoos
- *     Changes for 1000Base-T.
- *     LED-defines for HWAC_LINK_LED macro.
- *
- *     Revision 1.36  1999/04/08 14:00:24  gklug
- *     add:Port struct field PLinkResCt
- *
- *     Revision 1.35  1999/03/25 07:43:07  malthoff
- *     Add error string for SKERR_HWI_E018MSG.
- *
- *     Revision 1.34  1999/03/12 16:25:57  malthoff
- *     Remove PPollRxD and PPollTxD.
- *     Add SKERR_HWI_E017MSG. and SK_DPOLL_MAX.
- *
- *     Revision 1.33  1999/03/12 13:34:41  malthoff
- *     Add Autonegotiation error codes.
- *     Change defines for parameter Mode in SkXmSetRxCmd().
- *     Replace __STDC__ by SK_KR_PROTO.
- *
- *     Revision 1.32  1999/01/25 14:40:20  mhaveman
- *     Added new return states for the virtual management port if multiple
- *     ports are active but differently configured.
- *
- *     Revision 1.31  1998/12/11 15:17:02  gklug
- *     add: Link partnet autoneg states : Unknown Manual and Auto-negotiation
- *
- *     Revision 1.30  1998/12/07 12:17:04  gklug
- *     add: Link Partner auto-negotiation flag
- *
- *     Revision 1.29  1998/12/01 10:54:42  gklug
- *     add: variables for XMAC Errata
- *
- *     Revision 1.28  1998/12/01 10:14:15  gklug
- *     add: PIsave saves the Interrupt status word
- *
- *     Revision 1.27  1998/11/26 15:24:52  mhaveman
- *     Added link status states SK_LMODE_STAT_AUTOHALF and
- *     SK_LMODE_STAT_AUTOFULL which are used by PNMI.
- *
- *     Revision 1.26  1998/11/26 14:53:01  gklug
- *     add:autoNeg Timeout variable
- *
- *     Revision 1.25  1998/11/26 08:58:50  gklug
- *     add: Link Mode configuration (AUTO Sense mode)
- *
- *     Revision 1.24  1998/11/24 13:30:27  gklug
- *     add: PCheckPar to port struct
- *
- *     Revision 1.23  1998/11/18 13:23:26  malthoff
- *     Add SK_PKT_TO_MAX.
- *
- *     Revision 1.22  1998/11/18 13:19:54  gklug
- *     add: PPrevShorts and PLinkBroken to port struct for WA XMAC Errata #C1
- *
- *     Revision 1.21  1998/10/26 08:02:57  malthoff
- *     Add GIRamOffs.
- *
- *     Revision 1.20  1998/10/19 07:28:37  malthoff
- *     Add prototype for SkGeInitRamIface().
- *
- *     Revision 1.19  1998/10/14 14:47:48  malthoff
- *     SK_TIMER should not be defined for Diagnostics.
- *     Add SKERR_HWI_E015MSG and SKERR_HWI_E016MSG.
- *
- *     Revision 1.18  1998/10/14 14:00:03  gklug
- *     add: timer to port struct for workaround of Errata #2
- *
- *     Revision 1.17  1998/10/14 11:23:09  malthoff
- *     Add prototype for SkXmAutoNegDone().
- *     Fix SkXmSetRxCmd() prototype statement.
- *
- *     Revision 1.16  1998/10/14 05:42:29  gklug
- *     add: HWLinkUp flag to Port struct
- *
- *     Revision 1.15  1998/10/09 08:26:33  malthoff
- *     Rename SK_RB_ULPP_B to SK_RB_LLPP_B.
- *
- *     Revision 1.14  1998/10/09 07:11:13  malthoff
- *     bug fix: SK_FACT_53 is 85 not 117.
- *     Rework time out init values.
- *     Add GIPortUsage and corresponding defines.
- *     Add some error log messages.
- *
- *     Revision 1.13  1998/10/06 14:13:14  malthoff
- *     Add prototype for SkGeLoadLnkSyncCnt().
- *
- *     Revision 1.12  1998/10/05 11:29:53  malthoff
- *     bug fix: A comment was not closed.
- *
- *     Revision 1.11  1998/10/05 08:01:59  malthoff
- *     Add default Timeout- Threshold- and
- *     Watermark constants. Add QRam start and end
- *     variables. Also add vars to store the polling
- *     mode and receive command. Add new Error Log
- *     Messages and function prototypes.
- *
- *     Revision 1.10  1998/09/28 13:34:48  malthoff
- *     Add mode bits for LED functions.
- *     Move Autoneg and Flow Ctrl bits from shgesirq.h
- *     Add the required Error Log Entries
- *     and Function Prototypes.
- *
- *     Revision 1.9  1998/09/16 14:38:41  malthoff
- *     Rework the SK_LNK_xxx defines.
- *     Add error log message defines.
- *     Add prototypes for skxmac2.c
- *
- *     Revision 1.8  1998/09/11 05:29:18  gklug
- *     add: init state of a port
- *
- *     Revision 1.7  1998/09/08 08:35:52  gklug
- *     add: defines of the Init Levels
- *
- *     Revision 1.6  1998/09/03 13:48:42  gklug
- *     add: Link strati, capabilities to Port struct
- *
- *     Revision 1.5  1998/09/03 13:30:59  malthoff
- *     Add SK_LNK_BLINK and SK_LNK_PERM.
- *
- *     Revision 1.4  1998/09/03 09:55:31  malthoff
- *     Add constants for parameters Dir and RstMode
- *     when calling SkGeStopPort().
- *     Rework the prototype section.
- *     Add Queue Address offsets PRxQOff, PXsQOff, and PXaQOff.
- *     Remove Ioc with IoC.
- *
- *     Revision 1.3  1998/08/19 09:11:54  gklug
- *     fix: struct are removed from c-source (see CCC)
- *     add: typedefs for all structs
- *
- *     Revision 1.2  1998/07/28 12:38:26  malthoff
- *     The prototypes got the parameter 'IoC'.
- *
- *     Revision 1.1  1998/07/23 09:50:24  malthoff
- *     Created.
- *
- ******************************************************************************/
-
-#ifndef __INC_SKGEINIT_H_
-#define __INC_SKGEINIT_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/* defines ********************************************************************/
-
-/* modifying Link LED behaviour (used with SkGeLinkLED()) */
-#define SK_LNK_OFF             LED_OFF
-#define SK_LNK_ON              (LED_ON | LED_BLK_OFF | LED_SYNC_OFF)
-#define SK_LNK_BLINK   (LED_ON | LED_BLK_ON  | LED_SYNC_ON)
-#define SK_LNK_PERM            (LED_ON | LED_BLK_OFF | LED_SYNC_ON)
-#define SK_LNK_TST             (LED_ON | LED_BLK_ON  | LED_SYNC_OFF)
-
-/* parameter 'Mode' when calling SK_HWAC_LINK_LED() */
-#define SK_LED_OFF             LED_OFF
-#define SK_LED_ACTIVE  (LED_ON | LED_BLK_OFF | LED_SYNC_OFF)
-#define SK_LED_STANDBY (LED_ON | LED_BLK_ON  | LED_SYNC_OFF)
-
-/* addressing LED Registers in SkGeXmitLED() */
-#define XMIT_LED_INI   0
-#define XMIT_LED_CNT   (RX_LED_VAL - RX_LED_INI)
-#define XMIT_LED_CTRL  (RX_LED_CTRL- RX_LED_INI)
-#define XMIT_LED_TST   (RX_LED_TST - RX_LED_INI)
-
-/* parameter 'Mode' when calling SkGeXmitLED() */
-#define SK_LED_DIS     0
-#define SK_LED_ENA     1
-#define SK_LED_TST     2
-
-/* Counter and Timer constants, for a host clock of 62.5 MHz */
-#define SK_XMIT_DUR            0x002faf08L             /*  50 ms */
-#define SK_BLK_DUR             0x01dcd650L             /* 500 ms */
-
-#define SK_DPOLL_DEF   0x00ee6b28L             /* 250 ms at 62.5 MHz */
-
-#define SK_DPOLL_MAX   0x00ffffffL             /* 268 ms at 62.5 MHz */
-                                                                               /* 215 ms at 78.12 MHz */
-
-#define SK_FACT_62             100                     /* is given in percent */
-#define SK_FACT_53              85         /* on GENESIS:      53.12 MHz */
-#define SK_FACT_78             125                     /* on YUKON:    78.12 MHz */
-
-/* Timeout values */
-#define SK_MAC_TO_53   72                      /* MAC arbiter timeout */
-#define SK_PKT_TO_53   0x2000          /* Packet arbiter timeout */
-#define SK_PKT_TO_MAX  0xffff          /* Maximum value */
-#define SK_RI_TO_53            36                      /* RAM interface timeout */
-
-#define SK_PHY_ACC_TO  600000          /* PHY access timeout */
-
-/* RAM Buffer High Pause Threshold values */
-#define SK_RB_ULPP             ( 8 * 1024)     /* Upper Level in kB/8 */
-#define SK_RB_LLPP_S   (10 * 1024)     /* Lower Level for small Queues */
-#define SK_RB_LLPP_B   (16 * 1024)     /* Lower Level for big Queues */
-
-#ifndef SK_BMU_RX_WM
-#define SK_BMU_RX_WM   0x600           /* BMU Rx Watermark */
-#endif
-#ifndef SK_BMU_TX_WM
-#define SK_BMU_TX_WM   0x600           /* BMU Tx Watermark */
-#endif
-
-/* XMAC II Rx High Watermark */
-#define SK_XM_RX_HI_WM 0x05aa          /* 1450 */
-
-/* XMAC II Tx Threshold */
-#define SK_XM_THR_REDL 0x01fb          /* .. for redundant link usage */
-#define SK_XM_THR_SL   0x01fb          /* .. for single link adapters */
-#define SK_XM_THR_MULL 0x01fb          /* .. for multiple link usage */
-#define SK_XM_THR_JUMBO        0x03fc          /* .. for jumbo frame usage */
-
-/* values for GIPortUsage */
-#define SK_RED_LINK            1               /* redundant link usage */
-#define SK_MUL_LINK            2               /* multiple link usage */
-#define SK_JUMBO_LINK  3               /* driver uses jumbo frames */
-
-/* Minimum RAM Buffer Rx Queue Size */
-#define SK_MIN_RXQ_SIZE        16              /* 16 kB */
-
-/* Minimum RAM Buffer Tx Queue Size */
-#define SK_MIN_TXQ_SIZE        16              /* 16 kB */
-
-/* Queue Size units */
-#define QZ_UNITS               0x7
-#define QZ_STEP                        8
-
-/* Percentage of queue size from whole memory */
-/* 80 % for receive */
-#define RAM_QUOTA_RX   80L
-/* 0% for sync transfer */
-#define        RAM_QUOTA_SYNC  0L
-/* the rest (20%) is taken for async transfer */
-
-/* Get the rounded queue size in Bytes in 8k steps */
-#define ROUND_QUEUE_SIZE(SizeInBytes)                                  \
-       ((((unsigned long) (SizeInBytes) + (QZ_STEP*1024L)-1) / 1024) & \
-       ~(QZ_STEP-1))
-
-/* Get the rounded queue size in KBytes in 8k steps */
-#define ROUND_QUEUE_SIZE_KB(Kilobytes) \
-       ROUND_QUEUE_SIZE((Kilobytes) * 1024L)
-
-/* Types of RAM Buffer Queues */
-#define SK_RX_SRAM_Q   1       /* small receive queue */
-#define SK_RX_BRAM_Q   2       /* big receive queue */
-#define SK_TX_RAM_Q            3       /* small or big transmit queue */
-
-/* parameter 'Dir' when calling SkGeStopPort() */
-#define SK_STOP_TX     1       /* Stops the transmit path, resets the XMAC */
-#define SK_STOP_RX     2       /* Stops the receive path */
-#define SK_STOP_ALL    3       /* Stops Rx and Tx path, resets the XMAC */
-
-/* parameter 'RstMode' when calling SkGeStopPort() */
-#define SK_SOFT_RST    1       /* perform a software reset */
-#define SK_HARD_RST    2       /* perform a hardware reset */
-
-/* Init Levels */
-#define SK_INIT_DATA   0        /* Init level 0: init data structures */
-#define SK_INIT_IO             1       /* Init level 1: init with IOs */
-#define SK_INIT_RUN            2       /* Init level 2: init for run time */
-
-/* Link Mode Parameter */
-#define SK_LMODE_HALF          1       /* Half Duplex Mode */
-#define SK_LMODE_FULL          2       /* Full Duplex Mode */
-#define SK_LMODE_AUTOHALF      3       /* AutoHalf Duplex Mode */
-#define SK_LMODE_AUTOFULL      4       /* AutoFull Duplex Mode */
-#define SK_LMODE_AUTOBOTH      5       /* AutoBoth Duplex Mode */
-#define SK_LMODE_AUTOSENSE     6       /* configured mode auto sensing */
-#define SK_LMODE_INDETERMINATED        7       /* indeterminated */
-
-/* Auto-negotiation timeout in 100ms granularity */
-#define SK_AND_MAX_TO          6       /* Wait 600 msec before link comes up */
-
-/* Auto-negotiation error codes */
-#define SK_AND_OK                      0        /* no error */
-#define SK_AND_OTHER           1       /* other error than below */
-#define SK_AND_DUP_CAP         2       /* Duplex capabilities error */
-
-
-/* Link Speed Capabilities */
-#define SK_LSPEED_CAP_AUTO                     (1<<0)  /* Automatic resolution */
-#define SK_LSPEED_CAP_10MBPS           (1<<1)  /* 10 Mbps */
-#define SK_LSPEED_CAP_100MBPS          (1<<2)  /* 100 Mbps */
-#define SK_LSPEED_CAP_1000MBPS         (1<<3)  /* 1000 Mbps */
-#define SK_LSPEED_CAP_INDETERMINATED (1<<4) /* indeterminated */
-
-/* Link Speed Parameter */
-#define SK_LSPEED_AUTO                         1       /* Automatic resolution */
-#define SK_LSPEED_10MBPS                       2       /* 10 Mbps */
-#define SK_LSPEED_100MBPS                      3       /* 100 Mbps */
-#define SK_LSPEED_1000MBPS                     4       /* 1000 Mbps */
-#define SK_LSPEED_INDETERMINATED       5       /* indeterminated */
-
-/* Link Speed Current State */
-#define SK_LSPEED_STAT_UNKNOWN         1
-#define SK_LSPEED_STAT_10MBPS          2
-#define SK_LSPEED_STAT_100MBPS         3
-#define SK_LSPEED_STAT_1000MBPS                4
-#define SK_LSPEED_STAT_INDETERMINATED 5
-
-
-/* Link Capability Parameter */
-#define SK_LMODE_CAP_HALF              (1<<0)  /* Half Duplex Mode */
-#define SK_LMODE_CAP_FULL              (1<<1)  /* Full Duplex Mode */
-#define SK_LMODE_CAP_AUTOHALF  (1<<2)  /* AutoHalf Duplex Mode */
-#define SK_LMODE_CAP_AUTOFULL  (1<<3)  /* AutoFull Duplex Mode */
-#define SK_LMODE_CAP_INDETERMINATED (1<<4) /* indeterminated */
-
-/* Link Mode Current State */
-#define SK_LMODE_STAT_UNKNOWN  1       /* Unknown Duplex Mode */
-#define SK_LMODE_STAT_HALF             2       /* Half Duplex Mode */
-#define SK_LMODE_STAT_FULL             3       /* Full Duplex Mode */
-#define SK_LMODE_STAT_AUTOHALF 4       /* Half Duplex Mode obtained by Auto-Neg */
-#define SK_LMODE_STAT_AUTOFULL 5       /* Full Duplex Mode obtained by Auto-Neg */
-#define SK_LMODE_STAT_INDETERMINATED 6 /* indeterminated */
-
-/* Flow Control Mode Parameter (and capabilities) */
-#define SK_FLOW_MODE_NONE              1       /* No Flow-Control */
-#define SK_FLOW_MODE_LOC_SEND  2       /* Local station sends PAUSE */
-#define SK_FLOW_MODE_SYMMETRIC 3       /* Both stations may send PAUSE */
-#define SK_FLOW_MODE_SYM_OR_REM        4       /* Both stations may send PAUSE or
-                                        * just the remote station may send PAUSE
-                                        */
-#define SK_FLOW_MODE_INDETERMINATED 5  /* indeterminated */
-
-/* Flow Control Status Parameter */
-#define SK_FLOW_STAT_NONE              1       /* No Flow Control */
-#define SK_FLOW_STAT_REM_SEND  2       /* Remote Station sends PAUSE */
-#define SK_FLOW_STAT_LOC_SEND  3       /* Local station sends PAUSE */
-#define SK_FLOW_STAT_SYMMETRIC 4       /* Both station may send PAUSE */
-#define SK_FLOW_STAT_INDETERMINATED 5  /* indeterminated */
-
-/* Master/Slave Mode Capabilities */
-#define SK_MS_CAP_AUTO         (1<<0)  /* Automatic resolution */
-#define SK_MS_CAP_MASTER       (1<<1)  /* This station is master */
-#define SK_MS_CAP_SLAVE                (1<<2)  /* This station is slave */
-#define SK_MS_CAP_INDETERMINATED (1<<3)        /* indeterminated */
-
-/* Set Master/Slave Mode Parameter (and capabilities) */
-#define SK_MS_MODE_AUTO                1       /* Automatic resolution */
-#define SK_MS_MODE_MASTER      2       /* This station is master */
-#define SK_MS_MODE_SLAVE       3       /* This station is slave */
-#define SK_MS_MODE_INDETERMINATED 4    /* indeterminated */
-
-/* Master/Slave Status Parameter */
-#define SK_MS_STAT_UNSET       1       /* The M/S status is not set */
-#define SK_MS_STAT_MASTER      2       /* This station is Master */
-#define SK_MS_STAT_SLAVE       3       /* This station is Dlave */
-#define SK_MS_STAT_FAULT       4       /* M/S resolution failed */
-#define SK_MS_STAT_INDETERMINATED 5    /* indeterminated */
-
-/* parameter 'Mode' when calling SkXmSetRxCmd() */
-#define SK_STRIP_FCS_ON                (1<<0)  /* Enable  FCS stripping of Rx frames */
-#define SK_STRIP_FCS_OFF       (1<<1)  /* Disable FCS stripping of Rx frames */
-#define SK_STRIP_PAD_ON                (1<<2)  /* Enable  pad byte stripping of Rx fr */
-#define SK_STRIP_PAD_OFF       (1<<3)  /* Disable pad byte stripping of Rx fr */
-#define SK_LENERR_OK_ON                (1<<4)  /* Don't chk fr for in range len error */
-#define SK_LENERR_OK_OFF       (1<<5)  /* Check frames for in range len error */
-#define SK_BIG_PK_OK_ON                (1<<6)  /* Don't set Rx Error bit for big frames */
-#define SK_BIG_PK_OK_OFF       (1<<7)  /* Set Rx Error bit for big frames */
-#define SK_SELF_RX_ON          (1<<8)  /* Enable  Rx of own packets */
-#define SK_SELF_RX_OFF         (1<<9)  /* Disable Rx of own packets */
-
-/* parameter 'Para' when calling SkMacSetRxTxEn() */
-#define SK_MAC_LOOPB_ON                (1<<0)  /* Enable  MAC Loopback Mode */
-#define SK_MAC_LOOPB_OFF       (1<<1)  /* Disable MAC Loopback Mode */
-#define SK_PHY_LOOPB_ON                (1<<2)  /* Enable  PHY Loopback Mode */
-#define SK_PHY_LOOPB_OFF       (1<<3)  /* Disable PHY Loopback Mode */
-#define SK_PHY_FULLD_ON                (1<<4)  /* Enable  GMII Full Duplex */
-#define SK_PHY_FULLD_OFF       (1<<5)  /* Disable GMII Full Duplex */
-
-/* States of PState */
-#define SK_PRT_RESET   0        /* the port is reset */
-#define SK_PRT_STOP            1       /* the port is stopped (similar to SW reset) */
-#define SK_PRT_INIT            2       /* the port is initialized */
-#define SK_PRT_RUN             3       /* the port has an active link */
-
-/* Default receive frame limit for Workaround of XMAC Errata */
-#define SK_DEF_RX_WA_LIM       SK_CONSTU64(100)
-
-/* Link Partner Status */
-#define SK_LIPA_UNKNOWN        0        /* Link partner is in unknown state */
-#define SK_LIPA_MANUAL 1       /* Link partner is in detected manual state */
-#define SK_LIPA_AUTO   2       /* Link partner is in auto-negotiation state */
-
-/* Maximum Restarts before restart is ignored (3Com WA) */
-#define SK_MAX_LRESTART        3       /* Max. 3 times the link is restarted */
-
-/* Max. Auto-neg. timeouts before link detection in sense mode is reset */
-#define SK_MAX_ANEG_TO 10      /* Max. 10 times the sense mode is reset */
-
-/* structures *****************************************************************/
-
-/*
- * MAC specific functions
- */
-typedef struct s_GeMacFunc {
-       int  (*pFnMacUpdateStats)(SK_AC *pAC, SK_IOC IoC, unsigned int Port);
-       int  (*pFnMacStatistic)(SK_AC *pAC, SK_IOC IoC, unsigned int Port,
-                                                       SK_U16 StatAddr, SK_U32 *pVal);
-       int  (*pFnMacResetCounter)(SK_AC *pAC, SK_IOC IoC, unsigned int Port);
-       int  (*pFnMacOverflow)(SK_AC *pAC, SK_IOC IoC, unsigned int Port,
-                                                  SK_U16 IStatus, SK_U64 *pVal);
-} SK_GEMACFUNC;
-
-/*
- * Port Structure
- */
-typedef        struct s_GePort {
-#ifndef SK_DIAG
-       SK_TIMER        PWaTimer;       /* Workaround Timer */
-       SK_TIMER        HalfDupChkTimer;
-#endif /* SK_DIAG */
-       SK_U32  PPrevShorts;    /* Previous short Counter checking */
-       SK_U32  PPrevFcs;               /* Previous FCS Error Counter checking */
-       SK_U64  PPrevRx;                /* Previous RxOk Counter checking */
-       SK_U64  PRxLim;                 /* Previous RxOk Counter checking */
-       SK_U64  LastOctets;             /* For half duplex hang check */
-       int             PLinkResCt;             /* Link Restart Counter */
-       int             PAutoNegTimeOut;/* Auto-negotiation timeout current value */
-       int             PAutoNegTOCt;   /* Auto-negotiation Timeout Counter */
-       int             PRxQSize;               /* Port Rx Queue Size in kB */
-       int             PXSQSize;               /* Port Synchronous  Transmit Queue Size in kB */
-       int             PXAQSize;               /* Port Asynchronous Transmit Queue Size in kB */
-       SK_U32  PRxQRamStart;   /* Receive Queue RAM Buffer Start Address */
-       SK_U32  PRxQRamEnd;             /* Receive Queue RAM Buffer End Address */
-       SK_U32  PXsQRamStart;   /* Sync Tx Queue RAM Buffer Start Address */
-       SK_U32  PXsQRamEnd;             /* Sync Tx Queue RAM Buffer End Address */
-       SK_U32  PXaQRamStart;   /* Async Tx Queue RAM Buffer Start Address */
-       SK_U32  PXaQRamEnd;             /* Async Tx Queue RAM Buffer End Address */
-       SK_U32  PRxOverCnt;             /* Receive Overflow Counter */
-       int             PRxQOff;                /* Rx Queue Address Offset */
-       int             PXsQOff;                /* Synchronous Tx Queue Address Offset */
-       int             PXaQOff;                /* Asynchronous Tx Queue Address Offset */
-       int             PhyType;                /* PHY used on this port */
-       SK_U16  PhyId1;                 /* PHY Id1 on this port */
-       SK_U16  PhyAddr;                /* MDIO/MDC PHY address */
-       SK_U16  PIsave;                 /* Saved Interrupt status word */
-       SK_U16  PSsave;                 /* Saved PHY status word */
-       SK_BOOL PHWLinkUp;              /* The hardware Link is up (wiring) */
-       SK_BOOL PState;                 /* Is port initialized ? */
-       SK_BOOL PLinkBroken;    /* Is Link broken ? */
-       SK_BOOL PCheckPar;              /* Do we check for parity errors ? */
-       SK_BOOL HalfDupTimerActive;
-       SK_U8   PLinkCap;               /* Link Capabilities */
-       SK_U8   PLinkModeConf;  /* Link Mode configured */
-       SK_U8   PLinkMode;              /* Link Mode currently used */
-       SK_U8   PLinkModeStatus;/* Link Mode Status */
-       SK_U8   PLinkSpeedCap;  /* Link Speed Capabilities(10/100/1000 Mbps) */
-       SK_U8   PLinkSpeed;             /* configured Link Speed (10/100/1000 Mbps) */
-       SK_U8   PLinkSpeedUsed; /* current Link Speed (10/100/1000 Mbps) */
-       SK_U8   PFlowCtrlCap;   /* Flow Control Capabilities */
-       SK_U8   PFlowCtrlMode;  /* Flow Control Mode */
-       SK_U8   PFlowCtrlStatus;/* Flow Control Status */
-       SK_U8   PMSCap;                 /* Master/Slave Capabilities */
-       SK_U8   PMSMode;                /* Master/Slave Mode */
-       SK_U8   PMSStatus;              /* Master/Slave Status */
-       SK_U8   PAutoNegFail;   /* Auto-negotiation fail flag */
-       SK_U8   PLipaAutoNeg;   /* Auto-negotiation possible with Link Partner */
-       SK_U8   PCableLen;              /* Cable Length */
-       SK_U8   PMdiPairLen[4]; /* MDI[0..3] Pair Length */
-       SK_U8   PMdiPairSts[4]; /* MDI[0..3] Pair Diagnostic Status */
-} SK_GEPORT;
-
-/*
- * Gigabit Ethernet Initialization Struct
- * (has to be included in the adapter context)
- */
-typedef        struct s_GeInit {
-       SK_U8           GIPciHwRev;             /* PCI HW Revision Number */
-       SK_U8           GIChipId;               /* Chip Identification Number */
-       SK_U8           GIChipRev;              /* Chip Revision Number */
-       SK_BOOL         GIGenesis;              /* Genesis adapter ? */
-       SK_BOOL         GICopperType;   /* Copper Type adapter ? */
-       SK_BOOL         GIPciSlot64;    /* 64-bit PCI Slot */
-       SK_BOOL         GIPciClock66;   /* 66 MHz PCI Clock */
-       SK_BOOL         GIVauxAvail;    /* VAUX available (YUKON) */
-       SK_BOOL         GIYukon32Bit;   /* 32-Bit YUKON adapter */
-       SK_BOOL         GIYukonLite;    /* YUKON-Lite chip */
-       int                     GIMacsFound;    /* Number of MACs found on this adapter */
-       int                     GIMacType;              /* MAC Type used on this adapter */
-       int                     GIHstClkFact;   /* Host Clock Factor (62.5 / HstClk * 100) */
-       int                     GIPortUsage;    /* Driver Port Usage */
-       int                     GILevel;                /* Initialization Level completed */
-       int                     GIRamSize;              /* The RAM size of the adapter in kB */
-       int                     GIWolOffs;              /* WOL Register Offset (HW-Bug in Rev. A) */
-       SK_U32          GIRamOffs;              /* RAM Address Offset for addr calculation */
-       SK_U32          GIPollTimerVal; /* Descr. Poll Timer Init Val (HstClk ticks) */
-       SK_GEPORT       GP[SK_MAX_MACS];/* Port Dependent Information */
-       SK_GEMACFUNC GIFunc;            /* MAC depedent functions */
-} SK_GEINIT;
-
-/*
- * Error numbers and messages for skxmac2.c and skgeinit.c
- */
-#define SKERR_HWI_E001         (SK_ERRBASE_HWINIT)
-#define SKERR_HWI_E001MSG      "SkXmClrExactAddr() has got illegal parameters"
-#define SKERR_HWI_E002         (SKERR_HWI_E001+1)
-#define SKERR_HWI_E002MSG      "SkGeInit(): Level 1 call missing"
-#define SKERR_HWI_E003         (SKERR_HWI_E002+1)
-#define SKERR_HWI_E003MSG      "SkGeInit() called with illegal init Level"
-#define SKERR_HWI_E004         (SKERR_HWI_E003+1)
-#define SKERR_HWI_E004MSG      "SkGeInitPort(): Queue Size illegal configured"
-#define SKERR_HWI_E005         (SKERR_HWI_E004+1)
-#define SKERR_HWI_E005MSG      "SkGeInitPort(): cannot init running ports"
-#define SKERR_HWI_E006         (SKERR_HWI_E005+1)
-#define SKERR_HWI_E006MSG      "SkGeMacInit(): PState does not match HW state"
-#define SKERR_HWI_E007         (SKERR_HWI_E006+1)
-#define SKERR_HWI_E007MSG      "SkXmInitDupMd() called with invalid Dup Mode"
-#define SKERR_HWI_E008         (SKERR_HWI_E007+1)
-#define SKERR_HWI_E008MSG      "SkXmSetRxCmd() called with invalid Mode"
-#define SKERR_HWI_E009         (SKERR_HWI_E008+1)
-#define SKERR_HWI_E009MSG      "SkGeCfgSync() called although PXSQSize zero"
-#define SKERR_HWI_E010         (SKERR_HWI_E009+1)
-#define SKERR_HWI_E010MSG      "SkGeCfgSync() called with invalid parameters"
-#define SKERR_HWI_E011         (SKERR_HWI_E010+1)
-#define SKERR_HWI_E011MSG      "SkGeInitPort(): Receive Queue Size too small"
-#define SKERR_HWI_E012         (SKERR_HWI_E011+1)
-#define SKERR_HWI_E012MSG      "SkGeInitPort(): invalid Queue Size specified"
-#define SKERR_HWI_E013         (SKERR_HWI_E012+1)
-#define SKERR_HWI_E013MSG      "SkGeInitPort(): cfg changed for running queue"
-#define SKERR_HWI_E014         (SKERR_HWI_E013+1)
-#define SKERR_HWI_E014MSG      "SkGeInitPort(): unknown GIPortUsage specified"
-#define SKERR_HWI_E015         (SKERR_HWI_E014+1)
-#define SKERR_HWI_E015MSG      "Illegal Link mode parameter"
-#define SKERR_HWI_E016         (SKERR_HWI_E015+1)
-#define SKERR_HWI_E016MSG      "Illegal Flow control mode parameter"
-#define SKERR_HWI_E017         (SKERR_HWI_E016+1)
-#define SKERR_HWI_E017MSG      "Illegal value specified for GIPollTimerVal"
-#define SKERR_HWI_E018         (SKERR_HWI_E017+1)
-#define SKERR_HWI_E018MSG      "FATAL: SkGeStopPort() does not terminate (Tx)"
-#define SKERR_HWI_E019         (SKERR_HWI_E018+1)
-#define SKERR_HWI_E019MSG      "Illegal Speed parameter"
-#define SKERR_HWI_E020         (SKERR_HWI_E019+1)
-#define SKERR_HWI_E020MSG      "Illegal Master/Slave parameter"
-#define SKERR_HWI_E021         (SKERR_HWI_E020+1)
-#define        SKERR_HWI_E021MSG       "MacUpdateStats(): cannot update statistic counter"
-#define        SKERR_HWI_E022          (SKERR_HWI_E021+1)
-#define        SKERR_HWI_E022MSG       "MacStatistic(): illegal statistic base address"
-#define SKERR_HWI_E023         (SKERR_HWI_E022+1)
-#define SKERR_HWI_E023MSG      "SkGeInitPort(): Transmit Queue Size too small"
-#define SKERR_HWI_E024         (SKERR_HWI_E023+1)
-#define SKERR_HWI_E024MSG      "FATAL: SkGeStopPort() does not terminate (Rx)"
-#define SKERR_HWI_E025         (SKERR_HWI_E024+1)
-#define SKERR_HWI_E025MSG      ""
-
-/* function prototypes ********************************************************/
-
-#ifndef        SK_KR_PROTO
-
-/*
- * public functions in skgeinit.c
- */
-extern void    SkGePollRxD(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       int             Port,
-       SK_BOOL PollRxD);
-
-extern void    SkGePollTxD(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       int             Port,
-       SK_BOOL PollTxD);
-
-extern void    SkGeYellowLED(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       int             State);
-
-extern int     SkGeCfgSync(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       int             Port,
-       SK_U32  IntTime,
-       SK_U32  LimCount,
-       int             SyncMode);
-
-extern void    SkGeLoadLnkSyncCnt(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       int             Port,
-       SK_U32  CntVal);
-
-extern void    SkGeStopPort(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       int             Port,
-       int             Dir,
-       int             RstMode);
-
-extern int     SkGeInit(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       int             Level);
-
-extern void    SkGeDeInit(
-       SK_AC   *pAC,
-       SK_IOC  IoC);
-
-extern int     SkGeInitPort(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       int             Port);
-
-extern void    SkGeXmitLED(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       int             Led,
-       int             Mode);
-
-extern void    SkGeInitRamIface(
-       SK_AC   *pAC,
-       SK_IOC  IoC);
-
-extern int     SkGeInitAssignRamToQueues(
-       SK_AC   *pAC,
-       int             ActivePort,
-       SK_BOOL DualNet);
-
-/*
- * public functions in skxmac2.c
- */
-extern void SkMacRxTxDisable(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       int             Port);
-
-extern void    SkMacSoftRst(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       int             Port);
-
-extern void    SkMacHardRst(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       int             Port);
-
-extern void    SkXmInitMac(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       int             Port);
-
-extern void    SkGmInitMac(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       int             Port);
-
-extern void SkMacInitPhy(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       int             Port,
-       SK_BOOL DoLoop);
-
-extern void SkMacIrqDisable(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       int             Port);
-
-extern void    SkMacFlushTxFifo(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       int             Port);
-
-extern void    SkMacFlushRxFifo(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       int             Port);
-
-extern void    SkMacIrq(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       int             Port);
-
-extern int     SkMacAutoNegDone(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       int             Port);
-
-extern void    SkMacAutoNegLipaPhy(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       int             Port,
-       SK_U16  IStatus);
-
-extern void  SkMacSetRxTxEn(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       int             Port,
-       int             Para);
-
-extern int  SkMacRxTxEnable(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       int             Port);
-
-extern void    SkMacPromiscMode(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       int             Port,
-       SK_BOOL Enable);
-
-extern void    SkMacHashing(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       int             Port,
-       SK_BOOL Enable);
-
-extern void    SkXmPhyRead(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       int             Port,
-       int             Addr,
-       SK_U16  *pVal);
-
-extern void    SkXmPhyWrite(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       int             Port,
-       int             Addr,
-       SK_U16  Val);
-
-extern void    SkGmPhyRead(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       int             Port,
-       int             Addr,
-       SK_U16  *pVal);
-
-extern void    SkGmPhyWrite(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       int             Port,
-       int             Addr,
-       SK_U16  Val);
-
-extern void    SkGePhyRead(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       int             Port,
-       int             Addr,
-       SK_U16  *pVal);
-
-extern void    SkGePhyWrite(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       int             Port,
-       int             Addr,
-       SK_U16  Val);
-
-extern void    SkXmClrExactAddr(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       int             Port,
-       int             StartNum,
-       int             StopNum);
-
-extern void    SkXmInitDupMd(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       int             Port);
-
-extern void    SkXmInitPauseMd(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       int             Port);
-
-extern void    SkXmAutoNegLipaXmac(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       int             Port,
-       SK_U16  IStatus);
-
-extern int SkXmUpdateStats(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       unsigned int Port);
-
-extern int SkGmUpdateStats(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       unsigned int Port);
-
-extern int SkXmMacStatistic(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       unsigned int Port,
-       SK_U16  StatAddr,
-       SK_U32  *pVal);
-
-extern int SkGmMacStatistic(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       unsigned int Port,
-       SK_U16  StatAddr,
-       SK_U32  *pVal);
-
-extern int SkXmResetCounter(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       unsigned int Port);
-
-extern int SkGmResetCounter(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       unsigned int Port);
-
-extern int SkXmOverflowStatus(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       unsigned int Port,
-       SK_U16  IStatus,
-       SK_U64  *pStatus);
-
-extern int SkGmOverflowStatus(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       unsigned int Port,
-       SK_U16  MacStatus,
-       SK_U64  *pStatus);
-
-extern int SkGmCableDiagStatus(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       int             Port,
-       SK_BOOL StartTest);
-
-#ifdef SK_DIAG
-extern void    SkMacSetRxCmd(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       int             Port,
-       int             Mode);
-extern void    SkMacCrcGener(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       int             Port,
-       SK_BOOL Enable);
-extern void    SkMacTimeStamp(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       int             Port,
-       SK_BOOL Enable);
-extern void    SkXmSendCont(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       int             Port,
-       SK_BOOL Enable);
-#endif /* SK_DIAG */
-
-#else  /* SK_KR_PROTO */
-
-/*
- * public functions in skgeinit.c
- */
-extern void    SkGePollRxD();
-extern void    SkGePollTxD();
-extern void    SkGeYellowLED();
-extern int     SkGeCfgSync();
-extern void    SkGeLoadLnkSyncCnt();
-extern void    SkGeStopPort();
-extern int     SkGeInit();
-extern void    SkGeDeInit();
-extern int     SkGeInitPort();
-extern void    SkGeXmitLED();
-extern void    SkGeInitRamIface();
-extern int     SkGeInitAssignRamToQueues();
-
-/*
- * public functions in skxmac2.c
- */
-extern void SkMacRxTxDisable();
-extern void    SkMacSoftRst();
-extern void    SkMacHardRst();
-extern void SkMacInitPhy();
-extern int  SkMacRxTxEnable();
-extern void SkMacPromiscMode();
-extern void SkMacHashing();
-extern void SkMacIrqDisable();
-extern void    SkMacFlushTxFifo();
-extern void    SkMacFlushRxFifo();
-extern void    SkMacIrq();
-extern int     SkMacAutoNegDone();
-extern void    SkMacAutoNegLipaPhy();
-extern void SkMacSetRxTxEn();
-extern void    SkGePhyRead();
-extern void    SkGePhyWrite();
-extern void    SkXmInitMac();
-extern void    SkXmPhyRead();
-extern void    SkXmPhyWrite();
-extern void    SkGmInitMac();
-extern void    SkGmPhyRead();
-extern void    SkGmPhyWrite();
-extern void    SkXmClrExactAddr();
-extern void    SkXmInitDupMd();
-extern void    SkXmInitPauseMd();
-extern void    SkXmAutoNegLipaXmac();
-extern int     SkXmUpdateStats();
-extern int     SkGmUpdateStats();
-extern int     SkXmMacStatistic();
-extern int     SkGmMacStatistic();
-extern int     SkXmResetCounter();
-extern int     SkGmResetCounter();
-extern int     SkXmOverflowStatus();
-extern int     SkGmOverflowStatus();
-extern int     SkGmCableDiagStatus();
-
-#ifdef SK_DIAG
-extern void    SkMacSetRxCmd();
-extern void    SkMacCrcGener();
-extern void    SkMacTimeStamp();
-extern void    SkXmSendCont();
-#endif /* SK_DIAG */
-
-#endif /* SK_KR_PROTO */
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* __INC_SKGEINIT_H_ */
+/******************************************************************************
+ *
+ * Name:       skgeinit.h
+ * Project:    GEnesis, PCI Gigabit Ethernet Adapter
+ * Version:    $Revision: 1.1.1.1 $
+ * Date:       $Date: 2009/03/25 22:22:09 $
+ * Purpose:    Structures and prototypes for the GE Init Module
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ *     (C)Copyright 1998-2003 SysKonnect GmbH.
+ *
+ *     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.
+ *
+ *     The information in this file is provided "AS IS" without warranty.
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ * History:
+ *
+ *     $Log: skgeinit.h,v $
+ *     Revision 1.1.1.1  2009/03/25 22:22:09  kenagy
+ *     no message
+ *     
+ *     Revision 1.75  2003/02/05 13:36:39  rschmidt
+ *     Added define SK_FACT_78 for YUKON's Host Clock of 78.12 MHz
+ *     Editorial changes
+ *
+ *     Revision 1.74  2003/01/28 09:39:16  rschmidt
+ *     Added entry GIYukonLite in s_GeInit structure
+ *     Editorial changes
+ *
+ *     Revision 1.73  2002/11/15 12:47:25  rschmidt
+ *     Replaced error message SKERR_HWI_E024 for Cable Diagnostic with
+ *     Rx queue error in SkGeStopPort().
+ *
+ *     Revision 1.72  2002/11/12 17:08:35  rschmidt
+ *     Added entries for Cable Diagnostic to Port structure
+ *     Added entries GIPciSlot64 and GIPciClock66 in s_GeInit structure
+ *     Added error message for Cable Diagnostic
+ *     Added prototypes for SkGmCableDiagStatus()
+ *     Editorial changes
+ *
+ *     Revision 1.71  2002/10/21 11:26:10  mkarl
+ *     Changed interface of SkGeInitAssignRamToQueues().
+ *
+ *     Revision 1.70  2002/10/14 08:21:32  rschmidt
+ *     Changed type of GICopperType, GIVauxAvail to SK_BOOL
+ *     Added entry PRxOverCnt to Port structure
+ *     Added entry GIYukon32Bit in s_GeInit structure
+ *     Editorial changes
+ *
+ *     Revision 1.69  2002/10/09 16:57:15  mkarl
+ *     Added some constants and macros for SkGeInitAssignRamToQueues().
+ *
+ *     Revision 1.68  2002/09/12 08:58:51  rwahl
+ *     Retrieve counters needed for XMAC errata workarounds directly because
+ *     PNMI returns corrected counter values (e.g. #10620).
+ *
+ *     Revision 1.67  2002/08/16 14:40:30  rschmidt
+ *     Added entries GIGenesis and GICopperType in s_GeInit structure
+ *     Added prototypes for SkMacHashing()
+ *     Editorial changes
+ *
+ *     Revision 1.66  2002/08/12 13:27:21  rschmidt
+ *     Added defines for Link speed capabilities
+ *     Added entry PLinkSpeedCap to Port structure
+ *     Added entry GIVauxAvail in s_GeInit structure
+ *     Added prototypes for SkMacPromiscMode()
+ *     Editorial changes
+ *
+ *     Revision 1.65  2002/08/08 15:46:18  rschmidt
+ *     Added define SK_PHY_ACC_TO for PHY access timeout
+ *     Added define SK_XM_RX_HI_WM for XMAC Rx High Watermark
+ *     Added define SK_MIN_TXQ_SIZE for Min RAM Buffer Tx Queue Size
+ *     Added entry PhyId1 to Port structure
+ *
+ *     Revision 1.64  2002/07/23 16:02:56  rschmidt
+ *     Added entry GIWolOffs in s_GeInit struct (HW-Bug in YUKON 1st rev.)
+ *     Added prototypes for: SkGePhyRead(), SkGePhyWrite()
+ *
+ *     Revision 1.63  2002/07/18 08:17:38  rwahl
+ *     Corrected definitions for SK_LSPEED_xxx & SK_LSPEED_STAT_xxx.
+ *
+ *     Revision 1.62  2002/07/17 18:21:55  rwahl
+ *     Added SK_LSPEED_INDETERMINATED define.
+ *
+ *     Revision 1.61  2002/07/17 17:16:03  rwahl
+ *     - MacType now member of GIni struct.
+ *     - Struct alignment to 32bit.
+ *     - Editorial change.
+ *
+ *     Revision 1.60  2002/07/15 18:23:39  rwahl
+ *     Added GeMacFunc to GE Init structure.
+ *     Added prototypes for SkXmUpdateStats(), SkGmUpdateStats(),
+ *       SkXmMacStatistic(), SkGmMacStatistic(), SkXmResetCounter(),
+ *       SkGmResetCounter(), SkXmOverflowStatus(), SkGmOverflowStatus().
+ *     Added defines for current link speed state.
+ *     Added ERRMSG defintions for MacUpdateStat() & MacStatistics().
+ *
+ *     Revision 1.59  2002/07/15 15:40:22  rschmidt
+ *     Added entry PLinkSpeedUsed to Port structure
+ *     Editorial changes
+ *
+ *     Revision 1.58  2002/06/10 09:36:30  rschmidt
+ *     Editorial changes.
+ *
+ *     Revision 1.57  2002/06/05 08:18:00  rschmidt
+ *     Corrected alignment in Port Structure
+ *     Added new prototypes for GMAC
+ *     Editorial changes
+ *
+ *     Revision 1.56  2002/04/25 11:38:12  rschmidt
+ *     Added defines for Link speed values
+ *     Added defines for Loopback parameters for MAC and PHY
+ *     Removed entry PRxCmd from Port structure
+ *     Added entry PLinkSpeed to Port structure
+ *     Added entries GIChipId and GIChipRev to GE Init structure
+ *     Removed entry GIAnyPortAct from GE Init structure
+ *     Added prototypes for: SkMacInit(), SkMacInitPhy(),
+ *     SkMacRxTxDisable(), SkMacSoftRst(), SkMacHardRst(), SkMacIrq(),
+ *     SkMacIrqDisable(), SkMacFlushTxFifo(), SkMacFlushRxFifo(),
+ *     SkMacAutoNegDone(), SkMacAutoNegLipaPhy(), SkMacSetRxTxEn(),
+ *     SkXmPhyRead(), SkXmPhyRead(), SkGmPhyWrite(), SkGmPhyWrite();
+ *     Removed prototypes for static functions in SkXmac2.c
+ *     Editorial changes
+ *
+ *     Revision 1.55  2002/02/26 15:24:53  rwahl
+ *     Fix: no link with manual configuration (#10673). The previous fix for
+ *     #10639 was removed. So for RLMT mode = CLS the RLMT may switch to
+ *     misconfigured port. It should not occur for the other RLMT modes.
+ *
+ *     Revision 1.54  2002/01/18 16:52:52  rwahl
+ *     Editorial corrections.
+ *
+ *     Revision 1.53  2001/11/20 09:19:58  rwahl
+ *     Reworked bugfix #10639 (no dependency to RLMT mode).
+ *
+ *     Revision 1.52  2001/10/26 07:52:23  afischer
+ *     Port switching bug in `check local link` mode
+ *
+ *     Revision 1.51  2001/02/09 12:26:38  cgoos
+ *     Inserted #ifdef DIAG for half duplex workaround timer.
+ *
+ *     Revision 1.50  2001/02/07 07:56:40  rassmann
+ *     Corrected copyright.
+ *
+ *     Revision 1.49  2001/01/31 15:32:18  gklug
+ *     fix: problem with autosensing an SR8800 switch
+ *     add: counter for autoneg timeouts
+ *
+ *     Revision 1.48  2000/11/09 11:30:10  rassmann
+ *     WA: Waiting after releasing reset until BCom chip is accessible.
+ *
+ *     Revision 1.47  2000/10/18 12:22:40  cgoos
+ *     Added workaround for half duplex hangup.
+ *
+ *     Revision 1.46  2000/08/10 11:28:00  rassmann
+ *     Editorial changes.
+ *     Preserving 32-bit alignment in structs for the adapter context.
+ *
+ *     Revision 1.45  1999/11/22 13:56:19  cgoos
+ *     Changed license header to GPL.
+ *
+ *     Revision 1.44  1999/10/26 07:34:15  malthoff
+ *     The define SK_LNK_ON has been lost in v1.41.
+ *
+ *     Revision 1.43  1999/10/06 09:30:16  cgoos
+ *     Changed SK_XM_THR_JUMBO.
+ *
+ *     Revision 1.42  1999/09/16 12:58:26  cgoos
+ *     Changed SK_LED_STANDY macro to be independent of HW link sync.
+ *
+ *     Revision 1.41  1999/07/30 06:56:14  malthoff
+ *     Correct comment for SK_MS_STAT_UNSET.
+ *
+ *     Revision 1.40  1999/05/27 13:38:46  cgoos
+ *     Added SK_BMU_TX_WM.
+ *     Made SK_BMU_TX_WM and SK_BMU_RX_WM user-definable.
+ *     Changed XMAC Tx treshold to max. values.
+ *
+ *     Revision 1.39  1999/05/20 14:35:26  malthoff
+ *     Remove prototypes for SkGeLinkLED().
+ *
+ *     Revision 1.38  1999/05/19 11:59:12  cgoos
+ *     Added SK_MS_CAP_INDETERMINATED define.
+ *
+ *     Revision 1.37  1999/05/19 07:32:33  cgoos
+ *     Changes for 1000Base-T.
+ *     LED-defines for HWAC_LINK_LED macro.
+ *
+ *     Revision 1.36  1999/04/08 14:00:24  gklug
+ *     add:Port struct field PLinkResCt
+ *
+ *     Revision 1.35  1999/03/25 07:43:07  malthoff
+ *     Add error string for SKERR_HWI_E018MSG.
+ *
+ *     Revision 1.34  1999/03/12 16:25:57  malthoff
+ *     Remove PPollRxD and PPollTxD.
+ *     Add SKERR_HWI_E017MSG. and SK_DPOLL_MAX.
+ *
+ *     Revision 1.33  1999/03/12 13:34:41  malthoff
+ *     Add Autonegotiation error codes.
+ *     Change defines for parameter Mode in SkXmSetRxCmd().
+ *     Replace __STDC__ by SK_KR_PROTO.
+ *
+ *     Revision 1.32  1999/01/25 14:40:20  mhaveman
+ *     Added new return states for the virtual management port if multiple
+ *     ports are active but differently configured.
+ *
+ *     Revision 1.31  1998/12/11 15:17:02  gklug
+ *     add: Link partnet autoneg states : Unknown Manual and Auto-negotiation
+ *
+ *     Revision 1.30  1998/12/07 12:17:04  gklug
+ *     add: Link Partner auto-negotiation flag
+ *
+ *     Revision 1.29  1998/12/01 10:54:42  gklug
+ *     add: variables for XMAC Errata
+ *
+ *     Revision 1.28  1998/12/01 10:14:15  gklug
+ *     add: PIsave saves the Interrupt status word
+ *
+ *     Revision 1.27  1998/11/26 15:24:52  mhaveman
+ *     Added link status states SK_LMODE_STAT_AUTOHALF and
+ *     SK_LMODE_STAT_AUTOFULL which are used by PNMI.
+ *
+ *     Revision 1.26  1998/11/26 14:53:01  gklug
+ *     add:autoNeg Timeout variable
+ *
+ *     Revision 1.25  1998/11/26 08:58:50  gklug
+ *     add: Link Mode configuration (AUTO Sense mode)
+ *
+ *     Revision 1.24  1998/11/24 13:30:27  gklug
+ *     add: PCheckPar to port struct
+ *
+ *     Revision 1.23  1998/11/18 13:23:26  malthoff
+ *     Add SK_PKT_TO_MAX.
+ *
+ *     Revision 1.22  1998/11/18 13:19:54  gklug
+ *     add: PPrevShorts and PLinkBroken to port struct for WA XMAC Errata #C1
+ *
+ *     Revision 1.21  1998/10/26 08:02:57  malthoff
+ *     Add GIRamOffs.
+ *
+ *     Revision 1.20  1998/10/19 07:28:37  malthoff
+ *     Add prototype for SkGeInitRamIface().
+ *
+ *     Revision 1.19  1998/10/14 14:47:48  malthoff
+ *     SK_TIMER should not be defined for Diagnostics.
+ *     Add SKERR_HWI_E015MSG and SKERR_HWI_E016MSG.
+ *
+ *     Revision 1.18  1998/10/14 14:00:03  gklug
+ *     add: timer to port struct for workaround of Errata #2
+ *
+ *     Revision 1.17  1998/10/14 11:23:09  malthoff
+ *     Add prototype for SkXmAutoNegDone().
+ *     Fix SkXmSetRxCmd() prototype statement.
+ *
+ *     Revision 1.16  1998/10/14 05:42:29  gklug
+ *     add: HWLinkUp flag to Port struct
+ *
+ *     Revision 1.15  1998/10/09 08:26:33  malthoff
+ *     Rename SK_RB_ULPP_B to SK_RB_LLPP_B.
+ *
+ *     Revision 1.14  1998/10/09 07:11:13  malthoff
+ *     bug fix: SK_FACT_53 is 85 not 117.
+ *     Rework time out init values.
+ *     Add GIPortUsage and corresponding defines.
+ *     Add some error log messages.
+ *
+ *     Revision 1.13  1998/10/06 14:13:14  malthoff
+ *     Add prototype for SkGeLoadLnkSyncCnt().
+ *
+ *     Revision 1.12  1998/10/05 11:29:53  malthoff
+ *     bug fix: A comment was not closed.
+ *
+ *     Revision 1.11  1998/10/05 08:01:59  malthoff
+ *     Add default Timeout- Threshold- and
+ *     Watermark constants. Add QRam start and end
+ *     variables. Also add vars to store the polling
+ *     mode and receive command. Add new Error Log
+ *     Messages and function prototypes.
+ *
+ *     Revision 1.10  1998/09/28 13:34:48  malthoff
+ *     Add mode bits for LED functions.
+ *     Move Autoneg and Flow Ctrl bits from shgesirq.h
+ *     Add the required Error Log Entries
+ *     and Function Prototypes.
+ *
+ *     Revision 1.9  1998/09/16 14:38:41  malthoff
+ *     Rework the SK_LNK_xxx defines.
+ *     Add error log message defines.
+ *     Add prototypes for skxmac2.c
+ *
+ *     Revision 1.8  1998/09/11 05:29:18  gklug
+ *     add: init state of a port
+ *
+ *     Revision 1.7  1998/09/08 08:35:52  gklug
+ *     add: defines of the Init Levels
+ *
+ *     Revision 1.6  1998/09/03 13:48:42  gklug
+ *     add: Link strati, capabilities to Port struct
+ *
+ *     Revision 1.5  1998/09/03 13:30:59  malthoff
+ *     Add SK_LNK_BLINK and SK_LNK_PERM.
+ *
+ *     Revision 1.4  1998/09/03 09:55:31  malthoff
+ *     Add constants for parameters Dir and RstMode
+ *     when calling SkGeStopPort().
+ *     Rework the prototype section.
+ *     Add Queue Address offsets PRxQOff, PXsQOff, and PXaQOff.
+ *     Remove Ioc with IoC.
+ *
+ *     Revision 1.3  1998/08/19 09:11:54  gklug
+ *     fix: struct are removed from c-source (see CCC)
+ *     add: typedefs for all structs
+ *
+ *     Revision 1.2  1998/07/28 12:38:26  malthoff
+ *     The prototypes got the parameter 'IoC'.
+ *
+ *     Revision 1.1  1998/07/23 09:50:24  malthoff
+ *     Created.
+ *
+ ******************************************************************************/
+
+#ifndef __INC_SKGEINIT_H_
+#define __INC_SKGEINIT_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+/* defines ********************************************************************/
+
+/* modifying Link LED behaviour (used with SkGeLinkLED()) */
+#define SK_LNK_OFF             LED_OFF
+#define SK_LNK_ON              (LED_ON | LED_BLK_OFF | LED_SYNC_OFF)
+#define SK_LNK_BLINK   (LED_ON | LED_BLK_ON  | LED_SYNC_ON)
+#define SK_LNK_PERM            (LED_ON | LED_BLK_OFF | LED_SYNC_ON)
+#define SK_LNK_TST             (LED_ON | LED_BLK_ON  | LED_SYNC_OFF)
+
+/* parameter 'Mode' when calling SK_HWAC_LINK_LED() */
+#define SK_LED_OFF             LED_OFF
+#define SK_LED_ACTIVE  (LED_ON | LED_BLK_OFF | LED_SYNC_OFF)
+#define SK_LED_STANDBY (LED_ON | LED_BLK_ON  | LED_SYNC_OFF)
+
+/* addressing LED Registers in SkGeXmitLED() */
+#define XMIT_LED_INI   0
+#define XMIT_LED_CNT   (RX_LED_VAL - RX_LED_INI)
+#define XMIT_LED_CTRL  (RX_LED_CTRL- RX_LED_INI)
+#define XMIT_LED_TST   (RX_LED_TST - RX_LED_INI)
+
+/* parameter 'Mode' when calling SkGeXmitLED() */
+#define SK_LED_DIS     0
+#define SK_LED_ENA     1
+#define SK_LED_TST     2
+
+/* Counter and Timer constants, for a host clock of 62.5 MHz */
+#define SK_XMIT_DUR            0x002faf08L             /*  50 ms */
+#define SK_BLK_DUR             0x01dcd650L             /* 500 ms */
+
+#define SK_DPOLL_DEF   0x00ee6b28L             /* 250 ms at 62.5 MHz */
+
+#define SK_DPOLL_MAX   0x00ffffffL             /* 268 ms at 62.5 MHz */
+                                                                               /* 215 ms at 78.12 MHz */
+
+#define SK_FACT_62             100                     /* is given in percent */
+#define SK_FACT_53              85         /* on GENESIS:      53.12 MHz */
+#define SK_FACT_78             125                     /* on YUKON:    78.12 MHz */
+
+/* Timeout values */
+#define SK_MAC_TO_53   72                      /* MAC arbiter timeout */
+#define SK_PKT_TO_53   0x2000          /* Packet arbiter timeout */
+#define SK_PKT_TO_MAX  0xffff          /* Maximum value */
+#define SK_RI_TO_53            36                      /* RAM interface timeout */
+
+#define SK_PHY_ACC_TO  600000          /* PHY access timeout */
+
+/* RAM Buffer High Pause Threshold values */
+#define SK_RB_ULPP             ( 8 * 1024)     /* Upper Level in kB/8 */
+#define SK_RB_LLPP_S   (10 * 1024)     /* Lower Level for small Queues */
+#define SK_RB_LLPP_B   (16 * 1024)     /* Lower Level for big Queues */
+
+#ifndef SK_BMU_RX_WM
+#define SK_BMU_RX_WM   0x600           /* BMU Rx Watermark */
+#endif
+#ifndef SK_BMU_TX_WM
+#define SK_BMU_TX_WM   0x600           /* BMU Tx Watermark */
+#endif
+
+/* XMAC II Rx High Watermark */
+#define SK_XM_RX_HI_WM 0x05aa          /* 1450 */
+
+/* XMAC II Tx Threshold */
+#define SK_XM_THR_REDL 0x01fb          /* .. for redundant link usage */
+#define SK_XM_THR_SL   0x01fb          /* .. for single link adapters */
+#define SK_XM_THR_MULL 0x01fb          /* .. for multiple link usage */
+#define SK_XM_THR_JUMBO        0x03fc          /* .. for jumbo frame usage */
+
+/* values for GIPortUsage */
+#define SK_RED_LINK            1               /* redundant link usage */
+#define SK_MUL_LINK            2               /* multiple link usage */
+#define SK_JUMBO_LINK  3               /* driver uses jumbo frames */
+
+/* Minimum RAM Buffer Rx Queue Size */
+#define SK_MIN_RXQ_SIZE        16              /* 16 kB */
+
+/* Minimum RAM Buffer Tx Queue Size */
+#define SK_MIN_TXQ_SIZE        16              /* 16 kB */
+
+/* Queue Size units */
+#define QZ_UNITS               0x7
+#define QZ_STEP                        8
+
+/* Percentage of queue size from whole memory */
+/* 80 % for receive */
+#define RAM_QUOTA_RX   80L
+/* 0% for sync transfer */
+#define        RAM_QUOTA_SYNC  0L
+/* the rest (20%) is taken for async transfer */
+
+/* Get the rounded queue size in Bytes in 8k steps */
+#define ROUND_QUEUE_SIZE(SizeInBytes)                                  \
+       ((((unsigned long) (SizeInBytes) + (QZ_STEP*1024L)-1) / 1024) & \
+       ~(QZ_STEP-1))
+
+/* Get the rounded queue size in KBytes in 8k steps */
+#define ROUND_QUEUE_SIZE_KB(Kilobytes) \
+       ROUND_QUEUE_SIZE((Kilobytes) * 1024L)
+
+/* Types of RAM Buffer Queues */
+#define SK_RX_SRAM_Q   1       /* small receive queue */
+#define SK_RX_BRAM_Q   2       /* big receive queue */
+#define SK_TX_RAM_Q            3       /* small or big transmit queue */
+
+/* parameter 'Dir' when calling SkGeStopPort() */
+#define SK_STOP_TX     1       /* Stops the transmit path, resets the XMAC */
+#define SK_STOP_RX     2       /* Stops the receive path */
+#define SK_STOP_ALL    3       /* Stops Rx and Tx path, resets the XMAC */
+
+/* parameter 'RstMode' when calling SkGeStopPort() */
+#define SK_SOFT_RST    1       /* perform a software reset */
+#define SK_HARD_RST    2       /* perform a hardware reset */
+
+/* Init Levels */
+#define SK_INIT_DATA   0        /* Init level 0: init data structures */
+#define SK_INIT_IO             1       /* Init level 1: init with IOs */
+#define SK_INIT_RUN            2       /* Init level 2: init for run time */
+
+/* Link Mode Parameter */
+#define SK_LMODE_HALF          1       /* Half Duplex Mode */
+#define SK_LMODE_FULL          2       /* Full Duplex Mode */
+#define SK_LMODE_AUTOHALF      3       /* AutoHalf Duplex Mode */
+#define SK_LMODE_AUTOFULL      4       /* AutoFull Duplex Mode */
+#define SK_LMODE_AUTOBOTH      5       /* AutoBoth Duplex Mode */
+#define SK_LMODE_AUTOSENSE     6       /* configured mode auto sensing */
+#define SK_LMODE_INDETERMINATED        7       /* indeterminated */
+
+/* Auto-negotiation timeout in 100ms granularity */
+#define SK_AND_MAX_TO          6       /* Wait 600 msec before link comes up */
+
+/* Auto-negotiation error codes */
+#define SK_AND_OK                      0        /* no error */
+#define SK_AND_OTHER           1       /* other error than below */
+#define SK_AND_DUP_CAP         2       /* Duplex capabilities error */
+
+
+/* Link Speed Capabilities */
+#define SK_LSPEED_CAP_AUTO                     (1<<0)  /* Automatic resolution */
+#define SK_LSPEED_CAP_10MBPS           (1<<1)  /* 10 Mbps */
+#define SK_LSPEED_CAP_100MBPS          (1<<2)  /* 100 Mbps */
+#define SK_LSPEED_CAP_1000MBPS         (1<<3)  /* 1000 Mbps */
+#define SK_LSPEED_CAP_INDETERMINATED (1<<4) /* indeterminated */
+
+/* Link Speed Parameter */
+#define SK_LSPEED_AUTO                         1       /* Automatic resolution */
+#define SK_LSPEED_10MBPS                       2       /* 10 Mbps */
+#define SK_LSPEED_100MBPS                      3       /* 100 Mbps */
+#define SK_LSPEED_1000MBPS                     4       /* 1000 Mbps */
+#define SK_LSPEED_INDETERMINATED       5       /* indeterminated */
+
+/* Link Speed Current State */
+#define SK_LSPEED_STAT_UNKNOWN         1
+#define SK_LSPEED_STAT_10MBPS          2
+#define SK_LSPEED_STAT_100MBPS         3
+#define SK_LSPEED_STAT_1000MBPS                4
+#define SK_LSPEED_STAT_INDETERMINATED 5
+
+
+/* Link Capability Parameter */
+#define SK_LMODE_CAP_HALF              (1<<0)  /* Half Duplex Mode */
+#define SK_LMODE_CAP_FULL              (1<<1)  /* Full Duplex Mode */
+#define SK_LMODE_CAP_AUTOHALF  (1<<2)  /* AutoHalf Duplex Mode */
+#define SK_LMODE_CAP_AUTOFULL  (1<<3)  /* AutoFull Duplex Mode */
+#define SK_LMODE_CAP_INDETERMINATED (1<<4) /* indeterminated */
+
+/* Link Mode Current State */
+#define SK_LMODE_STAT_UNKNOWN  1       /* Unknown Duplex Mode */
+#define SK_LMODE_STAT_HALF             2       /* Half Duplex Mode */
+#define SK_LMODE_STAT_FULL             3       /* Full Duplex Mode */
+#define SK_LMODE_STAT_AUTOHALF 4       /* Half Duplex Mode obtained by Auto-Neg */
+#define SK_LMODE_STAT_AUTOFULL 5       /* Full Duplex Mode obtained by Auto-Neg */
+#define SK_LMODE_STAT_INDETERMINATED 6 /* indeterminated */
+
+/* Flow Control Mode Parameter (and capabilities) */
+#define SK_FLOW_MODE_NONE              1       /* No Flow-Control */
+#define SK_FLOW_MODE_LOC_SEND  2       /* Local station sends PAUSE */
+#define SK_FLOW_MODE_SYMMETRIC 3       /* Both stations may send PAUSE */
+#define SK_FLOW_MODE_SYM_OR_REM        4       /* Both stations may send PAUSE or
+                                        * just the remote station may send PAUSE
+                                        */
+#define SK_FLOW_MODE_INDETERMINATED 5  /* indeterminated */
+
+/* Flow Control Status Parameter */
+#define SK_FLOW_STAT_NONE              1       /* No Flow Control */
+#define SK_FLOW_STAT_REM_SEND  2       /* Remote Station sends PAUSE */
+#define SK_FLOW_STAT_LOC_SEND  3       /* Local station sends PAUSE */
+#define SK_FLOW_STAT_SYMMETRIC 4       /* Both station may send PAUSE */
+#define SK_FLOW_STAT_INDETERMINATED 5  /* indeterminated */
+
+/* Master/Slave Mode Capabilities */
+#define SK_MS_CAP_AUTO         (1<<0)  /* Automatic resolution */
+#define SK_MS_CAP_MASTER       (1<<1)  /* This station is master */
+#define SK_MS_CAP_SLAVE                (1<<2)  /* This station is slave */
+#define SK_MS_CAP_INDETERMINATED (1<<3)        /* indeterminated */
+
+/* Set Master/Slave Mode Parameter (and capabilities) */
+#define SK_MS_MODE_AUTO                1       /* Automatic resolution */
+#define SK_MS_MODE_MASTER      2       /* This station is master */
+#define SK_MS_MODE_SLAVE       3       /* This station is slave */
+#define SK_MS_MODE_INDETERMINATED 4    /* indeterminated */
+
+/* Master/Slave Status Parameter */
+#define SK_MS_STAT_UNSET       1       /* The M/S status is not set */
+#define SK_MS_STAT_MASTER      2       /* This station is Master */
+#define SK_MS_STAT_SLAVE       3       /* This station is Dlave */
+#define SK_MS_STAT_FAULT       4       /* M/S resolution failed */
+#define SK_MS_STAT_INDETERMINATED 5    /* indeterminated */
+
+/* parameter 'Mode' when calling SkXmSetRxCmd() */
+#define SK_STRIP_FCS_ON                (1<<0)  /* Enable  FCS stripping of Rx frames */
+#define SK_STRIP_FCS_OFF       (1<<1)  /* Disable FCS stripping of Rx frames */
+#define SK_STRIP_PAD_ON                (1<<2)  /* Enable  pad byte stripping of Rx fr */
+#define SK_STRIP_PAD_OFF       (1<<3)  /* Disable pad byte stripping of Rx fr */
+#define SK_LENERR_OK_ON                (1<<4)  /* Don't chk fr for in range len error */
+#define SK_LENERR_OK_OFF       (1<<5)  /* Check frames for in range len error */
+#define SK_BIG_PK_OK_ON                (1<<6)  /* Don't set Rx Error bit for big frames */
+#define SK_BIG_PK_OK_OFF       (1<<7)  /* Set Rx Error bit for big frames */
+#define SK_SELF_RX_ON          (1<<8)  /* Enable  Rx of own packets */
+#define SK_SELF_RX_OFF         (1<<9)  /* Disable Rx of own packets */
+
+/* parameter 'Para' when calling SkMacSetRxTxEn() */
+#define SK_MAC_LOOPB_ON                (1<<0)  /* Enable  MAC Loopback Mode */
+#define SK_MAC_LOOPB_OFF       (1<<1)  /* Disable MAC Loopback Mode */
+#define SK_PHY_LOOPB_ON                (1<<2)  /* Enable  PHY Loopback Mode */
+#define SK_PHY_LOOPB_OFF       (1<<3)  /* Disable PHY Loopback Mode */
+#define SK_PHY_FULLD_ON                (1<<4)  /* Enable  GMII Full Duplex */
+#define SK_PHY_FULLD_OFF       (1<<5)  /* Disable GMII Full Duplex */
+
+/* States of PState */
+#define SK_PRT_RESET   0        /* the port is reset */
+#define SK_PRT_STOP            1       /* the port is stopped (similar to SW reset) */
+#define SK_PRT_INIT            2       /* the port is initialized */
+#define SK_PRT_RUN             3       /* the port has an active link */
+
+/* Default receive frame limit for Workaround of XMAC Errata */
+#define SK_DEF_RX_WA_LIM       SK_CONSTU64(100)
+
+/* Link Partner Status */
+#define SK_LIPA_UNKNOWN        0        /* Link partner is in unknown state */
+#define SK_LIPA_MANUAL 1       /* Link partner is in detected manual state */
+#define SK_LIPA_AUTO   2       /* Link partner is in auto-negotiation state */
+
+/* Maximum Restarts before restart is ignored (3Com WA) */
+#define SK_MAX_LRESTART        3       /* Max. 3 times the link is restarted */
+
+/* Max. Auto-neg. timeouts before link detection in sense mode is reset */
+#define SK_MAX_ANEG_TO 10      /* Max. 10 times the sense mode is reset */
+
+/* structures *****************************************************************/
+
+/*
+ * MAC specific functions
+ */
+typedef struct s_GeMacFunc {
+       int  (*pFnMacUpdateStats)(SK_AC *pAC, SK_IOC IoC, unsigned int Port);
+       int  (*pFnMacStatistic)(SK_AC *pAC, SK_IOC IoC, unsigned int Port,
+                                                       SK_U16 StatAddr, SK_U32 *pVal);
+       int  (*pFnMacResetCounter)(SK_AC *pAC, SK_IOC IoC, unsigned int Port);
+       int  (*pFnMacOverflow)(SK_AC *pAC, SK_IOC IoC, unsigned int Port,
+                                                  SK_U16 IStatus, SK_U64 *pVal);
+} SK_GEMACFUNC;
+
+/*
+ * Port Structure
+ */
+typedef        struct s_GePort {
+#ifndef SK_DIAG
+       SK_TIMER        PWaTimer;       /* Workaround Timer */
+       SK_TIMER        HalfDupChkTimer;
+#endif /* SK_DIAG */
+       SK_U32  PPrevShorts;    /* Previous short Counter checking */
+       SK_U32  PPrevFcs;               /* Previous FCS Error Counter checking */
+       SK_U64  PPrevRx;                /* Previous RxOk Counter checking */
+       SK_U64  PRxLim;                 /* Previous RxOk Counter checking */
+       SK_U64  LastOctets;             /* For half duplex hang check */
+       int             PLinkResCt;             /* Link Restart Counter */
+       int             PAutoNegTimeOut;/* Auto-negotiation timeout current value */
+       int             PAutoNegTOCt;   /* Auto-negotiation Timeout Counter */
+       int             PRxQSize;               /* Port Rx Queue Size in kB */
+       int             PXSQSize;               /* Port Synchronous  Transmit Queue Size in kB */
+       int             PXAQSize;               /* Port Asynchronous Transmit Queue Size in kB */
+       SK_U32  PRxQRamStart;   /* Receive Queue RAM Buffer Start Address */
+       SK_U32  PRxQRamEnd;             /* Receive Queue RAM Buffer End Address */
+       SK_U32  PXsQRamStart;   /* Sync Tx Queue RAM Buffer Start Address */
+       SK_U32  PXsQRamEnd;             /* Sync Tx Queue RAM Buffer End Address */
+       SK_U32  PXaQRamStart;   /* Async Tx Queue RAM Buffer Start Address */
+       SK_U32  PXaQRamEnd;             /* Async Tx Queue RAM Buffer End Address */
+       SK_U32  PRxOverCnt;             /* Receive Overflow Counter */
+       int             PRxQOff;                /* Rx Queue Address Offset */
+       int             PXsQOff;                /* Synchronous Tx Queue Address Offset */
+       int             PXaQOff;                /* Asynchronous Tx Queue Address Offset */
+       int             PhyType;                /* PHY used on this port */
+       SK_U16  PhyId1;                 /* PHY Id1 on this port */
+       SK_U16  PhyAddr;                /* MDIO/MDC PHY address */
+       SK_U16  PIsave;                 /* Saved Interrupt status word */
+       SK_U16  PSsave;                 /* Saved PHY status word */
+       SK_BOOL PHWLinkUp;              /* The hardware Link is up (wiring) */
+       SK_BOOL PState;                 /* Is port initialized ? */
+       SK_BOOL PLinkBroken;    /* Is Link broken ? */
+       SK_BOOL PCheckPar;              /* Do we check for parity errors ? */
+       SK_BOOL HalfDupTimerActive;
+       SK_U8   PLinkCap;               /* Link Capabilities */
+       SK_U8   PLinkModeConf;  /* Link Mode configured */
+       SK_U8   PLinkMode;              /* Link Mode currently used */
+       SK_U8   PLinkModeStatus;/* Link Mode Status */
+       SK_U8   PLinkSpeedCap;  /* Link Speed Capabilities(10/100/1000 Mbps) */
+       SK_U8   PLinkSpeed;             /* configured Link Speed (10/100/1000 Mbps) */
+       SK_U8   PLinkSpeedUsed; /* current Link Speed (10/100/1000 Mbps) */
+       SK_U8   PFlowCtrlCap;   /* Flow Control Capabilities */
+       SK_U8   PFlowCtrlMode;  /* Flow Control Mode */
+       SK_U8   PFlowCtrlStatus;/* Flow Control Status */
+       SK_U8   PMSCap;                 /* Master/Slave Capabilities */
+       SK_U8   PMSMode;                /* Master/Slave Mode */
+       SK_U8   PMSStatus;              /* Master/Slave Status */
+       SK_U8   PAutoNegFail;   /* Auto-negotiation fail flag */
+       SK_U8   PLipaAutoNeg;   /* Auto-negotiation possible with Link Partner */
+       SK_U8   PCableLen;              /* Cable Length */
+       SK_U8   PMdiPairLen[4]; /* MDI[0..3] Pair Length */
+       SK_U8   PMdiPairSts[4]; /* MDI[0..3] Pair Diagnostic Status */
+} SK_GEPORT;
+
+/*
+ * Gigabit Ethernet Initialization Struct
+ * (has to be included in the adapter context)
+ */
+typedef        struct s_GeInit {
+       SK_U8           GIPciHwRev;             /* PCI HW Revision Number */
+       SK_U8           GIChipId;               /* Chip Identification Number */
+       SK_U8           GIChipRev;              /* Chip Revision Number */
+       SK_BOOL         GIGenesis;              /* Genesis adapter ? */
+       SK_BOOL         GICopperType;   /* Copper Type adapter ? */
+       SK_BOOL         GIPciSlot64;    /* 64-bit PCI Slot */
+       SK_BOOL         GIPciClock66;   /* 66 MHz PCI Clock */
+       SK_BOOL         GIVauxAvail;    /* VAUX available (YUKON) */
+       SK_BOOL         GIYukon32Bit;   /* 32-Bit YUKON adapter */
+       SK_BOOL         GIYukonLite;    /* YUKON-Lite chip */
+       int                     GIMacsFound;    /* Number of MACs found on this adapter */
+       int                     GIMacType;              /* MAC Type used on this adapter */
+       int                     GIHstClkFact;   /* Host Clock Factor (62.5 / HstClk * 100) */
+       int                     GIPortUsage;    /* Driver Port Usage */
+       int                     GILevel;                /* Initialization Level completed */
+       int                     GIRamSize;              /* The RAM size of the adapter in kB */
+       int                     GIWolOffs;              /* WOL Register Offset (HW-Bug in Rev. A) */
+       SK_U32          GIRamOffs;              /* RAM Address Offset for addr calculation */
+       SK_U32          GIPollTimerVal; /* Descr. Poll Timer Init Val (HstClk ticks) */
+       SK_GEPORT       GP[SK_MAX_MACS];/* Port Dependent Information */
+       SK_GEMACFUNC GIFunc;            /* MAC depedent functions */
+} SK_GEINIT;
+
+/*
+ * Error numbers and messages for skxmac2.c and skgeinit.c
+ */
+#define SKERR_HWI_E001         (SK_ERRBASE_HWINIT)
+#define SKERR_HWI_E001MSG      "SkXmClrExactAddr() has got illegal parameters"
+#define SKERR_HWI_E002         (SKERR_HWI_E001+1)
+#define SKERR_HWI_E002MSG      "SkGeInit(): Level 1 call missing"
+#define SKERR_HWI_E003         (SKERR_HWI_E002+1)
+#define SKERR_HWI_E003MSG      "SkGeInit() called with illegal init Level"
+#define SKERR_HWI_E004         (SKERR_HWI_E003+1)
+#define SKERR_HWI_E004MSG      "SkGeInitPort(): Queue Size illegal configured"
+#define SKERR_HWI_E005         (SKERR_HWI_E004+1)
+#define SKERR_HWI_E005MSG      "SkGeInitPort(): cannot init running ports"
+#define SKERR_HWI_E006         (SKERR_HWI_E005+1)
+#define SKERR_HWI_E006MSG      "SkGeMacInit(): PState does not match HW state"
+#define SKERR_HWI_E007         (SKERR_HWI_E006+1)
+#define SKERR_HWI_E007MSG      "SkXmInitDupMd() called with invalid Dup Mode"
+#define SKERR_HWI_E008         (SKERR_HWI_E007+1)
+#define SKERR_HWI_E008MSG      "SkXmSetRxCmd() called with invalid Mode"
+#define SKERR_HWI_E009         (SKERR_HWI_E008+1)
+#define SKERR_HWI_E009MSG      "SkGeCfgSync() called although PXSQSize zero"
+#define SKERR_HWI_E010         (SKERR_HWI_E009+1)
+#define SKERR_HWI_E010MSG      "SkGeCfgSync() called with invalid parameters"
+#define SKERR_HWI_E011         (SKERR_HWI_E010+1)
+#define SKERR_HWI_E011MSG      "SkGeInitPort(): Receive Queue Size too small"
+#define SKERR_HWI_E012         (SKERR_HWI_E011+1)
+#define SKERR_HWI_E012MSG      "SkGeInitPort(): invalid Queue Size specified"
+#define SKERR_HWI_E013         (SKERR_HWI_E012+1)
+#define SKERR_HWI_E013MSG      "SkGeInitPort(): cfg changed for running queue"
+#define SKERR_HWI_E014         (SKERR_HWI_E013+1)
+#define SKERR_HWI_E014MSG      "SkGeInitPort(): unknown GIPortUsage specified"
+#define SKERR_HWI_E015         (SKERR_HWI_E014+1)
+#define SKERR_HWI_E015MSG      "Illegal Link mode parameter"
+#define SKERR_HWI_E016         (SKERR_HWI_E015+1)
+#define SKERR_HWI_E016MSG      "Illegal Flow control mode parameter"
+#define SKERR_HWI_E017         (SKERR_HWI_E016+1)
+#define SKERR_HWI_E017MSG      "Illegal value specified for GIPollTimerVal"
+#define SKERR_HWI_E018         (SKERR_HWI_E017+1)
+#define SKERR_HWI_E018MSG      "FATAL: SkGeStopPort() does not terminate (Tx)"
+#define SKERR_HWI_E019         (SKERR_HWI_E018+1)
+#define SKERR_HWI_E019MSG      "Illegal Speed parameter"
+#define SKERR_HWI_E020         (SKERR_HWI_E019+1)
+#define SKERR_HWI_E020MSG      "Illegal Master/Slave parameter"
+#define SKERR_HWI_E021         (SKERR_HWI_E020+1)
+#define        SKERR_HWI_E021MSG       "MacUpdateStats(): cannot update statistic counter"
+#define        SKERR_HWI_E022          (SKERR_HWI_E021+1)
+#define        SKERR_HWI_E022MSG       "MacStatistic(): illegal statistic base address"
+#define SKERR_HWI_E023         (SKERR_HWI_E022+1)
+#define SKERR_HWI_E023MSG      "SkGeInitPort(): Transmit Queue Size too small"
+#define SKERR_HWI_E024         (SKERR_HWI_E023+1)
+#define SKERR_HWI_E024MSG      "FATAL: SkGeStopPort() does not terminate (Rx)"
+#define SKERR_HWI_E025         (SKERR_HWI_E024+1)
+#define SKERR_HWI_E025MSG      ""
+
+/* function prototypes ********************************************************/
+
+#ifndef        SK_KR_PROTO
+
+/*
+ * public functions in skgeinit.c
+ */
+extern void    SkGePollRxD(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       int             Port,
+       SK_BOOL PollRxD);
+
+extern void    SkGePollTxD(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       int             Port,
+       SK_BOOL PollTxD);
+
+extern void    SkGeYellowLED(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       int             State);
+
+extern int     SkGeCfgSync(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       int             Port,
+       SK_U32  IntTime,
+       SK_U32  LimCount,
+       int             SyncMode);
+
+extern void    SkGeLoadLnkSyncCnt(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       int             Port,
+       SK_U32  CntVal);
+
+extern void    SkGeStopPort(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       int             Port,
+       int             Dir,
+       int             RstMode);
+
+extern int     SkGeInit(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       int             Level);
+
+extern void    SkGeDeInit(
+       SK_AC   *pAC,
+       SK_IOC  IoC);
+
+extern int     SkGeInitPort(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       int             Port);
+
+extern void    SkGeXmitLED(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       int             Led,
+       int             Mode);
+
+extern void    SkGeInitRamIface(
+       SK_AC   *pAC,
+       SK_IOC  IoC);
+
+extern int     SkGeInitAssignRamToQueues(
+       SK_AC   *pAC,
+       int             ActivePort,
+       SK_BOOL DualNet);
+
+/*
+ * public functions in skxmac2.c
+ */
+extern void SkMacRxTxDisable(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       int             Port);
+
+extern void    SkMacSoftRst(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       int             Port);
+
+extern void    SkMacHardRst(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       int             Port);
+
+extern void    SkXmInitMac(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       int             Port);
+
+extern void    SkGmInitMac(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       int             Port);
+
+extern void SkMacInitPhy(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       int             Port,
+       SK_BOOL DoLoop);
+
+extern void SkMacIrqDisable(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       int             Port);
+
+extern void    SkMacFlushTxFifo(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       int             Port);
+
+extern void    SkMacFlushRxFifo(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       int             Port);
+
+extern void    SkMacIrq(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       int             Port);
+
+extern int     SkMacAutoNegDone(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       int             Port);
+
+extern void    SkMacAutoNegLipaPhy(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       int             Port,
+       SK_U16  IStatus);
+
+extern void  SkMacSetRxTxEn(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       int             Port,
+       int             Para);
+
+extern int  SkMacRxTxEnable(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       int             Port);
+
+extern void    SkMacPromiscMode(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       int             Port,
+       SK_BOOL Enable);
+
+extern void    SkMacHashing(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       int             Port,
+       SK_BOOL Enable);
+
+extern void    SkXmPhyRead(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       int             Port,
+       int             Addr,
+       SK_U16  *pVal);
+
+extern void    SkXmPhyWrite(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       int             Port,
+       int             Addr,
+       SK_U16  Val);
+
+extern void    SkGmPhyRead(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       int             Port,
+       int             Addr,
+       SK_U16  *pVal);
+
+extern void    SkGmPhyWrite(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       int             Port,
+       int             Addr,
+       SK_U16  Val);
+
+extern void    SkGePhyRead(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       int             Port,
+       int             Addr,
+       SK_U16  *pVal);
+
+extern void    SkGePhyWrite(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       int             Port,
+       int             Addr,
+       SK_U16  Val);
+
+extern void    SkXmClrExactAddr(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       int             Port,
+       int             StartNum,
+       int             StopNum);
+
+extern void    SkXmInitDupMd(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       int             Port);
+
+extern void    SkXmInitPauseMd(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       int             Port);
+
+extern void    SkXmAutoNegLipaXmac(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       int             Port,
+       SK_U16  IStatus);
+
+extern int SkXmUpdateStats(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       unsigned int Port);
+
+extern int SkGmUpdateStats(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       unsigned int Port);
+
+extern int SkXmMacStatistic(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       unsigned int Port,
+       SK_U16  StatAddr,
+       SK_U32  *pVal);
+
+extern int SkGmMacStatistic(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       unsigned int Port,
+       SK_U16  StatAddr,
+       SK_U32  *pVal);
+
+extern int SkXmResetCounter(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       unsigned int Port);
+
+extern int SkGmResetCounter(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       unsigned int Port);
+
+extern int SkXmOverflowStatus(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       unsigned int Port,
+       SK_U16  IStatus,
+       SK_U64  *pStatus);
+
+extern int SkGmOverflowStatus(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       unsigned int Port,
+       SK_U16  MacStatus,
+       SK_U64  *pStatus);
+
+extern int SkGmCableDiagStatus(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       int             Port,
+       SK_BOOL StartTest);
+
+#ifdef SK_DIAG
+extern void    SkMacSetRxCmd(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       int             Port,
+       int             Mode);
+extern void    SkMacCrcGener(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       int             Port,
+       SK_BOOL Enable);
+extern void    SkMacTimeStamp(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       int             Port,
+       SK_BOOL Enable);
+extern void    SkXmSendCont(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       int             Port,
+       SK_BOOL Enable);
+#endif /* SK_DIAG */
+
+#else  /* SK_KR_PROTO */
+
+/*
+ * public functions in skgeinit.c
+ */
+extern void    SkGePollRxD();
+extern void    SkGePollTxD();
+extern void    SkGeYellowLED();
+extern int     SkGeCfgSync();
+extern void    SkGeLoadLnkSyncCnt();
+extern void    SkGeStopPort();
+extern int     SkGeInit();
+extern void    SkGeDeInit();
+extern int     SkGeInitPort();
+extern void    SkGeXmitLED();
+extern void    SkGeInitRamIface();
+extern int     SkGeInitAssignRamToQueues();
+
+/*
+ * public functions in skxmac2.c
+ */
+extern void SkMacRxTxDisable();
+extern void    SkMacSoftRst();
+extern void    SkMacHardRst();
+extern void SkMacInitPhy();
+extern int  SkMacRxTxEnable();
+extern void SkMacPromiscMode();
+extern void SkMacHashing();
+extern void SkMacIrqDisable();
+extern void    SkMacFlushTxFifo();
+extern void    SkMacFlushRxFifo();
+extern void    SkMacIrq();
+extern int     SkMacAutoNegDone();
+extern void    SkMacAutoNegLipaPhy();
+extern void SkMacSetRxTxEn();
+extern void    SkGePhyRead();
+extern void    SkGePhyWrite();
+extern void    SkXmInitMac();
+extern void    SkXmPhyRead();
+extern void    SkXmPhyWrite();
+extern void    SkGmInitMac();
+extern void    SkGmPhyRead();
+extern void    SkGmPhyWrite();
+extern void    SkXmClrExactAddr();
+extern void    SkXmInitDupMd();
+extern void    SkXmInitPauseMd();
+extern void    SkXmAutoNegLipaXmac();
+extern int     SkXmUpdateStats();
+extern int     SkGmUpdateStats();
+extern int     SkXmMacStatistic();
+extern int     SkGmMacStatistic();
+extern int     SkXmResetCounter();
+extern int     SkGmResetCounter();
+extern int     SkXmOverflowStatus();
+extern int     SkGmOverflowStatus();
+extern int     SkGmCableDiagStatus();
+
+#ifdef SK_DIAG
+extern void    SkMacSetRxCmd();
+extern void    SkMacCrcGener();
+extern void    SkMacTimeStamp();
+extern void    SkXmSendCont();
+#endif /* SK_DIAG */
+
+#endif /* SK_KR_PROTO */
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* __INC_SKGEINIT_H_ */
diff -Naur u-boot-2009.03_orig/drivers/net/sk98lin/h/skgepnm2.h u-boot-2009.03/drivers/net/sk98lin/h/skgepnm2.h
--- u-boot-2009.03_orig/drivers/net/sk98lin/h/skgepnm2.h        2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/drivers/net/sk98lin/h/skgepnm2.h     2009-03-31 14:54:45.909169600 -0700
@@ -1,462 +1,465 @@
-/*****************************************************************************
- *
- * Name:       skgepnm2.h
- * Project:    GEnesis, PCI Gigabit Ethernet Adapter
- * Version:    $Revision: 1.34 $
- * Date:       $Date: 2002/12/16 09:05:18 $
- * Purpose:    Defines for Private Network Management Interface
- *
- ****************************************************************************/
-
-/******************************************************************************
- *
- *     (C)Copyright 1998-2001 SysKonnect GmbH.
- *
- *     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.
- *
- *     The information in this file is provided "AS IS" without warranty.
- *
- ******************************************************************************/
-
-/*****************************************************************************
- *
- * History:
- *
- *     $Log: skgepnm2.h,v $
- *     Revision 1.34  2002/12/16 09:05:18  tschilli
- *     Code for VCT handling added.
- *
- *     Revision 1.33  2002/09/10 09:00:03  rwahl
- *     Adapted boolean definitions according sktypes.
- *
- *     Revision 1.32  2002/08/09 09:47:01  rwahl
- *     Added write-only flag to oid access defines.
- *     Editorial changes.
- *
- *     Revision 1.31  2002/07/17 19:23:18  rwahl
- *     - Replaced MAC counter definitions by enumeration.
- *     - Added definition SK_PNMI_MAC_TYPES.
- *     - Added chipset defnition for Yukon.
- *
- *     Revision 1.30  2001/02/06 10:03:41  mkunz
- *     - Pnmi V4 dual net support added. Interface functions and macros extended
- *     - Vpd bug fixed
- *     - OID_SKGE_MTU added
- *
- *     Revision 1.29  2001/01/22 13:41:37  rassmann
- *     Supporting two nets on dual-port adapters.
- *
- *     Revision 1.28  2000/08/03 15:12:48  rwahl
- *     - Additional comment for MAC statistic data structure.
- *
- *     Revision 1.27  2000/08/01 16:10:18  rwahl
- *     - Added mac statistic data structure for StatRxLongFrame counter.
- *
- *     Revision 1.26  2000/03/31 13:51:34  rwahl
- *     Added SK_UPTR cast to offset calculation for PNMI struct fields;
- *     missing cast caused compiler warnings by Win64 compiler.
- *
- *     Revision 1.25  1999/11/22 13:57:41  cgoos
- *     Changed license header to GPL.
- *     Allowing overwrite for SK_PNMI_STORE/_READ defines.
- *
- *     Revision 1.24  1999/04/13 15:11:11  mhaveman
- *     Changed copyright.
- *
- *     Revision 1.23  1999/01/28 15:07:12  mhaveman
- *     Changed default threshold for port switches per hour from 10
- *     to 240 which means 4 switches per minute. This fits better
- *     the granularity of 32 for the port switch estimate
- *     counter.
- *
- *     Revision 1.22  1999/01/05 12:52:30  mhaveman
- *     Removed macro SK_PNMI_MICRO_SEC.
- *
- *     Revision 1.21  1999/01/05 12:50:34  mhaveman
- *     Enlarged macro definition SK_PNMI_HUNDREDS_SEC() so that no 64-bit
- *     arithmetic is necessary if SK_TICKS_PER_SEC is 100.
- *
- *     Revision 1.20  1998/12/09 14:02:53  mhaveman
- *     Defined macro SK_PNMI_DEF_RLMT_CHG_THRES for default port switch
- *     threshold.
- *
- *     Revision 1.19  1998/12/03 11:28:41  mhaveman
- *     Removed SK_PNMI_CHECKPTR macro.
- *
- *     Revision 1.18  1998/12/03 11:21:00  mhaveman
- *     -Added pointer check macro SK_PNMI_CHECKPTR
- *     -Added macros SK_PNMI_VPD_ARR_SIZE and SK_PNMI_VPD_STR_SIZE for
- *      VPD key evaluation.
- *
- *     Revision 1.17  1998/11/20 13:20:33  mhaveman
- *     Fixed bug in SK_PNMI_SET_STAT macro. ErrorStatus was not correctly set.
- *
- *     Revision 1.16  1998/11/20 08:08:49  mhaveman
- *     Macro SK_PNMI_CHECKFLAGS has got a if clause.
- *
- *     Revision 1.15  1998/11/03 13:53:40  mhaveman
- *     Fixed alignment problem in macor SK_PNMI_SET_STAT macro.
- *
- *     Revision 1.14  1998/10/30 15:50:13  mhaveman
- *     Added macro SK_PNMI_MICRO_SEC()
- *
- *     Revision 1.13  1998/10/30 12:32:20  mhaveman
- *     Added forgotten cast in SK_PNMI_READ_U32 macro.
- *
- *     Revision 1.12  1998/10/29 15:40:26  mhaveman
- *     -Changed SK_PNMI_TRAP_SENSOR_LEN because SensorDescr has now
- *      variable string length.
- *     -Defined SK_PNMI_CHECKFLAGS macro
- *
- *     Revision 1.11  1998/10/29 08:53:34  mhaveman
- *     Removed SK_PNMI_RLM_XXX table indexed because these counters need
- *     not been saved over XMAC resets.
- *
- *     Revision 1.10  1998/10/28 08:48:20  mhaveman
- *     -Added macros for storage according to alignment
- *     -Changed type of Instance to SK_U32 because of VPD
- *     -Removed trap structures. Not needed because of alignment problem
- *     -Changed type of Action form SK_U8 to int
- *
- *     Revision 1.9  1998/10/21 13:34:45  mhaveman
- *     Shit, mismatched calculation of SK_PNMI_HUNDREDS_SEC. Corrected.
- *
- *     Revision 1.8  1998/10/21 13:24:58  mhaveman
- *     Changed calculation of hundreds of seconds.
- *
- *     Revision 1.7  1998/10/20 07:31:41  mhaveman
- *     Made type changes to unsigned int where possible.
- *
- *     Revision 1.6  1998/09/04 17:04:05  mhaveman
- *     Added Sync counters to offset storage to provided settled values on
- *     port switch.
- *
- *     Revision 1.5  1998/09/04 12:45:35  mhaveman
- *     Removed dummies for SK_DRIVER_ macros. They should be added by driver
- *     writer in skdrv2nd.h.
- *
- *     Revision 1.4  1998/09/04 11:59:50  mhaveman
- *     Everything compiles now. Driver Macros for counting still missing.
- *
- *     Revision 1.3  1998/08/24 12:01:35  mhaveman
- *     Intermediate state.
- *
- *     Revision 1.2  1998/08/17 07:51:40  mhaveman
- *     Intermediate state.
- *
- *     Revision 1.1  1998/08/11 09:08:40  mhaveman
- *     Intermediate state.
- *
- ****************************************************************************/
-
-#ifndef _SKGEPNM2_H_
-#define _SKGEPNM2_H_
-
-/*
- * General definitions
- */
-#define SK_PNMI_CHIPSET_XMAC   1       /* XMAC11800FP */
-#define SK_PNMI_CHIPSET_YUKON  2       /* YUKON */
-
-#define        SK_PNMI_BUS_PCI         1       /* PCI bus*/
-
-/*
- * Actions
- */
-#define SK_PNMI_ACT_IDLE               1
-#define SK_PNMI_ACT_RESET              2
-#define SK_PNMI_ACT_SELFTEST   3
-#define SK_PNMI_ACT_RESETCNT   4
-
-/*
- * VPD releated defines
- */
-
-#define SK_PNMI_VPD_RW         1
-#define SK_PNMI_VPD_RO         2
-
-#define SK_PNMI_VPD_OK                 0
-#define SK_PNMI_VPD_NOTFOUND   1
-#define SK_PNMI_VPD_CUT                        2
-#define SK_PNMI_VPD_TIMEOUT            3
-#define SK_PNMI_VPD_FULL               4
-#define SK_PNMI_VPD_NOWRITE            5
-#define SK_PNMI_VPD_FATAL              6
-
-#define SK_PNMI_VPD_IGNORE     0
-#define SK_PNMI_VPD_CREATE     1
-#define SK_PNMI_VPD_DELETE     2
-
-
-/*
- * RLMT related defines
- */
-#define SK_PNMI_DEF_RLMT_CHG_THRES     240     /* 4 changes per minute */
-
-
-/*
- * VCT internal status values
- */
-#define SK_PNMI_VCT_PENDING    32
-#define SK_PNMI_VCT_TEST_DONE  64
-#define SK_PNMI_VCT_LINK       128
-
-/*
- * Internal table definitions
- */
-#define SK_PNMI_GET            0
-#define SK_PNMI_PRESET 1
-#define SK_PNMI_SET            2
-
-#define SK_PNMI_RO             0
-#define SK_PNMI_RW             1
-#define SK_PNMI_WO             2
-
-typedef struct s_OidTabEntry {
-       SK_U32                  Id;
-       SK_U32                  InstanceNo;
-       unsigned int    StructSize;
-       unsigned int    Offset;
-       int                             Access;
-       int                             (* Func)(SK_AC *pAc, SK_IOC pIo, int action,
-                                                        SK_U32 Id, char* pBuf, unsigned int* pLen,
-                                                        SK_U32 Instance, unsigned int TableIndex,
-                                                        SK_U32 NetNumber);
-       SK_U16                  Param;
-} SK_PNMI_TAB_ENTRY;
-
-
-/*
- * Trap lengths
- */
-#define SK_PNMI_TRAP_SIMPLE_LEN                        17
-#define SK_PNMI_TRAP_SENSOR_LEN_BASE   46
-#define SK_PNMI_TRAP_RLMT_CHANGE_LEN   23
-#define SK_PNMI_TRAP_RLMT_PORT_LEN             23
-
-/*
- * Number of MAC types supported
- */
-#define SK_PNMI_MAC_TYPES      (SK_MAC_GMAC + 1)
-
-/*
- * MAC statistic data list (overall set for MAC types used)
- */
-enum SK_MACSTATS {
-       SK_PNMI_HTX                             = 0,
-       SK_PNMI_HTX_OCTET,
-       SK_PNMI_HTX_OCTETHIGH   = SK_PNMI_HTX_OCTET,
-       SK_PNMI_HTX_OCTETLOW,
-       SK_PNMI_HTX_BROADCAST,
-       SK_PNMI_HTX_MULTICAST,
-       SK_PNMI_HTX_UNICAST,
-       SK_PNMI_HTX_BURST,
-       SK_PNMI_HTX_PMACC,
-       SK_PNMI_HTX_MACC,
-       SK_PNMI_HTX_COL,
-       SK_PNMI_HTX_SINGLE_COL,
-       SK_PNMI_HTX_MULTI_COL,
-       SK_PNMI_HTX_EXCESS_COL,
-       SK_PNMI_HTX_LATE_COL,
-       SK_PNMI_HTX_DEFFERAL,
-       SK_PNMI_HTX_EXCESS_DEF,
-       SK_PNMI_HTX_UNDERRUN,
-       SK_PNMI_HTX_CARRIER,
-       SK_PNMI_HTX_UTILUNDER,
-       SK_PNMI_HTX_UTILOVER,
-       SK_PNMI_HTX_64,
-       SK_PNMI_HTX_127,
-       SK_PNMI_HTX_255,
-       SK_PNMI_HTX_511,
-       SK_PNMI_HTX_1023,
-       SK_PNMI_HTX_MAX,
-       SK_PNMI_HTX_LONGFRAMES,
-       SK_PNMI_HTX_SYNC,
-       SK_PNMI_HTX_SYNC_OCTET,
-       SK_PNMI_HTX_RESERVED,
-
-       SK_PNMI_HRX,
-       SK_PNMI_HRX_OCTET,
-       SK_PNMI_HRX_OCTETHIGH   = SK_PNMI_HRX_OCTET,
-       SK_PNMI_HRX_OCTETLOW,
-       SK_PNMI_HRX_BADOCTET,
-       SK_PNMI_HRX_BADOCTETHIGH = SK_PNMI_HRX_BADOCTET,
-       SK_PNMI_HRX_BADOCTETLOW,
-       SK_PNMI_HRX_BROADCAST,
-       SK_PNMI_HRX_MULTICAST,
-       SK_PNMI_HRX_UNICAST,
-       SK_PNMI_HRX_PMACC,
-       SK_PNMI_HRX_MACC,
-       SK_PNMI_HRX_PMACC_ERR,
-       SK_PNMI_HRX_MACC_UNKWN,
-       SK_PNMI_HRX_BURST,
-       SK_PNMI_HRX_MISSED,
-       SK_PNMI_HRX_FRAMING,
-       SK_PNMI_HRX_UNDERSIZE,
-       SK_PNMI_HRX_OVERFLOW,
-       SK_PNMI_HRX_JABBER,
-       SK_PNMI_HRX_CARRIER,
-       SK_PNMI_HRX_IRLENGTH,
-       SK_PNMI_HRX_SYMBOL,
-       SK_PNMI_HRX_SHORTS,
-       SK_PNMI_HRX_RUNT,
-       SK_PNMI_HRX_TOO_LONG,
-       SK_PNMI_HRX_FCS,
-       SK_PNMI_HRX_CEXT,
-       SK_PNMI_HRX_UTILUNDER,
-       SK_PNMI_HRX_UTILOVER,
-       SK_PNMI_HRX_64,
-       SK_PNMI_HRX_127,
-       SK_PNMI_HRX_255,
-       SK_PNMI_HRX_511,
-       SK_PNMI_HRX_1023,
-       SK_PNMI_HRX_MAX,
-       SK_PNMI_HRX_LONGFRAMES,
-
-       SK_PNMI_HRX_RESERVED,
-
-       SK_PNMI_MAX_IDX         /* NOTE: Ensure SK_PNMI_CNT_NO is set to this value */
-};
-
-/*
- * MAC specific data
- */
-typedef struct s_PnmiStatAddr {
-       SK_U16          Reg;            /* MAC register containing the value */
-       SK_BOOL         GetOffset;      /* TRUE: Offset managed by PNMI (call GetStatVal())*/
-} SK_PNMI_STATADDR;
-
-
-/*
- * SK_PNMI_STRUCT_DATA copy offset evaluation macros
- */
-#define SK_PNMI_OFF(e)         ((SK_U32)(SK_UPTR)&(((SK_PNMI_STRUCT_DATA *)0)->e))
-#define SK_PNMI_MAI_OFF(e)     ((SK_U32)(SK_UPTR)&(((SK_PNMI_STRUCT_DATA *)0)->e))
-#define SK_PNMI_VPD_OFF(e)     ((SK_U32)(SK_UPTR)&(((SK_PNMI_VPD *)0)->e))
-#define SK_PNMI_SEN_OFF(e)     ((SK_U32)(SK_UPTR)&(((SK_PNMI_SENSOR *)0)->e))
-#define SK_PNMI_CHK_OFF(e)     ((SK_U32)(SK_UPTR)&(((SK_PNMI_CHECKSUM *)0)->e))
-#define SK_PNMI_STA_OFF(e)     ((SK_U32)(SK_UPTR)&(((SK_PNMI_STAT *)0)->e))
-#define SK_PNMI_CNF_OFF(e)     ((SK_U32)(SK_UPTR)&(((SK_PNMI_CONF *)0)->e))
-#define SK_PNMI_RLM_OFF(e)     ((SK_U32)(SK_UPTR)&(((SK_PNMI_RLMT *)0)->e))
-#define SK_PNMI_MON_OFF(e)     ((SK_U32)(SK_UPTR)&(((SK_PNMI_RLMT_MONITOR *)0)->e))
-#define SK_PNMI_TRP_OFF(e)     ((SK_U32)(SK_UPTR)&(((SK_PNMI_TRAP *)0)->e))
-
-#define SK_PNMI_SET_STAT(b,s,o)        {SK_U32 Val32; char *pVal; \
-                                       Val32 = (s); \
-                                       pVal = (char *)(b) + ((SK_U32)(SK_UPTR) \
-                                               &(((SK_PNMI_STRUCT_DATA *)0)-> \
-                                               ReturnStatus.ErrorStatus)); \
-                                       SK_PNMI_STORE_U32(pVal, Val32); \
-                                       Val32 = (o); \
-                                       pVal = (char *)(b) + ((SK_U32)(SK_UPTR) \
-                                               &(((SK_PNMI_STRUCT_DATA *)0)-> \
-                                               ReturnStatus.ErrorOffset)); \
-                                       SK_PNMI_STORE_U32(pVal, Val32);}
-
-/*
- * Time macros
- */
-#if SK_TICKS_PER_SEC == 100
-#define SK_PNMI_HUNDREDS_SEC(t)        (t)
-#else
-#define SK_PNMI_HUNDREDS_SEC(t)        (((t) * 100) / (SK_TICKS_PER_SEC))
-#endif
-
-/*
- * Macros to work around alignment problems
- */
-#ifndef SK_PNMI_STORE_U16
-#define SK_PNMI_STORE_U16(p,v) {*(char *)(p) = *((char *)&(v)); \
-                                       *((char *)(p) + 1) = \
-                                               *(((char *)&(v)) + 1);}
-#endif
-
-#ifndef SK_PNMI_STORE_U32
-#define SK_PNMI_STORE_U32(p,v) {*(char *)(p) = *((char *)&(v)); \
-                                       *((char *)(p) + 1) = \
-                                               *(((char *)&(v)) + 1); \
-                                       *((char *)(p) + 2) = \
-                                               *(((char *)&(v)) + 2); \
-                                       *((char *)(p) + 3) = \
-                                               *(((char *)&(v)) + 3);}
-#endif
-
-#ifndef SK_PNMI_STORE_U64
-#define SK_PNMI_STORE_U64(p,v) {*(char *)(p) = *((char *)&(v)); \
-                                       *((char *)(p) + 1) = \
-                                               *(((char *)&(v)) + 1); \
-                                       *((char *)(p) + 2) = \
-                                               *(((char *)&(v)) + 2); \
-                                       *((char *)(p) + 3) = \
-                                               *(((char *)&(v)) + 3); \
-                                       *((char *)(p) + 4) = \
-                                               *(((char *)&(v)) + 4); \
-                                       *((char *)(p) + 5) = \
-                                               *(((char *)&(v)) + 5); \
-                                       *((char *)(p) + 6) = \
-                                               *(((char *)&(v)) + 6); \
-                                       *((char *)(p) + 7) = \
-                                               *(((char *)&(v)) + 7);}
-#endif
-
-#ifndef SK_PNMI_READ_U16
-#define SK_PNMI_READ_U16(p,v)  {*((char *)&(v)) = *(char *)(p); \
-                                       *(((char *)&(v)) + 1) = \
-                                               *((char *)(p) + 1);}
-#endif
-
-#ifndef SK_PNMI_READ_U32
-#define SK_PNMI_READ_U32(p,v)  {*((char *)&(v)) = *(char *)(p); \
-                                       *(((char *)&(v)) + 1) = \
-                                               *((char *)(p) + 1); \
-                                       *(((char *)&(v)) + 2) = \
-                                               *((char *)(p) + 2); \
-                                       *(((char *)&(v)) + 3) = \
-                                               *((char *)(p) + 3);}
-#endif
-
-#ifndef SK_PNMI_READ_U64
-#define SK_PNMI_READ_U64(p,v)  {*((char *)&(v)) = *(char *)(p); \
-                                       *(((char *)&(v)) + 1) = \
-                                               *((char *)(p) + 1); \
-                                       *(((char *)&(v)) + 2) = \
-                                               *((char *)(p) + 2); \
-                                       *(((char *)&(v)) + 3) = \
-                                               *((char *)(p) + 3); \
-                                       *(((char *)&(v)) + 4) = \
-                                               *((char *)(p) + 4); \
-                                       *(((char *)&(v)) + 5) = \
-                                               *((char *)(p) + 5); \
-                                       *(((char *)&(v)) + 6) = \
-                                               *((char *)(p) + 6); \
-                                       *(((char *)&(v)) + 7) = \
-                                               *((char *)(p) + 7);}
-#endif
-
-/*
- * Macros for Debug
- */
-#ifdef DEBUG
-
-#define SK_PNMI_CHECKFLAGS(vSt)        {if (pAC->Pnmi.MacUpdatedFlag > 0 || \
-                                       pAC->Pnmi.RlmtUpdatedFlag > 0 || \
-                                       pAC->Pnmi.SirqUpdatedFlag > 0) { \
-                                               SK_DBG_MSG(pAC, \
-                                               SK_DBGMOD_PNMI, \
-                                               SK_DBGCAT_CTRL, \
-                                               ("PNMI: ERR: %s MacUFlag=%d, RlmtUFlag=%d, SirqUFlag=%d\n", \
-                                               vSt, \
-                                               pAC->Pnmi.MacUpdatedFlag, \
-                                               pAC->Pnmi.RlmtUpdatedFlag, \
-                                               pAC->Pnmi.SirqUpdatedFlag))}}
-
-#else  /* !DEBUG */
-
-#define SK_PNMI_CHECKFLAGS(vSt)        /* Nothing */
-
-#endif /* !DEBUG */
-
-#endif /* _SKGEPNM2_H_ */
+/*****************************************************************************
+ *
+ * Name:       skgepnm2.h
+ * Project:    GEnesis, PCI Gigabit Ethernet Adapter
+ * Version:    $Revision: 1.1.1.1 $
+ * Date:       $Date: 2009/03/25 22:22:09 $
+ * Purpose:    Defines for Private Network Management Interface
+ *
+ ****************************************************************************/
+
+/******************************************************************************
+ *
+ *     (C)Copyright 1998-2001 SysKonnect GmbH.
+ *
+ *     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.
+ *
+ *     The information in this file is provided "AS IS" without warranty.
+ *
+ ******************************************************************************/
+
+/*****************************************************************************
+ *
+ * History:
+ *
+ *     $Log: skgepnm2.h,v $
+ *     Revision 1.1.1.1  2009/03/25 22:22:09  kenagy
+ *     no message
+ *     
+ *     Revision 1.34  2002/12/16 09:05:18  tschilli
+ *     Code for VCT handling added.
+ *
+ *     Revision 1.33  2002/09/10 09:00:03  rwahl
+ *     Adapted boolean definitions according sktypes.
+ *
+ *     Revision 1.32  2002/08/09 09:47:01  rwahl
+ *     Added write-only flag to oid access defines.
+ *     Editorial changes.
+ *
+ *     Revision 1.31  2002/07/17 19:23:18  rwahl
+ *     - Replaced MAC counter definitions by enumeration.
+ *     - Added definition SK_PNMI_MAC_TYPES.
+ *     - Added chipset defnition for Yukon.
+ *
+ *     Revision 1.30  2001/02/06 10:03:41  mkunz
+ *     - Pnmi V4 dual net support added. Interface functions and macros extended
+ *     - Vpd bug fixed
+ *     - OID_SKGE_MTU added
+ *
+ *     Revision 1.29  2001/01/22 13:41:37  rassmann
+ *     Supporting two nets on dual-port adapters.
+ *
+ *     Revision 1.28  2000/08/03 15:12:48  rwahl
+ *     - Additional comment for MAC statistic data structure.
+ *
+ *     Revision 1.27  2000/08/01 16:10:18  rwahl
+ *     - Added mac statistic data structure for StatRxLongFrame counter.
+ *
+ *     Revision 1.26  2000/03/31 13:51:34  rwahl
+ *     Added SK_UPTR cast to offset calculation for PNMI struct fields;
+ *     missing cast caused compiler warnings by Win64 compiler.
+ *
+ *     Revision 1.25  1999/11/22 13:57:41  cgoos
+ *     Changed license header to GPL.
+ *     Allowing overwrite for SK_PNMI_STORE/_READ defines.
+ *
+ *     Revision 1.24  1999/04/13 15:11:11  mhaveman
+ *     Changed copyright.
+ *
+ *     Revision 1.23  1999/01/28 15:07:12  mhaveman
+ *     Changed default threshold for port switches per hour from 10
+ *     to 240 which means 4 switches per minute. This fits better
+ *     the granularity of 32 for the port switch estimate
+ *     counter.
+ *
+ *     Revision 1.22  1999/01/05 12:52:30  mhaveman
+ *     Removed macro SK_PNMI_MICRO_SEC.
+ *
+ *     Revision 1.21  1999/01/05 12:50:34  mhaveman
+ *     Enlarged macro definition SK_PNMI_HUNDREDS_SEC() so that no 64-bit
+ *     arithmetic is necessary if SK_TICKS_PER_SEC is 100.
+ *
+ *     Revision 1.20  1998/12/09 14:02:53  mhaveman
+ *     Defined macro SK_PNMI_DEF_RLMT_CHG_THRES for default port switch
+ *     threshold.
+ *
+ *     Revision 1.19  1998/12/03 11:28:41  mhaveman
+ *     Removed SK_PNMI_CHECKPTR macro.
+ *
+ *     Revision 1.18  1998/12/03 11:21:00  mhaveman
+ *     -Added pointer check macro SK_PNMI_CHECKPTR
+ *     -Added macros SK_PNMI_VPD_ARR_SIZE and SK_PNMI_VPD_STR_SIZE for
+ *      VPD key evaluation.
+ *
+ *     Revision 1.17  1998/11/20 13:20:33  mhaveman
+ *     Fixed bug in SK_PNMI_SET_STAT macro. ErrorStatus was not correctly set.
+ *
+ *     Revision 1.16  1998/11/20 08:08:49  mhaveman
+ *     Macro SK_PNMI_CHECKFLAGS has got a if clause.
+ *
+ *     Revision 1.15  1998/11/03 13:53:40  mhaveman
+ *     Fixed alignment problem in macor SK_PNMI_SET_STAT macro.
+ *
+ *     Revision 1.14  1998/10/30 15:50:13  mhaveman
+ *     Added macro SK_PNMI_MICRO_SEC()
+ *
+ *     Revision 1.13  1998/10/30 12:32:20  mhaveman
+ *     Added forgotten cast in SK_PNMI_READ_U32 macro.
+ *
+ *     Revision 1.12  1998/10/29 15:40:26  mhaveman
+ *     -Changed SK_PNMI_TRAP_SENSOR_LEN because SensorDescr has now
+ *      variable string length.
+ *     -Defined SK_PNMI_CHECKFLAGS macro
+ *
+ *     Revision 1.11  1998/10/29 08:53:34  mhaveman
+ *     Removed SK_PNMI_RLM_XXX table indexed because these counters need
+ *     not been saved over XMAC resets.
+ *
+ *     Revision 1.10  1998/10/28 08:48:20  mhaveman
+ *     -Added macros for storage according to alignment
+ *     -Changed type of Instance to SK_U32 because of VPD
+ *     -Removed trap structures. Not needed because of alignment problem
+ *     -Changed type of Action form SK_U8 to int
+ *
+ *     Revision 1.9  1998/10/21 13:34:45  mhaveman
+ *     Shit, mismatched calculation of SK_PNMI_HUNDREDS_SEC. Corrected.
+ *
+ *     Revision 1.8  1998/10/21 13:24:58  mhaveman
+ *     Changed calculation of hundreds of seconds.
+ *
+ *     Revision 1.7  1998/10/20 07:31:41  mhaveman
+ *     Made type changes to unsigned int where possible.
+ *
+ *     Revision 1.6  1998/09/04 17:04:05  mhaveman
+ *     Added Sync counters to offset storage to provided settled values on
+ *     port switch.
+ *
+ *     Revision 1.5  1998/09/04 12:45:35  mhaveman
+ *     Removed dummies for SK_DRIVER_ macros. They should be added by driver
+ *     writer in skdrv2nd.h.
+ *
+ *     Revision 1.4  1998/09/04 11:59:50  mhaveman
+ *     Everything compiles now. Driver Macros for counting still missing.
+ *
+ *     Revision 1.3  1998/08/24 12:01:35  mhaveman
+ *     Intermediate state.
+ *
+ *     Revision 1.2  1998/08/17 07:51:40  mhaveman
+ *     Intermediate state.
+ *
+ *     Revision 1.1  1998/08/11 09:08:40  mhaveman
+ *     Intermediate state.
+ *
+ ****************************************************************************/
+
+#ifndef _SKGEPNM2_H_
+#define _SKGEPNM2_H_
+
+/*
+ * General definitions
+ */
+#define SK_PNMI_CHIPSET_XMAC   1       /* XMAC11800FP */
+#define SK_PNMI_CHIPSET_YUKON  2       /* YUKON */
+
+#define        SK_PNMI_BUS_PCI         1       /* PCI bus*/
+
+/*
+ * Actions
+ */
+#define SK_PNMI_ACT_IDLE               1
+#define SK_PNMI_ACT_RESET              2
+#define SK_PNMI_ACT_SELFTEST   3
+#define SK_PNMI_ACT_RESETCNT   4
+
+/*
+ * VPD releated defines
+ */
+
+#define SK_PNMI_VPD_RW         1
+#define SK_PNMI_VPD_RO         2
+
+#define SK_PNMI_VPD_OK                 0
+#define SK_PNMI_VPD_NOTFOUND   1
+#define SK_PNMI_VPD_CUT                        2
+#define SK_PNMI_VPD_TIMEOUT            3
+#define SK_PNMI_VPD_FULL               4
+#define SK_PNMI_VPD_NOWRITE            5
+#define SK_PNMI_VPD_FATAL              6
+
+#define SK_PNMI_VPD_IGNORE     0
+#define SK_PNMI_VPD_CREATE     1
+#define SK_PNMI_VPD_DELETE     2
+
+
+/*
+ * RLMT related defines
+ */
+#define SK_PNMI_DEF_RLMT_CHG_THRES     240     /* 4 changes per minute */
+
+
+/*
+ * VCT internal status values
+ */
+#define SK_PNMI_VCT_PENDING    32
+#define SK_PNMI_VCT_TEST_DONE  64
+#define SK_PNMI_VCT_LINK       128
+
+/*
+ * Internal table definitions
+ */
+#define SK_PNMI_GET            0
+#define SK_PNMI_PRESET 1
+#define SK_PNMI_SET            2
+
+#define SK_PNMI_RO             0
+#define SK_PNMI_RW             1
+#define SK_PNMI_WO             2
+
+typedef struct s_OidTabEntry {
+       SK_U32                  Id;
+       SK_U32                  InstanceNo;
+       unsigned int    StructSize;
+       unsigned int    Offset;
+       int                             Access;
+       int                             (* Func)(SK_AC *pAc, SK_IOC pIo, int action,
+                                                        SK_U32 Id, char* pBuf, unsigned int* pLen,
+                                                        SK_U32 Instance, unsigned int TableIndex,
+                                                        SK_U32 NetNumber);
+       SK_U16                  Param;
+} SK_PNMI_TAB_ENTRY;
+
+
+/*
+ * Trap lengths
+ */
+#define SK_PNMI_TRAP_SIMPLE_LEN                        17
+#define SK_PNMI_TRAP_SENSOR_LEN_BASE   46
+#define SK_PNMI_TRAP_RLMT_CHANGE_LEN   23
+#define SK_PNMI_TRAP_RLMT_PORT_LEN             23
+
+/*
+ * Number of MAC types supported
+ */
+#define SK_PNMI_MAC_TYPES      (SK_MAC_GMAC + 1)
+
+/*
+ * MAC statistic data list (overall set for MAC types used)
+ */
+enum SK_MACSTATS {
+       SK_PNMI_HTX                             = 0,
+       SK_PNMI_HTX_OCTET,
+       SK_PNMI_HTX_OCTETHIGH   = SK_PNMI_HTX_OCTET,
+       SK_PNMI_HTX_OCTETLOW,
+       SK_PNMI_HTX_BROADCAST,
+       SK_PNMI_HTX_MULTICAST,
+       SK_PNMI_HTX_UNICAST,
+       SK_PNMI_HTX_BURST,
+       SK_PNMI_HTX_PMACC,
+       SK_PNMI_HTX_MACC,
+       SK_PNMI_HTX_COL,
+       SK_PNMI_HTX_SINGLE_COL,
+       SK_PNMI_HTX_MULTI_COL,
+       SK_PNMI_HTX_EXCESS_COL,
+       SK_PNMI_HTX_LATE_COL,
+       SK_PNMI_HTX_DEFFERAL,
+       SK_PNMI_HTX_EXCESS_DEF,
+       SK_PNMI_HTX_UNDERRUN,
+       SK_PNMI_HTX_CARRIER,
+       SK_PNMI_HTX_UTILUNDER,
+       SK_PNMI_HTX_UTILOVER,
+       SK_PNMI_HTX_64,
+       SK_PNMI_HTX_127,
+       SK_PNMI_HTX_255,
+       SK_PNMI_HTX_511,
+       SK_PNMI_HTX_1023,
+       SK_PNMI_HTX_MAX,
+       SK_PNMI_HTX_LONGFRAMES,
+       SK_PNMI_HTX_SYNC,
+       SK_PNMI_HTX_SYNC_OCTET,
+       SK_PNMI_HTX_RESERVED,
+
+       SK_PNMI_HRX,
+       SK_PNMI_HRX_OCTET,
+       SK_PNMI_HRX_OCTETHIGH   = SK_PNMI_HRX_OCTET,
+       SK_PNMI_HRX_OCTETLOW,
+       SK_PNMI_HRX_BADOCTET,
+       SK_PNMI_HRX_BADOCTETHIGH = SK_PNMI_HRX_BADOCTET,
+       SK_PNMI_HRX_BADOCTETLOW,
+       SK_PNMI_HRX_BROADCAST,
+       SK_PNMI_HRX_MULTICAST,
+       SK_PNMI_HRX_UNICAST,
+       SK_PNMI_HRX_PMACC,
+       SK_PNMI_HRX_MACC,
+       SK_PNMI_HRX_PMACC_ERR,
+       SK_PNMI_HRX_MACC_UNKWN,
+       SK_PNMI_HRX_BURST,
+       SK_PNMI_HRX_MISSED,
+       SK_PNMI_HRX_FRAMING,
+       SK_PNMI_HRX_UNDERSIZE,
+       SK_PNMI_HRX_OVERFLOW,
+       SK_PNMI_HRX_JABBER,
+       SK_PNMI_HRX_CARRIER,
+       SK_PNMI_HRX_IRLENGTH,
+       SK_PNMI_HRX_SYMBOL,
+       SK_PNMI_HRX_SHORTS,
+       SK_PNMI_HRX_RUNT,
+       SK_PNMI_HRX_TOO_LONG,
+       SK_PNMI_HRX_FCS,
+       SK_PNMI_HRX_CEXT,
+       SK_PNMI_HRX_UTILUNDER,
+       SK_PNMI_HRX_UTILOVER,
+       SK_PNMI_HRX_64,
+       SK_PNMI_HRX_127,
+       SK_PNMI_HRX_255,
+       SK_PNMI_HRX_511,
+       SK_PNMI_HRX_1023,
+       SK_PNMI_HRX_MAX,
+       SK_PNMI_HRX_LONGFRAMES,
+
+       SK_PNMI_HRX_RESERVED,
+
+       SK_PNMI_MAX_IDX         /* NOTE: Ensure SK_PNMI_CNT_NO is set to this value */
+};
+
+/*
+ * MAC specific data
+ */
+typedef struct s_PnmiStatAddr {
+       SK_U16          Reg;            /* MAC register containing the value */
+       SK_BOOL         GetOffset;      /* TRUE: Offset managed by PNMI (call GetStatVal())*/
+} SK_PNMI_STATADDR;
+
+
+/*
+ * SK_PNMI_STRUCT_DATA copy offset evaluation macros
+ */
+#define SK_PNMI_OFF(e)         ((SK_U32)(SK_UPTR)&(((SK_PNMI_STRUCT_DATA *)0)->e))
+#define SK_PNMI_MAI_OFF(e)     ((SK_U32)(SK_UPTR)&(((SK_PNMI_STRUCT_DATA *)0)->e))
+#define SK_PNMI_VPD_OFF(e)     ((SK_U32)(SK_UPTR)&(((SK_PNMI_VPD *)0)->e))
+#define SK_PNMI_SEN_OFF(e)     ((SK_U32)(SK_UPTR)&(((SK_PNMI_SENSOR *)0)->e))
+#define SK_PNMI_CHK_OFF(e)     ((SK_U32)(SK_UPTR)&(((SK_PNMI_CHECKSUM *)0)->e))
+#define SK_PNMI_STA_OFF(e)     ((SK_U32)(SK_UPTR)&(((SK_PNMI_STAT *)0)->e))
+#define SK_PNMI_CNF_OFF(e)     ((SK_U32)(SK_UPTR)&(((SK_PNMI_CONF *)0)->e))
+#define SK_PNMI_RLM_OFF(e)     ((SK_U32)(SK_UPTR)&(((SK_PNMI_RLMT *)0)->e))
+#define SK_PNMI_MON_OFF(e)     ((SK_U32)(SK_UPTR)&(((SK_PNMI_RLMT_MONITOR *)0)->e))
+#define SK_PNMI_TRP_OFF(e)     ((SK_U32)(SK_UPTR)&(((SK_PNMI_TRAP *)0)->e))
+
+#define SK_PNMI_SET_STAT(b,s,o)        {SK_U32 Val32; char *pVal; \
+                                       Val32 = (s); \
+                                       pVal = (char *)(b) + ((SK_U32)(SK_UPTR) \
+                                               &(((SK_PNMI_STRUCT_DATA *)0)-> \
+                                               ReturnStatus.ErrorStatus)); \
+                                       SK_PNMI_STORE_U32(pVal, Val32); \
+                                       Val32 = (o); \
+                                       pVal = (char *)(b) + ((SK_U32)(SK_UPTR) \
+                                               &(((SK_PNMI_STRUCT_DATA *)0)-> \
+                                               ReturnStatus.ErrorOffset)); \
+                                       SK_PNMI_STORE_U32(pVal, Val32);}
+
+/*
+ * Time macros
+ */
+#if SK_TICKS_PER_SEC == 100
+#define SK_PNMI_HUNDREDS_SEC(t)        (t)
+#else
+#define SK_PNMI_HUNDREDS_SEC(t)        (((t) * 100) / (SK_TICKS_PER_SEC))
+#endif
+
+/*
+ * Macros to work around alignment problems
+ */
+#ifndef SK_PNMI_STORE_U16
+#define SK_PNMI_STORE_U16(p,v) {*(char *)(p) = *((char *)&(v)); \
+                                       *((char *)(p) + 1) = \
+                                               *(((char *)&(v)) + 1);}
+#endif
+
+#ifndef SK_PNMI_STORE_U32
+#define SK_PNMI_STORE_U32(p,v) {*(char *)(p) = *((char *)&(v)); \
+                                       *((char *)(p) + 1) = \
+                                               *(((char *)&(v)) + 1); \
+                                       *((char *)(p) + 2) = \
+                                               *(((char *)&(v)) + 2); \
+                                       *((char *)(p) + 3) = \
+                                               *(((char *)&(v)) + 3);}
+#endif
+
+#ifndef SK_PNMI_STORE_U64
+#define SK_PNMI_STORE_U64(p,v) {*(char *)(p) = *((char *)&(v)); \
+                                       *((char *)(p) + 1) = \
+                                               *(((char *)&(v)) + 1); \
+                                       *((char *)(p) + 2) = \
+                                               *(((char *)&(v)) + 2); \
+                                       *((char *)(p) + 3) = \
+                                               *(((char *)&(v)) + 3); \
+                                       *((char *)(p) + 4) = \
+                                               *(((char *)&(v)) + 4); \
+                                       *((char *)(p) + 5) = \
+                                               *(((char *)&(v)) + 5); \
+                                       *((char *)(p) + 6) = \
+                                               *(((char *)&(v)) + 6); \
+                                       *((char *)(p) + 7) = \
+                                               *(((char *)&(v)) + 7);}
+#endif
+
+#ifndef SK_PNMI_READ_U16
+#define SK_PNMI_READ_U16(p,v)  {*((char *)&(v)) = *(char *)(p); \
+                                       *(((char *)&(v)) + 1) = \
+                                               *((char *)(p) + 1);}
+#endif
+
+#ifndef SK_PNMI_READ_U32
+#define SK_PNMI_READ_U32(p,v)  {*((char *)&(v)) = *(char *)(p); \
+                                       *(((char *)&(v)) + 1) = \
+                                               *((char *)(p) + 1); \
+                                       *(((char *)&(v)) + 2) = \
+                                               *((char *)(p) + 2); \
+                                       *(((char *)&(v)) + 3) = \
+                                               *((char *)(p) + 3);}
+#endif
+
+#ifndef SK_PNMI_READ_U64
+#define SK_PNMI_READ_U64(p,v)  {*((char *)&(v)) = *(char *)(p); \
+                                       *(((char *)&(v)) + 1) = \
+                                               *((char *)(p) + 1); \
+                                       *(((char *)&(v)) + 2) = \
+                                               *((char *)(p) + 2); \
+                                       *(((char *)&(v)) + 3) = \
+                                               *((char *)(p) + 3); \
+                                       *(((char *)&(v)) + 4) = \
+                                               *((char *)(p) + 4); \
+                                       *(((char *)&(v)) + 5) = \
+                                               *((char *)(p) + 5); \
+                                       *(((char *)&(v)) + 6) = \
+                                               *((char *)(p) + 6); \
+                                       *(((char *)&(v)) + 7) = \
+                                               *((char *)(p) + 7);}
+#endif
+
+/*
+ * Macros for Debug
+ */
+#ifdef DEBUG
+
+#define SK_PNMI_CHECKFLAGS(vSt)        {if (pAC->Pnmi.MacUpdatedFlag > 0 || \
+                                       pAC->Pnmi.RlmtUpdatedFlag > 0 || \
+                                       pAC->Pnmi.SirqUpdatedFlag > 0) { \
+                                               SK_DBG_MSG(pAC, \
+                                               SK_DBGMOD_PNMI, \
+                                               SK_DBGCAT_CTRL, \
+                                               ("PNMI: ERR: %s MacUFlag=%d, RlmtUFlag=%d, SirqUFlag=%d\n", \
+                                               vSt, \
+                                               pAC->Pnmi.MacUpdatedFlag, \
+                                               pAC->Pnmi.RlmtUpdatedFlag, \
+                                               pAC->Pnmi.SirqUpdatedFlag))}}
+
+#else  /* !DEBUG */
+
+#define SK_PNMI_CHECKFLAGS(vSt)        /* Nothing */
+
+#endif /* !DEBUG */
+
+#endif /* _SKGEPNM2_H_ */
diff -Naur u-boot-2009.03_orig/drivers/net/sk98lin/h/skgepnmi.h u-boot-2009.03/drivers/net/sk98lin/h/skgepnmi.h
--- u-boot-2009.03_orig/drivers/net/sk98lin/h/skgepnmi.h        2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/drivers/net/sk98lin/h/skgepnmi.h     2009-03-31 14:54:45.940419200 -0700
@@ -1,1113 +1,1116 @@
-/*****************************************************************************
- *
- * Name:       skgepnmi.h
- * Project:    GEnesis, PCI Gigabit Ethernet Adapter
- * Version:    $Revision: 1.59 $
- * Date:       $Date: 2002/12/16 14:03:50 $
- * Purpose:    Defines for Private Network Management Interface
- *
- ****************************************************************************/
-
-/******************************************************************************
- *
- *     (C)Copyright 1998-2001 SysKonnect GmbH.
- *
- *     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.
- *
- *     The information in this file is provided "AS IS" without warranty.
- *
- ******************************************************************************/
-
-/*****************************************************************************
- *
- * History:
- *
- *     $Log: skgepnmi.h,v $
- *     Revision 1.59  2002/12/16 14:03:50  tschilli
- *     New defines for VCT added.
- *
- *     Revision 1.58  2002/12/16 09:04:59  tschilli
- *     Code for VCT handling added.
- *
- *     Revision 1.57  2002/09/26 12:41:05  tschilli
- *     SK_PNMI_PORT BufPort entry in struct SK_PNMI added.
- *
- *     Revision 1.56  2002/08/16 11:10:41  rwahl
- *     - Replaced c++ comment.
- *
- *     Revision 1.55  2002/08/09 15:40:21  rwahl
- *     Editorial change (renamed ConfSpeedCap).
- *
- *     Revision 1.54  2002/08/09 11:06:07  rwahl
- *     Added OID_SKGE_SPEED_CAP.
- *
- *     Revision 1.53  2002/08/09 09:45:28  rwahl
- *     Added support for NDIS OID_PNP_xxx.
- *     Editorial changes.
- *
- *     Revision 1.52  2002/08/06 17:54:07  rwahl
- *     - Added speed cap to PNMI config struct.
- *
- *     Revision 1.51  2002/07/17 19:19:26  rwahl
- *     - Added OID_SKGE_SPEED_MODE and OID_SKGE_SPEED_STATUS.
- *     - Added SK_PNMI_CNT_RX_PMACC_ERR() & SK_PNMI_CNT_RX_LONGFRAMES().
- *     - Added speed mode & status to PNMI config struct.
- *     - Editorial changes.
- *
- *     Revision 1.50  2002/05/22 08:59:37  rwahl
- *     Added string definitions for error msgs.
- *
- *     Revision 1.49  2001/11/20 09:23:50  rwahl
- *     - pnmi struct: reordered and aligned to 32bit.
- *
- *     Revision 1.48  2001/02/23 14:34:24  mkunz
- *     Changed macro PHYS2INST. Added pAC to Interface
- *
- *     Revision 1.47  2001/02/07 08:28:23  mkunz
- *     - Added Oids:   OID_SKGE_DIAG_ACTION
- *                                     OID_SKGE_DIAG_RESULT
- *                                     OID_SKGE_MULTICAST_LIST
- *                                     OID_SKGE_CURRENT_PACKET_FILTER
- *                                     OID_SKGE_INTERMEDIATE_SUPPORT
- *     - Changed value of OID_SKGE_MTU
- *
- *     Revision 1.46  2001/02/06 10:01:41  mkunz
- *     - Pnmi V4 dual net support added. Interface functions and macros extended
- *     - Vpd bug fixed
- *     - OID_SKGE_MTU added
- *
- *     Revision 1.45  2001/01/22 13:41:37  rassmann
- *     Supporting two nets on dual-port adapters.
- *
- *     Revision 1.44  2000/09/07 07:35:27  rwahl
- *     - removed NDIS counter specific data type.
- *     - fixed spelling for OID_SKGE_RLMT_PORT_PREFERRED.
- *
- *     Revision 1.43  2000/08/04 11:41:08  rwahl
- *     - Fixed compiler warning (port is always >= 0) for macros
- *       SK_PNMI_CNT_RX_LONGFRAMES & SK_PNMI_CNT_SYNC_OCTETS
- *
- *     Revision 1.42  2000/08/03 15:14:07  rwahl
- *     - Corrected error in driver macros addressing a physical port.
- *
- *     Revision 1.41  2000/08/01 16:22:29  rwahl
- *     - Changed MDB version to 3.1.
- *     - Added definitions for StatRxLongFrames counter.
- *     - Added macro to be used by driver to count long frames received.
- *     - Added directive to control width (default = 32bit) of NDIS statistic
- *       counters (SK_NDIS_64BIT_CTR).
- *
- *     Revision 1.40  2000/03/31 13:51:34  rwahl
- *     Added SK_UPTR cast to offset calculation for PNMI struct fields;
- *     missing cast caused compiler warnings by Win64 compiler.
- *
- *     Revision 1.39  1999/12/06 10:09:47  rwahl
- *     Added new error log message.
- *
- *     Revision 1.38  1999/11/22 13:57:55  cgoos
- *     Changed license header to GPL.
- *
- *     Revision 1.37  1999/09/14 14:25:32  rwahl
- *     Set MDB version for 1000Base-T (sensors, Master/Slave) changes.
- *
- *     Revision 1.36  1999/05/20 09:24:56  cgoos
- *     Changes for 1000Base-T (sensors, Master/Slave).
- *
- *     Revision 1.35  1999/04/13 15:10:51  mhaveman
- *     Replaced RLMT macros SK_RLMT_CHECK_xxx again by those of PNMI to
- *     grant unified interface. But PNMI macros will store the same
- *     value as RLMT macros.
- *
- *     Revision 1.34  1999/04/13 15:03:49  mhaveman
- *     -Changed copyright
- *     -Removed SK_PNMI_RLMT_MODE_CHK_xxx macros. Those of RLMT should be
- *      used.
- *
- *     Revision 1.33  1999/03/23 10:41:02  mhaveman
- *     Changed comments.
- *
- *     Revision 1.32  1999/01/25 15:01:33  mhaveman
- *     Added support for multiple simultaniously active ports.
- *
- *     Revision 1.31  1999/01/19 10:06:26  mhaveman
- *     Added new error log message.
- *
- *     Revision 1.30  1999/01/05 10:34:49  mhaveman
- *     Fixed little error in RlmtChangeEstimate calculation.
- *
- *     Revision 1.29  1999/01/05 09:59:41  mhaveman
- *     Redesigned port switch average calculation to avoid 64bit
- *     arithmetic.
- *
- *     Revision 1.28  1998/12/08 10:05:48  mhaveman
- *     Defined macro SK_PNMI_MIN_STRUCT_SIZE.
- *
- *     Revision 1.27  1998/12/03 14:39:35  mhaveman
- *     Fixed problem that LSTAT was enumerated wrong.
- *
- *     Revision 1.26  1998/12/03 11:19:51  mhaveman
- *     Changed contents of errlog message SK_PNMI_ERR016MSG
- *
- *     Revision 1.25  1998/12/01 10:40:04  mhaveman
- *     Changed size of SensorNumber, ChecksumNumber and RlmtPortNumber in
- *     SK_PNMI_STRUCT_DATA to be conform with OID definition.
- *
- *     Revision 1.24  1998/11/20 08:09:27  mhaveman
- *     Added macros to convert between logical, physical port indexes and
- *     instances.
- *
- *     Revision 1.23  1998/11/10 13:41:13  mhaveman
- *     Needed to change interface, because NT driver needs a return value
- *     of needed buffer space on TOO_SHORT errors. Therefore all
- *     SkPnmiGet/Preset/Set functions now have a pointer to the length
- *     parameter, where the needed space on error is returned.
- *
- *     Revision 1.22  1998/11/03 12:05:51  mhaveman
- *     Added pAC parameter to counter macors.
- *
- *     Revision 1.21  1998/11/02 10:47:36  mhaveman
- *     Added syslog messages for internal errors.
- *
- *     Revision 1.20  1998/10/30 15:49:36  mhaveman
- *     -Removed unused SK_PNMI_UTILIZATION_BASE and EstOldCnt.
- *     -Redefined SK_PNMI_CHG_EST_BASE to hundreds of seconds.
- *
- *     Revision 1.19  1998/10/29 15:38:44  mhaveman
- *     Changed string lengths of PNMI_STRUCT_DATA structure because
- *     string OIDs are now encoded with leading length ocetet.
- *
- *     Revision 1.18  1998/10/29 08:52:27  mhaveman
- *     -Added byte to strings in PNMI_STRUCT_DATA structure.
- *     -Shortened SK_PNMI_RLMT structure to SK_MAX_MACS elements.
- *
- *     Revision 1.17  1998/10/28 08:49:50  mhaveman
- *     -Changed type of Instance back to SK_U32 because of VPD
- *     -Changed type from SK_U8 to char of PciBusSpeed, PciBusWidth, PMD,
- *      and Connector.
- *
- *     Revision 1.16  1998/10/22 10:42:31  mhaveman
- *     -Removed (SK_U32) casts for OIDs
- *     -excluded NDIS OIDs when they are already defined with ifndef _NDIS_
- *
- *     Revision 1.15  1998/10/20 13:56:28  mhaveman
- *     Headerfile includes now directly other header files to comile correctly.
- *
- *     Revision 1.14  1998/10/20 07:31:09  mhaveman
- *     Made type changes to unsigned int where possible.
- *
- *     Revision 1.13  1998/10/19 10:53:13  mhaveman
- *     -Casted OID definitions to SK_U32
- *     -Renamed RlmtMAC... to RlmtPort...
- *     -Changed wrong type of VpdEntriesList from SK_U32 to char *
- *
- *     Revision 1.12  1998/10/13 07:42:27  mhaveman
- *     -Added OIDs OID_SKGE_TRAP_NUMBER and OID_SKGE_ALL_DATA
- *     -Removed old cvs history entries
- *     -Renamed MacNumber to PortNumber
- *
- *     Revision 1.11  1998/10/07 10:55:24  mhaveman
- *     -Added OID_MDB_VERSION. Therefore was a renumbering of the VPD OIDs
- *      necessary.
- *     -Added OID_GEN_ Ids to support the windows driver.
- *
- *     Revision 1.10  1998/09/30 13:41:10  mhaveman
- *     Renamed some OIDs to reduce usage of 'MAC' which is replaced by 'PORT'.
- *
- *     Revision 1.9  1998/09/04 17:06:17  mhaveman
- *     -Added SyncCounter as macro.
- *     -Renamed OID_SKGE_.._NO_DESCR_CTS to OID_SKGE_.._NO_BUF_CTS.
- *     -Added macros for driver description and version strings.
- *
- *     Revision 1.8  1998/09/04 14:36:52  mhaveman
- *     Added OIDs and Structure to access value of macro counters which are
- *     counted by the driver.
- *
- *     Revision 1.7  1998/09/04 11:59:36  mhaveman
- *     Everything compiles now. Driver Macros for counting still missing.
- *
- ****************************************************************************/
-
-#ifndef _SKGEPNMI_H_
-#define _SKGEPNMI_H_
-
-/*
- * Include dependencies
- */
-#include "h/sktypes.h"
-#include "h/skerror.h"
-#include "h/sktimer.h"
-#include "h/ski2c.h"
-#include "h/skaddr.h"
-#include "h/skrlmt.h"
-#include "h/skvpd.h"
-
-/*
- * Management Database Version
- */
-#define SK_PNMI_MDB_VERSION            0x00030001      /* 3.1 */
-
-
-/*
- * Event definitions
- */
-#define SK_PNMI_EVT_SIRQ_OVERFLOW      1       /* Counter overflow */
-#define SK_PNMI_EVT_SEN_WAR_LOW                2       /* Lower war thres exceeded */
-#define SK_PNMI_EVT_SEN_WAR_UPP                3       /* Upper war thres exceeded */
-#define SK_PNMI_EVT_SEN_ERR_LOW                4       /* Lower err thres exceeded */
-#define SK_PNMI_EVT_SEN_ERR_UPP                5       /* Upper err thres exceeded */
-#define SK_PNMI_EVT_CHG_EST_TIMER      6       /* Timer event for RLMT Chg */
-#define SK_PNMI_EVT_UTILIZATION_TIMER  7       /* Timer event for Utiliza. */
-#define SK_PNMI_EVT_CLEAR_COUNTER      8       /* Clear statistic counters */
-#define SK_PNMI_EVT_XMAC_RESET         9       /* XMAC will be reset */
-
-#define SK_PNMI_EVT_RLMT_PORT_UP       10      /* Port came logically up */
-#define SK_PNMI_EVT_RLMT_PORT_DOWN     11      /* Port went logically down */
-#define SK_PNMI_EVT_RLMT_SEGMENTATION  13      /* Two SP root bridges found */
-#define SK_PNMI_EVT_RLMT_ACTIVE_DOWN   14      /* Port went logically down */
-#define SK_PNMI_EVT_RLMT_ACTIVE_UP     15      /* Port came logically up */
-#define SK_PNMI_EVT_RLMT_SET_NETS      16      /* 1. Parameter is number of nets
-                                                                                               1 = single net; 2 = dual net */
-#define SK_PNMI_EVT_VCT_RESET          17      /* VCT port reset timer event started with SET. */
-
-
-/*
- * Return values
- */
-#define SK_PNMI_ERR_OK                 0
-#define SK_PNMI_ERR_GENERAL            1
-#define SK_PNMI_ERR_TOO_SHORT          2
-#define SK_PNMI_ERR_BAD_VALUE          3
-#define SK_PNMI_ERR_READ_ONLY          4
-#define SK_PNMI_ERR_UNKNOWN_OID                5
-#define SK_PNMI_ERR_UNKNOWN_INST       6
-#define SK_PNMI_ERR_UNKNOWN_NET                7
-
-
-/*
- * Return values of driver reset function SK_DRIVER_RESET() and
- * driver event function SK_DRIVER_EVENT()
- */
-#define SK_PNMI_ERR_OK                 0
-#define SK_PNMI_ERR_FAIL               1
-
-
-/*
- * Return values of driver test function SK_DRIVER_SELFTEST()
- */
-#define SK_PNMI_TST_UNKNOWN            (1 << 0)
-#define SK_PNMI_TST_TRANCEIVER         (1 << 1)
-#define SK_PNMI_TST_ASIC               (1 << 2)
-#define SK_PNMI_TST_SENSOR             (1 << 3)
-#define SK_PNMI_TST_POWERMGMT          (1 << 4)
-#define SK_PNMI_TST_PCI                        (1 << 5)
-#define SK_PNMI_TST_MAC                        (1 << 6)
-
-
-/*
- * RLMT specific definitions
- */
-#define SK_PNMI_RLMT_STATUS_STANDBY    1
-#define SK_PNMI_RLMT_STATUS_ACTIVE     2
-#define SK_PNMI_RLMT_STATUS_ERROR      3
-
-#define SK_PNMI_RLMT_LSTAT_PHY_DOWN    1
-#define SK_PNMI_RLMT_LSTAT_AUTONEG     2
-#define SK_PNMI_RLMT_LSTAT_LOG_DOWN    3
-#define SK_PNMI_RLMT_LSTAT_LOG_UP      4
-#define SK_PNMI_RLMT_LSTAT_INDETERMINATED 5
-
-#define SK_PNMI_RLMT_MODE_CHK_LINK     (SK_RLMT_CHECK_LINK)
-#define SK_PNMI_RLMT_MODE_CHK_RX       (SK_RLMT_CHECK_LOC_LINK)
-#define SK_PNMI_RLMT_MODE_CHK_SPT      (SK_RLMT_CHECK_SEG)
-/* #define SK_PNMI_RLMT_MODE_CHK_EX */
-
-/*
- * OID definition
- */
-#ifndef _NDIS_ /* Check, whether NDIS already included OIDs */
-
-#define OID_GEN_XMIT_OK                        0x00020101
-#define OID_GEN_RCV_OK                 0x00020102
-#define OID_GEN_XMIT_ERROR             0x00020103
-#define OID_GEN_RCV_ERROR              0x00020104
-#define OID_GEN_RCV_NO_BUFFER          0x00020105
-
-/* #define OID_GEN_DIRECTED_BYTES_XMIT 0x00020201 */
-#define OID_GEN_DIRECTED_FRAMES_XMIT   0x00020202
-/* #define OID_GEN_MULTICAST_BYTES_XMIT        0x00020203 */
-#define OID_GEN_MULTICAST_FRAMES_XMIT  0x00020204
-/* #define OID_GEN_BROADCAST_BYTES_XMIT        0x00020205 */
-#define OID_GEN_BROADCAST_FRAMES_XMIT  0x00020206
-/* #define OID_GEN_DIRECTED_BYTES_RCV  0x00020207 */
-#define OID_GEN_DIRECTED_FRAMES_RCV    0x00020208
-/* #define OID_GEN_MULTICAST_BYTES_RCV 0x00020209 */
-#define OID_GEN_MULTICAST_FRAMES_RCV   0x0002020A
-/* #define OID_GEN_BROADCAST_BYTES_RCV 0x0002020B */
-#define OID_GEN_BROADCAST_FRAMES_RCV   0x0002020C
-#define OID_GEN_RCV_CRC_ERROR          0x0002020D
-#define OID_GEN_TRANSMIT_QUEUE_LENGTH  0x0002020E
-
-#define OID_802_3_PERMANENT_ADDRESS    0x01010101
-#define OID_802_3_CURRENT_ADDRESS      0x01010102
-/* #define OID_802_3_MULTICAST_LIST    0x01010103 */
-/* #define OID_802_3_MAXIMUM_LIST_SIZE 0x01010104 */
-/* #define OID_802_3_MAC_OPTIONS       0x01010105 */
-
-#define OID_802_3_RCV_ERROR_ALIGNMENT  0x01020101
-#define OID_802_3_XMIT_ONE_COLLISION   0x01020102
-#define OID_802_3_XMIT_MORE_COLLISIONS 0x01020103
-#define OID_802_3_XMIT_DEFERRED                0x01020201
-#define OID_802_3_XMIT_MAX_COLLISIONS  0x01020202
-#define OID_802_3_RCV_OVERRUN          0x01020203
-#define OID_802_3_XMIT_UNDERRUN                0x01020204
-#define OID_802_3_XMIT_TIMES_CRS_LOST  0x01020206
-#define OID_802_3_XMIT_LATE_COLLISIONS 0x01020207
-
-/*
- * PnP and PM OIDs
- */
-#ifdef SK_POWER_MGMT
-#define OID_PNP_CAPABILITIES           0xFD010100
-#define OID_PNP_SET_POWER              0xFD010101
-#define OID_PNP_QUERY_POWER            0xFD010102
-#define OID_PNP_ADD_WAKE_UP_PATTERN    0xFD010103
-#define OID_PNP_REMOVE_WAKE_UP_PATTERN 0xFD010104
-#define OID_PNP_ENABLE_WAKE_UP         0xFD010106
-#endif /* SK_POWER_MGMT */
-
-#endif /* _NDIS_ */
-
-#define OID_SKGE_MDB_VERSION           0xFF010100
-#define OID_SKGE_SUPPORTED_LIST                0xFF010101
-#define OID_SKGE_VPD_FREE_BYTES                0xFF010102
-#define OID_SKGE_VPD_ENTRIES_LIST      0xFF010103
-#define OID_SKGE_VPD_ENTRIES_NUMBER    0xFF010104
-#define OID_SKGE_VPD_KEY               0xFF010105
-#define OID_SKGE_VPD_VALUE             0xFF010106
-#define OID_SKGE_VPD_ACCESS            0xFF010107
-#define OID_SKGE_VPD_ACTION            0xFF010108
-
-#define OID_SKGE_PORT_NUMBER           0xFF010110
-#define OID_SKGE_DEVICE_TYPE           0xFF010111
-#define OID_SKGE_DRIVER_DESCR          0xFF010112
-#define OID_SKGE_DRIVER_VERSION                0xFF010113
-#define OID_SKGE_HW_DESCR              0xFF010114
-#define OID_SKGE_HW_VERSION            0xFF010115
-#define OID_SKGE_CHIPSET               0xFF010116
-#define OID_SKGE_ACTION                        0xFF010117
-#define OID_SKGE_RESULT                        0xFF010118
-#define OID_SKGE_BUS_TYPE              0xFF010119
-#define OID_SKGE_BUS_SPEED             0xFF01011A
-#define OID_SKGE_BUS_WIDTH             0xFF01011B
-/* 0xFF01011C unused */
-#define OID_SKGE_DIAG_ACTION           0xFF01011D
-#define OID_SKGE_DIAG_RESULT           0xFF01011E
-#define OID_SKGE_MTU                   0xFF01011F
-#define OID_SKGE_PHYS_CUR_ADDR         0xFF010120
-#define OID_SKGE_PHYS_FAC_ADDR         0xFF010121
-#define OID_SKGE_PMD                   0xFF010122
-#define OID_SKGE_CONNECTOR             0xFF010123
-#define OID_SKGE_LINK_CAP              0xFF010124
-#define OID_SKGE_LINK_MODE             0xFF010125
-#define OID_SKGE_LINK_MODE_STATUS      0xFF010126
-#define OID_SKGE_LINK_STATUS           0xFF010127
-#define OID_SKGE_FLOWCTRL_CAP          0xFF010128
-#define OID_SKGE_FLOWCTRL_MODE         0xFF010129
-#define OID_SKGE_FLOWCTRL_STATUS       0xFF01012A
-#define OID_SKGE_PHY_OPERATION_CAP     0xFF01012B
-#define OID_SKGE_PHY_OPERATION_MODE    0xFF01012C
-#define OID_SKGE_PHY_OPERATION_STATUS  0xFF01012D
-#define OID_SKGE_MULTICAST_LIST                0xFF01012E
-#define OID_SKGE_CURRENT_PACKET_FILTER 0xFF01012F
-
-#define OID_SKGE_TRAP                  0xFF010130
-#define OID_SKGE_TRAP_NUMBER           0xFF010131
-
-#define OID_SKGE_RLMT_MODE             0xFF010140
-#define OID_SKGE_RLMT_PORT_NUMBER      0xFF010141
-#define OID_SKGE_RLMT_PORT_ACTIVE      0xFF010142
-#define OID_SKGE_RLMT_PORT_PREFERRED   0xFF010143
-#define OID_SKGE_INTERMEDIATE_SUPPORT  0xFF010160
-
-#define OID_SKGE_SPEED_CAP             0xFF010170
-#define OID_SKGE_SPEED_MODE            0xFF010171
-#define OID_SKGE_SPEED_STATUS          0xFF010172
-
-#define OID_SKGE_SENSOR_NUMBER         0xFF020100
-#define OID_SKGE_SENSOR_INDEX          0xFF020101
-#define OID_SKGE_SENSOR_DESCR          0xFF020102
-#define OID_SKGE_SENSOR_TYPE           0xFF020103
-#define OID_SKGE_SENSOR_VALUE          0xFF020104
-#define OID_SKGE_SENSOR_WAR_THRES_LOW  0xFF020105
-#define OID_SKGE_SENSOR_WAR_THRES_UPP  0xFF020106
-#define OID_SKGE_SENSOR_ERR_THRES_LOW  0xFF020107
-#define OID_SKGE_SENSOR_ERR_THRES_UPP  0xFF020108
-#define OID_SKGE_SENSOR_STATUS         0xFF020109
-#define OID_SKGE_SENSOR_WAR_CTS                0xFF02010A
-#define OID_SKGE_SENSOR_ERR_CTS                0xFF02010B
-#define OID_SKGE_SENSOR_WAR_TIME       0xFF02010C
-#define OID_SKGE_SENSOR_ERR_TIME       0xFF02010D
-
-#define OID_SKGE_CHKSM_NUMBER          0xFF020110
-#define OID_SKGE_CHKSM_RX_OK_CTS       0xFF020111
-#define OID_SKGE_CHKSM_RX_UNABLE_CTS   0xFF020112
-#define OID_SKGE_CHKSM_RX_ERR_CTS      0xFF020113
-#define OID_SKGE_CHKSM_TX_OK_CTS       0xFF020114
-#define OID_SKGE_CHKSM_TX_UNABLE_CTS   0xFF020115
-
-#define OID_SKGE_STAT_TX               0xFF020120
-#define OID_SKGE_STAT_TX_OCTETS                0xFF020121
-#define OID_SKGE_STAT_TX_BROADCAST     0xFF020122
-#define OID_SKGE_STAT_TX_MULTICAST     0xFF020123
-#define OID_SKGE_STAT_TX_UNICAST       0xFF020124
-#define OID_SKGE_STAT_TX_LONGFRAMES    0xFF020125
-#define OID_SKGE_STAT_TX_BURST         0xFF020126
-#define OID_SKGE_STAT_TX_PFLOWC                0xFF020127
-#define OID_SKGE_STAT_TX_FLOWC         0xFF020128
-#define OID_SKGE_STAT_TX_SINGLE_COL    0xFF020129
-#define OID_SKGE_STAT_TX_MULTI_COL     0xFF02012A
-#define OID_SKGE_STAT_TX_EXCESS_COL    0xFF02012B
-#define OID_SKGE_STAT_TX_LATE_COL      0xFF02012C
-#define OID_SKGE_STAT_TX_DEFFERAL      0xFF02012D
-#define OID_SKGE_STAT_TX_EXCESS_DEF    0xFF02012E
-#define OID_SKGE_STAT_TX_UNDERRUN      0xFF02012F
-#define OID_SKGE_STAT_TX_CARRIER       0xFF020130
-/* #define OID_SKGE_STAT_TX_UTIL       0xFF020131 */
-#define OID_SKGE_STAT_TX_64            0xFF020132
-#define OID_SKGE_STAT_TX_127           0xFF020133
-#define OID_SKGE_STAT_TX_255           0xFF020134
-#define OID_SKGE_STAT_TX_511           0xFF020135
-#define OID_SKGE_STAT_TX_1023          0xFF020136
-#define OID_SKGE_STAT_TX_MAX           0xFF020137
-#define OID_SKGE_STAT_TX_SYNC          0xFF020138
-#define OID_SKGE_STAT_TX_SYNC_OCTETS   0xFF020139
-#define OID_SKGE_STAT_RX               0xFF02013A
-#define OID_SKGE_STAT_RX_OCTETS                0xFF02013B
-#define OID_SKGE_STAT_RX_BROADCAST     0xFF02013C
-#define OID_SKGE_STAT_RX_MULTICAST     0xFF02013D
-#define OID_SKGE_STAT_RX_UNICAST       0xFF02013E
-#define OID_SKGE_STAT_RX_PFLOWC                0xFF02013F
-#define OID_SKGE_STAT_RX_FLOWC         0xFF020140
-#define OID_SKGE_STAT_RX_PFLOWC_ERR    0xFF020141
-#define OID_SKGE_STAT_RX_FLOWC_UNKWN   0xFF020142
-#define OID_SKGE_STAT_RX_BURST         0xFF020143
-#define OID_SKGE_STAT_RX_MISSED                0xFF020144
-#define OID_SKGE_STAT_RX_FRAMING       0xFF020145
-#define OID_SKGE_STAT_RX_OVERFLOW      0xFF020146
-#define OID_SKGE_STAT_RX_JABBER                0xFF020147
-#define OID_SKGE_STAT_RX_CARRIER       0xFF020148
-#define OID_SKGE_STAT_RX_IR_LENGTH     0xFF020149
-#define OID_SKGE_STAT_RX_SYMBOL                0xFF02014A
-#define OID_SKGE_STAT_RX_SHORTS                0xFF02014B
-#define OID_SKGE_STAT_RX_RUNT          0xFF02014C
-#define OID_SKGE_STAT_RX_CEXT          0xFF02014D
-#define OID_SKGE_STAT_RX_TOO_LONG      0xFF02014E
-#define OID_SKGE_STAT_RX_FCS           0xFF02014F
-/* #define OID_SKGE_STAT_RX_UTIL       0xFF020150 */
-#define OID_SKGE_STAT_RX_64            0xFF020151
-#define OID_SKGE_STAT_RX_127           0xFF020152
-#define OID_SKGE_STAT_RX_255           0xFF020153
-#define OID_SKGE_STAT_RX_511           0xFF020154
-#define OID_SKGE_STAT_RX_1023          0xFF020155
-#define OID_SKGE_STAT_RX_MAX           0xFF020156
-#define OID_SKGE_STAT_RX_LONGFRAMES    0xFF020157
-
-#define OID_SKGE_RLMT_CHANGE_CTS       0xFF020160
-#define OID_SKGE_RLMT_CHANGE_TIME      0xFF020161
-#define OID_SKGE_RLMT_CHANGE_ESTIM     0xFF020162
-#define OID_SKGE_RLMT_CHANGE_THRES     0xFF020163
-
-#define OID_SKGE_RLMT_PORT_INDEX       0xFF020164
-#define OID_SKGE_RLMT_STATUS           0xFF020165
-#define OID_SKGE_RLMT_TX_HELLO_CTS     0xFF020166
-#define OID_SKGE_RLMT_RX_HELLO_CTS     0xFF020167
-#define OID_SKGE_RLMT_TX_SP_REQ_CTS    0xFF020168
-#define OID_SKGE_RLMT_RX_SP_CTS                0xFF020169
-
-#define OID_SKGE_RLMT_MONITOR_NUMBER   0xFF010150
-#define OID_SKGE_RLMT_MONITOR_INDEX    0xFF010151
-#define OID_SKGE_RLMT_MONITOR_ADDR     0xFF010152
-#define OID_SKGE_RLMT_MONITOR_ERRS     0xFF010153
-#define OID_SKGE_RLMT_MONITOR_TIMESTAMP        0xFF010154
-#define OID_SKGE_RLMT_MONITOR_ADMIN    0xFF010155
-
-#define OID_SKGE_TX_SW_QUEUE_LEN       0xFF020170
-#define OID_SKGE_TX_SW_QUEUE_MAX       0xFF020171
-#define OID_SKGE_TX_RETRY              0xFF020172
-#define OID_SKGE_RX_INTR_CTS           0xFF020173
-#define OID_SKGE_TX_INTR_CTS           0xFF020174
-#define OID_SKGE_RX_NO_BUF_CTS         0xFF020175
-#define OID_SKGE_TX_NO_BUF_CTS         0xFF020176
-#define OID_SKGE_TX_USED_DESCR_NO      0xFF020177
-#define OID_SKGE_RX_DELIVERED_CTS      0xFF020178
-#define OID_SKGE_RX_OCTETS_DELIV_CTS   0xFF020179
-#define OID_SKGE_RX_HW_ERROR_CTS       0xFF02017A
-#define OID_SKGE_TX_HW_ERROR_CTS       0xFF02017B
-#define OID_SKGE_IN_ERRORS_CTS         0xFF02017C
-#define OID_SKGE_OUT_ERROR_CTS         0xFF02017D
-#define OID_SKGE_ERR_RECOVERY_CTS      0xFF02017E
-#define OID_SKGE_SYSUPTIME             0xFF02017F
-
-#define OID_SKGE_ALL_DATA              0xFF020190
-
-/* Defines for VCT. */
-#define OID_SKGE_VCT_GET               0xFF020200
-#define OID_SKGE_VCT_SET               0xFF020201
-#define OID_SKGE_VCT_STATUS            0xFF020202
-
-
-/* VCT struct to store a backup copy of VCT data after a port reset. */
-typedef struct s_PnmiVct {
-       SK_U8                   VctStatus;
-       SK_U8                   PCableLen;
-       SK_U32                  PMdiPairLen[4];
-       SK_U8                   PMdiPairSts[4];
-} SK_PNMI_VCT;
-
-
-/* VCT status values (to be given to CPA via OID_SKGE_VCT_STATUS). */
-#define SK_PNMI_VCT_NONE               0
-#define SK_PNMI_VCT_OLD_VCT_DATA       1
-#define SK_PNMI_VCT_NEW_VCT_DATA       2
-#define SK_PNMI_VCT_OLD_DSP_DATA       4
-#define SK_PNMI_VCT_NEW_DSP_DATA       8
-#define SK_PNMI_VCT_RUNNING            16
-
-
-/* VCT cable test status. */
-#define SK_PNMI_VCT_NORMAL_CABLE       0
-#define SK_PNMI_VCT_SHORT_CABLE                1
-#define SK_PNMI_VCT_OPEN_CABLE         2
-#define SK_PNMI_VCT_TEST_FAIL          3
-#define SK_PNMI_VCT_IMPEDANCE_MISMATCH 4
-
-#define        OID_SKGE_TRAP_SEN_WAR_LOW       500
-#define OID_SKGE_TRAP_SEN_WAR_UPP      501
-#define        OID_SKGE_TRAP_SEN_ERR_LOW       502
-#define OID_SKGE_TRAP_SEN_ERR_UPP      503
-#define OID_SKGE_TRAP_RLMT_CHANGE_THRES        520
-#define OID_SKGE_TRAP_RLMT_CHANGE_PORT 521
-#define OID_SKGE_TRAP_RLMT_PORT_DOWN   522
-#define OID_SKGE_TRAP_RLMT_PORT_UP     523
-#define OID_SKGE_TRAP_RLMT_SEGMENTATION        524
-
-
-/*
- * Define error numbers and messages for syslog
- */
-#define SK_PNMI_ERR001         (SK_ERRBASE_PNMI + 1)
-#define SK_PNMI_ERR001MSG      "SkPnmiGetStruct: Unknown OID"
-#define SK_PNMI_ERR002         (SK_ERRBASE_PNMI + 2)
-#define SK_PNMI_ERR002MSG      "SkPnmiGetStruct: Cannot read VPD keys"
-#define SK_PNMI_ERR003         (SK_ERRBASE_PNMI + 3)
-#define SK_PNMI_ERR003MSG      "OidStruct: Called with wrong OID"
-#define SK_PNMI_ERR004         (SK_ERRBASE_PNMI + 4)
-#define SK_PNMI_ERR004MSG      "OidStruct: Called with wrong action"
-#define SK_PNMI_ERR005         (SK_ERRBASE_PNMI + 5)
-#define SK_PNMI_ERR005MSG      "Perform: Cannot reset driver"
-#define SK_PNMI_ERR006         (SK_ERRBASE_PNMI + 6)
-#define SK_PNMI_ERR006MSG      "Perform: Unknown OID action command"
-#define SK_PNMI_ERR007         (SK_ERRBASE_PNMI + 7)
-#define SK_PNMI_ERR007MSG      "General: Driver description not initialized"
-#define SK_PNMI_ERR008         (SK_ERRBASE_PNMI + 8)
-#define SK_PNMI_ERR008MSG      "Addr: Tried to get unknown OID"
-#define SK_PNMI_ERR009         (SK_ERRBASE_PNMI + 9)
-#define SK_PNMI_ERR009MSG      "Addr: Unknown OID"
-#define SK_PNMI_ERR010         (SK_ERRBASE_PNMI + 10)
-#define SK_PNMI_ERR010MSG      "CsumStat: Unknown OID"
-#define SK_PNMI_ERR011         (SK_ERRBASE_PNMI + 11)
-#define SK_PNMI_ERR011MSG      "SensorStat: Sensor descr string too long"
-#define SK_PNMI_ERR012         (SK_ERRBASE_PNMI + 12)
-#define SK_PNMI_ERR012MSG      "SensorStat: Unknown OID"
-#define SK_PNMI_ERR013         (SK_ERRBASE_PNMI + 13)
-#define SK_PNMI_ERR013MSG      ""
-#define SK_PNMI_ERR014         (SK_ERRBASE_PNMI + 14)
-#define SK_PNMI_ERR014MSG      "Vpd: Cannot read VPD keys"
-#define SK_PNMI_ERR015         (SK_ERRBASE_PNMI + 15)
-#define SK_PNMI_ERR015MSG      "Vpd: Internal array for VPD keys to small"
-#define SK_PNMI_ERR016         (SK_ERRBASE_PNMI + 16)
-#define SK_PNMI_ERR016MSG      "Vpd: Key string too long"
-#define SK_PNMI_ERR017         (SK_ERRBASE_PNMI + 17)
-#define SK_PNMI_ERR017MSG      "Vpd: Invalid VPD status pointer"
-#define SK_PNMI_ERR018         (SK_ERRBASE_PNMI + 18)
-#define SK_PNMI_ERR018MSG      "Vpd: VPD data not valid"
-#define SK_PNMI_ERR019         (SK_ERRBASE_PNMI + 19)
-#define SK_PNMI_ERR019MSG      "Vpd: VPD entries list string too long"
-#define SK_PNMI_ERR021         (SK_ERRBASE_PNMI + 21)
-#define SK_PNMI_ERR021MSG      "Vpd: VPD data string too long"
-#define SK_PNMI_ERR022         (SK_ERRBASE_PNMI + 22)
-#define SK_PNMI_ERR022MSG      "Vpd: VPD data string too long should be errored before"
-#define SK_PNMI_ERR023         (SK_ERRBASE_PNMI + 23)
-#define SK_PNMI_ERR023MSG      "Vpd: Unknown OID in get action"
-#define SK_PNMI_ERR024         (SK_ERRBASE_PNMI + 24)
-#define SK_PNMI_ERR024MSG      "Vpd: Unknown OID in preset/set action"
-#define SK_PNMI_ERR025         (SK_ERRBASE_PNMI + 25)
-#define SK_PNMI_ERR025MSG      "Vpd: Cannot write VPD after modify entry"
-#define SK_PNMI_ERR026         (SK_ERRBASE_PNMI + 26)
-#define SK_PNMI_ERR026MSG      "Vpd: Cannot update VPD"
-#define SK_PNMI_ERR027         (SK_ERRBASE_PNMI + 27)
-#define SK_PNMI_ERR027MSG      "Vpd: Cannot delete VPD entry"
-#define SK_PNMI_ERR028         (SK_ERRBASE_PNMI + 28)
-#define SK_PNMI_ERR028MSG      "Vpd: Cannot update VPD after delete entry"
-#define SK_PNMI_ERR029         (SK_ERRBASE_PNMI + 29)
-#define SK_PNMI_ERR029MSG      "General: Driver description string too long"
-#define SK_PNMI_ERR030         (SK_ERRBASE_PNMI + 30)
-#define SK_PNMI_ERR030MSG      "General: Driver version not initialized"
-#define SK_PNMI_ERR031         (SK_ERRBASE_PNMI + 31)
-#define SK_PNMI_ERR031MSG      "General: Driver version string too long"
-#define SK_PNMI_ERR032         (SK_ERRBASE_PNMI + 32)
-#define SK_PNMI_ERR032MSG      "General: Cannot read VPD Name for HW descr"
-#define SK_PNMI_ERR033         (SK_ERRBASE_PNMI + 33)
-#define SK_PNMI_ERR033MSG      "General: HW description string too long"
-#define SK_PNMI_ERR034         (SK_ERRBASE_PNMI + 34)
-#define SK_PNMI_ERR034MSG      "General: Unknown OID"
-#define SK_PNMI_ERR035         (SK_ERRBASE_PNMI + 35)
-#define SK_PNMI_ERR035MSG      "Rlmt: Unknown OID"
-#define SK_PNMI_ERR036         (SK_ERRBASE_PNMI + 36)
-#define SK_PNMI_ERR036MSG      ""
-#define SK_PNMI_ERR037         (SK_ERRBASE_PNMI + 37)
-#define SK_PNMI_ERR037MSG      "Rlmt: SK_RLMT_MODE_CHANGE event return not 0"
-#define SK_PNMI_ERR038         (SK_ERRBASE_PNMI + 38)
-#define SK_PNMI_ERR038MSG      "Rlmt: SK_RLMT_PREFPORT_CHANGE event return not 0"
-#define SK_PNMI_ERR039         (SK_ERRBASE_PNMI + 39)
-#define SK_PNMI_ERR039MSG      "RlmtStat: Unknown OID"
-#define SK_PNMI_ERR040         (SK_ERRBASE_PNMI + 40)
-#define SK_PNMI_ERR040MSG      "PowerManagement: Unknown OID"
-#define SK_PNMI_ERR041         (SK_ERRBASE_PNMI + 41)
-#define SK_PNMI_ERR041MSG      "MacPrivateConf: Unknown OID"
-#define SK_PNMI_ERR042         (SK_ERRBASE_PNMI + 42)
-#define SK_PNMI_ERR042MSG      "MacPrivateConf: SK_HWEV_SET_ROLE returned not 0"
-#define SK_PNMI_ERR043         (SK_ERRBASE_PNMI + 43)
-#define SK_PNMI_ERR043MSG      "MacPrivateConf: SK_HWEV_SET_LMODE returned not 0"
-#define SK_PNMI_ERR044         (SK_ERRBASE_PNMI + 44)
-#define SK_PNMI_ERR044MSG      "MacPrivateConf: SK_HWEV_SET_FLOWMODE returned not 0"
-#define SK_PNMI_ERR045         (SK_ERRBASE_PNMI + 45)
-#define SK_PNMI_ERR045MSG      "MacPrivateConf: SK_HWEV_SET_SPEED returned not 0"
-#define SK_PNMI_ERR046         (SK_ERRBASE_PNMI + 46)
-#define SK_PNMI_ERR046MSG      "Monitor: Unknown OID"
-#define SK_PNMI_ERR047         (SK_ERRBASE_PNMI + 47)
-#define SK_PNMI_ERR047MSG      "SirqUpdate: Event function returns not 0"
-#define SK_PNMI_ERR048         (SK_ERRBASE_PNMI + 48)
-#define SK_PNMI_ERR048MSG      "RlmtUpdate: Event function returns not 0"
-#define SK_PNMI_ERR049         (SK_ERRBASE_PNMI + 49)
-#define SK_PNMI_ERR049MSG      "SkPnmiInit: Invalid size of 'CounterOffset' struct!!"
-#define SK_PNMI_ERR050         (SK_ERRBASE_PNMI + 50)
-#define SK_PNMI_ERR050MSG      "SkPnmiInit: Invalid size of 'StatAddr' table!!"
-#define SK_PNMI_ERR051         (SK_ERRBASE_PNMI + 51)
-#define SK_PNMI_ERR051MSG      "SkPnmiEvent: Port switch suspicious"
-#define SK_PNMI_ERR052         (SK_ERRBASE_PNMI + 52)
-#define SK_PNMI_ERR052MSG      ""
-
-/*
- * Management counter macros called by the driver
- */
-#define SK_PNMI_SET_DRIVER_DESCR(pAC,v)        ((pAC)->Pnmi.pDriverDescription = \
-       (char *)(v))
-
-#define SK_PNMI_SET_DRIVER_VER(pAC,v)  ((pAC)->Pnmi.pDriverVersion = \
-       (char *)(v))
-
-
-#define SK_PNMI_CNT_TX_QUEUE_LEN(pAC,v,p) \
-       { \
-               (pAC)->Pnmi.Port[p].TxSwQueueLen = (SK_U64)(v); \
-               if ((pAC)->Pnmi.Port[p].TxSwQueueLen > (pAC)->Pnmi.Port[p].TxSwQueueMax) { \
-                       (pAC)->Pnmi.Port[p].TxSwQueueMax = (pAC)->Pnmi.Port[p].TxSwQueueLen; \
-               } \
-       }
-#define SK_PNMI_CNT_TX_RETRY(pAC,p)    (((pAC)->Pnmi.Port[p].TxRetryCts)++)
-#define SK_PNMI_CNT_RX_INTR(pAC,p)     (((pAC)->Pnmi.Port[p].RxIntrCts)++)
-#define SK_PNMI_CNT_TX_INTR(pAC,p)     (((pAC)->Pnmi.Port[p].TxIntrCts)++)
-#define SK_PNMI_CNT_NO_RX_BUF(pAC,p)   (((pAC)->Pnmi.Port[p].RxNoBufCts)++)
-#define SK_PNMI_CNT_NO_TX_BUF(pAC,p)   (((pAC)->Pnmi.Port[p].TxNoBufCts)++)
-#define SK_PNMI_CNT_USED_TX_DESCR(pAC,v,p) \
-       ((pAC)->Pnmi.Port[p].TxUsedDescrNo=(SK_U64)(v));
-#define SK_PNMI_CNT_RX_OCTETS_DELIVERED(pAC,v,p) \
-       { \
-               ((pAC)->Pnmi.Port[p].RxDeliveredCts)++; \
-               (pAC)->Pnmi.Port[p].RxOctetsDeliveredCts += (SK_U64)(v); \
-       }
-#define SK_PNMI_CNT_ERR_RECOVERY(pAC,p)        (((pAC)->Pnmi.Port[p].ErrRecoveryCts)++);
-
-#define SK_PNMI_CNT_SYNC_OCTETS(pAC,p,v) \
-       { \
-               if ((p) < SK_MAX_MACS) { \
-                       ((pAC)->Pnmi.Port[p].StatSyncCts)++; \
-                       (pAC)->Pnmi.Port[p].StatSyncOctetsCts += (SK_U64)(v); \
-               } \
-       }
-
-#define SK_PNMI_CNT_RX_LONGFRAMES(pAC,p) \
-       { \
-               if ((p) < SK_MAX_MACS) { \
-                       ((pAC)->Pnmi.Port[p].StatRxLongFrameCts++); \
-               } \
-       }
-
-#define SK_PNMI_CNT_RX_FRAMETOOLONG(pAC,p) \
-       { \
-               if ((p) < SK_MAX_MACS) { \
-                       ((pAC)->Pnmi.Port[p].StatRxFrameTooLongCts++); \
-               } \
-       }
-
-#define SK_PNMI_CNT_RX_PMACC_ERR(pAC,p) \
-       { \
-               if ((p) < SK_MAX_MACS) { \
-                       ((pAC)->Pnmi.Port[p].StatRxPMaccErr++); \
-               } \
-       }
-
-/*
- * Conversion Macros
- */
-#define SK_PNMI_PORT_INST2LOG(i)       ((unsigned int)(i) - 1)
-#define SK_PNMI_PORT_LOG2INST(l)       ((unsigned int)(l) + 1)
-#define SK_PNMI_PORT_PHYS2LOG(p)       ((unsigned int)(p) + 1)
-#define SK_PNMI_PORT_LOG2PHYS(pAC,l)   ((unsigned int)(l) - 1)
-#define SK_PNMI_PORT_PHYS2INST(pAC,p)  \
-       (pAC->Pnmi.DualNetActiveFlag ? 2 : ((unsigned int)(p) + 2))
-#define SK_PNMI_PORT_INST2PHYS(pAC,i)  ((unsigned int)(i) - 2)
-
-/*
- * Structure definition for SkPnmiGetStruct and SkPnmiSetStruct
- */
-#define SK_PNMI_VPD_KEY_SIZE           5
-#define SK_PNMI_VPD_BUFSIZE            (VPD_SIZE)
-#define SK_PNMI_VPD_ENTRIES            (VPD_SIZE / 4)
-#define SK_PNMI_VPD_DATALEN            128 /*  Number of data bytes */
-
-#define SK_PNMI_MULTICAST_LISTLEN      64
-#define SK_PNMI_SENSOR_ENTRIES         (SK_MAX_SENSORS)
-#define SK_PNMI_CHECKSUM_ENTRIES       3
-#define SK_PNMI_MAC_ENTRIES            (SK_MAX_MACS + 1)
-#define SK_PNMI_MONITOR_ENTRIES                20
-#define SK_PNMI_TRAP_ENTRIES           10
-#define SK_PNMI_TRAPLEN                        128
-#define SK_PNMI_STRINGLEN1             80
-#define SK_PNMI_STRINGLEN2             25
-#define SK_PNMI_TRAP_QUEUE_LEN         512
-
-typedef struct s_PnmiVpd {
-       char                    VpdKey[SK_PNMI_VPD_KEY_SIZE];
-       char                    VpdValue[SK_PNMI_VPD_DATALEN];
-       SK_U8                   VpdAccess;
-       SK_U8                   VpdAction;
-} SK_PNMI_VPD;
-
-typedef struct s_PnmiSensor {
-       SK_U8                   SensorIndex;
-       char                    SensorDescr[SK_PNMI_STRINGLEN2];
-       SK_U8                   SensorType;
-       SK_U32                  SensorValue;
-       SK_U32                  SensorWarningThresholdLow;
-       SK_U32                  SensorWarningThresholdHigh;
-       SK_U32                  SensorErrorThresholdLow;
-       SK_U32                  SensorErrorThresholdHigh;
-       SK_U8                   SensorStatus;
-       SK_U64                  SensorWarningCts;
-       SK_U64                  SensorErrorCts;
-       SK_U64                  SensorWarningTimestamp;
-       SK_U64                  SensorErrorTimestamp;
-} SK_PNMI_SENSOR;
-
-typedef struct s_PnmiChecksum {
-       SK_U64                  ChecksumRxOkCts;
-       SK_U64                  ChecksumRxUnableCts;
-       SK_U64                  ChecksumRxErrCts;
-       SK_U64                  ChecksumTxOkCts;
-       SK_U64                  ChecksumTxUnableCts;
-} SK_PNMI_CHECKSUM;
-
-typedef struct s_PnmiStat {
-       SK_U64                  StatTxOkCts;
-       SK_U64                  StatTxOctetsOkCts;
-       SK_U64                  StatTxBroadcastOkCts;
-       SK_U64                  StatTxMulticastOkCts;
-       SK_U64                  StatTxUnicastOkCts;
-       SK_U64                  StatTxLongFramesCts;
-       SK_U64                  StatTxBurstCts;
-       SK_U64                  StatTxPauseMacCtrlCts;
-       SK_U64                  StatTxMacCtrlCts;
-       SK_U64                  StatTxSingleCollisionCts;
-       SK_U64                  StatTxMultipleCollisionCts;
-       SK_U64                  StatTxExcessiveCollisionCts;
-       SK_U64                  StatTxLateCollisionCts;
-       SK_U64                  StatTxDeferralCts;
-       SK_U64                  StatTxExcessiveDeferralCts;
-       SK_U64                  StatTxFifoUnderrunCts;
-       SK_U64                  StatTxCarrierCts;
-       SK_U64                  Dummy1; /* StatTxUtilization */
-       SK_U64                  StatTx64Cts;
-       SK_U64                  StatTx127Cts;
-       SK_U64                  StatTx255Cts;
-       SK_U64                  StatTx511Cts;
-       SK_U64                  StatTx1023Cts;
-       SK_U64                  StatTxMaxCts;
-       SK_U64                  StatTxSyncCts;
-       SK_U64                  StatTxSyncOctetsCts;
-       SK_U64                  StatRxOkCts;
-       SK_U64                  StatRxOctetsOkCts;
-       SK_U64                  StatRxBroadcastOkCts;
-       SK_U64                  StatRxMulticastOkCts;
-       SK_U64                  StatRxUnicastOkCts;
-       SK_U64                  StatRxLongFramesCts;
-       SK_U64                  StatRxPauseMacCtrlCts;
-       SK_U64                  StatRxMacCtrlCts;
-       SK_U64                  StatRxPauseMacCtrlErrorCts;
-       SK_U64                  StatRxMacCtrlUnknownCts;
-       SK_U64                  StatRxBurstCts;
-       SK_U64                  StatRxMissedCts;
-       SK_U64                  StatRxFramingCts;
-       SK_U64                  StatRxFifoOverflowCts;
-       SK_U64                  StatRxJabberCts;
-       SK_U64                  StatRxCarrierCts;
-       SK_U64                  StatRxIRLengthCts;
-       SK_U64                  StatRxSymbolCts;
-       SK_U64                  StatRxShortsCts;
-       SK_U64                  StatRxRuntCts;
-       SK_U64                  StatRxCextCts;
-       SK_U64                  StatRxTooLongCts;
-       SK_U64                  StatRxFcsCts;
-       SK_U64                  Dummy2; /* StatRxUtilization */
-       SK_U64                  StatRx64Cts;
-       SK_U64                  StatRx127Cts;
-       SK_U64                  StatRx255Cts;
-       SK_U64                  StatRx511Cts;
-       SK_U64                  StatRx1023Cts;
-       SK_U64                  StatRxMaxCts;
-} SK_PNMI_STAT;
-
-typedef struct s_PnmiConf {
-       char                    ConfMacCurrentAddr[6];
-       char                    ConfMacFactoryAddr[6];
-       SK_U8                   ConfPMD;
-       SK_U8                   ConfConnector;
-       SK_U8                   ConfLinkCapability;
-       SK_U8                   ConfLinkMode;
-       SK_U8                   ConfLinkModeStatus;
-       SK_U8                   ConfLinkStatus;
-       SK_U8                   ConfFlowCtrlCapability;
-       SK_U8                   ConfFlowCtrlMode;
-       SK_U8                   ConfFlowCtrlStatus;
-       SK_U8                   ConfPhyOperationCapability;
-       SK_U8                   ConfPhyOperationMode;
-       SK_U8                   ConfPhyOperationStatus;
-       SK_U8                   ConfSpeedCapability;
-       SK_U8                   ConfSpeedMode;
-       SK_U8                   ConfSpeedStatus;
-} SK_PNMI_CONF;
-
-typedef struct s_PnmiRlmt {
-       SK_U32                  RlmtIndex;
-       SK_U32                  RlmtStatus;
-       SK_U64                  RlmtTxHelloCts;
-       SK_U64                  RlmtRxHelloCts;
-       SK_U64                  RlmtTxSpHelloReqCts;
-       SK_U64                  RlmtRxSpHelloCts;
-} SK_PNMI_RLMT;
-
-typedef struct s_PnmiRlmtMonitor {
-       SK_U32                  RlmtMonitorIndex;
-       char                    RlmtMonitorAddr[6];
-       SK_U64                  RlmtMonitorErrorCts;
-       SK_U64                  RlmtMonitorTimestamp;
-       SK_U8                   RlmtMonitorAdmin;
-} SK_PNMI_RLMT_MONITOR;
-
-typedef struct s_PnmiRequestStatus {
-       SK_U32                  ErrorStatus;
-       SK_U32                  ErrorOffset;
-} SK_PNMI_REQUEST_STATUS;
-
-typedef struct s_PnmiStrucData {
-       SK_U32                  MgmtDBVersion;
-       SK_PNMI_REQUEST_STATUS  ReturnStatus;
-       SK_U32                  VpdFreeBytes;
-       char                    VpdEntriesList[SK_PNMI_VPD_ENTRIES * SK_PNMI_VPD_KEY_SIZE];
-       SK_U32                  VpdEntriesNumber;
-       SK_PNMI_VPD             Vpd[SK_PNMI_VPD_ENTRIES];
-       SK_U32                  PortNumber;
-       SK_U32                  DeviceType;
-       char                    DriverDescr[SK_PNMI_STRINGLEN1];
-       char                    DriverVersion[SK_PNMI_STRINGLEN2];
-       char                    HwDescr[SK_PNMI_STRINGLEN1];
-       char                    HwVersion[SK_PNMI_STRINGLEN2];
-       SK_U16                  Chipset;
-       SK_U32                  MtuSize;
-       SK_U32                  Action;
-       SK_U32                  TestResult;
-       SK_U8                   BusType;
-       SK_U8                   BusSpeed;
-       SK_U8                   BusWidth;
-       SK_U8                   SensorNumber;
-       SK_PNMI_SENSOR  Sensor[SK_PNMI_SENSOR_ENTRIES];
-       SK_U8                   ChecksumNumber;
-       SK_PNMI_CHECKSUM        Checksum[SK_PNMI_CHECKSUM_ENTRIES];
-       SK_PNMI_STAT    Stat[SK_PNMI_MAC_ENTRIES];
-       SK_PNMI_CONF    Conf[SK_PNMI_MAC_ENTRIES];
-       SK_U8                   RlmtMode;
-       SK_U32                  RlmtPortNumber;
-       SK_U8                   RlmtPortActive;
-       SK_U8                   RlmtPortPreferred;
-       SK_U64                  RlmtChangeCts;
-       SK_U64                  RlmtChangeTime;
-       SK_U64                  RlmtChangeEstimate;
-       SK_U64                  RlmtChangeThreshold;
-       SK_PNMI_RLMT    Rlmt[SK_MAX_MACS];
-       SK_U32                  RlmtMonitorNumber;
-       SK_PNMI_RLMT_MONITOR    RlmtMonitor[SK_PNMI_MONITOR_ENTRIES];
-       SK_U32                  TrapNumber;
-       SK_U8                   Trap[SK_PNMI_TRAP_QUEUE_LEN];
-       SK_U64                  TxSwQueueLen;
-       SK_U64                  TxSwQueueMax;
-       SK_U64                  TxRetryCts;
-       SK_U64                  RxIntrCts;
-       SK_U64                  TxIntrCts;
-       SK_U64                  RxNoBufCts;
-       SK_U64                  TxNoBufCts;
-       SK_U64                  TxUsedDescrNo;
-       SK_U64                  RxDeliveredCts;
-       SK_U64                  RxOctetsDeliveredCts;
-       SK_U64                  RxHwErrorsCts;
-       SK_U64                  TxHwErrorsCts;
-       SK_U64                  InErrorsCts;
-       SK_U64                  OutErrorsCts;
-       SK_U64                  ErrRecoveryCts;
-       SK_U64                  SysUpTime;
-} SK_PNMI_STRUCT_DATA;
-
-#define SK_PNMI_STRUCT_SIZE    (sizeof(SK_PNMI_STRUCT_DATA))
-#define SK_PNMI_MIN_STRUCT_SIZE        ((unsigned int)(SK_UPTR)\
-                                &(((SK_PNMI_STRUCT_DATA *)0)->VpdFreeBytes))
-                                                                                                               /*
-                                                                                                                * ReturnStatus field
-                                                                                                                * must be located
-                                                                                                                * before VpdFreeBytes
-                                                                                                                */
-
-/*
- * Various definitions
- */
-#define SK_PNMI_MAX_PROTOS     3
-
-#define SK_PNMI_CNT_NO         66      /* Must have the value of the enum
-                                        * SK_PNMI_MAX_IDX. Define SK_PNMI_CHECK
-                                        * for check while init phase 1
-                                        */
-
-/*
- * Estimate data structure
- */
-typedef struct s_PnmiEstimate {
-       unsigned int    EstValueIndex;
-       SK_U64                  EstValue[7];
-       SK_U64                  Estimate;
-       SK_TIMER                EstTimer;
-} SK_PNMI_ESTIMATE;
-
-
-/*
- * VCT timer data structure
- */
-typedef struct s_VctTimer {
-       SK_TIMER                VctTimer;
-} SK_PNMI_VCT_TIMER;
-
-
-/*
- * PNMI specific adapter context structure
- */
-typedef struct s_PnmiPort {
-       SK_U64                  StatSyncCts;
-       SK_U64                  StatSyncOctetsCts;
-       SK_U64                  StatRxLongFrameCts;
-       SK_U64                  StatRxFrameTooLongCts;
-       SK_U64                  StatRxPMaccErr;
-       SK_U64                  TxSwQueueLen;
-       SK_U64                  TxSwQueueMax;
-       SK_U64                  TxRetryCts;
-       SK_U64                  RxIntrCts;
-       SK_U64                  TxIntrCts;
-       SK_U64                  RxNoBufCts;
-       SK_U64                  TxNoBufCts;
-       SK_U64                  TxUsedDescrNo;
-       SK_U64                  RxDeliveredCts;
-       SK_U64                  RxOctetsDeliveredCts;
-       SK_U64                  RxHwErrorsCts;
-       SK_U64                  TxHwErrorsCts;
-       SK_U64                  InErrorsCts;
-       SK_U64                  OutErrorsCts;
-       SK_U64                  ErrRecoveryCts;
-       SK_U64                  RxShortZeroMark;
-       SK_U64                  CounterOffset[SK_PNMI_CNT_NO];
-       SK_U32                  CounterHigh[SK_PNMI_CNT_NO];
-       SK_BOOL                 ActiveFlag;
-       SK_U8                   Align[3];
-} SK_PNMI_PORT;
-
-
-typedef struct s_PnmiData {
-       SK_PNMI_PORT    Port    [SK_MAX_MACS];
-       SK_PNMI_PORT    BufPort [SK_MAX_MACS]; /* 2002-09-13 pweber  */
-       SK_U64                  VirtualCounterOffset[SK_PNMI_CNT_NO];
-       SK_U32                  TestResult;
-       char                    HwVersion[10];
-       SK_U16                  Align01;
-
-       char                    *pDriverDescription;
-       char                    *pDriverVersion;
-
-       int                             MacUpdatedFlag;
-       int                             RlmtUpdatedFlag;
-       int                             SirqUpdatedFlag;
-
-       SK_U64                  RlmtChangeCts;
-       SK_U64                  RlmtChangeTime;
-       SK_PNMI_ESTIMATE        RlmtChangeEstimate;
-       SK_U64                  RlmtChangeThreshold;
-
-       SK_U64                  StartUpTime;
-       SK_U32                  DeviceType;
-       char                    PciBusSpeed;
-       char                    PciBusWidth;
-       char                    Chipset;
-       char                    PMD;
-       char                    Connector;
-       SK_BOOL                 DualNetActiveFlag;
-       SK_U16                  Align02;
-
-       char                    TrapBuf[SK_PNMI_TRAP_QUEUE_LEN];
-       unsigned int    TrapBufFree;
-       unsigned int    TrapQueueBeg;
-       unsigned int    TrapQueueEnd;
-       unsigned int    TrapBufPad;
-       unsigned int    TrapUnique;
-       SK_U8           VctStatus[SK_MAX_MACS];
-       SK_PNMI_VCT     VctBackup[SK_MAX_MACS];
-       SK_PNMI_VCT_TIMER VctTimeout[SK_MAX_MACS];
-} SK_PNMI;
-
-/*
- * Function prototypes
- */
-extern int SkPnmiInit(SK_AC *pAc, SK_IOC IoC, int level);
-extern int SkPnmiGetVar(SK_AC *pAc, SK_IOC IoC, SK_U32 Id, void* pBuf,
-       unsigned int* pLen, SK_U32 Instance, SK_U32 NetIndex);
-extern int SkPnmiPreSetVar(SK_AC *pAc, SK_IOC IoC, SK_U32 Id,
-       void* pBuf, unsigned int *pLen, SK_U32 Instance, SK_U32 NetIndex);
-extern int SkPnmiSetVar(SK_AC *pAc, SK_IOC IoC, SK_U32 Id, void* pBuf,
-       unsigned int *pLen, SK_U32 Instance, SK_U32 NetIndex);
-extern int SkPnmiGetStruct(SK_AC *pAc, SK_IOC IoC, void* pBuf,
-       unsigned int *pLen, SK_U32 NetIndex);
-extern int SkPnmiPreSetStruct(SK_AC *pAc, SK_IOC IoC, void* pBuf,
-       unsigned int *pLen, SK_U32 NetIndex);
-extern int SkPnmiSetStruct(SK_AC *pAc, SK_IOC IoC, void* pBuf,
-       unsigned int *pLen, SK_U32 NetIndex);
-extern int SkPnmiEvent(SK_AC *pAc, SK_IOC IoC, SK_U32 Event,
-       SK_EVPARA Param);
-
-#endif
+/*****************************************************************************
+ *
+ * Name:       skgepnmi.h
+ * Project:    GEnesis, PCI Gigabit Ethernet Adapter
+ * Version:    $Revision: 1.1.1.1 $
+ * Date:       $Date: 2009/03/25 22:22:09 $
+ * Purpose:    Defines for Private Network Management Interface
+ *
+ ****************************************************************************/
+
+/******************************************************************************
+ *
+ *     (C)Copyright 1998-2001 SysKonnect GmbH.
+ *
+ *     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.
+ *
+ *     The information in this file is provided "AS IS" without warranty.
+ *
+ ******************************************************************************/
+
+/*****************************************************************************
+ *
+ * History:
+ *
+ *     $Log: skgepnmi.h,v $
+ *     Revision 1.1.1.1  2009/03/25 22:22:09  kenagy
+ *     no message
+ *     
+ *     Revision 1.59  2002/12/16 14:03:50  tschilli
+ *     New defines for VCT added.
+ *
+ *     Revision 1.58  2002/12/16 09:04:59  tschilli
+ *     Code for VCT handling added.
+ *
+ *     Revision 1.57  2002/09/26 12:41:05  tschilli
+ *     SK_PNMI_PORT BufPort entry in struct SK_PNMI added.
+ *
+ *     Revision 1.56  2002/08/16 11:10:41  rwahl
+ *     - Replaced c++ comment.
+ *
+ *     Revision 1.55  2002/08/09 15:40:21  rwahl
+ *     Editorial change (renamed ConfSpeedCap).
+ *
+ *     Revision 1.54  2002/08/09 11:06:07  rwahl
+ *     Added OID_SKGE_SPEED_CAP.
+ *
+ *     Revision 1.53  2002/08/09 09:45:28  rwahl
+ *     Added support for NDIS OID_PNP_xxx.
+ *     Editorial changes.
+ *
+ *     Revision 1.52  2002/08/06 17:54:07  rwahl
+ *     - Added speed cap to PNMI config struct.
+ *
+ *     Revision 1.51  2002/07/17 19:19:26  rwahl
+ *     - Added OID_SKGE_SPEED_MODE and OID_SKGE_SPEED_STATUS.
+ *     - Added SK_PNMI_CNT_RX_PMACC_ERR() & SK_PNMI_CNT_RX_LONGFRAMES().
+ *     - Added speed mode & status to PNMI config struct.
+ *     - Editorial changes.
+ *
+ *     Revision 1.50  2002/05/22 08:59:37  rwahl
+ *     Added string definitions for error msgs.
+ *
+ *     Revision 1.49  2001/11/20 09:23:50  rwahl
+ *     - pnmi struct: reordered and aligned to 32bit.
+ *
+ *     Revision 1.48  2001/02/23 14:34:24  mkunz
+ *     Changed macro PHYS2INST. Added pAC to Interface
+ *
+ *     Revision 1.47  2001/02/07 08:28:23  mkunz
+ *     - Added Oids:   OID_SKGE_DIAG_ACTION
+ *                                     OID_SKGE_DIAG_RESULT
+ *                                     OID_SKGE_MULTICAST_LIST
+ *                                     OID_SKGE_CURRENT_PACKET_FILTER
+ *                                     OID_SKGE_INTERMEDIATE_SUPPORT
+ *     - Changed value of OID_SKGE_MTU
+ *
+ *     Revision 1.46  2001/02/06 10:01:41  mkunz
+ *     - Pnmi V4 dual net support added. Interface functions and macros extended
+ *     - Vpd bug fixed
+ *     - OID_SKGE_MTU added
+ *
+ *     Revision 1.45  2001/01/22 13:41:37  rassmann
+ *     Supporting two nets on dual-port adapters.
+ *
+ *     Revision 1.44  2000/09/07 07:35:27  rwahl
+ *     - removed NDIS counter specific data type.
+ *     - fixed spelling for OID_SKGE_RLMT_PORT_PREFERRED.
+ *
+ *     Revision 1.43  2000/08/04 11:41:08  rwahl
+ *     - Fixed compiler warning (port is always >= 0) for macros
+ *       SK_PNMI_CNT_RX_LONGFRAMES & SK_PNMI_CNT_SYNC_OCTETS
+ *
+ *     Revision 1.42  2000/08/03 15:14:07  rwahl
+ *     - Corrected error in driver macros addressing a physical port.
+ *
+ *     Revision 1.41  2000/08/01 16:22:29  rwahl
+ *     - Changed MDB version to 3.1.
+ *     - Added definitions for StatRxLongFrames counter.
+ *     - Added macro to be used by driver to count long frames received.
+ *     - Added directive to control width (default = 32bit) of NDIS statistic
+ *       counters (SK_NDIS_64BIT_CTR).
+ *
+ *     Revision 1.40  2000/03/31 13:51:34  rwahl
+ *     Added SK_UPTR cast to offset calculation for PNMI struct fields;
+ *     missing cast caused compiler warnings by Win64 compiler.
+ *
+ *     Revision 1.39  1999/12/06 10:09:47  rwahl
+ *     Added new error log message.
+ *
+ *     Revision 1.38  1999/11/22 13:57:55  cgoos
+ *     Changed license header to GPL.
+ *
+ *     Revision 1.37  1999/09/14 14:25:32  rwahl
+ *     Set MDB version for 1000Base-T (sensors, Master/Slave) changes.
+ *
+ *     Revision 1.36  1999/05/20 09:24:56  cgoos
+ *     Changes for 1000Base-T (sensors, Master/Slave).
+ *
+ *     Revision 1.35  1999/04/13 15:10:51  mhaveman
+ *     Replaced RLMT macros SK_RLMT_CHECK_xxx again by those of PNMI to
+ *     grant unified interface. But PNMI macros will store the same
+ *     value as RLMT macros.
+ *
+ *     Revision 1.34  1999/04/13 15:03:49  mhaveman
+ *     -Changed copyright
+ *     -Removed SK_PNMI_RLMT_MODE_CHK_xxx macros. Those of RLMT should be
+ *      used.
+ *
+ *     Revision 1.33  1999/03/23 10:41:02  mhaveman
+ *     Changed comments.
+ *
+ *     Revision 1.32  1999/01/25 15:01:33  mhaveman
+ *     Added support for multiple simultaniously active ports.
+ *
+ *     Revision 1.31  1999/01/19 10:06:26  mhaveman
+ *     Added new error log message.
+ *
+ *     Revision 1.30  1999/01/05 10:34:49  mhaveman
+ *     Fixed little error in RlmtChangeEstimate calculation.
+ *
+ *     Revision 1.29  1999/01/05 09:59:41  mhaveman
+ *     Redesigned port switch average calculation to avoid 64bit
+ *     arithmetic.
+ *
+ *     Revision 1.28  1998/12/08 10:05:48  mhaveman
+ *     Defined macro SK_PNMI_MIN_STRUCT_SIZE.
+ *
+ *     Revision 1.27  1998/12/03 14:39:35  mhaveman
+ *     Fixed problem that LSTAT was enumerated wrong.
+ *
+ *     Revision 1.26  1998/12/03 11:19:51  mhaveman
+ *     Changed contents of errlog message SK_PNMI_ERR016MSG
+ *
+ *     Revision 1.25  1998/12/01 10:40:04  mhaveman
+ *     Changed size of SensorNumber, ChecksumNumber and RlmtPortNumber in
+ *     SK_PNMI_STRUCT_DATA to be conform with OID definition.
+ *
+ *     Revision 1.24  1998/11/20 08:09:27  mhaveman
+ *     Added macros to convert between logical, physical port indexes and
+ *     instances.
+ *
+ *     Revision 1.23  1998/11/10 13:41:13  mhaveman
+ *     Needed to change interface, because NT driver needs a return value
+ *     of needed buffer space on TOO_SHORT errors. Therefore all
+ *     SkPnmiGet/Preset/Set functions now have a pointer to the length
+ *     parameter, where the needed space on error is returned.
+ *
+ *     Revision 1.22  1998/11/03 12:05:51  mhaveman
+ *     Added pAC parameter to counter macors.
+ *
+ *     Revision 1.21  1998/11/02 10:47:36  mhaveman
+ *     Added syslog messages for internal errors.
+ *
+ *     Revision 1.20  1998/10/30 15:49:36  mhaveman
+ *     -Removed unused SK_PNMI_UTILIZATION_BASE and EstOldCnt.
+ *     -Redefined SK_PNMI_CHG_EST_BASE to hundreds of seconds.
+ *
+ *     Revision 1.19  1998/10/29 15:38:44  mhaveman
+ *     Changed string lengths of PNMI_STRUCT_DATA structure because
+ *     string OIDs are now encoded with leading length ocetet.
+ *
+ *     Revision 1.18  1998/10/29 08:52:27  mhaveman
+ *     -Added byte to strings in PNMI_STRUCT_DATA structure.
+ *     -Shortened SK_PNMI_RLMT structure to SK_MAX_MACS elements.
+ *
+ *     Revision 1.17  1998/10/28 08:49:50  mhaveman
+ *     -Changed type of Instance back to SK_U32 because of VPD
+ *     -Changed type from SK_U8 to char of PciBusSpeed, PciBusWidth, PMD,
+ *      and Connector.
+ *
+ *     Revision 1.16  1998/10/22 10:42:31  mhaveman
+ *     -Removed (SK_U32) casts for OIDs
+ *     -excluded NDIS OIDs when they are already defined with ifndef _NDIS_
+ *
+ *     Revision 1.15  1998/10/20 13:56:28  mhaveman
+ *     Headerfile includes now directly other header files to comile correctly.
+ *
+ *     Revision 1.14  1998/10/20 07:31:09  mhaveman
+ *     Made type changes to unsigned int where possible.
+ *
+ *     Revision 1.13  1998/10/19 10:53:13  mhaveman
+ *     -Casted OID definitions to SK_U32
+ *     -Renamed RlmtMAC... to RlmtPort...
+ *     -Changed wrong type of VpdEntriesList from SK_U32 to char *
+ *
+ *     Revision 1.12  1998/10/13 07:42:27  mhaveman
+ *     -Added OIDs OID_SKGE_TRAP_NUMBER and OID_SKGE_ALL_DATA
+ *     -Removed old cvs history entries
+ *     -Renamed MacNumber to PortNumber
+ *
+ *     Revision 1.11  1998/10/07 10:55:24  mhaveman
+ *     -Added OID_MDB_VERSION. Therefore was a renumbering of the VPD OIDs
+ *      necessary.
+ *     -Added OID_GEN_ Ids to support the windows driver.
+ *
+ *     Revision 1.10  1998/09/30 13:41:10  mhaveman
+ *     Renamed some OIDs to reduce usage of 'MAC' which is replaced by 'PORT'.
+ *
+ *     Revision 1.9  1998/09/04 17:06:17  mhaveman
+ *     -Added SyncCounter as macro.
+ *     -Renamed OID_SKGE_.._NO_DESCR_CTS to OID_SKGE_.._NO_BUF_CTS.
+ *     -Added macros for driver description and version strings.
+ *
+ *     Revision 1.8  1998/09/04 14:36:52  mhaveman
+ *     Added OIDs and Structure to access value of macro counters which are
+ *     counted by the driver.
+ *
+ *     Revision 1.7  1998/09/04 11:59:36  mhaveman
+ *     Everything compiles now. Driver Macros for counting still missing.
+ *
+ ****************************************************************************/
+
+#ifndef _SKGEPNMI_H_
+#define _SKGEPNMI_H_
+
+/*
+ * Include dependencies
+ */
+#include "h/sktypes.h"
+#include "h/skerror.h"
+#include "h/sktimer.h"
+#include "h/ski2c.h"
+#include "h/skaddr.h"
+#include "h/skrlmt.h"
+#include "h/skvpd.h"
+
+/*
+ * Management Database Version
+ */
+#define SK_PNMI_MDB_VERSION            0x00030001      /* 3.1 */
+
+
+/*
+ * Event definitions
+ */
+#define SK_PNMI_EVT_SIRQ_OVERFLOW      1       /* Counter overflow */
+#define SK_PNMI_EVT_SEN_WAR_LOW                2       /* Lower war thres exceeded */
+#define SK_PNMI_EVT_SEN_WAR_UPP                3       /* Upper war thres exceeded */
+#define SK_PNMI_EVT_SEN_ERR_LOW                4       /* Lower err thres exceeded */
+#define SK_PNMI_EVT_SEN_ERR_UPP                5       /* Upper err thres exceeded */
+#define SK_PNMI_EVT_CHG_EST_TIMER      6       /* Timer event for RLMT Chg */
+#define SK_PNMI_EVT_UTILIZATION_TIMER  7       /* Timer event for Utiliza. */
+#define SK_PNMI_EVT_CLEAR_COUNTER      8       /* Clear statistic counters */
+#define SK_PNMI_EVT_XMAC_RESET         9       /* XMAC will be reset */
+
+#define SK_PNMI_EVT_RLMT_PORT_UP       10      /* Port came logically up */
+#define SK_PNMI_EVT_RLMT_PORT_DOWN     11      /* Port went logically down */
+#define SK_PNMI_EVT_RLMT_SEGMENTATION  13      /* Two SP root bridges found */
+#define SK_PNMI_EVT_RLMT_ACTIVE_DOWN   14      /* Port went logically down */
+#define SK_PNMI_EVT_RLMT_ACTIVE_UP     15      /* Port came logically up */
+#define SK_PNMI_EVT_RLMT_SET_NETS      16      /* 1. Parameter is number of nets
+                                                                                               1 = single net; 2 = dual net */
+#define SK_PNMI_EVT_VCT_RESET          17      /* VCT port reset timer event started with SET. */
+
+
+/*
+ * Return values
+ */
+#define SK_PNMI_ERR_OK                 0
+#define SK_PNMI_ERR_GENERAL            1
+#define SK_PNMI_ERR_TOO_SHORT          2
+#define SK_PNMI_ERR_BAD_VALUE          3
+#define SK_PNMI_ERR_READ_ONLY          4
+#define SK_PNMI_ERR_UNKNOWN_OID                5
+#define SK_PNMI_ERR_UNKNOWN_INST       6
+#define SK_PNMI_ERR_UNKNOWN_NET                7
+
+
+/*
+ * Return values of driver reset function SK_DRIVER_RESET() and
+ * driver event function SK_DRIVER_EVENT()
+ */
+#define SK_PNMI_ERR_OK                 0
+#define SK_PNMI_ERR_FAIL               1
+
+
+/*
+ * Return values of driver test function SK_DRIVER_SELFTEST()
+ */
+#define SK_PNMI_TST_UNKNOWN            (1 << 0)
+#define SK_PNMI_TST_TRANCEIVER         (1 << 1)
+#define SK_PNMI_TST_ASIC               (1 << 2)
+#define SK_PNMI_TST_SENSOR             (1 << 3)
+#define SK_PNMI_TST_POWERMGMT          (1 << 4)
+#define SK_PNMI_TST_PCI                        (1 << 5)
+#define SK_PNMI_TST_MAC                        (1 << 6)
+
+
+/*
+ * RLMT specific definitions
+ */
+#define SK_PNMI_RLMT_STATUS_STANDBY    1
+#define SK_PNMI_RLMT_STATUS_ACTIVE     2
+#define SK_PNMI_RLMT_STATUS_ERROR      3
+
+#define SK_PNMI_RLMT_LSTAT_PHY_DOWN    1
+#define SK_PNMI_RLMT_LSTAT_AUTONEG     2
+#define SK_PNMI_RLMT_LSTAT_LOG_DOWN    3
+#define SK_PNMI_RLMT_LSTAT_LOG_UP      4
+#define SK_PNMI_RLMT_LSTAT_INDETERMINATED 5
+
+#define SK_PNMI_RLMT_MODE_CHK_LINK     (SK_RLMT_CHECK_LINK)
+#define SK_PNMI_RLMT_MODE_CHK_RX       (SK_RLMT_CHECK_LOC_LINK)
+#define SK_PNMI_RLMT_MODE_CHK_SPT      (SK_RLMT_CHECK_SEG)
+/* #define SK_PNMI_RLMT_MODE_CHK_EX */
+
+/*
+ * OID definition
+ */
+#ifndef _NDIS_ /* Check, whether NDIS already included OIDs */
+
+#define OID_GEN_XMIT_OK                        0x00020101
+#define OID_GEN_RCV_OK                 0x00020102
+#define OID_GEN_XMIT_ERROR             0x00020103
+#define OID_GEN_RCV_ERROR              0x00020104
+#define OID_GEN_RCV_NO_BUFFER          0x00020105
+
+/* #define OID_GEN_DIRECTED_BYTES_XMIT 0x00020201 */
+#define OID_GEN_DIRECTED_FRAMES_XMIT   0x00020202
+/* #define OID_GEN_MULTICAST_BYTES_XMIT        0x00020203 */
+#define OID_GEN_MULTICAST_FRAMES_XMIT  0x00020204
+/* #define OID_GEN_BROADCAST_BYTES_XMIT        0x00020205 */
+#define OID_GEN_BROADCAST_FRAMES_XMIT  0x00020206
+/* #define OID_GEN_DIRECTED_BYTES_RCV  0x00020207 */
+#define OID_GEN_DIRECTED_FRAMES_RCV    0x00020208
+/* #define OID_GEN_MULTICAST_BYTES_RCV 0x00020209 */
+#define OID_GEN_MULTICAST_FRAMES_RCV   0x0002020A
+/* #define OID_GEN_BROADCAST_BYTES_RCV 0x0002020B */
+#define OID_GEN_BROADCAST_FRAMES_RCV   0x0002020C
+#define OID_GEN_RCV_CRC_ERROR          0x0002020D
+#define OID_GEN_TRANSMIT_QUEUE_LENGTH  0x0002020E
+
+#define OID_802_3_PERMANENT_ADDRESS    0x01010101
+#define OID_802_3_CURRENT_ADDRESS      0x01010102
+/* #define OID_802_3_MULTICAST_LIST    0x01010103 */
+/* #define OID_802_3_MAXIMUM_LIST_SIZE 0x01010104 */
+/* #define OID_802_3_MAC_OPTIONS       0x01010105 */
+
+#define OID_802_3_RCV_ERROR_ALIGNMENT  0x01020101
+#define OID_802_3_XMIT_ONE_COLLISION   0x01020102
+#define OID_802_3_XMIT_MORE_COLLISIONS 0x01020103
+#define OID_802_3_XMIT_DEFERRED                0x01020201
+#define OID_802_3_XMIT_MAX_COLLISIONS  0x01020202
+#define OID_802_3_RCV_OVERRUN          0x01020203
+#define OID_802_3_XMIT_UNDERRUN                0x01020204
+#define OID_802_3_XMIT_TIMES_CRS_LOST  0x01020206
+#define OID_802_3_XMIT_LATE_COLLISIONS 0x01020207
+
+/*
+ * PnP and PM OIDs
+ */
+#ifdef SK_POWER_MGMT
+#define OID_PNP_CAPABILITIES           0xFD010100
+#define OID_PNP_SET_POWER              0xFD010101
+#define OID_PNP_QUERY_POWER            0xFD010102
+#define OID_PNP_ADD_WAKE_UP_PATTERN    0xFD010103
+#define OID_PNP_REMOVE_WAKE_UP_PATTERN 0xFD010104
+#define OID_PNP_ENABLE_WAKE_UP         0xFD010106
+#endif /* SK_POWER_MGMT */
+
+#endif /* _NDIS_ */
+
+#define OID_SKGE_MDB_VERSION           0xFF010100
+#define OID_SKGE_SUPPORTED_LIST                0xFF010101
+#define OID_SKGE_VPD_FREE_BYTES                0xFF010102
+#define OID_SKGE_VPD_ENTRIES_LIST      0xFF010103
+#define OID_SKGE_VPD_ENTRIES_NUMBER    0xFF010104
+#define OID_SKGE_VPD_KEY               0xFF010105
+#define OID_SKGE_VPD_VALUE             0xFF010106
+#define OID_SKGE_VPD_ACCESS            0xFF010107
+#define OID_SKGE_VPD_ACTION            0xFF010108
+
+#define OID_SKGE_PORT_NUMBER           0xFF010110
+#define OID_SKGE_DEVICE_TYPE           0xFF010111
+#define OID_SKGE_DRIVER_DESCR          0xFF010112
+#define OID_SKGE_DRIVER_VERSION                0xFF010113
+#define OID_SKGE_HW_DESCR              0xFF010114
+#define OID_SKGE_HW_VERSION            0xFF010115
+#define OID_SKGE_CHIPSET               0xFF010116
+#define OID_SKGE_ACTION                        0xFF010117
+#define OID_SKGE_RESULT                        0xFF010118
+#define OID_SKGE_BUS_TYPE              0xFF010119
+#define OID_SKGE_BUS_SPEED             0xFF01011A
+#define OID_SKGE_BUS_WIDTH             0xFF01011B
+/* 0xFF01011C unused */
+#define OID_SKGE_DIAG_ACTION           0xFF01011D
+#define OID_SKGE_DIAG_RESULT           0xFF01011E
+#define OID_SKGE_MTU                   0xFF01011F
+#define OID_SKGE_PHYS_CUR_ADDR         0xFF010120
+#define OID_SKGE_PHYS_FAC_ADDR         0xFF010121
+#define OID_SKGE_PMD                   0xFF010122
+#define OID_SKGE_CONNECTOR             0xFF010123
+#define OID_SKGE_LINK_CAP              0xFF010124
+#define OID_SKGE_LINK_MODE             0xFF010125
+#define OID_SKGE_LINK_MODE_STATUS      0xFF010126
+#define OID_SKGE_LINK_STATUS           0xFF010127
+#define OID_SKGE_FLOWCTRL_CAP          0xFF010128
+#define OID_SKGE_FLOWCTRL_MODE         0xFF010129
+#define OID_SKGE_FLOWCTRL_STATUS       0xFF01012A
+#define OID_SKGE_PHY_OPERATION_CAP     0xFF01012B
+#define OID_SKGE_PHY_OPERATION_MODE    0xFF01012C
+#define OID_SKGE_PHY_OPERATION_STATUS  0xFF01012D
+#define OID_SKGE_MULTICAST_LIST                0xFF01012E
+#define OID_SKGE_CURRENT_PACKET_FILTER 0xFF01012F
+
+#define OID_SKGE_TRAP                  0xFF010130
+#define OID_SKGE_TRAP_NUMBER           0xFF010131
+
+#define OID_SKGE_RLMT_MODE             0xFF010140
+#define OID_SKGE_RLMT_PORT_NUMBER      0xFF010141
+#define OID_SKGE_RLMT_PORT_ACTIVE      0xFF010142
+#define OID_SKGE_RLMT_PORT_PREFERRED   0xFF010143
+#define OID_SKGE_INTERMEDIATE_SUPPORT  0xFF010160
+
+#define OID_SKGE_SPEED_CAP             0xFF010170
+#define OID_SKGE_SPEED_MODE            0xFF010171
+#define OID_SKGE_SPEED_STATUS          0xFF010172
+
+#define OID_SKGE_SENSOR_NUMBER         0xFF020100
+#define OID_SKGE_SENSOR_INDEX          0xFF020101
+#define OID_SKGE_SENSOR_DESCR          0xFF020102
+#define OID_SKGE_SENSOR_TYPE           0xFF020103
+#define OID_SKGE_SENSOR_VALUE          0xFF020104
+#define OID_SKGE_SENSOR_WAR_THRES_LOW  0xFF020105
+#define OID_SKGE_SENSOR_WAR_THRES_UPP  0xFF020106
+#define OID_SKGE_SENSOR_ERR_THRES_LOW  0xFF020107
+#define OID_SKGE_SENSOR_ERR_THRES_UPP  0xFF020108
+#define OID_SKGE_SENSOR_STATUS         0xFF020109
+#define OID_SKGE_SENSOR_WAR_CTS                0xFF02010A
+#define OID_SKGE_SENSOR_ERR_CTS                0xFF02010B
+#define OID_SKGE_SENSOR_WAR_TIME       0xFF02010C
+#define OID_SKGE_SENSOR_ERR_TIME       0xFF02010D
+
+#define OID_SKGE_CHKSM_NUMBER          0xFF020110
+#define OID_SKGE_CHKSM_RX_OK_CTS       0xFF020111
+#define OID_SKGE_CHKSM_RX_UNABLE_CTS   0xFF020112
+#define OID_SKGE_CHKSM_RX_ERR_CTS      0xFF020113
+#define OID_SKGE_CHKSM_TX_OK_CTS       0xFF020114
+#define OID_SKGE_CHKSM_TX_UNABLE_CTS   0xFF020115
+
+#define OID_SKGE_STAT_TX               0xFF020120
+#define OID_SKGE_STAT_TX_OCTETS                0xFF020121
+#define OID_SKGE_STAT_TX_BROADCAST     0xFF020122
+#define OID_SKGE_STAT_TX_MULTICAST     0xFF020123
+#define OID_SKGE_STAT_TX_UNICAST       0xFF020124
+#define OID_SKGE_STAT_TX_LONGFRAMES    0xFF020125
+#define OID_SKGE_STAT_TX_BURST         0xFF020126
+#define OID_SKGE_STAT_TX_PFLOWC                0xFF020127
+#define OID_SKGE_STAT_TX_FLOWC         0xFF020128
+#define OID_SKGE_STAT_TX_SINGLE_COL    0xFF020129
+#define OID_SKGE_STAT_TX_MULTI_COL     0xFF02012A
+#define OID_SKGE_STAT_TX_EXCESS_COL    0xFF02012B
+#define OID_SKGE_STAT_TX_LATE_COL      0xFF02012C
+#define OID_SKGE_STAT_TX_DEFFERAL      0xFF02012D
+#define OID_SKGE_STAT_TX_EXCESS_DEF    0xFF02012E
+#define OID_SKGE_STAT_TX_UNDERRUN      0xFF02012F
+#define OID_SKGE_STAT_TX_CARRIER       0xFF020130
+/* #define OID_SKGE_STAT_TX_UTIL       0xFF020131 */
+#define OID_SKGE_STAT_TX_64            0xFF020132
+#define OID_SKGE_STAT_TX_127           0xFF020133
+#define OID_SKGE_STAT_TX_255           0xFF020134
+#define OID_SKGE_STAT_TX_511           0xFF020135
+#define OID_SKGE_STAT_TX_1023          0xFF020136
+#define OID_SKGE_STAT_TX_MAX           0xFF020137
+#define OID_SKGE_STAT_TX_SYNC          0xFF020138
+#define OID_SKGE_STAT_TX_SYNC_OCTETS   0xFF020139
+#define OID_SKGE_STAT_RX               0xFF02013A
+#define OID_SKGE_STAT_RX_OCTETS                0xFF02013B
+#define OID_SKGE_STAT_RX_BROADCAST     0xFF02013C
+#define OID_SKGE_STAT_RX_MULTICAST     0xFF02013D
+#define OID_SKGE_STAT_RX_UNICAST       0xFF02013E
+#define OID_SKGE_STAT_RX_PFLOWC                0xFF02013F
+#define OID_SKGE_STAT_RX_FLOWC         0xFF020140
+#define OID_SKGE_STAT_RX_PFLOWC_ERR    0xFF020141
+#define OID_SKGE_STAT_RX_FLOWC_UNKWN   0xFF020142
+#define OID_SKGE_STAT_RX_BURST         0xFF020143
+#define OID_SKGE_STAT_RX_MISSED                0xFF020144
+#define OID_SKGE_STAT_RX_FRAMING       0xFF020145
+#define OID_SKGE_STAT_RX_OVERFLOW      0xFF020146
+#define OID_SKGE_STAT_RX_JABBER                0xFF020147
+#define OID_SKGE_STAT_RX_CARRIER       0xFF020148
+#define OID_SKGE_STAT_RX_IR_LENGTH     0xFF020149
+#define OID_SKGE_STAT_RX_SYMBOL                0xFF02014A
+#define OID_SKGE_STAT_RX_SHORTS                0xFF02014B
+#define OID_SKGE_STAT_RX_RUNT          0xFF02014C
+#define OID_SKGE_STAT_RX_CEXT          0xFF02014D
+#define OID_SKGE_STAT_RX_TOO_LONG      0xFF02014E
+#define OID_SKGE_STAT_RX_FCS           0xFF02014F
+/* #define OID_SKGE_STAT_RX_UTIL       0xFF020150 */
+#define OID_SKGE_STAT_RX_64            0xFF020151
+#define OID_SKGE_STAT_RX_127           0xFF020152
+#define OID_SKGE_STAT_RX_255           0xFF020153
+#define OID_SKGE_STAT_RX_511           0xFF020154
+#define OID_SKGE_STAT_RX_1023          0xFF020155
+#define OID_SKGE_STAT_RX_MAX           0xFF020156
+#define OID_SKGE_STAT_RX_LONGFRAMES    0xFF020157
+
+#define OID_SKGE_RLMT_CHANGE_CTS       0xFF020160
+#define OID_SKGE_RLMT_CHANGE_TIME      0xFF020161
+#define OID_SKGE_RLMT_CHANGE_ESTIM     0xFF020162
+#define OID_SKGE_RLMT_CHANGE_THRES     0xFF020163
+
+#define OID_SKGE_RLMT_PORT_INDEX       0xFF020164
+#define OID_SKGE_RLMT_STATUS           0xFF020165
+#define OID_SKGE_RLMT_TX_HELLO_CTS     0xFF020166
+#define OID_SKGE_RLMT_RX_HELLO_CTS     0xFF020167
+#define OID_SKGE_RLMT_TX_SP_REQ_CTS    0xFF020168
+#define OID_SKGE_RLMT_RX_SP_CTS                0xFF020169
+
+#define OID_SKGE_RLMT_MONITOR_NUMBER   0xFF010150
+#define OID_SKGE_RLMT_MONITOR_INDEX    0xFF010151
+#define OID_SKGE_RLMT_MONITOR_ADDR     0xFF010152
+#define OID_SKGE_RLMT_MONITOR_ERRS     0xFF010153
+#define OID_SKGE_RLMT_MONITOR_TIMESTAMP        0xFF010154
+#define OID_SKGE_RLMT_MONITOR_ADMIN    0xFF010155
+
+#define OID_SKGE_TX_SW_QUEUE_LEN       0xFF020170
+#define OID_SKGE_TX_SW_QUEUE_MAX       0xFF020171
+#define OID_SKGE_TX_RETRY              0xFF020172
+#define OID_SKGE_RX_INTR_CTS           0xFF020173
+#define OID_SKGE_TX_INTR_CTS           0xFF020174
+#define OID_SKGE_RX_NO_BUF_CTS         0xFF020175
+#define OID_SKGE_TX_NO_BUF_CTS         0xFF020176
+#define OID_SKGE_TX_USED_DESCR_NO      0xFF020177
+#define OID_SKGE_RX_DELIVERED_CTS      0xFF020178
+#define OID_SKGE_RX_OCTETS_DELIV_CTS   0xFF020179
+#define OID_SKGE_RX_HW_ERROR_CTS       0xFF02017A
+#define OID_SKGE_TX_HW_ERROR_CTS       0xFF02017B
+#define OID_SKGE_IN_ERRORS_CTS         0xFF02017C
+#define OID_SKGE_OUT_ERROR_CTS         0xFF02017D
+#define OID_SKGE_ERR_RECOVERY_CTS      0xFF02017E
+#define OID_SKGE_SYSUPTIME             0xFF02017F
+
+#define OID_SKGE_ALL_DATA              0xFF020190
+
+/* Defines for VCT. */
+#define OID_SKGE_VCT_GET               0xFF020200
+#define OID_SKGE_VCT_SET               0xFF020201
+#define OID_SKGE_VCT_STATUS            0xFF020202
+
+
+/* VCT struct to store a backup copy of VCT data after a port reset. */
+typedef struct s_PnmiVct {
+       SK_U8                   VctStatus;
+       SK_U8                   PCableLen;
+       SK_U32                  PMdiPairLen[4];
+       SK_U8                   PMdiPairSts[4];
+} SK_PNMI_VCT;
+
+
+/* VCT status values (to be given to CPA via OID_SKGE_VCT_STATUS). */
+#define SK_PNMI_VCT_NONE               0
+#define SK_PNMI_VCT_OLD_VCT_DATA       1
+#define SK_PNMI_VCT_NEW_VCT_DATA       2
+#define SK_PNMI_VCT_OLD_DSP_DATA       4
+#define SK_PNMI_VCT_NEW_DSP_DATA       8
+#define SK_PNMI_VCT_RUNNING            16
+
+
+/* VCT cable test status. */
+#define SK_PNMI_VCT_NORMAL_CABLE       0
+#define SK_PNMI_VCT_SHORT_CABLE                1
+#define SK_PNMI_VCT_OPEN_CABLE         2
+#define SK_PNMI_VCT_TEST_FAIL          3
+#define SK_PNMI_VCT_IMPEDANCE_MISMATCH 4
+
+#define        OID_SKGE_TRAP_SEN_WAR_LOW       500
+#define OID_SKGE_TRAP_SEN_WAR_UPP      501
+#define        OID_SKGE_TRAP_SEN_ERR_LOW       502
+#define OID_SKGE_TRAP_SEN_ERR_UPP      503
+#define OID_SKGE_TRAP_RLMT_CHANGE_THRES        520
+#define OID_SKGE_TRAP_RLMT_CHANGE_PORT 521
+#define OID_SKGE_TRAP_RLMT_PORT_DOWN   522
+#define OID_SKGE_TRAP_RLMT_PORT_UP     523
+#define OID_SKGE_TRAP_RLMT_SEGMENTATION        524
+
+
+/*
+ * Define error numbers and messages for syslog
+ */
+#define SK_PNMI_ERR001         (SK_ERRBASE_PNMI + 1)
+#define SK_PNMI_ERR001MSG      "SkPnmiGetStruct: Unknown OID"
+#define SK_PNMI_ERR002         (SK_ERRBASE_PNMI + 2)
+#define SK_PNMI_ERR002MSG      "SkPnmiGetStruct: Cannot read VPD keys"
+#define SK_PNMI_ERR003         (SK_ERRBASE_PNMI + 3)
+#define SK_PNMI_ERR003MSG      "OidStruct: Called with wrong OID"
+#define SK_PNMI_ERR004         (SK_ERRBASE_PNMI + 4)
+#define SK_PNMI_ERR004MSG      "OidStruct: Called with wrong action"
+#define SK_PNMI_ERR005         (SK_ERRBASE_PNMI + 5)
+#define SK_PNMI_ERR005MSG      "Perform: Cannot reset driver"
+#define SK_PNMI_ERR006         (SK_ERRBASE_PNMI + 6)
+#define SK_PNMI_ERR006MSG      "Perform: Unknown OID action command"
+#define SK_PNMI_ERR007         (SK_ERRBASE_PNMI + 7)
+#define SK_PNMI_ERR007MSG      "General: Driver description not initialized"
+#define SK_PNMI_ERR008         (SK_ERRBASE_PNMI + 8)
+#define SK_PNMI_ERR008MSG      "Addr: Tried to get unknown OID"
+#define SK_PNMI_ERR009         (SK_ERRBASE_PNMI + 9)
+#define SK_PNMI_ERR009MSG      "Addr: Unknown OID"
+#define SK_PNMI_ERR010         (SK_ERRBASE_PNMI + 10)
+#define SK_PNMI_ERR010MSG      "CsumStat: Unknown OID"
+#define SK_PNMI_ERR011         (SK_ERRBASE_PNMI + 11)
+#define SK_PNMI_ERR011MSG      "SensorStat: Sensor descr string too long"
+#define SK_PNMI_ERR012         (SK_ERRBASE_PNMI + 12)
+#define SK_PNMI_ERR012MSG      "SensorStat: Unknown OID"
+#define SK_PNMI_ERR013         (SK_ERRBASE_PNMI + 13)
+#define SK_PNMI_ERR013MSG      ""
+#define SK_PNMI_ERR014         (SK_ERRBASE_PNMI + 14)
+#define SK_PNMI_ERR014MSG      "Vpd: Cannot read VPD keys"
+#define SK_PNMI_ERR015         (SK_ERRBASE_PNMI + 15)
+#define SK_PNMI_ERR015MSG      "Vpd: Internal array for VPD keys to small"
+#define SK_PNMI_ERR016         (SK_ERRBASE_PNMI + 16)
+#define SK_PNMI_ERR016MSG      "Vpd: Key string too long"
+#define SK_PNMI_ERR017         (SK_ERRBASE_PNMI + 17)
+#define SK_PNMI_ERR017MSG      "Vpd: Invalid VPD status pointer"
+#define SK_PNMI_ERR018         (SK_ERRBASE_PNMI + 18)
+#define SK_PNMI_ERR018MSG      "Vpd: VPD data not valid"
+#define SK_PNMI_ERR019         (SK_ERRBASE_PNMI + 19)
+#define SK_PNMI_ERR019MSG      "Vpd: VPD entries list string too long"
+#define SK_PNMI_ERR021         (SK_ERRBASE_PNMI + 21)
+#define SK_PNMI_ERR021MSG      "Vpd: VPD data string too long"
+#define SK_PNMI_ERR022         (SK_ERRBASE_PNMI + 22)
+#define SK_PNMI_ERR022MSG      "Vpd: VPD data string too long should be errored before"
+#define SK_PNMI_ERR023         (SK_ERRBASE_PNMI + 23)
+#define SK_PNMI_ERR023MSG      "Vpd: Unknown OID in get action"
+#define SK_PNMI_ERR024         (SK_ERRBASE_PNMI + 24)
+#define SK_PNMI_ERR024MSG      "Vpd: Unknown OID in preset/set action"
+#define SK_PNMI_ERR025         (SK_ERRBASE_PNMI + 25)
+#define SK_PNMI_ERR025MSG      "Vpd: Cannot write VPD after modify entry"
+#define SK_PNMI_ERR026         (SK_ERRBASE_PNMI + 26)
+#define SK_PNMI_ERR026MSG      "Vpd: Cannot update VPD"
+#define SK_PNMI_ERR027         (SK_ERRBASE_PNMI + 27)
+#define SK_PNMI_ERR027MSG      "Vpd: Cannot delete VPD entry"
+#define SK_PNMI_ERR028         (SK_ERRBASE_PNMI + 28)
+#define SK_PNMI_ERR028MSG      "Vpd: Cannot update VPD after delete entry"
+#define SK_PNMI_ERR029         (SK_ERRBASE_PNMI + 29)
+#define SK_PNMI_ERR029MSG      "General: Driver description string too long"
+#define SK_PNMI_ERR030         (SK_ERRBASE_PNMI + 30)
+#define SK_PNMI_ERR030MSG      "General: Driver version not initialized"
+#define SK_PNMI_ERR031         (SK_ERRBASE_PNMI + 31)
+#define SK_PNMI_ERR031MSG      "General: Driver version string too long"
+#define SK_PNMI_ERR032         (SK_ERRBASE_PNMI + 32)
+#define SK_PNMI_ERR032MSG      "General: Cannot read VPD Name for HW descr"
+#define SK_PNMI_ERR033         (SK_ERRBASE_PNMI + 33)
+#define SK_PNMI_ERR033MSG      "General: HW description string too long"
+#define SK_PNMI_ERR034         (SK_ERRBASE_PNMI + 34)
+#define SK_PNMI_ERR034MSG      "General: Unknown OID"
+#define SK_PNMI_ERR035         (SK_ERRBASE_PNMI + 35)
+#define SK_PNMI_ERR035MSG      "Rlmt: Unknown OID"
+#define SK_PNMI_ERR036         (SK_ERRBASE_PNMI + 36)
+#define SK_PNMI_ERR036MSG      ""
+#define SK_PNMI_ERR037         (SK_ERRBASE_PNMI + 37)
+#define SK_PNMI_ERR037MSG      "Rlmt: SK_RLMT_MODE_CHANGE event return not 0"
+#define SK_PNMI_ERR038         (SK_ERRBASE_PNMI + 38)
+#define SK_PNMI_ERR038MSG      "Rlmt: SK_RLMT_PREFPORT_CHANGE event return not 0"
+#define SK_PNMI_ERR039         (SK_ERRBASE_PNMI + 39)
+#define SK_PNMI_ERR039MSG      "RlmtStat: Unknown OID"
+#define SK_PNMI_ERR040         (SK_ERRBASE_PNMI + 40)
+#define SK_PNMI_ERR040MSG      "PowerManagement: Unknown OID"
+#define SK_PNMI_ERR041         (SK_ERRBASE_PNMI + 41)
+#define SK_PNMI_ERR041MSG      "MacPrivateConf: Unknown OID"
+#define SK_PNMI_ERR042         (SK_ERRBASE_PNMI + 42)
+#define SK_PNMI_ERR042MSG      "MacPrivateConf: SK_HWEV_SET_ROLE returned not 0"
+#define SK_PNMI_ERR043         (SK_ERRBASE_PNMI + 43)
+#define SK_PNMI_ERR043MSG      "MacPrivateConf: SK_HWEV_SET_LMODE returned not 0"
+#define SK_PNMI_ERR044         (SK_ERRBASE_PNMI + 44)
+#define SK_PNMI_ERR044MSG      "MacPrivateConf: SK_HWEV_SET_FLOWMODE returned not 0"
+#define SK_PNMI_ERR045         (SK_ERRBASE_PNMI + 45)
+#define SK_PNMI_ERR045MSG      "MacPrivateConf: SK_HWEV_SET_SPEED returned not 0"
+#define SK_PNMI_ERR046         (SK_ERRBASE_PNMI + 46)
+#define SK_PNMI_ERR046MSG      "Monitor: Unknown OID"
+#define SK_PNMI_ERR047         (SK_ERRBASE_PNMI + 47)
+#define SK_PNMI_ERR047MSG      "SirqUpdate: Event function returns not 0"
+#define SK_PNMI_ERR048         (SK_ERRBASE_PNMI + 48)
+#define SK_PNMI_ERR048MSG      "RlmtUpdate: Event function returns not 0"
+#define SK_PNMI_ERR049         (SK_ERRBASE_PNMI + 49)
+#define SK_PNMI_ERR049MSG      "SkPnmiInit: Invalid size of 'CounterOffset' struct!!"
+#define SK_PNMI_ERR050         (SK_ERRBASE_PNMI + 50)
+#define SK_PNMI_ERR050MSG      "SkPnmiInit: Invalid size of 'StatAddr' table!!"
+#define SK_PNMI_ERR051         (SK_ERRBASE_PNMI + 51)
+#define SK_PNMI_ERR051MSG      "SkPnmiEvent: Port switch suspicious"
+#define SK_PNMI_ERR052         (SK_ERRBASE_PNMI + 52)
+#define SK_PNMI_ERR052MSG      ""
+
+/*
+ * Management counter macros called by the driver
+ */
+#define SK_PNMI_SET_DRIVER_DESCR(pAC,v)        ((pAC)->Pnmi.pDriverDescription = \
+       (char *)(v))
+
+#define SK_PNMI_SET_DRIVER_VER(pAC,v)  ((pAC)->Pnmi.pDriverVersion = \
+       (char *)(v))
+
+
+#define SK_PNMI_CNT_TX_QUEUE_LEN(pAC,v,p) \
+       { \
+               (pAC)->Pnmi.Port[p].TxSwQueueLen = (SK_U64)(v); \
+               if ((pAC)->Pnmi.Port[p].TxSwQueueLen > (pAC)->Pnmi.Port[p].TxSwQueueMax) { \
+                       (pAC)->Pnmi.Port[p].TxSwQueueMax = (pAC)->Pnmi.Port[p].TxSwQueueLen; \
+               } \
+       }
+#define SK_PNMI_CNT_TX_RETRY(pAC,p)    (((pAC)->Pnmi.Port[p].TxRetryCts)++)
+#define SK_PNMI_CNT_RX_INTR(pAC,p)     (((pAC)->Pnmi.Port[p].RxIntrCts)++)
+#define SK_PNMI_CNT_TX_INTR(pAC,p)     (((pAC)->Pnmi.Port[p].TxIntrCts)++)
+#define SK_PNMI_CNT_NO_RX_BUF(pAC,p)   (((pAC)->Pnmi.Port[p].RxNoBufCts)++)
+#define SK_PNMI_CNT_NO_TX_BUF(pAC,p)   (((pAC)->Pnmi.Port[p].TxNoBufCts)++)
+#define SK_PNMI_CNT_USED_TX_DESCR(pAC,v,p) \
+       ((pAC)->Pnmi.Port[p].TxUsedDescrNo=(SK_U64)(v));
+#define SK_PNMI_CNT_RX_OCTETS_DELIVERED(pAC,v,p) \
+       { \
+               ((pAC)->Pnmi.Port[p].RxDeliveredCts)++; \
+               (pAC)->Pnmi.Port[p].RxOctetsDeliveredCts += (SK_U64)(v); \
+       }
+#define SK_PNMI_CNT_ERR_RECOVERY(pAC,p)        (((pAC)->Pnmi.Port[p].ErrRecoveryCts)++);
+
+#define SK_PNMI_CNT_SYNC_OCTETS(pAC,p,v) \
+       { \
+               if ((p) < SK_MAX_MACS) { \
+                       ((pAC)->Pnmi.Port[p].StatSyncCts)++; \
+                       (pAC)->Pnmi.Port[p].StatSyncOctetsCts += (SK_U64)(v); \
+               } \
+       }
+
+#define SK_PNMI_CNT_RX_LONGFRAMES(pAC,p) \
+       { \
+               if ((p) < SK_MAX_MACS) { \
+                       ((pAC)->Pnmi.Port[p].StatRxLongFrameCts++); \
+               } \
+       }
+
+#define SK_PNMI_CNT_RX_FRAMETOOLONG(pAC,p) \
+       { \
+               if ((p) < SK_MAX_MACS) { \
+                       ((pAC)->Pnmi.Port[p].StatRxFrameTooLongCts++); \
+               } \
+       }
+
+#define SK_PNMI_CNT_RX_PMACC_ERR(pAC,p) \
+       { \
+               if ((p) < SK_MAX_MACS) { \
+                       ((pAC)->Pnmi.Port[p].StatRxPMaccErr++); \
+               } \
+       }
+
+/*
+ * Conversion Macros
+ */
+#define SK_PNMI_PORT_INST2LOG(i)       ((unsigned int)(i) - 1)
+#define SK_PNMI_PORT_LOG2INST(l)       ((unsigned int)(l) + 1)
+#define SK_PNMI_PORT_PHYS2LOG(p)       ((unsigned int)(p) + 1)
+#define SK_PNMI_PORT_LOG2PHYS(pAC,l)   ((unsigned int)(l) - 1)
+#define SK_PNMI_PORT_PHYS2INST(pAC,p)  \
+       (pAC->Pnmi.DualNetActiveFlag ? 2 : ((unsigned int)(p) + 2))
+#define SK_PNMI_PORT_INST2PHYS(pAC,i)  ((unsigned int)(i) - 2)
+
+/*
+ * Structure definition for SkPnmiGetStruct and SkPnmiSetStruct
+ */
+#define SK_PNMI_VPD_KEY_SIZE           5
+#define SK_PNMI_VPD_BUFSIZE            (VPD_SIZE)
+#define SK_PNMI_VPD_ENTRIES            (VPD_SIZE / 4)
+#define SK_PNMI_VPD_DATALEN            128 /*  Number of data bytes */
+
+#define SK_PNMI_MULTICAST_LISTLEN      64
+#define SK_PNMI_SENSOR_ENTRIES         (SK_MAX_SENSORS)
+#define SK_PNMI_CHECKSUM_ENTRIES       3
+#define SK_PNMI_MAC_ENTRIES            (SK_MAX_MACS + 1)
+#define SK_PNMI_MONITOR_ENTRIES                20
+#define SK_PNMI_TRAP_ENTRIES           10
+#define SK_PNMI_TRAPLEN                        128
+#define SK_PNMI_STRINGLEN1             80
+#define SK_PNMI_STRINGLEN2             25
+#define SK_PNMI_TRAP_QUEUE_LEN         512
+
+typedef struct s_PnmiVpd {
+       char                    VpdKey[SK_PNMI_VPD_KEY_SIZE];
+       char                    VpdValue[SK_PNMI_VPD_DATALEN];
+       SK_U8                   VpdAccess;
+       SK_U8                   VpdAction;
+} SK_PNMI_VPD;
+
+typedef struct s_PnmiSensor {
+       SK_U8                   SensorIndex;
+       char                    SensorDescr[SK_PNMI_STRINGLEN2];
+       SK_U8                   SensorType;
+       SK_U32                  SensorValue;
+       SK_U32                  SensorWarningThresholdLow;
+       SK_U32                  SensorWarningThresholdHigh;
+       SK_U32                  SensorErrorThresholdLow;
+       SK_U32                  SensorErrorThresholdHigh;
+       SK_U8                   SensorStatus;
+       SK_U64                  SensorWarningCts;
+       SK_U64                  SensorErrorCts;
+       SK_U64                  SensorWarningTimestamp;
+       SK_U64                  SensorErrorTimestamp;
+} SK_PNMI_SENSOR;
+
+typedef struct s_PnmiChecksum {
+       SK_U64                  ChecksumRxOkCts;
+       SK_U64                  ChecksumRxUnableCts;
+       SK_U64                  ChecksumRxErrCts;
+       SK_U64                  ChecksumTxOkCts;
+       SK_U64                  ChecksumTxUnableCts;
+} SK_PNMI_CHECKSUM;
+
+typedef struct s_PnmiStat {
+       SK_U64                  StatTxOkCts;
+       SK_U64                  StatTxOctetsOkCts;
+       SK_U64                  StatTxBroadcastOkCts;
+       SK_U64                  StatTxMulticastOkCts;
+       SK_U64                  StatTxUnicastOkCts;
+       SK_U64                  StatTxLongFramesCts;
+       SK_U64                  StatTxBurstCts;
+       SK_U64                  StatTxPauseMacCtrlCts;
+       SK_U64                  StatTxMacCtrlCts;
+       SK_U64                  StatTxSingleCollisionCts;
+       SK_U64                  StatTxMultipleCollisionCts;
+       SK_U64                  StatTxExcessiveCollisionCts;
+       SK_U64                  StatTxLateCollisionCts;
+       SK_U64                  StatTxDeferralCts;
+       SK_U64                  StatTxExcessiveDeferralCts;
+       SK_U64                  StatTxFifoUnderrunCts;
+       SK_U64                  StatTxCarrierCts;
+       SK_U64                  Dummy1; /* StatTxUtilization */
+       SK_U64                  StatTx64Cts;
+       SK_U64                  StatTx127Cts;
+       SK_U64                  StatTx255Cts;
+       SK_U64                  StatTx511Cts;
+       SK_U64                  StatTx1023Cts;
+       SK_U64                  StatTxMaxCts;
+       SK_U64                  StatTxSyncCts;
+       SK_U64                  StatTxSyncOctetsCts;
+       SK_U64                  StatRxOkCts;
+       SK_U64                  StatRxOctetsOkCts;
+       SK_U64                  StatRxBroadcastOkCts;
+       SK_U64                  StatRxMulticastOkCts;
+       SK_U64                  StatRxUnicastOkCts;
+       SK_U64                  StatRxLongFramesCts;
+       SK_U64                  StatRxPauseMacCtrlCts;
+       SK_U64                  StatRxMacCtrlCts;
+       SK_U64                  StatRxPauseMacCtrlErrorCts;
+       SK_U64                  StatRxMacCtrlUnknownCts;
+       SK_U64                  StatRxBurstCts;
+       SK_U64                  StatRxMissedCts;
+       SK_U64                  StatRxFramingCts;
+       SK_U64                  StatRxFifoOverflowCts;
+       SK_U64                  StatRxJabberCts;
+       SK_U64                  StatRxCarrierCts;
+       SK_U64                  StatRxIRLengthCts;
+       SK_U64                  StatRxSymbolCts;
+       SK_U64                  StatRxShortsCts;
+       SK_U64                  StatRxRuntCts;
+       SK_U64                  StatRxCextCts;
+       SK_U64                  StatRxTooLongCts;
+       SK_U64                  StatRxFcsCts;
+       SK_U64                  Dummy2; /* StatRxUtilization */
+       SK_U64                  StatRx64Cts;
+       SK_U64                  StatRx127Cts;
+       SK_U64                  StatRx255Cts;
+       SK_U64                  StatRx511Cts;
+       SK_U64                  StatRx1023Cts;
+       SK_U64                  StatRxMaxCts;
+} SK_PNMI_STAT;
+
+typedef struct s_PnmiConf {
+       char                    ConfMacCurrentAddr[6];
+       char                    ConfMacFactoryAddr[6];
+       SK_U8                   ConfPMD;
+       SK_U8                   ConfConnector;
+       SK_U8                   ConfLinkCapability;
+       SK_U8                   ConfLinkMode;
+       SK_U8                   ConfLinkModeStatus;
+       SK_U8                   ConfLinkStatus;
+       SK_U8                   ConfFlowCtrlCapability;
+       SK_U8                   ConfFlowCtrlMode;
+       SK_U8                   ConfFlowCtrlStatus;
+       SK_U8                   ConfPhyOperationCapability;
+       SK_U8                   ConfPhyOperationMode;
+       SK_U8                   ConfPhyOperationStatus;
+       SK_U8                   ConfSpeedCapability;
+       SK_U8                   ConfSpeedMode;
+       SK_U8                   ConfSpeedStatus;
+} SK_PNMI_CONF;
+
+typedef struct s_PnmiRlmt {
+       SK_U32                  RlmtIndex;
+       SK_U32                  RlmtStatus;
+       SK_U64                  RlmtTxHelloCts;
+       SK_U64                  RlmtRxHelloCts;
+       SK_U64                  RlmtTxSpHelloReqCts;
+       SK_U64                  RlmtRxSpHelloCts;
+} SK_PNMI_RLMT;
+
+typedef struct s_PnmiRlmtMonitor {
+       SK_U32                  RlmtMonitorIndex;
+       char                    RlmtMonitorAddr[6];
+       SK_U64                  RlmtMonitorErrorCts;
+       SK_U64                  RlmtMonitorTimestamp;
+       SK_U8                   RlmtMonitorAdmin;
+} SK_PNMI_RLMT_MONITOR;
+
+typedef struct s_PnmiRequestStatus {
+       SK_U32                  ErrorStatus;
+       SK_U32                  ErrorOffset;
+} SK_PNMI_REQUEST_STATUS;
+
+typedef struct s_PnmiStrucData {
+       SK_U32                  MgmtDBVersion;
+       SK_PNMI_REQUEST_STATUS  ReturnStatus;
+       SK_U32                  VpdFreeBytes;
+       char                    VpdEntriesList[SK_PNMI_VPD_ENTRIES * SK_PNMI_VPD_KEY_SIZE];
+       SK_U32                  VpdEntriesNumber;
+       SK_PNMI_VPD             Vpd[SK_PNMI_VPD_ENTRIES];
+       SK_U32                  PortNumber;
+       SK_U32                  DeviceType;
+       char                    DriverDescr[SK_PNMI_STRINGLEN1];
+       char                    DriverVersion[SK_PNMI_STRINGLEN2];
+       char                    HwDescr[SK_PNMI_STRINGLEN1];
+       char                    HwVersion[SK_PNMI_STRINGLEN2];
+       SK_U16                  Chipset;
+       SK_U32                  MtuSize;
+       SK_U32                  Action;
+       SK_U32                  TestResult;
+       SK_U8                   BusType;
+       SK_U8                   BusSpeed;
+       SK_U8                   BusWidth;
+       SK_U8                   SensorNumber;
+       SK_PNMI_SENSOR  Sensor[SK_PNMI_SENSOR_ENTRIES];
+       SK_U8                   ChecksumNumber;
+       SK_PNMI_CHECKSUM        Checksum[SK_PNMI_CHECKSUM_ENTRIES];
+       SK_PNMI_STAT    Stat[SK_PNMI_MAC_ENTRIES];
+       SK_PNMI_CONF    Conf[SK_PNMI_MAC_ENTRIES];
+       SK_U8                   RlmtMode;
+       SK_U32                  RlmtPortNumber;
+       SK_U8                   RlmtPortActive;
+       SK_U8                   RlmtPortPreferred;
+       SK_U64                  RlmtChangeCts;
+       SK_U64                  RlmtChangeTime;
+       SK_U64                  RlmtChangeEstimate;
+       SK_U64                  RlmtChangeThreshold;
+       SK_PNMI_RLMT    Rlmt[SK_MAX_MACS];
+       SK_U32                  RlmtMonitorNumber;
+       SK_PNMI_RLMT_MONITOR    RlmtMonitor[SK_PNMI_MONITOR_ENTRIES];
+       SK_U32                  TrapNumber;
+       SK_U8                   Trap[SK_PNMI_TRAP_QUEUE_LEN];
+       SK_U64                  TxSwQueueLen;
+       SK_U64                  TxSwQueueMax;
+       SK_U64                  TxRetryCts;
+       SK_U64                  RxIntrCts;
+       SK_U64                  TxIntrCts;
+       SK_U64                  RxNoBufCts;
+       SK_U64                  TxNoBufCts;
+       SK_U64                  TxUsedDescrNo;
+       SK_U64                  RxDeliveredCts;
+       SK_U64                  RxOctetsDeliveredCts;
+       SK_U64                  RxHwErrorsCts;
+       SK_U64                  TxHwErrorsCts;
+       SK_U64                  InErrorsCts;
+       SK_U64                  OutErrorsCts;
+       SK_U64                  ErrRecoveryCts;
+       SK_U64                  SysUpTime;
+} SK_PNMI_STRUCT_DATA;
+
+#define SK_PNMI_STRUCT_SIZE    (sizeof(SK_PNMI_STRUCT_DATA))
+#define SK_PNMI_MIN_STRUCT_SIZE        ((unsigned int)(SK_UPTR)\
+                                &(((SK_PNMI_STRUCT_DATA *)0)->VpdFreeBytes))
+                                                                                                               /*
+                                                                                                                * ReturnStatus field
+                                                                                                                * must be located
+                                                                                                                * before VpdFreeBytes
+                                                                                                                */
+
+/*
+ * Various definitions
+ */
+#define SK_PNMI_MAX_PROTOS     3
+
+#define SK_PNMI_CNT_NO         66      /* Must have the value of the enum
+                                        * SK_PNMI_MAX_IDX. Define SK_PNMI_CHECK
+                                        * for check while init phase 1
+                                        */
+
+/*
+ * Estimate data structure
+ */
+typedef struct s_PnmiEstimate {
+       unsigned int    EstValueIndex;
+       SK_U64                  EstValue[7];
+       SK_U64                  Estimate;
+       SK_TIMER                EstTimer;
+} SK_PNMI_ESTIMATE;
+
+
+/*
+ * VCT timer data structure
+ */
+typedef struct s_VctTimer {
+       SK_TIMER                VctTimer;
+} SK_PNMI_VCT_TIMER;
+
+
+/*
+ * PNMI specific adapter context structure
+ */
+typedef struct s_PnmiPort {
+       SK_U64                  StatSyncCts;
+       SK_U64                  StatSyncOctetsCts;
+       SK_U64                  StatRxLongFrameCts;
+       SK_U64                  StatRxFrameTooLongCts;
+       SK_U64                  StatRxPMaccErr;
+       SK_U64                  TxSwQueueLen;
+       SK_U64                  TxSwQueueMax;
+       SK_U64                  TxRetryCts;
+       SK_U64                  RxIntrCts;
+       SK_U64                  TxIntrCts;
+       SK_U64                  RxNoBufCts;
+       SK_U64                  TxNoBufCts;
+       SK_U64                  TxUsedDescrNo;
+       SK_U64                  RxDeliveredCts;
+       SK_U64                  RxOctetsDeliveredCts;
+       SK_U64                  RxHwErrorsCts;
+       SK_U64                  TxHwErrorsCts;
+       SK_U64                  InErrorsCts;
+       SK_U64                  OutErrorsCts;
+       SK_U64                  ErrRecoveryCts;
+       SK_U64                  RxShortZeroMark;
+       SK_U64                  CounterOffset[SK_PNMI_CNT_NO];
+       SK_U32                  CounterHigh[SK_PNMI_CNT_NO];
+       SK_BOOL                 ActiveFlag;
+       SK_U8                   Align[3];
+} SK_PNMI_PORT;
+
+
+typedef struct s_PnmiData {
+       SK_PNMI_PORT    Port    [SK_MAX_MACS];
+       SK_PNMI_PORT    BufPort [SK_MAX_MACS]; /* 2002-09-13 pweber  */
+       SK_U64                  VirtualCounterOffset[SK_PNMI_CNT_NO];
+       SK_U32                  TestResult;
+       char                    HwVersion[10];
+       SK_U16                  Align01;
+
+       char                    *pDriverDescription;
+       char                    *pDriverVersion;
+
+       int                             MacUpdatedFlag;
+       int                             RlmtUpdatedFlag;
+       int                             SirqUpdatedFlag;
+
+       SK_U64                  RlmtChangeCts;
+       SK_U64                  RlmtChangeTime;
+       SK_PNMI_ESTIMATE        RlmtChangeEstimate;
+       SK_U64                  RlmtChangeThreshold;
+
+       SK_U64                  StartUpTime;
+       SK_U32                  DeviceType;
+       char                    PciBusSpeed;
+       char                    PciBusWidth;
+       char                    Chipset;
+       char                    PMD;
+       char                    Connector;
+       SK_BOOL                 DualNetActiveFlag;
+       SK_U16                  Align02;
+
+       char                    TrapBuf[SK_PNMI_TRAP_QUEUE_LEN];
+       unsigned int    TrapBufFree;
+       unsigned int    TrapQueueBeg;
+       unsigned int    TrapQueueEnd;
+       unsigned int    TrapBufPad;
+       unsigned int    TrapUnique;
+       SK_U8           VctStatus[SK_MAX_MACS];
+       SK_PNMI_VCT     VctBackup[SK_MAX_MACS];
+       SK_PNMI_VCT_TIMER VctTimeout[SK_MAX_MACS];
+} SK_PNMI;
+
+/*
+ * Function prototypes
+ */
+extern int SkPnmiInit(SK_AC *pAc, SK_IOC IoC, int level);
+extern int SkPnmiGetVar(SK_AC *pAc, SK_IOC IoC, SK_U32 Id, void* pBuf,
+       unsigned int* pLen, SK_U32 Instance, SK_U32 NetIndex);
+extern int SkPnmiPreSetVar(SK_AC *pAc, SK_IOC IoC, SK_U32 Id,
+       void* pBuf, unsigned int *pLen, SK_U32 Instance, SK_U32 NetIndex);
+extern int SkPnmiSetVar(SK_AC *pAc, SK_IOC IoC, SK_U32 Id, void* pBuf,
+       unsigned int *pLen, SK_U32 Instance, SK_U32 NetIndex);
+extern int SkPnmiGetStruct(SK_AC *pAc, SK_IOC IoC, void* pBuf,
+       unsigned int *pLen, SK_U32 NetIndex);
+extern int SkPnmiPreSetStruct(SK_AC *pAc, SK_IOC IoC, void* pBuf,
+       unsigned int *pLen, SK_U32 NetIndex);
+extern int SkPnmiSetStruct(SK_AC *pAc, SK_IOC IoC, void* pBuf,
+       unsigned int *pLen, SK_U32 NetIndex);
+extern int SkPnmiEvent(SK_AC *pAc, SK_IOC IoC, SK_U32 Event,
+       SK_EVPARA Param);
+
+#endif
diff -Naur u-boot-2009.03_orig/drivers/net/sk98lin/h/skgesirq.h u-boot-2009.03/drivers/net/sk98lin/h/skgesirq.h
--- u-boot-2009.03_orig/drivers/net/sk98lin/h/skgesirq.h        2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/drivers/net/sk98lin/h/skgesirq.h     2009-03-31 14:54:45.971668800 -0700
@@ -1,194 +1,197 @@
-/******************************************************************************
- *
- * Name:       skgesirq.h
- * Project:    GEnesis, PCI Gigabit Ethernet Adapter
- * Version:    $Revision: 1.26 $
- * Date:       $Date: 2002/10/14 09:52:36 $
- * Purpose:    SK specific Gigabit Ethernet special IRQ functions
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- *     (C)Copyright 1998-2002 SysKonnect GmbH.
- *
- *     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.
- *
- *     The information in this file is provided "AS IS" without warranty.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * History:
- *     $Log: skgesirq.h,v $
- *     Revision 1.26  2002/10/14 09:52:36  rschmidt
- *     Added SKERR_SIRQ_E023 and SKERR_SIRQ_E023 for GPHY (Yukon)
- *     Editorial changes
- *
- *     Revision 1.25  2002/07/15 18:15:52  rwahl
- *     Editorial changes.
- *
- *     Revision 1.24  2002/07/15 15:39:21  rschmidt
- *     Corrected define for SKERR_SIRQ_E022
- *     Editorial changes
- *
- *     Revision 1.23  2002/04/25 11:09:45  rschmidt
- *     Removed declarations for SkXmInitPhy(), SkXmRxTxEnable()
- *     Editorial changes
- *
- *     Revision 1.22  2000/11/09 11:30:10  rassmann
- *     WA: Waiting after releasing reset until BCom chip is accessible.
- *
- *     Revision 1.21  2000/10/18 12:22:40  cgoos
- *     Added workaround for half duplex hangup.
- *
- *     Revision 1.20  1999/12/06 10:00:44  cgoos
- *     Added SET event for role.
- *
- *     Revision 1.19  1999/11/22 13:58:26  cgoos
- *     Changed license header to GPL.
- *
- *     Revision 1.18  1999/05/19 07:32:59  cgoos
- *     Changes for 1000Base-T.
- *
- *     Revision 1.17  1999/03/12 13:29:31  malthoff
- *     Move Autonegotiation Error Codes to skgeinit.h.
- *
- *     Revision 1.16  1999/03/08 10:11:28  gklug
- *     add: AutoNegDone return codes
- *
- *     Revision 1.15  1998/11/18 13:20:53  gklug
- *     add: different timeouts for active and non-active links
- *
- *     Revision 1.14  1998/11/04 07:18:14  cgoos
- *     Added prototype for SkXmRxTxEnable.
- *
- *     Revision 1.13  1998/10/21 05:52:23  gklug
- *     add: parameter DoLoop to InitPhy function
- *
- *     Revision 1.12  1998/10/19 06:45:03  cgoos
- *     Added prototype for SkXmInitPhy.
- *
- *     Revision 1.11  1998/10/15 14:34:10  gklug
- *     add: WA_TIME is 500 msec
- *
- *     Revision 1.10  1998/10/14 14:49:41  malthoff
- *     Remove err log defines E021 and E022. They are
- *     defined in skgeinit.h now.
- *
- *     Revision 1.9  1998/10/14 14:00:39  gklug
- *     add: error logs for init phys
- *
- *     Revision 1.8  1998/10/14 05:44:05  gklug
- *     add: E020
- *
- *     Revision 1.7  1998/10/02 06:24:58  gklug
- *     add: error messages
- *
- *     Revision 1.6  1998/10/01 07:54:45  gklug
- *     add: PNMI debug module
- *
- *     Revision 1.5  1998/09/28 13:36:31  malthoff
- *     Move the bit definitions for Autonegotiation
- *     and Flow Control to skgeinit.h.
- *
- *     Revision 1.4  1998/09/15 12:29:34  gklug
- *     add: error logs
- *
- *     Revision 1.3  1998/09/03 13:54:02  gklug
- *     add: function prototypes
- *
- *     Revision 1.2  1998/09/03 10:24:36  gklug
- *     add: Events send by PNMI
- *     add: parameter definition for Flow Control etc.
- *
- *     Revision 1.1  1998/08/27 11:50:27  gklug
- *     initial revision
- *
- *
- ******************************************************************************/
-
-#ifndef _INC_SKGESIRQ_H_
-#define _INC_SKGESIRQ_H_
-
-/*
- * Define the Event the special IRQ/INI module can handle
- */
-#define SK_HWEV_WATIM                  1       /* Timeout for WA errata #2 XMAC */
-#define SK_HWEV_PORT_START             2       /* Port Start Event by RLMT */
-#define SK_HWEV_PORT_STOP              3       /* Port Stop Event by RLMT */
-#define SK_HWEV_CLEAR_STAT             4       /* Clear Statistics by PNMI */
-#define SK_HWEV_UPDATE_STAT            5       /* Update Statistics by PNMI */
-#define SK_HWEV_SET_LMODE              6       /* Set Link Mode by PNMI */
-#define SK_HWEV_SET_FLOWMODE   7       /* Set Flow Control Mode by PNMI */
-#define SK_HWEV_SET_ROLE               8       /* Set Master/Slave (Role) by PNMI */
-#define SK_HWEV_SET_SPEED              9       /* Set Link Speed by PNMI */
-#define SK_HWEV_HALFDUP_CHK            10      /* Half Duplex Hangup Workaround */
-
-#define SK_WA_ACT_TIME         (5000000L)      /* 5 sec */
-#define SK_WA_INA_TIME         (100000L)       /* 100 msec */
-
-#define SK_HALFDUP_CHK_TIME    (10000L)        /* 10 msec */
-
-/*
- * Define the error numbers and messages
- */
-#define SKERR_SIRQ_E001                (SK_ERRBASE_SIRQ+0)
-#define SKERR_SIRQ_E001MSG     "Unknown event"
-#define SKERR_SIRQ_E002                (SKERR_SIRQ_E001+1)
-#define SKERR_SIRQ_E002MSG     "Packet timeout RX1"
-#define SKERR_SIRQ_E003                (SKERR_SIRQ_E002+1)
-#define SKERR_SIRQ_E003MSG     "Packet timeout RX2"
-#define SKERR_SIRQ_E004                (SKERR_SIRQ_E003+1)
-#define SKERR_SIRQ_E004MSG     "MAC 1 not correctly initialized"
-#define SKERR_SIRQ_E005                (SKERR_SIRQ_E004+1)
-#define SKERR_SIRQ_E005MSG     "MAC 2 not correctly initialized"
-#define SKERR_SIRQ_E006                (SKERR_SIRQ_E005+1)
-#define SKERR_SIRQ_E006MSG     "CHECK failure R1"
-#define SKERR_SIRQ_E007                (SKERR_SIRQ_E006+1)
-#define SKERR_SIRQ_E007MSG     "CHECK failure R2"
-#define SKERR_SIRQ_E008                (SKERR_SIRQ_E007+1)
-#define SKERR_SIRQ_E008MSG     "CHECK failure XS1"
-#define SKERR_SIRQ_E009                (SKERR_SIRQ_E008+1)
-#define SKERR_SIRQ_E009MSG     "CHECK failure XA1"
-#define SKERR_SIRQ_E010                (SKERR_SIRQ_E009+1)
-#define SKERR_SIRQ_E010MSG     "CHECK failure XS2"
-#define SKERR_SIRQ_E011                (SKERR_SIRQ_E010+1)
-#define SKERR_SIRQ_E011MSG     "CHECK failure XA2"
-#define SKERR_SIRQ_E012                (SKERR_SIRQ_E011+1)
-#define SKERR_SIRQ_E012MSG     "unexpected IRQ Master error"
-#define SKERR_SIRQ_E013                (SKERR_SIRQ_E012+1)
-#define SKERR_SIRQ_E013MSG     "unexpected IRQ Status error"
-#define SKERR_SIRQ_E014                (SKERR_SIRQ_E013+1)
-#define SKERR_SIRQ_E014MSG     "Parity error on RAM (read)"
-#define SKERR_SIRQ_E015                (SKERR_SIRQ_E014+1)
-#define SKERR_SIRQ_E015MSG     "Parity error on RAM (write)"
-#define SKERR_SIRQ_E016                (SKERR_SIRQ_E015+1)
-#define SKERR_SIRQ_E016MSG     "Parity error MAC 1"
-#define SKERR_SIRQ_E017                (SKERR_SIRQ_E016+1)
-#define SKERR_SIRQ_E017MSG     "Parity error MAC 2"
-#define SKERR_SIRQ_E018                (SKERR_SIRQ_E017+1)
-#define SKERR_SIRQ_E018MSG     "Parity error RX 1"
-#define SKERR_SIRQ_E019                (SKERR_SIRQ_E018+1)
-#define SKERR_SIRQ_E019MSG     "Parity error RX 2"
-#define SKERR_SIRQ_E020                (SKERR_SIRQ_E019+1)
-#define SKERR_SIRQ_E020MSG     "MAC transmit FIFO underrun"
-#define SKERR_SIRQ_E021                (SKERR_SIRQ_E020+1)
-#define SKERR_SIRQ_E021MSG     "Spurious TWSI interrupt"
-#define SKERR_SIRQ_E022                (SKERR_SIRQ_E021+1)
-#define SKERR_SIRQ_E022MSG     "Cable pair swap error"
-#define SKERR_SIRQ_E023                (SKERR_SIRQ_E022+1)
-#define SKERR_SIRQ_E023MSG     "Auto-negotiation error"
-#define SKERR_SIRQ_E024                (SKERR_SIRQ_E023+1)
-#define SKERR_SIRQ_E024MSG     "FIFO overflow error"
-
-extern void SkGeSirqIsr(SK_AC *pAC, SK_IOC IoC, SK_U32 Istatus);
-extern int  SkGeSirqEvent(SK_AC *pAC, SK_IOC IoC, SK_U32 Event, SK_EVPARA Para);
-extern void SkHWLinkUp(SK_AC *pAC, SK_IOC IoC, int Port);
-extern void SkHWLinkDown(SK_AC *pAC, SK_IOC IoC, int Port);
-
-#endif /* _INC_SKGESIRQ_H_ */
+/******************************************************************************
+ *
+ * Name:       skgesirq.h
+ * Project:    GEnesis, PCI Gigabit Ethernet Adapter
+ * Version:    $Revision: 1.1.1.1 $
+ * Date:       $Date: 2009/03/25 22:22:09 $
+ * Purpose:    SK specific Gigabit Ethernet special IRQ functions
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ *     (C)Copyright 1998-2002 SysKonnect GmbH.
+ *
+ *     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.
+ *
+ *     The information in this file is provided "AS IS" without warranty.
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ * History:
+ *     $Log: skgesirq.h,v $
+ *     Revision 1.1.1.1  2009/03/25 22:22:09  kenagy
+ *     no message
+ *     
+ *     Revision 1.26  2002/10/14 09:52:36  rschmidt
+ *     Added SKERR_SIRQ_E023 and SKERR_SIRQ_E023 for GPHY (Yukon)
+ *     Editorial changes
+ *
+ *     Revision 1.25  2002/07/15 18:15:52  rwahl
+ *     Editorial changes.
+ *
+ *     Revision 1.24  2002/07/15 15:39:21  rschmidt
+ *     Corrected define for SKERR_SIRQ_E022
+ *     Editorial changes
+ *
+ *     Revision 1.23  2002/04/25 11:09:45  rschmidt
+ *     Removed declarations for SkXmInitPhy(), SkXmRxTxEnable()
+ *     Editorial changes
+ *
+ *     Revision 1.22  2000/11/09 11:30:10  rassmann
+ *     WA: Waiting after releasing reset until BCom chip is accessible.
+ *
+ *     Revision 1.21  2000/10/18 12:22:40  cgoos
+ *     Added workaround for half duplex hangup.
+ *
+ *     Revision 1.20  1999/12/06 10:00:44  cgoos
+ *     Added SET event for role.
+ *
+ *     Revision 1.19  1999/11/22 13:58:26  cgoos
+ *     Changed license header to GPL.
+ *
+ *     Revision 1.18  1999/05/19 07:32:59  cgoos
+ *     Changes for 1000Base-T.
+ *
+ *     Revision 1.17  1999/03/12 13:29:31  malthoff
+ *     Move Autonegotiation Error Codes to skgeinit.h.
+ *
+ *     Revision 1.16  1999/03/08 10:11:28  gklug
+ *     add: AutoNegDone return codes
+ *
+ *     Revision 1.15  1998/11/18 13:20:53  gklug
+ *     add: different timeouts for active and non-active links
+ *
+ *     Revision 1.14  1998/11/04 07:18:14  cgoos
+ *     Added prototype for SkXmRxTxEnable.
+ *
+ *     Revision 1.13  1998/10/21 05:52:23  gklug
+ *     add: parameter DoLoop to InitPhy function
+ *
+ *     Revision 1.12  1998/10/19 06:45:03  cgoos
+ *     Added prototype for SkXmInitPhy.
+ *
+ *     Revision 1.11  1998/10/15 14:34:10  gklug
+ *     add: WA_TIME is 500 msec
+ *
+ *     Revision 1.10  1998/10/14 14:49:41  malthoff
+ *     Remove err log defines E021 and E022. They are
+ *     defined in skgeinit.h now.
+ *
+ *     Revision 1.9  1998/10/14 14:00:39  gklug
+ *     add: error logs for init phys
+ *
+ *     Revision 1.8  1998/10/14 05:44:05  gklug
+ *     add: E020
+ *
+ *     Revision 1.7  1998/10/02 06:24:58  gklug
+ *     add: error messages
+ *
+ *     Revision 1.6  1998/10/01 07:54:45  gklug
+ *     add: PNMI debug module
+ *
+ *     Revision 1.5  1998/09/28 13:36:31  malthoff
+ *     Move the bit definitions for Autonegotiation
+ *     and Flow Control to skgeinit.h.
+ *
+ *     Revision 1.4  1998/09/15 12:29:34  gklug
+ *     add: error logs
+ *
+ *     Revision 1.3  1998/09/03 13:54:02  gklug
+ *     add: function prototypes
+ *
+ *     Revision 1.2  1998/09/03 10:24:36  gklug
+ *     add: Events send by PNMI
+ *     add: parameter definition for Flow Control etc.
+ *
+ *     Revision 1.1  1998/08/27 11:50:27  gklug
+ *     initial revision
+ *
+ *
+ ******************************************************************************/
+
+#ifndef _INC_SKGESIRQ_H_
+#define _INC_SKGESIRQ_H_
+
+/*
+ * Define the Event the special IRQ/INI module can handle
+ */
+#define SK_HWEV_WATIM                  1       /* Timeout for WA errata #2 XMAC */
+#define SK_HWEV_PORT_START             2       /* Port Start Event by RLMT */
+#define SK_HWEV_PORT_STOP              3       /* Port Stop Event by RLMT */
+#define SK_HWEV_CLEAR_STAT             4       /* Clear Statistics by PNMI */
+#define SK_HWEV_UPDATE_STAT            5       /* Update Statistics by PNMI */
+#define SK_HWEV_SET_LMODE              6       /* Set Link Mode by PNMI */
+#define SK_HWEV_SET_FLOWMODE   7       /* Set Flow Control Mode by PNMI */
+#define SK_HWEV_SET_ROLE               8       /* Set Master/Slave (Role) by PNMI */
+#define SK_HWEV_SET_SPEED              9       /* Set Link Speed by PNMI */
+#define SK_HWEV_HALFDUP_CHK            10      /* Half Duplex Hangup Workaround */
+
+#define SK_WA_ACT_TIME         (5000000L)      /* 5 sec */
+#define SK_WA_INA_TIME         (100000L)       /* 100 msec */
+
+#define SK_HALFDUP_CHK_TIME    (10000L)        /* 10 msec */
+
+/*
+ * Define the error numbers and messages
+ */
+#define SKERR_SIRQ_E001                (SK_ERRBASE_SIRQ+0)
+#define SKERR_SIRQ_E001MSG     "Unknown event"
+#define SKERR_SIRQ_E002                (SKERR_SIRQ_E001+1)
+#define SKERR_SIRQ_E002MSG     "Packet timeout RX1"
+#define SKERR_SIRQ_E003                (SKERR_SIRQ_E002+1)
+#define SKERR_SIRQ_E003MSG     "Packet timeout RX2"
+#define SKERR_SIRQ_E004                (SKERR_SIRQ_E003+1)
+#define SKERR_SIRQ_E004MSG     "MAC 1 not correctly initialized"
+#define SKERR_SIRQ_E005                (SKERR_SIRQ_E004+1)
+#define SKERR_SIRQ_E005MSG     "MAC 2 not correctly initialized"
+#define SKERR_SIRQ_E006                (SKERR_SIRQ_E005+1)
+#define SKERR_SIRQ_E006MSG     "CHECK failure R1"
+#define SKERR_SIRQ_E007                (SKERR_SIRQ_E006+1)
+#define SKERR_SIRQ_E007MSG     "CHECK failure R2"
+#define SKERR_SIRQ_E008                (SKERR_SIRQ_E007+1)
+#define SKERR_SIRQ_E008MSG     "CHECK failure XS1"
+#define SKERR_SIRQ_E009                (SKERR_SIRQ_E008+1)
+#define SKERR_SIRQ_E009MSG     "CHECK failure XA1"
+#define SKERR_SIRQ_E010                (SKERR_SIRQ_E009+1)
+#define SKERR_SIRQ_E010MSG     "CHECK failure XS2"
+#define SKERR_SIRQ_E011                (SKERR_SIRQ_E010+1)
+#define SKERR_SIRQ_E011MSG     "CHECK failure XA2"
+#define SKERR_SIRQ_E012                (SKERR_SIRQ_E011+1)
+#define SKERR_SIRQ_E012MSG     "unexpected IRQ Master error"
+#define SKERR_SIRQ_E013                (SKERR_SIRQ_E012+1)
+#define SKERR_SIRQ_E013MSG     "unexpected IRQ Status error"
+#define SKERR_SIRQ_E014                (SKERR_SIRQ_E013+1)
+#define SKERR_SIRQ_E014MSG     "Parity error on RAM (read)"
+#define SKERR_SIRQ_E015                (SKERR_SIRQ_E014+1)
+#define SKERR_SIRQ_E015MSG     "Parity error on RAM (write)"
+#define SKERR_SIRQ_E016                (SKERR_SIRQ_E015+1)
+#define SKERR_SIRQ_E016MSG     "Parity error MAC 1"
+#define SKERR_SIRQ_E017                (SKERR_SIRQ_E016+1)
+#define SKERR_SIRQ_E017MSG     "Parity error MAC 2"
+#define SKERR_SIRQ_E018                (SKERR_SIRQ_E017+1)
+#define SKERR_SIRQ_E018MSG     "Parity error RX 1"
+#define SKERR_SIRQ_E019                (SKERR_SIRQ_E018+1)
+#define SKERR_SIRQ_E019MSG     "Parity error RX 2"
+#define SKERR_SIRQ_E020                (SKERR_SIRQ_E019+1)
+#define SKERR_SIRQ_E020MSG     "MAC transmit FIFO underrun"
+#define SKERR_SIRQ_E021                (SKERR_SIRQ_E020+1)
+#define SKERR_SIRQ_E021MSG     "Spurious TWSI interrupt"
+#define SKERR_SIRQ_E022                (SKERR_SIRQ_E021+1)
+#define SKERR_SIRQ_E022MSG     "Cable pair swap error"
+#define SKERR_SIRQ_E023                (SKERR_SIRQ_E022+1)
+#define SKERR_SIRQ_E023MSG     "Auto-negotiation error"
+#define SKERR_SIRQ_E024                (SKERR_SIRQ_E023+1)
+#define SKERR_SIRQ_E024MSG     "FIFO overflow error"
+
+extern void SkGeSirqIsr(SK_AC *pAC, SK_IOC IoC, SK_U32 Istatus);
+extern int  SkGeSirqEvent(SK_AC *pAC, SK_IOC IoC, SK_U32 Event, SK_EVPARA Para);
+extern void SkHWLinkUp(SK_AC *pAC, SK_IOC IoC, int Port);
+extern void SkHWLinkDown(SK_AC *pAC, SK_IOC IoC, int Port);
+
+#endif /* _INC_SKGESIRQ_H_ */
diff -Naur u-boot-2009.03_orig/drivers/net/sk98lin/h/ski2c.h u-boot-2009.03/drivers/net/sk98lin/h/ski2c.h
--- u-boot-2009.03_orig/drivers/net/sk98lin/h/ski2c.h   2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/drivers/net/sk98lin/h/ski2c.h        2009-03-31 14:54:46.049792800 -0700
@@ -1,292 +1,295 @@
-/******************************************************************************
- *
- * Name:       ski2c.h
- * Project:    GEnesis, PCI Gigabit Ethernet Adapter
- * Version:    $Revision: 1.34 $
- * Date:       $Date: 2003/01/28 09:11:21 $
- * Purpose:    Defines to access Voltage and Temperature Sensor
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- *     (C)Copyright 1998-2003 SysKonnect GmbH.
- *
- *     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.
- *
- *     The information in this file is provided "AS IS" without warranty.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * History:
- *
- *     $Log: ski2c.h,v $
- *     Revision 1.34  2003/01/28 09:11:21  rschmidt
- *     Editorial changes
- *
- *     Revision 1.33  2002/10/14 16:40:50  rschmidt
- *     Editorial changes (TWSI)
- *
- *     Revision 1.32  2002/08/13 08:55:07  rschmidt
- *     Editorial changes
- *
- *     Revision 1.31  2002/08/06 09:44:22  jschmalz
- *     Extensions and changes for Yukon
- *
- *     Revision 1.30  2001/04/05 11:38:09  rassmann
- *     Set SenState to idle in SkI2cWaitIrq().
- *     Changed error message in SkI2cWaitIrq().
- *
- *     Revision 1.29  2000/08/03 14:28:17  rassmann
- *     - Added function to wait for I2C being ready before resetting the board.
- *     - Replaced one duplicate "out of range" message with correct one.
- *
- *     Revision 1.28  1999/11/22 13:55:46  cgoos
- *     Changed license header to GPL.
- *
- *     Revision 1.27  1999/05/20 09:23:10  cgoos
- *     Changes for 1000Base-T (Fan sensors).
- *
- *     Revision 1.26  1998/12/01 13:45:47  gklug
- *     add: InitLevel to I2c struct
- *
- *     Revision 1.25  1998/11/03 06:55:16  gklug
- *     add: Dummy Reads to I2c struct
- *
- *     Revision 1.24  1998/10/02 14:28:59  cgoos
- *     Added prototype for SkI2cIsr.
- *
- *     Revision 1.23  1998/09/08 12:20:11  gklug
- *     add: prototypes for init and read functions
- *
- *     Revision 1.22  1998/09/08 07:37:56  gklug
- *     add: log error if PCI_IO voltage sensor could not be initialized
- *
- *     Revision 1.21  1998/09/04 08:38:05  malthoff
- *     Change the values for I2C_READ and I2C_WRITE
- *
- *     Revision 1.20  1998/08/25 07:52:22  gklug
- *     chg: Timestamps (last) added for logging
- *
- *     Revision 1.19  1998/08/25 06:09:00  gklug
- *     rmv: warning and error levels of the individual sensors.
- *     add: timing definitions for sending traps and logging errors
- *
- *     Revision 1.18  1998/08/20 11:41:15  gklug
- *     chg: omit STRCPY macro by using char * as Sensor Description
- *
- *     Revision 1.17  1998/08/20 11:37:43  gklug
- *     chg: change Ioc to IoC
- *
- *     Revision 1.16  1998/08/20 11:30:38  gklug
- *     fix: SenRead declaration
- *
- *     Revision 1.15  1998/08/20 11:27:53  gklug
- *     fix: Compile bugs with new awrning constants
- *
- *     Revision 1.14  1998/08/20 08:53:12  gklug
- *     fix: compiler errors
- *     add: Threshold values
- *
- *     Revision 1.13  1998/08/19 12:21:16  gklug
- *     fix: remove struct from C files (see CCC)
- *     add: typedefs for all structs
- *
- *     Revision 1.12  1998/08/19 10:57:41  gklug
- *     add: Warning levels
- *
- *     Revision 1.11  1998/08/18 08:37:02  malthoff
- *     Prototypes not required for SK_DIAG.
- *
- *     Revision 1.10  1998/08/17 13:54:00  gklug
- *     fix: declaration of event function
- *
- *     Revision 1.9  1998/08/17 06:48:39  malthoff
- *     Remove some unrequired macros.
- *     Fix the compiler errors.
- *
- *     Revision 1.8  1998/08/14 06:47:19  gklug
- *     fix: Values are intergers
- *
- *     Revision 1.7  1998/08/14 06:26:05  gklug
- *     add: Init error message
- *
- *     Revision 1.6  1998/08/13 08:31:08  gklug
- *     add: Error message
- *
- *     Revision 1.5  1998/08/12 14:32:04  gklug
- *     add: new error code/message
- *
- *     Revision 1.4  1998/08/12 13:39:08  gklug
- *     chg: names of error messages
- *     add: defines for Sensor type and thresholds
- *
- *     Revision 1.3  1998/08/11 07:57:16  gklug
- *     add: sensor struct
- *     add: Timeout defines
- *     add: I2C control struct for pAC
- *
- *     Revision 1.2  1998/07/17 11:29:02  gklug
- *     rmv: Microwire and SMTPANIC
- *
- *     Revision 1.1  1998/06/19 14:30:10  malthoff
- *     Created. Sources taken from ML Project.
- *
- *
- ******************************************************************************/
-
-/*
- * SKI2C.H     contains all I2C specific defines
- */
-
-#ifndef _SKI2C_H_
-#define _SKI2C_H_
-
-typedef struct  s_Sensor SK_SENSOR;
-
-#include "h/skgei2c.h"
-
-/*
- * Define the I2C events.
- */
-#define SK_I2CEV_IRQ   1       /* IRQ happened Event */
-#define SK_I2CEV_TIM   2       /* Timeout event */
-#define SK_I2CEV_CLEAR 3       /* Clear MIB Values */
-
-/*
- * Define READ and WRITE Constants.
- */
-#undef I2C_READ                /* just in case */
-#undef I2C_WRITE               /* just in case */
-#define I2C_READ       0
-#define I2C_WRITE      1
-#define I2C_BURST      1
-#define I2C_SINGLE     0
-
-#define SKERR_I2C_E001         (SK_ERRBASE_I2C+0)
-#define SKERR_I2C_E001MSG      "Sensor index unknown"
-#define SKERR_I2C_E002         (SKERR_I2C_E001+1)
-#define SKERR_I2C_E002MSG      "TWSI: transfer does not complete"
-#define SKERR_I2C_E003         (SKERR_I2C_E002+1)
-#define SKERR_I2C_E003MSG      "LM80: NAK on device send"
-#define SKERR_I2C_E004         (SKERR_I2C_E003+1)
-#define SKERR_I2C_E004MSG      "LM80: NAK on register send"
-#define SKERR_I2C_E005         (SKERR_I2C_E004+1)
-#define SKERR_I2C_E005MSG      "LM80: NAK on device (2) send"
-#define SKERR_I2C_E006         (SKERR_I2C_E005+1)
-#define SKERR_I2C_E006MSG      "Unknown event"
-#define SKERR_I2C_E007         (SKERR_I2C_E006+1)
-#define SKERR_I2C_E007MSG      "LM80 read out of state"
-#define SKERR_I2C_E008         (SKERR_I2C_E007+1)
-#define SKERR_I2C_E008MSG      "Unexpected sensor read completed"
-#define SKERR_I2C_E009         (SKERR_I2C_E008+1)
-#define SKERR_I2C_E009MSG      "WARNING: temperature sensor out of range"
-#define SKERR_I2C_E010         (SKERR_I2C_E009+1)
-#define SKERR_I2C_E010MSG      "WARNING: voltage sensor out of range"
-#define SKERR_I2C_E011         (SKERR_I2C_E010+1)
-#define SKERR_I2C_E011MSG      "ERROR: temperature sensor out of range"
-#define SKERR_I2C_E012         (SKERR_I2C_E011+1)
-#define SKERR_I2C_E012MSG      "ERROR: voltage sensor out of range"
-#define SKERR_I2C_E013         (SKERR_I2C_E012+1)
-#define SKERR_I2C_E013MSG      "ERROR: couldn't init sensor"
-#define SKERR_I2C_E014         (SKERR_I2C_E013+1)
-#define SKERR_I2C_E014MSG      "WARNING: fan sensor out of range"
-#define SKERR_I2C_E015         (SKERR_I2C_E014+1)
-#define SKERR_I2C_E015MSG      "ERROR: fan sensor out of range"
-#define SKERR_I2C_E016         (SKERR_I2C_E015+1)
-#define SKERR_I2C_E016MSG      "TWSI: active transfer does not complete"
-
-/*
- * Define Timeout values
- */
-#define SK_I2C_TIM_LONG                2000000L        /* 2 seconds */
-#define SK_I2C_TIM_SHORT        100000L        /* 100 milliseconds */
-#define SK_I2C_TIM_WATCH       1000000L        /* 1 second */
-
-/*
- * Define trap and error log hold times
- */
-#ifndef        SK_SEN_ERR_TR_HOLD
-#define SK_SEN_ERR_TR_HOLD             (4*SK_TICKS_PER_SEC)
-#endif
-#ifndef        SK_SEN_ERR_LOG_HOLD
-#define SK_SEN_ERR_LOG_HOLD            (60*SK_TICKS_PER_SEC)
-#endif
-#ifndef        SK_SEN_WARN_TR_HOLD
-#define SK_SEN_WARN_TR_HOLD            (15*SK_TICKS_PER_SEC)
-#endif
-#ifndef        SK_SEN_WARN_LOG_HOLD
-#define SK_SEN_WARN_LOG_HOLD   (15*60*SK_TICKS_PER_SEC)
-#endif
-
-/*
- * Defines for SenType
- */
-#define SK_SEN_UNKNOWN 0
-#define SK_SEN_TEMP            1
-#define SK_SEN_VOLT            2
-#define SK_SEN_FAN             3
-
-/*
- * Define for the SenErrorFlag
- */
-#define SK_SEN_ERR_NOT_PRESENT 0        /* Error Flag: Sensor not present */
-#define SK_SEN_ERR_OK                  1       /* Error Flag: O.K. */
-#define SK_SEN_ERR_WARN                        2       /* Error Flag: Warning */
-#define SK_SEN_ERR_ERR                 3       /* Error Flag: Error */
-#define SK_SEN_ERR_FAULTY              4       /* Error Flag: Faulty */
-
-/*
- * Define the Sensor struct
- */
-struct s_Sensor {
-       char    *SenDesc;                       /* Description */
-       int             SenType;                        /* Voltage or Temperature */
-       SK_I32  SenValue;                       /* Current value of the sensor */
-       SK_I32  SenThreErrHigh;         /* High error Threshhold of this sensor */
-       SK_I32  SenThreWarnHigh;        /* High warning Threshhold of this sensor */
-       SK_I32  SenThreErrLow;          /* Lower error Threshold of the sensor */
-       SK_I32  SenThreWarnLow;         /* Lower warning Threshold of the sensor */
-       int             SenErrFlag;                     /* Sensor indicated an error */
-       SK_BOOL SenInit;                        /* Is sensor initialized ? */
-       SK_U64  SenErrCts;                      /* Error  trap counter */
-       SK_U64  SenWarnCts;                     /* Warning trap counter */
-       SK_U64  SenBegErrTS;            /* Begin error timestamp */
-       SK_U64  SenBegWarnTS;           /* Begin warning timestamp */
-       SK_U64  SenLastErrTrapTS;       /* Last error trap timestamp */
-       SK_U64  SenLastErrLogTS;        /* Last error log timestamp */
-       SK_U64  SenLastWarnTrapTS;      /* Last warning trap timestamp */
-       SK_U64  SenLastWarnLogTS;       /* Last warning log timestamp */
-       int             SenState;                       /* Sensor State (see HW specific include) */
-       int             (*SenRead)(SK_AC *pAC, SK_IOC IoC, struct s_Sensor *pSen);
-                                                               /* Sensors read function */
-       SK_U16  SenReg;                         /* Register Address for this sensor */
-       SK_U8   SenDev;                         /* Device Selection for this sensor */
-};
-
-typedef        struct  s_I2c {
-       SK_SENSOR       SenTable[SK_MAX_SENSORS];       /* Sensor Table */
-       int                     CurrSens;       /* Which sensor is currently queried */
-       int                     MaxSens;        /* Max. number of sensors */
-       int                     TimerMode;      /* Use the timer also to watch the state machine */
-       int                     InitLevel;      /* Initialized Level */
-#ifndef SK_DIAG
-       int                     DummyReads;     /* Number of non-checked dummy reads */
-       SK_TIMER        SenTimer;       /* Sensors timer */
-#endif /* !SK_DIAG */
-} SK_I2C;
-
-extern int SkI2cReadSensor(SK_AC *pAC, SK_IOC IoC, SK_SENSOR *pSen);
-#ifndef SK_DIAG
-extern int SkI2cEvent(SK_AC *pAC, SK_IOC IoC, SK_U32 Event, SK_EVPARA Para);
-extern int SkI2cInit(SK_AC *pAC, SK_IOC IoC, int Level);
-extern void SkI2cWaitIrq(SK_AC *pAC, SK_IOC IoC);
-extern void SkI2cIsr(SK_AC *pAC, SK_IOC IoC);
-
-#endif
-#endif /* n_SKI2C_H */
+/******************************************************************************
+ *
+ * Name:       ski2c.h
+ * Project:    GEnesis, PCI Gigabit Ethernet Adapter
+ * Version:    $Revision: 1.1.1.1 $
+ * Date:       $Date: 2009/03/25 22:22:09 $
+ * Purpose:    Defines to access Voltage and Temperature Sensor
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ *     (C)Copyright 1998-2003 SysKonnect GmbH.
+ *
+ *     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.
+ *
+ *     The information in this file is provided "AS IS" without warranty.
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ * History:
+ *
+ *     $Log: ski2c.h,v $
+ *     Revision 1.1.1.1  2009/03/25 22:22:09  kenagy
+ *     no message
+ *     
+ *     Revision 1.34  2003/01/28 09:11:21  rschmidt
+ *     Editorial changes
+ *
+ *     Revision 1.33  2002/10/14 16:40:50  rschmidt
+ *     Editorial changes (TWSI)
+ *
+ *     Revision 1.32  2002/08/13 08:55:07  rschmidt
+ *     Editorial changes
+ *
+ *     Revision 1.31  2002/08/06 09:44:22  jschmalz
+ *     Extensions and changes for Yukon
+ *
+ *     Revision 1.30  2001/04/05 11:38:09  rassmann
+ *     Set SenState to idle in SkI2cWaitIrq().
+ *     Changed error message in SkI2cWaitIrq().
+ *
+ *     Revision 1.29  2000/08/03 14:28:17  rassmann
+ *     - Added function to wait for I2C being ready before resetting the board.
+ *     - Replaced one duplicate "out of range" message with correct one.
+ *
+ *     Revision 1.28  1999/11/22 13:55:46  cgoos
+ *     Changed license header to GPL.
+ *
+ *     Revision 1.27  1999/05/20 09:23:10  cgoos
+ *     Changes for 1000Base-T (Fan sensors).
+ *
+ *     Revision 1.26  1998/12/01 13:45:47  gklug
+ *     add: InitLevel to I2c struct
+ *
+ *     Revision 1.25  1998/11/03 06:55:16  gklug
+ *     add: Dummy Reads to I2c struct
+ *
+ *     Revision 1.24  1998/10/02 14:28:59  cgoos
+ *     Added prototype for SkI2cIsr.
+ *
+ *     Revision 1.23  1998/09/08 12:20:11  gklug
+ *     add: prototypes for init and read functions
+ *
+ *     Revision 1.22  1998/09/08 07:37:56  gklug
+ *     add: log error if PCI_IO voltage sensor could not be initialized
+ *
+ *     Revision 1.21  1998/09/04 08:38:05  malthoff
+ *     Change the values for I2C_READ and I2C_WRITE
+ *
+ *     Revision 1.20  1998/08/25 07:52:22  gklug
+ *     chg: Timestamps (last) added for logging
+ *
+ *     Revision 1.19  1998/08/25 06:09:00  gklug
+ *     rmv: warning and error levels of the individual sensors.
+ *     add: timing definitions for sending traps and logging errors
+ *
+ *     Revision 1.18  1998/08/20 11:41:15  gklug
+ *     chg: omit STRCPY macro by using char * as Sensor Description
+ *
+ *     Revision 1.17  1998/08/20 11:37:43  gklug
+ *     chg: change Ioc to IoC
+ *
+ *     Revision 1.16  1998/08/20 11:30:38  gklug
+ *     fix: SenRead declaration
+ *
+ *     Revision 1.15  1998/08/20 11:27:53  gklug
+ *     fix: Compile bugs with new awrning constants
+ *
+ *     Revision 1.14  1998/08/20 08:53:12  gklug
+ *     fix: compiler errors
+ *     add: Threshold values
+ *
+ *     Revision 1.13  1998/08/19 12:21:16  gklug
+ *     fix: remove struct from C files (see CCC)
+ *     add: typedefs for all structs
+ *
+ *     Revision 1.12  1998/08/19 10:57:41  gklug
+ *     add: Warning levels
+ *
+ *     Revision 1.11  1998/08/18 08:37:02  malthoff
+ *     Prototypes not required for SK_DIAG.
+ *
+ *     Revision 1.10  1998/08/17 13:54:00  gklug
+ *     fix: declaration of event function
+ *
+ *     Revision 1.9  1998/08/17 06:48:39  malthoff
+ *     Remove some unrequired macros.
+ *     Fix the compiler errors.
+ *
+ *     Revision 1.8  1998/08/14 06:47:19  gklug
+ *     fix: Values are intergers
+ *
+ *     Revision 1.7  1998/08/14 06:26:05  gklug
+ *     add: Init error message
+ *
+ *     Revision 1.6  1998/08/13 08:31:08  gklug
+ *     add: Error message
+ *
+ *     Revision 1.5  1998/08/12 14:32:04  gklug
+ *     add: new error code/message
+ *
+ *     Revision 1.4  1998/08/12 13:39:08  gklug
+ *     chg: names of error messages
+ *     add: defines for Sensor type and thresholds
+ *
+ *     Revision 1.3  1998/08/11 07:57:16  gklug
+ *     add: sensor struct
+ *     add: Timeout defines
+ *     add: I2C control struct for pAC
+ *
+ *     Revision 1.2  1998/07/17 11:29:02  gklug
+ *     rmv: Microwire and SMTPANIC
+ *
+ *     Revision 1.1  1998/06/19 14:30:10  malthoff
+ *     Created. Sources taken from ML Project.
+ *
+ *
+ ******************************************************************************/
+
+/*
+ * SKI2C.H     contains all I2C specific defines
+ */
+
+#ifndef _SKI2C_H_
+#define _SKI2C_H_
+
+typedef struct  s_Sensor SK_SENSOR;
+
+#include "h/skgei2c.h"
+
+/*
+ * Define the I2C events.
+ */
+#define SK_I2CEV_IRQ   1       /* IRQ happened Event */
+#define SK_I2CEV_TIM   2       /* Timeout event */
+#define SK_I2CEV_CLEAR 3       /* Clear MIB Values */
+
+/*
+ * Define READ and WRITE Constants.
+ */
+#undef I2C_READ                /* just in case */
+#undef I2C_WRITE               /* just in case */
+#define I2C_READ       0
+#define I2C_WRITE      1
+#define I2C_BURST      1
+#define I2C_SINGLE     0
+
+#define SKERR_I2C_E001         (SK_ERRBASE_I2C+0)
+#define SKERR_I2C_E001MSG      "Sensor index unknown"
+#define SKERR_I2C_E002         (SKERR_I2C_E001+1)
+#define SKERR_I2C_E002MSG      "TWSI: transfer does not complete"
+#define SKERR_I2C_E003         (SKERR_I2C_E002+1)
+#define SKERR_I2C_E003MSG      "LM80: NAK on device send"
+#define SKERR_I2C_E004         (SKERR_I2C_E003+1)
+#define SKERR_I2C_E004MSG      "LM80: NAK on register send"
+#define SKERR_I2C_E005         (SKERR_I2C_E004+1)
+#define SKERR_I2C_E005MSG      "LM80: NAK on device (2) send"
+#define SKERR_I2C_E006         (SKERR_I2C_E005+1)
+#define SKERR_I2C_E006MSG      "Unknown event"
+#define SKERR_I2C_E007         (SKERR_I2C_E006+1)
+#define SKERR_I2C_E007MSG      "LM80 read out of state"
+#define SKERR_I2C_E008         (SKERR_I2C_E007+1)
+#define SKERR_I2C_E008MSG      "Unexpected sensor read completed"
+#define SKERR_I2C_E009         (SKERR_I2C_E008+1)
+#define SKERR_I2C_E009MSG      "WARNING: temperature sensor out of range"
+#define SKERR_I2C_E010         (SKERR_I2C_E009+1)
+#define SKERR_I2C_E010MSG      "WARNING: voltage sensor out of range"
+#define SKERR_I2C_E011         (SKERR_I2C_E010+1)
+#define SKERR_I2C_E011MSG      "ERROR: temperature sensor out of range"
+#define SKERR_I2C_E012         (SKERR_I2C_E011+1)
+#define SKERR_I2C_E012MSG      "ERROR: voltage sensor out of range"
+#define SKERR_I2C_E013         (SKERR_I2C_E012+1)
+#define SKERR_I2C_E013MSG      "ERROR: couldn't init sensor"
+#define SKERR_I2C_E014         (SKERR_I2C_E013+1)
+#define SKERR_I2C_E014MSG      "WARNING: fan sensor out of range"
+#define SKERR_I2C_E015         (SKERR_I2C_E014+1)
+#define SKERR_I2C_E015MSG      "ERROR: fan sensor out of range"
+#define SKERR_I2C_E016         (SKERR_I2C_E015+1)
+#define SKERR_I2C_E016MSG      "TWSI: active transfer does not complete"
+
+/*
+ * Define Timeout values
+ */
+#define SK_I2C_TIM_LONG                2000000L        /* 2 seconds */
+#define SK_I2C_TIM_SHORT        100000L        /* 100 milliseconds */
+#define SK_I2C_TIM_WATCH       1000000L        /* 1 second */
+
+/*
+ * Define trap and error log hold times
+ */
+#ifndef        SK_SEN_ERR_TR_HOLD
+#define SK_SEN_ERR_TR_HOLD             (4*SK_TICKS_PER_SEC)
+#endif
+#ifndef        SK_SEN_ERR_LOG_HOLD
+#define SK_SEN_ERR_LOG_HOLD            (60*SK_TICKS_PER_SEC)
+#endif
+#ifndef        SK_SEN_WARN_TR_HOLD
+#define SK_SEN_WARN_TR_HOLD            (15*SK_TICKS_PER_SEC)
+#endif
+#ifndef        SK_SEN_WARN_LOG_HOLD
+#define SK_SEN_WARN_LOG_HOLD   (15*60*SK_TICKS_PER_SEC)
+#endif
+
+/*
+ * Defines for SenType
+ */
+#define SK_SEN_UNKNOWN 0
+#define SK_SEN_TEMP            1
+#define SK_SEN_VOLT            2
+#define SK_SEN_FAN             3
+
+/*
+ * Define for the SenErrorFlag
+ */
+#define SK_SEN_ERR_NOT_PRESENT 0        /* Error Flag: Sensor not present */
+#define SK_SEN_ERR_OK                  1       /* Error Flag: O.K. */
+#define SK_SEN_ERR_WARN                        2       /* Error Flag: Warning */
+#define SK_SEN_ERR_ERR                 3       /* Error Flag: Error */
+#define SK_SEN_ERR_FAULTY              4       /* Error Flag: Faulty */
+
+/*
+ * Define the Sensor struct
+ */
+struct s_Sensor {
+       char    *SenDesc;                       /* Description */
+       int             SenType;                        /* Voltage or Temperature */
+       SK_I32  SenValue;                       /* Current value of the sensor */
+       SK_I32  SenThreErrHigh;         /* High error Threshhold of this sensor */
+       SK_I32  SenThreWarnHigh;        /* High warning Threshhold of this sensor */
+       SK_I32  SenThreErrLow;          /* Lower error Threshold of the sensor */
+       SK_I32  SenThreWarnLow;         /* Lower warning Threshold of the sensor */
+       int             SenErrFlag;                     /* Sensor indicated an error */
+       SK_BOOL SenInit;                        /* Is sensor initialized ? */
+       SK_U64  SenErrCts;                      /* Error  trap counter */
+       SK_U64  SenWarnCts;                     /* Warning trap counter */
+       SK_U64  SenBegErrTS;            /* Begin error timestamp */
+       SK_U64  SenBegWarnTS;           /* Begin warning timestamp */
+       SK_U64  SenLastErrTrapTS;       /* Last error trap timestamp */
+       SK_U64  SenLastErrLogTS;        /* Last error log timestamp */
+       SK_U64  SenLastWarnTrapTS;      /* Last warning trap timestamp */
+       SK_U64  SenLastWarnLogTS;       /* Last warning log timestamp */
+       int             SenState;                       /* Sensor State (see HW specific include) */
+       int             (*SenRead)(SK_AC *pAC, SK_IOC IoC, struct s_Sensor *pSen);
+                                                               /* Sensors read function */
+       SK_U16  SenReg;                         /* Register Address for this sensor */
+       SK_U8   SenDev;                         /* Device Selection for this sensor */
+};
+
+typedef        struct  s_I2c {
+       SK_SENSOR       SenTable[SK_MAX_SENSORS];       /* Sensor Table */
+       int                     CurrSens;       /* Which sensor is currently queried */
+       int                     MaxSens;        /* Max. number of sensors */
+       int                     TimerMode;      /* Use the timer also to watch the state machine */
+       int                     InitLevel;      /* Initialized Level */
+#ifndef SK_DIAG
+       int                     DummyReads;     /* Number of non-checked dummy reads */
+       SK_TIMER        SenTimer;       /* Sensors timer */
+#endif /* !SK_DIAG */
+} SK_I2C;
+
+extern int SkI2cReadSensor(SK_AC *pAC, SK_IOC IoC, SK_SENSOR *pSen);
+#ifndef SK_DIAG
+extern int SkI2cEvent(SK_AC *pAC, SK_IOC IoC, SK_U32 Event, SK_EVPARA Para);
+extern int SkI2cInit(SK_AC *pAC, SK_IOC IoC, int Level);
+extern void SkI2cWaitIrq(SK_AC *pAC, SK_IOC IoC);
+extern void SkI2cIsr(SK_AC *pAC, SK_IOC IoC);
+
+#endif
+#endif /* n_SKI2C_H */
diff -Naur u-boot-2009.03_orig/drivers/net/sk98lin/h/skqueue.h u-boot-2009.03/drivers/net/sk98lin/h/skqueue.h
--- u-boot-2009.03_orig/drivers/net/sk98lin/h/skqueue.h 2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/drivers/net/sk98lin/h/skqueue.h      2009-03-31 14:54:46.096667200 -0700
@@ -1,147 +1,150 @@
-/******************************************************************************
- *
- * Name:       skqueue.h
- * Project:    GEnesis, PCI Gigabit Ethernet Adapter
- * Version:    $Revision: 1.14 $
- * Date:       $Date: 2002/03/15 10:52:13 $
- * Purpose:    Defines for the Event queue
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- *     (C)Copyright 1998,1999 SysKonnect,
- *     a business unit of Schneider & Koch & Co. Datensysteme GmbH.
- *
- *     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.
- *
- *     The information in this file is provided "AS IS" without warranty.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * History:
- *
- *     $Log: skqueue.h,v $
- *     Revision 1.14  2002/03/15 10:52:13  mkunz
- *     Added event classes for link aggregation
- *
- *     Revision 1.13  1999/11/22 13:59:05  cgoos
- *     Changed license header to GPL.
- *
- *     Revision 1.12  1998/09/08 08:48:01  gklug
- *     add: init level handling
- *
- *     Revision 1.11  1998/09/03 14:15:11  gklug
- *     add: CSUM and HWAC Eventclass and function.
- *     fix: pParaPtr according to CCC
- *
- *     Revision 1.10  1998/08/20 12:43:03  gklug
- *     add: typedef SK_QUEUE
- *
- *     Revision 1.9  1998/08/19 09:50:59  gklug
- *     fix: remove struct keyword from c-code (see CCC) add typedefs
- *
- *     Revision 1.8  1998/08/18 07:00:01  gklug
- *     fix: SK_PTR not defined use void * instead.
- *
- *     Revision 1.7  1998/08/17 13:43:19  gklug
- *     chg: Parameter will be union of 64bit para, 2 times SK_U32 or SK_PTR
- *
- *     Revision 1.6  1998/08/14 07:09:30  gklug
- *     fix: chg pAc -> pAC
- *
- *     Revision 1.5  1998/08/11 14:26:44  gklug
- *     chg: Event Dispatcher returns now int.
- *
- *     Revision 1.4  1998/08/11 12:15:21  gklug
- *     add: Error numbers of skqueue module
- *
- *     Revision 1.3  1998/08/07 12:54:23  gklug
- *     fix: first compiled version
- *
- *     Revision 1.2  1998/08/07 09:34:00  gklug
- *     adapt structure defs to CCC
- *     add: prototypes for functions
- *
- *     Revision 1.1  1998/07/30 14:52:12  gklug
- *     Initial version.
- *     Defines Event Classes, Event structs and queue management variables.
- *
- *
- *
- ******************************************************************************/
-
-/*
- * SKQUEUE.H   contains all defines and types for the event queue
- */
-
-#ifndef _SKQUEUE_H_
-#define _SKQUEUE_H_
-
-
-/*
- * define the event classes to be served
- */
-#define        SKGE_DRV        1       /* Driver Event Class */
-#define        SKGE_RLMT       2       /* RLMT Event Class */
-#define        SKGE_I2C        3       /* i2C Event Class */
-#define        SKGE_PNMI       4       /* PNMI Event Class */
-#define        SKGE_CSUM       5       /* Checksum Event Class */
-#define        SKGE_HWAC       6       /* Hardware Access Event Class */
-
-#define        SKGE_SWT        9       /* Software Timer Event Class */
-#define        SKGE_LACP       10      /* LACP Aggregation Event Class */
-#define        SKGE_RSF        11      /* RSF Aggregation Event Class */
-#define        SKGE_MARKER     12      /* MARKER Aggregation Event Class */
-#define        SKGE_FD         13      /* FD Distributor Event Class */
-
-/*
- * define event queue as circular buffer
- */
-#define SK_MAX_EVENT   64
-
-/*
- * Parameter union for the Para stuff
- */
-typedef        union u_EvPara {
-       void    *pParaPtr;      /* Parameter Pointer */
-       SK_U64  Para64;         /* Parameter 64bit version */
-       SK_U32  Para32[2];      /* Parameter Array of 32bit parameters */
-} SK_EVPARA;
-
-/*
- * Event Queue
- *     skqueue.c
- * events are class/value pairs
- *     class   is addressee, e.g. RMT, PCM etc.
- *     value   is command, e.g. line state change, ring op change etc.
- */
-typedef        struct s_EventElem {
-       SK_U32          Class ;                 /* Event class */
-       SK_U32          Event ;                 /* Event value */
-       SK_EVPARA       Para ;                  /* Event parameter */
-} SK_EVENTELEM;
-
-typedef        struct s_Queue {
-       SK_EVENTELEM    EvQueue[SK_MAX_EVENT];
-       SK_EVENTELEM    *EvPut ;
-       SK_EVENTELEM    *EvGet ;
-} SK_QUEUE;
-
-extern void SkEventInit(SK_AC *pAC, SK_IOC Ioc, int Level);
-extern void SkEventQueue(SK_AC *pAC, SK_U32 Class, SK_U32 Event,
-       SK_EVPARA Para);
-extern int SkEventDispatcher(SK_AC *pAC,SK_IOC Ioc);
-
-
-/* Define Error Numbers and messages */
-#define        SKERR_Q_E001    (SK_ERRBASE_QUEUE+0)
-#define        SKERR_Q_E001MSG "Event queue overflow"
-#define        SKERR_Q_E002    (SKERR_Q_E001+1)
-#define        SKERR_Q_E002MSG "Undefined event class"
-#endif /* _SKQUEUE_H_ */
+/******************************************************************************
+ *
+ * Name:       skqueue.h
+ * Project:    GEnesis, PCI Gigabit Ethernet Adapter
+ * Version:    $Revision: 1.1.1.1 $
+ * Date:       $Date: 2009/03/25 22:22:10 $
+ * Purpose:    Defines for the Event queue
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ *     (C)Copyright 1998,1999 SysKonnect,
+ *     a business unit of Schneider & Koch & Co. Datensysteme GmbH.
+ *
+ *     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.
+ *
+ *     The information in this file is provided "AS IS" without warranty.
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ * History:
+ *
+ *     $Log: skqueue.h,v $
+ *     Revision 1.1.1.1  2009/03/25 22:22:10  kenagy
+ *     no message
+ *     
+ *     Revision 1.14  2002/03/15 10:52:13  mkunz
+ *     Added event classes for link aggregation
+ *
+ *     Revision 1.13  1999/11/22 13:59:05  cgoos
+ *     Changed license header to GPL.
+ *
+ *     Revision 1.12  1998/09/08 08:48:01  gklug
+ *     add: init level handling
+ *
+ *     Revision 1.11  1998/09/03 14:15:11  gklug
+ *     add: CSUM and HWAC Eventclass and function.
+ *     fix: pParaPtr according to CCC
+ *
+ *     Revision 1.10  1998/08/20 12:43:03  gklug
+ *     add: typedef SK_QUEUE
+ *
+ *     Revision 1.9  1998/08/19 09:50:59  gklug
+ *     fix: remove struct keyword from c-code (see CCC) add typedefs
+ *
+ *     Revision 1.8  1998/08/18 07:00:01  gklug
+ *     fix: SK_PTR not defined use void * instead.
+ *
+ *     Revision 1.7  1998/08/17 13:43:19  gklug
+ *     chg: Parameter will be union of 64bit para, 2 times SK_U32 or SK_PTR
+ *
+ *     Revision 1.6  1998/08/14 07:09:30  gklug
+ *     fix: chg pAc -> pAC
+ *
+ *     Revision 1.5  1998/08/11 14:26:44  gklug
+ *     chg: Event Dispatcher returns now int.
+ *
+ *     Revision 1.4  1998/08/11 12:15:21  gklug
+ *     add: Error numbers of skqueue module
+ *
+ *     Revision 1.3  1998/08/07 12:54:23  gklug
+ *     fix: first compiled version
+ *
+ *     Revision 1.2  1998/08/07 09:34:00  gklug
+ *     adapt structure defs to CCC
+ *     add: prototypes for functions
+ *
+ *     Revision 1.1  1998/07/30 14:52:12  gklug
+ *     Initial version.
+ *     Defines Event Classes, Event structs and queue management variables.
+ *
+ *
+ *
+ ******************************************************************************/
+
+/*
+ * SKQUEUE.H   contains all defines and types for the event queue
+ */
+
+#ifndef _SKQUEUE_H_
+#define _SKQUEUE_H_
+
+
+/*
+ * define the event classes to be served
+ */
+#define        SKGE_DRV        1       /* Driver Event Class */
+#define        SKGE_RLMT       2       /* RLMT Event Class */
+#define        SKGE_I2C        3       /* i2C Event Class */
+#define        SKGE_PNMI       4       /* PNMI Event Class */
+#define        SKGE_CSUM       5       /* Checksum Event Class */
+#define        SKGE_HWAC       6       /* Hardware Access Event Class */
+
+#define        SKGE_SWT        9       /* Software Timer Event Class */
+#define        SKGE_LACP       10      /* LACP Aggregation Event Class */
+#define        SKGE_RSF        11      /* RSF Aggregation Event Class */
+#define        SKGE_MARKER     12      /* MARKER Aggregation Event Class */
+#define        SKGE_FD         13      /* FD Distributor Event Class */
+
+/*
+ * define event queue as circular buffer
+ */
+#define SK_MAX_EVENT   64
+
+/*
+ * Parameter union for the Para stuff
+ */
+typedef        union u_EvPara {
+       void    *pParaPtr;      /* Parameter Pointer */
+       SK_U64  Para64;         /* Parameter 64bit version */
+       SK_U32  Para32[2];      /* Parameter Array of 32bit parameters */
+} SK_EVPARA;
+
+/*
+ * Event Queue
+ *     skqueue.c
+ * events are class/value pairs
+ *     class   is addressee, e.g. RMT, PCM etc.
+ *     value   is command, e.g. line state change, ring op change etc.
+ */
+typedef        struct s_EventElem {
+       SK_U32          Class ;                 /* Event class */
+       SK_U32          Event ;                 /* Event value */
+       SK_EVPARA       Para ;                  /* Event parameter */
+} SK_EVENTELEM;
+
+typedef        struct s_Queue {
+       SK_EVENTELEM    EvQueue[SK_MAX_EVENT];
+       SK_EVENTELEM    *EvPut ;
+       SK_EVENTELEM    *EvGet ;
+} SK_QUEUE;
+
+extern void SkEventInit(SK_AC *pAC, SK_IOC Ioc, int Level);
+extern void SkEventQueue(SK_AC *pAC, SK_U32 Class, SK_U32 Event,
+       SK_EVPARA Para);
+extern int SkEventDispatcher(SK_AC *pAC,SK_IOC Ioc);
+
+
+/* Define Error Numbers and messages */
+#define        SKERR_Q_E001    (SK_ERRBASE_QUEUE+0)
+#define        SKERR_Q_E001MSG "Event queue overflow"
+#define        SKERR_Q_E002    (SKERR_Q_E001+1)
+#define        SKERR_Q_E002MSG "Undefined event class"
+#endif /* _SKQUEUE_H_ */
diff -Naur u-boot-2009.03_orig/drivers/net/sk98lin/h/skrlmt.h u-boot-2009.03/drivers/net/sk98lin/h/skrlmt.h
--- u-boot-2009.03_orig/drivers/net/sk98lin/h/skrlmt.h  2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/drivers/net/sk98lin/h/skrlmt.h       2009-03-31 14:54:46.127916800 -0700
@@ -1,563 +1,566 @@
-/******************************************************************************
- *
- * Name:       skrlmt.h
- * Project:    GEnesis, PCI Gigabit Ethernet Adapter
- * Version:    $Revision: 1.35 $
- * Date:       $Date: 2003/01/31 14:12:41 $
- * Purpose:    Header file for Redundant Link ManagemenT.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- *     (C)Copyright 1998-2001 SysKonnect GmbH.
- *
- *     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.
- *
- *     The information in this file is provided "AS IS" without warranty.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * History:
- *
- *     $Log: skrlmt.h,v $
- *     Revision 1.35  2003/01/31 14:12:41  mkunz
- *     single port adapter runs now with two identical MAC addresses
- *
- *     Revision 1.34  2002/09/23 15:13:41  rwahl
- *     Editorial changes.
- *
- *     Revision 1.33  2001/07/03 12:16:48  mkunz
- *     New Flag ChgBcPrio (Change priority of last broadcast received)
- *
- *     Revision 1.32  2001/02/14 14:06:31  rassmann
- *     Editorial changes.
- *
- *     Revision 1.31  2001/02/05 14:25:26  rassmann
- *     Prepared RLMT for transparent operation.
- *
- *     Revision 1.30  2001/01/22 13:41:39  rassmann
- *     Supporting two nets on dual-port adapters.
- *
- *     Revision 1.29  2000/11/17 08:58:00  rassmann
- *     Moved CheckSwitch from SK_RLMT_PACKET_RECEIVED to SK_RLMT_TIM event.
- *
- *     Revision 1.28  2000/11/09 12:24:34  rassmann
- *     Editorial changes.
- *
- *     Revision 1.27  1999/11/22 13:59:56  cgoos
- *     Changed license header to GPL.
- *
- *     Revision 1.26  1999/10/04 14:01:19  rassmann
- *     Corrected reaction to reception of BPDU frames (#10441).
- *
- *     Revision 1.25  1999/07/20 12:53:39  rassmann
- *     Fixed documentation errors for lookahead macros.
- *
- *     Revision 1.24  1999/05/28 11:15:56  rassmann
- *     Changed behaviour to reflect Design Spec v1.2.
- *     Controlling Link LED(s).
- *     Introduced RLMT Packet Version field in RLMT Packet.
- *     Newstyle lookahead macros (checking meta-information before looking at
- *       the packet).
- *
- *     Revision 1.23  1999/01/28 12:50:42  rassmann
- *     Not using broadcast time stamps in CheckLinkState mode.
- *
- *     Revision 1.22  1999/01/27 14:13:04  rassmann
- *     Monitoring broadcast traffic.
- *     Switching more reliably and not too early if switch is
- *      configured for spanning tree.
- *
- *     Revision 1.21  1998/12/08 13:11:25  rassmann
- *     Stopping SegTimer at RlmtStop.
- *
- *     Revision 1.20  1998/11/24 12:37:33  rassmann
- *     Implemented segmentation check.
- *
- *     Revision 1.19  1998/11/17 13:43:06  rassmann
- *     Handling (logical) tx failure.
- *     Sending packet on logical address after PORT_SWITCH.
- *
- *     Revision 1.18  1998/11/13 16:56:56  rassmann
- *     Added macro version of SkRlmtLookaheadPacket.
- *
- *     Revision 1.17  1998/11/06 18:06:05  rassmann
- *     Corrected timing when RLMT checks fail.
- *     Clearing tx counter earlier in periodical checks.
- *
- *     Revision 1.16  1998/11/03 13:53:50  rassmann
- *     RLMT should switch now (at least in mode 3).
- *
- *     Revision 1.15  1998/10/22 11:39:52  rassmann
- *     Corrected signed/unsigned mismatches.
- *     Corrected receive list handling and address recognition.
- *
- *     Revision 1.14  1998/10/15 15:16:36  rassmann
- *     Finished Spanning Tree checking.
- *     Checked with lint.
- *
- *     Revision 1.13  1998/09/24 19:16:08  rassmann
- *     Code cleanup.
- *     Introduced Timer for PORT_DOWN due to no RX.
- *
- *     Revision 1.12  1998/09/16 11:09:52  rassmann
- *     Syntax corrections.
- *
- *     Revision 1.11  1998/09/15 11:28:50  rassmann
- *     Syntax corrections.
- *
- *     Revision 1.10  1998/09/14 17:07:38  rassmann
- *     Added code for port checking via LAN.
- *     Changed Mbuf definition.
- *
- *     Revision 1.9  1998/09/07 11:14:15  rassmann
- *     Syntax corrections.
- *
- *     Revision 1.8  1998/09/07 09:06:08  rassmann
- *     Syntax corrections.
- *
- *     Revision 1.7  1998/09/04 19:41:34  rassmann
- *     Syntax corrections.
- *     Started entering code for checking local links.
- *
- *     Revision 1.6  1998/09/04 12:14:28  rassmann
- *     Interface cleanup.
- *
- *     Revision 1.5  1998/09/02 16:55:29  rassmann
- *     Updated to reflect new DRV/HWAC/RLMT interface.
- *
- *     Revision 1.4  1998/09/02 07:26:02  afischer
- *     typedef for SK_RLMT_PORT
- *
- *     Revision 1.3  1998/08/27 14:29:03  rassmann
- *     Code cleanup.
- *
- *     Revision 1.2  1998/08/27 14:26:25  rassmann
- *     Updated interface.
- *
- *     Revision 1.1  1998/08/21 08:29:10  rassmann
- *     First public version.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * Description:
- *
- * This is the header file for Redundant Link ManagemenT.
- *
- * Include File Hierarchy:
- *
- *     "skdrv1st.h"
- *     ...
- *     "sktypes.h"
- *     "skqueue.h"
- *     "skaddr.h"
- *     "skrlmt.h"
- *     ...
- *     "skdrv2nd.h"
- *
- ******************************************************************************/
-
-#ifndef __INC_SKRLMT_H
-#define __INC_SKRLMT_H
-
-#ifdef __cplusplus
-#error C++ is not yet supported.
-extern "C" {
-#endif /* cplusplus */
-
-/* defines ********************************************************************/
-
-#define        SK_RLMT_NET_DOWN_TEMP   1       /* NET_DOWN due to last port down. */
-#define        SK_RLMT_NET_DOWN_FINAL  2       /* NET_DOWN due to RLMT_STOP. */
-
-/* ----- Default queue sizes - must be multiples of 8 KB ----- */
-
-/* Less than 8 KB free in RX queue => pause frames. */
-#define SK_RLMT_STANDBY_QRXSIZE        128     /* Size of rx standby queue in KB. */
-#define SK_RLMT_STANDBY_QXASIZE        32      /* Size of async standby queue in KB. */
-#define SK_RLMT_STANDBY_QXSSIZE        0        /* Size of sync standby queue in KB. */
-
-#define SK_RLMT_MAX_TX_BUF_SIZE        60      /* Maximum RLMT transmit size. */
-
-/* ----- PORT states ----- */
-
-#define SK_RLMT_PS_INIT                        0        /* Port state: Init. */
-#define SK_RLMT_PS_LINK_DOWN   1       /* Port state: Link down. */
-#define SK_RLMT_PS_DOWN                        2       /* Port state: Port down. */
-#define SK_RLMT_PS_GOING_UP            3       /* Port state: Going up. */
-#define SK_RLMT_PS_UP                  4       /* Port state: Up. */
-
-/* ----- RLMT states ----- */
-
-#define SK_RLMT_RS_INIT                        0        /* RLMT state: Init. */
-#define SK_RLMT_RS_NET_DOWN            1       /* RLMT state: Net down. */
-#define SK_RLMT_RS_NET_UP              2       /* RLMT state: Net up. */
-
-/* ----- PORT events ----- */
-
-#define SK_RLMT_LINK_UP                        1001    /* Link came up. */
-#define SK_RLMT_LINK_DOWN              1002    /* Link went down. */
-#define SK_RLMT_PORT_ADDR              1003    /* Port address changed. */
-
-/* ----- RLMT events ----- */
-
-#define SK_RLMT_START                  2001    /* Start RLMT. */
-#define SK_RLMT_STOP                   2002    /* Stop RLMT. */
-#define SK_RLMT_PACKET_RECEIVED        2003    /* Packet was received for RLMT. */
-#define SK_RLMT_STATS_CLEAR            2004    /* Clear statistics. */
-#define SK_RLMT_STATS_UPDATE   2005    /* Update statistics. */
-#define SK_RLMT_PREFPORT_CHANGE        2006    /* Change preferred port. */
-#define SK_RLMT_MODE_CHANGE            2007    /* New RlmtMode. */
-#define SK_RLMT_SET_NETS               2008    /* Number of Nets (1 or 2). */
-
-/* ----- RLMT mode bits ----- */
-
-/*
- * CAUTION:    These defines are private to RLMT.
- *                     Please use the RLMT mode defines below.
- */
-
-#define SK_RLMT_CHECK_LINK               1             /* Check Link. */
-#define SK_RLMT_CHECK_LOC_LINK   2             /* Check other link on same adapter. */
-#define SK_RLMT_CHECK_SEG                4             /* Check segmentation. */
-
-#ifndef RLMT_CHECK_REMOTE
-#define SK_RLMT_CHECK_OTHERS   SK_RLMT_CHECK_LOC_LINK
-#else  /* RLMT_CHECK_REMOTE */
-#define SK_RLMT_CHECK_REM_LINK   8             /* Check link(s) on other adapter(s). */
-#define SK_RLMT_MAX_REMOTE_PORTS_CHECKED       3
-#define SK_RLMT_CHECK_OTHERS   \
-               (SK_RLMT_CHECK_LOC_LINK | SK_RLMT_CHECK_REM_LINK)
-#endif /* RLMT_CHECK_REMOTE */
-
-#ifndef SK_RLMT_ENABLE_TRANSPARENT
-#define SK_RLMT_TRANSPARENT              0             /* RLMT transparent - inactive. */
-#else  /* SK_RLMT_ENABLE_TRANSPARENT */
-#define SK_RLMT_TRANSPARENT            128             /* RLMT transparent. */
-#endif /* SK_RLMT_ENABLE_TRANSPARENT */
-
-/* ----- RLMT modes ----- */
-
-/* Check Link State. */
-#define SK_RLMT_MODE_CLS       (SK_RLMT_CHECK_LINK)
-
-/* Check Local Ports: check other links on the same adapter. */
-#define SK_RLMT_MODE_CLP       (SK_RLMT_CHECK_LINK | SK_RLMT_CHECK_LOC_LINK)
-
-/* Check Local Ports and Segmentation Status. */
-#define SK_RLMT_MODE_CLPSS     \
-               (SK_RLMT_CHECK_LINK | SK_RLMT_CHECK_LOC_LINK | SK_RLMT_CHECK_SEG)
-
-#ifdef RLMT_CHECK_REMOTE
-/* Check Local and Remote Ports: check links (local or remote). */
-       Name of define TBD!
-#define SK_RLMT_MODE_CRP       \
-               (SK_RLMT_CHECK_LINK | SK_RLMT_CHECK_LOC_LINK | SK_RLMT_CHECK_REM_LINK)
-
-/* Check Local and Remote Ports and Segmentation Status. */
-       Name of define TBD!
-#define SK_RLMT_MODE_CRPSS     \
-               (SK_RLMT_CHECK_LINK | SK_RLMT_CHECK_LOC_LINK | \
-               SK_RLMT_CHECK_REM_LINK | SK_RLMT_CHECK_SEG)
-#endif /* RLMT_CHECK_REMOTE */
-
-/* ----- RLMT lookahead result bits ----- */
-
-#define SK_RLMT_RX_RLMT                        1       /* Give packet to RLMT. */
-#define SK_RLMT_RX_PROTOCOL            2       /* Give packet to protocol. */
-
-/* Macros */
-
-#if 0
-SK_AC          *pAC            /* adapter context */
-SK_U32         PortNum         /* receiving port */
-unsigned       PktLen          /* received packet's length */
-SK_BOOL                IsBc            /* Flag: packet is broadcast */
-unsigned       *pOffset        /* offs. of bytes to present to SK_RLMT_LOOKAHEAD */
-unsigned       *pNumBytes      /* #Bytes to present to SK_RLMT_LOOKAHEAD */
-#endif /* 0 */
-
-#define SK_RLMT_PRE_LOOKAHEAD(pAC,PortNum,PktLen,IsBc,pOffset,pNumBytes) { \
-       SK_AC   *_pAC; \
-       SK_U32  _PortNum; \
-       _pAC = (pAC); \
-       _PortNum = (SK_U32)(PortNum); \
-       /* _pAC->Rlmt.Port[_PortNum].PacketsRx++; */ \
-       _pAC->Rlmt.Port[_PortNum].PacketsPerTimeSlot++; \
-    if (_pAC->Rlmt.RlmtOff) { \
-               *(pNumBytes) = 0; \
-    } \
-    else {\
-       if ((_pAC->Rlmt.Port[_PortNum].Net->RlmtMode & SK_RLMT_TRANSPARENT) != 0) { \
-               *(pNumBytes) = 0; \
-       } \
-       else if (IsBc) { \
-               if (_pAC->Rlmt.Port[_PortNum].Net->RlmtMode != SK_RLMT_MODE_CLS) { \
-                       *(pNumBytes) = 6; \
-                       *(pOffset) = 6; \
-               } \
-               else { \
-                       *(pNumBytes) = 0; \
-               } \
-       } \
-       else { \
-               if ((PktLen) > SK_RLMT_MAX_TX_BUF_SIZE) { \
-                       /* _pAC->Rlmt.Port[_PortNum].DataPacketsPerTimeSlot++; */ \
-                       *(pNumBytes) = 0; \
-               } \
-               else { \
-                       *(pNumBytes) = 6; \
-                       *(pOffset) = 0; \
-               } \
-       } \
-    } \
-}
-
-#if 0
-SK_AC          *pAC            /* adapter context */
-SK_U32         PortNum         /* receiving port */
-SK_U8          *pLaPacket,     /* received packet's data (points to pOffset) */
-SK_BOOL                IsBc            /* Flag: packet is broadcast */
-SK_BOOL                IsMc            /* Flag: packet is multicast */
-unsigned       *pForRlmt       /* Result: bits SK_RLMT_RX_RLMT, SK_RLMT_RX_PROTOCOL */
-SK_RLMT_LOOKAHEAD() expects *pNumBytes from
-packet offset *pOffset (s.a.) at *pLaPacket.
-
-If you use SK_RLMT_LOOKAHEAD in a path where you already know if the packet is
-BC, MC, or UC, you should use constants for IsBc and IsMc, so that your compiler
-can trash unneeded parts of the if construction.
-#endif /* 0 */
-
-#define SK_RLMT_LOOKAHEAD(pAC,PortNum,pLaPacket,IsBc,IsMc,pForRlmt) { \
-       SK_AC   *_pAC; \
-       SK_U32  _PortNum; \
-       SK_U8   *_pLaPacket; \
-       _pAC = (pAC); \
-       _PortNum = (SK_U32)(PortNum); \
-       _pLaPacket = (SK_U8 *)(pLaPacket); \
-       if (IsBc) {\
-               if (!SK_ADDR_EQUAL(_pLaPacket, _pAC->Addr.Net[_pAC->Rlmt.Port[ \
-                       _PortNum].Net->NetNumber].CurrentMacAddress.a)) { \
-                       _pAC->Rlmt.Port[_PortNum].BcTimeStamp = SkOsGetTime(_pAC); \
-                       _pAC->Rlmt.CheckSwitch = SK_TRUE; \
-               } \
-               /* _pAC->Rlmt.Port[_PortNum].DataPacketsPerTimeSlot++; */ \
-               *(pForRlmt) = SK_RLMT_RX_PROTOCOL; \
-       } \
-       else if (IsMc) { \
-               if (SK_ADDR_EQUAL(_pLaPacket, BridgeMcAddr.a)) { \
-                       _pAC->Rlmt.Port[_PortNum].BpduPacketsPerTimeSlot++; \
-                       if (_pAC->Rlmt.Port[_PortNum].Net->RlmtMode & SK_RLMT_CHECK_SEG) { \
-                               *(pForRlmt) = SK_RLMT_RX_RLMT | SK_RLMT_RX_PROTOCOL; \
-                       } \
-                       else { \
-                               *(pForRlmt) = SK_RLMT_RX_PROTOCOL; \
-                       } \
-               } \
-               else if (SK_ADDR_EQUAL(_pLaPacket, SkRlmtMcAddr.a)) { \
-                       *(pForRlmt) = SK_RLMT_RX_RLMT; \
-               } \
-               else { \
-                       /* _pAC->Rlmt.Port[_PortNum].DataPacketsPerTimeSlot++; */ \
-                       *(pForRlmt) = SK_RLMT_RX_PROTOCOL; \
-               } \
-       } \
-       else { \
-               if (SK_ADDR_EQUAL( \
-                       _pLaPacket, \
-                       _pAC->Addr.Port[_PortNum].CurrentMacAddress.a)) { \
-                       *(pForRlmt) = SK_RLMT_RX_RLMT; \
-               } \
-               else { \
-                       /* _pAC->Rlmt.Port[_PortNum].DataPacketsPerTimeSlot++; */ \
-                       *(pForRlmt) = SK_RLMT_RX_PROTOCOL; \
-               } \
-       } \
-}
-
-#ifdef SK_RLMT_FAST_LOOKAHEAD
-Error: SK_RLMT_FAST_LOOKAHEAD no longer used. Use new macros for lookahead.
-#endif /* SK_RLMT_FAST_LOOKAHEAD */
-#ifdef SK_RLMT_SLOW_LOOKAHEAD
-Error: SK_RLMT_SLOW_LOOKAHEAD no longer used. Use new macros for lookahead.
-#endif /* SK_RLMT_SLOW_LOOKAHEAD */
-
-/* typedefs *******************************************************************/
-
-#ifdef SK_RLMT_MBUF_PRIVATE
-typedef struct s_RlmtMbuf {
-       some content
-} SK_RLMT_MBUF;
-#endif /* SK_RLMT_MBUF_PRIVATE */
-
-
-#ifdef SK_LA_INFO
-typedef struct s_Rlmt_PacketInfo {
-       unsigned        PacketLength;                   /* Length of packet. */
-       unsigned        PacketType;                             /* Directed/Multicast/Broadcast. */
-} SK_RLMT_PINFO;
-#endif /* SK_LA_INFO */
-
-
-typedef struct s_RootId {
-       SK_U8           Id[8];                                  /* Root Bridge Id. */
-} SK_RLMT_ROOT_ID;
-
-
-typedef struct s_port {
-       SK_MAC_ADDR     CheckAddr;
-       SK_BOOL         SuspectTx;
-} SK_PORT_CHECK;
-
-
-typedef struct s_RlmtNet SK_RLMT_NET;
-
-
-typedef struct s_RlmtPort {
-
-/* ----- Public part (read-only) ----- */
-
-       SK_U8                   PortState;                              /* Current state of this port. */
-
-       /* For PNMI */
-       SK_BOOL                 LinkDown;
-       SK_BOOL                 PortDown;
-       SK_U8                   Align01;
-
-       SK_U32                  PortNumber;                             /* Number of port on adapter. */
-       SK_RLMT_NET *   Net;                                    /* Net port belongs to. */
-
-       SK_U64                  TxHelloCts;
-       SK_U64                  RxHelloCts;
-       SK_U64                  TxSpHelloReqCts;
-       SK_U64                  RxSpHelloCts;
-
-/* ----- Private part ----- */
-
-/*     SK_U64                  PacketsRx; */                           /* Total packets received. */
-       SK_U32                  PacketsPerTimeSlot;             /* Packets rxed between TOs. */
-/*     SK_U32                  DataPacketsPerTimeSlot; */      /* Data packets ... */
-       SK_U32                  BpduPacketsPerTimeSlot; /* BPDU packets rxed in TS. */
-       SK_U64                  BcTimeStamp;                    /* Time of last BC receive. */
-       SK_U64                  GuTimeStamp;                    /* Time of entering GOING_UP. */
-
-       SK_TIMER                UpTimer;                                /* Timer struct Link/Port up. */
-       SK_TIMER                DownRxTimer;                    /* Timer struct down rx. */
-       SK_TIMER                DownTxTimer;                    /* Timer struct down tx. */
-
-       SK_U32                  CheckingState;                  /* Checking State. */
-
-       SK_ADDR_PORT *  AddrPort;
-
-       SK_U8                   Random[4];                              /* Random value. */
-       unsigned                PortsChecked;                   /* #ports checked. */
-       unsigned                PortsSuspect;                   /* #ports checked that are s. */
-       SK_PORT_CHECK   PortCheck[1];
-/*     SK_PORT_CHECK   PortCheck[SK_MAX_MACS - 1]; */
-
-       SK_BOOL                 PortStarted;                    /* Port is started. */
-       SK_BOOL                 PortNoRx;                               /* NoRx for >= 1 time slot. */
-       SK_BOOL                 RootIdSet;
-       SK_RLMT_ROOT_ID Root;                                   /* Root Bridge Id. */
-} SK_RLMT_PORT;
-
-
-struct s_RlmtNet {
-
-/* ----- Public part (read-only) ----- */
-
-       SK_U32                  NetNumber;                      /* Number of net. */
-
-       SK_RLMT_PORT *  Port[SK_MAX_MACS];      /* Ports that belong to this net. */
-       SK_U32                  NumPorts;                       /* Number of ports. */
-       SK_U32                  PrefPort;                       /* Preferred port. */
-
-       /* For PNMI */
-
-       SK_U32                  ChgBcPrio;                      /* Change Priority of last broadcast received */
-       SK_U32                  RlmtMode;                       /* Check ... */
-       SK_U32                  ActivePort;                     /* Active port. */
-       SK_U32                  Preference;             /* 0xFFFFFFFF: Automatic. */
-
-       SK_U8                   RlmtState;                      /* Current RLMT state. */
-
-/* ----- Private part ----- */
-       SK_BOOL                 RootIdSet;
-       SK_U16                  Align01;
-
-       int                             LinksUp;                        /* #Links up. */
-       int                             PortsUp;                        /* #Ports up. */
-       SK_U32                  TimeoutValue;           /* RLMT timeout value. */
-
-       SK_U32                  CheckingState;          /* Checking State. */
-       SK_RLMT_ROOT_ID Root;                           /* Root Bridge Id. */
-
-       SK_TIMER                LocTimer;                       /* Timer struct. */
-       SK_TIMER                SegTimer;                       /* Timer struct. */
-};
-
-
-typedef struct s_Rlmt {
-
-/* ----- Public part (read-only) ----- */
-
-       SK_U32                  NumNets;                        /* Number of nets. */
-       SK_U32                  NetsStarted;            /* Number of nets started. */
-       SK_RLMT_NET             Net[SK_MAX_NETS];       /* Array of available nets. */
-       SK_RLMT_PORT    Port[SK_MAX_MACS];      /* Array of available ports. */
-
-/* ----- Private part ----- */
-       SK_BOOL                 CheckSwitch;
-       SK_BOOL                 RlmtOff;            /* set to zero if the Mac addresses
-                                          are equal or the second one
-                                          is zero */
-       SK_U16                  Align01;
-
-} SK_RLMT;
-
-
-extern SK_MAC_ADDR     BridgeMcAddr;
-extern SK_MAC_ADDR     SkRlmtMcAddr;
-
-/* function prototypes ********************************************************/
-
-
-#ifndef SK_KR_PROTO
-
-/* Functions provided by SkRlmt */
-
-/* ANSI/C++ compliant function prototypes */
-
-extern void    SkRlmtInit(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       int             Level);
-
-extern int     SkRlmtEvent(
-       SK_AC           *pAC,
-       SK_IOC          IoC,
-       SK_U32          Event,
-       SK_EVPARA       Para);
-
-#else  /* defined(SK_KR_PROTO) */
-
-/* Non-ANSI/C++ compliant function prototypes */
-
-#error KR-style function prototypes are not yet provided.
-
-#endif /* defined(SK_KR_PROTO)) */
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* __INC_SKRLMT_H */
+/******************************************************************************
+ *
+ * Name:       skrlmt.h
+ * Project:    GEnesis, PCI Gigabit Ethernet Adapter
+ * Version:    $Revision: 1.1.1.1 $
+ * Date:       $Date: 2009/03/25 22:22:10 $
+ * Purpose:    Header file for Redundant Link ManagemenT.
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ *     (C)Copyright 1998-2001 SysKonnect GmbH.
+ *
+ *     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.
+ *
+ *     The information in this file is provided "AS IS" without warranty.
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ * History:
+ *
+ *     $Log: skrlmt.h,v $
+ *     Revision 1.1.1.1  2009/03/25 22:22:10  kenagy
+ *     no message
+ *     
+ *     Revision 1.35  2003/01/31 14:12:41  mkunz
+ *     single port adapter runs now with two identical MAC addresses
+ *
+ *     Revision 1.34  2002/09/23 15:13:41  rwahl
+ *     Editorial changes.
+ *
+ *     Revision 1.33  2001/07/03 12:16:48  mkunz
+ *     New Flag ChgBcPrio (Change priority of last broadcast received)
+ *
+ *     Revision 1.32  2001/02/14 14:06:31  rassmann
+ *     Editorial changes.
+ *
+ *     Revision 1.31  2001/02/05 14:25:26  rassmann
+ *     Prepared RLMT for transparent operation.
+ *
+ *     Revision 1.30  2001/01/22 13:41:39  rassmann
+ *     Supporting two nets on dual-port adapters.
+ *
+ *     Revision 1.29  2000/11/17 08:58:00  rassmann
+ *     Moved CheckSwitch from SK_RLMT_PACKET_RECEIVED to SK_RLMT_TIM event.
+ *
+ *     Revision 1.28  2000/11/09 12:24:34  rassmann
+ *     Editorial changes.
+ *
+ *     Revision 1.27  1999/11/22 13:59:56  cgoos
+ *     Changed license header to GPL.
+ *
+ *     Revision 1.26  1999/10/04 14:01:19  rassmann
+ *     Corrected reaction to reception of BPDU frames (#10441).
+ *
+ *     Revision 1.25  1999/07/20 12:53:39  rassmann
+ *     Fixed documentation errors for lookahead macros.
+ *
+ *     Revision 1.24  1999/05/28 11:15:56  rassmann
+ *     Changed behaviour to reflect Design Spec v1.2.
+ *     Controlling Link LED(s).
+ *     Introduced RLMT Packet Version field in RLMT Packet.
+ *     Newstyle lookahead macros (checking meta-information before looking at
+ *       the packet).
+ *
+ *     Revision 1.23  1999/01/28 12:50:42  rassmann
+ *     Not using broadcast time stamps in CheckLinkState mode.
+ *
+ *     Revision 1.22  1999/01/27 14:13:04  rassmann
+ *     Monitoring broadcast traffic.
+ *     Switching more reliably and not too early if switch is
+ *      configured for spanning tree.
+ *
+ *     Revision 1.21  1998/12/08 13:11:25  rassmann
+ *     Stopping SegTimer at RlmtStop.
+ *
+ *     Revision 1.20  1998/11/24 12:37:33  rassmann
+ *     Implemented segmentation check.
+ *
+ *     Revision 1.19  1998/11/17 13:43:06  rassmann
+ *     Handling (logical) tx failure.
+ *     Sending packet on logical address after PORT_SWITCH.
+ *
+ *     Revision 1.18  1998/11/13 16:56:56  rassmann
+ *     Added macro version of SkRlmtLookaheadPacket.
+ *
+ *     Revision 1.17  1998/11/06 18:06:05  rassmann
+ *     Corrected timing when RLMT checks fail.
+ *     Clearing tx counter earlier in periodical checks.
+ *
+ *     Revision 1.16  1998/11/03 13:53:50  rassmann
+ *     RLMT should switch now (at least in mode 3).
+ *
+ *     Revision 1.15  1998/10/22 11:39:52  rassmann
+ *     Corrected signed/unsigned mismatches.
+ *     Corrected receive list handling and address recognition.
+ *
+ *     Revision 1.14  1998/10/15 15:16:36  rassmann
+ *     Finished Spanning Tree checking.
+ *     Checked with lint.
+ *
+ *     Revision 1.13  1998/09/24 19:16:08  rassmann
+ *     Code cleanup.
+ *     Introduced Timer for PORT_DOWN due to no RX.
+ *
+ *     Revision 1.12  1998/09/16 11:09:52  rassmann
+ *     Syntax corrections.
+ *
+ *     Revision 1.11  1998/09/15 11:28:50  rassmann
+ *     Syntax corrections.
+ *
+ *     Revision 1.10  1998/09/14 17:07:38  rassmann
+ *     Added code for port checking via LAN.
+ *     Changed Mbuf definition.
+ *
+ *     Revision 1.9  1998/09/07 11:14:15  rassmann
+ *     Syntax corrections.
+ *
+ *     Revision 1.8  1998/09/07 09:06:08  rassmann
+ *     Syntax corrections.
+ *
+ *     Revision 1.7  1998/09/04 19:41:34  rassmann
+ *     Syntax corrections.
+ *     Started entering code for checking local links.
+ *
+ *     Revision 1.6  1998/09/04 12:14:28  rassmann
+ *     Interface cleanup.
+ *
+ *     Revision 1.5  1998/09/02 16:55:29  rassmann
+ *     Updated to reflect new DRV/HWAC/RLMT interface.
+ *
+ *     Revision 1.4  1998/09/02 07:26:02  afischer
+ *     typedef for SK_RLMT_PORT
+ *
+ *     Revision 1.3  1998/08/27 14:29:03  rassmann
+ *     Code cleanup.
+ *
+ *     Revision 1.2  1998/08/27 14:26:25  rassmann
+ *     Updated interface.
+ *
+ *     Revision 1.1  1998/08/21 08:29:10  rassmann
+ *     First public version.
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ * Description:
+ *
+ * This is the header file for Redundant Link ManagemenT.
+ *
+ * Include File Hierarchy:
+ *
+ *     "skdrv1st.h"
+ *     ...
+ *     "sktypes.h"
+ *     "skqueue.h"
+ *     "skaddr.h"
+ *     "skrlmt.h"
+ *     ...
+ *     "skdrv2nd.h"
+ *
+ ******************************************************************************/
+
+#ifndef __INC_SKRLMT_H
+#define __INC_SKRLMT_H
+
+#ifdef __cplusplus
+#error C++ is not yet supported.
+extern "C" {
+#endif /* cplusplus */
+
+/* defines ********************************************************************/
+
+#define        SK_RLMT_NET_DOWN_TEMP   1       /* NET_DOWN due to last port down. */
+#define        SK_RLMT_NET_DOWN_FINAL  2       /* NET_DOWN due to RLMT_STOP. */
+
+/* ----- Default queue sizes - must be multiples of 8 KB ----- */
+
+/* Less than 8 KB free in RX queue => pause frames. */
+#define SK_RLMT_STANDBY_QRXSIZE        128     /* Size of rx standby queue in KB. */
+#define SK_RLMT_STANDBY_QXASIZE        32      /* Size of async standby queue in KB. */
+#define SK_RLMT_STANDBY_QXSSIZE        0        /* Size of sync standby queue in KB. */
+
+#define SK_RLMT_MAX_TX_BUF_SIZE        60      /* Maximum RLMT transmit size. */
+
+/* ----- PORT states ----- */
+
+#define SK_RLMT_PS_INIT                        0        /* Port state: Init. */
+#define SK_RLMT_PS_LINK_DOWN   1       /* Port state: Link down. */
+#define SK_RLMT_PS_DOWN                        2       /* Port state: Port down. */
+#define SK_RLMT_PS_GOING_UP            3       /* Port state: Going up. */
+#define SK_RLMT_PS_UP                  4       /* Port state: Up. */
+
+/* ----- RLMT states ----- */
+
+#define SK_RLMT_RS_INIT                        0        /* RLMT state: Init. */
+#define SK_RLMT_RS_NET_DOWN            1       /* RLMT state: Net down. */
+#define SK_RLMT_RS_NET_UP              2       /* RLMT state: Net up. */
+
+/* ----- PORT events ----- */
+
+#define SK_RLMT_LINK_UP                        1001    /* Link came up. */
+#define SK_RLMT_LINK_DOWN              1002    /* Link went down. */
+#define SK_RLMT_PORT_ADDR              1003    /* Port address changed. */
+
+/* ----- RLMT events ----- */
+
+#define SK_RLMT_START                  2001    /* Start RLMT. */
+#define SK_RLMT_STOP                   2002    /* Stop RLMT. */
+#define SK_RLMT_PACKET_RECEIVED        2003    /* Packet was received for RLMT. */
+#define SK_RLMT_STATS_CLEAR            2004    /* Clear statistics. */
+#define SK_RLMT_STATS_UPDATE   2005    /* Update statistics. */
+#define SK_RLMT_PREFPORT_CHANGE        2006    /* Change preferred port. */
+#define SK_RLMT_MODE_CHANGE            2007    /* New RlmtMode. */
+#define SK_RLMT_SET_NETS               2008    /* Number of Nets (1 or 2). */
+
+/* ----- RLMT mode bits ----- */
+
+/*
+ * CAUTION:    These defines are private to RLMT.
+ *                     Please use the RLMT mode defines below.
+ */
+
+#define SK_RLMT_CHECK_LINK               1             /* Check Link. */
+#define SK_RLMT_CHECK_LOC_LINK   2             /* Check other link on same adapter. */
+#define SK_RLMT_CHECK_SEG                4             /* Check segmentation. */
+
+#ifndef RLMT_CHECK_REMOTE
+#define SK_RLMT_CHECK_OTHERS   SK_RLMT_CHECK_LOC_LINK
+#else  /* RLMT_CHECK_REMOTE */
+#define SK_RLMT_CHECK_REM_LINK   8             /* Check link(s) on other adapter(s). */
+#define SK_RLMT_MAX_REMOTE_PORTS_CHECKED       3
+#define SK_RLMT_CHECK_OTHERS   \
+               (SK_RLMT_CHECK_LOC_LINK | SK_RLMT_CHECK_REM_LINK)
+#endif /* RLMT_CHECK_REMOTE */
+
+#ifndef SK_RLMT_ENABLE_TRANSPARENT
+#define SK_RLMT_TRANSPARENT              0             /* RLMT transparent - inactive. */
+#else  /* SK_RLMT_ENABLE_TRANSPARENT */
+#define SK_RLMT_TRANSPARENT            128             /* RLMT transparent. */
+#endif /* SK_RLMT_ENABLE_TRANSPARENT */
+
+/* ----- RLMT modes ----- */
+
+/* Check Link State. */
+#define SK_RLMT_MODE_CLS       (SK_RLMT_CHECK_LINK)
+
+/* Check Local Ports: check other links on the same adapter. */
+#define SK_RLMT_MODE_CLP       (SK_RLMT_CHECK_LINK | SK_RLMT_CHECK_LOC_LINK)
+
+/* Check Local Ports and Segmentation Status. */
+#define SK_RLMT_MODE_CLPSS     \
+               (SK_RLMT_CHECK_LINK | SK_RLMT_CHECK_LOC_LINK | SK_RLMT_CHECK_SEG)
+
+#ifdef RLMT_CHECK_REMOTE
+/* Check Local and Remote Ports: check links (local or remote). */
+       Name of define TBD!
+#define SK_RLMT_MODE_CRP       \
+               (SK_RLMT_CHECK_LINK | SK_RLMT_CHECK_LOC_LINK | SK_RLMT_CHECK_REM_LINK)
+
+/* Check Local and Remote Ports and Segmentation Status. */
+       Name of define TBD!
+#define SK_RLMT_MODE_CRPSS     \
+               (SK_RLMT_CHECK_LINK | SK_RLMT_CHECK_LOC_LINK | \
+               SK_RLMT_CHECK_REM_LINK | SK_RLMT_CHECK_SEG)
+#endif /* RLMT_CHECK_REMOTE */
+
+/* ----- RLMT lookahead result bits ----- */
+
+#define SK_RLMT_RX_RLMT                        1       /* Give packet to RLMT. */
+#define SK_RLMT_RX_PROTOCOL            2       /* Give packet to protocol. */
+
+/* Macros */
+
+#if 0
+SK_AC          *pAC            /* adapter context */
+SK_U32         PortNum         /* receiving port */
+unsigned       PktLen          /* received packet's length */
+SK_BOOL                IsBc            /* Flag: packet is broadcast */
+unsigned       *pOffset        /* offs. of bytes to present to SK_RLMT_LOOKAHEAD */
+unsigned       *pNumBytes      /* #Bytes to present to SK_RLMT_LOOKAHEAD */
+#endif /* 0 */
+
+#define SK_RLMT_PRE_LOOKAHEAD(pAC,PortNum,PktLen,IsBc,pOffset,pNumBytes) { \
+       SK_AC   *_pAC; \
+       SK_U32  _PortNum; \
+       _pAC = (pAC); \
+       _PortNum = (SK_U32)(PortNum); \
+       /* _pAC->Rlmt.Port[_PortNum].PacketsRx++; */ \
+       _pAC->Rlmt.Port[_PortNum].PacketsPerTimeSlot++; \
+    if (_pAC->Rlmt.RlmtOff) { \
+               *(pNumBytes) = 0; \
+    } \
+    else {\
+       if ((_pAC->Rlmt.Port[_PortNum].Net->RlmtMode & SK_RLMT_TRANSPARENT) != 0) { \
+               *(pNumBytes) = 0; \
+       } \
+       else if (IsBc) { \
+               if (_pAC->Rlmt.Port[_PortNum].Net->RlmtMode != SK_RLMT_MODE_CLS) { \
+                       *(pNumBytes) = 6; \
+                       *(pOffset) = 6; \
+               } \
+               else { \
+                       *(pNumBytes) = 0; \
+               } \
+       } \
+       else { \
+               if ((PktLen) > SK_RLMT_MAX_TX_BUF_SIZE) { \
+                       /* _pAC->Rlmt.Port[_PortNum].DataPacketsPerTimeSlot++; */ \
+                       *(pNumBytes) = 0; \
+               } \
+               else { \
+                       *(pNumBytes) = 6; \
+                       *(pOffset) = 0; \
+               } \
+       } \
+    } \
+}
+
+#if 0
+SK_AC          *pAC            /* adapter context */
+SK_U32         PortNum         /* receiving port */
+SK_U8          *pLaPacket,     /* received packet's data (points to pOffset) */
+SK_BOOL                IsBc            /* Flag: packet is broadcast */
+SK_BOOL                IsMc            /* Flag: packet is multicast */
+unsigned       *pForRlmt       /* Result: bits SK_RLMT_RX_RLMT, SK_RLMT_RX_PROTOCOL */
+SK_RLMT_LOOKAHEAD() expects *pNumBytes from
+packet offset *pOffset (s.a.) at *pLaPacket.
+
+If you use SK_RLMT_LOOKAHEAD in a path where you already know if the packet is
+BC, MC, or UC, you should use constants for IsBc and IsMc, so that your compiler
+can trash unneeded parts of the if construction.
+#endif /* 0 */
+
+#define SK_RLMT_LOOKAHEAD(pAC,PortNum,pLaPacket,IsBc,IsMc,pForRlmt) { \
+       SK_AC   *_pAC; \
+       SK_U32  _PortNum; \
+       SK_U8   *_pLaPacket; \
+       _pAC = (pAC); \
+       _PortNum = (SK_U32)(PortNum); \
+       _pLaPacket = (SK_U8 *)(pLaPacket); \
+       if (IsBc) {\
+               if (!SK_ADDR_EQUAL(_pLaPacket, _pAC->Addr.Net[_pAC->Rlmt.Port[ \
+                       _PortNum].Net->NetNumber].CurrentMacAddress.a)) { \
+                       _pAC->Rlmt.Port[_PortNum].BcTimeStamp = SkOsGetTime(_pAC); \
+                       _pAC->Rlmt.CheckSwitch = SK_TRUE; \
+               } \
+               /* _pAC->Rlmt.Port[_PortNum].DataPacketsPerTimeSlot++; */ \
+               *(pForRlmt) = SK_RLMT_RX_PROTOCOL; \
+       } \
+       else if (IsMc) { \
+               if (SK_ADDR_EQUAL(_pLaPacket, BridgeMcAddr.a)) { \
+                       _pAC->Rlmt.Port[_PortNum].BpduPacketsPerTimeSlot++; \
+                       if (_pAC->Rlmt.Port[_PortNum].Net->RlmtMode & SK_RLMT_CHECK_SEG) { \
+                               *(pForRlmt) = SK_RLMT_RX_RLMT | SK_RLMT_RX_PROTOCOL; \
+                       } \
+                       else { \
+                               *(pForRlmt) = SK_RLMT_RX_PROTOCOL; \
+                       } \
+               } \
+               else if (SK_ADDR_EQUAL(_pLaPacket, SkRlmtMcAddr.a)) { \
+                       *(pForRlmt) = SK_RLMT_RX_RLMT; \
+               } \
+               else { \
+                       /* _pAC->Rlmt.Port[_PortNum].DataPacketsPerTimeSlot++; */ \
+                       *(pForRlmt) = SK_RLMT_RX_PROTOCOL; \
+               } \
+       } \
+       else { \
+               if (SK_ADDR_EQUAL( \
+                       _pLaPacket, \
+                       _pAC->Addr.Port[_PortNum].CurrentMacAddress.a)) { \
+                       *(pForRlmt) = SK_RLMT_RX_RLMT; \
+               } \
+               else { \
+                       /* _pAC->Rlmt.Port[_PortNum].DataPacketsPerTimeSlot++; */ \
+                       *(pForRlmt) = SK_RLMT_RX_PROTOCOL; \
+               } \
+       } \
+}
+
+#ifdef SK_RLMT_FAST_LOOKAHEAD
+Error: SK_RLMT_FAST_LOOKAHEAD no longer used. Use new macros for lookahead.
+#endif /* SK_RLMT_FAST_LOOKAHEAD */
+#ifdef SK_RLMT_SLOW_LOOKAHEAD
+Error: SK_RLMT_SLOW_LOOKAHEAD no longer used. Use new macros for lookahead.
+#endif /* SK_RLMT_SLOW_LOOKAHEAD */
+
+/* typedefs *******************************************************************/
+
+#ifdef SK_RLMT_MBUF_PRIVATE
+typedef struct s_RlmtMbuf {
+       some content
+} SK_RLMT_MBUF;
+#endif /* SK_RLMT_MBUF_PRIVATE */
+
+
+#ifdef SK_LA_INFO
+typedef struct s_Rlmt_PacketInfo {
+       unsigned        PacketLength;                   /* Length of packet. */
+       unsigned        PacketType;                             /* Directed/Multicast/Broadcast. */
+} SK_RLMT_PINFO;
+#endif /* SK_LA_INFO */
+
+
+typedef struct s_RootId {
+       SK_U8           Id[8];                                  /* Root Bridge Id. */
+} SK_RLMT_ROOT_ID;
+
+
+typedef struct s_port {
+       SK_MAC_ADDR     CheckAddr;
+       SK_BOOL         SuspectTx;
+} SK_PORT_CHECK;
+
+
+typedef struct s_RlmtNet SK_RLMT_NET;
+
+
+typedef struct s_RlmtPort {
+
+/* ----- Public part (read-only) ----- */
+
+       SK_U8                   PortState;                              /* Current state of this port. */
+
+       /* For PNMI */
+       SK_BOOL                 LinkDown;
+       SK_BOOL                 PortDown;
+       SK_U8                   Align01;
+
+       SK_U32                  PortNumber;                             /* Number of port on adapter. */
+       SK_RLMT_NET *   Net;                                    /* Net port belongs to. */
+
+       SK_U64                  TxHelloCts;
+       SK_U64                  RxHelloCts;
+       SK_U64                  TxSpHelloReqCts;
+       SK_U64                  RxSpHelloCts;
+
+/* ----- Private part ----- */
+
+/*     SK_U64                  PacketsRx; */                           /* Total packets received. */
+       SK_U32                  PacketsPerTimeSlot;             /* Packets rxed between TOs. */
+/*     SK_U32                  DataPacketsPerTimeSlot; */      /* Data packets ... */
+       SK_U32                  BpduPacketsPerTimeSlot; /* BPDU packets rxed in TS. */
+       SK_U64                  BcTimeStamp;                    /* Time of last BC receive. */
+       SK_U64                  GuTimeStamp;                    /* Time of entering GOING_UP. */
+
+       SK_TIMER                UpTimer;                                /* Timer struct Link/Port up. */
+       SK_TIMER                DownRxTimer;                    /* Timer struct down rx. */
+       SK_TIMER                DownTxTimer;                    /* Timer struct down tx. */
+
+       SK_U32                  CheckingState;                  /* Checking State. */
+
+       SK_ADDR_PORT *  AddrPort;
+
+       SK_U8                   Random[4];                              /* Random value. */
+       unsigned                PortsChecked;                   /* #ports checked. */
+       unsigned                PortsSuspect;                   /* #ports checked that are s. */
+       SK_PORT_CHECK   PortCheck[1];
+/*     SK_PORT_CHECK   PortCheck[SK_MAX_MACS - 1]; */
+
+       SK_BOOL                 PortStarted;                    /* Port is started. */
+       SK_BOOL                 PortNoRx;                               /* NoRx for >= 1 time slot. */
+       SK_BOOL                 RootIdSet;
+       SK_RLMT_ROOT_ID Root;                                   /* Root Bridge Id. */
+} SK_RLMT_PORT;
+
+
+struct s_RlmtNet {
+
+/* ----- Public part (read-only) ----- */
+
+       SK_U32                  NetNumber;                      /* Number of net. */
+
+       SK_RLMT_PORT *  Port[SK_MAX_MACS];      /* Ports that belong to this net. */
+       SK_U32                  NumPorts;                       /* Number of ports. */
+       SK_U32                  PrefPort;                       /* Preferred port. */
+
+       /* For PNMI */
+
+       SK_U32                  ChgBcPrio;                      /* Change Priority of last broadcast received */
+       SK_U32                  RlmtMode;                       /* Check ... */
+       SK_U32                  ActivePort;                     /* Active port. */
+       SK_U32                  Preference;             /* 0xFFFFFFFF: Automatic. */
+
+       SK_U8                   RlmtState;                      /* Current RLMT state. */
+
+/* ----- Private part ----- */
+       SK_BOOL                 RootIdSet;
+       SK_U16                  Align01;
+
+       int                             LinksUp;                        /* #Links up. */
+       int                             PortsUp;                        /* #Ports up. */
+       SK_U32                  TimeoutValue;           /* RLMT timeout value. */
+
+       SK_U32                  CheckingState;          /* Checking State. */
+       SK_RLMT_ROOT_ID Root;                           /* Root Bridge Id. */
+
+       SK_TIMER                LocTimer;                       /* Timer struct. */
+       SK_TIMER                SegTimer;                       /* Timer struct. */
+};
+
+
+typedef struct s_Rlmt {
+
+/* ----- Public part (read-only) ----- */
+
+       SK_U32                  NumNets;                        /* Number of nets. */
+       SK_U32                  NetsStarted;            /* Number of nets started. */
+       SK_RLMT_NET             Net[SK_MAX_NETS];       /* Array of available nets. */
+       SK_RLMT_PORT    Port[SK_MAX_MACS];      /* Array of available ports. */
+
+/* ----- Private part ----- */
+       SK_BOOL                 CheckSwitch;
+       SK_BOOL                 RlmtOff;            /* set to zero if the Mac addresses
+                                          are equal or the second one
+                                          is zero */
+       SK_U16                  Align01;
+
+} SK_RLMT;
+
+
+extern SK_MAC_ADDR     BridgeMcAddr;
+extern SK_MAC_ADDR     SkRlmtMcAddr;
+
+/* function prototypes ********************************************************/
+
+
+#ifndef SK_KR_PROTO
+
+/* Functions provided by SkRlmt */
+
+/* ANSI/C++ compliant function prototypes */
+
+extern void    SkRlmtInit(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       int             Level);
+
+extern int     SkRlmtEvent(
+       SK_AC           *pAC,
+       SK_IOC          IoC,
+       SK_U32          Event,
+       SK_EVPARA       Para);
+
+#else  /* defined(SK_KR_PROTO) */
+
+/* Non-ANSI/C++ compliant function prototypes */
+
+#error KR-style function prototypes are not yet provided.
+
+#endif /* defined(SK_KR_PROTO)) */
+
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* __INC_SKRLMT_H */
diff -Naur u-boot-2009.03_orig/drivers/net/sk98lin/h/sktimer.h u-boot-2009.03/drivers/net/sk98lin/h/sktimer.h
--- u-boot-2009.03_orig/drivers/net/sk98lin/h/sktimer.h 2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/drivers/net/sk98lin/h/sktimer.h      2009-03-31 14:54:46.159166400 -0700
@@ -1,99 +1,102 @@
-/******************************************************************************
- *
- * Name:       sktimer.h
- * Project:    GEnesis, PCI Gigabit Ethernet Adapter
- * Version:    $Revision: 1.9 $
- * Date:       $Date: 1999/11/22 14:00:29 $
- * Purpose:    Defines for the timer functions
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- *     (C)Copyright 1998,1999 SysKonnect,
- *     a business unit of Schneider & Koch & Co. Datensysteme GmbH.
- *
- *     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.
- *
- *     The information in this file is provided "AS IS" without warranty.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * History:
- *
- *     $Log: sktimer.h,v $
- *     Revision 1.9  1999/11/22 14:00:29  cgoos
- *     Changed license header to GPL.
- *
- *     Revision 1.8  1998/09/08 08:48:02  gklug
- *     add: init level handling
- *
- *     Revision 1.7  1998/08/20 12:31:29  gklug
- *     fix: SK_TIMCTRL needs to be defined
- *
- *     Revision 1.6  1998/08/19 09:51:00  gklug
- *     fix: remove struct keyword from c-code (see CCC) add typedefs
- *
- *     Revision 1.5  1998/08/17 13:43:21  gklug
- *     chg: Parameter will be union of 64bit para, 2 times SK_U32 or SK_PTR
- *
- *     Revision 1.4  1998/08/14 07:09:31  gklug
- *     fix: chg pAc -> pAC
- *
- *     Revision 1.3  1998/08/07 12:54:24  gklug
- *     fix: first compiled version
- *
- *     Revision 1.2  1998/08/07 09:35:29  gklug
- *     add: Timer control struct for Adapters context
- *     add: function prototypes
- *
- *     Revision 1.1  1998/08/05 11:27:01  gklug
- *     First version: adapted from SMT
- *
- *
- ******************************************************************************/
-
-/*
- * SKTIMER.H   contains all defines and types for the timer functions
- */
-
-#ifndef        _SKTIMER_H_
-#define _SKTIMER_H_
-
-#include "h/skqueue.h"
-
-/*
- * SK timer
- * - needed wherever a timer is used. Put this in your data structure
- *   wherever you want.
- */
-typedef        struct s_Timer SK_TIMER;
-
-struct s_Timer {
-       SK_TIMER        *TmNext ;       /* linked list */
-       SK_U32          TmClass ;       /* Timer Event class */
-       SK_U32          TmEvent ;       /* Timer Event value */
-       SK_EVPARA       TmPara ;        /* Timer Event parameter */
-       SK_U32          TmDelta ;       /* delta time */
-       int             TmActive ;      /* flag : active/inactive */
-} ;
-
-/*
- * Timer control struct.
- * - use in Adapters context name pAC->Tim
- */
-typedef        struct s_TimCtrl {
-       SK_TIMER        *StQueue ;      /* Head of Timer queue */
-} SK_TIMCTRL ;
-
-extern void SkTimerInit(SK_AC *pAC,SK_IOC Ioc, int Level);
-extern void SkTimerStop(SK_AC *pAC,SK_IOC Ioc,SK_TIMER *pTimer);
-extern void SkTimerStart(SK_AC *pAC,SK_IOC Ioc,SK_TIMER *pTimer,
-       SK_U32 Time,SK_U32 Class,SK_U32 Event,SK_EVPARA Para);
-extern void SkTimerDone(SK_AC *pAC,SK_IOC Ioc);
-#endif /* _SKTIMER_H_ */
+/******************************************************************************
+ *
+ * Name:       sktimer.h
+ * Project:    GEnesis, PCI Gigabit Ethernet Adapter
+ * Version:    $Revision: 1.1.1.1 $
+ * Date:       $Date: 2009/03/25 22:22:10 $
+ * Purpose:    Defines for the timer functions
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ *     (C)Copyright 1998,1999 SysKonnect,
+ *     a business unit of Schneider & Koch & Co. Datensysteme GmbH.
+ *
+ *     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.
+ *
+ *     The information in this file is provided "AS IS" without warranty.
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ * History:
+ *
+ *     $Log: sktimer.h,v $
+ *     Revision 1.1.1.1  2009/03/25 22:22:10  kenagy
+ *     no message
+ *     
+ *     Revision 1.9  1999/11/22 14:00:29  cgoos
+ *     Changed license header to GPL.
+ *
+ *     Revision 1.8  1998/09/08 08:48:02  gklug
+ *     add: init level handling
+ *
+ *     Revision 1.7  1998/08/20 12:31:29  gklug
+ *     fix: SK_TIMCTRL needs to be defined
+ *
+ *     Revision 1.6  1998/08/19 09:51:00  gklug
+ *     fix: remove struct keyword from c-code (see CCC) add typedefs
+ *
+ *     Revision 1.5  1998/08/17 13:43:21  gklug
+ *     chg: Parameter will be union of 64bit para, 2 times SK_U32 or SK_PTR
+ *
+ *     Revision 1.4  1998/08/14 07:09:31  gklug
+ *     fix: chg pAc -> pAC
+ *
+ *     Revision 1.3  1998/08/07 12:54:24  gklug
+ *     fix: first compiled version
+ *
+ *     Revision 1.2  1998/08/07 09:35:29  gklug
+ *     add: Timer control struct for Adapters context
+ *     add: function prototypes
+ *
+ *     Revision 1.1  1998/08/05 11:27:01  gklug
+ *     First version: adapted from SMT
+ *
+ *
+ ******************************************************************************/
+
+/*
+ * SKTIMER.H   contains all defines and types for the timer functions
+ */
+
+#ifndef        _SKTIMER_H_
+#define _SKTIMER_H_
+
+#include "h/skqueue.h"
+
+/*
+ * SK timer
+ * - needed wherever a timer is used. Put this in your data structure
+ *   wherever you want.
+ */
+typedef        struct s_Timer SK_TIMER;
+
+struct s_Timer {
+       SK_TIMER        *TmNext ;       /* linked list */
+       SK_U32          TmClass ;       /* Timer Event class */
+       SK_U32          TmEvent ;       /* Timer Event value */
+       SK_EVPARA       TmPara ;        /* Timer Event parameter */
+       SK_U32          TmDelta ;       /* delta time */
+       int             TmActive ;      /* flag : active/inactive */
+} ;
+
+/*
+ * Timer control struct.
+ * - use in Adapters context name pAC->Tim
+ */
+typedef        struct s_TimCtrl {
+       SK_TIMER        *StQueue ;      /* Head of Timer queue */
+} SK_TIMCTRL ;
+
+extern void SkTimerInit(SK_AC *pAC,SK_IOC Ioc, int Level);
+extern void SkTimerStop(SK_AC *pAC,SK_IOC Ioc,SK_TIMER *pTimer);
+extern void SkTimerStart(SK_AC *pAC,SK_IOC Ioc,SK_TIMER *pTimer,
+       SK_U32 Time,SK_U32 Class,SK_U32 Event,SK_EVPARA Para);
+extern void SkTimerDone(SK_AC *pAC,SK_IOC Ioc);
+#endif /* _SKTIMER_H_ */
diff -Naur u-boot-2009.03_orig/drivers/net/sk98lin/h/sktypes.h u-boot-2009.03/drivers/net/sk98lin/h/sktypes.h
--- u-boot-2009.03_orig/drivers/net/sk98lin/h/sktypes.h 2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/drivers/net/sk98lin/h/sktypes.h      2009-03-31 14:54:46.174791200 -0700
@@ -1,87 +1,90 @@
-/******************************************************************************
- *
- * Name:       sktypes.h
- * Project:    GEnesis, PCI Gigabit Ethernet Adapter
- * Version:    $Revision: 1.3 $
- * Date:       $Date: 2003/02/25 14:16:40 $
- * Purpose:    Define data types for Linux
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- *     (C)Copyright 1998-2003 SysKonnect GmbH.
- *
- *     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.
- *
- *     The information in this file is provided "AS IS" without warranty.
- *
- ******************************************************************************/
-
- /*****************************************************************************
- *
- * History:
- *
- *     $Log: sktypes.h,v $
- *     Revision 1.3  2003/02/25 14:16:40  mlindner
- *     Fix: Copyright statement
- *
- *     Revision 1.2  1999/11/22 14:01:58  cgoos
- *     Changed license header to GPL.
- *     Now using Linux' fixed size types instead of standard types.
- *
- *     Revision 1.1  1999/02/16 07:41:40  cgoos
- *     First version.
- *
- *
- *
- *****************************************************************************/
-
-/******************************************************************************
- *
- * Description:
- *
- * In this file, all data types that are needed by the common modules
- * are mapped to Linux data types.
- *
- *
- * Include File Hierarchy:
- *
- *
- ******************************************************************************/
-
-#ifndef __INC_SKTYPES_H
-#define __INC_SKTYPES_H
-
-
-/* defines *******************************************************************/
-
-/*
- * Data types with a specific size. 'I' = signed, 'U' = unsigned.
- */
-#define SK_I8  s8
-#define SK_U8  u8
-#define SK_I16 s16
-#define SK_U16 u16
-#define SK_I32 s32
-#define SK_U32 u32
-#define SK_I64 s64
-#define SK_U64 u64
-
-#define SK_UPTR        ulong           /* casting pointer <-> integral */
-
-/*
-* Boolean type.
-*/
-#define SK_BOOL                SK_U8
-#define SK_FALSE       0
-#define SK_TRUE                (!SK_FALSE)
-
-/* typedefs *******************************************************************/
-
-/* function prototypes ********************************************************/
-
-#endif /* __INC_SKTYPES_H */
+/******************************************************************************
+ *
+ * Name:       sktypes.h
+ * Project:    GEnesis, PCI Gigabit Ethernet Adapter
+ * Version:    $Revision: 1.1.1.1 $
+ * Date:       $Date: 2009/03/25 22:22:10 $
+ * Purpose:    Define data types for Linux
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ *     (C)Copyright 1998-2003 SysKonnect GmbH.
+ *
+ *     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.
+ *
+ *     The information in this file is provided "AS IS" without warranty.
+ *
+ ******************************************************************************/
+
+ /*****************************************************************************
+ *
+ * History:
+ *
+ *     $Log: sktypes.h,v $
+ *     Revision 1.1.1.1  2009/03/25 22:22:10  kenagy
+ *     no message
+ *     
+ *     Revision 1.3  2003/02/25 14:16:40  mlindner
+ *     Fix: Copyright statement
+ *
+ *     Revision 1.2  1999/11/22 14:01:58  cgoos
+ *     Changed license header to GPL.
+ *     Now using Linux' fixed size types instead of standard types.
+ *
+ *     Revision 1.1  1999/02/16 07:41:40  cgoos
+ *     First version.
+ *
+ *
+ *
+ *****************************************************************************/
+
+/******************************************************************************
+ *
+ * Description:
+ *
+ * In this file, all data types that are needed by the common modules
+ * are mapped to Linux data types.
+ *
+ *
+ * Include File Hierarchy:
+ *
+ *
+ ******************************************************************************/
+
+#ifndef __INC_SKTYPES_H
+#define __INC_SKTYPES_H
+
+
+/* defines *******************************************************************/
+
+/*
+ * Data types with a specific size. 'I' = signed, 'U' = unsigned.
+ */
+#define SK_I8  s8
+#define SK_U8  u8
+#define SK_I16 s16
+#define SK_U16 u16
+#define SK_I32 s32
+#define SK_U32 u32
+#define SK_I64 s64
+#define SK_U64 u64
+
+#define SK_UPTR        ulong           /* casting pointer <-> integral */
+
+/*
+* Boolean type.
+*/
+#define SK_BOOL                SK_U8
+#define SK_FALSE       0
+#define SK_TRUE                (!SK_FALSE)
+
+/* typedefs *******************************************************************/
+
+/* function prototypes ********************************************************/
+
+#endif /* __INC_SKTYPES_H */
diff -Naur u-boot-2009.03_orig/drivers/net/sk98lin/h/skversion.h u-boot-2009.03/drivers/net/sk98lin/h/skversion.h
--- u-boot-2009.03_orig/drivers/net/sk98lin/h/skversion.h       2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/drivers/net/sk98lin/h/skversion.h    2009-03-31 14:54:46.206040800 -0700
@@ -1,52 +1,55 @@
-/******************************************************************************
- *
- * Name:       version.h
- * Project:    GEnesis, PCI Gigabit Ethernet Adapter
- * Version:    $Revision: 1.4 $
- * Date:       $Date: 2003/02/25 14:16:40 $
- * Purpose:    SK specific Error log support
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- *     (C)Copyright 1998-2003 SysKonnect GmbH.
- *
- *     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.
- *
- *     The information in this file is provided "AS IS" without warranty.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * History:
- *     $Log: skversion.h,v $
- *     Revision 1.4  2003/02/25 14:16:40  mlindner
- *     Fix: Copyright statement
- *
- *     Revision 1.3  2003/02/25 13:30:18  mlindner
- *     Add: Support for various vendors
- *
- *     Revision 1.1.2.1  2001/09/05 13:38:30  mlindner
- *     Removed FILE description
- *
- *     Revision 1.1  2001/03/06 09:25:00  mlindner
- *     first version
- *
- *
- *
- ******************************************************************************/
-
-
-static const char SysKonnectFileId[] = "@(#) (C) SysKonnect GmbH.";
-static const char SysKonnectBuildNumber[] =
-       "@(#)SK-BUILD: 6.05 PL: 01";
-
-#define BOOT_STRING    "sk98lin: Network Device Driver v6.05\n" \
-                       "(C)Copyright 1999-2003 Marvell(R)."
-
-#define VER_STRING     "6.05"
+/******************************************************************************
+ *
+ * Name:       version.h
+ * Project:    GEnesis, PCI Gigabit Ethernet Adapter
+ * Version:    $Revision: 1.1.1.1 $
+ * Date:       $Date: 2009/03/25 22:22:10 $
+ * Purpose:    SK specific Error log support
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ *     (C)Copyright 1998-2003 SysKonnect GmbH.
+ *
+ *     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.
+ *
+ *     The information in this file is provided "AS IS" without warranty.
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ * History:
+ *     $Log: skversion.h,v $
+ *     Revision 1.1.1.1  2009/03/25 22:22:10  kenagy
+ *     no message
+ *     
+ *     Revision 1.4  2003/02/25 14:16:40  mlindner
+ *     Fix: Copyright statement
+ *
+ *     Revision 1.3  2003/02/25 13:30:18  mlindner
+ *     Add: Support for various vendors
+ *
+ *     Revision 1.1.2.1  2001/09/05 13:38:30  mlindner
+ *     Removed FILE description
+ *
+ *     Revision 1.1  2001/03/06 09:25:00  mlindner
+ *     first version
+ *
+ *
+ *
+ ******************************************************************************/
+
+
+static const char SysKonnectFileId[] = "@(#) (C) SysKonnect GmbH.";
+static const char SysKonnectBuildNumber[] =
+       "@(#)SK-BUILD: 6.05 PL: 01";
+
+#define BOOT_STRING    "sk98lin: Network Device Driver v6.05\n" \
+                       "(C)Copyright 1999-2003 Marvell(R)."
+
+#define VER_STRING     "6.05"
diff -Naur u-boot-2009.03_orig/drivers/net/sk98lin/h/skvpd.h u-boot-2009.03/drivers/net/sk98lin/h/skvpd.h
--- u-boot-2009.03_orig/drivers/net/sk98lin/h/skvpd.h   2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/drivers/net/sk98lin/h/skvpd.h        2009-03-31 14:54:46.237290400 -0700
@@ -1,335 +1,338 @@
-/******************************************************************************
- *
- * Name:       skvpd.h
- * Project:    GEnesis, PCI Gigabit Ethernet Adapter
- * Version:    $Revision: 1.15 $
- * Date:       $Date: 2003/01/13 10:39:38 $
- * Purpose:    Defines and Macros for VPD handling
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- *     (C)Copyright 1998-2003 SysKonnect GmbH.
- *
- *     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.
- *
- *     The information in this file is provided "AS IS" without warranty.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * History:
- *
- *     $Log: skvpd.h,v $
- *     Revision 1.15  2003/01/13 10:39:38  rschmidt
- *     Replaced define for PCI device Id for YUKON with GENESIS
- *     Editorial changes
- *
- *     Revision 1.14  2002/11/14 15:18:10  gheinig
- *     Added const specifier to key and buf parameters for VpdPara,VpdRead
- *     and VpdWrite. This is necessary for the Diag 7 GUI API
- *
- *     Revision 1.13  2002/10/14 15:58:18  rschmidt
- *     Added entry in rom_size struct s_vpd
- *     Editorial changes
- *
- *     Revision 1.12  2002/09/09 14:43:51  mkarl
- *     added PCI Id of Yukon for reading VPD in diag before the adapter has
- *     been initialized
- *     editorial changes
- *
- *     Revision 1.11  2002/07/26 13:19:16  mkarl
- *     added support for Yukon
- *     added vpd_size to VPD struct
- *
- *     Revision 1.10  2000/08/10 11:29:07  rassmann
- *     Editorial changes.
- *     Preserving 32-bit alignment in structs for the adapter context.
- *     Removed unused function VpdWriteDword() (#if 0).
- *     Made VpdReadKeyword() available for SKDIAG only.
- *
- *     Revision 1.9  1999/11/22 14:02:27  cgoos
- *     Changed license header to GPL.
- *
- *     Revision 1.8  1999/03/11 14:26:40  malthoff
- *     Replace __STDC__ with SK_KR_PROTO.
- *
- *     Revision 1.7  1998/10/28 07:27:17  gklug
- *     rmv: SWAP macros
- *     add: VPD_IN/OUT8 macros
- *     chg: interface definition
- *
- *     Revision 1.6  1998/10/22 10:03:44  gklug
- *     fix: use SK_OUT16 instead of SK_OUTW
- *
- *     Revision 1.5  1998/10/14 07:05:31  cgoos
- *     Changed constants in SK_SWAP_32 to UL.
- *
- *     Revision 1.4  1998/08/19 08:14:09  gklug
- *     fix: remove struct keyword as much as possible from the C-code (see CCC)
- *
- *     Revision 1.3  1998/08/18 08:18:56  malthoff
- *     Modify VPD in and out macros for SK_DIAG
- *
- *     Revision 1.2  1998/07/03 14:49:08  malthoff
- *     Add VPD_INxx() and VPD_OUTxx() macros for the Diagnostics tool.
- *
- *     Revision 1.1  1998/06/19 14:08:03  malthoff
- *     Created.
- *
- *
- ******************************************************************************/
-
-/*
- * skvpd.h     contains Diagnostic specific defines for VPD handling
- */
-
-#ifndef __INC_SKVPD_H_
-#define __INC_SKVPD_H_
-
-/*
- * Define Resource Type Identifiers and VPD keywords
- */
-#define        RES_ID          0x82    /* Resource Type ID String (Product Name) */
-#define RES_VPD_R      0x90    /* start of VPD read only area */
-#define RES_VPD_W      0x91    /* start of VPD read/write area */
-#define RES_END                0x78    /* Resource Type End Tag */
-
-#ifndef VPD_NAME
-#define VPD_NAME       "Name"  /* Product Name, VPD name of RES_ID */
-#endif /* VPD_NAME */
-#define VPD_PN         "PN"    /* Adapter Part Number */
-#define        VPD_EC          "EC"    /* Adapter Engineering Level */
-#define VPD_MN         "MN"    /* Manufacture ID */
-#define VPD_SN         "SN"    /* Serial Number */
-#define VPD_CP         "CP"    /* Extended Capability */
-#define VPD_RV         "RV"    /* Checksum and Reserved */
-#define        VPD_YA          "YA"    /* Asset Tag Identifier */
-#define VPD_VL         "VL"    /* First Error Log Message (SK specific) */
-#define VPD_VF         "VF"    /* Second Error Log Message (SK specific) */
-#define VPD_RW         "RW"    /* Remaining Read / Write Area */
-
-/* 'type' values for vpd_setup_para() */
-#define VPD_RO_KEY     1       /* RO keys are "PN", "EC", "MN", "SN", "RV" */
-#define VPD_RW_KEY     2       /* RW keys are "Yx", "Vx", and "RW" */
-
-/* 'op' values for vpd_setup_para() */
-#define        ADD_KEY         1       /* add the key at the pos "RV" or "RW" */
-#define OWR_KEY                2       /* overwrite key if already exists */
-
-/*
- * Define READ and WRITE Constants.
- */
-
-#define VPD_DEV_ID_GENESIS     0x4300
-
-#define        VPD_SIZE_YUKON          256
-#define        VPD_SIZE_GENESIS        512
-#define        VPD_SIZE                        512
-#define VPD_READ       0x0000
-#define VPD_WRITE      0x8000
-
-#define VPD_STOP(pAC,IoC)      VPD_OUT16(pAC,IoC,PCI_VPD_ADR_REG,VPD_WRITE)
-
-#define VPD_GET_RES_LEN(p)     ((unsigned int) \
-                                       (* (SK_U8 *)&(p)[1]) |\
-                                       ((* (SK_U8 *)&(p)[2]) << 8))
-#define VPD_GET_VPD_LEN(p)     ((unsigned int)(* (SK_U8 *)&(p)[2]))
-#define VPD_GET_VAL(p)         ((char *)&(p)[3])
-
-#define VPD_MAX_LEN    50
-
-/* VPD status */
-       /* bit 7..1 reserved */
-#define VPD_VALID      (1<<0)  /* VPD data buffer, vpd_free_ro, */
-                                                       /* and vpd_free_rw valid         */
-
-/*
- * VPD structs
- */
-typedef        struct s_vpd_status {
-       unsigned short  Align01;                        /* Alignment */
-       unsigned short  vpd_status;                     /* VPD status, description see above */
-       int                             vpd_free_ro;            /* unused bytes in read only area */
-       int                             vpd_free_rw;            /* bytes available in read/write area */
-} SK_VPD_STATUS;
-
-typedef        struct s_vpd {
-       SK_VPD_STATUS   v;                                      /* VPD status structure */
-       char                    vpd_buf[VPD_SIZE];      /* VPD buffer */
-       int                             rom_size;                       /* VPD ROM Size from PCI_OUR_REG_2 */
-       int                             vpd_size;                       /* saved VPD-size */
-} SK_VPD;
-
-typedef        struct s_vpd_para {
-       unsigned int    p_len;  /* parameter length */
-       char                    *p_val; /* points to the value */
-} SK_VPD_PARA;
-
-/*
- * structure of Large Resource Type Identifiers
- */
-
-/* was removed because of alignment problems */
-
-/*
- * structure of VPD keywords
- */
-typedef        struct s_vpd_key {
-       char                    p_key[2];       /* 2 bytes ID string */
-       unsigned char   p_len;          /* 1 byte length */
-       char                    p_val;          /* start of the value string */
-} SK_VPD_KEY;
-
-
-/*
- * System specific VPD macros
- */
-#ifndef SKDIAG
-#ifndef VPD_DO_IO
-#define VPD_OUT8(pAC,IoC,Addr,Val)     (void)SkPciWriteCfgByte(pAC,Addr,Val)
-#define VPD_OUT16(pAC,IoC,Addr,Val)    (void)SkPciWriteCfgWord(pAC,Addr,Val)
-#define VPD_OUT32(pAC,IoC,Addr,Val)    (void)SkPciWriteCfgDWord(pAC,Addr,Val)
-#define VPD_IN8(pAC,IoC,Addr,pVal)     (void)SkPciReadCfgByte(pAC,Addr,pVal)
-#define VPD_IN16(pAC,IoC,Addr,pVal)    (void)SkPciReadCfgWord(pAC,Addr,pVal)
-#define VPD_IN32(pAC,IoC,Addr,pVal)    (void)SkPciReadCfgDWord(pAC,Addr,pVal)
-#else  /* VPD_DO_IO */
-#define VPD_OUT8(pAC,IoC,Addr,Val)     SK_OUT8(IoC,PCI_C(Addr),Val)
-#define VPD_OUT16(pAC,IoC,Addr,Val)    SK_OUT16(IoC,PCI_C(Addr),Val)
-#define VPD_OUT32(pAC,IoC,Addr,Val)    SK_OUT32(IoC,PCI_C(Addr),Val)
-#define VPD_IN8(pAC,IoC,Addr,pVal)     SK_IN8(IoC,PCI_C(Addr),pVal)
-#define VPD_IN16(pAC,IoC,Addr,pVal)    SK_IN16(IoC,PCI_C(Addr),pVal)
-#define VPD_IN32(pAC,IoC,Addr,pVal)    SK_IN32(IoC,PCI_C(Addr),pVal)
-#endif /* VPD_DO_IO */
-#else  /* SKDIAG */
-#define VPD_OUT8(pAC,Ioc,Addr,Val) {                   \
-               if ((pAC)->DgT.DgUseCfgCycle)                   \
-                       SkPciWriteCfgByte(pAC,Addr,Val);        \
-               else                                                                    \
-                       SK_OUT8(pAC,PCI_C(Addr),Val);           \
-               }
-#define VPD_OUT16(pAC,Ioc,Addr,Val) {                  \
-               if ((pAC)->DgT.DgUseCfgCycle)                   \
-                       SkPciWriteCfgWord(pAC,Addr,Val);        \
-               else                                            \
-                       SK_OUT16(pAC,PCI_C(Addr),Val);          \
-               }
-#define VPD_OUT32(pAC,Ioc,Addr,Val) {                  \
-               if ((pAC)->DgT.DgUseCfgCycle)                   \
-                       SkPciWriteCfgDWord(pAC,Addr,Val);       \
-               else                                            \
-                       SK_OUT32(pAC,PCI_C(Addr),Val);          \
-               }
-#define VPD_IN8(pAC,Ioc,Addr,pVal) {                   \
-               if ((pAC)->DgT.DgUseCfgCycle)                   \
-                       SkPciReadCfgByte(pAC,Addr,pVal);        \
-               else                                            \
-                       SK_IN8(pAC,PCI_C(Addr),pVal);           \
-               }
-#define VPD_IN16(pAC,Ioc,Addr,pVal) {                  \
-               if ((pAC)->DgT.DgUseCfgCycle)                   \
-                       SkPciReadCfgWord(pAC,Addr,pVal);        \
-               else                                            \
-                       SK_IN16(pAC,PCI_C(Addr),pVal);          \
-               }
-#define VPD_IN32(pAC,Ioc,Addr,pVal) {                  \
-               if ((pAC)->DgT.DgUseCfgCycle)                   \
-                       SkPciReadCfgDWord(pAC,Addr,pVal);       \
-               else                                            \
-                       SK_IN32(pAC,PCI_C(Addr),pVal);          \
-               }
-#endif /* nSKDIAG */
-
-/* function prototypes ********************************************************/
-
-#ifndef        SK_KR_PROTO
-#ifdef SKDIAG
-extern SK_U32  VpdReadDWord(
-       SK_AC           *pAC,
-       SK_IOC          IoC,
-       int                     addr);
-#endif /* SKDIAG */
-
-extern int     VpdSetupPara(
-       SK_AC           *pAC,
-       const char      *key,
-       const char      *buf,
-       int                     len,
-       int                     type,
-       int                     op);
-
-extern SK_VPD_STATUS   *VpdStat(
-       SK_AC           *pAC,
-       SK_IOC          IoC);
-
-extern int     VpdKeys(
-       SK_AC           *pAC,
-       SK_IOC          IoC,
-       char            *buf,
-       int                     *len,
-       int                     *elements);
-
-extern int     VpdRead(
-       SK_AC           *pAC,
-       SK_IOC          IoC,
-       const char      *key,
-       char            *buf,
-       int                     *len);
-
-extern SK_BOOL VpdMayWrite(
-       char            *key);
-
-extern int     VpdWrite(
-       SK_AC           *pAC,
-       SK_IOC          IoC,
-       const char      *key,
-       const char      *buf);
-
-extern int     VpdDelete(
-       SK_AC           *pAC,
-       SK_IOC          IoC,
-       char            *key);
-
-extern int     VpdUpdate(
-       SK_AC           *pAC,
-       SK_IOC          IoC);
-
-extern void    VpdErrLog(
-       SK_AC           *pAC,
-       SK_IOC          IoC,
-       char            *msg);
-
-#ifdef SKDIAG
-extern int     VpdReadBlock(
-       SK_AC           *pAC,
-       SK_IOC          IoC,
-       char            *buf,
-       int                     addr,
-       int                     len);
-
-extern int     VpdWriteBlock(
-       SK_AC           *pAC,
-       SK_IOC          IoC,
-       char            *buf,
-       int                     addr,
-       int                     len);
-#endif /* SKDIAG */
-#else  /* SK_KR_PROTO */
-extern SK_U32  VpdReadDWord();
-extern int     VpdSetupPara();
-extern SK_VPD_STATUS   *VpdStat();
-extern int     VpdKeys();
-extern int     VpdRead();
-extern SK_BOOL VpdMayWrite();
-extern int     VpdWrite();
-extern int     VpdDelete();
-extern int     VpdUpdate();
-extern void    VpdErrLog();
-#endif /* SK_KR_PROTO */
-
-#endif /* __INC_SKVPD_H_ */
+/******************************************************************************
+ *
+ * Name:       skvpd.h
+ * Project:    GEnesis, PCI Gigabit Ethernet Adapter
+ * Version:    $Revision: 1.1.1.1 $
+ * Date:       $Date: 2009/03/25 22:22:10 $
+ * Purpose:    Defines and Macros for VPD handling
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ *     (C)Copyright 1998-2003 SysKonnect GmbH.
+ *
+ *     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.
+ *
+ *     The information in this file is provided "AS IS" without warranty.
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ * History:
+ *
+ *     $Log: skvpd.h,v $
+ *     Revision 1.1.1.1  2009/03/25 22:22:10  kenagy
+ *     no message
+ *     
+ *     Revision 1.15  2003/01/13 10:39:38  rschmidt
+ *     Replaced define for PCI device Id for YUKON with GENESIS
+ *     Editorial changes
+ *
+ *     Revision 1.14  2002/11/14 15:18:10  gheinig
+ *     Added const specifier to key and buf parameters for VpdPara,VpdRead
+ *     and VpdWrite. This is necessary for the Diag 7 GUI API
+ *
+ *     Revision 1.13  2002/10/14 15:58:18  rschmidt
+ *     Added entry in rom_size struct s_vpd
+ *     Editorial changes
+ *
+ *     Revision 1.12  2002/09/09 14:43:51  mkarl
+ *     added PCI Id of Yukon for reading VPD in diag before the adapter has
+ *     been initialized
+ *     editorial changes
+ *
+ *     Revision 1.11  2002/07/26 13:19:16  mkarl
+ *     added support for Yukon
+ *     added vpd_size to VPD struct
+ *
+ *     Revision 1.10  2000/08/10 11:29:07  rassmann
+ *     Editorial changes.
+ *     Preserving 32-bit alignment in structs for the adapter context.
+ *     Removed unused function VpdWriteDword() (#if 0).
+ *     Made VpdReadKeyword() available for SKDIAG only.
+ *
+ *     Revision 1.9  1999/11/22 14:02:27  cgoos
+ *     Changed license header to GPL.
+ *
+ *     Revision 1.8  1999/03/11 14:26:40  malthoff
+ *     Replace __STDC__ with SK_KR_PROTO.
+ *
+ *     Revision 1.7  1998/10/28 07:27:17  gklug
+ *     rmv: SWAP macros
+ *     add: VPD_IN/OUT8 macros
+ *     chg: interface definition
+ *
+ *     Revision 1.6  1998/10/22 10:03:44  gklug
+ *     fix: use SK_OUT16 instead of SK_OUTW
+ *
+ *     Revision 1.5  1998/10/14 07:05:31  cgoos
+ *     Changed constants in SK_SWAP_32 to UL.
+ *
+ *     Revision 1.4  1998/08/19 08:14:09  gklug
+ *     fix: remove struct keyword as much as possible from the C-code (see CCC)
+ *
+ *     Revision 1.3  1998/08/18 08:18:56  malthoff
+ *     Modify VPD in and out macros for SK_DIAG
+ *
+ *     Revision 1.2  1998/07/03 14:49:08  malthoff
+ *     Add VPD_INxx() and VPD_OUTxx() macros for the Diagnostics tool.
+ *
+ *     Revision 1.1  1998/06/19 14:08:03  malthoff
+ *     Created.
+ *
+ *
+ ******************************************************************************/
+
+/*
+ * skvpd.h     contains Diagnostic specific defines for VPD handling
+ */
+
+#ifndef __INC_SKVPD_H_
+#define __INC_SKVPD_H_
+
+/*
+ * Define Resource Type Identifiers and VPD keywords
+ */
+#define        RES_ID          0x82    /* Resource Type ID String (Product Name) */
+#define RES_VPD_R      0x90    /* start of VPD read only area */
+#define RES_VPD_W      0x91    /* start of VPD read/write area */
+#define RES_END                0x78    /* Resource Type End Tag */
+
+#ifndef VPD_NAME
+#define VPD_NAME       "Name"  /* Product Name, VPD name of RES_ID */
+#endif /* VPD_NAME */
+#define VPD_PN         "PN"    /* Adapter Part Number */
+#define        VPD_EC          "EC"    /* Adapter Engineering Level */
+#define VPD_MN         "MN"    /* Manufacture ID */
+#define VPD_SN         "SN"    /* Serial Number */
+#define VPD_CP         "CP"    /* Extended Capability */
+#define VPD_RV         "RV"    /* Checksum and Reserved */
+#define        VPD_YA          "YA"    /* Asset Tag Identifier */
+#define VPD_VL         "VL"    /* First Error Log Message (SK specific) */
+#define VPD_VF         "VF"    /* Second Error Log Message (SK specific) */
+#define VPD_RW         "RW"    /* Remaining Read / Write Area */
+
+/* 'type' values for vpd_setup_para() */
+#define VPD_RO_KEY     1       /* RO keys are "PN", "EC", "MN", "SN", "RV" */
+#define VPD_RW_KEY     2       /* RW keys are "Yx", "Vx", and "RW" */
+
+/* 'op' values for vpd_setup_para() */
+#define        ADD_KEY         1       /* add the key at the pos "RV" or "RW" */
+#define OWR_KEY                2       /* overwrite key if already exists */
+
+/*
+ * Define READ and WRITE Constants.
+ */
+
+#define VPD_DEV_ID_GENESIS     0x4300
+
+#define        VPD_SIZE_YUKON          256
+#define        VPD_SIZE_GENESIS        512
+#define        VPD_SIZE                        512
+#define VPD_READ       0x0000
+#define VPD_WRITE      0x8000
+
+#define VPD_STOP(pAC,IoC)      VPD_OUT16(pAC,IoC,PCI_VPD_ADR_REG,VPD_WRITE)
+
+#define VPD_GET_RES_LEN(p)     ((unsigned int) \
+                                       (* (SK_U8 *)&(p)[1]) |\
+                                       ((* (SK_U8 *)&(p)[2]) << 8))
+#define VPD_GET_VPD_LEN(p)     ((unsigned int)(* (SK_U8 *)&(p)[2]))
+#define VPD_GET_VAL(p)         ((char *)&(p)[3])
+
+#define VPD_MAX_LEN    50
+
+/* VPD status */
+       /* bit 7..1 reserved */
+#define VPD_VALID      (1<<0)  /* VPD data buffer, vpd_free_ro, */
+                                                       /* and vpd_free_rw valid         */
+
+/*
+ * VPD structs
+ */
+typedef        struct s_vpd_status {
+       unsigned short  Align01;                        /* Alignment */
+       unsigned short  vpd_status;                     /* VPD status, description see above */
+       int                             vpd_free_ro;            /* unused bytes in read only area */
+       int                             vpd_free_rw;            /* bytes available in read/write area */
+} SK_VPD_STATUS;
+
+typedef        struct s_vpd {
+       SK_VPD_STATUS   v;                                      /* VPD status structure */
+       char                    vpd_buf[VPD_SIZE];      /* VPD buffer */
+       int                             rom_size;                       /* VPD ROM Size from PCI_OUR_REG_2 */
+       int                             vpd_size;                       /* saved VPD-size */
+} SK_VPD;
+
+typedef        struct s_vpd_para {
+       unsigned int    p_len;  /* parameter length */
+       char                    *p_val; /* points to the value */
+} SK_VPD_PARA;
+
+/*
+ * structure of Large Resource Type Identifiers
+ */
+
+/* was removed because of alignment problems */
+
+/*
+ * structure of VPD keywords
+ */
+typedef        struct s_vpd_key {
+       char                    p_key[2];       /* 2 bytes ID string */
+       unsigned char   p_len;          /* 1 byte length */
+       char                    p_val;          /* start of the value string */
+} SK_VPD_KEY;
+
+
+/*
+ * System specific VPD macros
+ */
+#ifndef SKDIAG
+#ifndef VPD_DO_IO
+#define VPD_OUT8(pAC,IoC,Addr,Val)     (void)SkPciWriteCfgByte(pAC,Addr,Val)
+#define VPD_OUT16(pAC,IoC,Addr,Val)    (void)SkPciWriteCfgWord(pAC,Addr,Val)
+#define VPD_OUT32(pAC,IoC,Addr,Val)    (void)SkPciWriteCfgDWord(pAC,Addr,Val)
+#define VPD_IN8(pAC,IoC,Addr,pVal)     (void)SkPciReadCfgByte(pAC,Addr,pVal)
+#define VPD_IN16(pAC,IoC,Addr,pVal)    (void)SkPciReadCfgWord(pAC,Addr,pVal)
+#define VPD_IN32(pAC,IoC,Addr,pVal)    (void)SkPciReadCfgDWord(pAC,Addr,pVal)
+#else  /* VPD_DO_IO */
+#define VPD_OUT8(pAC,IoC,Addr,Val)     SK_OUT8(IoC,PCI_C(Addr),Val)
+#define VPD_OUT16(pAC,IoC,Addr,Val)    SK_OUT16(IoC,PCI_C(Addr),Val)
+#define VPD_OUT32(pAC,IoC,Addr,Val)    SK_OUT32(IoC,PCI_C(Addr),Val)
+#define VPD_IN8(pAC,IoC,Addr,pVal)     SK_IN8(IoC,PCI_C(Addr),pVal)
+#define VPD_IN16(pAC,IoC,Addr,pVal)    SK_IN16(IoC,PCI_C(Addr),pVal)
+#define VPD_IN32(pAC,IoC,Addr,pVal)    SK_IN32(IoC,PCI_C(Addr),pVal)
+#endif /* VPD_DO_IO */
+#else  /* SKDIAG */
+#define VPD_OUT8(pAC,Ioc,Addr,Val) {                   \
+               if ((pAC)->DgT.DgUseCfgCycle)                   \
+                       SkPciWriteCfgByte(pAC,Addr,Val);        \
+               else                                                                    \
+                       SK_OUT8(pAC,PCI_C(Addr),Val);           \
+               }
+#define VPD_OUT16(pAC,Ioc,Addr,Val) {                  \
+               if ((pAC)->DgT.DgUseCfgCycle)                   \
+                       SkPciWriteCfgWord(pAC,Addr,Val);        \
+               else                                            \
+                       SK_OUT16(pAC,PCI_C(Addr),Val);          \
+               }
+#define VPD_OUT32(pAC,Ioc,Addr,Val) {                  \
+               if ((pAC)->DgT.DgUseCfgCycle)                   \
+                       SkPciWriteCfgDWord(pAC,Addr,Val);       \
+               else                                            \
+                       SK_OUT32(pAC,PCI_C(Addr),Val);          \
+               }
+#define VPD_IN8(pAC,Ioc,Addr,pVal) {                   \
+               if ((pAC)->DgT.DgUseCfgCycle)                   \
+                       SkPciReadCfgByte(pAC,Addr,pVal);        \
+               else                                            \
+                       SK_IN8(pAC,PCI_C(Addr),pVal);           \
+               }
+#define VPD_IN16(pAC,Ioc,Addr,pVal) {                  \
+               if ((pAC)->DgT.DgUseCfgCycle)                   \
+                       SkPciReadCfgWord(pAC,Addr,pVal);        \
+               else                                            \
+                       SK_IN16(pAC,PCI_C(Addr),pVal);          \
+               }
+#define VPD_IN32(pAC,Ioc,Addr,pVal) {                  \
+               if ((pAC)->DgT.DgUseCfgCycle)                   \
+                       SkPciReadCfgDWord(pAC,Addr,pVal);       \
+               else                                            \
+                       SK_IN32(pAC,PCI_C(Addr),pVal);          \
+               }
+#endif /* nSKDIAG */
+
+/* function prototypes ********************************************************/
+
+#ifndef        SK_KR_PROTO
+#ifdef SKDIAG
+extern SK_U32  VpdReadDWord(
+       SK_AC           *pAC,
+       SK_IOC          IoC,
+       int                     addr);
+#endif /* SKDIAG */
+
+extern int     VpdSetupPara(
+       SK_AC           *pAC,
+       const char      *key,
+       const char      *buf,
+       int                     len,
+       int                     type,
+       int                     op);
+
+extern SK_VPD_STATUS   *VpdStat(
+       SK_AC           *pAC,
+       SK_IOC          IoC);
+
+extern int     VpdKeys(
+       SK_AC           *pAC,
+       SK_IOC          IoC,
+       char            *buf,
+       int                     *len,
+       int                     *elements);
+
+extern int     VpdRead(
+       SK_AC           *pAC,
+       SK_IOC          IoC,
+       const char      *key,
+       char            *buf,
+       int                     *len);
+
+extern SK_BOOL VpdMayWrite(
+       char            *key);
+
+extern int     VpdWrite(
+       SK_AC           *pAC,
+       SK_IOC          IoC,
+       const char      *key,
+       const char      *buf);
+
+extern int     VpdDelete(
+       SK_AC           *pAC,
+       SK_IOC          IoC,
+       char            *key);
+
+extern int     VpdUpdate(
+       SK_AC           *pAC,
+       SK_IOC          IoC);
+
+extern void    VpdErrLog(
+       SK_AC           *pAC,
+       SK_IOC          IoC,
+       char            *msg);
+
+#ifdef SKDIAG
+extern int     VpdReadBlock(
+       SK_AC           *pAC,
+       SK_IOC          IoC,
+       char            *buf,
+       int                     addr,
+       int                     len);
+
+extern int     VpdWriteBlock(
+       SK_AC           *pAC,
+       SK_IOC          IoC,
+       char            *buf,
+       int                     addr,
+       int                     len);
+#endif /* SKDIAG */
+#else  /* SK_KR_PROTO */
+extern SK_U32  VpdReadDWord();
+extern int     VpdSetupPara();
+extern SK_VPD_STATUS   *VpdStat();
+extern int     VpdKeys();
+extern int     VpdRead();
+extern SK_BOOL VpdMayWrite();
+extern int     VpdWrite();
+extern int     VpdDelete();
+extern int     VpdUpdate();
+extern void    VpdErrLog();
+#endif /* SK_KR_PROTO */
+
+#endif /* __INC_SKVPD_H_ */
diff -Naur u-boot-2009.03_orig/drivers/net/sk98lin/h/xmac_ii.h u-boot-2009.03/drivers/net/sk98lin/h/xmac_ii.h
--- u-boot-2009.03_orig/drivers/net/sk98lin/h/xmac_ii.h 2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/drivers/net/sk98lin/h/xmac_ii.h      2009-03-31 14:54:46.284164800 -0700
@@ -1,1738 +1,1741 @@
-/******************************************************************************
- *
- * Name:       xmac_ii.h
- * Project:    GEnesis, PCI Gigabit Ethernet Adapter
- * Version:    $Revision: 1.46 $
- * Date:       $Date: 2003/01/28 09:47:45 $
- * Purpose:    Defines and Macros for Gigabit Ethernet Controller
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- *     (C)Copyright 1998-2003 SysKonnect GmbH.
- *
- *     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.
- *
- *     The information in this file is provided "AS IS" without warranty.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * History:
- *
- *     $Log: xmac_ii.h,v $
- *     Revision 1.46  2003/01/28 09:47:45  rschmidt
- *     Added defines for copper MDI/MDIX configuration
- *     Added defines for LED Control Register
- *     Editorial changes
- *
- *     Revision 1.45  2002/12/10 14:35:13  rschmidt
- *     Corrected defines for Extended PHY Specific Control
- *     Added defines for Ext. PHY Specific Ctrl 2 Reg. (Fiber specific)
- *
- *     Revision 1.44  2002/12/09 14:58:41  rschmidt
- *     Added defines for Ext. PHY Specific Ctrl Reg. (downshift feature)
- *     Added 'GMR_FS_UN_SIZE'-Bit to Rx GMAC FIFO Flush Mask
- *
- *     Revision 1.43  2002/12/05 10:14:45  rschmidt
- *     Added define for GMAC's Half Duplex Burst Mode
- *     Added define for Rx GMAC FIFO Flush Mask (default)
- *
- *     Revision 1.42  2002/11/12 16:48:19  rschmidt
- *     Added defines for Cable Diagnostic Register (GPHY)
- *     Editorial changes
- *
- *     Revision 1.41  2002/10/21 11:20:22  rschmidt
- *     Added bit GMR_FS_GOOD_FC to GMR_FS_ANY_ERR
- *     Editorial changes
- *
- *     Revision 1.40  2002/10/14 14:54:14  rschmidt
- *     Added defines for GPHY Specific Status and GPHY Interrupt Status
- *     Added bits PHY_M_IS_AN_ERROR and PHY_M_IS_FIFO_ERROR to PHY_M_DEF_MSK
- *     Editorial changes
- *
- *     Revision 1.39  2002/10/10 15:53:44  mkarl
- *     added some bit definitions for link speed status and LED's
- *
- *     Revision 1.38  2002/08/21 16:23:46  rschmidt
- *     Added defines for PHY Specific Ctrl Reg
- *     Editorial changes
- *
- *     Revision 1.37  2002/08/16 14:50:33  rschmidt
- *     Added defines for Auto-Neg. Advertisement YUKON Fiber (88E1011S only)
- *     Changed define PHY_M_DEF_MSK for GPHY IRQ Mask
- *     Editorial changes
- *
- *     Revision 1.36  2002/08/12 13:21:10  rschmidt
- *     Added defines for different Broadcom PHY Ids
- *
- *     Revision 1.35  2002/08/08 15:58:01  rschmidt
- *     Added defines for Manual LED Override register (YUKON)
- *     Editorial changes
- *
- *     Revision 1.34  2002/07/31 17:23:36  rwahl
- *     Added define GMR_FS_ANY_ERR (analogous to XMR_FS_ANY_ERR).
- *
- *     Revision 1.33  2002/07/23 16:03:37  rschmidt
- *     Added defines for GPHY registers
- *     Editorial changes
- *
- *     Revision 1.32  2002/07/15 18:14:37  rwahl
- *     Added GMAC MIB counters definitions.
- *     Editorial changes.
- *
- *     Revision 1.31  2002/07/15 15:42:50  rschmidt
- *     Removed defines from PHY specific reg. which are
- *     common to all PHYs
- *     Added defines for GMAC MIB Counters
- *     Editorial changes
- *
- *     Revision 1.30  2002/06/05 08:22:12  rschmidt
- *     Changed defines for GMAC Rx Control Register and Rx Status
- *     Editorial changes
- *
- *     Revision 1.29  2002/04/25 11:43:56  rschmidt
- *     Added define PHY_B_AS_PAUSE_MSK for BCom Pause Res.
- *     Added new registers and defines for YUKON (GMAC, GPHY)
- *     Added Receive Frame Status Encoding for YUKON
- *     Editorial changes
- *
- *     Revision 1.28  2000/11/09 12:32:49  rassmann
- *     Renamed variables.
- *
- *     Revision 1.27  2000/05/17 11:00:46  malthoff
- *     Add bit for enable/disable power management in BCOM chip.
- *
- *     Revision 1.26  1999/11/22 14:03:00  cgoos
- *     Changed license header to GPL.
- *
- *     Revision 1.25  1999/08/12 19:19:38  malthoff
- *     Add PHY_B_AC_TX_TST bit according to BCOM A1 errata sheet.
- *
- *     Revision 1.24  1999/07/30 11:27:21  cgoos
- *     Fixed a missing end-of-comment.
- *
- *     Revision 1.23  1999/07/30 07:03:31  malthoff
- *     Cut some long comments.
- *     Correct the XMAC PHY ID definitions.
- *
- *     Revision 1.22  1999/05/19 07:33:18  cgoos
- *     Changes for 1000Base-T.
- *
- *     Revision 1.21  1999/03/25 07:46:11  malthoff
- *     Add XM_HW_CFG, XM_TS_READ, and XM_TS_LOAD registers.
- *
- *     Revision 1.20  1999/03/12 13:36:09  malthoff
- *     Remove __STDC__.
- *
- *     Revision 1.19  1998/12/10 12:22:54  gklug
- *     fix: RX_PAGE must be in interrupt mask
- *
- *     Revision 1.18  1998/12/10 10:36:36  gklug
- *     fix: swap of pause bits
- *
- *     Revision 1.17  1998/11/18 13:21:45  gklug
- *     fix: Default interrupt mask
- *
- *     Revision 1.16  1998/10/29 15:53:21  gklug
- *     fix: Default mask uses ASS (GP0) signal
- *
- *     Revision 1.15  1998/10/28 13:52:52  malthoff
- *     Add new bits in RX_CMD register.
- *
- *     Revision 1.14  1998/10/19 15:34:53  gklug
- *     fix: typos
- *
- *     Revision 1.13  1998/10/14 07:19:03  malthoff
- *     bug fix: Every define which describes bit 31
- *     must be declared as unsigned long 'UL'.
- *     fix bit definitions of PHY_AN_RFB and PHY_AN_PAUSE.
- *     Remove ANP defines. Rework the RFB defines.
- *
- *     Revision 1.12  1998/10/14 06:22:44  cgoos
- *     Changed shifted constant to ULONG.
- *
- *     Revision 1.11  1998/10/14 05:43:26  gklug
- *     add: shift pause coding
- *     fix: PAUSE bits definition
- *
- *     Revision 1.10  1998/10/13 09:19:21  malthoff
- *     Again change XMR_FS_ANY_ERR because of new info from XaQti.
- *
- *     Revision 1.9  1998/10/09 07:58:30  malthoff
- *     Add XMR_FS_FCS_ERR to XMR_FS_ANY_ERR.
- *
- *     Revision 1.8  1998/10/09 07:18:17  malthoff
- *     bug fix of a bug fix: XM_PAUSE_MODE and XM_DEF_MODE
- *     are not inverted! Bug XM_DEF_MSK is inverted.
- *
- *     Revision 1.7  1998/10/05 08:04:32  malthoff
- *     bug fix: XM_PAUSE_MODE and XM_DEF_MODE
- *     must be inverted declarations.
- *
- *     Revision 1.6  1998/09/28 13:38:18  malthoff
- *     Add default modes and masks XM_DEF_MSK,
- *     XM_PAUSE_MODE and XM_DEF_MODE
- *
- *     Revision 1.5  1998/09/16 14:42:04  malthoff
- *     Bug Fix: XM_GP_PORT is a 32 bit (not a 16 bit) register.
- *
- *     Revision 1.4  1998/08/20 14:59:47  malthoff
- *     Rework this file after reading the XaQti data sheet
- *     "Differences between Rev. B2 & Rev. C XMAC II".
- *     This file is now 100% XMAC II Rev. C complained.
- *
- *     Revision 1.3  1998/06/29 12:18:23  malthoff
- *     Correct XMR_FS_ANY_ERR definition.
- *
- *     Revision 1.2  1998/06/29 12:10:56  malthoff
- *     Add define XMR_FS_ANY_ERR.
- *
- *     Revision 1.1  1998/06/19 13:37:17  malthoff
- *     created.
- *
- *
- ******************************************************************************/
-
-#ifndef __INC_XMAC_H
-#define __INC_XMAC_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/* defines ********************************************************************/
-
-/*
- * XMAC II registers
- *
- * The XMAC registers are 16 or 32 bits wide.
- * The XMACs host processor interface is set to 16 bit mode,
- * therefore ALL registers will be addressed with 16 bit accesses.
- *
- * The following macros are provided to access the XMAC registers
- * XM_IN16(), XM_OUT16, XM_IN32(), XM_OUT32(), XM_INADR(), XM_OUTADR(),
- * XM_INHASH(), and XM_OUTHASH().
- * The macros are defined in SkGeHw.h.
- *
- * Note:       NA reg  = Network Address e.g DA, SA etc.
- *
- */
-#define XM_MMU_CMD             0x0000  /* 16 bit r/w   MMU Command Register */
-       /* 0x0004:              reserved */
-#define XM_POFF                        0x0008  /* 32 bit r/w   Packet Offset Register */
-#define XM_BURST               0x000c  /* 32 bit r/w   Burst Register for half duplex*/
-#define XM_1L_VLAN_TAG 0x0010  /* 16 bit r/w   One Level VLAN Tag ID */
-#define XM_2L_VLAN_TAG 0x0014  /* 16 bit r/w   Two Level VLAN Tag ID */
-       /* 0x0018 - 0x001e:     reserved */
-#define XM_TX_CMD              0x0020  /* 16 bit r/w   Transmit Command Register */
-#define XM_TX_RT_LIM   0x0024  /* 16 bit r/w   Transmit Retry Limit Register */
-#define XM_TX_STIME            0x0028  /* 16 bit r/w   Transmit Slottime Register */
-#define XM_TX_IPG              0x002c  /* 16 bit r/w   Transmit Inter Packet Gap */
-#define XM_RX_CMD              0x0030  /* 16 bit r/w   Receive Command Register */
-#define XM_PHY_ADDR            0x0034  /* 16 bit r/w   PHY Address Register */
-#define XM_PHY_DATA            0x0038  /* 16 bit r/w   PHY Data Register */
-       /* 0x003c:              reserved */
-#define XM_GP_PORT             0x0040  /* 32 bit r/w   General Purpose Port Register */
-#define XM_IMSK                        0x0044  /* 16 bit r/w   Interrupt Mask Register */
-#define XM_ISRC                        0x0048  /* 16 bit r/o   Interrupt Status Register */
-#define XM_HW_CFG              0x004c  /* 16 bit r/w   Hardware Config Register */
-       /* 0x0050 - 0x005e:     reserved */
-#define XM_TX_LO_WM            0x0060  /* 16 bit r/w   Tx FIFO Low Water Mark */
-#define XM_TX_HI_WM            0x0062  /* 16 bit r/w   Tx FIFO High Water Mark */
-#define XM_TX_THR              0x0064  /* 16 bit r/w   Tx Request Threshold */
-#define XM_HT_THR              0x0066  /* 16 bit r/w   Host Request Threshold */
-#define XM_PAUSE_DA            0x0068  /* NA reg r/w   Pause Destination Address */
-       /* 0x006e:              reserved */
-#define XM_CTL_PARA            0x0070  /* 32 bit r/w   Control Parameter Register */
-#define XM_MAC_OPCODE  0x0074  /* 16 bit r/w   Opcode for MAC control frames */
-#define XM_MAC_PTIME   0x0076  /* 16 bit r/w   Pause time for MAC ctrl frames*/
-#define XM_TX_STAT             0x0078  /* 32 bit r/o   Tx Status LIFO Register */
-
-       /* 0x0080 - 0x00fc:     16 NA reg r/w   Exact Match Address Registers */
-       /*                              use the XM_EXM() macro to address */
-#define XM_EXM_START   0x0080  /* r/w  Start Address of the EXM Regs */
-
-       /*
-        * XM_EXM(Reg)
-        *
-        * returns the XMAC address offset of specified Exact Match Addr Reg
-        *
-        * para:        Reg     EXM register to addr    (0 .. 15)
-        *
-        * usage:       XM_INADDR(IoC, MAC_1, XM_EXM(i), &val[i]);
-        */
-#define XM_EXM(Reg)    (XM_EXM_START + ((Reg) << 3))
-
-#define XM_SRC_CHK             0x0100  /* NA reg r/w   Source Check Address Register */
-#define XM_SA                  0x0108  /* NA reg r/w   Station Address Register */
-#define XM_HSM                 0x0110  /* 64 bit r/w   Hash Match Address Registers */
-#define XM_RX_LO_WM            0x0118  /* 16 bit r/w   Receive Low Water Mark */
-#define XM_RX_HI_WM            0x011a  /* 16 bit r/w   Receive High Water Mark */
-#define XM_RX_THR              0x011c  /* 32 bit r/w   Receive Request Threshold */
-#define XM_DEV_ID              0x0120  /* 32 bit r/o   Device ID Register */
-#define XM_MODE                        0x0124  /* 32 bit r/w   Mode Register */
-#define XM_LSA                 0x0128  /* NA reg r/o   Last Source Register */
-       /* 0x012e:              reserved */
-#define XM_TS_READ             0x0130  /* 32 bit r/o   Time Stamp Read Register */
-#define XM_TS_LOAD             0x0134  /* 32 bit r/o   Time Stamp Load Value */
-       /* 0x0138 - 0x01fe:     reserved */
-#define XM_STAT_CMD    0x0200  /* 16 bit r/w   Statistics Command Register */
-#define XM_RX_CNT_EV   0x0204  /* 32 bit r/o   Rx Counter Event Register */
-#define XM_TX_CNT_EV   0x0208  /* 32 bit r/o   Tx Counter Event Register */
-#define XM_RX_EV_MSK   0x020c  /* 32 bit r/w   Rx Counter Event Mask */
-#define XM_TX_EV_MSK   0x0210  /* 32 bit r/w   Tx Counter Event Mask */
-       /* 0x0204 - 0x027e:     reserved */
-#define XM_TXF_OK              0x0280  /* 32 bit r/o   Frames Transmitted OK Conuter */
-#define XM_TXO_OK_HI   0x0284  /* 32 bit r/o   Octets Transmitted OK High Cnt*/
-#define XM_TXO_OK_LO   0x0288  /* 32 bit r/o   Octets Transmitted OK Low Cnt */
-#define XM_TXF_BC_OK   0x028c  /* 32 bit r/o   Broadcast Frames Xmitted OK */
-#define XM_TXF_MC_OK   0x0290  /* 32 bit r/o   Multicast Frames Xmitted OK */
-#define XM_TXF_UC_OK   0x0294  /* 32 bit r/o   Unicast Frames Xmitted OK */
-#define XM_TXF_LONG            0x0298  /* 32 bit r/o   Tx Long Frame Counter */
-#define XM_TXE_BURST   0x029c  /* 32 bit r/o   Tx Burst Event Counter */
-#define XM_TXF_MPAUSE  0x02a0  /* 32 bit r/o   Tx Pause MAC Ctrl Frame Cnt */
-#define XM_TXF_MCTRL   0x02a4  /* 32 bit r/o   Tx MAC Ctrl Frame Counter */
-#define XM_TXF_SNG_COL 0x02a8  /* 32 bit r/o   Tx Single Collision Counter */
-#define XM_TXF_MUL_COL 0x02ac  /* 32 bit r/o   Tx Multiple Collision Counter */
-#define XM_TXF_ABO_COL 0x02b0  /* 32 bit r/o   Tx aborted due to Exces. Col. */
-#define XM_TXF_LAT_COL 0x02b4  /* 32 bit r/o   Tx Late Collision Counter */
-#define XM_TXF_DEF             0x02b8  /* 32 bit r/o   Tx Deferred Frame Counter */
-#define XM_TXF_EX_DEF  0x02bc  /* 32 bit r/o   Tx Excessive Deferall Counter */
-#define XM_TXE_FIFO_UR 0x02c0  /* 32 bit r/o   Tx FIFO Underrun Event Cnt */
-#define XM_TXE_CS_ERR  0x02c4  /* 32 bit r/o   Tx Carrier Sense Error Cnt */
-#define XM_TXP_UTIL            0x02c8  /* 32 bit r/o   Tx Utilization in % */
-       /* 0x02cc - 0x02ce:     reserved */
-#define XM_TXF_64B             0x02d0  /* 32 bit r/o   64 Byte Tx Frame Counter */
-#define XM_TXF_127B            0x02d4  /* 32 bit r/o   65-127 Byte Tx Frame Counter */
-#define XM_TXF_255B            0x02d8  /* 32 bit r/o   128-255 Byte Tx Frame Counter */
-#define XM_TXF_511B            0x02dc  /* 32 bit r/o   256-511 Byte Tx Frame Counter */
-#define XM_TXF_1023B   0x02e0  /* 32 bit r/o   512-1023 Byte Tx Frame Counter*/
-#define XM_TXF_MAX_SZ  0x02e4  /* 32 bit r/o   1024-MaxSize Byte Tx Frame Cnt*/
-       /* 0x02e8 - 0x02fe:     reserved */
-#define XM_RXF_OK              0x0300  /* 32 bit r/o   Frames Received OK */
-#define XM_RXO_OK_HI   0x0304  /* 32 bit r/o   Octets Received OK High Cnt */
-#define XM_RXO_OK_LO   0x0308  /* 32 bit r/o   Octets Received OK Low Counter*/
-#define XM_RXF_BC_OK   0x030c  /* 32 bit r/o   Broadcast Frames Received OK */
-#define XM_RXF_MC_OK   0x0310  /* 32 bit r/o   Multicast Frames Received OK */
-#define XM_RXF_UC_OK   0x0314  /* 32 bit r/o   Unicast Frames Received OK */
-#define XM_RXF_MPAUSE  0x0318  /* 32 bit r/o   Rx Pause MAC Ctrl Frame Cnt */
-#define XM_RXF_MCTRL   0x031c  /* 32 bit r/o   Rx MAC Ctrl Frame Counter */
-#define XM_RXF_INV_MP  0x0320  /* 32 bit r/o   Rx invalid Pause Frame Cnt */
-#define XM_RXF_INV_MOC 0x0324  /* 32 bit r/o   Rx Frames with inv. MAC Opcode*/
-#define XM_RXE_BURST   0x0328  /* 32 bit r/o   Rx Burst Event Counter */
-#define XM_RXE_FMISS   0x032c  /* 32 bit r/o   Rx Missed Frames Event Cnt */
-#define XM_RXF_FRA_ERR 0x0330  /* 32 bit r/o   Rx Framing Error Counter */
-#define XM_RXE_FIFO_OV 0x0334  /* 32 bit r/o   Rx FIFO overflow Event Cnt */
-#define XM_RXF_JAB_PKT 0x0338  /* 32 bit r/o   Rx Jabber Packet Frame Cnt */
-#define XM_RXE_CAR_ERR 0x033c  /* 32 bit r/o   Rx Carrier Event Error Cnt */
-#define XM_RXF_LEN_ERR 0x0340  /* 32 bit r/o   Rx in Range Length Error */
-#define XM_RXE_SYM_ERR 0x0344  /* 32 bit r/o   Rx Symbol Error Counter */
-#define XM_RXE_SHT_ERR 0x0348  /* 32 bit r/o   Rx Short Event Error Cnt */
-#define XM_RXE_RUNT            0x034c  /* 32 bit r/o   Rx Runt Event Counter */
-#define XM_RXF_LNG_ERR 0x0350  /* 32 bit r/o   Rx Frame too Long Error Cnt */
-#define XM_RXF_FCS_ERR 0x0354  /* 32 bit r/o   Rx Frame Check Seq. Error Cnt */
-       /* 0x0358 - 0x035a:     reserved */
-#define XM_RXF_CEX_ERR 0x035c  /* 32 bit r/o   Rx Carrier Ext Error Frame Cnt*/
-#define XM_RXP_UTIL            0x0360  /* 32 bit r/o   Rx Utilization in % */
-       /* 0x0364 - 0x0366:     reserved */
-#define XM_RXF_64B             0x0368  /* 32 bit r/o   64 Byte Rx Frame Counter */
-#define XM_RXF_127B            0x036c  /* 32 bit r/o   65-127 Byte Rx Frame Counter */
-#define XM_RXF_255B            0x0370  /* 32 bit r/o   128-255 Byte Rx Frame Counter */
-#define XM_RXF_511B            0x0374  /* 32 bit r/o   256-511 Byte Rx Frame Counter */
-#define XM_RXF_1023B   0x0378  /* 32 bit r/o   512-1023 Byte Rx Frame Counter*/
-#define XM_RXF_MAX_SZ  0x037c  /* 32 bit r/o   1024-MaxSize Byte Rx Frame Cnt*/
-       /* 0x02e8 - 0x02fe:     reserved */
-
-
-/*----------------------------------------------------------------------------*/
-/*
- * XMAC Bit Definitions
- *
- * If the bit access behaviour differs from the register access behaviour
- * (r/w, r/o) this is documented after the bit number.
- * The following bit access behaviours are used:
- *     (sc)    self clearing
- *     (ro)    read only
- */
-
-/*     XM_MMU_CMD      16 bit r/w      MMU Command Register */
-                                                               /* Bit 15..13:  reserved */
-#define XM_MMU_PHY_RDY (1<<12) /* Bit 12:      PHY Read Ready */
-#define XM_MMU_PHY_BUSY        (1<<11) /* Bit 11:      PHY Busy */
-#define XM_MMU_IGN_PF  (1<<10) /* Bit 10:      Ignore Pause Frame */
-#define XM_MMU_MAC_LB  (1<<9)  /* Bit  9:      Enable MAC Loopback */
-                                                               /* Bit  8:      reserved */
-#define XM_MMU_FRC_COL (1<<7)  /* Bit  7:      Force Collision */
-#define XM_MMU_SIM_COL (1<<6)  /* Bit  6:      Simulate Collision */
-#define XM_MMU_NO_PRE  (1<<5)  /* Bit  5:      No MDIO Preamble */
-#define XM_MMU_GMII_FD (1<<4)  /* Bit  4:      GMII uses Full Duplex */
-#define XM_MMU_RAT_CTRL        (1<<3)  /* Bit  3:      Enable Rate Control */
-#define XM_MMU_GMII_LOOP (1<<2)        /* Bit  2:      PHY is in Loopback Mode */
-#define XM_MMU_ENA_RX  (1<<1)  /* Bit  1:      Enable Receiver */
-#define XM_MMU_ENA_TX  (1<<0)  /* Bit  0:      Enable Transmitter */
-
-
-/*     XM_TX_CMD       16 bit r/w      Transmit Command Register */
-                                                               /* Bit 15..7:   reserved */
-#define XM_TX_BK2BK            (1<<6)  /* Bit  6:      Ignor Carrier Sense (Tx Bk2Bk)*/
-#define XM_TX_ENC_BYP  (1<<5)  /* Bit  5:      Set Encoder in Bypass Mode */
-#define XM_TX_SAM_LINE (1<<4)  /* Bit  4: (sc) Start utilization calculation */
-#define XM_TX_NO_GIG_MD        (1<<3)  /* Bit  3:      Disable Carrier Extension */
-#define XM_TX_NO_PRE   (1<<2)  /* Bit  2:      Disable Preamble Generation */
-#define XM_TX_NO_CRC   (1<<1)  /* Bit  1:      Disable CRC Generation */
-#define XM_TX_AUTO_PAD (1<<0)  /* Bit  0:      Enable Automatic Padding */
-
-
-/*     XM_TX_RT_LIM    16 bit r/w      Transmit Retry Limit Register */
-                                                               /* Bit 15..5:   reserved */
-#define XM_RT_LIM_MSK  0x1f    /* Bit  4..0:   Tx Retry Limit */
-
-
-/*     XM_TX_STIME     16 bit r/w      Transmit Slottime Register */
-                                                               /* Bit 15..7:   reserved */
-#define XM_STIME_MSK   0x7f    /* Bit  6..0:   Tx Slottime bits */
-
-
-/*     XM_TX_IPG       16 bit r/w      Transmit Inter Packet Gap */
-                                                               /* Bit 15..8:   reserved */
-#define XM_IPG_MSK             0xff    /* Bit  7..0:   IPG value bits */
-
-
-/*     XM_RX_CMD       16 bit r/w      Receive Command Register */
-                                                               /* Bit 15..9:   reserved */
-#define XM_RX_LENERR_OK (1<<8) /* Bit  8       don't set Rx Err bit for */
-                                                               /*              inrange error packets */
-#define XM_RX_BIG_PK_OK        (1<<7)  /* Bit  7       don't set Rx Err bit for */
-                                                               /*              jumbo packets */
-#define XM_RX_IPG_CAP  (1<<6)  /* Bit  6       repl. type field with IPG */
-#define XM_RX_TP_MD            (1<<5)  /* Bit  5:      Enable transparent Mode */
-#define XM_RX_STRIP_FCS        (1<<4)  /* Bit  4:      Enable FCS Stripping */
-#define XM_RX_SELF_RX  (1<<3)  /* Bit  3:      Enable Rx of own packets */
-#define XM_RX_SAM_LINE (1<<2)  /* Bit  2: (sc) Start utilization calculation */
-#define XM_RX_STRIP_PAD        (1<<1)  /* Bit  1:      Strip pad bytes of Rx frames */
-#define XM_RX_DIS_CEXT (1<<0)  /* Bit  0:      Disable carrier ext. check */
-
-
-/*     XM_PHY_ADDR     16 bit r/w      PHY Address Register */
-                                                               /* Bit 15..5:   reserved */
-#define XM_PHY_ADDR_SZ 0x1f    /* Bit  4..0:   PHY Address bits */
-
-
-/*     XM_GP_PORT      32 bit r/w      General Purpose Port Register */
-                                                               /* Bit 31..7:   reserved */
-#define XM_GP_ANIP             (1L<<6) /* Bit  6: (ro) Auto-Neg. in progress */
-#define XM_GP_FRC_INT  (1L<<5) /* Bit  5: (sc) Force Interrupt */
-                                                               /* Bit  4:      reserved */
-#define XM_GP_RES_MAC  (1L<<3) /* Bit  3: (sc) Reset MAC and FIFOs */
-#define XM_GP_RES_STAT (1L<<2) /* Bit  2: (sc) Reset the statistics module */
-                                                               /* Bit  1:      reserved */
-#define XM_GP_INP_ASS  (1L<<0) /* Bit  0: (ro) GP Input Pin asserted */
-
-
-/*     XM_IMSK         16 bit r/w      Interrupt Mask Register */
-/*     XM_ISRC         16 bit r/o      Interrupt Status Register */
-                                                               /* Bit 15:      reserved */
-#define XM_IS_LNK_AE   (1<<14) /* Bit 14:      Link Asynchronous Event */
-#define XM_IS_TX_ABORT (1<<13) /* Bit 13:      Transmit Abort, late Col. etc */
-#define XM_IS_FRC_INT  (1<<12) /* Bit 12:      Force INT bit set in GP */
-#define XM_IS_INP_ASS  (1<<11) /* Bit 11:      Input Asserted, GP bit 0 set */
-#define XM_IS_LIPA_RC  (1<<10) /* Bit 10:      Link Partner requests config */
-#define XM_IS_RX_PAGE  (1<<9)  /* Bit  9:      Page Received */
-#define XM_IS_TX_PAGE  (1<<8)  /* Bit  8:      Next Page Loaded for Transmit */
-#define XM_IS_AND              (1<<7)  /* Bit  7:      Auto-Negotiation Done */
-#define XM_IS_TSC_OV   (1<<6)  /* Bit  6:      Time Stamp Counter Overflow */
-#define XM_IS_RXC_OV   (1<<5)  /* Bit  5:      Rx Counter Event Overflow */
-#define XM_IS_TXC_OV   (1<<4)  /* Bit  4:      Tx Counter Event Overflow */
-#define XM_IS_RXF_OV   (1<<3)  /* Bit  3:      Receive FIFO Overflow */
-#define XM_IS_TXF_UR   (1<<2)  /* Bit  2:      Transmit FIFO Underrun */
-#define XM_IS_TX_COMP  (1<<1)  /* Bit  1:      Frame Tx Complete */
-#define XM_IS_RX_COMP  (1<<0)  /* Bit  0:      Frame Rx Complete */
-
-#define XM_DEF_MSK     (~(XM_IS_INP_ASS | XM_IS_LIPA_RC | XM_IS_RX_PAGE |\
-                       XM_IS_AND | XM_IS_RXC_OV | XM_IS_TXC_OV | XM_IS_TXF_UR))
-
-
-/*     XM_HW_CFG       16 bit r/w      Hardware Config Register */
-                                                               /* Bit 15.. 4:  reserved */
-#define XM_HW_GEN_EOP  (1<<3)  /* Bit  3:      generate End of Packet pulse */
-#define XM_HW_COM4SIG  (1<<2)  /* Bit  2:      use Comma Detect for Sig. Det.*/
-                                                               /* Bit  1:      reserved */
-#define XM_HW_GMII_MD  (1<<0)  /* Bit  0:      GMII Interface selected */
-
-
-/*     XM_TX_LO_WM     16 bit r/w      Tx FIFO Low Water Mark */
-/*     XM_TX_HI_WM     16 bit r/w      Tx FIFO High Water Mark */
-                                                               /* Bit 15..10   reserved */
-#define XM_TX_WM_MSK   0x01ff  /* Bit  9.. 0   Tx FIFO Watermark bits */
-
-/*     XM_TX_THR       16 bit r/w      Tx Request Threshold */
-/*     XM_HT_THR       16 bit r/w      Host Request Threshold */
-/*     XM_RX_THR       16 bit r/w      Rx Request Threshold */
-                                                               /* Bit 15..11   reserved */
-#define XM_THR_MSK             0x03ff  /* Bit 10.. 0   Rx/Tx Request Threshold bits */
-
-
-/*     XM_TX_STAT      32 bit r/o      Tx Status LIFO Register */
-#define XM_ST_VALID            (1UL<<31)       /* Bit 31:      Status Valid */
-#define XM_ST_BYTE_CNT (0x3fffL<<17)   /* Bit 30..17:  Tx frame Length */
-#define XM_ST_RETRY_CNT        (0x1fL<<12)     /* Bit 16..12:  Retry Count */
-#define XM_ST_EX_COL   (1L<<11)        /* Bit 11:      Excessive Collisions */
-#define XM_ST_EX_DEF   (1L<<10)        /* Bit 10:      Excessive Deferral */
-#define XM_ST_BURST            (1L<<9)         /* Bit  9:      p. xmitted in burst md*/
-#define XM_ST_DEFER            (1L<<8)         /* Bit  8:      packet was defered */
-#define XM_ST_BC               (1L<<7)         /* Bit  7:      Broadcast packet */
-#define XM_ST_MC               (1L<<6)         /* Bit  6:      Multicast packet */
-#define XM_ST_UC               (1L<<5)         /* Bit  5:      Unicast packet */
-#define XM_ST_TX_UR            (1L<<4)         /* Bit  4:      FIFO Underrun occured */
-#define XM_ST_CS_ERR   (1L<<3)         /* Bit  3:      Carrier Sense Error */
-#define XM_ST_LAT_COL  (1L<<2)         /* Bit  2:      Late Collision Error */
-#define XM_ST_MUL_COL  (1L<<1)         /* Bit  1:      Multiple Collisions */
-#define XM_ST_SGN_COL  (1L<<0)         /* Bit  0:      Single Collision */
-
-/*     XM_RX_LO_WM     16 bit r/w      Receive Low Water Mark */
-/*     XM_RX_HI_WM     16 bit r/w      Receive High Water Mark */
-                                                                       /* Bit 15..11:  reserved */
-#define XM_RX_WM_MSK   0x03ff          /* Bit 11.. 0:  Rx FIFO Watermark bits */
-
-
-/*     XM_DEV_ID       32 bit r/o      Device ID Register */
-#define XM_DEV_OUI     (0x00ffffffUL<<8)       /* Bit 31..8:   Device OUI */
-#define XM_DEV_REV     (0x07L << 5)            /* Bit  7..5:   Chip Rev Num */
-
-
-/*     XM_MODE         32 bit r/w      Mode Register */
-                                                                       /* Bit 31..27:  reserved */
-#define XM_MD_ENA_REJ  (1L<<26)        /* Bit 26:      Enable Frame Reject */
-#define XM_MD_SPOE_E   (1L<<25)        /* Bit 25:      Send Pause on Edge */
-                                                                       /*              extern generated */
-#define XM_MD_TX_REP   (1L<<24)        /* Bit 24:      Transmit Repeater Mode */
-#define XM_MD_SPOFF_I  (1L<<23)        /* Bit 23:      Send Pause on FIFO full */
-                                                                       /*              intern generated */
-#define XM_MD_LE_STW   (1L<<22)        /* Bit 22:      Rx Stat Word in Little Endian */
-#define XM_MD_TX_CONT  (1L<<21)        /* Bit 21:      Send Continuous */
-#define XM_MD_TX_PAUSE (1L<<20)        /* Bit 20: (sc) Send Pause Frame */
-#define XM_MD_ATS              (1L<<19)        /* Bit 19:      Append Time Stamp */
-#define XM_MD_SPOL_I   (1L<<18)        /* Bit 18:      Send Pause on Low */
-                                                                       /*              intern generated */
-#define XM_MD_SPOH_I   (1L<<17)        /* Bit 17:      Send Pause on High */
-                                                                       /*              intern generated */
-#define XM_MD_CAP              (1L<<16)        /* Bit 16:      Check Address Pair */
-#define XM_MD_ENA_HASH (1L<<15)        /* Bit 15:      Enable Hashing */
-#define XM_MD_CSA              (1L<<14)        /* Bit 14:      Check Station Address */
-#define XM_MD_CAA              (1L<<13)        /* Bit 13:      Check Address Array */
-#define XM_MD_RX_MCTRL (1L<<12)        /* Bit 12:      Rx MAC Control Frame */
-#define XM_MD_RX_RUNT  (1L<<11)        /* Bit 11:      Rx Runt Frames */
-#define XM_MD_RX_IRLE  (1L<<10)        /* Bit 10:      Rx in Range Len Err Frame */
-#define XM_MD_RX_LONG  (1L<<9)         /* Bit  9:      Rx Long Frame */
-#define XM_MD_RX_CRCE  (1L<<8)         /* Bit  8:      Rx CRC Error Frame */
-#define XM_MD_RX_ERR   (1L<<7)         /* Bit  7:      Rx Error Frame */
-#define XM_MD_DIS_UC   (1L<<6)         /* Bit  6:      Disable Rx Unicast */
-#define XM_MD_DIS_MC   (1L<<5)         /* Bit  5:      Disable Rx Multicast */
-#define XM_MD_DIS_BC   (1L<<4)         /* Bit  4:      Disable Rx Broadcast */
-#define XM_MD_ENA_PROM (1L<<3)         /* Bit  3:      Enable Promiscuous */
-#define XM_MD_ENA_BE   (1L<<2)         /* Bit  2:      Enable Big Endian */
-#define XM_MD_FTF              (1L<<1)         /* Bit  1: (sc) Flush Tx FIFO */
-#define XM_MD_FRF              (1L<<0)         /* Bit  0: (sc) Flush Rx FIFO */
-
-#define XM_PAUSE_MODE  (XM_MD_SPOE_E | XM_MD_SPOL_I | XM_MD_SPOH_I)
-#define XM_DEF_MODE            (XM_MD_RX_RUNT | XM_MD_RX_IRLE | XM_MD_RX_LONG |\
-                               XM_MD_RX_CRCE | XM_MD_RX_ERR | XM_MD_CSA | XM_MD_CAA)
-
-/*     XM_STAT_CMD     16 bit r/w      Statistics Command Register */
-                                                               /* Bit 16..6:   reserved */
-#define XM_SC_SNP_RXC  (1<<5)  /* Bit  5: (sc) Snap Rx Counters */
-#define XM_SC_SNP_TXC  (1<<4)  /* Bit  4: (sc) Snap Tx Counters */
-#define XM_SC_CP_RXC   (1<<3)  /* Bit  3:      Copy Rx Counters Continuously */
-#define XM_SC_CP_TXC   (1<<2)  /* Bit  2:      Copy Tx Counters Continuously */
-#define XM_SC_CLR_RXC  (1<<1)  /* Bit  1: (sc) Clear Rx Counters */
-#define XM_SC_CLR_TXC  (1<<0)  /* Bit  0: (sc) Clear Tx Counters */
-
-
-/*     XM_RX_CNT_EV    32 bit r/o      Rx Counter Event Register */
-/*     XM_RX_EV_MSK    32 bit r/w      Rx Counter Event Mask */
-#define XMR_MAX_SZ_OV  (1UL<<31)       /* Bit 31:      1024-MaxSize Rx Cnt Ov*/
-#define XMR_1023B_OV   (1L<<30)        /* Bit 30:      512-1023Byte Rx Cnt Ov*/
-#define XMR_511B_OV            (1L<<29)        /* Bit 29:      256-511 Byte Rx Cnt Ov*/
-#define XMR_255B_OV            (1L<<28)        /* Bit 28:      128-255 Byte Rx Cnt Ov*/
-#define XMR_127B_OV            (1L<<27)        /* Bit 27:      65-127 Byte Rx Cnt Ov */
-#define XMR_64B_OV             (1L<<26)        /* Bit 26:      64 Byte Rx Cnt Ov */
-#define XMR_UTIL_OV            (1L<<25)        /* Bit 25:      Rx Util Cnt Overflow */
-#define XMR_UTIL_UR            (1L<<24)        /* Bit 24:      Rx Util Cnt Underrun */
-#define XMR_CEX_ERR_OV (1L<<23)        /* Bit 23:      CEXT Err Cnt Ov */
-                                                                       /* Bit 22:      reserved */
-#define XMR_FCS_ERR_OV (1L<<21)        /* Bit 21:      Rx FCS Error Cnt Ov */
-#define XMR_LNG_ERR_OV (1L<<20)        /* Bit 20:      Rx too Long Err Cnt Ov*/
-#define XMR_RUNT_OV            (1L<<19)        /* Bit 19:      Runt Event Cnt Ov */
-#define XMR_SHT_ERR_OV (1L<<18)        /* Bit 18:      Rx Short Ev Err Cnt Ov*/
-#define XMR_SYM_ERR_OV (1L<<17)        /* Bit 17:      Rx Sym Err Cnt Ov */
-                                                                       /* Bit 16:      reserved */
-#define XMR_CAR_ERR_OV (1L<<15)        /* Bit 15:      Rx Carr Ev Err Cnt Ov */
-#define XMR_JAB_PKT_OV (1L<<14)        /* Bit 14:      Rx Jabb Packet Cnt Ov */
-#define XMR_FIFO_OV            (1L<<13)        /* Bit 13:      Rx FIFO Ov Ev Cnt Ov */
-#define XMR_FRA_ERR_OV (1L<<12)        /* Bit 12:      Rx Framing Err Cnt Ov */
-#define XMR_FMISS_OV   (1L<<11)        /* Bit 11:      Rx Missed Ev Cnt Ov */
-#define XMR_BURST              (1L<<10)        /* Bit 10:      Rx Burst Event Cnt Ov */
-#define XMR_INV_MOC            (1L<<9)         /* Bit  9:      Rx with inv. MAC OC Ov*/
-#define XMR_INV_MP             (1L<<8)         /* Bit  8:      Rx inv Pause Frame Ov */
-#define XMR_MCTRL_OV   (1L<<7)         /* Bit  7:      Rx MAC Ctrl-F Cnt Ov */
-#define XMR_MPAUSE_OV  (1L<<6)         /* Bit  6:      Rx Pause MAC Ctrl-F Ov*/
-#define XMR_UC_OK_OV   (1L<<5)         /* Bit  5:      Rx Unicast Frame CntOv*/
-#define XMR_MC_OK_OV   (1L<<4)         /* Bit  4:      Rx Multicast Cnt Ov */
-#define XMR_BC_OK_OV   (1L<<3)         /* Bit  3:      Rx Broadcast Cnt Ov */
-#define XMR_OK_LO_OV   (1L<<2)         /* Bit  2:      Octets Rx OK Low CntOv*/
-#define XMR_OK_HI_OV   (1L<<1)         /* Bit  1:      Octets Rx OK Hi Cnt Ov*/
-#define XMR_OK_OV              (1L<<0)         /* Bit  0:      Frames Received Ok Ov */
-
-#define XMR_DEF_MSK            (XMR_OK_LO_OV | XMR_OK_HI_OV)
-
-/*     XM_TX_CNT_EV    32 bit r/o      Tx Counter Event Register */
-/*     XM_TX_EV_MSK    32 bit r/w      Tx Counter Event Mask */
-                                                                       /* Bit 31..26:  reserved */
-#define XMT_MAX_SZ_OV  (1L<<25)        /* Bit 25:      1024-MaxSize Tx Cnt Ov*/
-#define XMT_1023B_OV   (1L<<24)        /* Bit 24:      512-1023Byte Tx Cnt Ov*/
-#define XMT_511B_OV            (1L<<23)        /* Bit 23:      256-511 Byte Tx Cnt Ov*/
-#define XMT_255B_OV            (1L<<22)        /* Bit 22:      128-255 Byte Tx Cnt Ov*/
-#define XMT_127B_OV            (1L<<21)        /* Bit 21:      65-127 Byte Tx Cnt Ov */
-#define XMT_64B_OV             (1L<<20)        /* Bit 20:      64 Byte Tx Cnt Ov */
-#define XMT_UTIL_OV            (1L<<19)        /* Bit 19:      Tx Util Cnt Overflow */
-#define XMT_UTIL_UR            (1L<<18)        /* Bit 18:      Tx Util Cnt Underrun */
-#define XMT_CS_ERR_OV  (1L<<17)        /* Bit 17:      Tx Carr Sen Err Cnt Ov*/
-#define XMT_FIFO_UR_OV (1L<<16)        /* Bit 16:      Tx FIFO Ur Ev Cnt Ov */
-#define XMT_EX_DEF_OV  (1L<<15)        /* Bit 15:      Tx Ex Deferall Cnt Ov */
-#define XMT_DEF                        (1L<<14)        /* Bit 14:      Tx Deferred Cnt Ov */
-#define XMT_LAT_COL_OV (1L<<13)        /* Bit 13:      Tx Late Col Cnt Ov */
-#define XMT_ABO_COL_OV (1L<<12)        /* Bit 12:      Tx abo dueto Ex Col Ov*/
-#define XMT_MUL_COL_OV (1L<<11)        /* Bit 11:      Tx Mult Col Cnt Ov */
-#define XMT_SNG_COL            (1L<<10)        /* Bit 10:      Tx Single Col Cnt Ov */
-#define XMT_MCTRL_OV   (1L<<9)         /* Bit  9:      Tx MAC Ctrl Counter Ov*/
-#define XMT_MPAUSE             (1L<<8)         /* Bit  8:      Tx Pause MAC Ctrl-F Ov*/
-#define XMT_BURST              (1L<<7)         /* Bit  7:      Tx Burst Event Cnt Ov */
-#define XMT_LONG               (1L<<6)         /* Bit  6:      Tx Long Frame Cnt Ov */
-#define XMT_UC_OK_OV   (1L<<5)         /* Bit  5:      Tx Unicast Cnt Ov */
-#define XMT_MC_OK_OV   (1L<<4)         /* Bit  4:      Tx Multicast Cnt Ov */
-#define XMT_BC_OK_OV   (1L<<3)         /* Bit  3:      Tx Broadcast Cnt Ov */
-#define XMT_OK_LO_OV   (1L<<2)         /* Bit  2:      Octets Tx OK Low CntOv*/
-#define XMT_OK_HI_OV   (1L<<1)         /* Bit  1:      Octets Tx OK Hi Cnt Ov*/
-#define XMT_OK_OV              (1L<<0)         /* Bit  0:      Frames Tx Ok Ov */
-
-#define XMT_DEF_MSK            (XMT_OK_LO_OV | XMT_OK_HI_OV)
-
-/*
- * Receive Frame Status Encoding
- */
-#define XMR_FS_LEN     (0x3fffUL<<18)  /* Bit 31..18:  Rx Frame Length */
-#define XMR_FS_2L_VLAN (1L<<17)        /* Bit 17:      tagged wh 2Lev VLAN ID*/
-#define XMR_FS_1L_VLAN (1L<<16)        /* Bit 16:      tagged wh 1Lev VLAN ID*/
-#define XMR_FS_BC              (1L<<15)        /* Bit 15:      Broadcast Frame */
-#define XMR_FS_MC              (1L<<14)        /* Bit 14:      Multicast Frame */
-#define XMR_FS_UC              (1L<<13)        /* Bit 13:      Unicast Frame */
-                                                                       /* Bit 12:      reserved */
-#define XMR_FS_BURST   (1L<<11)        /* Bit 11:      Burst Mode */
-#define XMR_FS_CEX_ERR (1L<<10)        /* Bit 10:      Carrier Ext. Error */
-#define XMR_FS_802_3   (1L<<9)         /* Bit  9:      802.3 Frame */
-#define XMR_FS_COL_ERR (1L<<8)         /* Bit  8:      Collision Error */
-#define XMR_FS_CAR_ERR (1L<<7)         /* Bit  7:      Carrier Event Error */
-#define XMR_FS_LEN_ERR (1L<<6)         /* Bit  6:      In-Range Length Error */
-#define XMR_FS_FRA_ERR (1L<<5)         /* Bit  5:      Framing Error */
-#define XMR_FS_RUNT            (1L<<4)         /* Bit  4:      Runt Frame */
-#define XMR_FS_LNG_ERR (1L<<3)         /* Bit  3:      Giant (Jumbo) Frame */
-#define XMR_FS_FCS_ERR (1L<<2)         /* Bit  2:      Frame Check Sequ Err */
-#define XMR_FS_ERR             (1L<<1)         /* Bit  1:      Frame Error */
-#define XMR_FS_MCTRL   (1L<<0)         /* Bit  0:      MAC Control Packet */
-
-/*
- * XMR_FS_ERR will be set if
- *     XMR_FS_FCS_ERR, XMR_FS_LNG_ERR, XMR_FS_RUNT,
- *     XMR_FS_FRA_ERR, XMR_FS_LEN_ERR, or XMR_FS_CEX_ERR
- * is set. XMR_FS_LNG_ERR and XMR_FS_LEN_ERR will issue
- * XMR_FS_ERR unless the corresponding bit in the Receive Command
- * Register is set.
- */
-#define XMR_FS_ANY_ERR XMR_FS_ERR
-
-/*----------------------------------------------------------------------------*/
-/*
- * XMAC-PHY Registers, indirect addressed over the XMAC
- */
-#define PHY_XMAC_CTRL          0x00    /* 16 bit r/w   PHY Control Register */
-#define PHY_XMAC_STAT          0x01    /* 16 bit r/w   PHY Status Register */
-#define PHY_XMAC_ID0           0x02    /* 16 bit r/o   PHY ID0 Register */
-#define PHY_XMAC_ID1           0x03    /* 16 bit r/o   PHY ID1 Register */
-#define PHY_XMAC_AUNE_ADV      0x04    /* 16 bit r/w   Auto-Neg. Advertisement */
-#define PHY_XMAC_AUNE_LP       0x05    /* 16 bit r/o   Link Partner Abi Reg */
-#define PHY_XMAC_AUNE_EXP      0x06    /* 16 bit r/o   Auto-Neg. Expansion Reg */
-#define PHY_XMAC_NEPG          0x07    /* 16 bit r/w   Next Page Register */
-#define PHY_XMAC_NEPG_LP       0x08    /* 16 bit r/o   Next Page Link P Reg */
-       /* 0x09 - 0x0e:         reserved */
-#define PHY_XMAC_EXT_STAT      0x0f    /* 16 bit r/o   Ext Status Register */
-#define PHY_XMAC_RES_ABI       0x10    /* 16 bit r/o   PHY Resolved Ability */
-
-/*----------------------------------------------------------------------------*/
-/*
- * Broadcom-PHY Registers, indirect addressed over XMAC
- */
-#define PHY_BCOM_CTRL          0x00    /* 16 bit r/w   PHY Control Register */
-#define PHY_BCOM_STAT          0x01    /* 16 bit r/o   PHY Status Register */
-#define PHY_BCOM_ID0           0x02    /* 16 bit r/o   PHY ID0 Register */
-#define PHY_BCOM_ID1           0x03    /* 16 bit r/o   PHY ID1 Register */
-#define PHY_BCOM_AUNE_ADV      0x04    /* 16 bit r/w   Auto-Neg. Advertisement */
-#define PHY_BCOM_AUNE_LP       0x05    /* 16 bit r/o   Link Part Ability Reg */
-#define PHY_BCOM_AUNE_EXP      0x06    /* 16 bit r/o   Auto-Neg. Expansion Reg */
-#define PHY_BCOM_NEPG          0x07    /* 16 bit r/w   Next Page Register */
-#define PHY_BCOM_NEPG_LP       0x08    /* 16 bit r/o   Next Page Link P Reg */
-       /* Broadcom-specific registers */
-#define PHY_BCOM_1000T_CTRL    0x09    /* 16 bit r/w   1000Base-T Ctrl Reg */
-#define PHY_BCOM_1000T_STAT    0x0a    /* 16 bit r/o   1000Base-T Status Reg */
-       /* 0x0b - 0x0e:         reserved */
-#define PHY_BCOM_EXT_STAT      0x0f    /* 16 bit r/o   Extended Status Reg */
-#define PHY_BCOM_P_EXT_CTRL    0x10    /* 16 bit r/w   PHY Extended Ctrl Reg */
-#define PHY_BCOM_P_EXT_STAT    0x11    /* 16 bit r/o   PHY Extended Stat Reg */
-#define PHY_BCOM_RE_CTR                0x12    /* 16 bit r/w   Receive Error Counter */
-#define PHY_BCOM_FC_CTR                0x13    /* 16 bit r/w   False Carr Sense Cnt */
-#define PHY_BCOM_RNO_CTR       0x14    /* 16 bit r/w   Receiver NOT_OK Cnt */
-       /* 0x15 - 0x17:         reserved */
-#define PHY_BCOM_AUX_CTRL      0x18    /* 16 bit r/w   Auxiliary Control Reg */
-#define PHY_BCOM_AUX_STAT      0x19    /* 16 bit r/o   Auxiliary Stat Summary */
-#define PHY_BCOM_INT_STAT      0x1a    /* 16 bit r/o   Interrupt Status Reg */
-#define PHY_BCOM_INT_MASK      0x1b    /* 16 bit r/w   Interrupt Mask Reg */
-       /* 0x1c:                reserved */
-       /* 0x1d - 0x1f:         test registers */
-
-/*----------------------------------------------------------------------------*/
-/*
- * Marvel-PHY Registers, indirect addressed over GMAC
- */
-#define PHY_MARV_CTRL          0x00    /* 16 bit r/w   PHY Control Register */
-#define PHY_MARV_STAT          0x01    /* 16 bit r/o   PHY Status Register */
-#define PHY_MARV_ID0           0x02    /* 16 bit r/o   PHY ID0 Register */
-#define PHY_MARV_ID1           0x03    /* 16 bit r/o   PHY ID1 Register */
-#define PHY_MARV_AUNE_ADV      0x04    /* 16 bit r/w   Auto-Neg. Advertisement */
-#define PHY_MARV_AUNE_LP       0x05    /* 16 bit r/o   Link Part Ability Reg */
-#define PHY_MARV_AUNE_EXP      0x06    /* 16 bit r/o   Auto-Neg. Expansion Reg */
-#define PHY_MARV_NEPG          0x07    /* 16 bit r/w   Next Page Register */
-#define PHY_MARV_NEPG_LP       0x08    /* 16 bit r/o   Next Page Link P Reg */
-       /* Marvel-specific registers */
-#define PHY_MARV_1000T_CTRL    0x09    /* 16 bit r/w   1000Base-T Ctrl Reg */
-#define PHY_MARV_1000T_STAT    0x0a    /* 16 bit r/o   1000Base-T Status Reg */
-       /* 0x0b - 0x0e:         reserved */
-#define PHY_MARV_EXT_STAT      0x0f    /* 16 bit r/o   Extended Status Reg */
-#define PHY_MARV_PHY_CTRL      0x10    /* 16 bit r/w   PHY Specific Ctrl Reg */
-#define PHY_MARV_PHY_STAT      0x11    /* 16 bit r/o   PHY Specific Stat Reg */
-#define PHY_MARV_INT_MASK      0x12    /* 16 bit r/w   Interrupt Mask Reg */
-#define PHY_MARV_INT_STAT      0x13    /* 16 bit r/o   Interrupt Status Reg */
-#define PHY_MARV_EXT_CTRL      0x14    /* 16 bit r/w   Ext. PHY Specific Ctrl */
-#define PHY_MARV_RXE_CNT       0x15    /* 16 bit r/w   Receive Error Counter */
-#define PHY_MARV_EXT_ADR       0x16    /* 16 bit r/w   Ext. Ad. for Cable Diag. */
-       /* 0x17:                reserved */
-#define PHY_MARV_LED_CTRL      0x18    /* 16 bit r/w   LED Control Reg */
-#define PHY_MARV_LED_OVER      0x19    /* 16 bit r/w   Manual LED Override Reg */
-#define PHY_MARV_EXT_CTRL_2    0x1a    /* 16 bit r/w   Ext. PHY Specific Ctrl 2 */
-#define PHY_MARV_EXT_P_STAT    0x1b    /* 16 bit r/w   Ext. PHY Spec. Stat Reg */
-#define PHY_MARV_CABLE_DIAG    0x1c    /* 16 bit r/o   Cable Diagnostic Reg */
-       /* 0x1d - 0x1f:         reserved */
-
-/*----------------------------------------------------------------------------*/
-/*
- * Level One-PHY Registers, indirect addressed over XMAC
- */
-#define PHY_LONE_CTRL          0x00    /* 16 bit r/w   PHY Control Register */
-#define PHY_LONE_STAT          0x01    /* 16 bit r/o   PHY Status Register */
-#define PHY_LONE_ID0           0x02    /* 16 bit r/o   PHY ID0 Register */
-#define PHY_LONE_ID1           0x03    /* 16 bit r/o   PHY ID1 Register */
-#define PHY_LONE_AUNE_ADV      0x04    /* 16 bit r/w   Auto-Neg. Advertisement */
-#define PHY_LONE_AUNE_LP       0x05    /* 16 bit r/o   Link Part Ability Reg */
-#define PHY_LONE_AUNE_EXP      0x06    /* 16 bit r/o   Auto-Neg. Expansion Reg */
-#define PHY_LONE_NEPG          0x07    /* 16 bit r/w   Next Page Register */
-#define PHY_LONE_NEPG_LP       0x08    /* 16 bit r/o   Next Page Link Partner*/
-       /* Level One-specific registers */
-#define PHY_LONE_1000T_CTRL    0x09    /* 16 bit r/w   1000Base-T Control Reg*/
-#define PHY_LONE_1000T_STAT    0x0a    /* 16 bit r/o   1000Base-T Status Reg */
-       /* 0x0b -0x0e:          reserved */
-#define PHY_LONE_EXT_STAT      0x0f    /* 16 bit r/o   Extended Status Reg */
-#define PHY_LONE_PORT_CFG      0x10    /* 16 bit r/w   Port Configuration Reg*/
-#define PHY_LONE_Q_STAT                0x11    /* 16 bit r/o   Quick Status Reg */
-#define PHY_LONE_INT_ENAB      0x12    /* 16 bit r/w   Interrupt Enable Reg */
-#define PHY_LONE_INT_STAT      0x13    /* 16 bit r/o   Interrupt Status Reg */
-#define PHY_LONE_LED_CFG       0x14    /* 16 bit r/w   LED Configuration Reg */
-#define PHY_LONE_PORT_CTRL     0x15    /* 16 bit r/w   Port Control Reg */
-#define PHY_LONE_CIM           0x16    /* 16 bit r/o   CIM Reg */
-       /* 0x17 -0x1c:          reserved */
-
-/*----------------------------------------------------------------------------*/
-/*
- * National-PHY Registers, indirect addressed over XMAC
- */
-#define PHY_NAT_CTRL           0x00    /* 16 bit r/w   PHY Control Register */
-#define PHY_NAT_STAT           0x01    /* 16 bit r/w   PHY Status Register */
-#define PHY_NAT_ID0                    0x02    /* 16 bit r/o   PHY ID0 Register */
-#define PHY_NAT_ID1                    0x03    /* 16 bit r/o   PHY ID1 Register */
-#define PHY_NAT_AUNE_ADV       0x04    /* 16 bit r/w   Auto-Neg. Advertisement */
-#define PHY_NAT_AUNE_LP                0x05    /* 16 bit r/o   Link Partner Ability Reg */
-#define PHY_NAT_AUNE_EXP       0x06    /* 16 bit r/o   Auto-Neg. Expansion Reg */
-#define PHY_NAT_NEPG           0x07    /* 16 bit r/w   Next Page Register */
-#define PHY_NAT_NEPG_LP                0x08    /* 16 bit r/o   Next Page Link Partner Reg */
-       /* National-specific registers */
-#define PHY_NAT_1000T_CTRL     0x09    /* 16 bit r/w   1000Base-T Control Reg */
-#define PHY_NAT_1000T_STAT     0x0a    /* 16 bit r/o   1000Base-T Status Reg */
-       /* 0x0b -0x0e:          reserved */
-#define PHY_NAT_EXT_STAT       0x0f    /* 16 bit r/o   Extended Status Register */
-#define PHY_NAT_EXT_CTRL1      0x10    /* 16 bit r/o   Extended Control Reg1 */
-#define PHY_NAT_Q_STAT1                0x11    /* 16 bit r/o   Quick Status Reg1 */
-#define PHY_NAT_10B_OP         0x12    /* 16 bit r/o   10Base-T Operations Reg */
-#define PHY_NAT_EXT_CTRL2      0x13    /* 16 bit r/o   Extended Control Reg1 */
-#define PHY_NAT_Q_STAT2                0x14    /* 16 bit r/o   Quick Status Reg2 */
-       /* 0x15 -0x18:          reserved */
-#define PHY_NAT_PHY_ADDR       0x19    /* 16 bit r/o   PHY Address Register */
-
-
-/*----------------------------------------------------------------------------*/
-
-/*
- * PHY bit definitions
- * Bits defined as PHY_X_..., PHY_B_..., PHY_L_... or PHY_N_... are
- * Xmac/Broadcom/LevelOne/National-specific.
- * All other are general.
- */
-
-/*****  PHY_XMAC_CTRL  16 bit r/w      PHY Control Register *****/
-/*****  PHY_BCOM_CTRL  16 bit r/w      PHY Control Register *****/
-/*****  PHY_LONE_CTRL  16 bit r/w      PHY Control Register *****/
-#define PHY_CT_RESET   (1<<15) /* Bit 15: (sc) clear all PHY related regs */
-#define PHY_CT_LOOP            (1<<14) /* Bit 14:      enable Loopback over PHY */
-#define PHY_CT_SPS_LSB (1<<13) /* Bit 13: (BC,L1) Speed select, lower bit */
-#define PHY_CT_ANE             (1<<12) /* Bit 12:      Auto-Negotiation Enabled */
-#define PHY_CT_PDOWN   (1<<11) /* Bit 11: (BC,L1) Power Down Mode */
-#define PHY_CT_ISOL            (1<<10) /* Bit 10: (BC,L1) Isolate Mode */
-#define PHY_CT_RE_CFG  (1<<9)  /* Bit  9: (sc) Restart Auto-Negotiation */
-#define PHY_CT_DUP_MD  (1<<8)  /* Bit  8:      Duplex Mode */
-#define PHY_CT_COL_TST (1<<7)  /* Bit  7: (BC,L1) Collision Test enabled */
-#define PHY_CT_SPS_MSB (1<<6)  /* Bit  6: (BC,L1) Speed select, upper bit */
-                                                               /* Bit  5..0:   reserved */
-
-#define PHY_CT_SP1000  PHY_CT_SPS_MSB  /* enable speed of 1000 Mbps */
-#define PHY_CT_SP100   PHY_CT_SPS_LSB  /* enable speed of  100 Mbps */
-#define PHY_CT_SP10            (0)                             /* enable speed of   10 Mbps */
-
-
-/*****  PHY_XMAC_STAT  16 bit r/w      PHY Status Register *****/
-/*****  PHY_BCOM_STAT  16 bit r/w      PHY Status Register *****/
-/*****  PHY_MARV_STAT  16 bit r/w      PHY Status Register *****/
-/*****  PHY_LONE_STAT  16 bit r/w      PHY Status Register *****/
-                                                               /* Bit 15..9:   reserved */
-                               /*      (BC/L1) 100/10 Mbps cap bits ignored*/
-#define PHY_ST_EXT_ST  (1<<8)  /* Bit  8:      Extended Status Present */
-                                                               /* Bit  7:      reserved */
-#define PHY_ST_PRE_SUP (1<<6)  /* Bit  6: (BC/L1) preamble suppression */
-#define PHY_ST_AN_OVER (1<<5)  /* Bit  5:      Auto-Negotiation Over */
-#define PHY_ST_REM_FLT (1<<4)  /* Bit  4:      Remote Fault Condition Occured */
-#define PHY_ST_AN_CAP  (1<<3)  /* Bit  3:      Auto-Negotiation Capability */
-#define PHY_ST_LSYNC   (1<<2)  /* Bit  2:      Link Synchronized */
-#define PHY_ST_JAB_DET (1<<1)  /* Bit  1: (BC/L1) Jabber Detected */
-#define PHY_ST_EXT_REG (1<<0)  /* Bit  0:      Extended Register available */
-
-
-/***** PHY_XMAC_ID1            16 bit r/o      PHY ID1 Register */
-/***** PHY_BCOM_ID1            16 bit r/o      PHY ID1 Register */
-/***** PHY_MARV_ID1            16 bit r/o      PHY ID1 Register */
-/***** PHY_LONE_ID1            16 bit r/o      PHY ID1 Register */
-#define PHY_I1_OUI_MSK (0x3f<<10)      /* Bit 15..10:  Organization Unique ID */
-#define PHY_I1_MOD_NUM (0x3f<<4)       /* Bit  9.. 4:  Model Number */
-#define PHY_I1_REV_MSK 0x0f            /* Bit  3.. 0:  Revision Number */
-
-/* different Broadcom PHY Ids */
-#define PHY_BCOM_ID1_A1                0x6041
-#define PHY_BCOM_ID1_B2                0x6043
-#define PHY_BCOM_ID1_C0                0x6044
-#define PHY_BCOM_ID1_C5                0x6047
-
-
-/*****  PHY_XMAC_AUNE_ADV      16 bit r/w      Auto-Negotiation Advertisement *****/
-/*****  PHY_XMAC_AUNE_LP       16 bit r/o      Link Partner Ability Reg *****/
-#define PHY_AN_NXT_PG  (1<<15) /* Bit 15:      Request Next Page */
-#define PHY_X_AN_ACK   (1<<14) /* Bit 14: (ro) Acknowledge Received */
-#define PHY_X_AN_RFB   (3<<12) /* Bit 13..12:  Remote Fault Bits */
-                                                               /* Bit 11.. 9:  reserved */
-#define PHY_X_AN_PAUSE (3<<7)  /* Bit  8.. 7:  Pause Bits */
-#define PHY_X_AN_HD            (1<<6)  /* Bit  6:      Half Duplex */
-#define PHY_X_AN_FD            (1<<5)  /* Bit  5:      Full Duplex */
-                                                               /* Bit  4.. 0:  reserved */
-
-/*****  PHY_BCOM_AUNE_ADV      16 bit r/w      Auto-Negotiation Advertisement *****/
-/*****  PHY_BCOM_AUNE_LP       16 bit r/o      Link Partner Ability Reg *****/
-/*     PHY_AN_NXT_PG           (see XMAC) Bit 15:      Request Next Page */
-                                                               /* Bit 14:      reserved */
-#define PHY_B_AN_RF            (1<<13) /* Bit 13:      Remote Fault */
-                                                               /* Bit 12:      reserved */
-#define PHY_B_AN_ASP   (1<<11) /* Bit 11:      Asymmetric Pause */
-#define PHY_B_AN_PC            (1<<10) /* Bit 10:      Pause Capable */
-                                                               /* Bit  9..5:   100/10 BT cap bits ingnored */
-#define PHY_B_AN_SEL   0x1f    /* Bit 4..0:    Selector Field, 00001=Ethernet*/
-
-/*****  PHY_LONE_AUNE_ADV      16 bit r/w      Auto-Negotiation Advertisement *****/
-/*****  PHY_LONE_AUNE_LP       16 bit r/o      Link Partner Ability Reg *****/
-/*     PHY_AN_NXT_PG           (see XMAC) Bit 15:      Request Next Page */
-                                                               /* Bit 14:      reserved */
-#define PHY_L_AN_RF            (1<<13) /* Bit 13:      Remote Fault */
-                                                               /* Bit 12:      reserved */
-#define PHY_L_AN_ASP   (1<<11) /* Bit 11:      Asymmetric Pause */
-#define PHY_L_AN_PC            (1<<10) /* Bit 10:      Pause Capable */
-                                                               /* Bit  9..5:   100/10 BT cap bits ingnored */
-#define PHY_L_AN_SEL   0x1f    /* Bit 4..0:    Selector Field, 00001=Ethernet*/
-
-/*****  PHY_NAT_AUNE_ADV       16 bit r/w      Auto-Negotiation Advertisement *****/
-/*****  PHY_NAT_AUNE_LP                16 bit r/o      Link Partner Ability Reg *****/
-/*     PHY_AN_NXT_PG           (see XMAC) Bit 15:      Request Next Page */
-                                                               /* Bit 14:      reserved */
-#define PHY_N_AN_RF            (1<<13) /* Bit 13:      Remote Fault */
-                                                               /* Bit 12:      reserved */
-#define PHY_N_AN_100F  (1<<11) /* Bit 11:      100Base-T2 FD Support */
-#define PHY_N_AN_100H  (1<<10) /* Bit 10:      100Base-T2 HD Support */
-                                                               /* Bit  9..5:   100/10 BT cap bits ingnored */
-#define PHY_N_AN_SEL   0x1f    /* Bit 4..0:    Selector Field, 00001=Ethernet*/
-
-/* field type definition for PHY_x_AN_SEL */
-#define PHY_SEL_TYPE   0x01    /* 00001 = Ethernet */
-
-/*****  PHY_XMAC_AUNE_EXP      16 bit r/o      Auto-Negotiation Expansion Reg *****/
-                                                               /* Bit 15..4:   reserved */
-#define PHY_AN_LP_NP   (1<<3)  /* Bit  3:      Link Partner can Next Page */
-#define PHY_AN_LOC_NP  (1<<2)  /* Bit  2:      Local PHY can Next Page */
-#define PHY_AN_RX_PG   (1<<1)  /* Bit  1:      Page Received */
-                                                               /* Bit  0:      reserved */
-
-/*****  PHY_BCOM_AUNE_EXP      16 bit r/o      Auto-Negotiation Expansion Reg *****/
-                                                               /* Bit 15..5:   reserved */
-#define PHY_B_AN_PDF   (1<<4)  /* Bit  4:      Parallel Detection Fault */
-/*     PHY_AN_LP_NP            (see XMAC) Bit  3:      Link Partner can Next Page */
-/*     PHY_AN_LOC_NP           (see XMAC) Bit  2:      Local PHY can Next Page */
-/*     PHY_AN_RX_PG            (see XMAC) Bit  1:      Page Received */
-#define PHY_B_AN_LP_CAP        (1<<0)  /* Bit  0:      Link Partner Auto-Neg. Cap. */
-
-/*****  PHY_LONE_AUNE_EXP      16 bit r/o      Auto-Negotiation Expansion Reg *****/
-#define PHY_L_AN_BP            (1<<5)  /* Bit  5:      Base Page Indication */
-#define PHY_L_AN_PDF   (1<<4)  /* Bit  4:      Parallel Detection Fault */
-/*     PHY_AN_LP_NP            (see XMAC) Bit  3:      Link Partner can Next Page */
-/*     PHY_AN_LOC_NP           (see XMAC) Bit  2:      Local PHY can Next Page */
-/*     PHY_AN_RX_PG            (see XMAC) Bit  1:      Page Received */
-#define PHY_B_AN_LP_CAP        (1<<0)  /* Bit  0:      Link Partner Auto-Neg. Cap. */
-
-
-/*****  PHY_XMAC_NEPG          16 bit r/w      Next Page Register *****/
-/*****  PHY_BCOM_NEPG          16 bit r/w      Next Page Register *****/
-/*****  PHY_LONE_NEPG          16 bit r/w      Next Page Register *****/
-/*****  PHY_XMAC_NEPG_LP       16 bit r/o      Next Page Link Partner *****/
-/*****  PHY_BCOM_NEPG_LP       16 bit r/o      Next Page Link Partner *****/
-/*****  PHY_LONE_NEPG_LP       16 bit r/o      Next Page Link Partner *****/
-#define PHY_NP_MORE            (1<<15) /* Bit 15:      More, Next Pages to follow */
-#define PHY_NP_ACK1            (1<<14) /* Bit 14: (ro) Ack 1, for receiving a message*/
-#define PHY_NP_MSG_VAL (1<<13) /* Bit 13:      Message Page valid */
-#define PHY_NP_ACK2            (1<<12) /* Bit 12:      Ack 2, comply with msg content*/
-#define PHY_NP_TOG             (1<<11) /* Bit 11:      Toggle Bit, ensure sync */
-#define PHY_NP_MSG             0x07ff  /* Bit 10..0:   Message from/to Link Partner */
-
-/*
- * XMAC-Specific
- */
-/*****  PHY_XMAC_EXT_STAT      16 bit r/w      Extended Status Register *****/
-#define PHY_X_EX_FD            (1<<15) /* Bit 15:      Device Supports Full Duplex */
-#define PHY_X_EX_HD            (1<<14) /* Bit 14:      Device Supports Half Duplex */
-                                                               /* Bit 13..0:   reserved */
-
-/*****  PHY_XMAC_RES_ABI       16 bit r/o      PHY Resolved Ability *****/
-                                                               /* Bit 15..9:   reserved */
-#define PHY_X_RS_PAUSE (3<<7)  /* Bit  8..7:   selected Pause Mode */
-#define PHY_X_RS_HD            (1<<6)  /* Bit  6:      Half Duplex Mode selected */
-#define PHY_X_RS_FD            (1<<5)  /* Bit  5:      Full Duplex Mode selected */
-#define PHY_X_RS_ABLMIS (1<<4) /* Bit  4:      duplex or pause cap mismatch */
-#define PHY_X_RS_PAUMIS (1<<3) /* Bit  3:      pause capability missmatch */
-                                                               /* Bit  2..0:   reserved */
-/*
- * Remote Fault Bits (PHY_X_AN_RFB) encoding
- */
-#define X_RFB_OK               (0<<12) /* Bit 13..12   No errors, Link OK */
-#define X_RFB_LF               (1<<12) /* Bit 13..12   Link Failure */
-#define X_RFB_OFF              (2<<12) /* Bit 13..12   Offline */
-#define X_RFB_AN_ERR   (3<<12) /* Bit 13..12   Auto-Negotiation Error */
-
-/*
- * Pause Bits (PHY_X_AN_PAUSE and PHY_X_RS_PAUSE) encoding
- */
-#define PHY_X_P_NO_PAUSE       (0<<7)  /* Bit  8..7:   no Pause Mode */
-#define PHY_X_P_SYM_MD         (1<<7)  /* Bit  8..7:   symmetric Pause Mode */
-#define PHY_X_P_ASYM_MD                (2<<7)  /* Bit  8..7:   asymmetric Pause Mode */
-#define PHY_X_P_BOTH_MD                (3<<7)  /* Bit  8..7:   both Pause Mode */
-
-
-/*
- * Broadcom-Specific
- */
-/*****  PHY_BCOM_1000T_CTRL    16 bit r/w      1000Base-T Control Reg *****/
-#define PHY_B_1000C_TEST       (7<<13) /* Bit 15..13:  Test Modes */
-#define PHY_B_1000C_MSE                (1<<12) /* Bit 12:      Master/Slave Enable */
-#define PHY_B_1000C_MSC                (1<<11) /* Bit 11:      M/S Configuration */
-#define PHY_B_1000C_RD         (1<<10) /* Bit 10:      Repeater/DTE */
-#define PHY_B_1000C_AFD                (1<<9)  /* Bit  9:      Advertise Full Duplex */
-#define PHY_B_1000C_AHD                (1<<8)  /* Bit  8:      Advertise Half Duplex */
-                                                                       /* Bit  7..0:   reserved */
-
-/*****  PHY_BCOM_1000T_STAT    16 bit r/o      1000Base-T Status Reg *****/
-#define PHY_B_1000S_MSF                (1<<15) /* Bit 15:      Master/Slave Fault */
-#define PHY_B_1000S_MSR                (1<<14) /* Bit 14:      Master/Slave Result */
-#define PHY_B_1000S_LRS                (1<<13) /* Bit 13:      Local Receiver Status */
-#define PHY_B_1000S_RRS                (1<<12) /* Bit 12:      Remote Receiver Status */
-#define PHY_B_1000S_LP_FD      (1<<11) /* Bit 11:      Link Partner can FD */
-#define PHY_B_1000S_LP_HD      (1<<10) /* Bit 10:      Link Partner can HD */
-                                                                       /* Bit  9..8:   reserved */
-#define PHY_B_1000S_IEC                0xff    /* Bit  7..0:   Idle Error Count */
-
-/*****  PHY_BCOM_EXT_STAT      16 bit r/o      Extended Status Register *****/
-#define PHY_B_ES_X_FD_CAP      (1<<15) /* Bit 15:      1000Base-X FD capable */
-#define PHY_B_ES_X_HD_CAP      (1<<14) /* Bit 14:      1000Base-X HD capable */
-#define PHY_B_ES_T_FD_CAP      (1<<13) /* Bit 13:      1000Base-T FD capable */
-#define PHY_B_ES_T_HD_CAP      (1<<12) /* Bit 12:      1000Base-T HD capable */
-                                                                       /* Bit 11..0:   reserved */
-
-/*****  PHY_BCOM_P_EXT_CTRL    16 bit r/w      PHY Extended Control Reg *****/
-#define PHY_B_PEC_MAC_PHY      (1<<15) /* Bit 15:      10BIT/GMI-Interface */
-#define PHY_B_PEC_DIS_CROSS    (1<<14) /* Bit 14:      Disable MDI Crossover */
-#define PHY_B_PEC_TX_DIS       (1<<13) /* Bit 13:      Tx output Disabled */
-#define PHY_B_PEC_INT_DIS      (1<<12) /* Bit 12:      Interrupts Disabled */
-#define PHY_B_PEC_F_INT                (1<<11) /* Bit 11:      Force Interrupt */
-#define PHY_B_PEC_BY_45                (1<<10) /* Bit 10:      Bypass 4B5B-Decoder */
-#define PHY_B_PEC_BY_SCR       (1<<9)  /* Bit  9:      Bypass Scrambler */
-#define PHY_B_PEC_BY_MLT3      (1<<8)  /* Bit  8:      Bypass MLT3 Encoder */
-#define PHY_B_PEC_BY_RXA       (1<<7)  /* Bit  7:      Bypass Rx Alignm. */
-#define PHY_B_PEC_RES_SCR      (1<<6)  /* Bit  6:      Reset Scrambler */
-#define PHY_B_PEC_EN_LTR       (1<<5)  /* Bit  5:      Ena LED Traffic Mode */
-#define PHY_B_PEC_LED_ON       (1<<4)  /* Bit  4:      Force LED's on */
-#define PHY_B_PEC_LED_OFF      (1<<3)  /* Bit  3:      Force LED's off */
-#define PHY_B_PEC_EX_IPG       (1<<2)  /* Bit  2:      Extend Tx IPG Mode */
-#define PHY_B_PEC_3_LED                (1<<1)  /* Bit  1:      Three Link LED mode */
-#define PHY_B_PEC_HIGH_LA      (1<<0)  /* Bit  0:      GMII FIFO Elasticy */
-
-/*****  PHY_BCOM_P_EXT_STAT    16 bit r/o      PHY Extended Status Reg *****/
-                                                                       /* Bit 15..14:  reserved */
-#define PHY_B_PES_CROSS_STAT   (1<<13) /* Bit 13:      MDI Crossover Status */
-#define PHY_B_PES_INT_STAT     (1<<12) /* Bit 12:      Interrupt Status */
-#define PHY_B_PES_RRS          (1<<11) /* Bit 11:      Remote Receiver Stat. */
-#define PHY_B_PES_LRS          (1<<10) /* Bit 10:      Local Receiver Stat. */
-#define PHY_B_PES_LOCKED       (1<<9)  /* Bit  9:      Locked */
-#define PHY_B_PES_LS           (1<<8)  /* Bit  8:      Link Status */
-#define PHY_B_PES_RF           (1<<7)  /* Bit  7:      Remote Fault */
-#define PHY_B_PES_CE_ER                (1<<6)  /* Bit  6:      Carrier Ext Error */
-#define PHY_B_PES_BAD_SSD      (1<<5)  /* Bit  5:      Bad SSD */
-#define PHY_B_PES_BAD_ESD      (1<<4)  /* Bit  4:      Bad ESD */
-#define PHY_B_PES_RX_ER                (1<<3)  /* Bit  3:      Receive Error */
-#define PHY_B_PES_TX_ER                (1<<2)  /* Bit  2:      Transmit Error */
-#define PHY_B_PES_LOCK_ER      (1<<1)  /* Bit  1:      Lock Error */
-#define PHY_B_PES_MLT3_ER      (1<<0)  /* Bit  0:      MLT3 code Error */
-
-/*****  PHY_BCOM_FC_CTR                16 bit r/w      False Carrier Counter *****/
-                                                                       /* Bit 15..8:   reserved */
-#define PHY_B_FC_CTR           0xff    /* Bit  7..0:   False Carrier Counter */
-
-/*****  PHY_BCOM_RNO_CTR       16 bit r/w      Receive NOT_OK Counter *****/
-#define PHY_B_RC_LOC_MSK       0xff00  /* Bit 15..8:   Local Rx NOT_OK cnt */
-#define PHY_B_RC_REM_MSK       0x00ff  /* Bit  7..0:   Remote Rx NOT_OK cnt */
-
-/*****  PHY_BCOM_AUX_CTRL      16 bit r/w      Auxiliary Control Reg *****/
-#define PHY_B_AC_L_SQE         (1<<15) /* Bit 15:      Low Squelch */
-#define PHY_B_AC_LONG_PACK     (1<<14) /* Bit 14:      Rx Long Packets */
-#define PHY_B_AC_ER_CTRL       (3<<12) /* Bit 13..12:  Edgerate Control */
-                                                                       /* Bit 11:      reserved */
-#define PHY_B_AC_TX_TST                (1<<10) /* Bit 10:      Tx test bit, always 1 */
-                                                                       /* Bit  9.. 8:  reserved */
-#define PHY_B_AC_DIS_PRF       (1<<7)  /* Bit  7:      dis part resp filter */
-                                                                       /* Bit  6:      reserved */
-#define PHY_B_AC_DIS_PM                (1<<5)  /* Bit  5:      dis power management */
-                                                                       /* Bit  4:      reserved */
-#define PHY_B_AC_DIAG          (1<<3)  /* Bit  3:      Diagnostic Mode */
-                                                                       /* Bit  2.. 0:  reserved */
-
-/*****  PHY_BCOM_AUX_STAT      16 bit r/o      Auxiliary Status Reg *****/
-#define PHY_B_AS_AN_C          (1<<15) /* Bit 15:      AutoNeg complete */
-#define PHY_B_AS_AN_CA         (1<<14) /* Bit 14:      AN Complete Ack */
-#define PHY_B_AS_ANACK_D       (1<<13) /* Bit 13:      AN Ack Detect */
-#define PHY_B_AS_ANAB_D                (1<<12) /* Bit 12:      AN Ability Detect */
-#define PHY_B_AS_NPW           (1<<11) /* Bit 11:      AN Next Page Wait */
-#define PHY_B_AS_AN_RES_MSK    (7<<8)  /* Bit 10..8:   AN HDC */
-#define PHY_B_AS_PDF           (1<<7)  /* Bit  7:      Parallel Detect. Fault */
-#define PHY_B_AS_RF                    (1<<6)  /* Bit  6:      Remote Fault */
-#define PHY_B_AS_ANP_R         (1<<5)  /* Bit  5:      AN Page Received */
-#define PHY_B_AS_LP_ANAB       (1<<4)  /* Bit  4:      LP AN Ability */
-#define PHY_B_AS_LP_NPAB       (1<<3)  /* Bit  3:      LP Next Page Ability */
-#define PHY_B_AS_LS                    (1<<2)  /* Bit  2:      Link Status */
-#define PHY_B_AS_PRR           (1<<1)  /* Bit  1:      Pause Resolution-Rx */
-#define PHY_B_AS_PRT           (1<<0)  /* Bit  0:      Pause Resolution-Tx */
-
-#define PHY_B_AS_PAUSE_MSK     (PHY_B_AS_PRR | PHY_B_AS_PRT)
-
-/*****  PHY_BCOM_INT_STAT      16 bit r/o      Interrupt Status Reg *****/
-/*****  PHY_BCOM_INT_MASK      16 bit r/w      Interrupt Mask Reg *****/
-                                                                       /* Bit 15:      reserved */
-#define PHY_B_IS_PSE           (1<<14) /* Bit 14:      Pair Swap Error */
-#define PHY_B_IS_MDXI_SC       (1<<13) /* Bit 13:      MDIX Status Change */
-#define PHY_B_IS_HCT           (1<<12) /* Bit 12:      counter above 32k */
-#define PHY_B_IS_LCT           (1<<11) /* Bit 11:      counter above 128 */
-#define PHY_B_IS_AN_PR         (1<<10) /* Bit 10:      Page Received */
-#define PHY_B_IS_NO_HDCL       (1<<9)  /* Bit  9:      No HCD Link */
-#define PHY_B_IS_NO_HDC                (1<<8)  /* Bit  8:      No HCD */
-#define PHY_B_IS_NEG_USHDC     (1<<7)  /* Bit  7:      Negotiated Unsup. HCD */
-#define PHY_B_IS_SCR_S_ER      (1<<6)  /* Bit  6:      Scrambler Sync Error */
-#define PHY_B_IS_RRS_CHANGE    (1<<5)  /* Bit  5:      Remote Rx Stat Change */
-#define PHY_B_IS_LRS_CHANGE    (1<<4)  /* Bit  4:      Local Rx Stat Change */
-#define PHY_B_IS_DUP_CHANGE    (1<<3)  /* Bit  3:      Duplex Mode Change */
-#define PHY_B_IS_LSP_CHANGE    (1<<2)  /* Bit  2:      Link Speed Change */
-#define PHY_B_IS_LST_CHANGE    (1<<1)  /* Bit  1:      Link Status Changed */
-#define PHY_B_IS_CRC_ER                (1<<0)  /* Bit  0:      CRC Error */
-
-#define PHY_B_DEF_MSK  (~(PHY_B_IS_AN_PR | PHY_B_IS_LST_CHANGE))
-
-/* Pause Bits (PHY_B_AN_ASP and PHY_B_AN_PC) encoding */
-#define PHY_B_P_NO_PAUSE       (0<<10) /* Bit 11..10:  no Pause Mode */
-#define PHY_B_P_SYM_MD         (1<<10) /* Bit 11..10:  symmetric Pause Mode */
-#define PHY_B_P_ASYM_MD                (2<<10) /* Bit 11..10:  asymmetric Pause Mode */
-#define PHY_B_P_BOTH_MD                (3<<10) /* Bit 11..10:  both Pause Mode */
-
-/*
- * Resolved Duplex mode and Capabilities (Aux Status Summary Reg)
- */
-#define PHY_B_RES_1000FD       (7<<8)  /* Bit 10..8:   1000Base-T Full Dup. */
-#define PHY_B_RES_1000HD       (6<<8)  /* Bit 10..8:   1000Base-T Half Dup. */
-/* others: 100/10: invalid for us */
-
-/*
- * Level One-Specific
- */
-/*****  PHY_LONE_1000T_CTRL    16 bit r/w      1000Base-T Control Reg *****/
-#define PHY_L_1000C_TEST       (7<<13) /* Bit 15..13:  Test Modes */
-#define PHY_L_1000C_MSE                (1<<12) /* Bit 12:      Master/Slave Enable */
-#define PHY_L_1000C_MSC                (1<<11) /* Bit 11:      M/S Configuration */
-#define PHY_L_1000C_RD         (1<<10) /* Bit 10:      Repeater/DTE */
-#define PHY_L_1000C_AFD                (1<<9)  /* Bit  9:      Advertise Full Duplex */
-#define PHY_L_1000C_AHD                (1<<8)  /* Bit  8:      Advertise Half Duplex */
-                                                                       /* Bit  7..0:   reserved */
-
-/*****  PHY_LONE_1000T_STAT    16 bit r/o      1000Base-T Status Reg *****/
-#define PHY_L_1000S_MSF                (1<<15) /* Bit 15:      Master/Slave Fault */
-#define PHY_L_1000S_MSR                (1<<14) /* Bit 14:      Master/Slave Result */
-#define PHY_L_1000S_LRS                (1<<13) /* Bit 13:      Local Receiver Status */
-#define PHY_L_1000S_RRS                (1<<12) /* Bit 12:      Remote Receiver Status*/
-#define PHY_L_1000S_LP_FD      (1<<11) /* Bit 11:      Link Partner can FD */
-#define PHY_L_1000S_LP_HD      (1<<10) /* Bit 10:      Link Partner can HD */
-                                                                       /* Bit  9..8:   reserved */
-#define PHY_B_1000S_IEC                0xff    /* Bit  7..0:   Idle Error Count */
-
-/*****  PHY_LONE_EXT_STAT      16 bit r/o      Extended Status Register *****/
-#define PHY_L_ES_X_FD_CAP      (1<<15) /* Bit 15:      1000Base-X FD capable */
-#define PHY_L_ES_X_HD_CAP      (1<<14) /* Bit 14:      1000Base-X HD capable */
-#define PHY_L_ES_T_FD_CAP      (1<<13) /* Bit 13:      1000Base-T FD capable */
-#define PHY_L_ES_T_HD_CAP      (1<<12) /* Bit 12:      1000Base-T HD capable */
-                                                                       /* Bit 11..0:   reserved */
-
-/*****  PHY_LONE_PORT_CFG      16 bit r/w      Port Configuration Reg *****/
-#define PHY_L_PC_REP_MODE      (1<<15) /* Bit 15:      Repeater Mode */
-                                                                       /* Bit 14:      reserved */
-#define PHY_L_PC_TX_DIS                (1<<13) /* Bit 13:      Tx output Disabled */
-#define PHY_L_PC_BY_SCR                (1<<12) /* Bit 12:      Bypass Scrambler */
-#define PHY_L_PC_BY_45         (1<<11) /* Bit 11:      Bypass 4B5B-Decoder */
-#define PHY_L_PC_JAB_DIS       (1<<10) /* Bit 10:      Jabber Disabled */
-#define PHY_L_PC_SQE           (1<<9)  /* Bit  9:      Enable Heartbeat */
-#define PHY_L_PC_TP_LOOP       (1<<8)  /* Bit  8:      TP Loopback */
-#define PHY_L_PC_SSS           (1<<7)  /* Bit  7:      Smart Speed Selection */
-#define PHY_L_PC_FIFO_SIZE     (1<<6)  /* Bit  6:      FIFO Size */
-#define PHY_L_PC_PRE_EN                (1<<5)  /* Bit  5:      Preamble Enable */
-#define PHY_L_PC_CIM           (1<<4)  /* Bit  4:      Carrier Integrity Mon */
-#define PHY_L_PC_10_SER                (1<<3)  /* Bit  3:      Use Serial Output */
-#define PHY_L_PC_ANISOL                (1<<2)  /* Bit  2:      Unisolate Port */
-#define PHY_L_PC_TEN_BIT       (1<<1)  /* Bit  1:      10bit iface mode on */
-#define PHY_L_PC_ALTCLOCK      (1<<0)  /* Bit  0: (ro) ALTCLOCK Mode on */
-
-/*****  PHY_LONE_Q_STAT                16 bit r/o      Quick Status Reg *****/
-#define PHY_L_QS_D_RATE                (3<<14) /* Bit 15..14:  Data Rate */
-#define PHY_L_QS_TX_STAT       (1<<13) /* Bit 13:      Transmitting */
-#define PHY_L_QS_RX_STAT       (1<<12) /* Bit 12:      Receiving */
-#define PHY_L_QS_COL_STAT      (1<<11) /* Bit 11:      Collision */
-#define PHY_L_QS_L_STAT                (1<<10) /* Bit 10:      Link is up */
-#define PHY_L_QS_DUP_MOD       (1<<9)  /* Bit  9:      Full/Half Duplex */
-#define PHY_L_QS_AN                    (1<<8)  /* Bit  8:      AutoNeg is On */
-#define PHY_L_QS_AN_C          (1<<7)  /* Bit  7:      AN is Complete */
-#define PHY_L_QS_LLE           (7<<4)  /* Bit  6:      Line Length Estim. */
-#define PHY_L_QS_PAUSE         (1<<3)  /* Bit  3:      LP advertised Pause */
-#define PHY_L_QS_AS_PAUSE      (1<<2)  /* Bit  2:      LP adv. asym. Pause */
-#define PHY_L_QS_ISOLATE       (1<<1)  /* Bit  1:      CIM Isolated */
-#define PHY_L_QS_EVENT         (1<<0)  /* Bit  0:      Event has occurred */
-
-/*****  PHY_LONE_INT_ENAB      16 bit r/w      Interrupt Enable Reg *****/
-/*****  PHY_LONE_INT_STAT      16 bit r/o      Interrupt Status Reg *****/
-                                                                       /* Bit 15..14:  reserved */
-#define PHY_L_IS_AN_F          (1<<13) /* Bit 13:      Auto-Negotiation fault */
-                                                                       /* Bit 12:      not described */
-#define PHY_L_IS_CROSS         (1<<11) /* Bit 11:      Crossover used */
-#define PHY_L_IS_POL           (1<<10) /* Bit 10:      Polarity correct. used*/
-#define PHY_L_IS_SS                    (1<<9)  /* Bit  9:      Smart Speed Downgrade*/
-#define PHY_L_IS_CFULL         (1<<8)  /* Bit  8:      Counter Full */
-#define PHY_L_IS_AN_C          (1<<7)  /* Bit  7:      AutoNeg Complete */
-#define PHY_L_IS_SPEED         (1<<6)  /* Bit  6:      Speed Changed */
-#define PHY_L_IS_DUP           (1<<5)  /* Bit  5:      Duplex Changed */
-#define PHY_L_IS_LS                    (1<<4)  /* Bit  4:      Link Status Changed */
-#define PHY_L_IS_ISOL          (1<<3)  /* Bit  3:      Isolate Occured */
-#define PHY_L_IS_MDINT         (1<<2)  /* Bit  2: (ro) STAT: MII Int Pending */
-#define PHY_L_IS_INTEN         (1<<1)  /* Bit  1:      ENAB: Enable IRQs */
-#define PHY_L_IS_FORCE         (1<<0)  /* Bit  0:      ENAB: Force Interrupt */
-
-/* int. mask */
-#define PHY_L_DEF_MSK          (PHY_L_IS_LS | PHY_L_IS_ISOL | PHY_L_IS_INTEN)
-
-/*****  PHY_LONE_LED_CFG       16 bit r/w      LED Configuration Reg *****/
-#define PHY_L_LC_LEDC          (3<<14) /* Bit 15..14:  Col/Blink/On/Off */
-#define PHY_L_LC_LEDR          (3<<12) /* Bit 13..12:  Rx/Blink/On/Off */
-#define PHY_L_LC_LEDT          (3<<10) /* Bit 11..10:  Tx/Blink/On/Off */
-#define PHY_L_LC_LEDG          (3<<8)  /* Bit  9..8:   Giga/Blink/On/Off */
-#define PHY_L_LC_LEDS          (3<<6)  /* Bit  7..6:   10-100/Blink/On/Off */
-#define PHY_L_LC_LEDL          (3<<4)  /* Bit  5..4:   Link/Blink/On/Off */
-#define PHY_L_LC_LEDF          (3<<2)  /* Bit  3..2:   Duplex/Blink/On/Off */
-#define PHY_L_LC_PSTRECH       (1<<1)  /* Bit  1:      Strech LED Pulses */
-#define PHY_L_LC_FREQ          (1<<0)  /* Bit  0:      30/100 ms */
-
-/*****  PHY_LONE_PORT_CTRL     16 bit r/w      Port Control Reg *****/
-#define PHY_L_PC_TX_TCLK       (1<<15) /* Bit 15:      Enable TX_TCLK */
-                                                                       /* Bit 14:      reserved */
-#define PHY_L_PC_ALT_NP                (1<<13) /* Bit 14:      Alternate Next Page */
-#define PHY_L_PC_GMII_ALT      (1<<12) /* Bit 13:      Alternate GMII driver */
-                                                                       /* Bit 11:      reserved */
-#define PHY_L_PC_TEN_CRS       (1<<10) /* Bit 10:      Extend CRS*/
-                                                                       /* Bit  9..0:   not described */
-
-/*****  PHY_LONE_CIM           16 bit r/o      CIM Reg *****/
-#define PHY_L_CIM_ISOL         (255<<8)/* Bit 15..8:   Isolate Count */
-#define PHY_L_CIM_FALSE_CAR    (255<<0)/* Bit  7..0:   False Carrier Count */
-
-
-/*
- * Pause Bits (PHY_L_AN_ASP and PHY_L_AN_PC) encoding
- */
-#define PHY_L_P_NO_PAUSE       (0<<10) /* Bit 11..10:  no Pause Mode */
-#define PHY_L_P_SYM_MD         (1<<10) /* Bit 11..10:  symmetric Pause Mode */
-#define PHY_L_P_ASYM_MD                (2<<10) /* Bit 11..10:  asymmetric Pause Mode */
-#define PHY_L_P_BOTH_MD                (3<<10) /* Bit 11..10:  both Pause Mode */
-
-
-/*
- * National-Specific
- */
-/*****  PHY_NAT_1000T_CTRL     16 bit r/w      1000Base-T Control Reg *****/
-#define PHY_N_1000C_TEST       (7<<13) /* Bit 15..13:  Test Modes */
-#define PHY_N_1000C_MSE                (1<<12) /* Bit 12:      Master/Slave Enable */
-#define PHY_N_1000C_MSC                (1<<11) /* Bit 11:      M/S Configuration */
-#define PHY_N_1000C_RD         (1<<10) /* Bit 10:      Repeater/DTE */
-#define PHY_N_1000C_AFD                (1<<9)  /* Bit  9:      Advertise Full Duplex */
-#define PHY_N_1000C_AHD                (1<<8)  /* Bit  8:      Advertise Half Duplex */
-#define PHY_N_1000C_APC                (1<<7)  /* Bit  7:      Asymmetric Pause Cap. */
-                                                                       /* Bit  6..0:   reserved */
-
-/*****  PHY_NAT_1000T_STAT     16 bit r/o      1000Base-T Status Reg *****/
-#define PHY_N_1000S_MSF                (1<<15) /* Bit 15:      Master/Slave Fault */
-#define PHY_N_1000S_MSR                (1<<14) /* Bit 14:      Master/Slave Result */
-#define PHY_N_1000S_LRS                (1<<13) /* Bit 13:      Local Receiver Status */
-#define PHY_N_1000S_RRS                (1<<12) /* Bit 12:      Remote Receiver Status*/
-#define PHY_N_1000S_LP_FD      (1<<11) /* Bit 11:      Link Partner can FD */
-#define PHY_N_1000S_LP_HD      (1<<10) /* Bit 10:      Link Partner can HD */
-#define PHY_N_1000C_LP_APC     (1<<9)  /* Bit  9:      LP Asym. Pause Cap. */
-                                                                       /* Bit  8:      reserved */
-#define PHY_N_1000S_IEC                0xff    /* Bit  7..0:   Idle Error Count */
-
-/*****  PHY_NAT_EXT_STAT       16 bit r/o      Extended Status Register *****/
-#define PHY_N_ES_X_FD_CAP      (1<<15) /* Bit 15:      1000Base-X FD capable */
-#define PHY_N_ES_X_HD_CAP      (1<<14) /* Bit 14:      1000Base-X HD capable */
-#define PHY_N_ES_T_FD_CAP      (1<<13) /* Bit 13:      1000Base-T FD capable */
-#define PHY_N_ES_T_HD_CAP      (1<<12) /* Bit 12:      1000Base-T HD capable */
-                                                                       /* Bit 11..0:   reserved */
-
-/* todo: those are still missing */
-/*****  PHY_NAT_EXT_CTRL1      16 bit r/o      Extended Control Reg1 *****/
-/*****  PHY_NAT_Q_STAT1                16 bit r/o      Quick Status Reg1 *****/
-/*****  PHY_NAT_10B_OP         16 bit r/o      10Base-T Operations Reg *****/
-/*****  PHY_NAT_EXT_CTRL2      16 bit r/o      Extended Control Reg1 *****/
-/*****  PHY_NAT_Q_STAT2                16 bit r/o      Quick Status Reg2 *****/
-/*****  PHY_NAT_PHY_ADDR       16 bit r/o      PHY Address Register *****/
-
-/*
- * Marvell-Specific
- */
-/*****  PHY_MARV_AUNE_ADV      16 bit r/w      Auto-Negotiation Advertisement *****/
-/*****  PHY_MARV_AUNE_LP       16 bit r/w      Link Part Ability Reg *****/
-#define PHY_M_AN_NXT_PG                BIT_15  /* Request Next Page */
-#define PHY_M_AN_ACK           BIT_14  /* (ro) Acknowledge Received */
-#define PHY_M_AN_RF                    BIT_13  /* Remote Fault */
-                                                                       /* Bit 12:      reserved */
-#define PHY_M_AN_ASP           BIT_11  /* Asymmetric Pause */
-#define PHY_M_AN_PC                    BIT_10  /* MAC Pause implemented */
-#define PHY_M_AN_100_FD                BIT_8   /* Advertise 100Base-TX Full Duplex */
-#define PHY_M_AN_100_HD                BIT_7   /* Advertise 100Base-TX Half Duplex */
-#define PHY_M_AN_10_FD         BIT_6   /* Advertise 10Base-TX Full Duplex */
-#define PHY_M_AN_10_HD         BIT_5   /* Advertise 10Base-TX Half Duplex */
-
-/* special defines for FIBER (88E1011S only) */
-#define PHY_M_AN_ASP_X         BIT_8   /* Asymmetric Pause */
-#define PHY_M_AN_PC_X          BIT_7   /* MAC Pause implemented */
-#define PHY_M_AN_1000X_AHD     BIT_6   /* Advertise 10000Base-X Half Duplex */
-#define PHY_M_AN_1000X_AFD     BIT_5   /* Advertise 10000Base-X Full Duplex */
-
-/* Pause Bits (PHY_M_AN_ASP_X and PHY_M_AN_PC_X) encoding */
-#define PHY_M_P_NO_PAUSE_X     (0<<7)  /* Bit  8.. 7:  no Pause Mode */
-#define PHY_M_P_SYM_MD_X       (1<<7)  /* Bit  8.. 7:  symmetric Pause Mode */
-#define PHY_M_P_ASYM_MD_X      (2<<7)  /* Bit  8.. 7:  asymmetric Pause Mode */
-#define PHY_M_P_BOTH_MD_X      (3<<7)  /* Bit  8.. 7:  both Pause Mode */
-
-/*****  PHY_MARV_1000T_CTRL    16 bit r/w      1000Base-T Control Reg *****/
-#define PHY_M_1000C_TEST       (7<<13) /* Bit 15..13:  Test Modes */
-#define PHY_M_1000C_MSE                (1<<12) /* Bit 12:      Manual Master/Slave Enable */
-#define PHY_M_1000C_MSC                (1<<11) /* Bit 11:      M/S Configuration (1=Master) */
-#define PHY_M_1000C_MPD                (1<<10) /* Bit 10:      Multi-Port Device */
-#define PHY_M_1000C_AFD                (1<<9)  /* Bit  9:      Advertise Full Duplex */
-#define PHY_M_1000C_AHD                (1<<8)  /* Bit  8:      Advertise Half Duplex */
-                                                                       /* Bit  7..0:   reserved */
-
-/*****  PHY_MARV_PHY_CTRL      16 bit r/w      PHY Specific Ctrl Reg *****/
-
-#define PHY_M_PC_TX_FFD_MSK    (3<<14) /* Bit 15..14:  Tx FIFO Depth Mask */
-#define PHY_M_PC_RX_FFD_MSK    (3<<12) /* Bit 13..12:  Rx FIFO Depth Mask */
-#define PHY_M_PC_ASS_CRS_TX    (1<<11) /* Bit 11:      Assert CRS on Transmit */
-#define PHY_M_PC_FL_GOOD       (1<<10) /* Bit 10:      Force Link Good */
-#define PHY_M_PC_EN_DET_MSK    (3<<8)  /* Bit  9.. 8:  Energy Detect Mask */
-#define PHY_M_PC_ENA_EXT_D     (1<<7)  /* Bit  7:      Enable Ext. Distance (10BT) */
-#define PHY_M_PC_MDIX_MSK      (3<<5)  /* Bit  6.. 5:  MDI/MDIX Config. Mask */
-#define PHY_M_PC_DIS_125CLK    (1<<4)  /* Bit  4:      Disable 125 CLK */
-#define PHY_M_PC_MAC_POW_UP    (1<<3)  /* Bit  3:      MAC Power up */
-#define PHY_M_PC_SQE_T_ENA     (1<<2)  /* Bit  2:      SQE Test Enabled */
-#define PHY_M_PC_POL_R_DIS     (1<<1)  /* Bit  1:      Polarity Reversal Disabled */
-#define PHY_M_PC_DIS_JABBER    (1<<0)  /* Bit  0:      Disable Jabber */
-
-#define PHY_M_PC_MDI_XMODE(x)  SHIFT5(x)
-#define PHY_M_PC_MAN_MDI       0        /* 00 = Manual MDI configuration */
-#define PHY_M_PC_MAN_MDIX      1               /* 01 = Manual MDIX configuration */
-#define PHY_M_PC_ENA_AUTO      3               /* 11 = Enable Automatic Crossover */
-
-/*****  PHY_MARV_PHY_STAT      16 bit r/o      PHY Specific Status Reg *****/
-#define PHY_M_PS_SPEED_MSK     (3<<14) /* Bit 15..14:  Speed Mask */
-#define PHY_M_PS_SPEED_1000    (1<<15) /*       10 = 1000 Mbps */
-#define PHY_M_PS_SPEED_100     (1<<14) /*       01 =  100 Mbps */
-#define PHY_M_PS_SPEED_10      0                /*       00 =   10 Mbps */
-#define PHY_M_PS_FULL_DUP      (1<<13) /* Bit 13:      Full Duplex */
-#define PHY_M_PS_PAGE_REC      (1<<12) /* Bit 12:      Page Received */
-#define PHY_M_PS_SPDUP_RES     (1<<11) /* Bit 11:      Speed & Duplex Resolved */
-#define PHY_M_PS_LINK_UP       (1<<10) /* Bit 10:      Link Up */
-#define PHY_M_PS_CABLE_MSK     (3<<7)  /* Bit  9.. 7:  Cable Length Mask */
-#define PHY_M_PS_MDI_X_STAT    (1<<6)  /* Bit  6:      MDI Crossover Stat (1=MDIX) */
-#define PHY_M_PS_DOWNS_STAT    (1<<5)  /* Bit  5:      Downshift Status (1=downsh.) */
-#define PHY_M_PS_ENDET_STAT    (1<<4)  /* Bit  4:      Energy Detect Status (1=act) */
-#define PHY_M_PS_TX_P_EN       (1<<3)  /* Bit  3:      Tx Pause Enabled */
-#define PHY_M_PS_RX_P_EN       (1<<2)  /* Bit  2:      Rx Pause Enabled */
-#define PHY_M_PS_POL_REV       (1<<1)  /* Bit  1:      Polarity Reversed */
-#define PHY_M_PC_JABBER                (1<<0)  /* Bit  0:      Jabber */
-
-#define PHY_M_PS_PAUSE_MSK     (PHY_M_PS_TX_P_EN | PHY_M_PS_RX_P_EN)
-
-/*****  PHY_MARV_INT_MASK      16 bit r/w      Interrupt Mask Reg *****/
-/*****  PHY_MARV_INT_STAT      16 bit r/o      Interrupt Status Reg *****/
-#define PHY_M_IS_AN_ERROR      (1<<15) /* Bit 15:      Auto-Negotiation Error */
-#define PHY_M_IS_LSP_CHANGE    (1<<14) /* Bit 14:      Link Speed Changed */
-#define PHY_M_IS_DUP_CHANGE    (1<<13) /* Bit 13:      Duplex Mode Changed */
-#define PHY_M_IS_AN_PR         (1<<12) /* Bit 12:      Page Received */
-#define PHY_M_IS_AN_COMPL      (1<<11) /* Bit 11:      Auto-Negotiation Completed */
-#define PHY_M_IS_LST_CHANGE    (1<<10) /* Bit 10:      Link Status Changed */
-#define PHY_M_IS_SYMB_ERROR    (1<<9)  /* Bit  9:      Symbol Error */
-#define PHY_M_IS_FALSE_CARR    (1<<8)  /* Bit  8:      False Carrier */
-#define PHY_M_IS_FIFO_ERROR    (1<<7)  /* Bit  7:      FIFO Overflow/Underrun Error */
-#define PHY_M_IS_MDI_CHANGE    (1<<6)  /* Bit  6:      MDI Crossover Changed */
-#define PHY_M_IS_DOWNSH_DET    (1<<5)  /* Bit  5:      Downshift Detected */
-#define PHY_M_IS_END_CHANGE    (1<<4)  /* Bit  4:      Energy Detect Changed */
-                                                                       /* Bit  3..2:   reserved */
-#define PHY_M_IS_POL_CHANGE    (1<<1)  /* Bit  1:      Polarity Changed */
-#define PHY_M_IS_JABBER                (1<<0)  /* Bit  0:      Jabber */
-
-#define PHY_M_DEF_MSK          (PHY_M_IS_AN_ERROR | PHY_M_IS_AN_PR | \
-                                                       PHY_M_IS_LST_CHANGE | PHY_M_IS_FIFO_ERROR)
-
-/*****  PHY_MARV_EXT_CTRL      16 bit r/w      Ext. PHY Specific Ctrl *****/
-#define PHY_M_EC_M_DSC_MSK     (3<<10) /* Bit 11..10:  Master downshift counter */
-#define PHY_M_EC_S_DSC_MSK     (3<<8)  /* Bit  9.. 8:  Slave  downshift counter */
-#define PHY_M_EC_MAC_S_MSK     (7<<4)  /* Bit  6.. 4:  Def. MAC interface speed */
-
-#define PHY_M_EC_M_DSC(x)              SHIFT10(x)      /* 00=1x; 01=2x; 10=3x; 11=4x */
-#define PHY_M_EC_S_DSC(x)              SHIFT8(x)       /* 00=dis; 01=1x; 10=2x; 11=3x */
-#define PHY_M_EC_MAC_S(x)              SHIFT4(x)       /* 01X=0; 110=2.5; 111=25 (MHz) */
-
-#define MAC_TX_CLK_0_MHZ       2
-#define MAC_TX_CLK_2_5_MHZ     6
-#define MAC_TX_CLK_25_MHZ      7
-
-/*****  PHY_MARV_LED_CTRL      16 bit r/w      LED Control Reg *****/
-#define PHY_M_LEDC_DIS_LED     (1<<15) /* Bit 15:      Disable LED */
-#define PHY_M_LEDC_PULS_MSK    (7<<12) /* Bit 14..12:  Pulse Stretch Mask */
-#define PHY_M_LEDC_F_INT       (1<<11) /* Bit 11:      Force Interrupt */
-#define PHY_M_LEDC_BL_R_MSK    (7<<8)  /* Bit 10.. 8:  Blink Rate Mask */
-                                                                       /* Bit  7.. 5:  reserved */
-#define PHY_M_LEDC_LINK_MSK    (3<<3)  /* Bit  4.. 3:  Link Control Mask */
-#define PHY_M_LEDC_DP_CTRL     (1<<2)  /* Bit  2:      Duplex Control */
-#define PHY_M_LEDC_RX_CTRL     (1<<1)  /* Bit  1:      Rx activity / Link */
-#define PHY_M_LEDC_TX_CTRL     (1<<0)  /* Bit  0:      Tx activity / Link */
-
-#define PHY_M_LED_PULS_DUR(x)  SHIFT12(x)      /* Pulse Stretch Duration */
-
-#define        PULS_NO_STR             0                /* no pulse stretching */
-#define        PULS_21MS               1               /* 21 ms to 42 ms */
-#define PULS_42MS              2               /* 42 ms to 84 ms */
-#define PULS_84MS              3               /* 84 ms to 170 ms */
-#define PULS_170MS             4               /* 170 ms to 340 ms */
-#define PULS_340MS             5               /* 340 ms to 670 ms */
-#define PULS_670MS             6               /* 670 ms to 1.3 s */
-#define PULS_1300MS            7               /* 1.3 s to 2.7 s */
-
-#define PHY_M_LED_BLINK_RT(x)  SHIFT8(x)       /* Blink Rate */
-
-#define BLINK_42MS             0                /* 42 ms */
-#define BLINK_84MS             1               /* 84 ms */
-#define BLINK_170MS            2               /* 170 ms */
-#define BLINK_340MS            3               /* 340 ms */
-#define BLINK_670MS            4               /* 670 ms */
-                                                               /* values 5 - 7: reserved */
-
-/*****  PHY_MARV_LED_OVER      16 bit r/w      Manual LED Override Reg *****/
-#define PHY_M_LED_MO_DUP(x)            SHIFT10(x)      /* Bit 11..10:  Duplex */
-#define PHY_M_LED_MO_10(x)             SHIFT8(x)       /* Bit  9.. 8:  Link 10 */
-#define PHY_M_LED_MO_100(x)            SHIFT6(x)       /* Bit  7.. 6:  Link 100 */
-#define PHY_M_LED_MO_1000(x)   SHIFT4(x)       /* Bit  5.. 4:  Link 1000 */
-#define PHY_M_LED_MO_RX(x)             SHIFT2(x)       /* Bit  3.. 2:  Rx */
-#define PHY_M_LED_MO_TX(x)             SHIFT0(x)       /* Bit  1.. 0:  Tx */
-
-#define MO_LED_NORM                    0
-#define MO_LED_BLINK           1
-#define MO_LED_OFF                     2
-#define MO_LED_ON                      3
-
-/*****  PHY_MARV_EXT_CTRL_2    16 bit r/w      Ext. PHY Specific Ctrl 2 *****/
-                                                                       /* Bit 15.. 7:  reserved */
-#define PHY_M_EC2_FI_IMPED     (1<<6)  /* Bit  6:      Fiber Input  Impedance */
-#define PHY_M_EC2_FO_IMPED     (1<<5)  /* Bit  5:      Fiber Output Impedance */
-#define PHY_M_EC2_FO_M_CLK     (1<<4)  /* Bit  4:      Fiber Mode Clock Enable */
-#define PHY_M_EC2_FO_BOOST     (1<<3)  /* Bit  3:      Fiber Output Boost */
-#define PHY_M_EC2_FO_AM_MSK    7               /* Bit  2.. 0:  Fiber Output Amplitude */
-
-/*****  PHY_MARV_CABLE_DIAG    16 bit r/o      Cable Diagnostic Reg *****/
-#define PHY_M_CABD_ENA_TEST    (1<<15) /* Bit 15:      Enable Test */
-#define PHY_M_CABD_STAT_MSK    (3<<13) /* Bit 14..13:  Status */
-                                                                       /* Bit 12.. 8:  reserved */
-#define PHY_M_CABD_DIST_MSK    0xff    /* Bit  7.. 0:  Distance */
-
-/* values for Cable Diagnostic Status (11=fail; 00=OK; 10=open; 01=short) */
-#define CABD_STAT_NORMAL       0
-#define CABD_STAT_SHORT                1
-#define CABD_STAT_OPEN         2
-#define CABD_STAT_FAIL         3
-
-
-/*
- * GMAC registers
- *
- * The GMAC registers are 16 or 32 bits wide.
- * The GMACs host processor interface is 16 bits wide,
- * therefore ALL registers will be addressed with 16 bit accesses.
- *
- * The following macros are provided to access the GMAC registers
- * GM_IN16(), GM_OUT16, GM_IN32(), GM_OUT32(), GM_INADR(), GM_OUTADR(),
- * GM_INHASH(), and GM_OUTHASH().
- * The macros are defined in SkGeHw.h.
- *
- * Note:       NA reg  = Network Address e.g DA, SA etc.
- *
- */
-
-/* Port Registers */
-#define GM_GP_STAT             0x0000          /* 16 bit r/o   General Purpose Status */
-#define GM_GP_CTRL             0x0004          /* 16 bit r/w   General Purpose Control */
-#define GM_TX_CTRL             0x0008          /* 16 bit r/w   Transmit Control Reg. */
-#define GM_RX_CTRL             0x000c          /* 16 bit r/w   Receive Control Reg. */
-#define GM_TX_FLOW_CTRL        0x0010          /* 16 bit r/w   Transmit Flow Control */
-#define GM_TX_PARAM            0x0014          /* 16 bit r/w   Transmit Parameter Reg. */
-#define GM_SERIAL_MODE 0x0018          /* 16 bit r/w   Serial Mode Register */
-
-/* Source Address Registers */
-#define GM_SRC_ADDR_1L 0x001c          /* 16 bit r/w   Source Address 1 (low) */
-#define GM_SRC_ADDR_1M 0x0020          /* 16 bit r/w   Source Address 1 (middle) */
-#define GM_SRC_ADDR_1H 0x0024          /* 16 bit r/w   Source Address 1 (high) */
-#define GM_SRC_ADDR_2L 0x0028          /* 16 bit r/w   Source Address 2 (low) */
-#define GM_SRC_ADDR_2M 0x002c          /* 16 bit r/w   Source Address 2 (middle) */
-#define GM_SRC_ADDR_2H 0x0030          /* 16 bit r/w   Source Address 2 (high) */
-
-/* Multicast Address Hash Registers */
-#define GM_MC_ADDR_H1  0x0034          /* 16 bit r/w   Multicast Address Hash 1 */
-#define GM_MC_ADDR_H2  0x0038          /* 16 bit r/w   Multicast Address Hash 2 */
-#define GM_MC_ADDR_H3  0x003c          /* 16 bit r/w   Multicast Address Hash 3 */
-#define GM_MC_ADDR_H4  0x0040          /* 16 bit r/w   Multicast Address Hash 4 */
-
-/* Interrupt Source Registers */
-#define GM_TX_IRQ_SRC  0x0044          /* 16 bit r/o   Tx Overflow IRQ Source */
-#define GM_RX_IRQ_SRC  0x0048          /* 16 bit r/o   Rx Overflow IRQ Source */
-#define GM_TR_IRQ_SRC  0x004c          /* 16 bit r/o   Tx/Rx Over. IRQ Source */
-
-/* Interrupt Mask Registers */
-#define GM_TX_IRQ_MSK  0x0050          /* 16 bit r/w   Tx Overflow IRQ Mask */
-#define GM_RX_IRQ_MSK  0x0054          /* 16 bit r/w   Rx Overflow IRQ Mask */
-#define GM_TR_IRQ_MSK  0x0058          /* 16 bit r/w   Tx/Rx Over. IRQ Mask */
-
-/* Serial Management Interface (SMI) Registers */
-#define GM_SMI_CTRL            0x0080          /* 16 bit r/w   SMI Control Register */
-#define GM_SMI_DATA            0x0084          /* 16 bit r/w   SMI Data Register */
-#define GM_PHY_ADDR            0x0088          /* 16 bit r/w   GPHY Address Register */
-
-/* MIB Counters */
-#define GM_MIB_CNT_BASE        0x0100          /* Base Address of MIB Counters */
-#define GM_MIB_CNT_SIZE        44                      /* Number of MIB Counters */
-
-/*
- * MIB Counters base address definitions (low word) -
- * use offset 4 for access to high word        (32 bit r/o)
- */
-#define GM_RXF_UC_OK \
-                       (GM_MIB_CNT_BASE + 0)   /* Unicast Frames Received OK */
-#define GM_RXF_BC_OK \
-                       (GM_MIB_CNT_BASE + 8)   /* Broadcast Frames Received OK */
-#define GM_RXF_MPAUSE \
-                       (GM_MIB_CNT_BASE + 16)  /* Pause MAC Ctrl Frames Received */
-#define GM_RXF_MC_OK \
-                       (GM_MIB_CNT_BASE + 24)  /* Multicast Frames Received OK */
-#define GM_RXF_FCS_ERR \
-                       (GM_MIB_CNT_BASE + 32)  /* Rx Frame Check Seq. Error */
-       /* GM_MIB_CNT_BASE + 40:        reserved */
-#define GM_RXO_OK_LO \
-                       (GM_MIB_CNT_BASE + 48)  /* Octets Received OK Low */
-#define GM_RXO_OK_HI \
-                       (GM_MIB_CNT_BASE + 56)  /* Octets Received OK High */
-#define GM_RXO_ERR_LO \
-                       (GM_MIB_CNT_BASE + 64)  /* Octets Received Invalid Low */
-#define GM_RXO_ERR_HI \
-                       (GM_MIB_CNT_BASE + 72)  /* Octets Received Invalid High */
-#define GM_RXF_SHT \
-                       (GM_MIB_CNT_BASE + 80)  /* Frames <64 Byte Received OK */
-#define GM_RXE_FRAG \
-                       (GM_MIB_CNT_BASE + 88)  /* Frames <64 Byte Receeived with FCS Err */
-#define GM_RXF_64B \
-                       (GM_MIB_CNT_BASE + 96)  /* 64 Byte Rx Frame */
-#define GM_RXF_127B \
-                       (GM_MIB_CNT_BASE + 104) /* 65-127 Byte Rx Frame */
-#define GM_RXF_255B \
-                       (GM_MIB_CNT_BASE + 112) /* 128-255 Byte Rx Frame */
-#define GM_RXF_511B \
-                       (GM_MIB_CNT_BASE + 120) /* 256-511 Byte Rx Frame */
-#define GM_RXF_1023B \
-                       (GM_MIB_CNT_BASE + 128) /* 512-1023 Byte Rx Frame */
-#define GM_RXF_1518B \
-                       (GM_MIB_CNT_BASE + 136) /* 1024-1518 Byte Rx Frame */
-#define GM_RXF_MAX_SZ \
-                       (GM_MIB_CNT_BASE + 144) /* 1519-MaxSize Byte Rx Frame */
-#define GM_RXF_LNG_ERR \
-                       (GM_MIB_CNT_BASE + 152) /* Rx Frame too Long Error */
-#define GM_RXF_JAB_PKT \
-                       (GM_MIB_CNT_BASE + 160) /* Rx Jabber Packet Frame */
-       /* GM_MIB_CNT_BASE + 168:       reserved */
-#define GM_RXE_FIFO_OV \
-                       (GM_MIB_CNT_BASE + 176) /* Rx FIFO overflow Event */
-       /* GM_MIB_CNT_BASE + 184:       reserved */
-#define GM_TXF_UC_OK \
-                       (GM_MIB_CNT_BASE + 192) /* Unicast Frames Xmitted OK */
-#define GM_TXF_BC_OK \
-                       (GM_MIB_CNT_BASE + 200) /* Broadcast Frames Xmitted OK */
-#define GM_TXF_MPAUSE \
-                       (GM_MIB_CNT_BASE + 208) /* Pause MAC Ctrl Frames Xmitted */
-#define GM_TXF_MC_OK \
-                       (GM_MIB_CNT_BASE + 216) /* Multicast Frames Xmitted OK */
-#define GM_TXO_OK_LO \
-                       (GM_MIB_CNT_BASE + 224) /* Octets Transmitted OK Low */
-#define GM_TXO_OK_HI \
-                       (GM_MIB_CNT_BASE + 232) /* Octets Transmitted OK High */
-#define GM_TXF_64B \
-                       (GM_MIB_CNT_BASE + 240) /* 64 Byte Tx Frame */
-#define GM_TXF_127B \
-                       (GM_MIB_CNT_BASE + 248) /* 65-127 Byte Tx Frame */
-#define GM_TXF_255B \
-                       (GM_MIB_CNT_BASE + 256) /* 128-255 Byte Tx Frame */
-#define GM_TXF_511B \
-                       (GM_MIB_CNT_BASE + 264) /* 256-511 Byte Tx Frame */
-#define GM_TXF_1023B \
-                       (GM_MIB_CNT_BASE + 272) /* 512-1023 Byte Tx Frame */
-#define GM_TXF_1518B \
-                       (GM_MIB_CNT_BASE + 280) /* 1024-1518 Byte Tx Frame */
-#define GM_TXF_MAX_SZ \
-                       (GM_MIB_CNT_BASE + 288) /* 1519-MaxSize Byte Tx Frame */
-       /* GM_MIB_CNT_BASE + 296:       reserved */
-#define GM_TXF_COL \
-                       (GM_MIB_CNT_BASE + 304) /* Tx Collision */
-#define GM_TXF_LAT_COL \
-                       (GM_MIB_CNT_BASE + 312) /* Tx Late Collision */
-#define GM_TXF_ABO_COL \
-                       (GM_MIB_CNT_BASE + 320) /* Tx aborted due to Exces. Col. */
-#define GM_TXF_MUL_COL \
-                       (GM_MIB_CNT_BASE + 328) /* Tx Multiple Collision */
-#define GM_TXF_SNG_COL \
-                       (GM_MIB_CNT_BASE + 336) /* Tx Single Collision */
-#define GM_TXE_FIFO_UR \
-                       (GM_MIB_CNT_BASE + 344) /* Tx FIFO Underrun Event */
-
-/*----------------------------------------------------------------------------*/
-/*
- * GMAC Bit Definitions
- *
- * If the bit access behaviour differs from the register access behaviour
- * (r/w, r/o) this is documented after the bit number.
- * The following bit access behaviours are used:
- *     (sc)    self clearing
- *     (r/o)   read only
- */
-
-/*     GM_GP_STAT      16 bit r/o      General Purpose Status Register */
-
-#define GM_GPSR_SPEED          (1<<15) /* Bit 15:      Port Speed (1 = 100 Mbps) */
-#define GM_GPSR_DUPLEX         (1<<14) /* Bit 14:      Duplex Mode (1 = Full) */
-#define GM_GPSR_FC_TX_DIS      (1<<13) /* Bit 13:      Tx Flow Control Mode Disabled */
-#define GM_GPSR_LINK_UP                (1<<12) /* Bit 12:      Link Up Status */
-#define GM_GPSR_PAUSE          (1<<11) /* Bit 11:      Pause State */
-#define GM_GPSR_TX_ACTIVE      (1<<10) /* Bit 10:      Tx in Progress */
-#define GM_GPSR_EXC_COL                (1<<9)  /* Bit  9:      Excessive Collisions Occured */
-#define GM_GPSR_LAT_COL                (1<<8)  /* Bit  8:      Late Collisions Occured */
-                                                               /* Bit  7..6:   reserved */
-#define GM_GPSR_PHY_ST_CH      (1<<5)  /* Bit  5:      PHY Status Change */
-#define GM_GPSR_GIG_SPEED      (1<<4)  /* Bit  4:      Gigabit Speed (1 = 1000 Mbps) */
-#define GM_GPSR_PART_MODE      (1<<3)  /* Bit  3:      Partition mode */
-#define GM_GPSR_FC_RX_DIS      (1<<2)  /* Bit  2:      Rx Flow Control Mode Disabled */
-#define GM_GPSR_PROM_EN                (1<<1)  /* Bit  1:      Promiscuous Mode Enabled */
-                                                               /* Bit  0:      reserved */
-
-/*     GM_GP_CTRL      16 bit r/w      General Purpose Control Register */
-                                                               /* Bit 15:      reserved */
-#define GM_GPCR_PROM_ENA       (1<<14) /* Bit 14:      Enable Promiscuous Mode */
-#define GM_GPCR_FC_TX_DIS      (1<<13) /* Bit 13:      Disable Tx Flow Control Mode */
-#define GM_GPCR_TX_ENA         (1<<12) /* Bit 12:      Enable Transmit */
-#define GM_GPCR_RX_ENA         (1<<11) /* Bit 11:      Enable Receive */
-#define GM_GPCR_BURST_ENA      (1<<10) /* Bit 10:      Enable Burst Mode */
-#define GM_GPCR_LOOP_ENA       (1<<9)  /* Bit  9:      Enable MAC Loopback Mode */
-#define GM_GPCR_PART_ENA       (1<<8)  /* Bit  8:      Enable Partition Mode */
-#define GM_GPCR_GIGS_ENA       (1<<7)  /* Bit  7:      Gigabit Speed (1000 Mbps) */
-#define GM_GPCR_FL_PASS                (1<<6)  /* Bit  6:      Force Link Pass */
-#define GM_GPCR_DUP_FULL       (1<<5)  /* Bit  5:      Full Duplex Mode */
-#define GM_GPCR_FC_RX_DIS      (1<<4)  /* Bit  4:      Disable Rx Flow Control Mode */
-#define GM_GPCR_SPEED_100      (1<<3)  /* Bit  3:      Port Speed 100 Mbps */
-#define GM_GPCR_AU_DUP_DIS     (1<<2)  /* Bit  2:      Disable Auto-Update for Duplex */
-#define GM_GPCR_AU_FCT_DIS     (1<<1)  /* Bit  1:      Disable Auto-Update for Flow-c. */
-#define GM_GPCR_AU_SPD_DIS     (1<<0)  /* Bit  0:      Disable Auto-Update for Speed */
-
-#define GM_GPCR_SPEED_1000     (GM_GPCR_GIGS_ENA | GM_GPCR_SPEED_100)
-#define GM_GPCR_AU_ALL_DIS     (GM_GPCR_AU_DUP_DIS | GM_GPCR_AU_FCT_DIS |\
-                                                        GM_GPCR_AU_SPD_DIS)
-
-/*     GM_TX_CTRL                              16 bit r/w      Transmit Control Register */
-
-#define GM_TXCR_FORCE_JAM      (1<<15) /* Bit 15:      Force Jam / Flow-Control */
-#define GM_TXCR_CRC_DIS                (1<<14) /* Bit 14:      Disable insertion of CRC */
-#define GM_TXCR_PAD_DIS                (1<<13) /* Bit 13:      Disable padding of packets */
-#define GM_TXCR_COL_THR                (4<<10) /* Bit 12..10:  Collision Threshold */
-
-/*     GM_RX_CTRL                              16 bit r/w      Receive Control Register */
-#define GM_RXCR_UCF_ENA                (1<<15) /* Bit 15:      Enable Unicast filtering */
-#define GM_RXCR_MCF_ENA                (1<<14) /* Bit 14:      Enable Multicast filtering */
-#define GM_RXCR_CRC_DIS                (1<<13) /* Bit 13:      Remove 4-byte CRC */
-#define GM_RXCR_PASS_FC                (1<<12) /* Bit 12:      Pass FC packets to FIFO */
-
-/*     GM_TX_PARAM                             16 bit r/w      Transmit Parameter Register */
-#define GM_TXPA_JAMLEN_MSK     (0x03<<14)      /* Bit 15..14:  Jam Length */
-#define GM_TXPA_JAMIPG_MSK     (0x1f<<9)       /* Bit 13..9:   Jam IPG */
-#define GM_TXPA_JAMDAT_MSK     (0x1f<<4)       /* Bit  8..4:   IPG Jam to Data */
-                                                               /* Bit  3..0:   reserved */
-#define JAM_LEN_VAL(x)         SHIFT14(x)
-#define JAM_IPG_VAL(x)         SHIFT9(x)
-#define IPG_JAM_DATA(x)                SHIFT4(x)
-
-/*     GM_SERIAL_MODE                  16 bit r/w      Serial Mode Register */
-#define GM_SMOD_DATABL_MSK     (0x1f<<11)      /* Bit 15..11:  Data Blinder */
-#define GM_SMOD_LIMIT_4                (1<<10) /* Bit 10:      4 consecutive transmit trials */
-#define GM_SMOD_VLAN_ENA       (1<<9)  /* Bit  9:      Enable VLAN  (Max. Frame Length) */
-#define GM_SMOD_JUMBO_ENA      (1<<8)  /* Bit  8:      Enable Jumbo (Max. Frame Length) */
-                                                               /* Bit  7..5:   reserved */
-#define GM_SMOD_IPG_MSK                0x1f    /* Bit 4..0:    Inter-Packet Gap (IPG) */
-
-#define DATA_BLIND_VAL(x)      SHIFT11(x)
-#define DATA_BLIND_FAST_ETH    0x1c
-#define DATA_BLIND_GIGABIT     4
-
-#define IPG_VAL_FAST_ETH       0x1e
-#define IPG_VAL_GIGABIT                6
-
-/*     GM_SMI_CTRL                             16 bit r/w      SMI Control Register */
-
-#define GM_SMI_CT_PHY_AD(x)    SHIFT11(x)
-#define GM_SMI_CT_REG_AD(x)    SHIFT6(x)
-#define GM_SMI_CT_OP_RD                (1<<5)  /* Bit  5:      OpCode Read (0=Write)*/
-#define GM_SMI_CT_RD_VAL       (1<<4)  /* Bit  4:      Read Valid (Read completed) */
-#define GM_SMI_CT_BUSY         (1<<3)  /* Bit  3:      Busy (Operation in progress) */
-                                                               /* Bit   2..0:  reserved */
-
-/*     GM_PHY_ADDR                             16 bit r/w      GPHY Address Register */
-                                                               /* Bit  15..6:  reserved */
-#define GM_PAR_MIB_CLR         (1<<5)  /* Bit  5:      Set MIB Clear Counter Mode */
-#define GM_PAR_MIB_TST         (1<<4)  /* Bit  4:      MIB Load Counter (Test Mode) */
-                                                               /* Bit   3..0:  reserved */
-
-/* Receive Frame Status Encoding */
-#define GMR_FS_LEN     (0xffffUL<<16)  /* Bit 31..16:  Rx Frame Length */
-                                                               /* Bit  15..14: reserved */
-#define GMR_FS_VLAN            (1L<<13)        /* Bit 13:      VLAN Packet */
-#define GMR_FS_JABBER  (1L<<12)        /* Bit 12:      Jabber Packet */
-#define GMR_FS_UN_SIZE (1L<<11)        /* Bit 11:      Undersize Packet */
-#define GMR_FS_MC              (1L<<10)        /* Bit 10:      Multicast Packet */
-#define GMR_FS_BC              (1L<<9)         /* Bit  9:      Broadcast Packet */
-#define GMR_FS_RX_OK   (1L<<8)         /* Bit  8:      Receive OK (Good Packet) */
-#define GMR_FS_GOOD_FC (1L<<7)         /* Bit  7:      Good Flow-Control Packet */
-#define GMR_FS_BAD_FC  (1L<<6)         /* Bit  6:      Bad  Flow-Control Packet */
-#define GMR_FS_MII_ERR (1L<<5)         /* Bit  5:      MII Error */
-#define GMR_FS_LONG_ERR        (1L<<4)         /* Bit  4:      Too Long Packet */
-#define GMR_FS_FRAGMENT        (1L<<3)         /* Bit  3:      Fragment */
-                                                               /* Bit  2:      reserved */
-#define GMR_FS_CRC_ERR (1L<<1)         /* Bit  1:      CRC Error */
-#define GMR_FS_RX_FF_OV        (1L<<0)         /* Bit  0:      Rx FIFO Overflow */
-
-/*
- * GMR_FS_ANY_ERR (analogous to XMR_FS_ANY_ERR)
- */
-#define GMR_FS_ANY_ERR (GMR_FS_CRC_ERR | \
-                       GMR_FS_LONG_ERR | \
-                       GMR_FS_MII_ERR | \
-                       GMR_FS_BAD_FC | \
-                       GMR_FS_GOOD_FC | \
-                       GMR_FS_JABBER)
-
-/* Rx GMAC FIFO Flush Mask (default) */
-#define RX_FF_FL_DEF_MSK       (GMR_FS_CRC_ERR | \
-                       GMR_FS_RX_FF_OV | \
-                       GMR_FS_MII_ERR | \
-                       GMR_FS_BAD_FC | \
-                       GMR_FS_GOOD_FC | \
-                       GMR_FS_UN_SIZE | \
-                       GMR_FS_JABBER)
-
-/* typedefs *******************************************************************/
-
-
-/* function prototypes ********************************************************/
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* __INC_XMAC_H */
+/******************************************************************************
+ *
+ * Name:       xmac_ii.h
+ * Project:    GEnesis, PCI Gigabit Ethernet Adapter
+ * Version:    $Revision: 1.1.1.1 $
+ * Date:       $Date: 2009/03/25 22:22:10 $
+ * Purpose:    Defines and Macros for Gigabit Ethernet Controller
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ *     (C)Copyright 1998-2003 SysKonnect GmbH.
+ *
+ *     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.
+ *
+ *     The information in this file is provided "AS IS" without warranty.
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ * History:
+ *
+ *     $Log: xmac_ii.h,v $
+ *     Revision 1.1.1.1  2009/03/25 22:22:10  kenagy
+ *     no message
+ *     
+ *     Revision 1.46  2003/01/28 09:47:45  rschmidt
+ *     Added defines for copper MDI/MDIX configuration
+ *     Added defines for LED Control Register
+ *     Editorial changes
+ *
+ *     Revision 1.45  2002/12/10 14:35:13  rschmidt
+ *     Corrected defines for Extended PHY Specific Control
+ *     Added defines for Ext. PHY Specific Ctrl 2 Reg. (Fiber specific)
+ *
+ *     Revision 1.44  2002/12/09 14:58:41  rschmidt
+ *     Added defines for Ext. PHY Specific Ctrl Reg. (downshift feature)
+ *     Added 'GMR_FS_UN_SIZE'-Bit to Rx GMAC FIFO Flush Mask
+ *
+ *     Revision 1.43  2002/12/05 10:14:45  rschmidt
+ *     Added define for GMAC's Half Duplex Burst Mode
+ *     Added define for Rx GMAC FIFO Flush Mask (default)
+ *
+ *     Revision 1.42  2002/11/12 16:48:19  rschmidt
+ *     Added defines for Cable Diagnostic Register (GPHY)
+ *     Editorial changes
+ *
+ *     Revision 1.41  2002/10/21 11:20:22  rschmidt
+ *     Added bit GMR_FS_GOOD_FC to GMR_FS_ANY_ERR
+ *     Editorial changes
+ *
+ *     Revision 1.40  2002/10/14 14:54:14  rschmidt
+ *     Added defines for GPHY Specific Status and GPHY Interrupt Status
+ *     Added bits PHY_M_IS_AN_ERROR and PHY_M_IS_FIFO_ERROR to PHY_M_DEF_MSK
+ *     Editorial changes
+ *
+ *     Revision 1.39  2002/10/10 15:53:44  mkarl
+ *     added some bit definitions for link speed status and LED's
+ *
+ *     Revision 1.38  2002/08/21 16:23:46  rschmidt
+ *     Added defines for PHY Specific Ctrl Reg
+ *     Editorial changes
+ *
+ *     Revision 1.37  2002/08/16 14:50:33  rschmidt
+ *     Added defines for Auto-Neg. Advertisement YUKON Fiber (88E1011S only)
+ *     Changed define PHY_M_DEF_MSK for GPHY IRQ Mask
+ *     Editorial changes
+ *
+ *     Revision 1.36  2002/08/12 13:21:10  rschmidt
+ *     Added defines for different Broadcom PHY Ids
+ *
+ *     Revision 1.35  2002/08/08 15:58:01  rschmidt
+ *     Added defines for Manual LED Override register (YUKON)
+ *     Editorial changes
+ *
+ *     Revision 1.34  2002/07/31 17:23:36  rwahl
+ *     Added define GMR_FS_ANY_ERR (analogous to XMR_FS_ANY_ERR).
+ *
+ *     Revision 1.33  2002/07/23 16:03:37  rschmidt
+ *     Added defines for GPHY registers
+ *     Editorial changes
+ *
+ *     Revision 1.32  2002/07/15 18:14:37  rwahl
+ *     Added GMAC MIB counters definitions.
+ *     Editorial changes.
+ *
+ *     Revision 1.31  2002/07/15 15:42:50  rschmidt
+ *     Removed defines from PHY specific reg. which are
+ *     common to all PHYs
+ *     Added defines for GMAC MIB Counters
+ *     Editorial changes
+ *
+ *     Revision 1.30  2002/06/05 08:22:12  rschmidt
+ *     Changed defines for GMAC Rx Control Register and Rx Status
+ *     Editorial changes
+ *
+ *     Revision 1.29  2002/04/25 11:43:56  rschmidt
+ *     Added define PHY_B_AS_PAUSE_MSK for BCom Pause Res.
+ *     Added new registers and defines for YUKON (GMAC, GPHY)
+ *     Added Receive Frame Status Encoding for YUKON
+ *     Editorial changes
+ *
+ *     Revision 1.28  2000/11/09 12:32:49  rassmann
+ *     Renamed variables.
+ *
+ *     Revision 1.27  2000/05/17 11:00:46  malthoff
+ *     Add bit for enable/disable power management in BCOM chip.
+ *
+ *     Revision 1.26  1999/11/22 14:03:00  cgoos
+ *     Changed license header to GPL.
+ *
+ *     Revision 1.25  1999/08/12 19:19:38  malthoff
+ *     Add PHY_B_AC_TX_TST bit according to BCOM A1 errata sheet.
+ *
+ *     Revision 1.24  1999/07/30 11:27:21  cgoos
+ *     Fixed a missing end-of-comment.
+ *
+ *     Revision 1.23  1999/07/30 07:03:31  malthoff
+ *     Cut some long comments.
+ *     Correct the XMAC PHY ID definitions.
+ *
+ *     Revision 1.22  1999/05/19 07:33:18  cgoos
+ *     Changes for 1000Base-T.
+ *
+ *     Revision 1.21  1999/03/25 07:46:11  malthoff
+ *     Add XM_HW_CFG, XM_TS_READ, and XM_TS_LOAD registers.
+ *
+ *     Revision 1.20  1999/03/12 13:36:09  malthoff
+ *     Remove __STDC__.
+ *
+ *     Revision 1.19  1998/12/10 12:22:54  gklug
+ *     fix: RX_PAGE must be in interrupt mask
+ *
+ *     Revision 1.18  1998/12/10 10:36:36  gklug
+ *     fix: swap of pause bits
+ *
+ *     Revision 1.17  1998/11/18 13:21:45  gklug
+ *     fix: Default interrupt mask
+ *
+ *     Revision 1.16  1998/10/29 15:53:21  gklug
+ *     fix: Default mask uses ASS (GP0) signal
+ *
+ *     Revision 1.15  1998/10/28 13:52:52  malthoff
+ *     Add new bits in RX_CMD register.
+ *
+ *     Revision 1.14  1998/10/19 15:34:53  gklug
+ *     fix: typos
+ *
+ *     Revision 1.13  1998/10/14 07:19:03  malthoff
+ *     bug fix: Every define which describes bit 31
+ *     must be declared as unsigned long 'UL'.
+ *     fix bit definitions of PHY_AN_RFB and PHY_AN_PAUSE.
+ *     Remove ANP defines. Rework the RFB defines.
+ *
+ *     Revision 1.12  1998/10/14 06:22:44  cgoos
+ *     Changed shifted constant to ULONG.
+ *
+ *     Revision 1.11  1998/10/14 05:43:26  gklug
+ *     add: shift pause coding
+ *     fix: PAUSE bits definition
+ *
+ *     Revision 1.10  1998/10/13 09:19:21  malthoff
+ *     Again change XMR_FS_ANY_ERR because of new info from XaQti.
+ *
+ *     Revision 1.9  1998/10/09 07:58:30  malthoff
+ *     Add XMR_FS_FCS_ERR to XMR_FS_ANY_ERR.
+ *
+ *     Revision 1.8  1998/10/09 07:18:17  malthoff
+ *     bug fix of a bug fix: XM_PAUSE_MODE and XM_DEF_MODE
+ *     are not inverted! Bug XM_DEF_MSK is inverted.
+ *
+ *     Revision 1.7  1998/10/05 08:04:32  malthoff
+ *     bug fix: XM_PAUSE_MODE and XM_DEF_MODE
+ *     must be inverted declarations.
+ *
+ *     Revision 1.6  1998/09/28 13:38:18  malthoff
+ *     Add default modes and masks XM_DEF_MSK,
+ *     XM_PAUSE_MODE and XM_DEF_MODE
+ *
+ *     Revision 1.5  1998/09/16 14:42:04  malthoff
+ *     Bug Fix: XM_GP_PORT is a 32 bit (not a 16 bit) register.
+ *
+ *     Revision 1.4  1998/08/20 14:59:47  malthoff
+ *     Rework this file after reading the XaQti data sheet
+ *     "Differences between Rev. B2 & Rev. C XMAC II".
+ *     This file is now 100% XMAC II Rev. C complained.
+ *
+ *     Revision 1.3  1998/06/29 12:18:23  malthoff
+ *     Correct XMR_FS_ANY_ERR definition.
+ *
+ *     Revision 1.2  1998/06/29 12:10:56  malthoff
+ *     Add define XMR_FS_ANY_ERR.
+ *
+ *     Revision 1.1  1998/06/19 13:37:17  malthoff
+ *     created.
+ *
+ *
+ ******************************************************************************/
+
+#ifndef __INC_XMAC_H
+#define __INC_XMAC_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+/* defines ********************************************************************/
+
+/*
+ * XMAC II registers
+ *
+ * The XMAC registers are 16 or 32 bits wide.
+ * The XMACs host processor interface is set to 16 bit mode,
+ * therefore ALL registers will be addressed with 16 bit accesses.
+ *
+ * The following macros are provided to access the XMAC registers
+ * XM_IN16(), XM_OUT16, XM_IN32(), XM_OUT32(), XM_INADR(), XM_OUTADR(),
+ * XM_INHASH(), and XM_OUTHASH().
+ * The macros are defined in SkGeHw.h.
+ *
+ * Note:       NA reg  = Network Address e.g DA, SA etc.
+ *
+ */
+#define XM_MMU_CMD             0x0000  /* 16 bit r/w   MMU Command Register */
+       /* 0x0004:              reserved */
+#define XM_POFF                        0x0008  /* 32 bit r/w   Packet Offset Register */
+#define XM_BURST               0x000c  /* 32 bit r/w   Burst Register for half duplex*/
+#define XM_1L_VLAN_TAG 0x0010  /* 16 bit r/w   One Level VLAN Tag ID */
+#define XM_2L_VLAN_TAG 0x0014  /* 16 bit r/w   Two Level VLAN Tag ID */
+       /* 0x0018 - 0x001e:     reserved */
+#define XM_TX_CMD              0x0020  /* 16 bit r/w   Transmit Command Register */
+#define XM_TX_RT_LIM   0x0024  /* 16 bit r/w   Transmit Retry Limit Register */
+#define XM_TX_STIME            0x0028  /* 16 bit r/w   Transmit Slottime Register */
+#define XM_TX_IPG              0x002c  /* 16 bit r/w   Transmit Inter Packet Gap */
+#define XM_RX_CMD              0x0030  /* 16 bit r/w   Receive Command Register */
+#define XM_PHY_ADDR            0x0034  /* 16 bit r/w   PHY Address Register */
+#define XM_PHY_DATA            0x0038  /* 16 bit r/w   PHY Data Register */
+       /* 0x003c:              reserved */
+#define XM_GP_PORT             0x0040  /* 32 bit r/w   General Purpose Port Register */
+#define XM_IMSK                        0x0044  /* 16 bit r/w   Interrupt Mask Register */
+#define XM_ISRC                        0x0048  /* 16 bit r/o   Interrupt Status Register */
+#define XM_HW_CFG              0x004c  /* 16 bit r/w   Hardware Config Register */
+       /* 0x0050 - 0x005e:     reserved */
+#define XM_TX_LO_WM            0x0060  /* 16 bit r/w   Tx FIFO Low Water Mark */
+#define XM_TX_HI_WM            0x0062  /* 16 bit r/w   Tx FIFO High Water Mark */
+#define XM_TX_THR              0x0064  /* 16 bit r/w   Tx Request Threshold */
+#define XM_HT_THR              0x0066  /* 16 bit r/w   Host Request Threshold */
+#define XM_PAUSE_DA            0x0068  /* NA reg r/w   Pause Destination Address */
+       /* 0x006e:              reserved */
+#define XM_CTL_PARA            0x0070  /* 32 bit r/w   Control Parameter Register */
+#define XM_MAC_OPCODE  0x0074  /* 16 bit r/w   Opcode for MAC control frames */
+#define XM_MAC_PTIME   0x0076  /* 16 bit r/w   Pause time for MAC ctrl frames*/
+#define XM_TX_STAT             0x0078  /* 32 bit r/o   Tx Status LIFO Register */
+
+       /* 0x0080 - 0x00fc:     16 NA reg r/w   Exact Match Address Registers */
+       /*                              use the XM_EXM() macro to address */
+#define XM_EXM_START   0x0080  /* r/w  Start Address of the EXM Regs */
+
+       /*
+        * XM_EXM(Reg)
+        *
+        * returns the XMAC address offset of specified Exact Match Addr Reg
+        *
+        * para:        Reg     EXM register to addr    (0 .. 15)
+        *
+        * usage:       XM_INADDR(IoC, MAC_1, XM_EXM(i), &val[i]);
+        */
+#define XM_EXM(Reg)    (XM_EXM_START + ((Reg) << 3))
+
+#define XM_SRC_CHK             0x0100  /* NA reg r/w   Source Check Address Register */
+#define XM_SA                  0x0108  /* NA reg r/w   Station Address Register */
+#define XM_HSM                 0x0110  /* 64 bit r/w   Hash Match Address Registers */
+#define XM_RX_LO_WM            0x0118  /* 16 bit r/w   Receive Low Water Mark */
+#define XM_RX_HI_WM            0x011a  /* 16 bit r/w   Receive High Water Mark */
+#define XM_RX_THR              0x011c  /* 32 bit r/w   Receive Request Threshold */
+#define XM_DEV_ID              0x0120  /* 32 bit r/o   Device ID Register */
+#define XM_MODE                        0x0124  /* 32 bit r/w   Mode Register */
+#define XM_LSA                 0x0128  /* NA reg r/o   Last Source Register */
+       /* 0x012e:              reserved */
+#define XM_TS_READ             0x0130  /* 32 bit r/o   Time Stamp Read Register */
+#define XM_TS_LOAD             0x0134  /* 32 bit r/o   Time Stamp Load Value */
+       /* 0x0138 - 0x01fe:     reserved */
+#define XM_STAT_CMD    0x0200  /* 16 bit r/w   Statistics Command Register */
+#define XM_RX_CNT_EV   0x0204  /* 32 bit r/o   Rx Counter Event Register */
+#define XM_TX_CNT_EV   0x0208  /* 32 bit r/o   Tx Counter Event Register */
+#define XM_RX_EV_MSK   0x020c  /* 32 bit r/w   Rx Counter Event Mask */
+#define XM_TX_EV_MSK   0x0210  /* 32 bit r/w   Tx Counter Event Mask */
+       /* 0x0204 - 0x027e:     reserved */
+#define XM_TXF_OK              0x0280  /* 32 bit r/o   Frames Transmitted OK Conuter */
+#define XM_TXO_OK_HI   0x0284  /* 32 bit r/o   Octets Transmitted OK High Cnt*/
+#define XM_TXO_OK_LO   0x0288  /* 32 bit r/o   Octets Transmitted OK Low Cnt */
+#define XM_TXF_BC_OK   0x028c  /* 32 bit r/o   Broadcast Frames Xmitted OK */
+#define XM_TXF_MC_OK   0x0290  /* 32 bit r/o   Multicast Frames Xmitted OK */
+#define XM_TXF_UC_OK   0x0294  /* 32 bit r/o   Unicast Frames Xmitted OK */
+#define XM_TXF_LONG            0x0298  /* 32 bit r/o   Tx Long Frame Counter */
+#define XM_TXE_BURST   0x029c  /* 32 bit r/o   Tx Burst Event Counter */
+#define XM_TXF_MPAUSE  0x02a0  /* 32 bit r/o   Tx Pause MAC Ctrl Frame Cnt */
+#define XM_TXF_MCTRL   0x02a4  /* 32 bit r/o   Tx MAC Ctrl Frame Counter */
+#define XM_TXF_SNG_COL 0x02a8  /* 32 bit r/o   Tx Single Collision Counter */
+#define XM_TXF_MUL_COL 0x02ac  /* 32 bit r/o   Tx Multiple Collision Counter */
+#define XM_TXF_ABO_COL 0x02b0  /* 32 bit r/o   Tx aborted due to Exces. Col. */
+#define XM_TXF_LAT_COL 0x02b4  /* 32 bit r/o   Tx Late Collision Counter */
+#define XM_TXF_DEF             0x02b8  /* 32 bit r/o   Tx Deferred Frame Counter */
+#define XM_TXF_EX_DEF  0x02bc  /* 32 bit r/o   Tx Excessive Deferall Counter */
+#define XM_TXE_FIFO_UR 0x02c0  /* 32 bit r/o   Tx FIFO Underrun Event Cnt */
+#define XM_TXE_CS_ERR  0x02c4  /* 32 bit r/o   Tx Carrier Sense Error Cnt */
+#define XM_TXP_UTIL            0x02c8  /* 32 bit r/o   Tx Utilization in % */
+       /* 0x02cc - 0x02ce:     reserved */
+#define XM_TXF_64B             0x02d0  /* 32 bit r/o   64 Byte Tx Frame Counter */
+#define XM_TXF_127B            0x02d4  /* 32 bit r/o   65-127 Byte Tx Frame Counter */
+#define XM_TXF_255B            0x02d8  /* 32 bit r/o   128-255 Byte Tx Frame Counter */
+#define XM_TXF_511B            0x02dc  /* 32 bit r/o   256-511 Byte Tx Frame Counter */
+#define XM_TXF_1023B   0x02e0  /* 32 bit r/o   512-1023 Byte Tx Frame Counter*/
+#define XM_TXF_MAX_SZ  0x02e4  /* 32 bit r/o   1024-MaxSize Byte Tx Frame Cnt*/
+       /* 0x02e8 - 0x02fe:     reserved */
+#define XM_RXF_OK              0x0300  /* 32 bit r/o   Frames Received OK */
+#define XM_RXO_OK_HI   0x0304  /* 32 bit r/o   Octets Received OK High Cnt */
+#define XM_RXO_OK_LO   0x0308  /* 32 bit r/o   Octets Received OK Low Counter*/
+#define XM_RXF_BC_OK   0x030c  /* 32 bit r/o   Broadcast Frames Received OK */
+#define XM_RXF_MC_OK   0x0310  /* 32 bit r/o   Multicast Frames Received OK */
+#define XM_RXF_UC_OK   0x0314  /* 32 bit r/o   Unicast Frames Received OK */
+#define XM_RXF_MPAUSE  0x0318  /* 32 bit r/o   Rx Pause MAC Ctrl Frame Cnt */
+#define XM_RXF_MCTRL   0x031c  /* 32 bit r/o   Rx MAC Ctrl Frame Counter */
+#define XM_RXF_INV_MP  0x0320  /* 32 bit r/o   Rx invalid Pause Frame Cnt */
+#define XM_RXF_INV_MOC 0x0324  /* 32 bit r/o   Rx Frames with inv. MAC Opcode*/
+#define XM_RXE_BURST   0x0328  /* 32 bit r/o   Rx Burst Event Counter */
+#define XM_RXE_FMISS   0x032c  /* 32 bit r/o   Rx Missed Frames Event Cnt */
+#define XM_RXF_FRA_ERR 0x0330  /* 32 bit r/o   Rx Framing Error Counter */
+#define XM_RXE_FIFO_OV 0x0334  /* 32 bit r/o   Rx FIFO overflow Event Cnt */
+#define XM_RXF_JAB_PKT 0x0338  /* 32 bit r/o   Rx Jabber Packet Frame Cnt */
+#define XM_RXE_CAR_ERR 0x033c  /* 32 bit r/o   Rx Carrier Event Error Cnt */
+#define XM_RXF_LEN_ERR 0x0340  /* 32 bit r/o   Rx in Range Length Error */
+#define XM_RXE_SYM_ERR 0x0344  /* 32 bit r/o   Rx Symbol Error Counter */
+#define XM_RXE_SHT_ERR 0x0348  /* 32 bit r/o   Rx Short Event Error Cnt */
+#define XM_RXE_RUNT            0x034c  /* 32 bit r/o   Rx Runt Event Counter */
+#define XM_RXF_LNG_ERR 0x0350  /* 32 bit r/o   Rx Frame too Long Error Cnt */
+#define XM_RXF_FCS_ERR 0x0354  /* 32 bit r/o   Rx Frame Check Seq. Error Cnt */
+       /* 0x0358 - 0x035a:     reserved */
+#define XM_RXF_CEX_ERR 0x035c  /* 32 bit r/o   Rx Carrier Ext Error Frame Cnt*/
+#define XM_RXP_UTIL            0x0360  /* 32 bit r/o   Rx Utilization in % */
+       /* 0x0364 - 0x0366:     reserved */
+#define XM_RXF_64B             0x0368  /* 32 bit r/o   64 Byte Rx Frame Counter */
+#define XM_RXF_127B            0x036c  /* 32 bit r/o   65-127 Byte Rx Frame Counter */
+#define XM_RXF_255B            0x0370  /* 32 bit r/o   128-255 Byte Rx Frame Counter */
+#define XM_RXF_511B            0x0374  /* 32 bit r/o   256-511 Byte Rx Frame Counter */
+#define XM_RXF_1023B   0x0378  /* 32 bit r/o   512-1023 Byte Rx Frame Counter*/
+#define XM_RXF_MAX_SZ  0x037c  /* 32 bit r/o   1024-MaxSize Byte Rx Frame Cnt*/
+       /* 0x02e8 - 0x02fe:     reserved */
+
+
+/*----------------------------------------------------------------------------*/
+/*
+ * XMAC Bit Definitions
+ *
+ * If the bit access behaviour differs from the register access behaviour
+ * (r/w, r/o) this is documented after the bit number.
+ * The following bit access behaviours are used:
+ *     (sc)    self clearing
+ *     (ro)    read only
+ */
+
+/*     XM_MMU_CMD      16 bit r/w      MMU Command Register */
+                                                               /* Bit 15..13:  reserved */
+#define XM_MMU_PHY_RDY (1<<12) /* Bit 12:      PHY Read Ready */
+#define XM_MMU_PHY_BUSY        (1<<11) /* Bit 11:      PHY Busy */
+#define XM_MMU_IGN_PF  (1<<10) /* Bit 10:      Ignore Pause Frame */
+#define XM_MMU_MAC_LB  (1<<9)  /* Bit  9:      Enable MAC Loopback */
+                                                               /* Bit  8:      reserved */
+#define XM_MMU_FRC_COL (1<<7)  /* Bit  7:      Force Collision */
+#define XM_MMU_SIM_COL (1<<6)  /* Bit  6:      Simulate Collision */
+#define XM_MMU_NO_PRE  (1<<5)  /* Bit  5:      No MDIO Preamble */
+#define XM_MMU_GMII_FD (1<<4)  /* Bit  4:      GMII uses Full Duplex */
+#define XM_MMU_RAT_CTRL        (1<<3)  /* Bit  3:      Enable Rate Control */
+#define XM_MMU_GMII_LOOP (1<<2)        /* Bit  2:      PHY is in Loopback Mode */
+#define XM_MMU_ENA_RX  (1<<1)  /* Bit  1:      Enable Receiver */
+#define XM_MMU_ENA_TX  (1<<0)  /* Bit  0:      Enable Transmitter */
+
+
+/*     XM_TX_CMD       16 bit r/w      Transmit Command Register */
+                                                               /* Bit 15..7:   reserved */
+#define XM_TX_BK2BK            (1<<6)  /* Bit  6:      Ignor Carrier Sense (Tx Bk2Bk)*/
+#define XM_TX_ENC_BYP  (1<<5)  /* Bit  5:      Set Encoder in Bypass Mode */
+#define XM_TX_SAM_LINE (1<<4)  /* Bit  4: (sc) Start utilization calculation */
+#define XM_TX_NO_GIG_MD        (1<<3)  /* Bit  3:      Disable Carrier Extension */
+#define XM_TX_NO_PRE   (1<<2)  /* Bit  2:      Disable Preamble Generation */
+#define XM_TX_NO_CRC   (1<<1)  /* Bit  1:      Disable CRC Generation */
+#define XM_TX_AUTO_PAD (1<<0)  /* Bit  0:      Enable Automatic Padding */
+
+
+/*     XM_TX_RT_LIM    16 bit r/w      Transmit Retry Limit Register */
+                                                               /* Bit 15..5:   reserved */
+#define XM_RT_LIM_MSK  0x1f    /* Bit  4..0:   Tx Retry Limit */
+
+
+/*     XM_TX_STIME     16 bit r/w      Transmit Slottime Register */
+                                                               /* Bit 15..7:   reserved */
+#define XM_STIME_MSK   0x7f    /* Bit  6..0:   Tx Slottime bits */
+
+
+/*     XM_TX_IPG       16 bit r/w      Transmit Inter Packet Gap */
+                                                               /* Bit 15..8:   reserved */
+#define XM_IPG_MSK             0xff    /* Bit  7..0:   IPG value bits */
+
+
+/*     XM_RX_CMD       16 bit r/w      Receive Command Register */
+                                                               /* Bit 15..9:   reserved */
+#define XM_RX_LENERR_OK (1<<8) /* Bit  8       don't set Rx Err bit for */
+                                                               /*              inrange error packets */
+#define XM_RX_BIG_PK_OK        (1<<7)  /* Bit  7       don't set Rx Err bit for */
+                                                               /*              jumbo packets */
+#define XM_RX_IPG_CAP  (1<<6)  /* Bit  6       repl. type field with IPG */
+#define XM_RX_TP_MD            (1<<5)  /* Bit  5:      Enable transparent Mode */
+#define XM_RX_STRIP_FCS        (1<<4)  /* Bit  4:      Enable FCS Stripping */
+#define XM_RX_SELF_RX  (1<<3)  /* Bit  3:      Enable Rx of own packets */
+#define XM_RX_SAM_LINE (1<<2)  /* Bit  2: (sc) Start utilization calculation */
+#define XM_RX_STRIP_PAD        (1<<1)  /* Bit  1:      Strip pad bytes of Rx frames */
+#define XM_RX_DIS_CEXT (1<<0)  /* Bit  0:      Disable carrier ext. check */
+
+
+/*     XM_PHY_ADDR     16 bit r/w      PHY Address Register */
+                                                               /* Bit 15..5:   reserved */
+#define XM_PHY_ADDR_SZ 0x1f    /* Bit  4..0:   PHY Address bits */
+
+
+/*     XM_GP_PORT      32 bit r/w      General Purpose Port Register */
+                                                               /* Bit 31..7:   reserved */
+#define XM_GP_ANIP             (1L<<6) /* Bit  6: (ro) Auto-Neg. in progress */
+#define XM_GP_FRC_INT  (1L<<5) /* Bit  5: (sc) Force Interrupt */
+                                                               /* Bit  4:      reserved */
+#define XM_GP_RES_MAC  (1L<<3) /* Bit  3: (sc) Reset MAC and FIFOs */
+#define XM_GP_RES_STAT (1L<<2) /* Bit  2: (sc) Reset the statistics module */
+                                                               /* Bit  1:      reserved */
+#define XM_GP_INP_ASS  (1L<<0) /* Bit  0: (ro) GP Input Pin asserted */
+
+
+/*     XM_IMSK         16 bit r/w      Interrupt Mask Register */
+/*     XM_ISRC         16 bit r/o      Interrupt Status Register */
+                                                               /* Bit 15:      reserved */
+#define XM_IS_LNK_AE   (1<<14) /* Bit 14:      Link Asynchronous Event */
+#define XM_IS_TX_ABORT (1<<13) /* Bit 13:      Transmit Abort, late Col. etc */
+#define XM_IS_FRC_INT  (1<<12) /* Bit 12:      Force INT bit set in GP */
+#define XM_IS_INP_ASS  (1<<11) /* Bit 11:      Input Asserted, GP bit 0 set */
+#define XM_IS_LIPA_RC  (1<<10) /* Bit 10:      Link Partner requests config */
+#define XM_IS_RX_PAGE  (1<<9)  /* Bit  9:      Page Received */
+#define XM_IS_TX_PAGE  (1<<8)  /* Bit  8:      Next Page Loaded for Transmit */
+#define XM_IS_AND              (1<<7)  /* Bit  7:      Auto-Negotiation Done */
+#define XM_IS_TSC_OV   (1<<6)  /* Bit  6:      Time Stamp Counter Overflow */
+#define XM_IS_RXC_OV   (1<<5)  /* Bit  5:      Rx Counter Event Overflow */
+#define XM_IS_TXC_OV   (1<<4)  /* Bit  4:      Tx Counter Event Overflow */
+#define XM_IS_RXF_OV   (1<<3)  /* Bit  3:      Receive FIFO Overflow */
+#define XM_IS_TXF_UR   (1<<2)  /* Bit  2:      Transmit FIFO Underrun */
+#define XM_IS_TX_COMP  (1<<1)  /* Bit  1:      Frame Tx Complete */
+#define XM_IS_RX_COMP  (1<<0)  /* Bit  0:      Frame Rx Complete */
+
+#define XM_DEF_MSK     (~(XM_IS_INP_ASS | XM_IS_LIPA_RC | XM_IS_RX_PAGE |\
+                       XM_IS_AND | XM_IS_RXC_OV | XM_IS_TXC_OV | XM_IS_TXF_UR))
+
+
+/*     XM_HW_CFG       16 bit r/w      Hardware Config Register */
+                                                               /* Bit 15.. 4:  reserved */
+#define XM_HW_GEN_EOP  (1<<3)  /* Bit  3:      generate End of Packet pulse */
+#define XM_HW_COM4SIG  (1<<2)  /* Bit  2:      use Comma Detect for Sig. Det.*/
+                                                               /* Bit  1:      reserved */
+#define XM_HW_GMII_MD  (1<<0)  /* Bit  0:      GMII Interface selected */
+
+
+/*     XM_TX_LO_WM     16 bit r/w      Tx FIFO Low Water Mark */
+/*     XM_TX_HI_WM     16 bit r/w      Tx FIFO High Water Mark */
+                                                               /* Bit 15..10   reserved */
+#define XM_TX_WM_MSK   0x01ff  /* Bit  9.. 0   Tx FIFO Watermark bits */
+
+/*     XM_TX_THR       16 bit r/w      Tx Request Threshold */
+/*     XM_HT_THR       16 bit r/w      Host Request Threshold */
+/*     XM_RX_THR       16 bit r/w      Rx Request Threshold */
+                                                               /* Bit 15..11   reserved */
+#define XM_THR_MSK             0x03ff  /* Bit 10.. 0   Rx/Tx Request Threshold bits */
+
+
+/*     XM_TX_STAT      32 bit r/o      Tx Status LIFO Register */
+#define XM_ST_VALID            (1UL<<31)       /* Bit 31:      Status Valid */
+#define XM_ST_BYTE_CNT (0x3fffL<<17)   /* Bit 30..17:  Tx frame Length */
+#define XM_ST_RETRY_CNT        (0x1fL<<12)     /* Bit 16..12:  Retry Count */
+#define XM_ST_EX_COL   (1L<<11)        /* Bit 11:      Excessive Collisions */
+#define XM_ST_EX_DEF   (1L<<10)        /* Bit 10:      Excessive Deferral */
+#define XM_ST_BURST            (1L<<9)         /* Bit  9:      p. xmitted in burst md*/
+#define XM_ST_DEFER            (1L<<8)         /* Bit  8:      packet was defered */
+#define XM_ST_BC               (1L<<7)         /* Bit  7:      Broadcast packet */
+#define XM_ST_MC               (1L<<6)         /* Bit  6:      Multicast packet */
+#define XM_ST_UC               (1L<<5)         /* Bit  5:      Unicast packet */
+#define XM_ST_TX_UR            (1L<<4)         /* Bit  4:      FIFO Underrun occured */
+#define XM_ST_CS_ERR   (1L<<3)         /* Bit  3:      Carrier Sense Error */
+#define XM_ST_LAT_COL  (1L<<2)         /* Bit  2:      Late Collision Error */
+#define XM_ST_MUL_COL  (1L<<1)         /* Bit  1:      Multiple Collisions */
+#define XM_ST_SGN_COL  (1L<<0)         /* Bit  0:      Single Collision */
+
+/*     XM_RX_LO_WM     16 bit r/w      Receive Low Water Mark */
+/*     XM_RX_HI_WM     16 bit r/w      Receive High Water Mark */
+                                                                       /* Bit 15..11:  reserved */
+#define XM_RX_WM_MSK   0x03ff          /* Bit 11.. 0:  Rx FIFO Watermark bits */
+
+
+/*     XM_DEV_ID       32 bit r/o      Device ID Register */
+#define XM_DEV_OUI     (0x00ffffffUL<<8)       /* Bit 31..8:   Device OUI */
+#define XM_DEV_REV     (0x07L << 5)            /* Bit  7..5:   Chip Rev Num */
+
+
+/*     XM_MODE         32 bit r/w      Mode Register */
+                                                                       /* Bit 31..27:  reserved */
+#define XM_MD_ENA_REJ  (1L<<26)        /* Bit 26:      Enable Frame Reject */
+#define XM_MD_SPOE_E   (1L<<25)        /* Bit 25:      Send Pause on Edge */
+                                                                       /*              extern generated */
+#define XM_MD_TX_REP   (1L<<24)        /* Bit 24:      Transmit Repeater Mode */
+#define XM_MD_SPOFF_I  (1L<<23)        /* Bit 23:      Send Pause on FIFO full */
+                                                                       /*              intern generated */
+#define XM_MD_LE_STW   (1L<<22)        /* Bit 22:      Rx Stat Word in Little Endian */
+#define XM_MD_TX_CONT  (1L<<21)        /* Bit 21:      Send Continuous */
+#define XM_MD_TX_PAUSE (1L<<20)        /* Bit 20: (sc) Send Pause Frame */
+#define XM_MD_ATS              (1L<<19)        /* Bit 19:      Append Time Stamp */
+#define XM_MD_SPOL_I   (1L<<18)        /* Bit 18:      Send Pause on Low */
+                                                                       /*              intern generated */
+#define XM_MD_SPOH_I   (1L<<17)        /* Bit 17:      Send Pause on High */
+                                                                       /*              intern generated */
+#define XM_MD_CAP              (1L<<16)        /* Bit 16:      Check Address Pair */
+#define XM_MD_ENA_HASH (1L<<15)        /* Bit 15:      Enable Hashing */
+#define XM_MD_CSA              (1L<<14)        /* Bit 14:      Check Station Address */
+#define XM_MD_CAA              (1L<<13)        /* Bit 13:      Check Address Array */
+#define XM_MD_RX_MCTRL (1L<<12)        /* Bit 12:      Rx MAC Control Frame */
+#define XM_MD_RX_RUNT  (1L<<11)        /* Bit 11:      Rx Runt Frames */
+#define XM_MD_RX_IRLE  (1L<<10)        /* Bit 10:      Rx in Range Len Err Frame */
+#define XM_MD_RX_LONG  (1L<<9)         /* Bit  9:      Rx Long Frame */
+#define XM_MD_RX_CRCE  (1L<<8)         /* Bit  8:      Rx CRC Error Frame */
+#define XM_MD_RX_ERR   (1L<<7)         /* Bit  7:      Rx Error Frame */
+#define XM_MD_DIS_UC   (1L<<6)         /* Bit  6:      Disable Rx Unicast */
+#define XM_MD_DIS_MC   (1L<<5)         /* Bit  5:      Disable Rx Multicast */
+#define XM_MD_DIS_BC   (1L<<4)         /* Bit  4:      Disable Rx Broadcast */
+#define XM_MD_ENA_PROM (1L<<3)         /* Bit  3:      Enable Promiscuous */
+#define XM_MD_ENA_BE   (1L<<2)         /* Bit  2:      Enable Big Endian */
+#define XM_MD_FTF              (1L<<1)         /* Bit  1: (sc) Flush Tx FIFO */
+#define XM_MD_FRF              (1L<<0)         /* Bit  0: (sc) Flush Rx FIFO */
+
+#define XM_PAUSE_MODE  (XM_MD_SPOE_E | XM_MD_SPOL_I | XM_MD_SPOH_I)
+#define XM_DEF_MODE            (XM_MD_RX_RUNT | XM_MD_RX_IRLE | XM_MD_RX_LONG |\
+                               XM_MD_RX_CRCE | XM_MD_RX_ERR | XM_MD_CSA | XM_MD_CAA)
+
+/*     XM_STAT_CMD     16 bit r/w      Statistics Command Register */
+                                                               /* Bit 16..6:   reserved */
+#define XM_SC_SNP_RXC  (1<<5)  /* Bit  5: (sc) Snap Rx Counters */
+#define XM_SC_SNP_TXC  (1<<4)  /* Bit  4: (sc) Snap Tx Counters */
+#define XM_SC_CP_RXC   (1<<3)  /* Bit  3:      Copy Rx Counters Continuously */
+#define XM_SC_CP_TXC   (1<<2)  /* Bit  2:      Copy Tx Counters Continuously */
+#define XM_SC_CLR_RXC  (1<<1)  /* Bit  1: (sc) Clear Rx Counters */
+#define XM_SC_CLR_TXC  (1<<0)  /* Bit  0: (sc) Clear Tx Counters */
+
+
+/*     XM_RX_CNT_EV    32 bit r/o      Rx Counter Event Register */
+/*     XM_RX_EV_MSK    32 bit r/w      Rx Counter Event Mask */
+#define XMR_MAX_SZ_OV  (1UL<<31)       /* Bit 31:      1024-MaxSize Rx Cnt Ov*/
+#define XMR_1023B_OV   (1L<<30)        /* Bit 30:      512-1023Byte Rx Cnt Ov*/
+#define XMR_511B_OV            (1L<<29)        /* Bit 29:      256-511 Byte Rx Cnt Ov*/
+#define XMR_255B_OV            (1L<<28)        /* Bit 28:      128-255 Byte Rx Cnt Ov*/
+#define XMR_127B_OV            (1L<<27)        /* Bit 27:      65-127 Byte Rx Cnt Ov */
+#define XMR_64B_OV             (1L<<26)        /* Bit 26:      64 Byte Rx Cnt Ov */
+#define XMR_UTIL_OV            (1L<<25)        /* Bit 25:      Rx Util Cnt Overflow */
+#define XMR_UTIL_UR            (1L<<24)        /* Bit 24:      Rx Util Cnt Underrun */
+#define XMR_CEX_ERR_OV (1L<<23)        /* Bit 23:      CEXT Err Cnt Ov */
+                                                                       /* Bit 22:      reserved */
+#define XMR_FCS_ERR_OV (1L<<21)        /* Bit 21:      Rx FCS Error Cnt Ov */
+#define XMR_LNG_ERR_OV (1L<<20)        /* Bit 20:      Rx too Long Err Cnt Ov*/
+#define XMR_RUNT_OV            (1L<<19)        /* Bit 19:      Runt Event Cnt Ov */
+#define XMR_SHT_ERR_OV (1L<<18)        /* Bit 18:      Rx Short Ev Err Cnt Ov*/
+#define XMR_SYM_ERR_OV (1L<<17)        /* Bit 17:      Rx Sym Err Cnt Ov */
+                                                                       /* Bit 16:      reserved */
+#define XMR_CAR_ERR_OV (1L<<15)        /* Bit 15:      Rx Carr Ev Err Cnt Ov */
+#define XMR_JAB_PKT_OV (1L<<14)        /* Bit 14:      Rx Jabb Packet Cnt Ov */
+#define XMR_FIFO_OV            (1L<<13)        /* Bit 13:      Rx FIFO Ov Ev Cnt Ov */
+#define XMR_FRA_ERR_OV (1L<<12)        /* Bit 12:      Rx Framing Err Cnt Ov */
+#define XMR_FMISS_OV   (1L<<11)        /* Bit 11:      Rx Missed Ev Cnt Ov */
+#define XMR_BURST              (1L<<10)        /* Bit 10:      Rx Burst Event Cnt Ov */
+#define XMR_INV_MOC            (1L<<9)         /* Bit  9:      Rx with inv. MAC OC Ov*/
+#define XMR_INV_MP             (1L<<8)         /* Bit  8:      Rx inv Pause Frame Ov */
+#define XMR_MCTRL_OV   (1L<<7)         /* Bit  7:      Rx MAC Ctrl-F Cnt Ov */
+#define XMR_MPAUSE_OV  (1L<<6)         /* Bit  6:      Rx Pause MAC Ctrl-F Ov*/
+#define XMR_UC_OK_OV   (1L<<5)         /* Bit  5:      Rx Unicast Frame CntOv*/
+#define XMR_MC_OK_OV   (1L<<4)         /* Bit  4:      Rx Multicast Cnt Ov */
+#define XMR_BC_OK_OV   (1L<<3)         /* Bit  3:      Rx Broadcast Cnt Ov */
+#define XMR_OK_LO_OV   (1L<<2)         /* Bit  2:      Octets Rx OK Low CntOv*/
+#define XMR_OK_HI_OV   (1L<<1)         /* Bit  1:      Octets Rx OK Hi Cnt Ov*/
+#define XMR_OK_OV              (1L<<0)         /* Bit  0:      Frames Received Ok Ov */
+
+#define XMR_DEF_MSK            (XMR_OK_LO_OV | XMR_OK_HI_OV)
+
+/*     XM_TX_CNT_EV    32 bit r/o      Tx Counter Event Register */
+/*     XM_TX_EV_MSK    32 bit r/w      Tx Counter Event Mask */
+                                                                       /* Bit 31..26:  reserved */
+#define XMT_MAX_SZ_OV  (1L<<25)        /* Bit 25:      1024-MaxSize Tx Cnt Ov*/
+#define XMT_1023B_OV   (1L<<24)        /* Bit 24:      512-1023Byte Tx Cnt Ov*/
+#define XMT_511B_OV            (1L<<23)        /* Bit 23:      256-511 Byte Tx Cnt Ov*/
+#define XMT_255B_OV            (1L<<22)        /* Bit 22:      128-255 Byte Tx Cnt Ov*/
+#define XMT_127B_OV            (1L<<21)        /* Bit 21:      65-127 Byte Tx Cnt Ov */
+#define XMT_64B_OV             (1L<<20)        /* Bit 20:      64 Byte Tx Cnt Ov */
+#define XMT_UTIL_OV            (1L<<19)        /* Bit 19:      Tx Util Cnt Overflow */
+#define XMT_UTIL_UR            (1L<<18)        /* Bit 18:      Tx Util Cnt Underrun */
+#define XMT_CS_ERR_OV  (1L<<17)        /* Bit 17:      Tx Carr Sen Err Cnt Ov*/
+#define XMT_FIFO_UR_OV (1L<<16)        /* Bit 16:      Tx FIFO Ur Ev Cnt Ov */
+#define XMT_EX_DEF_OV  (1L<<15)        /* Bit 15:      Tx Ex Deferall Cnt Ov */
+#define XMT_DEF                        (1L<<14)        /* Bit 14:      Tx Deferred Cnt Ov */
+#define XMT_LAT_COL_OV (1L<<13)        /* Bit 13:      Tx Late Col Cnt Ov */
+#define XMT_ABO_COL_OV (1L<<12)        /* Bit 12:      Tx abo dueto Ex Col Ov*/
+#define XMT_MUL_COL_OV (1L<<11)        /* Bit 11:      Tx Mult Col Cnt Ov */
+#define XMT_SNG_COL            (1L<<10)        /* Bit 10:      Tx Single Col Cnt Ov */
+#define XMT_MCTRL_OV   (1L<<9)         /* Bit  9:      Tx MAC Ctrl Counter Ov*/
+#define XMT_MPAUSE             (1L<<8)         /* Bit  8:      Tx Pause MAC Ctrl-F Ov*/
+#define XMT_BURST              (1L<<7)         /* Bit  7:      Tx Burst Event Cnt Ov */
+#define XMT_LONG               (1L<<6)         /* Bit  6:      Tx Long Frame Cnt Ov */
+#define XMT_UC_OK_OV   (1L<<5)         /* Bit  5:      Tx Unicast Cnt Ov */
+#define XMT_MC_OK_OV   (1L<<4)         /* Bit  4:      Tx Multicast Cnt Ov */
+#define XMT_BC_OK_OV   (1L<<3)         /* Bit  3:      Tx Broadcast Cnt Ov */
+#define XMT_OK_LO_OV   (1L<<2)         /* Bit  2:      Octets Tx OK Low CntOv*/
+#define XMT_OK_HI_OV   (1L<<1)         /* Bit  1:      Octets Tx OK Hi Cnt Ov*/
+#define XMT_OK_OV              (1L<<0)         /* Bit  0:      Frames Tx Ok Ov */
+
+#define XMT_DEF_MSK            (XMT_OK_LO_OV | XMT_OK_HI_OV)
+
+/*
+ * Receive Frame Status Encoding
+ */
+#define XMR_FS_LEN     (0x3fffUL<<18)  /* Bit 31..18:  Rx Frame Length */
+#define XMR_FS_2L_VLAN (1L<<17)        /* Bit 17:      tagged wh 2Lev VLAN ID*/
+#define XMR_FS_1L_VLAN (1L<<16)        /* Bit 16:      tagged wh 1Lev VLAN ID*/
+#define XMR_FS_BC              (1L<<15)        /* Bit 15:      Broadcast Frame */
+#define XMR_FS_MC              (1L<<14)        /* Bit 14:      Multicast Frame */
+#define XMR_FS_UC              (1L<<13)        /* Bit 13:      Unicast Frame */
+                                                                       /* Bit 12:      reserved */
+#define XMR_FS_BURST   (1L<<11)        /* Bit 11:      Burst Mode */
+#define XMR_FS_CEX_ERR (1L<<10)        /* Bit 10:      Carrier Ext. Error */
+#define XMR_FS_802_3   (1L<<9)         /* Bit  9:      802.3 Frame */
+#define XMR_FS_COL_ERR (1L<<8)         /* Bit  8:      Collision Error */
+#define XMR_FS_CAR_ERR (1L<<7)         /* Bit  7:      Carrier Event Error */
+#define XMR_FS_LEN_ERR (1L<<6)         /* Bit  6:      In-Range Length Error */
+#define XMR_FS_FRA_ERR (1L<<5)         /* Bit  5:      Framing Error */
+#define XMR_FS_RUNT            (1L<<4)         /* Bit  4:      Runt Frame */
+#define XMR_FS_LNG_ERR (1L<<3)         /* Bit  3:      Giant (Jumbo) Frame */
+#define XMR_FS_FCS_ERR (1L<<2)         /* Bit  2:      Frame Check Sequ Err */
+#define XMR_FS_ERR             (1L<<1)         /* Bit  1:      Frame Error */
+#define XMR_FS_MCTRL   (1L<<0)         /* Bit  0:      MAC Control Packet */
+
+/*
+ * XMR_FS_ERR will be set if
+ *     XMR_FS_FCS_ERR, XMR_FS_LNG_ERR, XMR_FS_RUNT,
+ *     XMR_FS_FRA_ERR, XMR_FS_LEN_ERR, or XMR_FS_CEX_ERR
+ * is set. XMR_FS_LNG_ERR and XMR_FS_LEN_ERR will issue
+ * XMR_FS_ERR unless the corresponding bit in the Receive Command
+ * Register is set.
+ */
+#define XMR_FS_ANY_ERR XMR_FS_ERR
+
+/*----------------------------------------------------------------------------*/
+/*
+ * XMAC-PHY Registers, indirect addressed over the XMAC
+ */
+#define PHY_XMAC_CTRL          0x00    /* 16 bit r/w   PHY Control Register */
+#define PHY_XMAC_STAT          0x01    /* 16 bit r/w   PHY Status Register */
+#define PHY_XMAC_ID0           0x02    /* 16 bit r/o   PHY ID0 Register */
+#define PHY_XMAC_ID1           0x03    /* 16 bit r/o   PHY ID1 Register */
+#define PHY_XMAC_AUNE_ADV      0x04    /* 16 bit r/w   Auto-Neg. Advertisement */
+#define PHY_XMAC_AUNE_LP       0x05    /* 16 bit r/o   Link Partner Abi Reg */
+#define PHY_XMAC_AUNE_EXP      0x06    /* 16 bit r/o   Auto-Neg. Expansion Reg */
+#define PHY_XMAC_NEPG          0x07    /* 16 bit r/w   Next Page Register */
+#define PHY_XMAC_NEPG_LP       0x08    /* 16 bit r/o   Next Page Link P Reg */
+       /* 0x09 - 0x0e:         reserved */
+#define PHY_XMAC_EXT_STAT      0x0f    /* 16 bit r/o   Ext Status Register */
+#define PHY_XMAC_RES_ABI       0x10    /* 16 bit r/o   PHY Resolved Ability */
+
+/*----------------------------------------------------------------------------*/
+/*
+ * Broadcom-PHY Registers, indirect addressed over XMAC
+ */
+#define PHY_BCOM_CTRL          0x00    /* 16 bit r/w   PHY Control Register */
+#define PHY_BCOM_STAT          0x01    /* 16 bit r/o   PHY Status Register */
+#define PHY_BCOM_ID0           0x02    /* 16 bit r/o   PHY ID0 Register */
+#define PHY_BCOM_ID1           0x03    /* 16 bit r/o   PHY ID1 Register */
+#define PHY_BCOM_AUNE_ADV      0x04    /* 16 bit r/w   Auto-Neg. Advertisement */
+#define PHY_BCOM_AUNE_LP       0x05    /* 16 bit r/o   Link Part Ability Reg */
+#define PHY_BCOM_AUNE_EXP      0x06    /* 16 bit r/o   Auto-Neg. Expansion Reg */
+#define PHY_BCOM_NEPG          0x07    /* 16 bit r/w   Next Page Register */
+#define PHY_BCOM_NEPG_LP       0x08    /* 16 bit r/o   Next Page Link P Reg */
+       /* Broadcom-specific registers */
+#define PHY_BCOM_1000T_CTRL    0x09    /* 16 bit r/w   1000Base-T Ctrl Reg */
+#define PHY_BCOM_1000T_STAT    0x0a    /* 16 bit r/o   1000Base-T Status Reg */
+       /* 0x0b - 0x0e:         reserved */
+#define PHY_BCOM_EXT_STAT      0x0f    /* 16 bit r/o   Extended Status Reg */
+#define PHY_BCOM_P_EXT_CTRL    0x10    /* 16 bit r/w   PHY Extended Ctrl Reg */
+#define PHY_BCOM_P_EXT_STAT    0x11    /* 16 bit r/o   PHY Extended Stat Reg */
+#define PHY_BCOM_RE_CTR                0x12    /* 16 bit r/w   Receive Error Counter */
+#define PHY_BCOM_FC_CTR                0x13    /* 16 bit r/w   False Carr Sense Cnt */
+#define PHY_BCOM_RNO_CTR       0x14    /* 16 bit r/w   Receiver NOT_OK Cnt */
+       /* 0x15 - 0x17:         reserved */
+#define PHY_BCOM_AUX_CTRL      0x18    /* 16 bit r/w   Auxiliary Control Reg */
+#define PHY_BCOM_AUX_STAT      0x19    /* 16 bit r/o   Auxiliary Stat Summary */
+#define PHY_BCOM_INT_STAT      0x1a    /* 16 bit r/o   Interrupt Status Reg */
+#define PHY_BCOM_INT_MASK      0x1b    /* 16 bit r/w   Interrupt Mask Reg */
+       /* 0x1c:                reserved */
+       /* 0x1d - 0x1f:         test registers */
+
+/*----------------------------------------------------------------------------*/
+/*
+ * Marvel-PHY Registers, indirect addressed over GMAC
+ */
+#define PHY_MARV_CTRL          0x00    /* 16 bit r/w   PHY Control Register */
+#define PHY_MARV_STAT          0x01    /* 16 bit r/o   PHY Status Register */
+#define PHY_MARV_ID0           0x02    /* 16 bit r/o   PHY ID0 Register */
+#define PHY_MARV_ID1           0x03    /* 16 bit r/o   PHY ID1 Register */
+#define PHY_MARV_AUNE_ADV      0x04    /* 16 bit r/w   Auto-Neg. Advertisement */
+#define PHY_MARV_AUNE_LP       0x05    /* 16 bit r/o   Link Part Ability Reg */
+#define PHY_MARV_AUNE_EXP      0x06    /* 16 bit r/o   Auto-Neg. Expansion Reg */
+#define PHY_MARV_NEPG          0x07    /* 16 bit r/w   Next Page Register */
+#define PHY_MARV_NEPG_LP       0x08    /* 16 bit r/o   Next Page Link P Reg */
+       /* Marvel-specific registers */
+#define PHY_MARV_1000T_CTRL    0x09    /* 16 bit r/w   1000Base-T Ctrl Reg */
+#define PHY_MARV_1000T_STAT    0x0a    /* 16 bit r/o   1000Base-T Status Reg */
+       /* 0x0b - 0x0e:         reserved */
+#define PHY_MARV_EXT_STAT      0x0f    /* 16 bit r/o   Extended Status Reg */
+#define PHY_MARV_PHY_CTRL      0x10    /* 16 bit r/w   PHY Specific Ctrl Reg */
+#define PHY_MARV_PHY_STAT      0x11    /* 16 bit r/o   PHY Specific Stat Reg */
+#define PHY_MARV_INT_MASK      0x12    /* 16 bit r/w   Interrupt Mask Reg */
+#define PHY_MARV_INT_STAT      0x13    /* 16 bit r/o   Interrupt Status Reg */
+#define PHY_MARV_EXT_CTRL      0x14    /* 16 bit r/w   Ext. PHY Specific Ctrl */
+#define PHY_MARV_RXE_CNT       0x15    /* 16 bit r/w   Receive Error Counter */
+#define PHY_MARV_EXT_ADR       0x16    /* 16 bit r/w   Ext. Ad. for Cable Diag. */
+       /* 0x17:                reserved */
+#define PHY_MARV_LED_CTRL      0x18    /* 16 bit r/w   LED Control Reg */
+#define PHY_MARV_LED_OVER      0x19    /* 16 bit r/w   Manual LED Override Reg */
+#define PHY_MARV_EXT_CTRL_2    0x1a    /* 16 bit r/w   Ext. PHY Specific Ctrl 2 */
+#define PHY_MARV_EXT_P_STAT    0x1b    /* 16 bit r/w   Ext. PHY Spec. Stat Reg */
+#define PHY_MARV_CABLE_DIAG    0x1c    /* 16 bit r/o   Cable Diagnostic Reg */
+       /* 0x1d - 0x1f:         reserved */
+
+/*----------------------------------------------------------------------------*/
+/*
+ * Level One-PHY Registers, indirect addressed over XMAC
+ */
+#define PHY_LONE_CTRL          0x00    /* 16 bit r/w   PHY Control Register */
+#define PHY_LONE_STAT          0x01    /* 16 bit r/o   PHY Status Register */
+#define PHY_LONE_ID0           0x02    /* 16 bit r/o   PHY ID0 Register */
+#define PHY_LONE_ID1           0x03    /* 16 bit r/o   PHY ID1 Register */
+#define PHY_LONE_AUNE_ADV      0x04    /* 16 bit r/w   Auto-Neg. Advertisement */
+#define PHY_LONE_AUNE_LP       0x05    /* 16 bit r/o   Link Part Ability Reg */
+#define PHY_LONE_AUNE_EXP      0x06    /* 16 bit r/o   Auto-Neg. Expansion Reg */
+#define PHY_LONE_NEPG          0x07    /* 16 bit r/w   Next Page Register */
+#define PHY_LONE_NEPG_LP       0x08    /* 16 bit r/o   Next Page Link Partner*/
+       /* Level One-specific registers */
+#define PHY_LONE_1000T_CTRL    0x09    /* 16 bit r/w   1000Base-T Control Reg*/
+#define PHY_LONE_1000T_STAT    0x0a    /* 16 bit r/o   1000Base-T Status Reg */
+       /* 0x0b -0x0e:          reserved */
+#define PHY_LONE_EXT_STAT      0x0f    /* 16 bit r/o   Extended Status Reg */
+#define PHY_LONE_PORT_CFG      0x10    /* 16 bit r/w   Port Configuration Reg*/
+#define PHY_LONE_Q_STAT                0x11    /* 16 bit r/o   Quick Status Reg */
+#define PHY_LONE_INT_ENAB      0x12    /* 16 bit r/w   Interrupt Enable Reg */
+#define PHY_LONE_INT_STAT      0x13    /* 16 bit r/o   Interrupt Status Reg */
+#define PHY_LONE_LED_CFG       0x14    /* 16 bit r/w   LED Configuration Reg */
+#define PHY_LONE_PORT_CTRL     0x15    /* 16 bit r/w   Port Control Reg */
+#define PHY_LONE_CIM           0x16    /* 16 bit r/o   CIM Reg */
+       /* 0x17 -0x1c:          reserved */
+
+/*----------------------------------------------------------------------------*/
+/*
+ * National-PHY Registers, indirect addressed over XMAC
+ */
+#define PHY_NAT_CTRL           0x00    /* 16 bit r/w   PHY Control Register */
+#define PHY_NAT_STAT           0x01    /* 16 bit r/w   PHY Status Register */
+#define PHY_NAT_ID0                    0x02    /* 16 bit r/o   PHY ID0 Register */
+#define PHY_NAT_ID1                    0x03    /* 16 bit r/o   PHY ID1 Register */
+#define PHY_NAT_AUNE_ADV       0x04    /* 16 bit r/w   Auto-Neg. Advertisement */
+#define PHY_NAT_AUNE_LP                0x05    /* 16 bit r/o   Link Partner Ability Reg */
+#define PHY_NAT_AUNE_EXP       0x06    /* 16 bit r/o   Auto-Neg. Expansion Reg */
+#define PHY_NAT_NEPG           0x07    /* 16 bit r/w   Next Page Register */
+#define PHY_NAT_NEPG_LP                0x08    /* 16 bit r/o   Next Page Link Partner Reg */
+       /* National-specific registers */
+#define PHY_NAT_1000T_CTRL     0x09    /* 16 bit r/w   1000Base-T Control Reg */
+#define PHY_NAT_1000T_STAT     0x0a    /* 16 bit r/o   1000Base-T Status Reg */
+       /* 0x0b -0x0e:          reserved */
+#define PHY_NAT_EXT_STAT       0x0f    /* 16 bit r/o   Extended Status Register */
+#define PHY_NAT_EXT_CTRL1      0x10    /* 16 bit r/o   Extended Control Reg1 */
+#define PHY_NAT_Q_STAT1                0x11    /* 16 bit r/o   Quick Status Reg1 */
+#define PHY_NAT_10B_OP         0x12    /* 16 bit r/o   10Base-T Operations Reg */
+#define PHY_NAT_EXT_CTRL2      0x13    /* 16 bit r/o   Extended Control Reg1 */
+#define PHY_NAT_Q_STAT2                0x14    /* 16 bit r/o   Quick Status Reg2 */
+       /* 0x15 -0x18:          reserved */
+#define PHY_NAT_PHY_ADDR       0x19    /* 16 bit r/o   PHY Address Register */
+
+
+/*----------------------------------------------------------------------------*/
+
+/*
+ * PHY bit definitions
+ * Bits defined as PHY_X_..., PHY_B_..., PHY_L_... or PHY_N_... are
+ * Xmac/Broadcom/LevelOne/National-specific.
+ * All other are general.
+ */
+
+/*****  PHY_XMAC_CTRL  16 bit r/w      PHY Control Register *****/
+/*****  PHY_BCOM_CTRL  16 bit r/w      PHY Control Register *****/
+/*****  PHY_LONE_CTRL  16 bit r/w      PHY Control Register *****/
+#define PHY_CT_RESET   (1<<15) /* Bit 15: (sc) clear all PHY related regs */
+#define PHY_CT_LOOP            (1<<14) /* Bit 14:      enable Loopback over PHY */
+#define PHY_CT_SPS_LSB (1<<13) /* Bit 13: (BC,L1) Speed select, lower bit */
+#define PHY_CT_ANE             (1<<12) /* Bit 12:      Auto-Negotiation Enabled */
+#define PHY_CT_PDOWN   (1<<11) /* Bit 11: (BC,L1) Power Down Mode */
+#define PHY_CT_ISOL            (1<<10) /* Bit 10: (BC,L1) Isolate Mode */
+#define PHY_CT_RE_CFG  (1<<9)  /* Bit  9: (sc) Restart Auto-Negotiation */
+#define PHY_CT_DUP_MD  (1<<8)  /* Bit  8:      Duplex Mode */
+#define PHY_CT_COL_TST (1<<7)  /* Bit  7: (BC,L1) Collision Test enabled */
+#define PHY_CT_SPS_MSB (1<<6)  /* Bit  6: (BC,L1) Speed select, upper bit */
+                                                               /* Bit  5..0:   reserved */
+
+#define PHY_CT_SP1000  PHY_CT_SPS_MSB  /* enable speed of 1000 Mbps */
+#define PHY_CT_SP100   PHY_CT_SPS_LSB  /* enable speed of  100 Mbps */
+#define PHY_CT_SP10            (0)                             /* enable speed of   10 Mbps */
+
+
+/*****  PHY_XMAC_STAT  16 bit r/w      PHY Status Register *****/
+/*****  PHY_BCOM_STAT  16 bit r/w      PHY Status Register *****/
+/*****  PHY_MARV_STAT  16 bit r/w      PHY Status Register *****/
+/*****  PHY_LONE_STAT  16 bit r/w      PHY Status Register *****/
+                                                               /* Bit 15..9:   reserved */
+                               /*      (BC/L1) 100/10 Mbps cap bits ignored*/
+#define PHY_ST_EXT_ST  (1<<8)  /* Bit  8:      Extended Status Present */
+                                                               /* Bit  7:      reserved */
+#define PHY_ST_PRE_SUP (1<<6)  /* Bit  6: (BC/L1) preamble suppression */
+#define PHY_ST_AN_OVER (1<<5)  /* Bit  5:      Auto-Negotiation Over */
+#define PHY_ST_REM_FLT (1<<4)  /* Bit  4:      Remote Fault Condition Occured */
+#define PHY_ST_AN_CAP  (1<<3)  /* Bit  3:      Auto-Negotiation Capability */
+#define PHY_ST_LSYNC   (1<<2)  /* Bit  2:      Link Synchronized */
+#define PHY_ST_JAB_DET (1<<1)  /* Bit  1: (BC/L1) Jabber Detected */
+#define PHY_ST_EXT_REG (1<<0)  /* Bit  0:      Extended Register available */
+
+
+/***** PHY_XMAC_ID1            16 bit r/o      PHY ID1 Register */
+/***** PHY_BCOM_ID1            16 bit r/o      PHY ID1 Register */
+/***** PHY_MARV_ID1            16 bit r/o      PHY ID1 Register */
+/***** PHY_LONE_ID1            16 bit r/o      PHY ID1 Register */
+#define PHY_I1_OUI_MSK (0x3f<<10)      /* Bit 15..10:  Organization Unique ID */
+#define PHY_I1_MOD_NUM (0x3f<<4)       /* Bit  9.. 4:  Model Number */
+#define PHY_I1_REV_MSK 0x0f            /* Bit  3.. 0:  Revision Number */
+
+/* different Broadcom PHY Ids */
+#define PHY_BCOM_ID1_A1                0x6041
+#define PHY_BCOM_ID1_B2                0x6043
+#define PHY_BCOM_ID1_C0                0x6044
+#define PHY_BCOM_ID1_C5                0x6047
+
+
+/*****  PHY_XMAC_AUNE_ADV      16 bit r/w      Auto-Negotiation Advertisement *****/
+/*****  PHY_XMAC_AUNE_LP       16 bit r/o      Link Partner Ability Reg *****/
+#define PHY_AN_NXT_PG  (1<<15) /* Bit 15:      Request Next Page */
+#define PHY_X_AN_ACK   (1<<14) /* Bit 14: (ro) Acknowledge Received */
+#define PHY_X_AN_RFB   (3<<12) /* Bit 13..12:  Remote Fault Bits */
+                                                               /* Bit 11.. 9:  reserved */
+#define PHY_X_AN_PAUSE (3<<7)  /* Bit  8.. 7:  Pause Bits */
+#define PHY_X_AN_HD            (1<<6)  /* Bit  6:      Half Duplex */
+#define PHY_X_AN_FD            (1<<5)  /* Bit  5:      Full Duplex */
+                                                               /* Bit  4.. 0:  reserved */
+
+/*****  PHY_BCOM_AUNE_ADV      16 bit r/w      Auto-Negotiation Advertisement *****/
+/*****  PHY_BCOM_AUNE_LP       16 bit r/o      Link Partner Ability Reg *****/
+/*     PHY_AN_NXT_PG           (see XMAC) Bit 15:      Request Next Page */
+                                                               /* Bit 14:      reserved */
+#define PHY_B_AN_RF            (1<<13) /* Bit 13:      Remote Fault */
+                                                               /* Bit 12:      reserved */
+#define PHY_B_AN_ASP   (1<<11) /* Bit 11:      Asymmetric Pause */
+#define PHY_B_AN_PC            (1<<10) /* Bit 10:      Pause Capable */
+                                                               /* Bit  9..5:   100/10 BT cap bits ingnored */
+#define PHY_B_AN_SEL   0x1f    /* Bit 4..0:    Selector Field, 00001=Ethernet*/
+
+/*****  PHY_LONE_AUNE_ADV      16 bit r/w      Auto-Negotiation Advertisement *****/
+/*****  PHY_LONE_AUNE_LP       16 bit r/o      Link Partner Ability Reg *****/
+/*     PHY_AN_NXT_PG           (see XMAC) Bit 15:      Request Next Page */
+                                                               /* Bit 14:      reserved */
+#define PHY_L_AN_RF            (1<<13) /* Bit 13:      Remote Fault */
+                                                               /* Bit 12:      reserved */
+#define PHY_L_AN_ASP   (1<<11) /* Bit 11:      Asymmetric Pause */
+#define PHY_L_AN_PC            (1<<10) /* Bit 10:      Pause Capable */
+                                                               /* Bit  9..5:   100/10 BT cap bits ingnored */
+#define PHY_L_AN_SEL   0x1f    /* Bit 4..0:    Selector Field, 00001=Ethernet*/
+
+/*****  PHY_NAT_AUNE_ADV       16 bit r/w      Auto-Negotiation Advertisement *****/
+/*****  PHY_NAT_AUNE_LP                16 bit r/o      Link Partner Ability Reg *****/
+/*     PHY_AN_NXT_PG           (see XMAC) Bit 15:      Request Next Page */
+                                                               /* Bit 14:      reserved */
+#define PHY_N_AN_RF            (1<<13) /* Bit 13:      Remote Fault */
+                                                               /* Bit 12:      reserved */
+#define PHY_N_AN_100F  (1<<11) /* Bit 11:      100Base-T2 FD Support */
+#define PHY_N_AN_100H  (1<<10) /* Bit 10:      100Base-T2 HD Support */
+                                                               /* Bit  9..5:   100/10 BT cap bits ingnored */
+#define PHY_N_AN_SEL   0x1f    /* Bit 4..0:    Selector Field, 00001=Ethernet*/
+
+/* field type definition for PHY_x_AN_SEL */
+#define PHY_SEL_TYPE   0x01    /* 00001 = Ethernet */
+
+/*****  PHY_XMAC_AUNE_EXP      16 bit r/o      Auto-Negotiation Expansion Reg *****/
+                                                               /* Bit 15..4:   reserved */
+#define PHY_AN_LP_NP   (1<<3)  /* Bit  3:      Link Partner can Next Page */
+#define PHY_AN_LOC_NP  (1<<2)  /* Bit  2:      Local PHY can Next Page */
+#define PHY_AN_RX_PG   (1<<1)  /* Bit  1:      Page Received */
+                                                               /* Bit  0:      reserved */
+
+/*****  PHY_BCOM_AUNE_EXP      16 bit r/o      Auto-Negotiation Expansion Reg *****/
+                                                               /* Bit 15..5:   reserved */
+#define PHY_B_AN_PDF   (1<<4)  /* Bit  4:      Parallel Detection Fault */
+/*     PHY_AN_LP_NP            (see XMAC) Bit  3:      Link Partner can Next Page */
+/*     PHY_AN_LOC_NP           (see XMAC) Bit  2:      Local PHY can Next Page */
+/*     PHY_AN_RX_PG            (see XMAC) Bit  1:      Page Received */
+#define PHY_B_AN_LP_CAP        (1<<0)  /* Bit  0:      Link Partner Auto-Neg. Cap. */
+
+/*****  PHY_LONE_AUNE_EXP      16 bit r/o      Auto-Negotiation Expansion Reg *****/
+#define PHY_L_AN_BP            (1<<5)  /* Bit  5:      Base Page Indication */
+#define PHY_L_AN_PDF   (1<<4)  /* Bit  4:      Parallel Detection Fault */
+/*     PHY_AN_LP_NP            (see XMAC) Bit  3:      Link Partner can Next Page */
+/*     PHY_AN_LOC_NP           (see XMAC) Bit  2:      Local PHY can Next Page */
+/*     PHY_AN_RX_PG            (see XMAC) Bit  1:      Page Received */
+#define PHY_B_AN_LP_CAP        (1<<0)  /* Bit  0:      Link Partner Auto-Neg. Cap. */
+
+
+/*****  PHY_XMAC_NEPG          16 bit r/w      Next Page Register *****/
+/*****  PHY_BCOM_NEPG          16 bit r/w      Next Page Register *****/
+/*****  PHY_LONE_NEPG          16 bit r/w      Next Page Register *****/
+/*****  PHY_XMAC_NEPG_LP       16 bit r/o      Next Page Link Partner *****/
+/*****  PHY_BCOM_NEPG_LP       16 bit r/o      Next Page Link Partner *****/
+/*****  PHY_LONE_NEPG_LP       16 bit r/o      Next Page Link Partner *****/
+#define PHY_NP_MORE            (1<<15) /* Bit 15:      More, Next Pages to follow */
+#define PHY_NP_ACK1            (1<<14) /* Bit 14: (ro) Ack 1, for receiving a message*/
+#define PHY_NP_MSG_VAL (1<<13) /* Bit 13:      Message Page valid */
+#define PHY_NP_ACK2            (1<<12) /* Bit 12:      Ack 2, comply with msg content*/
+#define PHY_NP_TOG             (1<<11) /* Bit 11:      Toggle Bit, ensure sync */
+#define PHY_NP_MSG             0x07ff  /* Bit 10..0:   Message from/to Link Partner */
+
+/*
+ * XMAC-Specific
+ */
+/*****  PHY_XMAC_EXT_STAT      16 bit r/w      Extended Status Register *****/
+#define PHY_X_EX_FD            (1<<15) /* Bit 15:      Device Supports Full Duplex */
+#define PHY_X_EX_HD            (1<<14) /* Bit 14:      Device Supports Half Duplex */
+                                                               /* Bit 13..0:   reserved */
+
+/*****  PHY_XMAC_RES_ABI       16 bit r/o      PHY Resolved Ability *****/
+                                                               /* Bit 15..9:   reserved */
+#define PHY_X_RS_PAUSE (3<<7)  /* Bit  8..7:   selected Pause Mode */
+#define PHY_X_RS_HD            (1<<6)  /* Bit  6:      Half Duplex Mode selected */
+#define PHY_X_RS_FD            (1<<5)  /* Bit  5:      Full Duplex Mode selected */
+#define PHY_X_RS_ABLMIS (1<<4) /* Bit  4:      duplex or pause cap mismatch */
+#define PHY_X_RS_PAUMIS (1<<3) /* Bit  3:      pause capability missmatch */
+                                                               /* Bit  2..0:   reserved */
+/*
+ * Remote Fault Bits (PHY_X_AN_RFB) encoding
+ */
+#define X_RFB_OK               (0<<12) /* Bit 13..12   No errors, Link OK */
+#define X_RFB_LF               (1<<12) /* Bit 13..12   Link Failure */
+#define X_RFB_OFF              (2<<12) /* Bit 13..12   Offline */
+#define X_RFB_AN_ERR   (3<<12) /* Bit 13..12   Auto-Negotiation Error */
+
+/*
+ * Pause Bits (PHY_X_AN_PAUSE and PHY_X_RS_PAUSE) encoding
+ */
+#define PHY_X_P_NO_PAUSE       (0<<7)  /* Bit  8..7:   no Pause Mode */
+#define PHY_X_P_SYM_MD         (1<<7)  /* Bit  8..7:   symmetric Pause Mode */
+#define PHY_X_P_ASYM_MD                (2<<7)  /* Bit  8..7:   asymmetric Pause Mode */
+#define PHY_X_P_BOTH_MD                (3<<7)  /* Bit  8..7:   both Pause Mode */
+
+
+/*
+ * Broadcom-Specific
+ */
+/*****  PHY_BCOM_1000T_CTRL    16 bit r/w      1000Base-T Control Reg *****/
+#define PHY_B_1000C_TEST       (7<<13) /* Bit 15..13:  Test Modes */
+#define PHY_B_1000C_MSE                (1<<12) /* Bit 12:      Master/Slave Enable */
+#define PHY_B_1000C_MSC                (1<<11) /* Bit 11:      M/S Configuration */
+#define PHY_B_1000C_RD         (1<<10) /* Bit 10:      Repeater/DTE */
+#define PHY_B_1000C_AFD                (1<<9)  /* Bit  9:      Advertise Full Duplex */
+#define PHY_B_1000C_AHD                (1<<8)  /* Bit  8:      Advertise Half Duplex */
+                                                                       /* Bit  7..0:   reserved */
+
+/*****  PHY_BCOM_1000T_STAT    16 bit r/o      1000Base-T Status Reg *****/
+#define PHY_B_1000S_MSF                (1<<15) /* Bit 15:      Master/Slave Fault */
+#define PHY_B_1000S_MSR                (1<<14) /* Bit 14:      Master/Slave Result */
+#define PHY_B_1000S_LRS                (1<<13) /* Bit 13:      Local Receiver Status */
+#define PHY_B_1000S_RRS                (1<<12) /* Bit 12:      Remote Receiver Status */
+#define PHY_B_1000S_LP_FD      (1<<11) /* Bit 11:      Link Partner can FD */
+#define PHY_B_1000S_LP_HD      (1<<10) /* Bit 10:      Link Partner can HD */
+                                                                       /* Bit  9..8:   reserved */
+#define PHY_B_1000S_IEC                0xff    /* Bit  7..0:   Idle Error Count */
+
+/*****  PHY_BCOM_EXT_STAT      16 bit r/o      Extended Status Register *****/
+#define PHY_B_ES_X_FD_CAP      (1<<15) /* Bit 15:      1000Base-X FD capable */
+#define PHY_B_ES_X_HD_CAP      (1<<14) /* Bit 14:      1000Base-X HD capable */
+#define PHY_B_ES_T_FD_CAP      (1<<13) /* Bit 13:      1000Base-T FD capable */
+#define PHY_B_ES_T_HD_CAP      (1<<12) /* Bit 12:      1000Base-T HD capable */
+                                                                       /* Bit 11..0:   reserved */
+
+/*****  PHY_BCOM_P_EXT_CTRL    16 bit r/w      PHY Extended Control Reg *****/
+#define PHY_B_PEC_MAC_PHY      (1<<15) /* Bit 15:      10BIT/GMI-Interface */
+#define PHY_B_PEC_DIS_CROSS    (1<<14) /* Bit 14:      Disable MDI Crossover */
+#define PHY_B_PEC_TX_DIS       (1<<13) /* Bit 13:      Tx output Disabled */
+#define PHY_B_PEC_INT_DIS      (1<<12) /* Bit 12:      Interrupts Disabled */
+#define PHY_B_PEC_F_INT                (1<<11) /* Bit 11:      Force Interrupt */
+#define PHY_B_PEC_BY_45                (1<<10) /* Bit 10:      Bypass 4B5B-Decoder */
+#define PHY_B_PEC_BY_SCR       (1<<9)  /* Bit  9:      Bypass Scrambler */
+#define PHY_B_PEC_BY_MLT3      (1<<8)  /* Bit  8:      Bypass MLT3 Encoder */
+#define PHY_B_PEC_BY_RXA       (1<<7)  /* Bit  7:      Bypass Rx Alignm. */
+#define PHY_B_PEC_RES_SCR      (1<<6)  /* Bit  6:      Reset Scrambler */
+#define PHY_B_PEC_EN_LTR       (1<<5)  /* Bit  5:      Ena LED Traffic Mode */
+#define PHY_B_PEC_LED_ON       (1<<4)  /* Bit  4:      Force LED's on */
+#define PHY_B_PEC_LED_OFF      (1<<3)  /* Bit  3:      Force LED's off */
+#define PHY_B_PEC_EX_IPG       (1<<2)  /* Bit  2:      Extend Tx IPG Mode */
+#define PHY_B_PEC_3_LED                (1<<1)  /* Bit  1:      Three Link LED mode */
+#define PHY_B_PEC_HIGH_LA      (1<<0)  /* Bit  0:      GMII FIFO Elasticy */
+
+/*****  PHY_BCOM_P_EXT_STAT    16 bit r/o      PHY Extended Status Reg *****/
+                                                                       /* Bit 15..14:  reserved */
+#define PHY_B_PES_CROSS_STAT   (1<<13) /* Bit 13:      MDI Crossover Status */
+#define PHY_B_PES_INT_STAT     (1<<12) /* Bit 12:      Interrupt Status */
+#define PHY_B_PES_RRS          (1<<11) /* Bit 11:      Remote Receiver Stat. */
+#define PHY_B_PES_LRS          (1<<10) /* Bit 10:      Local Receiver Stat. */
+#define PHY_B_PES_LOCKED       (1<<9)  /* Bit  9:      Locked */
+#define PHY_B_PES_LS           (1<<8)  /* Bit  8:      Link Status */
+#define PHY_B_PES_RF           (1<<7)  /* Bit  7:      Remote Fault */
+#define PHY_B_PES_CE_ER                (1<<6)  /* Bit  6:      Carrier Ext Error */
+#define PHY_B_PES_BAD_SSD      (1<<5)  /* Bit  5:      Bad SSD */
+#define PHY_B_PES_BAD_ESD      (1<<4)  /* Bit  4:      Bad ESD */
+#define PHY_B_PES_RX_ER                (1<<3)  /* Bit  3:      Receive Error */
+#define PHY_B_PES_TX_ER                (1<<2)  /* Bit  2:      Transmit Error */
+#define PHY_B_PES_LOCK_ER      (1<<1)  /* Bit  1:      Lock Error */
+#define PHY_B_PES_MLT3_ER      (1<<0)  /* Bit  0:      MLT3 code Error */
+
+/*****  PHY_BCOM_FC_CTR                16 bit r/w      False Carrier Counter *****/
+                                                                       /* Bit 15..8:   reserved */
+#define PHY_B_FC_CTR           0xff    /* Bit  7..0:   False Carrier Counter */
+
+/*****  PHY_BCOM_RNO_CTR       16 bit r/w      Receive NOT_OK Counter *****/
+#define PHY_B_RC_LOC_MSK       0xff00  /* Bit 15..8:   Local Rx NOT_OK cnt */
+#define PHY_B_RC_REM_MSK       0x00ff  /* Bit  7..0:   Remote Rx NOT_OK cnt */
+
+/*****  PHY_BCOM_AUX_CTRL      16 bit r/w      Auxiliary Control Reg *****/
+#define PHY_B_AC_L_SQE         (1<<15) /* Bit 15:      Low Squelch */
+#define PHY_B_AC_LONG_PACK     (1<<14) /* Bit 14:      Rx Long Packets */
+#define PHY_B_AC_ER_CTRL       (3<<12) /* Bit 13..12:  Edgerate Control */
+                                                                       /* Bit 11:      reserved */
+#define PHY_B_AC_TX_TST                (1<<10) /* Bit 10:      Tx test bit, always 1 */
+                                                                       /* Bit  9.. 8:  reserved */
+#define PHY_B_AC_DIS_PRF       (1<<7)  /* Bit  7:      dis part resp filter */
+                                                                       /* Bit  6:      reserved */
+#define PHY_B_AC_DIS_PM                (1<<5)  /* Bit  5:      dis power management */
+                                                                       /* Bit  4:      reserved */
+#define PHY_B_AC_DIAG          (1<<3)  /* Bit  3:      Diagnostic Mode */
+                                                                       /* Bit  2.. 0:  reserved */
+
+/*****  PHY_BCOM_AUX_STAT      16 bit r/o      Auxiliary Status Reg *****/
+#define PHY_B_AS_AN_C          (1<<15) /* Bit 15:      AutoNeg complete */
+#define PHY_B_AS_AN_CA         (1<<14) /* Bit 14:      AN Complete Ack */
+#define PHY_B_AS_ANACK_D       (1<<13) /* Bit 13:      AN Ack Detect */
+#define PHY_B_AS_ANAB_D                (1<<12) /* Bit 12:      AN Ability Detect */
+#define PHY_B_AS_NPW           (1<<11) /* Bit 11:      AN Next Page Wait */
+#define PHY_B_AS_AN_RES_MSK    (7<<8)  /* Bit 10..8:   AN HDC */
+#define PHY_B_AS_PDF           (1<<7)  /* Bit  7:      Parallel Detect. Fault */
+#define PHY_B_AS_RF                    (1<<6)  /* Bit  6:      Remote Fault */
+#define PHY_B_AS_ANP_R         (1<<5)  /* Bit  5:      AN Page Received */
+#define PHY_B_AS_LP_ANAB       (1<<4)  /* Bit  4:      LP AN Ability */
+#define PHY_B_AS_LP_NPAB       (1<<3)  /* Bit  3:      LP Next Page Ability */
+#define PHY_B_AS_LS                    (1<<2)  /* Bit  2:      Link Status */
+#define PHY_B_AS_PRR           (1<<1)  /* Bit  1:      Pause Resolution-Rx */
+#define PHY_B_AS_PRT           (1<<0)  /* Bit  0:      Pause Resolution-Tx */
+
+#define PHY_B_AS_PAUSE_MSK     (PHY_B_AS_PRR | PHY_B_AS_PRT)
+
+/*****  PHY_BCOM_INT_STAT      16 bit r/o      Interrupt Status Reg *****/
+/*****  PHY_BCOM_INT_MASK      16 bit r/w      Interrupt Mask Reg *****/
+                                                                       /* Bit 15:      reserved */
+#define PHY_B_IS_PSE           (1<<14) /* Bit 14:      Pair Swap Error */
+#define PHY_B_IS_MDXI_SC       (1<<13) /* Bit 13:      MDIX Status Change */
+#define PHY_B_IS_HCT           (1<<12) /* Bit 12:      counter above 32k */
+#define PHY_B_IS_LCT           (1<<11) /* Bit 11:      counter above 128 */
+#define PHY_B_IS_AN_PR         (1<<10) /* Bit 10:      Page Received */
+#define PHY_B_IS_NO_HDCL       (1<<9)  /* Bit  9:      No HCD Link */
+#define PHY_B_IS_NO_HDC                (1<<8)  /* Bit  8:      No HCD */
+#define PHY_B_IS_NEG_USHDC     (1<<7)  /* Bit  7:      Negotiated Unsup. HCD */
+#define PHY_B_IS_SCR_S_ER      (1<<6)  /* Bit  6:      Scrambler Sync Error */
+#define PHY_B_IS_RRS_CHANGE    (1<<5)  /* Bit  5:      Remote Rx Stat Change */
+#define PHY_B_IS_LRS_CHANGE    (1<<4)  /* Bit  4:      Local Rx Stat Change */
+#define PHY_B_IS_DUP_CHANGE    (1<<3)  /* Bit  3:      Duplex Mode Change */
+#define PHY_B_IS_LSP_CHANGE    (1<<2)  /* Bit  2:      Link Speed Change */
+#define PHY_B_IS_LST_CHANGE    (1<<1)  /* Bit  1:      Link Status Changed */
+#define PHY_B_IS_CRC_ER                (1<<0)  /* Bit  0:      CRC Error */
+
+#define PHY_B_DEF_MSK  (~(PHY_B_IS_AN_PR | PHY_B_IS_LST_CHANGE))
+
+/* Pause Bits (PHY_B_AN_ASP and PHY_B_AN_PC) encoding */
+#define PHY_B_P_NO_PAUSE       (0<<10) /* Bit 11..10:  no Pause Mode */
+#define PHY_B_P_SYM_MD         (1<<10) /* Bit 11..10:  symmetric Pause Mode */
+#define PHY_B_P_ASYM_MD                (2<<10) /* Bit 11..10:  asymmetric Pause Mode */
+#define PHY_B_P_BOTH_MD                (3<<10) /* Bit 11..10:  both Pause Mode */
+
+/*
+ * Resolved Duplex mode and Capabilities (Aux Status Summary Reg)
+ */
+#define PHY_B_RES_1000FD       (7<<8)  /* Bit 10..8:   1000Base-T Full Dup. */
+#define PHY_B_RES_1000HD       (6<<8)  /* Bit 10..8:   1000Base-T Half Dup. */
+/* others: 100/10: invalid for us */
+
+/*
+ * Level One-Specific
+ */
+/*****  PHY_LONE_1000T_CTRL    16 bit r/w      1000Base-T Control Reg *****/
+#define PHY_L_1000C_TEST       (7<<13) /* Bit 15..13:  Test Modes */
+#define PHY_L_1000C_MSE                (1<<12) /* Bit 12:      Master/Slave Enable */
+#define PHY_L_1000C_MSC                (1<<11) /* Bit 11:      M/S Configuration */
+#define PHY_L_1000C_RD         (1<<10) /* Bit 10:      Repeater/DTE */
+#define PHY_L_1000C_AFD                (1<<9)  /* Bit  9:      Advertise Full Duplex */
+#define PHY_L_1000C_AHD                (1<<8)  /* Bit  8:      Advertise Half Duplex */
+                                                                       /* Bit  7..0:   reserved */
+
+/*****  PHY_LONE_1000T_STAT    16 bit r/o      1000Base-T Status Reg *****/
+#define PHY_L_1000S_MSF                (1<<15) /* Bit 15:      Master/Slave Fault */
+#define PHY_L_1000S_MSR                (1<<14) /* Bit 14:      Master/Slave Result */
+#define PHY_L_1000S_LRS                (1<<13) /* Bit 13:      Local Receiver Status */
+#define PHY_L_1000S_RRS                (1<<12) /* Bit 12:      Remote Receiver Status*/
+#define PHY_L_1000S_LP_FD      (1<<11) /* Bit 11:      Link Partner can FD */
+#define PHY_L_1000S_LP_HD      (1<<10) /* Bit 10:      Link Partner can HD */
+                                                                       /* Bit  9..8:   reserved */
+#define PHY_B_1000S_IEC                0xff    /* Bit  7..0:   Idle Error Count */
+
+/*****  PHY_LONE_EXT_STAT      16 bit r/o      Extended Status Register *****/
+#define PHY_L_ES_X_FD_CAP      (1<<15) /* Bit 15:      1000Base-X FD capable */
+#define PHY_L_ES_X_HD_CAP      (1<<14) /* Bit 14:      1000Base-X HD capable */
+#define PHY_L_ES_T_FD_CAP      (1<<13) /* Bit 13:      1000Base-T FD capable */
+#define PHY_L_ES_T_HD_CAP      (1<<12) /* Bit 12:      1000Base-T HD capable */
+                                                                       /* Bit 11..0:   reserved */
+
+/*****  PHY_LONE_PORT_CFG      16 bit r/w      Port Configuration Reg *****/
+#define PHY_L_PC_REP_MODE      (1<<15) /* Bit 15:      Repeater Mode */
+                                                                       /* Bit 14:      reserved */
+#define PHY_L_PC_TX_DIS                (1<<13) /* Bit 13:      Tx output Disabled */
+#define PHY_L_PC_BY_SCR                (1<<12) /* Bit 12:      Bypass Scrambler */
+#define PHY_L_PC_BY_45         (1<<11) /* Bit 11:      Bypass 4B5B-Decoder */
+#define PHY_L_PC_JAB_DIS       (1<<10) /* Bit 10:      Jabber Disabled */
+#define PHY_L_PC_SQE           (1<<9)  /* Bit  9:      Enable Heartbeat */
+#define PHY_L_PC_TP_LOOP       (1<<8)  /* Bit  8:      TP Loopback */
+#define PHY_L_PC_SSS           (1<<7)  /* Bit  7:      Smart Speed Selection */
+#define PHY_L_PC_FIFO_SIZE     (1<<6)  /* Bit  6:      FIFO Size */
+#define PHY_L_PC_PRE_EN                (1<<5)  /* Bit  5:      Preamble Enable */
+#define PHY_L_PC_CIM           (1<<4)  /* Bit  4:      Carrier Integrity Mon */
+#define PHY_L_PC_10_SER                (1<<3)  /* Bit  3:      Use Serial Output */
+#define PHY_L_PC_ANISOL                (1<<2)  /* Bit  2:      Unisolate Port */
+#define PHY_L_PC_TEN_BIT       (1<<1)  /* Bit  1:      10bit iface mode on */
+#define PHY_L_PC_ALTCLOCK      (1<<0)  /* Bit  0: (ro) ALTCLOCK Mode on */
+
+/*****  PHY_LONE_Q_STAT                16 bit r/o      Quick Status Reg *****/
+#define PHY_L_QS_D_RATE                (3<<14) /* Bit 15..14:  Data Rate */
+#define PHY_L_QS_TX_STAT       (1<<13) /* Bit 13:      Transmitting */
+#define PHY_L_QS_RX_STAT       (1<<12) /* Bit 12:      Receiving */
+#define PHY_L_QS_COL_STAT      (1<<11) /* Bit 11:      Collision */
+#define PHY_L_QS_L_STAT                (1<<10) /* Bit 10:      Link is up */
+#define PHY_L_QS_DUP_MOD       (1<<9)  /* Bit  9:      Full/Half Duplex */
+#define PHY_L_QS_AN                    (1<<8)  /* Bit  8:      AutoNeg is On */
+#define PHY_L_QS_AN_C          (1<<7)  /* Bit  7:      AN is Complete */
+#define PHY_L_QS_LLE           (7<<4)  /* Bit  6:      Line Length Estim. */
+#define PHY_L_QS_PAUSE         (1<<3)  /* Bit  3:      LP advertised Pause */
+#define PHY_L_QS_AS_PAUSE      (1<<2)  /* Bit  2:      LP adv. asym. Pause */
+#define PHY_L_QS_ISOLATE       (1<<1)  /* Bit  1:      CIM Isolated */
+#define PHY_L_QS_EVENT         (1<<0)  /* Bit  0:      Event has occurred */
+
+/*****  PHY_LONE_INT_ENAB      16 bit r/w      Interrupt Enable Reg *****/
+/*****  PHY_LONE_INT_STAT      16 bit r/o      Interrupt Status Reg *****/
+                                                                       /* Bit 15..14:  reserved */
+#define PHY_L_IS_AN_F          (1<<13) /* Bit 13:      Auto-Negotiation fault */
+                                                                       /* Bit 12:      not described */
+#define PHY_L_IS_CROSS         (1<<11) /* Bit 11:      Crossover used */
+#define PHY_L_IS_POL           (1<<10) /* Bit 10:      Polarity correct. used*/
+#define PHY_L_IS_SS                    (1<<9)  /* Bit  9:      Smart Speed Downgrade*/
+#define PHY_L_IS_CFULL         (1<<8)  /* Bit  8:      Counter Full */
+#define PHY_L_IS_AN_C          (1<<7)  /* Bit  7:      AutoNeg Complete */
+#define PHY_L_IS_SPEED         (1<<6)  /* Bit  6:      Speed Changed */
+#define PHY_L_IS_DUP           (1<<5)  /* Bit  5:      Duplex Changed */
+#define PHY_L_IS_LS                    (1<<4)  /* Bit  4:      Link Status Changed */
+#define PHY_L_IS_ISOL          (1<<3)  /* Bit  3:      Isolate Occured */
+#define PHY_L_IS_MDINT         (1<<2)  /* Bit  2: (ro) STAT: MII Int Pending */
+#define PHY_L_IS_INTEN         (1<<1)  /* Bit  1:      ENAB: Enable IRQs */
+#define PHY_L_IS_FORCE         (1<<0)  /* Bit  0:      ENAB: Force Interrupt */
+
+/* int. mask */
+#define PHY_L_DEF_MSK          (PHY_L_IS_LS | PHY_L_IS_ISOL | PHY_L_IS_INTEN)
+
+/*****  PHY_LONE_LED_CFG       16 bit r/w      LED Configuration Reg *****/
+#define PHY_L_LC_LEDC          (3<<14) /* Bit 15..14:  Col/Blink/On/Off */
+#define PHY_L_LC_LEDR          (3<<12) /* Bit 13..12:  Rx/Blink/On/Off */
+#define PHY_L_LC_LEDT          (3<<10) /* Bit 11..10:  Tx/Blink/On/Off */
+#define PHY_L_LC_LEDG          (3<<8)  /* Bit  9..8:   Giga/Blink/On/Off */
+#define PHY_L_LC_LEDS          (3<<6)  /* Bit  7..6:   10-100/Blink/On/Off */
+#define PHY_L_LC_LEDL          (3<<4)  /* Bit  5..4:   Link/Blink/On/Off */
+#define PHY_L_LC_LEDF          (3<<2)  /* Bit  3..2:   Duplex/Blink/On/Off */
+#define PHY_L_LC_PSTRECH       (1<<1)  /* Bit  1:      Strech LED Pulses */
+#define PHY_L_LC_FREQ          (1<<0)  /* Bit  0:      30/100 ms */
+
+/*****  PHY_LONE_PORT_CTRL     16 bit r/w      Port Control Reg *****/
+#define PHY_L_PC_TX_TCLK       (1<<15) /* Bit 15:      Enable TX_TCLK */
+                                                                       /* Bit 14:      reserved */
+#define PHY_L_PC_ALT_NP                (1<<13) /* Bit 14:      Alternate Next Page */
+#define PHY_L_PC_GMII_ALT      (1<<12) /* Bit 13:      Alternate GMII driver */
+                                                                       /* Bit 11:      reserved */
+#define PHY_L_PC_TEN_CRS       (1<<10) /* Bit 10:      Extend CRS*/
+                                                                       /* Bit  9..0:   not described */
+
+/*****  PHY_LONE_CIM           16 bit r/o      CIM Reg *****/
+#define PHY_L_CIM_ISOL         (255<<8)/* Bit 15..8:   Isolate Count */
+#define PHY_L_CIM_FALSE_CAR    (255<<0)/* Bit  7..0:   False Carrier Count */
+
+
+/*
+ * Pause Bits (PHY_L_AN_ASP and PHY_L_AN_PC) encoding
+ */
+#define PHY_L_P_NO_PAUSE       (0<<10) /* Bit 11..10:  no Pause Mode */
+#define PHY_L_P_SYM_MD         (1<<10) /* Bit 11..10:  symmetric Pause Mode */
+#define PHY_L_P_ASYM_MD                (2<<10) /* Bit 11..10:  asymmetric Pause Mode */
+#define PHY_L_P_BOTH_MD                (3<<10) /* Bit 11..10:  both Pause Mode */
+
+
+/*
+ * National-Specific
+ */
+/*****  PHY_NAT_1000T_CTRL     16 bit r/w      1000Base-T Control Reg *****/
+#define PHY_N_1000C_TEST       (7<<13) /* Bit 15..13:  Test Modes */
+#define PHY_N_1000C_MSE                (1<<12) /* Bit 12:      Master/Slave Enable */
+#define PHY_N_1000C_MSC                (1<<11) /* Bit 11:      M/S Configuration */
+#define PHY_N_1000C_RD         (1<<10) /* Bit 10:      Repeater/DTE */
+#define PHY_N_1000C_AFD                (1<<9)  /* Bit  9:      Advertise Full Duplex */
+#define PHY_N_1000C_AHD                (1<<8)  /* Bit  8:      Advertise Half Duplex */
+#define PHY_N_1000C_APC                (1<<7)  /* Bit  7:      Asymmetric Pause Cap. */
+                                                                       /* Bit  6..0:   reserved */
+
+/*****  PHY_NAT_1000T_STAT     16 bit r/o      1000Base-T Status Reg *****/
+#define PHY_N_1000S_MSF                (1<<15) /* Bit 15:      Master/Slave Fault */
+#define PHY_N_1000S_MSR                (1<<14) /* Bit 14:      Master/Slave Result */
+#define PHY_N_1000S_LRS                (1<<13) /* Bit 13:      Local Receiver Status */
+#define PHY_N_1000S_RRS                (1<<12) /* Bit 12:      Remote Receiver Status*/
+#define PHY_N_1000S_LP_FD      (1<<11) /* Bit 11:      Link Partner can FD */
+#define PHY_N_1000S_LP_HD      (1<<10) /* Bit 10:      Link Partner can HD */
+#define PHY_N_1000C_LP_APC     (1<<9)  /* Bit  9:      LP Asym. Pause Cap. */
+                                                                       /* Bit  8:      reserved */
+#define PHY_N_1000S_IEC                0xff    /* Bit  7..0:   Idle Error Count */
+
+/*****  PHY_NAT_EXT_STAT       16 bit r/o      Extended Status Register *****/
+#define PHY_N_ES_X_FD_CAP      (1<<15) /* Bit 15:      1000Base-X FD capable */
+#define PHY_N_ES_X_HD_CAP      (1<<14) /* Bit 14:      1000Base-X HD capable */
+#define PHY_N_ES_T_FD_CAP      (1<<13) /* Bit 13:      1000Base-T FD capable */
+#define PHY_N_ES_T_HD_CAP      (1<<12) /* Bit 12:      1000Base-T HD capable */
+                                                                       /* Bit 11..0:   reserved */
+
+/* todo: those are still missing */
+/*****  PHY_NAT_EXT_CTRL1      16 bit r/o      Extended Control Reg1 *****/
+/*****  PHY_NAT_Q_STAT1                16 bit r/o      Quick Status Reg1 *****/
+/*****  PHY_NAT_10B_OP         16 bit r/o      10Base-T Operations Reg *****/
+/*****  PHY_NAT_EXT_CTRL2      16 bit r/o      Extended Control Reg1 *****/
+/*****  PHY_NAT_Q_STAT2                16 bit r/o      Quick Status Reg2 *****/
+/*****  PHY_NAT_PHY_ADDR       16 bit r/o      PHY Address Register *****/
+
+/*
+ * Marvell-Specific
+ */
+/*****  PHY_MARV_AUNE_ADV      16 bit r/w      Auto-Negotiation Advertisement *****/
+/*****  PHY_MARV_AUNE_LP       16 bit r/w      Link Part Ability Reg *****/
+#define PHY_M_AN_NXT_PG                BIT_15  /* Request Next Page */
+#define PHY_M_AN_ACK           BIT_14  /* (ro) Acknowledge Received */
+#define PHY_M_AN_RF                    BIT_13  /* Remote Fault */
+                                                                       /* Bit 12:      reserved */
+#define PHY_M_AN_ASP           BIT_11  /* Asymmetric Pause */
+#define PHY_M_AN_PC                    BIT_10  /* MAC Pause implemented */
+#define PHY_M_AN_100_FD                BIT_8   /* Advertise 100Base-TX Full Duplex */
+#define PHY_M_AN_100_HD                BIT_7   /* Advertise 100Base-TX Half Duplex */
+#define PHY_M_AN_10_FD         BIT_6   /* Advertise 10Base-TX Full Duplex */
+#define PHY_M_AN_10_HD         BIT_5   /* Advertise 10Base-TX Half Duplex */
+
+/* special defines for FIBER (88E1011S only) */
+#define PHY_M_AN_ASP_X         BIT_8   /* Asymmetric Pause */
+#define PHY_M_AN_PC_X          BIT_7   /* MAC Pause implemented */
+#define PHY_M_AN_1000X_AHD     BIT_6   /* Advertise 10000Base-X Half Duplex */
+#define PHY_M_AN_1000X_AFD     BIT_5   /* Advertise 10000Base-X Full Duplex */
+
+/* Pause Bits (PHY_M_AN_ASP_X and PHY_M_AN_PC_X) encoding */
+#define PHY_M_P_NO_PAUSE_X     (0<<7)  /* Bit  8.. 7:  no Pause Mode */
+#define PHY_M_P_SYM_MD_X       (1<<7)  /* Bit  8.. 7:  symmetric Pause Mode */
+#define PHY_M_P_ASYM_MD_X      (2<<7)  /* Bit  8.. 7:  asymmetric Pause Mode */
+#define PHY_M_P_BOTH_MD_X      (3<<7)  /* Bit  8.. 7:  both Pause Mode */
+
+/*****  PHY_MARV_1000T_CTRL    16 bit r/w      1000Base-T Control Reg *****/
+#define PHY_M_1000C_TEST       (7<<13) /* Bit 15..13:  Test Modes */
+#define PHY_M_1000C_MSE                (1<<12) /* Bit 12:      Manual Master/Slave Enable */
+#define PHY_M_1000C_MSC                (1<<11) /* Bit 11:      M/S Configuration (1=Master) */
+#define PHY_M_1000C_MPD                (1<<10) /* Bit 10:      Multi-Port Device */
+#define PHY_M_1000C_AFD                (1<<9)  /* Bit  9:      Advertise Full Duplex */
+#define PHY_M_1000C_AHD                (1<<8)  /* Bit  8:      Advertise Half Duplex */
+                                                                       /* Bit  7..0:   reserved */
+
+/*****  PHY_MARV_PHY_CTRL      16 bit r/w      PHY Specific Ctrl Reg *****/
+
+#define PHY_M_PC_TX_FFD_MSK    (3<<14) /* Bit 15..14:  Tx FIFO Depth Mask */
+#define PHY_M_PC_RX_FFD_MSK    (3<<12) /* Bit 13..12:  Rx FIFO Depth Mask */
+#define PHY_M_PC_ASS_CRS_TX    (1<<11) /* Bit 11:      Assert CRS on Transmit */
+#define PHY_M_PC_FL_GOOD       (1<<10) /* Bit 10:      Force Link Good */
+#define PHY_M_PC_EN_DET_MSK    (3<<8)  /* Bit  9.. 8:  Energy Detect Mask */
+#define PHY_M_PC_ENA_EXT_D     (1<<7)  /* Bit  7:      Enable Ext. Distance (10BT) */
+#define PHY_M_PC_MDIX_MSK      (3<<5)  /* Bit  6.. 5:  MDI/MDIX Config. Mask */
+#define PHY_M_PC_DIS_125CLK    (1<<4)  /* Bit  4:      Disable 125 CLK */
+#define PHY_M_PC_MAC_POW_UP    (1<<3)  /* Bit  3:      MAC Power up */
+#define PHY_M_PC_SQE_T_ENA     (1<<2)  /* Bit  2:      SQE Test Enabled */
+#define PHY_M_PC_POL_R_DIS     (1<<1)  /* Bit  1:      Polarity Reversal Disabled */
+#define PHY_M_PC_DIS_JABBER    (1<<0)  /* Bit  0:      Disable Jabber */
+
+#define PHY_M_PC_MDI_XMODE(x)  SHIFT5(x)
+#define PHY_M_PC_MAN_MDI       0        /* 00 = Manual MDI configuration */
+#define PHY_M_PC_MAN_MDIX      1               /* 01 = Manual MDIX configuration */
+#define PHY_M_PC_ENA_AUTO      3               /* 11 = Enable Automatic Crossover */
+
+/*****  PHY_MARV_PHY_STAT      16 bit r/o      PHY Specific Status Reg *****/
+#define PHY_M_PS_SPEED_MSK     (3<<14) /* Bit 15..14:  Speed Mask */
+#define PHY_M_PS_SPEED_1000    (1<<15) /*       10 = 1000 Mbps */
+#define PHY_M_PS_SPEED_100     (1<<14) /*       01 =  100 Mbps */
+#define PHY_M_PS_SPEED_10      0                /*       00 =   10 Mbps */
+#define PHY_M_PS_FULL_DUP      (1<<13) /* Bit 13:      Full Duplex */
+#define PHY_M_PS_PAGE_REC      (1<<12) /* Bit 12:      Page Received */
+#define PHY_M_PS_SPDUP_RES     (1<<11) /* Bit 11:      Speed & Duplex Resolved */
+#define PHY_M_PS_LINK_UP       (1<<10) /* Bit 10:      Link Up */
+#define PHY_M_PS_CABLE_MSK     (3<<7)  /* Bit  9.. 7:  Cable Length Mask */
+#define PHY_M_PS_MDI_X_STAT    (1<<6)  /* Bit  6:      MDI Crossover Stat (1=MDIX) */
+#define PHY_M_PS_DOWNS_STAT    (1<<5)  /* Bit  5:      Downshift Status (1=downsh.) */
+#define PHY_M_PS_ENDET_STAT    (1<<4)  /* Bit  4:      Energy Detect Status (1=act) */
+#define PHY_M_PS_TX_P_EN       (1<<3)  /* Bit  3:      Tx Pause Enabled */
+#define PHY_M_PS_RX_P_EN       (1<<2)  /* Bit  2:      Rx Pause Enabled */
+#define PHY_M_PS_POL_REV       (1<<1)  /* Bit  1:      Polarity Reversed */
+#define PHY_M_PC_JABBER                (1<<0)  /* Bit  0:      Jabber */
+
+#define PHY_M_PS_PAUSE_MSK     (PHY_M_PS_TX_P_EN | PHY_M_PS_RX_P_EN)
+
+/*****  PHY_MARV_INT_MASK      16 bit r/w      Interrupt Mask Reg *****/
+/*****  PHY_MARV_INT_STAT      16 bit r/o      Interrupt Status Reg *****/
+#define PHY_M_IS_AN_ERROR      (1<<15) /* Bit 15:      Auto-Negotiation Error */
+#define PHY_M_IS_LSP_CHANGE    (1<<14) /* Bit 14:      Link Speed Changed */
+#define PHY_M_IS_DUP_CHANGE    (1<<13) /* Bit 13:      Duplex Mode Changed */
+#define PHY_M_IS_AN_PR         (1<<12) /* Bit 12:      Page Received */
+#define PHY_M_IS_AN_COMPL      (1<<11) /* Bit 11:      Auto-Negotiation Completed */
+#define PHY_M_IS_LST_CHANGE    (1<<10) /* Bit 10:      Link Status Changed */
+#define PHY_M_IS_SYMB_ERROR    (1<<9)  /* Bit  9:      Symbol Error */
+#define PHY_M_IS_FALSE_CARR    (1<<8)  /* Bit  8:      False Carrier */
+#define PHY_M_IS_FIFO_ERROR    (1<<7)  /* Bit  7:      FIFO Overflow/Underrun Error */
+#define PHY_M_IS_MDI_CHANGE    (1<<6)  /* Bit  6:      MDI Crossover Changed */
+#define PHY_M_IS_DOWNSH_DET    (1<<5)  /* Bit  5:      Downshift Detected */
+#define PHY_M_IS_END_CHANGE    (1<<4)  /* Bit  4:      Energy Detect Changed */
+                                                                       /* Bit  3..2:   reserved */
+#define PHY_M_IS_POL_CHANGE    (1<<1)  /* Bit  1:      Polarity Changed */
+#define PHY_M_IS_JABBER                (1<<0)  /* Bit  0:      Jabber */
+
+#define PHY_M_DEF_MSK          (PHY_M_IS_AN_ERROR | PHY_M_IS_AN_PR | \
+                                                       PHY_M_IS_LST_CHANGE | PHY_M_IS_FIFO_ERROR)
+
+/*****  PHY_MARV_EXT_CTRL      16 bit r/w      Ext. PHY Specific Ctrl *****/
+#define PHY_M_EC_M_DSC_MSK     (3<<10) /* Bit 11..10:  Master downshift counter */
+#define PHY_M_EC_S_DSC_MSK     (3<<8)  /* Bit  9.. 8:  Slave  downshift counter */
+#define PHY_M_EC_MAC_S_MSK     (7<<4)  /* Bit  6.. 4:  Def. MAC interface speed */
+
+#define PHY_M_EC_M_DSC(x)              SHIFT10(x)      /* 00=1x; 01=2x; 10=3x; 11=4x */
+#define PHY_M_EC_S_DSC(x)              SHIFT8(x)       /* 00=dis; 01=1x; 10=2x; 11=3x */
+#define PHY_M_EC_MAC_S(x)              SHIFT4(x)       /* 01X=0; 110=2.5; 111=25 (MHz) */
+
+#define MAC_TX_CLK_0_MHZ       2
+#define MAC_TX_CLK_2_5_MHZ     6
+#define MAC_TX_CLK_25_MHZ      7
+
+/*****  PHY_MARV_LED_CTRL      16 bit r/w      LED Control Reg *****/
+#define PHY_M_LEDC_DIS_LED     (1<<15) /* Bit 15:      Disable LED */
+#define PHY_M_LEDC_PULS_MSK    (7<<12) /* Bit 14..12:  Pulse Stretch Mask */
+#define PHY_M_LEDC_F_INT       (1<<11) /* Bit 11:      Force Interrupt */
+#define PHY_M_LEDC_BL_R_MSK    (7<<8)  /* Bit 10.. 8:  Blink Rate Mask */
+                                                                       /* Bit  7.. 5:  reserved */
+#define PHY_M_LEDC_LINK_MSK    (3<<3)  /* Bit  4.. 3:  Link Control Mask */
+#define PHY_M_LEDC_DP_CTRL     (1<<2)  /* Bit  2:      Duplex Control */
+#define PHY_M_LEDC_RX_CTRL     (1<<1)  /* Bit  1:      Rx activity / Link */
+#define PHY_M_LEDC_TX_CTRL     (1<<0)  /* Bit  0:      Tx activity / Link */
+
+#define PHY_M_LED_PULS_DUR(x)  SHIFT12(x)      /* Pulse Stretch Duration */
+
+#define        PULS_NO_STR             0                /* no pulse stretching */
+#define        PULS_21MS               1               /* 21 ms to 42 ms */
+#define PULS_42MS              2               /* 42 ms to 84 ms */
+#define PULS_84MS              3               /* 84 ms to 170 ms */
+#define PULS_170MS             4               /* 170 ms to 340 ms */
+#define PULS_340MS             5               /* 340 ms to 670 ms */
+#define PULS_670MS             6               /* 670 ms to 1.3 s */
+#define PULS_1300MS            7               /* 1.3 s to 2.7 s */
+
+#define PHY_M_LED_BLINK_RT(x)  SHIFT8(x)       /* Blink Rate */
+
+#define BLINK_42MS             0                /* 42 ms */
+#define BLINK_84MS             1               /* 84 ms */
+#define BLINK_170MS            2               /* 170 ms */
+#define BLINK_340MS            3               /* 340 ms */
+#define BLINK_670MS            4               /* 670 ms */
+                                                               /* values 5 - 7: reserved */
+
+/*****  PHY_MARV_LED_OVER      16 bit r/w      Manual LED Override Reg *****/
+#define PHY_M_LED_MO_DUP(x)            SHIFT10(x)      /* Bit 11..10:  Duplex */
+#define PHY_M_LED_MO_10(x)             SHIFT8(x)       /* Bit  9.. 8:  Link 10 */
+#define PHY_M_LED_MO_100(x)            SHIFT6(x)       /* Bit  7.. 6:  Link 100 */
+#define PHY_M_LED_MO_1000(x)   SHIFT4(x)       /* Bit  5.. 4:  Link 1000 */
+#define PHY_M_LED_MO_RX(x)             SHIFT2(x)       /* Bit  3.. 2:  Rx */
+#define PHY_M_LED_MO_TX(x)             SHIFT0(x)       /* Bit  1.. 0:  Tx */
+
+#define MO_LED_NORM                    0
+#define MO_LED_BLINK           1
+#define MO_LED_OFF                     2
+#define MO_LED_ON                      3
+
+/*****  PHY_MARV_EXT_CTRL_2    16 bit r/w      Ext. PHY Specific Ctrl 2 *****/
+                                                                       /* Bit 15.. 7:  reserved */
+#define PHY_M_EC2_FI_IMPED     (1<<6)  /* Bit  6:      Fiber Input  Impedance */
+#define PHY_M_EC2_FO_IMPED     (1<<5)  /* Bit  5:      Fiber Output Impedance */
+#define PHY_M_EC2_FO_M_CLK     (1<<4)  /* Bit  4:      Fiber Mode Clock Enable */
+#define PHY_M_EC2_FO_BOOST     (1<<3)  /* Bit  3:      Fiber Output Boost */
+#define PHY_M_EC2_FO_AM_MSK    7               /* Bit  2.. 0:  Fiber Output Amplitude */
+
+/*****  PHY_MARV_CABLE_DIAG    16 bit r/o      Cable Diagnostic Reg *****/
+#define PHY_M_CABD_ENA_TEST    (1<<15) /* Bit 15:      Enable Test */
+#define PHY_M_CABD_STAT_MSK    (3<<13) /* Bit 14..13:  Status */
+                                                                       /* Bit 12.. 8:  reserved */
+#define PHY_M_CABD_DIST_MSK    0xff    /* Bit  7.. 0:  Distance */
+
+/* values for Cable Diagnostic Status (11=fail; 00=OK; 10=open; 01=short) */
+#define CABD_STAT_NORMAL       0
+#define CABD_STAT_SHORT                1
+#define CABD_STAT_OPEN         2
+#define CABD_STAT_FAIL         3
+
+
+/*
+ * GMAC registers
+ *
+ * The GMAC registers are 16 or 32 bits wide.
+ * The GMACs host processor interface is 16 bits wide,
+ * therefore ALL registers will be addressed with 16 bit accesses.
+ *
+ * The following macros are provided to access the GMAC registers
+ * GM_IN16(), GM_OUT16, GM_IN32(), GM_OUT32(), GM_INADR(), GM_OUTADR(),
+ * GM_INHASH(), and GM_OUTHASH().
+ * The macros are defined in SkGeHw.h.
+ *
+ * Note:       NA reg  = Network Address e.g DA, SA etc.
+ *
+ */
+
+/* Port Registers */
+#define GM_GP_STAT             0x0000          /* 16 bit r/o   General Purpose Status */
+#define GM_GP_CTRL             0x0004          /* 16 bit r/w   General Purpose Control */
+#define GM_TX_CTRL             0x0008          /* 16 bit r/w   Transmit Control Reg. */
+#define GM_RX_CTRL             0x000c          /* 16 bit r/w   Receive Control Reg. */
+#define GM_TX_FLOW_CTRL        0x0010          /* 16 bit r/w   Transmit Flow Control */
+#define GM_TX_PARAM            0x0014          /* 16 bit r/w   Transmit Parameter Reg. */
+#define GM_SERIAL_MODE 0x0018          /* 16 bit r/w   Serial Mode Register */
+
+/* Source Address Registers */
+#define GM_SRC_ADDR_1L 0x001c          /* 16 bit r/w   Source Address 1 (low) */
+#define GM_SRC_ADDR_1M 0x0020          /* 16 bit r/w   Source Address 1 (middle) */
+#define GM_SRC_ADDR_1H 0x0024          /* 16 bit r/w   Source Address 1 (high) */
+#define GM_SRC_ADDR_2L 0x0028          /* 16 bit r/w   Source Address 2 (low) */
+#define GM_SRC_ADDR_2M 0x002c          /* 16 bit r/w   Source Address 2 (middle) */
+#define GM_SRC_ADDR_2H 0x0030          /* 16 bit r/w   Source Address 2 (high) */
+
+/* Multicast Address Hash Registers */
+#define GM_MC_ADDR_H1  0x0034          /* 16 bit r/w   Multicast Address Hash 1 */
+#define GM_MC_ADDR_H2  0x0038          /* 16 bit r/w   Multicast Address Hash 2 */
+#define GM_MC_ADDR_H3  0x003c          /* 16 bit r/w   Multicast Address Hash 3 */
+#define GM_MC_ADDR_H4  0x0040          /* 16 bit r/w   Multicast Address Hash 4 */
+
+/* Interrupt Source Registers */
+#define GM_TX_IRQ_SRC  0x0044          /* 16 bit r/o   Tx Overflow IRQ Source */
+#define GM_RX_IRQ_SRC  0x0048          /* 16 bit r/o   Rx Overflow IRQ Source */
+#define GM_TR_IRQ_SRC  0x004c          /* 16 bit r/o   Tx/Rx Over. IRQ Source */
+
+/* Interrupt Mask Registers */
+#define GM_TX_IRQ_MSK  0x0050          /* 16 bit r/w   Tx Overflow IRQ Mask */
+#define GM_RX_IRQ_MSK  0x0054          /* 16 bit r/w   Rx Overflow IRQ Mask */
+#define GM_TR_IRQ_MSK  0x0058          /* 16 bit r/w   Tx/Rx Over. IRQ Mask */
+
+/* Serial Management Interface (SMI) Registers */
+#define GM_SMI_CTRL            0x0080          /* 16 bit r/w   SMI Control Register */
+#define GM_SMI_DATA            0x0084          /* 16 bit r/w   SMI Data Register */
+#define GM_PHY_ADDR            0x0088          /* 16 bit r/w   GPHY Address Register */
+
+/* MIB Counters */
+#define GM_MIB_CNT_BASE        0x0100          /* Base Address of MIB Counters */
+#define GM_MIB_CNT_SIZE        44                      /* Number of MIB Counters */
+
+/*
+ * MIB Counters base address definitions (low word) -
+ * use offset 4 for access to high word        (32 bit r/o)
+ */
+#define GM_RXF_UC_OK \
+                       (GM_MIB_CNT_BASE + 0)   /* Unicast Frames Received OK */
+#define GM_RXF_BC_OK \
+                       (GM_MIB_CNT_BASE + 8)   /* Broadcast Frames Received OK */
+#define GM_RXF_MPAUSE \
+                       (GM_MIB_CNT_BASE + 16)  /* Pause MAC Ctrl Frames Received */
+#define GM_RXF_MC_OK \
+                       (GM_MIB_CNT_BASE + 24)  /* Multicast Frames Received OK */
+#define GM_RXF_FCS_ERR \
+                       (GM_MIB_CNT_BASE + 32)  /* Rx Frame Check Seq. Error */
+       /* GM_MIB_CNT_BASE + 40:        reserved */
+#define GM_RXO_OK_LO \
+                       (GM_MIB_CNT_BASE + 48)  /* Octets Received OK Low */
+#define GM_RXO_OK_HI \
+                       (GM_MIB_CNT_BASE + 56)  /* Octets Received OK High */
+#define GM_RXO_ERR_LO \
+                       (GM_MIB_CNT_BASE + 64)  /* Octets Received Invalid Low */
+#define GM_RXO_ERR_HI \
+                       (GM_MIB_CNT_BASE + 72)  /* Octets Received Invalid High */
+#define GM_RXF_SHT \
+                       (GM_MIB_CNT_BASE + 80)  /* Frames <64 Byte Received OK */
+#define GM_RXE_FRAG \
+                       (GM_MIB_CNT_BASE + 88)  /* Frames <64 Byte Receeived with FCS Err */
+#define GM_RXF_64B \
+                       (GM_MIB_CNT_BASE + 96)  /* 64 Byte Rx Frame */
+#define GM_RXF_127B \
+                       (GM_MIB_CNT_BASE + 104) /* 65-127 Byte Rx Frame */
+#define GM_RXF_255B \
+                       (GM_MIB_CNT_BASE + 112) /* 128-255 Byte Rx Frame */
+#define GM_RXF_511B \
+                       (GM_MIB_CNT_BASE + 120) /* 256-511 Byte Rx Frame */
+#define GM_RXF_1023B \
+                       (GM_MIB_CNT_BASE + 128) /* 512-1023 Byte Rx Frame */
+#define GM_RXF_1518B \
+                       (GM_MIB_CNT_BASE + 136) /* 1024-1518 Byte Rx Frame */
+#define GM_RXF_MAX_SZ \
+                       (GM_MIB_CNT_BASE + 144) /* 1519-MaxSize Byte Rx Frame */
+#define GM_RXF_LNG_ERR \
+                       (GM_MIB_CNT_BASE + 152) /* Rx Frame too Long Error */
+#define GM_RXF_JAB_PKT \
+                       (GM_MIB_CNT_BASE + 160) /* Rx Jabber Packet Frame */
+       /* GM_MIB_CNT_BASE + 168:       reserved */
+#define GM_RXE_FIFO_OV \
+                       (GM_MIB_CNT_BASE + 176) /* Rx FIFO overflow Event */
+       /* GM_MIB_CNT_BASE + 184:       reserved */
+#define GM_TXF_UC_OK \
+                       (GM_MIB_CNT_BASE + 192) /* Unicast Frames Xmitted OK */
+#define GM_TXF_BC_OK \
+                       (GM_MIB_CNT_BASE + 200) /* Broadcast Frames Xmitted OK */
+#define GM_TXF_MPAUSE \
+                       (GM_MIB_CNT_BASE + 208) /* Pause MAC Ctrl Frames Xmitted */
+#define GM_TXF_MC_OK \
+                       (GM_MIB_CNT_BASE + 216) /* Multicast Frames Xmitted OK */
+#define GM_TXO_OK_LO \
+                       (GM_MIB_CNT_BASE + 224) /* Octets Transmitted OK Low */
+#define GM_TXO_OK_HI \
+                       (GM_MIB_CNT_BASE + 232) /* Octets Transmitted OK High */
+#define GM_TXF_64B \
+                       (GM_MIB_CNT_BASE + 240) /* 64 Byte Tx Frame */
+#define GM_TXF_127B \
+                       (GM_MIB_CNT_BASE + 248) /* 65-127 Byte Tx Frame */
+#define GM_TXF_255B \
+                       (GM_MIB_CNT_BASE + 256) /* 128-255 Byte Tx Frame */
+#define GM_TXF_511B \
+                       (GM_MIB_CNT_BASE + 264) /* 256-511 Byte Tx Frame */
+#define GM_TXF_1023B \
+                       (GM_MIB_CNT_BASE + 272) /* 512-1023 Byte Tx Frame */
+#define GM_TXF_1518B \
+                       (GM_MIB_CNT_BASE + 280) /* 1024-1518 Byte Tx Frame */
+#define GM_TXF_MAX_SZ \
+                       (GM_MIB_CNT_BASE + 288) /* 1519-MaxSize Byte Tx Frame */
+       /* GM_MIB_CNT_BASE + 296:       reserved */
+#define GM_TXF_COL \
+                       (GM_MIB_CNT_BASE + 304) /* Tx Collision */
+#define GM_TXF_LAT_COL \
+                       (GM_MIB_CNT_BASE + 312) /* Tx Late Collision */
+#define GM_TXF_ABO_COL \
+                       (GM_MIB_CNT_BASE + 320) /* Tx aborted due to Exces. Col. */
+#define GM_TXF_MUL_COL \
+                       (GM_MIB_CNT_BASE + 328) /* Tx Multiple Collision */
+#define GM_TXF_SNG_COL \
+                       (GM_MIB_CNT_BASE + 336) /* Tx Single Collision */
+#define GM_TXE_FIFO_UR \
+                       (GM_MIB_CNT_BASE + 344) /* Tx FIFO Underrun Event */
+
+/*----------------------------------------------------------------------------*/
+/*
+ * GMAC Bit Definitions
+ *
+ * If the bit access behaviour differs from the register access behaviour
+ * (r/w, r/o) this is documented after the bit number.
+ * The following bit access behaviours are used:
+ *     (sc)    self clearing
+ *     (r/o)   read only
+ */
+
+/*     GM_GP_STAT      16 bit r/o      General Purpose Status Register */
+
+#define GM_GPSR_SPEED          (1<<15) /* Bit 15:      Port Speed (1 = 100 Mbps) */
+#define GM_GPSR_DUPLEX         (1<<14) /* Bit 14:      Duplex Mode (1 = Full) */
+#define GM_GPSR_FC_TX_DIS      (1<<13) /* Bit 13:      Tx Flow Control Mode Disabled */
+#define GM_GPSR_LINK_UP                (1<<12) /* Bit 12:      Link Up Status */
+#define GM_GPSR_PAUSE          (1<<11) /* Bit 11:      Pause State */
+#define GM_GPSR_TX_ACTIVE      (1<<10) /* Bit 10:      Tx in Progress */
+#define GM_GPSR_EXC_COL                (1<<9)  /* Bit  9:      Excessive Collisions Occured */
+#define GM_GPSR_LAT_COL                (1<<8)  /* Bit  8:      Late Collisions Occured */
+                                                               /* Bit  7..6:   reserved */
+#define GM_GPSR_PHY_ST_CH      (1<<5)  /* Bit  5:      PHY Status Change */
+#define GM_GPSR_GIG_SPEED      (1<<4)  /* Bit  4:      Gigabit Speed (1 = 1000 Mbps) */
+#define GM_GPSR_PART_MODE      (1<<3)  /* Bit  3:      Partition mode */
+#define GM_GPSR_FC_RX_DIS      (1<<2)  /* Bit  2:      Rx Flow Control Mode Disabled */
+#define GM_GPSR_PROM_EN                (1<<1)  /* Bit  1:      Promiscuous Mode Enabled */
+                                                               /* Bit  0:      reserved */
+
+/*     GM_GP_CTRL      16 bit r/w      General Purpose Control Register */
+                                                               /* Bit 15:      reserved */
+#define GM_GPCR_PROM_ENA       (1<<14) /* Bit 14:      Enable Promiscuous Mode */
+#define GM_GPCR_FC_TX_DIS      (1<<13) /* Bit 13:      Disable Tx Flow Control Mode */
+#define GM_GPCR_TX_ENA         (1<<12) /* Bit 12:      Enable Transmit */
+#define GM_GPCR_RX_ENA         (1<<11) /* Bit 11:      Enable Receive */
+#define GM_GPCR_BURST_ENA      (1<<10) /* Bit 10:      Enable Burst Mode */
+#define GM_GPCR_LOOP_ENA       (1<<9)  /* Bit  9:      Enable MAC Loopback Mode */
+#define GM_GPCR_PART_ENA       (1<<8)  /* Bit  8:      Enable Partition Mode */
+#define GM_GPCR_GIGS_ENA       (1<<7)  /* Bit  7:      Gigabit Speed (1000 Mbps) */
+#define GM_GPCR_FL_PASS                (1<<6)  /* Bit  6:      Force Link Pass */
+#define GM_GPCR_DUP_FULL       (1<<5)  /* Bit  5:      Full Duplex Mode */
+#define GM_GPCR_FC_RX_DIS      (1<<4)  /* Bit  4:      Disable Rx Flow Control Mode */
+#define GM_GPCR_SPEED_100      (1<<3)  /* Bit  3:      Port Speed 100 Mbps */
+#define GM_GPCR_AU_DUP_DIS     (1<<2)  /* Bit  2:      Disable Auto-Update for Duplex */
+#define GM_GPCR_AU_FCT_DIS     (1<<1)  /* Bit  1:      Disable Auto-Update for Flow-c. */
+#define GM_GPCR_AU_SPD_DIS     (1<<0)  /* Bit  0:      Disable Auto-Update for Speed */
+
+#define GM_GPCR_SPEED_1000     (GM_GPCR_GIGS_ENA | GM_GPCR_SPEED_100)
+#define GM_GPCR_AU_ALL_DIS     (GM_GPCR_AU_DUP_DIS | GM_GPCR_AU_FCT_DIS |\
+                                                        GM_GPCR_AU_SPD_DIS)
+
+/*     GM_TX_CTRL                              16 bit r/w      Transmit Control Register */
+
+#define GM_TXCR_FORCE_JAM      (1<<15) /* Bit 15:      Force Jam / Flow-Control */
+#define GM_TXCR_CRC_DIS                (1<<14) /* Bit 14:      Disable insertion of CRC */
+#define GM_TXCR_PAD_DIS                (1<<13) /* Bit 13:      Disable padding of packets */
+#define GM_TXCR_COL_THR                (4<<10) /* Bit 12..10:  Collision Threshold */
+
+/*     GM_RX_CTRL                              16 bit r/w      Receive Control Register */
+#define GM_RXCR_UCF_ENA                (1<<15) /* Bit 15:      Enable Unicast filtering */
+#define GM_RXCR_MCF_ENA                (1<<14) /* Bit 14:      Enable Multicast filtering */
+#define GM_RXCR_CRC_DIS                (1<<13) /* Bit 13:      Remove 4-byte CRC */
+#define GM_RXCR_PASS_FC                (1<<12) /* Bit 12:      Pass FC packets to FIFO */
+
+/*     GM_TX_PARAM                             16 bit r/w      Transmit Parameter Register */
+#define GM_TXPA_JAMLEN_MSK     (0x03<<14)      /* Bit 15..14:  Jam Length */
+#define GM_TXPA_JAMIPG_MSK     (0x1f<<9)       /* Bit 13..9:   Jam IPG */
+#define GM_TXPA_JAMDAT_MSK     (0x1f<<4)       /* Bit  8..4:   IPG Jam to Data */
+                                                               /* Bit  3..0:   reserved */
+#define JAM_LEN_VAL(x)         SHIFT14(x)
+#define JAM_IPG_VAL(x)         SHIFT9(x)
+#define IPG_JAM_DATA(x)                SHIFT4(x)
+
+/*     GM_SERIAL_MODE                  16 bit r/w      Serial Mode Register */
+#define GM_SMOD_DATABL_MSK     (0x1f<<11)      /* Bit 15..11:  Data Blinder */
+#define GM_SMOD_LIMIT_4                (1<<10) /* Bit 10:      4 consecutive transmit trials */
+#define GM_SMOD_VLAN_ENA       (1<<9)  /* Bit  9:      Enable VLAN  (Max. Frame Length) */
+#define GM_SMOD_JUMBO_ENA      (1<<8)  /* Bit  8:      Enable Jumbo (Max. Frame Length) */
+                                                               /* Bit  7..5:   reserved */
+#define GM_SMOD_IPG_MSK                0x1f    /* Bit 4..0:    Inter-Packet Gap (IPG) */
+
+#define DATA_BLIND_VAL(x)      SHIFT11(x)
+#define DATA_BLIND_FAST_ETH    0x1c
+#define DATA_BLIND_GIGABIT     4
+
+#define IPG_VAL_FAST_ETH       0x1e
+#define IPG_VAL_GIGABIT                6
+
+/*     GM_SMI_CTRL                             16 bit r/w      SMI Control Register */
+
+#define GM_SMI_CT_PHY_AD(x)    SHIFT11(x)
+#define GM_SMI_CT_REG_AD(x)    SHIFT6(x)
+#define GM_SMI_CT_OP_RD                (1<<5)  /* Bit  5:      OpCode Read (0=Write)*/
+#define GM_SMI_CT_RD_VAL       (1<<4)  /* Bit  4:      Read Valid (Read completed) */
+#define GM_SMI_CT_BUSY         (1<<3)  /* Bit  3:      Busy (Operation in progress) */
+                                                               /* Bit   2..0:  reserved */
+
+/*     GM_PHY_ADDR                             16 bit r/w      GPHY Address Register */
+                                                               /* Bit  15..6:  reserved */
+#define GM_PAR_MIB_CLR         (1<<5)  /* Bit  5:      Set MIB Clear Counter Mode */
+#define GM_PAR_MIB_TST         (1<<4)  /* Bit  4:      MIB Load Counter (Test Mode) */
+                                                               /* Bit   3..0:  reserved */
+
+/* Receive Frame Status Encoding */
+#define GMR_FS_LEN     (0xffffUL<<16)  /* Bit 31..16:  Rx Frame Length */
+                                                               /* Bit  15..14: reserved */
+#define GMR_FS_VLAN            (1L<<13)        /* Bit 13:      VLAN Packet */
+#define GMR_FS_JABBER  (1L<<12)        /* Bit 12:      Jabber Packet */
+#define GMR_FS_UN_SIZE (1L<<11)        /* Bit 11:      Undersize Packet */
+#define GMR_FS_MC              (1L<<10)        /* Bit 10:      Multicast Packet */
+#define GMR_FS_BC              (1L<<9)         /* Bit  9:      Broadcast Packet */
+#define GMR_FS_RX_OK   (1L<<8)         /* Bit  8:      Receive OK (Good Packet) */
+#define GMR_FS_GOOD_FC (1L<<7)         /* Bit  7:      Good Flow-Control Packet */
+#define GMR_FS_BAD_FC  (1L<<6)         /* Bit  6:      Bad  Flow-Control Packet */
+#define GMR_FS_MII_ERR (1L<<5)         /* Bit  5:      MII Error */
+#define GMR_FS_LONG_ERR        (1L<<4)         /* Bit  4:      Too Long Packet */
+#define GMR_FS_FRAGMENT        (1L<<3)         /* Bit  3:      Fragment */
+                                                               /* Bit  2:      reserved */
+#define GMR_FS_CRC_ERR (1L<<1)         /* Bit  1:      CRC Error */
+#define GMR_FS_RX_FF_OV        (1L<<0)         /* Bit  0:      Rx FIFO Overflow */
+
+/*
+ * GMR_FS_ANY_ERR (analogous to XMR_FS_ANY_ERR)
+ */
+#define GMR_FS_ANY_ERR (GMR_FS_CRC_ERR | \
+                       GMR_FS_LONG_ERR | \
+                       GMR_FS_MII_ERR | \
+                       GMR_FS_BAD_FC | \
+                       GMR_FS_GOOD_FC | \
+                       GMR_FS_JABBER)
+
+/* Rx GMAC FIFO Flush Mask (default) */
+#define RX_FF_FL_DEF_MSK       (GMR_FS_CRC_ERR | \
+                       GMR_FS_RX_FF_OV | \
+                       GMR_FS_MII_ERR | \
+                       GMR_FS_BAD_FC | \
+                       GMR_FS_GOOD_FC | \
+                       GMR_FS_UN_SIZE | \
+                       GMR_FS_JABBER)
+
+/* typedefs *******************************************************************/
+
+
+/* function prototypes ********************************************************/
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* __INC_XMAC_H */
diff -Naur u-boot-2009.03_orig/drivers/net/sk98lin/skaddr.c u-boot-2009.03/drivers/net/sk98lin/skaddr.c
--- u-boot-2009.03_orig/drivers/net/sk98lin/skaddr.c    2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/drivers/net/sk98lin/skaddr.c 2009-03-31 14:54:29.175008800 -0700
@@ -1,1875 +1,1878 @@
-/******************************************************************************
- *
- * Name:       skaddr.c
- * Project:    GEnesis, PCI Gigabit Ethernet Adapter
- * Version:    $Revision: 1.48 $
- * Date:       $Date: 2003/02/12 17:09:37 $
- * Purpose:    Manage Addresses (Multicast and Unicast) and Promiscuous Mode.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- *     (C)Copyright 1998-2002 SysKonnect GmbH.
- *
- *     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.
- *
- *     The information in this file is provided "AS IS" without warranty.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * History:
- *
- *     $Log: skaddr.c,v $
- *     Revision 1.48  2003/02/12 17:09:37  tschilli
- *     Fix in SkAddrOverride() to set both (physical and logical) MAC addresses
- *     in case that both addresses are identical.
- *
- *     Revision 1.47  2002/09/17 06:31:10  tschilli
- *     Handling of SK_PROM_MODE_ALL_MC flag in SkAddrGmacMcUpdate()
- *     and SkAddrGmacPromiscuousChange() fixed.
- *     Editorial changes.
- *
- *     Revision 1.46  2002/08/22 07:55:41  tschilli
- *     New function SkGmacMcHash() for GMAC multicast hashing algorithm added.
- *     Editorial changes.
- *
- *     Revision 1.45  2002/08/15 12:29:35  tschilli
- *     SkAddrGmacMcUpdate() and SkAddrGmacPromiscuousChange() changed.
- *
- *     Revision 1.44  2002/08/14 12:18:03  rschmidt
- *     Replaced direct handling of MAC Hashing (XMAC and GMAC)
- *     with routine SkMacHashing().
- *     Replaced wrong 3rd para 'i' with 'PortNumber' in SkMacPromiscMode().
- *
- *     Revision 1.43  2002/08/13 09:37:43  rschmidt
- *     Corrected some SK_DBG_MSG outputs.
- *     Replaced wrong 2nd para pAC with IoC in SkMacPromiscMode().
- *     Editorial changes.
- *
- *     Revision 1.42  2002/08/12 11:24:36  rschmidt
- *     Remove setting of logical MAC address GM_SRC_ADDR_2 in SkAddrInit().
- *     Replaced direct handling of MAC Promiscuous Mode (XMAC and GMAC)
- *     with routine SkMacPromiscMode().
- *     Editorial changes.
- *
- *     Revision 1.41  2002/06/10 13:52:18  tschilli
- *     Changes for handling YUKON.
- *     All changes are internally and not visible to the programmer
- *     using this module.
- *
- *     Revision 1.40  2001/02/14 14:04:59  rassmann
- *     Editorial changes.
- *
- *     Revision 1.39  2001/01/30 10:30:04  rassmann
- *     Editorial changes.
- *
- *     Revision 1.38  2001/01/25 16:26:52  rassmann
- *     Ensured that logical address overrides are done on net's active port.
- *
- *     Revision 1.37  2001/01/22 13:41:34  rassmann
- *     Supporting two nets on dual-port adapters.
- *
- *     Revision 1.36  2000/08/07 11:10:39  rassmann
- *     Editorial changes.
- *
- *     Revision 1.35  2000/05/04 09:38:41  rassmann
- *     Editorial changes.
- *     Corrected multicast address hashing.
- *
- *     Revision 1.34  1999/11/22 13:23:44  cgoos
- *     Changed license header to GPL.
- *
- *     Revision 1.33  1999/05/28 10:56:06  rassmann
- *     Editorial changes.
- *
- *     Revision 1.32  1999/03/31 10:59:20  rassmann
- *     Returning Success instead of DupAddr if address shall be overridden
- *     with same value.
- *
- *     Revision 1.31  1999/01/14 16:18:17  rassmann
- *     Corrected multicast initialization.
- *
- *     Revision 1.30  1999/01/04 10:30:35  rassmann
- *     SkAddrOverride only possible after SK_INIT_IO phase.
- *
- *     Revision 1.29  1998/12/29 13:13:10  rassmann
- *     An address override is now preserved in the SK_INIT_IO phase.
- *     All functions return an int now.
- *     Extended parameter checking.
- *
- *     Revision 1.28  1998/12/01 11:45:53  rassmann
- *     Code cleanup.
- *
- *     Revision 1.27  1998/12/01 09:22:49  rassmann
- *     SkAddrMcAdd and SkAddrMcUpdate returned SK_MC_FILTERING_INEXACT
- *     too often.
- *
- *     Revision 1.26  1998/11/24 12:39:44  rassmann
- *     Reserved multicast entry for BPDU address.
- *     13 multicast entries left for protocol.
- *
- *     Revision 1.25  1998/11/17 16:54:23  rassmann
- *     Using exact match for up to 14 multicast addresses.
- *     Still receiving all multicasts if more addresses are added.
- *
- *     Revision 1.24  1998/11/13 17:24:31  rassmann
- *     Changed return value of SkAddrOverride to int.
- *
- *     Revision 1.23  1998/11/13 16:56:18  rassmann
- *     Added macro SK_ADDR_COMPARE.
- *     Changed return type of SkAddrOverride to SK_BOOL.
- *
- *     Revision 1.22  1998/11/04 17:06:17  rassmann
- *     Corrected McUpdate and PromiscuousChange functions.
- *
- *     Revision 1.21  1998/10/29 14:34:04  rassmann
- *     Clearing SK_ADDR struct at startup.
- *
- *     Revision 1.20  1998/10/28 18:16:34  rassmann
- *     Avoiding I/Os before SK_INIT_RUN level.
- *     Aligning InexactFilter.
- *
- *     Revision 1.19  1998/10/28 11:29:28  rassmann
- *     Programming physical address in SkAddrMcUpdate.
- *     Corrected programming of exact match entries.
- *
- *     Revision 1.18  1998/10/28 10:34:48  rassmann
- *     Corrected reading of physical addresses.
- *
- *     Revision 1.17  1998/10/28 10:26:13  rassmann
- *     Getting ports' current MAC addresses from EPROM now.
- *     Added debug output.
- *
- *     Revision 1.16  1998/10/27 16:20:12  rassmann
- *     Reading MAC address byte by byte.
- *
- *     Revision 1.15  1998/10/22 11:39:09  rassmann
- *     Corrected signed/unsigned mismatches.
- *
- *     Revision 1.14  1998/10/19 17:12:35  rassmann
- *     Syntax corrections.
- *
- *     Revision 1.13  1998/10/19 17:02:19  rassmann
- *     Now reading permanent MAC addresses from CRF.
- *
- *     Revision 1.12  1998/10/15 15:15:48  rassmann
- *     Changed Flags Parameters from SK_U8 to int.
- *     Checked with lint.
- *
- *     Revision 1.11  1998/09/24 19:15:12  rassmann
- *     Code cleanup.
- *
- *     Revision 1.10  1998/09/18 20:18:54  rassmann
- *     Added HW access.
- *     Implemented swapping.
- *
- *     Revision 1.9  1998/09/16 11:32:00  rassmann
- *     Including skdrv1st.h again. :(
- *
- *     Revision 1.8  1998/09/16 11:09:34  rassmann
- *     Syntax corrections.
- *
- *     Revision 1.7  1998/09/14 17:06:34  rassmann
- *     Minor changes.
- *
- *     Revision 1.6  1998/09/07 08:45:41  rassmann
- *     Syntax corrections.
- *
- *     Revision 1.5  1998/09/04 19:40:19  rassmann
- *     Interface enhancements.
- *
- *     Revision 1.4  1998/09/04 12:14:12  rassmann
- *     Interface cleanup.
- *
- *     Revision 1.3  1998/09/02 16:56:40  rassmann
- *     Updated interface.
- *
- *     Revision 1.2  1998/08/27 14:26:09  rassmann
- *     Updated interface.
- *
- *     Revision 1.1  1998/08/21 08:30:22  rassmann
- *     First public version.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * Description:
- *
- * This module is intended to manage multicast addresses, address override,
- * and promiscuous mode on GEnesis and Yukon adapters.
- *
- * Address Layout:
- *     port address:           physical MAC address
- *     1st exact match:        logical MAC address (GEnesis only)
- *     2nd exact match:        RLMT multicast (GEnesis only)
- *     exact match 3-13:       OS-specific multicasts (GEnesis only)
- *
- * Include File Hierarchy:
- *
- *     "skdrv1st.h"
- *     "skdrv2nd.h"
- *
- ******************************************************************************/
-
-#include <config.h>
-
-#ifndef        lint
-static const char SysKonnectFileId[] =
-       "@(#) $Id: skaddr.c,v 1.48 2003/02/12 17:09:37 tschilli Exp $ (C) SysKonnect.";
-#endif /* !defined(lint) */
-
-#define __SKADDR_C
-
-#ifdef __cplusplus
-#error C++ is not yet supported.
-extern "C" {
-#endif /* cplusplus */
-
-#include "h/skdrv1st.h"
-#include "h/skdrv2nd.h"
-
-/* defines ********************************************************************/
-
-
-#define XMAC_POLY      0xEDB88320UL    /* CRC32-Poly - XMAC: Little Endian */
-#define GMAC_POLY      0x04C11DB7L     /* CRC16-Poly - GMAC: Little Endian */
-#define HASH_BITS      6                               /* #bits in hash */
-#define        SK_MC_BIT       0x01
-
-/* Error numbers and messages. */
-
-#define SKERR_ADDR_E001                (SK_ERRBASE_ADDR + 0)
-#define SKERR_ADDR_E001MSG     "Bad Flags."
-#define SKERR_ADDR_E002                (SKERR_ADDR_E001 + 1)
-#define SKERR_ADDR_E002MSG     "New Error."
-
-/* typedefs *******************************************************************/
-
-/* None. */
-
-/* global variables ***********************************************************/
-
-/* 64-bit hash values with all bits set. */
-
-SK_U16 OnesHash[4] = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF};
-
-/* local variables ************************************************************/
-
-#ifdef DEBUG
-static int     Next0[SK_MAX_MACS] = {0, 0};
-#endif /* DEBUG */
-
-/* functions ******************************************************************/
-
-/******************************************************************************
- *
- *     SkAddrInit - initialize data, set state to init
- *
- * Description:
- *
- *     SK_INIT_DATA
- *     ============
- *
- *     This routine clears the multicast tables and resets promiscuous mode.
- *     Some entries are reserved for the "logical MAC address", the
- *     SK-RLMT multicast address, and the BPDU multicast address.
- *
- *
- *     SK_INIT_IO
- *     ==========
- *
- *     All permanent MAC addresses are read from EPROM.
- *     If the current MAC addresses are not already set in software,
- *     they are set to the values of the permanent addresses.
- *     The current addresses are written to the corresponding MAC.
- *
- *
- *     SK_INIT_RUN
- *     ===========
- *
- *     Nothing.
- *
- * Context:
- *     init, pageable
- *
- * Returns:
- *     SK_ADDR_SUCCESS
- */
-int    SkAddrInit(
-SK_AC  *pAC,   /* the adapter context */
-SK_IOC IoC,    /* I/O context */
-int            Level)  /* initialization level */
-{
-       int                     j;
-       SK_U32          i;
-       SK_U8           *InAddr;
-       SK_U16          *OutAddr;
-       SK_ADDR_PORT    *pAPort;
-
-       switch (Level) {
-       case SK_INIT_DATA:
-               SK_MEMSET((char *) &pAC->Addr, 0, sizeof(SK_ADDR));
-
-               for (i = 0; i < SK_MAX_MACS; i++) {
-                       pAPort = &pAC->Addr.Port[i];
-                       pAPort->PromMode = SK_PROM_MODE_NONE;
-
-                       pAPort->FirstExactMatchRlmt = SK_ADDR_FIRST_MATCH_RLMT;
-                       pAPort->FirstExactMatchDrv = SK_ADDR_FIRST_MATCH_DRV;
-                       pAPort->NextExactMatchRlmt = SK_ADDR_FIRST_MATCH_RLMT;
-                       pAPort->NextExactMatchDrv = SK_ADDR_FIRST_MATCH_DRV;
-               }
-#ifdef xDEBUG
-               for (i = 0; i < SK_MAX_MACS; i++) {
-                       if (pAC->Addr.Port[i].NextExactMatchRlmt <
-                               SK_ADDR_FIRST_MATCH_RLMT) {
-                               Next0[i] |= 4;
-                       }
-               }
-#endif /* DEBUG */
-               /* pAC->Addr.InitDone = SK_INIT_DATA; */
-               break;
-
-       case SK_INIT_IO:
-               for (i = 0; i < SK_MAX_NETS; i++) {
-                       pAC->Addr.Net[i].ActivePort = pAC->Rlmt.Net[i].ActivePort;
-               }
-#ifdef xDEBUG
-               for (i = 0; i < SK_MAX_MACS; i++) {
-                       if (pAC->Addr.Port[i].NextExactMatchRlmt <
-                               SK_ADDR_FIRST_MATCH_RLMT) {
-                               Next0[i] |= 8;
-                       }
-               }
-#endif /* DEBUG */
-
-               /* Read permanent logical MAC address from Control Register File. */
-               for (j = 0; j < SK_MAC_ADDR_LEN; j++) {
-                       InAddr = (SK_U8 *) &pAC->Addr.Net[0].PermanentMacAddress.a[j];
-                       SK_IN8(IoC, B2_MAC_1 + j, InAddr);
-               }
-
-               if (!pAC->Addr.Net[0].CurrentMacAddressSet) {
-                       /* Set the current logical MAC address to the permanent one. */
-                       pAC->Addr.Net[0].CurrentMacAddress =
-                               pAC->Addr.Net[0].PermanentMacAddress;
-                       pAC->Addr.Net[0].CurrentMacAddressSet = SK_TRUE;
-               }
-
-               /* Set the current logical MAC address. */
-               pAC->Addr.Port[pAC->Addr.Net[0].ActivePort].Exact[0] =
-                       pAC->Addr.Net[0].CurrentMacAddress;
-#if SK_MAX_NETS > 1
-               /* Set logical MAC address for net 2 to (log | 3). */
-               if (!pAC->Addr.Net[1].CurrentMacAddressSet) {
-                       pAC->Addr.Net[1].PermanentMacAddress =
-                               pAC->Addr.Net[0].PermanentMacAddress;
-                       pAC->Addr.Net[1].PermanentMacAddress.a[5] |= 3;
-                       /* Set the current logical MAC address to the permanent one. */
-                       pAC->Addr.Net[1].CurrentMacAddress =
-                               pAC->Addr.Net[1].PermanentMacAddress;
-                       pAC->Addr.Net[1].CurrentMacAddressSet = SK_TRUE;
-               }
-#endif /* SK_MAX_NETS > 1 */
-
-#ifdef DEBUG
-               for (i = 0; i < (SK_U32) pAC->GIni.GIMacsFound; i++) {
-                       SK_DBG_MSG(pAC, SK_DBGMOD_ADDR, SK_DBGCAT_INIT,
-                               ("Permanent MAC Address (Net%d): %02X %02X %02X %02X %02X %02X\n",
-                                       i,
-                                       pAC->Addr.Net[i].PermanentMacAddress.a[0],
-                                       pAC->Addr.Net[i].PermanentMacAddress.a[1],
-                                       pAC->Addr.Net[i].PermanentMacAddress.a[2],
-                                       pAC->Addr.Net[i].PermanentMacAddress.a[3],
-                                       pAC->Addr.Net[i].PermanentMacAddress.a[4],
-                                       pAC->Addr.Net[i].PermanentMacAddress.a[5]))
-
-                       SK_DBG_MSG(pAC, SK_DBGMOD_ADDR, SK_DBGCAT_INIT,
-                               ("Logical MAC Address (Net%d): %02X %02X %02X %02X %02X %02X\n",
-                                       i,
-                                       pAC->Addr.Net[i].CurrentMacAddress.a[0],
-                                       pAC->Addr.Net[i].CurrentMacAddress.a[1],
-                                       pAC->Addr.Net[i].CurrentMacAddress.a[2],
-                                       pAC->Addr.Net[i].CurrentMacAddress.a[3],
-                                       pAC->Addr.Net[i].CurrentMacAddress.a[4],
-                                       pAC->Addr.Net[i].CurrentMacAddress.a[5]))
-               }
-#endif /* DEBUG */
-
-               for (i = 0; i < (SK_U32) pAC->GIni.GIMacsFound; i++) {
-                       pAPort = &pAC->Addr.Port[i];
-
-                       /* Read permanent port addresses from Control Register File. */
-                       for (j = 0; j < SK_MAC_ADDR_LEN; j++) {
-                               InAddr = (SK_U8 *) &pAPort->PermanentMacAddress.a[j];
-                               SK_IN8(IoC, B2_MAC_2 + 8 * i + j, InAddr);
-                       }
-
-                       if (!pAPort->CurrentMacAddressSet) {
-                               /*
-                                * Set the current and previous physical MAC address
-                                * of this port to its permanent MAC address.
-                                */
-                               pAPort->CurrentMacAddress = pAPort->PermanentMacAddress;
-                               pAPort->PreviousMacAddress = pAPort->PermanentMacAddress;
-                               pAPort->CurrentMacAddressSet = SK_TRUE;
-                       }
-
-                       /* Set port's current physical MAC address. */
-                       OutAddr = (SK_U16 *) &pAPort->CurrentMacAddress.a[0];
-
-                       if (pAC->GIni.GIChipId == CHIP_ID_GENESIS) {
-                               XM_OUTADDR(IoC, i, XM_SA, OutAddr);
-                       }
-                       else {
-                               GM_OUTADDR(IoC, i, GM_SRC_ADDR_1L, OutAddr);
-                       }
-#ifdef DEBUG
-                       SK_DBG_MSG(pAC, SK_DBGMOD_ADDR, SK_DBGCAT_INIT,
-                               ("SkAddrInit: Permanent Physical MAC Address: %02X %02X %02X %02X %02X %02X\n",
-                                       pAPort->PermanentMacAddress.a[0],
-                                       pAPort->PermanentMacAddress.a[1],
-                                       pAPort->PermanentMacAddress.a[2],
-                                       pAPort->PermanentMacAddress.a[3],
-                                       pAPort->PermanentMacAddress.a[4],
-                                       pAPort->PermanentMacAddress.a[5]))
-
-                       SK_DBG_MSG(pAC, SK_DBGMOD_ADDR, SK_DBGCAT_INIT,
-                               ("SkAddrInit: Physical MAC Address: %02X %02X %02X %02X %02X %02X\n",
-                                       pAPort->CurrentMacAddress.a[0],
-                                       pAPort->CurrentMacAddress.a[1],
-                                       pAPort->CurrentMacAddress.a[2],
-                                       pAPort->CurrentMacAddress.a[3],
-                                       pAPort->CurrentMacAddress.a[4],
-                                       pAPort->CurrentMacAddress.a[5]))
-#endif /* DEBUG */
-               }
-               /* pAC->Addr.InitDone = SK_INIT_IO; */
-               break;
-
-       case SK_INIT_RUN:
-#ifdef xDEBUG
-               for (i = 0; i < SK_MAX_MACS; i++) {
-                       if (pAC->Addr.Port[i].NextExactMatchRlmt <
-                               SK_ADDR_FIRST_MATCH_RLMT) {
-                               Next0[i] |= 16;
-                       }
-               }
-#endif /* DEBUG */
-
-               /* pAC->Addr.InitDone = SK_INIT_RUN; */
-               break;
-
-       default:        /* error */
-               break;
-       }
-
-       return (SK_ADDR_SUCCESS);
-
-}      /* SkAddrInit */
-
-
-/******************************************************************************
- *
- *     SkAddrMcClear - clear the multicast table
- *
- * Description:
- *     This routine clears the multicast table.
- *
- *     If not suppressed by Flag SK_MC_SW_ONLY, the hardware is updated
- *     immediately.
- *
- *     It calls either SkAddrXmacMcClear or SkAddrGmacMcClear, according
- *     to the adapter in use. The real work is done there.
- *
- * Context:
- *     runtime, pageable
- *     may be called starting with SK_INIT_DATA with flag SK_MC_SW_ONLY
- *     may be called after SK_INIT_IO without limitation
- *
- * Returns:
- *     SK_ADDR_SUCCESS
- *     SK_ADDR_ILLEGAL_PORT
- */
-int    SkAddrMcClear(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* I/O context */
-SK_U32 PortNumber,     /* Index of affected port */
-int            Flags)          /* permanent/non-perm, sw-only */
-{
-       int ReturnCode;
-
-       if (PortNumber >= (SK_U32) pAC->GIni.GIMacsFound) {
-               return (SK_ADDR_ILLEGAL_PORT);
-       }
-
-       if (pAC->GIni.GIChipId == CHIP_ID_GENESIS) {
-               ReturnCode = SkAddrXmacMcClear(pAC, IoC, PortNumber, Flags);
-       }
-       else {
-               ReturnCode = SkAddrGmacMcClear(pAC, IoC, PortNumber, Flags);
-       }
-
-       return (ReturnCode);
-
-}      /* SkAddrMcClear */
-
-
-/******************************************************************************
- *
- *     SkAddrXmacMcClear - clear the multicast table
- *
- * Description:
- *     This routine clears the multicast table
- *     (either entry 2 or entries 3-16 and InexactFilter) of the given port.
- *     If not suppressed by Flag SK_MC_SW_ONLY, the hardware is updated
- *     immediately.
- *
- * Context:
- *     runtime, pageable
- *     may be called starting with SK_INIT_DATA with flag SK_MC_SW_ONLY
- *     may be called after SK_INIT_IO without limitation
- *
- * Returns:
- *     SK_ADDR_SUCCESS
- *     SK_ADDR_ILLEGAL_PORT
- */
-int    SkAddrXmacMcClear(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* I/O context */
-SK_U32 PortNumber,     /* Index of affected port */
-int            Flags)          /* permanent/non-perm, sw-only */
-{
-       int i;
-
-       if (Flags & SK_ADDR_PERMANENT) {        /* permanent => RLMT */
-
-               /* Clear RLMT multicast addresses. */
-               pAC->Addr.Port[PortNumber].NextExactMatchRlmt = SK_ADDR_FIRST_MATCH_RLMT;
-       }
-       else {  /* not permanent => DRV */
-
-               /* Clear InexactFilter */
-               for (i = 0; i < 8; i++) {
-                       pAC->Addr.Port[PortNumber].InexactFilter.Bytes[i] = 0;
-               }
-
-               /* Clear DRV multicast addresses. */
-
-               pAC->Addr.Port[PortNumber].NextExactMatchDrv = SK_ADDR_FIRST_MATCH_DRV;
-       }
-
-       if (!(Flags & SK_MC_SW_ONLY)) {
-               (void) SkAddrXmacMcUpdate(pAC, IoC, PortNumber);
-       }
-
-       return (SK_ADDR_SUCCESS);
-
-}      /* SkAddrXmacMcClear */
-
-
-/******************************************************************************
- *
- *     SkAddrGmacMcClear - clear the multicast table
- *
- * Description:
- *     This routine clears the multicast hashing table (InexactFilter)
- *     (either the RLMT or the driver bits) of the given port.
- *
- *     If not suppressed by Flag SK_MC_SW_ONLY, the hardware is updated
- *     immediately.
- *
- * Context:
- *     runtime, pageable
- *     may be called starting with SK_INIT_DATA with flag SK_MC_SW_ONLY
- *     may be called after SK_INIT_IO without limitation
- *
- * Returns:
- *     SK_ADDR_SUCCESS
- *     SK_ADDR_ILLEGAL_PORT
- */
-int    SkAddrGmacMcClear(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* I/O context */
-SK_U32 PortNumber,     /* Index of affected port */
-int            Flags)          /* permanent/non-perm, sw-only */
-{
-       int i;
-
-#ifdef DEBUG
-       SK_DBG_MSG(pAC, SK_DBGMOD_ADDR, SK_DBGCAT_CTRL,
-               ("GMAC InexactFilter (not cleared): %02X %02X %02X %02X %02X %02X %02X %02X\n",
-                       pAC->Addr.Port[PortNumber].InexactFilter.Bytes[0],
-                       pAC->Addr.Port[PortNumber].InexactFilter.Bytes[1],
-                       pAC->Addr.Port[PortNumber].InexactFilter.Bytes[2],
-                       pAC->Addr.Port[PortNumber].InexactFilter.Bytes[3],
-                       pAC->Addr.Port[PortNumber].InexactFilter.Bytes[4],
-                       pAC->Addr.Port[PortNumber].InexactFilter.Bytes[5],
-                       pAC->Addr.Port[PortNumber].InexactFilter.Bytes[6],
-                       pAC->Addr.Port[PortNumber].InexactFilter.Bytes[7]))
-#endif /* DEBUG */
-
-       /* Clear InexactFilter */
-       for (i = 0; i < 8; i++) {
-               pAC->Addr.Port[PortNumber].InexactFilter.Bytes[i] = 0;
-       }
-
-       if (Flags & SK_ADDR_PERMANENT) {        /* permanent => RLMT */
-
-               /* Copy DRV bits to InexactFilter. */
-               for (i = 0; i < 8; i++) {
-                       pAC->Addr.Port[PortNumber].InexactFilter.Bytes[i] |=
-                               pAC->Addr.Port[PortNumber].InexactDrvFilter.Bytes[i];
-
-                       /* Clear InexactRlmtFilter. */
-                       pAC->Addr.Port[PortNumber].InexactRlmtFilter.Bytes[i] = 0;
-
-               }
-       }
-       else {  /* not permanent => DRV */
-
-               /* Copy RLMT bits to InexactFilter. */
-               for (i = 0; i < 8; i++) {
-                       pAC->Addr.Port[PortNumber].InexactFilter.Bytes[i] |=
-                               pAC->Addr.Port[PortNumber].InexactRlmtFilter.Bytes[i];
-
-                       /* Clear InexactDrvFilter. */
-                       pAC->Addr.Port[PortNumber].InexactDrvFilter.Bytes[i] = 0;
-               }
-       }
-
-#ifdef DEBUG
-       SK_DBG_MSG(pAC, SK_DBGMOD_ADDR, SK_DBGCAT_CTRL,
-               ("GMAC InexactFilter (cleared): %02X %02X %02X %02X %02X %02X %02X %02X\n",
-                       pAC->Addr.Port[PortNumber].InexactFilter.Bytes[0],
-                       pAC->Addr.Port[PortNumber].InexactFilter.Bytes[1],
-                       pAC->Addr.Port[PortNumber].InexactFilter.Bytes[2],
-                       pAC->Addr.Port[PortNumber].InexactFilter.Bytes[3],
-                       pAC->Addr.Port[PortNumber].InexactFilter.Bytes[4],
-                       pAC->Addr.Port[PortNumber].InexactFilter.Bytes[5],
-                       pAC->Addr.Port[PortNumber].InexactFilter.Bytes[6],
-                       pAC->Addr.Port[PortNumber].InexactFilter.Bytes[7]))
-#endif /* DEBUG */
-
-       if (!(Flags & SK_MC_SW_ONLY)) {
-               (void) SkAddrGmacMcUpdate(pAC, IoC, PortNumber);
-       }
-
-       return (SK_ADDR_SUCCESS);
-
-}      /* SkAddrGmacMcClear */
-
-#ifndef SK_ADDR_CHEAT
-
-/******************************************************************************
- *
- *     SkXmacMcHash - hash multicast address
- *
- * Description:
- *     This routine computes the hash value for a multicast address.
- *     A CRC32 algorithm is used.
- *
- * Notes:
- *     The code was adapted from the XaQti data sheet.
- *
- * Context:
- *     runtime, pageable
- *
- * Returns:
- *     Hash value of multicast address.
- */
-SK_U32 SkXmacMcHash(
-unsigned char *pMc)    /* Multicast address */
-{
-       SK_U32 Idx;
-       SK_U32 Bit;
-       SK_U32 Data;
-       SK_U32 Crc;
-
-       Crc = 0xFFFFFFFFUL;
-       for (Idx = 0; Idx < SK_MAC_ADDR_LEN; Idx++) {
-               Data = *pMc++;
-               for (Bit = 0; Bit < 8; Bit++, Data >>= 1) {
-                       Crc = (Crc >> 1) ^ (((Crc ^ Data) & 1) ? XMAC_POLY : 0);
-               }
-       }
-
-       return (Crc & ((1 << HASH_BITS) - 1));
-
-}      /* SkXmacMcHash */
-
-
-/******************************************************************************
- *
- *     SkGmacMcHash - hash multicast address
- *
- * Description:
- *     This routine computes the hash value for a multicast address.
- *     A CRC16 algorithm is used.
- *
- * Notes:
- *
- *
- * Context:
- *     runtime, pageable
- *
- * Returns:
- *     Hash value of multicast address.
- */
-SK_U32 SkGmacMcHash(
-unsigned char *pMc)    /* Multicast address */
-{
-       SK_U32 Data;
-       SK_U32 TmpData;
-       SK_U32 Crc;
-       int Byte;
-       int Bit;
-
-       Crc = 0xFFFFFFFFUL;
-       for (Byte = 0; Byte < 6; Byte++) {
-               /* Get next byte. */
-               Data = (SK_U32) pMc[Byte];
-
-               /* Change bit order in byte. */
-               TmpData = Data;
-               for (Bit = 0; Bit < 8; Bit++) {
-                       if (TmpData & 1L) {
-                               Data |=  1L << (7 - Bit);
-                       }
-                       else {
-                               Data &= ~(1L << (7 - Bit));
-                       }
-                       TmpData >>= 1;
-               }
-
-               Crc ^= (Data << 24);
-               for (Bit = 0; Bit < 8; Bit++) {
-                       if (Crc & 0x80000000) {
-                               Crc = (Crc << 1) ^ GMAC_POLY;
-                       }
-                       else {
-                               Crc <<= 1;
-                       }
-               }
-       }
-
-       return (Crc & ((1 << HASH_BITS) - 1));
-
-}      /* SkGmacMcHash */
-
-#endif /* not SK_ADDR_CHEAT */
-
-/******************************************************************************
- *
- *     SkAddrMcAdd - add a multicast address to a port
- *
- * Description:
- *     This routine enables reception for a given address on the given port.
- *
- *     It calls either SkAddrXmacMcAdd or SkAddrGmacMcAdd, according to the
- *     adapter in use. The real work is done there.
- *
- * Notes:
- *     The return code is only valid for SK_PROM_MODE_NONE.
- *
- * Context:
- *     runtime, pageable
- *     may be called after SK_INIT_DATA
- *
- * Returns:
- *     SK_MC_FILTERING_EXACT
- *     SK_MC_FILTERING_INEXACT
- *     SK_MC_ILLEGAL_ADDRESS
- *     SK_MC_ILLEGAL_PORT
- *     SK_MC_RLMT_OVERFLOW
- */
-int    SkAddrMcAdd(
-SK_AC          *pAC,           /* adapter context */
-SK_IOC         IoC,            /* I/O context */
-SK_U32         PortNumber,     /* Port Number */
-SK_MAC_ADDR    *pMc,           /* multicast address to be added */
-int                    Flags)          /* permanent/non-permanent */
-{
-       int ReturnCode;
-
-       if (PortNumber >= (SK_U32) pAC->GIni.GIMacsFound) {
-               return (SK_ADDR_ILLEGAL_PORT);
-       }
-
-       if (pAC->GIni.GIChipId == CHIP_ID_GENESIS) {
-               ReturnCode = SkAddrXmacMcAdd(pAC, IoC, PortNumber, pMc, Flags);
-       }
-       else {
-               ReturnCode = SkAddrGmacMcAdd(pAC, IoC, PortNumber, pMc, Flags);
-       }
-
-       return (ReturnCode);
-
-}      /* SkAddrMcAdd */
-
-
-/******************************************************************************
- *
- *     SkAddrXmacMcAdd - add a multicast address to a port
- *
- * Description:
- *     This routine enables reception for a given address on the given port.
- *
- * Notes:
- *     The return code is only valid for SK_PROM_MODE_NONE.
- *
- *     The multicast bit is only checked if there are no free exact match
- *     entries.
- *
- * Context:
- *     runtime, pageable
- *     may be called after SK_INIT_DATA
- *
- * Returns:
- *     SK_MC_FILTERING_EXACT
- *     SK_MC_FILTERING_INEXACT
- *     SK_MC_ILLEGAL_ADDRESS
- *     SK_MC_RLMT_OVERFLOW
- */
-int    SkAddrXmacMcAdd(
-SK_AC          *pAC,           /* adapter context */
-SK_IOC         IoC,            /* I/O context */
-SK_U32         PortNumber,     /* Port Number */
-SK_MAC_ADDR    *pMc,           /* multicast address to be added */
-int            Flags)          /* permanent/non-permanent */
-{
-       int     i;
-       SK_U8   Inexact;
-#ifndef SK_ADDR_CHEAT
-       SK_U32 HashBit;
-#endif /* !defined(SK_ADDR_CHEAT) */
-
-       if (Flags & SK_ADDR_PERMANENT) {        /* permanent => RLMT */
-#ifdef xDEBUG
-               if (pAC->Addr.Port[PortNumber].NextExactMatchRlmt <
-                       SK_ADDR_FIRST_MATCH_RLMT) {
-                       Next0[PortNumber] |= 1;
-                       return (SK_MC_RLMT_OVERFLOW);
-               }
-#endif /* DEBUG */
-
-               if (pAC->Addr.Port[PortNumber].NextExactMatchRlmt >
-                       SK_ADDR_LAST_MATCH_RLMT) {
-                       return (SK_MC_RLMT_OVERFLOW);
-               }
-
-               /* Set a RLMT multicast address. */
-
-               pAC->Addr.Port[PortNumber].Exact[
-                       pAC->Addr.Port[PortNumber].NextExactMatchRlmt++] = *pMc;
-
-               return (SK_MC_FILTERING_EXACT);
-       }
-
-#ifdef xDEBUG
-       if (pAC->Addr.Port[PortNumber].NextExactMatchDrv <
-               SK_ADDR_FIRST_MATCH_DRV) {
-                       Next0[PortNumber] |= 2;
-               return (SK_MC_RLMT_OVERFLOW);
-       }
-#endif /* DEBUG */
-
-       if (pAC->Addr.Port[PortNumber].NextExactMatchDrv <= SK_ADDR_LAST_MATCH_DRV) {
-
-               /* Set exact match entry. */
-               pAC->Addr.Port[PortNumber].Exact[
-                       pAC->Addr.Port[PortNumber].NextExactMatchDrv++] = *pMc;
-
-               /* Clear InexactFilter */
-               for (i = 0; i < 8; i++) {
-                       pAC->Addr.Port[PortNumber].InexactFilter.Bytes[i] = 0;
-               }
-       }
-       else {
-               if (!(pMc->a[0] & SK_MC_BIT)) {
-                       /* Hashing only possible with multicast addresses. */
-                       return (SK_MC_ILLEGAL_ADDRESS);
-               }
-#ifndef SK_ADDR_CHEAT
-               /* Compute hash value of address. */
-               HashBit = 63 - SkXmacMcHash(&pMc->a[0]);
-
-               /* Add bit to InexactFilter. */
-               pAC->Addr.Port[PortNumber].InexactFilter.Bytes[HashBit / 8] |=
-                       1 << (HashBit % 8);
-#else  /* SK_ADDR_CHEAT */
-               /* Set all bits in InexactFilter. */
-               for (i = 0; i < 8; i++) {
-                       pAC->Addr.Port[PortNumber].InexactFilter.Bytes[i] = 0xFF;
-               }
-#endif /* SK_ADDR_CHEAT */
-       }
-
-       for (Inexact = 0, i = 0; i < 8; i++) {
-               Inexact |= pAC->Addr.Port[PortNumber].InexactFilter.Bytes[i];
-       }
-
-       if (Inexact == 0 && pAC->Addr.Port[PortNumber].PromMode == 0) {
-               return (SK_MC_FILTERING_EXACT);
-       }
-       else {
-               return (SK_MC_FILTERING_INEXACT);
-       }
-
-}      /* SkAddrXmacMcAdd */
-
-
-/******************************************************************************
- *
- *     SkAddrGmacMcAdd - add a multicast address to a port
- *
- * Description:
- *     This routine enables reception for a given address on the given port.
- *
- * Notes:
- *     The return code is only valid for SK_PROM_MODE_NONE.
- *
- * Context:
- *     runtime, pageable
- *     may be called after SK_INIT_DATA
- *
- * Returns:
- *     SK_MC_FILTERING_INEXACT
- *     SK_MC_ILLEGAL_ADDRESS
- */
-int    SkAddrGmacMcAdd(
-SK_AC          *pAC,           /* adapter context */
-SK_IOC         IoC,            /* I/O context */
-SK_U32         PortNumber,     /* Port Number */
-SK_MAC_ADDR    *pMc,           /* multicast address to be added */
-int            Flags)          /* permanent/non-permanent */
-{
-       int     i;
-#ifndef SK_ADDR_CHEAT
-       SK_U32 HashBit;
-#endif /* !defined(SK_ADDR_CHEAT) */
-
-       if (!(pMc->a[0] & SK_MC_BIT)) {
-               /* Hashing only possible with multicast addresses. */
-               return (SK_MC_ILLEGAL_ADDRESS);
-       }
-
-#ifndef SK_ADDR_CHEAT
-
-       /* Compute hash value of address. */
-       HashBit = SkGmacMcHash(&pMc->a[0]);
-
-       if (Flags & SK_ADDR_PERMANENT) {        /* permanent => RLMT */
-
-               /* Add bit to InexactRlmtFilter. */
-               pAC->Addr.Port[PortNumber].InexactRlmtFilter.Bytes[HashBit / 8] |=
-                       1 << (HashBit % 8);
-
-               /* Copy bit to InexactFilter. */
-               for (i = 0; i < 8; i++) {
-                       pAC->Addr.Port[PortNumber].InexactFilter.Bytes[i] |=
-                               pAC->Addr.Port[PortNumber].InexactRlmtFilter.Bytes[i];
-               }
-#ifdef DEBUG
-               SK_DBG_MSG(pAC, SK_DBGMOD_ADDR, SK_DBGCAT_CTRL,
-               ("GMAC InexactRlmtFilter: %02X %02X %02X %02X %02X %02X %02X %02X\n",
-                       pAC->Addr.Port[PortNumber].InexactRlmtFilter.Bytes[0],
-                       pAC->Addr.Port[PortNumber].InexactRlmtFilter.Bytes[1],
-                       pAC->Addr.Port[PortNumber].InexactRlmtFilter.Bytes[2],
-                       pAC->Addr.Port[PortNumber].InexactRlmtFilter.Bytes[3],
-                       pAC->Addr.Port[PortNumber].InexactRlmtFilter.Bytes[4],
-                       pAC->Addr.Port[PortNumber].InexactRlmtFilter.Bytes[5],
-                       pAC->Addr.Port[PortNumber].InexactRlmtFilter.Bytes[6],
-                       pAC->Addr.Port[PortNumber].InexactRlmtFilter.Bytes[7]))
-#endif /* DEBUG */
-       }
-       else {  /* not permanent => DRV */
-
-               /* Add bit to InexactDrvFilter. */
-               pAC->Addr.Port[PortNumber].InexactDrvFilter.Bytes[HashBit / 8] |=
-                       1 << (HashBit % 8);
-
-               /* Copy bit to InexactFilter. */
-               for (i = 0; i < 8; i++) {
-                       pAC->Addr.Port[PortNumber].InexactFilter.Bytes[i] |=
-                               pAC->Addr.Port[PortNumber].InexactDrvFilter.Bytes[i];
-               }
-#ifdef DEBUG
-               SK_DBG_MSG(pAC, SK_DBGMOD_ADDR, SK_DBGCAT_CTRL,
-               ("GMAC InexactDrvFilter: %02X %02X %02X %02X %02X %02X %02X %02X\n",
-                       pAC->Addr.Port[PortNumber].InexactDrvFilter.Bytes[0],
-                       pAC->Addr.Port[PortNumber].InexactDrvFilter.Bytes[1],
-                       pAC->Addr.Port[PortNumber].InexactDrvFilter.Bytes[2],
-                       pAC->Addr.Port[PortNumber].InexactDrvFilter.Bytes[3],
-                       pAC->Addr.Port[PortNumber].InexactDrvFilter.Bytes[4],
-                       pAC->Addr.Port[PortNumber].InexactDrvFilter.Bytes[5],
-                       pAC->Addr.Port[PortNumber].InexactDrvFilter.Bytes[6],
-                       pAC->Addr.Port[PortNumber].InexactDrvFilter.Bytes[7]))
-#endif /* DEBUG */
-       }
-
-#else  /* SK_ADDR_CHEAT */
-
-       /* Set all bits in InexactFilter. */
-       for (i = 0; i < 8; i++) {
-               pAC->Addr.Port[PortNumber].InexactFilter.Bytes[i] = 0xFF;
-       }
-#endif /* SK_ADDR_CHEAT */
-
-       return (SK_MC_FILTERING_INEXACT);
-
-}      /* SkAddrGmacMcAdd */
-
-
-/******************************************************************************
- *
- *     SkAddrMcUpdate - update the HW MC address table and set the MAC address
- *
- * Description:
- *     This routine enables reception of the addresses contained in a local
- *     table for a given port.
- *     It also programs the port's current physical MAC address.
- *
- *     It calls either SkAddrXmacMcUpdate or SkAddrGmacMcUpdate, according
- *     to the adapter in use. The real work is done there.
- *
- * Notes:
- *     The return code is only valid for SK_PROM_MODE_NONE.
- *
- * Context:
- *     runtime, pageable
- *     may be called after SK_INIT_IO
- *
- * Returns:
- *     SK_MC_FILTERING_EXACT
- *     SK_MC_FILTERING_INEXACT
- *     SK_ADDR_ILLEGAL_PORT
- */
-int    SkAddrMcUpdate(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* I/O context */
-SK_U32 PortNumber)     /* Port Number */
-{
-       int ReturnCode;
-
-       if (PortNumber >= (SK_U32) pAC->GIni.GIMacsFound) {
-               return (SK_ADDR_ILLEGAL_PORT);
-       }
-
-       if (pAC->GIni.GIChipId == CHIP_ID_GENESIS) {
-               ReturnCode = SkAddrXmacMcUpdate(pAC, IoC, PortNumber);
-       }
-       else {
-               ReturnCode = SkAddrGmacMcUpdate(pAC, IoC, PortNumber);
-       }
-
-       return (ReturnCode);
-
-}      /* SkAddrMcUpdate */
-
-
-/******************************************************************************
- *
- *     SkAddrXmacMcUpdate - update the HW MC address table and set the MAC address
- *
- * Description:
- *     This routine enables reception of the addresses contained in a local
- *     table for a given port.
- *     It also programs the port's current physical MAC address.
- *
- * Notes:
- *     The return code is only valid for SK_PROM_MODE_NONE.
- *
- * Context:
- *     runtime, pageable
- *     may be called after SK_INIT_IO
- *
- * Returns:
- *     SK_MC_FILTERING_EXACT
- *     SK_MC_FILTERING_INEXACT
- *     SK_ADDR_ILLEGAL_PORT
- */
-int    SkAddrXmacMcUpdate(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* I/O context */
-SK_U32 PortNumber)     /* Port Number */
-{
-       SK_U32          i;
-       SK_U8           Inexact;
-       SK_U16          *OutAddr;
-       SK_ADDR_PORT    *pAPort;
-
-       SK_DBG_MSG(pAC,SK_DBGMOD_ADDR, SK_DBGCAT_CTRL,
-               ("SkAddrXmacMcUpdate on Port %u.\n", PortNumber))
-
-       pAPort = &pAC->Addr.Port[PortNumber];
-
-#ifdef DEBUG
-       SK_DBG_MSG(pAC,SK_DBGMOD_ADDR, SK_DBGCAT_CTRL,
-               ("Next0 on Port %d: %d\n", PortNumber, Next0[PortNumber]))
-#endif /* DEBUG */
-
-       /* Start with 0 to also program the logical MAC address. */
-       for (i = 0; i < pAPort->NextExactMatchRlmt; i++) {
-               /* Set exact match address i on XMAC */
-               OutAddr = (SK_U16 *) &pAPort->Exact[i].a[0];
-               XM_OUTADDR(IoC, PortNumber, XM_EXM(i), OutAddr);
-       }
-
-       /* Clear other permanent exact match addresses on XMAC */
-       if (pAPort->NextExactMatchRlmt <= SK_ADDR_LAST_MATCH_RLMT) {
-
-               SkXmClrExactAddr(pAC, IoC, PortNumber, pAPort->NextExactMatchRlmt,
-                       SK_ADDR_LAST_MATCH_RLMT);
-       }
-
-       for (i = pAPort->FirstExactMatchDrv; i < pAPort->NextExactMatchDrv; i++) {
-               OutAddr = (SK_U16 *) &pAPort->Exact[i].a[0];
-               XM_OUTADDR(IoC, PortNumber, XM_EXM(i), OutAddr);
-       }
-
-       /* Clear other non-permanent exact match addresses on XMAC */
-       if (pAPort->NextExactMatchDrv <= SK_ADDR_LAST_MATCH_DRV) {
-
-               SkXmClrExactAddr(pAC, IoC, PortNumber, pAPort->NextExactMatchDrv,
-                       SK_ADDR_LAST_MATCH_DRV);
-       }
-
-       for (Inexact = 0, i = 0; i < 8; i++) {
-               Inexact |= pAPort->InexactFilter.Bytes[i];
-       }
-
-       if (pAPort->PromMode & SK_PROM_MODE_ALL_MC) {
-
-               /* Set all bits in 64-bit hash register. */
-               XM_OUTHASH(IoC, PortNumber, XM_HSM, &OnesHash);
-
-               /* Enable Hashing */
-               SkMacHashing(pAC, IoC, PortNumber, SK_TRUE);
-       }
-       else if (Inexact != 0) {
-
-               /* Set 64-bit hash register to InexactFilter. */
-               XM_OUTHASH(IoC, PortNumber, XM_HSM, &pAPort->InexactFilter.Bytes[0]);
-
-               /* Enable Hashing */
-               SkMacHashing(pAC, IoC, PortNumber, SK_TRUE);
-       }
-       else {
-               /* Disable Hashing */
-               SkMacHashing(pAC, IoC, PortNumber, SK_FALSE);
-       }
-
-       if (pAPort->PromMode != SK_PROM_MODE_NONE) {
-               (void) SkAddrXmacPromiscuousChange(pAC, IoC, PortNumber, pAPort->PromMode);
-       }
-
-       /* Set port's current physical MAC address. */
-       OutAddr = (SK_U16 *) &pAPort->CurrentMacAddress.a[0];
-
-       XM_OUTADDR(IoC, PortNumber, XM_SA, OutAddr);
-
-#ifdef xDEBUG
-       for (i = 0; i < pAPort->NextExactMatchRlmt; i++) {
-               SK_U8           InAddr8[6];
-               SK_U16          *InAddr;
-
-               /* Get exact match address i from port PortNumber. */
-               InAddr = (SK_U16 *) &InAddr8[0];
-
-               XM_INADDR(IoC, PortNumber, XM_EXM(i), InAddr);
-
-               SK_DBG_MSG(pAC,SK_DBGMOD_ADDR, SK_DBGCAT_CTRL,
-                       ("SkAddrXmacMcUpdate: MC address %d on Port %u: ",
-                        "%02x %02x %02x %02x %02x %02x -- %02x %02x %02x %02x %02x %02x\n",
-                               i,
-                               PortNumber,
-                               InAddr8[0],
-                               InAddr8[1],
-                               InAddr8[2],
-                               InAddr8[3],
-                               InAddr8[4],
-                               InAddr8[5],
-                               pAPort->Exact[i].a[0],
-                               pAPort->Exact[i].a[1],
-                               pAPort->Exact[i].a[2],
-                               pAPort->Exact[i].a[3],
-                               pAPort->Exact[i].a[4],
-                               pAPort->Exact[i].a[5]))
-       }
-#endif /* DEBUG */
-
-       /* Determine return value. */
-       if (Inexact == 0 && pAPort->PromMode == 0) {
-               return (SK_MC_FILTERING_EXACT);
-       }
-       else {
-               return (SK_MC_FILTERING_INEXACT);
-       }
-
-}      /* SkAddrXmacMcUpdate */
-
-
-/******************************************************************************
- *
- *     SkAddrGmacMcUpdate - update the HW MC address table and set the MAC address
- *
- * Description:
- *     This routine enables reception of the addresses contained in a local
- *     table for a given port.
- *     It also programs the port's current physical MAC address.
- *
- * Notes:
- *     The return code is only valid for SK_PROM_MODE_NONE.
- *
- * Context:
- *     runtime, pageable
- *     may be called after SK_INIT_IO
- *
- * Returns:
- *     SK_MC_FILTERING_EXACT
- *     SK_MC_FILTERING_INEXACT
- *     SK_ADDR_ILLEGAL_PORT
- */
-int    SkAddrGmacMcUpdate(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* I/O context */
-SK_U32 PortNumber)     /* Port Number */
-{
-       SK_U32          i;
-       SK_U8           Inexact;
-       SK_U16          *OutAddr;
-       SK_ADDR_PORT    *pAPort;
-
-       SK_DBG_MSG(pAC,SK_DBGMOD_ADDR, SK_DBGCAT_CTRL,
-               ("SkAddrGmacMcUpdate on Port %u.\n", PortNumber))
-
-       pAPort = &pAC->Addr.Port[PortNumber];
-
-#ifdef DEBUG
-       SK_DBG_MSG(pAC,SK_DBGMOD_ADDR, SK_DBGCAT_CTRL,
-               ("Next0 on Port %d: %d\n", PortNumber, Next0[PortNumber]))
-#endif /* DEBUG */
-
-       for (Inexact = 0, i = 0; i < 8; i++) {
-               Inexact |= pAPort->InexactFilter.Bytes[i];
-       }
-
-       /* Set 64-bit hash register to InexactFilter. */
-       GM_OUTHASH(IoC, PortNumber, GM_MC_ADDR_H1,
-               &pAPort->InexactFilter.Bytes[0]);
-
-       if (pAPort->PromMode & SK_PROM_MODE_ALL_MC) {
-
-               /* Set all bits in 64-bit hash register. */
-               GM_OUTHASH(IoC, PortNumber, GM_MC_ADDR_H1, &OnesHash);
-
-               /* Enable Hashing */
-               SkMacHashing(pAC, IoC, PortNumber, SK_TRUE);
-       }
-       else {
-               /* Enable Hashing. */
-               SkMacHashing(pAC, IoC, PortNumber, SK_TRUE);
-       }
-
-       if (pAPort->PromMode != SK_PROM_MODE_NONE) {
-               (void) SkAddrGmacPromiscuousChange(pAC, IoC, PortNumber, pAPort->PromMode);
-       }
-
-       /* Set port's current physical MAC address. */
-       OutAddr = (SK_U16 *) &pAPort->CurrentMacAddress.a[0];
-       GM_OUTADDR(IoC, PortNumber, GM_SRC_ADDR_1L, OutAddr);
-
-       /* Set port's current logical MAC address. */
-       OutAddr = (SK_U16 *) &pAPort->Exact[0].a[0];
-       GM_OUTADDR(IoC, PortNumber, GM_SRC_ADDR_2L, OutAddr);
-
-#ifdef DEBUG
-       SK_DBG_MSG(pAC, SK_DBGMOD_ADDR, SK_DBGCAT_CTRL,
-               ("SkAddrGmacMcUpdate: Permanent Physical MAC Address: %02X %02X %02X %02X %02X %02X\n",
-                       pAPort->Exact[0].a[0],
-                       pAPort->Exact[0].a[1],
-                       pAPort->Exact[0].a[2],
-                       pAPort->Exact[0].a[3],
-                       pAPort->Exact[0].a[4],
-                       pAPort->Exact[0].a[5]))
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_ADDR, SK_DBGCAT_CTRL,
-               ("SkAddrGmacMcUpdate: Physical MAC Address: %02X %02X %02X %02X %02X %02X\n",
-                       pAPort->CurrentMacAddress.a[0],
-                       pAPort->CurrentMacAddress.a[1],
-                       pAPort->CurrentMacAddress.a[2],
-                       pAPort->CurrentMacAddress.a[3],
-                       pAPort->CurrentMacAddress.a[4],
-                       pAPort->CurrentMacAddress.a[5]))
-#endif /* DEBUG */
-
-       /* Determine return value. */
-       if (Inexact == 0 && pAPort->PromMode == 0) {
-               return (SK_MC_FILTERING_EXACT);
-       }
-       else {
-               return (SK_MC_FILTERING_INEXACT);
-       }
-
-}      /* SkAddrGmacMcUpdate */
-
-
-/******************************************************************************
- *
- *     SkAddrOverride - override a port's MAC address
- *
- * Description:
- *     This routine overrides the MAC address of one port.
- *
- * Context:
- *     runtime, pageable
- *     may be called after SK_INIT_IO
- *
- * Returns:
- *     SK_ADDR_SUCCESS if successful.
- *     SK_ADDR_DUPLICATE_ADDRESS if duplicate MAC address.
- *     SK_ADDR_MULTICAST_ADDRESS if multicast or broadcast address.
- *     SK_ADDR_TOO_EARLY if SK_INIT_IO was not executed before.
- */
-int    SkAddrOverride(
-SK_AC          *pAC,           /* adapter context */
-SK_IOC         IoC,            /* I/O context */
-SK_U32         PortNumber,     /* Port Number */
-SK_MAC_ADDR    *pNewAddr,      /* new MAC address */
-int                    Flags)          /* logical/physical MAC address */
-{
-       SK_EVPARA       Para;
-       SK_U32          NetNumber;
-       SK_U32          i;
-       SK_U16          *OutAddr;
-
-       NetNumber = pAC->Rlmt.Port[PortNumber].Net->NetNumber;
-
-       if (PortNumber >= (SK_U32) pAC->GIni.GIMacsFound) {
-               return (SK_ADDR_ILLEGAL_PORT);
-       }
-
-       if (pNewAddr != NULL && (pNewAddr->a[0] & SK_MC_BIT) != 0) {
-               return (SK_ADDR_MULTICAST_ADDRESS);
-       }
-
-       if (!pAC->Addr.Net[NetNumber].CurrentMacAddressSet) {
-               return (SK_ADDR_TOO_EARLY);
-       }
-
-       if (Flags & SK_ADDR_SET_LOGICAL) {      /* Activate logical MAC address. */
-               /* Parameter *pNewAddr is ignored. */
-               for (i = 0; i < (SK_U32) pAC->GIni.GIMacsFound; i++) {
-                       if (!pAC->Addr.Port[i].CurrentMacAddressSet) {
-                               return (SK_ADDR_TOO_EARLY);
-                       }
-               }
-
-               /* Set PortNumber to number of net's active port. */
-               PortNumber = pAC->Rlmt.Net[NetNumber].
-                       Port[pAC->Addr.Net[NetNumber].ActivePort]->PortNumber;
-
-               pAC->Addr.Port[PortNumber].Exact[0] =
-                       pAC->Addr.Net[NetNumber].CurrentMacAddress;
-
-               /* Write address to first exact match entry of active port. */
-               (void) SkAddrMcUpdate(pAC, IoC, PortNumber);
-       }
-       else if (Flags & SK_ADDR_CLEAR_LOGICAL) {
-               /* Deactivate logical MAC address. */
-               /* Parameter *pNewAddr is ignored. */
-               for (i = 0; i < (SK_U32) pAC->GIni.GIMacsFound; i++) {
-                       if (!pAC->Addr.Port[i].CurrentMacAddressSet) {
-                               return (SK_ADDR_TOO_EARLY);
-                       }
-               }
-
-               /* Set PortNumber to number of net's active port. */
-               PortNumber = pAC->Rlmt.Net[NetNumber].
-                       Port[pAC->Addr.Net[NetNumber].ActivePort]->PortNumber;
-
-               for (i = 0; i < SK_MAC_ADDR_LEN; i++ ) {
-                       pAC->Addr.Port[PortNumber].Exact[0].a[i] = 0;
-               }
-
-               /* Write address to first exact match entry of active port. */
-               (void) SkAddrMcUpdate(pAC, IoC, PortNumber);
-       }
-       else if (Flags & SK_ADDR_PHYSICAL_ADDRESS) {    /* Physical MAC address. */
-               if (SK_ADDR_EQUAL(pNewAddr->a,
-                       pAC->Addr.Net[NetNumber].CurrentMacAddress.a)) {
-                       return (SK_ADDR_DUPLICATE_ADDRESS);
-               }
-
-               for (i = 0; i < (SK_U32) pAC->GIni.GIMacsFound; i++) {
-                       if (!pAC->Addr.Port[i].CurrentMacAddressSet) {
-                               return (SK_ADDR_TOO_EARLY);
-                       }
-
-                       if (SK_ADDR_EQUAL(pNewAddr->a,
-                               pAC->Addr.Port[i].CurrentMacAddress.a)) {
-                               if (i == PortNumber) {
-                                       return (SK_ADDR_SUCCESS);
-                               }
-                               else {
-                                       return (SK_ADDR_DUPLICATE_ADDRESS);
-                               }
-                       }
-               }
-
-               pAC->Addr.Port[PortNumber].PreviousMacAddress =
-                       pAC->Addr.Port[PortNumber].CurrentMacAddress;
-               pAC->Addr.Port[PortNumber].CurrentMacAddress = *pNewAddr;
-
-               /* Change port's physical MAC address. */
-               OutAddr = (SK_U16 *) pNewAddr;
-
-               if (pAC->GIni.GIChipId == CHIP_ID_GENESIS) {
-                       XM_OUTADDR(IoC, PortNumber, XM_SA, OutAddr);
-               }
-               else {
-                       GM_OUTADDR(IoC, PortNumber, GM_SRC_ADDR_1L, OutAddr);
-               }
-
-               /* Report address change to RLMT. */
-               Para.Para32[0] = PortNumber;
-               Para.Para32[0] = -1;
-               SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_PORT_ADDR, Para);
-       }
-       else {  /* Logical MAC address. */
-               if (SK_ADDR_EQUAL(pNewAddr->a,
-                       pAC->Addr.Net[NetNumber].CurrentMacAddress.a)) {
-                       return (SK_ADDR_SUCCESS);
-               }
-
-               for (i = 0; i < (SK_U32) pAC->GIni.GIMacsFound; i++) {
-                       if (!pAC->Addr.Port[i].CurrentMacAddressSet) {
-                               return (SK_ADDR_TOO_EARLY);
-                       }
-
-                       if (SK_ADDR_EQUAL(pNewAddr->a,
-                               pAC->Addr.Port[i].CurrentMacAddress.a)) {
-                               return (SK_ADDR_DUPLICATE_ADDRESS);
-                       }
-               }
-
-               /*
-                * In case that the physical and the logical MAC addresses are equal
-                * we must also change the physical MAC address here.
-                * In this case we have an adapter which initially was programmed with
-                * two identical MAC addresses.
-                */
-               if (SK_ADDR_EQUAL(pAC->Addr.Port[PortNumber].CurrentMacAddress.a,
-                               pAC->Addr.Port[PortNumber].Exact[0].a)) {
-
-                       pAC->Addr.Port[PortNumber].PreviousMacAddress =
-                               pAC->Addr.Port[PortNumber].CurrentMacAddress;
-                       pAC->Addr.Port[PortNumber].CurrentMacAddress = *pNewAddr;
-
-                       /* Report address change to RLMT. */
-                       Para.Para32[0] = PortNumber;
-                       Para.Para32[0] = -1;
-                       SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_PORT_ADDR, Para);
-               }
-
-               /* Set PortNumber to number of net's active port. */
-               PortNumber = pAC->Rlmt.Net[NetNumber].
-                       Port[pAC->Addr.Net[NetNumber].ActivePort]->PortNumber;
-
-               pAC->Addr.Net[NetNumber].CurrentMacAddress = *pNewAddr;
-               pAC->Addr.Port[PortNumber].Exact[0] = *pNewAddr;
-#ifdef DEBUG
-               SK_DBG_MSG(pAC,SK_DBGMOD_ADDR, SK_DBGCAT_CTRL,
-                       ("SkAddrOverride: Permanent MAC Address: %02X %02X %02X %02X %02X %02X\n",
-                               pAC->Addr.Net[NetNumber].PermanentMacAddress.a[0],
-                               pAC->Addr.Net[NetNumber].PermanentMacAddress.a[1],
-                               pAC->Addr.Net[NetNumber].PermanentMacAddress.a[2],
-                               pAC->Addr.Net[NetNumber].PermanentMacAddress.a[3],
-                               pAC->Addr.Net[NetNumber].PermanentMacAddress.a[4],
-                               pAC->Addr.Net[NetNumber].PermanentMacAddress.a[5]))
-
-               SK_DBG_MSG(pAC,SK_DBGMOD_ADDR, SK_DBGCAT_CTRL,
-                       ("SkAddrOverride: New logical MAC Address: %02X %02X %02X %02X %02X %02X\n",
-                               pAC->Addr.Net[NetNumber].CurrentMacAddress.a[0],
-                               pAC->Addr.Net[NetNumber].CurrentMacAddress.a[1],
-                               pAC->Addr.Net[NetNumber].CurrentMacAddress.a[2],
-                               pAC->Addr.Net[NetNumber].CurrentMacAddress.a[3],
-                               pAC->Addr.Net[NetNumber].CurrentMacAddress.a[4],
-                               pAC->Addr.Net[NetNumber].CurrentMacAddress.a[5]))
-#endif /* DEBUG */
-
-       /* Write address to first exact match entry of active port. */
-               (void) SkAddrMcUpdate(pAC, IoC, PortNumber);
-       }
-
-       return (SK_ADDR_SUCCESS);
-
-}      /* SkAddrOverride */
-
-
-/******************************************************************************
- *
- *     SkAddrPromiscuousChange - set promiscuous mode for given port
- *
- * Description:
- *     This routine manages promiscuous mode:
- *     - none
- *     - all LLC frames
- *     - all MC frames
- *
- *     It calls either SkAddrXmacPromiscuousChange or
- *     SkAddrGmacPromiscuousChange, according to the adapter in use.
- *     The real work is done there.
- *
- * Context:
- *     runtime, pageable
- *     may be called after SK_INIT_IO
- *
- * Returns:
- *     SK_ADDR_SUCCESS
- *     SK_ADDR_ILLEGAL_PORT
- */
-int    SkAddrPromiscuousChange(
-SK_AC  *pAC,                   /* adapter context */
-SK_IOC IoC,                    /* I/O context */
-SK_U32 PortNumber,             /* port whose promiscuous mode changes */
-int            NewPromMode)    /* new promiscuous mode */
-{
-       int ReturnCode;
-
-       if (PortNumber >= (SK_U32) pAC->GIni.GIMacsFound) {
-               return (SK_ADDR_ILLEGAL_PORT);
-       }
-
-       if (pAC->GIni.GIChipId == CHIP_ID_GENESIS) {
-               ReturnCode = SkAddrXmacPromiscuousChange(pAC, IoC, PortNumber, NewPromMode);
-       }
-       else {
-               ReturnCode = SkAddrGmacPromiscuousChange(pAC, IoC, PortNumber, NewPromMode);
-       }
-
-       return (ReturnCode);
-
-}      /* SkAddrPromiscuousChange */
-
-
-/******************************************************************************
- *
- *     SkAddrXmacPromiscuousChange - set promiscuous mode for given port
- *
- * Description:
- *     This routine manages promiscuous mode:
- *     - none
- *     - all LLC frames
- *     - all MC frames
- *
- * Context:
- *     runtime, pageable
- *     may be called after SK_INIT_IO
- *
- * Returns:
- *     SK_ADDR_SUCCESS
- *     SK_ADDR_ILLEGAL_PORT
- */
-int    SkAddrXmacPromiscuousChange(
-SK_AC  *pAC,                   /* adapter context */
-SK_IOC IoC,                    /* I/O context */
-SK_U32 PortNumber,             /* port whose promiscuous mode changes */
-int            NewPromMode)    /* new promiscuous mode */
-{
-       int                     i;
-       SK_BOOL         InexactModeBit;
-       SK_U8           Inexact;
-       SK_U8           HwInexact;
-       SK_FILTER64     HwInexactFilter;
-       SK_U16          LoMode;         /* Lower 16 bits of XMAC Mode Register. */
-       int                     CurPromMode = SK_PROM_MODE_NONE;
-
-       /* Read CurPromMode from Hardware. */
-       XM_IN16(IoC, PortNumber, XM_MODE, &LoMode);
-
-       if ((LoMode & XM_MD_ENA_PROM) != 0) {
-               /* Promiscuous mode! */
-               CurPromMode |= SK_PROM_MODE_LLC;
-       }
-
-       for (Inexact = 0xFF, i = 0; i < 8; i++) {
-               Inexact &= pAC->Addr.Port[PortNumber].InexactFilter.Bytes[i];
-       }
-       if (Inexact == 0xFF) {
-               CurPromMode |= (pAC->Addr.Port[PortNumber].PromMode & SK_PROM_MODE_ALL_MC);
-       }
-       else {
-               /* Get InexactModeBit (bit XM_MD_ENA_HASH in mode register) */
-               XM_IN16(IoC, PortNumber, XM_MODE, &LoMode);
-
-               InexactModeBit = (LoMode & XM_MD_ENA_HASH) != 0;
-
-               /* Read 64-bit hash register from XMAC */
-               XM_INHASH(IoC, PortNumber, XM_HSM, &HwInexactFilter.Bytes[0]);
-
-               for (HwInexact = 0xFF, i = 0; i < 8; i++) {
-                       HwInexact &= HwInexactFilter.Bytes[i];
-               }
-
-               if (InexactModeBit && (HwInexact == 0xFF)) {
-                       CurPromMode |= SK_PROM_MODE_ALL_MC;
-               }
-       }
-
-       pAC->Addr.Port[PortNumber].PromMode = NewPromMode;
-
-       if (NewPromMode == CurPromMode) {
-               return (SK_ADDR_SUCCESS);
-       }
-
-       if ((NewPromMode & SK_PROM_MODE_ALL_MC) &&
-               !(CurPromMode & SK_PROM_MODE_ALL_MC)) { /* All MC. */
-
-               /* Set all bits in 64-bit hash register. */
-               XM_OUTHASH(IoC, PortNumber, XM_HSM, &OnesHash);
-
-               /* Enable Hashing */
-               SkMacHashing(pAC, IoC, PortNumber, SK_TRUE);
-       }
-       else if ((CurPromMode & SK_PROM_MODE_ALL_MC) &&
-               !(NewPromMode & SK_PROM_MODE_ALL_MC)) { /* Norm MC. */
-               for (Inexact = 0, i = 0; i < 8; i++) {
-                       Inexact |= pAC->Addr.Port[PortNumber].InexactFilter.Bytes[i];
-               }
-               if (Inexact == 0) {
-                       /* Disable Hashing */
-                       SkMacHashing(pAC, IoC, PortNumber, SK_FALSE);
-               }
-               else {
-                       /* Set 64-bit hash register to InexactFilter. */
-                       XM_OUTHASH(IoC, PortNumber, XM_HSM,
-                               &pAC->Addr.Port[PortNumber].InexactFilter.Bytes[0]);
-
-                       /* Enable Hashing */
-                       SkMacHashing(pAC, IoC, PortNumber, SK_TRUE);
-               }
-       }
-
-       if ((NewPromMode & SK_PROM_MODE_LLC) &&
-               !(CurPromMode & SK_PROM_MODE_LLC)) {    /* Prom. LLC */
-               /* Set the MAC in Promiscuous Mode */
-               SkMacPromiscMode(pAC, IoC, PortNumber, SK_TRUE);
-       }
-       else if ((CurPromMode & SK_PROM_MODE_LLC) &&
-               !(NewPromMode & SK_PROM_MODE_LLC)) {    /* Norm. LLC. */
-               /* Clear Promiscuous Mode */
-               SkMacPromiscMode(pAC, IoC, PortNumber, SK_FALSE);
-       }
-
-       return (SK_ADDR_SUCCESS);
-
-}      /* SkAddrXmacPromiscuousChange */
-
-
-/******************************************************************************
- *
- *     SkAddrGmacPromiscuousChange - set promiscuous mode for given port
- *
- * Description:
- *     This routine manages promiscuous mode:
- *     - none
- *     - all LLC frames
- *     - all MC frames
- *
- * Context:
- *     runtime, pageable
- *     may be called after SK_INIT_IO
- *
- * Returns:
- *     SK_ADDR_SUCCESS
- *     SK_ADDR_ILLEGAL_PORT
- */
-int    SkAddrGmacPromiscuousChange(
-SK_AC  *pAC,                   /* adapter context */
-SK_IOC IoC,                    /* I/O context */
-SK_U32 PortNumber,             /* port whose promiscuous mode changes */
-int            NewPromMode)    /* new promiscuous mode */
-{
-       SK_U16          ReceiveControl; /* GMAC Receive Control Register */
-       int             CurPromMode = SK_PROM_MODE_NONE;
-
-       /* Read CurPromMode from Hardware. */
-       GM_IN16(IoC, PortNumber, GM_RX_CTRL, &ReceiveControl);
-
-       if ((ReceiveControl & (GM_RXCR_UCF_ENA | GM_RXCR_MCF_ENA)) == 0) {
-               /* Promiscuous mode! */
-               CurPromMode |= SK_PROM_MODE_LLC;
-       }
-
-       if ((ReceiveControl & GM_RXCR_MCF_ENA) == 0) {
-               /* All Multicast mode! */
-               CurPromMode |= (pAC->Addr.Port[PortNumber].PromMode & SK_PROM_MODE_ALL_MC);
-       }
-
-       pAC->Addr.Port[PortNumber].PromMode = NewPromMode;
-
-       if (NewPromMode == CurPromMode) {
-               return (SK_ADDR_SUCCESS);
-       }
-
-       if ((NewPromMode & SK_PROM_MODE_ALL_MC) &&
-               !(CurPromMode & SK_PROM_MODE_ALL_MC)) { /* All MC */
-
-               /* Set all bits in 64-bit hash register. */
-               GM_OUTHASH(IoC, PortNumber, GM_MC_ADDR_H1, &OnesHash);
-
-               /* Enable Hashing */
-               SkMacHashing(pAC, IoC, PortNumber, SK_TRUE);
-       }
-
-       if ((CurPromMode & SK_PROM_MODE_ALL_MC) &&
-               !(NewPromMode & SK_PROM_MODE_ALL_MC)) { /* Norm. MC */
-
-               /* Set 64-bit hash register to InexactFilter. */
-               GM_OUTHASH(IoC, PortNumber, GM_MC_ADDR_H1,
-                       &pAC->Addr.Port[PortNumber].InexactFilter.Bytes[0]);
-
-               /* Enable Hashing. */
-               SkMacHashing(pAC, IoC, PortNumber, SK_TRUE);
-       }
-
-       if ((NewPromMode & SK_PROM_MODE_LLC) &&
-               !(CurPromMode & SK_PROM_MODE_LLC)) {    /* Prom. LLC */
-
-               /* Set the MAC to Promiscuous Mode. */
-               SkMacPromiscMode(pAC, IoC, PortNumber, SK_TRUE);
-       }
-       else if ((CurPromMode & SK_PROM_MODE_LLC) &&
-               !(NewPromMode & SK_PROM_MODE_LLC)) {    /* Norm. LLC */
-
-               /* Clear Promiscuous Mode. */
-               SkMacPromiscMode(pAC, IoC, PortNumber, SK_FALSE);
-       }
-
-       return (SK_ADDR_SUCCESS);
-
-}      /* SkAddrGmacPromiscuousChange */
-
-
-/******************************************************************************
- *
- *     SkAddrSwap - swap address info
- *
- * Description:
- *     This routine swaps address info of two ports.
- *
- * Context:
- *     runtime, pageable
- *     may be called after SK_INIT_IO
- *
- * Returns:
- *     SK_ADDR_SUCCESS
- *     SK_ADDR_ILLEGAL_PORT
- */
-int    SkAddrSwap(
-SK_AC  *pAC,                   /* adapter context */
-SK_IOC IoC,                    /* I/O context */
-SK_U32 FromPortNumber,         /* Port1 Index */
-SK_U32 ToPortNumber)           /* Port2 Index */
-{
-       int                     i;
-       SK_U8           Byte;
-       SK_MAC_ADDR     MacAddr;
-       SK_U32          DWord;
-
-       if (FromPortNumber >= (SK_U32) pAC->GIni.GIMacsFound) {
-               return (SK_ADDR_ILLEGAL_PORT);
-       }
-
-       if (ToPortNumber >= (SK_U32) pAC->GIni.GIMacsFound) {
-               return (SK_ADDR_ILLEGAL_PORT);
-       }
-
-       if (pAC->Rlmt.Port[FromPortNumber].Net != pAC->Rlmt.Port[ToPortNumber].Net) {
-               return (SK_ADDR_ILLEGAL_PORT);
-       }
-
-       /*
-        * Swap:
-        * - Exact Match Entries (GEnesis and Yukon)
-        *   Yukon uses first entry for the logical MAC
-        *   address (stored in the second GMAC register).
-        * - FirstExactMatchRlmt (GEnesis only)
-        * - NextExactMatchRlmt (GEnesis only)
-        * - FirstExactMatchDrv (GEnesis only)
-        * - NextExactMatchDrv (GEnesis only)
-        * - 64-bit filter (InexactFilter)
-        * - Promiscuous Mode
-        * of ports.
-        */
-
-       for (i = 0; i < SK_ADDR_EXACT_MATCHES; i++) {
-               MacAddr = pAC->Addr.Port[FromPortNumber].Exact[i];
-               pAC->Addr.Port[FromPortNumber].Exact[i] =
-                       pAC->Addr.Port[ToPortNumber].Exact[i];
-               pAC->Addr.Port[ToPortNumber].Exact[i] = MacAddr;
-       }
-
-       for (i = 0; i < 8; i++) {
-               Byte = pAC->Addr.Port[FromPortNumber].InexactFilter.Bytes[i];
-               pAC->Addr.Port[FromPortNumber].InexactFilter.Bytes[i] =
-                       pAC->Addr.Port[ToPortNumber].InexactFilter.Bytes[i];
-               pAC->Addr.Port[ToPortNumber].InexactFilter.Bytes[i] = Byte;
-       }
-
-       i = pAC->Addr.Port[FromPortNumber].PromMode;
-       pAC->Addr.Port[FromPortNumber].PromMode = pAC->Addr.Port[ToPortNumber].PromMode;
-       pAC->Addr.Port[ToPortNumber].PromMode = i;
-
-       if (pAC->GIni.GIChipId == CHIP_ID_GENESIS) {
-               DWord = pAC->Addr.Port[FromPortNumber].FirstExactMatchRlmt;
-               pAC->Addr.Port[FromPortNumber].FirstExactMatchRlmt =
-                       pAC->Addr.Port[ToPortNumber].FirstExactMatchRlmt;
-               pAC->Addr.Port[ToPortNumber].FirstExactMatchRlmt = DWord;
-
-               DWord = pAC->Addr.Port[FromPortNumber].NextExactMatchRlmt;
-               pAC->Addr.Port[FromPortNumber].NextExactMatchRlmt =
-                       pAC->Addr.Port[ToPortNumber].NextExactMatchRlmt;
-               pAC->Addr.Port[ToPortNumber].NextExactMatchRlmt = DWord;
-
-               DWord = pAC->Addr.Port[FromPortNumber].FirstExactMatchDrv;
-               pAC->Addr.Port[FromPortNumber].FirstExactMatchDrv =
-                       pAC->Addr.Port[ToPortNumber].FirstExactMatchDrv;
-               pAC->Addr.Port[ToPortNumber].FirstExactMatchDrv = DWord;
-
-               DWord = pAC->Addr.Port[FromPortNumber].NextExactMatchDrv;
-               pAC->Addr.Port[FromPortNumber].NextExactMatchDrv =
-                       pAC->Addr.Port[ToPortNumber].NextExactMatchDrv;
-               pAC->Addr.Port[ToPortNumber].NextExactMatchDrv = DWord;
-       }
-
-       /* CAUTION: Solution works if only ports of one adapter are in use. */
-       for (i = 0; (SK_U32) i < pAC->Rlmt.Net[pAC->Rlmt.Port[ToPortNumber].
-               Net->NetNumber].NumPorts; i++) {
-               if (pAC->Rlmt.Net[pAC->Rlmt.Port[ToPortNumber].Net->NetNumber].
-                       Port[i]->PortNumber == ToPortNumber) {
-                       pAC->Addr.Net[pAC->Rlmt.Port[ToPortNumber].Net->NetNumber].
-                               ActivePort = i;
-                       /* 20001207 RA: Was "ToPortNumber;". */
-               }
-       }
-
-       (void) SkAddrMcUpdate(pAC, IoC, FromPortNumber);
-       (void) SkAddrMcUpdate(pAC, IoC, ToPortNumber);
-
-       return (SK_ADDR_SUCCESS);
-
-}      /* SkAddrSwap */
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
+/******************************************************************************
+ *
+ * Name:       skaddr.c
+ * Project:    GEnesis, PCI Gigabit Ethernet Adapter
+ * Version:    $Revision: 1.1.1.1 $
+ * Date:       $Date: 2009/03/25 22:22:09 $
+ * Purpose:    Manage Addresses (Multicast and Unicast) and Promiscuous Mode.
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ *     (C)Copyright 1998-2002 SysKonnect GmbH.
+ *
+ *     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.
+ *
+ *     The information in this file is provided "AS IS" without warranty.
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ * History:
+ *
+ *     $Log: skaddr.c,v $
+ *     Revision 1.1.1.1  2009/03/25 22:22:09  kenagy
+ *     no message
+ *     
+ *     Revision 1.48  2003/02/12 17:09:37  tschilli
+ *     Fix in SkAddrOverride() to set both (physical and logical) MAC addresses
+ *     in case that both addresses are identical.
+ *
+ *     Revision 1.47  2002/09/17 06:31:10  tschilli
+ *     Handling of SK_PROM_MODE_ALL_MC flag in SkAddrGmacMcUpdate()
+ *     and SkAddrGmacPromiscuousChange() fixed.
+ *     Editorial changes.
+ *
+ *     Revision 1.46  2002/08/22 07:55:41  tschilli
+ *     New function SkGmacMcHash() for GMAC multicast hashing algorithm added.
+ *     Editorial changes.
+ *
+ *     Revision 1.45  2002/08/15 12:29:35  tschilli
+ *     SkAddrGmacMcUpdate() and SkAddrGmacPromiscuousChange() changed.
+ *
+ *     Revision 1.44  2002/08/14 12:18:03  rschmidt
+ *     Replaced direct handling of MAC Hashing (XMAC and GMAC)
+ *     with routine SkMacHashing().
+ *     Replaced wrong 3rd para 'i' with 'PortNumber' in SkMacPromiscMode().
+ *
+ *     Revision 1.43  2002/08/13 09:37:43  rschmidt
+ *     Corrected some SK_DBG_MSG outputs.
+ *     Replaced wrong 2nd para pAC with IoC in SkMacPromiscMode().
+ *     Editorial changes.
+ *
+ *     Revision 1.42  2002/08/12 11:24:36  rschmidt
+ *     Remove setting of logical MAC address GM_SRC_ADDR_2 in SkAddrInit().
+ *     Replaced direct handling of MAC Promiscuous Mode (XMAC and GMAC)
+ *     with routine SkMacPromiscMode().
+ *     Editorial changes.
+ *
+ *     Revision 1.41  2002/06/10 13:52:18  tschilli
+ *     Changes for handling YUKON.
+ *     All changes are internally and not visible to the programmer
+ *     using this module.
+ *
+ *     Revision 1.40  2001/02/14 14:04:59  rassmann
+ *     Editorial changes.
+ *
+ *     Revision 1.39  2001/01/30 10:30:04  rassmann
+ *     Editorial changes.
+ *
+ *     Revision 1.38  2001/01/25 16:26:52  rassmann
+ *     Ensured that logical address overrides are done on net's active port.
+ *
+ *     Revision 1.37  2001/01/22 13:41:34  rassmann
+ *     Supporting two nets on dual-port adapters.
+ *
+ *     Revision 1.36  2000/08/07 11:10:39  rassmann
+ *     Editorial changes.
+ *
+ *     Revision 1.35  2000/05/04 09:38:41  rassmann
+ *     Editorial changes.
+ *     Corrected multicast address hashing.
+ *
+ *     Revision 1.34  1999/11/22 13:23:44  cgoos
+ *     Changed license header to GPL.
+ *
+ *     Revision 1.33  1999/05/28 10:56:06  rassmann
+ *     Editorial changes.
+ *
+ *     Revision 1.32  1999/03/31 10:59:20  rassmann
+ *     Returning Success instead of DupAddr if address shall be overridden
+ *     with same value.
+ *
+ *     Revision 1.31  1999/01/14 16:18:17  rassmann
+ *     Corrected multicast initialization.
+ *
+ *     Revision 1.30  1999/01/04 10:30:35  rassmann
+ *     SkAddrOverride only possible after SK_INIT_IO phase.
+ *
+ *     Revision 1.29  1998/12/29 13:13:10  rassmann
+ *     An address override is now preserved in the SK_INIT_IO phase.
+ *     All functions return an int now.
+ *     Extended parameter checking.
+ *
+ *     Revision 1.28  1998/12/01 11:45:53  rassmann
+ *     Code cleanup.
+ *
+ *     Revision 1.27  1998/12/01 09:22:49  rassmann
+ *     SkAddrMcAdd and SkAddrMcUpdate returned SK_MC_FILTERING_INEXACT
+ *     too often.
+ *
+ *     Revision 1.26  1998/11/24 12:39:44  rassmann
+ *     Reserved multicast entry for BPDU address.
+ *     13 multicast entries left for protocol.
+ *
+ *     Revision 1.25  1998/11/17 16:54:23  rassmann
+ *     Using exact match for up to 14 multicast addresses.
+ *     Still receiving all multicasts if more addresses are added.
+ *
+ *     Revision 1.24  1998/11/13 17:24:31  rassmann
+ *     Changed return value of SkAddrOverride to int.
+ *
+ *     Revision 1.23  1998/11/13 16:56:18  rassmann
+ *     Added macro SK_ADDR_COMPARE.
+ *     Changed return type of SkAddrOverride to SK_BOOL.
+ *
+ *     Revision 1.22  1998/11/04 17:06:17  rassmann
+ *     Corrected McUpdate and PromiscuousChange functions.
+ *
+ *     Revision 1.21  1998/10/29 14:34:04  rassmann
+ *     Clearing SK_ADDR struct at startup.
+ *
+ *     Revision 1.20  1998/10/28 18:16:34  rassmann
+ *     Avoiding I/Os before SK_INIT_RUN level.
+ *     Aligning InexactFilter.
+ *
+ *     Revision 1.19  1998/10/28 11:29:28  rassmann
+ *     Programming physical address in SkAddrMcUpdate.
+ *     Corrected programming of exact match entries.
+ *
+ *     Revision 1.18  1998/10/28 10:34:48  rassmann
+ *     Corrected reading of physical addresses.
+ *
+ *     Revision 1.17  1998/10/28 10:26:13  rassmann
+ *     Getting ports' current MAC addresses from EPROM now.
+ *     Added debug output.
+ *
+ *     Revision 1.16  1998/10/27 16:20:12  rassmann
+ *     Reading MAC address byte by byte.
+ *
+ *     Revision 1.15  1998/10/22 11:39:09  rassmann
+ *     Corrected signed/unsigned mismatches.
+ *
+ *     Revision 1.14  1998/10/19 17:12:35  rassmann
+ *     Syntax corrections.
+ *
+ *     Revision 1.13  1998/10/19 17:02:19  rassmann
+ *     Now reading permanent MAC addresses from CRF.
+ *
+ *     Revision 1.12  1998/10/15 15:15:48  rassmann
+ *     Changed Flags Parameters from SK_U8 to int.
+ *     Checked with lint.
+ *
+ *     Revision 1.11  1998/09/24 19:15:12  rassmann
+ *     Code cleanup.
+ *
+ *     Revision 1.10  1998/09/18 20:18:54  rassmann
+ *     Added HW access.
+ *     Implemented swapping.
+ *
+ *     Revision 1.9  1998/09/16 11:32:00  rassmann
+ *     Including skdrv1st.h again. :(
+ *
+ *     Revision 1.8  1998/09/16 11:09:34  rassmann
+ *     Syntax corrections.
+ *
+ *     Revision 1.7  1998/09/14 17:06:34  rassmann
+ *     Minor changes.
+ *
+ *     Revision 1.6  1998/09/07 08:45:41  rassmann
+ *     Syntax corrections.
+ *
+ *     Revision 1.5  1998/09/04 19:40:19  rassmann
+ *     Interface enhancements.
+ *
+ *     Revision 1.4  1998/09/04 12:14:12  rassmann
+ *     Interface cleanup.
+ *
+ *     Revision 1.3  1998/09/02 16:56:40  rassmann
+ *     Updated interface.
+ *
+ *     Revision 1.2  1998/08/27 14:26:09  rassmann
+ *     Updated interface.
+ *
+ *     Revision 1.1  1998/08/21 08:30:22  rassmann
+ *     First public version.
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ * Description:
+ *
+ * This module is intended to manage multicast addresses, address override,
+ * and promiscuous mode on GEnesis and Yukon adapters.
+ *
+ * Address Layout:
+ *     port address:           physical MAC address
+ *     1st exact match:        logical MAC address (GEnesis only)
+ *     2nd exact match:        RLMT multicast (GEnesis only)
+ *     exact match 3-13:       OS-specific multicasts (GEnesis only)
+ *
+ * Include File Hierarchy:
+ *
+ *     "skdrv1st.h"
+ *     "skdrv2nd.h"
+ *
+ ******************************************************************************/
+
+#include <config.h>
+
+#ifndef        lint
+static const char SysKonnectFileId[] =
+       "@(#) $Id: skaddr.c,v 1.1.1.1 2009/03/25 22:22:09 kenagy Exp $ (C) SysKonnect.";
+#endif /* !defined(lint) */
+
+#define __SKADDR_C
+
+#ifdef __cplusplus
+#error C++ is not yet supported.
+extern "C" {
+#endif /* cplusplus */
+
+#include "h/skdrv1st.h"
+#include "h/skdrv2nd.h"
+
+/* defines ********************************************************************/
+
+
+#define XMAC_POLY      0xEDB88320UL    /* CRC32-Poly - XMAC: Little Endian */
+#define GMAC_POLY      0x04C11DB7L     /* CRC16-Poly - GMAC: Little Endian */
+#define HASH_BITS      6                               /* #bits in hash */
+#define        SK_MC_BIT       0x01
+
+/* Error numbers and messages. */
+
+#define SKERR_ADDR_E001                (SK_ERRBASE_ADDR + 0)
+#define SKERR_ADDR_E001MSG     "Bad Flags."
+#define SKERR_ADDR_E002                (SKERR_ADDR_E001 + 1)
+#define SKERR_ADDR_E002MSG     "New Error."
+
+/* typedefs *******************************************************************/
+
+/* None. */
+
+/* global variables ***********************************************************/
+
+/* 64-bit hash values with all bits set. */
+
+SK_U16 OnesHash[4] = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF};
+
+/* local variables ************************************************************/
+
+#ifdef DEBUG
+static int     Next0[SK_MAX_MACS] = {0, 0};
+#endif /* DEBUG */
+
+/* functions ******************************************************************/
+
+/******************************************************************************
+ *
+ *     SkAddrInit - initialize data, set state to init
+ *
+ * Description:
+ *
+ *     SK_INIT_DATA
+ *     ============
+ *
+ *     This routine clears the multicast tables and resets promiscuous mode.
+ *     Some entries are reserved for the "logical MAC address", the
+ *     SK-RLMT multicast address, and the BPDU multicast address.
+ *
+ *
+ *     SK_INIT_IO
+ *     ==========
+ *
+ *     All permanent MAC addresses are read from EPROM.
+ *     If the current MAC addresses are not already set in software,
+ *     they are set to the values of the permanent addresses.
+ *     The current addresses are written to the corresponding MAC.
+ *
+ *
+ *     SK_INIT_RUN
+ *     ===========
+ *
+ *     Nothing.
+ *
+ * Context:
+ *     init, pageable
+ *
+ * Returns:
+ *     SK_ADDR_SUCCESS
+ */
+int    SkAddrInit(
+SK_AC  *pAC,   /* the adapter context */
+SK_IOC IoC,    /* I/O context */
+int            Level)  /* initialization level */
+{
+       int                     j;
+       SK_U32          i;
+       SK_U8           *InAddr;
+       SK_U16          *OutAddr;
+       SK_ADDR_PORT    *pAPort;
+
+       switch (Level) {
+       case SK_INIT_DATA:
+               SK_MEMSET((char *) &pAC->Addr, 0, sizeof(SK_ADDR));
+
+               for (i = 0; i < SK_MAX_MACS; i++) {
+                       pAPort = &pAC->Addr.Port[i];
+                       pAPort->PromMode = SK_PROM_MODE_NONE;
+
+                       pAPort->FirstExactMatchRlmt = SK_ADDR_FIRST_MATCH_RLMT;
+                       pAPort->FirstExactMatchDrv = SK_ADDR_FIRST_MATCH_DRV;
+                       pAPort->NextExactMatchRlmt = SK_ADDR_FIRST_MATCH_RLMT;
+                       pAPort->NextExactMatchDrv = SK_ADDR_FIRST_MATCH_DRV;
+               }
+#ifdef xDEBUG
+               for (i = 0; i < SK_MAX_MACS; i++) {
+                       if (pAC->Addr.Port[i].NextExactMatchRlmt <
+                               SK_ADDR_FIRST_MATCH_RLMT) {
+                               Next0[i] |= 4;
+                       }
+               }
+#endif /* DEBUG */
+               /* pAC->Addr.InitDone = SK_INIT_DATA; */
+               break;
+
+       case SK_INIT_IO:
+               for (i = 0; i < SK_MAX_NETS; i++) {
+                       pAC->Addr.Net[i].ActivePort = pAC->Rlmt.Net[i].ActivePort;
+               }
+#ifdef xDEBUG
+               for (i = 0; i < SK_MAX_MACS; i++) {
+                       if (pAC->Addr.Port[i].NextExactMatchRlmt <
+                               SK_ADDR_FIRST_MATCH_RLMT) {
+                               Next0[i] |= 8;
+                       }
+               }
+#endif /* DEBUG */
+
+               /* Read permanent logical MAC address from Control Register File. */
+               for (j = 0; j < SK_MAC_ADDR_LEN; j++) {
+                       InAddr = (SK_U8 *) &pAC->Addr.Net[0].PermanentMacAddress.a[j];
+                       SK_IN8(IoC, B2_MAC_1 + j, InAddr);
+               }
+
+               if (!pAC->Addr.Net[0].CurrentMacAddressSet) {
+                       /* Set the current logical MAC address to the permanent one. */
+                       pAC->Addr.Net[0].CurrentMacAddress =
+                               pAC->Addr.Net[0].PermanentMacAddress;
+                       pAC->Addr.Net[0].CurrentMacAddressSet = SK_TRUE;
+               }
+
+               /* Set the current logical MAC address. */
+               pAC->Addr.Port[pAC->Addr.Net[0].ActivePort].Exact[0] =
+                       pAC->Addr.Net[0].CurrentMacAddress;
+#if SK_MAX_NETS > 1
+               /* Set logical MAC address for net 2 to (log | 3). */
+               if (!pAC->Addr.Net[1].CurrentMacAddressSet) {
+                       pAC->Addr.Net[1].PermanentMacAddress =
+                               pAC->Addr.Net[0].PermanentMacAddress;
+                       pAC->Addr.Net[1].PermanentMacAddress.a[5] |= 3;
+                       /* Set the current logical MAC address to the permanent one. */
+                       pAC->Addr.Net[1].CurrentMacAddress =
+                               pAC->Addr.Net[1].PermanentMacAddress;
+                       pAC->Addr.Net[1].CurrentMacAddressSet = SK_TRUE;
+               }
+#endif /* SK_MAX_NETS > 1 */
+
+#ifdef DEBUG
+               for (i = 0; i < (SK_U32) pAC->GIni.GIMacsFound; i++) {
+                       SK_DBG_MSG(pAC, SK_DBGMOD_ADDR, SK_DBGCAT_INIT,
+                               ("Permanent MAC Address (Net%d): %02X %02X %02X %02X %02X %02X\n",
+                                       i,
+                                       pAC->Addr.Net[i].PermanentMacAddress.a[0],
+                                       pAC->Addr.Net[i].PermanentMacAddress.a[1],
+                                       pAC->Addr.Net[i].PermanentMacAddress.a[2],
+                                       pAC->Addr.Net[i].PermanentMacAddress.a[3],
+                                       pAC->Addr.Net[i].PermanentMacAddress.a[4],
+                                       pAC->Addr.Net[i].PermanentMacAddress.a[5]))
+
+                       SK_DBG_MSG(pAC, SK_DBGMOD_ADDR, SK_DBGCAT_INIT,
+                               ("Logical MAC Address (Net%d): %02X %02X %02X %02X %02X %02X\n",
+                                       i,
+                                       pAC->Addr.Net[i].CurrentMacAddress.a[0],
+                                       pAC->Addr.Net[i].CurrentMacAddress.a[1],
+                                       pAC->Addr.Net[i].CurrentMacAddress.a[2],
+                                       pAC->Addr.Net[i].CurrentMacAddress.a[3],
+                                       pAC->Addr.Net[i].CurrentMacAddress.a[4],
+                                       pAC->Addr.Net[i].CurrentMacAddress.a[5]))
+               }
+#endif /* DEBUG */
+
+               for (i = 0; i < (SK_U32) pAC->GIni.GIMacsFound; i++) {
+                       pAPort = &pAC->Addr.Port[i];
+
+                       /* Read permanent port addresses from Control Register File. */
+                       for (j = 0; j < SK_MAC_ADDR_LEN; j++) {
+                               InAddr = (SK_U8 *) &pAPort->PermanentMacAddress.a[j];
+                               SK_IN8(IoC, B2_MAC_2 + 8 * i + j, InAddr);
+                       }
+
+                       if (!pAPort->CurrentMacAddressSet) {
+                               /*
+                                * Set the current and previous physical MAC address
+                                * of this port to its permanent MAC address.
+                                */
+                               pAPort->CurrentMacAddress = pAPort->PermanentMacAddress;
+                               pAPort->PreviousMacAddress = pAPort->PermanentMacAddress;
+                               pAPort->CurrentMacAddressSet = SK_TRUE;
+                       }
+
+                       /* Set port's current physical MAC address. */
+                       OutAddr = (SK_U16 *) &pAPort->CurrentMacAddress.a[0];
+
+                       if (pAC->GIni.GIChipId == CHIP_ID_GENESIS) {
+                               XM_OUTADDR(IoC, i, XM_SA, OutAddr);
+                       }
+                       else {
+                               GM_OUTADDR(IoC, i, GM_SRC_ADDR_1L, OutAddr);
+                       }
+#ifdef DEBUG
+                       SK_DBG_MSG(pAC, SK_DBGMOD_ADDR, SK_DBGCAT_INIT,
+                               ("SkAddrInit: Permanent Physical MAC Address: %02X %02X %02X %02X %02X %02X\n",
+                                       pAPort->PermanentMacAddress.a[0],
+                                       pAPort->PermanentMacAddress.a[1],
+                                       pAPort->PermanentMacAddress.a[2],
+                                       pAPort->PermanentMacAddress.a[3],
+                                       pAPort->PermanentMacAddress.a[4],
+                                       pAPort->PermanentMacAddress.a[5]))
+
+                       SK_DBG_MSG(pAC, SK_DBGMOD_ADDR, SK_DBGCAT_INIT,
+                               ("SkAddrInit: Physical MAC Address: %02X %02X %02X %02X %02X %02X\n",
+                                       pAPort->CurrentMacAddress.a[0],
+                                       pAPort->CurrentMacAddress.a[1],
+                                       pAPort->CurrentMacAddress.a[2],
+                                       pAPort->CurrentMacAddress.a[3],
+                                       pAPort->CurrentMacAddress.a[4],
+                                       pAPort->CurrentMacAddress.a[5]))
+#endif /* DEBUG */
+               }
+               /* pAC->Addr.InitDone = SK_INIT_IO; */
+               break;
+
+       case SK_INIT_RUN:
+#ifdef xDEBUG
+               for (i = 0; i < SK_MAX_MACS; i++) {
+                       if (pAC->Addr.Port[i].NextExactMatchRlmt <
+                               SK_ADDR_FIRST_MATCH_RLMT) {
+                               Next0[i] |= 16;
+                       }
+               }
+#endif /* DEBUG */
+
+               /* pAC->Addr.InitDone = SK_INIT_RUN; */
+               break;
+
+       default:        /* error */
+               break;
+       }
+
+       return (SK_ADDR_SUCCESS);
+
+}      /* SkAddrInit */
+
+
+/******************************************************************************
+ *
+ *     SkAddrMcClear - clear the multicast table
+ *
+ * Description:
+ *     This routine clears the multicast table.
+ *
+ *     If not suppressed by Flag SK_MC_SW_ONLY, the hardware is updated
+ *     immediately.
+ *
+ *     It calls either SkAddrXmacMcClear or SkAddrGmacMcClear, according
+ *     to the adapter in use. The real work is done there.
+ *
+ * Context:
+ *     runtime, pageable
+ *     may be called starting with SK_INIT_DATA with flag SK_MC_SW_ONLY
+ *     may be called after SK_INIT_IO without limitation
+ *
+ * Returns:
+ *     SK_ADDR_SUCCESS
+ *     SK_ADDR_ILLEGAL_PORT
+ */
+int    SkAddrMcClear(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* I/O context */
+SK_U32 PortNumber,     /* Index of affected port */
+int            Flags)          /* permanent/non-perm, sw-only */
+{
+       int ReturnCode;
+
+       if (PortNumber >= (SK_U32) pAC->GIni.GIMacsFound) {
+               return (SK_ADDR_ILLEGAL_PORT);
+       }
+
+       if (pAC->GIni.GIChipId == CHIP_ID_GENESIS) {
+               ReturnCode = SkAddrXmacMcClear(pAC, IoC, PortNumber, Flags);
+       }
+       else {
+               ReturnCode = SkAddrGmacMcClear(pAC, IoC, PortNumber, Flags);
+       }
+
+       return (ReturnCode);
+
+}      /* SkAddrMcClear */
+
+
+/******************************************************************************
+ *
+ *     SkAddrXmacMcClear - clear the multicast table
+ *
+ * Description:
+ *     This routine clears the multicast table
+ *     (either entry 2 or entries 3-16 and InexactFilter) of the given port.
+ *     If not suppressed by Flag SK_MC_SW_ONLY, the hardware is updated
+ *     immediately.
+ *
+ * Context:
+ *     runtime, pageable
+ *     may be called starting with SK_INIT_DATA with flag SK_MC_SW_ONLY
+ *     may be called after SK_INIT_IO without limitation
+ *
+ * Returns:
+ *     SK_ADDR_SUCCESS
+ *     SK_ADDR_ILLEGAL_PORT
+ */
+int    SkAddrXmacMcClear(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* I/O context */
+SK_U32 PortNumber,     /* Index of affected port */
+int            Flags)          /* permanent/non-perm, sw-only */
+{
+       int i;
+
+       if (Flags & SK_ADDR_PERMANENT) {        /* permanent => RLMT */
+
+               /* Clear RLMT multicast addresses. */
+               pAC->Addr.Port[PortNumber].NextExactMatchRlmt = SK_ADDR_FIRST_MATCH_RLMT;
+       }
+       else {  /* not permanent => DRV */
+
+               /* Clear InexactFilter */
+               for (i = 0; i < 8; i++) {
+                       pAC->Addr.Port[PortNumber].InexactFilter.Bytes[i] = 0;
+               }
+
+               /* Clear DRV multicast addresses. */
+
+               pAC->Addr.Port[PortNumber].NextExactMatchDrv = SK_ADDR_FIRST_MATCH_DRV;
+       }
+
+       if (!(Flags & SK_MC_SW_ONLY)) {
+               (void) SkAddrXmacMcUpdate(pAC, IoC, PortNumber);
+       }
+
+       return (SK_ADDR_SUCCESS);
+
+}      /* SkAddrXmacMcClear */
+
+
+/******************************************************************************
+ *
+ *     SkAddrGmacMcClear - clear the multicast table
+ *
+ * Description:
+ *     This routine clears the multicast hashing table (InexactFilter)
+ *     (either the RLMT or the driver bits) of the given port.
+ *
+ *     If not suppressed by Flag SK_MC_SW_ONLY, the hardware is updated
+ *     immediately.
+ *
+ * Context:
+ *     runtime, pageable
+ *     may be called starting with SK_INIT_DATA with flag SK_MC_SW_ONLY
+ *     may be called after SK_INIT_IO without limitation
+ *
+ * Returns:
+ *     SK_ADDR_SUCCESS
+ *     SK_ADDR_ILLEGAL_PORT
+ */
+int    SkAddrGmacMcClear(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* I/O context */
+SK_U32 PortNumber,     /* Index of affected port */
+int            Flags)          /* permanent/non-perm, sw-only */
+{
+       int i;
+
+#ifdef DEBUG
+       SK_DBG_MSG(pAC, SK_DBGMOD_ADDR, SK_DBGCAT_CTRL,
+               ("GMAC InexactFilter (not cleared): %02X %02X %02X %02X %02X %02X %02X %02X\n",
+                       pAC->Addr.Port[PortNumber].InexactFilter.Bytes[0],
+                       pAC->Addr.Port[PortNumber].InexactFilter.Bytes[1],
+                       pAC->Addr.Port[PortNumber].InexactFilter.Bytes[2],
+                       pAC->Addr.Port[PortNumber].InexactFilter.Bytes[3],
+                       pAC->Addr.Port[PortNumber].InexactFilter.Bytes[4],
+                       pAC->Addr.Port[PortNumber].InexactFilter.Bytes[5],
+                       pAC->Addr.Port[PortNumber].InexactFilter.Bytes[6],
+                       pAC->Addr.Port[PortNumber].InexactFilter.Bytes[7]))
+#endif /* DEBUG */
+
+       /* Clear InexactFilter */
+       for (i = 0; i < 8; i++) {
+               pAC->Addr.Port[PortNumber].InexactFilter.Bytes[i] = 0;
+       }
+
+       if (Flags & SK_ADDR_PERMANENT) {        /* permanent => RLMT */
+
+               /* Copy DRV bits to InexactFilter. */
+               for (i = 0; i < 8; i++) {
+                       pAC->Addr.Port[PortNumber].InexactFilter.Bytes[i] |=
+                               pAC->Addr.Port[PortNumber].InexactDrvFilter.Bytes[i];
+
+                       /* Clear InexactRlmtFilter. */
+                       pAC->Addr.Port[PortNumber].InexactRlmtFilter.Bytes[i] = 0;
+
+               }
+       }
+       else {  /* not permanent => DRV */
+
+               /* Copy RLMT bits to InexactFilter. */
+               for (i = 0; i < 8; i++) {
+                       pAC->Addr.Port[PortNumber].InexactFilter.Bytes[i] |=
+                               pAC->Addr.Port[PortNumber].InexactRlmtFilter.Bytes[i];
+
+                       /* Clear InexactDrvFilter. */
+                       pAC->Addr.Port[PortNumber].InexactDrvFilter.Bytes[i] = 0;
+               }
+       }
+
+#ifdef DEBUG
+       SK_DBG_MSG(pAC, SK_DBGMOD_ADDR, SK_DBGCAT_CTRL,
+               ("GMAC InexactFilter (cleared): %02X %02X %02X %02X %02X %02X %02X %02X\n",
+                       pAC->Addr.Port[PortNumber].InexactFilter.Bytes[0],
+                       pAC->Addr.Port[PortNumber].InexactFilter.Bytes[1],
+                       pAC->Addr.Port[PortNumber].InexactFilter.Bytes[2],
+                       pAC->Addr.Port[PortNumber].InexactFilter.Bytes[3],
+                       pAC->Addr.Port[PortNumber].InexactFilter.Bytes[4],
+                       pAC->Addr.Port[PortNumber].InexactFilter.Bytes[5],
+                       pAC->Addr.Port[PortNumber].InexactFilter.Bytes[6],
+                       pAC->Addr.Port[PortNumber].InexactFilter.Bytes[7]))
+#endif /* DEBUG */
+
+       if (!(Flags & SK_MC_SW_ONLY)) {
+               (void) SkAddrGmacMcUpdate(pAC, IoC, PortNumber);
+       }
+
+       return (SK_ADDR_SUCCESS);
+
+}      /* SkAddrGmacMcClear */
+
+#ifndef SK_ADDR_CHEAT
+
+/******************************************************************************
+ *
+ *     SkXmacMcHash - hash multicast address
+ *
+ * Description:
+ *     This routine computes the hash value for a multicast address.
+ *     A CRC32 algorithm is used.
+ *
+ * Notes:
+ *     The code was adapted from the XaQti data sheet.
+ *
+ * Context:
+ *     runtime, pageable
+ *
+ * Returns:
+ *     Hash value of multicast address.
+ */
+SK_U32 SkXmacMcHash(
+unsigned char *pMc)    /* Multicast address */
+{
+       SK_U32 Idx;
+       SK_U32 Bit;
+       SK_U32 Data;
+       SK_U32 Crc;
+
+       Crc = 0xFFFFFFFFUL;
+       for (Idx = 0; Idx < SK_MAC_ADDR_LEN; Idx++) {
+               Data = *pMc++;
+               for (Bit = 0; Bit < 8; Bit++, Data >>= 1) {
+                       Crc = (Crc >> 1) ^ (((Crc ^ Data) & 1) ? XMAC_POLY : 0);
+               }
+       }
+
+       return (Crc & ((1 << HASH_BITS) - 1));
+
+}      /* SkXmacMcHash */
+
+
+/******************************************************************************
+ *
+ *     SkGmacMcHash - hash multicast address
+ *
+ * Description:
+ *     This routine computes the hash value for a multicast address.
+ *     A CRC16 algorithm is used.
+ *
+ * Notes:
+ *
+ *
+ * Context:
+ *     runtime, pageable
+ *
+ * Returns:
+ *     Hash value of multicast address.
+ */
+SK_U32 SkGmacMcHash(
+unsigned char *pMc)    /* Multicast address */
+{
+       SK_U32 Data;
+       SK_U32 TmpData;
+       SK_U32 Crc;
+       int Byte;
+       int Bit;
+
+       Crc = 0xFFFFFFFFUL;
+       for (Byte = 0; Byte < 6; Byte++) {
+               /* Get next byte. */
+               Data = (SK_U32) pMc[Byte];
+
+               /* Change bit order in byte. */
+               TmpData = Data;
+               for (Bit = 0; Bit < 8; Bit++) {
+                       if (TmpData & 1L) {
+                               Data |=  1L << (7 - Bit);
+                       }
+                       else {
+                               Data &= ~(1L << (7 - Bit));
+                       }
+                       TmpData >>= 1;
+               }
+
+               Crc ^= (Data << 24);
+               for (Bit = 0; Bit < 8; Bit++) {
+                       if (Crc & 0x80000000) {
+                               Crc = (Crc << 1) ^ GMAC_POLY;
+                       }
+                       else {
+                               Crc <<= 1;
+                       }
+               }
+       }
+
+       return (Crc & ((1 << HASH_BITS) - 1));
+
+}      /* SkGmacMcHash */
+
+#endif /* not SK_ADDR_CHEAT */
+
+/******************************************************************************
+ *
+ *     SkAddrMcAdd - add a multicast address to a port
+ *
+ * Description:
+ *     This routine enables reception for a given address on the given port.
+ *
+ *     It calls either SkAddrXmacMcAdd or SkAddrGmacMcAdd, according to the
+ *     adapter in use. The real work is done there.
+ *
+ * Notes:
+ *     The return code is only valid for SK_PROM_MODE_NONE.
+ *
+ * Context:
+ *     runtime, pageable
+ *     may be called after SK_INIT_DATA
+ *
+ * Returns:
+ *     SK_MC_FILTERING_EXACT
+ *     SK_MC_FILTERING_INEXACT
+ *     SK_MC_ILLEGAL_ADDRESS
+ *     SK_MC_ILLEGAL_PORT
+ *     SK_MC_RLMT_OVERFLOW
+ */
+int    SkAddrMcAdd(
+SK_AC          *pAC,           /* adapter context */
+SK_IOC         IoC,            /* I/O context */
+SK_U32         PortNumber,     /* Port Number */
+SK_MAC_ADDR    *pMc,           /* multicast address to be added */
+int                    Flags)          /* permanent/non-permanent */
+{
+       int ReturnCode;
+
+       if (PortNumber >= (SK_U32) pAC->GIni.GIMacsFound) {
+               return (SK_ADDR_ILLEGAL_PORT);
+       }
+
+       if (pAC->GIni.GIChipId == CHIP_ID_GENESIS) {
+               ReturnCode = SkAddrXmacMcAdd(pAC, IoC, PortNumber, pMc, Flags);
+       }
+       else {
+               ReturnCode = SkAddrGmacMcAdd(pAC, IoC, PortNumber, pMc, Flags);
+       }
+
+       return (ReturnCode);
+
+}      /* SkAddrMcAdd */
+
+
+/******************************************************************************
+ *
+ *     SkAddrXmacMcAdd - add a multicast address to a port
+ *
+ * Description:
+ *     This routine enables reception for a given address on the given port.
+ *
+ * Notes:
+ *     The return code is only valid for SK_PROM_MODE_NONE.
+ *
+ *     The multicast bit is only checked if there are no free exact match
+ *     entries.
+ *
+ * Context:
+ *     runtime, pageable
+ *     may be called after SK_INIT_DATA
+ *
+ * Returns:
+ *     SK_MC_FILTERING_EXACT
+ *     SK_MC_FILTERING_INEXACT
+ *     SK_MC_ILLEGAL_ADDRESS
+ *     SK_MC_RLMT_OVERFLOW
+ */
+int    SkAddrXmacMcAdd(
+SK_AC          *pAC,           /* adapter context */
+SK_IOC         IoC,            /* I/O context */
+SK_U32         PortNumber,     /* Port Number */
+SK_MAC_ADDR    *pMc,           /* multicast address to be added */
+int            Flags)          /* permanent/non-permanent */
+{
+       int     i;
+       SK_U8   Inexact;
+#ifndef SK_ADDR_CHEAT
+       SK_U32 HashBit;
+#endif /* !defined(SK_ADDR_CHEAT) */
+
+       if (Flags & SK_ADDR_PERMANENT) {        /* permanent => RLMT */
+#ifdef xDEBUG
+               if (pAC->Addr.Port[PortNumber].NextExactMatchRlmt <
+                       SK_ADDR_FIRST_MATCH_RLMT) {
+                       Next0[PortNumber] |= 1;
+                       return (SK_MC_RLMT_OVERFLOW);
+               }
+#endif /* DEBUG */
+
+               if (pAC->Addr.Port[PortNumber].NextExactMatchRlmt >
+                       SK_ADDR_LAST_MATCH_RLMT) {
+                       return (SK_MC_RLMT_OVERFLOW);
+               }
+
+               /* Set a RLMT multicast address. */
+
+               pAC->Addr.Port[PortNumber].Exact[
+                       pAC->Addr.Port[PortNumber].NextExactMatchRlmt++] = *pMc;
+
+               return (SK_MC_FILTERING_EXACT);
+       }
+
+#ifdef xDEBUG
+       if (pAC->Addr.Port[PortNumber].NextExactMatchDrv <
+               SK_ADDR_FIRST_MATCH_DRV) {
+                       Next0[PortNumber] |= 2;
+               return (SK_MC_RLMT_OVERFLOW);
+       }
+#endif /* DEBUG */
+
+       if (pAC->Addr.Port[PortNumber].NextExactMatchDrv <= SK_ADDR_LAST_MATCH_DRV) {
+
+               /* Set exact match entry. */
+               pAC->Addr.Port[PortNumber].Exact[
+                       pAC->Addr.Port[PortNumber].NextExactMatchDrv++] = *pMc;
+
+               /* Clear InexactFilter */
+               for (i = 0; i < 8; i++) {
+                       pAC->Addr.Port[PortNumber].InexactFilter.Bytes[i] = 0;
+               }
+       }
+       else {
+               if (!(pMc->a[0] & SK_MC_BIT)) {
+                       /* Hashing only possible with multicast addresses. */
+                       return (SK_MC_ILLEGAL_ADDRESS);
+               }
+#ifndef SK_ADDR_CHEAT
+               /* Compute hash value of address. */
+               HashBit = 63 - SkXmacMcHash(&pMc->a[0]);
+
+               /* Add bit to InexactFilter. */
+               pAC->Addr.Port[PortNumber].InexactFilter.Bytes[HashBit / 8] |=
+                       1 << (HashBit % 8);
+#else  /* SK_ADDR_CHEAT */
+               /* Set all bits in InexactFilter. */
+               for (i = 0; i < 8; i++) {
+                       pAC->Addr.Port[PortNumber].InexactFilter.Bytes[i] = 0xFF;
+               }
+#endif /* SK_ADDR_CHEAT */
+       }
+
+       for (Inexact = 0, i = 0; i < 8; i++) {
+               Inexact |= pAC->Addr.Port[PortNumber].InexactFilter.Bytes[i];
+       }
+
+       if (Inexact == 0 && pAC->Addr.Port[PortNumber].PromMode == 0) {
+               return (SK_MC_FILTERING_EXACT);
+       }
+       else {
+               return (SK_MC_FILTERING_INEXACT);
+       }
+
+}      /* SkAddrXmacMcAdd */
+
+
+/******************************************************************************
+ *
+ *     SkAddrGmacMcAdd - add a multicast address to a port
+ *
+ * Description:
+ *     This routine enables reception for a given address on the given port.
+ *
+ * Notes:
+ *     The return code is only valid for SK_PROM_MODE_NONE.
+ *
+ * Context:
+ *     runtime, pageable
+ *     may be called after SK_INIT_DATA
+ *
+ * Returns:
+ *     SK_MC_FILTERING_INEXACT
+ *     SK_MC_ILLEGAL_ADDRESS
+ */
+int    SkAddrGmacMcAdd(
+SK_AC          *pAC,           /* adapter context */
+SK_IOC         IoC,            /* I/O context */
+SK_U32         PortNumber,     /* Port Number */
+SK_MAC_ADDR    *pMc,           /* multicast address to be added */
+int            Flags)          /* permanent/non-permanent */
+{
+       int     i;
+#ifndef SK_ADDR_CHEAT
+       SK_U32 HashBit;
+#endif /* !defined(SK_ADDR_CHEAT) */
+
+       if (!(pMc->a[0] & SK_MC_BIT)) {
+               /* Hashing only possible with multicast addresses. */
+               return (SK_MC_ILLEGAL_ADDRESS);
+       }
+
+#ifndef SK_ADDR_CHEAT
+
+       /* Compute hash value of address. */
+       HashBit = SkGmacMcHash(&pMc->a[0]);
+
+       if (Flags & SK_ADDR_PERMANENT) {        /* permanent => RLMT */
+
+               /* Add bit to InexactRlmtFilter. */
+               pAC->Addr.Port[PortNumber].InexactRlmtFilter.Bytes[HashBit / 8] |=
+                       1 << (HashBit % 8);
+
+               /* Copy bit to InexactFilter. */
+               for (i = 0; i < 8; i++) {
+                       pAC->Addr.Port[PortNumber].InexactFilter.Bytes[i] |=
+                               pAC->Addr.Port[PortNumber].InexactRlmtFilter.Bytes[i];
+               }
+#ifdef DEBUG
+               SK_DBG_MSG(pAC, SK_DBGMOD_ADDR, SK_DBGCAT_CTRL,
+               ("GMAC InexactRlmtFilter: %02X %02X %02X %02X %02X %02X %02X %02X\n",
+                       pAC->Addr.Port[PortNumber].InexactRlmtFilter.Bytes[0],
+                       pAC->Addr.Port[PortNumber].InexactRlmtFilter.Bytes[1],
+                       pAC->Addr.Port[PortNumber].InexactRlmtFilter.Bytes[2],
+                       pAC->Addr.Port[PortNumber].InexactRlmtFilter.Bytes[3],
+                       pAC->Addr.Port[PortNumber].InexactRlmtFilter.Bytes[4],
+                       pAC->Addr.Port[PortNumber].InexactRlmtFilter.Bytes[5],
+                       pAC->Addr.Port[PortNumber].InexactRlmtFilter.Bytes[6],
+                       pAC->Addr.Port[PortNumber].InexactRlmtFilter.Bytes[7]))
+#endif /* DEBUG */
+       }
+       else {  /* not permanent => DRV */
+
+               /* Add bit to InexactDrvFilter. */
+               pAC->Addr.Port[PortNumber].InexactDrvFilter.Bytes[HashBit / 8] |=
+                       1 << (HashBit % 8);
+
+               /* Copy bit to InexactFilter. */
+               for (i = 0; i < 8; i++) {
+                       pAC->Addr.Port[PortNumber].InexactFilter.Bytes[i] |=
+                               pAC->Addr.Port[PortNumber].InexactDrvFilter.Bytes[i];
+               }
+#ifdef DEBUG
+               SK_DBG_MSG(pAC, SK_DBGMOD_ADDR, SK_DBGCAT_CTRL,
+               ("GMAC InexactDrvFilter: %02X %02X %02X %02X %02X %02X %02X %02X\n",
+                       pAC->Addr.Port[PortNumber].InexactDrvFilter.Bytes[0],
+                       pAC->Addr.Port[PortNumber].InexactDrvFilter.Bytes[1],
+                       pAC->Addr.Port[PortNumber].InexactDrvFilter.Bytes[2],
+                       pAC->Addr.Port[PortNumber].InexactDrvFilter.Bytes[3],
+                       pAC->Addr.Port[PortNumber].InexactDrvFilter.Bytes[4],
+                       pAC->Addr.Port[PortNumber].InexactDrvFilter.Bytes[5],
+                       pAC->Addr.Port[PortNumber].InexactDrvFilter.Bytes[6],
+                       pAC->Addr.Port[PortNumber].InexactDrvFilter.Bytes[7]))
+#endif /* DEBUG */
+       }
+
+#else  /* SK_ADDR_CHEAT */
+
+       /* Set all bits in InexactFilter. */
+       for (i = 0; i < 8; i++) {
+               pAC->Addr.Port[PortNumber].InexactFilter.Bytes[i] = 0xFF;
+       }
+#endif /* SK_ADDR_CHEAT */
+
+       return (SK_MC_FILTERING_INEXACT);
+
+}      /* SkAddrGmacMcAdd */
+
+
+/******************************************************************************
+ *
+ *     SkAddrMcUpdate - update the HW MC address table and set the MAC address
+ *
+ * Description:
+ *     This routine enables reception of the addresses contained in a local
+ *     table for a given port.
+ *     It also programs the port's current physical MAC address.
+ *
+ *     It calls either SkAddrXmacMcUpdate or SkAddrGmacMcUpdate, according
+ *     to the adapter in use. The real work is done there.
+ *
+ * Notes:
+ *     The return code is only valid for SK_PROM_MODE_NONE.
+ *
+ * Context:
+ *     runtime, pageable
+ *     may be called after SK_INIT_IO
+ *
+ * Returns:
+ *     SK_MC_FILTERING_EXACT
+ *     SK_MC_FILTERING_INEXACT
+ *     SK_ADDR_ILLEGAL_PORT
+ */
+int    SkAddrMcUpdate(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* I/O context */
+SK_U32 PortNumber)     /* Port Number */
+{
+       int ReturnCode;
+
+       if (PortNumber >= (SK_U32) pAC->GIni.GIMacsFound) {
+               return (SK_ADDR_ILLEGAL_PORT);
+       }
+
+       if (pAC->GIni.GIChipId == CHIP_ID_GENESIS) {
+               ReturnCode = SkAddrXmacMcUpdate(pAC, IoC, PortNumber);
+       }
+       else {
+               ReturnCode = SkAddrGmacMcUpdate(pAC, IoC, PortNumber);
+       }
+
+       return (ReturnCode);
+
+}      /* SkAddrMcUpdate */
+
+
+/******************************************************************************
+ *
+ *     SkAddrXmacMcUpdate - update the HW MC address table and set the MAC address
+ *
+ * Description:
+ *     This routine enables reception of the addresses contained in a local
+ *     table for a given port.
+ *     It also programs the port's current physical MAC address.
+ *
+ * Notes:
+ *     The return code is only valid for SK_PROM_MODE_NONE.
+ *
+ * Context:
+ *     runtime, pageable
+ *     may be called after SK_INIT_IO
+ *
+ * Returns:
+ *     SK_MC_FILTERING_EXACT
+ *     SK_MC_FILTERING_INEXACT
+ *     SK_ADDR_ILLEGAL_PORT
+ */
+int    SkAddrXmacMcUpdate(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* I/O context */
+SK_U32 PortNumber)     /* Port Number */
+{
+       SK_U32          i;
+       SK_U8           Inexact;
+       SK_U16          *OutAddr;
+       SK_ADDR_PORT    *pAPort;
+
+       SK_DBG_MSG(pAC,SK_DBGMOD_ADDR, SK_DBGCAT_CTRL,
+               ("SkAddrXmacMcUpdate on Port %u.\n", PortNumber))
+
+       pAPort = &pAC->Addr.Port[PortNumber];
+
+#ifdef DEBUG
+       SK_DBG_MSG(pAC,SK_DBGMOD_ADDR, SK_DBGCAT_CTRL,
+               ("Next0 on Port %d: %d\n", PortNumber, Next0[PortNumber]))
+#endif /* DEBUG */
+
+       /* Start with 0 to also program the logical MAC address. */
+       for (i = 0; i < pAPort->NextExactMatchRlmt; i++) {
+               /* Set exact match address i on XMAC */
+               OutAddr = (SK_U16 *) &pAPort->Exact[i].a[0];
+               XM_OUTADDR(IoC, PortNumber, XM_EXM(i), OutAddr);
+       }
+
+       /* Clear other permanent exact match addresses on XMAC */
+       if (pAPort->NextExactMatchRlmt <= SK_ADDR_LAST_MATCH_RLMT) {
+
+               SkXmClrExactAddr(pAC, IoC, PortNumber, pAPort->NextExactMatchRlmt,
+                       SK_ADDR_LAST_MATCH_RLMT);
+       }
+
+       for (i = pAPort->FirstExactMatchDrv; i < pAPort->NextExactMatchDrv; i++) {
+               OutAddr = (SK_U16 *) &pAPort->Exact[i].a[0];
+               XM_OUTADDR(IoC, PortNumber, XM_EXM(i), OutAddr);
+       }
+
+       /* Clear other non-permanent exact match addresses on XMAC */
+       if (pAPort->NextExactMatchDrv <= SK_ADDR_LAST_MATCH_DRV) {
+
+               SkXmClrExactAddr(pAC, IoC, PortNumber, pAPort->NextExactMatchDrv,
+                       SK_ADDR_LAST_MATCH_DRV);
+       }
+
+       for (Inexact = 0, i = 0; i < 8; i++) {
+               Inexact |= pAPort->InexactFilter.Bytes[i];
+       }
+
+       if (pAPort->PromMode & SK_PROM_MODE_ALL_MC) {
+
+               /* Set all bits in 64-bit hash register. */
+               XM_OUTHASH(IoC, PortNumber, XM_HSM, &OnesHash);
+
+               /* Enable Hashing */
+               SkMacHashing(pAC, IoC, PortNumber, SK_TRUE);
+       }
+       else if (Inexact != 0) {
+
+               /* Set 64-bit hash register to InexactFilter. */
+               XM_OUTHASH(IoC, PortNumber, XM_HSM, &pAPort->InexactFilter.Bytes[0]);
+
+               /* Enable Hashing */
+               SkMacHashing(pAC, IoC, PortNumber, SK_TRUE);
+       }
+       else {
+               /* Disable Hashing */
+               SkMacHashing(pAC, IoC, PortNumber, SK_FALSE);
+       }
+
+       if (pAPort->PromMode != SK_PROM_MODE_NONE) {
+               (void) SkAddrXmacPromiscuousChange(pAC, IoC, PortNumber, pAPort->PromMode);
+       }
+
+       /* Set port's current physical MAC address. */
+       OutAddr = (SK_U16 *) &pAPort->CurrentMacAddress.a[0];
+
+       XM_OUTADDR(IoC, PortNumber, XM_SA, OutAddr);
+
+#ifdef xDEBUG
+       for (i = 0; i < pAPort->NextExactMatchRlmt; i++) {
+               SK_U8           InAddr8[6];
+               SK_U16          *InAddr;
+
+               /* Get exact match address i from port PortNumber. */
+               InAddr = (SK_U16 *) &InAddr8[0];
+
+               XM_INADDR(IoC, PortNumber, XM_EXM(i), InAddr);
+
+               SK_DBG_MSG(pAC,SK_DBGMOD_ADDR, SK_DBGCAT_CTRL,
+                       ("SkAddrXmacMcUpdate: MC address %d on Port %u: ",
+                        "%02x %02x %02x %02x %02x %02x -- %02x %02x %02x %02x %02x %02x\n",
+                               i,
+                               PortNumber,
+                               InAddr8[0],
+                               InAddr8[1],
+                               InAddr8[2],
+                               InAddr8[3],
+                               InAddr8[4],
+                               InAddr8[5],
+                               pAPort->Exact[i].a[0],
+                               pAPort->Exact[i].a[1],
+                               pAPort->Exact[i].a[2],
+                               pAPort->Exact[i].a[3],
+                               pAPort->Exact[i].a[4],
+                               pAPort->Exact[i].a[5]))
+       }
+#endif /* DEBUG */
+
+       /* Determine return value. */
+       if (Inexact == 0 && pAPort->PromMode == 0) {
+               return (SK_MC_FILTERING_EXACT);
+       }
+       else {
+               return (SK_MC_FILTERING_INEXACT);
+       }
+
+}      /* SkAddrXmacMcUpdate */
+
+
+/******************************************************************************
+ *
+ *     SkAddrGmacMcUpdate - update the HW MC address table and set the MAC address
+ *
+ * Description:
+ *     This routine enables reception of the addresses contained in a local
+ *     table for a given port.
+ *     It also programs the port's current physical MAC address.
+ *
+ * Notes:
+ *     The return code is only valid for SK_PROM_MODE_NONE.
+ *
+ * Context:
+ *     runtime, pageable
+ *     may be called after SK_INIT_IO
+ *
+ * Returns:
+ *     SK_MC_FILTERING_EXACT
+ *     SK_MC_FILTERING_INEXACT
+ *     SK_ADDR_ILLEGAL_PORT
+ */
+int    SkAddrGmacMcUpdate(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* I/O context */
+SK_U32 PortNumber)     /* Port Number */
+{
+       SK_U32          i;
+       SK_U8           Inexact;
+       SK_U16          *OutAddr;
+       SK_ADDR_PORT    *pAPort;
+
+       SK_DBG_MSG(pAC,SK_DBGMOD_ADDR, SK_DBGCAT_CTRL,
+               ("SkAddrGmacMcUpdate on Port %u.\n", PortNumber))
+
+       pAPort = &pAC->Addr.Port[PortNumber];
+
+#ifdef DEBUG
+       SK_DBG_MSG(pAC,SK_DBGMOD_ADDR, SK_DBGCAT_CTRL,
+               ("Next0 on Port %d: %d\n", PortNumber, Next0[PortNumber]))
+#endif /* DEBUG */
+
+       for (Inexact = 0, i = 0; i < 8; i++) {
+               Inexact |= pAPort->InexactFilter.Bytes[i];
+       }
+
+       /* Set 64-bit hash register to InexactFilter. */
+       GM_OUTHASH(IoC, PortNumber, GM_MC_ADDR_H1,
+               &pAPort->InexactFilter.Bytes[0]);
+
+       if (pAPort->PromMode & SK_PROM_MODE_ALL_MC) {
+
+               /* Set all bits in 64-bit hash register. */
+               GM_OUTHASH(IoC, PortNumber, GM_MC_ADDR_H1, &OnesHash);
+
+               /* Enable Hashing */
+               SkMacHashing(pAC, IoC, PortNumber, SK_TRUE);
+       }
+       else {
+               /* Enable Hashing. */
+               SkMacHashing(pAC, IoC, PortNumber, SK_TRUE);
+       }
+
+       if (pAPort->PromMode != SK_PROM_MODE_NONE) {
+               (void) SkAddrGmacPromiscuousChange(pAC, IoC, PortNumber, pAPort->PromMode);
+       }
+
+       /* Set port's current physical MAC address. */
+       OutAddr = (SK_U16 *) &pAPort->CurrentMacAddress.a[0];
+       GM_OUTADDR(IoC, PortNumber, GM_SRC_ADDR_1L, OutAddr);
+
+       /* Set port's current logical MAC address. */
+       OutAddr = (SK_U16 *) &pAPort->Exact[0].a[0];
+       GM_OUTADDR(IoC, PortNumber, GM_SRC_ADDR_2L, OutAddr);
+
+#ifdef DEBUG
+       SK_DBG_MSG(pAC, SK_DBGMOD_ADDR, SK_DBGCAT_CTRL,
+               ("SkAddrGmacMcUpdate: Permanent Physical MAC Address: %02X %02X %02X %02X %02X %02X\n",
+                       pAPort->Exact[0].a[0],
+                       pAPort->Exact[0].a[1],
+                       pAPort->Exact[0].a[2],
+                       pAPort->Exact[0].a[3],
+                       pAPort->Exact[0].a[4],
+                       pAPort->Exact[0].a[5]))
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_ADDR, SK_DBGCAT_CTRL,
+               ("SkAddrGmacMcUpdate: Physical MAC Address: %02X %02X %02X %02X %02X %02X\n",
+                       pAPort->CurrentMacAddress.a[0],
+                       pAPort->CurrentMacAddress.a[1],
+                       pAPort->CurrentMacAddress.a[2],
+                       pAPort->CurrentMacAddress.a[3],
+                       pAPort->CurrentMacAddress.a[4],
+                       pAPort->CurrentMacAddress.a[5]))
+#endif /* DEBUG */
+
+       /* Determine return value. */
+       if (Inexact == 0 && pAPort->PromMode == 0) {
+               return (SK_MC_FILTERING_EXACT);
+       }
+       else {
+               return (SK_MC_FILTERING_INEXACT);
+       }
+
+}      /* SkAddrGmacMcUpdate */
+
+
+/******************************************************************************
+ *
+ *     SkAddrOverride - override a port's MAC address
+ *
+ * Description:
+ *     This routine overrides the MAC address of one port.
+ *
+ * Context:
+ *     runtime, pageable
+ *     may be called after SK_INIT_IO
+ *
+ * Returns:
+ *     SK_ADDR_SUCCESS if successful.
+ *     SK_ADDR_DUPLICATE_ADDRESS if duplicate MAC address.
+ *     SK_ADDR_MULTICAST_ADDRESS if multicast or broadcast address.
+ *     SK_ADDR_TOO_EARLY if SK_INIT_IO was not executed before.
+ */
+int    SkAddrOverride(
+SK_AC          *pAC,           /* adapter context */
+SK_IOC         IoC,            /* I/O context */
+SK_U32         PortNumber,     /* Port Number */
+SK_MAC_ADDR    *pNewAddr,      /* new MAC address */
+int                    Flags)          /* logical/physical MAC address */
+{
+       SK_EVPARA       Para;
+       SK_U32          NetNumber;
+       SK_U32          i;
+       SK_U16          *OutAddr;
+
+       NetNumber = pAC->Rlmt.Port[PortNumber].Net->NetNumber;
+
+       if (PortNumber >= (SK_U32) pAC->GIni.GIMacsFound) {
+               return (SK_ADDR_ILLEGAL_PORT);
+       }
+
+       if (pNewAddr != NULL && (pNewAddr->a[0] & SK_MC_BIT) != 0) {
+               return (SK_ADDR_MULTICAST_ADDRESS);
+       }
+
+       if (!pAC->Addr.Net[NetNumber].CurrentMacAddressSet) {
+               return (SK_ADDR_TOO_EARLY);
+       }
+
+       if (Flags & SK_ADDR_SET_LOGICAL) {      /* Activate logical MAC address. */
+               /* Parameter *pNewAddr is ignored. */
+               for (i = 0; i < (SK_U32) pAC->GIni.GIMacsFound; i++) {
+                       if (!pAC->Addr.Port[i].CurrentMacAddressSet) {
+                               return (SK_ADDR_TOO_EARLY);
+                       }
+               }
+
+               /* Set PortNumber to number of net's active port. */
+               PortNumber = pAC->Rlmt.Net[NetNumber].
+                       Port[pAC->Addr.Net[NetNumber].ActivePort]->PortNumber;
+
+               pAC->Addr.Port[PortNumber].Exact[0] =
+                       pAC->Addr.Net[NetNumber].CurrentMacAddress;
+
+               /* Write address to first exact match entry of active port. */
+               (void) SkAddrMcUpdate(pAC, IoC, PortNumber);
+       }
+       else if (Flags & SK_ADDR_CLEAR_LOGICAL) {
+               /* Deactivate logical MAC address. */
+               /* Parameter *pNewAddr is ignored. */
+               for (i = 0; i < (SK_U32) pAC->GIni.GIMacsFound; i++) {
+                       if (!pAC->Addr.Port[i].CurrentMacAddressSet) {
+                               return (SK_ADDR_TOO_EARLY);
+                       }
+               }
+
+               /* Set PortNumber to number of net's active port. */
+               PortNumber = pAC->Rlmt.Net[NetNumber].
+                       Port[pAC->Addr.Net[NetNumber].ActivePort]->PortNumber;
+
+               for (i = 0; i < SK_MAC_ADDR_LEN; i++ ) {
+                       pAC->Addr.Port[PortNumber].Exact[0].a[i] = 0;
+               }
+
+               /* Write address to first exact match entry of active port. */
+               (void) SkAddrMcUpdate(pAC, IoC, PortNumber);
+       }
+       else if (Flags & SK_ADDR_PHYSICAL_ADDRESS) {    /* Physical MAC address. */
+               if (SK_ADDR_EQUAL(pNewAddr->a,
+                       pAC->Addr.Net[NetNumber].CurrentMacAddress.a)) {
+                       return (SK_ADDR_DUPLICATE_ADDRESS);
+               }
+
+               for (i = 0; i < (SK_U32) pAC->GIni.GIMacsFound; i++) {
+                       if (!pAC->Addr.Port[i].CurrentMacAddressSet) {
+                               return (SK_ADDR_TOO_EARLY);
+                       }
+
+                       if (SK_ADDR_EQUAL(pNewAddr->a,
+                               pAC->Addr.Port[i].CurrentMacAddress.a)) {
+                               if (i == PortNumber) {
+                                       return (SK_ADDR_SUCCESS);
+                               }
+                               else {
+                                       return (SK_ADDR_DUPLICATE_ADDRESS);
+                               }
+                       }
+               }
+
+               pAC->Addr.Port[PortNumber].PreviousMacAddress =
+                       pAC->Addr.Port[PortNumber].CurrentMacAddress;
+               pAC->Addr.Port[PortNumber].CurrentMacAddress = *pNewAddr;
+
+               /* Change port's physical MAC address. */
+               OutAddr = (SK_U16 *) pNewAddr;
+
+               if (pAC->GIni.GIChipId == CHIP_ID_GENESIS) {
+                       XM_OUTADDR(IoC, PortNumber, XM_SA, OutAddr);
+               }
+               else {
+                       GM_OUTADDR(IoC, PortNumber, GM_SRC_ADDR_1L, OutAddr);
+               }
+
+               /* Report address change to RLMT. */
+               Para.Para32[0] = PortNumber;
+               Para.Para32[0] = -1;
+               SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_PORT_ADDR, Para);
+       }
+       else {  /* Logical MAC address. */
+               if (SK_ADDR_EQUAL(pNewAddr->a,
+                       pAC->Addr.Net[NetNumber].CurrentMacAddress.a)) {
+                       return (SK_ADDR_SUCCESS);
+               }
+
+               for (i = 0; i < (SK_U32) pAC->GIni.GIMacsFound; i++) {
+                       if (!pAC->Addr.Port[i].CurrentMacAddressSet) {
+                               return (SK_ADDR_TOO_EARLY);
+                       }
+
+                       if (SK_ADDR_EQUAL(pNewAddr->a,
+                               pAC->Addr.Port[i].CurrentMacAddress.a)) {
+                               return (SK_ADDR_DUPLICATE_ADDRESS);
+                       }
+               }
+
+               /*
+                * In case that the physical and the logical MAC addresses are equal
+                * we must also change the physical MAC address here.
+                * In this case we have an adapter which initially was programmed with
+                * two identical MAC addresses.
+                */
+               if (SK_ADDR_EQUAL(pAC->Addr.Port[PortNumber].CurrentMacAddress.a,
+                               pAC->Addr.Port[PortNumber].Exact[0].a)) {
+
+                       pAC->Addr.Port[PortNumber].PreviousMacAddress =
+                               pAC->Addr.Port[PortNumber].CurrentMacAddress;
+                       pAC->Addr.Port[PortNumber].CurrentMacAddress = *pNewAddr;
+
+                       /* Report address change to RLMT. */
+                       Para.Para32[0] = PortNumber;
+                       Para.Para32[0] = -1;
+                       SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_PORT_ADDR, Para);
+               }
+
+               /* Set PortNumber to number of net's active port. */
+               PortNumber = pAC->Rlmt.Net[NetNumber].
+                       Port[pAC->Addr.Net[NetNumber].ActivePort]->PortNumber;
+
+               pAC->Addr.Net[NetNumber].CurrentMacAddress = *pNewAddr;
+               pAC->Addr.Port[PortNumber].Exact[0] = *pNewAddr;
+#ifdef DEBUG
+               SK_DBG_MSG(pAC,SK_DBGMOD_ADDR, SK_DBGCAT_CTRL,
+                       ("SkAddrOverride: Permanent MAC Address: %02X %02X %02X %02X %02X %02X\n",
+                               pAC->Addr.Net[NetNumber].PermanentMacAddress.a[0],
+                               pAC->Addr.Net[NetNumber].PermanentMacAddress.a[1],
+                               pAC->Addr.Net[NetNumber].PermanentMacAddress.a[2],
+                               pAC->Addr.Net[NetNumber].PermanentMacAddress.a[3],
+                               pAC->Addr.Net[NetNumber].PermanentMacAddress.a[4],
+                               pAC->Addr.Net[NetNumber].PermanentMacAddress.a[5]))
+
+               SK_DBG_MSG(pAC,SK_DBGMOD_ADDR, SK_DBGCAT_CTRL,
+                       ("SkAddrOverride: New logical MAC Address: %02X %02X %02X %02X %02X %02X\n",
+                               pAC->Addr.Net[NetNumber].CurrentMacAddress.a[0],
+                               pAC->Addr.Net[NetNumber].CurrentMacAddress.a[1],
+                               pAC->Addr.Net[NetNumber].CurrentMacAddress.a[2],
+                               pAC->Addr.Net[NetNumber].CurrentMacAddress.a[3],
+                               pAC->Addr.Net[NetNumber].CurrentMacAddress.a[4],
+                               pAC->Addr.Net[NetNumber].CurrentMacAddress.a[5]))
+#endif /* DEBUG */
+
+       /* Write address to first exact match entry of active port. */
+               (void) SkAddrMcUpdate(pAC, IoC, PortNumber);
+       }
+
+       return (SK_ADDR_SUCCESS);
+
+}      /* SkAddrOverride */
+
+
+/******************************************************************************
+ *
+ *     SkAddrPromiscuousChange - set promiscuous mode for given port
+ *
+ * Description:
+ *     This routine manages promiscuous mode:
+ *     - none
+ *     - all LLC frames
+ *     - all MC frames
+ *
+ *     It calls either SkAddrXmacPromiscuousChange or
+ *     SkAddrGmacPromiscuousChange, according to the adapter in use.
+ *     The real work is done there.
+ *
+ * Context:
+ *     runtime, pageable
+ *     may be called after SK_INIT_IO
+ *
+ * Returns:
+ *     SK_ADDR_SUCCESS
+ *     SK_ADDR_ILLEGAL_PORT
+ */
+int    SkAddrPromiscuousChange(
+SK_AC  *pAC,                   /* adapter context */
+SK_IOC IoC,                    /* I/O context */
+SK_U32 PortNumber,             /* port whose promiscuous mode changes */
+int            NewPromMode)    /* new promiscuous mode */
+{
+       int ReturnCode;
+
+       if (PortNumber >= (SK_U32) pAC->GIni.GIMacsFound) {
+               return (SK_ADDR_ILLEGAL_PORT);
+       }
+
+       if (pAC->GIni.GIChipId == CHIP_ID_GENESIS) {
+               ReturnCode = SkAddrXmacPromiscuousChange(pAC, IoC, PortNumber, NewPromMode);
+       }
+       else {
+               ReturnCode = SkAddrGmacPromiscuousChange(pAC, IoC, PortNumber, NewPromMode);
+       }
+
+       return (ReturnCode);
+
+}      /* SkAddrPromiscuousChange */
+
+
+/******************************************************************************
+ *
+ *     SkAddrXmacPromiscuousChange - set promiscuous mode for given port
+ *
+ * Description:
+ *     This routine manages promiscuous mode:
+ *     - none
+ *     - all LLC frames
+ *     - all MC frames
+ *
+ * Context:
+ *     runtime, pageable
+ *     may be called after SK_INIT_IO
+ *
+ * Returns:
+ *     SK_ADDR_SUCCESS
+ *     SK_ADDR_ILLEGAL_PORT
+ */
+int    SkAddrXmacPromiscuousChange(
+SK_AC  *pAC,                   /* adapter context */
+SK_IOC IoC,                    /* I/O context */
+SK_U32 PortNumber,             /* port whose promiscuous mode changes */
+int            NewPromMode)    /* new promiscuous mode */
+{
+       int                     i;
+       SK_BOOL         InexactModeBit;
+       SK_U8           Inexact;
+       SK_U8           HwInexact;
+       SK_FILTER64     HwInexactFilter;
+       SK_U16          LoMode;         /* Lower 16 bits of XMAC Mode Register. */
+       int                     CurPromMode = SK_PROM_MODE_NONE;
+
+       /* Read CurPromMode from Hardware. */
+       XM_IN16(IoC, PortNumber, XM_MODE, &LoMode);
+
+       if ((LoMode & XM_MD_ENA_PROM) != 0) {
+               /* Promiscuous mode! */
+               CurPromMode |= SK_PROM_MODE_LLC;
+       }
+
+       for (Inexact = 0xFF, i = 0; i < 8; i++) {
+               Inexact &= pAC->Addr.Port[PortNumber].InexactFilter.Bytes[i];
+       }
+       if (Inexact == 0xFF) {
+               CurPromMode |= (pAC->Addr.Port[PortNumber].PromMode & SK_PROM_MODE_ALL_MC);
+       }
+       else {
+               /* Get InexactModeBit (bit XM_MD_ENA_HASH in mode register) */
+               XM_IN16(IoC, PortNumber, XM_MODE, &LoMode);
+
+               InexactModeBit = (LoMode & XM_MD_ENA_HASH) != 0;
+
+               /* Read 64-bit hash register from XMAC */
+               XM_INHASH(IoC, PortNumber, XM_HSM, &HwInexactFilter.Bytes[0]);
+
+               for (HwInexact = 0xFF, i = 0; i < 8; i++) {
+                       HwInexact &= HwInexactFilter.Bytes[i];
+               }
+
+               if (InexactModeBit && (HwInexact == 0xFF)) {
+                       CurPromMode |= SK_PROM_MODE_ALL_MC;
+               }
+       }
+
+       pAC->Addr.Port[PortNumber].PromMode = NewPromMode;
+
+       if (NewPromMode == CurPromMode) {
+               return (SK_ADDR_SUCCESS);
+       }
+
+       if ((NewPromMode & SK_PROM_MODE_ALL_MC) &&
+               !(CurPromMode & SK_PROM_MODE_ALL_MC)) { /* All MC. */
+
+               /* Set all bits in 64-bit hash register. */
+               XM_OUTHASH(IoC, PortNumber, XM_HSM, &OnesHash);
+
+               /* Enable Hashing */
+               SkMacHashing(pAC, IoC, PortNumber, SK_TRUE);
+       }
+       else if ((CurPromMode & SK_PROM_MODE_ALL_MC) &&
+               !(NewPromMode & SK_PROM_MODE_ALL_MC)) { /* Norm MC. */
+               for (Inexact = 0, i = 0; i < 8; i++) {
+                       Inexact |= pAC->Addr.Port[PortNumber].InexactFilter.Bytes[i];
+               }
+               if (Inexact == 0) {
+                       /* Disable Hashing */
+                       SkMacHashing(pAC, IoC, PortNumber, SK_FALSE);
+               }
+               else {
+                       /* Set 64-bit hash register to InexactFilter. */
+                       XM_OUTHASH(IoC, PortNumber, XM_HSM,
+                               &pAC->Addr.Port[PortNumber].InexactFilter.Bytes[0]);
+
+                       /* Enable Hashing */
+                       SkMacHashing(pAC, IoC, PortNumber, SK_TRUE);
+               }
+       }
+
+       if ((NewPromMode & SK_PROM_MODE_LLC) &&
+               !(CurPromMode & SK_PROM_MODE_LLC)) {    /* Prom. LLC */
+               /* Set the MAC in Promiscuous Mode */
+               SkMacPromiscMode(pAC, IoC, PortNumber, SK_TRUE);
+       }
+       else if ((CurPromMode & SK_PROM_MODE_LLC) &&
+               !(NewPromMode & SK_PROM_MODE_LLC)) {    /* Norm. LLC. */
+               /* Clear Promiscuous Mode */
+               SkMacPromiscMode(pAC, IoC, PortNumber, SK_FALSE);
+       }
+
+       return (SK_ADDR_SUCCESS);
+
+}      /* SkAddrXmacPromiscuousChange */
+
+
+/******************************************************************************
+ *
+ *     SkAddrGmacPromiscuousChange - set promiscuous mode for given port
+ *
+ * Description:
+ *     This routine manages promiscuous mode:
+ *     - none
+ *     - all LLC frames
+ *     - all MC frames
+ *
+ * Context:
+ *     runtime, pageable
+ *     may be called after SK_INIT_IO
+ *
+ * Returns:
+ *     SK_ADDR_SUCCESS
+ *     SK_ADDR_ILLEGAL_PORT
+ */
+int    SkAddrGmacPromiscuousChange(
+SK_AC  *pAC,                   /* adapter context */
+SK_IOC IoC,                    /* I/O context */
+SK_U32 PortNumber,             /* port whose promiscuous mode changes */
+int            NewPromMode)    /* new promiscuous mode */
+{
+       SK_U16          ReceiveControl; /* GMAC Receive Control Register */
+       int             CurPromMode = SK_PROM_MODE_NONE;
+
+       /* Read CurPromMode from Hardware. */
+       GM_IN16(IoC, PortNumber, GM_RX_CTRL, &ReceiveControl);
+
+       if ((ReceiveControl & (GM_RXCR_UCF_ENA | GM_RXCR_MCF_ENA)) == 0) {
+               /* Promiscuous mode! */
+               CurPromMode |= SK_PROM_MODE_LLC;
+       }
+
+       if ((ReceiveControl & GM_RXCR_MCF_ENA) == 0) {
+               /* All Multicast mode! */
+               CurPromMode |= (pAC->Addr.Port[PortNumber].PromMode & SK_PROM_MODE_ALL_MC);
+       }
+
+       pAC->Addr.Port[PortNumber].PromMode = NewPromMode;
+
+       if (NewPromMode == CurPromMode) {
+               return (SK_ADDR_SUCCESS);
+       }
+
+       if ((NewPromMode & SK_PROM_MODE_ALL_MC) &&
+               !(CurPromMode & SK_PROM_MODE_ALL_MC)) { /* All MC */
+
+               /* Set all bits in 64-bit hash register. */
+               GM_OUTHASH(IoC, PortNumber, GM_MC_ADDR_H1, &OnesHash);
+
+               /* Enable Hashing */
+               SkMacHashing(pAC, IoC, PortNumber, SK_TRUE);
+       }
+
+       if ((CurPromMode & SK_PROM_MODE_ALL_MC) &&
+               !(NewPromMode & SK_PROM_MODE_ALL_MC)) { /* Norm. MC */
+
+               /* Set 64-bit hash register to InexactFilter. */
+               GM_OUTHASH(IoC, PortNumber, GM_MC_ADDR_H1,
+                       &pAC->Addr.Port[PortNumber].InexactFilter.Bytes[0]);
+
+               /* Enable Hashing. */
+               SkMacHashing(pAC, IoC, PortNumber, SK_TRUE);
+       }
+
+       if ((NewPromMode & SK_PROM_MODE_LLC) &&
+               !(CurPromMode & SK_PROM_MODE_LLC)) {    /* Prom. LLC */
+
+               /* Set the MAC to Promiscuous Mode. */
+               SkMacPromiscMode(pAC, IoC, PortNumber, SK_TRUE);
+       }
+       else if ((CurPromMode & SK_PROM_MODE_LLC) &&
+               !(NewPromMode & SK_PROM_MODE_LLC)) {    /* Norm. LLC */
+
+               /* Clear Promiscuous Mode. */
+               SkMacPromiscMode(pAC, IoC, PortNumber, SK_FALSE);
+       }
+
+       return (SK_ADDR_SUCCESS);
+
+}      /* SkAddrGmacPromiscuousChange */
+
+
+/******************************************************************************
+ *
+ *     SkAddrSwap - swap address info
+ *
+ * Description:
+ *     This routine swaps address info of two ports.
+ *
+ * Context:
+ *     runtime, pageable
+ *     may be called after SK_INIT_IO
+ *
+ * Returns:
+ *     SK_ADDR_SUCCESS
+ *     SK_ADDR_ILLEGAL_PORT
+ */
+int    SkAddrSwap(
+SK_AC  *pAC,                   /* adapter context */
+SK_IOC IoC,                    /* I/O context */
+SK_U32 FromPortNumber,         /* Port1 Index */
+SK_U32 ToPortNumber)           /* Port2 Index */
+{
+       int                     i;
+       SK_U8           Byte;
+       SK_MAC_ADDR     MacAddr;
+       SK_U32          DWord;
+
+       if (FromPortNumber >= (SK_U32) pAC->GIni.GIMacsFound) {
+               return (SK_ADDR_ILLEGAL_PORT);
+       }
+
+       if (ToPortNumber >= (SK_U32) pAC->GIni.GIMacsFound) {
+               return (SK_ADDR_ILLEGAL_PORT);
+       }
+
+       if (pAC->Rlmt.Port[FromPortNumber].Net != pAC->Rlmt.Port[ToPortNumber].Net) {
+               return (SK_ADDR_ILLEGAL_PORT);
+       }
+
+       /*
+        * Swap:
+        * - Exact Match Entries (GEnesis and Yukon)
+        *   Yukon uses first entry for the logical MAC
+        *   address (stored in the second GMAC register).
+        * - FirstExactMatchRlmt (GEnesis only)
+        * - NextExactMatchRlmt (GEnesis only)
+        * - FirstExactMatchDrv (GEnesis only)
+        * - NextExactMatchDrv (GEnesis only)
+        * - 64-bit filter (InexactFilter)
+        * - Promiscuous Mode
+        * of ports.
+        */
+
+       for (i = 0; i < SK_ADDR_EXACT_MATCHES; i++) {
+               MacAddr = pAC->Addr.Port[FromPortNumber].Exact[i];
+               pAC->Addr.Port[FromPortNumber].Exact[i] =
+                       pAC->Addr.Port[ToPortNumber].Exact[i];
+               pAC->Addr.Port[ToPortNumber].Exact[i] = MacAddr;
+       }
+
+       for (i = 0; i < 8; i++) {
+               Byte = pAC->Addr.Port[FromPortNumber].InexactFilter.Bytes[i];
+               pAC->Addr.Port[FromPortNumber].InexactFilter.Bytes[i] =
+                       pAC->Addr.Port[ToPortNumber].InexactFilter.Bytes[i];
+               pAC->Addr.Port[ToPortNumber].InexactFilter.Bytes[i] = Byte;
+       }
+
+       i = pAC->Addr.Port[FromPortNumber].PromMode;
+       pAC->Addr.Port[FromPortNumber].PromMode = pAC->Addr.Port[ToPortNumber].PromMode;
+       pAC->Addr.Port[ToPortNumber].PromMode = i;
+
+       if (pAC->GIni.GIChipId == CHIP_ID_GENESIS) {
+               DWord = pAC->Addr.Port[FromPortNumber].FirstExactMatchRlmt;
+               pAC->Addr.Port[FromPortNumber].FirstExactMatchRlmt =
+                       pAC->Addr.Port[ToPortNumber].FirstExactMatchRlmt;
+               pAC->Addr.Port[ToPortNumber].FirstExactMatchRlmt = DWord;
+
+               DWord = pAC->Addr.Port[FromPortNumber].NextExactMatchRlmt;
+               pAC->Addr.Port[FromPortNumber].NextExactMatchRlmt =
+                       pAC->Addr.Port[ToPortNumber].NextExactMatchRlmt;
+               pAC->Addr.Port[ToPortNumber].NextExactMatchRlmt = DWord;
+
+               DWord = pAC->Addr.Port[FromPortNumber].FirstExactMatchDrv;
+               pAC->Addr.Port[FromPortNumber].FirstExactMatchDrv =
+                       pAC->Addr.Port[ToPortNumber].FirstExactMatchDrv;
+               pAC->Addr.Port[ToPortNumber].FirstExactMatchDrv = DWord;
+
+               DWord = pAC->Addr.Port[FromPortNumber].NextExactMatchDrv;
+               pAC->Addr.Port[FromPortNumber].NextExactMatchDrv =
+                       pAC->Addr.Port[ToPortNumber].NextExactMatchDrv;
+               pAC->Addr.Port[ToPortNumber].NextExactMatchDrv = DWord;
+       }
+
+       /* CAUTION: Solution works if only ports of one adapter are in use. */
+       for (i = 0; (SK_U32) i < pAC->Rlmt.Net[pAC->Rlmt.Port[ToPortNumber].
+               Net->NetNumber].NumPorts; i++) {
+               if (pAC->Rlmt.Net[pAC->Rlmt.Port[ToPortNumber].Net->NetNumber].
+                       Port[i]->PortNumber == ToPortNumber) {
+                       pAC->Addr.Net[pAC->Rlmt.Port[ToPortNumber].Net->NetNumber].
+                               ActivePort = i;
+                       /* 20001207 RA: Was "ToPortNumber;". */
+               }
+       }
+
+       (void) SkAddrMcUpdate(pAC, IoC, FromPortNumber);
+       (void) SkAddrMcUpdate(pAC, IoC, ToPortNumber);
+
+       return (SK_ADDR_SUCCESS);
+
+}      /* SkAddrSwap */
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
diff -Naur u-boot-2009.03_orig/drivers/net/sk98lin/skcsum.c u-boot-2009.03/drivers/net/sk98lin/skcsum.c
--- u-boot-2009.03_orig/drivers/net/sk98lin/skcsum.c    2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/drivers/net/sk98lin/skcsum.c 2009-03-31 14:54:29.315632000 -0700
@@ -1,925 +1,928 @@
-/******************************************************************************
- *
- * Name:       skcsum.c
- * Project:    GEnesis, PCI Gigabit Ethernet Adapter
- * Version:    $Revision: 1.10 $
- * Date:       $Date: 2002/04/11 10:02:04 $
- * Purpose:    Store/verify Internet checksum in send/receive packets.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- *     (C)Copyright 1998-2001 SysKonnect GmbH.
- *
- *     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.
- *
- *     The information in this file is provided "AS IS" without warranty.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * History:
- *
- *     $Log: skcsum.c,v $
- *     Revision 1.10  2002/04/11 10:02:04  rwahl
- *     Fix in SkCsGetSendInfo():
- *     - function did not return ProtocolFlags in every case.
- *     - pseudo header csum calculated wrong for big endian.
- *
- *     Revision 1.9  2001/06/13 07:42:08  gklug
- *     fix: NetNumber was wrong in CLEAR_STAT event
- *     add: check for good NetNumber in Clear STAT
- *
- *     Revision 1.8  2001/02/06 11:15:36  rassmann
- *     Supporting two nets on dual-port adapters.
- *
- *     Revision 1.7  2000/06/29 13:17:05  rassmann
- *     Corrected reception of a packet with UDP checksum == 0 (which means there
- *     is no UDP checksum).
- *
- *     Revision 1.6  2000/02/21 12:35:10  cgoos
- *     Fixed license header comment.
- *
- *     Revision 1.5  2000/02/21 11:05:19  cgoos
- *     Merged changes back to common source.
- *     Fixed rx path for BIG ENDIAN architecture.
- *
- *     Revision 1.1  1999/07/26 15:28:12  mkarl
- *     added return SKCS_STATUS_IP_CSUM_ERROR_UDP and
- *     SKCS_STATUS_IP_CSUM_ERROR_TCP to pass the NidsTester
- *     changed from common source to windows specific source
- *     therefore restarting with v1.0
- *
- *     Revision 1.3  1999/05/10 08:39:33  mkarl
- *     prevent overflows in SKCS_HTON16
- *     fixed a bug in pseudo header checksum calculation
- *     added some comments
- *
- *     Revision 1.2  1998/10/22 11:53:28  swolf
- *     Now using SK_DBG_MSG.
- *
- *     Revision 1.1  1998/09/01 15:35:41  swolf
- *     initial revision
- *
- *     13-May-1998 sw  Created.
- *
- ******************************************************************************/
-
-#include <config.h>
-
-#ifdef SK_USE_CSUM     /* Check if CSUM is to be used. */
-
-#ifndef lint
-static const char SysKonnectFileId[] = "@(#)"
-       "$Id: skcsum.c,v 1.10 2002/04/11 10:02:04 rwahl Exp $"
-       " (C) SysKonnect.";
-#endif /* !lint */
-
-/******************************************************************************
- *
- * Description:
- *
- * This is the "GEnesis" common module "CSUM".
- *
- * This module contains the code necessary to calculate, store, and verify the
- * Internet Checksum of IP, TCP, and UDP frames.
- *
- * "GEnesis" is an abbreviation of "Gigabit Ethernet Network System in Silicon"
- * and is the code name of this SysKonnect project.
- *
- * Compilation Options:
- *
- *     SK_USE_CSUM - Define if CSUM is to be used. Otherwise, CSUM will be an
- *     empty module.
- *
- *     SKCS_OVERWRITE_PROTO - Define to overwrite the default protocol id
- *     definitions. In this case, all SKCS_PROTO_xxx definitions must be made
- *     external.
- *
- *     SKCS_OVERWRITE_STATUS - Define to overwrite the default return status
- *     definitions. In this case, all SKCS_STATUS_xxx definitions must be made
- *     external.
- *
- * Include File Hierarchy:
- *
- *     "h/skdrv1st.h"
- *     "h/skcsum.h"
- *      "h/sktypes.h"
- *      "h/skqueue.h"
- *     "h/skdrv2nd.h"
- *
- ******************************************************************************/
-
-#include "h/skdrv1st.h"
-#include "h/skcsum.h"
-#include "h/skdrv2nd.h"
-
-/* defines ********************************************************************/
-
-/* The size of an Ethernet MAC header. */
-#define SKCS_ETHERNET_MAC_HEADER_SIZE                  (6+6+2)
-
-/* The size of the used topology's MAC header. */
-#define        SKCS_MAC_HEADER_SIZE    SKCS_ETHERNET_MAC_HEADER_SIZE
-
-/* The size of the IP header without any option fields. */
-#define SKCS_IP_HEADER_SIZE                                            20
-
-/*
- * Field offsets within the IP header.
- */
-
-/* "Internet Header Version" and "Length". */
-#define SKCS_OFS_IP_HEADER_VERSION_AND_LENGTH  0
-
-/* "Total Length". */
-#define SKCS_OFS_IP_TOTAL_LENGTH                               2
-
-/* "Flags" "Fragment Offset". */
-#define SKCS_OFS_IP_FLAGS_AND_FRAGMENT_OFFSET  6
-
-/* "Next Level Protocol" identifier. */
-#define SKCS_OFS_IP_NEXT_LEVEL_PROTOCOL                        9
-
-/* Source IP address. */
-#define SKCS_OFS_IP_SOURCE_ADDRESS                             12
-
-/* Destination IP address. */
-#define SKCS_OFS_IP_DESTINATION_ADDRESS                        16
-
-
-/*
- * Field offsets within the UDP header.
- */
-
-/* UDP checksum. */
-#define SKCS_OFS_UDP_CHECKSUM                                  6
-
-/* IP "Next Level Protocol" identifiers (see RFC 790). */
-#define SKCS_PROTO_ID_TCP              6       /* Transport Control Protocol */
-#define SKCS_PROTO_ID_UDP              17      /* User Datagram Protocol */
-
-/* IP "Don't Fragment" bit. */
-#define SKCS_IP_DONT_FRAGMENT  SKCS_HTON16(0x4000)
-
-/* Add a byte offset to a pointer. */
-#define SKCS_IDX(pPtr, Ofs)    ((void *) ((char *) (pPtr) + (Ofs)))
-
-/*
- * Macros that convert host to network representation and vice versa, i.e.
- * little/big endian conversion on little endian machines only.
- */
-#ifdef SK_LITTLE_ENDIAN
-#define SKCS_HTON16(Val16)     (((unsigned) (Val16) >> 8) | (((Val16) & 0xFF) << 8))
-#endif /* SK_LITTLE_ENDIAN */
-#ifdef SK_BIG_ENDIAN
-#define SKCS_HTON16(Val16)     (Val16)
-#endif /* SK_BIG_ENDIAN */
-#define SKCS_NTOH16(Val16)     SKCS_HTON16(Val16)
-
-/* typedefs *******************************************************************/
-
-/* function prototypes ********************************************************/
-
-/******************************************************************************
- *
- *     SkCsGetSendInfo - get checksum information for a send packet
- *
- * Description:
- *     Get all checksum information necessary to send a TCP or UDP packet. The
- *     function checks the IP header passed to it. If the high-level protocol
- *     is either TCP or UDP the pseudo header checksum is calculated and
- *     returned.
- *
- *     The function returns the total length of the IP header (including any
- *     IP option fields), which is the same as the start offset of the IP data
- *     which in turn is the start offset of the TCP or UDP header.
- *
- *     The function also returns the TCP or UDP pseudo header checksum, which
- *     should be used as the start value for the hardware checksum calculation.
- *     (Note that any actual pseudo header checksum can never calculate to
- *     zero.)
- *
- * Note:
- *     There is a bug in the ASIC which may lead to wrong checksums.
- *
- * Arguments:
- *     pAc - A pointer to the adapter context struct.
- *
- *     pIpHeader - Pointer to IP header. Must be at least the IP header *not*
- *     including any option fields, i.e. at least 20 bytes.
- *
- *     Note: This pointer will be used to address 8-, 16-, and 32-bit
- *     variables with the respective alignment offsets relative to the pointer.
- *     Thus, the pointer should point to a 32-bit aligned address. If the
- *     target system cannot address 32-bit variables on non 32-bit aligned
- *     addresses, then the pointer *must* point to a 32-bit aligned address.
- *
- *     pPacketInfo - A pointer to the packet information structure for this
- *     packet. Before calling this SkCsGetSendInfo(), the following field must
- *     be initialized:
- *
- *             ProtocolFlags - Initialize with any combination of
- *             SKCS_PROTO_XXX bit flags. SkCsGetSendInfo() will only work on
- *             the protocols specified here. Any protocol(s) not specified
- *             here will be ignored.
- *
- *             Note: Only one checksum can be calculated in hardware. Thus, if
- *             SKCS_PROTO_IP is specified in the 'ProtocolFlags',
- *             SkCsGetSendInfo() must calculate the IP header checksum in
- *             software. It might be a better idea to have the calling
- *             protocol stack calculate the IP header checksum.
- *
- * Returns: N/A
- *     On return, the following fields in 'pPacketInfo' may or may not have
- *     been filled with information, depending on the protocol(s) found in the
- *     packet:
- *
- *     ProtocolFlags - Returns the SKCS_PROTO_XXX bit flags of the protocol(s)
- *     that were both requested by the caller and actually found in the packet.
- *     Protocol(s) not specified by the caller and/or not found in the packet
- *     will have their respective SKCS_PROTO_XXX bit flags reset.
- *
- *     Note: For IP fragments, TCP and UDP packet information is ignored.
- *
- *     IpHeaderLength - The total length in bytes of the complete IP header
- *     including any option fields is returned here. This is the start offset
- *     of the IP data, i.e. the TCP or UDP header if present.
- *
- *     IpHeaderChecksum - If IP has been specified in the 'ProtocolFlags', the
- *     16-bit Internet Checksum of the IP header is returned here. This value
- *     is to be stored into the packet's 'IP Header Checksum' field.
- *
- *     PseudoHeaderChecksum - If this is a TCP or UDP packet and if TCP or UDP
- *     has been specified in the 'ProtocolFlags', the 16-bit Internet Checksum
- *     of the TCP or UDP pseudo header is returned here.
- */
-#if 0
-void SkCsGetSendInfo(
-SK_AC                          *pAc,                   /* Adapter context struct. */
-void                           *pIpHeader,             /* IP header. */
-SKCS_PACKET_INFO       *pPacketInfo,   /* Packet information struct. */
-int                                    NetNumber)              /* Net number */
-{
-       /* Internet Header Version found in IP header. */
-       unsigned InternetHeaderVersion;
-
-       /* Length of the IP header as found in IP header. */
-       unsigned IpHeaderLength;
-
-       /* Bit field specifiying the desired/found protocols. */
-       unsigned ProtocolFlags;
-
-       /* Next level protocol identifier found in IP header. */
-       unsigned NextLevelProtocol;
-
-       /* Length of IP data portion. */
-       unsigned IpDataLength;
-
-       /* TCP/UDP pseudo header checksum. */
-       unsigned long PseudoHeaderChecksum;
-
-       /* Pointer to next level protocol statistics structure. */
-       SKCS_PROTO_STATS *NextLevelProtoStats;
-
-       /* Temporary variable. */
-       unsigned Tmp;
-
-       Tmp = *(SK_U8 *)
-               SKCS_IDX(pIpHeader, SKCS_OFS_IP_HEADER_VERSION_AND_LENGTH);
-
-       /* Get the Internet Header Version (IHV). */
-       /* Note: The IHV is stored in the upper four bits. */
-
-       InternetHeaderVersion = Tmp >> 4;
-
-       /* Check the Internet Header Version. */
-       /* Note: We currently only support IP version 4. */
-
-       if (InternetHeaderVersion != 4) {       /* IPv4? */
-               SK_DBG_MSG(pAc, SK_DBGMOD_CSUM, SK_DBGCAT_ERR | SK_DBGCAT_TX,
-                       ("Tx: Unknown Internet Header Version %u.\n",
-                       InternetHeaderVersion));
-               pPacketInfo->ProtocolFlags = 0;
-               pAc->Csum.ProtoStats[NetNumber][SKCS_PROTO_STATS_IP].TxUnableCts++;
-               return;
-       }
-
-       /* Get the IP header length (IHL). */
-       /*
-        * Note: The IHL is stored in the lower four bits as the number of
-        * 4-byte words.
-        */
-
-       IpHeaderLength = (Tmp & 0xf) * 4;
-       pPacketInfo->IpHeaderLength = IpHeaderLength;
-
-       /* Check the IP header length. */
-
-       /* 04-Aug-1998 sw - Really check the IHL? Necessary? */
-
-       if (IpHeaderLength < 5*4) {
-               SK_DBG_MSG(pAc, SK_DBGMOD_CSUM, SK_DBGCAT_ERR | SK_DBGCAT_TX,
-                       ("Tx: Invalid IP Header Length %u.\n", IpHeaderLength));
-               pPacketInfo->ProtocolFlags = 0;
-               pAc->Csum.ProtoStats[NetNumber][SKCS_PROTO_STATS_IP].TxUnableCts++;
-               return;
-       }
-
-       /* This is an IPv4 frame with a header of valid length. */
-
-       pAc->Csum.ProtoStats[NetNumber][SKCS_PROTO_STATS_IP].TxOkCts++;
-
-       /* Check if we should calculate the IP header checksum. */
-
-       ProtocolFlags = pPacketInfo->ProtocolFlags;
-
-       if (ProtocolFlags & SKCS_PROTO_IP) {
-               pPacketInfo->IpHeaderChecksum =
-                       SkCsCalculateChecksum(pIpHeader, IpHeaderLength);
-       }
-
-       /* Get the next level protocol identifier. */
-
-       NextLevelProtocol =
-               *(SK_U8 *) SKCS_IDX(pIpHeader, SKCS_OFS_IP_NEXT_LEVEL_PROTOCOL);
-
-       /*
-        * Check if this is a TCP or UDP frame and if we should calculate the
-        * TCP/UDP pseudo header checksum.
-        *
-        * Also clear all protocol bit flags of protocols not present in the
-        * frame.
-        */
-
-       if ((ProtocolFlags & SKCS_PROTO_TCP) != 0 &&
-               NextLevelProtocol == SKCS_PROTO_ID_TCP) {
-               /* TCP/IP frame. */
-               ProtocolFlags &= SKCS_PROTO_TCP | SKCS_PROTO_IP;
-               NextLevelProtoStats =
-                       &pAc->Csum.ProtoStats[NetNumber][SKCS_PROTO_STATS_TCP];
-       }
-       else if ((ProtocolFlags & SKCS_PROTO_UDP) != 0 &&
-               NextLevelProtocol == SKCS_PROTO_ID_UDP) {
-               /* UDP/IP frame. */
-               ProtocolFlags &= SKCS_PROTO_UDP | SKCS_PROTO_IP;
-               NextLevelProtoStats =
-                       &pAc->Csum.ProtoStats[NetNumber][SKCS_PROTO_STATS_UDP];
-       }
-       else {
-               /*
-                * Either not a TCP or UDP frame and/or TCP/UDP processing not
-                * specified.
-                */
-               pPacketInfo->ProtocolFlags = ProtocolFlags & SKCS_PROTO_IP;
-               return;
-       }
-
-       /* Check if this is an IP fragment. */
-
-       /*
-        * Note: An IP fragment has a non-zero "Fragment Offset" field and/or
-        * the "More Fragments" bit set. Thus, if both the "Fragment Offset"
-        * and the "More Fragments" are zero, it is *not* a fragment. We can
-        * easily check both at the same time since they are in the same 16-bit
-        * word.
-        */
-
-       if ((*(SK_U16 *)
-               SKCS_IDX(pIpHeader, SKCS_OFS_IP_FLAGS_AND_FRAGMENT_OFFSET) &
-               ~SKCS_IP_DONT_FRAGMENT) != 0) {
-               /* IP fragment; ignore all other protocols. */
-               pPacketInfo->ProtocolFlags = ProtocolFlags & SKCS_PROTO_IP;
-               NextLevelProtoStats->TxUnableCts++;
-               return;
-       }
-
-       /*
-        * Calculate the TCP/UDP pseudo header checksum.
-        */
-
-       /* Get total length of IP header and data. */
-
-       IpDataLength =
-               *(SK_U16 *) SKCS_IDX(pIpHeader, SKCS_OFS_IP_TOTAL_LENGTH);
-
-       /* Get length of IP data portion. */
-
-       IpDataLength = SKCS_NTOH16(IpDataLength) - IpHeaderLength;
-
-       /* Calculate the sum of all pseudo header fields (16-bit). */
-
-       PseudoHeaderChecksum =
-               (unsigned long) *(SK_U16 *) SKCS_IDX(pIpHeader,
-                       SKCS_OFS_IP_SOURCE_ADDRESS + 0) +
-               (unsigned long) *(SK_U16 *) SKCS_IDX(pIpHeader,
-                       SKCS_OFS_IP_SOURCE_ADDRESS + 2) +
-               (unsigned long) *(SK_U16 *) SKCS_IDX(pIpHeader,
-                       SKCS_OFS_IP_DESTINATION_ADDRESS + 0) +
-               (unsigned long) *(SK_U16 *) SKCS_IDX(pIpHeader,
-                       SKCS_OFS_IP_DESTINATION_ADDRESS + 2) +
-               (unsigned long) SKCS_HTON16(NextLevelProtocol) +
-               (unsigned long) SKCS_HTON16(IpDataLength);
-
-       /* Add-in any carries. */
-
-       SKCS_OC_ADD(PseudoHeaderChecksum, PseudoHeaderChecksum, 0);
-
-       /* Add-in any new carry. */
-
-       SKCS_OC_ADD(pPacketInfo->PseudoHeaderChecksum, PseudoHeaderChecksum, 0);
-
-       pPacketInfo->ProtocolFlags = ProtocolFlags;
-       NextLevelProtoStats->TxOkCts++; /* Success. */
-}      /* SkCsGetSendInfo */
-
-
-/******************************************************************************
- *
- *     SkCsGetReceiveInfo - verify checksum information for a received packet
- *
- * Description:
- *     Verify a received frame's checksum. The function returns a status code
- *     reflecting the result of the verification.
- *
- * Note:
- *     Before calling this function you have to verify that the frame is
- *     not padded and Checksum1 and Checksum2 are bigger than 1.
- *
- * Arguments:
- *     pAc - Pointer to adapter context struct.
- *
- *     pIpHeader - Pointer to IP header. Must be at least the length in bytes
- *     of the received IP header including any option fields. For UDP packets,
- *     8 additional bytes are needed to access the UDP checksum.
- *
- *     Note: The actual length of the IP header is stored in the lower four
- *     bits of the first octet of the IP header as the number of 4-byte words,
- *     so it must be multiplied by four to get the length in bytes. Thus, the
- *     maximum IP header length is 15 * 4 = 60 bytes.
- *
- *     Checksum1 - The first 16-bit Internet Checksum calculated by the
- *     hardware starting at the offset returned by SkCsSetReceiveFlags().
- *
- *     Checksum2 - The second 16-bit Internet Checksum calculated by the
- *     hardware starting at the offset returned by SkCsSetReceiveFlags().
- *
- * Returns:
- *     SKCS_STATUS_UNKNOWN_IP_VERSION - Not an IP v4 frame.
- *     SKCS_STATUS_IP_CSUM_ERROR - IP checksum error.
- *     SKCS_STATUS_IP_CSUM_ERROR_TCP - IP checksum error in TCP frame.
- *     SKCS_STATUS_IP_CSUM_ERROR_UDP - IP checksum error in UDP frame
- *     SKCS_STATUS_IP_FRAGMENT - IP fragment (IP checksum ok).
- *     SKCS_STATUS_IP_CSUM_OK - IP checksum ok (not a TCP or UDP frame).
- *     SKCS_STATUS_TCP_CSUM_ERROR - TCP checksum error (IP checksum ok).
- *     SKCS_STATUS_UDP_CSUM_ERROR - UDP checksum error (IP checksum ok).
- *     SKCS_STATUS_TCP_CSUM_OK - IP and TCP checksum ok.
- *     SKCS_STATUS_UDP_CSUM_OK - IP and UDP checksum ok.
- *     SKCS_STATUS_IP_CSUM_OK_NO_UDP - IP checksum OK and no UDP checksum.
- *
- *     Note: If SKCS_OVERWRITE_STATUS is defined, the SKCS_STATUS_XXX values
- *     returned here can be defined in some header file by the module using CSUM.
- *     In this way, the calling module can assign return values for its own needs,
- *     e.g. by assigning bit flags to the individual protocols.
- */
-SKCS_STATUS SkCsGetReceiveInfo(
-SK_AC          *pAc,           /* Adapter context struct. */
-void           *pIpHeader,     /* IP header. */
-unsigned       Checksum1,      /* Hardware checksum 1. */
-unsigned       Checksum2,      /* Hardware checksum 2. */
-int                    NetNumber)      /* Net number */
-{
-       /* Internet Header Version found in IP header. */
-       unsigned InternetHeaderVersion;
-
-       /* Length of the IP header as found in IP header. */
-       unsigned IpHeaderLength;
-
-       /* Length of IP data portion. */
-       unsigned IpDataLength;
-
-       /* IP header checksum. */
-       unsigned IpHeaderChecksum;
-
-       /* IP header options checksum, if any. */
-       unsigned IpOptionsChecksum;
-
-       /* IP data checksum, i.e. TCP/UDP checksum. */
-       unsigned IpDataChecksum;
-
-       /* Next level protocol identifier found in IP header. */
-       unsigned NextLevelProtocol;
-
-       /* The checksum of the "next level protocol", i.e. TCP or UDP. */
-       unsigned long NextLevelProtocolChecksum;
-
-       /* Pointer to next level protocol statistics structure. */
-       SKCS_PROTO_STATS *NextLevelProtoStats;
-
-       /* Temporary variable. */
-       unsigned Tmp;
-
-       Tmp = *(SK_U8 *)
-               SKCS_IDX(pIpHeader, SKCS_OFS_IP_HEADER_VERSION_AND_LENGTH);
-
-       /* Get the Internet Header Version (IHV). */
-       /* Note: The IHV is stored in the upper four bits. */
-
-       InternetHeaderVersion = Tmp >> 4;
-
-       /* Check the Internet Header Version. */
-       /* Note: We currently only support IP version 4. */
-
-       if (InternetHeaderVersion != 4) {       /* IPv4? */
-               SK_DBG_MSG(pAc, SK_DBGMOD_CSUM, SK_DBGCAT_ERR | SK_DBGCAT_RX,
-                       ("Rx: Unknown Internet Header Version %u.\n",
-                       InternetHeaderVersion));
-               pAc->Csum.ProtoStats[NetNumber][SKCS_PROTO_STATS_IP].RxUnableCts++;
-               return (SKCS_STATUS_UNKNOWN_IP_VERSION);
-       }
-
-       /* Get the IP header length (IHL). */
-       /*
-        * Note: The IHL is stored in the lower four bits as the number of
-        * 4-byte words.
-        */
-
-       IpHeaderLength = (Tmp & 0xf) * 4;
-
-       /* Check the IP header length. */
-
-       /* 04-Aug-1998 sw - Really check the IHL? Necessary? */
-
-       if (IpHeaderLength < 5*4) {
-               SK_DBG_MSG(pAc, SK_DBGMOD_CSUM, SK_DBGCAT_ERR | SK_DBGCAT_RX,
-                       ("Rx: Invalid IP Header Length %u.\n", IpHeaderLength));
-               pAc->Csum.ProtoStats[NetNumber][SKCS_PROTO_STATS_IP].RxErrCts++;
-               return (SKCS_STATUS_IP_CSUM_ERROR);
-       }
-
-       /* This is an IPv4 frame with a header of valid length. */
-
-       /* Get the IP header and data checksum. */
-
-       IpDataChecksum = Checksum2;
-
-       /*
-        * The IP header checksum is calculated as follows:
-        *
-        *      IpHeaderChecksum = Checksum1 - Checksum2
-        */
-
-       SKCS_OC_SUB(IpHeaderChecksum, Checksum1, Checksum2);
-
-       /* Check if any IP header options. */
-
-       if (IpHeaderLength > SKCS_IP_HEADER_SIZE) {
-
-               /* Get the IP options checksum. */
-
-               IpOptionsChecksum = SkCsCalculateChecksum(
-                       SKCS_IDX(pIpHeader, SKCS_IP_HEADER_SIZE),
-                       IpHeaderLength - SKCS_IP_HEADER_SIZE);
-
-               /* Adjust the IP header and IP data checksums. */
-
-               SKCS_OC_ADD(IpHeaderChecksum, IpHeaderChecksum, IpOptionsChecksum);
-
-               SKCS_OC_SUB(IpDataChecksum, IpDataChecksum, IpOptionsChecksum);
-       }
-
-       /*
-        * Check if the IP header checksum is ok.
-        *
-        * NOTE: We must check the IP header checksum even if the caller just wants
-        * us to check upper-layer checksums, because we cannot do any further
-        * processing of the packet without a valid IP checksum.
-        */
-
-       /* Get the next level protocol identifier. */
-
-       NextLevelProtocol = *(SK_U8 *)
-               SKCS_IDX(pIpHeader, SKCS_OFS_IP_NEXT_LEVEL_PROTOCOL);
-
-       if (IpHeaderChecksum != 0xFFFF) {
-               pAc->Csum.ProtoStats[NetNumber][SKCS_PROTO_STATS_IP].RxErrCts++;
-               /* the NDIS tester wants to know the upper level protocol too */
-               if (NextLevelProtocol == SKCS_PROTO_ID_TCP) {
-                       return(SKCS_STATUS_IP_CSUM_ERROR_TCP);
-               }
-               else if (NextLevelProtocol == SKCS_PROTO_ID_UDP) {
-                       return(SKCS_STATUS_IP_CSUM_ERROR_UDP);
-               }
-               return (SKCS_STATUS_IP_CSUM_ERROR);
-       }
-
-       /*
-        * Check if this is a TCP or UDP frame and if we should calculate the
-        * TCP/UDP pseudo header checksum.
-        *
-        * Also clear all protocol bit flags of protocols not present in the
-        * frame.
-        */
-
-       if ((pAc->Csum.ReceiveFlags[NetNumber] & SKCS_PROTO_TCP) != 0 &&
-               NextLevelProtocol == SKCS_PROTO_ID_TCP) {
-               /* TCP/IP frame. */
-               NextLevelProtoStats =
-                       &pAc->Csum.ProtoStats[NetNumber][SKCS_PROTO_STATS_TCP];
-       }
-       else if ((pAc->Csum.ReceiveFlags[NetNumber] & SKCS_PROTO_UDP) != 0 &&
-               NextLevelProtocol == SKCS_PROTO_ID_UDP) {
-               /* UDP/IP frame. */
-               NextLevelProtoStats =
-                       &pAc->Csum.ProtoStats[NetNumber][SKCS_PROTO_STATS_UDP];
-       }
-       else {
-               /*
-                * Either not a TCP or UDP frame and/or TCP/UDP processing not
-                * specified.
-                */
-               return (SKCS_STATUS_IP_CSUM_OK);
-       }
-
-       /* Check if this is an IP fragment. */
-
-       /*
-        * Note: An IP fragment has a non-zero "Fragment Offset" field and/or
-        * the "More Fragments" bit set. Thus, if both the "Fragment Offset"
-        * and the "More Fragments" are zero, it is *not* a fragment. We can
-        * easily check both at the same time since they are in the same 16-bit
-        * word.
-        */
-
-       if ((*(SK_U16 *)
-               SKCS_IDX(pIpHeader, SKCS_OFS_IP_FLAGS_AND_FRAGMENT_OFFSET) &
-               ~SKCS_IP_DONT_FRAGMENT) != 0) {
-               /* IP fragment; ignore all other protocols. */
-               NextLevelProtoStats->RxUnableCts++;
-               return (SKCS_STATUS_IP_FRAGMENT);
-       }
-
-       /*
-        * 08-May-2000 ra
-        *
-        * From RFC 768 (UDP)
-        * If the computed checksum is zero, it is transmitted as all ones (the
-        * equivalent in one's complement arithmetic).  An all zero transmitted
-        * checksum value means that the transmitter generated no checksum (for
-        * debugging or for higher level protocols that don't care).
-        */
-
-       if (NextLevelProtocol == SKCS_PROTO_ID_UDP &&
-               *(SK_U16*)SKCS_IDX(pIpHeader, IpHeaderLength + 6) == 0x0000) {
-
-               NextLevelProtoStats->RxOkCts++;
-
-               return (SKCS_STATUS_IP_CSUM_OK_NO_UDP);
-       }
-
-       /*
-        * Calculate the TCP/UDP checksum.
-        */
-
-       /* Get total length of IP header and data. */
-
-       IpDataLength =
-               *(SK_U16 *) SKCS_IDX(pIpHeader, SKCS_OFS_IP_TOTAL_LENGTH);
-
-       /* Get length of IP data portion. */
-
-       IpDataLength = SKCS_NTOH16(IpDataLength) - IpHeaderLength;
-
-       NextLevelProtocolChecksum =
-
-               /* Calculate the pseudo header checksum. */
-
-               (unsigned long) *(SK_U16 *) SKCS_IDX(pIpHeader,
-                       SKCS_OFS_IP_SOURCE_ADDRESS + 0) +
-               (unsigned long) *(SK_U16 *) SKCS_IDX(pIpHeader,
-                       SKCS_OFS_IP_SOURCE_ADDRESS + 2) +
-               (unsigned long) *(SK_U16 *) SKCS_IDX(pIpHeader,
-                       SKCS_OFS_IP_DESTINATION_ADDRESS + 0) +
-               (unsigned long) *(SK_U16 *) SKCS_IDX(pIpHeader,
-                       SKCS_OFS_IP_DESTINATION_ADDRESS + 2) +
-               (unsigned long) SKCS_HTON16(NextLevelProtocol) +
-               (unsigned long) SKCS_HTON16(IpDataLength) +
-
-               /* Add the TCP/UDP header checksum. */
-
-               (unsigned long) IpDataChecksum;
-
-       /* Add-in any carries. */
-
-       SKCS_OC_ADD(NextLevelProtocolChecksum, NextLevelProtocolChecksum, 0);
-
-       /* Add-in any new carry. */
-
-       SKCS_OC_ADD(NextLevelProtocolChecksum, NextLevelProtocolChecksum, 0);
-
-       /* Check if the TCP/UDP checksum is ok. */
-
-       if ((unsigned) NextLevelProtocolChecksum == 0xFFFF) {
-
-               /* TCP/UDP checksum ok. */
-
-               NextLevelProtoStats->RxOkCts++;
-
-               return (NextLevelProtocol == SKCS_PROTO_ID_TCP ?
-                       SKCS_STATUS_TCP_CSUM_OK : SKCS_STATUS_UDP_CSUM_OK);
-       }
-
-       /* TCP/UDP checksum error. */
-
-       NextLevelProtoStats->RxErrCts++;
-
-       return (NextLevelProtocol == SKCS_PROTO_ID_TCP ?
-               SKCS_STATUS_TCP_CSUM_ERROR : SKCS_STATUS_UDP_CSUM_ERROR);
-}      /* SkCsGetReceiveInfo */
-#endif
-
-
-/******************************************************************************
- *
- *     SkCsSetReceiveFlags - set checksum receive flags
- *
- * Description:
- *     Use this function to set the various receive flags. According to the
- *     protocol flags set by the caller, the start offsets within received
- *     packets of the two hardware checksums are returned. These offsets must
- *     be stored in all receive descriptors.
- *
- * Arguments:
- *     pAc - Pointer to adapter context struct.
- *
- *     ReceiveFlags - Any combination of SK_PROTO_XXX flags of the protocols
- *     for which the caller wants checksum information on received frames.
- *
- *     pChecksum1Offset - The start offset of the first receive descriptor
- *     hardware checksum to be calculated for received frames is returned
- *     here.
- *
- *     pChecksum2Offset - The start offset of the second receive descriptor
- *     hardware checksum to be calculated for received frames is returned
- *     here.
- *
- * Returns: N/A
- *     Returns the two hardware checksum start offsets.
- */
-void SkCsSetReceiveFlags(
-SK_AC          *pAc,                           /* Adapter context struct. */
-unsigned       ReceiveFlags,           /* New receive flags. */
-unsigned       *pChecksum1Offset,      /* Offset for hardware checksum 1. */
-unsigned       *pChecksum2Offset,      /* Offset for hardware checksum 2. */
-int                    NetNumber)
-{
-       /* Save the receive flags. */
-
-       pAc->Csum.ReceiveFlags[NetNumber] = ReceiveFlags;
-
-       /* First checksum start offset is the IP header. */
-       *pChecksum1Offset = SKCS_MAC_HEADER_SIZE;
-
-       /*
-        * Second checksum start offset is the IP data. Note that this may vary
-        * if there are any IP header options in the actual packet.
-        */
-       *pChecksum2Offset = SKCS_MAC_HEADER_SIZE + SKCS_IP_HEADER_SIZE;
-}      /* SkCsSetReceiveFlags */
-
-#ifndef SkCsCalculateChecksum
-
-/******************************************************************************
- *
- *     SkCsCalculateChecksum - calculate checksum for specified data
- *
- * Description:
- *     Calculate and return the 16-bit Internet Checksum for the specified
- *     data.
- *
- * Arguments:
- *     pData - Pointer to data for which the checksum shall be calculated.
- *     Note: The pointer should be aligned on a 16-bit boundary.
- *
- *     Length - Length in bytes of data to checksum.
- *
- * Returns:
- *     The 16-bit Internet Checksum for the specified data.
- *
- *     Note: The checksum is calculated in the machine's natural byte order,
- *     i.e. little vs. big endian. Thus, the resulting checksum is different
- *     for the same input data on little and big endian machines.
- *
- *     However, when written back to the network packet, the byte order is
- *     always in correct network order.
- */
-unsigned SkCsCalculateChecksum(
-void           *pData,         /* Data to checksum. */
-unsigned       Length)         /* Length of data. */
-{
-       SK_U16 *pU16;           /* Pointer to the data as 16-bit words. */
-       unsigned long Checksum; /* Checksum; must be at least 32 bits. */
-
-       /* Sum up all 16-bit words. */
-
-       pU16 = (SK_U16 *) pData;
-       for (Checksum = 0; Length > 1; Length -= 2) {
-               Checksum += *pU16++;
-       }
-
-       /* If this is an odd number of bytes, add-in the last byte. */
-
-       if (Length > 0) {
-#ifdef SK_BIG_ENDIAN
-               /* Add the last byte as the high byte. */
-               Checksum += ((unsigned) *(SK_U8 *) pU16) << 8;
-#else  /* !SK_BIG_ENDIAN */
-               /* Add the last byte as the low byte. */
-               Checksum += *(SK_U8 *) pU16;
-#endif /* !SK_BIG_ENDIAN */
-       }
-
-       /* Add-in any carries. */
-
-       SKCS_OC_ADD(Checksum, Checksum, 0);
-
-       /* Add-in any new carry. */
-
-       SKCS_OC_ADD(Checksum, Checksum, 0);
-
-       /* Note: All bits beyond the 16-bit limit are now zero. */
-
-       return ((unsigned) Checksum);
-}      /* SkCsCalculateChecksum */
-
-#endif /* SkCsCalculateChecksum */
-
-/******************************************************************************
- *
- *     SkCsEvent - the CSUM event dispatcher
- *
- * Description:
- *     This is the event handler for the CSUM module.
- *
- * Arguments:
- *     pAc - Pointer to adapter context.
- *
- *     Ioc - I/O context.
- *
- *     Event -  Event id.
- *
- *     Param - Event dependent parameter.
- *
- * Returns:
- *     The 16-bit Internet Checksum for the specified data.
- *
- *     Note: The checksum is calculated in the machine's natural byte order,
- *     i.e. little vs. big endian. Thus, the resulting checksum is different
- *     for the same input data on little and big endian machines.
- *
- *     However, when written back to the network packet, the byte order is
- *     always in correct network order.
- */
-int SkCsEvent(
-SK_AC          *pAc,   /* Pointer to adapter context. */
-SK_IOC         Ioc,    /* I/O context. */
-SK_U32         Event,  /* Event id. */
-SK_EVPARA      Param)  /* Event dependent parameter. */
-{
-       int ProtoIndex;
-       int     NetNumber;
-
-       switch (Event) {
-       /*
-        * Clear protocol statistics.
-        *
-        * Param - Protocol index, or -1 for all protocols.
-        *               - Net number.
-        */
-       case SK_CSUM_EVENT_CLEAR_PROTO_STATS:
-
-               ProtoIndex = (int)Param.Para32[1];
-               NetNumber = (int)Param.Para32[0];
-               if (ProtoIndex < 0) {   /* Clear for all protocols. */
-                       if (NetNumber >= 0) {
-                               memset(&pAc->Csum.ProtoStats[NetNumber][0], 0,
-                                       sizeof(pAc->Csum.ProtoStats[NetNumber]));
-                       }
-               }
-               else {                                  /* Clear for individual protocol. */
-                       memset(&pAc->Csum.ProtoStats[NetNumber][ProtoIndex], 0,
-                               sizeof(pAc->Csum.ProtoStats[NetNumber][ProtoIndex]));
-               }
-               break;
-       default:
-               break;
-       }
-       return (0);     /* Success. */
-}      /* SkCsEvent */
-
-#endif /* SK_USE_CSUM */
+/******************************************************************************
+ *
+ * Name:       skcsum.c
+ * Project:    GEnesis, PCI Gigabit Ethernet Adapter
+ * Version:    $Revision: 1.1.1.1 $
+ * Date:       $Date: 2009/03/25 22:22:09 $
+ * Purpose:    Store/verify Internet checksum in send/receive packets.
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ *     (C)Copyright 1998-2001 SysKonnect GmbH.
+ *
+ *     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.
+ *
+ *     The information in this file is provided "AS IS" without warranty.
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ * History:
+ *
+ *     $Log: skcsum.c,v $
+ *     Revision 1.1.1.1  2009/03/25 22:22:09  kenagy
+ *     no message
+ *     
+ *     Revision 1.10  2002/04/11 10:02:04  rwahl
+ *     Fix in SkCsGetSendInfo():
+ *     - function did not return ProtocolFlags in every case.
+ *     - pseudo header csum calculated wrong for big endian.
+ *
+ *     Revision 1.9  2001/06/13 07:42:08  gklug
+ *     fix: NetNumber was wrong in CLEAR_STAT event
+ *     add: check for good NetNumber in Clear STAT
+ *
+ *     Revision 1.8  2001/02/06 11:15:36  rassmann
+ *     Supporting two nets on dual-port adapters.
+ *
+ *     Revision 1.7  2000/06/29 13:17:05  rassmann
+ *     Corrected reception of a packet with UDP checksum == 0 (which means there
+ *     is no UDP checksum).
+ *
+ *     Revision 1.6  2000/02/21 12:35:10  cgoos
+ *     Fixed license header comment.
+ *
+ *     Revision 1.5  2000/02/21 11:05:19  cgoos
+ *     Merged changes back to common source.
+ *     Fixed rx path for BIG ENDIAN architecture.
+ *
+ *     Revision 1.1  1999/07/26 15:28:12  mkarl
+ *     added return SKCS_STATUS_IP_CSUM_ERROR_UDP and
+ *     SKCS_STATUS_IP_CSUM_ERROR_TCP to pass the NidsTester
+ *     changed from common source to windows specific source
+ *     therefore restarting with v1.0
+ *
+ *     Revision 1.3  1999/05/10 08:39:33  mkarl
+ *     prevent overflows in SKCS_HTON16
+ *     fixed a bug in pseudo header checksum calculation
+ *     added some comments
+ *
+ *     Revision 1.2  1998/10/22 11:53:28  swolf
+ *     Now using SK_DBG_MSG.
+ *
+ *     Revision 1.1  1998/09/01 15:35:41  swolf
+ *     initial revision
+ *
+ *     13-May-1998 sw  Created.
+ *
+ ******************************************************************************/
+
+#include <config.h>
+
+#ifdef SK_USE_CSUM     /* Check if CSUM is to be used. */
+
+#ifndef lint
+static const char SysKonnectFileId[] = "@(#)"
+       "$Id: skcsum.c,v 1.1.1.1 2009/03/25 22:22:09 kenagy Exp $"
+       " (C) SysKonnect.";
+#endif /* !lint */
+
+/******************************************************************************
+ *
+ * Description:
+ *
+ * This is the "GEnesis" common module "CSUM".
+ *
+ * This module contains the code necessary to calculate, store, and verify the
+ * Internet Checksum of IP, TCP, and UDP frames.
+ *
+ * "GEnesis" is an abbreviation of "Gigabit Ethernet Network System in Silicon"
+ * and is the code name of this SysKonnect project.
+ *
+ * Compilation Options:
+ *
+ *     SK_USE_CSUM - Define if CSUM is to be used. Otherwise, CSUM will be an
+ *     empty module.
+ *
+ *     SKCS_OVERWRITE_PROTO - Define to overwrite the default protocol id
+ *     definitions. In this case, all SKCS_PROTO_xxx definitions must be made
+ *     external.
+ *
+ *     SKCS_OVERWRITE_STATUS - Define to overwrite the default return status
+ *     definitions. In this case, all SKCS_STATUS_xxx definitions must be made
+ *     external.
+ *
+ * Include File Hierarchy:
+ *
+ *     "h/skdrv1st.h"
+ *     "h/skcsum.h"
+ *      "h/sktypes.h"
+ *      "h/skqueue.h"
+ *     "h/skdrv2nd.h"
+ *
+ ******************************************************************************/
+
+#include "h/skdrv1st.h"
+#include "h/skcsum.h"
+#include "h/skdrv2nd.h"
+
+/* defines ********************************************************************/
+
+/* The size of an Ethernet MAC header. */
+#define SKCS_ETHERNET_MAC_HEADER_SIZE                  (6+6+2)
+
+/* The size of the used topology's MAC header. */
+#define        SKCS_MAC_HEADER_SIZE    SKCS_ETHERNET_MAC_HEADER_SIZE
+
+/* The size of the IP header without any option fields. */
+#define SKCS_IP_HEADER_SIZE                                            20
+
+/*
+ * Field offsets within the IP header.
+ */
+
+/* "Internet Header Version" and "Length". */
+#define SKCS_OFS_IP_HEADER_VERSION_AND_LENGTH  0
+
+/* "Total Length". */
+#define SKCS_OFS_IP_TOTAL_LENGTH                               2
+
+/* "Flags" "Fragment Offset". */
+#define SKCS_OFS_IP_FLAGS_AND_FRAGMENT_OFFSET  6
+
+/* "Next Level Protocol" identifier. */
+#define SKCS_OFS_IP_NEXT_LEVEL_PROTOCOL                        9
+
+/* Source IP address. */
+#define SKCS_OFS_IP_SOURCE_ADDRESS                             12
+
+/* Destination IP address. */
+#define SKCS_OFS_IP_DESTINATION_ADDRESS                        16
+
+
+/*
+ * Field offsets within the UDP header.
+ */
+
+/* UDP checksum. */
+#define SKCS_OFS_UDP_CHECKSUM                                  6
+
+/* IP "Next Level Protocol" identifiers (see RFC 790). */
+#define SKCS_PROTO_ID_TCP              6       /* Transport Control Protocol */
+#define SKCS_PROTO_ID_UDP              17      /* User Datagram Protocol */
+
+/* IP "Don't Fragment" bit. */
+#define SKCS_IP_DONT_FRAGMENT  SKCS_HTON16(0x4000)
+
+/* Add a byte offset to a pointer. */
+#define SKCS_IDX(pPtr, Ofs)    ((void *) ((char *) (pPtr) + (Ofs)))
+
+/*
+ * Macros that convert host to network representation and vice versa, i.e.
+ * little/big endian conversion on little endian machines only.
+ */
+#ifdef SK_LITTLE_ENDIAN
+#define SKCS_HTON16(Val16)     (((unsigned) (Val16) >> 8) | (((Val16) & 0xFF) << 8))
+#endif /* SK_LITTLE_ENDIAN */
+#ifdef SK_BIG_ENDIAN
+#define SKCS_HTON16(Val16)     (Val16)
+#endif /* SK_BIG_ENDIAN */
+#define SKCS_NTOH16(Val16)     SKCS_HTON16(Val16)
+
+/* typedefs *******************************************************************/
+
+/* function prototypes ********************************************************/
+
+/******************************************************************************
+ *
+ *     SkCsGetSendInfo - get checksum information for a send packet
+ *
+ * Description:
+ *     Get all checksum information necessary to send a TCP or UDP packet. The
+ *     function checks the IP header passed to it. If the high-level protocol
+ *     is either TCP or UDP the pseudo header checksum is calculated and
+ *     returned.
+ *
+ *     The function returns the total length of the IP header (including any
+ *     IP option fields), which is the same as the start offset of the IP data
+ *     which in turn is the start offset of the TCP or UDP header.
+ *
+ *     The function also returns the TCP or UDP pseudo header checksum, which
+ *     should be used as the start value for the hardware checksum calculation.
+ *     (Note that any actual pseudo header checksum can never calculate to
+ *     zero.)
+ *
+ * Note:
+ *     There is a bug in the ASIC which may lead to wrong checksums.
+ *
+ * Arguments:
+ *     pAc - A pointer to the adapter context struct.
+ *
+ *     pIpHeader - Pointer to IP header. Must be at least the IP header *not*
+ *     including any option fields, i.e. at least 20 bytes.
+ *
+ *     Note: This pointer will be used to address 8-, 16-, and 32-bit
+ *     variables with the respective alignment offsets relative to the pointer.
+ *     Thus, the pointer should point to a 32-bit aligned address. If the
+ *     target system cannot address 32-bit variables on non 32-bit aligned
+ *     addresses, then the pointer *must* point to a 32-bit aligned address.
+ *
+ *     pPacketInfo - A pointer to the packet information structure for this
+ *     packet. Before calling this SkCsGetSendInfo(), the following field must
+ *     be initialized:
+ *
+ *             ProtocolFlags - Initialize with any combination of
+ *             SKCS_PROTO_XXX bit flags. SkCsGetSendInfo() will only work on
+ *             the protocols specified here. Any protocol(s) not specified
+ *             here will be ignored.
+ *
+ *             Note: Only one checksum can be calculated in hardware. Thus, if
+ *             SKCS_PROTO_IP is specified in the 'ProtocolFlags',
+ *             SkCsGetSendInfo() must calculate the IP header checksum in
+ *             software. It might be a better idea to have the calling
+ *             protocol stack calculate the IP header checksum.
+ *
+ * Returns: N/A
+ *     On return, the following fields in 'pPacketInfo' may or may not have
+ *     been filled with information, depending on the protocol(s) found in the
+ *     packet:
+ *
+ *     ProtocolFlags - Returns the SKCS_PROTO_XXX bit flags of the protocol(s)
+ *     that were both requested by the caller and actually found in the packet.
+ *     Protocol(s) not specified by the caller and/or not found in the packet
+ *     will have their respective SKCS_PROTO_XXX bit flags reset.
+ *
+ *     Note: For IP fragments, TCP and UDP packet information is ignored.
+ *
+ *     IpHeaderLength - The total length in bytes of the complete IP header
+ *     including any option fields is returned here. This is the start offset
+ *     of the IP data, i.e. the TCP or UDP header if present.
+ *
+ *     IpHeaderChecksum - If IP has been specified in the 'ProtocolFlags', the
+ *     16-bit Internet Checksum of the IP header is returned here. This value
+ *     is to be stored into the packet's 'IP Header Checksum' field.
+ *
+ *     PseudoHeaderChecksum - If this is a TCP or UDP packet and if TCP or UDP
+ *     has been specified in the 'ProtocolFlags', the 16-bit Internet Checksum
+ *     of the TCP or UDP pseudo header is returned here.
+ */
+#if 0
+void SkCsGetSendInfo(
+SK_AC                          *pAc,                   /* Adapter context struct. */
+void                           *pIpHeader,             /* IP header. */
+SKCS_PACKET_INFO       *pPacketInfo,   /* Packet information struct. */
+int                                    NetNumber)              /* Net number */
+{
+       /* Internet Header Version found in IP header. */
+       unsigned InternetHeaderVersion;
+
+       /* Length of the IP header as found in IP header. */
+       unsigned IpHeaderLength;
+
+       /* Bit field specifiying the desired/found protocols. */
+       unsigned ProtocolFlags;
+
+       /* Next level protocol identifier found in IP header. */
+       unsigned NextLevelProtocol;
+
+       /* Length of IP data portion. */
+       unsigned IpDataLength;
+
+       /* TCP/UDP pseudo header checksum. */
+       unsigned long PseudoHeaderChecksum;
+
+       /* Pointer to next level protocol statistics structure. */
+       SKCS_PROTO_STATS *NextLevelProtoStats;
+
+       /* Temporary variable. */
+       unsigned Tmp;
+
+       Tmp = *(SK_U8 *)
+               SKCS_IDX(pIpHeader, SKCS_OFS_IP_HEADER_VERSION_AND_LENGTH);
+
+       /* Get the Internet Header Version (IHV). */
+       /* Note: The IHV is stored in the upper four bits. */
+
+       InternetHeaderVersion = Tmp >> 4;
+
+       /* Check the Internet Header Version. */
+       /* Note: We currently only support IP version 4. */
+
+       if (InternetHeaderVersion != 4) {       /* IPv4? */
+               SK_DBG_MSG(pAc, SK_DBGMOD_CSUM, SK_DBGCAT_ERR | SK_DBGCAT_TX,
+                       ("Tx: Unknown Internet Header Version %u.\n",
+                       InternetHeaderVersion));
+               pPacketInfo->ProtocolFlags = 0;
+               pAc->Csum.ProtoStats[NetNumber][SKCS_PROTO_STATS_IP].TxUnableCts++;
+               return;
+       }
+
+       /* Get the IP header length (IHL). */
+       /*
+        * Note: The IHL is stored in the lower four bits as the number of
+        * 4-byte words.
+        */
+
+       IpHeaderLength = (Tmp & 0xf) * 4;
+       pPacketInfo->IpHeaderLength = IpHeaderLength;
+
+       /* Check the IP header length. */
+
+       /* 04-Aug-1998 sw - Really check the IHL? Necessary? */
+
+       if (IpHeaderLength < 5*4) {
+               SK_DBG_MSG(pAc, SK_DBGMOD_CSUM, SK_DBGCAT_ERR | SK_DBGCAT_TX,
+                       ("Tx: Invalid IP Header Length %u.\n", IpHeaderLength));
+               pPacketInfo->ProtocolFlags = 0;
+               pAc->Csum.ProtoStats[NetNumber][SKCS_PROTO_STATS_IP].TxUnableCts++;
+               return;
+       }
+
+       /* This is an IPv4 frame with a header of valid length. */
+
+       pAc->Csum.ProtoStats[NetNumber][SKCS_PROTO_STATS_IP].TxOkCts++;
+
+       /* Check if we should calculate the IP header checksum. */
+
+       ProtocolFlags = pPacketInfo->ProtocolFlags;
+
+       if (ProtocolFlags & SKCS_PROTO_IP) {
+               pPacketInfo->IpHeaderChecksum =
+                       SkCsCalculateChecksum(pIpHeader, IpHeaderLength);
+       }
+
+       /* Get the next level protocol identifier. */
+
+       NextLevelProtocol =
+               *(SK_U8 *) SKCS_IDX(pIpHeader, SKCS_OFS_IP_NEXT_LEVEL_PROTOCOL);
+
+       /*
+        * Check if this is a TCP or UDP frame and if we should calculate the
+        * TCP/UDP pseudo header checksum.
+        *
+        * Also clear all protocol bit flags of protocols not present in the
+        * frame.
+        */
+
+       if ((ProtocolFlags & SKCS_PROTO_TCP) != 0 &&
+               NextLevelProtocol == SKCS_PROTO_ID_TCP) {
+               /* TCP/IP frame. */
+               ProtocolFlags &= SKCS_PROTO_TCP | SKCS_PROTO_IP;
+               NextLevelProtoStats =
+                       &pAc->Csum.ProtoStats[NetNumber][SKCS_PROTO_STATS_TCP];
+       }
+       else if ((ProtocolFlags & SKCS_PROTO_UDP) != 0 &&
+               NextLevelProtocol == SKCS_PROTO_ID_UDP) {
+               /* UDP/IP frame. */
+               ProtocolFlags &= SKCS_PROTO_UDP | SKCS_PROTO_IP;
+               NextLevelProtoStats =
+                       &pAc->Csum.ProtoStats[NetNumber][SKCS_PROTO_STATS_UDP];
+       }
+       else {
+               /*
+                * Either not a TCP or UDP frame and/or TCP/UDP processing not
+                * specified.
+                */
+               pPacketInfo->ProtocolFlags = ProtocolFlags & SKCS_PROTO_IP;
+               return;
+       }
+
+       /* Check if this is an IP fragment. */
+
+       /*
+        * Note: An IP fragment has a non-zero "Fragment Offset" field and/or
+        * the "More Fragments" bit set. Thus, if both the "Fragment Offset"
+        * and the "More Fragments" are zero, it is *not* a fragment. We can
+        * easily check both at the same time since they are in the same 16-bit
+        * word.
+        */
+
+       if ((*(SK_U16 *)
+               SKCS_IDX(pIpHeader, SKCS_OFS_IP_FLAGS_AND_FRAGMENT_OFFSET) &
+               ~SKCS_IP_DONT_FRAGMENT) != 0) {
+               /* IP fragment; ignore all other protocols. */
+               pPacketInfo->ProtocolFlags = ProtocolFlags & SKCS_PROTO_IP;
+               NextLevelProtoStats->TxUnableCts++;
+               return;
+       }
+
+       /*
+        * Calculate the TCP/UDP pseudo header checksum.
+        */
+
+       /* Get total length of IP header and data. */
+
+       IpDataLength =
+               *(SK_U16 *) SKCS_IDX(pIpHeader, SKCS_OFS_IP_TOTAL_LENGTH);
+
+       /* Get length of IP data portion. */
+
+       IpDataLength = SKCS_NTOH16(IpDataLength) - IpHeaderLength;
+
+       /* Calculate the sum of all pseudo header fields (16-bit). */
+
+       PseudoHeaderChecksum =
+               (unsigned long) *(SK_U16 *) SKCS_IDX(pIpHeader,
+                       SKCS_OFS_IP_SOURCE_ADDRESS + 0) +
+               (unsigned long) *(SK_U16 *) SKCS_IDX(pIpHeader,
+                       SKCS_OFS_IP_SOURCE_ADDRESS + 2) +
+               (unsigned long) *(SK_U16 *) SKCS_IDX(pIpHeader,
+                       SKCS_OFS_IP_DESTINATION_ADDRESS + 0) +
+               (unsigned long) *(SK_U16 *) SKCS_IDX(pIpHeader,
+                       SKCS_OFS_IP_DESTINATION_ADDRESS + 2) +
+               (unsigned long) SKCS_HTON16(NextLevelProtocol) +
+               (unsigned long) SKCS_HTON16(IpDataLength);
+
+       /* Add-in any carries. */
+
+       SKCS_OC_ADD(PseudoHeaderChecksum, PseudoHeaderChecksum, 0);
+
+       /* Add-in any new carry. */
+
+       SKCS_OC_ADD(pPacketInfo->PseudoHeaderChecksum, PseudoHeaderChecksum, 0);
+
+       pPacketInfo->ProtocolFlags = ProtocolFlags;
+       NextLevelProtoStats->TxOkCts++; /* Success. */
+}      /* SkCsGetSendInfo */
+
+
+/******************************************************************************
+ *
+ *     SkCsGetReceiveInfo - verify checksum information for a received packet
+ *
+ * Description:
+ *     Verify a received frame's checksum. The function returns a status code
+ *     reflecting the result of the verification.
+ *
+ * Note:
+ *     Before calling this function you have to verify that the frame is
+ *     not padded and Checksum1 and Checksum2 are bigger than 1.
+ *
+ * Arguments:
+ *     pAc - Pointer to adapter context struct.
+ *
+ *     pIpHeader - Pointer to IP header. Must be at least the length in bytes
+ *     of the received IP header including any option fields. For UDP packets,
+ *     8 additional bytes are needed to access the UDP checksum.
+ *
+ *     Note: The actual length of the IP header is stored in the lower four
+ *     bits of the first octet of the IP header as the number of 4-byte words,
+ *     so it must be multiplied by four to get the length in bytes. Thus, the
+ *     maximum IP header length is 15 * 4 = 60 bytes.
+ *
+ *     Checksum1 - The first 16-bit Internet Checksum calculated by the
+ *     hardware starting at the offset returned by SkCsSetReceiveFlags().
+ *
+ *     Checksum2 - The second 16-bit Internet Checksum calculated by the
+ *     hardware starting at the offset returned by SkCsSetReceiveFlags().
+ *
+ * Returns:
+ *     SKCS_STATUS_UNKNOWN_IP_VERSION - Not an IP v4 frame.
+ *     SKCS_STATUS_IP_CSUM_ERROR - IP checksum error.
+ *     SKCS_STATUS_IP_CSUM_ERROR_TCP - IP checksum error in TCP frame.
+ *     SKCS_STATUS_IP_CSUM_ERROR_UDP - IP checksum error in UDP frame
+ *     SKCS_STATUS_IP_FRAGMENT - IP fragment (IP checksum ok).
+ *     SKCS_STATUS_IP_CSUM_OK - IP checksum ok (not a TCP or UDP frame).
+ *     SKCS_STATUS_TCP_CSUM_ERROR - TCP checksum error (IP checksum ok).
+ *     SKCS_STATUS_UDP_CSUM_ERROR - UDP checksum error (IP checksum ok).
+ *     SKCS_STATUS_TCP_CSUM_OK - IP and TCP checksum ok.
+ *     SKCS_STATUS_UDP_CSUM_OK - IP and UDP checksum ok.
+ *     SKCS_STATUS_IP_CSUM_OK_NO_UDP - IP checksum OK and no UDP checksum.
+ *
+ *     Note: If SKCS_OVERWRITE_STATUS is defined, the SKCS_STATUS_XXX values
+ *     returned here can be defined in some header file by the module using CSUM.
+ *     In this way, the calling module can assign return values for its own needs,
+ *     e.g. by assigning bit flags to the individual protocols.
+ */
+SKCS_STATUS SkCsGetReceiveInfo(
+SK_AC          *pAc,           /* Adapter context struct. */
+void           *pIpHeader,     /* IP header. */
+unsigned       Checksum1,      /* Hardware checksum 1. */
+unsigned       Checksum2,      /* Hardware checksum 2. */
+int                    NetNumber)      /* Net number */
+{
+       /* Internet Header Version found in IP header. */
+       unsigned InternetHeaderVersion;
+
+       /* Length of the IP header as found in IP header. */
+       unsigned IpHeaderLength;
+
+       /* Length of IP data portion. */
+       unsigned IpDataLength;
+
+       /* IP header checksum. */
+       unsigned IpHeaderChecksum;
+
+       /* IP header options checksum, if any. */
+       unsigned IpOptionsChecksum;
+
+       /* IP data checksum, i.e. TCP/UDP checksum. */
+       unsigned IpDataChecksum;
+
+       /* Next level protocol identifier found in IP header. */
+       unsigned NextLevelProtocol;
+
+       /* The checksum of the "next level protocol", i.e. TCP or UDP. */
+       unsigned long NextLevelProtocolChecksum;
+
+       /* Pointer to next level protocol statistics structure. */
+       SKCS_PROTO_STATS *NextLevelProtoStats;
+
+       /* Temporary variable. */
+       unsigned Tmp;
+
+       Tmp = *(SK_U8 *)
+               SKCS_IDX(pIpHeader, SKCS_OFS_IP_HEADER_VERSION_AND_LENGTH);
+
+       /* Get the Internet Header Version (IHV). */
+       /* Note: The IHV is stored in the upper four bits. */
+
+       InternetHeaderVersion = Tmp >> 4;
+
+       /* Check the Internet Header Version. */
+       /* Note: We currently only support IP version 4. */
+
+       if (InternetHeaderVersion != 4) {       /* IPv4? */
+               SK_DBG_MSG(pAc, SK_DBGMOD_CSUM, SK_DBGCAT_ERR | SK_DBGCAT_RX,
+                       ("Rx: Unknown Internet Header Version %u.\n",
+                       InternetHeaderVersion));
+               pAc->Csum.ProtoStats[NetNumber][SKCS_PROTO_STATS_IP].RxUnableCts++;
+               return (SKCS_STATUS_UNKNOWN_IP_VERSION);
+       }
+
+       /* Get the IP header length (IHL). */
+       /*
+        * Note: The IHL is stored in the lower four bits as the number of
+        * 4-byte words.
+        */
+
+       IpHeaderLength = (Tmp & 0xf) * 4;
+
+       /* Check the IP header length. */
+
+       /* 04-Aug-1998 sw - Really check the IHL? Necessary? */
+
+       if (IpHeaderLength < 5*4) {
+               SK_DBG_MSG(pAc, SK_DBGMOD_CSUM, SK_DBGCAT_ERR | SK_DBGCAT_RX,
+                       ("Rx: Invalid IP Header Length %u.\n", IpHeaderLength));
+               pAc->Csum.ProtoStats[NetNumber][SKCS_PROTO_STATS_IP].RxErrCts++;
+               return (SKCS_STATUS_IP_CSUM_ERROR);
+       }
+
+       /* This is an IPv4 frame with a header of valid length. */
+
+       /* Get the IP header and data checksum. */
+
+       IpDataChecksum = Checksum2;
+
+       /*
+        * The IP header checksum is calculated as follows:
+        *
+        *      IpHeaderChecksum = Checksum1 - Checksum2
+        */
+
+       SKCS_OC_SUB(IpHeaderChecksum, Checksum1, Checksum2);
+
+       /* Check if any IP header options. */
+
+       if (IpHeaderLength > SKCS_IP_HEADER_SIZE) {
+
+               /* Get the IP options checksum. */
+
+               IpOptionsChecksum = SkCsCalculateChecksum(
+                       SKCS_IDX(pIpHeader, SKCS_IP_HEADER_SIZE),
+                       IpHeaderLength - SKCS_IP_HEADER_SIZE);
+
+               /* Adjust the IP header and IP data checksums. */
+
+               SKCS_OC_ADD(IpHeaderChecksum, IpHeaderChecksum, IpOptionsChecksum);
+
+               SKCS_OC_SUB(IpDataChecksum, IpDataChecksum, IpOptionsChecksum);
+       }
+
+       /*
+        * Check if the IP header checksum is ok.
+        *
+        * NOTE: We must check the IP header checksum even if the caller just wants
+        * us to check upper-layer checksums, because we cannot do any further
+        * processing of the packet without a valid IP checksum.
+        */
+
+       /* Get the next level protocol identifier. */
+
+       NextLevelProtocol = *(SK_U8 *)
+               SKCS_IDX(pIpHeader, SKCS_OFS_IP_NEXT_LEVEL_PROTOCOL);
+
+       if (IpHeaderChecksum != 0xFFFF) {
+               pAc->Csum.ProtoStats[NetNumber][SKCS_PROTO_STATS_IP].RxErrCts++;
+               /* the NDIS tester wants to know the upper level protocol too */
+               if (NextLevelProtocol == SKCS_PROTO_ID_TCP) {
+                       return(SKCS_STATUS_IP_CSUM_ERROR_TCP);
+               }
+               else if (NextLevelProtocol == SKCS_PROTO_ID_UDP) {
+                       return(SKCS_STATUS_IP_CSUM_ERROR_UDP);
+               }
+               return (SKCS_STATUS_IP_CSUM_ERROR);
+       }
+
+       /*
+        * Check if this is a TCP or UDP frame and if we should calculate the
+        * TCP/UDP pseudo header checksum.
+        *
+        * Also clear all protocol bit flags of protocols not present in the
+        * frame.
+        */
+
+       if ((pAc->Csum.ReceiveFlags[NetNumber] & SKCS_PROTO_TCP) != 0 &&
+               NextLevelProtocol == SKCS_PROTO_ID_TCP) {
+               /* TCP/IP frame. */
+               NextLevelProtoStats =
+                       &pAc->Csum.ProtoStats[NetNumber][SKCS_PROTO_STATS_TCP];
+       }
+       else if ((pAc->Csum.ReceiveFlags[NetNumber] & SKCS_PROTO_UDP) != 0 &&
+               NextLevelProtocol == SKCS_PROTO_ID_UDP) {
+               /* UDP/IP frame. */
+               NextLevelProtoStats =
+                       &pAc->Csum.ProtoStats[NetNumber][SKCS_PROTO_STATS_UDP];
+       }
+       else {
+               /*
+                * Either not a TCP or UDP frame and/or TCP/UDP processing not
+                * specified.
+                */
+               return (SKCS_STATUS_IP_CSUM_OK);
+       }
+
+       /* Check if this is an IP fragment. */
+
+       /*
+        * Note: An IP fragment has a non-zero "Fragment Offset" field and/or
+        * the "More Fragments" bit set. Thus, if both the "Fragment Offset"
+        * and the "More Fragments" are zero, it is *not* a fragment. We can
+        * easily check both at the same time since they are in the same 16-bit
+        * word.
+        */
+
+       if ((*(SK_U16 *)
+               SKCS_IDX(pIpHeader, SKCS_OFS_IP_FLAGS_AND_FRAGMENT_OFFSET) &
+               ~SKCS_IP_DONT_FRAGMENT) != 0) {
+               /* IP fragment; ignore all other protocols. */
+               NextLevelProtoStats->RxUnableCts++;
+               return (SKCS_STATUS_IP_FRAGMENT);
+       }
+
+       /*
+        * 08-May-2000 ra
+        *
+        * From RFC 768 (UDP)
+        * If the computed checksum is zero, it is transmitted as all ones (the
+        * equivalent in one's complement arithmetic).  An all zero transmitted
+        * checksum value means that the transmitter generated no checksum (for
+        * debugging or for higher level protocols that don't care).
+        */
+
+       if (NextLevelProtocol == SKCS_PROTO_ID_UDP &&
+               *(SK_U16*)SKCS_IDX(pIpHeader, IpHeaderLength + 6) == 0x0000) {
+
+               NextLevelProtoStats->RxOkCts++;
+
+               return (SKCS_STATUS_IP_CSUM_OK_NO_UDP);
+       }
+
+       /*
+        * Calculate the TCP/UDP checksum.
+        */
+
+       /* Get total length of IP header and data. */
+
+       IpDataLength =
+               *(SK_U16 *) SKCS_IDX(pIpHeader, SKCS_OFS_IP_TOTAL_LENGTH);
+
+       /* Get length of IP data portion. */
+
+       IpDataLength = SKCS_NTOH16(IpDataLength) - IpHeaderLength;
+
+       NextLevelProtocolChecksum =
+
+               /* Calculate the pseudo header checksum. */
+
+               (unsigned long) *(SK_U16 *) SKCS_IDX(pIpHeader,
+                       SKCS_OFS_IP_SOURCE_ADDRESS + 0) +
+               (unsigned long) *(SK_U16 *) SKCS_IDX(pIpHeader,
+                       SKCS_OFS_IP_SOURCE_ADDRESS + 2) +
+               (unsigned long) *(SK_U16 *) SKCS_IDX(pIpHeader,
+                       SKCS_OFS_IP_DESTINATION_ADDRESS + 0) +
+               (unsigned long) *(SK_U16 *) SKCS_IDX(pIpHeader,
+                       SKCS_OFS_IP_DESTINATION_ADDRESS + 2) +
+               (unsigned long) SKCS_HTON16(NextLevelProtocol) +
+               (unsigned long) SKCS_HTON16(IpDataLength) +
+
+               /* Add the TCP/UDP header checksum. */
+
+               (unsigned long) IpDataChecksum;
+
+       /* Add-in any carries. */
+
+       SKCS_OC_ADD(NextLevelProtocolChecksum, NextLevelProtocolChecksum, 0);
+
+       /* Add-in any new carry. */
+
+       SKCS_OC_ADD(NextLevelProtocolChecksum, NextLevelProtocolChecksum, 0);
+
+       /* Check if the TCP/UDP checksum is ok. */
+
+       if ((unsigned) NextLevelProtocolChecksum == 0xFFFF) {
+
+               /* TCP/UDP checksum ok. */
+
+               NextLevelProtoStats->RxOkCts++;
+
+               return (NextLevelProtocol == SKCS_PROTO_ID_TCP ?
+                       SKCS_STATUS_TCP_CSUM_OK : SKCS_STATUS_UDP_CSUM_OK);
+       }
+
+       /* TCP/UDP checksum error. */
+
+       NextLevelProtoStats->RxErrCts++;
+
+       return (NextLevelProtocol == SKCS_PROTO_ID_TCP ?
+               SKCS_STATUS_TCP_CSUM_ERROR : SKCS_STATUS_UDP_CSUM_ERROR);
+}      /* SkCsGetReceiveInfo */
+#endif
+
+
+/******************************************************************************
+ *
+ *     SkCsSetReceiveFlags - set checksum receive flags
+ *
+ * Description:
+ *     Use this function to set the various receive flags. According to the
+ *     protocol flags set by the caller, the start offsets within received
+ *     packets of the two hardware checksums are returned. These offsets must
+ *     be stored in all receive descriptors.
+ *
+ * Arguments:
+ *     pAc - Pointer to adapter context struct.
+ *
+ *     ReceiveFlags - Any combination of SK_PROTO_XXX flags of the protocols
+ *     for which the caller wants checksum information on received frames.
+ *
+ *     pChecksum1Offset - The start offset of the first receive descriptor
+ *     hardware checksum to be calculated for received frames is returned
+ *     here.
+ *
+ *     pChecksum2Offset - The start offset of the second receive descriptor
+ *     hardware checksum to be calculated for received frames is returned
+ *     here.
+ *
+ * Returns: N/A
+ *     Returns the two hardware checksum start offsets.
+ */
+void SkCsSetReceiveFlags(
+SK_AC          *pAc,                           /* Adapter context struct. */
+unsigned       ReceiveFlags,           /* New receive flags. */
+unsigned       *pChecksum1Offset,      /* Offset for hardware checksum 1. */
+unsigned       *pChecksum2Offset,      /* Offset for hardware checksum 2. */
+int                    NetNumber)
+{
+       /* Save the receive flags. */
+
+       pAc->Csum.ReceiveFlags[NetNumber] = ReceiveFlags;
+
+       /* First checksum start offset is the IP header. */
+       *pChecksum1Offset = SKCS_MAC_HEADER_SIZE;
+
+       /*
+        * Second checksum start offset is the IP data. Note that this may vary
+        * if there are any IP header options in the actual packet.
+        */
+       *pChecksum2Offset = SKCS_MAC_HEADER_SIZE + SKCS_IP_HEADER_SIZE;
+}      /* SkCsSetReceiveFlags */
+
+#ifndef SkCsCalculateChecksum
+
+/******************************************************************************
+ *
+ *     SkCsCalculateChecksum - calculate checksum for specified data
+ *
+ * Description:
+ *     Calculate and return the 16-bit Internet Checksum for the specified
+ *     data.
+ *
+ * Arguments:
+ *     pData - Pointer to data for which the checksum shall be calculated.
+ *     Note: The pointer should be aligned on a 16-bit boundary.
+ *
+ *     Length - Length in bytes of data to checksum.
+ *
+ * Returns:
+ *     The 16-bit Internet Checksum for the specified data.
+ *
+ *     Note: The checksum is calculated in the machine's natural byte order,
+ *     i.e. little vs. big endian. Thus, the resulting checksum is different
+ *     for the same input data on little and big endian machines.
+ *
+ *     However, when written back to the network packet, the byte order is
+ *     always in correct network order.
+ */
+unsigned SkCsCalculateChecksum(
+void           *pData,         /* Data to checksum. */
+unsigned       Length)         /* Length of data. */
+{
+       SK_U16 *pU16;           /* Pointer to the data as 16-bit words. */
+       unsigned long Checksum; /* Checksum; must be at least 32 bits. */
+
+       /* Sum up all 16-bit words. */
+
+       pU16 = (SK_U16 *) pData;
+       for (Checksum = 0; Length > 1; Length -= 2) {
+               Checksum += *pU16++;
+       }
+
+       /* If this is an odd number of bytes, add-in the last byte. */
+
+       if (Length > 0) {
+#ifdef SK_BIG_ENDIAN
+               /* Add the last byte as the high byte. */
+               Checksum += ((unsigned) *(SK_U8 *) pU16) << 8;
+#else  /* !SK_BIG_ENDIAN */
+               /* Add the last byte as the low byte. */
+               Checksum += *(SK_U8 *) pU16;
+#endif /* !SK_BIG_ENDIAN */
+       }
+
+       /* Add-in any carries. */
+
+       SKCS_OC_ADD(Checksum, Checksum, 0);
+
+       /* Add-in any new carry. */
+
+       SKCS_OC_ADD(Checksum, Checksum, 0);
+
+       /* Note: All bits beyond the 16-bit limit are now zero. */
+
+       return ((unsigned) Checksum);
+}      /* SkCsCalculateChecksum */
+
+#endif /* SkCsCalculateChecksum */
+
+/******************************************************************************
+ *
+ *     SkCsEvent - the CSUM event dispatcher
+ *
+ * Description:
+ *     This is the event handler for the CSUM module.
+ *
+ * Arguments:
+ *     pAc - Pointer to adapter context.
+ *
+ *     Ioc - I/O context.
+ *
+ *     Event -  Event id.
+ *
+ *     Param - Event dependent parameter.
+ *
+ * Returns:
+ *     The 16-bit Internet Checksum for the specified data.
+ *
+ *     Note: The checksum is calculated in the machine's natural byte order,
+ *     i.e. little vs. big endian. Thus, the resulting checksum is different
+ *     for the same input data on little and big endian machines.
+ *
+ *     However, when written back to the network packet, the byte order is
+ *     always in correct network order.
+ */
+int SkCsEvent(
+SK_AC          *pAc,   /* Pointer to adapter context. */
+SK_IOC         Ioc,    /* I/O context. */
+SK_U32         Event,  /* Event id. */
+SK_EVPARA      Param)  /* Event dependent parameter. */
+{
+       int ProtoIndex;
+       int     NetNumber;
+
+       switch (Event) {
+       /*
+        * Clear protocol statistics.
+        *
+        * Param - Protocol index, or -1 for all protocols.
+        *               - Net number.
+        */
+       case SK_CSUM_EVENT_CLEAR_PROTO_STATS:
+
+               ProtoIndex = (int)Param.Para32[1];
+               NetNumber = (int)Param.Para32[0];
+               if (ProtoIndex < 0) {   /* Clear for all protocols. */
+                       if (NetNumber >= 0) {
+                               memset(&pAc->Csum.ProtoStats[NetNumber][0], 0,
+                                       sizeof(pAc->Csum.ProtoStats[NetNumber]));
+                       }
+               }
+               else {                                  /* Clear for individual protocol. */
+                       memset(&pAc->Csum.ProtoStats[NetNumber][ProtoIndex], 0,
+                               sizeof(pAc->Csum.ProtoStats[NetNumber][ProtoIndex]));
+               }
+               break;
+       default:
+               break;
+       }
+       return (0);     /* Success. */
+}      /* SkCsEvent */
+
+#endif /* SK_USE_CSUM */
diff -Naur u-boot-2009.03_orig/drivers/net/sk98lin/skge.c u-boot-2009.03/drivers/net/sk98lin/skge.c
--- u-boot-2009.03_orig/drivers/net/sk98lin/skge.c      2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/drivers/net/sk98lin/skge.c   2009-03-31 14:54:29.362506400 -0700
@@ -1,4860 +1,4863 @@
-/******************************************************************************
- *
- * Name:    skge.c
- * Project:    GEnesis, PCI Gigabit Ethernet Adapter
- * Version:    $Revision: 1.46 $
- * Date:       $Date: 2003/02/25 14:16:36 $
- * Purpose:    The main driver source module
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- *     (C)Copyright 1998-2003 SysKonnect GmbH.
- *
- *     Driver for SysKonnect Gigabit Ethernet Server Adapters:
- *
- *     SK-9871 (single link 1000Base-ZX)
- *     SK-9872 (dual link   1000Base-ZX)
- *     SK-9861 (single link 1000Base-SX, VF45 Volition Plug)
- *     SK-9862 (dual link   1000Base-SX, VF45 Volition Plug)
- *     SK-9841 (single link 1000Base-LX)
- *     SK-9842 (dual link   1000Base-LX)
- *     SK-9843 (single link 1000Base-SX)
- *     SK-9844 (dual link   1000Base-SX)
- *     SK-9821 (single link 1000Base-T)
- *     SK-9822 (dual link   1000Base-T)
- *     SK-9881 (single link 1000Base-SX V2 LC)
- *     SK-9871 (single link 1000Base-ZX V2)
- *     SK-9861 (single link 1000Base-SX V2, VF45 Volition Plug)
- *     SK-9841 (single link 1000Base-LX V2)
- *     SK-9843 (single link 1000Base-SX V2)
- *     SK-9821 (single link 1000Base-T V2)
- *
- *     Created 10-Feb-1999, based on Linux' acenic.c, 3c59x.c and
- *     SysKonnects GEnesis Solaris driver
- *     Author: Christoph Goos (cgoos@syskonnect.de)
- *             Mirko Lindner (mlindner@syskonnect.de)
- *
- *     Address all question to: linux@syskonnect.de
- *
- *     The technical manual for the adapters is available from SysKonnect's
- *     web pages: www.syskonnect.com
- *     Goto "Support" and search Knowledge Base for "manual".
- *
- *     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.
- *
- *     The information in this file is provided "AS IS" without warranty.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * History:
- *
- *     $Log: skge.c,v $
- *     Revision 1.46  2003/02/25 14:16:36  mlindner
- *     Fix: Copyright statement
- *
- *     Revision 1.45  2003/02/25 13:25:55  mlindner
- *     Add: Performance improvements
- *     Add: Support for various vendors
- *     Fix: Init function
- *
- *     Revision 1.44  2003/01/09 09:25:26  mlindner
- *     Fix: Remove useless init_module/cleanup_module forward declarations
- *
- *     Revision 1.43  2002/11/29 08:42:41  mlindner
- *     Fix: Boot message
- *
- *     Revision 1.42  2002/11/28 13:30:23  mlindner
- *     Add: New frame check
- *
- *     Revision 1.41  2002/11/27 13:55:18  mlindner
- *     Fix: Drop wrong csum packets
- *     Fix: Initialize proc_entry after hw check
- *
- *     Revision 1.40  2002/10/31 07:50:37  tschilli
- *     Function SkGeInitAssignRamToQueues() from common module inserted.
- *     Autonegotiation is set to ON for all adapters.
- *     LinkSpeedUsed is used in link up status report.
- *     Role parameter will show up for 1000 Mbps links only.
- *     GetConfiguration() inserted after init level 1 in SkGeChangeMtu().
- *     All return values of SkGeInit() and SkGeInitPort() are checked.
- *
- *     Revision 1.39  2002/10/02 12:56:05  mlindner
- *     Add: Support for Yukon
- *     Add: Support for ZEROCOPY, scatter-gather and hw checksum
- *     Add: New transmit ring function (use SG and TCP/UDP hardware checksumming)
- *     Add: New init function
- *     Add: Speed check and setup
- *     Add: Merge source for kernel 2.2.x and 2.4.x
- *     Add: Opcode check for tcp
- *     Add: Frame length check
- *     Fix: Transmit complete interrupt
- *     Fix: Interrupt moderation
- *
- *     Revision 1.29.2.13  2002/01/14 12:44:52  mlindner
- *     Fix: Rlmt modes
- *
- *     Revision 1.29.2.12  2001/12/07 12:06:18  mlindner
- *     Fix: malloc -> slab changes
- *
- *     Revision 1.29.2.11  2001/12/06 15:19:20  mlindner
- *     Add: DMA attributes
- *     Fix: Module initialisation
- *     Fix: pci_map_single and pci_unmap_single replaced
- *
- *     Revision 1.29.2.10  2001/12/06 09:56:50  mlindner
- *     Corrected some printk's
- *
- *     Revision 1.29.2.9  2001/09/05 12:15:34  mlindner
- *     Add: LBFO Changes
- *     Fix: Counter Errors (Jumbo == to long errors)
- *     Fix: Changed pAC->PciDev declaration
- *     Fix: too short counters
- *
- *     Revision 1.29.2.8  2001/06/25 12:10:44  mlindner
- *     fix: ReceiveIrq() changed.
- *
- *     Revision 1.29.2.7  2001/06/25 08:07:05  mlindner
- *     fix: RLMT locking in ReceiveIrq() changed.
- *
- *     Revision 1.29.2.6  2001/05/21 07:59:29  mlindner
- *     fix: MTU init problems
- *
- *     Revision 1.29.2.5  2001/05/08 11:25:08  mlindner
- *     fix: removed VLAN error message
- *
- *     Revision 1.29.2.4  2001/05/04 13:31:43  gklug
- *     fix: do not handle eth_copy on bad fragments received.
- *
- *     Revision 1.29.2.3  2001/04/23 08:06:43  mlindner
- *     Fix: error handling
- *
- *     Revision 1.29.2.2  2001/03/15 12:04:54  mlindner
- *     Fixed memory problem
- *
- *     Revision 1.29.2.1  2001/03/12 16:41:44  mlindner
- *     add: procfs function
- *     add: dual-net function
- *     add: RLMT networks
- *     add: extended PNMI features
- *
- *     Kernel 2.4.x specific:
- *     Revision 1.xx  2000/09/12 13:31:56  cgoos
- *     Fixed missign "dev=NULL in skge_probe.
- *     Added counting for jumbo frames (corrects error statistic).
- *     Removed VLAN tag check (enables VLAN support).
- *
- *     Kernel 2.2.x specific:
- *     Revision 1.29  2000/02/21 13:31:56  cgoos
- *     Fixed "unused" warning for UltraSPARC change.
- *
- *     Partially kernel 2.2.x specific:
- *     Revision 1.28  2000/02/21 10:32:36  cgoos
- *     Added fixes for UltraSPARC.
- *     Now printing RlmtMode and PrefPort setting at startup.
- *     Changed XmitFrame return value.
- *     Fixed rx checksum calculation for BIG ENDIAN systems.
- *     Fixed rx jumbo frames counted as ierrors.
- *
- *
- *     Revision 1.27  1999/11/25 09:06:28  cgoos
- *     Changed base_addr to unsigned long.
- *
- *     Revision 1.26  1999/11/22 13:29:16  cgoos
- *     Changed license header to GPL.
- *     Changes for inclusion in linux kernel (2.2.13).
- *     Removed 2.0.x defines.
- *     Changed SkGeProbe to skge_probe.
- *     Added checks in SkGeIoctl.
- *
- *     Revision 1.25  1999/10/07 14:47:52  cgoos
- *     Changed 984x to 98xx.
- *
- *     Revision 1.24  1999/09/30 07:21:01  cgoos
- *     Removed SK_RLMT_SLOW_LOOKAHEAD option.
- *     Giving spanning tree packets also to OS now.
- *
- *     Revision 1.23  1999/09/29 07:36:50  cgoos
- *     Changed assignment for IsBc/IsMc.
- *
- *     Revision 1.22  1999/09/28 12:57:09  cgoos
- *     Added CheckQueue also to Single-Port-ISR.
- *
- *     Revision 1.21  1999/09/28 12:42:41  cgoos
- *     Changed parameter strings for RlmtMode.
- *
- *     Revision 1.20  1999/09/28 12:37:57  cgoos
- *     Added CheckQueue for fast delivery of RLMT frames.
- *
- *     Revision 1.19  1999/09/16 07:57:25  cgoos
- *     Copperfield changes.
- *
- *     Revision 1.18  1999/09/03 13:06:30  cgoos
- *     Fixed RlmtMode=CheckSeg bug: wrong DEV_KFREE_SKB in RLMT_SEND caused
- *     double allocated skb's.
- *     FrameStat in ReceiveIrq was accessed via wrong Rxd.
- *     Queue size for async. standby Tx queue was zero.
- *     FillRxLimit of 0 could cause problems with ReQueue, changed to 1.
- *     Removed debug output of checksum statistic.
- *
- *     Revision 1.17  1999/08/11 13:55:27  cgoos
- *     Transmit descriptor polling was not reenabled after SkGePortInit.
- *
- *     Revision 1.16  1999/07/27 15:17:29  cgoos
- *     Added some "\n" in output strings (removed while debuging...).
- *
- *     Revision 1.15  1999/07/23 12:09:30  cgoos
- *     Performance optimization, rx checksumming, large frame support.
- *
- *     Revision 1.14  1999/07/14 11:26:27  cgoos
- *     Removed Link LED settings (now in RLMT).
- *     Added status output at NET UP.
- *     Fixed SMP problems with Tx and SWITCH running in parallel.
- *     Fixed return code problem at RLMT_SEND event.
- *
- *     Revision 1.13  1999/04/07 10:11:42  cgoos
- *     Fixed Single Port problems.
- *     Fixed Multi-Adapter problems.
- *     Always display startup string.
- *
- *     Revision 1.12  1999/03/29 12:26:37  cgoos
- *     Reversed locking to fine granularity.
- *     Fixed skb double alloc problem (caused by incorrect xmit return code).
- *     Enhanced function descriptions.
- *
- *     Revision 1.11  1999/03/15 13:10:51  cgoos
- *     Changed device identifier in output string to ethX.
- *
- *     Revision 1.10  1999/03/15 12:12:34  cgoos
- *     Changed copyright notice.
- *
- *     Revision 1.9  1999/03/15 12:10:17  cgoos
- *     Changed locking to one driver lock.
- *     Added check of SK_AC-size (for consistency with library).
- *
- *     Revision 1.8  1999/03/08 11:44:02  cgoos
- *     Fixed missing dev->tbusy in SkGeXmit.
- *     Changed large frame (jumbo) buffer number.
- *     Added copying of short frames.
- *
- *     Revision 1.7  1999/03/04 13:26:57  cgoos
- *     Fixed spinlock calls for SMP.
- *
- *     Revision 1.6  1999/03/02 09:53:51  cgoos
- *     Added descriptor revertion for big endian machines.
- *
- *     Revision 1.5  1999/03/01 08:50:59  cgoos
- *     Fixed SkGeChangeMtu.
- *     Fixed pci config space accesses.
- *
- *     Revision 1.4  1999/02/18 15:48:44  cgoos
- *     Corrected some printk's.
- *
- *     Revision 1.3  1999/02/18 12:45:55  cgoos
- *     Changed SK_MAX_CARD_PARAM to default 16
- *
- *     Revision 1.2  1999/02/18 10:55:32  cgoos
- *     Removed SkGeDrvTimeStamp function.
- *     Printing "ethX:" before adapter type at adapter init.
- *
- *
- *     10-Feb-1999 cg  Created, based on Linux' acenic.c, 3c59x.c and
- *                     SysKonnects GEnesis Solaris driver
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * Possible compiler options (#define xxx / -Dxxx):
- *
- *     debugging can be enable by changing SK_DEBUG_CHKMOD and
- *     SK_DEBUG_CHKCAT in makefile (described there).
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * Description:
- *
- *     This is the main module of the Linux GE driver.
- *
- *     All source files except skge.c, skdrv1st.h, skdrv2nd.h and sktypes.h
- *     are part of SysKonnect's COMMON MODULES for the SK-98xx adapters.
- *     Those are used for drivers on multiple OS', so some thing may seem
- *     unnecessary complicated on Linux. Please do not try to 'clean up'
- *     them without VERY good reasons, because this will make it more
- *     difficult to keep the Linux driver in synchronisation with the
- *     other versions.
- *
- * Include file hierarchy:
- *
- *     <linux/module.h>
- *
- *     "h/skdrv1st.h"
- *             <linux/version.h>
- *             <linux/types.h>
- *             <linux/kernel.h>
- *             <linux/string.h>
- *             <linux/errno.h>
- *             <linux/ioport.h>
- *             <linux/slab.h>
- *             <linux/interrupt.h>
- *             <linux/pci.h>
- *             <asm/byteorder.h>
- *             <asm/bitops.h>
- *             <asm/io.h>
- *             <linux/netdevice.h>
- *             <linux/etherdevice.h>
- *             <linux/skbuff.h>
- *         those three depending on kernel version used:
- *             <linux/bios32.h>
- *             <linux/init.h>
- *             <asm/uaccess.h>
- *             <net/checksum.h>
- *
- *             "h/skerror.h"
- *             "h/skdebug.h"
- *             "h/sktypes.h"
- *             "h/lm80.h"
- *             "h/xmac_ii.h"
- *
- *      "h/skdrv2nd.h"
- *             "h/skqueue.h"
- *             "h/skgehwt.h"
- *             "h/sktimer.h"
- *             "h/ski2c.h"
- *             "h/skgepnmi.h"
- *             "h/skvpd.h"
- *             "h/skgehw.h"
- *             "h/skgeinit.h"
- *             "h/skaddr.h"
- *             "h/skgesirq.h"
- *             "h/skcsum.h"
- *             "h/skrlmt.h"
- *
- ******************************************************************************/
-
-#include <config.h>
-
-#include       "h/skversion.h"
-#if 0
-#include       <linux/module.h>
-#include       <linux/init.h>
-#include       <linux/proc_fs.h>
-#endif
-#include       "h/skdrv1st.h"
-#include       "h/skdrv2nd.h"
-
-
-/* defines ******************************************************************/
-/* for debuging on x86 only */
-/* #define BREAKPOINT() asm(" int $3"); */
-
-/* use the scatter-gather functionality with sendfile() */
-#if 0
-#define SK_ZEROCOPY
-#endif
-
-/* use of a transmit complete interrupt */
-#define USE_TX_COMPLETE
-
-/* use interrupt moderation (for tx complete only) */
-#define USE_INT_MOD
-#define INTS_PER_SEC   1000
-
-/*
- * threshold for copying small receive frames
- * set to 0 to avoid copying, set to 9001 to copy all frames
- */
-#define SK_COPY_THRESHOLD      50
-
-/* number of adapters that can be configured via command line params */
-#define SK_MAX_CARD_PARAM      16
-
-
-/*
- * use those defines for a compile-in version of the driver instead
- * of command line parameters
- */
-/* #define LINK_SPEED_A        {"Auto", }              */
-/* #define LINK_SPEED_B        {"Auto", }              */
-/* #define AUTO_NEG_A  {"Sense", }             */
-/* #define AUTO_NEG_B  {"Sense", }             */
-/* #define DUP_CAP_A   {"Both", }              */
-/* #define DUP_CAP_B   {"Both", }              */
-/* #define FLOW_CTRL_A {"SymOrRem", }          */
-/* #define FLOW_CTRL_B {"SymOrRem", }          */
-/* #define ROLE_A      {"Auto", }              */
-/* #define ROLE_B      {"Auto", }              */
-/* #define PREF_PORT   {"A", }                 */
-/* #define RLMT_MODE   {"CheckLinkState", }    */
-
-#define DEV_KFREE_SKB(skb) dev_kfree_skb(skb)
-#define DEV_KFREE_SKB_IRQ(skb) dev_kfree_skb_irq(skb)
-#define DEV_KFREE_SKB_ANY(skb) dev_kfree_skb_any(skb)
-
-/* function prototypes ******************************************************/
-static void    FreeResources(struct SK_NET_DEVICE *dev);
-static int     SkGeBoardInit(struct SK_NET_DEVICE *dev, SK_AC *pAC);
-static SK_BOOL BoardAllocMem(SK_AC *pAC);
-static void    BoardFreeMem(SK_AC *pAC);
-static void    BoardInitMem(SK_AC *pAC);
-static void    SetupRing(SK_AC*, void*, uintptr_t, RXD**, RXD**, RXD**,
-                       int*, SK_BOOL);
-
-#if 0
-static void    SkGeIsr(int irq, void *dev_id, struct pt_regs *ptregs);
-static void    SkGeIsrOnePort(int irq, void *dev_id, struct pt_regs *ptregs);
-static int     SkGeOpen(struct SK_NET_DEVICE *dev);
-static int     SkGeClose(struct SK_NET_DEVICE *dev);
-static int     SkGeXmit(struct sk_buff *skb, struct SK_NET_DEVICE *dev);
-static int     SkGeSetMacAddr(struct SK_NET_DEVICE *dev, void *p);
-static void    SkGeSetRxMode(struct SK_NET_DEVICE *dev);
-static struct  net_device_stats *SkGeStats(struct SK_NET_DEVICE *dev);
-static int     SkGeIoctl(struct SK_NET_DEVICE *dev, struct ifreq *rq, int cmd);
-#else
-void   SkGeIsr(int irq, void *dev_id, struct pt_regs *ptregs);
-void   SkGeIsrOnePort(int irq, void *dev_id, struct pt_regs *ptregs);
-int    SkGeOpen(struct SK_NET_DEVICE *dev);
-int    SkGeClose(struct SK_NET_DEVICE *dev);
-int    SkGeXmit(struct sk_buff *skb, struct SK_NET_DEVICE *dev);
-#endif
-static void    GetConfiguration(SK_AC*);
-static void    ProductStr(SK_AC*);
-static int     XmitFrame(SK_AC*, TX_PORT*, struct sk_buff*);
-static void    FreeTxDescriptors(SK_AC*pAC, TX_PORT*);
-static void    FillRxRing(SK_AC*, RX_PORT*);
-static SK_BOOL FillRxDescriptor(SK_AC*, RX_PORT*);
-#if 0
-static void    ReceiveIrq(SK_AC*, RX_PORT*, SK_BOOL);
-#else
-void   ReceiveIrq(SK_AC*, RX_PORT*, SK_BOOL);
-#endif
-static void ClearAndStartRx(SK_AC*, int);
-static void    ClearTxIrq(SK_AC*, int, int);
-static void    ClearRxRing(SK_AC*, RX_PORT*);
-static void    ClearTxRing(SK_AC*, TX_PORT*);
-#if 0
-static void    SetQueueSizes(SK_AC     *pAC);
-
-static int     SkGeChangeMtu(struct SK_NET_DEVICE *dev, int new_mtu);
-#endif
-static void    PortReInitBmu(SK_AC*, int);
-#if 0
-static int     SkGeIocMib(DEV_NET*, unsigned int, int);
-static int     XmitFrameSG(SK_AC*, TX_PORT*, struct sk_buff*);
-#endif
-
-/*Extern */
-
-/* external Proc function */
-extern int proc_read(
-       char    *buffer,
-       char    **buffer_location,
-       off_t   offset,
-       int             buffer_length,
-       int             *eof,
-       void    *data);
-
-#ifdef DEBUG
-static void    DumpMsg(struct sk_buff*, char*);
-static void    DumpData(char*, int);
-static void    DumpLong(char*, int);
-#endif
-void dump_frag( SK_U8 *data, int length);
-
-/* global variables *********************************************************/
-#if 0
-static const char *BootString = BOOT_STRING;
-#endif
-struct SK_NET_DEVICE *SkGeRootDev = NULL;
-static int probed __initdata = 0;
-
-/* local variables **********************************************************/
-static uintptr_t TxQueueAddr[SK_MAX_MACS][2] = {{0x680, 0x600},{0x780, 0x700}};
-static uintptr_t RxQueueAddr[SK_MAX_MACS] = {0x400, 0x480};
-
-
-/* local variables **********************************************************/
-const char SK_Root_Dir_entry[8];
-
-#if 0
-static struct proc_dir_entry   *pSkRootDir;
-#endif
-
-
-static struct pci_device_id supported[] = {
-       {PCI_VENDOR_ID_3COM, 0x1700},
-       {PCI_VENDOR_ID_SYSKONNECT, PCI_DEVICE_ID_SYSKONNECT_GE},
-       {PCI_VENDOR_ID_SYSKONNECT, PCI_DEVICE_ID_SYSKONNECT_YU},
-       {}
-};
-
-
-/*****************************************************************************
- *
- *     skge_probe - find all SK-98xx adapters
- *
- * Description:
- *     This function scans the PCI bus for SK-98xx adapters. Resources for
- *     each adapter are allocated and the adapter is brought into Init 1
- *     state.
- *
- * Returns:
- *     0, if everything is ok
- *     !=0, on error
- */
-#if 0
-static int __init skge_probe (void)
-#else
-int skge_probe (struct eth_device ** ret_dev)
-#endif
-{
-#if 0
-       int                     proc_root_initialized = 0;
-#endif
-       int                     boards_found = 0;
-#if 0
-       int                     vendor_flag = SK_FALSE;
-#endif
-       SK_AC                   *pAC;
-       DEV_NET                 *pNet = NULL;
-#if 0
-       struct proc_dir_entry   *pProcFile;
-       struct pci_dev  *pdev = NULL;
-       unsigned long           base_address;
-#else
-       u32                     base_address;
-#endif
-       struct SK_NET_DEVICE *dev = NULL;
-#if 0
-       SK_BOOL DeviceFound = SK_FALSE;
-#endif
-       SK_BOOL BootStringCount = SK_FALSE;
-#if 1
-       pci_dev_t devno;
-#endif
-
-       if (probed)
-               return -ENODEV;
-       probed++;
-
-       if (!pci_present())             /* is PCI support present? */
-               return -ENODEV;
-
-#if 0
-               while((pdev = pci_find_class(PCI_CLASS_NETWORK_ETHERNET << 8, pdev)))
-#else
-               while((devno = pci_find_devices (supported, boards_found)) >= 0)
-#endif
-               {
-
-               dev = NULL;
-               pNet = NULL;
-
-
-#if 0
-               SK_PCI_ISCOMPLIANT(vendor_flag, pdev);
-               if (!vendor_flag)
-                       continue;
-#endif
-
-/*             if ((pdev->vendor != PCI_VENDOR_ID_SYSKONNECT) &&
-                       ((pdev->device != PCI_DEVICE_ID_SYSKONNECT_GE) ||
-                       (pdev->device != PCI_DEVICE_ID_SYSKONNECT_YU))){
-                       continue;
-               }
-*/
-#if 0
-               /* Configure DMA attributes. */
-               if (pci_set_dma_mask(pdev, (u64) 0xffffffffffffffff) &&
-                       pci_set_dma_mask(pdev, (u64) 0xffffffff))
-                       continue;
-#endif
-
-
-#if 0
-               if ((dev = init_etherdev(dev, sizeof(DEV_NET))) == NULL) {
-                       printk(KERN_ERR "Unable to allocate etherdev "
-                              "structure!\n");
-                       break;
-               }
-#else
-               dev = malloc (sizeof *dev);
-               memset(dev, 0, sizeof(*dev));
-               dev->priv = malloc(sizeof(DEV_NET));
-#endif
-
-               if (dev->priv == NULL) {
-                       printk(KERN_ERR "Unable to allocate adapter "
-                              "structure!\n");
-                       break;
-               }
-
-               pNet = dev->priv;
-               pNet->pAC = kmalloc(sizeof(SK_AC), GFP_KERNEL);
-               if (pNet->pAC == NULL){
-                       kfree(dev->priv);
-                       printk(KERN_ERR "Unable to allocate adapter "
-                              "structure!\n");
-                       break;
-               }
-
-               /* Print message */
-               if (!BootStringCount) {
-                       /* set display flag to TRUE so that */
-                       /* we only display this string ONCE */
-                       BootStringCount = SK_TRUE;
-#ifdef SK98_INFO
-                       printk("%s\n", BootString);
-#endif
-               }
-
-               memset(pNet->pAC, 0, sizeof(SK_AC));
-               pAC = pNet->pAC;
-#if 0
-               pAC->PciDev = pdev;
-               pAC->PciDevId = pdev->device;
-               pAC->dev[0] = dev;
-               pAC->dev[1] = dev;
-#else
-               pAC->PciDev = devno;
-               ret_dev[0] = pAC->dev[0] = dev;
-               ret_dev[1] = pAC->dev[1] = dev;
-#endif
-               sprintf(pAC->Name, "SysKonnect SK-98xx");
-               pAC->CheckQueue = SK_FALSE;
-
-               pNet->Mtu = 1500;
-               pNet->Up = 0;
-#if 0
-               dev->irq = pdev->irq;
-
-               dev->open =             &SkGeOpen;
-               dev->stop =             &SkGeClose;
-               dev->hard_start_xmit =  &SkGeXmit;
-               dev->get_stats =        &SkGeStats;
-               dev->set_multicast_list = &SkGeSetRxMode;
-               dev->set_mac_address =  &SkGeSetMacAddr;
-               dev->do_ioctl =         &SkGeIoctl;
-               dev->change_mtu =       &SkGeChangeMtu;
-               dev->flags &=           ~IFF_RUNNING;
-#endif
-
-#ifdef SK_ZEROCOPY
-               if (pAC->GIni.GIChipId == CHIP_ID_YUKON) {
-                       /* Use only if yukon hardware */
-                       /* SK and ZEROCOPY - fly baby... */
-                       dev->features |= NETIF_F_SG | NETIF_F_IP_CSUM;
-               }
-#endif
-
-#if 0
-               /*
-                * Dummy value.
-                */
-               dev->base_addr = 42;
-               pci_set_master(pdev);
-
-               pci_set_master(pdev);
-               base_address = pci_resource_start (pdev, 0);
-#else
-               pci_write_config_dword(devno,
-                                      PCI_COMMAND,
-                                      PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER);
-               pci_read_config_dword (devno, PCI_BASE_ADDRESS_0,
-                                      &base_address);
-#endif
-
-#ifdef SK_BIG_ENDIAN
-               /*
-                * On big endian machines, we use the adapter's aibility of
-                * reading the descriptors as big endian.
-                */
-               {
-               SK_U32          our2;
-                       SkPciReadCfgDWord(pAC, PCI_OUR_REG_2, &our2);
-                       our2 |= PCI_REV_DESC;
-                       SkPciWriteCfgDWord(pAC, PCI_OUR_REG_2, our2);
-               }
-#endif
-
-               /*
-                * Remap the regs into kernel space.
-                */
-#if 0
-               pAC->IoBase = (char*)ioremap(base_address, 0x4000);
-#else
-               pAC->IoBase = (char*)pci_mem_to_phys(devno, base_address);
-#endif
-
-               if (!pAC->IoBase){
-                       printk(KERN_ERR "%s:  Unable to map I/O register, "
-                              "SK 98xx No. %i will be disabled.\n",
-                              dev->name, boards_found);
-                       kfree(dev);
-                       break;
-               }
-
-               pAC->Index = boards_found;
-               if (SkGeBoardInit(dev, pAC)) {
-                       FreeResources(dev);
-                       kfree(dev);
-                       continue;
-               }
-
-#if 0
-               memcpy((caddr_t) &dev->dev_addr,
-                       (caddr_t) &pAC->Addr.Net[0].CurrentMacAddress, 6);
-#else
-               memcpy((caddr_t) &dev->enetaddr,
-                       (caddr_t) &pAC->Addr.Net[0].CurrentMacAddress, 6);
-#endif
-
-#if 0
-               /* First adapter... Create proc and print message */
-               if (!DeviceFound) {
-                       DeviceFound = SK_TRUE;
-                       SK_MEMCPY(&SK_Root_Dir_entry, BootString,
-                               sizeof(SK_Root_Dir_entry) - 1);
-
-                       /*Create proc (directory)*/
-                       if(!proc_root_initialized) {
-                               pSkRootDir = create_proc_entry(SK_Root_Dir_entry,
-                                       S_IFDIR | S_IWUSR | S_IRUGO | S_IXUGO, proc_net);
-                               proc_root_initialized = 1;
-                       }
-
-                       pSkRootDir->owner = THIS_MODULE;
-               }
-
-
-               /* Create proc file */
-               pProcFile = create_proc_entry(dev->name,
-                       S_IFREG | S_IXUSR | S_IWGRP | S_IROTH,
-                       pSkRootDir);
-
-
-               pProcFile->read_proc = proc_read;
-               pProcFile->write_proc = NULL;
-               pProcFile->nlink = 1;
-               pProcFile->size = sizeof(dev->name + 1);
-               pProcFile->data = (void *)pProcFile;
-#endif
-
-               pNet->PortNr = 0;
-               pNet->NetNr = 0;
-
-#ifdef SK_ZEROCOPY
-                       if (pAC->GIni.GIChipId == CHIP_ID_YUKON) {
-                               /* SG and ZEROCOPY - fly baby... */
-                               dev->features |= NETIF_F_SG | NETIF_F_IP_CSUM;
-                       }
-#endif
-
-               boards_found++;
-
-               /* More then one port found */
-               if ((pAC->GIni.GIMacsFound == 2 ) && (pAC->RlmtNets == 2)) {
-#if 0
-                       if ((dev = init_etherdev(NULL, sizeof(DEV_NET))) == 0) {
-                               printk(KERN_ERR "Unable to allocate etherdev "
-                                       "structure!\n");
-                               break;
-                       }
-#else
-                       dev = malloc (sizeof *dev);
-                       memset(dev, 0, sizeof(*dev));
-                       dev->priv = malloc(sizeof(DEV_NET));
-#endif
-
-                       pAC->dev[1] = dev;
-                       pNet = dev->priv;
-                       pNet->PortNr = 1;
-                       pNet->NetNr = 1;
-                       pNet->pAC = pAC;
-                       pNet->Mtu = 1500;
-                       pNet->Up = 0;
-
-#if 0
-                       dev->open =             &SkGeOpen;
-                       dev->stop =             &SkGeClose;
-                       dev->hard_start_xmit =  &SkGeXmit;
-                       dev->get_stats =        &SkGeStats;
-                       dev->set_multicast_list = &SkGeSetRxMode;
-                       dev->set_mac_address =  &SkGeSetMacAddr;
-                       dev->do_ioctl =         &SkGeIoctl;
-                       dev->change_mtu =       &SkGeChangeMtu;
-                       dev->flags &=           ~IFF_RUNNING;
-#endif
-
-#ifdef SK_ZEROCOPY
-                       if (pAC->GIni.GIChipId == CHIP_ID_YUKON) {
-                               /* SG and ZEROCOPY - fly baby... */
-                               dev->features |= NETIF_F_SG | NETIF_F_IP_CSUM;
-                       }
-#endif
-
-#if 0
-                       pProcFile = create_proc_entry(dev->name,
-                               S_IFREG | S_IXUSR | S_IWGRP | S_IROTH,
-                               pSkRootDir);
-
-
-                       pProcFile->read_proc = proc_read;
-                       pProcFile->write_proc = NULL;
-                       pProcFile->nlink = 1;
-                       pProcFile->size = sizeof(dev->name + 1);
-                       pProcFile->data = (void *)pProcFile;
-#endif
-
-#if 0
-                       memcpy((caddr_t) &dev->dev_addr,
-                       (caddr_t) &pAC->Addr.Net[1].CurrentMacAddress, 6);
-#else
-                       memcpy((caddr_t) &dev->enetaddr,
-                       (caddr_t) &pAC->Addr.Net[1].CurrentMacAddress, 6);
-#endif
-
-                       printk("%s: %s\n", dev->name, pAC->DeviceStr);
-                       printk("      PrefPort:B  RlmtMode:Dual Check Link State\n");
-
-               }
-
-
-               /* Save the hardware revision */
-               pAC->HWRevision = (((pAC->GIni.GIPciHwRev >> 4) & 0x0F)*10) +
-                       (pAC->GIni.GIPciHwRev & 0x0F);
-
-               /*
-                * This is bollocks, but we need to tell the net-init
-                * code that it shall go for the next device.
-                */
-#if 0
-#ifndef MODULE
-               dev->base_addr = 0;
-#endif
-#endif
-       }
-
-       /*
-        * If we're at this point we're going through skge_probe() for
-        * the first time.  Return success (0) if we've initialized 1
-        * or more boards. Otherwise, return failure (-ENODEV).
-        */
-
-       return boards_found;
-} /* skge_probe */
-
-
-/*****************************************************************************
- *
- *     FreeResources - release resources allocated for adapter
- *
- * Description:
- *     This function releases the IRQ, unmaps the IO and
- *     frees the desriptor ring.
- *
- * Returns: N/A
- *
- */
-static void FreeResources(struct SK_NET_DEVICE *dev)
-{
-SK_U32 AllocFlag;
-DEV_NET                *pNet;
-SK_AC          *pAC;
-
-       if (dev->priv) {
-               pNet = (DEV_NET*) dev->priv;
-               pAC = pNet->pAC;
-               AllocFlag = pAC->AllocFlag;
-#if 0
-               if (AllocFlag & SK_ALLOC_IRQ) {
-                       free_irq(dev->irq, dev);
-               }
-               if (pAC->IoBase) {
-                       iounmap(pAC->IoBase);
-               }
-#endif
-               if (pAC->pDescrMem) {
-                       BoardFreeMem(pAC);
-               }
-       }
-
-} /* FreeResources */
-
-#if 0
-MODULE_AUTHOR("Mirko Lindner <mlindner@syskonnect.de>");
-MODULE_DESCRIPTION("SysKonnect SK-NET Gigabit Ethernet SK-98xx driver");
-MODULE_LICENSE("GPL");
-MODULE_PARM(Speed_A,    "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s");
-MODULE_PARM(Speed_B,    "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s");
-MODULE_PARM(AutoNeg_A,  "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s");
-MODULE_PARM(AutoNeg_B,  "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s");
-MODULE_PARM(DupCap_A,   "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s");
-MODULE_PARM(DupCap_B,   "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s");
-MODULE_PARM(FlowCtrl_A, "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s");
-MODULE_PARM(FlowCtrl_B, "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s");
-MODULE_PARM(Role_A,        "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s");
-MODULE_PARM(Role_B,        "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s");
-MODULE_PARM(PrefPort,   "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s");
-MODULE_PARM(RlmtMode,   "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s");
-/* not used, just there because every driver should have them: */
-MODULE_PARM(options,    "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "i");
-MODULE_PARM(debug,      "i");
-#endif
-
-
-#ifdef LINK_SPEED_A
-static char *Speed_A[SK_MAX_CARD_PARAM] = LINK_SPEED_A;
-#else
-static char *Speed_A[SK_MAX_CARD_PARAM] = {"", };
-#endif
-
-#ifdef LINK_SPEED_B
-static char *Speed_B[SK_MAX_CARD_PARAM] = LINK_SPEED_B;
-#else
-static char *Speed_B[SK_MAX_CARD_PARAM] = {"", };
-#endif
-
-#ifdef AUTO_NEG_A
-static char *AutoNeg_A[SK_MAX_CARD_PARAM] = AUTO_NEG_A;
-#else
-static char *AutoNeg_A[SK_MAX_CARD_PARAM] = {"", };
-#endif
-
-#ifdef DUP_CAP_A
-static char *DupCap_A[SK_MAX_CARD_PARAM] = DUP_CAP_A;
-#else
-static char *DupCap_A[SK_MAX_CARD_PARAM] = {"", };
-#endif
-
-#ifdef FLOW_CTRL_A
-static char *FlowCtrl_A[SK_MAX_CARD_PARAM] = FLOW_CTRL_A;
-#else
-static char *FlowCtrl_A[SK_MAX_CARD_PARAM] = {"", };
-#endif
-
-#ifdef ROLE_A
-static char *Role_A[SK_MAX_CARD_PARAM] = ROLE_A;
-#else
-static char *Role_A[SK_MAX_CARD_PARAM] = {"", };
-#endif
-
-#ifdef AUTO_NEG_B
-static char *AutoNeg_B[SK_MAX_CARD_PARAM] = AUTO_NEG_B;
-#else
-static char *AutoNeg_B[SK_MAX_CARD_PARAM] = {"", };
-#endif
-
-#ifdef DUP_CAP_B
-static char *DupCap_B[SK_MAX_CARD_PARAM] = DUP_CAP_B;
-#else
-static char *DupCap_B[SK_MAX_CARD_PARAM] = {"", };
-#endif
-
-#ifdef FLOW_CTRL_B
-static char *FlowCtrl_B[SK_MAX_CARD_PARAM] = FLOW_CTRL_B;
-#else
-static char *FlowCtrl_B[SK_MAX_CARD_PARAM] = {"", };
-#endif
-
-#ifdef ROLE_B
-static char *Role_B[SK_MAX_CARD_PARAM] = ROLE_B;
-#else
-static char *Role_B[SK_MAX_CARD_PARAM] = {"", };
-#endif
-
-#ifdef PREF_PORT
-static char *PrefPort[SK_MAX_CARD_PARAM] = PREF_PORT;
-#else
-static char *PrefPort[SK_MAX_CARD_PARAM] = {"", };
-#endif
-
-#ifdef RLMT_MODE
-static char *RlmtMode[SK_MAX_CARD_PARAM] = RLMT_MODE;
-#else
-static char *RlmtMode[SK_MAX_CARD_PARAM] = {"", };
-#endif
-
-#if 0
-static int debug = 0; /* not used */
-static int options[SK_MAX_CARD_PARAM] = {0, }; /* not used */
-
-
-/*****************************************************************************
- *
- *     skge_init_module - module initialization function
- *
- * Description:
- *     Very simple, only call skge_probe and return approriate result.
- *
- * Returns:
- *     0, if everything is ok
- *     !=0, on error
- */
-static int __init skge_init_module(void)
-{
-       int cards;
-       SkGeRootDev = NULL;
-
-       /* just to avoid warnings ... */
-       debug = 0;
-       options[0] = 0;
-
-       cards = skge_probe();
-       if (cards == 0) {
-               printk("sk98lin: No adapter found.\n");
-       }
-       return cards ? 0 : -ENODEV;
-} /* skge_init_module */
-
-
-/*****************************************************************************
- *
- *     skge_cleanup_module - module unload function
- *
- * Description:
- *     Disable adapter if it is still running, free resources,
- *     free device struct.
- *
- * Returns: N/A
- */
-static void __exit skge_cleanup_module(void)
-{
-DEV_NET                *pNet;
-SK_AC          *pAC;
-struct SK_NET_DEVICE *next;
-unsigned long Flags;
-SK_EVPARA EvPara;
-
-       while (SkGeRootDev) {
-               pNet = (DEV_NET*) SkGeRootDev->priv;
-               pAC = pNet->pAC;
-               next = pAC->Next;
-
-               netif_stop_queue(SkGeRootDev);
-               SkGeYellowLED(pAC, pAC->IoBase, 0);
-
-               if(pAC->BoardLevel == 2) {
-                       /* board is still alive */
-                       spin_lock_irqsave(&pAC->SlowPathLock, Flags);
-                       EvPara.Para32[0] = 0;
-                       EvPara.Para32[1] = -1;
-                       SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_STOP, EvPara);
-                       EvPara.Para32[0] = 1;
-                       EvPara.Para32[1] = -1;
-                       SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_STOP, EvPara);
-                       SkEventDispatcher(pAC, pAC->IoBase);
-                       /* disable interrupts */
-                       SK_OUT32(pAC->IoBase, B0_IMSK, 0);
-                       SkGeDeInit(pAC, pAC->IoBase);
-                       spin_unlock_irqrestore(&pAC->SlowPathLock, Flags);
-                       pAC->BoardLevel = 0;
-                       /* We do NOT check here, if IRQ was pending, of course*/
-               }
-
-               if(pAC->BoardLevel == 1) {
-                       /* board is still alive */
-                       SkGeDeInit(pAC, pAC->IoBase);
-                       pAC->BoardLevel = 0;
-               }
-
-               if ((pAC->GIni.GIMacsFound == 2) && pAC->RlmtNets == 2){
-                       unregister_netdev(pAC->dev[1]);
-                       kfree(pAC->dev[1]);
-               }
-
-               FreeResources(SkGeRootDev);
-
-               SkGeRootDev->get_stats = NULL;
-               /*
-                * otherwise unregister_netdev calls get_stats with
-                * invalid IO ...  :-(
-                */
-               unregister_netdev(SkGeRootDev);
-               kfree(SkGeRootDev);
-               kfree(pAC);
-               SkGeRootDev = next;
-       }
-
-       /* clear proc-dir */
-       remove_proc_entry(pSkRootDir->name, proc_net);
-
-} /* skge_cleanup_module */
-
-module_init(skge_init_module);
-module_exit(skge_cleanup_module);
-#endif
-
-
-/*****************************************************************************
- *
- *     SkGeBoardInit - do level 0 and 1 initialization
- *
- * Description:
- *     This function prepares the board hardware for running. The desriptor
- *     ring is set up, the IRQ is allocated and the configuration settings
- *     are examined.
- *
- * Returns:
- *     0, if everything is ok
- *     !=0, on error
- */
-static int __init SkGeBoardInit(struct SK_NET_DEVICE *dev, SK_AC *pAC)
-{
-short  i;
-unsigned long Flags;
-char   *DescrString = "sk98lin: Driver for Linux"; /* this is given to PNMI */
-char   *VerStr = VER_STRING;
-#if 0
-int    Ret;                    /* return code of request_irq */
-#endif
-SK_BOOL        DualNet;
-
-       SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ENTRY,
-               ("IoBase: %08lX\n", (unsigned long)pAC->IoBase));
-       for (i=0; i<SK_MAX_MACS; i++) {
-               pAC->TxPort[i][0].HwAddr = pAC->IoBase + TxQueueAddr[i][0];
-               pAC->TxPort[i][0].PortIndex = i;
-               pAC->RxPort[i].HwAddr = pAC->IoBase + RxQueueAddr[i];
-               pAC->RxPort[i].PortIndex = i;
-       }
-
-       /* Initialize the mutexes */
-       for (i=0; i<SK_MAX_MACS; i++) {
-               spin_lock_init(&pAC->TxPort[i][0].TxDesRingLock);
-               spin_lock_init(&pAC->RxPort[i].RxDesRingLock);
-       }
-       spin_lock_init(&pAC->SlowPathLock);
-
-       /* level 0 init common modules here */
-
-       spin_lock_irqsave(&pAC->SlowPathLock, Flags);
-       /* Does a RESET on board ...*/
-       if (SkGeInit(pAC, pAC->IoBase, 0) != 0) {
-               printk("HWInit (0) failed.\n");
-               spin_unlock_irqrestore(&pAC->SlowPathLock, Flags);
-               return(-EAGAIN);
-       }
-       SkI2cInit(  pAC, pAC->IoBase, 0);
-       SkEventInit(pAC, pAC->IoBase, 0);
-       SkPnmiInit( pAC, pAC->IoBase, 0);
-       SkAddrInit( pAC, pAC->IoBase, 0);
-       SkRlmtInit( pAC, pAC->IoBase, 0);
-       SkTimerInit(pAC, pAC->IoBase, 0);
-
-       pAC->BoardLevel = 0;
-       pAC->RxBufSize = ETH_BUF_SIZE;
-
-       SK_PNMI_SET_DRIVER_DESCR(pAC, DescrString);
-       SK_PNMI_SET_DRIVER_VER(pAC, VerStr);
-
-       spin_unlock_irqrestore(&pAC->SlowPathLock, Flags);
-
-       /* level 1 init common modules here (HW init) */
-       spin_lock_irqsave(&pAC->SlowPathLock, Flags);
-       if (SkGeInit(pAC, pAC->IoBase, 1) != 0) {
-               printk("HWInit (1) failed.\n");
-               spin_unlock_irqrestore(&pAC->SlowPathLock, Flags);
-               return(-EAGAIN);
-       }
-       SkI2cInit(  pAC, pAC->IoBase, 1);
-       SkEventInit(pAC, pAC->IoBase, 1);
-       SkPnmiInit( pAC, pAC->IoBase, 1);
-       SkAddrInit( pAC, pAC->IoBase, 1);
-       SkRlmtInit( pAC, pAC->IoBase, 1);
-       SkTimerInit(pAC, pAC->IoBase, 1);
-
-       GetConfiguration(pAC);
-       if (pAC->RlmtNets == 2) {
-               pAC->GIni.GIPortUsage = SK_MUL_LINK;
-       }
-
-       pAC->BoardLevel = 1;
-       spin_unlock_irqrestore(&pAC->SlowPathLock, Flags);
-
-#if 0
-       if (pAC->GIni.GIMacsFound == 2) {
-                Ret = request_irq(dev->irq, SkGeIsr, SA_SHIRQ, pAC->Name, dev);
-       } else if (pAC->GIni.GIMacsFound == 1) {
-               Ret = request_irq(dev->irq, SkGeIsrOnePort, SA_SHIRQ,
-                       pAC->Name, dev);
-       } else {
-               printk(KERN_WARNING "%s: Illegal number of ports: %d\n",
-                      dev->name, pAC->GIni.GIMacsFound);
-               return -EAGAIN;
-       }
-
-       if (Ret) {
-               printk(KERN_WARNING "%s: Requested IRQ %d is busy.\n",
-                      dev->name, dev->irq);
-               return -EAGAIN;
-       }
-#endif
-       pAC->AllocFlag |= SK_ALLOC_IRQ;
-
-       /* Alloc memory for this board (Mem for RxD/TxD) : */
-       if(!BoardAllocMem(pAC)) {
-               printk("No memory for descriptor rings.\n");
-               return(-EAGAIN);
-       }
-
-       SkCsSetReceiveFlags(pAC,
-               SKCS_PROTO_IP | SKCS_PROTO_TCP | SKCS_PROTO_UDP,
-               &pAC->CsOfs1, &pAC->CsOfs2, 0);
-       pAC->CsOfs = (pAC->CsOfs2 << 16) | pAC->CsOfs1;
-
-       BoardInitMem(pAC);
-#if 0
-       SetQueueSizes(pAC);
-#else
-       /* tschilling: New common function with minimum size check. */
-       DualNet = SK_FALSE;
-       if (pAC->RlmtNets == 2) {
-               DualNet = SK_TRUE;
-       }
-
-       if (SkGeInitAssignRamToQueues(
-               pAC,
-               pAC->ActivePort,
-               DualNet)) {
-               BoardFreeMem(pAC);
-               printk("SkGeInitAssignRamToQueues failed.\n");
-               return(-EAGAIN);
-       }
-#endif
-
-       /* Print adapter specific string from vpd */
-       ProductStr(pAC);
-#ifdef SK98_INFO
-       printk("%s: %s\n", dev->name, pAC->DeviceStr);
-
-       /* Print configuration settings */
-       printk("      PrefPort:%c  RlmtMode:%s\n",
-               'A' + pAC->Rlmt.Net[0].Port[pAC->Rlmt.Net[0].PrefPort]->PortNumber,
-               (pAC->RlmtMode==0)  ? "Check Link State" :
-               ((pAC->RlmtMode==1) ? "Check Link State" :
-               ((pAC->RlmtMode==3) ? "Check Local Port" :
-               ((pAC->RlmtMode==7) ? "Check Segmentation" :
-               ((pAC->RlmtMode==17) ? "Dual Check Link State" :"Error")))));
-#endif
-
-       SkGeYellowLED(pAC, pAC->IoBase, 1);
-
-       /*
-        * Register the device here
-        */
-       pAC->Next = SkGeRootDev;
-       SkGeRootDev = dev;
-
-       return (0);
-} /* SkGeBoardInit */
-
-
-/*****************************************************************************
- *
- *     BoardAllocMem - allocate the memory for the descriptor rings
- *
- * Description:
- *     This function allocates the memory for all descriptor rings.
- *     Each ring is aligned for the desriptor alignment and no ring
- *     has a 4 GByte boundary in it (because the upper 32 bit must
- *     be constant for all descriptiors in one rings).
- *
- * Returns:
- *     SK_TRUE, if all memory could be allocated
- *     SK_FALSE, if not
- */
-static SK_BOOL BoardAllocMem(
-SK_AC  *pAC)
-{
-caddr_t                pDescrMem;      /* pointer to descriptor memory area */
-size_t         AllocLength;    /* length of complete descriptor area */
-int            i;              /* loop counter */
-unsigned long  BusAddr;
-
-
-       /* rings plus one for alignment (do not cross 4 GB boundary) */
-       /* RX_RING_SIZE is assumed bigger than TX_RING_SIZE */
-#if (BITS_PER_LONG == 32)
-       AllocLength = (RX_RING_SIZE + TX_RING_SIZE) * pAC->GIni.GIMacsFound + 8;
-#else
-       AllocLength = (RX_RING_SIZE + TX_RING_SIZE) * pAC->GIni.GIMacsFound
-               + RX_RING_SIZE + 8;
-#endif
-
-       pDescrMem = pci_alloc_consistent(pAC->PciDev, AllocLength,
-                                        &pAC->pDescrMemDMA);
-
-       if (pDescrMem == NULL) {
-               return (SK_FALSE);
-       }
-       pAC->pDescrMem = pDescrMem;
-       BusAddr = (unsigned long) pAC->pDescrMemDMA;
-
-       /* Descriptors need 8 byte alignment, and this is ensured
-        * by pci_alloc_consistent.
-        */
-       for (i=0; i<pAC->GIni.GIMacsFound; i++) {
-               SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_TX_PROGRESS,
-                       ("TX%d/A: pDescrMem: %lX,   PhysDescrMem: %lX\n",
-                       i, (unsigned long) pDescrMem,
-                       BusAddr));
-               pAC->TxPort[i][0].pTxDescrRing = pDescrMem;
-               pAC->TxPort[i][0].VTxDescrRing = BusAddr;
-               pDescrMem += TX_RING_SIZE;
-               BusAddr += TX_RING_SIZE;
-
-               SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_TX_PROGRESS,
-                       ("RX%d: pDescrMem: %lX,   PhysDescrMem: %lX\n",
-                       i, (unsigned long) pDescrMem,
-                       (unsigned long)BusAddr));
-               pAC->RxPort[i].pRxDescrRing = pDescrMem;
-               pAC->RxPort[i].VRxDescrRing = BusAddr;
-               pDescrMem += RX_RING_SIZE;
-               BusAddr += RX_RING_SIZE;
-       } /* for */
-
-       return (SK_TRUE);
-} /* BoardAllocMem */
-
-
-/****************************************************************************
- *
- *     BoardFreeMem - reverse of BoardAllocMem
- *
- * Description:
- *     Free all memory allocated in BoardAllocMem: adapter context,
- *     descriptor rings, locks.
- *
- * Returns:    N/A
- */
-static void BoardFreeMem(
-SK_AC          *pAC)
-{
-size_t         AllocLength;    /* length of complete descriptor area */
-
-       SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ENTRY,
-               ("BoardFreeMem\n"));
-#if (BITS_PER_LONG == 32)
-       AllocLength = (RX_RING_SIZE + TX_RING_SIZE) * pAC->GIni.GIMacsFound + 8;
-#else
-       AllocLength = (RX_RING_SIZE + TX_RING_SIZE) * pAC->GIni.GIMacsFound
-               + RX_RING_SIZE + 8;
-#endif
-
-       pci_free_consistent(pAC->PciDev, AllocLength,
-                           pAC->pDescrMem, pAC->pDescrMemDMA);
-       pAC->pDescrMem = NULL;
-} /* BoardFreeMem */
-
-
-/*****************************************************************************
- *
- *     BoardInitMem - initiate the descriptor rings
- *
- * Description:
- *     This function sets the descriptor rings up in memory.
- *     The adapter is initialized with the descriptor start addresses.
- *
- * Returns:    N/A
- */
-static void BoardInitMem(
-SK_AC  *pAC)   /* pointer to adapter context */
-{
-int    i;              /* loop counter */
-int    RxDescrSize;    /* the size of a rx descriptor rounded up to alignment*/
-int    TxDescrSize;    /* the size of a tx descriptor rounded up to alignment*/
-
-       SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ENTRY,
-               ("BoardInitMem\n"));
-
-       RxDescrSize = (((sizeof(RXD) - 1) / DESCR_ALIGN) + 1) * DESCR_ALIGN;
-       pAC->RxDescrPerRing = RX_RING_SIZE / RxDescrSize;
-       TxDescrSize = (((sizeof(TXD) - 1) / DESCR_ALIGN) + 1) * DESCR_ALIGN;
-       pAC->TxDescrPerRing = TX_RING_SIZE / RxDescrSize;
-
-       for (i=0; i<pAC->GIni.GIMacsFound; i++) {
-               SetupRing(
-                       pAC,
-                       pAC->TxPort[i][0].pTxDescrRing,
-                       pAC->TxPort[i][0].VTxDescrRing,
-                       (RXD**)&pAC->TxPort[i][0].pTxdRingHead,
-                       (RXD**)&pAC->TxPort[i][0].pTxdRingTail,
-                       (RXD**)&pAC->TxPort[i][0].pTxdRingPrev,
-                       &pAC->TxPort[i][0].TxdRingFree,
-                       SK_TRUE);
-               SetupRing(
-                       pAC,
-                       pAC->RxPort[i].pRxDescrRing,
-                       pAC->RxPort[i].VRxDescrRing,
-                       &pAC->RxPort[i].pRxdRingHead,
-                       &pAC->RxPort[i].pRxdRingTail,
-                       &pAC->RxPort[i].pRxdRingPrev,
-                       &pAC->RxPort[i].RxdRingFree,
-                       SK_FALSE);
-       }
-} /* BoardInitMem */
-
-
-/*****************************************************************************
- *
- *     SetupRing - create one descriptor ring
- *
- * Description:
- *     This function creates one descriptor ring in the given memory area.
- *     The head, tail and number of free descriptors in the ring are set.
- *
- * Returns:
- *     none
- */
-static void SetupRing(
-SK_AC          *pAC,
-void           *pMemArea,      /* a pointer to the memory area for the ring */
-uintptr_t      VMemArea,       /* the virtual bus address of the memory area */
-RXD            **ppRingHead,   /* address where the head should be written */
-RXD            **ppRingTail,   /* address where the tail should be written */
-RXD            **ppRingPrev,   /* address where the tail should be written */
-int            *pRingFree,     /* address where the # of free descr. goes */
-SK_BOOL                IsTx)           /* flag: is this a tx ring */
-{
-int    i;              /* loop counter */
-int    DescrSize;      /* the size of a descriptor rounded up to alignment*/
-int    DescrNum;       /* number of descriptors per ring */
-RXD    *pDescr;        /* pointer to a descriptor (receive or transmit) */
-RXD    *pNextDescr;    /* pointer to the next descriptor */
-RXD    *pPrevDescr;    /* pointer to the previous descriptor */
-uintptr_t VNextDescr;  /* the virtual bus address of the next descriptor */
-
-       if (IsTx == SK_TRUE) {
-               DescrSize = (((sizeof(TXD) - 1) / DESCR_ALIGN) + 1) *
-                       DESCR_ALIGN;
-               DescrNum = TX_RING_SIZE / DescrSize;
-       } else {
-               DescrSize = (((sizeof(RXD) - 1) / DESCR_ALIGN) + 1) *
-                       DESCR_ALIGN;
-               DescrNum = RX_RING_SIZE / DescrSize;
-       }
-
-       SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_TX_PROGRESS,
-               ("Descriptor size: %d   Descriptor Number: %d\n",
-               DescrSize,DescrNum));
-
-       pDescr = (RXD*) pMemArea;
-       pPrevDescr = NULL;
-       pNextDescr = (RXD*) (((char*)pDescr) + DescrSize);
-       VNextDescr = VMemArea + DescrSize;
-       for(i=0; i<DescrNum; i++) {
-               /* set the pointers right */
-               pDescr->VNextRxd = VNextDescr & 0xffffffffULL;
-               pDescr->pNextRxd = pNextDescr;
-               pDescr->TcpSumStarts = pAC->CsOfs;
-
-               /* advance one step */
-               pPrevDescr = pDescr;
-               pDescr = pNextDescr;
-               pNextDescr = (RXD*) (((char*)pDescr) + DescrSize);
-               VNextDescr += DescrSize;
-       }
-       pPrevDescr->pNextRxd = (RXD*) pMemArea;
-       pPrevDescr->VNextRxd = VMemArea;
-       pDescr = (RXD*) pMemArea;
-       *ppRingHead = (RXD*) pMemArea;
-       *ppRingTail = *ppRingHead;
-       *ppRingPrev = pPrevDescr;
-       *pRingFree = DescrNum;
-} /* SetupRing */
-
-
-/*****************************************************************************
- *
- *     PortReInitBmu - re-initiate the descriptor rings for one port
- *
- * Description:
- *     This function reinitializes the descriptor rings of one port
- *     in memory. The port must be stopped before.
- *     The HW is initialized with the descriptor start addresses.
- *
- * Returns:
- *     none
- */
-static void PortReInitBmu(
-SK_AC  *pAC,           /* pointer to adapter context */
-int    PortIndex)      /* index of the port for which to re-init */
-{
-       SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ENTRY,
-               ("PortReInitBmu "));
-
-       /* set address of first descriptor of ring in BMU */
-       SK_OUT32(pAC->IoBase, TxQueueAddr[PortIndex][TX_PRIO_LOW]+
-               TX_Q_CUR_DESCR_LOW,
-               (uint32_t)(((caddr_t)
-               (pAC->TxPort[PortIndex][TX_PRIO_LOW].pTxdRingHead) -
-               pAC->TxPort[PortIndex][TX_PRIO_LOW].pTxDescrRing +
-               pAC->TxPort[PortIndex][TX_PRIO_LOW].VTxDescrRing) &
-               0xFFFFFFFF));
-       SK_OUT32(pAC->IoBase, TxQueueAddr[PortIndex][TX_PRIO_LOW]+
-               TX_Q_DESCR_HIGH,
-               (uint32_t)(((caddr_t)
-               (pAC->TxPort[PortIndex][TX_PRIO_LOW].pTxdRingHead) -
-               pAC->TxPort[PortIndex][TX_PRIO_LOW].pTxDescrRing +
-               pAC->TxPort[PortIndex][TX_PRIO_LOW].VTxDescrRing) >> 32));
-       SK_OUT32(pAC->IoBase, RxQueueAddr[PortIndex]+RX_Q_CUR_DESCR_LOW,
-               (uint32_t)(((caddr_t)(pAC->RxPort[PortIndex].pRxdRingHead) -
-               pAC->RxPort[PortIndex].pRxDescrRing +
-               pAC->RxPort[PortIndex].VRxDescrRing) & 0xFFFFFFFF));
-       SK_OUT32(pAC->IoBase, RxQueueAddr[PortIndex]+RX_Q_DESCR_HIGH,
-               (uint32_t)(((caddr_t)(pAC->RxPort[PortIndex].pRxdRingHead) -
-               pAC->RxPort[PortIndex].pRxDescrRing +
-               pAC->RxPort[PortIndex].VRxDescrRing) >> 32));
-} /* PortReInitBmu */
-
-
-/****************************************************************************
- *
- *     SkGeIsr - handle adapter interrupts
- *
- * Description:
- *     The interrupt routine is called when the network adapter
- *     generates an interrupt. It may also be called if another device
- *     shares this interrupt vector with the driver.
- *
- * Returns: N/A
- *
- */
-#if 0
-static void SkGeIsr(int irq, void *dev_id, struct pt_regs *ptregs)
-#else
-void SkGeIsr(int irq, void *dev_id, struct pt_regs *ptregs)
-#endif
-{
-struct SK_NET_DEVICE *dev = (struct SK_NET_DEVICE *)dev_id;
-DEV_NET                *pNet;
-SK_AC          *pAC;
-SK_U32         IntSrc;         /* interrupts source register contents */
-
-       pNet = (DEV_NET*) dev->priv;
-       pAC = pNet->pAC;
-
-       /*
-        * Check and process if its our interrupt
-        */
-       SK_IN32(pAC->IoBase, B0_SP_ISRC, &IntSrc);
-       if (IntSrc == 0) {
-               return;
-       }
-
-       while (((IntSrc & IRQ_MASK) & ~SPECIAL_IRQS) != 0) {
-#if 0 /* software irq currently not used */
-               if (IntSrc & IRQ_SW) {
-                       SK_DBG_MSG(NULL, SK_DBGMOD_DRV,
-                               SK_DBGCAT_DRV_INT_SRC,
-                               ("Software IRQ\n"));
-               }
-#endif
-               if (IntSrc & IRQ_EOF_RX1) {
-                       SK_DBG_MSG(NULL, SK_DBGMOD_DRV,
-                               SK_DBGCAT_DRV_INT_SRC,
-                               ("EOF RX1 IRQ\n"));
-                       ReceiveIrq(pAC, &pAC->RxPort[0], SK_TRUE);
-                       SK_PNMI_CNT_RX_INTR(pAC, 0);
-               }
-               if (IntSrc & IRQ_EOF_RX2) {
-                       SK_DBG_MSG(NULL, SK_DBGMOD_DRV,
-                               SK_DBGCAT_DRV_INT_SRC,
-                               ("EOF RX2 IRQ\n"));
-                       ReceiveIrq(pAC, &pAC->RxPort[1], SK_TRUE);
-                       SK_PNMI_CNT_RX_INTR(pAC, 1);
-               }
-#ifdef USE_TX_COMPLETE /* only if tx complete interrupt used */
-               if (IntSrc & IRQ_EOF_AS_TX1) {
-                       SK_DBG_MSG(NULL, SK_DBGMOD_DRV,
-                               SK_DBGCAT_DRV_INT_SRC,
-                               ("EOF AS TX1 IRQ\n"));
-                       SK_PNMI_CNT_TX_INTR(pAC, 0);
-                       spin_lock(&pAC->TxPort[0][TX_PRIO_LOW].TxDesRingLock);
-                       FreeTxDescriptors(pAC, &pAC->TxPort[0][TX_PRIO_LOW]);
-                       spin_unlock(&pAC->TxPort[0][TX_PRIO_LOW].TxDesRingLock);
-               }
-               if (IntSrc & IRQ_EOF_AS_TX2) {
-                       SK_DBG_MSG(NULL, SK_DBGMOD_DRV,
-                               SK_DBGCAT_DRV_INT_SRC,
-                               ("EOF AS TX2 IRQ\n"));
-                       SK_PNMI_CNT_TX_INTR(pAC, 1);
-                       spin_lock(&pAC->TxPort[1][TX_PRIO_LOW].TxDesRingLock);
-                       FreeTxDescriptors(pAC, &pAC->TxPort[1][TX_PRIO_LOW]);
-                       spin_unlock(&pAC->TxPort[1][TX_PRIO_LOW].TxDesRingLock);
-               }
-#if 0 /* only if sync. queues used */
-               if (IntSrc & IRQ_EOF_SY_TX1) {
-                       SK_DBG_MSG(NULL, SK_DBGMOD_DRV,
-                               SK_DBGCAT_DRV_INT_SRC,
-                               ("EOF SY TX1 IRQ\n"));
-                       SK_PNMI_CNT_TX_INTR(pAC, 1);
-                       spin_lock(&pAC->TxPort[0][TX_PRIO_HIGH].TxDesRingLock);
-                       FreeTxDescriptors(pAC, 0, TX_PRIO_HIGH);
-                       spin_unlock(&pAC->TxPort[0][TX_PRIO_HIGH].TxDesRingLock);
-                       ClearTxIrq(pAC, 0, TX_PRIO_HIGH);
-               }
-               if (IntSrc & IRQ_EOF_SY_TX2) {
-                       SK_DBG_MSG(NULL, SK_DBGMOD_DRV,
-                               SK_DBGCAT_DRV_INT_SRC,
-                               ("EOF SY TX2 IRQ\n"));
-                       SK_PNMI_CNT_TX_INTR(pAC, 1);
-                       spin_lock(&pAC->TxPort[1][TX_PRIO_HIGH].TxDesRingLock);
-                       FreeTxDescriptors(pAC, 1, TX_PRIO_HIGH);
-                       spin_unlock(&pAC->TxPort[1][TX_PRIO_HIGH].TxDesRingLock);
-                       ClearTxIrq(pAC, 1, TX_PRIO_HIGH);
-               }
-#endif
-#endif
-
-               /* do all IO at once */
-               if (IntSrc & IRQ_EOF_RX1)
-                       ClearAndStartRx(pAC, 0);
-               if (IntSrc & IRQ_EOF_RX2)
-                       ClearAndStartRx(pAC, 1);
-#ifdef USE_TX_COMPLETE /* only if tx complete interrupt used */
-               if (IntSrc & IRQ_EOF_AS_TX1)
-                       ClearTxIrq(pAC, 0, TX_PRIO_LOW);
-               if (IntSrc & IRQ_EOF_AS_TX2)
-                       ClearTxIrq(pAC, 1, TX_PRIO_LOW);
-#endif
-               SK_IN32(pAC->IoBase, B0_ISRC, &IntSrc);
-       } /* while (IntSrc & IRQ_MASK != 0) */
-
-       if ((IntSrc & SPECIAL_IRQS) || pAC->CheckQueue) {
-               SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_INT_SRC,
-                       ("SPECIAL IRQ DP-Cards => %x\n", IntSrc));
-               pAC->CheckQueue = SK_FALSE;
-               spin_lock(&pAC->SlowPathLock);
-               if (IntSrc & SPECIAL_IRQS)
-                       SkGeSirqIsr(pAC, pAC->IoBase, IntSrc);
-
-               SkEventDispatcher(pAC, pAC->IoBase);
-               spin_unlock(&pAC->SlowPathLock);
-       }
-       /*
-        * do it all again is case we cleared an interrupt that
-        * came in after handling the ring (OUTs may be delayed
-        * in hardware buffers, but are through after IN)
-        */
-
-       ReceiveIrq(pAC, &pAC->RxPort[0], SK_TRUE);
-       ReceiveIrq(pAC, &pAC->RxPort[1], SK_TRUE);
-
-       if (pAC->CheckQueue) {
-               pAC->CheckQueue = SK_FALSE;
-               spin_lock(&pAC->SlowPathLock);
-               SkEventDispatcher(pAC, pAC->IoBase);
-               spin_unlock(&pAC->SlowPathLock);
-       }
-
-
-       /* IRQ is processed - Enable IRQs again*/
-       SK_OUT32(pAC->IoBase, B0_IMSK, IRQ_MASK);
-
-       return;
-} /* SkGeIsr */
-
-
-/****************************************************************************
- *
- *     SkGeIsrOnePort - handle adapter interrupts for single port adapter
- *
- * Description:
- *     The interrupt routine is called when the network adapter
- *     generates an interrupt. It may also be called if another device
- *     shares this interrupt vector with the driver.
- *     This is the same as above, but handles only one port.
- *
- * Returns: N/A
- *
- */
-#if 0
-static void SkGeIsrOnePort(int irq, void *dev_id, struct pt_regs *ptregs)
-#else
-void SkGeIsrOnePort(int irq, void *dev_id, struct pt_regs *ptregs)
-#endif
-{
-struct SK_NET_DEVICE *dev = (struct SK_NET_DEVICE *)dev_id;
-DEV_NET                *pNet;
-SK_AC          *pAC;
-SK_U32         IntSrc;         /* interrupts source register contents */
-
-       pNet = (DEV_NET*) dev->priv;
-       pAC = pNet->pAC;
-
-       /*
-        * Check and process if its our interrupt
-        */
-       SK_IN32(pAC->IoBase, B0_SP_ISRC, &IntSrc);
-       if (IntSrc == 0) {
-               return;
-       }
-
-       while (((IntSrc & IRQ_MASK) & ~SPECIAL_IRQS) != 0) {
-#if 0 /* software irq currently not used */
-               if (IntSrc & IRQ_SW) {
-                       SK_DBG_MSG(NULL, SK_DBGMOD_DRV,
-                               SK_DBGCAT_DRV_INT_SRC,
-                               ("Software IRQ\n"));
-               }
-#endif
-               if (IntSrc & IRQ_EOF_RX1) {
-                       SK_DBG_MSG(NULL, SK_DBGMOD_DRV,
-                               SK_DBGCAT_DRV_INT_SRC,
-                               ("EOF RX1 IRQ\n"));
-                       ReceiveIrq(pAC, &pAC->RxPort[0], SK_TRUE);
-                       SK_PNMI_CNT_RX_INTR(pAC, 0);
-               }
-#ifdef USE_TX_COMPLETE /* only if tx complete interrupt used */
-               if (IntSrc & IRQ_EOF_AS_TX1) {
-                       SK_DBG_MSG(NULL, SK_DBGMOD_DRV,
-                               SK_DBGCAT_DRV_INT_SRC,
-                               ("EOF AS TX1 IRQ\n"));
-                       SK_PNMI_CNT_TX_INTR(pAC, 0);
-                       spin_lock(&pAC->TxPort[0][TX_PRIO_LOW].TxDesRingLock);
-                       FreeTxDescriptors(pAC, &pAC->TxPort[0][TX_PRIO_LOW]);
-                       spin_unlock(&pAC->TxPort[0][TX_PRIO_LOW].TxDesRingLock);
-               }
-#if 0 /* only if sync. queues used */
-               if (IntSrc & IRQ_EOF_SY_TX1) {
-                       SK_DBG_MSG(NULL, SK_DBGMOD_DRV,
-                               SK_DBGCAT_DRV_INT_SRC,
-                               ("EOF SY TX1 IRQ\n"));
-                       SK_PNMI_CNT_TX_INTR(pAC, 0);
-                       spin_lock(&pAC->TxPort[0][TX_PRIO_HIGH].TxDesRingLock);
-                       FreeTxDescriptors(pAC, 0, TX_PRIO_HIGH);
-                       spin_unlock(&pAC->TxPort[0][TX_PRIO_HIGH].TxDesRingLock);
-                       ClearTxIrq(pAC, 0, TX_PRIO_HIGH);
-               }
-#endif
-#endif
-
-               /* do all IO at once */
-               if (IntSrc & IRQ_EOF_RX1)
-                       ClearAndStartRx(pAC, 0);
-#ifdef USE_TX_COMPLETE /* only if tx complete interrupt used */
-               if (IntSrc & IRQ_EOF_AS_TX1)
-                       ClearTxIrq(pAC, 0, TX_PRIO_LOW);
-#endif
-               SK_IN32(pAC->IoBase, B0_ISRC, &IntSrc);
-       } /* while (IntSrc & IRQ_MASK != 0) */
-
-       if ((IntSrc & SPECIAL_IRQS) || pAC->CheckQueue) {
-               SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_INT_SRC,
-                       ("SPECIAL IRQ SP-Cards => %x\n", IntSrc));
-               pAC->CheckQueue = SK_FALSE;
-               spin_lock(&pAC->SlowPathLock);
-               if (IntSrc & SPECIAL_IRQS)
-                       SkGeSirqIsr(pAC, pAC->IoBase, IntSrc);
-
-               SkEventDispatcher(pAC, pAC->IoBase);
-               spin_unlock(&pAC->SlowPathLock);
-       }
-       /*
-        * do it all again is case we cleared an interrupt that
-        * came in after handling the ring (OUTs may be delayed
-        * in hardware buffers, but are through after IN)
-        */
-       ReceiveIrq(pAC, &pAC->RxPort[0], SK_TRUE);
-
-       /* IRQ is processed - Enable IRQs again*/
-       SK_OUT32(pAC->IoBase, B0_IMSK, IRQ_MASK);
-
-       return;
-} /* SkGeIsrOnePort */
-
-
-/****************************************************************************
- *
- *     SkGeOpen - handle start of initialized adapter
- *
- * Description:
- *     This function starts the initialized adapter.
- *     The board level variable is set and the adapter is
- *     brought to full functionality.
- *     The device flags are set for operation.
- *     Do all necessary level 2 initialization, enable interrupts and
- *     give start command to RLMT.
- *
- * Returns:
- *     0 on success
- *     != 0 on error
- */
-#if 0
-static int SkGeOpen(
-#else
-int SkGeOpen(
-#endif
-struct SK_NET_DEVICE   *dev)
-{
-       DEV_NET                 *pNet;
-       SK_AC                   *pAC;
-       unsigned long   Flags;          /* for spin lock */
-       int                             i;
-       SK_EVPARA               EvPara;         /* an event parameter union */
-
-       pNet = (DEV_NET*) dev->priv;
-       pAC = pNet->pAC;
-
-       SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ENTRY,
-               ("SkGeOpen: pAC=0x%lX:\n", (unsigned long)pAC));
-
-       if (pAC->BoardLevel == 0) {
-               /* level 1 init common modules here */
-               if (SkGeInit(pAC, pAC->IoBase, 1) != 0) {
-                       printk("%s: HWInit (1) failed.\n", pAC->dev[pNet->PortNr]->name);
-                       return (-1);
-               }
-               SkI2cInit       (pAC, pAC->IoBase, 1);
-               SkEventInit     (pAC, pAC->IoBase, 1);
-               SkPnmiInit      (pAC, pAC->IoBase, 1);
-               SkAddrInit      (pAC, pAC->IoBase, 1);
-               SkRlmtInit      (pAC, pAC->IoBase, 1);
-               SkTimerInit     (pAC, pAC->IoBase, 1);
-               pAC->BoardLevel = 1;
-       }
-
-       if (pAC->BoardLevel != 2) {
-               /* tschilling: Level 2 init modules here, check return value. */
-               if (SkGeInit(pAC, pAC->IoBase, 2) != 0) {
-                       printk("%s: HWInit (2) failed.\n", pAC->dev[pNet->PortNr]->name);
-                       return (-1);
-               }
-               SkI2cInit       (pAC, pAC->IoBase, 2);
-               SkEventInit     (pAC, pAC->IoBase, 2);
-               SkPnmiInit      (pAC, pAC->IoBase, 2);
-               SkAddrInit      (pAC, pAC->IoBase, 2);
-               SkRlmtInit      (pAC, pAC->IoBase, 2);
-               SkTimerInit     (pAC, pAC->IoBase, 2);
-               pAC->BoardLevel = 2;
-       }
-
-       for (i=0; i<pAC->GIni.GIMacsFound; i++) {
-               /* Enable transmit descriptor polling. */
-               SkGePollTxD(pAC, pAC->IoBase, i, SK_TRUE);
-               FillRxRing(pAC, &pAC->RxPort[i]);
-       }
-       SkGeYellowLED(pAC, pAC->IoBase, 1);
-
-#ifdef USE_INT_MOD
-/* moderate only TX complete interrupts (these are not time critical) */
-#define IRQ_MOD_MASK (IRQ_EOF_AS_TX1 | IRQ_EOF_AS_TX2)
-       {
-               unsigned long ModBase;
-               ModBase = 53125000 / INTS_PER_SEC;
-               SK_OUT32(pAC->IoBase, B2_IRQM_INI, ModBase);
-               SK_OUT32(pAC->IoBase, B2_IRQM_MSK, IRQ_MOD_MASK);
-               SK_OUT32(pAC->IoBase, B2_IRQM_CTRL, TIM_START);
-       }
-#endif
-
-       /* enable Interrupts */
-       SK_OUT32(pAC->IoBase, B0_IMSK, IRQ_MASK);
-       SK_OUT32(pAC->IoBase, B0_HWE_IMSK, IRQ_HWE_MASK);
-
-       spin_lock_irqsave(&pAC->SlowPathLock, Flags);
-
-       if ((pAC->RlmtMode != 0) && (pAC->MaxPorts == 0)) {
-               EvPara.Para32[0] = pAC->RlmtNets;
-               EvPara.Para32[1] = -1;
-               SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_SET_NETS,
-                       EvPara);
-               EvPara.Para32[0] = pAC->RlmtMode;
-               EvPara.Para32[1] = 0;
-               SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_MODE_CHANGE,
-                       EvPara);
-       }
-
-       EvPara.Para32[0] = pNet->NetNr;
-       EvPara.Para32[1] = -1;
-       SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_START, EvPara);
-       SkEventDispatcher(pAC, pAC->IoBase);
-       spin_unlock_irqrestore(&pAC->SlowPathLock, Flags);
-
-       pAC->MaxPorts++;
-       pNet->Up = 1;
-
-       MOD_INC_USE_COUNT;
-
-       SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ENTRY,
-               ("SkGeOpen suceeded\n"));
-
-       return (0);
-} /* SkGeOpen */
-
-
-/****************************************************************************
- *
- *     SkGeClose - Stop initialized adapter
- *
- * Description:
- *     Close initialized adapter.
- *
- * Returns:
- *     0 - on success
- *     error code - on error
- */
-#if 0
-static int SkGeClose(
-#else
-int SkGeClose(
-#endif
-struct SK_NET_DEVICE   *dev)
-{
-       DEV_NET                 *pNet;
-       SK_AC                   *pAC;
-
-       unsigned long   Flags;          /* for spin lock */
-       int                             i;
-       int                             PortIdx;
-       SK_EVPARA               EvPara;
-
-       netif_stop_queue(dev);
-       pNet = (DEV_NET*) dev->priv;
-       pAC = pNet->pAC;
-
-       if (pAC->RlmtNets == 1)
-               PortIdx = pAC->ActivePort;
-       else
-               PortIdx = pNet->NetNr;
-
-       SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ENTRY,
-               ("SkGeClose: pAC=0x%lX ", (unsigned long)pAC));
-
-       /*
-        * Clear multicast table, promiscuous mode ....
-        */
-       SkAddrMcClear(pAC, pAC->IoBase, PortIdx, 0);
-       SkAddrPromiscuousChange(pAC, pAC->IoBase, PortIdx,
-               SK_PROM_MODE_NONE);
-
-       if (pAC->MaxPorts == 1) {
-               spin_lock_irqsave(&pAC->SlowPathLock, Flags);
-               /* disable interrupts */
-               SK_OUT32(pAC->IoBase, B0_IMSK, 0);
-               EvPara.Para32[0] = pNet->NetNr;
-               EvPara.Para32[1] = -1;
-               SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_STOP, EvPara);
-               SkEventDispatcher(pAC, pAC->IoBase);
-               SK_OUT32(pAC->IoBase, B0_IMSK, 0);
-               /* stop the hardware */
-               SkGeDeInit(pAC, pAC->IoBase);
-               pAC->BoardLevel = 0;
-               spin_unlock_irqrestore(&pAC->SlowPathLock, Flags);
-       } else {
-
-               spin_lock_irqsave(&pAC->SlowPathLock, Flags);
-               EvPara.Para32[0] = pNet->NetNr;
-               EvPara.Para32[1] = -1;
-               SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_STOP, EvPara);
-               SkEventDispatcher(pAC, pAC->IoBase);
-               spin_unlock_irqrestore(&pAC->SlowPathLock, Flags);
-
-               /* Stop port */
-               spin_lock_irqsave(&pAC->TxPort[pNet->PortNr]
-                       [TX_PRIO_LOW].TxDesRingLock, Flags);
-               SkGeStopPort(pAC, pAC->IoBase, pNet->PortNr,
-                       SK_STOP_ALL, SK_HARD_RST);
-               spin_unlock_irqrestore(&pAC->TxPort[pNet->PortNr]
-                       [TX_PRIO_LOW].TxDesRingLock, Flags);
-       }
-
-       if (pAC->RlmtNets == 1) {
-               /* clear all descriptor rings */
-               for (i=0; i<pAC->GIni.GIMacsFound; i++) {
-                       ReceiveIrq(pAC, &pAC->RxPort[i], SK_TRUE);
-                       ClearRxRing(pAC, &pAC->RxPort[i]);
-                       ClearTxRing(pAC, &pAC->TxPort[i][TX_PRIO_LOW]);
-               }
-       } else {
-               /* clear port descriptor rings */
-               ReceiveIrq(pAC, &pAC->RxPort[pNet->PortNr], SK_TRUE);
-               ClearRxRing(pAC, &pAC->RxPort[pNet->PortNr]);
-               ClearTxRing(pAC, &pAC->TxPort[pNet->PortNr][TX_PRIO_LOW]);
-       }
-
-       SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ENTRY,
-               ("SkGeClose: done "));
-
-       pAC->MaxPorts--;
-       pNet->Up = 0;
-       MOD_DEC_USE_COUNT;
-
-       return (0);
-} /* SkGeClose */
-
-
-/*****************************************************************************
- *
- *     SkGeXmit - Linux frame transmit function
- *
- * Description:
- *     The system calls this function to send frames onto the wire.
- *     It puts the frame in the tx descriptor ring. If the ring is
- *     full then, the 'tbusy' flag is set.
- *
- * Returns:
- *     0, if everything is ok
- *     !=0, on error
- * WARNING: returning 1 in 'tbusy' case caused system crashes (double
- *     allocated skb's) !!!
- */
-#if 0
-static int SkGeXmit(struct sk_buff *skb, struct SK_NET_DEVICE *dev)
-#else
-int SkGeXmit(struct sk_buff *skb, struct SK_NET_DEVICE *dev)
-#endif
-{
-DEV_NET                *pNet;
-SK_AC          *pAC;
-int                    Rc;     /* return code of XmitFrame */
-
-       pNet = (DEV_NET*) dev->priv;
-       pAC = pNet->pAC;
-
-#if 0
-       if ((!skb_shinfo(skb)->nr_frags) ||
-#else
-       if (1 ||
-#endif
-               (pAC->GIni.GIChipId == CHIP_ID_GENESIS)) {
-               /* Don't activate scatter-gather and hardware checksum */
-
-               if (pAC->RlmtNets == 2)
-                       Rc = XmitFrame(
-                               pAC,
-                               &pAC->TxPort[pNet->PortNr][TX_PRIO_LOW],
-                               skb);
-               else
-                       Rc = XmitFrame(
-                               pAC,
-                               &pAC->TxPort[pAC->ActivePort][TX_PRIO_LOW],
-                               skb);
-       } else {
-#if 0
-               /* scatter-gather and hardware TCP checksumming anabled*/
-               if (pAC->RlmtNets == 2)
-                       Rc = XmitFrameSG(
-                               pAC,
-                               &pAC->TxPort[pNet->PortNr][TX_PRIO_LOW],
-                               skb);
-               else
-                       Rc = XmitFrameSG(
-                               pAC,
-                               &pAC->TxPort[pAC->ActivePort][TX_PRIO_LOW],
-                               skb);
-#endif
-       }
-
-       /* Transmitter out of resources? */
-       if (Rc <= 0) {
-               netif_stop_queue(dev);
-       }
-
-       /* If not taken, give buffer ownership back to the
-        * queueing layer.
-        */
-       if (Rc < 0)
-               return (1);
-
-#if 0
-       dev->trans_start = jiffies;
-#endif
-       return (0);
-} /* SkGeXmit */
-
-
-/*****************************************************************************
- *
- *     XmitFrame - fill one socket buffer into the transmit ring
- *
- * Description:
- *     This function puts a message into the transmit descriptor ring
- *     if there is a descriptors left.
- *     Linux skb's consist of only one continuous buffer.
- *     The first step locks the ring. It is held locked
- *     all time to avoid problems with SWITCH_../PORT_RESET.
- *     Then the descriptoris allocated.
- *     The second part is linking the buffer to the descriptor.
- *     At the very last, the Control field of the descriptor
- *     is made valid for the BMU and a start TX command is given
- *     if necessary.
- *
- * Returns:
- *     > 0 - on succes: the number of bytes in the message
- *     = 0 - on resource shortage: this frame sent or dropped, now
- *             the ring is full ( -> set tbusy)
- *     < 0 - on failure: other problems ( -> return failure to upper layers)
- */
-static int XmitFrame(
-SK_AC          *pAC,           /* pointer to adapter context */
-TX_PORT                *pTxPort,       /* pointer to struct of port to send to */
-struct sk_buff *pMessage)      /* pointer to send-message */
-{
-TXD            *pTxd;          /* the rxd to fill */
-unsigned long  Flags;
-SK_U64         PhysAddr;
-int            BytesSend;
-
-       SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_TX_PROGRESS,
-               ("X"));
-
-       spin_lock_irqsave(&pTxPort->TxDesRingLock, Flags);
-#ifndef USE_TX_COMPLETE
-       FreeTxDescriptors(pAC, pTxPort);
-#endif
-       if (pTxPort->TxdRingFree == 0) {
-               /* no enough free descriptors in ring at the moment */
-               FreeTxDescriptors(pAC, pTxPort);
-               if (pTxPort->TxdRingFree == 0) {
-                       spin_unlock_irqrestore(&pTxPort->TxDesRingLock, Flags);
-                       SK_PNMI_CNT_NO_TX_BUF(pAC, pTxPort->PortIndex);
-                       SK_DBG_MSG(NULL, SK_DBGMOD_DRV,
-                               SK_DBGCAT_DRV_TX_PROGRESS,
-                               ("XmitFrame failed\n"));
-                       /* this message can not be sent now */
-                       /* Because tbusy seems to be set, the message should not be freed here */
-                       /* It will be used by the scheduler of the ethernet handler */
-                       return (-1);
-               }
-       }
-       /* advance head counter behind descriptor needed for this frame */
-       pTxd = pTxPort->pTxdRingHead;
-       pTxPort->pTxdRingHead = pTxd->pNextTxd;
-       pTxPort->TxdRingFree--;
-       /* the needed descriptor is reserved now */
-
-       /*
-        * everything allocated ok, so add buffer to descriptor
-        */
-
-#ifdef SK_DUMP_TX
-       DumpMsg(pMessage, "XmitFrame");
-#endif
-
-       /* set up descriptor and CONTROL dword */
-#if 0
-       PhysAddr = (SK_U64) pci_map_page(pAC->PciDev,
-               virt_to_page(pMessage->data),
-               ((unsigned long) pMessage->data &
-               ~PAGE_MASK),
-               pMessage->len,
-               PCI_DMA_TODEVICE);
-#else
-       PhysAddr = (SK_U64) pci_phys_to_mem(pAC->PciDev, (u32) pMessage->data);
-#endif
-       pTxd->VDataLow = (SK_U32)  (PhysAddr & 0xffffffff);
-       pTxd->VDataHigh = (SK_U32) (PhysAddr >> 32);
-       pTxd->pMBuf = pMessage;
-       pTxd->TBControl = TX_CTRL_OWN_BMU | TX_CTRL_STF |
-               TX_CTRL_CHECK_DEFAULT | TX_CTRL_SOFTWARE |
-#ifdef USE_TX_COMPLETE
-               TX_CTRL_EOF | TX_CTRL_EOF_IRQ | pMessage->len;
-#else
-               TX_CTRL_EOF | pMessage->len;
-#endif
-
-       if ((pTxPort->pTxdRingPrev->TBControl & TX_CTRL_OWN_BMU) == 0) {
-               /* previous descriptor already done, so give tx start cmd */
-               /* StartTx(pAC, pTxPort->HwAddr); */
-               SK_OUT8(pTxPort->HwAddr, TX_Q_CTRL, TX_Q_CTRL_START);
-       }
-       pTxPort->pTxdRingPrev = pTxd;
-
-
-       BytesSend = pMessage->len;
-       spin_unlock_irqrestore(&pTxPort->TxDesRingLock, Flags);
-       /* after releasing the lock, the skb may be immidiately freed */
-       if (pTxPort->TxdRingFree != 0)
-               return (BytesSend);
-       else
-               return (0);
-
-} /* XmitFrame */
-
-/*****************************************************************************
- *
- *     XmitFrameSG - fill one socket buffer into the transmit ring
- *                (use SG and TCP/UDP hardware checksumming)
- *
- * Description:
- *     This function puts a message into the transmit descriptor ring
- *     if there is a descriptors left.
- *
- * Returns:
- *     > 0 - on succes: the number of bytes in the message
- *     = 0 - on resource shortage: this frame sent or dropped, now
- *             the ring is full ( -> set tbusy)
- *     < 0 - on failure: other problems ( -> return failure to upper layers)
- */
-#if 0
-static int XmitFrameSG(
-SK_AC          *pAC,                   /* pointer to adapter context */
-TX_PORT                *pTxPort,               /* pointer to struct of port to send to */
-struct sk_buff *pMessage)      /* pointer to send-message */
-{
-
-       int             i;
-       int                     BytesSend;
-       int                     hlength;
-       int                     protocol;
-       skb_frag_t              *sk_frag;
-       TXD                     *pTxd;
-       TXD                     *pTxdFst;
-       TXD                     *pTxdLst;
-       SK_U64          PhysAddr;
-       unsigned long   Flags;
-
-       spin_lock_irqsave(&pTxPort->TxDesRingLock, Flags);
-#ifndef USE_TX_COMPLETE
-       FreeTxDescriptors(pAC, pTxPort);
-#endif
-       if ((skb_shinfo(pMessage)->nr_frags +1) > pTxPort->TxdRingFree) {
-               FreeTxDescriptors(pAC, pTxPort);
-               if ((skb_shinfo(pMessage)->nr_frags + 1) > pTxPort->TxdRingFree) {
-                       spin_unlock_irqrestore(&pTxPort->TxDesRingLock, Flags);
-                       SK_PNMI_CNT_NO_TX_BUF(pAC, pTxPort->PortIndex);
-                       SK_DBG_MSG(NULL, SK_DBGMOD_DRV,
-                               SK_DBGCAT_DRV_TX_PROGRESS,
-                               ("XmitFrameSG failed - Ring full\n"));
-                               /* this message can not be sent now */
-                       return(-1);
-               }
-       }
-
-
-       pTxd = pTxPort->pTxdRingHead;
-       pTxdFst = pTxd;
-       pTxdLst = pTxd;
-       BytesSend = 0;
-       protocol = 0;
-
-       /* map first fragment (header) */
-       PhysAddr = (SK_U64) pci_map_page(pAC->PciDev,
-                       virt_to_page(pMessage->data),
-                       ((unsigned long) pMessage->data & ~PAGE_MASK),
-                       skb_headlen(pMessage),
-                       PCI_DMA_TODEVICE);
-
-       pTxd->VDataLow = (SK_U32)  (PhysAddr & 0xffffffff);
-       pTxd->VDataHigh = (SK_U32) (PhysAddr >> 32);
-
-       /* HW checksum? */
-       if (pMessage->ip_summed == CHECKSUM_HW) {
-               pTxd->TBControl = TX_CTRL_STF |
-                                 TX_CTRL_ST_FWD |
-                                 skb_headlen(pMessage);
-
-               /* We have to use the opcode for tcp here because the opcode for
-               udp is not working in the hardware yet (revision 2.0)*/
-               protocol = ((SK_U8)pMessage->data[23] & 0xf);
-               if ((protocol == 17) && (pAC->GIni.GIChipRev != 0))
-                       pTxd->TBControl |=  BMU_UDP_CHECK;
-               else
-                       pTxd->TBControl |= BMU_TCP_CHECK ;
-
-               hlength = ((SK_U8)pMessage->data[14] & 0xf) * 4;
-               pTxd->TcpSumOfs = 0; /* PH-Checksum already claculated */
-               pTxd->TcpSumSt = 14+hlength+16;
-               pTxd->TcpSumWr = 14+hlength;
-
-       } else {
-               pTxd->TBControl = TX_CTRL_CHECK_DEFAULT |
-                                 TX_CTRL_SOFTWARE |
-                                 TX_CTRL_STF |
-                                 skb_headlen(pMessage);
-       }
-
-       pTxd = pTxd->pNextTxd;
-       pTxPort->TxdRingFree--;
-       BytesSend += skb_headlen(pMessage);
-
-
-       /* Map SG fragments */
-       for (i = 0; i < skb_shinfo(pMessage)->nr_frags; i++) {
-               sk_frag = &skb_shinfo(pMessage)->frags[i];
-
-               /* we already have the proper value in entry */
-               PhysAddr = (SK_U64) pci_map_page(pAC->PciDev,
-                                                sk_frag->page,
-                                                sk_frag->page_offset,
-                                                sk_frag->size,
-                                                PCI_DMA_TODEVICE);
-
-               pTxd->VDataLow = (SK_U32)  (PhysAddr & 0xffffffff);
-               pTxd->VDataHigh = (SK_U32) (PhysAddr >> 32);
-               pTxd->pMBuf = pMessage;
-
-               /* HW checksum */
-               if (pMessage->ip_summed == CHECKSUM_HW) {
-                       pTxd->TBControl = TX_CTRL_OWN_BMU |
-                                         TX_CTRL_SOFTWARE |
-                                         TX_CTRL_ST_FWD;
-
-                       /* We have to use the opcode for tcp here because the opcode for
-                       udp is not working in the hardware yet (revision 2.0)*/
-                       if ((protocol == 17) && (pAC->GIni.GIChipRev != 0))
-                               pTxd->TBControl |= BMU_UDP_CHECK ;
-                       else
-                               pTxd->TBControl |= BMU_TCP_CHECK ;
-
-               } else {
-                       pTxd->TBControl = TX_CTRL_CHECK_DEFAULT |
-                                         TX_CTRL_SOFTWARE |
-                                         TX_CTRL_OWN_BMU;
-               }
-
-               /* Last fragment  */
-               if( (i+1) == skb_shinfo(pMessage)->nr_frags )  {
-#ifdef USE_TX_COMPLETE
-                       pTxd->TBControl |= TX_CTRL_EOF |
-                                          TX_CTRL_EOF_IRQ |
-                                          sk_frag->size;
-#else
-                       pTxd->TBControl |= TX_CTRL_EOF |
-                                          sk_frag->size;
-#endif
-                       pTxdFst->TBControl |= TX_CTRL_OWN_BMU |
-                                             TX_CTRL_SOFTWARE;
-
-               } else {
-                       pTxd->TBControl |= sk_frag->size;
-               }
-               pTxdLst = pTxd;
-               pTxd = pTxd->pNextTxd;
-               pTxPort->TxdRingFree--;
-               BytesSend += sk_frag->size;
-       }
-
-       if ((pTxPort->pTxdRingPrev->TBControl & TX_CTRL_OWN_BMU) == 0) {
-               /* previous descriptor already done, so give tx start cmd */
-               /* StartTx(pAC, pTxPort->HwAddr); */
-               SK_OUT8(pTxPort->HwAddr, TX_Q_CTRL, TX_Q_CTRL_START);
-       }
-
-       pTxPort->pTxdRingPrev = pTxdLst;
-       pTxPort->pTxdRingHead = pTxd;
-
-       spin_unlock_irqrestore(&pTxPort->TxDesRingLock, Flags);
-
-       if (pTxPort->TxdRingFree > 0)
-               return (BytesSend);
-       else
-               return (0);
-}
-#endif
-
-
-void dump_frag( SK_U8 *data, int length)
-{
-       int i;
-
-       printk("Length: %d\n", length);
-       for( i=0; i < length; i++ ) {
-               printk(" %02x", (SK_U8)*(data + i) );
-               if( !((i+1) % 20) )
-                 printk("\n");
-       }
-       printk("\n\n");
-
-}
-
-
-/*****************************************************************************
- *
- *     FreeTxDescriptors - release descriptors from the descriptor ring
- *
- * Description:
- *     This function releases descriptors from a transmit ring if they
- *     have been sent by the BMU.
- *     If a descriptors is sent, it can be freed and the message can
- *     be freed, too.
- *     The SOFTWARE controllable bit is used to prevent running around a
- *     completely free ring for ever. If this bit is no set in the
- *     frame (by XmitFrame), this frame has never been sent or is
- *     already freed.
- *     The Tx descriptor ring lock must be held while calling this function !!!
- *
- * Returns:
- *     none
- */
-static void FreeTxDescriptors(
-SK_AC  *pAC,           /* pointer to the adapter context */
-TX_PORT        *pTxPort)       /* pointer to destination port structure */
-{
-TXD    *pTxd;          /* pointer to the checked descriptor */
-TXD    *pNewTail;      /* pointer to 'end' of the ring */
-SK_U32 Control;        /* TBControl field of descriptor */
-SK_U64 PhysAddr;       /* address of DMA mapping */
-
-       pNewTail = pTxPort->pTxdRingTail;
-       pTxd = pNewTail;
-       /*
-        * loop forever; exits if TX_CTRL_SOFTWARE bit not set in start frame
-        * or TX_CTRL_OWN_BMU bit set in any frame
-        */
-       while (1) {
-               Control = pTxd->TBControl;
-               if ((Control & TX_CTRL_SOFTWARE) == 0) {
-                       /*
-                        * software controllable bit is set in first
-                        * fragment when given to BMU. Not set means that
-                        * this fragment was never sent or is already
-                        * freed ( -> ring completely free now).
-                        */
-                       pTxPort->pTxdRingTail = pTxd;
-                       netif_wake_queue(pAC->dev[pTxPort->PortIndex]);
-                       return;
-               }
-               if (Control & TX_CTRL_OWN_BMU) {
-                       pTxPort->pTxdRingTail = pTxd;
-                       if (pTxPort->TxdRingFree > 0) {
-                               netif_wake_queue(pAC->dev[pTxPort->PortIndex]);
-                       }
-                       return;
-               }
-
-               /* release the DMA mapping */
-               PhysAddr = ((SK_U64) pTxd->VDataHigh) << (SK_U64) 32;
-               PhysAddr |= (SK_U64) pTxd->VDataLow;
-               pci_unmap_page(pAC->PciDev, PhysAddr,
-                                pTxd->pMBuf->len,
-                                PCI_DMA_TODEVICE);
-
-               if (Control & TX_CTRL_EOF)
-                       DEV_KFREE_SKB_ANY(pTxd->pMBuf); /* free message */
-
-               pTxPort->TxdRingFree++;
-               pTxd->TBControl &= ~TX_CTRL_SOFTWARE;
-               pTxd = pTxd->pNextTxd; /* point behind fragment with EOF */
-       } /* while(forever) */
-} /* FreeTxDescriptors */
-
-/*****************************************************************************
- *
- *     FillRxRing - fill the receive ring with valid descriptors
- *
- * Description:
- *     This function fills the receive ring descriptors with data
- *     segments and makes them valid for the BMU.
- *     The active ring is filled completely, if possible.
- *     The non-active ring is filled only partial to save memory.
- *
- * Description of rx ring structure:
- *     head - points to the descriptor which will be used next by the BMU
- *     tail - points to the next descriptor to give to the BMU
- *
- * Returns:    N/A
- */
-static void FillRxRing(
-SK_AC          *pAC,           /* pointer to the adapter context */
-RX_PORT                *pRxPort)       /* ptr to port struct for which the ring
-                                  should be filled */
-{
-unsigned long  Flags;
-
-       spin_lock_irqsave(&pRxPort->RxDesRingLock, Flags);
-       while (pRxPort->RxdRingFree > pRxPort->RxFillLimit) {
-               if(!FillRxDescriptor(pAC, pRxPort))
-                       break;
-       }
-       spin_unlock_irqrestore(&pRxPort->RxDesRingLock, Flags);
-} /* FillRxRing */
-
-
-/*****************************************************************************
- *
- *     FillRxDescriptor - fill one buffer into the receive ring
- *
- * Description:
- *     The function allocates a new receive buffer and
- *     puts it into the next descriptor.
- *
- * Returns:
- *     SK_TRUE - a buffer was added to the ring
- *     SK_FALSE - a buffer could not be added
- */
-static SK_BOOL FillRxDescriptor(
-SK_AC          *pAC,           /* pointer to the adapter context struct */
-RX_PORT                *pRxPort)       /* ptr to port struct of ring to fill */
-{
-struct sk_buff *pMsgBlock;     /* pointer to a new message block */
-RXD            *pRxd;          /* the rxd to fill */
-SK_U16         Length;         /* data fragment length */
-SK_U64         PhysAddr;       /* physical address of a rx buffer */
-
-       pMsgBlock = alloc_skb(pAC->RxBufSize, GFP_ATOMIC);
-       if (pMsgBlock == NULL) {
-               SK_DBG_MSG(NULL, SK_DBGMOD_DRV,
-                       SK_DBGCAT_DRV_ENTRY,
-                       ("%s: Allocation of rx buffer failed !\n",
-                       pAC->dev[pRxPort->PortIndex]->name));
-               SK_PNMI_CNT_NO_RX_BUF(pAC, pRxPort->PortIndex);
-               return(SK_FALSE);
-       }
-       skb_reserve(pMsgBlock, 2); /* to align IP frames */
-       /* skb allocated ok, so add buffer */
-       pRxd = pRxPort->pRxdRingTail;
-       pRxPort->pRxdRingTail = pRxd->pNextRxd;
-       pRxPort->RxdRingFree--;
-       Length = pAC->RxBufSize;
-#if 0
-       PhysAddr = (SK_U64) pci_map_page(pAC->PciDev,
-               virt_to_page(pMsgBlock->data),
-               ((unsigned long) pMsgBlock->data &
-               ~PAGE_MASK),
-               pAC->RxBufSize - 2,
-               PCI_DMA_FROMDEVICE);
-#else
-       PhysAddr = (SK_U64) pci_phys_to_mem(pAC->PciDev, (u32)pMsgBlock->data);
-#endif
-       pRxd->VDataLow = (SK_U32) (PhysAddr & 0xffffffff);
-       pRxd->VDataHigh = (SK_U32) (PhysAddr >> 32);
-       pRxd->pMBuf = pMsgBlock;
-       pRxd->RBControl = RX_CTRL_OWN_BMU | RX_CTRL_STF |
-               RX_CTRL_EOF_IRQ | RX_CTRL_CHECK_CSUM | Length;
-       return (SK_TRUE);
-
-} /* FillRxDescriptor */
-
-
-/*****************************************************************************
- *
- *     ReQueueRxBuffer - fill one buffer back into the receive ring
- *
- * Description:
- *     Fill a given buffer back into the rx ring. The buffer
- *     has been previously allocated and aligned, and its phys.
- *     address calculated, so this is no more necessary.
- *
- * Returns: N/A
- */
-static void ReQueueRxBuffer(
-SK_AC          *pAC,           /* pointer to the adapter context struct */
-RX_PORT                *pRxPort,       /* ptr to port struct of ring to fill */
-struct sk_buff *pMsg,          /* pointer to the buffer */
-SK_U32         PhysHigh,       /* phys address high dword */
-SK_U32         PhysLow)        /* phys address low dword */
-{
-RXD            *pRxd;          /* the rxd to fill */
-SK_U16         Length;         /* data fragment length */
-
-       pRxd = pRxPort->pRxdRingTail;
-       pRxPort->pRxdRingTail = pRxd->pNextRxd;
-       pRxPort->RxdRingFree--;
-       Length = pAC->RxBufSize;
-       pRxd->VDataLow = PhysLow;
-       pRxd->VDataHigh = PhysHigh;
-       pRxd->pMBuf = pMsg;
-       pRxd->RBControl = RX_CTRL_OWN_BMU | RX_CTRL_STF |
-               RX_CTRL_EOF_IRQ | RX_CTRL_CHECK_CSUM | Length;
-       return;
-} /* ReQueueRxBuffer */
-
-
-/*****************************************************************************
- *
- *     ReceiveIrq - handle a receive IRQ
- *
- * Description:
- *     This function is called when a receive IRQ is set.
- *     It walks the receive descriptor ring and sends up all
- *     frames that are complete.
- *
- * Returns:    N/A
- */
-#if 0
-static void ReceiveIrq(
-#else
-void ReceiveIrq(
-#endif
-       SK_AC           *pAC,                   /* pointer to adapter context */
-       RX_PORT         *pRxPort,               /* pointer to receive port struct */
-       SK_BOOL         SlowPathLock)   /* indicates if SlowPathLock is needed */
-{
-RXD                            *pRxd;                  /* pointer to receive descriptors */
-SK_U32                 Control;                /* control field of descriptor */
-struct sk_buff *pMsg;                  /* pointer to message holding frame */
-struct sk_buff *pNewMsg;               /* pointer to a new message for copying frame */
-int                            FrameLength;    /* total length of received frame */
-SK_MBUF                        *pRlmtMbuf;             /* ptr to a buffer for giving a frame to rlmt */
-SK_EVPARA              EvPara;                 /* an event parameter union */
-unsigned long  Flags;                  /* for spin lock */
-int                            PortIndex = pRxPort->PortIndex;
-unsigned int   Offset;
-unsigned int   NumBytes;
-unsigned int   ForRlmt;
-SK_BOOL                        IsBc;
-SK_BOOL                        IsMc;
-SK_BOOL  IsBadFrame;                   /* Bad frame */
-
-SK_U32                 FrameStat;
-unsigned short Csum1;
-unsigned short Csum2;
-unsigned short Type;
-#if 0
-int                            Result;
-#endif
-SK_U64                 PhysAddr;
-
-rx_start:
-       /* do forever; exit if RX_CTRL_OWN_BMU found */
-       for ( pRxd = pRxPort->pRxdRingHead ;
-                 pRxPort->RxdRingFree < pAC->RxDescrPerRing ;
-                 pRxd = pRxd->pNextRxd,
-                 pRxPort->pRxdRingHead = pRxd,
-                 pRxPort->RxdRingFree ++) {
-
-               /*
-                * For a better understanding of this loop
-                * Go through every descriptor beginning at the head
-                * Please note: the ring might be completely received so the OWN bit
-                * set is not a good crirteria to leave that loop.
-                * Therefore the RingFree counter is used.
-                * On entry of this loop pRxd is a pointer to the Rxd that needs
-                * to be checked next.
-                */
-
-               Control = pRxd->RBControl;
-
-               /* check if this descriptor is ready */
-               if ((Control & RX_CTRL_OWN_BMU) != 0) {
-                       /* this descriptor is not yet ready */
-                       /* This is the usual end of the loop */
-                       /* We don't need to start the ring again */
-                       FillRxRing(pAC, pRxPort);
-                       return;
-               }
-
-               /* get length of frame and check it */
-               FrameLength = Control & RX_CTRL_LEN_MASK;
-               if (FrameLength > pAC->RxBufSize) {
-                       goto rx_failed;
-               }
-
-               /* check for STF and EOF */
-               if ((Control & (RX_CTRL_STF | RX_CTRL_EOF)) !=
-                       (RX_CTRL_STF | RX_CTRL_EOF)) {
-                       goto rx_failed;
-               }
-
-               /* here we have a complete frame in the ring */
-               pMsg = pRxd->pMBuf;
-
-               FrameStat = pRxd->FrameStat;
-
-               /* check for frame length mismatch */
-#define XMR_FS_LEN_SHIFT        18
-#define GMR_FS_LEN_SHIFT        16
-               if (pAC->GIni.GIChipId == CHIP_ID_GENESIS) {
-                       if (FrameLength != (SK_U32) (FrameStat >> XMR_FS_LEN_SHIFT)) {
-                               SK_DBG_MSG(NULL, SK_DBGMOD_DRV,
-                                       SK_DBGCAT_DRV_RX_PROGRESS,
-                                       ("skge: Frame length mismatch (%u/%u).\n",
-                                       FrameLength,
-                                       (SK_U32) (FrameStat >> XMR_FS_LEN_SHIFT)));
-                               goto rx_failed;
-                       }
-               }
-               else {
-                       if (FrameLength != (SK_U32) (FrameStat >> GMR_FS_LEN_SHIFT)) {
-                               SK_DBG_MSG(NULL, SK_DBGMOD_DRV,
-                                       SK_DBGCAT_DRV_RX_PROGRESS,
-                                       ("skge: Frame length mismatch (%u/%u).\n",
-                                       FrameLength,
-                                       (SK_U32) (FrameStat >> XMR_FS_LEN_SHIFT)));
-                               goto rx_failed;
-                       }
-               }
-
-               /* Set Rx Status */
-               if (pAC->GIni.GIChipId == CHIP_ID_GENESIS) {
-                       IsBc = (FrameStat & XMR_FS_BC) != 0;
-                       IsMc = (FrameStat & XMR_FS_MC) != 0;
-                       IsBadFrame = (FrameStat &
-                               (XMR_FS_ANY_ERR | XMR_FS_2L_VLAN)) != 0;
-               } else {
-                       IsBc = (FrameStat & GMR_FS_BC) != 0;
-                       IsMc = (FrameStat & GMR_FS_MC) != 0;
-                       IsBadFrame = (((FrameStat & GMR_FS_ANY_ERR) != 0) ||
-                                                       ((FrameStat & GMR_FS_RX_OK) == 0));
-               }
-
-               SK_DBG_MSG(NULL, SK_DBGMOD_DRV, 0,
-                       ("Received frame of length %d on port %d\n",
-                       FrameLength, PortIndex));
-               SK_DBG_MSG(NULL, SK_DBGMOD_DRV, 0,
-                       ("Number of free rx descriptors: %d\n",
-                       pRxPort->RxdRingFree));
-/* DumpMsg(pMsg, "Rx");        */
-
-               if ((Control & RX_CTRL_STAT_VALID) != RX_CTRL_STAT_VALID ||
-                       (IsBadFrame)) {
-#if 0
-                       (FrameStat & (XMR_FS_ANY_ERR | XMR_FS_2L_VLAN)) != 0) {
-#endif
-                       /* there is a receive error in this frame */
-                       SK_DBG_MSG(NULL, SK_DBGMOD_DRV,
-                               SK_DBGCAT_DRV_RX_PROGRESS,
-                               ("skge: Error in received frame, dropped!\n"
-                               "Control: %x\nRxStat: %x\n",
-                               Control, FrameStat));
-
-                       PhysAddr = ((SK_U64) pRxd->VDataHigh) << (SK_U64)32;
-                       PhysAddr |= (SK_U64) pRxd->VDataLow;
-                       pci_dma_sync_single(pAC->PciDev,
-                                               (dma_addr_t) PhysAddr,
-                                               FrameLength,
-                                               PCI_DMA_FROMDEVICE);
-                       ReQueueRxBuffer(pAC, pRxPort, pMsg,
-                               pRxd->VDataHigh, pRxd->VDataLow);
-
-                       continue;
-               }
-
-               /*
-                * if short frame then copy data to reduce memory waste
-                */
-               if ((FrameLength < SK_COPY_THRESHOLD) &&
-                       ((pNewMsg = alloc_skb(FrameLength+2, GFP_ATOMIC)) != NULL)) {
-                       /*
-                        * Short frame detected and allocation successfull
-                        */
-                       /* use new skb and copy data */
-                       skb_reserve(pNewMsg, 2);
-                       skb_put(pNewMsg, FrameLength);
-                       PhysAddr = ((SK_U64) pRxd->VDataHigh) << (SK_U64)32;
-                       PhysAddr |= (SK_U64) pRxd->VDataLow;
-
-                       pci_dma_sync_single(pAC->PciDev,
-                                               (dma_addr_t) PhysAddr,
-                                               FrameLength,
-                                               PCI_DMA_FROMDEVICE);
-                       eth_copy_and_sum(pNewMsg, pMsg->data,
-                               FrameLength, 0);
-                       ReQueueRxBuffer(pAC, pRxPort, pMsg,
-                               pRxd->VDataHigh, pRxd->VDataLow);
-                       pMsg = pNewMsg;
-
-               }
-               else {
-                       /*
-                        * if large frame, or SKB allocation failed, pass
-                        * the SKB directly to the networking
-                        */
-
-                       PhysAddr = ((SK_U64) pRxd->VDataHigh) << (SK_U64)32;
-                       PhysAddr |= (SK_U64) pRxd->VDataLow;
-
-                       /* release the DMA mapping */
-                       pci_unmap_single(pAC->PciDev,
-                                        PhysAddr,
-                                        pAC->RxBufSize - 2,
-                                        PCI_DMA_FROMDEVICE);
-
-                       /* set length in message */
-                       skb_put(pMsg, FrameLength);
-                       /* hardware checksum */
-                       Type = ntohs(*((short*)&pMsg->data[12]));
-                       if (Type == 0x800) {
-                               Csum1=le16_to_cpu(pRxd->TcpSums & 0xffff);
-                               Csum2=le16_to_cpu((pRxd->TcpSums >> 16) & 0xffff);
-#if 0
-                               if ((((Csum1 & 0xfffe) && (Csum2 & 0xfffe)) &&
-                                       (pAC->GIni.GIChipId == CHIP_ID_GENESIS)) ||
-                                       (pAC->GIni.GIChipId == CHIP_ID_YUKON)) {
-                                       Result = SkCsGetReceiveInfo(pAC,
-                                               &pMsg->data[14],
-                                               Csum1, Csum2, pRxPort->PortIndex);
-                                       if (Result ==
-                                               SKCS_STATUS_IP_FRAGMENT ||
-                                               Result ==
-                                               SKCS_STATUS_IP_CSUM_OK ||
-                                               Result ==
-                                               SKCS_STATUS_TCP_CSUM_OK ||
-                                               Result ==
-                                               SKCS_STATUS_UDP_CSUM_OK) {
-                                                       pMsg->ip_summed =
-                                                       CHECKSUM_UNNECESSARY;
-                                       } else {
-                                               SK_DBG_MSG(NULL, SK_DBGMOD_DRV,
-                                               SK_DBGCAT_DRV_RX_PROGRESS,
-                                               ("skge: CRC error. Frame dropped!\n"));
-                                               goto rx_failed;
-                                       }
-                               }/* checksumControl calculation valid */
-#endif
-                       } /* IP frame */
-               } /* frame > SK_COPY_TRESHOLD */
-
-               SK_DBG_MSG(NULL, SK_DBGMOD_DRV, 1,("V"));
-               ForRlmt = SK_RLMT_RX_PROTOCOL;
-#if 0
-               IsBc = (FrameStat & XMR_FS_BC)==XMR_FS_BC;
-#endif
-               SK_RLMT_PRE_LOOKAHEAD(pAC, PortIndex, FrameLength,
-                       IsBc, &Offset, &NumBytes);
-               if (NumBytes != 0) {
-#if 0
-                       IsMc = (FrameStat & XMR_FS_MC)==XMR_FS_MC;
-#endif
-                       SK_RLMT_LOOKAHEAD(pAC, PortIndex,
-                               &pMsg->data[Offset],
-                               IsBc, IsMc, &ForRlmt);
-               }
-               if (ForRlmt == SK_RLMT_RX_PROTOCOL) {
-                                       SK_DBG_MSG(NULL, SK_DBGMOD_DRV, 1,("W"));
-                       /* send up only frames from active port */
-                       if ((PortIndex == pAC->ActivePort) ||
-                               (pAC->RlmtNets == 2)) {
-                               /* frame for upper layer */
-                               SK_DBG_MSG(NULL, SK_DBGMOD_DRV, 1,("U"));
-#ifdef xDEBUG
-                               DumpMsg(pMsg, "Rx");
-#endif
-                               SK_PNMI_CNT_RX_OCTETS_DELIVERED(pAC,
-                                       FrameLength, pRxPort->PortIndex);
-
-#if 0
-                               pMsg->dev = pAC->dev[pRxPort->PortIndex];
-                               pMsg->protocol = eth_type_trans(pMsg,
-                                       pAC->dev[pRxPort->PortIndex]);
-                               netif_rx(pMsg);
-                               pAC->dev[pRxPort->PortIndex]->last_rx = jiffies;
-#else
-                               NetReceive(pMsg->data, pMsg->len);
-                               dev_kfree_skb_any(pMsg);
-#endif
-                       }
-                       else {
-                               /* drop frame */
-                               SK_DBG_MSG(NULL, SK_DBGMOD_DRV,
-                                       SK_DBGCAT_DRV_RX_PROGRESS,
-                                       ("D"));
-                               DEV_KFREE_SKB(pMsg);
-                       }
-
-               } /* if not for rlmt */
-               else {
-                       /* packet for rlmt */
-                       SK_DBG_MSG(NULL, SK_DBGMOD_DRV,
-                               SK_DBGCAT_DRV_RX_PROGRESS, ("R"));
-                       pRlmtMbuf = SkDrvAllocRlmtMbuf(pAC,
-                               pAC->IoBase, FrameLength);
-                       if (pRlmtMbuf != NULL) {
-                               pRlmtMbuf->pNext = NULL;
-                               pRlmtMbuf->Length = FrameLength;
-                               pRlmtMbuf->PortIdx = PortIndex;
-                               EvPara.pParaPtr = pRlmtMbuf;
-                               memcpy((char*)(pRlmtMbuf->pData),
-                                          (char*)(pMsg->data),
-                                          FrameLength);
-
-                               /* SlowPathLock needed? */
-                               if (SlowPathLock == SK_TRUE) {
-                                       spin_lock_irqsave(&pAC->SlowPathLock, Flags);
-                                       SkEventQueue(pAC, SKGE_RLMT,
-                                               SK_RLMT_PACKET_RECEIVED,
-                                               EvPara);
-                                       pAC->CheckQueue = SK_TRUE;
-                                       spin_unlock_irqrestore(&pAC->SlowPathLock, Flags);
-                               } else {
-                                       SkEventQueue(pAC, SKGE_RLMT,
-                                               SK_RLMT_PACKET_RECEIVED,
-                                               EvPara);
-                                       pAC->CheckQueue = SK_TRUE;
-                               }
-
-                               SK_DBG_MSG(NULL, SK_DBGMOD_DRV,
-                                       SK_DBGCAT_DRV_RX_PROGRESS,
-                                       ("Q"));
-                       }
-#if 0
-                       if ((pAC->dev[pRxPort->PortIndex]->flags &
-                               (IFF_PROMISC | IFF_ALLMULTI)) != 0 ||
-                               (ForRlmt & SK_RLMT_RX_PROTOCOL) ==
-                               SK_RLMT_RX_PROTOCOL) {
-                               pMsg->dev = pAC->dev[pRxPort->PortIndex];
-                               pMsg->protocol = eth_type_trans(pMsg,
-                                       pAC->dev[pRxPort->PortIndex]);
-                               netif_rx(pMsg);
-                               pAC->dev[pRxPort->PortIndex]->last_rx = jiffies;
-                       }
-#else
-                       if (0) {
-                       }
-#endif
-                       else {
-                               DEV_KFREE_SKB(pMsg);
-                       }
-
-               } /* if packet for rlmt */
-       } /* for ... scanning the RXD ring */
-
-       /* RXD ring is empty -> fill and restart */
-       FillRxRing(pAC, pRxPort);
-       /* do not start if called from Close */
-       if (pAC->BoardLevel > 0) {
-               ClearAndStartRx(pAC, PortIndex);
-       }
-       return;
-
-rx_failed:
-       /* remove error frame */
-       SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ERROR,
-               ("Schrottdescriptor, length: 0x%x\n", FrameLength));
-
-       /* release the DMA mapping */
-
-       PhysAddr = ((SK_U64) pRxd->VDataHigh) << (SK_U64)32;
-       PhysAddr |= (SK_U64) pRxd->VDataLow;
-       pci_unmap_page(pAC->PciDev,
-                        PhysAddr,
-                        pAC->RxBufSize - 2,
-                        PCI_DMA_FROMDEVICE);
-       DEV_KFREE_SKB_IRQ(pRxd->pMBuf);
-       pRxd->pMBuf = NULL;
-       pRxPort->RxdRingFree++;
-       pRxPort->pRxdRingHead = pRxd->pNextRxd;
-       goto rx_start;
-
-} /* ReceiveIrq */
-
-
-/*****************************************************************************
- *
- *     ClearAndStartRx - give a start receive command to BMU, clear IRQ
- *
- * Description:
- *     This function sends a start command and a clear interrupt
- *     command for one receive queue to the BMU.
- *
- * Returns: N/A
- *     none
- */
-static void ClearAndStartRx(
-SK_AC  *pAC,           /* pointer to the adapter context */
-int    PortIndex)      /* index of the receive port (XMAC) */
-{
-       SK_OUT8(pAC->IoBase, RxQueueAddr[PortIndex]+RX_Q_CTRL,
-               RX_Q_CTRL_START | RX_Q_CTRL_CLR_I_EOF);
-} /* ClearAndStartRx */
-
-
-/*****************************************************************************
- *
- *     ClearTxIrq - give a clear transmit IRQ command to BMU
- *
- * Description:
- *     This function sends a clear tx IRQ command for one
- *     transmit queue to the BMU.
- *
- * Returns: N/A
- */
-static void ClearTxIrq(
-SK_AC  *pAC,           /* pointer to the adapter context */
-int    PortIndex,      /* index of the transmit port (XMAC) */
-int    Prio)           /* priority or normal queue */
-{
-       SK_OUT8(pAC->IoBase, TxQueueAddr[PortIndex][Prio]+TX_Q_CTRL,
-               TX_Q_CTRL_CLR_I_EOF);
-} /* ClearTxIrq */
-
-
-/*****************************************************************************
- *
- *     ClearRxRing - remove all buffers from the receive ring
- *
- * Description:
- *     This function removes all receive buffers from the ring.
- *     The receive BMU must be stopped before calling this function.
- *
- * Returns: N/A
- */
-static void ClearRxRing(
-SK_AC  *pAC,           /* pointer to adapter context */
-RX_PORT        *pRxPort)       /* pointer to rx port struct */
-{
-RXD            *pRxd;  /* pointer to the current descriptor */
-unsigned long  Flags;
-SK_U64         PhysAddr;
-
-       if (pRxPort->RxdRingFree == pAC->RxDescrPerRing) {
-               return;
-       }
-       spin_lock_irqsave(&pRxPort->RxDesRingLock, Flags);
-       pRxd = pRxPort->pRxdRingHead;
-       do {
-               if (pRxd->pMBuf != NULL) {
-
-                       PhysAddr = ((SK_U64) pRxd->VDataHigh) << (SK_U64)32;
-                       PhysAddr |= (SK_U64) pRxd->VDataLow;
-                       pci_unmap_page(pAC->PciDev,
-                                        PhysAddr,
-                                        pAC->RxBufSize - 2,
-                                        PCI_DMA_FROMDEVICE);
-                       DEV_KFREE_SKB(pRxd->pMBuf);
-                       pRxd->pMBuf = NULL;
-               }
-               pRxd->RBControl &= RX_CTRL_OWN_BMU;
-               pRxd = pRxd->pNextRxd;
-               pRxPort->RxdRingFree++;
-       } while (pRxd != pRxPort->pRxdRingTail);
-       pRxPort->pRxdRingTail = pRxPort->pRxdRingHead;
-       spin_unlock_irqrestore(&pRxPort->RxDesRingLock, Flags);
-} /* ClearRxRing */
-
-
-/*****************************************************************************
- *
- *     ClearTxRing - remove all buffers from the transmit ring
- *
- * Description:
- *     This function removes all transmit buffers from the ring.
- *     The transmit BMU must be stopped before calling this function
- *     and transmitting at the upper level must be disabled.
- *     The BMU own bit of all descriptors is cleared, the rest is
- *     done by calling FreeTxDescriptors.
- *
- * Returns: N/A
- */
-static void ClearTxRing(
-SK_AC  *pAC,           /* pointer to adapter context */
-TX_PORT        *pTxPort)       /* pointer to tx prt struct */
-{
-TXD            *pTxd;          /* pointer to the current descriptor */
-int            i;
-unsigned long  Flags;
-
-       spin_lock_irqsave(&pTxPort->TxDesRingLock, Flags);
-       pTxd = pTxPort->pTxdRingHead;
-       for (i=0; i<pAC->TxDescrPerRing; i++) {
-               pTxd->TBControl &= ~TX_CTRL_OWN_BMU;
-               pTxd = pTxd->pNextTxd;
-       }
-       FreeTxDescriptors(pAC, pTxPort);
-       spin_unlock_irqrestore(&pTxPort->TxDesRingLock, Flags);
-} /* ClearTxRing */
-
-
-#if 0
-/*****************************************************************************
- *
- *     SetQueueSizes - configure the sizes of rx and tx queues
- *
- * Description:
- *     This function assigns the sizes for active and passive port
- *     to the appropriate HWinit structure variables.
- *     The passive port(s) get standard values, all remaining RAM
- *     is given to the active port.
- *     The queue sizes are in kbyte and must be multiple of 8.
- *     The limits for the number of buffers filled into the rx rings
- *     is also set in this routine.
- *
- * Returns:
- *     none
- */
-static void SetQueueSizes(
-SK_AC  *pAC)   /* pointer to the adapter context */
-{
-int    StandbyRam;     /* adapter RAM used for a standby port */
-int    RemainingRam;   /* adapter RAM available for the active port */
-int    RxRam;          /* RAM used for the active port receive queue */
-int    i;              /* loop counter */
-
-if (pAC->RlmtNets == 1) {
-       StandbyRam = SK_RLMT_STANDBY_QRXSIZE + SK_RLMT_STANDBY_QXASIZE +
-               SK_RLMT_STANDBY_QXSSIZE;
-       RemainingRam = pAC->GIni.GIRamSize -
-               (pAC->GIni.GIMacsFound-1) * StandbyRam;
-       for (i=0; i<pAC->GIni.GIMacsFound; i++) {
-               pAC->GIni.GP[i].PRxQSize = SK_RLMT_STANDBY_QRXSIZE;
-               pAC->GIni.GP[i].PXSQSize = SK_RLMT_STANDBY_QXSSIZE;
-               pAC->GIni.GP[i].PXAQSize = SK_RLMT_STANDBY_QXASIZE;
-       }
-       RxRam = (RemainingRam * 8 / 10) & ~7;
-       pAC->GIni.GP[pAC->ActivePort].PRxQSize = RxRam;
-       pAC->GIni.GP[pAC->ActivePort].PXSQSize = 0;
-       pAC->GIni.GP[pAC->ActivePort].PXAQSize =
-               (RemainingRam - RxRam) & ~7;
-       pAC->RxQueueSize = RxRam;
-       pAC->TxSQueueSize = 0;
-       pAC->TxAQueueSize = (RemainingRam - RxRam) & ~7;
-       SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ENTRY,
-               ("queue sizes settings - rx:%d  txA:%d txS:%d\n",
-               pAC->RxQueueSize,pAC->TxAQueueSize, pAC->TxSQueueSize));
-} else {
-       RemainingRam = pAC->GIni.GIRamSize/pAC->GIni.GIMacsFound;
-       RxRam = (RemainingRam * 8 / 10) & ~7;
-       for (i=0; i<pAC->GIni.GIMacsFound; i++) {
-               pAC->GIni.GP[i].PRxQSize = RxRam;
-               pAC->GIni.GP[i].PXSQSize = 0;
-               pAC->GIni.GP[i].PXAQSize = (RemainingRam - RxRam) & ~7;
-       }
-
-       pAC->RxQueueSize = RxRam;
-       pAC->TxSQueueSize = 0;
-       pAC->TxAQueueSize = (RemainingRam - RxRam) & ~7;
-}
-       for (i=0; i<SK_MAX_MACS; i++) {
-               pAC->RxPort[i].RxFillLimit = pAC->RxDescrPerRing;
-       }
-
-       if (pAC->RlmtNets == 2) {
-               for (i=0; i<pAC->GIni.GIMacsFound; i++) {
-                       pAC->RxPort[i].RxFillLimit = pAC->RxDescrPerRing - 100;
-               }
-       } else {
-               for (i=0; i<pAC->GIni.GIMacsFound; i++) {
-                       pAC->RxPort[i].RxFillLimit = pAC->RxDescrPerRing - 100;
-               }
-               /*
-                * Do not set the Limit to 0, because this could cause
-                * wrap around with ReQueue'ed buffers (a buffer could
-                * be requeued in the same position, made accessable to
-                * the hardware, and the hardware could change its
-                * contents!
-                */
-               pAC->RxPort[pAC->ActivePort].RxFillLimit = 1;
-       }
-
-#ifdef DEBUG
-       for (i=0; i<pAC->GIni.GIMacsFound; i++) {
-               SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_TX_PROGRESS,
-                       ("i: %d,  RxQSize: %d,  PXSQsize: %d, PXAQSize: %d\n",
-                       i,
-                       pAC->GIni.GP[i].PRxQSize,
-                       pAC->GIni.GP[i].PXSQSize,
-                       pAC->GIni.GP[i].PXAQSize));
-       }
-#endif
-} /* SetQueueSizes */
-
-
-/*****************************************************************************
- *
- *     SkGeSetMacAddr - Set the hardware MAC address
- *
- * Description:
- *     This function sets the MAC address used by the adapter.
- *
- * Returns:
- *     0, if everything is ok
- *     !=0, on error
- */
-static int SkGeSetMacAddr(struct SK_NET_DEVICE *dev, void *p)
-{
-
-DEV_NET *pNet = (DEV_NET*) dev->priv;
-SK_AC  *pAC = pNet->pAC;
-
-struct sockaddr        *addr = p;
-unsigned long  Flags;
-
-       SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ENTRY,
-               ("SkGeSetMacAddr starts now...\n"));
-       if(netif_running(dev))
-               return -EBUSY;
-
-       memcpy(dev->dev_addr, addr->sa_data,dev->addr_len);
-
-       spin_lock_irqsave(&pAC->SlowPathLock, Flags);
-
-       if (pAC->RlmtNets == 2)
-               SkAddrOverride(pAC, pAC->IoBase, pNet->NetNr,
-                       (SK_MAC_ADDR*)dev->dev_addr, SK_ADDR_VIRTUAL_ADDRESS);
-       else
-               SkAddrOverride(pAC, pAC->IoBase, pAC->ActivePort,
-                       (SK_MAC_ADDR*)dev->dev_addr, SK_ADDR_VIRTUAL_ADDRESS);
-
-
-       spin_unlock_irqrestore(&pAC->SlowPathLock, Flags);
-       return 0;
-} /* SkGeSetMacAddr */
-#endif
-
-
-/*****************************************************************************
- *
- *     SkGeSetRxMode - set receive mode
- *
- * Description:
- *     This function sets the receive mode of an adapter. The adapter
- *     supports promiscuous mode, allmulticast mode and a number of
- *     multicast addresses. If more multicast addresses the available
- *     are selected, a hash function in the hardware is used.
- *
- * Returns:
- *     0, if everything is ok
- *     !=0, on error
- */
-#if 0
-static void SkGeSetRxMode(struct SK_NET_DEVICE *dev)
-{
-
-DEV_NET                *pNet;
-SK_AC          *pAC;
-
-struct dev_mc_list     *pMcList;
-int                    i;
-int                    PortIdx;
-unsigned long          Flags;
-
-       SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ENTRY,
-               ("SkGeSetRxMode starts now... "));
-
-       pNet = (DEV_NET*) dev->priv;
-       pAC = pNet->pAC;
-       if (pAC->RlmtNets == 1)
-               PortIdx = pAC->ActivePort;
-       else
-               PortIdx = pNet->NetNr;
-
-       spin_lock_irqsave(&pAC->SlowPathLock, Flags);
-       if (dev->flags & IFF_PROMISC) {
-               SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ENTRY,
-                       ("PROMISCUOUS mode\n"));
-               SkAddrPromiscuousChange(pAC, pAC->IoBase, PortIdx,
-                       SK_PROM_MODE_LLC);
-       } else if (dev->flags & IFF_ALLMULTI) {
-               SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ENTRY,
-                       ("ALLMULTI mode\n"));
-               SkAddrPromiscuousChange(pAC, pAC->IoBase, PortIdx,
-                       SK_PROM_MODE_ALL_MC);
-       } else {
-               SkAddrPromiscuousChange(pAC, pAC->IoBase, PortIdx,
-                       SK_PROM_MODE_NONE);
-               SkAddrMcClear(pAC, pAC->IoBase, PortIdx, 0);
-
-               SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ENTRY,
-                       ("Number of MC entries: %d ", dev->mc_count));
-
-               pMcList = dev->mc_list;
-               for (i=0; i<dev->mc_count; i++, pMcList = pMcList->next) {
-                       SkAddrMcAdd(pAC, pAC->IoBase, PortIdx,
-                               (SK_MAC_ADDR*)pMcList->dmi_addr, 0);
-                       SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_MCA,
-                               ("%02x:%02x:%02x:%02x:%02x:%02x\n",
-                               pMcList->dmi_addr[0],
-                               pMcList->dmi_addr[1],
-                               pMcList->dmi_addr[2],
-                               pMcList->dmi_addr[3],
-                               pMcList->dmi_addr[4],
-                               pMcList->dmi_addr[5]));
-               }
-               SkAddrMcUpdate(pAC, pAC->IoBase, PortIdx);
-       }
-       spin_unlock_irqrestore(&pAC->SlowPathLock, Flags);
-
-       return;
-} /* SkGeSetRxMode */
-
-
-/*****************************************************************************
- *
- *     SkGeChangeMtu - set the MTU to another value
- *
- * Description:
- *     This function sets is called whenever the MTU size is changed
- *     (ifconfig mtu xxx dev ethX). If the MTU is bigger than standard
- *     ethernet MTU size, long frame support is activated.
- *
- * Returns:
- *     0, if everything is ok
- *     !=0, on error
- */
-static int SkGeChangeMtu(struct SK_NET_DEVICE *dev, int NewMtu)
-{
-DEV_NET                *pNet;
-DEV_NET                *pOtherNet;
-SK_AC          *pAC;
-unsigned long  Flags;
-int            i;
-SK_EVPARA      EvPara;
-
-       SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ENTRY,
-               ("SkGeChangeMtu starts now...\n"));
-
-       pNet = (DEV_NET*) dev->priv;
-       pAC = pNet->pAC;
-
-       if ((NewMtu < 68) || (NewMtu > SK_JUMBO_MTU)) {
-               return -EINVAL;
-       }
-
-       if(pAC->BoardLevel != 2) {
-               return -EINVAL;
-       }
-
-       pNet->Mtu = NewMtu;
-       pOtherNet = (DEV_NET*)pAC->dev[1 - pNet->NetNr]->priv;
-       if ((pOtherNet->Mtu > 1500) && (NewMtu <= 1500) && (pOtherNet->Up==1)) {
-               return(0);
-       }
-
-       EvPara.Para32[0] = pNet->NetNr;
-       EvPara.Para32[1] = -1;
-
-       pAC->RxBufSize = NewMtu + 32;
-       dev->mtu = NewMtu;
-
-       SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ENTRY,
-               ("New MTU: %d\n", NewMtu));
-
-       /* prevent reconfiguration while changing the MTU */
-
-       /* disable interrupts */
-       SK_OUT32(pAC->IoBase, B0_IMSK, 0);
-       spin_lock_irqsave(&pAC->SlowPathLock, Flags);
-
-       /* Found more than one port */
-       if ((pAC->GIni.GIMacsFound == 2 ) &&
-               (pAC->RlmtNets == 2)) {
-                       /* Stop both ports */
-                       EvPara.Para32[0] = 0;
-                       SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_STOP, EvPara);
-                       EvPara.Para32[0] = 1;
-                       SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_STOP, EvPara);
-       } else {
-               SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_STOP, EvPara);
-       }
-
-       SkEventDispatcher(pAC, pAC->IoBase);
-
-       for (i=0; i<pAC->GIni.GIMacsFound; i++) {
-               spin_lock_irqsave(
-                       &pAC->TxPort[i][TX_PRIO_LOW].TxDesRingLock, Flags);
-               netif_stop_queue(pAC->dev[i]);
-
-       }
-
-       /*
-        * adjust number of rx buffers allocated
-        */
-       if (NewMtu > 1500) {
-               /* use less rx buffers */
-               for (i=0; i<pAC->GIni.GIMacsFound; i++) {
-                       /* Found more than one port */
-                       if ((pAC->GIni.GIMacsFound == 2 ) &&
-                               (pAC->RlmtNets == 2)) {
-                                       pAC->RxPort[i].RxFillLimit =
-                                               pAC->RxDescrPerRing - 100;
-                       } else {
-                               if (i == pAC->ActivePort)
-                                       pAC->RxPort[i].RxFillLimit =
-                                               pAC->RxDescrPerRing - 100;
-                               else
-                                       pAC->RxPort[i].RxFillLimit =
-                                               pAC->RxDescrPerRing - 10;
-                       }
-               }
-       }
-       else {
-               /* use normal amount of rx buffers */
-               for (i=0; i<pAC->GIni.GIMacsFound; i++) {
-                       /* Found more than one port */
-                       if ((pAC->GIni.GIMacsFound == 2 ) &&
-                               (pAC->RlmtNets == 2)) {
-                                       pAC->RxPort[i].RxFillLimit = 1;
-                       } else {
-                               if (i == pAC->ActivePort)
-                                       pAC->RxPort[i].RxFillLimit = 1;
-                               else
-                                       pAC->RxPort[i].RxFillLimit =
-                                               pAC->RxDescrPerRing - 100;
-                       }
-               }
-       }
-
-       SkGeDeInit(pAC, pAC->IoBase);
-
-       /*
-        * enable/disable hardware support for long frames
-        */
-       if (NewMtu > 1500) {
-/*             pAC->JumboActivated = SK_TRUE; /#* is never set back !!! */
-               pAC->GIni.GIPortUsage = SK_JUMBO_LINK;
-       }
-       else {
-               if ((pAC->GIni.GIMacsFound == 2 ) &&
-                       (pAC->RlmtNets == 2)) {
-                       pAC->GIni.GIPortUsage = SK_MUL_LINK;
-               } else {
-                       pAC->GIni.GIPortUsage = SK_RED_LINK;
-               }
-       }
-
-       SkGeInit(   pAC, pAC->IoBase, 1);
-       SkI2cInit(  pAC, pAC->IoBase, 1);
-       SkEventInit(pAC, pAC->IoBase, 1);
-       SkPnmiInit( pAC, pAC->IoBase, 1);
-       SkAddrInit( pAC, pAC->IoBase, 1);
-       SkRlmtInit( pAC, pAC->IoBase, 1);
-       SkTimerInit(pAC, pAC->IoBase, 1);
-
-       /*
-        * tschilling:
-        * Speed and others are set back to default in level 1 init!
-        */
-       GetConfiguration(pAC);
-
-       SkGeInit(   pAC, pAC->IoBase, 2);
-       SkI2cInit(  pAC, pAC->IoBase, 2);
-       SkEventInit(pAC, pAC->IoBase, 2);
-       SkPnmiInit( pAC, pAC->IoBase, 2);
-       SkAddrInit( pAC, pAC->IoBase, 2);
-       SkRlmtInit( pAC, pAC->IoBase, 2);
-       SkTimerInit(pAC, pAC->IoBase, 2);
-
-       /*
-        * clear and reinit the rx rings here
-        */
-       for (i=0; i<pAC->GIni.GIMacsFound; i++) {
-               ReceiveIrq(pAC, &pAC->RxPort[i], SK_TRUE);
-               ClearRxRing(pAC, &pAC->RxPort[i]);
-               FillRxRing(pAC, &pAC->RxPort[i]);
-
-               /* Enable transmit descriptor polling. */
-               SkGePollTxD(pAC, pAC->IoBase, i, SK_TRUE);
-               FillRxRing(pAC, &pAC->RxPort[i]);
-       };
-
-       SkGeYellowLED(pAC, pAC->IoBase, 1);
-
-#ifdef USE_INT_MOD
-       {
-               unsigned long ModBase;
-               ModBase = 53125000 / INTS_PER_SEC;
-               SK_OUT32(pAC->IoBase, B2_IRQM_INI, ModBase);
-               SK_OUT32(pAC->IoBase, B2_IRQM_MSK, IRQ_MOD_MASK);
-               SK_OUT32(pAC->IoBase, B2_IRQM_CTRL, TIM_START);
-       }
-#endif
-
-       netif_start_queue(pAC->dev[pNet->PortNr]);
-       for (i=pAC->GIni.GIMacsFound-1; i>=0; i--) {
-               spin_unlock(&pAC->TxPort[i][TX_PRIO_LOW].TxDesRingLock);
-       }
-
-       /* enable Interrupts */
-       SK_OUT32(pAC->IoBase, B0_IMSK, IRQ_MASK);
-       SK_OUT32(pAC->IoBase, B0_HWE_IMSK, IRQ_HWE_MASK);
-
-       SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_START, EvPara);
-       SkEventDispatcher(pAC, pAC->IoBase);
-
-       /* Found more than one port */
-       if ((pAC->GIni.GIMacsFound == 2 ) &&
-               (pAC->RlmtNets == 2)) {
-                       /* Start both ports */
-                       EvPara.Para32[0] = pAC->RlmtNets;
-                       EvPara.Para32[1] = -1;
-                       SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_SET_NETS,
-                               EvPara);
-
-
-                       EvPara.Para32[1] = -1;
-                       EvPara.Para32[0] = pNet->PortNr;
-                       SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_START, EvPara);
-
-                       if (pOtherNet->Up) {
-                               EvPara.Para32[0] = pOtherNet->PortNr;
-                               SkEventQueue(pAC, SKGE_RLMT,
-                                       SK_RLMT_START, EvPara);
-                       }
-       } else {
-               SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_START, EvPara);
-       }
-
-       SkEventDispatcher(pAC, pAC->IoBase);
-       spin_unlock_irqrestore(&pAC->SlowPathLock, Flags);
-
-       return 0;
-} /* SkGeChangeMtu */
-
-
-/*****************************************************************************
- *
- *     SkGeStats - return ethernet device statistics
- *
- * Description:
- *     This function return statistic data about the ethernet device
- *     to the operating system.
- *
- * Returns:
- *     pointer to the statistic structure.
- */
-static struct net_device_stats *SkGeStats(struct SK_NET_DEVICE *dev)
-{
-DEV_NET *pNet = (DEV_NET*) dev->priv;
-SK_AC  *pAC = pNet->pAC;
-SK_PNMI_STRUCT_DATA *pPnmiStruct;       /* structure for all Pnmi-Data */
-SK_PNMI_STAT    *pPnmiStat;             /* pointer to virtual XMAC stat. data */
-SK_PNMI_CONF    *pPnmiConf;             /* pointer to virtual link config. */
-unsigned int    Size;                   /* size of pnmi struct */
-unsigned long  Flags;                  /* for spin lock */
-
-       SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ENTRY,
-               ("SkGeStats starts now...\n"));
-       pPnmiStruct = &pAC->PnmiStruct;
-       memset(pPnmiStruct, 0, sizeof(SK_PNMI_STRUCT_DATA));
-       spin_lock_irqsave(&pAC->SlowPathLock, Flags);
-       Size = SK_PNMI_STRUCT_SIZE;
-               SkPnmiGetStruct(pAC, pAC->IoBase, pPnmiStruct, &Size, pNet->NetNr);
-       spin_unlock_irqrestore(&pAC->SlowPathLock, Flags);
-       pPnmiStat = &pPnmiStruct->Stat[0];
-       pPnmiConf = &pPnmiStruct->Conf[0];
-
-       pAC->stats.rx_packets = (SK_U32) pPnmiStruct->RxDeliveredCts & 0xFFFFFFFF;
-       pAC->stats.tx_packets = (SK_U32) pPnmiStat->StatTxOkCts & 0xFFFFFFFF;
-       pAC->stats.rx_bytes = (SK_U32) pPnmiStruct->RxOctetsDeliveredCts;
-       pAC->stats.tx_bytes = (SK_U32) pPnmiStat->StatTxOctetsOkCts;
-
-       if (pNet->Mtu <= 1500) {
-               pAC->stats.rx_errors = (SK_U32) pPnmiStruct->InErrorsCts & 0xFFFFFFFF;
-       } else {
-               pAC->stats.rx_errors = (SK_U32) ((pPnmiStruct->InErrorsCts -
-                       pPnmiStat->StatRxTooLongCts) & 0xFFFFFFFF);
-       }
-
-
-       if (pAC->GIni.GP[0].PhyType == SK_PHY_XMAC && pAC->HWRevision < 12)
-               pAC->stats.rx_errors = pAC->stats.rx_errors - pPnmiStat->StatRxShortsCts;
-
-       pAC->stats.tx_errors = (SK_U32) pPnmiStat->StatTxSingleCollisionCts & 0xFFFFFFFF;
-       pAC->stats.rx_dropped = (SK_U32) pPnmiStruct->RxNoBufCts & 0xFFFFFFFF;
-       pAC->stats.tx_dropped = (SK_U32) pPnmiStruct->TxNoBufCts & 0xFFFFFFFF;
-       pAC->stats.multicast = (SK_U32) pPnmiStat->StatRxMulticastOkCts & 0xFFFFFFFF;
-       pAC->stats.collisions = (SK_U32) pPnmiStat->StatTxSingleCollisionCts & 0xFFFFFFFF;
-
-       /* detailed rx_errors: */
-       pAC->stats.rx_length_errors = (SK_U32) pPnmiStat->StatRxRuntCts & 0xFFFFFFFF;
-       pAC->stats.rx_over_errors = (SK_U32) pPnmiStat->StatRxFifoOverflowCts & 0xFFFFFFFF;
-       pAC->stats.rx_crc_errors = (SK_U32) pPnmiStat->StatRxFcsCts & 0xFFFFFFFF;
-       pAC->stats.rx_frame_errors = (SK_U32) pPnmiStat->StatRxFramingCts & 0xFFFFFFFF;
-       pAC->stats.rx_fifo_errors = (SK_U32) pPnmiStat->StatRxFifoOverflowCts & 0xFFFFFFFF;
-       pAC->stats.rx_missed_errors = (SK_U32) pPnmiStat->StatRxMissedCts & 0xFFFFFFFF;
-
-       /* detailed tx_errors */
-       pAC->stats.tx_aborted_errors = (SK_U32) 0;
-       pAC->stats.tx_carrier_errors = (SK_U32) pPnmiStat->StatTxCarrierCts & 0xFFFFFFFF;
-       pAC->stats.tx_fifo_errors = (SK_U32) pPnmiStat->StatTxFifoUnderrunCts & 0xFFFFFFFF;
-       pAC->stats.tx_heartbeat_errors = (SK_U32) pPnmiStat->StatTxCarrierCts & 0xFFFFFFFF;
-       pAC->stats.tx_window_errors = (SK_U32) 0;
-
-       return(&pAC->stats);
-} /* SkGeStats */
-
-
-/*****************************************************************************
- *
- *     SkGeIoctl - IO-control function
- *
- * Description:
- *     This function is called if an ioctl is issued on the device.
- *     There are three subfunction for reading, writing and test-writing
- *     the private MIB data structure (usefull for SysKonnect-internal tools).
- *
- * Returns:
- *     0, if everything is ok
- *     !=0, on error
- */
-static int SkGeIoctl(struct SK_NET_DEVICE *dev, struct ifreq *rq, int cmd)
-{
-DEV_NET                *pNet;
-SK_AC          *pAC;
-
-SK_GE_IOCTL    Ioctl;
-unsigned int   Err = 0;
-int            Size;
-
-       SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ENTRY,
-               ("SkGeIoctl starts now...\n"));
-
-       pNet = (DEV_NET*) dev->priv;
-       pAC = pNet->pAC;
-
-       if(copy_from_user(&Ioctl, rq->ifr_data, sizeof(SK_GE_IOCTL))) {
-               return -EFAULT;
-       }
-
-       switch(cmd) {
-       case SK_IOCTL_SETMIB:
-       case SK_IOCTL_PRESETMIB:
-               if (!capable(CAP_NET_ADMIN)) return -EPERM;
-       case SK_IOCTL_GETMIB:
-               if(copy_from_user(&pAC->PnmiStruct, Ioctl.pData,
-                       Ioctl.Len<sizeof(pAC->PnmiStruct)?
-                       Ioctl.Len : sizeof(pAC->PnmiStruct))) {
-                       return -EFAULT;
-               }
-               Size = SkGeIocMib(pNet, Ioctl.Len, cmd);
-               if(copy_to_user(Ioctl.pData, &pAC->PnmiStruct,
-                       Ioctl.Len<Size? Ioctl.Len : Size)) {
-                       return -EFAULT;
-               }
-               Ioctl.Len = Size;
-               if(copy_to_user(rq->ifr_data, &Ioctl, sizeof(SK_GE_IOCTL))) {
-                       return -EFAULT;
-               }
-               break;
-       default:
-               Err = -EOPNOTSUPP;
-       }
-       return(Err);
-} /* SkGeIoctl */
-
-
-/*****************************************************************************
- *
- *     SkGeIocMib - handle a GetMib, SetMib- or PresetMib-ioctl message
- *
- * Description:
- *     This function reads/writes the MIB data using PNMI (Private Network
- *     Management Interface).
- *     The destination for the data must be provided with the
- *     ioctl call and is given to the driver in the form of
- *     a user space address.
- *     Copying from the user-provided data area into kernel messages
- *     and back is done by copy_from_user and copy_to_user calls in
- *     SkGeIoctl.
- *
- * Returns:
- *     returned size from PNMI call
- */
-static int SkGeIocMib(
-DEV_NET                *pNet,  /* pointer to the adapter context */
-unsigned int   Size,   /* length of ioctl data */
-int            mode)   /* flag for set/preset */
-{
-unsigned long  Flags;  /* for spin lock */
-SK_AC          *pAC;
-
-       SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ENTRY,
-               ("SkGeIocMib starts now...\n"));
-       pAC = pNet->pAC;
-       /* access MIB */
-       spin_lock_irqsave(&pAC->SlowPathLock, Flags);
-       switch(mode) {
-       case SK_IOCTL_GETMIB:
-               SkPnmiGetStruct(pAC, pAC->IoBase, &pAC->PnmiStruct, &Size,
-                       pNet->NetNr);
-               break;
-       case SK_IOCTL_PRESETMIB:
-               SkPnmiPreSetStruct(pAC, pAC->IoBase, &pAC->PnmiStruct, &Size,
-                       pNet->NetNr);
-               break;
-       case SK_IOCTL_SETMIB:
-               SkPnmiSetStruct(pAC, pAC->IoBase, &pAC->PnmiStruct, &Size,
-                       pNet->NetNr);
-               break;
-       default:
-               break;
-       }
-       spin_unlock_irqrestore(&pAC->SlowPathLock, Flags);
-       SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ENTRY,
-               ("MIB data access succeeded\n"));
-       return (Size);
-} /* SkGeIocMib */
-#endif
-
-
-/*****************************************************************************
- *
- *     GetConfiguration - read configuration information
- *
- * Description:
- *     This function reads per-adapter configuration information from
- *     the options provided on the command line.
- *
- * Returns:
- *     none
- */
-static void GetConfiguration(
-SK_AC  *pAC)   /* pointer to the adapter context structure */
-{
-SK_I32 Port;           /* preferred port */
-int    LinkSpeed;      /* Link speed */
-int    AutoNeg;        /* auto negotiation off (0) or on (1) */
-int    DuplexCap;      /* duplex capabilities (0=both, 1=full, 2=half */
-int    MSMode;         /* master / slave mode selection */
-SK_BOOL        AutoSet;
-SK_BOOL DupSet;
-/*
- *     The two parameters AutoNeg. and DuplexCap. map to one configuration
- *     parameter. The mapping is described by this table:
- *     DuplexCap ->    |       both    |       full    |       half    |
- *     AutoNeg         |               |               |               |
- *     -----------------------------------------------------------------
- *     Off             |    illegal    |       Full    |       Half    |
- *     -----------------------------------------------------------------
- *     On              |   AutoBoth    |   AutoFull    |   AutoHalf    |
- *     -----------------------------------------------------------------
- *     Sense           |   AutoSense   |   AutoSense   |   AutoSense   |
- */
-int    Capabilities[3][3] =
-               { {               -1, SK_LMODE_FULL,     SK_LMODE_HALF},
-                 {SK_LMODE_AUTOBOTH, SK_LMODE_AUTOFULL, SK_LMODE_AUTOHALF},
-                 {SK_LMODE_AUTOSENSE, SK_LMODE_AUTOSENSE, SK_LMODE_AUTOSENSE} };
-#define DC_BOTH        0
-#define DC_FULL 1
-#define DC_HALF 2
-#define AN_OFF 0
-#define AN_ON  1
-#define AN_SENS        2
-
-       /* settings for port A */
-       /* settings link speed */
-       LinkSpeed = SK_LSPEED_AUTO;     /* default: do auto select */
-       if (Speed_A != NULL && pAC->Index<SK_MAX_CARD_PARAM &&
-               Speed_A[pAC->Index] != NULL) {
-               if (strcmp(Speed_A[pAC->Index],"")==0) {
-                       LinkSpeed = SK_LSPEED_AUTO;
-               }
-               else if (strcmp(Speed_A[pAC->Index],"Auto")==0) {
-                       LinkSpeed = SK_LSPEED_AUTO;
-               }
-               else if (strcmp(Speed_A[pAC->Index],"10")==0) {
-                       LinkSpeed = SK_LSPEED_10MBPS;
-               }
-               else if (strcmp(Speed_A[pAC->Index],"100")==0) {
-                       LinkSpeed = SK_LSPEED_100MBPS;
-               }
-               else if (strcmp(Speed_A[pAC->Index],"1000")==0) {
-                       LinkSpeed = SK_LSPEED_1000MBPS;
-               }
-               else printk("%s: Illegal value for Speed_A\n",
-                       pAC->dev[0]->name);
-       }
-
-       /* Check speed parameter */
-       /* Only copper type adapter and GE V2 cards */
-       if (((pAC->GIni.GIChipId != CHIP_ID_YUKON) ||
-               (pAC->GIni.GICopperType != SK_TRUE)) &&
-               ((LinkSpeed != SK_LSPEED_AUTO) &&
-               (LinkSpeed != SK_LSPEED_1000MBPS))) {
-               printk("%s: Illegal value for Speed_A. "
-                       "Not a copper card or GE V2 card\n    Using "
-                       "speed 1000\n", pAC->dev[0]->name);
-               LinkSpeed = SK_LSPEED_1000MBPS;
-       }
-       pAC->GIni.GP[0].PLinkSpeed = LinkSpeed;
-
-       /* Autonegotiation */
-       AutoNeg = AN_ON; /* tschilling: Default: Autonegotiation on! */
-       AutoSet = SK_FALSE;
-       if (AutoNeg_A != NULL && pAC->Index<SK_MAX_CARD_PARAM &&
-               AutoNeg_A[pAC->Index] != NULL) {
-               AutoSet = SK_TRUE;
-               if (strcmp(AutoNeg_A[pAC->Index],"")==0) {
-                       AutoSet = SK_FALSE;
-               }
-               else if (strcmp(AutoNeg_A[pAC->Index],"On")==0) {
-                       AutoNeg = AN_ON;
-               }
-               else if (strcmp(AutoNeg_A[pAC->Index],"Off")==0) {
-                       AutoNeg = AN_OFF;
-               }
-               else if (strcmp(AutoNeg_A[pAC->Index],"Sense")==0) {
-                       AutoNeg = AN_SENS;
-               }
-               else printk("%s: Illegal value for AutoNeg_A\n",
-                       pAC->dev[0]->name);
-       }
-
-       DuplexCap = DC_BOTH;
-       DupSet = SK_FALSE;
-       if (DupCap_A != NULL && pAC->Index<SK_MAX_CARD_PARAM &&
-               DupCap_A[pAC->Index] != NULL) {
-               DupSet = SK_TRUE;
-               if (strcmp(DupCap_A[pAC->Index],"")==0) {
-                       DupSet = SK_FALSE;
-               }
-               else if (strcmp(DupCap_A[pAC->Index],"Both")==0) {
-                       DuplexCap = DC_BOTH;
-               }
-               else if (strcmp(DupCap_A[pAC->Index],"Full")==0) {
-                       DuplexCap = DC_FULL;
-               }
-               else if (strcmp(DupCap_A[pAC->Index],"Half")==0) {
-                       DuplexCap = DC_HALF;
-               }
-               else printk("%s: Illegal value for DupCap_A\n",
-                       pAC->dev[0]->name);
-       }
-
-       /* check for illegal combinations */
-       if (AutoSet && AutoNeg==AN_SENS && DupSet) {
-               printk("%s, Port A: DuplexCapabilities"
-                       " ignored using Sense mode\n", pAC->dev[0]->name);
-       }
-       if (AutoSet && AutoNeg==AN_OFF && DupSet && DuplexCap==DC_BOTH){
-               printk("%s, Port A: Illegal combination"
-                       " of values AutoNeg. and DuplexCap.\n    Using "
-                       "Full Duplex\n", pAC->dev[0]->name);
-
-               DuplexCap = DC_FULL;
-       }
-       if (AutoSet && AutoNeg==AN_OFF && !DupSet) {
-               DuplexCap = DC_FULL;
-       }
-
-       if (!AutoSet && DupSet) {
-               printk("%s, Port A: Duplex setting not"
-                       " possible in\n    default AutoNegotiation mode"
-                       " (Sense).\n    Using AutoNegotiation On\n",
-                       pAC->dev[0]->name);
-               AutoNeg = AN_ON;
-       }
-
-       /* set the desired mode */
-       pAC->GIni.GP[0].PLinkModeConf =
-               Capabilities[AutoNeg][DuplexCap];
-
-       pAC->GIni.GP[0].PFlowCtrlMode = SK_FLOW_MODE_SYM_OR_REM;
-       if (FlowCtrl_A != NULL && pAC->Index<SK_MAX_CARD_PARAM &&
-               FlowCtrl_A[pAC->Index] != NULL) {
-               if (strcmp(FlowCtrl_A[pAC->Index],"") == 0) {
-               }
-               else if (strcmp(FlowCtrl_A[pAC->Index],"SymOrRem") == 0) {
-                       pAC->GIni.GP[0].PFlowCtrlMode =
-                               SK_FLOW_MODE_SYM_OR_REM;
-               }
-               else if (strcmp(FlowCtrl_A[pAC->Index],"Sym")==0) {
-                       pAC->GIni.GP[0].PFlowCtrlMode =
-                               SK_FLOW_MODE_SYMMETRIC;
-               }
-               else if (strcmp(FlowCtrl_A[pAC->Index],"LocSend")==0) {
-                       pAC->GIni.GP[0].PFlowCtrlMode =
-                               SK_FLOW_MODE_LOC_SEND;
-               }
-               else if (strcmp(FlowCtrl_A[pAC->Index],"None")==0) {
-                       pAC->GIni.GP[0].PFlowCtrlMode =
-                               SK_FLOW_MODE_NONE;
-               }
-               else printk("Illegal value for FlowCtrl_A\n");
-       }
-       if (AutoNeg==AN_OFF && pAC->GIni.GP[0].PFlowCtrlMode!=
-               SK_FLOW_MODE_NONE) {
-               printk("%s, Port A: FlowControl"
-                       " impossible without AutoNegotiation,"
-                       " disabled\n", pAC->dev[0]->name);
-               pAC->GIni.GP[0].PFlowCtrlMode = SK_FLOW_MODE_NONE;
-       }
-
-       MSMode = SK_MS_MODE_AUTO; /* default: do auto select */
-       if (Role_A != NULL && pAC->Index<SK_MAX_CARD_PARAM &&
-               Role_A[pAC->Index] != NULL) {
-               if (strcmp(Role_A[pAC->Index],"")==0) {
-               }
-               else if (strcmp(Role_A[pAC->Index],"Auto")==0) {
-                       MSMode = SK_MS_MODE_AUTO;
-               }
-               else if (strcmp(Role_A[pAC->Index],"Master")==0) {
-                       MSMode = SK_MS_MODE_MASTER;
-               }
-               else if (strcmp(Role_A[pAC->Index],"Slave")==0) {
-                       MSMode = SK_MS_MODE_SLAVE;
-               }
-               else printk("%s: Illegal value for Role_A\n",
-                       pAC->dev[0]->name);
-       }
-       pAC->GIni.GP[0].PMSMode = MSMode;
-
-
-       /* settings for port B */
-       /* settings link speed */
-       LinkSpeed = SK_LSPEED_AUTO;     /* default: do auto select */
-       if (Speed_B != NULL && pAC->Index<SK_MAX_CARD_PARAM &&
-               Speed_B[pAC->Index] != NULL) {
-               if (strcmp(Speed_B[pAC->Index],"")==0) {
-                       LinkSpeed = SK_LSPEED_AUTO;
-               }
-               else if (strcmp(Speed_B[pAC->Index],"Auto")==0) {
-                       LinkSpeed = SK_LSPEED_AUTO;
-               }
-               else if (strcmp(Speed_B[pAC->Index],"10")==0) {
-                       LinkSpeed = SK_LSPEED_10MBPS;
-               }
-               else if (strcmp(Speed_B[pAC->Index],"100")==0) {
-                       LinkSpeed = SK_LSPEED_100MBPS;
-               }
-               else if (strcmp(Speed_B[pAC->Index],"1000")==0) {
-                       LinkSpeed = SK_LSPEED_1000MBPS;
-               }
-               else printk("%s: Illegal value for Speed_B\n",
-                       pAC->dev[1]->name);
-       }
-
-       /* Check speed parameter */
-       /* Only copper type adapter and GE V2 cards */
-       if (((pAC->GIni.GIChipId != CHIP_ID_YUKON) ||
-               (pAC->GIni.GICopperType != SK_TRUE)) &&
-               ((LinkSpeed != SK_LSPEED_AUTO) &&
-               (LinkSpeed != SK_LSPEED_1000MBPS))) {
-               printk("%s: Illegal value for Speed_B. "
-                       "Not a copper card or GE V2 card\n    Using "
-                       "speed 1000\n", pAC->dev[1]->name);
-               LinkSpeed = SK_LSPEED_1000MBPS;
-       }
-       pAC->GIni.GP[1].PLinkSpeed = LinkSpeed;
-
-       /* Auto negotiation */
-       AutoNeg = AN_SENS; /* default: do auto Sense */
-       AutoSet = SK_FALSE;
-       if (AutoNeg_B != NULL && pAC->Index<SK_MAX_CARD_PARAM &&
-               AutoNeg_B[pAC->Index] != NULL) {
-               AutoSet = SK_TRUE;
-               if (strcmp(AutoNeg_B[pAC->Index],"")==0) {
-                       AutoSet = SK_FALSE;
-               }
-               else if (strcmp(AutoNeg_B[pAC->Index],"On")==0) {
-                       AutoNeg = AN_ON;
-               }
-               else if (strcmp(AutoNeg_B[pAC->Index],"Off")==0) {
-                       AutoNeg = AN_OFF;
-               }
-               else if (strcmp(AutoNeg_B[pAC->Index],"Sense")==0) {
-                       AutoNeg = AN_SENS;
-               }
-               else printk("Illegal value for AutoNeg_B\n");
-       }
-
-       DuplexCap = DC_BOTH;
-       DupSet = SK_FALSE;
-       if (DupCap_B != NULL && pAC->Index<SK_MAX_CARD_PARAM &&
-               DupCap_B[pAC->Index] != NULL) {
-               DupSet = SK_TRUE;
-               if (strcmp(DupCap_B[pAC->Index],"")==0) {
-                       DupSet = SK_FALSE;
-               }
-               else if (strcmp(DupCap_B[pAC->Index],"Both")==0) {
-                       DuplexCap = DC_BOTH;
-               }
-               else if (strcmp(DupCap_B[pAC->Index],"Full")==0) {
-                       DuplexCap = DC_FULL;
-               }
-               else if (strcmp(DupCap_B[pAC->Index],"Half")==0) {
-                       DuplexCap = DC_HALF;
-               }
-               else printk("Illegal value for DupCap_B\n");
-       }
-
-       /* check for illegal combinations */
-       if (AutoSet && AutoNeg==AN_SENS && DupSet) {
-               printk("%s, Port B: DuplexCapabilities"
-                       " ignored using Sense mode\n", pAC->dev[1]->name);
-       }
-       if (AutoSet && AutoNeg==AN_OFF && DupSet && DuplexCap==DC_BOTH){
-               printk("%s, Port B: Illegal combination"
-                       " of values AutoNeg. and DuplexCap.\n    Using "
-                       "Full Duplex\n", pAC->dev[1]->name);
-
-               DuplexCap = DC_FULL;
-       }
-       if (AutoSet && AutoNeg==AN_OFF && !DupSet) {
-               DuplexCap = DC_FULL;
-       }
-
-       if (!AutoSet && DupSet) {
-               printk("%s, Port B: Duplex setting not"
-                       " possible in\n    default AutoNegotiation mode"
-                       " (Sense).\n    Using AutoNegotiation On\n",
-                       pAC->dev[1]->name);
-               AutoNeg = AN_ON;
-       }
-
-       /* set the desired mode */
-       pAC->GIni.GP[1].PLinkModeConf =
-               Capabilities[AutoNeg][DuplexCap];
-
-       pAC->GIni.GP[1].PFlowCtrlMode = SK_FLOW_MODE_SYM_OR_REM;
-       if (FlowCtrl_B != NULL && pAC->Index<SK_MAX_CARD_PARAM &&
-               FlowCtrl_B[pAC->Index] != NULL) {
-               if (strcmp(FlowCtrl_B[pAC->Index],"") == 0) {
-               }
-               else if (strcmp(FlowCtrl_B[pAC->Index],"SymOrRem") == 0) {
-                       pAC->GIni.GP[1].PFlowCtrlMode =
-                               SK_FLOW_MODE_SYM_OR_REM;
-               }
-               else if (strcmp(FlowCtrl_B[pAC->Index],"Sym")==0) {
-                       pAC->GIni.GP[1].PFlowCtrlMode =
-                               SK_FLOW_MODE_SYMMETRIC;
-               }
-               else if (strcmp(FlowCtrl_B[pAC->Index],"LocSend")==0) {
-                       pAC->GIni.GP[1].PFlowCtrlMode =
-                               SK_FLOW_MODE_LOC_SEND;
-               }
-               else if (strcmp(FlowCtrl_B[pAC->Index],"None")==0) {
-                       pAC->GIni.GP[1].PFlowCtrlMode =
-                               SK_FLOW_MODE_NONE;
-               }
-               else printk("Illegal value for FlowCtrl_B\n");
-       }
-       if (AutoNeg==AN_OFF && pAC->GIni.GP[1].PFlowCtrlMode!=
-               SK_FLOW_MODE_NONE) {
-               printk("%s, Port B: FlowControl"
-                       " impossible without AutoNegotiation,"
-                       " disabled\n", pAC->dev[1]->name);
-               pAC->GIni.GP[1].PFlowCtrlMode = SK_FLOW_MODE_NONE;
-       }
-
-       MSMode = SK_MS_MODE_AUTO; /* default: do auto select */
-       if (Role_B != NULL && pAC->Index<SK_MAX_CARD_PARAM &&
-               Role_B[pAC->Index] != NULL) {
-               if (strcmp(Role_B[pAC->Index],"")==0) {
-               }
-               else if (strcmp(Role_B[pAC->Index],"Auto")==0) {
-                       MSMode = SK_MS_MODE_AUTO;
-               }
-               else if (strcmp(Role_B[pAC->Index],"Master")==0) {
-                       MSMode = SK_MS_MODE_MASTER;
-               }
-               else if (strcmp(Role_B[pAC->Index],"Slave")==0) {
-                       MSMode = SK_MS_MODE_SLAVE;
-               }
-               else printk("%s: Illegal value for Role_B\n",
-                       pAC->dev[1]->name);
-       }
-       pAC->GIni.GP[1].PMSMode = MSMode;
-
-
-       /* settings for both ports */
-       pAC->ActivePort = 0;
-       if (PrefPort != NULL && pAC->Index<SK_MAX_CARD_PARAM &&
-               PrefPort[pAC->Index] != NULL) {
-               if (strcmp(PrefPort[pAC->Index],"") == 0) { /* Auto */
-                       pAC->ActivePort = 0;
-                       pAC->Rlmt.Net[0].Preference = -1; /* auto */
-                       pAC->Rlmt.Net[0].PrefPort = 0;
-               }
-               else if (strcmp(PrefPort[pAC->Index],"A") == 0) {
-                       /*
-                        * do not set ActivePort here, thus a port
-                        * switch is issued after net up.
-                        */
-                       Port = 0;
-                       pAC->Rlmt.Net[0].Preference = Port;
-                       pAC->Rlmt.Net[0].PrefPort = Port;
-               }
-               else if (strcmp(PrefPort[pAC->Index],"B") == 0) {
-                       /*
-                        * do not set ActivePort here, thus a port
-                        * switch is issued after net up.
-                        */
-                       Port = 1;
-                       pAC->Rlmt.Net[0].Preference = Port;
-                       pAC->Rlmt.Net[0].PrefPort = Port;
-               }
-               else printk("%s: Illegal value for PrefPort\n",
-                       pAC->dev[0]->name);
-       }
-
-       pAC->RlmtNets = 1;
-
-       if (RlmtMode != NULL && pAC->Index<SK_MAX_CARD_PARAM &&
-               RlmtMode[pAC->Index] != NULL) {
-               if (strcmp(RlmtMode[pAC->Index], "") == 0) {
-                       pAC->RlmtMode = 0;
-               }
-               else if (strcmp(RlmtMode[pAC->Index], "CheckLinkState") == 0) {
-                       pAC->RlmtMode = SK_RLMT_CHECK_LINK;
-               }
-               else if (strcmp(RlmtMode[pAC->Index], "CheckLocalPort") == 0) {
-                       pAC->RlmtMode = SK_RLMT_CHECK_LINK |
-                               SK_RLMT_CHECK_LOC_LINK;
-               }
-               else if (strcmp(RlmtMode[pAC->Index], "CheckSeg") == 0) {
-                       pAC->RlmtMode = SK_RLMT_CHECK_LINK |
-                               SK_RLMT_CHECK_LOC_LINK |
-                               SK_RLMT_CHECK_SEG;
-               }
-               else if ((strcmp(RlmtMode[pAC->Index], "DualNet") == 0) &&
-                       (pAC->GIni.GIMacsFound == 2)) {
-                               pAC->RlmtMode = SK_RLMT_CHECK_LINK;
-                               pAC->RlmtNets = 2;
-               }
-               else {
-                       printk("%s: Illegal value for"
-                               " RlmtMode, using default\n", pAC->dev[0]->name);
-                       pAC->RlmtMode = 0;
-               }
-       }
-       else {
-               pAC->RlmtMode = 0;
-       }
-} /* GetConfiguration */
-
-
-/*****************************************************************************
- *
- *     ProductStr - return a adapter identification string from vpd
- *
- * Description:
- *     This function reads the product name string from the vpd area
- *     and puts it the field pAC->DeviceString.
- *
- * Returns: N/A
- */
-static void ProductStr(
-SK_AC  *pAC            /* pointer to adapter context */
-)
-{
-int    StrLen = 80;            /* length of the string, defined in SK_AC */
-char   Keyword[] = VPD_NAME;   /* vpd productname identifier */
-int    ReturnCode;             /* return code from vpd_read */
-unsigned long Flags;
-
-       spin_lock_irqsave(&pAC->SlowPathLock, Flags);
-       ReturnCode = VpdRead(pAC, pAC->IoBase, Keyword, pAC->DeviceStr,
-               &StrLen);
-       spin_unlock_irqrestore(&pAC->SlowPathLock, Flags);
-       if (ReturnCode != 0) {
-               /* there was an error reading the vpd data */
-               SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ERROR,
-                       ("Error reading VPD data: %d\n", ReturnCode));
-               pAC->DeviceStr[0] = '\0';
-       }
-} /* ProductStr */
-
-
-/****************************************************************************/
-/* functions for common modules *********************************************/
-/****************************************************************************/
-
-
-/*****************************************************************************
- *
- *     SkDrvAllocRlmtMbuf - allocate an RLMT mbuf
- *
- * Description:
- *     This routine returns an RLMT mbuf or NULL. The RLMT Mbuf structure
- *     is embedded into a socket buff data area.
- *
- * Context:
- *     runtime
- *
- * Returns:
- *     NULL or pointer to Mbuf.
- */
-SK_MBUF *SkDrvAllocRlmtMbuf(
-SK_AC          *pAC,           /* pointer to adapter context */
-SK_IOC         IoC,            /* the IO-context */
-unsigned       BufferSize)     /* size of the requested buffer */
-{
-SK_MBUF                *pRlmtMbuf;     /* pointer to a new rlmt-mbuf structure */
-struct sk_buff *pMsgBlock;     /* pointer to a new message block */
-
-       pMsgBlock = alloc_skb(BufferSize + sizeof(SK_MBUF), GFP_ATOMIC);
-       if (pMsgBlock == NULL) {
-               return (NULL);
-       }
-       pRlmtMbuf = (SK_MBUF*) pMsgBlock->data;
-       skb_reserve(pMsgBlock, sizeof(SK_MBUF));
-       pRlmtMbuf->pNext = NULL;
-       pRlmtMbuf->pOs = pMsgBlock;
-       pRlmtMbuf->pData = pMsgBlock->data;     /* Data buffer. */
-       pRlmtMbuf->Size = BufferSize;           /* Data buffer size. */
-       pRlmtMbuf->Length = 0;          /* Length of packet (<= Size). */
-       return (pRlmtMbuf);
-
-} /* SkDrvAllocRlmtMbuf */
-
-
-/*****************************************************************************
- *
- *     SkDrvFreeRlmtMbuf - free an RLMT mbuf
- *
- * Description:
- *     This routine frees one or more RLMT mbuf(s).
- *
- * Context:
- *     runtime
- *
- * Returns:
- *     Nothing
- */
-void  SkDrvFreeRlmtMbuf(
-SK_AC          *pAC,           /* pointer to adapter context */
-SK_IOC         IoC,            /* the IO-context */
-SK_MBUF                *pMbuf)         /* size of the requested buffer */
-{
-SK_MBUF                *pFreeMbuf;
-SK_MBUF                *pNextMbuf;
-
-       pFreeMbuf = pMbuf;
-       do {
-               pNextMbuf = pFreeMbuf->pNext;
-               DEV_KFREE_SKB_ANY(pFreeMbuf->pOs);
-               pFreeMbuf = pNextMbuf;
-       } while ( pFreeMbuf != NULL );
-} /* SkDrvFreeRlmtMbuf */
-
-
-/*****************************************************************************
- *
- *     SkOsGetTime - provide a time value
- *
- * Description:
- *     This routine provides a time value. The unit is 1/HZ (defined by Linux).
- *     It is not used for absolute time, but only for time differences.
- *
- *
- * Returns:
- *     Time value
- */
-SK_U64 SkOsGetTime(SK_AC *pAC)
-{
-#if 0
-       return jiffies;
-#else
-       return get_timer(0);
-#endif
-} /* SkOsGetTime */
-
-
-/*****************************************************************************
- *
- *     SkPciReadCfgDWord - read a 32 bit value from pci config space
- *
- * Description:
- *     This routine reads a 32 bit value from the pci configuration
- *     space.
- *
- * Returns:
- *     0 - indicate everything worked ok.
- *     != 0 - error indication
- */
-int SkPciReadCfgDWord(
-SK_AC *pAC,            /* Adapter Control structure pointer */
-int PciAddr,           /* PCI register address */
-SK_U32 *pVal)          /* pointer to store the read value */
-{
-       pci_read_config_dword(pAC->PciDev, PciAddr, pVal);
-       return(0);
-} /* SkPciReadCfgDWord */
-
-
-/*****************************************************************************
- *
- *     SkPciReadCfgWord - read a 16 bit value from pci config space
- *
- * Description:
- *     This routine reads a 16 bit value from the pci configuration
- *     space.
- *
- * Returns:
- *     0 - indicate everything worked ok.
- *     != 0 - error indication
- */
-int SkPciReadCfgWord(
-SK_AC *pAC,    /* Adapter Control structure pointer */
-int PciAddr,           /* PCI register address */
-SK_U16 *pVal)          /* pointer to store the read value */
-{
-       pci_read_config_word(pAC->PciDev, PciAddr, pVal);
-       return(0);
-} /* SkPciReadCfgWord */
-
-
-/*****************************************************************************
- *
- *     SkPciReadCfgByte - read a 8 bit value from pci config space
- *
- * Description:
- *     This routine reads a 8 bit value from the pci configuration
- *     space.
- *
- * Returns:
- *     0 - indicate everything worked ok.
- *     != 0 - error indication
- */
-int SkPciReadCfgByte(
-SK_AC *pAC,    /* Adapter Control structure pointer */
-int PciAddr,           /* PCI register address */
-SK_U8 *pVal)           /* pointer to store the read value */
-{
-       pci_read_config_byte(pAC->PciDev, PciAddr, pVal);
-       return(0);
-} /* SkPciReadCfgByte */
-
-
-/*****************************************************************************
- *
- *     SkPciWriteCfgDWord - write a 32 bit value to pci config space
- *
- * Description:
- *     This routine writes a 32 bit value to the pci configuration
- *     space.
- *
- * Returns:
- *     0 - indicate everything worked ok.
- *     != 0 - error indication
- */
-int SkPciWriteCfgDWord(
-SK_AC *pAC,    /* Adapter Control structure pointer */
-int PciAddr,           /* PCI register address */
-SK_U32 Val)            /* pointer to store the read value */
-{
-       pci_write_config_dword(pAC->PciDev, PciAddr, Val);
-       return(0);
-} /* SkPciWriteCfgDWord */
-
-
-/*****************************************************************************
- *
- *     SkPciWriteCfgWord - write a 16 bit value to pci config space
- *
- * Description:
- *     This routine writes a 16 bit value to the pci configuration
- *     space. The flag PciConfigUp indicates whether the config space
- *     is accesible or must be set up first.
- *
- * Returns:
- *     0 - indicate everything worked ok.
- *     != 0 - error indication
- */
-int SkPciWriteCfgWord(
-SK_AC *pAC,    /* Adapter Control structure pointer */
-int PciAddr,           /* PCI register address */
-SK_U16 Val)            /* pointer to store the read value */
-{
-       pci_write_config_word(pAC->PciDev, PciAddr, Val);
-       return(0);
-} /* SkPciWriteCfgWord */
-
-
-/*****************************************************************************
- *
- *     SkPciWriteCfgWord - write a 8 bit value to pci config space
- *
- * Description:
- *     This routine writes a 8 bit value to the pci configuration
- *     space. The flag PciConfigUp indicates whether the config space
- *     is accesible or must be set up first.
- *
- * Returns:
- *     0 - indicate everything worked ok.
- *     != 0 - error indication
- */
-int SkPciWriteCfgByte(
-SK_AC *pAC,    /* Adapter Control structure pointer */
-int PciAddr,           /* PCI register address */
-SK_U8 Val)             /* pointer to store the read value */
-{
-       pci_write_config_byte(pAC->PciDev, PciAddr, Val);
-       return(0);
-} /* SkPciWriteCfgByte */
-
-
-/*****************************************************************************
- *
- *     SkDrvEvent - handle driver events
- *
- * Description:
- *     This function handles events from all modules directed to the driver
- *
- * Context:
- *     Is called under protection of slow path lock.
- *
- * Returns:
- *     0 if everything ok
- *     < 0  on error
- *
- */
-int SkDrvEvent(
-SK_AC *pAC,            /* pointer to adapter context */
-SK_IOC IoC,            /* io-context */
-SK_U32 Event,          /* event-id */
-SK_EVPARA Param)       /* event-parameter */
-{
-SK_MBUF                *pRlmtMbuf;     /* pointer to a rlmt-mbuf structure */
-struct sk_buff *pMsg;          /* pointer to a message block */
-int            FromPort;       /* the port from which we switch away */
-int            ToPort;         /* the port we switch to */
-SK_EVPARA      NewPara;        /* parameter for further events */
-#if 0
-int            Stat;
-#endif
-unsigned long  Flags;
-SK_BOOL                DualNet;
-
-       switch (Event) {
-       case SK_DRV_ADAP_FAIL:
-               SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_EVENT,
-                       ("ADAPTER FAIL EVENT\n"));
-               printk("%s: Adapter failed.\n", pAC->dev[0]->name);
-               /* disable interrupts */
-               SK_OUT32(pAC->IoBase, B0_IMSK, 0);
-               /* cgoos */
-               break;
-       case SK_DRV_PORT_FAIL:
-               FromPort = Param.Para32[0];
-               SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_EVENT,
-                       ("PORT FAIL EVENT, Port: %d\n", FromPort));
-               if (FromPort == 0) {
-                       printk("%s: Port A failed.\n", pAC->dev[0]->name);
-               } else {
-                       printk("%s: Port B failed.\n", pAC->dev[1]->name);
-               }
-               /* cgoos */
-               break;
-       case SK_DRV_PORT_RESET:  /* SK_U32 PortIdx */
-               /* action list 4 */
-               FromPort = Param.Para32[0];
-               SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_EVENT,
-                       ("PORT RESET EVENT, Port: %d ", FromPort));
-               NewPara.Para64 = FromPort;
-               SkPnmiEvent(pAC, IoC, SK_PNMI_EVT_XMAC_RESET, NewPara);
-               spin_lock_irqsave(
-                       &pAC->TxPort[FromPort][TX_PRIO_LOW].TxDesRingLock,
-                       Flags);
-               SkGeStopPort(pAC, IoC, FromPort, SK_STOP_ALL, SK_HARD_RST);
-#if 0
-               pAC->dev[Param.Para32[0]]->flags &= ~IFF_RUNNING;
-#endif
-               spin_unlock_irqrestore(
-                       &pAC->TxPort[FromPort][TX_PRIO_LOW].TxDesRingLock,
-                       Flags);
-
-               /* clear rx ring from received frames */
-               ReceiveIrq(pAC, &pAC->RxPort[FromPort], SK_FALSE);
-
-               ClearTxRing(pAC, &pAC->TxPort[FromPort][TX_PRIO_LOW]);
-               spin_lock_irqsave(
-                       &pAC->TxPort[FromPort][TX_PRIO_LOW].TxDesRingLock,
-                       Flags);
-
-               /* tschilling: Handling of return value inserted. */
-               if (SkGeInitPort(pAC, IoC, FromPort)) {
-                       if (FromPort == 0) {
-                               printk("%s: SkGeInitPort A failed.\n", pAC->dev[0]->name);
-                       } else {
-                               printk("%s: SkGeInitPort B failed.\n", pAC->dev[1]->name);
-                       }
-               }
-               SkAddrMcUpdate(pAC,IoC, FromPort);
-               PortReInitBmu(pAC, FromPort);
-               SkGePollTxD(pAC, IoC, FromPort, SK_TRUE);
-               ClearAndStartRx(pAC, FromPort);
-               spin_unlock_irqrestore(
-                       &pAC->TxPort[FromPort][TX_PRIO_LOW].TxDesRingLock,
-                       Flags);
-               break;
-       case SK_DRV_NET_UP:      /* SK_U32 PortIdx */
-               /* action list 5 */
-               FromPort = Param.Para32[0];
-               SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_EVENT,
-                       ("NET UP EVENT, Port: %d ", Param.Para32[0]));
-#ifdef SK98_INFO
-               printk("%s: network connection up using"
-                       " port %c\n", pAC->dev[Param.Para32[0]]->name, 'A'+Param.Para32[0]);
-
-               /* tschilling: Values changed according to LinkSpeedUsed. */
-               Stat = pAC->GIni.GP[FromPort].PLinkSpeedUsed;
-               if (Stat == SK_LSPEED_STAT_10MBPS) {
-                       printk("    speed:           10\n");
-               } else if (Stat == SK_LSPEED_STAT_100MBPS) {
-                       printk("    speed:           100\n");
-               } else if (Stat == SK_LSPEED_STAT_1000MBPS) {
-                       printk("    speed:           1000\n");
-               } else {
-                       printk("    speed:           unknown\n");
-               }
-
-               Stat = pAC->GIni.GP[FromPort].PLinkModeStatus;
-               if (Stat == SK_LMODE_STAT_AUTOHALF ||
-                       Stat == SK_LMODE_STAT_AUTOFULL) {
-                       printk("    autonegotiation: yes\n");
-               }
-               else {
-                       printk("    autonegotiation: no\n");
-               }
-               if (Stat == SK_LMODE_STAT_AUTOHALF ||
-                       Stat == SK_LMODE_STAT_HALF) {
-                       printk("    duplex mode:     half\n");
-               }
-               else {
-                       printk("    duplex mode:     full\n");
-               }
-               Stat = pAC->GIni.GP[FromPort].PFlowCtrlStatus;
-               if (Stat == SK_FLOW_STAT_REM_SEND ) {
-                       printk("    flowctrl:        remote send\n");
-               }
-               else if (Stat == SK_FLOW_STAT_LOC_SEND ){
-                       printk("    flowctrl:        local send\n");
-               }
-               else if (Stat == SK_FLOW_STAT_SYMMETRIC ){
-                       printk("    flowctrl:        symmetric\n");
-               }
-               else {
-                       printk("    flowctrl:        none\n");
-               }
-
-               /* tschilling: Check against CopperType now. */
-               if ((pAC->GIni.GICopperType == SK_TRUE) &&
-                       (pAC->GIni.GP[FromPort].PLinkSpeedUsed ==
-                       SK_LSPEED_STAT_1000MBPS)) {
-                       Stat = pAC->GIni.GP[FromPort].PMSStatus;
-                       if (Stat == SK_MS_STAT_MASTER ) {
-                               printk("    role:            master\n");
-                       }
-                       else if (Stat == SK_MS_STAT_SLAVE ) {
-                               printk("    role:            slave\n");
-                       }
-                       else {
-                               printk("    role:            ???\n");
-                       }
-               }
-
-#ifdef SK_ZEROCOPY
-               if (pAC->GIni.GIChipId == CHIP_ID_YUKON)
-                       printk("    scatter-gather:  enabled\n");
-               else
-                       printk("    scatter-gather:  disabled\n");
-
-#else
-                       printk("    scatter-gather:  disabled\n");
-#endif
-#endif /* SK98_INFO */
-
-               if ((Param.Para32[0] != pAC->ActivePort) &&
-                       (pAC->RlmtNets == 1)) {
-                       NewPara.Para32[0] = pAC->ActivePort;
-                       NewPara.Para32[1] = Param.Para32[0];
-                       SkEventQueue(pAC, SKGE_DRV, SK_DRV_SWITCH_INTERN,
-                               NewPara);
-               }
-
-               /* Inform the world that link protocol is up. */
-#if 0
-               pAC->dev[Param.Para32[0]]->flags |= IFF_RUNNING;
-#endif
-
-               break;
-       case SK_DRV_NET_DOWN:    /* SK_U32 Reason */
-               /* action list 7 */
-               SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_EVENT,
-                       ("NET DOWN EVENT "));
-#ifdef SK98_INFO
-               printk("%s: network connection down\n", pAC->dev[Param.Para32[1]]->name);
-#endif
-#if 0
-               pAC->dev[Param.Para32[1]]->flags &= ~IFF_RUNNING;
-#endif
-               break;
-       case SK_DRV_SWITCH_HARD: /* SK_U32 FromPortIdx SK_U32 ToPortIdx */
-               SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_EVENT,
-                       ("PORT SWITCH HARD "));
-       case SK_DRV_SWITCH_SOFT: /* SK_U32 FromPortIdx SK_U32 ToPortIdx */
-       /* action list 6 */
-               printk("%s: switching to port %c\n", pAC->dev[0]->name,
-                       'A'+Param.Para32[1]);
-       case SK_DRV_SWITCH_INTERN: /* SK_U32 FromPortIdx SK_U32 ToPortIdx */
-               FromPort = Param.Para32[0];
-               ToPort = Param.Para32[1];
-               SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_EVENT,
-                       ("PORT SWITCH EVENT, From: %d  To: %d (Pref %d) ",
-                       FromPort, ToPort, pAC->Rlmt.Net[0].PrefPort));
-               NewPara.Para64 = FromPort;
-               SkPnmiEvent(pAC, IoC, SK_PNMI_EVT_XMAC_RESET, NewPara);
-               NewPara.Para64 = ToPort;
-               SkPnmiEvent(pAC, IoC, SK_PNMI_EVT_XMAC_RESET, NewPara);
-               spin_lock_irqsave(
-                       &pAC->TxPort[FromPort][TX_PRIO_LOW].TxDesRingLock,
-                       Flags);
-               spin_lock_irqsave(
-                       &pAC->TxPort[ToPort][TX_PRIO_LOW].TxDesRingLock, Flags);
-               SkGeStopPort(pAC, IoC, FromPort, SK_STOP_ALL, SK_SOFT_RST);
-               SkGeStopPort(pAC, IoC, ToPort, SK_STOP_ALL, SK_SOFT_RST);
-               spin_unlock_irqrestore(
-                       &pAC->TxPort[ToPort][TX_PRIO_LOW].TxDesRingLock, Flags);
-               spin_unlock_irqrestore(
-                       &pAC->TxPort[FromPort][TX_PRIO_LOW].TxDesRingLock,
-                       Flags);
-
-               ReceiveIrq(pAC, &pAC->RxPort[FromPort], SK_FALSE); /* clears rx ring */
-               ReceiveIrq(pAC, &pAC->RxPort[ToPort], SK_FALSE); /* clears rx ring */
-
-               ClearTxRing(pAC, &pAC->TxPort[FromPort][TX_PRIO_LOW]);
-               ClearTxRing(pAC, &pAC->TxPort[ToPort][TX_PRIO_LOW]);
-               spin_lock_irqsave(
-                       &pAC->TxPort[FromPort][TX_PRIO_LOW].TxDesRingLock,
-                       Flags);
-               spin_lock_irqsave(
-                       &pAC->TxPort[ToPort][TX_PRIO_LOW].TxDesRingLock, Flags);
-               pAC->ActivePort = ToPort;
-#if 0
-               SetQueueSizes(pAC);
-#else
-               /* tschilling: New common function with minimum size check. */
-               DualNet = SK_FALSE;
-               if (pAC->RlmtNets == 2) {
-                       DualNet = SK_TRUE;
-               }
-
-               if (SkGeInitAssignRamToQueues(
-                       pAC,
-                       pAC->ActivePort,
-                       DualNet)) {
-                       spin_unlock_irqrestore(
-                               &pAC->TxPort[ToPort][TX_PRIO_LOW].TxDesRingLock, Flags);
-                       spin_unlock_irqrestore(
-                               &pAC->TxPort[FromPort][TX_PRIO_LOW].TxDesRingLock,
-                               Flags);
-                       printk("SkGeInitAssignRamToQueues failed.\n");
-                       break;
-               }
-#endif
-               /* tschilling: Handling of return values inserted. */
-               if (SkGeInitPort(pAC, IoC, FromPort) ||
-                       SkGeInitPort(pAC, IoC, ToPort)) {
-                       printk("%s: SkGeInitPort failed.\n", pAC->dev[0]->name);
-               }
-               if (Event == SK_DRV_SWITCH_SOFT) {
-                       SkMacRxTxEnable(pAC, IoC, FromPort);
-               }
-               SkMacRxTxEnable(pAC, IoC, ToPort);
-               SkAddrSwap(pAC, IoC, FromPort, ToPort);
-               SkAddrMcUpdate(pAC, IoC, FromPort);
-               SkAddrMcUpdate(pAC, IoC, ToPort);
-               PortReInitBmu(pAC, FromPort);
-               PortReInitBmu(pAC, ToPort);
-               SkGePollTxD(pAC, IoC, FromPort, SK_TRUE);
-               SkGePollTxD(pAC, IoC, ToPort, SK_TRUE);
-               ClearAndStartRx(pAC, FromPort);
-               ClearAndStartRx(pAC, ToPort);
-               spin_unlock_irqrestore(
-                       &pAC->TxPort[ToPort][TX_PRIO_LOW].TxDesRingLock, Flags);
-               spin_unlock_irqrestore(
-                       &pAC->TxPort[FromPort][TX_PRIO_LOW].TxDesRingLock,
-                       Flags);
-               break;
-       case SK_DRV_RLMT_SEND:   /* SK_MBUF *pMb */
-               SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_EVENT,
-                       ("RLS "));
-               pRlmtMbuf = (SK_MBUF*) Param.pParaPtr;
-               pMsg = (struct sk_buff*) pRlmtMbuf->pOs;
-               skb_put(pMsg, pRlmtMbuf->Length);
-               if (XmitFrame(pAC, &pAC->TxPort[pRlmtMbuf->PortIdx][TX_PRIO_LOW],
-                       pMsg) < 0)
-
-                       DEV_KFREE_SKB_ANY(pMsg);
-               break;
-       default:
-               break;
-       }
-       SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_EVENT,
-               ("END EVENT "));
-
-       return (0);
-} /* SkDrvEvent */
-
-
-/*****************************************************************************
- *
- *     SkErrorLog - log errors
- *
- * Description:
- *     This function logs errors to the system buffer and to the console
- *
- * Returns:
- *     0 if everything ok
- *     < 0  on error
- *
- */
-void SkErrorLog(
-SK_AC  *pAC,
-int    ErrClass,
-int    ErrNum,
-char   *pErrorMsg)
-{
-char   ClassStr[80];
-
-       switch (ErrClass) {
-       case SK_ERRCL_OTHER:
-               strcpy(ClassStr, "Other error");
-               break;
-       case SK_ERRCL_CONFIG:
-               strcpy(ClassStr, "Configuration error");
-               break;
-       case SK_ERRCL_INIT:
-               strcpy(ClassStr, "Initialization error");
-               break;
-       case SK_ERRCL_NORES:
-               strcpy(ClassStr, "Out of resources error");
-               break;
-       case SK_ERRCL_SW:
-               strcpy(ClassStr, "internal Software error");
-               break;
-       case SK_ERRCL_HW:
-               strcpy(ClassStr, "Hardware failure");
-               break;
-       case SK_ERRCL_COMM:
-               strcpy(ClassStr, "Communication error");
-               break;
-       }
-       printk(KERN_INFO "%s: -- ERROR --\n        Class:  %s\n"
-               "        Nr:  0x%x\n        Msg:  %s\n", pAC->dev[0]->name,
-               ClassStr, ErrNum, pErrorMsg);
-
-} /* SkErrorLog */
-
-#ifdef DEBUG
-/****************************************************************************/
-/* "debug only" section *****************************************************/
-/****************************************************************************/
-
-
-/*****************************************************************************
- *
- *     DumpMsg - print a frame
- *
- * Description:
- *     This function prints frames to the system logfile/to the console.
- *
- * Returns: N/A
- *
- */
-static void DumpMsg(struct sk_buff *skb, char *str)
-{
-       int     msglen;
-
-       if (skb == NULL) {
-               printk("DumpMsg(): NULL-Message\n");
-               return;
-       }
-
-       if (skb->data == NULL) {
-               printk("DumpMsg(): Message empty\n");
-               return;
-       }
-
-       msglen = skb->len;
-       if (msglen > 64)
-               msglen = 64;
-
-       printk("--- Begin of message from %s , len %d (from %d) ----\n", str, msglen, skb->len);
-
-       DumpData((char *)skb->data, msglen);
-
-       printk("------- End of message ---------\n");
-} /* DumpMsg */
-
-
-/*****************************************************************************
- *
- *     DumpData - print a data area
- *
- * Description:
- *     This function prints a area of data to the system logfile/to the
- *     console.
- *
- * Returns: N/A
- *
- */
-static void DumpData(char *p, int size)
-{
-register int    i;
-int    haddr, addr;
-char   hex_buffer[180];
-char   asc_buffer[180];
-char   HEXCHAR[] = "0123456789ABCDEF";
-
-       addr = 0;
-       haddr = 0;
-       hex_buffer[0] = 0;
-       asc_buffer[0] = 0;
-       for (i=0; i < size; ) {
-               if (*p >= '0' && *p <='z')
-                       asc_buffer[addr] = *p;
-               else
-                       asc_buffer[addr] = '.';
-               addr++;
-               asc_buffer[addr] = 0;
-               hex_buffer[haddr] = HEXCHAR[(*p & 0xf0) >> 4];
-               haddr++;
-               hex_buffer[haddr] = HEXCHAR[*p & 0x0f];
-               haddr++;
-               hex_buffer[haddr] = ' ';
-               haddr++;
-               hex_buffer[haddr] = 0;
-               p++;
-               i++;
-               if (i%16 == 0) {
-                       printk("%s  %s\n", hex_buffer, asc_buffer);
-                       addr = 0;
-                       haddr = 0;
-               }
-       }
-} /* DumpData */
-
-
-/*****************************************************************************
- *
- *     DumpLong - print a data area as long values
- *
- * Description:
- *     This function prints a area of data to the system logfile/to the
- *     console.
- *
- * Returns: N/A
- *
- */
-static void DumpLong(char *pc, int size)
-{
-register int    i;
-int    haddr, addr;
-char   hex_buffer[180];
-char   asc_buffer[180];
-char   HEXCHAR[] = "0123456789ABCDEF";
-long   *p;
-int    l;
-
-       addr = 0;
-       haddr = 0;
-       hex_buffer[0] = 0;
-       asc_buffer[0] = 0;
-       p = (long*) pc;
-       for (i=0; i < size; ) {
-               l = (long) *p;
-               hex_buffer[haddr] = HEXCHAR[(l >> 28) & 0xf];
-               haddr++;
-               hex_buffer[haddr] = HEXCHAR[(l >> 24) & 0xf];
-               haddr++;
-               hex_buffer[haddr] = HEXCHAR[(l >> 20) & 0xf];
-               haddr++;
-               hex_buffer[haddr] = HEXCHAR[(l >> 16) & 0xf];
-               haddr++;
-               hex_buffer[haddr] = HEXCHAR[(l >> 12) & 0xf];
-               haddr++;
-               hex_buffer[haddr] = HEXCHAR[(l >> 8) & 0xf];
-               haddr++;
-               hex_buffer[haddr] = HEXCHAR[(l >> 4) & 0xf];
-               haddr++;
-               hex_buffer[haddr] = HEXCHAR[l & 0x0f];
-               haddr++;
-               hex_buffer[haddr] = ' ';
-               haddr++;
-               hex_buffer[haddr] = 0;
-               p++;
-               i++;
-               if (i%8 == 0) {
-                       printk("%4x %s\n", (i-8)*4, hex_buffer);
-                       haddr = 0;
-               }
-       }
-       printk("------------------------\n");
-} /* DumpLong */
-
-#endif
+/******************************************************************************
+ *
+ * Name:    skge.c
+ * Project:    GEnesis, PCI Gigabit Ethernet Adapter
+ * Version:    $Revision: 1.1.1.1 $
+ * Date:       $Date: 2009/03/25 22:22:09 $
+ * Purpose:    The main driver source module
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ *     (C)Copyright 1998-2003 SysKonnect GmbH.
+ *
+ *     Driver for SysKonnect Gigabit Ethernet Server Adapters:
+ *
+ *     SK-9871 (single link 1000Base-ZX)
+ *     SK-9872 (dual link   1000Base-ZX)
+ *     SK-9861 (single link 1000Base-SX, VF45 Volition Plug)
+ *     SK-9862 (dual link   1000Base-SX, VF45 Volition Plug)
+ *     SK-9841 (single link 1000Base-LX)
+ *     SK-9842 (dual link   1000Base-LX)
+ *     SK-9843 (single link 1000Base-SX)
+ *     SK-9844 (dual link   1000Base-SX)
+ *     SK-9821 (single link 1000Base-T)
+ *     SK-9822 (dual link   1000Base-T)
+ *     SK-9881 (single link 1000Base-SX V2 LC)
+ *     SK-9871 (single link 1000Base-ZX V2)
+ *     SK-9861 (single link 1000Base-SX V2, VF45 Volition Plug)
+ *     SK-9841 (single link 1000Base-LX V2)
+ *     SK-9843 (single link 1000Base-SX V2)
+ *     SK-9821 (single link 1000Base-T V2)
+ *
+ *     Created 10-Feb-1999, based on Linux' acenic.c, 3c59x.c and
+ *     SysKonnects GEnesis Solaris driver
+ *     Author: Christoph Goos (cgoos@syskonnect.de)
+ *             Mirko Lindner (mlindner@syskonnect.de)
+ *
+ *     Address all question to: linux@syskonnect.de
+ *
+ *     The technical manual for the adapters is available from SysKonnect's
+ *     web pages: www.syskonnect.com
+ *     Goto "Support" and search Knowledge Base for "manual".
+ *
+ *     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.
+ *
+ *     The information in this file is provided "AS IS" without warranty.
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ * History:
+ *
+ *     $Log: skge.c,v $
+ *     Revision 1.1.1.1  2009/03/25 22:22:09  kenagy
+ *     no message
+ *     
+ *     Revision 1.46  2003/02/25 14:16:36  mlindner
+ *     Fix: Copyright statement
+ *
+ *     Revision 1.45  2003/02/25 13:25:55  mlindner
+ *     Add: Performance improvements
+ *     Add: Support for various vendors
+ *     Fix: Init function
+ *
+ *     Revision 1.44  2003/01/09 09:25:26  mlindner
+ *     Fix: Remove useless init_module/cleanup_module forward declarations
+ *
+ *     Revision 1.43  2002/11/29 08:42:41  mlindner
+ *     Fix: Boot message
+ *
+ *     Revision 1.42  2002/11/28 13:30:23  mlindner
+ *     Add: New frame check
+ *
+ *     Revision 1.41  2002/11/27 13:55:18  mlindner
+ *     Fix: Drop wrong csum packets
+ *     Fix: Initialize proc_entry after hw check
+ *
+ *     Revision 1.40  2002/10/31 07:50:37  tschilli
+ *     Function SkGeInitAssignRamToQueues() from common module inserted.
+ *     Autonegotiation is set to ON for all adapters.
+ *     LinkSpeedUsed is used in link up status report.
+ *     Role parameter will show up for 1000 Mbps links only.
+ *     GetConfiguration() inserted after init level 1 in SkGeChangeMtu().
+ *     All return values of SkGeInit() and SkGeInitPort() are checked.
+ *
+ *     Revision 1.39  2002/10/02 12:56:05  mlindner
+ *     Add: Support for Yukon
+ *     Add: Support for ZEROCOPY, scatter-gather and hw checksum
+ *     Add: New transmit ring function (use SG and TCP/UDP hardware checksumming)
+ *     Add: New init function
+ *     Add: Speed check and setup
+ *     Add: Merge source for kernel 2.2.x and 2.4.x
+ *     Add: Opcode check for tcp
+ *     Add: Frame length check
+ *     Fix: Transmit complete interrupt
+ *     Fix: Interrupt moderation
+ *
+ *     Revision 1.29.2.13  2002/01/14 12:44:52  mlindner
+ *     Fix: Rlmt modes
+ *
+ *     Revision 1.29.2.12  2001/12/07 12:06:18  mlindner
+ *     Fix: malloc -> slab changes
+ *
+ *     Revision 1.29.2.11  2001/12/06 15:19:20  mlindner
+ *     Add: DMA attributes
+ *     Fix: Module initialisation
+ *     Fix: pci_map_single and pci_unmap_single replaced
+ *
+ *     Revision 1.29.2.10  2001/12/06 09:56:50  mlindner
+ *     Corrected some printk's
+ *
+ *     Revision 1.29.2.9  2001/09/05 12:15:34  mlindner
+ *     Add: LBFO Changes
+ *     Fix: Counter Errors (Jumbo == to long errors)
+ *     Fix: Changed pAC->PciDev declaration
+ *     Fix: too short counters
+ *
+ *     Revision 1.29.2.8  2001/06/25 12:10:44  mlindner
+ *     fix: ReceiveIrq() changed.
+ *
+ *     Revision 1.29.2.7  2001/06/25 08:07:05  mlindner
+ *     fix: RLMT locking in ReceiveIrq() changed.
+ *
+ *     Revision 1.29.2.6  2001/05/21 07:59:29  mlindner
+ *     fix: MTU init problems
+ *
+ *     Revision 1.29.2.5  2001/05/08 11:25:08  mlindner
+ *     fix: removed VLAN error message
+ *
+ *     Revision 1.29.2.4  2001/05/04 13:31:43  gklug
+ *     fix: do not handle eth_copy on bad fragments received.
+ *
+ *     Revision 1.29.2.3  2001/04/23 08:06:43  mlindner
+ *     Fix: error handling
+ *
+ *     Revision 1.29.2.2  2001/03/15 12:04:54  mlindner
+ *     Fixed memory problem
+ *
+ *     Revision 1.29.2.1  2001/03/12 16:41:44  mlindner
+ *     add: procfs function
+ *     add: dual-net function
+ *     add: RLMT networks
+ *     add: extended PNMI features
+ *
+ *     Kernel 2.4.x specific:
+ *     Revision 1.xx  2000/09/12 13:31:56  cgoos
+ *     Fixed missign "dev=NULL in skge_probe.
+ *     Added counting for jumbo frames (corrects error statistic).
+ *     Removed VLAN tag check (enables VLAN support).
+ *
+ *     Kernel 2.2.x specific:
+ *     Revision 1.29  2000/02/21 13:31:56  cgoos
+ *     Fixed "unused" warning for UltraSPARC change.
+ *
+ *     Partially kernel 2.2.x specific:
+ *     Revision 1.28  2000/02/21 10:32:36  cgoos
+ *     Added fixes for UltraSPARC.
+ *     Now printing RlmtMode and PrefPort setting at startup.
+ *     Changed XmitFrame return value.
+ *     Fixed rx checksum calculation for BIG ENDIAN systems.
+ *     Fixed rx jumbo frames counted as ierrors.
+ *
+ *
+ *     Revision 1.27  1999/11/25 09:06:28  cgoos
+ *     Changed base_addr to unsigned long.
+ *
+ *     Revision 1.26  1999/11/22 13:29:16  cgoos
+ *     Changed license header to GPL.
+ *     Changes for inclusion in linux kernel (2.2.13).
+ *     Removed 2.0.x defines.
+ *     Changed SkGeProbe to skge_probe.
+ *     Added checks in SkGeIoctl.
+ *
+ *     Revision 1.25  1999/10/07 14:47:52  cgoos
+ *     Changed 984x to 98xx.
+ *
+ *     Revision 1.24  1999/09/30 07:21:01  cgoos
+ *     Removed SK_RLMT_SLOW_LOOKAHEAD option.
+ *     Giving spanning tree packets also to OS now.
+ *
+ *     Revision 1.23  1999/09/29 07:36:50  cgoos
+ *     Changed assignment for IsBc/IsMc.
+ *
+ *     Revision 1.22  1999/09/28 12:57:09  cgoos
+ *     Added CheckQueue also to Single-Port-ISR.
+ *
+ *     Revision 1.21  1999/09/28 12:42:41  cgoos
+ *     Changed parameter strings for RlmtMode.
+ *
+ *     Revision 1.20  1999/09/28 12:37:57  cgoos
+ *     Added CheckQueue for fast delivery of RLMT frames.
+ *
+ *     Revision 1.19  1999/09/16 07:57:25  cgoos
+ *     Copperfield changes.
+ *
+ *     Revision 1.18  1999/09/03 13:06:30  cgoos
+ *     Fixed RlmtMode=CheckSeg bug: wrong DEV_KFREE_SKB in RLMT_SEND caused
+ *     double allocated skb's.
+ *     FrameStat in ReceiveIrq was accessed via wrong Rxd.
+ *     Queue size for async. standby Tx queue was zero.
+ *     FillRxLimit of 0 could cause problems with ReQueue, changed to 1.
+ *     Removed debug output of checksum statistic.
+ *
+ *     Revision 1.17  1999/08/11 13:55:27  cgoos
+ *     Transmit descriptor polling was not reenabled after SkGePortInit.
+ *
+ *     Revision 1.16  1999/07/27 15:17:29  cgoos
+ *     Added some "\n" in output strings (removed while debuging...).
+ *
+ *     Revision 1.15  1999/07/23 12:09:30  cgoos
+ *     Performance optimization, rx checksumming, large frame support.
+ *
+ *     Revision 1.14  1999/07/14 11:26:27  cgoos
+ *     Removed Link LED settings (now in RLMT).
+ *     Added status output at NET UP.
+ *     Fixed SMP problems with Tx and SWITCH running in parallel.
+ *     Fixed return code problem at RLMT_SEND event.
+ *
+ *     Revision 1.13  1999/04/07 10:11:42  cgoos
+ *     Fixed Single Port problems.
+ *     Fixed Multi-Adapter problems.
+ *     Always display startup string.
+ *
+ *     Revision 1.12  1999/03/29 12:26:37  cgoos
+ *     Reversed locking to fine granularity.
+ *     Fixed skb double alloc problem (caused by incorrect xmit return code).
+ *     Enhanced function descriptions.
+ *
+ *     Revision 1.11  1999/03/15 13:10:51  cgoos
+ *     Changed device identifier in output string to ethX.
+ *
+ *     Revision 1.10  1999/03/15 12:12:34  cgoos
+ *     Changed copyright notice.
+ *
+ *     Revision 1.9  1999/03/15 12:10:17  cgoos
+ *     Changed locking to one driver lock.
+ *     Added check of SK_AC-size (for consistency with library).
+ *
+ *     Revision 1.8  1999/03/08 11:44:02  cgoos
+ *     Fixed missing dev->tbusy in SkGeXmit.
+ *     Changed large frame (jumbo) buffer number.
+ *     Added copying of short frames.
+ *
+ *     Revision 1.7  1999/03/04 13:26:57  cgoos
+ *     Fixed spinlock calls for SMP.
+ *
+ *     Revision 1.6  1999/03/02 09:53:51  cgoos
+ *     Added descriptor revertion for big endian machines.
+ *
+ *     Revision 1.5  1999/03/01 08:50:59  cgoos
+ *     Fixed SkGeChangeMtu.
+ *     Fixed pci config space accesses.
+ *
+ *     Revision 1.4  1999/02/18 15:48:44  cgoos
+ *     Corrected some printk's.
+ *
+ *     Revision 1.3  1999/02/18 12:45:55  cgoos
+ *     Changed SK_MAX_CARD_PARAM to default 16
+ *
+ *     Revision 1.2  1999/02/18 10:55:32  cgoos
+ *     Removed SkGeDrvTimeStamp function.
+ *     Printing "ethX:" before adapter type at adapter init.
+ *
+ *
+ *     10-Feb-1999 cg  Created, based on Linux' acenic.c, 3c59x.c and
+ *                     SysKonnects GEnesis Solaris driver
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ * Possible compiler options (#define xxx / -Dxxx):
+ *
+ *     debugging can be enable by changing SK_DEBUG_CHKMOD and
+ *     SK_DEBUG_CHKCAT in makefile (described there).
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ * Description:
+ *
+ *     This is the main module of the Linux GE driver.
+ *
+ *     All source files except skge.c, skdrv1st.h, skdrv2nd.h and sktypes.h
+ *     are part of SysKonnect's COMMON MODULES for the SK-98xx adapters.
+ *     Those are used for drivers on multiple OS', so some thing may seem
+ *     unnecessary complicated on Linux. Please do not try to 'clean up'
+ *     them without VERY good reasons, because this will make it more
+ *     difficult to keep the Linux driver in synchronisation with the
+ *     other versions.
+ *
+ * Include file hierarchy:
+ *
+ *     <linux/module.h>
+ *
+ *     "h/skdrv1st.h"
+ *             <linux/version.h>
+ *             <linux/types.h>
+ *             <linux/kernel.h>
+ *             <linux/string.h>
+ *             <linux/errno.h>
+ *             <linux/ioport.h>
+ *             <linux/slab.h>
+ *             <linux/interrupt.h>
+ *             <linux/pci.h>
+ *             <asm/byteorder.h>
+ *             <asm/bitops.h>
+ *             <asm/io.h>
+ *             <linux/netdevice.h>
+ *             <linux/etherdevice.h>
+ *             <linux/skbuff.h>
+ *         those three depending on kernel version used:
+ *             <linux/bios32.h>
+ *             <linux/init.h>
+ *             <asm/uaccess.h>
+ *             <net/checksum.h>
+ *
+ *             "h/skerror.h"
+ *             "h/skdebug.h"
+ *             "h/sktypes.h"
+ *             "h/lm80.h"
+ *             "h/xmac_ii.h"
+ *
+ *      "h/skdrv2nd.h"
+ *             "h/skqueue.h"
+ *             "h/skgehwt.h"
+ *             "h/sktimer.h"
+ *             "h/ski2c.h"
+ *             "h/skgepnmi.h"
+ *             "h/skvpd.h"
+ *             "h/skgehw.h"
+ *             "h/skgeinit.h"
+ *             "h/skaddr.h"
+ *             "h/skgesirq.h"
+ *             "h/skcsum.h"
+ *             "h/skrlmt.h"
+ *
+ ******************************************************************************/
+
+#include <config.h>
+
+#include       "h/skversion.h"
+#if 0
+#include       <linux/module.h>
+#include       <linux/init.h>
+#include       <linux/proc_fs.h>
+#endif
+#include       "h/skdrv1st.h"
+#include       "h/skdrv2nd.h"
+
+
+/* defines ******************************************************************/
+/* for debuging on x86 only */
+/* #define BREAKPOINT() asm(" int $3"); */
+
+/* use the scatter-gather functionality with sendfile() */
+#if 0
+#define SK_ZEROCOPY
+#endif
+
+/* use of a transmit complete interrupt */
+#define USE_TX_COMPLETE
+
+/* use interrupt moderation (for tx complete only) */
+#define USE_INT_MOD
+#define INTS_PER_SEC   1000
+
+/*
+ * threshold for copying small receive frames
+ * set to 0 to avoid copying, set to 9001 to copy all frames
+ */
+#define SK_COPY_THRESHOLD      50
+
+/* number of adapters that can be configured via command line params */
+#define SK_MAX_CARD_PARAM      16
+
+
+/*
+ * use those defines for a compile-in version of the driver instead
+ * of command line parameters
+ */
+/* #define LINK_SPEED_A        {"Auto", }              */
+/* #define LINK_SPEED_B        {"Auto", }              */
+/* #define AUTO_NEG_A  {"Sense", }             */
+/* #define AUTO_NEG_B  {"Sense", }             */
+/* #define DUP_CAP_A   {"Both", }              */
+/* #define DUP_CAP_B   {"Both", }              */
+/* #define FLOW_CTRL_A {"SymOrRem", }          */
+/* #define FLOW_CTRL_B {"SymOrRem", }          */
+/* #define ROLE_A      {"Auto", }              */
+/* #define ROLE_B      {"Auto", }              */
+/* #define PREF_PORT   {"A", }                 */
+/* #define RLMT_MODE   {"CheckLinkState", }    */
+
+#define DEV_KFREE_SKB(skb) dev_kfree_skb(skb)
+#define DEV_KFREE_SKB_IRQ(skb) dev_kfree_skb_irq(skb)
+#define DEV_KFREE_SKB_ANY(skb) dev_kfree_skb_any(skb)
+
+/* function prototypes ******************************************************/
+static void    FreeResources(struct SK_NET_DEVICE *dev);
+static int     SkGeBoardInit(struct SK_NET_DEVICE *dev, SK_AC *pAC);
+static SK_BOOL BoardAllocMem(SK_AC *pAC);
+static void    BoardFreeMem(SK_AC *pAC);
+static void    BoardInitMem(SK_AC *pAC);
+static void    SetupRing(SK_AC*, void*, uintptr_t, RXD**, RXD**, RXD**,
+                       int*, SK_BOOL);
+
+#if 0
+static void    SkGeIsr(int irq, void *dev_id, struct pt_regs *ptregs);
+static void    SkGeIsrOnePort(int irq, void *dev_id, struct pt_regs *ptregs);
+static int     SkGeOpen(struct SK_NET_DEVICE *dev);
+static int     SkGeClose(struct SK_NET_DEVICE *dev);
+static int     SkGeXmit(struct sk_buff *skb, struct SK_NET_DEVICE *dev);
+static int     SkGeSetMacAddr(struct SK_NET_DEVICE *dev, void *p);
+static void    SkGeSetRxMode(struct SK_NET_DEVICE *dev);
+static struct  net_device_stats *SkGeStats(struct SK_NET_DEVICE *dev);
+static int     SkGeIoctl(struct SK_NET_DEVICE *dev, struct ifreq *rq, int cmd);
+#else
+void   SkGeIsr(int irq, void *dev_id, struct pt_regs *ptregs);
+void   SkGeIsrOnePort(int irq, void *dev_id, struct pt_regs *ptregs);
+int    SkGeOpen(struct SK_NET_DEVICE *dev);
+int    SkGeClose(struct SK_NET_DEVICE *dev);
+int    SkGeXmit(struct sk_buff *skb, struct SK_NET_DEVICE *dev);
+#endif
+static void    GetConfiguration(SK_AC*);
+static void    ProductStr(SK_AC*);
+static int     XmitFrame(SK_AC*, TX_PORT*, struct sk_buff*);
+static void    FreeTxDescriptors(SK_AC*pAC, TX_PORT*);
+static void    FillRxRing(SK_AC*, RX_PORT*);
+static SK_BOOL FillRxDescriptor(SK_AC*, RX_PORT*);
+#if 0
+static void    ReceiveIrq(SK_AC*, RX_PORT*, SK_BOOL);
+#else
+void   ReceiveIrq(SK_AC*, RX_PORT*, SK_BOOL);
+#endif
+static void ClearAndStartRx(SK_AC*, int);
+static void    ClearTxIrq(SK_AC*, int, int);
+static void    ClearRxRing(SK_AC*, RX_PORT*);
+static void    ClearTxRing(SK_AC*, TX_PORT*);
+#if 0
+static void    SetQueueSizes(SK_AC     *pAC);
+
+static int     SkGeChangeMtu(struct SK_NET_DEVICE *dev, int new_mtu);
+#endif
+static void    PortReInitBmu(SK_AC*, int);
+#if 0
+static int     SkGeIocMib(DEV_NET*, unsigned int, int);
+static int     XmitFrameSG(SK_AC*, TX_PORT*, struct sk_buff*);
+#endif
+
+/*Extern */
+
+/* external Proc function */
+extern int proc_read(
+       char    *buffer,
+       char    **buffer_location,
+       off_t   offset,
+       int             buffer_length,
+       int             *eof,
+       void    *data);
+
+#ifdef DEBUG
+static void    DumpMsg(struct sk_buff*, char*);
+static void    DumpData(char*, int);
+static void    DumpLong(char*, int);
+#endif
+void dump_frag( SK_U8 *data, int length);
+
+/* global variables *********************************************************/
+#if 0
+static const char *BootString = BOOT_STRING;
+#endif
+struct SK_NET_DEVICE *SkGeRootDev = NULL;
+static int probed __initdata = 0;
+
+/* local variables **********************************************************/
+static uintptr_t TxQueueAddr[SK_MAX_MACS][2] = {{0x680, 0x600},{0x780, 0x700}};
+static uintptr_t RxQueueAddr[SK_MAX_MACS] = {0x400, 0x480};
+
+
+/* local variables **********************************************************/
+const char SK_Root_Dir_entry[8];
+
+#if 0
+static struct proc_dir_entry   *pSkRootDir;
+#endif
+
+
+static struct pci_device_id supported[] = {
+       {PCI_VENDOR_ID_3COM, 0x1700},
+       {PCI_VENDOR_ID_SYSKONNECT, PCI_DEVICE_ID_SYSKONNECT_GE},
+       {PCI_VENDOR_ID_SYSKONNECT, PCI_DEVICE_ID_SYSKONNECT_YU},
+       {}
+};
+
+
+/*****************************************************************************
+ *
+ *     skge_probe - find all SK-98xx adapters
+ *
+ * Description:
+ *     This function scans the PCI bus for SK-98xx adapters. Resources for
+ *     each adapter are allocated and the adapter is brought into Init 1
+ *     state.
+ *
+ * Returns:
+ *     0, if everything is ok
+ *     !=0, on error
+ */
+#if 0
+static int __init skge_probe (void)
+#else
+int skge_probe (struct eth_device ** ret_dev)
+#endif
+{
+#if 0
+       int                     proc_root_initialized = 0;
+#endif
+       int                     boards_found = 0;
+#if 0
+       int                     vendor_flag = SK_FALSE;
+#endif
+       SK_AC                   *pAC;
+       DEV_NET                 *pNet = NULL;
+#if 0
+       struct proc_dir_entry   *pProcFile;
+       struct pci_dev  *pdev = NULL;
+       unsigned long           base_address;
+#else
+       u32                     base_address;
+#endif
+       struct SK_NET_DEVICE *dev = NULL;
+#if 0
+       SK_BOOL DeviceFound = SK_FALSE;
+#endif
+       SK_BOOL BootStringCount = SK_FALSE;
+#if 1
+       pci_dev_t devno;
+#endif
+
+       if (probed)
+               return -ENODEV;
+       probed++;
+
+       if (!pci_present())             /* is PCI support present? */
+               return -ENODEV;
+
+#if 0
+               while((pdev = pci_find_class(PCI_CLASS_NETWORK_ETHERNET << 8, pdev)))
+#else
+               while((devno = pci_find_devices (supported, boards_found)) >= 0)
+#endif
+               {
+
+               dev = NULL;
+               pNet = NULL;
+
+
+#if 0
+               SK_PCI_ISCOMPLIANT(vendor_flag, pdev);
+               if (!vendor_flag)
+                       continue;
+#endif
+
+/*             if ((pdev->vendor != PCI_VENDOR_ID_SYSKONNECT) &&
+                       ((pdev->device != PCI_DEVICE_ID_SYSKONNECT_GE) ||
+                       (pdev->device != PCI_DEVICE_ID_SYSKONNECT_YU))){
+                       continue;
+               }
+*/
+#if 0
+               /* Configure DMA attributes. */
+               if (pci_set_dma_mask(pdev, (u64) 0xffffffffffffffff) &&
+                       pci_set_dma_mask(pdev, (u64) 0xffffffff))
+                       continue;
+#endif
+
+
+#if 0
+               if ((dev = init_etherdev(dev, sizeof(DEV_NET))) == NULL) {
+                       printk(KERN_ERR "Unable to allocate etherdev "
+                              "structure!\n");
+                       break;
+               }
+#else
+               dev = malloc (sizeof *dev);
+               memset(dev, 0, sizeof(*dev));
+               dev->priv = malloc(sizeof(DEV_NET));
+#endif
+
+               if (dev->priv == NULL) {
+                       printk(KERN_ERR "Unable to allocate adapter "
+                              "structure!\n");
+                       break;
+               }
+
+               pNet = dev->priv;
+               pNet->pAC = kmalloc(sizeof(SK_AC), GFP_KERNEL);
+               if (pNet->pAC == NULL){
+                       kfree(dev->priv);
+                       printk(KERN_ERR "Unable to allocate adapter "
+                              "structure!\n");
+                       break;
+               }
+
+               /* Print message */
+               if (!BootStringCount) {
+                       /* set display flag to TRUE so that */
+                       /* we only display this string ONCE */
+                       BootStringCount = SK_TRUE;
+#ifdef SK98_INFO
+                       printk("%s\n", BootString);
+#endif
+               }
+
+               memset(pNet->pAC, 0, sizeof(SK_AC));
+               pAC = pNet->pAC;
+#if 0
+               pAC->PciDev = pdev;
+               pAC->PciDevId = pdev->device;
+               pAC->dev[0] = dev;
+               pAC->dev[1] = dev;
+#else
+               pAC->PciDev = devno;
+               ret_dev[0] = pAC->dev[0] = dev;
+               ret_dev[1] = pAC->dev[1] = dev;
+#endif
+               sprintf(pAC->Name, "SysKonnect SK-98xx");
+               pAC->CheckQueue = SK_FALSE;
+
+               pNet->Mtu = 1500;
+               pNet->Up = 0;
+#if 0
+               dev->irq = pdev->irq;
+
+               dev->open =             &SkGeOpen;
+               dev->stop =             &SkGeClose;
+               dev->hard_start_xmit =  &SkGeXmit;
+               dev->get_stats =        &SkGeStats;
+               dev->set_multicast_list = &SkGeSetRxMode;
+               dev->set_mac_address =  &SkGeSetMacAddr;
+               dev->do_ioctl =         &SkGeIoctl;
+               dev->change_mtu =       &SkGeChangeMtu;
+               dev->flags &=           ~IFF_RUNNING;
+#endif
+
+#ifdef SK_ZEROCOPY
+               if (pAC->GIni.GIChipId == CHIP_ID_YUKON) {
+                       /* Use only if yukon hardware */
+                       /* SK and ZEROCOPY - fly baby... */
+                       dev->features |= NETIF_F_SG | NETIF_F_IP_CSUM;
+               }
+#endif
+
+#if 0
+               /*
+                * Dummy value.
+                */
+               dev->base_addr = 42;
+               pci_set_master(pdev);
+
+               pci_set_master(pdev);
+               base_address = pci_resource_start (pdev, 0);
+#else
+               pci_write_config_dword(devno,
+                                      PCI_COMMAND,
+                                      PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER);
+               pci_read_config_dword (devno, PCI_BASE_ADDRESS_0,
+                                      &base_address);
+#endif
+
+#ifdef SK_BIG_ENDIAN
+               /*
+                * On big endian machines, we use the adapter's aibility of
+                * reading the descriptors as big endian.
+                */
+               {
+               SK_U32          our2;
+                       SkPciReadCfgDWord(pAC, PCI_OUR_REG_2, &our2);
+                       our2 |= PCI_REV_DESC;
+                       SkPciWriteCfgDWord(pAC, PCI_OUR_REG_2, our2);
+               }
+#endif
+
+               /*
+                * Remap the regs into kernel space.
+                */
+#if 0
+               pAC->IoBase = (char*)ioremap(base_address, 0x4000);
+#else
+               pAC->IoBase = (char*)pci_mem_to_phys(devno, base_address);
+#endif
+
+               if (!pAC->IoBase){
+                       printk(KERN_ERR "%s:  Unable to map I/O register, "
+                              "SK 98xx No. %i will be disabled.\n",
+                              dev->name, boards_found);
+                       kfree(dev);
+                       break;
+               }
+
+               pAC->Index = boards_found;
+               if (SkGeBoardInit(dev, pAC)) {
+                       FreeResources(dev);
+                       kfree(dev);
+                       continue;
+               }
+
+#if 0
+               memcpy((caddr_t) &dev->dev_addr,
+                       (caddr_t) &pAC->Addr.Net[0].CurrentMacAddress, 6);
+#else
+               memcpy((caddr_t) &dev->enetaddr,
+                       (caddr_t) &pAC->Addr.Net[0].CurrentMacAddress, 6);
+#endif
+
+#if 0
+               /* First adapter... Create proc and print message */
+               if (!DeviceFound) {
+                       DeviceFound = SK_TRUE;
+                       SK_MEMCPY(&SK_Root_Dir_entry, BootString,
+                               sizeof(SK_Root_Dir_entry) - 1);
+
+                       /*Create proc (directory)*/
+                       if(!proc_root_initialized) {
+                               pSkRootDir = create_proc_entry(SK_Root_Dir_entry,
+                                       S_IFDIR | S_IWUSR | S_IRUGO | S_IXUGO, proc_net);
+                               proc_root_initialized = 1;
+                       }
+
+                       pSkRootDir->owner = THIS_MODULE;
+               }
+
+
+               /* Create proc file */
+               pProcFile = create_proc_entry(dev->name,
+                       S_IFREG | S_IXUSR | S_IWGRP | S_IROTH,
+                       pSkRootDir);
+
+
+               pProcFile->read_proc = proc_read;
+               pProcFile->write_proc = NULL;
+               pProcFile->nlink = 1;
+               pProcFile->size = sizeof(dev->name + 1);
+               pProcFile->data = (void *)pProcFile;
+#endif
+
+               pNet->PortNr = 0;
+               pNet->NetNr = 0;
+
+#ifdef SK_ZEROCOPY
+                       if (pAC->GIni.GIChipId == CHIP_ID_YUKON) {
+                               /* SG and ZEROCOPY - fly baby... */
+                               dev->features |= NETIF_F_SG | NETIF_F_IP_CSUM;
+                       }
+#endif
+
+               boards_found++;
+
+               /* More then one port found */
+               if ((pAC->GIni.GIMacsFound == 2 ) && (pAC->RlmtNets == 2)) {
+#if 0
+                       if ((dev = init_etherdev(NULL, sizeof(DEV_NET))) == 0) {
+                               printk(KERN_ERR "Unable to allocate etherdev "
+                                       "structure!\n");
+                               break;
+                       }
+#else
+                       dev = malloc (sizeof *dev);
+                       memset(dev, 0, sizeof(*dev));
+                       dev->priv = malloc(sizeof(DEV_NET));
+#endif
+
+                       pAC->dev[1] = dev;
+                       pNet = dev->priv;
+                       pNet->PortNr = 1;
+                       pNet->NetNr = 1;
+                       pNet->pAC = pAC;
+                       pNet->Mtu = 1500;
+                       pNet->Up = 0;
+
+#if 0
+                       dev->open =             &SkGeOpen;
+                       dev->stop =             &SkGeClose;
+                       dev->hard_start_xmit =  &SkGeXmit;
+                       dev->get_stats =        &SkGeStats;
+                       dev->set_multicast_list = &SkGeSetRxMode;
+                       dev->set_mac_address =  &SkGeSetMacAddr;
+                       dev->do_ioctl =         &SkGeIoctl;
+                       dev->change_mtu =       &SkGeChangeMtu;
+                       dev->flags &=           ~IFF_RUNNING;
+#endif
+
+#ifdef SK_ZEROCOPY
+                       if (pAC->GIni.GIChipId == CHIP_ID_YUKON) {
+                               /* SG and ZEROCOPY - fly baby... */
+                               dev->features |= NETIF_F_SG | NETIF_F_IP_CSUM;
+                       }
+#endif
+
+#if 0
+                       pProcFile = create_proc_entry(dev->name,
+                               S_IFREG | S_IXUSR | S_IWGRP | S_IROTH,
+                               pSkRootDir);
+
+
+                       pProcFile->read_proc = proc_read;
+                       pProcFile->write_proc = NULL;
+                       pProcFile->nlink = 1;
+                       pProcFile->size = sizeof(dev->name + 1);
+                       pProcFile->data = (void *)pProcFile;
+#endif
+
+#if 0
+                       memcpy((caddr_t) &dev->dev_addr,
+                       (caddr_t) &pAC->Addr.Net[1].CurrentMacAddress, 6);
+#else
+                       memcpy((caddr_t) &dev->enetaddr,
+                       (caddr_t) &pAC->Addr.Net[1].CurrentMacAddress, 6);
+#endif
+
+                       printk("%s: %s\n", dev->name, pAC->DeviceStr);
+                       printk("      PrefPort:B  RlmtMode:Dual Check Link State\n");
+
+               }
+
+
+               /* Save the hardware revision */
+               pAC->HWRevision = (((pAC->GIni.GIPciHwRev >> 4) & 0x0F)*10) +
+                       (pAC->GIni.GIPciHwRev & 0x0F);
+
+               /*
+                * This is bollocks, but we need to tell the net-init
+                * code that it shall go for the next device.
+                */
+#if 0
+#ifndef MODULE
+               dev->base_addr = 0;
+#endif
+#endif
+       }
+
+       /*
+        * If we're at this point we're going through skge_probe() for
+        * the first time.  Return success (0) if we've initialized 1
+        * or more boards. Otherwise, return failure (-ENODEV).
+        */
+
+       return boards_found;
+} /* skge_probe */
+
+
+/*****************************************************************************
+ *
+ *     FreeResources - release resources allocated for adapter
+ *
+ * Description:
+ *     This function releases the IRQ, unmaps the IO and
+ *     frees the desriptor ring.
+ *
+ * Returns: N/A
+ *
+ */
+static void FreeResources(struct SK_NET_DEVICE *dev)
+{
+SK_U32 AllocFlag;
+DEV_NET                *pNet;
+SK_AC          *pAC;
+
+       if (dev->priv) {
+               pNet = (DEV_NET*) dev->priv;
+               pAC = pNet->pAC;
+               AllocFlag = pAC->AllocFlag;
+#if 0
+               if (AllocFlag & SK_ALLOC_IRQ) {
+                       free_irq(dev->irq, dev);
+               }
+               if (pAC->IoBase) {
+                       iounmap(pAC->IoBase);
+               }
+#endif
+               if (pAC->pDescrMem) {
+                       BoardFreeMem(pAC);
+               }
+       }
+
+} /* FreeResources */
+
+#if 0
+MODULE_AUTHOR("Mirko Lindner <mlindner@syskonnect.de>");
+MODULE_DESCRIPTION("SysKonnect SK-NET Gigabit Ethernet SK-98xx driver");
+MODULE_LICENSE("GPL");
+MODULE_PARM(Speed_A,    "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s");
+MODULE_PARM(Speed_B,    "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s");
+MODULE_PARM(AutoNeg_A,  "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s");
+MODULE_PARM(AutoNeg_B,  "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s");
+MODULE_PARM(DupCap_A,   "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s");
+MODULE_PARM(DupCap_B,   "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s");
+MODULE_PARM(FlowCtrl_A, "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s");
+MODULE_PARM(FlowCtrl_B, "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s");
+MODULE_PARM(Role_A,        "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s");
+MODULE_PARM(Role_B,        "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s");
+MODULE_PARM(PrefPort,   "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s");
+MODULE_PARM(RlmtMode,   "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s");
+/* not used, just there because every driver should have them: */
+MODULE_PARM(options,    "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "i");
+MODULE_PARM(debug,      "i");
+#endif
+
+
+#ifdef LINK_SPEED_A
+static char *Speed_A[SK_MAX_CARD_PARAM] = LINK_SPEED_A;
+#else
+static char *Speed_A[SK_MAX_CARD_PARAM] = {"", };
+#endif
+
+#ifdef LINK_SPEED_B
+static char *Speed_B[SK_MAX_CARD_PARAM] = LINK_SPEED_B;
+#else
+static char *Speed_B[SK_MAX_CARD_PARAM] = {"", };
+#endif
+
+#ifdef AUTO_NEG_A
+static char *AutoNeg_A[SK_MAX_CARD_PARAM] = AUTO_NEG_A;
+#else
+static char *AutoNeg_A[SK_MAX_CARD_PARAM] = {"", };
+#endif
+
+#ifdef DUP_CAP_A
+static char *DupCap_A[SK_MAX_CARD_PARAM] = DUP_CAP_A;
+#else
+static char *DupCap_A[SK_MAX_CARD_PARAM] = {"", };
+#endif
+
+#ifdef FLOW_CTRL_A
+static char *FlowCtrl_A[SK_MAX_CARD_PARAM] = FLOW_CTRL_A;
+#else
+static char *FlowCtrl_A[SK_MAX_CARD_PARAM] = {"", };
+#endif
+
+#ifdef ROLE_A
+static char *Role_A[SK_MAX_CARD_PARAM] = ROLE_A;
+#else
+static char *Role_A[SK_MAX_CARD_PARAM] = {"", };
+#endif
+
+#ifdef AUTO_NEG_B
+static char *AutoNeg_B[SK_MAX_CARD_PARAM] = AUTO_NEG_B;
+#else
+static char *AutoNeg_B[SK_MAX_CARD_PARAM] = {"", };
+#endif
+
+#ifdef DUP_CAP_B
+static char *DupCap_B[SK_MAX_CARD_PARAM] = DUP_CAP_B;
+#else
+static char *DupCap_B[SK_MAX_CARD_PARAM] = {"", };
+#endif
+
+#ifdef FLOW_CTRL_B
+static char *FlowCtrl_B[SK_MAX_CARD_PARAM] = FLOW_CTRL_B;
+#else
+static char *FlowCtrl_B[SK_MAX_CARD_PARAM] = {"", };
+#endif
+
+#ifdef ROLE_B
+static char *Role_B[SK_MAX_CARD_PARAM] = ROLE_B;
+#else
+static char *Role_B[SK_MAX_CARD_PARAM] = {"", };
+#endif
+
+#ifdef PREF_PORT
+static char *PrefPort[SK_MAX_CARD_PARAM] = PREF_PORT;
+#else
+static char *PrefPort[SK_MAX_CARD_PARAM] = {"", };
+#endif
+
+#ifdef RLMT_MODE
+static char *RlmtMode[SK_MAX_CARD_PARAM] = RLMT_MODE;
+#else
+static char *RlmtMode[SK_MAX_CARD_PARAM] = {"", };
+#endif
+
+#if 0
+static int debug = 0; /* not used */
+static int options[SK_MAX_CARD_PARAM] = {0, }; /* not used */
+
+
+/*****************************************************************************
+ *
+ *     skge_init_module - module initialization function
+ *
+ * Description:
+ *     Very simple, only call skge_probe and return approriate result.
+ *
+ * Returns:
+ *     0, if everything is ok
+ *     !=0, on error
+ */
+static int __init skge_init_module(void)
+{
+       int cards;
+       SkGeRootDev = NULL;
+
+       /* just to avoid warnings ... */
+       debug = 0;
+       options[0] = 0;
+
+       cards = skge_probe();
+       if (cards == 0) {
+               printk("sk98lin: No adapter found.\n");
+       }
+       return cards ? 0 : -ENODEV;
+} /* skge_init_module */
+
+
+/*****************************************************************************
+ *
+ *     skge_cleanup_module - module unload function
+ *
+ * Description:
+ *     Disable adapter if it is still running, free resources,
+ *     free device struct.
+ *
+ * Returns: N/A
+ */
+static void __exit skge_cleanup_module(void)
+{
+DEV_NET                *pNet;
+SK_AC          *pAC;
+struct SK_NET_DEVICE *next;
+unsigned long Flags;
+SK_EVPARA EvPara;
+
+       while (SkGeRootDev) {
+               pNet = (DEV_NET*) SkGeRootDev->priv;
+               pAC = pNet->pAC;
+               next = pAC->Next;
+
+               netif_stop_queue(SkGeRootDev);
+               SkGeYellowLED(pAC, pAC->IoBase, 0);
+
+               if(pAC->BoardLevel == 2) {
+                       /* board is still alive */
+                       spin_lock_irqsave(&pAC->SlowPathLock, Flags);
+                       EvPara.Para32[0] = 0;
+                       EvPara.Para32[1] = -1;
+                       SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_STOP, EvPara);
+                       EvPara.Para32[0] = 1;
+                       EvPara.Para32[1] = -1;
+                       SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_STOP, EvPara);
+                       SkEventDispatcher(pAC, pAC->IoBase);
+                       /* disable interrupts */
+                       SK_OUT32(pAC->IoBase, B0_IMSK, 0);
+                       SkGeDeInit(pAC, pAC->IoBase);
+                       spin_unlock_irqrestore(&pAC->SlowPathLock, Flags);
+                       pAC->BoardLevel = 0;
+                       /* We do NOT check here, if IRQ was pending, of course*/
+               }
+
+               if(pAC->BoardLevel == 1) {
+                       /* board is still alive */
+                       SkGeDeInit(pAC, pAC->IoBase);
+                       pAC->BoardLevel = 0;
+               }
+
+               if ((pAC->GIni.GIMacsFound == 2) && pAC->RlmtNets == 2){
+                       unregister_netdev(pAC->dev[1]);
+                       kfree(pAC->dev[1]);
+               }
+
+               FreeResources(SkGeRootDev);
+
+               SkGeRootDev->get_stats = NULL;
+               /*
+                * otherwise unregister_netdev calls get_stats with
+                * invalid IO ...  :-(
+                */
+               unregister_netdev(SkGeRootDev);
+               kfree(SkGeRootDev);
+               kfree(pAC);
+               SkGeRootDev = next;
+       }
+
+       /* clear proc-dir */
+       remove_proc_entry(pSkRootDir->name, proc_net);
+
+} /* skge_cleanup_module */
+
+module_init(skge_init_module);
+module_exit(skge_cleanup_module);
+#endif
+
+
+/*****************************************************************************
+ *
+ *     SkGeBoardInit - do level 0 and 1 initialization
+ *
+ * Description:
+ *     This function prepares the board hardware for running. The desriptor
+ *     ring is set up, the IRQ is allocated and the configuration settings
+ *     are examined.
+ *
+ * Returns:
+ *     0, if everything is ok
+ *     !=0, on error
+ */
+static int __init SkGeBoardInit(struct SK_NET_DEVICE *dev, SK_AC *pAC)
+{
+short  i;
+unsigned long Flags;
+char   *DescrString = "sk98lin: Driver for Linux"; /* this is given to PNMI */
+char   *VerStr = VER_STRING;
+#if 0
+int    Ret;                    /* return code of request_irq */
+#endif
+SK_BOOL        DualNet;
+
+       SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ENTRY,
+               ("IoBase: %08lX\n", (unsigned long)pAC->IoBase));
+       for (i=0; i<SK_MAX_MACS; i++) {
+               pAC->TxPort[i][0].HwAddr = pAC->IoBase + TxQueueAddr[i][0];
+               pAC->TxPort[i][0].PortIndex = i;
+               pAC->RxPort[i].HwAddr = pAC->IoBase + RxQueueAddr[i];
+               pAC->RxPort[i].PortIndex = i;
+       }
+
+       /* Initialize the mutexes */
+       for (i=0; i<SK_MAX_MACS; i++) {
+               spin_lock_init(&pAC->TxPort[i][0].TxDesRingLock);
+               spin_lock_init(&pAC->RxPort[i].RxDesRingLock);
+       }
+       spin_lock_init(&pAC->SlowPathLock);
+
+       /* level 0 init common modules here */
+
+       spin_lock_irqsave(&pAC->SlowPathLock, Flags);
+       /* Does a RESET on board ...*/
+       if (SkGeInit(pAC, pAC->IoBase, 0) != 0) {
+               printk("HWInit (0) failed.\n");
+               spin_unlock_irqrestore(&pAC->SlowPathLock, Flags);
+               return(-EAGAIN);
+       }
+       SkI2cInit(  pAC, pAC->IoBase, 0);
+       SkEventInit(pAC, pAC->IoBase, 0);
+       SkPnmiInit( pAC, pAC->IoBase, 0);
+       SkAddrInit( pAC, pAC->IoBase, 0);
+       SkRlmtInit( pAC, pAC->IoBase, 0);
+       SkTimerInit(pAC, pAC->IoBase, 0);
+
+       pAC->BoardLevel = 0;
+       pAC->RxBufSize = ETH_BUF_SIZE;
+
+       SK_PNMI_SET_DRIVER_DESCR(pAC, DescrString);
+       SK_PNMI_SET_DRIVER_VER(pAC, VerStr);
+
+       spin_unlock_irqrestore(&pAC->SlowPathLock, Flags);
+
+       /* level 1 init common modules here (HW init) */
+       spin_lock_irqsave(&pAC->SlowPathLock, Flags);
+       if (SkGeInit(pAC, pAC->IoBase, 1) != 0) {
+               printk("HWInit (1) failed.\n");
+               spin_unlock_irqrestore(&pAC->SlowPathLock, Flags);
+               return(-EAGAIN);
+       }
+       SkI2cInit(  pAC, pAC->IoBase, 1);
+       SkEventInit(pAC, pAC->IoBase, 1);
+       SkPnmiInit( pAC, pAC->IoBase, 1);
+       SkAddrInit( pAC, pAC->IoBase, 1);
+       SkRlmtInit( pAC, pAC->IoBase, 1);
+       SkTimerInit(pAC, pAC->IoBase, 1);
+
+       GetConfiguration(pAC);
+       if (pAC->RlmtNets == 2) {
+               pAC->GIni.GIPortUsage = SK_MUL_LINK;
+       }
+
+       pAC->BoardLevel = 1;
+       spin_unlock_irqrestore(&pAC->SlowPathLock, Flags);
+
+#if 0
+       if (pAC->GIni.GIMacsFound == 2) {
+                Ret = request_irq(dev->irq, SkGeIsr, SA_SHIRQ, pAC->Name, dev);
+       } else if (pAC->GIni.GIMacsFound == 1) {
+               Ret = request_irq(dev->irq, SkGeIsrOnePort, SA_SHIRQ,
+                       pAC->Name, dev);
+       } else {
+               printk(KERN_WARNING "%s: Illegal number of ports: %d\n",
+                      dev->name, pAC->GIni.GIMacsFound);
+               return -EAGAIN;
+       }
+
+       if (Ret) {
+               printk(KERN_WARNING "%s: Requested IRQ %d is busy.\n",
+                      dev->name, dev->irq);
+               return -EAGAIN;
+       }
+#endif
+       pAC->AllocFlag |= SK_ALLOC_IRQ;
+
+       /* Alloc memory for this board (Mem for RxD/TxD) : */
+       if(!BoardAllocMem(pAC)) {
+               printk("No memory for descriptor rings.\n");
+               return(-EAGAIN);
+       }
+
+       SkCsSetReceiveFlags(pAC,
+               SKCS_PROTO_IP | SKCS_PROTO_TCP | SKCS_PROTO_UDP,
+               &pAC->CsOfs1, &pAC->CsOfs2, 0);
+       pAC->CsOfs = (pAC->CsOfs2 << 16) | pAC->CsOfs1;
+
+       BoardInitMem(pAC);
+#if 0
+       SetQueueSizes(pAC);
+#else
+       /* tschilling: New common function with minimum size check. */
+       DualNet = SK_FALSE;
+       if (pAC->RlmtNets == 2) {
+               DualNet = SK_TRUE;
+       }
+
+       if (SkGeInitAssignRamToQueues(
+               pAC,
+               pAC->ActivePort,
+               DualNet)) {
+               BoardFreeMem(pAC);
+               printk("SkGeInitAssignRamToQueues failed.\n");
+               return(-EAGAIN);
+       }
+#endif
+
+       /* Print adapter specific string from vpd */
+       ProductStr(pAC);
+#ifdef SK98_INFO
+       printk("%s: %s\n", dev->name, pAC->DeviceStr);
+
+       /* Print configuration settings */
+       printk("      PrefPort:%c  RlmtMode:%s\n",
+               'A' + pAC->Rlmt.Net[0].Port[pAC->Rlmt.Net[0].PrefPort]->PortNumber,
+               (pAC->RlmtMode==0)  ? "Check Link State" :
+               ((pAC->RlmtMode==1) ? "Check Link State" :
+               ((pAC->RlmtMode==3) ? "Check Local Port" :
+               ((pAC->RlmtMode==7) ? "Check Segmentation" :
+               ((pAC->RlmtMode==17) ? "Dual Check Link State" :"Error")))));
+#endif
+
+       SkGeYellowLED(pAC, pAC->IoBase, 1);
+
+       /*
+        * Register the device here
+        */
+       pAC->Next = SkGeRootDev;
+       SkGeRootDev = dev;
+
+       return (0);
+} /* SkGeBoardInit */
+
+
+/*****************************************************************************
+ *
+ *     BoardAllocMem - allocate the memory for the descriptor rings
+ *
+ * Description:
+ *     This function allocates the memory for all descriptor rings.
+ *     Each ring is aligned for the desriptor alignment and no ring
+ *     has a 4 GByte boundary in it (because the upper 32 bit must
+ *     be constant for all descriptiors in one rings).
+ *
+ * Returns:
+ *     SK_TRUE, if all memory could be allocated
+ *     SK_FALSE, if not
+ */
+static SK_BOOL BoardAllocMem(
+SK_AC  *pAC)
+{
+caddr_t                pDescrMem;      /* pointer to descriptor memory area */
+size_t         AllocLength;    /* length of complete descriptor area */
+int            i;              /* loop counter */
+unsigned long  BusAddr;
+
+
+       /* rings plus one for alignment (do not cross 4 GB boundary) */
+       /* RX_RING_SIZE is assumed bigger than TX_RING_SIZE */
+#if (BITS_PER_LONG == 32)
+       AllocLength = (RX_RING_SIZE + TX_RING_SIZE) * pAC->GIni.GIMacsFound + 8;
+#else
+       AllocLength = (RX_RING_SIZE + TX_RING_SIZE) * pAC->GIni.GIMacsFound
+               + RX_RING_SIZE + 8;
+#endif
+
+       pDescrMem = pci_alloc_consistent(pAC->PciDev, AllocLength,
+                                        &pAC->pDescrMemDMA);
+
+       if (pDescrMem == NULL) {
+               return (SK_FALSE);
+       }
+       pAC->pDescrMem = pDescrMem;
+       BusAddr = (unsigned long) pAC->pDescrMemDMA;
+
+       /* Descriptors need 8 byte alignment, and this is ensured
+        * by pci_alloc_consistent.
+        */
+       for (i=0; i<pAC->GIni.GIMacsFound; i++) {
+               SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_TX_PROGRESS,
+                       ("TX%d/A: pDescrMem: %lX,   PhysDescrMem: %lX\n",
+                       i, (unsigned long) pDescrMem,
+                       BusAddr));
+               pAC->TxPort[i][0].pTxDescrRing = pDescrMem;
+               pAC->TxPort[i][0].VTxDescrRing = BusAddr;
+               pDescrMem += TX_RING_SIZE;
+               BusAddr += TX_RING_SIZE;
+
+               SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_TX_PROGRESS,
+                       ("RX%d: pDescrMem: %lX,   PhysDescrMem: %lX\n",
+                       i, (unsigned long) pDescrMem,
+                       (unsigned long)BusAddr));
+               pAC->RxPort[i].pRxDescrRing = pDescrMem;
+               pAC->RxPort[i].VRxDescrRing = BusAddr;
+               pDescrMem += RX_RING_SIZE;
+               BusAddr += RX_RING_SIZE;
+       } /* for */
+
+       return (SK_TRUE);
+} /* BoardAllocMem */
+
+
+/****************************************************************************
+ *
+ *     BoardFreeMem - reverse of BoardAllocMem
+ *
+ * Description:
+ *     Free all memory allocated in BoardAllocMem: adapter context,
+ *     descriptor rings, locks.
+ *
+ * Returns:    N/A
+ */
+static void BoardFreeMem(
+SK_AC          *pAC)
+{
+size_t         AllocLength;    /* length of complete descriptor area */
+
+       SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ENTRY,
+               ("BoardFreeMem\n"));
+#if (BITS_PER_LONG == 32)
+       AllocLength = (RX_RING_SIZE + TX_RING_SIZE) * pAC->GIni.GIMacsFound + 8;
+#else
+       AllocLength = (RX_RING_SIZE + TX_RING_SIZE) * pAC->GIni.GIMacsFound
+               + RX_RING_SIZE + 8;
+#endif
+
+       pci_free_consistent(pAC->PciDev, AllocLength,
+                           pAC->pDescrMem, pAC->pDescrMemDMA);
+       pAC->pDescrMem = NULL;
+} /* BoardFreeMem */
+
+
+/*****************************************************************************
+ *
+ *     BoardInitMem - initiate the descriptor rings
+ *
+ * Description:
+ *     This function sets the descriptor rings up in memory.
+ *     The adapter is initialized with the descriptor start addresses.
+ *
+ * Returns:    N/A
+ */
+static void BoardInitMem(
+SK_AC  *pAC)   /* pointer to adapter context */
+{
+int    i;              /* loop counter */
+int    RxDescrSize;    /* the size of a rx descriptor rounded up to alignment*/
+int    TxDescrSize;    /* the size of a tx descriptor rounded up to alignment*/
+
+       SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ENTRY,
+               ("BoardInitMem\n"));
+
+       RxDescrSize = (((sizeof(RXD) - 1) / DESCR_ALIGN) + 1) * DESCR_ALIGN;
+       pAC->RxDescrPerRing = RX_RING_SIZE / RxDescrSize;
+       TxDescrSize = (((sizeof(TXD) - 1) / DESCR_ALIGN) + 1) * DESCR_ALIGN;
+       pAC->TxDescrPerRing = TX_RING_SIZE / RxDescrSize;
+
+       for (i=0; i<pAC->GIni.GIMacsFound; i++) {
+               SetupRing(
+                       pAC,
+                       pAC->TxPort[i][0].pTxDescrRing,
+                       pAC->TxPort[i][0].VTxDescrRing,
+                       (RXD**)&pAC->TxPort[i][0].pTxdRingHead,
+                       (RXD**)&pAC->TxPort[i][0].pTxdRingTail,
+                       (RXD**)&pAC->TxPort[i][0].pTxdRingPrev,
+                       &pAC->TxPort[i][0].TxdRingFree,
+                       SK_TRUE);
+               SetupRing(
+                       pAC,
+                       pAC->RxPort[i].pRxDescrRing,
+                       pAC->RxPort[i].VRxDescrRing,
+                       &pAC->RxPort[i].pRxdRingHead,
+                       &pAC->RxPort[i].pRxdRingTail,
+                       &pAC->RxPort[i].pRxdRingPrev,
+                       &pAC->RxPort[i].RxdRingFree,
+                       SK_FALSE);
+       }
+} /* BoardInitMem */
+
+
+/*****************************************************************************
+ *
+ *     SetupRing - create one descriptor ring
+ *
+ * Description:
+ *     This function creates one descriptor ring in the given memory area.
+ *     The head, tail and number of free descriptors in the ring are set.
+ *
+ * Returns:
+ *     none
+ */
+static void SetupRing(
+SK_AC          *pAC,
+void           *pMemArea,      /* a pointer to the memory area for the ring */
+uintptr_t      VMemArea,       /* the virtual bus address of the memory area */
+RXD            **ppRingHead,   /* address where the head should be written */
+RXD            **ppRingTail,   /* address where the tail should be written */
+RXD            **ppRingPrev,   /* address where the tail should be written */
+int            *pRingFree,     /* address where the # of free descr. goes */
+SK_BOOL                IsTx)           /* flag: is this a tx ring */
+{
+int    i;              /* loop counter */
+int    DescrSize;      /* the size of a descriptor rounded up to alignment*/
+int    DescrNum;       /* number of descriptors per ring */
+RXD    *pDescr;        /* pointer to a descriptor (receive or transmit) */
+RXD    *pNextDescr;    /* pointer to the next descriptor */
+RXD    *pPrevDescr;    /* pointer to the previous descriptor */
+uintptr_t VNextDescr;  /* the virtual bus address of the next descriptor */
+
+       if (IsTx == SK_TRUE) {
+               DescrSize = (((sizeof(TXD) - 1) / DESCR_ALIGN) + 1) *
+                       DESCR_ALIGN;
+               DescrNum = TX_RING_SIZE / DescrSize;
+       } else {
+               DescrSize = (((sizeof(RXD) - 1) / DESCR_ALIGN) + 1) *
+                       DESCR_ALIGN;
+               DescrNum = RX_RING_SIZE / DescrSize;
+       }
+
+       SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_TX_PROGRESS,
+               ("Descriptor size: %d   Descriptor Number: %d\n",
+               DescrSize,DescrNum));
+
+       pDescr = (RXD*) pMemArea;
+       pPrevDescr = NULL;
+       pNextDescr = (RXD*) (((char*)pDescr) + DescrSize);
+       VNextDescr = VMemArea + DescrSize;
+       for(i=0; i<DescrNum; i++) {
+               /* set the pointers right */
+               pDescr->VNextRxd = VNextDescr & 0xffffffffULL;
+               pDescr->pNextRxd = pNextDescr;
+               pDescr->TcpSumStarts = pAC->CsOfs;
+
+               /* advance one step */
+               pPrevDescr = pDescr;
+               pDescr = pNextDescr;
+               pNextDescr = (RXD*) (((char*)pDescr) + DescrSize);
+               VNextDescr += DescrSize;
+       }
+       pPrevDescr->pNextRxd = (RXD*) pMemArea;
+       pPrevDescr->VNextRxd = VMemArea;
+       pDescr = (RXD*) pMemArea;
+       *ppRingHead = (RXD*) pMemArea;
+       *ppRingTail = *ppRingHead;
+       *ppRingPrev = pPrevDescr;
+       *pRingFree = DescrNum;
+} /* SetupRing */
+
+
+/*****************************************************************************
+ *
+ *     PortReInitBmu - re-initiate the descriptor rings for one port
+ *
+ * Description:
+ *     This function reinitializes the descriptor rings of one port
+ *     in memory. The port must be stopped before.
+ *     The HW is initialized with the descriptor start addresses.
+ *
+ * Returns:
+ *     none
+ */
+static void PortReInitBmu(
+SK_AC  *pAC,           /* pointer to adapter context */
+int    PortIndex)      /* index of the port for which to re-init */
+{
+       SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ENTRY,
+               ("PortReInitBmu "));
+
+       /* set address of first descriptor of ring in BMU */
+       SK_OUT32(pAC->IoBase, TxQueueAddr[PortIndex][TX_PRIO_LOW]+
+               TX_Q_CUR_DESCR_LOW,
+               (uint32_t)(((caddr_t)
+               (pAC->TxPort[PortIndex][TX_PRIO_LOW].pTxdRingHead) -
+               pAC->TxPort[PortIndex][TX_PRIO_LOW].pTxDescrRing +
+               pAC->TxPort[PortIndex][TX_PRIO_LOW].VTxDescrRing) &
+               0xFFFFFFFF));
+       SK_OUT32(pAC->IoBase, TxQueueAddr[PortIndex][TX_PRIO_LOW]+
+               TX_Q_DESCR_HIGH,
+               (uint32_t)(((caddr_t)
+               (pAC->TxPort[PortIndex][TX_PRIO_LOW].pTxdRingHead) -
+               pAC->TxPort[PortIndex][TX_PRIO_LOW].pTxDescrRing +
+               pAC->TxPort[PortIndex][TX_PRIO_LOW].VTxDescrRing) >> 32));
+       SK_OUT32(pAC->IoBase, RxQueueAddr[PortIndex]+RX_Q_CUR_DESCR_LOW,
+               (uint32_t)(((caddr_t)(pAC->RxPort[PortIndex].pRxdRingHead) -
+               pAC->RxPort[PortIndex].pRxDescrRing +
+               pAC->RxPort[PortIndex].VRxDescrRing) & 0xFFFFFFFF));
+       SK_OUT32(pAC->IoBase, RxQueueAddr[PortIndex]+RX_Q_DESCR_HIGH,
+               (uint32_t)(((caddr_t)(pAC->RxPort[PortIndex].pRxdRingHead) -
+               pAC->RxPort[PortIndex].pRxDescrRing +
+               pAC->RxPort[PortIndex].VRxDescrRing) >> 32));
+} /* PortReInitBmu */
+
+
+/****************************************************************************
+ *
+ *     SkGeIsr - handle adapter interrupts
+ *
+ * Description:
+ *     The interrupt routine is called when the network adapter
+ *     generates an interrupt. It may also be called if another device
+ *     shares this interrupt vector with the driver.
+ *
+ * Returns: N/A
+ *
+ */
+#if 0
+static void SkGeIsr(int irq, void *dev_id, struct pt_regs *ptregs)
+#else
+void SkGeIsr(int irq, void *dev_id, struct pt_regs *ptregs)
+#endif
+{
+struct SK_NET_DEVICE *dev = (struct SK_NET_DEVICE *)dev_id;
+DEV_NET                *pNet;
+SK_AC          *pAC;
+SK_U32         IntSrc;         /* interrupts source register contents */
+
+       pNet = (DEV_NET*) dev->priv;
+       pAC = pNet->pAC;
+
+       /*
+        * Check and process if its our interrupt
+        */
+       SK_IN32(pAC->IoBase, B0_SP_ISRC, &IntSrc);
+       if (IntSrc == 0) {
+               return;
+       }
+
+       while (((IntSrc & IRQ_MASK) & ~SPECIAL_IRQS) != 0) {
+#if 0 /* software irq currently not used */
+               if (IntSrc & IRQ_SW) {
+                       SK_DBG_MSG(NULL, SK_DBGMOD_DRV,
+                               SK_DBGCAT_DRV_INT_SRC,
+                               ("Software IRQ\n"));
+               }
+#endif
+               if (IntSrc & IRQ_EOF_RX1) {
+                       SK_DBG_MSG(NULL, SK_DBGMOD_DRV,
+                               SK_DBGCAT_DRV_INT_SRC,
+                               ("EOF RX1 IRQ\n"));
+                       ReceiveIrq(pAC, &pAC->RxPort[0], SK_TRUE);
+                       SK_PNMI_CNT_RX_INTR(pAC, 0);
+               }
+               if (IntSrc & IRQ_EOF_RX2) {
+                       SK_DBG_MSG(NULL, SK_DBGMOD_DRV,
+                               SK_DBGCAT_DRV_INT_SRC,
+                               ("EOF RX2 IRQ\n"));
+                       ReceiveIrq(pAC, &pAC->RxPort[1], SK_TRUE);
+                       SK_PNMI_CNT_RX_INTR(pAC, 1);
+               }
+#ifdef USE_TX_COMPLETE /* only if tx complete interrupt used */
+               if (IntSrc & IRQ_EOF_AS_TX1) {
+                       SK_DBG_MSG(NULL, SK_DBGMOD_DRV,
+                               SK_DBGCAT_DRV_INT_SRC,
+                               ("EOF AS TX1 IRQ\n"));
+                       SK_PNMI_CNT_TX_INTR(pAC, 0);
+                       spin_lock(&pAC->TxPort[0][TX_PRIO_LOW].TxDesRingLock);
+                       FreeTxDescriptors(pAC, &pAC->TxPort[0][TX_PRIO_LOW]);
+                       spin_unlock(&pAC->TxPort[0][TX_PRIO_LOW].TxDesRingLock);
+               }
+               if (IntSrc & IRQ_EOF_AS_TX2) {
+                       SK_DBG_MSG(NULL, SK_DBGMOD_DRV,
+                               SK_DBGCAT_DRV_INT_SRC,
+                               ("EOF AS TX2 IRQ\n"));
+                       SK_PNMI_CNT_TX_INTR(pAC, 1);
+                       spin_lock(&pAC->TxPort[1][TX_PRIO_LOW].TxDesRingLock);
+                       FreeTxDescriptors(pAC, &pAC->TxPort[1][TX_PRIO_LOW]);
+                       spin_unlock(&pAC->TxPort[1][TX_PRIO_LOW].TxDesRingLock);
+               }
+#if 0 /* only if sync. queues used */
+               if (IntSrc & IRQ_EOF_SY_TX1) {
+                       SK_DBG_MSG(NULL, SK_DBGMOD_DRV,
+                               SK_DBGCAT_DRV_INT_SRC,
+                               ("EOF SY TX1 IRQ\n"));
+                       SK_PNMI_CNT_TX_INTR(pAC, 1);
+                       spin_lock(&pAC->TxPort[0][TX_PRIO_HIGH].TxDesRingLock);
+                       FreeTxDescriptors(pAC, 0, TX_PRIO_HIGH);
+                       spin_unlock(&pAC->TxPort[0][TX_PRIO_HIGH].TxDesRingLock);
+                       ClearTxIrq(pAC, 0, TX_PRIO_HIGH);
+               }
+               if (IntSrc & IRQ_EOF_SY_TX2) {
+                       SK_DBG_MSG(NULL, SK_DBGMOD_DRV,
+                               SK_DBGCAT_DRV_INT_SRC,
+                               ("EOF SY TX2 IRQ\n"));
+                       SK_PNMI_CNT_TX_INTR(pAC, 1);
+                       spin_lock(&pAC->TxPort[1][TX_PRIO_HIGH].TxDesRingLock);
+                       FreeTxDescriptors(pAC, 1, TX_PRIO_HIGH);
+                       spin_unlock(&pAC->TxPort[1][TX_PRIO_HIGH].TxDesRingLock);
+                       ClearTxIrq(pAC, 1, TX_PRIO_HIGH);
+               }
+#endif
+#endif
+
+               /* do all IO at once */
+               if (IntSrc & IRQ_EOF_RX1)
+                       ClearAndStartRx(pAC, 0);
+               if (IntSrc & IRQ_EOF_RX2)
+                       ClearAndStartRx(pAC, 1);
+#ifdef USE_TX_COMPLETE /* only if tx complete interrupt used */
+               if (IntSrc & IRQ_EOF_AS_TX1)
+                       ClearTxIrq(pAC, 0, TX_PRIO_LOW);
+               if (IntSrc & IRQ_EOF_AS_TX2)
+                       ClearTxIrq(pAC, 1, TX_PRIO_LOW);
+#endif
+               SK_IN32(pAC->IoBase, B0_ISRC, &IntSrc);
+       } /* while (IntSrc & IRQ_MASK != 0) */
+
+       if ((IntSrc & SPECIAL_IRQS) || pAC->CheckQueue) {
+               SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_INT_SRC,
+                       ("SPECIAL IRQ DP-Cards => %x\n", IntSrc));
+               pAC->CheckQueue = SK_FALSE;
+               spin_lock(&pAC->SlowPathLock);
+               if (IntSrc & SPECIAL_IRQS)
+                       SkGeSirqIsr(pAC, pAC->IoBase, IntSrc);
+
+               SkEventDispatcher(pAC, pAC->IoBase);
+               spin_unlock(&pAC->SlowPathLock);
+       }
+       /*
+        * do it all again is case we cleared an interrupt that
+        * came in after handling the ring (OUTs may be delayed
+        * in hardware buffers, but are through after IN)
+        */
+
+       ReceiveIrq(pAC, &pAC->RxPort[0], SK_TRUE);
+       ReceiveIrq(pAC, &pAC->RxPort[1], SK_TRUE);
+
+       if (pAC->CheckQueue) {
+               pAC->CheckQueue = SK_FALSE;
+               spin_lock(&pAC->SlowPathLock);
+               SkEventDispatcher(pAC, pAC->IoBase);
+               spin_unlock(&pAC->SlowPathLock);
+       }
+
+
+       /* IRQ is processed - Enable IRQs again*/
+       SK_OUT32(pAC->IoBase, B0_IMSK, IRQ_MASK);
+
+       return;
+} /* SkGeIsr */
+
+
+/****************************************************************************
+ *
+ *     SkGeIsrOnePort - handle adapter interrupts for single port adapter
+ *
+ * Description:
+ *     The interrupt routine is called when the network adapter
+ *     generates an interrupt. It may also be called if another device
+ *     shares this interrupt vector with the driver.
+ *     This is the same as above, but handles only one port.
+ *
+ * Returns: N/A
+ *
+ */
+#if 0
+static void SkGeIsrOnePort(int irq, void *dev_id, struct pt_regs *ptregs)
+#else
+void SkGeIsrOnePort(int irq, void *dev_id, struct pt_regs *ptregs)
+#endif
+{
+struct SK_NET_DEVICE *dev = (struct SK_NET_DEVICE *)dev_id;
+DEV_NET                *pNet;
+SK_AC          *pAC;
+SK_U32         IntSrc;         /* interrupts source register contents */
+
+       pNet = (DEV_NET*) dev->priv;
+       pAC = pNet->pAC;
+
+       /*
+        * Check and process if its our interrupt
+        */
+       SK_IN32(pAC->IoBase, B0_SP_ISRC, &IntSrc);
+       if (IntSrc == 0) {
+               return;
+       }
+
+       while (((IntSrc & IRQ_MASK) & ~SPECIAL_IRQS) != 0) {
+#if 0 /* software irq currently not used */
+               if (IntSrc & IRQ_SW) {
+                       SK_DBG_MSG(NULL, SK_DBGMOD_DRV,
+                               SK_DBGCAT_DRV_INT_SRC,
+                               ("Software IRQ\n"));
+               }
+#endif
+               if (IntSrc & IRQ_EOF_RX1) {
+                       SK_DBG_MSG(NULL, SK_DBGMOD_DRV,
+                               SK_DBGCAT_DRV_INT_SRC,
+                               ("EOF RX1 IRQ\n"));
+                       ReceiveIrq(pAC, &pAC->RxPort[0], SK_TRUE);
+                       SK_PNMI_CNT_RX_INTR(pAC, 0);
+               }
+#ifdef USE_TX_COMPLETE /* only if tx complete interrupt used */
+               if (IntSrc & IRQ_EOF_AS_TX1) {
+                       SK_DBG_MSG(NULL, SK_DBGMOD_DRV,
+                               SK_DBGCAT_DRV_INT_SRC,
+                               ("EOF AS TX1 IRQ\n"));
+                       SK_PNMI_CNT_TX_INTR(pAC, 0);
+                       spin_lock(&pAC->TxPort[0][TX_PRIO_LOW].TxDesRingLock);
+                       FreeTxDescriptors(pAC, &pAC->TxPort[0][TX_PRIO_LOW]);
+                       spin_unlock(&pAC->TxPort[0][TX_PRIO_LOW].TxDesRingLock);
+               }
+#if 0 /* only if sync. queues used */
+               if (IntSrc & IRQ_EOF_SY_TX1) {
+                       SK_DBG_MSG(NULL, SK_DBGMOD_DRV,
+                               SK_DBGCAT_DRV_INT_SRC,
+                               ("EOF SY TX1 IRQ\n"));
+                       SK_PNMI_CNT_TX_INTR(pAC, 0);
+                       spin_lock(&pAC->TxPort[0][TX_PRIO_HIGH].TxDesRingLock);
+                       FreeTxDescriptors(pAC, 0, TX_PRIO_HIGH);
+                       spin_unlock(&pAC->TxPort[0][TX_PRIO_HIGH].TxDesRingLock);
+                       ClearTxIrq(pAC, 0, TX_PRIO_HIGH);
+               }
+#endif
+#endif
+
+               /* do all IO at once */
+               if (IntSrc & IRQ_EOF_RX1)
+                       ClearAndStartRx(pAC, 0);
+#ifdef USE_TX_COMPLETE /* only if tx complete interrupt used */
+               if (IntSrc & IRQ_EOF_AS_TX1)
+                       ClearTxIrq(pAC, 0, TX_PRIO_LOW);
+#endif
+               SK_IN32(pAC->IoBase, B0_ISRC, &IntSrc);
+       } /* while (IntSrc & IRQ_MASK != 0) */
+
+       if ((IntSrc & SPECIAL_IRQS) || pAC->CheckQueue) {
+               SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_INT_SRC,
+                       ("SPECIAL IRQ SP-Cards => %x\n", IntSrc));
+               pAC->CheckQueue = SK_FALSE;
+               spin_lock(&pAC->SlowPathLock);
+               if (IntSrc & SPECIAL_IRQS)
+                       SkGeSirqIsr(pAC, pAC->IoBase, IntSrc);
+
+               SkEventDispatcher(pAC, pAC->IoBase);
+               spin_unlock(&pAC->SlowPathLock);
+       }
+       /*
+        * do it all again is case we cleared an interrupt that
+        * came in after handling the ring (OUTs may be delayed
+        * in hardware buffers, but are through after IN)
+        */
+       ReceiveIrq(pAC, &pAC->RxPort[0], SK_TRUE);
+
+       /* IRQ is processed - Enable IRQs again*/
+       SK_OUT32(pAC->IoBase, B0_IMSK, IRQ_MASK);
+
+       return;
+} /* SkGeIsrOnePort */
+
+
+/****************************************************************************
+ *
+ *     SkGeOpen - handle start of initialized adapter
+ *
+ * Description:
+ *     This function starts the initialized adapter.
+ *     The board level variable is set and the adapter is
+ *     brought to full functionality.
+ *     The device flags are set for operation.
+ *     Do all necessary level 2 initialization, enable interrupts and
+ *     give start command to RLMT.
+ *
+ * Returns:
+ *     0 on success
+ *     != 0 on error
+ */
+#if 0
+static int SkGeOpen(
+#else
+int SkGeOpen(
+#endif
+struct SK_NET_DEVICE   *dev)
+{
+       DEV_NET                 *pNet;
+       SK_AC                   *pAC;
+       unsigned long   Flags;          /* for spin lock */
+       int                             i;
+       SK_EVPARA               EvPara;         /* an event parameter union */
+
+       pNet = (DEV_NET*) dev->priv;
+       pAC = pNet->pAC;
+
+       SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ENTRY,
+               ("SkGeOpen: pAC=0x%lX:\n", (unsigned long)pAC));
+
+       if (pAC->BoardLevel == 0) {
+               /* level 1 init common modules here */
+               if (SkGeInit(pAC, pAC->IoBase, 1) != 0) {
+                       printk("%s: HWInit (1) failed.\n", pAC->dev[pNet->PortNr]->name);
+                       return (-1);
+               }
+               SkI2cInit       (pAC, pAC->IoBase, 1);
+               SkEventInit     (pAC, pAC->IoBase, 1);
+               SkPnmiInit      (pAC, pAC->IoBase, 1);
+               SkAddrInit      (pAC, pAC->IoBase, 1);
+               SkRlmtInit      (pAC, pAC->IoBase, 1);
+               SkTimerInit     (pAC, pAC->IoBase, 1);
+               pAC->BoardLevel = 1;
+       }
+
+       if (pAC->BoardLevel != 2) {
+               /* tschilling: Level 2 init modules here, check return value. */
+               if (SkGeInit(pAC, pAC->IoBase, 2) != 0) {
+                       printk("%s: HWInit (2) failed.\n", pAC->dev[pNet->PortNr]->name);
+                       return (-1);
+               }
+               SkI2cInit       (pAC, pAC->IoBase, 2);
+               SkEventInit     (pAC, pAC->IoBase, 2);
+               SkPnmiInit      (pAC, pAC->IoBase, 2);
+               SkAddrInit      (pAC, pAC->IoBase, 2);
+               SkRlmtInit      (pAC, pAC->IoBase, 2);
+               SkTimerInit     (pAC, pAC->IoBase, 2);
+               pAC->BoardLevel = 2;
+       }
+
+       for (i=0; i<pAC->GIni.GIMacsFound; i++) {
+               /* Enable transmit descriptor polling. */
+               SkGePollTxD(pAC, pAC->IoBase, i, SK_TRUE);
+               FillRxRing(pAC, &pAC->RxPort[i]);
+       }
+       SkGeYellowLED(pAC, pAC->IoBase, 1);
+
+#ifdef USE_INT_MOD
+/* moderate only TX complete interrupts (these are not time critical) */
+#define IRQ_MOD_MASK (IRQ_EOF_AS_TX1 | IRQ_EOF_AS_TX2)
+       {
+               unsigned long ModBase;
+               ModBase = 53125000 / INTS_PER_SEC;
+               SK_OUT32(pAC->IoBase, B2_IRQM_INI, ModBase);
+               SK_OUT32(pAC->IoBase, B2_IRQM_MSK, IRQ_MOD_MASK);
+               SK_OUT32(pAC->IoBase, B2_IRQM_CTRL, TIM_START);
+       }
+#endif
+
+       /* enable Interrupts */
+       SK_OUT32(pAC->IoBase, B0_IMSK, IRQ_MASK);
+       SK_OUT32(pAC->IoBase, B0_HWE_IMSK, IRQ_HWE_MASK);
+
+       spin_lock_irqsave(&pAC->SlowPathLock, Flags);
+
+       if ((pAC->RlmtMode != 0) && (pAC->MaxPorts == 0)) {
+               EvPara.Para32[0] = pAC->RlmtNets;
+               EvPara.Para32[1] = -1;
+               SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_SET_NETS,
+                       EvPara);
+               EvPara.Para32[0] = pAC->RlmtMode;
+               EvPara.Para32[1] = 0;
+               SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_MODE_CHANGE,
+                       EvPara);
+       }
+
+       EvPara.Para32[0] = pNet->NetNr;
+       EvPara.Para32[1] = -1;
+       SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_START, EvPara);
+       SkEventDispatcher(pAC, pAC->IoBase);
+       spin_unlock_irqrestore(&pAC->SlowPathLock, Flags);
+
+       pAC->MaxPorts++;
+       pNet->Up = 1;
+
+       MOD_INC_USE_COUNT;
+
+       SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ENTRY,
+               ("SkGeOpen suceeded\n"));
+
+       return (0);
+} /* SkGeOpen */
+
+
+/****************************************************************************
+ *
+ *     SkGeClose - Stop initialized adapter
+ *
+ * Description:
+ *     Close initialized adapter.
+ *
+ * Returns:
+ *     0 - on success
+ *     error code - on error
+ */
+#if 0
+static int SkGeClose(
+#else
+int SkGeClose(
+#endif
+struct SK_NET_DEVICE   *dev)
+{
+       DEV_NET                 *pNet;
+       SK_AC                   *pAC;
+
+       unsigned long   Flags;          /* for spin lock */
+       int                             i;
+       int                             PortIdx;
+       SK_EVPARA               EvPara;
+
+       netif_stop_queue(dev);
+       pNet = (DEV_NET*) dev->priv;
+       pAC = pNet->pAC;
+
+       if (pAC->RlmtNets == 1)
+               PortIdx = pAC->ActivePort;
+       else
+               PortIdx = pNet->NetNr;
+
+       SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ENTRY,
+               ("SkGeClose: pAC=0x%lX ", (unsigned long)pAC));
+
+       /*
+        * Clear multicast table, promiscuous mode ....
+        */
+       SkAddrMcClear(pAC, pAC->IoBase, PortIdx, 0);
+       SkAddrPromiscuousChange(pAC, pAC->IoBase, PortIdx,
+               SK_PROM_MODE_NONE);
+
+       if (pAC->MaxPorts == 1) {
+               spin_lock_irqsave(&pAC->SlowPathLock, Flags);
+               /* disable interrupts */
+               SK_OUT32(pAC->IoBase, B0_IMSK, 0);
+               EvPara.Para32[0] = pNet->NetNr;
+               EvPara.Para32[1] = -1;
+               SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_STOP, EvPara);
+               SkEventDispatcher(pAC, pAC->IoBase);
+               SK_OUT32(pAC->IoBase, B0_IMSK, 0);
+               /* stop the hardware */
+               SkGeDeInit(pAC, pAC->IoBase);
+               pAC->BoardLevel = 0;
+               spin_unlock_irqrestore(&pAC->SlowPathLock, Flags);
+       } else {
+
+               spin_lock_irqsave(&pAC->SlowPathLock, Flags);
+               EvPara.Para32[0] = pNet->NetNr;
+               EvPara.Para32[1] = -1;
+               SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_STOP, EvPara);
+               SkEventDispatcher(pAC, pAC->IoBase);
+               spin_unlock_irqrestore(&pAC->SlowPathLock, Flags);
+
+               /* Stop port */
+               spin_lock_irqsave(&pAC->TxPort[pNet->PortNr]
+                       [TX_PRIO_LOW].TxDesRingLock, Flags);
+               SkGeStopPort(pAC, pAC->IoBase, pNet->PortNr,
+                       SK_STOP_ALL, SK_HARD_RST);
+               spin_unlock_irqrestore(&pAC->TxPort[pNet->PortNr]
+                       [TX_PRIO_LOW].TxDesRingLock, Flags);
+       }
+
+       if (pAC->RlmtNets == 1) {
+               /* clear all descriptor rings */
+               for (i=0; i<pAC->GIni.GIMacsFound; i++) {
+                       ReceiveIrq(pAC, &pAC->RxPort[i], SK_TRUE);
+                       ClearRxRing(pAC, &pAC->RxPort[i]);
+                       ClearTxRing(pAC, &pAC->TxPort[i][TX_PRIO_LOW]);
+               }
+       } else {
+               /* clear port descriptor rings */
+               ReceiveIrq(pAC, &pAC->RxPort[pNet->PortNr], SK_TRUE);
+               ClearRxRing(pAC, &pAC->RxPort[pNet->PortNr]);
+               ClearTxRing(pAC, &pAC->TxPort[pNet->PortNr][TX_PRIO_LOW]);
+       }
+
+       SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ENTRY,
+               ("SkGeClose: done "));
+
+       pAC->MaxPorts--;
+       pNet->Up = 0;
+       MOD_DEC_USE_COUNT;
+
+       return (0);
+} /* SkGeClose */
+
+
+/*****************************************************************************
+ *
+ *     SkGeXmit - Linux frame transmit function
+ *
+ * Description:
+ *     The system calls this function to send frames onto the wire.
+ *     It puts the frame in the tx descriptor ring. If the ring is
+ *     full then, the 'tbusy' flag is set.
+ *
+ * Returns:
+ *     0, if everything is ok
+ *     !=0, on error
+ * WARNING: returning 1 in 'tbusy' case caused system crashes (double
+ *     allocated skb's) !!!
+ */
+#if 0
+static int SkGeXmit(struct sk_buff *skb, struct SK_NET_DEVICE *dev)
+#else
+int SkGeXmit(struct sk_buff *skb, struct SK_NET_DEVICE *dev)
+#endif
+{
+DEV_NET                *pNet;
+SK_AC          *pAC;
+int                    Rc;     /* return code of XmitFrame */
+
+       pNet = (DEV_NET*) dev->priv;
+       pAC = pNet->pAC;
+
+#if 0
+       if ((!skb_shinfo(skb)->nr_frags) ||
+#else
+       if (1 ||
+#endif
+               (pAC->GIni.GIChipId == CHIP_ID_GENESIS)) {
+               /* Don't activate scatter-gather and hardware checksum */
+
+               if (pAC->RlmtNets == 2)
+                       Rc = XmitFrame(
+                               pAC,
+                               &pAC->TxPort[pNet->PortNr][TX_PRIO_LOW],
+                               skb);
+               else
+                       Rc = XmitFrame(
+                               pAC,
+                               &pAC->TxPort[pAC->ActivePort][TX_PRIO_LOW],
+                               skb);
+       } else {
+#if 0
+               /* scatter-gather and hardware TCP checksumming anabled*/
+               if (pAC->RlmtNets == 2)
+                       Rc = XmitFrameSG(
+                               pAC,
+                               &pAC->TxPort[pNet->PortNr][TX_PRIO_LOW],
+                               skb);
+               else
+                       Rc = XmitFrameSG(
+                               pAC,
+                               &pAC->TxPort[pAC->ActivePort][TX_PRIO_LOW],
+                               skb);
+#endif
+       }
+
+       /* Transmitter out of resources? */
+       if (Rc <= 0) {
+               netif_stop_queue(dev);
+       }
+
+       /* If not taken, give buffer ownership back to the
+        * queueing layer.
+        */
+       if (Rc < 0)
+               return (1);
+
+#if 0
+       dev->trans_start = jiffies;
+#endif
+       return (0);
+} /* SkGeXmit */
+
+
+/*****************************************************************************
+ *
+ *     XmitFrame - fill one socket buffer into the transmit ring
+ *
+ * Description:
+ *     This function puts a message into the transmit descriptor ring
+ *     if there is a descriptors left.
+ *     Linux skb's consist of only one continuous buffer.
+ *     The first step locks the ring. It is held locked
+ *     all time to avoid problems with SWITCH_../PORT_RESET.
+ *     Then the descriptoris allocated.
+ *     The second part is linking the buffer to the descriptor.
+ *     At the very last, the Control field of the descriptor
+ *     is made valid for the BMU and a start TX command is given
+ *     if necessary.
+ *
+ * Returns:
+ *     > 0 - on succes: the number of bytes in the message
+ *     = 0 - on resource shortage: this frame sent or dropped, now
+ *             the ring is full ( -> set tbusy)
+ *     < 0 - on failure: other problems ( -> return failure to upper layers)
+ */
+static int XmitFrame(
+SK_AC          *pAC,           /* pointer to adapter context */
+TX_PORT                *pTxPort,       /* pointer to struct of port to send to */
+struct sk_buff *pMessage)      /* pointer to send-message */
+{
+TXD            *pTxd;          /* the rxd to fill */
+unsigned long  Flags;
+SK_U64         PhysAddr;
+int            BytesSend;
+
+       SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_TX_PROGRESS,
+               ("X"));
+
+       spin_lock_irqsave(&pTxPort->TxDesRingLock, Flags);
+#ifndef USE_TX_COMPLETE
+       FreeTxDescriptors(pAC, pTxPort);
+#endif
+       if (pTxPort->TxdRingFree == 0) {
+               /* no enough free descriptors in ring at the moment */
+               FreeTxDescriptors(pAC, pTxPort);
+               if (pTxPort->TxdRingFree == 0) {
+                       spin_unlock_irqrestore(&pTxPort->TxDesRingLock, Flags);
+                       SK_PNMI_CNT_NO_TX_BUF(pAC, pTxPort->PortIndex);
+                       SK_DBG_MSG(NULL, SK_DBGMOD_DRV,
+                               SK_DBGCAT_DRV_TX_PROGRESS,
+                               ("XmitFrame failed\n"));
+                       /* this message can not be sent now */
+                       /* Because tbusy seems to be set, the message should not be freed here */
+                       /* It will be used by the scheduler of the ethernet handler */
+                       return (-1);
+               }
+       }
+       /* advance head counter behind descriptor needed for this frame */
+       pTxd = pTxPort->pTxdRingHead;
+       pTxPort->pTxdRingHead = pTxd->pNextTxd;
+       pTxPort->TxdRingFree--;
+       /* the needed descriptor is reserved now */
+
+       /*
+        * everything allocated ok, so add buffer to descriptor
+        */
+
+#ifdef SK_DUMP_TX
+       DumpMsg(pMessage, "XmitFrame");
+#endif
+
+       /* set up descriptor and CONTROL dword */
+#if 0
+       PhysAddr = (SK_U64) pci_map_page(pAC->PciDev,
+               virt_to_page(pMessage->data),
+               ((unsigned long) pMessage->data &
+               ~PAGE_MASK),
+               pMessage->len,
+               PCI_DMA_TODEVICE);
+#else
+       PhysAddr = (SK_U64) pci_phys_to_mem(pAC->PciDev, (u32) pMessage->data);
+#endif
+       pTxd->VDataLow = (SK_U32)  (PhysAddr & 0xffffffff);
+       pTxd->VDataHigh = (SK_U32) (PhysAddr >> 32);
+       pTxd->pMBuf = pMessage;
+       pTxd->TBControl = TX_CTRL_OWN_BMU | TX_CTRL_STF |
+               TX_CTRL_CHECK_DEFAULT | TX_CTRL_SOFTWARE |
+#ifdef USE_TX_COMPLETE
+               TX_CTRL_EOF | TX_CTRL_EOF_IRQ | pMessage->len;
+#else
+               TX_CTRL_EOF | pMessage->len;
+#endif
+
+       if ((pTxPort->pTxdRingPrev->TBControl & TX_CTRL_OWN_BMU) == 0) {
+               /* previous descriptor already done, so give tx start cmd */
+               /* StartTx(pAC, pTxPort->HwAddr); */
+               SK_OUT8(pTxPort->HwAddr, TX_Q_CTRL, TX_Q_CTRL_START);
+       }
+       pTxPort->pTxdRingPrev = pTxd;
+
+
+       BytesSend = pMessage->len;
+       spin_unlock_irqrestore(&pTxPort->TxDesRingLock, Flags);
+       /* after releasing the lock, the skb may be immidiately freed */
+       if (pTxPort->TxdRingFree != 0)
+               return (BytesSend);
+       else
+               return (0);
+
+} /* XmitFrame */
+
+/*****************************************************************************
+ *
+ *     XmitFrameSG - fill one socket buffer into the transmit ring
+ *                (use SG and TCP/UDP hardware checksumming)
+ *
+ * Description:
+ *     This function puts a message into the transmit descriptor ring
+ *     if there is a descriptors left.
+ *
+ * Returns:
+ *     > 0 - on succes: the number of bytes in the message
+ *     = 0 - on resource shortage: this frame sent or dropped, now
+ *             the ring is full ( -> set tbusy)
+ *     < 0 - on failure: other problems ( -> return failure to upper layers)
+ */
+#if 0
+static int XmitFrameSG(
+SK_AC          *pAC,                   /* pointer to adapter context */
+TX_PORT                *pTxPort,               /* pointer to struct of port to send to */
+struct sk_buff *pMessage)      /* pointer to send-message */
+{
+
+       int             i;
+       int                     BytesSend;
+       int                     hlength;
+       int                     protocol;
+       skb_frag_t              *sk_frag;
+       TXD                     *pTxd;
+       TXD                     *pTxdFst;
+       TXD                     *pTxdLst;
+       SK_U64          PhysAddr;
+       unsigned long   Flags;
+
+       spin_lock_irqsave(&pTxPort->TxDesRingLock, Flags);
+#ifndef USE_TX_COMPLETE
+       FreeTxDescriptors(pAC, pTxPort);
+#endif
+       if ((skb_shinfo(pMessage)->nr_frags +1) > pTxPort->TxdRingFree) {
+               FreeTxDescriptors(pAC, pTxPort);
+               if ((skb_shinfo(pMessage)->nr_frags + 1) > pTxPort->TxdRingFree) {
+                       spin_unlock_irqrestore(&pTxPort->TxDesRingLock, Flags);
+                       SK_PNMI_CNT_NO_TX_BUF(pAC, pTxPort->PortIndex);
+                       SK_DBG_MSG(NULL, SK_DBGMOD_DRV,
+                               SK_DBGCAT_DRV_TX_PROGRESS,
+                               ("XmitFrameSG failed - Ring full\n"));
+                               /* this message can not be sent now */
+                       return(-1);
+               }
+       }
+
+
+       pTxd = pTxPort->pTxdRingHead;
+       pTxdFst = pTxd;
+       pTxdLst = pTxd;
+       BytesSend = 0;
+       protocol = 0;
+
+       /* map first fragment (header) */
+       PhysAddr = (SK_U64) pci_map_page(pAC->PciDev,
+                       virt_to_page(pMessage->data),
+                       ((unsigned long) pMessage->data & ~PAGE_MASK),
+                       skb_headlen(pMessage),
+                       PCI_DMA_TODEVICE);
+
+       pTxd->VDataLow = (SK_U32)  (PhysAddr & 0xffffffff);
+       pTxd->VDataHigh = (SK_U32) (PhysAddr >> 32);
+
+       /* HW checksum? */
+       if (pMessage->ip_summed == CHECKSUM_HW) {
+               pTxd->TBControl = TX_CTRL_STF |
+                                 TX_CTRL_ST_FWD |
+                                 skb_headlen(pMessage);
+
+               /* We have to use the opcode for tcp here because the opcode for
+               udp is not working in the hardware yet (revision 2.0)*/
+               protocol = ((SK_U8)pMessage->data[23] & 0xf);
+               if ((protocol == 17) && (pAC->GIni.GIChipRev != 0))
+                       pTxd->TBControl |=  BMU_UDP_CHECK;
+               else
+                       pTxd->TBControl |= BMU_TCP_CHECK ;
+
+               hlength = ((SK_U8)pMessage->data[14] & 0xf) * 4;
+               pTxd->TcpSumOfs = 0; /* PH-Checksum already claculated */
+               pTxd->TcpSumSt = 14+hlength+16;
+               pTxd->TcpSumWr = 14+hlength;
+
+       } else {
+               pTxd->TBControl = TX_CTRL_CHECK_DEFAULT |
+                                 TX_CTRL_SOFTWARE |
+                                 TX_CTRL_STF |
+                                 skb_headlen(pMessage);
+       }
+
+       pTxd = pTxd->pNextTxd;
+       pTxPort->TxdRingFree--;
+       BytesSend += skb_headlen(pMessage);
+
+
+       /* Map SG fragments */
+       for (i = 0; i < skb_shinfo(pMessage)->nr_frags; i++) {
+               sk_frag = &skb_shinfo(pMessage)->frags[i];
+
+               /* we already have the proper value in entry */
+               PhysAddr = (SK_U64) pci_map_page(pAC->PciDev,
+                                                sk_frag->page,
+                                                sk_frag->page_offset,
+                                                sk_frag->size,
+                                                PCI_DMA_TODEVICE);
+
+               pTxd->VDataLow = (SK_U32)  (PhysAddr & 0xffffffff);
+               pTxd->VDataHigh = (SK_U32) (PhysAddr >> 32);
+               pTxd->pMBuf = pMessage;
+
+               /* HW checksum */
+               if (pMessage->ip_summed == CHECKSUM_HW) {
+                       pTxd->TBControl = TX_CTRL_OWN_BMU |
+                                         TX_CTRL_SOFTWARE |
+                                         TX_CTRL_ST_FWD;
+
+                       /* We have to use the opcode for tcp here because the opcode for
+                       udp is not working in the hardware yet (revision 2.0)*/
+                       if ((protocol == 17) && (pAC->GIni.GIChipRev != 0))
+                               pTxd->TBControl |= BMU_UDP_CHECK ;
+                       else
+                               pTxd->TBControl |= BMU_TCP_CHECK ;
+
+               } else {
+                       pTxd->TBControl = TX_CTRL_CHECK_DEFAULT |
+                                         TX_CTRL_SOFTWARE |
+                                         TX_CTRL_OWN_BMU;
+               }
+
+               /* Last fragment  */
+               if( (i+1) == skb_shinfo(pMessage)->nr_frags )  {
+#ifdef USE_TX_COMPLETE
+                       pTxd->TBControl |= TX_CTRL_EOF |
+                                          TX_CTRL_EOF_IRQ |
+                                          sk_frag->size;
+#else
+                       pTxd->TBControl |= TX_CTRL_EOF |
+                                          sk_frag->size;
+#endif
+                       pTxdFst->TBControl |= TX_CTRL_OWN_BMU |
+                                             TX_CTRL_SOFTWARE;
+
+               } else {
+                       pTxd->TBControl |= sk_frag->size;
+               }
+               pTxdLst = pTxd;
+               pTxd = pTxd->pNextTxd;
+               pTxPort->TxdRingFree--;
+               BytesSend += sk_frag->size;
+       }
+
+       if ((pTxPort->pTxdRingPrev->TBControl & TX_CTRL_OWN_BMU) == 0) {
+               /* previous descriptor already done, so give tx start cmd */
+               /* StartTx(pAC, pTxPort->HwAddr); */
+               SK_OUT8(pTxPort->HwAddr, TX_Q_CTRL, TX_Q_CTRL_START);
+       }
+
+       pTxPort->pTxdRingPrev = pTxdLst;
+       pTxPort->pTxdRingHead = pTxd;
+
+       spin_unlock_irqrestore(&pTxPort->TxDesRingLock, Flags);
+
+       if (pTxPort->TxdRingFree > 0)
+               return (BytesSend);
+       else
+               return (0);
+}
+#endif
+
+
+void dump_frag( SK_U8 *data, int length)
+{
+       int i;
+
+       printk("Length: %d\n", length);
+       for( i=0; i < length; i++ ) {
+               printk(" %02x", (SK_U8)*(data + i) );
+               if( !((i+1) % 20) )
+                 printk("\n");
+       }
+       printk("\n\n");
+
+}
+
+
+/*****************************************************************************
+ *
+ *     FreeTxDescriptors - release descriptors from the descriptor ring
+ *
+ * Description:
+ *     This function releases descriptors from a transmit ring if they
+ *     have been sent by the BMU.
+ *     If a descriptors is sent, it can be freed and the message can
+ *     be freed, too.
+ *     The SOFTWARE controllable bit is used to prevent running around a
+ *     completely free ring for ever. If this bit is no set in the
+ *     frame (by XmitFrame), this frame has never been sent or is
+ *     already freed.
+ *     The Tx descriptor ring lock must be held while calling this function !!!
+ *
+ * Returns:
+ *     none
+ */
+static void FreeTxDescriptors(
+SK_AC  *pAC,           /* pointer to the adapter context */
+TX_PORT        *pTxPort)       /* pointer to destination port structure */
+{
+TXD    *pTxd;          /* pointer to the checked descriptor */
+TXD    *pNewTail;      /* pointer to 'end' of the ring */
+SK_U32 Control;        /* TBControl field of descriptor */
+SK_U64 PhysAddr;       /* address of DMA mapping */
+
+       pNewTail = pTxPort->pTxdRingTail;
+       pTxd = pNewTail;
+       /*
+        * loop forever; exits if TX_CTRL_SOFTWARE bit not set in start frame
+        * or TX_CTRL_OWN_BMU bit set in any frame
+        */
+       while (1) {
+               Control = pTxd->TBControl;
+               if ((Control & TX_CTRL_SOFTWARE) == 0) {
+                       /*
+                        * software controllable bit is set in first
+                        * fragment when given to BMU. Not set means that
+                        * this fragment was never sent or is already
+                        * freed ( -> ring completely free now).
+                        */
+                       pTxPort->pTxdRingTail = pTxd;
+                       netif_wake_queue(pAC->dev[pTxPort->PortIndex]);
+                       return;
+               }
+               if (Control & TX_CTRL_OWN_BMU) {
+                       pTxPort->pTxdRingTail = pTxd;
+                       if (pTxPort->TxdRingFree > 0) {
+                               netif_wake_queue(pAC->dev[pTxPort->PortIndex]);
+                       }
+                       return;
+               }
+
+               /* release the DMA mapping */
+               PhysAddr = ((SK_U64) pTxd->VDataHigh) << (SK_U64) 32;
+               PhysAddr |= (SK_U64) pTxd->VDataLow;
+               pci_unmap_page(pAC->PciDev, PhysAddr,
+                                pTxd->pMBuf->len,
+                                PCI_DMA_TODEVICE);
+
+               if (Control & TX_CTRL_EOF)
+                       DEV_KFREE_SKB_ANY(pTxd->pMBuf); /* free message */
+
+               pTxPort->TxdRingFree++;
+               pTxd->TBControl &= ~TX_CTRL_SOFTWARE;
+               pTxd = pTxd->pNextTxd; /* point behind fragment with EOF */
+       } /* while(forever) */
+} /* FreeTxDescriptors */
+
+/*****************************************************************************
+ *
+ *     FillRxRing - fill the receive ring with valid descriptors
+ *
+ * Description:
+ *     This function fills the receive ring descriptors with data
+ *     segments and makes them valid for the BMU.
+ *     The active ring is filled completely, if possible.
+ *     The non-active ring is filled only partial to save memory.
+ *
+ * Description of rx ring structure:
+ *     head - points to the descriptor which will be used next by the BMU
+ *     tail - points to the next descriptor to give to the BMU
+ *
+ * Returns:    N/A
+ */
+static void FillRxRing(
+SK_AC          *pAC,           /* pointer to the adapter context */
+RX_PORT                *pRxPort)       /* ptr to port struct for which the ring
+                                  should be filled */
+{
+unsigned long  Flags;
+
+       spin_lock_irqsave(&pRxPort->RxDesRingLock, Flags);
+       while (pRxPort->RxdRingFree > pRxPort->RxFillLimit) {
+               if(!FillRxDescriptor(pAC, pRxPort))
+                       break;
+       }
+       spin_unlock_irqrestore(&pRxPort->RxDesRingLock, Flags);
+} /* FillRxRing */
+
+
+/*****************************************************************************
+ *
+ *     FillRxDescriptor - fill one buffer into the receive ring
+ *
+ * Description:
+ *     The function allocates a new receive buffer and
+ *     puts it into the next descriptor.
+ *
+ * Returns:
+ *     SK_TRUE - a buffer was added to the ring
+ *     SK_FALSE - a buffer could not be added
+ */
+static SK_BOOL FillRxDescriptor(
+SK_AC          *pAC,           /* pointer to the adapter context struct */
+RX_PORT                *pRxPort)       /* ptr to port struct of ring to fill */
+{
+struct sk_buff *pMsgBlock;     /* pointer to a new message block */
+RXD            *pRxd;          /* the rxd to fill */
+SK_U16         Length;         /* data fragment length */
+SK_U64         PhysAddr;       /* physical address of a rx buffer */
+
+       pMsgBlock = alloc_skb(pAC->RxBufSize, GFP_ATOMIC);
+       if (pMsgBlock == NULL) {
+               SK_DBG_MSG(NULL, SK_DBGMOD_DRV,
+                       SK_DBGCAT_DRV_ENTRY,
+                       ("%s: Allocation of rx buffer failed !\n",
+                       pAC->dev[pRxPort->PortIndex]->name));
+               SK_PNMI_CNT_NO_RX_BUF(pAC, pRxPort->PortIndex);
+               return(SK_FALSE);
+       }
+       skb_reserve(pMsgBlock, 2); /* to align IP frames */
+       /* skb allocated ok, so add buffer */
+       pRxd = pRxPort->pRxdRingTail;
+       pRxPort->pRxdRingTail = pRxd->pNextRxd;
+       pRxPort->RxdRingFree--;
+       Length = pAC->RxBufSize;
+#if 0
+       PhysAddr = (SK_U64) pci_map_page(pAC->PciDev,
+               virt_to_page(pMsgBlock->data),
+               ((unsigned long) pMsgBlock->data &
+               ~PAGE_MASK),
+               pAC->RxBufSize - 2,
+               PCI_DMA_FROMDEVICE);
+#else
+       PhysAddr = (SK_U64) pci_phys_to_mem(pAC->PciDev, (u32)pMsgBlock->data);
+#endif
+       pRxd->VDataLow = (SK_U32) (PhysAddr & 0xffffffff);
+       pRxd->VDataHigh = (SK_U32) (PhysAddr >> 32);
+       pRxd->pMBuf = pMsgBlock;
+       pRxd->RBControl = RX_CTRL_OWN_BMU | RX_CTRL_STF |
+               RX_CTRL_EOF_IRQ | RX_CTRL_CHECK_CSUM | Length;
+       return (SK_TRUE);
+
+} /* FillRxDescriptor */
+
+
+/*****************************************************************************
+ *
+ *     ReQueueRxBuffer - fill one buffer back into the receive ring
+ *
+ * Description:
+ *     Fill a given buffer back into the rx ring. The buffer
+ *     has been previously allocated and aligned, and its phys.
+ *     address calculated, so this is no more necessary.
+ *
+ * Returns: N/A
+ */
+static void ReQueueRxBuffer(
+SK_AC          *pAC,           /* pointer to the adapter context struct */
+RX_PORT                *pRxPort,       /* ptr to port struct of ring to fill */
+struct sk_buff *pMsg,          /* pointer to the buffer */
+SK_U32         PhysHigh,       /* phys address high dword */
+SK_U32         PhysLow)        /* phys address low dword */
+{
+RXD            *pRxd;          /* the rxd to fill */
+SK_U16         Length;         /* data fragment length */
+
+       pRxd = pRxPort->pRxdRingTail;
+       pRxPort->pRxdRingTail = pRxd->pNextRxd;
+       pRxPort->RxdRingFree--;
+       Length = pAC->RxBufSize;
+       pRxd->VDataLow = PhysLow;
+       pRxd->VDataHigh = PhysHigh;
+       pRxd->pMBuf = pMsg;
+       pRxd->RBControl = RX_CTRL_OWN_BMU | RX_CTRL_STF |
+               RX_CTRL_EOF_IRQ | RX_CTRL_CHECK_CSUM | Length;
+       return;
+} /* ReQueueRxBuffer */
+
+
+/*****************************************************************************
+ *
+ *     ReceiveIrq - handle a receive IRQ
+ *
+ * Description:
+ *     This function is called when a receive IRQ is set.
+ *     It walks the receive descriptor ring and sends up all
+ *     frames that are complete.
+ *
+ * Returns:    N/A
+ */
+#if 0
+static void ReceiveIrq(
+#else
+void ReceiveIrq(
+#endif
+       SK_AC           *pAC,                   /* pointer to adapter context */
+       RX_PORT         *pRxPort,               /* pointer to receive port struct */
+       SK_BOOL         SlowPathLock)   /* indicates if SlowPathLock is needed */
+{
+RXD                            *pRxd;                  /* pointer to receive descriptors */
+SK_U32                 Control;                /* control field of descriptor */
+struct sk_buff *pMsg;                  /* pointer to message holding frame */
+struct sk_buff *pNewMsg;               /* pointer to a new message for copying frame */
+int                            FrameLength;    /* total length of received frame */
+SK_MBUF                        *pRlmtMbuf;             /* ptr to a buffer for giving a frame to rlmt */
+SK_EVPARA              EvPara;                 /* an event parameter union */
+unsigned long  Flags;                  /* for spin lock */
+int                            PortIndex = pRxPort->PortIndex;
+unsigned int   Offset;
+unsigned int   NumBytes;
+unsigned int   ForRlmt;
+SK_BOOL                        IsBc;
+SK_BOOL                        IsMc;
+SK_BOOL  IsBadFrame;                   /* Bad frame */
+
+SK_U32                 FrameStat;
+unsigned short Csum1;
+unsigned short Csum2;
+unsigned short Type;
+#if 0
+int                            Result;
+#endif
+SK_U64                 PhysAddr;
+
+rx_start:
+       /* do forever; exit if RX_CTRL_OWN_BMU found */
+       for ( pRxd = pRxPort->pRxdRingHead ;
+                 pRxPort->RxdRingFree < pAC->RxDescrPerRing ;
+                 pRxd = pRxd->pNextRxd,
+                 pRxPort->pRxdRingHead = pRxd,
+                 pRxPort->RxdRingFree ++) {
+
+               /*
+                * For a better understanding of this loop
+                * Go through every descriptor beginning at the head
+                * Please note: the ring might be completely received so the OWN bit
+                * set is not a good crirteria to leave that loop.
+                * Therefore the RingFree counter is used.
+                * On entry of this loop pRxd is a pointer to the Rxd that needs
+                * to be checked next.
+                */
+
+               Control = pRxd->RBControl;
+
+               /* check if this descriptor is ready */
+               if ((Control & RX_CTRL_OWN_BMU) != 0) {
+                       /* this descriptor is not yet ready */
+                       /* This is the usual end of the loop */
+                       /* We don't need to start the ring again */
+                       FillRxRing(pAC, pRxPort);
+                       return;
+               }
+
+               /* get length of frame and check it */
+               FrameLength = Control & RX_CTRL_LEN_MASK;
+               if (FrameLength > pAC->RxBufSize) {
+                       goto rx_failed;
+               }
+
+               /* check for STF and EOF */
+               if ((Control & (RX_CTRL_STF | RX_CTRL_EOF)) !=
+                       (RX_CTRL_STF | RX_CTRL_EOF)) {
+                       goto rx_failed;
+               }
+
+               /* here we have a complete frame in the ring */
+               pMsg = pRxd->pMBuf;
+
+               FrameStat = pRxd->FrameStat;
+
+               /* check for frame length mismatch */
+#define XMR_FS_LEN_SHIFT        18
+#define GMR_FS_LEN_SHIFT        16
+               if (pAC->GIni.GIChipId == CHIP_ID_GENESIS) {
+                       if (FrameLength != (SK_U32) (FrameStat >> XMR_FS_LEN_SHIFT)) {
+                               SK_DBG_MSG(NULL, SK_DBGMOD_DRV,
+                                       SK_DBGCAT_DRV_RX_PROGRESS,
+                                       ("skge: Frame length mismatch (%u/%u).\n",
+                                       FrameLength,
+                                       (SK_U32) (FrameStat >> XMR_FS_LEN_SHIFT)));
+                               goto rx_failed;
+                       }
+               }
+               else {
+                       if (FrameLength != (SK_U32) (FrameStat >> GMR_FS_LEN_SHIFT)) {
+                               SK_DBG_MSG(NULL, SK_DBGMOD_DRV,
+                                       SK_DBGCAT_DRV_RX_PROGRESS,
+                                       ("skge: Frame length mismatch (%u/%u).\n",
+                                       FrameLength,
+                                       (SK_U32) (FrameStat >> XMR_FS_LEN_SHIFT)));
+                               goto rx_failed;
+                       }
+               }
+
+               /* Set Rx Status */
+               if (pAC->GIni.GIChipId == CHIP_ID_GENESIS) {
+                       IsBc = (FrameStat & XMR_FS_BC) != 0;
+                       IsMc = (FrameStat & XMR_FS_MC) != 0;
+                       IsBadFrame = (FrameStat &
+                               (XMR_FS_ANY_ERR | XMR_FS_2L_VLAN)) != 0;
+               } else {
+                       IsBc = (FrameStat & GMR_FS_BC) != 0;
+                       IsMc = (FrameStat & GMR_FS_MC) != 0;
+                       IsBadFrame = (((FrameStat & GMR_FS_ANY_ERR) != 0) ||
+                                                       ((FrameStat & GMR_FS_RX_OK) == 0));
+               }
+
+               SK_DBG_MSG(NULL, SK_DBGMOD_DRV, 0,
+                       ("Received frame of length %d on port %d\n",
+                       FrameLength, PortIndex));
+               SK_DBG_MSG(NULL, SK_DBGMOD_DRV, 0,
+                       ("Number of free rx descriptors: %d\n",
+                       pRxPort->RxdRingFree));
+/* DumpMsg(pMsg, "Rx");        */
+
+               if ((Control & RX_CTRL_STAT_VALID) != RX_CTRL_STAT_VALID ||
+                       (IsBadFrame)) {
+#if 0
+                       (FrameStat & (XMR_FS_ANY_ERR | XMR_FS_2L_VLAN)) != 0) {
+#endif
+                       /* there is a receive error in this frame */
+                       SK_DBG_MSG(NULL, SK_DBGMOD_DRV,
+                               SK_DBGCAT_DRV_RX_PROGRESS,
+                               ("skge: Error in received frame, dropped!\n"
+                               "Control: %x\nRxStat: %x\n",
+                               Control, FrameStat));
+
+                       PhysAddr = ((SK_U64) pRxd->VDataHigh) << (SK_U64)32;
+                       PhysAddr |= (SK_U64) pRxd->VDataLow;
+                       pci_dma_sync_single(pAC->PciDev,
+                                               (dma_addr_t) PhysAddr,
+                                               FrameLength,
+                                               PCI_DMA_FROMDEVICE);
+                       ReQueueRxBuffer(pAC, pRxPort, pMsg,
+                               pRxd->VDataHigh, pRxd->VDataLow);
+
+                       continue;
+               }
+
+               /*
+                * if short frame then copy data to reduce memory waste
+                */
+               if ((FrameLength < SK_COPY_THRESHOLD) &&
+                       ((pNewMsg = alloc_skb(FrameLength+2, GFP_ATOMIC)) != NULL)) {
+                       /*
+                        * Short frame detected and allocation successfull
+                        */
+                       /* use new skb and copy data */
+                       skb_reserve(pNewMsg, 2);
+                       skb_put(pNewMsg, FrameLength);
+                       PhysAddr = ((SK_U64) pRxd->VDataHigh) << (SK_U64)32;
+                       PhysAddr |= (SK_U64) pRxd->VDataLow;
+
+                       pci_dma_sync_single(pAC->PciDev,
+                                               (dma_addr_t) PhysAddr,
+                                               FrameLength,
+                                               PCI_DMA_FROMDEVICE);
+                       eth_copy_and_sum(pNewMsg, pMsg->data,
+                               FrameLength, 0);
+                       ReQueueRxBuffer(pAC, pRxPort, pMsg,
+                               pRxd->VDataHigh, pRxd->VDataLow);
+                       pMsg = pNewMsg;
+
+               }
+               else {
+                       /*
+                        * if large frame, or SKB allocation failed, pass
+                        * the SKB directly to the networking
+                        */
+
+                       PhysAddr = ((SK_U64) pRxd->VDataHigh) << (SK_U64)32;
+                       PhysAddr |= (SK_U64) pRxd->VDataLow;
+
+                       /* release the DMA mapping */
+                       pci_unmap_single(pAC->PciDev,
+                                        PhysAddr,
+                                        pAC->RxBufSize - 2,
+                                        PCI_DMA_FROMDEVICE);
+
+                       /* set length in message */
+                       skb_put(pMsg, FrameLength);
+                       /* hardware checksum */
+                       Type = ntohs(*((short*)&pMsg->data[12]));
+                       if (Type == 0x800) {
+                               Csum1=le16_to_cpu(pRxd->TcpSums & 0xffff);
+                               Csum2=le16_to_cpu((pRxd->TcpSums >> 16) & 0xffff);
+#if 0
+                               if ((((Csum1 & 0xfffe) && (Csum2 & 0xfffe)) &&
+                                       (pAC->GIni.GIChipId == CHIP_ID_GENESIS)) ||
+                                       (pAC->GIni.GIChipId == CHIP_ID_YUKON)) {
+                                       Result = SkCsGetReceiveInfo(pAC,
+                                               &pMsg->data[14],
+                                               Csum1, Csum2, pRxPort->PortIndex);
+                                       if (Result ==
+                                               SKCS_STATUS_IP_FRAGMENT ||
+                                               Result ==
+                                               SKCS_STATUS_IP_CSUM_OK ||
+                                               Result ==
+                                               SKCS_STATUS_TCP_CSUM_OK ||
+                                               Result ==
+                                               SKCS_STATUS_UDP_CSUM_OK) {
+                                                       pMsg->ip_summed =
+                                                       CHECKSUM_UNNECESSARY;
+                                       } else {
+                                               SK_DBG_MSG(NULL, SK_DBGMOD_DRV,
+                                               SK_DBGCAT_DRV_RX_PROGRESS,
+                                               ("skge: CRC error. Frame dropped!\n"));
+                                               goto rx_failed;
+                                       }
+                               }/* checksumControl calculation valid */
+#endif
+                       } /* IP frame */
+               } /* frame > SK_COPY_TRESHOLD */
+
+               SK_DBG_MSG(NULL, SK_DBGMOD_DRV, 1,("V"));
+               ForRlmt = SK_RLMT_RX_PROTOCOL;
+#if 0
+               IsBc = (FrameStat & XMR_FS_BC)==XMR_FS_BC;
+#endif
+               SK_RLMT_PRE_LOOKAHEAD(pAC, PortIndex, FrameLength,
+                       IsBc, &Offset, &NumBytes);
+               if (NumBytes != 0) {
+#if 0
+                       IsMc = (FrameStat & XMR_FS_MC)==XMR_FS_MC;
+#endif
+                       SK_RLMT_LOOKAHEAD(pAC, PortIndex,
+                               &pMsg->data[Offset],
+                               IsBc, IsMc, &ForRlmt);
+               }
+               if (ForRlmt == SK_RLMT_RX_PROTOCOL) {
+                                       SK_DBG_MSG(NULL, SK_DBGMOD_DRV, 1,("W"));
+                       /* send up only frames from active port */
+                       if ((PortIndex == pAC->ActivePort) ||
+                               (pAC->RlmtNets == 2)) {
+                               /* frame for upper layer */
+                               SK_DBG_MSG(NULL, SK_DBGMOD_DRV, 1,("U"));
+#ifdef xDEBUG
+                               DumpMsg(pMsg, "Rx");
+#endif
+                               SK_PNMI_CNT_RX_OCTETS_DELIVERED(pAC,
+                                       FrameLength, pRxPort->PortIndex);
+
+#if 0
+                               pMsg->dev = pAC->dev[pRxPort->PortIndex];
+                               pMsg->protocol = eth_type_trans(pMsg,
+                                       pAC->dev[pRxPort->PortIndex]);
+                               netif_rx(pMsg);
+                               pAC->dev[pRxPort->PortIndex]->last_rx = jiffies;
+#else
+                               NetReceive(pMsg->data, pMsg->len);
+                               dev_kfree_skb_any(pMsg);
+#endif
+                       }
+                       else {
+                               /* drop frame */
+                               SK_DBG_MSG(NULL, SK_DBGMOD_DRV,
+                                       SK_DBGCAT_DRV_RX_PROGRESS,
+                                       ("D"));
+                               DEV_KFREE_SKB(pMsg);
+                       }
+
+               } /* if not for rlmt */
+               else {
+                       /* packet for rlmt */
+                       SK_DBG_MSG(NULL, SK_DBGMOD_DRV,
+                               SK_DBGCAT_DRV_RX_PROGRESS, ("R"));
+                       pRlmtMbuf = SkDrvAllocRlmtMbuf(pAC,
+                               pAC->IoBase, FrameLength);
+                       if (pRlmtMbuf != NULL) {
+                               pRlmtMbuf->pNext = NULL;
+                               pRlmtMbuf->Length = FrameLength;
+                               pRlmtMbuf->PortIdx = PortIndex;
+                               EvPara.pParaPtr = pRlmtMbuf;
+                               memcpy((char*)(pRlmtMbuf->pData),
+                                          (char*)(pMsg->data),
+                                          FrameLength);
+
+                               /* SlowPathLock needed? */
+                               if (SlowPathLock == SK_TRUE) {
+                                       spin_lock_irqsave(&pAC->SlowPathLock, Flags);
+                                       SkEventQueue(pAC, SKGE_RLMT,
+                                               SK_RLMT_PACKET_RECEIVED,
+                                               EvPara);
+                                       pAC->CheckQueue = SK_TRUE;
+                                       spin_unlock_irqrestore(&pAC->SlowPathLock, Flags);
+                               } else {
+                                       SkEventQueue(pAC, SKGE_RLMT,
+                                               SK_RLMT_PACKET_RECEIVED,
+                                               EvPara);
+                                       pAC->CheckQueue = SK_TRUE;
+                               }
+
+                               SK_DBG_MSG(NULL, SK_DBGMOD_DRV,
+                                       SK_DBGCAT_DRV_RX_PROGRESS,
+                                       ("Q"));
+                       }
+#if 0
+                       if ((pAC->dev[pRxPort->PortIndex]->flags &
+                               (IFF_PROMISC | IFF_ALLMULTI)) != 0 ||
+                               (ForRlmt & SK_RLMT_RX_PROTOCOL) ==
+                               SK_RLMT_RX_PROTOCOL) {
+                               pMsg->dev = pAC->dev[pRxPort->PortIndex];
+                               pMsg->protocol = eth_type_trans(pMsg,
+                                       pAC->dev[pRxPort->PortIndex]);
+                               netif_rx(pMsg);
+                               pAC->dev[pRxPort->PortIndex]->last_rx = jiffies;
+                       }
+#else
+                       if (0) {
+                       }
+#endif
+                       else {
+                               DEV_KFREE_SKB(pMsg);
+                       }
+
+               } /* if packet for rlmt */
+       } /* for ... scanning the RXD ring */
+
+       /* RXD ring is empty -> fill and restart */
+       FillRxRing(pAC, pRxPort);
+       /* do not start if called from Close */
+       if (pAC->BoardLevel > 0) {
+               ClearAndStartRx(pAC, PortIndex);
+       }
+       return;
+
+rx_failed:
+       /* remove error frame */
+       SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ERROR,
+               ("Schrottdescriptor, length: 0x%x\n", FrameLength));
+
+       /* release the DMA mapping */
+
+       PhysAddr = ((SK_U64) pRxd->VDataHigh) << (SK_U64)32;
+       PhysAddr |= (SK_U64) pRxd->VDataLow;
+       pci_unmap_page(pAC->PciDev,
+                        PhysAddr,
+                        pAC->RxBufSize - 2,
+                        PCI_DMA_FROMDEVICE);
+       DEV_KFREE_SKB_IRQ(pRxd->pMBuf);
+       pRxd->pMBuf = NULL;
+       pRxPort->RxdRingFree++;
+       pRxPort->pRxdRingHead = pRxd->pNextRxd;
+       goto rx_start;
+
+} /* ReceiveIrq */
+
+
+/*****************************************************************************
+ *
+ *     ClearAndStartRx - give a start receive command to BMU, clear IRQ
+ *
+ * Description:
+ *     This function sends a start command and a clear interrupt
+ *     command for one receive queue to the BMU.
+ *
+ * Returns: N/A
+ *     none
+ */
+static void ClearAndStartRx(
+SK_AC  *pAC,           /* pointer to the adapter context */
+int    PortIndex)      /* index of the receive port (XMAC) */
+{
+       SK_OUT8(pAC->IoBase, RxQueueAddr[PortIndex]+RX_Q_CTRL,
+               RX_Q_CTRL_START | RX_Q_CTRL_CLR_I_EOF);
+} /* ClearAndStartRx */
+
+
+/*****************************************************************************
+ *
+ *     ClearTxIrq - give a clear transmit IRQ command to BMU
+ *
+ * Description:
+ *     This function sends a clear tx IRQ command for one
+ *     transmit queue to the BMU.
+ *
+ * Returns: N/A
+ */
+static void ClearTxIrq(
+SK_AC  *pAC,           /* pointer to the adapter context */
+int    PortIndex,      /* index of the transmit port (XMAC) */
+int    Prio)           /* priority or normal queue */
+{
+       SK_OUT8(pAC->IoBase, TxQueueAddr[PortIndex][Prio]+TX_Q_CTRL,
+               TX_Q_CTRL_CLR_I_EOF);
+} /* ClearTxIrq */
+
+
+/*****************************************************************************
+ *
+ *     ClearRxRing - remove all buffers from the receive ring
+ *
+ * Description:
+ *     This function removes all receive buffers from the ring.
+ *     The receive BMU must be stopped before calling this function.
+ *
+ * Returns: N/A
+ */
+static void ClearRxRing(
+SK_AC  *pAC,           /* pointer to adapter context */
+RX_PORT        *pRxPort)       /* pointer to rx port struct */
+{
+RXD            *pRxd;  /* pointer to the current descriptor */
+unsigned long  Flags;
+SK_U64         PhysAddr;
+
+       if (pRxPort->RxdRingFree == pAC->RxDescrPerRing) {
+               return;
+       }
+       spin_lock_irqsave(&pRxPort->RxDesRingLock, Flags);
+       pRxd = pRxPort->pRxdRingHead;
+       do {
+               if (pRxd->pMBuf != NULL) {
+
+                       PhysAddr = ((SK_U64) pRxd->VDataHigh) << (SK_U64)32;
+                       PhysAddr |= (SK_U64) pRxd->VDataLow;
+                       pci_unmap_page(pAC->PciDev,
+                                        PhysAddr,
+                                        pAC->RxBufSize - 2,
+                                        PCI_DMA_FROMDEVICE);
+                       DEV_KFREE_SKB(pRxd->pMBuf);
+                       pRxd->pMBuf = NULL;
+               }
+               pRxd->RBControl &= RX_CTRL_OWN_BMU;
+               pRxd = pRxd->pNextRxd;
+               pRxPort->RxdRingFree++;
+       } while (pRxd != pRxPort->pRxdRingTail);
+       pRxPort->pRxdRingTail = pRxPort->pRxdRingHead;
+       spin_unlock_irqrestore(&pRxPort->RxDesRingLock, Flags);
+} /* ClearRxRing */
+
+
+/*****************************************************************************
+ *
+ *     ClearTxRing - remove all buffers from the transmit ring
+ *
+ * Description:
+ *     This function removes all transmit buffers from the ring.
+ *     The transmit BMU must be stopped before calling this function
+ *     and transmitting at the upper level must be disabled.
+ *     The BMU own bit of all descriptors is cleared, the rest is
+ *     done by calling FreeTxDescriptors.
+ *
+ * Returns: N/A
+ */
+static void ClearTxRing(
+SK_AC  *pAC,           /* pointer to adapter context */
+TX_PORT        *pTxPort)       /* pointer to tx prt struct */
+{
+TXD            *pTxd;          /* pointer to the current descriptor */
+int            i;
+unsigned long  Flags;
+
+       spin_lock_irqsave(&pTxPort->TxDesRingLock, Flags);
+       pTxd = pTxPort->pTxdRingHead;
+       for (i=0; i<pAC->TxDescrPerRing; i++) {
+               pTxd->TBControl &= ~TX_CTRL_OWN_BMU;
+               pTxd = pTxd->pNextTxd;
+       }
+       FreeTxDescriptors(pAC, pTxPort);
+       spin_unlock_irqrestore(&pTxPort->TxDesRingLock, Flags);
+} /* ClearTxRing */
+
+
+#if 0
+/*****************************************************************************
+ *
+ *     SetQueueSizes - configure the sizes of rx and tx queues
+ *
+ * Description:
+ *     This function assigns the sizes for active and passive port
+ *     to the appropriate HWinit structure variables.
+ *     The passive port(s) get standard values, all remaining RAM
+ *     is given to the active port.
+ *     The queue sizes are in kbyte and must be multiple of 8.
+ *     The limits for the number of buffers filled into the rx rings
+ *     is also set in this routine.
+ *
+ * Returns:
+ *     none
+ */
+static void SetQueueSizes(
+SK_AC  *pAC)   /* pointer to the adapter context */
+{
+int    StandbyRam;     /* adapter RAM used for a standby port */
+int    RemainingRam;   /* adapter RAM available for the active port */
+int    RxRam;          /* RAM used for the active port receive queue */
+int    i;              /* loop counter */
+
+if (pAC->RlmtNets == 1) {
+       StandbyRam = SK_RLMT_STANDBY_QRXSIZE + SK_RLMT_STANDBY_QXASIZE +
+               SK_RLMT_STANDBY_QXSSIZE;
+       RemainingRam = pAC->GIni.GIRamSize -
+               (pAC->GIni.GIMacsFound-1) * StandbyRam;
+       for (i=0; i<pAC->GIni.GIMacsFound; i++) {
+               pAC->GIni.GP[i].PRxQSize = SK_RLMT_STANDBY_QRXSIZE;
+               pAC->GIni.GP[i].PXSQSize = SK_RLMT_STANDBY_QXSSIZE;
+               pAC->GIni.GP[i].PXAQSize = SK_RLMT_STANDBY_QXASIZE;
+       }
+       RxRam = (RemainingRam * 8 / 10) & ~7;
+       pAC->GIni.GP[pAC->ActivePort].PRxQSize = RxRam;
+       pAC->GIni.GP[pAC->ActivePort].PXSQSize = 0;
+       pAC->GIni.GP[pAC->ActivePort].PXAQSize =
+               (RemainingRam - RxRam) & ~7;
+       pAC->RxQueueSize = RxRam;
+       pAC->TxSQueueSize = 0;
+       pAC->TxAQueueSize = (RemainingRam - RxRam) & ~7;
+       SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ENTRY,
+               ("queue sizes settings - rx:%d  txA:%d txS:%d\n",
+               pAC->RxQueueSize,pAC->TxAQueueSize, pAC->TxSQueueSize));
+} else {
+       RemainingRam = pAC->GIni.GIRamSize/pAC->GIni.GIMacsFound;
+       RxRam = (RemainingRam * 8 / 10) & ~7;
+       for (i=0; i<pAC->GIni.GIMacsFound; i++) {
+               pAC->GIni.GP[i].PRxQSize = RxRam;
+               pAC->GIni.GP[i].PXSQSize = 0;
+               pAC->GIni.GP[i].PXAQSize = (RemainingRam - RxRam) & ~7;
+       }
+
+       pAC->RxQueueSize = RxRam;
+       pAC->TxSQueueSize = 0;
+       pAC->TxAQueueSize = (RemainingRam - RxRam) & ~7;
+}
+       for (i=0; i<SK_MAX_MACS; i++) {
+               pAC->RxPort[i].RxFillLimit = pAC->RxDescrPerRing;
+       }
+
+       if (pAC->RlmtNets == 2) {
+               for (i=0; i<pAC->GIni.GIMacsFound; i++) {
+                       pAC->RxPort[i].RxFillLimit = pAC->RxDescrPerRing - 100;
+               }
+       } else {
+               for (i=0; i<pAC->GIni.GIMacsFound; i++) {
+                       pAC->RxPort[i].RxFillLimit = pAC->RxDescrPerRing - 100;
+               }
+               /*
+                * Do not set the Limit to 0, because this could cause
+                * wrap around with ReQueue'ed buffers (a buffer could
+                * be requeued in the same position, made accessable to
+                * the hardware, and the hardware could change its
+                * contents!
+                */
+               pAC->RxPort[pAC->ActivePort].RxFillLimit = 1;
+       }
+
+#ifdef DEBUG
+       for (i=0; i<pAC->GIni.GIMacsFound; i++) {
+               SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_TX_PROGRESS,
+                       ("i: %d,  RxQSize: %d,  PXSQsize: %d, PXAQSize: %d\n",
+                       i,
+                       pAC->GIni.GP[i].PRxQSize,
+                       pAC->GIni.GP[i].PXSQSize,
+                       pAC->GIni.GP[i].PXAQSize));
+       }
+#endif
+} /* SetQueueSizes */
+
+
+/*****************************************************************************
+ *
+ *     SkGeSetMacAddr - Set the hardware MAC address
+ *
+ * Description:
+ *     This function sets the MAC address used by the adapter.
+ *
+ * Returns:
+ *     0, if everything is ok
+ *     !=0, on error
+ */
+static int SkGeSetMacAddr(struct SK_NET_DEVICE *dev, void *p)
+{
+
+DEV_NET *pNet = (DEV_NET*) dev->priv;
+SK_AC  *pAC = pNet->pAC;
+
+struct sockaddr        *addr = p;
+unsigned long  Flags;
+
+       SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ENTRY,
+               ("SkGeSetMacAddr starts now...\n"));
+       if(netif_running(dev))
+               return -EBUSY;
+
+       memcpy(dev->dev_addr, addr->sa_data,dev->addr_len);
+
+       spin_lock_irqsave(&pAC->SlowPathLock, Flags);
+
+       if (pAC->RlmtNets == 2)
+               SkAddrOverride(pAC, pAC->IoBase, pNet->NetNr,
+                       (SK_MAC_ADDR*)dev->dev_addr, SK_ADDR_VIRTUAL_ADDRESS);
+       else
+               SkAddrOverride(pAC, pAC->IoBase, pAC->ActivePort,
+                       (SK_MAC_ADDR*)dev->dev_addr, SK_ADDR_VIRTUAL_ADDRESS);
+
+
+       spin_unlock_irqrestore(&pAC->SlowPathLock, Flags);
+       return 0;
+} /* SkGeSetMacAddr */
+#endif
+
+
+/*****************************************************************************
+ *
+ *     SkGeSetRxMode - set receive mode
+ *
+ * Description:
+ *     This function sets the receive mode of an adapter. The adapter
+ *     supports promiscuous mode, allmulticast mode and a number of
+ *     multicast addresses. If more multicast addresses the available
+ *     are selected, a hash function in the hardware is used.
+ *
+ * Returns:
+ *     0, if everything is ok
+ *     !=0, on error
+ */
+#if 0
+static void SkGeSetRxMode(struct SK_NET_DEVICE *dev)
+{
+
+DEV_NET                *pNet;
+SK_AC          *pAC;
+
+struct dev_mc_list     *pMcList;
+int                    i;
+int                    PortIdx;
+unsigned long          Flags;
+
+       SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ENTRY,
+               ("SkGeSetRxMode starts now... "));
+
+       pNet = (DEV_NET*) dev->priv;
+       pAC = pNet->pAC;
+       if (pAC->RlmtNets == 1)
+               PortIdx = pAC->ActivePort;
+       else
+               PortIdx = pNet->NetNr;
+
+       spin_lock_irqsave(&pAC->SlowPathLock, Flags);
+       if (dev->flags & IFF_PROMISC) {
+               SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ENTRY,
+                       ("PROMISCUOUS mode\n"));
+               SkAddrPromiscuousChange(pAC, pAC->IoBase, PortIdx,
+                       SK_PROM_MODE_LLC);
+       } else if (dev->flags & IFF_ALLMULTI) {
+               SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ENTRY,
+                       ("ALLMULTI mode\n"));
+               SkAddrPromiscuousChange(pAC, pAC->IoBase, PortIdx,
+                       SK_PROM_MODE_ALL_MC);
+       } else {
+               SkAddrPromiscuousChange(pAC, pAC->IoBase, PortIdx,
+                       SK_PROM_MODE_NONE);
+               SkAddrMcClear(pAC, pAC->IoBase, PortIdx, 0);
+
+               SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ENTRY,
+                       ("Number of MC entries: %d ", dev->mc_count));
+
+               pMcList = dev->mc_list;
+               for (i=0; i<dev->mc_count; i++, pMcList = pMcList->next) {
+                       SkAddrMcAdd(pAC, pAC->IoBase, PortIdx,
+                               (SK_MAC_ADDR*)pMcList->dmi_addr, 0);
+                       SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_MCA,
+                               ("%02x:%02x:%02x:%02x:%02x:%02x\n",
+                               pMcList->dmi_addr[0],
+                               pMcList->dmi_addr[1],
+                               pMcList->dmi_addr[2],
+                               pMcList->dmi_addr[3],
+                               pMcList->dmi_addr[4],
+                               pMcList->dmi_addr[5]));
+               }
+               SkAddrMcUpdate(pAC, pAC->IoBase, PortIdx);
+       }
+       spin_unlock_irqrestore(&pAC->SlowPathLock, Flags);
+
+       return;
+} /* SkGeSetRxMode */
+
+
+/*****************************************************************************
+ *
+ *     SkGeChangeMtu - set the MTU to another value
+ *
+ * Description:
+ *     This function sets is called whenever the MTU size is changed
+ *     (ifconfig mtu xxx dev ethX). If the MTU is bigger than standard
+ *     ethernet MTU size, long frame support is activated.
+ *
+ * Returns:
+ *     0, if everything is ok
+ *     !=0, on error
+ */
+static int SkGeChangeMtu(struct SK_NET_DEVICE *dev, int NewMtu)
+{
+DEV_NET                *pNet;
+DEV_NET                *pOtherNet;
+SK_AC          *pAC;
+unsigned long  Flags;
+int            i;
+SK_EVPARA      EvPara;
+
+       SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ENTRY,
+               ("SkGeChangeMtu starts now...\n"));
+
+       pNet = (DEV_NET*) dev->priv;
+       pAC = pNet->pAC;
+
+       if ((NewMtu < 68) || (NewMtu > SK_JUMBO_MTU)) {
+               return -EINVAL;
+       }
+
+       if(pAC->BoardLevel != 2) {
+               return -EINVAL;
+       }
+
+       pNet->Mtu = NewMtu;
+       pOtherNet = (DEV_NET*)pAC->dev[1 - pNet->NetNr]->priv;
+       if ((pOtherNet->Mtu > 1500) && (NewMtu <= 1500) && (pOtherNet->Up==1)) {
+               return(0);
+       }
+
+       EvPara.Para32[0] = pNet->NetNr;
+       EvPara.Para32[1] = -1;
+
+       pAC->RxBufSize = NewMtu + 32;
+       dev->mtu = NewMtu;
+
+       SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ENTRY,
+               ("New MTU: %d\n", NewMtu));
+
+       /* prevent reconfiguration while changing the MTU */
+
+       /* disable interrupts */
+       SK_OUT32(pAC->IoBase, B0_IMSK, 0);
+       spin_lock_irqsave(&pAC->SlowPathLock, Flags);
+
+       /* Found more than one port */
+       if ((pAC->GIni.GIMacsFound == 2 ) &&
+               (pAC->RlmtNets == 2)) {
+                       /* Stop both ports */
+                       EvPara.Para32[0] = 0;
+                       SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_STOP, EvPara);
+                       EvPara.Para32[0] = 1;
+                       SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_STOP, EvPara);
+       } else {
+               SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_STOP, EvPara);
+       }
+
+       SkEventDispatcher(pAC, pAC->IoBase);
+
+       for (i=0; i<pAC->GIni.GIMacsFound; i++) {
+               spin_lock_irqsave(
+                       &pAC->TxPort[i][TX_PRIO_LOW].TxDesRingLock, Flags);
+               netif_stop_queue(pAC->dev[i]);
+
+       }
+
+       /*
+        * adjust number of rx buffers allocated
+        */
+       if (NewMtu > 1500) {
+               /* use less rx buffers */
+               for (i=0; i<pAC->GIni.GIMacsFound; i++) {
+                       /* Found more than one port */
+                       if ((pAC->GIni.GIMacsFound == 2 ) &&
+                               (pAC->RlmtNets == 2)) {
+                                       pAC->RxPort[i].RxFillLimit =
+                                               pAC->RxDescrPerRing - 100;
+                       } else {
+                               if (i == pAC->ActivePort)
+                                       pAC->RxPort[i].RxFillLimit =
+                                               pAC->RxDescrPerRing - 100;
+                               else
+                                       pAC->RxPort[i].RxFillLimit =
+                                               pAC->RxDescrPerRing - 10;
+                       }
+               }
+       }
+       else {
+               /* use normal amount of rx buffers */
+               for (i=0; i<pAC->GIni.GIMacsFound; i++) {
+                       /* Found more than one port */
+                       if ((pAC->GIni.GIMacsFound == 2 ) &&
+                               (pAC->RlmtNets == 2)) {
+                                       pAC->RxPort[i].RxFillLimit = 1;
+                       } else {
+                               if (i == pAC->ActivePort)
+                                       pAC->RxPort[i].RxFillLimit = 1;
+                               else
+                                       pAC->RxPort[i].RxFillLimit =
+                                               pAC->RxDescrPerRing - 100;
+                       }
+               }
+       }
+
+       SkGeDeInit(pAC, pAC->IoBase);
+
+       /*
+        * enable/disable hardware support for long frames
+        */
+       if (NewMtu > 1500) {
+/*             pAC->JumboActivated = SK_TRUE; /#* is never set back !!! */
+               pAC->GIni.GIPortUsage = SK_JUMBO_LINK;
+       }
+       else {
+               if ((pAC->GIni.GIMacsFound == 2 ) &&
+                       (pAC->RlmtNets == 2)) {
+                       pAC->GIni.GIPortUsage = SK_MUL_LINK;
+               } else {
+                       pAC->GIni.GIPortUsage = SK_RED_LINK;
+               }
+       }
+
+       SkGeInit(   pAC, pAC->IoBase, 1);
+       SkI2cInit(  pAC, pAC->IoBase, 1);
+       SkEventInit(pAC, pAC->IoBase, 1);
+       SkPnmiInit( pAC, pAC->IoBase, 1);
+       SkAddrInit( pAC, pAC->IoBase, 1);
+       SkRlmtInit( pAC, pAC->IoBase, 1);
+       SkTimerInit(pAC, pAC->IoBase, 1);
+
+       /*
+        * tschilling:
+        * Speed and others are set back to default in level 1 init!
+        */
+       GetConfiguration(pAC);
+
+       SkGeInit(   pAC, pAC->IoBase, 2);
+       SkI2cInit(  pAC, pAC->IoBase, 2);
+       SkEventInit(pAC, pAC->IoBase, 2);
+       SkPnmiInit( pAC, pAC->IoBase, 2);
+       SkAddrInit( pAC, pAC->IoBase, 2);
+       SkRlmtInit( pAC, pAC->IoBase, 2);
+       SkTimerInit(pAC, pAC->IoBase, 2);
+
+       /*
+        * clear and reinit the rx rings here
+        */
+       for (i=0; i<pAC->GIni.GIMacsFound; i++) {
+               ReceiveIrq(pAC, &pAC->RxPort[i], SK_TRUE);
+               ClearRxRing(pAC, &pAC->RxPort[i]);
+               FillRxRing(pAC, &pAC->RxPort[i]);
+
+               /* Enable transmit descriptor polling. */
+               SkGePollTxD(pAC, pAC->IoBase, i, SK_TRUE);
+               FillRxRing(pAC, &pAC->RxPort[i]);
+       };
+
+       SkGeYellowLED(pAC, pAC->IoBase, 1);
+
+#ifdef USE_INT_MOD
+       {
+               unsigned long ModBase;
+               ModBase = 53125000 / INTS_PER_SEC;
+               SK_OUT32(pAC->IoBase, B2_IRQM_INI, ModBase);
+               SK_OUT32(pAC->IoBase, B2_IRQM_MSK, IRQ_MOD_MASK);
+               SK_OUT32(pAC->IoBase, B2_IRQM_CTRL, TIM_START);
+       }
+#endif
+
+       netif_start_queue(pAC->dev[pNet->PortNr]);
+       for (i=pAC->GIni.GIMacsFound-1; i>=0; i--) {
+               spin_unlock(&pAC->TxPort[i][TX_PRIO_LOW].TxDesRingLock);
+       }
+
+       /* enable Interrupts */
+       SK_OUT32(pAC->IoBase, B0_IMSK, IRQ_MASK);
+       SK_OUT32(pAC->IoBase, B0_HWE_IMSK, IRQ_HWE_MASK);
+
+       SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_START, EvPara);
+       SkEventDispatcher(pAC, pAC->IoBase);
+
+       /* Found more than one port */
+       if ((pAC->GIni.GIMacsFound == 2 ) &&
+               (pAC->RlmtNets == 2)) {
+                       /* Start both ports */
+                       EvPara.Para32[0] = pAC->RlmtNets;
+                       EvPara.Para32[1] = -1;
+                       SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_SET_NETS,
+                               EvPara);
+
+
+                       EvPara.Para32[1] = -1;
+                       EvPara.Para32[0] = pNet->PortNr;
+                       SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_START, EvPara);
+
+                       if (pOtherNet->Up) {
+                               EvPara.Para32[0] = pOtherNet->PortNr;
+                               SkEventQueue(pAC, SKGE_RLMT,
+                                       SK_RLMT_START, EvPara);
+                       }
+       } else {
+               SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_START, EvPara);
+       }
+
+       SkEventDispatcher(pAC, pAC->IoBase);
+       spin_unlock_irqrestore(&pAC->SlowPathLock, Flags);
+
+       return 0;
+} /* SkGeChangeMtu */
+
+
+/*****************************************************************************
+ *
+ *     SkGeStats - return ethernet device statistics
+ *
+ * Description:
+ *     This function return statistic data about the ethernet device
+ *     to the operating system.
+ *
+ * Returns:
+ *     pointer to the statistic structure.
+ */
+static struct net_device_stats *SkGeStats(struct SK_NET_DEVICE *dev)
+{
+DEV_NET *pNet = (DEV_NET*) dev->priv;
+SK_AC  *pAC = pNet->pAC;
+SK_PNMI_STRUCT_DATA *pPnmiStruct;       /* structure for all Pnmi-Data */
+SK_PNMI_STAT    *pPnmiStat;             /* pointer to virtual XMAC stat. data */
+SK_PNMI_CONF    *pPnmiConf;             /* pointer to virtual link config. */
+unsigned int    Size;                   /* size of pnmi struct */
+unsigned long  Flags;                  /* for spin lock */
+
+       SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ENTRY,
+               ("SkGeStats starts now...\n"));
+       pPnmiStruct = &pAC->PnmiStruct;
+       memset(pPnmiStruct, 0, sizeof(SK_PNMI_STRUCT_DATA));
+       spin_lock_irqsave(&pAC->SlowPathLock, Flags);
+       Size = SK_PNMI_STRUCT_SIZE;
+               SkPnmiGetStruct(pAC, pAC->IoBase, pPnmiStruct, &Size, pNet->NetNr);
+       spin_unlock_irqrestore(&pAC->SlowPathLock, Flags);
+       pPnmiStat = &pPnmiStruct->Stat[0];
+       pPnmiConf = &pPnmiStruct->Conf[0];
+
+       pAC->stats.rx_packets = (SK_U32) pPnmiStruct->RxDeliveredCts & 0xFFFFFFFF;
+       pAC->stats.tx_packets = (SK_U32) pPnmiStat->StatTxOkCts & 0xFFFFFFFF;
+       pAC->stats.rx_bytes = (SK_U32) pPnmiStruct->RxOctetsDeliveredCts;
+       pAC->stats.tx_bytes = (SK_U32) pPnmiStat->StatTxOctetsOkCts;
+
+       if (pNet->Mtu <= 1500) {
+               pAC->stats.rx_errors = (SK_U32) pPnmiStruct->InErrorsCts & 0xFFFFFFFF;
+       } else {
+               pAC->stats.rx_errors = (SK_U32) ((pPnmiStruct->InErrorsCts -
+                       pPnmiStat->StatRxTooLongCts) & 0xFFFFFFFF);
+       }
+
+
+       if (pAC->GIni.GP[0].PhyType == SK_PHY_XMAC && pAC->HWRevision < 12)
+               pAC->stats.rx_errors = pAC->stats.rx_errors - pPnmiStat->StatRxShortsCts;
+
+       pAC->stats.tx_errors = (SK_U32) pPnmiStat->StatTxSingleCollisionCts & 0xFFFFFFFF;
+       pAC->stats.rx_dropped = (SK_U32) pPnmiStruct->RxNoBufCts & 0xFFFFFFFF;
+       pAC->stats.tx_dropped = (SK_U32) pPnmiStruct->TxNoBufCts & 0xFFFFFFFF;
+       pAC->stats.multicast = (SK_U32) pPnmiStat->StatRxMulticastOkCts & 0xFFFFFFFF;
+       pAC->stats.collisions = (SK_U32) pPnmiStat->StatTxSingleCollisionCts & 0xFFFFFFFF;
+
+       /* detailed rx_errors: */
+       pAC->stats.rx_length_errors = (SK_U32) pPnmiStat->StatRxRuntCts & 0xFFFFFFFF;
+       pAC->stats.rx_over_errors = (SK_U32) pPnmiStat->StatRxFifoOverflowCts & 0xFFFFFFFF;
+       pAC->stats.rx_crc_errors = (SK_U32) pPnmiStat->StatRxFcsCts & 0xFFFFFFFF;
+       pAC->stats.rx_frame_errors = (SK_U32) pPnmiStat->StatRxFramingCts & 0xFFFFFFFF;
+       pAC->stats.rx_fifo_errors = (SK_U32) pPnmiStat->StatRxFifoOverflowCts & 0xFFFFFFFF;
+       pAC->stats.rx_missed_errors = (SK_U32) pPnmiStat->StatRxMissedCts & 0xFFFFFFFF;
+
+       /* detailed tx_errors */
+       pAC->stats.tx_aborted_errors = (SK_U32) 0;
+       pAC->stats.tx_carrier_errors = (SK_U32) pPnmiStat->StatTxCarrierCts & 0xFFFFFFFF;
+       pAC->stats.tx_fifo_errors = (SK_U32) pPnmiStat->StatTxFifoUnderrunCts & 0xFFFFFFFF;
+       pAC->stats.tx_heartbeat_errors = (SK_U32) pPnmiStat->StatTxCarrierCts & 0xFFFFFFFF;
+       pAC->stats.tx_window_errors = (SK_U32) 0;
+
+       return(&pAC->stats);
+} /* SkGeStats */
+
+
+/*****************************************************************************
+ *
+ *     SkGeIoctl - IO-control function
+ *
+ * Description:
+ *     This function is called if an ioctl is issued on the device.
+ *     There are three subfunction for reading, writing and test-writing
+ *     the private MIB data structure (usefull for SysKonnect-internal tools).
+ *
+ * Returns:
+ *     0, if everything is ok
+ *     !=0, on error
+ */
+static int SkGeIoctl(struct SK_NET_DEVICE *dev, struct ifreq *rq, int cmd)
+{
+DEV_NET                *pNet;
+SK_AC          *pAC;
+
+SK_GE_IOCTL    Ioctl;
+unsigned int   Err = 0;
+int            Size;
+
+       SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ENTRY,
+               ("SkGeIoctl starts now...\n"));
+
+       pNet = (DEV_NET*) dev->priv;
+       pAC = pNet->pAC;
+
+       if(copy_from_user(&Ioctl, rq->ifr_data, sizeof(SK_GE_IOCTL))) {
+               return -EFAULT;
+       }
+
+       switch(cmd) {
+       case SK_IOCTL_SETMIB:
+       case SK_IOCTL_PRESETMIB:
+               if (!capable(CAP_NET_ADMIN)) return -EPERM;
+       case SK_IOCTL_GETMIB:
+               if(copy_from_user(&pAC->PnmiStruct, Ioctl.pData,
+                       Ioctl.Len<sizeof(pAC->PnmiStruct)?
+                       Ioctl.Len : sizeof(pAC->PnmiStruct))) {
+                       return -EFAULT;
+               }
+               Size = SkGeIocMib(pNet, Ioctl.Len, cmd);
+               if(copy_to_user(Ioctl.pData, &pAC->PnmiStruct,
+                       Ioctl.Len<Size? Ioctl.Len : Size)) {
+                       return -EFAULT;
+               }
+               Ioctl.Len = Size;
+               if(copy_to_user(rq->ifr_data, &Ioctl, sizeof(SK_GE_IOCTL))) {
+                       return -EFAULT;
+               }
+               break;
+       default:
+               Err = -EOPNOTSUPP;
+       }
+       return(Err);
+} /* SkGeIoctl */
+
+
+/*****************************************************************************
+ *
+ *     SkGeIocMib - handle a GetMib, SetMib- or PresetMib-ioctl message
+ *
+ * Description:
+ *     This function reads/writes the MIB data using PNMI (Private Network
+ *     Management Interface).
+ *     The destination for the data must be provided with the
+ *     ioctl call and is given to the driver in the form of
+ *     a user space address.
+ *     Copying from the user-provided data area into kernel messages
+ *     and back is done by copy_from_user and copy_to_user calls in
+ *     SkGeIoctl.
+ *
+ * Returns:
+ *     returned size from PNMI call
+ */
+static int SkGeIocMib(
+DEV_NET                *pNet,  /* pointer to the adapter context */
+unsigned int   Size,   /* length of ioctl data */
+int            mode)   /* flag for set/preset */
+{
+unsigned long  Flags;  /* for spin lock */
+SK_AC          *pAC;
+
+       SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ENTRY,
+               ("SkGeIocMib starts now...\n"));
+       pAC = pNet->pAC;
+       /* access MIB */
+       spin_lock_irqsave(&pAC->SlowPathLock, Flags);
+       switch(mode) {
+       case SK_IOCTL_GETMIB:
+               SkPnmiGetStruct(pAC, pAC->IoBase, &pAC->PnmiStruct, &Size,
+                       pNet->NetNr);
+               break;
+       case SK_IOCTL_PRESETMIB:
+               SkPnmiPreSetStruct(pAC, pAC->IoBase, &pAC->PnmiStruct, &Size,
+                       pNet->NetNr);
+               break;
+       case SK_IOCTL_SETMIB:
+               SkPnmiSetStruct(pAC, pAC->IoBase, &pAC->PnmiStruct, &Size,
+                       pNet->NetNr);
+               break;
+       default:
+               break;
+       }
+       spin_unlock_irqrestore(&pAC->SlowPathLock, Flags);
+       SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ENTRY,
+               ("MIB data access succeeded\n"));
+       return (Size);
+} /* SkGeIocMib */
+#endif
+
+
+/*****************************************************************************
+ *
+ *     GetConfiguration - read configuration information
+ *
+ * Description:
+ *     This function reads per-adapter configuration information from
+ *     the options provided on the command line.
+ *
+ * Returns:
+ *     none
+ */
+static void GetConfiguration(
+SK_AC  *pAC)   /* pointer to the adapter context structure */
+{
+SK_I32 Port;           /* preferred port */
+int    LinkSpeed;      /* Link speed */
+int    AutoNeg;        /* auto negotiation off (0) or on (1) */
+int    DuplexCap;      /* duplex capabilities (0=both, 1=full, 2=half */
+int    MSMode;         /* master / slave mode selection */
+SK_BOOL        AutoSet;
+SK_BOOL DupSet;
+/*
+ *     The two parameters AutoNeg. and DuplexCap. map to one configuration
+ *     parameter. The mapping is described by this table:
+ *     DuplexCap ->    |       both    |       full    |       half    |
+ *     AutoNeg         |               |               |               |
+ *     -----------------------------------------------------------------
+ *     Off             |    illegal    |       Full    |       Half    |
+ *     -----------------------------------------------------------------
+ *     On              |   AutoBoth    |   AutoFull    |   AutoHalf    |
+ *     -----------------------------------------------------------------
+ *     Sense           |   AutoSense   |   AutoSense   |   AutoSense   |
+ */
+int    Capabilities[3][3] =
+               { {               -1, SK_LMODE_FULL,     SK_LMODE_HALF},
+                 {SK_LMODE_AUTOBOTH, SK_LMODE_AUTOFULL, SK_LMODE_AUTOHALF},
+                 {SK_LMODE_AUTOSENSE, SK_LMODE_AUTOSENSE, SK_LMODE_AUTOSENSE} };
+#define DC_BOTH        0
+#define DC_FULL 1
+#define DC_HALF 2
+#define AN_OFF 0
+#define AN_ON  1
+#define AN_SENS        2
+
+       /* settings for port A */
+       /* settings link speed */
+       LinkSpeed = SK_LSPEED_AUTO;     /* default: do auto select */
+       if (Speed_A != NULL && pAC->Index<SK_MAX_CARD_PARAM &&
+               Speed_A[pAC->Index] != NULL) {
+               if (strcmp(Speed_A[pAC->Index],"")==0) {
+                       LinkSpeed = SK_LSPEED_AUTO;
+               }
+               else if (strcmp(Speed_A[pAC->Index],"Auto")==0) {
+                       LinkSpeed = SK_LSPEED_AUTO;
+               }
+               else if (strcmp(Speed_A[pAC->Index],"10")==0) {
+                       LinkSpeed = SK_LSPEED_10MBPS;
+               }
+               else if (strcmp(Speed_A[pAC->Index],"100")==0) {
+                       LinkSpeed = SK_LSPEED_100MBPS;
+               }
+               else if (strcmp(Speed_A[pAC->Index],"1000")==0) {
+                       LinkSpeed = SK_LSPEED_1000MBPS;
+               }
+               else printk("%s: Illegal value for Speed_A\n",
+                       pAC->dev[0]->name);
+       }
+
+       /* Check speed parameter */
+       /* Only copper type adapter and GE V2 cards */
+       if (((pAC->GIni.GIChipId != CHIP_ID_YUKON) ||
+               (pAC->GIni.GICopperType != SK_TRUE)) &&
+               ((LinkSpeed != SK_LSPEED_AUTO) &&
+               (LinkSpeed != SK_LSPEED_1000MBPS))) {
+               printk("%s: Illegal value for Speed_A. "
+                       "Not a copper card or GE V2 card\n    Using "
+                       "speed 1000\n", pAC->dev[0]->name);
+               LinkSpeed = SK_LSPEED_1000MBPS;
+       }
+       pAC->GIni.GP[0].PLinkSpeed = LinkSpeed;
+
+       /* Autonegotiation */
+       AutoNeg = AN_ON; /* tschilling: Default: Autonegotiation on! */
+       AutoSet = SK_FALSE;
+       if (AutoNeg_A != NULL && pAC->Index<SK_MAX_CARD_PARAM &&
+               AutoNeg_A[pAC->Index] != NULL) {
+               AutoSet = SK_TRUE;
+               if (strcmp(AutoNeg_A[pAC->Index],"")==0) {
+                       AutoSet = SK_FALSE;
+               }
+               else if (strcmp(AutoNeg_A[pAC->Index],"On")==0) {
+                       AutoNeg = AN_ON;
+               }
+               else if (strcmp(AutoNeg_A[pAC->Index],"Off")==0) {
+                       AutoNeg = AN_OFF;
+               }
+               else if (strcmp(AutoNeg_A[pAC->Index],"Sense")==0) {
+                       AutoNeg = AN_SENS;
+               }
+               else printk("%s: Illegal value for AutoNeg_A\n",
+                       pAC->dev[0]->name);
+       }
+
+       DuplexCap = DC_BOTH;
+       DupSet = SK_FALSE;
+       if (DupCap_A != NULL && pAC->Index<SK_MAX_CARD_PARAM &&
+               DupCap_A[pAC->Index] != NULL) {
+               DupSet = SK_TRUE;
+               if (strcmp(DupCap_A[pAC->Index],"")==0) {
+                       DupSet = SK_FALSE;
+               }
+               else if (strcmp(DupCap_A[pAC->Index],"Both")==0) {
+                       DuplexCap = DC_BOTH;
+               }
+               else if (strcmp(DupCap_A[pAC->Index],"Full")==0) {
+                       DuplexCap = DC_FULL;
+               }
+               else if (strcmp(DupCap_A[pAC->Index],"Half")==0) {
+                       DuplexCap = DC_HALF;
+               }
+               else printk("%s: Illegal value for DupCap_A\n",
+                       pAC->dev[0]->name);
+       }
+
+       /* check for illegal combinations */
+       if (AutoSet && AutoNeg==AN_SENS && DupSet) {
+               printk("%s, Port A: DuplexCapabilities"
+                       " ignored using Sense mode\n", pAC->dev[0]->name);
+       }
+       if (AutoSet && AutoNeg==AN_OFF && DupSet && DuplexCap==DC_BOTH){
+               printk("%s, Port A: Illegal combination"
+                       " of values AutoNeg. and DuplexCap.\n    Using "
+                       "Full Duplex\n", pAC->dev[0]->name);
+
+               DuplexCap = DC_FULL;
+       }
+       if (AutoSet && AutoNeg==AN_OFF && !DupSet) {
+               DuplexCap = DC_FULL;
+       }
+
+       if (!AutoSet && DupSet) {
+               printk("%s, Port A: Duplex setting not"
+                       " possible in\n    default AutoNegotiation mode"
+                       " (Sense).\n    Using AutoNegotiation On\n",
+                       pAC->dev[0]->name);
+               AutoNeg = AN_ON;
+       }
+
+       /* set the desired mode */
+       pAC->GIni.GP[0].PLinkModeConf =
+               Capabilities[AutoNeg][DuplexCap];
+
+       pAC->GIni.GP[0].PFlowCtrlMode = SK_FLOW_MODE_SYM_OR_REM;
+       if (FlowCtrl_A != NULL && pAC->Index<SK_MAX_CARD_PARAM &&
+               FlowCtrl_A[pAC->Index] != NULL) {
+               if (strcmp(FlowCtrl_A[pAC->Index],"") == 0) {
+               }
+               else if (strcmp(FlowCtrl_A[pAC->Index],"SymOrRem") == 0) {
+                       pAC->GIni.GP[0].PFlowCtrlMode =
+                               SK_FLOW_MODE_SYM_OR_REM;
+               }
+               else if (strcmp(FlowCtrl_A[pAC->Index],"Sym")==0) {
+                       pAC->GIni.GP[0].PFlowCtrlMode =
+                               SK_FLOW_MODE_SYMMETRIC;
+               }
+               else if (strcmp(FlowCtrl_A[pAC->Index],"LocSend")==0) {
+                       pAC->GIni.GP[0].PFlowCtrlMode =
+                               SK_FLOW_MODE_LOC_SEND;
+               }
+               else if (strcmp(FlowCtrl_A[pAC->Index],"None")==0) {
+                       pAC->GIni.GP[0].PFlowCtrlMode =
+                               SK_FLOW_MODE_NONE;
+               }
+               else printk("Illegal value for FlowCtrl_A\n");
+       }
+       if (AutoNeg==AN_OFF && pAC->GIni.GP[0].PFlowCtrlMode!=
+               SK_FLOW_MODE_NONE) {
+               printk("%s, Port A: FlowControl"
+                       " impossible without AutoNegotiation,"
+                       " disabled\n", pAC->dev[0]->name);
+               pAC->GIni.GP[0].PFlowCtrlMode = SK_FLOW_MODE_NONE;
+       }
+
+       MSMode = SK_MS_MODE_AUTO; /* default: do auto select */
+       if (Role_A != NULL && pAC->Index<SK_MAX_CARD_PARAM &&
+               Role_A[pAC->Index] != NULL) {
+               if (strcmp(Role_A[pAC->Index],"")==0) {
+               }
+               else if (strcmp(Role_A[pAC->Index],"Auto")==0) {
+                       MSMode = SK_MS_MODE_AUTO;
+               }
+               else if (strcmp(Role_A[pAC->Index],"Master")==0) {
+                       MSMode = SK_MS_MODE_MASTER;
+               }
+               else if (strcmp(Role_A[pAC->Index],"Slave")==0) {
+                       MSMode = SK_MS_MODE_SLAVE;
+               }
+               else printk("%s: Illegal value for Role_A\n",
+                       pAC->dev[0]->name);
+       }
+       pAC->GIni.GP[0].PMSMode = MSMode;
+
+
+       /* settings for port B */
+       /* settings link speed */
+       LinkSpeed = SK_LSPEED_AUTO;     /* default: do auto select */
+       if (Speed_B != NULL && pAC->Index<SK_MAX_CARD_PARAM &&
+               Speed_B[pAC->Index] != NULL) {
+               if (strcmp(Speed_B[pAC->Index],"")==0) {
+                       LinkSpeed = SK_LSPEED_AUTO;
+               }
+               else if (strcmp(Speed_B[pAC->Index],"Auto")==0) {
+                       LinkSpeed = SK_LSPEED_AUTO;
+               }
+               else if (strcmp(Speed_B[pAC->Index],"10")==0) {
+                       LinkSpeed = SK_LSPEED_10MBPS;
+               }
+               else if (strcmp(Speed_B[pAC->Index],"100")==0) {
+                       LinkSpeed = SK_LSPEED_100MBPS;
+               }
+               else if (strcmp(Speed_B[pAC->Index],"1000")==0) {
+                       LinkSpeed = SK_LSPEED_1000MBPS;
+               }
+               else printk("%s: Illegal value for Speed_B\n",
+                       pAC->dev[1]->name);
+       }
+
+       /* Check speed parameter */
+       /* Only copper type adapter and GE V2 cards */
+       if (((pAC->GIni.GIChipId != CHIP_ID_YUKON) ||
+               (pAC->GIni.GICopperType != SK_TRUE)) &&
+               ((LinkSpeed != SK_LSPEED_AUTO) &&
+               (LinkSpeed != SK_LSPEED_1000MBPS))) {
+               printk("%s: Illegal value for Speed_B. "
+                       "Not a copper card or GE V2 card\n    Using "
+                       "speed 1000\n", pAC->dev[1]->name);
+               LinkSpeed = SK_LSPEED_1000MBPS;
+       }
+       pAC->GIni.GP[1].PLinkSpeed = LinkSpeed;
+
+       /* Auto negotiation */
+       AutoNeg = AN_SENS; /* default: do auto Sense */
+       AutoSet = SK_FALSE;
+       if (AutoNeg_B != NULL && pAC->Index<SK_MAX_CARD_PARAM &&
+               AutoNeg_B[pAC->Index] != NULL) {
+               AutoSet = SK_TRUE;
+               if (strcmp(AutoNeg_B[pAC->Index],"")==0) {
+                       AutoSet = SK_FALSE;
+               }
+               else if (strcmp(AutoNeg_B[pAC->Index],"On")==0) {
+                       AutoNeg = AN_ON;
+               }
+               else if (strcmp(AutoNeg_B[pAC->Index],"Off")==0) {
+                       AutoNeg = AN_OFF;
+               }
+               else if (strcmp(AutoNeg_B[pAC->Index],"Sense")==0) {
+                       AutoNeg = AN_SENS;
+               }
+               else printk("Illegal value for AutoNeg_B\n");
+       }
+
+       DuplexCap = DC_BOTH;
+       DupSet = SK_FALSE;
+       if (DupCap_B != NULL && pAC->Index<SK_MAX_CARD_PARAM &&
+               DupCap_B[pAC->Index] != NULL) {
+               DupSet = SK_TRUE;
+               if (strcmp(DupCap_B[pAC->Index],"")==0) {
+                       DupSet = SK_FALSE;
+               }
+               else if (strcmp(DupCap_B[pAC->Index],"Both")==0) {
+                       DuplexCap = DC_BOTH;
+               }
+               else if (strcmp(DupCap_B[pAC->Index],"Full")==0) {
+                       DuplexCap = DC_FULL;
+               }
+               else if (strcmp(DupCap_B[pAC->Index],"Half")==0) {
+                       DuplexCap = DC_HALF;
+               }
+               else printk("Illegal value for DupCap_B\n");
+       }
+
+       /* check for illegal combinations */
+       if (AutoSet && AutoNeg==AN_SENS && DupSet) {
+               printk("%s, Port B: DuplexCapabilities"
+                       " ignored using Sense mode\n", pAC->dev[1]->name);
+       }
+       if (AutoSet && AutoNeg==AN_OFF && DupSet && DuplexCap==DC_BOTH){
+               printk("%s, Port B: Illegal combination"
+                       " of values AutoNeg. and DuplexCap.\n    Using "
+                       "Full Duplex\n", pAC->dev[1]->name);
+
+               DuplexCap = DC_FULL;
+       }
+       if (AutoSet && AutoNeg==AN_OFF && !DupSet) {
+               DuplexCap = DC_FULL;
+       }
+
+       if (!AutoSet && DupSet) {
+               printk("%s, Port B: Duplex setting not"
+                       " possible in\n    default AutoNegotiation mode"
+                       " (Sense).\n    Using AutoNegotiation On\n",
+                       pAC->dev[1]->name);
+               AutoNeg = AN_ON;
+       }
+
+       /* set the desired mode */
+       pAC->GIni.GP[1].PLinkModeConf =
+               Capabilities[AutoNeg][DuplexCap];
+
+       pAC->GIni.GP[1].PFlowCtrlMode = SK_FLOW_MODE_SYM_OR_REM;
+       if (FlowCtrl_B != NULL && pAC->Index<SK_MAX_CARD_PARAM &&
+               FlowCtrl_B[pAC->Index] != NULL) {
+               if (strcmp(FlowCtrl_B[pAC->Index],"") == 0) {
+               }
+               else if (strcmp(FlowCtrl_B[pAC->Index],"SymOrRem") == 0) {
+                       pAC->GIni.GP[1].PFlowCtrlMode =
+                               SK_FLOW_MODE_SYM_OR_REM;
+               }
+               else if (strcmp(FlowCtrl_B[pAC->Index],"Sym")==0) {
+                       pAC->GIni.GP[1].PFlowCtrlMode =
+                               SK_FLOW_MODE_SYMMETRIC;
+               }
+               else if (strcmp(FlowCtrl_B[pAC->Index],"LocSend")==0) {
+                       pAC->GIni.GP[1].PFlowCtrlMode =
+                               SK_FLOW_MODE_LOC_SEND;
+               }
+               else if (strcmp(FlowCtrl_B[pAC->Index],"None")==0) {
+                       pAC->GIni.GP[1].PFlowCtrlMode =
+                               SK_FLOW_MODE_NONE;
+               }
+               else printk("Illegal value for FlowCtrl_B\n");
+       }
+       if (AutoNeg==AN_OFF && pAC->GIni.GP[1].PFlowCtrlMode!=
+               SK_FLOW_MODE_NONE) {
+               printk("%s, Port B: FlowControl"
+                       " impossible without AutoNegotiation,"
+                       " disabled\n", pAC->dev[1]->name);
+               pAC->GIni.GP[1].PFlowCtrlMode = SK_FLOW_MODE_NONE;
+       }
+
+       MSMode = SK_MS_MODE_AUTO; /* default: do auto select */
+       if (Role_B != NULL && pAC->Index<SK_MAX_CARD_PARAM &&
+               Role_B[pAC->Index] != NULL) {
+               if (strcmp(Role_B[pAC->Index],"")==0) {
+               }
+               else if (strcmp(Role_B[pAC->Index],"Auto")==0) {
+                       MSMode = SK_MS_MODE_AUTO;
+               }
+               else if (strcmp(Role_B[pAC->Index],"Master")==0) {
+                       MSMode = SK_MS_MODE_MASTER;
+               }
+               else if (strcmp(Role_B[pAC->Index],"Slave")==0) {
+                       MSMode = SK_MS_MODE_SLAVE;
+               }
+               else printk("%s: Illegal value for Role_B\n",
+                       pAC->dev[1]->name);
+       }
+       pAC->GIni.GP[1].PMSMode = MSMode;
+
+
+       /* settings for both ports */
+       pAC->ActivePort = 0;
+       if (PrefPort != NULL && pAC->Index<SK_MAX_CARD_PARAM &&
+               PrefPort[pAC->Index] != NULL) {
+               if (strcmp(PrefPort[pAC->Index],"") == 0) { /* Auto */
+                       pAC->ActivePort = 0;
+                       pAC->Rlmt.Net[0].Preference = -1; /* auto */
+                       pAC->Rlmt.Net[0].PrefPort = 0;
+               }
+               else if (strcmp(PrefPort[pAC->Index],"A") == 0) {
+                       /*
+                        * do not set ActivePort here, thus a port
+                        * switch is issued after net up.
+                        */
+                       Port = 0;
+                       pAC->Rlmt.Net[0].Preference = Port;
+                       pAC->Rlmt.Net[0].PrefPort = Port;
+               }
+               else if (strcmp(PrefPort[pAC->Index],"B") == 0) {
+                       /*
+                        * do not set ActivePort here, thus a port
+                        * switch is issued after net up.
+                        */
+                       Port = 1;
+                       pAC->Rlmt.Net[0].Preference = Port;
+                       pAC->Rlmt.Net[0].PrefPort = Port;
+               }
+               else printk("%s: Illegal value for PrefPort\n",
+                       pAC->dev[0]->name);
+       }
+
+       pAC->RlmtNets = 1;
+
+       if (RlmtMode != NULL && pAC->Index<SK_MAX_CARD_PARAM &&
+               RlmtMode[pAC->Index] != NULL) {
+               if (strcmp(RlmtMode[pAC->Index], "") == 0) {
+                       pAC->RlmtMode = 0;
+               }
+               else if (strcmp(RlmtMode[pAC->Index], "CheckLinkState") == 0) {
+                       pAC->RlmtMode = SK_RLMT_CHECK_LINK;
+               }
+               else if (strcmp(RlmtMode[pAC->Index], "CheckLocalPort") == 0) {
+                       pAC->RlmtMode = SK_RLMT_CHECK_LINK |
+                               SK_RLMT_CHECK_LOC_LINK;
+               }
+               else if (strcmp(RlmtMode[pAC->Index], "CheckSeg") == 0) {
+                       pAC->RlmtMode = SK_RLMT_CHECK_LINK |
+                               SK_RLMT_CHECK_LOC_LINK |
+                               SK_RLMT_CHECK_SEG;
+               }
+               else if ((strcmp(RlmtMode[pAC->Index], "DualNet") == 0) &&
+                       (pAC->GIni.GIMacsFound == 2)) {
+                               pAC->RlmtMode = SK_RLMT_CHECK_LINK;
+                               pAC->RlmtNets = 2;
+               }
+               else {
+                       printk("%s: Illegal value for"
+                               " RlmtMode, using default\n", pAC->dev[0]->name);
+                       pAC->RlmtMode = 0;
+               }
+       }
+       else {
+               pAC->RlmtMode = 0;
+       }
+} /* GetConfiguration */
+
+
+/*****************************************************************************
+ *
+ *     ProductStr - return a adapter identification string from vpd
+ *
+ * Description:
+ *     This function reads the product name string from the vpd area
+ *     and puts it the field pAC->DeviceString.
+ *
+ * Returns: N/A
+ */
+static void ProductStr(
+SK_AC  *pAC            /* pointer to adapter context */
+)
+{
+int    StrLen = 80;            /* length of the string, defined in SK_AC */
+char   Keyword[] = VPD_NAME;   /* vpd productname identifier */
+int    ReturnCode;             /* return code from vpd_read */
+unsigned long Flags;
+
+       spin_lock_irqsave(&pAC->SlowPathLock, Flags);
+       ReturnCode = VpdRead(pAC, pAC->IoBase, Keyword, pAC->DeviceStr,
+               &StrLen);
+       spin_unlock_irqrestore(&pAC->SlowPathLock, Flags);
+       if (ReturnCode != 0) {
+               /* there was an error reading the vpd data */
+               SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ERROR,
+                       ("Error reading VPD data: %d\n", ReturnCode));
+               pAC->DeviceStr[0] = '\0';
+       }
+} /* ProductStr */
+
+
+/****************************************************************************/
+/* functions for common modules *********************************************/
+/****************************************************************************/
+
+
+/*****************************************************************************
+ *
+ *     SkDrvAllocRlmtMbuf - allocate an RLMT mbuf
+ *
+ * Description:
+ *     This routine returns an RLMT mbuf or NULL. The RLMT Mbuf structure
+ *     is embedded into a socket buff data area.
+ *
+ * Context:
+ *     runtime
+ *
+ * Returns:
+ *     NULL or pointer to Mbuf.
+ */
+SK_MBUF *SkDrvAllocRlmtMbuf(
+SK_AC          *pAC,           /* pointer to adapter context */
+SK_IOC         IoC,            /* the IO-context */
+unsigned       BufferSize)     /* size of the requested buffer */
+{
+SK_MBUF                *pRlmtMbuf;     /* pointer to a new rlmt-mbuf structure */
+struct sk_buff *pMsgBlock;     /* pointer to a new message block */
+
+       pMsgBlock = alloc_skb(BufferSize + sizeof(SK_MBUF), GFP_ATOMIC);
+       if (pMsgBlock == NULL) {
+               return (NULL);
+       }
+       pRlmtMbuf = (SK_MBUF*) pMsgBlock->data;
+       skb_reserve(pMsgBlock, sizeof(SK_MBUF));
+       pRlmtMbuf->pNext = NULL;
+       pRlmtMbuf->pOs = pMsgBlock;
+       pRlmtMbuf->pData = pMsgBlock->data;     /* Data buffer. */
+       pRlmtMbuf->Size = BufferSize;           /* Data buffer size. */
+       pRlmtMbuf->Length = 0;          /* Length of packet (<= Size). */
+       return (pRlmtMbuf);
+
+} /* SkDrvAllocRlmtMbuf */
+
+
+/*****************************************************************************
+ *
+ *     SkDrvFreeRlmtMbuf - free an RLMT mbuf
+ *
+ * Description:
+ *     This routine frees one or more RLMT mbuf(s).
+ *
+ * Context:
+ *     runtime
+ *
+ * Returns:
+ *     Nothing
+ */
+void  SkDrvFreeRlmtMbuf(
+SK_AC          *pAC,           /* pointer to adapter context */
+SK_IOC         IoC,            /* the IO-context */
+SK_MBUF                *pMbuf)         /* size of the requested buffer */
+{
+SK_MBUF                *pFreeMbuf;
+SK_MBUF                *pNextMbuf;
+
+       pFreeMbuf = pMbuf;
+       do {
+               pNextMbuf = pFreeMbuf->pNext;
+               DEV_KFREE_SKB_ANY(pFreeMbuf->pOs);
+               pFreeMbuf = pNextMbuf;
+       } while ( pFreeMbuf != NULL );
+} /* SkDrvFreeRlmtMbuf */
+
+
+/*****************************************************************************
+ *
+ *     SkOsGetTime - provide a time value
+ *
+ * Description:
+ *     This routine provides a time value. The unit is 1/HZ (defined by Linux).
+ *     It is not used for absolute time, but only for time differences.
+ *
+ *
+ * Returns:
+ *     Time value
+ */
+SK_U64 SkOsGetTime(SK_AC *pAC)
+{
+#if 0
+       return jiffies;
+#else
+       return get_timer(0);
+#endif
+} /* SkOsGetTime */
+
+
+/*****************************************************************************
+ *
+ *     SkPciReadCfgDWord - read a 32 bit value from pci config space
+ *
+ * Description:
+ *     This routine reads a 32 bit value from the pci configuration
+ *     space.
+ *
+ * Returns:
+ *     0 - indicate everything worked ok.
+ *     != 0 - error indication
+ */
+int SkPciReadCfgDWord(
+SK_AC *pAC,            /* Adapter Control structure pointer */
+int PciAddr,           /* PCI register address */
+SK_U32 *pVal)          /* pointer to store the read value */
+{
+       pci_read_config_dword(pAC->PciDev, PciAddr, pVal);
+       return(0);
+} /* SkPciReadCfgDWord */
+
+
+/*****************************************************************************
+ *
+ *     SkPciReadCfgWord - read a 16 bit value from pci config space
+ *
+ * Description:
+ *     This routine reads a 16 bit value from the pci configuration
+ *     space.
+ *
+ * Returns:
+ *     0 - indicate everything worked ok.
+ *     != 0 - error indication
+ */
+int SkPciReadCfgWord(
+SK_AC *pAC,    /* Adapter Control structure pointer */
+int PciAddr,           /* PCI register address */
+SK_U16 *pVal)          /* pointer to store the read value */
+{
+       pci_read_config_word(pAC->PciDev, PciAddr, pVal);
+       return(0);
+} /* SkPciReadCfgWord */
+
+
+/*****************************************************************************
+ *
+ *     SkPciReadCfgByte - read a 8 bit value from pci config space
+ *
+ * Description:
+ *     This routine reads a 8 bit value from the pci configuration
+ *     space.
+ *
+ * Returns:
+ *     0 - indicate everything worked ok.
+ *     != 0 - error indication
+ */
+int SkPciReadCfgByte(
+SK_AC *pAC,    /* Adapter Control structure pointer */
+int PciAddr,           /* PCI register address */
+SK_U8 *pVal)           /* pointer to store the read value */
+{
+       pci_read_config_byte(pAC->PciDev, PciAddr, pVal);
+       return(0);
+} /* SkPciReadCfgByte */
+
+
+/*****************************************************************************
+ *
+ *     SkPciWriteCfgDWord - write a 32 bit value to pci config space
+ *
+ * Description:
+ *     This routine writes a 32 bit value to the pci configuration
+ *     space.
+ *
+ * Returns:
+ *     0 - indicate everything worked ok.
+ *     != 0 - error indication
+ */
+int SkPciWriteCfgDWord(
+SK_AC *pAC,    /* Adapter Control structure pointer */
+int PciAddr,           /* PCI register address */
+SK_U32 Val)            /* pointer to store the read value */
+{
+       pci_write_config_dword(pAC->PciDev, PciAddr, Val);
+       return(0);
+} /* SkPciWriteCfgDWord */
+
+
+/*****************************************************************************
+ *
+ *     SkPciWriteCfgWord - write a 16 bit value to pci config space
+ *
+ * Description:
+ *     This routine writes a 16 bit value to the pci configuration
+ *     space. The flag PciConfigUp indicates whether the config space
+ *     is accesible or must be set up first.
+ *
+ * Returns:
+ *     0 - indicate everything worked ok.
+ *     != 0 - error indication
+ */
+int SkPciWriteCfgWord(
+SK_AC *pAC,    /* Adapter Control structure pointer */
+int PciAddr,           /* PCI register address */
+SK_U16 Val)            /* pointer to store the read value */
+{
+       pci_write_config_word(pAC->PciDev, PciAddr, Val);
+       return(0);
+} /* SkPciWriteCfgWord */
+
+
+/*****************************************************************************
+ *
+ *     SkPciWriteCfgWord - write a 8 bit value to pci config space
+ *
+ * Description:
+ *     This routine writes a 8 bit value to the pci configuration
+ *     space. The flag PciConfigUp indicates whether the config space
+ *     is accesible or must be set up first.
+ *
+ * Returns:
+ *     0 - indicate everything worked ok.
+ *     != 0 - error indication
+ */
+int SkPciWriteCfgByte(
+SK_AC *pAC,    /* Adapter Control structure pointer */
+int PciAddr,           /* PCI register address */
+SK_U8 Val)             /* pointer to store the read value */
+{
+       pci_write_config_byte(pAC->PciDev, PciAddr, Val);
+       return(0);
+} /* SkPciWriteCfgByte */
+
+
+/*****************************************************************************
+ *
+ *     SkDrvEvent - handle driver events
+ *
+ * Description:
+ *     This function handles events from all modules directed to the driver
+ *
+ * Context:
+ *     Is called under protection of slow path lock.
+ *
+ * Returns:
+ *     0 if everything ok
+ *     < 0  on error
+ *
+ */
+int SkDrvEvent(
+SK_AC *pAC,            /* pointer to adapter context */
+SK_IOC IoC,            /* io-context */
+SK_U32 Event,          /* event-id */
+SK_EVPARA Param)       /* event-parameter */
+{
+SK_MBUF                *pRlmtMbuf;     /* pointer to a rlmt-mbuf structure */
+struct sk_buff *pMsg;          /* pointer to a message block */
+int            FromPort;       /* the port from which we switch away */
+int            ToPort;         /* the port we switch to */
+SK_EVPARA      NewPara;        /* parameter for further events */
+#if 0
+int            Stat;
+#endif
+unsigned long  Flags;
+SK_BOOL                DualNet;
+
+       switch (Event) {
+       case SK_DRV_ADAP_FAIL:
+               SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_EVENT,
+                       ("ADAPTER FAIL EVENT\n"));
+               printk("%s: Adapter failed.\n", pAC->dev[0]->name);
+               /* disable interrupts */
+               SK_OUT32(pAC->IoBase, B0_IMSK, 0);
+               /* cgoos */
+               break;
+       case SK_DRV_PORT_FAIL:
+               FromPort = Param.Para32[0];
+               SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_EVENT,
+                       ("PORT FAIL EVENT, Port: %d\n", FromPort));
+               if (FromPort == 0) {
+                       printk("%s: Port A failed.\n", pAC->dev[0]->name);
+               } else {
+                       printk("%s: Port B failed.\n", pAC->dev[1]->name);
+               }
+               /* cgoos */
+               break;
+       case SK_DRV_PORT_RESET:  /* SK_U32 PortIdx */
+               /* action list 4 */
+               FromPort = Param.Para32[0];
+               SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_EVENT,
+                       ("PORT RESET EVENT, Port: %d ", FromPort));
+               NewPara.Para64 = FromPort;
+               SkPnmiEvent(pAC, IoC, SK_PNMI_EVT_XMAC_RESET, NewPara);
+               spin_lock_irqsave(
+                       &pAC->TxPort[FromPort][TX_PRIO_LOW].TxDesRingLock,
+                       Flags);
+               SkGeStopPort(pAC, IoC, FromPort, SK_STOP_ALL, SK_HARD_RST);
+#if 0
+               pAC->dev[Param.Para32[0]]->flags &= ~IFF_RUNNING;
+#endif
+               spin_unlock_irqrestore(
+                       &pAC->TxPort[FromPort][TX_PRIO_LOW].TxDesRingLock,
+                       Flags);
+
+               /* clear rx ring from received frames */
+               ReceiveIrq(pAC, &pAC->RxPort[FromPort], SK_FALSE);
+
+               ClearTxRing(pAC, &pAC->TxPort[FromPort][TX_PRIO_LOW]);
+               spin_lock_irqsave(
+                       &pAC->TxPort[FromPort][TX_PRIO_LOW].TxDesRingLock,
+                       Flags);
+
+               /* tschilling: Handling of return value inserted. */
+               if (SkGeInitPort(pAC, IoC, FromPort)) {
+                       if (FromPort == 0) {
+                               printk("%s: SkGeInitPort A failed.\n", pAC->dev[0]->name);
+                       } else {
+                               printk("%s: SkGeInitPort B failed.\n", pAC->dev[1]->name);
+                       }
+               }
+               SkAddrMcUpdate(pAC,IoC, FromPort);
+               PortReInitBmu(pAC, FromPort);
+               SkGePollTxD(pAC, IoC, FromPort, SK_TRUE);
+               ClearAndStartRx(pAC, FromPort);
+               spin_unlock_irqrestore(
+                       &pAC->TxPort[FromPort][TX_PRIO_LOW].TxDesRingLock,
+                       Flags);
+               break;
+       case SK_DRV_NET_UP:      /* SK_U32 PortIdx */
+               /* action list 5 */
+               FromPort = Param.Para32[0];
+               SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_EVENT,
+                       ("NET UP EVENT, Port: %d ", Param.Para32[0]));
+#ifdef SK98_INFO
+               printk("%s: network connection up using"
+                       " port %c\n", pAC->dev[Param.Para32[0]]->name, 'A'+Param.Para32[0]);
+
+               /* tschilling: Values changed according to LinkSpeedUsed. */
+               Stat = pAC->GIni.GP[FromPort].PLinkSpeedUsed;
+               if (Stat == SK_LSPEED_STAT_10MBPS) {
+                       printk("    speed:           10\n");
+               } else if (Stat == SK_LSPEED_STAT_100MBPS) {
+                       printk("    speed:           100\n");
+               } else if (Stat == SK_LSPEED_STAT_1000MBPS) {
+                       printk("    speed:           1000\n");
+               } else {
+                       printk("    speed:           unknown\n");
+               }
+
+               Stat = pAC->GIni.GP[FromPort].PLinkModeStatus;
+               if (Stat == SK_LMODE_STAT_AUTOHALF ||
+                       Stat == SK_LMODE_STAT_AUTOFULL) {
+                       printk("    autonegotiation: yes\n");
+               }
+               else {
+                       printk("    autonegotiation: no\n");
+               }
+               if (Stat == SK_LMODE_STAT_AUTOHALF ||
+                       Stat == SK_LMODE_STAT_HALF) {
+                       printk("    duplex mode:     half\n");
+               }
+               else {
+                       printk("    duplex mode:     full\n");
+               }
+               Stat = pAC->GIni.GP[FromPort].PFlowCtrlStatus;
+               if (Stat == SK_FLOW_STAT_REM_SEND ) {
+                       printk("    flowctrl:        remote send\n");
+               }
+               else if (Stat == SK_FLOW_STAT_LOC_SEND ){
+                       printk("    flowctrl:        local send\n");
+               }
+               else if (Stat == SK_FLOW_STAT_SYMMETRIC ){
+                       printk("    flowctrl:        symmetric\n");
+               }
+               else {
+                       printk("    flowctrl:        none\n");
+               }
+
+               /* tschilling: Check against CopperType now. */
+               if ((pAC->GIni.GICopperType == SK_TRUE) &&
+                       (pAC->GIni.GP[FromPort].PLinkSpeedUsed ==
+                       SK_LSPEED_STAT_1000MBPS)) {
+                       Stat = pAC->GIni.GP[FromPort].PMSStatus;
+                       if (Stat == SK_MS_STAT_MASTER ) {
+                               printk("    role:            master\n");
+                       }
+                       else if (Stat == SK_MS_STAT_SLAVE ) {
+                               printk("    role:            slave\n");
+                       }
+                       else {
+                               printk("    role:            ???\n");
+                       }
+               }
+
+#ifdef SK_ZEROCOPY
+               if (pAC->GIni.GIChipId == CHIP_ID_YUKON)
+                       printk("    scatter-gather:  enabled\n");
+               else
+                       printk("    scatter-gather:  disabled\n");
+
+#else
+                       printk("    scatter-gather:  disabled\n");
+#endif
+#endif /* SK98_INFO */
+
+               if ((Param.Para32[0] != pAC->ActivePort) &&
+                       (pAC->RlmtNets == 1)) {
+                       NewPara.Para32[0] = pAC->ActivePort;
+                       NewPara.Para32[1] = Param.Para32[0];
+                       SkEventQueue(pAC, SKGE_DRV, SK_DRV_SWITCH_INTERN,
+                               NewPara);
+               }
+
+               /* Inform the world that link protocol is up. */
+#if 0
+               pAC->dev[Param.Para32[0]]->flags |= IFF_RUNNING;
+#endif
+
+               break;
+       case SK_DRV_NET_DOWN:    /* SK_U32 Reason */
+               /* action list 7 */
+               SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_EVENT,
+                       ("NET DOWN EVENT "));
+#ifdef SK98_INFO
+               printk("%s: network connection down\n", pAC->dev[Param.Para32[1]]->name);
+#endif
+#if 0
+               pAC->dev[Param.Para32[1]]->flags &= ~IFF_RUNNING;
+#endif
+               break;
+       case SK_DRV_SWITCH_HARD: /* SK_U32 FromPortIdx SK_U32 ToPortIdx */
+               SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_EVENT,
+                       ("PORT SWITCH HARD "));
+       case SK_DRV_SWITCH_SOFT: /* SK_U32 FromPortIdx SK_U32 ToPortIdx */
+       /* action list 6 */
+               printk("%s: switching to port %c\n", pAC->dev[0]->name,
+                       'A'+Param.Para32[1]);
+       case SK_DRV_SWITCH_INTERN: /* SK_U32 FromPortIdx SK_U32 ToPortIdx */
+               FromPort = Param.Para32[0];
+               ToPort = Param.Para32[1];
+               SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_EVENT,
+                       ("PORT SWITCH EVENT, From: %d  To: %d (Pref %d) ",
+                       FromPort, ToPort, pAC->Rlmt.Net[0].PrefPort));
+               NewPara.Para64 = FromPort;
+               SkPnmiEvent(pAC, IoC, SK_PNMI_EVT_XMAC_RESET, NewPara);
+               NewPara.Para64 = ToPort;
+               SkPnmiEvent(pAC, IoC, SK_PNMI_EVT_XMAC_RESET, NewPara);
+               spin_lock_irqsave(
+                       &pAC->TxPort[FromPort][TX_PRIO_LOW].TxDesRingLock,
+                       Flags);
+               spin_lock_irqsave(
+                       &pAC->TxPort[ToPort][TX_PRIO_LOW].TxDesRingLock, Flags);
+               SkGeStopPort(pAC, IoC, FromPort, SK_STOP_ALL, SK_SOFT_RST);
+               SkGeStopPort(pAC, IoC, ToPort, SK_STOP_ALL, SK_SOFT_RST);
+               spin_unlock_irqrestore(
+                       &pAC->TxPort[ToPort][TX_PRIO_LOW].TxDesRingLock, Flags);
+               spin_unlock_irqrestore(
+                       &pAC->TxPort[FromPort][TX_PRIO_LOW].TxDesRingLock,
+                       Flags);
+
+               ReceiveIrq(pAC, &pAC->RxPort[FromPort], SK_FALSE); /* clears rx ring */
+               ReceiveIrq(pAC, &pAC->RxPort[ToPort], SK_FALSE); /* clears rx ring */
+
+               ClearTxRing(pAC, &pAC->TxPort[FromPort][TX_PRIO_LOW]);
+               ClearTxRing(pAC, &pAC->TxPort[ToPort][TX_PRIO_LOW]);
+               spin_lock_irqsave(
+                       &pAC->TxPort[FromPort][TX_PRIO_LOW].TxDesRingLock,
+                       Flags);
+               spin_lock_irqsave(
+                       &pAC->TxPort[ToPort][TX_PRIO_LOW].TxDesRingLock, Flags);
+               pAC->ActivePort = ToPort;
+#if 0
+               SetQueueSizes(pAC);
+#else
+               /* tschilling: New common function with minimum size check. */
+               DualNet = SK_FALSE;
+               if (pAC->RlmtNets == 2) {
+                       DualNet = SK_TRUE;
+               }
+
+               if (SkGeInitAssignRamToQueues(
+                       pAC,
+                       pAC->ActivePort,
+                       DualNet)) {
+                       spin_unlock_irqrestore(
+                               &pAC->TxPort[ToPort][TX_PRIO_LOW].TxDesRingLock, Flags);
+                       spin_unlock_irqrestore(
+                               &pAC->TxPort[FromPort][TX_PRIO_LOW].TxDesRingLock,
+                               Flags);
+                       printk("SkGeInitAssignRamToQueues failed.\n");
+                       break;
+               }
+#endif
+               /* tschilling: Handling of return values inserted. */
+               if (SkGeInitPort(pAC, IoC, FromPort) ||
+                       SkGeInitPort(pAC, IoC, ToPort)) {
+                       printk("%s: SkGeInitPort failed.\n", pAC->dev[0]->name);
+               }
+               if (Event == SK_DRV_SWITCH_SOFT) {
+                       SkMacRxTxEnable(pAC, IoC, FromPort);
+               }
+               SkMacRxTxEnable(pAC, IoC, ToPort);
+               SkAddrSwap(pAC, IoC, FromPort, ToPort);
+               SkAddrMcUpdate(pAC, IoC, FromPort);
+               SkAddrMcUpdate(pAC, IoC, ToPort);
+               PortReInitBmu(pAC, FromPort);
+               PortReInitBmu(pAC, ToPort);
+               SkGePollTxD(pAC, IoC, FromPort, SK_TRUE);
+               SkGePollTxD(pAC, IoC, ToPort, SK_TRUE);
+               ClearAndStartRx(pAC, FromPort);
+               ClearAndStartRx(pAC, ToPort);
+               spin_unlock_irqrestore(
+                       &pAC->TxPort[ToPort][TX_PRIO_LOW].TxDesRingLock, Flags);
+               spin_unlock_irqrestore(
+                       &pAC->TxPort[FromPort][TX_PRIO_LOW].TxDesRingLock,
+                       Flags);
+               break;
+       case SK_DRV_RLMT_SEND:   /* SK_MBUF *pMb */
+               SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_EVENT,
+                       ("RLS "));
+               pRlmtMbuf = (SK_MBUF*) Param.pParaPtr;
+               pMsg = (struct sk_buff*) pRlmtMbuf->pOs;
+               skb_put(pMsg, pRlmtMbuf->Length);
+               if (XmitFrame(pAC, &pAC->TxPort[pRlmtMbuf->PortIdx][TX_PRIO_LOW],
+                       pMsg) < 0)
+
+                       DEV_KFREE_SKB_ANY(pMsg);
+               break;
+       default:
+               break;
+       }
+       SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_EVENT,
+               ("END EVENT "));
+
+       return (0);
+} /* SkDrvEvent */
+
+
+/*****************************************************************************
+ *
+ *     SkErrorLog - log errors
+ *
+ * Description:
+ *     This function logs errors to the system buffer and to the console
+ *
+ * Returns:
+ *     0 if everything ok
+ *     < 0  on error
+ *
+ */
+void SkErrorLog(
+SK_AC  *pAC,
+int    ErrClass,
+int    ErrNum,
+char   *pErrorMsg)
+{
+char   ClassStr[80];
+
+       switch (ErrClass) {
+       case SK_ERRCL_OTHER:
+               strcpy(ClassStr, "Other error");
+               break;
+       case SK_ERRCL_CONFIG:
+               strcpy(ClassStr, "Configuration error");
+               break;
+       case SK_ERRCL_INIT:
+               strcpy(ClassStr, "Initialization error");
+               break;
+       case SK_ERRCL_NORES:
+               strcpy(ClassStr, "Out of resources error");
+               break;
+       case SK_ERRCL_SW:
+               strcpy(ClassStr, "internal Software error");
+               break;
+       case SK_ERRCL_HW:
+               strcpy(ClassStr, "Hardware failure");
+               break;
+       case SK_ERRCL_COMM:
+               strcpy(ClassStr, "Communication error");
+               break;
+       }
+       printk(KERN_INFO "%s: -- ERROR --\n        Class:  %s\n"
+               "        Nr:  0x%x\n        Msg:  %s\n", pAC->dev[0]->name,
+               ClassStr, ErrNum, pErrorMsg);
+
+} /* SkErrorLog */
+
+#ifdef DEBUG
+/****************************************************************************/
+/* "debug only" section *****************************************************/
+/****************************************************************************/
+
+
+/*****************************************************************************
+ *
+ *     DumpMsg - print a frame
+ *
+ * Description:
+ *     This function prints frames to the system logfile/to the console.
+ *
+ * Returns: N/A
+ *
+ */
+static void DumpMsg(struct sk_buff *skb, char *str)
+{
+       int     msglen;
+
+       if (skb == NULL) {
+               printk("DumpMsg(): NULL-Message\n");
+               return;
+       }
+
+       if (skb->data == NULL) {
+               printk("DumpMsg(): Message empty\n");
+               return;
+       }
+
+       msglen = skb->len;
+       if (msglen > 64)
+               msglen = 64;
+
+       printk("--- Begin of message from %s , len %d (from %d) ----\n", str, msglen, skb->len);
+
+       DumpData((char *)skb->data, msglen);
+
+       printk("------- End of message ---------\n");
+} /* DumpMsg */
+
+
+/*****************************************************************************
+ *
+ *     DumpData - print a data area
+ *
+ * Description:
+ *     This function prints a area of data to the system logfile/to the
+ *     console.
+ *
+ * Returns: N/A
+ *
+ */
+static void DumpData(char *p, int size)
+{
+register int    i;
+int    haddr, addr;
+char   hex_buffer[180];
+char   asc_buffer[180];
+char   HEXCHAR[] = "0123456789ABCDEF";
+
+       addr = 0;
+       haddr = 0;
+       hex_buffer[0] = 0;
+       asc_buffer[0] = 0;
+       for (i=0; i < size; ) {
+               if (*p >= '0' && *p <='z')
+                       asc_buffer[addr] = *p;
+               else
+                       asc_buffer[addr] = '.';
+               addr++;
+               asc_buffer[addr] = 0;
+               hex_buffer[haddr] = HEXCHAR[(*p & 0xf0) >> 4];
+               haddr++;
+               hex_buffer[haddr] = HEXCHAR[*p & 0x0f];
+               haddr++;
+               hex_buffer[haddr] = ' ';
+               haddr++;
+               hex_buffer[haddr] = 0;
+               p++;
+               i++;
+               if (i%16 == 0) {
+                       printk("%s  %s\n", hex_buffer, asc_buffer);
+                       addr = 0;
+                       haddr = 0;
+               }
+       }
+} /* DumpData */
+
+
+/*****************************************************************************
+ *
+ *     DumpLong - print a data area as long values
+ *
+ * Description:
+ *     This function prints a area of data to the system logfile/to the
+ *     console.
+ *
+ * Returns: N/A
+ *
+ */
+static void DumpLong(char *pc, int size)
+{
+register int    i;
+int    haddr, addr;
+char   hex_buffer[180];
+char   asc_buffer[180];
+char   HEXCHAR[] = "0123456789ABCDEF";
+long   *p;
+int    l;
+
+       addr = 0;
+       haddr = 0;
+       hex_buffer[0] = 0;
+       asc_buffer[0] = 0;
+       p = (long*) pc;
+       for (i=0; i < size; ) {
+               l = (long) *p;
+               hex_buffer[haddr] = HEXCHAR[(l >> 28) & 0xf];
+               haddr++;
+               hex_buffer[haddr] = HEXCHAR[(l >> 24) & 0xf];
+               haddr++;
+               hex_buffer[haddr] = HEXCHAR[(l >> 20) & 0xf];
+               haddr++;
+               hex_buffer[haddr] = HEXCHAR[(l >> 16) & 0xf];
+               haddr++;
+               hex_buffer[haddr] = HEXCHAR[(l >> 12) & 0xf];
+               haddr++;
+               hex_buffer[haddr] = HEXCHAR[(l >> 8) & 0xf];
+               haddr++;
+               hex_buffer[haddr] = HEXCHAR[(l >> 4) & 0xf];
+               haddr++;
+               hex_buffer[haddr] = HEXCHAR[l & 0x0f];
+               haddr++;
+               hex_buffer[haddr] = ' ';
+               haddr++;
+               hex_buffer[haddr] = 0;
+               p++;
+               i++;
+               if (i%8 == 0) {
+                       printk("%4x %s\n", (i-8)*4, hex_buffer);
+                       haddr = 0;
+               }
+       }
+       printk("------------------------\n");
+} /* DumpLong */
+
+#endif
diff -Naur u-boot-2009.03_orig/drivers/net/sk98lin/skgehwt.c u-boot-2009.03/drivers/net/sk98lin/skgehwt.c
--- u-boot-2009.03_orig/drivers/net/sk98lin/skgehwt.c   2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/drivers/net/sk98lin/skgehwt.c        2009-03-31 14:54:29.393756000 -0700
@@ -1,215 +1,218 @@
-/******************************************************************************
- *
- * Name:       skgehwt.c
- * Project:    GEnesis, PCI Gigabit Ethernet Adapter
- * Version:    $Revision: 1.13 $
- * Date:       $Date: 1999/11/22 13:31:12 $
- * Purpose:    Hardware Timer.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- *     (C)Copyright 1998,1999 SysKonnect,
- *     a business unit of Schneider & Koch & Co. Datensysteme GmbH.
- *
- *     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.
- *
- *     The information in this file is provided "AS IS" without warranty.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * History:
- *
- *     $Log: skgehwt.c,v $
- *     Revision 1.13  1999/11/22 13:31:12  cgoos
- *     Changed license header to GPL.
- *
- *     Revision 1.12  1998/10/15 15:11:34  gklug
- *     fix: ID_sccs to SysKonnectFileId
- *
- *     Revision 1.11  1998/10/08 15:27:51  gklug
- *     chg: correction factor is host clock dependent
- *
- *     Revision 1.10  1998/09/15 14:18:31  cgoos
- *     Changed more BOOLEANs to SK_xxx
- *
- *     Revision 1.9  1998/09/15 14:16:06  cgoos
- *     Changed line 107: FALSE to SK_FALSE
- *
- *     Revision 1.8  1998/08/24 13:04:44  gklug
- *     fix: typo
- *
- *     Revision 1.7  1998/08/19 09:50:49  gklug
- *     fix: remove struct keyword from c-code (see CCC) add typedefs
- *
- *     Revision 1.6  1998/08/17 09:59:02  gklug
- *     fix: typos
- *
- *     Revision 1.5  1998/08/14 07:09:10  gklug
- *     fix: chg pAc -> pAC
- *
- *     Revision 1.4  1998/08/10 14:14:52  gklug
- *     rmv: unneccessary SK_ADDR macro
- *
- *     Revision 1.3  1998/08/07 12:53:44  gklug
- *     fix: first compiled version
- *
- *     Revision 1.2  1998/08/07 09:19:29  gklug
- *     adapt functions to the C coding conventions
- *     rmv unneccessary functions.
- *
- *     Revision 1.1  1998/08/05 11:28:36  gklug
- *     first version: adapted from SMT/FDDI
- *
- *
- *
- *
- ******************************************************************************/
-
-
-#include <config.h>
-
-/*
-       Event queue and dispatcher
-*/
-static const char SysKonnectFileId[] =
-       "$Header: /usr56/projects/ge/schedule/skgehwt.c,v 1.13 1999/11/22 13:31:12 cgoos Exp $" ;
-
-#include "h/skdrv1st.h"                /* Driver Specific Definitions */
-#include "h/skdrv2nd.h"                /* Adapter Control- and Driver specific Def. */
-
-#ifdef __C2MAN__
-/*
-       Hardware Timer function queue management.
-
-       General Description:
-
- */
-intro()
-{}
-#endif
-
-/*
- * Prototypes of local functions.
- */
-#define        SK_HWT_MAX      (65000)
-
-/* correction factor */
-#define        SK_HWT_FAC      (1000 * (SK_U32)pAC->GIni.GIHstClkFact / 100)
-
-/*
- * Initialize hardware timer.
- *
- * Must be called during init level 1.
- */
-void   SkHwtInit(
-SK_AC  *pAC,   /* Adapters context */
-SK_IOC Ioc)    /* IoContext */
-{
-       pAC->Hwt.TStart = 0 ;
-       pAC->Hwt.TStop  = 0 ;
-       pAC->Hwt.TActive = SK_FALSE ;
-
-       SkHwtStop(pAC,Ioc) ;
-}
-
-/*
- *
- * Start hardware timer (clock ticks are 16us).
- *
- */
-void   SkHwtStart(
-SK_AC  *pAC,   /* Adapters context */
-SK_IOC Ioc,    /* IoContext */
-SK_U32 Time)   /* Time in units of 16us to load the timer with. */
-{
-       SK_U32  Cnt ;
-
-       if (Time > SK_HWT_MAX)
-               Time = SK_HWT_MAX ;
-
-       pAC->Hwt.TStart = Time ;
-       pAC->Hwt.TStop = 0L ;
-
-       Cnt = Time ;
-
-       /*
-        * if time < 16 us
-        *      time = 16 us
-        */
-       if (!Cnt) {
-               Cnt++ ;
-       }
-
-       SK_OUT32(Ioc, B2_TI_INI, Cnt * SK_HWT_FAC) ;
-       SK_OUT16(Ioc, B2_TI_CRTL, TIM_START) ;  /* Start timer. */
-
-       pAC->Hwt.TActive = SK_TRUE ;
-}
-
-/*
- * Stop hardware timer.
- * and clear the timer IRQ
- */
-void   SkHwtStop(
-SK_AC  *pAC,   /* Adapters context */
-SK_IOC Ioc)    /* IoContext */
-{
-       SK_OUT16(Ioc, B2_TI_CRTL, TIM_STOP) ;
-       SK_OUT16(Ioc, B2_TI_CRTL, TIM_CLR_IRQ) ;
-
-       pAC->Hwt.TActive = SK_FALSE ;
-}
-
-
-/*
- *     Stop hardware timer and read time elapsed since last start.
- *
- * returns
- *     The elapsed time since last start in units of 16us.
- *
- */
-SK_U32 SkHwtRead(
-SK_AC  *pAC,   /* Adapters context */
-SK_IOC Ioc)    /* IoContext */
-{
-       SK_U32  TRead ;
-       SK_U32  IStatus ;
-
-       if (pAC->Hwt.TActive) {
-               SkHwtStop(pAC,Ioc) ;
-
-               SK_IN32(Ioc, B2_TI_VAL, &TRead);
-               TRead /= SK_HWT_FAC;
-
-               SK_IN32(Ioc, B0_ISRC, &IStatus);
-
-               /* Check if timer expired (or wraparound). */
-               if ((TRead > pAC->Hwt.TStart) || (IStatus & IS_TIMINT)) {
-                       SkHwtStop(pAC,Ioc) ;
-                       pAC->Hwt.TStop = pAC->Hwt.TStart ;
-               } else {
-                       pAC->Hwt.TStop = pAC->Hwt.TStart - TRead ;
-               }
-       }
-       return (pAC->Hwt.TStop) ;
-}
-
-/*
- * interrupt source= timer
- */
-void   SkHwtIsr(
-SK_AC  *pAC,   /* Adapters context */
-SK_IOC Ioc)    /* IoContext */
-{
-       SkHwtStop(pAC,Ioc);
-       pAC->Hwt.TStop = pAC->Hwt.TStart;
-       SkTimerDone(pAC,Ioc) ;
-}
-/* End of file */
+/******************************************************************************
+ *
+ * Name:       skgehwt.c
+ * Project:    GEnesis, PCI Gigabit Ethernet Adapter
+ * Version:    $Revision: 1.1.1.1 $
+ * Date:       $Date: 2009/03/25 22:22:09 $
+ * Purpose:    Hardware Timer.
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ *     (C)Copyright 1998,1999 SysKonnect,
+ *     a business unit of Schneider & Koch & Co. Datensysteme GmbH.
+ *
+ *     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.
+ *
+ *     The information in this file is provided "AS IS" without warranty.
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ * History:
+ *
+ *     $Log: skgehwt.c,v $
+ *     Revision 1.1.1.1  2009/03/25 22:22:09  kenagy
+ *     no message
+ *     
+ *     Revision 1.13  1999/11/22 13:31:12  cgoos
+ *     Changed license header to GPL.
+ *
+ *     Revision 1.12  1998/10/15 15:11:34  gklug
+ *     fix: ID_sccs to SysKonnectFileId
+ *
+ *     Revision 1.11  1998/10/08 15:27:51  gklug
+ *     chg: correction factor is host clock dependent
+ *
+ *     Revision 1.10  1998/09/15 14:18:31  cgoos
+ *     Changed more BOOLEANs to SK_xxx
+ *
+ *     Revision 1.9  1998/09/15 14:16:06  cgoos
+ *     Changed line 107: FALSE to SK_FALSE
+ *
+ *     Revision 1.8  1998/08/24 13:04:44  gklug
+ *     fix: typo
+ *
+ *     Revision 1.7  1998/08/19 09:50:49  gklug
+ *     fix: remove struct keyword from c-code (see CCC) add typedefs
+ *
+ *     Revision 1.6  1998/08/17 09:59:02  gklug
+ *     fix: typos
+ *
+ *     Revision 1.5  1998/08/14 07:09:10  gklug
+ *     fix: chg pAc -> pAC
+ *
+ *     Revision 1.4  1998/08/10 14:14:52  gklug
+ *     rmv: unneccessary SK_ADDR macro
+ *
+ *     Revision 1.3  1998/08/07 12:53:44  gklug
+ *     fix: first compiled version
+ *
+ *     Revision 1.2  1998/08/07 09:19:29  gklug
+ *     adapt functions to the C coding conventions
+ *     rmv unneccessary functions.
+ *
+ *     Revision 1.1  1998/08/05 11:28:36  gklug
+ *     first version: adapted from SMT/FDDI
+ *
+ *
+ *
+ *
+ ******************************************************************************/
+
+
+#include <config.h>
+
+/*
+       Event queue and dispatcher
+*/
+static const char SysKonnectFileId[] =
+       "$Header: C:\qaz\__CVS_ROOT/units/or1200_soc/sw/u-boot-2009.03/drivers/net/sk98lin/skgehwt.c,v 1.1.1.1 2009/03/25 22:22:09 kenagy Exp $" ;
+
+#include "h/skdrv1st.h"                /* Driver Specific Definitions */
+#include "h/skdrv2nd.h"                /* Adapter Control- and Driver specific Def. */
+
+#ifdef __C2MAN__
+/*
+       Hardware Timer function queue management.
+
+       General Description:
+
+ */
+intro()
+{}
+#endif
+
+/*
+ * Prototypes of local functions.
+ */
+#define        SK_HWT_MAX      (65000)
+
+/* correction factor */
+#define        SK_HWT_FAC      (1000 * (SK_U32)pAC->GIni.GIHstClkFact / 100)
+
+/*
+ * Initialize hardware timer.
+ *
+ * Must be called during init level 1.
+ */
+void   SkHwtInit(
+SK_AC  *pAC,   /* Adapters context */
+SK_IOC Ioc)    /* IoContext */
+{
+       pAC->Hwt.TStart = 0 ;
+       pAC->Hwt.TStop  = 0 ;
+       pAC->Hwt.TActive = SK_FALSE ;
+
+       SkHwtStop(pAC,Ioc) ;
+}
+
+/*
+ *
+ * Start hardware timer (clock ticks are 16us).
+ *
+ */
+void   SkHwtStart(
+SK_AC  *pAC,   /* Adapters context */
+SK_IOC Ioc,    /* IoContext */
+SK_U32 Time)   /* Time in units of 16us to load the timer with. */
+{
+       SK_U32  Cnt ;
+
+       if (Time > SK_HWT_MAX)
+               Time = SK_HWT_MAX ;
+
+       pAC->Hwt.TStart = Time ;
+       pAC->Hwt.TStop = 0L ;
+
+       Cnt = Time ;
+
+       /*
+        * if time < 16 us
+        *      time = 16 us
+        */
+       if (!Cnt) {
+               Cnt++ ;
+       }
+
+       SK_OUT32(Ioc, B2_TI_INI, Cnt * SK_HWT_FAC) ;
+       SK_OUT16(Ioc, B2_TI_CRTL, TIM_START) ;  /* Start timer. */
+
+       pAC->Hwt.TActive = SK_TRUE ;
+}
+
+/*
+ * Stop hardware timer.
+ * and clear the timer IRQ
+ */
+void   SkHwtStop(
+SK_AC  *pAC,   /* Adapters context */
+SK_IOC Ioc)    /* IoContext */
+{
+       SK_OUT16(Ioc, B2_TI_CRTL, TIM_STOP) ;
+       SK_OUT16(Ioc, B2_TI_CRTL, TIM_CLR_IRQ) ;
+
+       pAC->Hwt.TActive = SK_FALSE ;
+}
+
+
+/*
+ *     Stop hardware timer and read time elapsed since last start.
+ *
+ * returns
+ *     The elapsed time since last start in units of 16us.
+ *
+ */
+SK_U32 SkHwtRead(
+SK_AC  *pAC,   /* Adapters context */
+SK_IOC Ioc)    /* IoContext */
+{
+       SK_U32  TRead ;
+       SK_U32  IStatus ;
+
+       if (pAC->Hwt.TActive) {
+               SkHwtStop(pAC,Ioc) ;
+
+               SK_IN32(Ioc, B2_TI_VAL, &TRead);
+               TRead /= SK_HWT_FAC;
+
+               SK_IN32(Ioc, B0_ISRC, &IStatus);
+
+               /* Check if timer expired (or wraparound). */
+               if ((TRead > pAC->Hwt.TStart) || (IStatus & IS_TIMINT)) {
+                       SkHwtStop(pAC,Ioc) ;
+                       pAC->Hwt.TStop = pAC->Hwt.TStart ;
+               } else {
+                       pAC->Hwt.TStop = pAC->Hwt.TStart - TRead ;
+               }
+       }
+       return (pAC->Hwt.TStop) ;
+}
+
+/*
+ * interrupt source= timer
+ */
+void   SkHwtIsr(
+SK_AC  *pAC,   /* Adapters context */
+SK_IOC Ioc)    /* IoContext */
+{
+       SkHwtStop(pAC,Ioc);
+       pAC->Hwt.TStop = pAC->Hwt.TStart;
+       SkTimerDone(pAC,Ioc) ;
+}
+/* End of file */
diff -Naur u-boot-2009.03_orig/drivers/net/sk98lin/skgeinit.c u-boot-2009.03/drivers/net/sk98lin/skgeinit.c
--- u-boot-2009.03_orig/drivers/net/sk98lin/skgeinit.c  2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/drivers/net/sk98lin/skgeinit.c       2009-03-31 14:54:29.440630400 -0700
@@ -1,2367 +1,2370 @@
-/******************************************************************************
- *
- * Name:       skgeinit.c
- * Project:    GEnesis, PCI Gigabit Ethernet Adapter
- * Version:    $Revision: 1.85 $
- * Date:       $Date: 2003/02/05 15:30:33 $
- * Purpose:    Contains functions to initialize the GE HW
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- *     (C)Copyright 1998-2003 SysKonnect GmbH.
- *
- *     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.
- *
- *     The information in this file is provided "AS IS" without warranty.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * History:
- *
- *     $Log: skgeinit.c,v $
- *     Revision 1.85  2003/02/05 15:30:33  rschmidt
- *     Corrected setting of GIHstClkFact (Host Clock Factor) and
- *     GIPollTimerVal (Descr. Poll Timer Init Value) for YUKON.
- *     Editorial changes.
- *
- *     Revision 1.84  2003/01/28 09:57:25  rschmidt
- *     Added detection of YUKON-Lite Rev. A0 (stored in GIYukonLite).
- *     Disabled Rx GMAC FIFO Flush for YUKON-Lite Rev. A0.
- *     Added support for CLK_RUN (YUKON-Lite).
- *     Added additional check of PME from D3cold for setting GIVauxAvail.
- *     Editorial changes.
- *
- *     Revision 1.83  2002/12/17 16:15:41  rschmidt
- *     Added default setting of PhyType (Copper) for YUKON.
- *     Added define around check for HW self test results.
- *     Editorial changes.
- *
- *     Revision 1.82  2002/12/05 13:40:21  rschmidt
- *     Added setting of Rx GMAC FIFO Flush Mask register.
- *     Corrected PhyType with new define SK_PHY_MARV_FIBER when
- *     YUKON Fiber board was found.
- *     Editorial changes.
- *
- *     Revision 1.81  2002/11/15 12:48:35  rschmidt
- *     Replaced message SKERR_HWI_E018 with SKERR_HWI_E024 for Rx queue error
- *     in SkGeStopPort().
- *     Added init for pAC->GIni.GIGenesis with SK_FALSE in YUKON-branch.
- *     Editorial changes.
- *
- *     Revision 1.80  2002/11/12 17:28:30  rschmidt
- *     Initialized GIPciSlot64 and GIPciClock66 in SkGeInit1().
- *     Reduced PCI FIFO watermarks for 32bit/33MHz bus in SkGeInitBmu().
- *     Editorial changes.
- *
- *     Revision 1.79  2002/10/21 09:31:02  mkarl
- *     Changed SkGeInitAssignRamToQueues(), removed call to
- *     SkGeInitAssignRamToQueues in SkGeInit1 and fixed compiler warning in
- *     SkGeInit1.
- *
- *     Revision 1.78  2002/10/16 15:55:07  mkarl
- *     Fixed a bug in SkGeInitAssignRamToQueues.
- *
- *     Revision 1.77  2002/10/14 15:07:22  rschmidt
- *     Corrected timeout handling for Rx queue in SkGeStopPort() (#10748)
- *     Editorial changes.
- *
- *     Revision 1.76  2002/10/11 09:24:38  mkarl
- *     Added check for HW self test results.
- *
- *     Revision 1.75  2002/10/09 16:56:44  mkarl
- *     Now call SkGeInitAssignRamToQueues() in Init Level 1 in order to assign
- *     the adapter memory to the queues. This default assignment is not suitable
- *     for dual net mode.
- *
- *     Revision 1.74  2002/09/12 08:45:06  rwahl
- *     Set defaults for PMSCap, PLinkSpeed & PLinkSpeedCap dependent on PHY.
- *
- *     Revision 1.73  2002/08/16 15:19:45  rschmidt
- *     Corrected check for Tx queues in SkGeCheckQSize().
- *     Added init for new entry GIGenesis and GICopperType
- *     Replaced all if(GIChipId == CHIP_ID_GENESIS) with new entry GIGenesis.
- *     Replaced wrong 1st para pAC with IoC in SK_IN/OUT macros.
- *
- *     Revision 1.72  2002/08/12 13:38:55  rschmidt
- *     Added check if VAUX is available (stored in GIVauxAvail)
- *     Initialized PLinkSpeedCap in Port struct with SK_LSPEED_CAP_1000MBPS
- *     Editorial changes.
- *
- *     Revision 1.71  2002/08/08 16:32:58  rschmidt
- *     Added check for Tx queues in SkGeCheckQSize().
- *     Added start of Time Stamp Timer (YUKON) in SkGeInit2().
- *     Editorial changes.
- *
- *     Revision 1.70  2002/07/23 16:04:26  rschmidt
- *     Added init for GIWolOffs (HW-Bug in YUKON 1st rev.)
- *     Minor changes
- *
- *     Revision 1.69  2002/07/17 17:07:08  rwahl
- *     - SkGeInit1(): fixed PHY type debug output; corrected init of GIFunc
- *       table & GIMacType.
- *     - Editorial changes.
- *
- *     Revision 1.68  2002/07/15 18:38:31  rwahl
- *     Added initialization for MAC type dependent function table.
- *
- *     Revision 1.67  2002/07/15 15:45:39  rschmidt
- *     Added Tx Store & Forward for YUKON (GMAC Tx FIFO is only 1 kB)
- *     Replaced SK_PHY_MARV by SK_PHY_MARV_COPPER
- *     Editorial changes
- *
- *     Revision 1.66  2002/06/10 09:35:08  rschmidt
- *     Replaced C++ comments (//)
- *     Editorial changes
- *
- *     Revision 1.65  2002/06/05 08:33:37  rschmidt
- *     Changed GIRamSize and Reset sequence for YUKON.
- *     SkMacInit() replaced by SkXmInitMac() resp. SkGmInitMac()
- *
- *     Revision 1.64  2002/04/25 13:03:20  rschmidt
- *     Changes for handling YUKON.
- *     Removed reference to xmac_ii.h (not necessary).
- *     Moved all defines into header file.
- *     Replaced all SkXm...() functions with SkMac...() to handle also
- *     YUKON's GMAC.
- *     Added handling for GMAC FIFO in SkGeInitMacFifo(), SkGeStopPort().
- *     Removed 'goto'-directive from SkGeCfgSync(), SkGeCheckQSize().
- *     Replaced all XMAC-access macros by functions: SkMacRxTxDisable(),
- *     SkMacFlushTxFifo().
- *     Optimized timeout handling in SkGeStopPort().
- *     Initialized PLinkSpeed in Port struct with SK_LSPEED_AUTO.
- *     Release of GMAC Link Control reset in SkGeInit1().
- *     Initialized GIChipId and GIChipRev in GE Init structure.
- *     Added GIRamSize and PhyType values for YUKON.
- *     Removed use of PRxCmd to setup XMAC.
- *     Moved setting of XM_RX_DIS_CEXT to SkXmInitMac().
- *     Use of SkGeXmitLED() only for GENESIS.
- *     Changes for V-CPU support.
- *     Editorial changes.
- *
- *     Revision 1.63  2001/04/05 11:02:09  rassmann
- *     Stop Port check of the STOP bit did not take 2/18 sec as wanted.
- *
- *     Revision 1.62  2001/02/07 07:54:21  rassmann
- *     Corrected copyright.
- *
- *     Revision 1.61  2001/01/31 15:31:40  gklug
- *     fix: problem with autosensing an SR8800 switch
- *
- *     Revision 1.60  2000/10/18 12:22:21  cgoos
- *     Added workaround for half duplex hangup.
- *
- *     Revision 1.59  2000/10/10 11:22:06  gklug
- *     add: in manual half duplex mode ignore carrier extension errors
- *
- *     Revision 1.58  2000/10/02 14:10:27  rassmann
- *     Reading BCOM PHY after releasing reset until it returns a valid value.
- *
- *     Revision 1.57  2000/08/03 14:55:28  rassmann
- *     Waiting for I2C to be ready before de-initializing adapter
- *     (prevents sensors from hanging up).
- *
- *     Revision 1.56  2000/07/27 12:16:48  gklug
- *     fix: Stop Port check of the STOP bit does now take 2/18 sec as wanted
- *
- *     Revision 1.55  1999/11/22 13:32:26  cgoos
- *     Changed license header to GPL.
- *
- *     Revision 1.54  1999/10/26 07:32:54  malthoff
- *     Initialize PHWLinkUp with SK_FALSE. Required for Diagnostics.
- *
- *     Revision 1.53  1999/08/12 19:13:50  malthoff
- *     Fix for 1000BT. Do not owerwrite XM_MMU_CMD when
- *     disabling receiver and transmitter. Other bits
- *     may be lost.
- *
- *     Revision 1.52  1999/07/01 09:29:54  gklug
- *     fix: DoInitRamQueue needs pAC
- *
- *     Revision 1.51  1999/07/01 08:42:21  gklug
- *     chg: use Store & forward for RAM buffer when Jumbos are used
- *
- *     Revision 1.50  1999/05/27 13:19:38  cgoos
- *     Added Tx PCI watermark initialization.
- *     Removed Tx RAM queue Store & Forward setting.
- *
- *     Revision 1.49  1999/05/20 14:32:45  malthoff
- *     SkGeLinkLED() is completly removed now.
- *
- *     Revision 1.48  1999/05/19 07:28:24  cgoos
- *     SkGeLinkLED no more available for drivers.
- *     Changes for 1000Base-T.
- *
- *     Revision 1.47  1999/04/08 13:57:45  gklug
- *     add: Init of new port struct fiels PLinkResCt
- *     chg: StopPort Timer check
- *
- *     Revision 1.46  1999/03/25 07:42:15  malthoff
- *     SkGeStopPort(): Add workaround for cache incoherency.
- *                     Create error log entry, disable port, and
- *                     exit loop if it does not terminate.
- *     Add XM_RX_LENERR_OK to the default value for the
- *     XMAC receive command register.
- *
- *     Revision 1.45  1999/03/12 16:24:47  malthoff
- *     Remove PPollRxD and PPollTxD.
- *     Add check for GIPollTimerVal.
- *
- *     Revision 1.44  1999/03/12 13:40:23  malthoff
- *     Fix: SkGeXmitLED(), SK_LED_TST mode does not work.
- *     Add: Jumbo frame support.
- *     Chg: Resolution of parameter IntTime in SkGeCfgSync().
- *
- *     Revision 1.43  1999/02/09 10:29:46  malthoff
- *     Bugfix: The previous modification again also for the second location.
- *
- *     Revision 1.42  1999/02/09 09:35:16  malthoff
- *     Bugfix: The bits '66 MHz Capable' and 'NEWCAP are reset while
- *             clearing the error bits in the PCI status register.
- *
- *     Revision 1.41  1999/01/18 13:07:02  malthoff
- *     Bugfix: Do not use CFG cycles after during Init- or Runtime, because
- *             they may not be available after Boottime.
- *
- *     Revision 1.40  1999/01/11 12:40:49  malthoff
- *     Bug fix: PCI_STATUS: clearing error bits sets the UDF bit.
- *
- *     Revision 1.39  1998/12/11 15:17:33  gklug
- *     chg: Init LipaAutoNeg with Unknown
- *
- *     Revision 1.38  1998/12/10 11:02:57  malthoff
- *     Disable Error Log Message when calling SkGeInit(level 2)
- *     more than once.
- *
- *     Revision 1.37  1998/12/07 12:18:25  gklug
- *     add: refinement of autosense mode: take into account the autoneg cap of LiPa
- *
- *     Revision 1.36  1998/12/07 07:10:39  gklug
- *     fix: init values of LinkBroken/ Capabilities for management
- *
- *     Revision 1.35  1998/12/02 10:56:20  gklug
- *     fix: do NOT init LoinkSync Counter.
- *
- *     Revision 1.34  1998/12/01 10:53:21  gklug
- *     add: init of additional Counters for workaround
- *
- *     Revision 1.33  1998/12/01 10:00:49  gklug
- *     add: init PIsave var in Port struct
- *
- *     Revision 1.32  1998/11/26 14:50:40  gklug
- *     chg: Default is autosensing with AUTOFULL mode
- *
- *     Revision 1.31  1998/11/25 15:36:16  gklug
- *     fix: do NOT stop LED Timer when port should be stopped
- *
- *     Revision 1.30  1998/11/24 13:15:28  gklug
- *     add: Init PCkeckPar struct member
- *
- *     Revision 1.29  1998/11/18 13:19:27  malthoff
- *     Disable packet arbiter timeouts on receive side.
- *     Use maximum timeout value for packet arbiter
- *     transmit timeouts.
- *     Add TestStopBit() function to handle stop RX/TX
- *     problem with active descriptor poll timers.
- *     Bug Fix: Descriptor Poll Timer not started, because
- *     GIPollTimerVal was initialized with 0.
- *
- *     Revision 1.28  1998/11/13 14:24:26  malthoff
- *     Bug Fix: SkGeStopPort() may hang if a Packet Arbiter Timout
- *     is pending or occurs while waiting for TX_STOP and RX_STOP.
- *     The PA timeout is cleared now while waiting for TX- or RX_STOP.
- *
- *     Revision 1.27  1998/11/02 11:04:36  malthoff
- *     fix the last fix
- *
- *     Revision 1.26  1998/11/02 10:37:03  malthoff
- *     Fix: SkGePollTxD() enables always the synchronounous poll timer.
- *
- *     Revision 1.25  1998/10/28 07:12:43  cgoos
- *     Fixed "LED_STOP" in SkGeLnkSyncCnt, "== SK_INIT_IO" in SkGeInit.
- *     Removed: Reset of RAM Interface in SkGeStopPort.
- *
- *     Revision 1.24  1998/10/27 08:13:12  malthoff
- *     Remove temporary code.
- *
- *     Revision 1.23  1998/10/26 07:45:03  malthoff
- *     Add Address Calculation Workaround: If the EPROM byte
- *     Id is 3, the address offset is 512 kB.
- *     Initialize default values for PLinkMode and PFlowCtrlMode.
- *
- *     Revision 1.22  1998/10/22 09:46:47  gklug
- *     fix SysKonnectFileId typo
- *
- *     Revision 1.21  1998/10/20 12:11:56  malthoff
- *     Don't dendy the Queue config if the size of the unused
- *     Rx qeueu is zero.
- *
- *     Revision 1.20  1998/10/19 07:27:58  malthoff
- *     SkGeInitRamIface() is public to be called by diagnostics.
- *
- *     Revision 1.19  1998/10/16 13:33:45  malthoff
- *     Fix: enabling descriptor polling is not allowed until
- *     the descriptor addresses are set. Descriptor polling
- *     must be handled by the driver.
- *
- *     Revision 1.18  1998/10/16 10:58:27  malthoff
- *     Remove temp. code for Diag prototype.
- *     Remove lint warning for dummy reads.
- *     Call SkGeLoadLnkSyncCnt() during SkGeInitPort().
- *
- *     Revision 1.17  1998/10/14 09:16:06  malthoff
- *     Change parameter LimCount and programming of
- *     the limit counter in SkGeCfgSync().
- *
- *     Revision 1.16  1998/10/13 09:21:16  malthoff
- *     Don't set XM_RX_SELF_RX in RxCmd Reg, because it's
- *     like a Loopback Mode in half duplex.
- *
- *     Revision 1.15  1998/10/09 06:47:40  malthoff
- *     SkGeInitMacArb(): set recovery counters init value
- *     to zero although this counters are not uesd.
- *     Bug fix in Rx Upper/Lower Pause Threshold calculation.
- *     Add XM_RX_SELF_RX to RxCmd.
- *
- *     Revision 1.14  1998/10/06 15:15:53  malthoff
- *     Make sure no pending IRQ is cleared in SkGeLoadLnkSyncCnt().
- *
- *     Revision 1.13  1998/10/06 14:09:36  malthoff
- *     Add SkGeLoadLnkSyncCnt(). Modify
- *     the 'port stopped' condition according
- *     to the current problem report.
- *
- *     Revision 1.12  1998/10/05 08:17:21  malthoff
- *     Add functions: SkGePollRxD(), SkGePollTxD(),
- *     DoCalcAddr(), SkGeCheckQSize(),
- *     DoInitRamQueue(), and SkGeCfgSync().
- *     Add coding for SkGeInitMacArb(), SkGeInitPktArb(),
- *     SkGeInitMacFifo(), SkGeInitRamBufs(),
- *     SkGeInitRamIface(), and SkGeInitBmu().
- *
- *     Revision 1.11  1998/09/29 08:26:29  malthoff
- *     bug fix: SkGeInit0() 'i' should be increment.
- *
- *     Revision 1.10  1998/09/28 13:19:01  malthoff
- *     Coding time: Save the done work.
- *     Modify SkGeLinkLED(), add SkGeXmitLED(),
- *     define SkGeCheckQSize(), SkGeInitMacArb(),
- *     SkGeInitPktArb(), SkGeInitMacFifo(),
- *     SkGeInitRamBufs(), SkGeInitRamIface(),
- *     and SkGeInitBmu(). Do coding for SkGeStopPort(),
- *     SkGeInit1(), SkGeInit2(), and SkGeInit3().
- *     Do coding for SkGeDinit() and SkGeInitPort().
- *
- *     Revision 1.9  1998/09/16 14:29:05  malthoff
- *     Some minor changes.
- *
- *     Revision 1.8  1998/09/11 05:29:14  gklug
- *     add: init state of a port
- *
- *     Revision 1.7  1998/09/04 09:26:25  malthoff
- *     Short temporary modification.
- *
- *     Revision 1.6  1998/09/04 08:27:59  malthoff
- *     Remark the do-while in StopPort() because it never ends
- *     without a GE adapter.
- *
- *     Revision 1.5  1998/09/03 14:05:45  malthoff
- *     Change comment for SkGeInitPort(). Do not
- *     repair the queue sizes if invalid.
- *
- *     Revision 1.4  1998/09/03 10:03:19  malthoff
- *     Implement the new interface according to the
- *     reviewed interface specification.
- *
- *     Revision 1.3  1998/08/19 09:11:25  gklug
- *     fix: struct are removed from c-source (see CCC)
- *
- *     Revision 1.2  1998/07/28 12:33:58  malthoff
- *     Add 'IoC' parameter in function declaration and SK IO macros.
- *
- *     Revision 1.1  1998/07/23 09:48:57  malthoff
- *     Creation. First dummy 'C' file.
- *     SkGeInit(Level 0) is card_start for GE.
- *     SkGeDeInit() is card_stop for GE.
- *
- *
- ******************************************************************************/
-
-#include <config.h>
-
-#include "h/skdrv1st.h"
-#include "h/skdrv2nd.h"
-
-/* global variables ***********************************************************/
-
-/* local variables ************************************************************/
-
-static const char SysKonnectFileId[] =
-       "@(#)$Id: skgeinit.c,v 1.85 2003/02/05 15:30:33 rschmidt Exp $ (C) SK ";
-
-struct s_QOffTab {
-       int     RxQOff;         /* Receive Queue Address Offset */
-       int     XsQOff;         /* Sync Tx Queue Address Offset */
-       int     XaQOff;         /* Async Tx Queue Address Offset */
-};
-static struct s_QOffTab QOffTab[] = {
-       {Q_R1, Q_XS1, Q_XA1}, {Q_R2, Q_XS2, Q_XA2}
-};
-
-
-/******************************************************************************
- *
- *     SkGePollRxD() - Enable / Disable Descriptor Polling of RxD Ring
- *
- * Description:
- *     Enable or disable the descriptor polling of the receive descriptor
- *     ring (RxD) for port 'Port'.
- *     The new configuration is *not* saved over any SkGeStopPort() and
- *     SkGeInitPort() calls.
- *
- * Returns:
- *     nothing
- */
-void SkGePollRxD(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* IO context */
-int            Port,           /* Port Index (MAC_1 + n) */
-SK_BOOL PollRxD)       /* SK_TRUE (enable pol.), SK_FALSE (disable pol.) */
-{
-       SK_GEPORT *pPrt;
-
-       pPrt = &pAC->GIni.GP[Port];
-
-       SK_OUT32(IoC, Q_ADDR(pPrt->PRxQOff, Q_CSR), (PollRxD) ?
-               CSR_ENA_POL : CSR_DIS_POL);
-}      /* SkGePollRxD */
-
-
-/******************************************************************************
- *
- *     SkGePollTxD() - Enable / Disable Descriptor Polling of TxD Rings
- *
- * Description:
- *     Enable or disable the descriptor polling of the transmit descriptor
- *     ring(s) (TxD) for port 'Port'.
- *     The new configuration is *not* saved over any SkGeStopPort() and
- *     SkGeInitPort() calls.
- *
- * Returns:
- *     nothing
- */
-void SkGePollTxD(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* IO context */
-int            Port,           /* Port Index (MAC_1 + n) */
-SK_BOOL PollTxD)       /* SK_TRUE (enable pol.), SK_FALSE (disable pol.) */
-{
-       SK_GEPORT *pPrt;
-       SK_U32  DWord;
-
-       pPrt = &pAC->GIni.GP[Port];
-
-       DWord = (PollTxD) ? CSR_ENA_POL : CSR_DIS_POL;
-
-       if (pPrt->PXSQSize != 0) {
-               SK_OUT32(IoC, Q_ADDR(pPrt->PXsQOff, Q_CSR), DWord);
-       }
-
-       if (pPrt->PXAQSize != 0) {
-               SK_OUT32(IoC, Q_ADDR(pPrt->PXaQOff, Q_CSR), DWord);
-       }
-}      /* SkGePollTxD */
-
-
-/******************************************************************************
- *
- *     SkGeYellowLED() - Switch the yellow LED on or off.
- *
- * Description:
- *     Switch the yellow LED on or off.
- *
- * Note:
- *     This function may be called any time after SkGeInit(Level 1).
- *
- * Returns:
- *     nothing
- */
-void SkGeYellowLED(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* IO context */
-int            State)          /* yellow LED state, 0 = OFF, 0 != ON */
-{
-       if (State == 0) {
-               /* Switch yellow LED OFF */
-               SK_OUT8(IoC, B0_LED, LED_STAT_OFF);
-       }
-       else {
-               /* Switch yellow LED ON */
-               SK_OUT8(IoC, B0_LED, LED_STAT_ON);
-       }
-}      /* SkGeYellowLED */
-
-
-/******************************************************************************
- *
- *     SkGeXmitLED() - Modify the Operational Mode of a transmission LED.
- *
- * Description:
- *     The Rx or Tx LED which is specified by 'Led' will be
- *     enabled, disabled or switched on in test mode.
- *
- * Note:
- *     'Led' must contain the address offset of the LEDs INI register.
- *
- * Usage:
- *     SkGeXmitLED(pAC, IoC, MR_ADDR(Port, TX_LED_INI), SK_LED_ENA);
- *
- * Returns:
- *     nothing
- */
-void SkGeXmitLED(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* IO context */
-int            Led,            /* offset to the LED Init Value register */
-int            Mode)           /* Mode may be SK_LED_DIS, SK_LED_ENA, SK_LED_TST */
-{
-       SK_U32  LedIni;
-
-       switch (Mode) {
-       case SK_LED_ENA:
-               LedIni = SK_XMIT_DUR * (SK_U32)pAC->GIni.GIHstClkFact / 100;
-               SK_OUT32(IoC, Led + XMIT_LED_INI, LedIni);
-               SK_OUT8(IoC, Led + XMIT_LED_CTRL, LED_START);
-               break;
-       case SK_LED_TST:
-               SK_OUT8(IoC, Led + XMIT_LED_TST, LED_T_ON);
-               SK_OUT32(IoC, Led + XMIT_LED_CNT, 100);
-               SK_OUT8(IoC, Led + XMIT_LED_CTRL, LED_START);
-               break;
-       case SK_LED_DIS:
-       default:
-               /*
-                * Do NOT stop the LED Timer here. The LED might be
-                * in on state. But it needs to go off.
-                */
-               SK_OUT32(IoC, Led + XMIT_LED_CNT, 0);
-               SK_OUT8(IoC, Led + XMIT_LED_TST, LED_T_OFF);
-               break;
-       }
-
-       /*
-        * 1000BT: The Transmit LED is driven by the PHY.
-        * But the default LED configuration is used for
-        * Level One and Broadcom PHYs.
-        * (Broadcom: It may be that PHY_B_PEC_EN_LTR has to be set.)
-        * (In this case it has to be added here. But we will see. XXX)
-        */
-}      /* SkGeXmitLED */
-
-
-/******************************************************************************
- *
- *     DoCalcAddr() - Calculates the start and the end address of a queue.
- *
- * Description:
- *     This function calculates the start and the end address of a queue.
- *  Afterwards the 'StartVal' is incremented to the next start position.
- *     If the port is already initialized the calculated values
- *     will be checked against the configured values and an
- *     error will be returned, if they are not equal.
- *     If the port is not initialized the values will be written to
- *     *StartAdr and *EndAddr.
- *
- * Returns:
- *     0:      success
- *     1:      configuration error
- */
-static int DoCalcAddr(
-SK_AC          *pAC,                   /* adapter context */
-SK_GEPORT      *pPrt,                  /* port index */
-int                    QuSize,                 /* size of the queue to configure in kB */
-SK_U32         *StartVal,              /* start value for address calculation */
-SK_U32         *QuStartAddr,   /* start addr to calculate */
-SK_U32         *QuEndAddr)             /* end address to calculate */
-{
-       SK_U32  EndVal;
-       SK_U32  NextStart;
-       int             Rtv;
-
-       Rtv = 0;
-       if (QuSize == 0) {
-               EndVal = *StartVal;
-               NextStart = EndVal;
-       }
-       else {
-               EndVal = *StartVal + ((SK_U32)QuSize * 1024) - 1;
-               NextStart = EndVal + 1;
-       }
-
-       if (pPrt->PState >= SK_PRT_INIT) {
-               if (*StartVal != *QuStartAddr || EndVal != *QuEndAddr) {
-                       Rtv = 1;
-               }
-       }
-       else {
-               *QuStartAddr = *StartVal;
-               *QuEndAddr = EndVal;
-       }
-
-       *StartVal = NextStart;
-       return(Rtv);
-}      /* DoCalcAddr */
-
-/******************************************************************************
- *
- *     SkGeInitAssignRamToQueues() - allocate default queue sizes
- *
- * Description:
- *     This function assigns the memory to the different queues and ports.
- *     When DualNet is set to SK_TRUE all ports get the same amount of memory.
- *  Otherwise the first port gets most of the memory and all the
- *     other ports just the required minimum.
- *     This function can only be called when pAC->GIni.GIRamSize and
- *     pAC->GIni.GIMacsFound have been initialized, usually this happens
- *     at init level 1
- *
- * Returns:
- *     0 - ok
- *     1 - invalid input values
- *     2 - not enough memory
- */
-
-int SkGeInitAssignRamToQueues(
-SK_AC  *pAC,                   /* Adapter context */
-int            ActivePort,             /* Active Port in RLMT mode */
-SK_BOOL        DualNet)                /* adapter context */
-{
-       int     i;
-       int     UsedKilobytes;                  /* memory already assigned */
-       int     ActivePortKilobytes;    /* memory available for active port */
-       SK_GEPORT *pGePort;
-
-       UsedKilobytes = 0;
-
-       if (ActivePort >= pAC->GIni.GIMacsFound) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_INIT,
-                       ("SkGeInitAssignRamToQueues: ActivePort (%d) invalid\n",
-                       ActivePort));
-               return(1);
-       }
-       if (((pAC->GIni.GIMacsFound * (SK_MIN_RXQ_SIZE + SK_MIN_TXQ_SIZE)) +
-               ((RAM_QUOTA_SYNC == 0) ? 0 : SK_MIN_TXQ_SIZE)) > pAC->GIni.GIRamSize) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_INIT,
-                       ("SkGeInitAssignRamToQueues: Not enough memory (%d)\n",
-                        pAC->GIni.GIRamSize));
-               return(2);
-       }
-
-
-       if (DualNet) {
-               /* every port gets the same amount of memory */
-               ActivePortKilobytes = pAC->GIni.GIRamSize / pAC->GIni.GIMacsFound;
-               for (i = 0; i < pAC->GIni.GIMacsFound; i++) {
-
-                       pGePort = &pAC->GIni.GP[i];
-
-                       /* take away the minimum memory for active queues */
-                       ActivePortKilobytes -= (SK_MIN_RXQ_SIZE + SK_MIN_TXQ_SIZE);
-
-                       /* receive queue gets the minimum + 80% of the rest */
-                       pGePort->PRxQSize = (int) (ROUND_QUEUE_SIZE_KB((
-                               ActivePortKilobytes * (unsigned long) RAM_QUOTA_RX) / 100))
-                               + SK_MIN_RXQ_SIZE;
-
-                       ActivePortKilobytes -= (pGePort->PRxQSize - SK_MIN_RXQ_SIZE);
-
-                       /* synchronous transmit queue */
-                       pGePort->PXSQSize = 0;
-
-                       /* asynchronous transmit queue */
-                       pGePort->PXAQSize = (int) ROUND_QUEUE_SIZE_KB(ActivePortKilobytes +
-                               SK_MIN_TXQ_SIZE);
-               }
-       }
-       else {
-               /* Rlmt Mode or single link adapter */
-
-               /* Set standby queue size defaults for all standby ports */
-               for (i = 0; i < pAC->GIni.GIMacsFound; i++) {
-
-                       if (i != ActivePort) {
-                               pGePort = &pAC->GIni.GP[i];
-
-                               pGePort->PRxQSize = SK_MIN_RXQ_SIZE;
-                               pGePort->PXAQSize = SK_MIN_TXQ_SIZE;
-                               pGePort->PXSQSize = 0;
-
-                               /* Count used RAM */
-                               UsedKilobytes += pGePort->PRxQSize + pGePort->PXAQSize;
-                       }
-               }
-               /* what's left? */
-               ActivePortKilobytes = pAC->GIni.GIRamSize - UsedKilobytes;
-
-               /* assign it to the active port */
-               /* first take away the minimum memory */
-               ActivePortKilobytes -= (SK_MIN_RXQ_SIZE + SK_MIN_TXQ_SIZE);
-               pGePort = &pAC->GIni.GP[ActivePort];
-
-               /* receive queue get's the minimum + 80% of the rest */
-               pGePort->PRxQSize = (int) (ROUND_QUEUE_SIZE_KB((ActivePortKilobytes *
-                       (unsigned long) RAM_QUOTA_RX) / 100)) + SK_MIN_RXQ_SIZE;
-
-               ActivePortKilobytes -= (pGePort->PRxQSize - SK_MIN_RXQ_SIZE);
-
-               /* synchronous transmit queue */
-               pGePort->PXSQSize = 0;
-
-               /* asynchronous transmit queue */
-               pGePort->PXAQSize = (int) ROUND_QUEUE_SIZE_KB(ActivePortKilobytes) +
-                       SK_MIN_TXQ_SIZE;
-       }
-#ifdef VCPU
-       VCPUprintf(0, "PRxQSize=%u, PXSQSize=%u, PXAQSize=%u\n",
-               pGePort->PRxQSize, pGePort->PXSQSize, pGePort->PXAQSize);
-#endif /* VCPU */
-
-       return(0);
-}      /* SkGeInitAssignRamToQueues */
-
-/******************************************************************************
- *
- *     SkGeCheckQSize() - Checks the Adapters Queue Size Configuration
- *
- * Description:
- *     This function verifies the Queue Size Configuration specified
- *     in the variables PRxQSize, PXSQSize, and PXAQSize of all
- *     used ports.
- *     This requirements must be fullfilled to have a valid configuration:
- *             - The size of all queues must not exceed GIRamSize.
- *             - The queue sizes must be specified in units of 8 kB.
- *             - The size of Rx queues of available ports must not be
- *               smaller than 16 kB.
- *             - The size of at least one Tx queue (synch. or asynch.)
- *        of available ports must not be smaller than 16 kB
- *        when Jumbo Frames are used.
- *             - The RAM start and end addresses must not be changed
- *               for ports which are already initialized.
- *     Furthermore SkGeCheckQSize() defines the Start and End Addresses
- *  of all ports and stores them into the HWAC port    structure.
- *
- * Returns:
- *     0:      Queue Size Configuration valid
- *     1:      Queue Size Configuration invalid
- */
-static int SkGeCheckQSize(
-SK_AC   *pAC,          /* adapter context */
-int             Port)          /* port index */
-{
-       SK_GEPORT *pPrt;
-       int     UsedMem;        /* total memory used (max. found ports) */
-       int     i;
-       int     Rtv;
-       int     Rtv2;
-       SK_U32  StartAddr;
-
-       UsedMem = 0;
-       Rtv = 0;
-       for (i = 0; i < pAC->GIni.GIMacsFound; i++) {
-               pPrt = &pAC->GIni.GP[i];
-
-               if ((pPrt->PRxQSize & QZ_UNITS) != 0 ||
-                       (pPrt->PXSQSize & QZ_UNITS) != 0 ||
-                       (pPrt->PXAQSize & QZ_UNITS) != 0) {
-
-                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E012, SKERR_HWI_E012MSG);
-                       return(1);
-               }
-
-               if (i == Port && pPrt->PRxQSize < SK_MIN_RXQ_SIZE) {
-                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E011, SKERR_HWI_E011MSG);
-                       return(1);
-               }
-
-               /*
-                * the size of at least one Tx queue (synch. or asynch.) has to be > 0.
-                * if Jumbo Frames are used, this size has to be >= 16 kB.
-                */
-               if ((i == Port && pPrt->PXSQSize == 0 && pPrt->PXAQSize == 0) ||
-                       (pAC->GIni.GIPortUsage == SK_JUMBO_LINK &&
-           ((pPrt->PXSQSize > 0 && pPrt->PXSQSize < SK_MIN_TXQ_SIZE) ||
-                        (pPrt->PXAQSize > 0 && pPrt->PXAQSize < SK_MIN_TXQ_SIZE)))) {
-                               SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E023, SKERR_HWI_E023MSG);
-                               return(1);
-               }
-
-               UsedMem += pPrt->PRxQSize + pPrt->PXSQSize + pPrt->PXAQSize;
-       }
-
-       if (UsedMem > pAC->GIni.GIRamSize) {
-               SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E012, SKERR_HWI_E012MSG);
-               return(1);
-       }
-
-       /* Now start address calculation */
-       StartAddr = pAC->GIni.GIRamOffs;
-       for (i = 0; i < pAC->GIni.GIMacsFound; i++) {
-               pPrt = &pAC->GIni.GP[i];
-
-               /* Calculate/Check values for the receive queue */
-               Rtv2 = DoCalcAddr(pAC, pPrt, pPrt->PRxQSize, &StartAddr,
-                       &pPrt->PRxQRamStart, &pPrt->PRxQRamEnd);
-               Rtv |= Rtv2;
-
-               /* Calculate/Check values for the synchronous Tx queue */
-               Rtv2 = DoCalcAddr(pAC, pPrt, pPrt->PXSQSize, &StartAddr,
-                       &pPrt->PXsQRamStart, &pPrt->PXsQRamEnd);
-               Rtv |= Rtv2;
-
-               /* Calculate/Check values for the asynchronous Tx queue */
-               Rtv2 = DoCalcAddr(pAC, pPrt, pPrt->PXAQSize, &StartAddr,
-                       &pPrt->PXaQRamStart, &pPrt->PXaQRamEnd);
-               Rtv |= Rtv2;
-
-               if (Rtv) {
-                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E013, SKERR_HWI_E013MSG);
-                       return(1);
-               }
-       }
-
-       return(0);
-}      /* SkGeCheckQSize */
-
-
-/******************************************************************************
- *
- *     SkGeInitMacArb() - Initialize the MAC Arbiter
- *
- * Description:
- *     This function initializes the MAC Arbiter.
- *     It must not be called if there is still an
- *     initialized or active port.
- *
- * Returns:
- *     nothing
- */
-static void SkGeInitMacArb(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC)            /* IO context */
-{
-       /* release local reset */
-       SK_OUT16(IoC, B3_MA_TO_CTRL, MA_RST_CLR);
-
-       /* configure timeout values */
-       SK_OUT8(IoC, B3_MA_TOINI_RX1, SK_MAC_TO_53);
-       SK_OUT8(IoC, B3_MA_TOINI_RX2, SK_MAC_TO_53);
-       SK_OUT8(IoC, B3_MA_TOINI_TX1, SK_MAC_TO_53);
-       SK_OUT8(IoC, B3_MA_TOINI_TX2, SK_MAC_TO_53);
-
-       SK_OUT8(IoC, B3_MA_RCINI_RX1, 0);
-       SK_OUT8(IoC, B3_MA_RCINI_RX2, 0);
-       SK_OUT8(IoC, B3_MA_RCINI_TX1, 0);
-       SK_OUT8(IoC, B3_MA_RCINI_TX2, 0);
-
-       /* recovery values are needed for XMAC II Rev. B2 only */
-       /* Fast Output Enable Mode was intended to use with Rev. B2, but now? */
-
-       /*
-        * There is no start or enable button to push, therefore
-        * the MAC arbiter is configured and enabled now.
-        */
-}      /* SkGeInitMacArb */
-
-
-/******************************************************************************
- *
- *     SkGeInitPktArb() - Initialize the Packet Arbiter
- *
- * Description:
- *     This function initializes the Packet Arbiter.
- *     It must not be called if there is still an
- *     initialized or active port.
- *
- * Returns:
- *     nothing
- */
-static void SkGeInitPktArb(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC)            /* IO context */
-{
-       /* release local reset */
-       SK_OUT16(IoC, B3_PA_CTRL, PA_RST_CLR);
-
-       /* configure timeout values */
-       SK_OUT16(IoC, B3_PA_TOINI_RX1, SK_PKT_TO_MAX);
-       SK_OUT16(IoC, B3_PA_TOINI_RX2, SK_PKT_TO_MAX);
-       SK_OUT16(IoC, B3_PA_TOINI_TX1, SK_PKT_TO_MAX);
-       SK_OUT16(IoC, B3_PA_TOINI_TX2, SK_PKT_TO_MAX);
-
-       /*
-        * enable timeout timers if jumbo frames not used
-        * NOTE: the packet arbiter timeout interrupt is needed for
-        * half duplex hangup workaround
-        */
-       if (pAC->GIni.GIPortUsage != SK_JUMBO_LINK) {
-               if (pAC->GIni.GIMacsFound == 1) {
-                       SK_OUT16(IoC, B3_PA_CTRL, PA_ENA_TO_TX1);
-               }
-               else {
-                       SK_OUT16(IoC, B3_PA_CTRL, PA_ENA_TO_TX1 | PA_ENA_TO_TX2);
-               }
-       }
-}      /* SkGeInitPktArb */
-
-
-/******************************************************************************
- *
- *     SkGeInitMacFifo() - Initialize the MAC FIFOs
- *
- * Description:
- *     Initialize all MAC FIFOs of the specified port
- *
- * Returns:
- *     nothing
- */
-static void SkGeInitMacFifo(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* IO context */
-int            Port)           /* Port Index (MAC_1 + n) */
-{
-       SK_U16  Word;
-#ifdef VCPU
-       SK_U32  DWord;
-#endif /* VCPU */
-       /*
-        * For each FIFO:
-        *      - release local reset
-        *      - use default value for MAC FIFO size
-        *      - setup defaults for the control register
-        *      - enable the FIFO
-        */
-
-       Word = GMF_RX_CTRL_DEF;
-
-       if (pAC->GIni.GIGenesis) {
-               /* Configure Rx MAC FIFO */
-               SK_OUT8(IoC, MR_ADDR(Port, RX_MFF_CTRL2), MFF_RST_CLR);
-               SK_OUT16(IoC, MR_ADDR(Port, RX_MFF_CTRL1), MFF_RX_CTRL_DEF);
-               SK_OUT8(IoC, MR_ADDR(Port, RX_MFF_CTRL2), MFF_ENA_OP_MD);
-
-               /* Configure Tx MAC FIFO */
-               SK_OUT8(IoC, MR_ADDR(Port, TX_MFF_CTRL2), MFF_RST_CLR);
-               SK_OUT16(IoC, MR_ADDR(Port, TX_MFF_CTRL1), MFF_TX_CTRL_DEF);
-               SK_OUT8(IoC, MR_ADDR(Port, TX_MFF_CTRL2), MFF_ENA_OP_MD);
-
-               /* Enable frame flushing if jumbo frames used */
-               if (pAC->GIni.GIPortUsage == SK_JUMBO_LINK) {
-                       SK_OUT16(IoC, MR_ADDR(Port, RX_MFF_CTRL1), MFF_ENA_FLUSH);
-               }
-       }
-       else {
-               /* set Rx GMAC FIFO Flush Mask */
-               SK_OUT16(IoC, MR_ADDR(Port, RX_GMF_FL_MSK), (SK_U16)RX_FF_FL_DEF_MSK);
-
-               if (pAC->GIni.GIYukonLite && pAC->GIni.GIChipId == CHIP_ID_YUKON) {
-
-                       Word &= ~GMF_RX_F_FL_ON;
-               }
-
-               /* Configure Rx MAC FIFO */
-               SK_OUT8(IoC, MR_ADDR(Port, RX_GMF_CTRL_T), (SK_U8)GMF_RST_CLR);
-               SK_OUT16(IoC, MR_ADDR(Port, RX_GMF_CTRL_T), Word);
-
-               /* set Rx GMAC FIFO Flush Threshold (default: 0x0a -> 56 bytes) */
-               SK_OUT16(IoC, MR_ADDR(Port, RX_GMF_FL_THR), RX_GMF_FL_THR_DEF);
-
-               /* Configure Tx MAC FIFO */
-               SK_OUT8(IoC, MR_ADDR(Port, TX_GMF_CTRL_T), (SK_U8)GMF_RST_CLR);
-               SK_OUT16(IoC, MR_ADDR(Port, TX_GMF_CTRL_T), (SK_U16)GMF_TX_CTRL_DEF);
-
-#ifdef VCPU
-               SK_IN32(IoC, MR_ADDR(Port, RX_GMF_AF_THR), &DWord);
-               SK_IN32(IoC, MR_ADDR(Port, TX_GMF_AE_THR), &DWord);
-#endif /* VCPU */
-
-               /* set Tx GMAC FIFO Almost Empty Threshold */
-/*             SK_OUT32(IoC, MR_ADDR(Port, TX_GMF_AE_THR), 0); */
-       }
-}      /* SkGeInitMacFifo */
-
-
-/******************************************************************************
- *
- *     SkGeLoadLnkSyncCnt() - Load the Link Sync Counter and starts counting
- *
- * Description:
- *     This function starts the Link Sync Counter of the specified
- *     port and enables the generation of an Link Sync IRQ.
- *     The Link Sync Counter may be used to detect an active link,
- *     if autonegotiation is not used.
- *
- * Note:
- *     o To ensure receiving the Link Sync Event the LinkSyncCounter
- *       should be initialized BEFORE clearing the XMAC's reset!
- *     o Enable IS_LNK_SYNC_M1 and IS_LNK_SYNC_M2 after calling this
- *       function.
- *
- * Returns:
- *     nothing
- */
-void SkGeLoadLnkSyncCnt(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* IO context */
-int            Port,           /* Port Index (MAC_1 + n) */
-SK_U32 CntVal)         /* Counter value */
-{
-       SK_U32  OrgIMsk;
-       SK_U32  NewIMsk;
-       SK_U32  ISrc;
-       SK_BOOL IrqPend;
-
-       /* stop counter */
-       SK_OUT8(IoC, MR_ADDR(Port, LNK_SYNC_CTRL), LED_STOP);
-
-       /*
-        * ASIC problem:
-        * Each time starting the Link Sync Counter an IRQ is generated
-        * by the adapter. See problem report entry from 21.07.98
-        *
-        * Workaround:  Disable Link Sync IRQ and clear the unexpeced IRQ
-        *              if no IRQ is already pending.
-        */
-       IrqPend = SK_FALSE;
-       SK_IN32(IoC, B0_ISRC, &ISrc);
-       SK_IN32(IoC, B0_IMSK, &OrgIMsk);
-       if (Port == MAC_1) {
-               NewIMsk = OrgIMsk & ~IS_LNK_SYNC_M1;
-               if ((ISrc & IS_LNK_SYNC_M1) != 0) {
-                       IrqPend = SK_TRUE;
-               }
-       }
-       else {
-               NewIMsk = OrgIMsk & ~IS_LNK_SYNC_M2;
-               if ((ISrc & IS_LNK_SYNC_M2) != 0) {
-                       IrqPend = SK_TRUE;
-               }
-       }
-       if (!IrqPend) {
-               SK_OUT32(IoC, B0_IMSK, NewIMsk);
-       }
-
-       /* load counter */
-       SK_OUT32(IoC, MR_ADDR(Port, LNK_SYNC_INI), CntVal);
-
-       /* start counter */
-       SK_OUT8(IoC, MR_ADDR(Port, LNK_SYNC_CTRL), LED_START);
-
-       if (!IrqPend) {
-               /* clear the unexpected IRQ, and restore the interrupt mask */
-               SK_OUT8(IoC, MR_ADDR(Port, LNK_SYNC_CTRL), LED_CLR_IRQ);
-               SK_OUT32(IoC, B0_IMSK, OrgIMsk);
-       }
-}      /* SkGeLoadLnkSyncCnt*/
-
-
-/******************************************************************************
- *
- *     SkGeCfgSync() - Configure synchronous bandwidth for this port.
- *
- * Description:
- *     This function may be used to configure synchronous bandwidth
- *     to the specified port. This may be done any time after
- *     initializing the port. The configuration values are NOT saved
- *     in the HWAC port structure and will be overwritten any
- *     time when stopping and starting the port.
- *     Any values for the synchronous configuration will be ignored
- *     if the size of the synchronous queue is zero!
- *
- *     The default configuration for the synchronous service is
- *     TXA_ENA_FSYNC. This means if the size of
- *     the synchronous queue is unequal zero but no specific
- *     synchronous bandwidth is configured, the synchronous queue
- *     will always have the 'unlimited' transmit priority!
- *
- *     This mode will be restored if the synchronous bandwidth is
- *     deallocated ('IntTime' = 0 and 'LimCount' = 0).
- *
- * Returns:
- *     0:      success
- *     1:      parameter configuration error
- *     2:      try to configure quality of service although no
- *             synchronous queue is configured
- */
-int SkGeCfgSync(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* IO context */
-int            Port,           /* Port Index (MAC_1 + n) */
-SK_U32 IntTime,        /* Interval Timer Value in units of 8ns */
-SK_U32 LimCount,       /* Number of bytes to transfer during IntTime */
-int            SyncMode)       /* Sync Mode: TXA_ENA_ALLOC | TXA_DIS_ALLOC | 0 */
-{
-       int Rtv;
-
-       Rtv = 0;
-
-       /* check the parameters */
-       if (LimCount > IntTime ||
-               (LimCount == 0 && IntTime != 0) ||
-               (LimCount != 0 && IntTime == 0)) {
-
-               SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E010, SKERR_HWI_E010MSG);
-               return(1);
-       }
-
-       if (pAC->GIni.GP[Port].PXSQSize == 0) {
-               SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E009, SKERR_HWI_E009MSG);
-               return(2);
-       }
-
-       /* calculate register values */
-       IntTime = (IntTime / 2) * pAC->GIni.GIHstClkFact / 100;
-       LimCount = LimCount / 8;
-
-       if (IntTime > TXA_MAX_VAL || LimCount > TXA_MAX_VAL) {
-               SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E010, SKERR_HWI_E010MSG);
-               return(1);
-       }
-
-       /*
-        * - Enable 'Force Sync' to ensure the synchronous queue
-        *   has the priority while configuring the new values.
-        * - Also 'disable alloc' to ensure the settings complies
-        *   to the SyncMode parameter.
-        * - Disable 'Rate Control' to configure the new values.
-        * - write IntTime and LimCount
-        * - start 'Rate Control' and disable 'Force Sync'
-        *   if Interval Timer or Limit Counter not zero.
-        */
-       SK_OUT8(IoC, MR_ADDR(Port, TXA_CTRL),
-               TXA_ENA_FSYNC | TXA_DIS_ALLOC | TXA_STOP_RC);
-
-       SK_OUT32(IoC, MR_ADDR(Port, TXA_ITI_INI), IntTime);
-       SK_OUT32(IoC, MR_ADDR(Port, TXA_LIM_INI), LimCount);
-
-       SK_OUT8(IoC, MR_ADDR(Port, TXA_CTRL),
-               (SK_U8)(SyncMode & (TXA_ENA_ALLOC | TXA_DIS_ALLOC)));
-
-       if (IntTime != 0 || LimCount != 0) {
-               SK_OUT8(IoC, MR_ADDR(Port, TXA_CTRL), TXA_DIS_FSYNC | TXA_START_RC);
-       }
-
-       return(0);
-}      /* SkGeCfgSync */
-
-
-/******************************************************************************
- *
- *     DoInitRamQueue() - Initialize the RAM Buffer Address of a single Queue
- *
- * Desccription:
- *     If the queue is used, enable and initialize it.
- *     Make sure the queue is still reset, if it is not used.
- *
- * Returns:
- *     nothing
- */
-static void DoInitRamQueue(
-SK_AC  *pAC,                   /* adapter context */
-SK_IOC IoC,                    /* IO context */
-int            QuIoOffs,               /* Queue IO Address Offset */
-SK_U32 QuStartAddr,    /* Queue Start Address */
-SK_U32 QuEndAddr,              /* Queue End Address */
-int            QuType)                 /* Queue Type (SK_RX_SRAM_Q|SK_RX_BRAM_Q|SK_TX_RAM_Q) */
-{
-       SK_U32  RxUpThresVal;
-       SK_U32  RxLoThresVal;
-
-       if (QuStartAddr != QuEndAddr) {
-               /* calculate thresholds, assume we have a big Rx queue */
-               RxUpThresVal = (QuEndAddr + 1 - QuStartAddr - SK_RB_ULPP) / 8;
-               RxLoThresVal = (QuEndAddr + 1 - QuStartAddr - SK_RB_LLPP_B)/8;
-
-               /* build HW address format */
-               QuStartAddr = QuStartAddr / 8;
-               QuEndAddr = QuEndAddr / 8;
-
-               /* release local reset */
-               SK_OUT8(IoC, RB_ADDR(QuIoOffs, RB_CTRL), RB_RST_CLR);
-
-               /* configure addresses */
-               SK_OUT32(IoC, RB_ADDR(QuIoOffs, RB_START), QuStartAddr);
-               SK_OUT32(IoC, RB_ADDR(QuIoOffs, RB_END), QuEndAddr);
-               SK_OUT32(IoC, RB_ADDR(QuIoOffs, RB_WP), QuStartAddr);
-               SK_OUT32(IoC, RB_ADDR(QuIoOffs, RB_RP), QuStartAddr);
-
-               switch (QuType) {
-               case SK_RX_SRAM_Q:
-                       /* configure threshold for small Rx Queue */
-                       RxLoThresVal += (SK_RB_LLPP_B - SK_RB_LLPP_S) / 8;
-
-                       /* continue with SK_RX_BRAM_Q */
-               case SK_RX_BRAM_Q:
-                       /* write threshold for Rx Queue */
-
-                       SK_OUT32(IoC, RB_ADDR(QuIoOffs, RB_RX_UTPP), RxUpThresVal);
-                       SK_OUT32(IoC, RB_ADDR(QuIoOffs, RB_RX_LTPP), RxLoThresVal);
-
-                       /* the high priority threshold not used */
-                       break;
-               case SK_TX_RAM_Q:
-                       /*
-                        * Do NOT use Store & Forward under normal operation due to
-                        * performance optimization (GENESIS only).
-                        * But if Jumbo Frames are configured (XMAC Tx FIFO is only 4 kB)
-                        * or YUKON is used ((GMAC Tx FIFO is only 1 kB)
-                        * we NEED Store & Forward of the RAM buffer.
-                        */
-                       if (pAC->GIni.GIPortUsage == SK_JUMBO_LINK ||
-                               !pAC->GIni.GIGenesis) {
-                               /* enable Store & Forward Mode for the Tx Side */
-                               SK_OUT8(IoC, RB_ADDR(QuIoOffs, RB_CTRL), RB_ENA_STFWD);
-                       }
-                       break;
-               }
-
-               /* set queue operational */
-               SK_OUT8(IoC, RB_ADDR(QuIoOffs, RB_CTRL), RB_ENA_OP_MD);
-       }
-       else {
-               /* ensure the queue is still disabled */
-               SK_OUT8(IoC, RB_ADDR(QuIoOffs, RB_CTRL), RB_RST_SET);
-       }
-}      /* DoInitRamQueue */
-
-
-/******************************************************************************
- *
- *     SkGeInitRamBufs() - Initialize the RAM Buffer Queues
- *
- * Description:
- *     Initialize all RAM Buffer Queues of the specified port
- *
- * Returns:
- *     nothing
- */
-static void SkGeInitRamBufs(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* IO context */
-int            Port)           /* Port Index (MAC_1 + n) */
-{
-       SK_GEPORT *pPrt;
-       int RxQType;
-
-       pPrt = &pAC->GIni.GP[Port];
-
-       if (pPrt->PRxQSize == SK_MIN_RXQ_SIZE) {
-               RxQType = SK_RX_SRAM_Q;         /* small Rx Queue */
-       } else {
-               RxQType = SK_RX_BRAM_Q;         /* big Rx Queue */
-       }
-
-       DoInitRamQueue(pAC, IoC, pPrt->PRxQOff, pPrt->PRxQRamStart,
-               pPrt->PRxQRamEnd, RxQType);
-
-       DoInitRamQueue(pAC, IoC, pPrt->PXsQOff, pPrt->PXsQRamStart,
-               pPrt->PXsQRamEnd, SK_TX_RAM_Q);
-
-       DoInitRamQueue(pAC, IoC, pPrt->PXaQOff, pPrt->PXaQRamStart,
-               pPrt->PXaQRamEnd, SK_TX_RAM_Q);
-
-}      /* SkGeInitRamBufs */
-
-
-/******************************************************************************
- *
- *     SkGeInitRamIface() - Initialize the RAM Interface
- *
- * Description:
- *     This function initializes the Adapters RAM Interface.
- *
- * Note:
- *     This function is used in the diagnostics.
- *
- * Returns:
- *     nothing
- */
-void SkGeInitRamIface(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC)            /* IO context */
-{
-       /* release local reset */
-       SK_OUT16(IoC, B3_RI_CTRL, RI_RST_CLR);
-
-       /* configure timeout values */
-       SK_OUT8(IoC, B3_RI_WTO_R1, SK_RI_TO_53);
-       SK_OUT8(IoC, B3_RI_WTO_XA1, SK_RI_TO_53);
-       SK_OUT8(IoC, B3_RI_WTO_XS1, SK_RI_TO_53);
-       SK_OUT8(IoC, B3_RI_RTO_R1, SK_RI_TO_53);
-       SK_OUT8(IoC, B3_RI_RTO_XA1, SK_RI_TO_53);
-       SK_OUT8(IoC, B3_RI_RTO_XS1, SK_RI_TO_53);
-       SK_OUT8(IoC, B3_RI_WTO_R2, SK_RI_TO_53);
-       SK_OUT8(IoC, B3_RI_WTO_XA2, SK_RI_TO_53);
-       SK_OUT8(IoC, B3_RI_WTO_XS2, SK_RI_TO_53);
-       SK_OUT8(IoC, B3_RI_RTO_R2, SK_RI_TO_53);
-       SK_OUT8(IoC, B3_RI_RTO_XA2, SK_RI_TO_53);
-       SK_OUT8(IoC, B3_RI_RTO_XS2, SK_RI_TO_53);
-
-}      /* SkGeInitRamIface */
-
-
-/******************************************************************************
- *
- *     SkGeInitBmu() - Initialize the BMU state machines
- *
- * Description:
- *     Initialize all BMU state machines of the specified port
- *
- * Returns:
- *     nothing
- */
-static void SkGeInitBmu(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* IO context */
-int            Port)           /* Port Index (MAC_1 + n) */
-{
-       SK_GEPORT       *pPrt;
-       SK_U32          RxWm;
-       SK_U32          TxWm;
-
-       pPrt = &pAC->GIni.GP[Port];
-
-       RxWm = SK_BMU_RX_WM;
-       TxWm = SK_BMU_TX_WM;
-
-       if (!pAC->GIni.GIPciSlot64 && !pAC->GIni.GIPciClock66) {
-               /* for better performance */
-               RxWm /= 2;
-               TxWm /= 2;
-       }
-
-       /* Rx Queue: Release all local resets and set the watermark */
-       SK_OUT32(IoC, Q_ADDR(pPrt->PRxQOff, Q_CSR), CSR_CLR_RESET);
-       SK_OUT32(IoC, Q_ADDR(pPrt->PRxQOff, Q_F), RxWm);
-
-       /*
-        * Tx Queue: Release all local resets if the queue is used !
-        *              set watermark
-        */
-       if (pPrt->PXSQSize != 0) {
-               SK_OUT32(IoC, Q_ADDR(pPrt->PXsQOff, Q_CSR), CSR_CLR_RESET);
-               SK_OUT32(IoC, Q_ADDR(pPrt->PXsQOff, Q_F), TxWm);
-       }
-
-       if (pPrt->PXAQSize != 0) {
-               SK_OUT32(IoC, Q_ADDR(pPrt->PXaQOff, Q_CSR), CSR_CLR_RESET);
-               SK_OUT32(IoC, Q_ADDR(pPrt->PXaQOff, Q_F), TxWm);
-       }
-       /*
-        * Do NOT enable the descriptor poll timers here, because
-        * the descriptor addresses are not specified yet.
-        */
-}      /* SkGeInitBmu */
-
-
-/******************************************************************************
- *
- *     TestStopBit() - Test the stop bit of the queue
- *
- * Description:
- *     Stopping a queue is not as simple as it seems to be.
- *     If descriptor polling is enabled, it may happen
- *     that RX/TX stop is done and SV idle is NOT set.
- *     In this case we have to issue another stop command.
- *
- * Returns:
- *     The queues control status register
- */
-static SK_U32 TestStopBit(
-SK_AC  *pAC,           /* Adapter Context */
-SK_IOC IoC,            /* IO Context */
-int            QuIoOffs)       /* Queue IO Address Offset */
-{
-       SK_U32  QuCsr;  /* CSR contents */
-
-       SK_IN32(IoC, Q_ADDR(QuIoOffs, Q_CSR), &QuCsr);
-
-       if ((QuCsr & (CSR_STOP | CSR_SV_IDLE)) == 0) {
-               /* Stop Descriptor overridden by start command */
-               SK_OUT32(IoC, Q_ADDR(QuIoOffs, Q_CSR), CSR_STOP);
-
-               SK_IN32(IoC, Q_ADDR(QuIoOffs, Q_CSR), &QuCsr);
-       }
-
-       return(QuCsr);
-}      /* TestStopBit */
-
-
-/******************************************************************************
- *
- *     SkGeStopPort() - Stop the Rx/Tx activity of the port 'Port'.
- *
- * Description:
- *     After calling this function the descriptor rings and Rx and Tx
- *     queues of this port may be reconfigured.
- *
- *     It is possible to stop the receive and transmit path separate or
- *     both together.
- *
- *     Dir =   SK_STOP_TX      Stops the transmit path only and resets the MAC.
- *                             The receive queue is still active and
- *                             the pending Rx frames may be still transferred
- *                             into the RxD.
- *             SK_STOP_RX      Stop the receive path. The tansmit path
- *                             has to be stopped once before.
- *             SK_STOP_ALL     SK_STOP_TX + SK_STOP_RX
- *
- *     RstMode = SK_SOFT_RST   Resets the MAC. The PHY is still alive.
- *                     SK_HARD_RST     Resets the MAC and the PHY.
- *
- * Example:
- *     1) A Link Down event was signaled for a port. Therefore the activity
- *     of this port should be stopped and a hardware reset should be issued
- *     to enable the workaround of XMAC errata #2. But the received frames
- *     should not be discarded.
- *             ...
- *             SkGeStopPort(pAC, IoC, Port, SK_STOP_TX, SK_HARD_RST);
- *             (transfer all pending Rx frames)
- *             SkGeStopPort(pAC, IoC, Port, SK_STOP_RX, SK_HARD_RST);
- *             ...
- *
- *     2) An event was issued which request the driver to switch
- *     the 'virtual active' link to an other already active port
- *     as soon as possible. The frames in the receive queue of this
- *     port may be lost. But the PHY must not be reset during this
- *     event.
- *             ...
- *             SkGeStopPort(pAC, IoC, Port, SK_STOP_ALL, SK_SOFT_RST);
- *             ...
- *
- * Extended Description:
- *     If SK_STOP_TX is set,
- *             o disable the MAC's receive and transmitter to prevent
- *               from sending incomplete frames
- *             o stop the port's transmit queues before terminating the
- *               BMUs to prevent from performing incomplete PCI cycles
- *               on the PCI bus
- *             - The network Rx and Tx activity and PCI Tx transfer is
- *               disabled now.
- *             o reset the MAC depending on the RstMode
- *             o Stop Interval Timer and Limit Counter of Tx Arbiter,
- *               also disable Force Sync bit and Enable Alloc bit.
- *             o perform a local reset of the port's Tx path
- *                     - reset the PCI FIFO of the async Tx queue
- *                     - reset the PCI FIFO of the sync Tx queue
- *                     - reset the RAM Buffer async Tx queue
- *                     - reset the RAM Buffer sync Tx queue
- *                     - reset the MAC Tx FIFO
- *             o switch Link and Tx LED off, stop the LED counters
- *
- *     If SK_STOP_RX is set,
- *             o stop the port's receive queue
- *             - The path data transfer activity is fully stopped now.
- *             o perform a local reset of the port's Rx path
- *                     - reset the PCI FIFO of the Rx queue
- *                     - reset the RAM Buffer receive queue
- *                     - reset the MAC Rx FIFO
- *             o switch Rx LED off, stop the LED counter
- *
- *     If all ports are stopped,
- *             o reset the RAM Interface.
- *
- * Notes:
- *     o This function may be called during the driver states RESET_PORT and
- *       SWITCH_PORT.
- */
-void SkGeStopPort(
-SK_AC  *pAC,   /* adapter context */
-SK_IOC IoC,    /* I/O context */
-int            Port,   /* port to stop (MAC_1 + n) */
-int            Dir,    /* Direction to Stop (SK_STOP_RX, SK_STOP_TX, SK_STOP_ALL) */
-int            RstMode)/* Reset Mode (SK_SOFT_RST, SK_HARD_RST) */
-{
-#ifndef SK_DIAG
-       SK_EVPARA Para;
-#endif /* !SK_DIAG */
-       SK_GEPORT *pPrt;
-       SK_U32  DWord;
-       SK_U32  XsCsr;
-       SK_U32  XaCsr;
-       SK_U64  ToutStart;
-       int             i;
-       int             ToutCnt;
-
-       pPrt = &pAC->GIni.GP[Port];
-
-       if ((Dir & SK_STOP_TX) != 0) {
-               /* disable receiver and transmitter */
-               SkMacRxTxDisable(pAC, IoC, Port);
-
-               /* stop both transmit queues */
-               /*
-                * If the BMU is in the reset state CSR_STOP will terminate
-                * immediately.
-                */
-               SK_OUT32(IoC, Q_ADDR(pPrt->PXsQOff, Q_CSR), CSR_STOP);
-               SK_OUT32(IoC, Q_ADDR(pPrt->PXaQOff, Q_CSR), CSR_STOP);
-
-               ToutStart = SkOsGetTime(pAC);
-               ToutCnt = 0;
-               do {
-                       /*
-                        * Clear packet arbiter timeout to make sure
-                        * this loop will terminate.
-                        */
-                       SK_OUT16(IoC, B3_PA_CTRL, (Port == MAC_1) ? PA_CLR_TO_TX1 :
-                               PA_CLR_TO_TX2);
-
-                       /*
-                        * If the transfer stucks at the MAC the STOP command will not
-                        * terminate if we don't flush the XMAC's transmit FIFO !
-                        */
-                       SkMacFlushTxFifo(pAC, IoC, Port);
-
-                       XsCsr = TestStopBit(pAC, IoC, pPrt->PXsQOff);
-                       XaCsr = TestStopBit(pAC, IoC, pPrt->PXaQOff);
-
-                       if (SkOsGetTime(pAC) - ToutStart > (SK_TICKS_PER_SEC / 18)) {
-                               /*
-                                * Timeout of 1/18 second reached.
-                                * This needs to be checked at 1/18 sec only.
-                                */
-                               ToutCnt++;
-                               if (ToutCnt > 1) {
-                                       /* Might be a problem when the driver event handler
-                                        * calls StopPort again. XXX.
-                                        */
-
-                                       /* Fatal Error, Loop aborted */
-                                       SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_HWI_E018,
-                                               SKERR_HWI_E018MSG);
-#ifndef SK_DIAG
-                                       Para.Para64 = Port;
-                                       SkEventQueue(pAC, SKGE_DRV, SK_DRV_PORT_FAIL, Para);
-#endif /* !SK_DIAG */
-                                       return;
-                               }
-                               /*
-                                * Cache incoherency workaround: Assume a start command
-                                * has been lost while sending the frame.
-                                */
-                               ToutStart = SkOsGetTime(pAC);
-
-                               if ((XsCsr & CSR_STOP) != 0) {
-                                       SK_OUT32(IoC, Q_ADDR(pPrt->PXsQOff, Q_CSR), CSR_START);
-                               }
-                               if ((XaCsr & CSR_STOP) != 0) {
-                                       SK_OUT32(IoC, Q_ADDR(pPrt->PXaQOff, Q_CSR), CSR_START);
-                               }
-                       }
-
-                       /*
-                        * Because of the ASIC problem report entry from 21.08.1998 it is
-                        * required to wait until CSR_STOP is reset and CSR_SV_IDLE is set.
-                        */
-               } while ((XsCsr & (CSR_STOP | CSR_SV_IDLE)) != CSR_SV_IDLE ||
-                                (XaCsr & (CSR_STOP | CSR_SV_IDLE)) != CSR_SV_IDLE);
-
-               /* Reset the MAC depending on the RstMode */
-               if (RstMode == SK_SOFT_RST) {
-                       SkMacSoftRst(pAC, IoC, Port);
-               }
-               else {
-                       SkMacHardRst(pAC, IoC, Port);
-               }
-
-               /* Disable Force Sync bit and Enable Alloc bit */
-               SK_OUT8(IoC, MR_ADDR(Port, TXA_CTRL),
-                       TXA_DIS_FSYNC | TXA_DIS_ALLOC | TXA_STOP_RC);
-
-               /* Stop Interval Timer and Limit Counter of Tx Arbiter */
-               SK_OUT32(IoC, MR_ADDR(Port, TXA_ITI_INI), 0L);
-               SK_OUT32(IoC, MR_ADDR(Port, TXA_LIM_INI), 0L);
-
-               /* Perform a local reset of the port's Tx path */
-
-               /* Reset the PCI FIFO of the async Tx queue */
-               SK_OUT32(IoC, Q_ADDR(pPrt->PXaQOff, Q_CSR), CSR_SET_RESET);
-               /* Reset the PCI FIFO of the sync Tx queue */
-               SK_OUT32(IoC, Q_ADDR(pPrt->PXsQOff, Q_CSR), CSR_SET_RESET);
-               /* Reset the RAM Buffer async Tx queue */
-               SK_OUT8(IoC, RB_ADDR(pPrt->PXaQOff, RB_CTRL), RB_RST_SET);
-               /* Reset the RAM Buffer sync Tx queue */
-               SK_OUT8(IoC, RB_ADDR(pPrt->PXsQOff, RB_CTRL), RB_RST_SET);
-
-               /* Reset Tx MAC FIFO */
-               if (pAC->GIni.GIGenesis) {
-                       /* Note: MFF_RST_SET does NOT reset the XMAC ! */
-                       SK_OUT8(IoC, MR_ADDR(Port, TX_MFF_CTRL2), MFF_RST_SET);
-
-                       /* switch Link and Tx LED off, stop the LED counters */
-                       /* Link LED is switched off by the RLMT and the Diag itself */
-                       SkGeXmitLED(pAC, IoC, MR_ADDR(Port, TX_LED_INI), SK_LED_DIS);
-               }
-               else {
-                       /* Reset TX MAC FIFO */
-                       SK_OUT8(IoC, MR_ADDR(Port, TX_GMF_CTRL_T), (SK_U8)GMF_RST_SET);
-               }
-       }
-
-       if ((Dir & SK_STOP_RX) != 0) {
-               /*
-                * The RX Stop Command will not terminate if no buffers
-                * are queued in the RxD ring. But it will always reach
-                * the Idle state. Therefore we can use this feature to
-                * stop the transfer of received packets.
-                */
-               /* stop the port's receive queue */
-               SK_OUT32(IoC, Q_ADDR(pPrt->PRxQOff, Q_CSR), CSR_STOP);
-
-               i = 100;
-               do {
-                       /*
-                        * Clear packet arbiter timeout to make sure
-                        * this loop will terminate
-                        */
-                       SK_OUT16(IoC, B3_PA_CTRL, (Port == MAC_1) ? PA_CLR_TO_RX1 :
-                               PA_CLR_TO_RX2);
-
-                       DWord = TestStopBit(pAC, IoC, pPrt->PRxQOff);
-
-                       /* timeout if i==0 (bug fix for #10748) */
-                       if (--i == 0) {
-                               SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_HWI_E024,
-                                       SKERR_HWI_E024MSG);
-                               break;
-                       }
-                       /*
-                        * because of the ASIC problem report entry from 21.08.98
-                        * it is required to wait until CSR_STOP is reset and
-                        * CSR_SV_IDLE is set.
-                        */
-               } while ((DWord & (CSR_STOP | CSR_SV_IDLE)) != CSR_SV_IDLE);
-
-               /* The path data transfer activity is fully stopped now */
-
-               /* Perform a local reset of the port's Rx path */
-
-                /*     Reset the PCI FIFO of the Rx queue */
-               SK_OUT32(IoC, Q_ADDR(pPrt->PRxQOff, Q_CSR), CSR_SET_RESET);
-               /* Reset the RAM Buffer receive queue */
-               SK_OUT8(IoC, RB_ADDR(pPrt->PRxQOff, RB_CTRL), RB_RST_SET);
-
-               /* Reset Rx MAC FIFO */
-               if (pAC->GIni.GIGenesis) {
-
-                       SK_OUT8(IoC, MR_ADDR(Port, RX_MFF_CTRL2), MFF_RST_SET);
-
-                       /* switch Rx LED off, stop the LED counter */
-                       SkGeXmitLED(pAC, IoC, MR_ADDR(Port, RX_LED_INI), SK_LED_DIS);
-               }
-               else {
-                       /* Reset Rx MAC FIFO */
-                       SK_OUT8(IoC, MR_ADDR(Port, RX_GMF_CTRL_T), (SK_U8)GMF_RST_SET);
-               }
-       }
-}      /* SkGeStopPort */
-
-
-/******************************************************************************
- *
- *     SkGeInit0() - Level 0 Initialization
- *
- * Description:
- *     - Initialize the BMU address offsets
- *
- * Returns:
- *     nothing
- */
-static void SkGeInit0(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC)            /* IO context */
-{
-       int i;
-       SK_GEPORT *pPrt;
-
-       for (i = 0; i < SK_MAX_MACS; i++) {
-               pPrt = &pAC->GIni.GP[i];
-
-               pPrt->PState = SK_PRT_RESET;
-               pPrt->PRxQOff = QOffTab[i].RxQOff;
-               pPrt->PXsQOff = QOffTab[i].XsQOff;
-               pPrt->PXaQOff = QOffTab[i].XaQOff;
-               pPrt->PCheckPar = SK_FALSE;
-               pPrt->PIsave = 0;
-               pPrt->PPrevShorts = 0;
-               pPrt->PLinkResCt = 0;
-               pPrt->PAutoNegTOCt = 0;
-               pPrt->PPrevRx = 0;
-               pPrt->PPrevFcs = 0;
-               pPrt->PRxLim = SK_DEF_RX_WA_LIM;
-               pPrt->PLinkMode = SK_LMODE_AUTOFULL;
-               pPrt->PLinkSpeedCap = SK_LSPEED_CAP_1000MBPS;
-               pPrt->PLinkSpeed = SK_LSPEED_1000MBPS;
-               pPrt->PLinkSpeedUsed = SK_LSPEED_STAT_UNKNOWN;
-               pPrt->PLinkModeConf = SK_LMODE_AUTOSENSE;
-               pPrt->PFlowCtrlMode = SK_FLOW_MODE_SYM_OR_REM;
-               pPrt->PLinkBroken = SK_TRUE; /* See WA code */
-               pPrt->PLinkCap = (SK_LMODE_CAP_HALF | SK_LMODE_CAP_FULL |
-                               SK_LMODE_CAP_AUTOHALF | SK_LMODE_CAP_AUTOFULL);
-               pPrt->PLinkModeStatus = SK_LMODE_STAT_UNKNOWN;
-               pPrt->PFlowCtrlCap = SK_FLOW_MODE_SYM_OR_REM;
-               pPrt->PFlowCtrlStatus = SK_FLOW_STAT_NONE;
-               pPrt->PMSCap = 0;
-               pPrt->PMSMode = SK_MS_MODE_AUTO;
-               pPrt->PMSStatus = SK_MS_STAT_UNSET;
-               pPrt->PAutoNegFail = SK_FALSE;
-               pPrt->PLipaAutoNeg = SK_LIPA_UNKNOWN;
-               pPrt->PHWLinkUp = SK_FALSE;
-       }
-
-       pAC->GIni.GIPortUsage = SK_RED_LINK;
-
-}      /* SkGeInit0*/
-
-#ifdef SK_PCI_RESET
-
-/******************************************************************************
- *
- *     SkGePciReset() - Reset PCI interface
- *
- * Description:
- *     o Read PCI configuration.
- *     o Change power state to 3.
- *     o Change power state to 0.
- *     o Restore PCI configuration.
- *
- * Returns:
- *     0:      Success.
- *     1:      Power state could not be changed to 3.
- */
-static int SkGePciReset(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC)            /* IO context */
-{
-       int             i;
-       SK_U16  PmCtlSts;
-       SK_U32  Bp1;
-       SK_U32  Bp2;
-       SK_U16  PciCmd;
-       SK_U8   Cls;
-       SK_U8   Lat;
-       SK_U8   ConfigSpace[PCI_CFG_SIZE];
-
-       /*
-        * Note: Switching to D3 state is like a software reset.
-        *               Switching from D3 to D0 is a hardware reset.
-        *               We have to save and restore the configuration space.
-        */
-       for (i = 0; i < PCI_CFG_SIZE; i++) {
-               SkPciReadCfgDWord(pAC, i*4, &ConfigSpace[i]);
-       }
-
-       /* We know the RAM Interface Arbiter is enabled. */
-       SkPciWriteCfgWord(pAC, PCI_PM_CTL_STS, PCI_PM_STATE_D3);
-       SkPciReadCfgWord(pAC, PCI_PM_CTL_STS, &PmCtlSts);
-
-       if ((PmCtlSts & PCI_PM_STATE_MSK) != PCI_PM_STATE_D3) {
-               return(1);
-       }
-
-       /* Return to D0 state. */
-       SkPciWriteCfgWord(pAC, PCI_PM_CTL_STS, PCI_PM_STATE_D0);
-
-       /* Check for D0 state. */
-       SkPciReadCfgWord(pAC, PCI_PM_CTL_STS, &PmCtlSts);
-
-       if ((PmCtlSts & PCI_PM_STATE_MSK) != PCI_PM_STATE_D0) {
-               return(1);
-       }
-
-       /* Check PCI Config Registers. */
-       SkPciReadCfgWord(pAC, PCI_COMMAND, &PciCmd);
-       SkPciReadCfgByte(pAC, PCI_CACHE_LSZ, &Cls);
-       SkPciReadCfgDWord(pAC, PCI_BASE_1ST, &Bp1);
-       SkPciReadCfgDWord(pAC, PCI_BASE_2ND, &Bp2);
-       SkPciReadCfgByte(pAC, PCI_LAT_TIM, &Lat);
-
-       if (PciCmd != 0 || Cls != 0 || (Bp1 & 0xfffffff0L) != 0 || Bp2 != 1 ||
-               Lat != 0) {
-               return(1);
-       }
-
-       /* Restore PCI Config Space. */
-       for (i = 0; i < PCI_CFG_SIZE; i++) {
-               SkPciWriteCfgDWord(pAC, i*4, ConfigSpace[i]);
-       }
-
-       return(0);
-}      /* SkGePciReset */
-
-#endif /* SK_PCI_RESET */
-
-/******************************************************************************
- *
- *     SkGeInit1() - Level 1 Initialization
- *
- * Description:
- *     o Do a software reset.
- *     o Clear all reset bits.
- *     o Verify that the detected hardware is present.
- *       Return an error if not.
- *     o Get the hardware configuration
- *             + Read the number of MACs/Ports.
- *             + Read the RAM size.
- *             + Read the PCI Revision Id.
- *             + Find out the adapters host clock speed
- *             + Read and check the PHY type
- *
- * Returns:
- *     0:      success
- *     5:      Unexpected PHY type detected
- *     6:      HW self test failed
- */
-static int SkGeInit1(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC)            /* IO context */
-{
-       SK_U8   Byte;
-       SK_U16  Word;
-       SK_U16  CtrlStat;
-       SK_U32  FlashAddr;
-       int     RetVal;
-       int     i;
-
-       RetVal = 0;
-
-       /* save CLK_RUN bits (YUKON-Lite) */
-       SK_IN16(IoC, B0_CTST, &CtrlStat);
-
-#ifdef SK_PCI_RESET
-       (void)SkGePciReset(pAC, IoC);
-#endif /* SK_PCI_RESET */
-
-       /* do the SW-reset */
-       SK_OUT8(IoC, B0_CTST, CS_RST_SET);
-
-       /* release the SW-reset */
-       SK_OUT8(IoC, B0_CTST, CS_RST_CLR);
-
-       /* reset all error bits in the PCI STATUS register */
-       /*
-        * Note: PCI Cfg cycles cannot be used, because they are not
-        *               available on some platforms after 'boot time'.
-        */
-       SK_IN16(IoC, PCI_C(PCI_STATUS), &Word);
-
-       SK_OUT8(IoC, B2_TST_CTRL1, TST_CFG_WRITE_ON);
-       SK_OUT16(IoC, PCI_C(PCI_STATUS), Word | PCI_ERRBITS);
-       SK_OUT8(IoC, B2_TST_CTRL1, TST_CFG_WRITE_OFF);
-
-       /* release Master Reset */
-       SK_OUT8(IoC, B0_CTST, CS_MRST_CLR);
-
-#ifdef CLK_RUN
-       CtrlStat |= CS_CLK_RUN_ENA;
-#endif /* CLK_RUN */
-
-       /* restore CLK_RUN bits */
-       SK_OUT16(IoC, B0_CTST, CtrlStat &
-               (CS_CLK_RUN_HOT | CS_CLK_RUN_RST | CS_CLK_RUN_ENA));
-
-       /* read Chip Identification Number */
-       SK_IN8(IoC, B2_CHIP_ID, &Byte);
-       pAC->GIni.GIChipId = Byte;
-
-       /* read number of MACs */
-       SK_IN8(IoC, B2_MAC_CFG, &Byte);
-       pAC->GIni.GIMacsFound = (Byte & CONFIG_SYS_SNG_MAC) ? 1 : 2;
-
-       /* get Chip Revision Number */
-       pAC->GIni.GIChipRev = (SK_U8)((Byte & CONFIG_SYS_CHIP_R_MSK) >> 4);
-
-       /* get diff. PCI parameters */
-       SK_IN16(IoC, B0_CTST, &CtrlStat);
-
-       /* read the adapters RAM size */
-       SK_IN8(IoC, B2_E_0, &Byte);
-
-       if (pAC->GIni.GIChipId == CHIP_ID_GENESIS) {
-
-               pAC->GIni.GIGenesis = SK_TRUE;
-
-               if (Byte == 3) {
-                       /* special case: 4 x 64k x 36, offset = 0x80000 */
-                       pAC->GIni.GIRamSize = 1024;
-                       pAC->GIni.GIRamOffs = (SK_U32)512 * 1024;
-               }
-               else {
-                       pAC->GIni.GIRamSize = (int)Byte * 512;
-                       pAC->GIni.GIRamOffs = 0;
-               }
-               /* all GE adapters work with 53.125 MHz host clock */
-               pAC->GIni.GIHstClkFact = SK_FACT_53;
-
-               /* set Descr. Poll Timer Init Value to 250 ms */
-               pAC->GIni.GIPollTimerVal =
-                       SK_DPOLL_DEF * (SK_U32)pAC->GIni.GIHstClkFact / 100;
-       }
-       else {
-               pAC->GIni.GIGenesis = SK_FALSE;
-
-#ifndef VCPU
-               pAC->GIni.GIRamSize = (Byte == 0) ? 128 : (int)Byte * 4;
-#else
-               pAC->GIni.GIRamSize = 128;
-#endif
-               pAC->GIni.GIRamOffs = 0;
-
-               /* WA for chip Rev. A */
-               pAC->GIni.GIWolOffs = (pAC->GIni.GIChipRev == 0) ? WOL_REG_OFFS : 0;
-
-               /* get PM Capabilities of PCI config space */
-               SK_IN16(IoC, PCI_C(PCI_PM_CAP_REG), &Word);
-
-               /* check if VAUX is available */
-               if (((CtrlStat & CS_VAUX_AVAIL) != 0) &&
-                       /* check also if PME from D3cold is set */
-                       ((Word & PCI_PME_D3C_SUP) != 0)) {
-                       /* set entry in GE init struct */
-                       pAC->GIni.GIVauxAvail = SK_TRUE;
-               }
-
-               /* save Flash-Address Register */
-               SK_IN32(IoC, B2_FAR, &FlashAddr);
-
-               /* test Flash-Address Register */
-               SK_OUT8(IoC, B2_FAR + 3, 0xff);
-               SK_IN8(IoC, B2_FAR + 3, &Byte);
-
-               pAC->GIni.GIYukonLite = (SK_BOOL)(Byte != 0);
-
-               /* restore Flash-Address Register */
-               SK_OUT32(IoC, B2_FAR, FlashAddr);
-
-               for (i = 0; i < pAC->GIni.GIMacsFound; i++) {
-                       /* set GMAC Link Control reset */
-                       SK_OUT16(IoC, MR_ADDR(i, GMAC_LINK_CTRL), GMLC_RST_SET);
-
-                       /* clear GMAC Link Control reset */
-                       SK_OUT16(IoC, MR_ADDR(i, GMAC_LINK_CTRL), GMLC_RST_CLR);
-               }
-               /* all YU chips work with 78.125 MHz host clock */
-               pAC->GIni.GIHstClkFact = SK_FACT_78;
-
-               pAC->GIni.GIPollTimerVal = SK_DPOLL_MAX;        /* 215 ms */
-       }
-
-       /* check if 64-bit PCI Slot is present */
-       pAC->GIni.GIPciSlot64 = (SK_BOOL)((CtrlStat & CS_BUS_SLOT_SZ) != 0);
-
-       /* check if 66 MHz PCI Clock is active */
-       pAC->GIni.GIPciClock66 = (SK_BOOL)((CtrlStat & CS_BUS_CLOCK) != 0);
-
-       /* read PCI HW Revision Id. */
-       SK_IN8(IoC, PCI_C(PCI_REV_ID), &Byte);
-       pAC->GIni.GIPciHwRev = Byte;
-
-       /* read the PMD type */
-       SK_IN8(IoC, B2_PMD_TYP, &Byte);
-       pAC->GIni.GICopperType = (SK_U8)(Byte == 'T');
-
-       /* read the PHY type */
-       SK_IN8(IoC, B2_E_1, &Byte);
-
-       Byte &= 0x0f;   /* the PHY type is stored in the lower nibble */
-       for (i = 0; i < pAC->GIni.GIMacsFound; i++) {
-
-               if (pAC->GIni.GIGenesis) {
-                       switch (Byte) {
-                       case SK_PHY_XMAC:
-                               pAC->GIni.GP[i].PhyAddr = PHY_ADDR_XMAC;
-                               break;
-                       case SK_PHY_BCOM:
-                               pAC->GIni.GP[i].PhyAddr = PHY_ADDR_BCOM;
-                               pAC->GIni.GP[i].PMSCap =
-                                       SK_MS_CAP_AUTO | SK_MS_CAP_MASTER | SK_MS_CAP_SLAVE;
-                               break;
-#ifdef OTHER_PHY
-                       case SK_PHY_LONE:
-                               pAC->GIni.GP[i].PhyAddr = PHY_ADDR_LONE;
-                               break;
-                       case SK_PHY_NAT:
-                               pAC->GIni.GP[i].PhyAddr = PHY_ADDR_NAT;
-                               break;
-#endif /* OTHER_PHY */
-                       default:
-                               /* ERROR: unexpected PHY type detected */
-                               RetVal = 5;
-                               break;
-                       }
-               }
-               else {
-                       if (Byte == 0) {
-                               /* if this field is not initialized */
-                               Byte = SK_PHY_MARV_COPPER;
-                               pAC->GIni.GICopperType = SK_TRUE;
-                       }
-                       pAC->GIni.GP[i].PhyAddr = PHY_ADDR_MARV;
-
-                       if (pAC->GIni.GICopperType) {
-                               pAC->GIni.GP[i].PLinkSpeedCap = SK_LSPEED_CAP_AUTO |
-                                       SK_LSPEED_CAP_10MBPS | SK_LSPEED_CAP_100MBPS |
-                                       SK_LSPEED_CAP_1000MBPS;
-                               pAC->GIni.GP[i].PLinkSpeed = SK_LSPEED_AUTO;
-                               pAC->GIni.GP[i].PMSCap =
-                                       SK_MS_CAP_AUTO | SK_MS_CAP_MASTER | SK_MS_CAP_SLAVE;
-                       }
-                       else {
-                               Byte = SK_PHY_MARV_FIBER;
-                       }
-               }
-
-               pAC->GIni.GP[i].PhyType = Byte;
-
-               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_INIT,
-                       ("PHY type: %d  PHY addr: %04x\n", Byte,
-                       pAC->GIni.GP[i].PhyAddr));
-       }
-
-       /* get Mac Type & set function pointers dependent on */
-       if (pAC->GIni.GIGenesis) {
-               pAC->GIni.GIMacType = SK_MAC_XMAC;
-
-               pAC->GIni.GIFunc.pFnMacUpdateStats      = SkXmUpdateStats;
-               pAC->GIni.GIFunc.pFnMacStatistic        = SkXmMacStatistic;
-               pAC->GIni.GIFunc.pFnMacResetCounter     = SkXmResetCounter;
-               pAC->GIni.GIFunc.pFnMacOverflow         = SkXmOverflowStatus;
-       }
-       else {
-               pAC->GIni.GIMacType = SK_MAC_GMAC;
-
-               pAC->GIni.GIFunc.pFnMacUpdateStats      = SkGmUpdateStats;
-               pAC->GIni.GIFunc.pFnMacStatistic        = SkGmMacStatistic;
-               pAC->GIni.GIFunc.pFnMacResetCounter     = SkGmResetCounter;
-               pAC->GIni.GIFunc.pFnMacOverflow         = SkGmOverflowStatus;
-
-#ifdef SPECIAL_HANDLING
-               if (pAC->GIni.GIChipId == CHIP_ID_YUKON) {
-                       /* check HW self test result */
-                       SK_IN8(IoC, B2_E_3, &Byte);
-                       if ((Byte & B2_E3_RES_MASK) != 0) {
-                               RetVal = 6;
-                       }
-               }
-#endif
-       }
-       return(RetVal);
-}      /* SkGeInit1 */
-
-
-/******************************************************************************
- *
- *     SkGeInit2() - Level 2 Initialization
- *
- * Description:
- *     - start the Blink Source Counter
- *     - start the Descriptor Poll Timer
- *     - configure the MAC-Arbiter
- *     - configure the Packet-Arbiter
- *     - enable the Tx Arbiters
- *     - enable the RAM Interface Arbiter
- *
- * Returns:
- *     nothing
- */
-static void SkGeInit2(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC)            /* IO context */
-{
-       SK_U32  DWord;
-       int             i;
-
-       /* start the Descriptor Poll Timer */
-       if (pAC->GIni.GIPollTimerVal != 0) {
-               if (pAC->GIni.GIPollTimerVal > SK_DPOLL_MAX) {
-                       pAC->GIni.GIPollTimerVal = SK_DPOLL_MAX;
-
-                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E017, SKERR_HWI_E017MSG);
-               }
-               SK_OUT32(IoC, B28_DPT_INI, pAC->GIni.GIPollTimerVal);
-               SK_OUT8(IoC, B28_DPT_CTRL, DPT_START);
-       }
-
-       if (pAC->GIni.GIGenesis) {
-               /* start the Blink Source Counter */
-               DWord = SK_BLK_DUR * (SK_U32)pAC->GIni.GIHstClkFact / 100;
-
-               SK_OUT32(IoC, B2_BSC_INI, DWord);
-               SK_OUT8(IoC, B2_BSC_CTRL, BSC_START);
-
-               /*
-                * Configure the MAC Arbiter and the Packet Arbiter.
-                * They will be started once and never be stopped.
-                */
-               SkGeInitMacArb(pAC, IoC);
-
-               SkGeInitPktArb(pAC, IoC);
-       }
-       else {
-               /* start Time Stamp Timer */
-               SK_OUT8(IoC, GMAC_TI_ST_CTRL, (SK_U8)GMT_ST_START);
-       }
-
-       /* enable the Tx Arbiters */
-       for (i = 0; i < pAC->GIni.GIMacsFound; i++) {
-               SK_OUT8(IoC, MR_ADDR(i, TXA_CTRL), TXA_ENA_ARB);
-       }
-
-       /* enable the RAM Interface Arbiter */
-       SkGeInitRamIface(pAC, IoC);
-
-}      /* SkGeInit2 */
-
-/******************************************************************************
- *
- *     SkGeInit() - Initialize the GE Adapter with the specified level.
- *
- * Description:
- *     Level   0:      Initialize the Module structures.
- *     Level   1:      Generic Hardware Initialization. The IOP/MemBase pointer has
- *                             to be set before calling this level.
- *
- *                     o Do a software reset.
- *                     o Clear all reset bits.
- *                     o Verify that the detected hardware is present.
- *                       Return an error if not.
- *                     o Get the hardware configuration
- *                             + Set GIMacsFound with the number of MACs.
- *                             + Store the RAM size in GIRamSize.
- *                             + Save the PCI Revision ID in GIPciHwRev.
- *                     o return an error
- *                             if Number of MACs > SK_MAX_MACS
- *
- *                     After returning from Level 0 the adapter
- *                     may be accessed with IO operations.
- *
- *     Level   2:      start the Blink Source Counter
- *
- * Returns:
- *     0:      success
- *     1:      Number of MACs exceeds SK_MAX_MACS      (after level 1)
- *     2:      Adapter not present or not accessible
- *     3:      Illegal initialization level
- *     4:      Initialization Level 1 Call missing
- *     5:      Unexpected PHY type detected
- *     6:      HW self test failed
- */
-int    SkGeInit(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* IO context */
-int            Level)          /* initialization level */
-{
-       int             RetVal;         /* return value */
-       SK_U32  DWord;
-
-       RetVal = 0;
-       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_INIT,
-               ("SkGeInit(Level %d)\n", Level));
-
-       switch (Level) {
-       case SK_INIT_DATA:
-               /* Initialization Level 0 */
-               SkGeInit0(pAC, IoC);
-               pAC->GIni.GILevel = SK_INIT_DATA;
-               break;
-
-       case SK_INIT_IO:
-               /* Initialization Level 1 */
-               RetVal = SkGeInit1(pAC, IoC);
-               if (RetVal != 0) {
-                       break;
-               }
-
-               /* check if the adapter seems to be accessible */
-               SK_OUT32(IoC, B2_IRQM_INI, 0x11335577L);
-               SK_IN32(IoC, B2_IRQM_INI, &DWord);
-               SK_OUT32(IoC, B2_IRQM_INI, 0L);
-
-               if (DWord != 0x11335577L) {
-                       RetVal = 2;
-                       break;
-               }
-
-               /* check if the number of GIMacsFound matches SK_MAX_MACS */
-               if (pAC->GIni.GIMacsFound > SK_MAX_MACS) {
-                       RetVal = 1;
-                       break;
-               }
-
-               /* Level 1 successfully passed */
-               pAC->GIni.GILevel = SK_INIT_IO;
-               break;
-
-       case SK_INIT_RUN:
-               /* Initialization Level 2 */
-               if (pAC->GIni.GILevel != SK_INIT_IO) {
-#ifndef SK_DIAG
-                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E002, SKERR_HWI_E002MSG);
-#endif /* !SK_DIAG */
-                       RetVal = 4;
-                       break;
-               }
-               SkGeInit2(pAC, IoC);
-
-               /* Level 2 successfully passed */
-               pAC->GIni.GILevel = SK_INIT_RUN;
-               break;
-
-       default:
-               SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E003, SKERR_HWI_E003MSG);
-               RetVal = 3;
-               break;
-       }
-
-       return(RetVal);
-}      /* SkGeInit */
-
-
-/******************************************************************************
- *
- *     SkGeDeInit() - Deinitialize the adapter
- *
- * Description:
- *     All ports of the adapter will be stopped if not already done.
- *     Do a software reset and switch off all LEDs.
- *
- * Returns:
- *     nothing
- */
-void SkGeDeInit(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC)            /* IO context */
-{
-       int     i;
-       SK_U16  Word;
-
-#ifndef VCPU
-       /* ensure I2C is ready */
-       SkI2cWaitIrq(pAC, IoC);
-#endif
-
-       /* stop all current transfer activity */
-       for (i = 0; i < pAC->GIni.GIMacsFound; i++) {
-               if (pAC->GIni.GP[i].PState != SK_PRT_STOP &&
-                       pAC->GIni.GP[i].PState != SK_PRT_RESET) {
-
-                       SkGeStopPort(pAC, IoC, i, SK_STOP_ALL, SK_HARD_RST);
-               }
-       }
-
-       /* Reset all bits in the PCI STATUS register */
-       /*
-        * Note: PCI Cfg cycles cannot be used, because they are not
-        *       available on some platforms after 'boot time'.
-        */
-       SK_IN16(IoC, PCI_C(PCI_STATUS), &Word);
-
-       SK_OUT8(IoC, B2_TST_CTRL1, TST_CFG_WRITE_ON);
-       SK_OUT16(IoC, PCI_C(PCI_STATUS), Word | PCI_ERRBITS);
-       SK_OUT8(IoC, B2_TST_CTRL1, TST_CFG_WRITE_OFF);
-
-       /* do the reset, all LEDs are switched off now */
-       SK_OUT8(IoC, B0_CTST, CS_RST_SET);
-}      /* SkGeDeInit */
-
-
-/******************************************************************************
- *
- *     SkGeInitPort()  Initialize the specified port.
- *
- * Description:
- *     PRxQSize, PXSQSize, and PXAQSize has to be
- *     configured for the specified port before calling this function.
- *  The descriptor rings has to be initialized too.
- *
- *     o (Re)configure queues of the specified port.
- *     o configure the MAC of the specified port.
- *     o put ASIC and MAC(s) in operational mode.
- *     o initialize Rx/Tx and Sync LED
- *     o initialize RAM Buffers and MAC FIFOs
- *
- *     The port is ready to connect when returning.
- *
- * Note:
- *     The MAC's Rx and Tx state machine is still disabled when returning.
- *
- * Returns:
- *     0:      success
- *     1:      Queue size initialization error. The configured values
- *             for PRxQSize, PXSQSize, or PXAQSize are invalid for one
- *             or more queues. The specified port was NOT initialized.
- *             An error log entry was generated.
- *     2:      The port has to be stopped before it can be initialized again.
- */
-int SkGeInitPort(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* IO context */
-int            Port)           /* Port to configure */
-{
-       SK_GEPORT *pPrt;
-
-       pPrt = &pAC->GIni.GP[Port];
-
-       if (SkGeCheckQSize(pAC, Port) != 0) {
-               SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E004, SKERR_HWI_E004MSG);
-               return(1);
-       }
-
-       if (pPrt->PState == SK_PRT_INIT || pPrt->PState == SK_PRT_RUN) {
-               SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E005, SKERR_HWI_E005MSG);
-               return(2);
-       }
-
-       /* configuration ok, initialize the Port now */
-
-       if (pAC->GIni.GIGenesis) {
-               /* initialize Rx, Tx and Link LED */
-               /*
-                * If 1000BT Phy needs LED initialization than swap
-                * LED and XMAC initialization order
-                */
-               SkGeXmitLED(pAC, IoC, MR_ADDR(Port, TX_LED_INI), SK_LED_ENA);
-               SkGeXmitLED(pAC, IoC, MR_ADDR(Port, RX_LED_INI), SK_LED_ENA);
-               /* The Link LED is initialized by RLMT or Diagnostics itself */
-
-               SkXmInitMac(pAC, IoC, Port);
-       }
-       else {
-
-               SkGmInitMac(pAC, IoC, Port);
-       }
-
-       /* do NOT initialize the Link Sync Counter */
-
-       SkGeInitMacFifo(pAC, IoC, Port);
-
-       SkGeInitRamBufs(pAC, IoC, Port);
-
-       if (pPrt->PXSQSize != 0) {
-               /* enable Force Sync bit if synchronous queue available */
-               SK_OUT8(IoC, MR_ADDR(Port, TXA_CTRL), TXA_ENA_FSYNC);
-       }
-
-       SkGeInitBmu(pAC, IoC, Port);
-
-       /* mark port as initialized */
-       pPrt->PState = SK_PRT_INIT;
-
-       return(0);
-}      /* SkGeInitPort */
+/******************************************************************************
+ *
+ * Name:       skgeinit.c
+ * Project:    GEnesis, PCI Gigabit Ethernet Adapter
+ * Version:    $Revision: 1.1.1.1 $
+ * Date:       $Date: 2009/03/25 22:22:09 $
+ * Purpose:    Contains functions to initialize the GE HW
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ *     (C)Copyright 1998-2003 SysKonnect GmbH.
+ *
+ *     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.
+ *
+ *     The information in this file is provided "AS IS" without warranty.
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ * History:
+ *
+ *     $Log: skgeinit.c,v $
+ *     Revision 1.1.1.1  2009/03/25 22:22:09  kenagy
+ *     no message
+ *     
+ *     Revision 1.85  2003/02/05 15:30:33  rschmidt
+ *     Corrected setting of GIHstClkFact (Host Clock Factor) and
+ *     GIPollTimerVal (Descr. Poll Timer Init Value) for YUKON.
+ *     Editorial changes.
+ *
+ *     Revision 1.84  2003/01/28 09:57:25  rschmidt
+ *     Added detection of YUKON-Lite Rev. A0 (stored in GIYukonLite).
+ *     Disabled Rx GMAC FIFO Flush for YUKON-Lite Rev. A0.
+ *     Added support for CLK_RUN (YUKON-Lite).
+ *     Added additional check of PME from D3cold for setting GIVauxAvail.
+ *     Editorial changes.
+ *
+ *     Revision 1.83  2002/12/17 16:15:41  rschmidt
+ *     Added default setting of PhyType (Copper) for YUKON.
+ *     Added define around check for HW self test results.
+ *     Editorial changes.
+ *
+ *     Revision 1.82  2002/12/05 13:40:21  rschmidt
+ *     Added setting of Rx GMAC FIFO Flush Mask register.
+ *     Corrected PhyType with new define SK_PHY_MARV_FIBER when
+ *     YUKON Fiber board was found.
+ *     Editorial changes.
+ *
+ *     Revision 1.81  2002/11/15 12:48:35  rschmidt
+ *     Replaced message SKERR_HWI_E018 with SKERR_HWI_E024 for Rx queue error
+ *     in SkGeStopPort().
+ *     Added init for pAC->GIni.GIGenesis with SK_FALSE in YUKON-branch.
+ *     Editorial changes.
+ *
+ *     Revision 1.80  2002/11/12 17:28:30  rschmidt
+ *     Initialized GIPciSlot64 and GIPciClock66 in SkGeInit1().
+ *     Reduced PCI FIFO watermarks for 32bit/33MHz bus in SkGeInitBmu().
+ *     Editorial changes.
+ *
+ *     Revision 1.79  2002/10/21 09:31:02  mkarl
+ *     Changed SkGeInitAssignRamToQueues(), removed call to
+ *     SkGeInitAssignRamToQueues in SkGeInit1 and fixed compiler warning in
+ *     SkGeInit1.
+ *
+ *     Revision 1.78  2002/10/16 15:55:07  mkarl
+ *     Fixed a bug in SkGeInitAssignRamToQueues.
+ *
+ *     Revision 1.77  2002/10/14 15:07:22  rschmidt
+ *     Corrected timeout handling for Rx queue in SkGeStopPort() (#10748)
+ *     Editorial changes.
+ *
+ *     Revision 1.76  2002/10/11 09:24:38  mkarl
+ *     Added check for HW self test results.
+ *
+ *     Revision 1.75  2002/10/09 16:56:44  mkarl
+ *     Now call SkGeInitAssignRamToQueues() in Init Level 1 in order to assign
+ *     the adapter memory to the queues. This default assignment is not suitable
+ *     for dual net mode.
+ *
+ *     Revision 1.74  2002/09/12 08:45:06  rwahl
+ *     Set defaults for PMSCap, PLinkSpeed & PLinkSpeedCap dependent on PHY.
+ *
+ *     Revision 1.73  2002/08/16 15:19:45  rschmidt
+ *     Corrected check for Tx queues in SkGeCheckQSize().
+ *     Added init for new entry GIGenesis and GICopperType
+ *     Replaced all if(GIChipId == CHIP_ID_GENESIS) with new entry GIGenesis.
+ *     Replaced wrong 1st para pAC with IoC in SK_IN/OUT macros.
+ *
+ *     Revision 1.72  2002/08/12 13:38:55  rschmidt
+ *     Added check if VAUX is available (stored in GIVauxAvail)
+ *     Initialized PLinkSpeedCap in Port struct with SK_LSPEED_CAP_1000MBPS
+ *     Editorial changes.
+ *
+ *     Revision 1.71  2002/08/08 16:32:58  rschmidt
+ *     Added check for Tx queues in SkGeCheckQSize().
+ *     Added start of Time Stamp Timer (YUKON) in SkGeInit2().
+ *     Editorial changes.
+ *
+ *     Revision 1.70  2002/07/23 16:04:26  rschmidt
+ *     Added init for GIWolOffs (HW-Bug in YUKON 1st rev.)
+ *     Minor changes
+ *
+ *     Revision 1.69  2002/07/17 17:07:08  rwahl
+ *     - SkGeInit1(): fixed PHY type debug output; corrected init of GIFunc
+ *       table & GIMacType.
+ *     - Editorial changes.
+ *
+ *     Revision 1.68  2002/07/15 18:38:31  rwahl
+ *     Added initialization for MAC type dependent function table.
+ *
+ *     Revision 1.67  2002/07/15 15:45:39  rschmidt
+ *     Added Tx Store & Forward for YUKON (GMAC Tx FIFO is only 1 kB)
+ *     Replaced SK_PHY_MARV by SK_PHY_MARV_COPPER
+ *     Editorial changes
+ *
+ *     Revision 1.66  2002/06/10 09:35:08  rschmidt
+ *     Replaced C++ comments (//)
+ *     Editorial changes
+ *
+ *     Revision 1.65  2002/06/05 08:33:37  rschmidt
+ *     Changed GIRamSize and Reset sequence for YUKON.
+ *     SkMacInit() replaced by SkXmInitMac() resp. SkGmInitMac()
+ *
+ *     Revision 1.64  2002/04/25 13:03:20  rschmidt
+ *     Changes for handling YUKON.
+ *     Removed reference to xmac_ii.h (not necessary).
+ *     Moved all defines into header file.
+ *     Replaced all SkXm...() functions with SkMac...() to handle also
+ *     YUKON's GMAC.
+ *     Added handling for GMAC FIFO in SkGeInitMacFifo(), SkGeStopPort().
+ *     Removed 'goto'-directive from SkGeCfgSync(), SkGeCheckQSize().
+ *     Replaced all XMAC-access macros by functions: SkMacRxTxDisable(),
+ *     SkMacFlushTxFifo().
+ *     Optimized timeout handling in SkGeStopPort().
+ *     Initialized PLinkSpeed in Port struct with SK_LSPEED_AUTO.
+ *     Release of GMAC Link Control reset in SkGeInit1().
+ *     Initialized GIChipId and GIChipRev in GE Init structure.
+ *     Added GIRamSize and PhyType values for YUKON.
+ *     Removed use of PRxCmd to setup XMAC.
+ *     Moved setting of XM_RX_DIS_CEXT to SkXmInitMac().
+ *     Use of SkGeXmitLED() only for GENESIS.
+ *     Changes for V-CPU support.
+ *     Editorial changes.
+ *
+ *     Revision 1.63  2001/04/05 11:02:09  rassmann
+ *     Stop Port check of the STOP bit did not take 2/18 sec as wanted.
+ *
+ *     Revision 1.62  2001/02/07 07:54:21  rassmann
+ *     Corrected copyright.
+ *
+ *     Revision 1.61  2001/01/31 15:31:40  gklug
+ *     fix: problem with autosensing an SR8800 switch
+ *
+ *     Revision 1.60  2000/10/18 12:22:21  cgoos
+ *     Added workaround for half duplex hangup.
+ *
+ *     Revision 1.59  2000/10/10 11:22:06  gklug
+ *     add: in manual half duplex mode ignore carrier extension errors
+ *
+ *     Revision 1.58  2000/10/02 14:10:27  rassmann
+ *     Reading BCOM PHY after releasing reset until it returns a valid value.
+ *
+ *     Revision 1.57  2000/08/03 14:55:28  rassmann
+ *     Waiting for I2C to be ready before de-initializing adapter
+ *     (prevents sensors from hanging up).
+ *
+ *     Revision 1.56  2000/07/27 12:16:48  gklug
+ *     fix: Stop Port check of the STOP bit does now take 2/18 sec as wanted
+ *
+ *     Revision 1.55  1999/11/22 13:32:26  cgoos
+ *     Changed license header to GPL.
+ *
+ *     Revision 1.54  1999/10/26 07:32:54  malthoff
+ *     Initialize PHWLinkUp with SK_FALSE. Required for Diagnostics.
+ *
+ *     Revision 1.53  1999/08/12 19:13:50  malthoff
+ *     Fix for 1000BT. Do not owerwrite XM_MMU_CMD when
+ *     disabling receiver and transmitter. Other bits
+ *     may be lost.
+ *
+ *     Revision 1.52  1999/07/01 09:29:54  gklug
+ *     fix: DoInitRamQueue needs pAC
+ *
+ *     Revision 1.51  1999/07/01 08:42:21  gklug
+ *     chg: use Store & forward for RAM buffer when Jumbos are used
+ *
+ *     Revision 1.50  1999/05/27 13:19:38  cgoos
+ *     Added Tx PCI watermark initialization.
+ *     Removed Tx RAM queue Store & Forward setting.
+ *
+ *     Revision 1.49  1999/05/20 14:32:45  malthoff
+ *     SkGeLinkLED() is completly removed now.
+ *
+ *     Revision 1.48  1999/05/19 07:28:24  cgoos
+ *     SkGeLinkLED no more available for drivers.
+ *     Changes for 1000Base-T.
+ *
+ *     Revision 1.47  1999/04/08 13:57:45  gklug
+ *     add: Init of new port struct fiels PLinkResCt
+ *     chg: StopPort Timer check
+ *
+ *     Revision 1.46  1999/03/25 07:42:15  malthoff
+ *     SkGeStopPort(): Add workaround for cache incoherency.
+ *                     Create error log entry, disable port, and
+ *                     exit loop if it does not terminate.
+ *     Add XM_RX_LENERR_OK to the default value for the
+ *     XMAC receive command register.
+ *
+ *     Revision 1.45  1999/03/12 16:24:47  malthoff
+ *     Remove PPollRxD and PPollTxD.
+ *     Add check for GIPollTimerVal.
+ *
+ *     Revision 1.44  1999/03/12 13:40:23  malthoff
+ *     Fix: SkGeXmitLED(), SK_LED_TST mode does not work.
+ *     Add: Jumbo frame support.
+ *     Chg: Resolution of parameter IntTime in SkGeCfgSync().
+ *
+ *     Revision 1.43  1999/02/09 10:29:46  malthoff
+ *     Bugfix: The previous modification again also for the second location.
+ *
+ *     Revision 1.42  1999/02/09 09:35:16  malthoff
+ *     Bugfix: The bits '66 MHz Capable' and 'NEWCAP are reset while
+ *             clearing the error bits in the PCI status register.
+ *
+ *     Revision 1.41  1999/01/18 13:07:02  malthoff
+ *     Bugfix: Do not use CFG cycles after during Init- or Runtime, because
+ *             they may not be available after Boottime.
+ *
+ *     Revision 1.40  1999/01/11 12:40:49  malthoff
+ *     Bug fix: PCI_STATUS: clearing error bits sets the UDF bit.
+ *
+ *     Revision 1.39  1998/12/11 15:17:33  gklug
+ *     chg: Init LipaAutoNeg with Unknown
+ *
+ *     Revision 1.38  1998/12/10 11:02:57  malthoff
+ *     Disable Error Log Message when calling SkGeInit(level 2)
+ *     more than once.
+ *
+ *     Revision 1.37  1998/12/07 12:18:25  gklug
+ *     add: refinement of autosense mode: take into account the autoneg cap of LiPa
+ *
+ *     Revision 1.36  1998/12/07 07:10:39  gklug
+ *     fix: init values of LinkBroken/ Capabilities for management
+ *
+ *     Revision 1.35  1998/12/02 10:56:20  gklug
+ *     fix: do NOT init LoinkSync Counter.
+ *
+ *     Revision 1.34  1998/12/01 10:53:21  gklug
+ *     add: init of additional Counters for workaround
+ *
+ *     Revision 1.33  1998/12/01 10:00:49  gklug
+ *     add: init PIsave var in Port struct
+ *
+ *     Revision 1.32  1998/11/26 14:50:40  gklug
+ *     chg: Default is autosensing with AUTOFULL mode
+ *
+ *     Revision 1.31  1998/11/25 15:36:16  gklug
+ *     fix: do NOT stop LED Timer when port should be stopped
+ *
+ *     Revision 1.30  1998/11/24 13:15:28  gklug
+ *     add: Init PCkeckPar struct member
+ *
+ *     Revision 1.29  1998/11/18 13:19:27  malthoff
+ *     Disable packet arbiter timeouts on receive side.
+ *     Use maximum timeout value for packet arbiter
+ *     transmit timeouts.
+ *     Add TestStopBit() function to handle stop RX/TX
+ *     problem with active descriptor poll timers.
+ *     Bug Fix: Descriptor Poll Timer not started, because
+ *     GIPollTimerVal was initialized with 0.
+ *
+ *     Revision 1.28  1998/11/13 14:24:26  malthoff
+ *     Bug Fix: SkGeStopPort() may hang if a Packet Arbiter Timout
+ *     is pending or occurs while waiting for TX_STOP and RX_STOP.
+ *     The PA timeout is cleared now while waiting for TX- or RX_STOP.
+ *
+ *     Revision 1.27  1998/11/02 11:04:36  malthoff
+ *     fix the last fix
+ *
+ *     Revision 1.26  1998/11/02 10:37:03  malthoff
+ *     Fix: SkGePollTxD() enables always the synchronounous poll timer.
+ *
+ *     Revision 1.25  1998/10/28 07:12:43  cgoos
+ *     Fixed "LED_STOP" in SkGeLnkSyncCnt, "== SK_INIT_IO" in SkGeInit.
+ *     Removed: Reset of RAM Interface in SkGeStopPort.
+ *
+ *     Revision 1.24  1998/10/27 08:13:12  malthoff
+ *     Remove temporary code.
+ *
+ *     Revision 1.23  1998/10/26 07:45:03  malthoff
+ *     Add Address Calculation Workaround: If the EPROM byte
+ *     Id is 3, the address offset is 512 kB.
+ *     Initialize default values for PLinkMode and PFlowCtrlMode.
+ *
+ *     Revision 1.22  1998/10/22 09:46:47  gklug
+ *     fix SysKonnectFileId typo
+ *
+ *     Revision 1.21  1998/10/20 12:11:56  malthoff
+ *     Don't dendy the Queue config if the size of the unused
+ *     Rx qeueu is zero.
+ *
+ *     Revision 1.20  1998/10/19 07:27:58  malthoff
+ *     SkGeInitRamIface() is public to be called by diagnostics.
+ *
+ *     Revision 1.19  1998/10/16 13:33:45  malthoff
+ *     Fix: enabling descriptor polling is not allowed until
+ *     the descriptor addresses are set. Descriptor polling
+ *     must be handled by the driver.
+ *
+ *     Revision 1.18  1998/10/16 10:58:27  malthoff
+ *     Remove temp. code for Diag prototype.
+ *     Remove lint warning for dummy reads.
+ *     Call SkGeLoadLnkSyncCnt() during SkGeInitPort().
+ *
+ *     Revision 1.17  1998/10/14 09:16:06  malthoff
+ *     Change parameter LimCount and programming of
+ *     the limit counter in SkGeCfgSync().
+ *
+ *     Revision 1.16  1998/10/13 09:21:16  malthoff
+ *     Don't set XM_RX_SELF_RX in RxCmd Reg, because it's
+ *     like a Loopback Mode in half duplex.
+ *
+ *     Revision 1.15  1998/10/09 06:47:40  malthoff
+ *     SkGeInitMacArb(): set recovery counters init value
+ *     to zero although this counters are not uesd.
+ *     Bug fix in Rx Upper/Lower Pause Threshold calculation.
+ *     Add XM_RX_SELF_RX to RxCmd.
+ *
+ *     Revision 1.14  1998/10/06 15:15:53  malthoff
+ *     Make sure no pending IRQ is cleared in SkGeLoadLnkSyncCnt().
+ *
+ *     Revision 1.13  1998/10/06 14:09:36  malthoff
+ *     Add SkGeLoadLnkSyncCnt(). Modify
+ *     the 'port stopped' condition according
+ *     to the current problem report.
+ *
+ *     Revision 1.12  1998/10/05 08:17:21  malthoff
+ *     Add functions: SkGePollRxD(), SkGePollTxD(),
+ *     DoCalcAddr(), SkGeCheckQSize(),
+ *     DoInitRamQueue(), and SkGeCfgSync().
+ *     Add coding for SkGeInitMacArb(), SkGeInitPktArb(),
+ *     SkGeInitMacFifo(), SkGeInitRamBufs(),
+ *     SkGeInitRamIface(), and SkGeInitBmu().
+ *
+ *     Revision 1.11  1998/09/29 08:26:29  malthoff
+ *     bug fix: SkGeInit0() 'i' should be increment.
+ *
+ *     Revision 1.10  1998/09/28 13:19:01  malthoff
+ *     Coding time: Save the done work.
+ *     Modify SkGeLinkLED(), add SkGeXmitLED(),
+ *     define SkGeCheckQSize(), SkGeInitMacArb(),
+ *     SkGeInitPktArb(), SkGeInitMacFifo(),
+ *     SkGeInitRamBufs(), SkGeInitRamIface(),
+ *     and SkGeInitBmu(). Do coding for SkGeStopPort(),
+ *     SkGeInit1(), SkGeInit2(), and SkGeInit3().
+ *     Do coding for SkGeDinit() and SkGeInitPort().
+ *
+ *     Revision 1.9  1998/09/16 14:29:05  malthoff
+ *     Some minor changes.
+ *
+ *     Revision 1.8  1998/09/11 05:29:14  gklug
+ *     add: init state of a port
+ *
+ *     Revision 1.7  1998/09/04 09:26:25  malthoff
+ *     Short temporary modification.
+ *
+ *     Revision 1.6  1998/09/04 08:27:59  malthoff
+ *     Remark the do-while in StopPort() because it never ends
+ *     without a GE adapter.
+ *
+ *     Revision 1.5  1998/09/03 14:05:45  malthoff
+ *     Change comment for SkGeInitPort(). Do not
+ *     repair the queue sizes if invalid.
+ *
+ *     Revision 1.4  1998/09/03 10:03:19  malthoff
+ *     Implement the new interface according to the
+ *     reviewed interface specification.
+ *
+ *     Revision 1.3  1998/08/19 09:11:25  gklug
+ *     fix: struct are removed from c-source (see CCC)
+ *
+ *     Revision 1.2  1998/07/28 12:33:58  malthoff
+ *     Add 'IoC' parameter in function declaration and SK IO macros.
+ *
+ *     Revision 1.1  1998/07/23 09:48:57  malthoff
+ *     Creation. First dummy 'C' file.
+ *     SkGeInit(Level 0) is card_start for GE.
+ *     SkGeDeInit() is card_stop for GE.
+ *
+ *
+ ******************************************************************************/
+
+#include <config.h>
+
+#include "h/skdrv1st.h"
+#include "h/skdrv2nd.h"
+
+/* global variables ***********************************************************/
+
+/* local variables ************************************************************/
+
+static const char SysKonnectFileId[] =
+       "@(#)$Id: skgeinit.c,v 1.1.1.1 2009/03/25 22:22:09 kenagy Exp $ (C) SK ";
+
+struct s_QOffTab {
+       int     RxQOff;         /* Receive Queue Address Offset */
+       int     XsQOff;         /* Sync Tx Queue Address Offset */
+       int     XaQOff;         /* Async Tx Queue Address Offset */
+};
+static struct s_QOffTab QOffTab[] = {
+       {Q_R1, Q_XS1, Q_XA1}, {Q_R2, Q_XS2, Q_XA2}
+};
+
+
+/******************************************************************************
+ *
+ *     SkGePollRxD() - Enable / Disable Descriptor Polling of RxD Ring
+ *
+ * Description:
+ *     Enable or disable the descriptor polling of the receive descriptor
+ *     ring (RxD) for port 'Port'.
+ *     The new configuration is *not* saved over any SkGeStopPort() and
+ *     SkGeInitPort() calls.
+ *
+ * Returns:
+ *     nothing
+ */
+void SkGePollRxD(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* IO context */
+int            Port,           /* Port Index (MAC_1 + n) */
+SK_BOOL PollRxD)       /* SK_TRUE (enable pol.), SK_FALSE (disable pol.) */
+{
+       SK_GEPORT *pPrt;
+
+       pPrt = &pAC->GIni.GP[Port];
+
+       SK_OUT32(IoC, Q_ADDR(pPrt->PRxQOff, Q_CSR), (PollRxD) ?
+               CSR_ENA_POL : CSR_DIS_POL);
+}      /* SkGePollRxD */
+
+
+/******************************************************************************
+ *
+ *     SkGePollTxD() - Enable / Disable Descriptor Polling of TxD Rings
+ *
+ * Description:
+ *     Enable or disable the descriptor polling of the transmit descriptor
+ *     ring(s) (TxD) for port 'Port'.
+ *     The new configuration is *not* saved over any SkGeStopPort() and
+ *     SkGeInitPort() calls.
+ *
+ * Returns:
+ *     nothing
+ */
+void SkGePollTxD(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* IO context */
+int            Port,           /* Port Index (MAC_1 + n) */
+SK_BOOL PollTxD)       /* SK_TRUE (enable pol.), SK_FALSE (disable pol.) */
+{
+       SK_GEPORT *pPrt;
+       SK_U32  DWord;
+
+       pPrt = &pAC->GIni.GP[Port];
+
+       DWord = (PollTxD) ? CSR_ENA_POL : CSR_DIS_POL;
+
+       if (pPrt->PXSQSize != 0) {
+               SK_OUT32(IoC, Q_ADDR(pPrt->PXsQOff, Q_CSR), DWord);
+       }
+
+       if (pPrt->PXAQSize != 0) {
+               SK_OUT32(IoC, Q_ADDR(pPrt->PXaQOff, Q_CSR), DWord);
+       }
+}      /* SkGePollTxD */
+
+
+/******************************************************************************
+ *
+ *     SkGeYellowLED() - Switch the yellow LED on or off.
+ *
+ * Description:
+ *     Switch the yellow LED on or off.
+ *
+ * Note:
+ *     This function may be called any time after SkGeInit(Level 1).
+ *
+ * Returns:
+ *     nothing
+ */
+void SkGeYellowLED(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* IO context */
+int            State)          /* yellow LED state, 0 = OFF, 0 != ON */
+{
+       if (State == 0) {
+               /* Switch yellow LED OFF */
+               SK_OUT8(IoC, B0_LED, LED_STAT_OFF);
+       }
+       else {
+               /* Switch yellow LED ON */
+               SK_OUT8(IoC, B0_LED, LED_STAT_ON);
+       }
+}      /* SkGeYellowLED */
+
+
+/******************************************************************************
+ *
+ *     SkGeXmitLED() - Modify the Operational Mode of a transmission LED.
+ *
+ * Description:
+ *     The Rx or Tx LED which is specified by 'Led' will be
+ *     enabled, disabled or switched on in test mode.
+ *
+ * Note:
+ *     'Led' must contain the address offset of the LEDs INI register.
+ *
+ * Usage:
+ *     SkGeXmitLED(pAC, IoC, MR_ADDR(Port, TX_LED_INI), SK_LED_ENA);
+ *
+ * Returns:
+ *     nothing
+ */
+void SkGeXmitLED(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* IO context */
+int            Led,            /* offset to the LED Init Value register */
+int            Mode)           /* Mode may be SK_LED_DIS, SK_LED_ENA, SK_LED_TST */
+{
+       SK_U32  LedIni;
+
+       switch (Mode) {
+       case SK_LED_ENA:
+               LedIni = SK_XMIT_DUR * (SK_U32)pAC->GIni.GIHstClkFact / 100;
+               SK_OUT32(IoC, Led + XMIT_LED_INI, LedIni);
+               SK_OUT8(IoC, Led + XMIT_LED_CTRL, LED_START);
+               break;
+       case SK_LED_TST:
+               SK_OUT8(IoC, Led + XMIT_LED_TST, LED_T_ON);
+               SK_OUT32(IoC, Led + XMIT_LED_CNT, 100);
+               SK_OUT8(IoC, Led + XMIT_LED_CTRL, LED_START);
+               break;
+       case SK_LED_DIS:
+       default:
+               /*
+                * Do NOT stop the LED Timer here. The LED might be
+                * in on state. But it needs to go off.
+                */
+               SK_OUT32(IoC, Led + XMIT_LED_CNT, 0);
+               SK_OUT8(IoC, Led + XMIT_LED_TST, LED_T_OFF);
+               break;
+       }
+
+       /*
+        * 1000BT: The Transmit LED is driven by the PHY.
+        * But the default LED configuration is used for
+        * Level One and Broadcom PHYs.
+        * (Broadcom: It may be that PHY_B_PEC_EN_LTR has to be set.)
+        * (In this case it has to be added here. But we will see. XXX)
+        */
+}      /* SkGeXmitLED */
+
+
+/******************************************************************************
+ *
+ *     DoCalcAddr() - Calculates the start and the end address of a queue.
+ *
+ * Description:
+ *     This function calculates the start and the end address of a queue.
+ *  Afterwards the 'StartVal' is incremented to the next start position.
+ *     If the port is already initialized the calculated values
+ *     will be checked against the configured values and an
+ *     error will be returned, if they are not equal.
+ *     If the port is not initialized the values will be written to
+ *     *StartAdr and *EndAddr.
+ *
+ * Returns:
+ *     0:      success
+ *     1:      configuration error
+ */
+static int DoCalcAddr(
+SK_AC          *pAC,                   /* adapter context */
+SK_GEPORT      *pPrt,                  /* port index */
+int                    QuSize,                 /* size of the queue to configure in kB */
+SK_U32         *StartVal,              /* start value for address calculation */
+SK_U32         *QuStartAddr,   /* start addr to calculate */
+SK_U32         *QuEndAddr)             /* end address to calculate */
+{
+       SK_U32  EndVal;
+       SK_U32  NextStart;
+       int             Rtv;
+
+       Rtv = 0;
+       if (QuSize == 0) {
+               EndVal = *StartVal;
+               NextStart = EndVal;
+       }
+       else {
+               EndVal = *StartVal + ((SK_U32)QuSize * 1024) - 1;
+               NextStart = EndVal + 1;
+       }
+
+       if (pPrt->PState >= SK_PRT_INIT) {
+               if (*StartVal != *QuStartAddr || EndVal != *QuEndAddr) {
+                       Rtv = 1;
+               }
+       }
+       else {
+               *QuStartAddr = *StartVal;
+               *QuEndAddr = EndVal;
+       }
+
+       *StartVal = NextStart;
+       return(Rtv);
+}      /* DoCalcAddr */
+
+/******************************************************************************
+ *
+ *     SkGeInitAssignRamToQueues() - allocate default queue sizes
+ *
+ * Description:
+ *     This function assigns the memory to the different queues and ports.
+ *     When DualNet is set to SK_TRUE all ports get the same amount of memory.
+ *  Otherwise the first port gets most of the memory and all the
+ *     other ports just the required minimum.
+ *     This function can only be called when pAC->GIni.GIRamSize and
+ *     pAC->GIni.GIMacsFound have been initialized, usually this happens
+ *     at init level 1
+ *
+ * Returns:
+ *     0 - ok
+ *     1 - invalid input values
+ *     2 - not enough memory
+ */
+
+int SkGeInitAssignRamToQueues(
+SK_AC  *pAC,                   /* Adapter context */
+int            ActivePort,             /* Active Port in RLMT mode */
+SK_BOOL        DualNet)                /* adapter context */
+{
+       int     i;
+       int     UsedKilobytes;                  /* memory already assigned */
+       int     ActivePortKilobytes;    /* memory available for active port */
+       SK_GEPORT *pGePort;
+
+       UsedKilobytes = 0;
+
+       if (ActivePort >= pAC->GIni.GIMacsFound) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_INIT,
+                       ("SkGeInitAssignRamToQueues: ActivePort (%d) invalid\n",
+                       ActivePort));
+               return(1);
+       }
+       if (((pAC->GIni.GIMacsFound * (SK_MIN_RXQ_SIZE + SK_MIN_TXQ_SIZE)) +
+               ((RAM_QUOTA_SYNC == 0) ? 0 : SK_MIN_TXQ_SIZE)) > pAC->GIni.GIRamSize) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_INIT,
+                       ("SkGeInitAssignRamToQueues: Not enough memory (%d)\n",
+                        pAC->GIni.GIRamSize));
+               return(2);
+       }
+
+
+       if (DualNet) {
+               /* every port gets the same amount of memory */
+               ActivePortKilobytes = pAC->GIni.GIRamSize / pAC->GIni.GIMacsFound;
+               for (i = 0; i < pAC->GIni.GIMacsFound; i++) {
+
+                       pGePort = &pAC->GIni.GP[i];
+
+                       /* take away the minimum memory for active queues */
+                       ActivePortKilobytes -= (SK_MIN_RXQ_SIZE + SK_MIN_TXQ_SIZE);
+
+                       /* receive queue gets the minimum + 80% of the rest */
+                       pGePort->PRxQSize = (int) (ROUND_QUEUE_SIZE_KB((
+                               ActivePortKilobytes * (unsigned long) RAM_QUOTA_RX) / 100))
+                               + SK_MIN_RXQ_SIZE;
+
+                       ActivePortKilobytes -= (pGePort->PRxQSize - SK_MIN_RXQ_SIZE);
+
+                       /* synchronous transmit queue */
+                       pGePort->PXSQSize = 0;
+
+                       /* asynchronous transmit queue */
+                       pGePort->PXAQSize = (int) ROUND_QUEUE_SIZE_KB(ActivePortKilobytes +
+                               SK_MIN_TXQ_SIZE);
+               }
+       }
+       else {
+               /* Rlmt Mode or single link adapter */
+
+               /* Set standby queue size defaults for all standby ports */
+               for (i = 0; i < pAC->GIni.GIMacsFound; i++) {
+
+                       if (i != ActivePort) {
+                               pGePort = &pAC->GIni.GP[i];
+
+                               pGePort->PRxQSize = SK_MIN_RXQ_SIZE;
+                               pGePort->PXAQSize = SK_MIN_TXQ_SIZE;
+                               pGePort->PXSQSize = 0;
+
+                               /* Count used RAM */
+                               UsedKilobytes += pGePort->PRxQSize + pGePort->PXAQSize;
+                       }
+               }
+               /* what's left? */
+               ActivePortKilobytes = pAC->GIni.GIRamSize - UsedKilobytes;
+
+               /* assign it to the active port */
+               /* first take away the minimum memory */
+               ActivePortKilobytes -= (SK_MIN_RXQ_SIZE + SK_MIN_TXQ_SIZE);
+               pGePort = &pAC->GIni.GP[ActivePort];
+
+               /* receive queue get's the minimum + 80% of the rest */
+               pGePort->PRxQSize = (int) (ROUND_QUEUE_SIZE_KB((ActivePortKilobytes *
+                       (unsigned long) RAM_QUOTA_RX) / 100)) + SK_MIN_RXQ_SIZE;
+
+               ActivePortKilobytes -= (pGePort->PRxQSize - SK_MIN_RXQ_SIZE);
+
+               /* synchronous transmit queue */
+               pGePort->PXSQSize = 0;
+
+               /* asynchronous transmit queue */
+               pGePort->PXAQSize = (int) ROUND_QUEUE_SIZE_KB(ActivePortKilobytes) +
+                       SK_MIN_TXQ_SIZE;
+       }
+#ifdef VCPU
+       VCPUprintf(0, "PRxQSize=%u, PXSQSize=%u, PXAQSize=%u\n",
+               pGePort->PRxQSize, pGePort->PXSQSize, pGePort->PXAQSize);
+#endif /* VCPU */
+
+       return(0);
+}      /* SkGeInitAssignRamToQueues */
+
+/******************************************************************************
+ *
+ *     SkGeCheckQSize() - Checks the Adapters Queue Size Configuration
+ *
+ * Description:
+ *     This function verifies the Queue Size Configuration specified
+ *     in the variables PRxQSize, PXSQSize, and PXAQSize of all
+ *     used ports.
+ *     This requirements must be fullfilled to have a valid configuration:
+ *             - The size of all queues must not exceed GIRamSize.
+ *             - The queue sizes must be specified in units of 8 kB.
+ *             - The size of Rx queues of available ports must not be
+ *               smaller than 16 kB.
+ *             - The size of at least one Tx queue (synch. or asynch.)
+ *        of available ports must not be smaller than 16 kB
+ *        when Jumbo Frames are used.
+ *             - The RAM start and end addresses must not be changed
+ *               for ports which are already initialized.
+ *     Furthermore SkGeCheckQSize() defines the Start and End Addresses
+ *  of all ports and stores them into the HWAC port    structure.
+ *
+ * Returns:
+ *     0:      Queue Size Configuration valid
+ *     1:      Queue Size Configuration invalid
+ */
+static int SkGeCheckQSize(
+SK_AC   *pAC,          /* adapter context */
+int             Port)          /* port index */
+{
+       SK_GEPORT *pPrt;
+       int     UsedMem;        /* total memory used (max. found ports) */
+       int     i;
+       int     Rtv;
+       int     Rtv2;
+       SK_U32  StartAddr;
+
+       UsedMem = 0;
+       Rtv = 0;
+       for (i = 0; i < pAC->GIni.GIMacsFound; i++) {
+               pPrt = &pAC->GIni.GP[i];
+
+               if ((pPrt->PRxQSize & QZ_UNITS) != 0 ||
+                       (pPrt->PXSQSize & QZ_UNITS) != 0 ||
+                       (pPrt->PXAQSize & QZ_UNITS) != 0) {
+
+                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E012, SKERR_HWI_E012MSG);
+                       return(1);
+               }
+
+               if (i == Port && pPrt->PRxQSize < SK_MIN_RXQ_SIZE) {
+                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E011, SKERR_HWI_E011MSG);
+                       return(1);
+               }
+
+               /*
+                * the size of at least one Tx queue (synch. or asynch.) has to be > 0.
+                * if Jumbo Frames are used, this size has to be >= 16 kB.
+                */
+               if ((i == Port && pPrt->PXSQSize == 0 && pPrt->PXAQSize == 0) ||
+                       (pAC->GIni.GIPortUsage == SK_JUMBO_LINK &&
+           ((pPrt->PXSQSize > 0 && pPrt->PXSQSize < SK_MIN_TXQ_SIZE) ||
+                        (pPrt->PXAQSize > 0 && pPrt->PXAQSize < SK_MIN_TXQ_SIZE)))) {
+                               SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E023, SKERR_HWI_E023MSG);
+                               return(1);
+               }
+
+               UsedMem += pPrt->PRxQSize + pPrt->PXSQSize + pPrt->PXAQSize;
+       }
+
+       if (UsedMem > pAC->GIni.GIRamSize) {
+               SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E012, SKERR_HWI_E012MSG);
+               return(1);
+       }
+
+       /* Now start address calculation */
+       StartAddr = pAC->GIni.GIRamOffs;
+       for (i = 0; i < pAC->GIni.GIMacsFound; i++) {
+               pPrt = &pAC->GIni.GP[i];
+
+               /* Calculate/Check values for the receive queue */
+               Rtv2 = DoCalcAddr(pAC, pPrt, pPrt->PRxQSize, &StartAddr,
+                       &pPrt->PRxQRamStart, &pPrt->PRxQRamEnd);
+               Rtv |= Rtv2;
+
+               /* Calculate/Check values for the synchronous Tx queue */
+               Rtv2 = DoCalcAddr(pAC, pPrt, pPrt->PXSQSize, &StartAddr,
+                       &pPrt->PXsQRamStart, &pPrt->PXsQRamEnd);
+               Rtv |= Rtv2;
+
+               /* Calculate/Check values for the asynchronous Tx queue */
+               Rtv2 = DoCalcAddr(pAC, pPrt, pPrt->PXAQSize, &StartAddr,
+                       &pPrt->PXaQRamStart, &pPrt->PXaQRamEnd);
+               Rtv |= Rtv2;
+
+               if (Rtv) {
+                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E013, SKERR_HWI_E013MSG);
+                       return(1);
+               }
+       }
+
+       return(0);
+}      /* SkGeCheckQSize */
+
+
+/******************************************************************************
+ *
+ *     SkGeInitMacArb() - Initialize the MAC Arbiter
+ *
+ * Description:
+ *     This function initializes the MAC Arbiter.
+ *     It must not be called if there is still an
+ *     initialized or active port.
+ *
+ * Returns:
+ *     nothing
+ */
+static void SkGeInitMacArb(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC)            /* IO context */
+{
+       /* release local reset */
+       SK_OUT16(IoC, B3_MA_TO_CTRL, MA_RST_CLR);
+
+       /* configure timeout values */
+       SK_OUT8(IoC, B3_MA_TOINI_RX1, SK_MAC_TO_53);
+       SK_OUT8(IoC, B3_MA_TOINI_RX2, SK_MAC_TO_53);
+       SK_OUT8(IoC, B3_MA_TOINI_TX1, SK_MAC_TO_53);
+       SK_OUT8(IoC, B3_MA_TOINI_TX2, SK_MAC_TO_53);
+
+       SK_OUT8(IoC, B3_MA_RCINI_RX1, 0);
+       SK_OUT8(IoC, B3_MA_RCINI_RX2, 0);
+       SK_OUT8(IoC, B3_MA_RCINI_TX1, 0);
+       SK_OUT8(IoC, B3_MA_RCINI_TX2, 0);
+
+       /* recovery values are needed for XMAC II Rev. B2 only */
+       /* Fast Output Enable Mode was intended to use with Rev. B2, but now? */
+
+       /*
+        * There is no start or enable button to push, therefore
+        * the MAC arbiter is configured and enabled now.
+        */
+}      /* SkGeInitMacArb */
+
+
+/******************************************************************************
+ *
+ *     SkGeInitPktArb() - Initialize the Packet Arbiter
+ *
+ * Description:
+ *     This function initializes the Packet Arbiter.
+ *     It must not be called if there is still an
+ *     initialized or active port.
+ *
+ * Returns:
+ *     nothing
+ */
+static void SkGeInitPktArb(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC)            /* IO context */
+{
+       /* release local reset */
+       SK_OUT16(IoC, B3_PA_CTRL, PA_RST_CLR);
+
+       /* configure timeout values */
+       SK_OUT16(IoC, B3_PA_TOINI_RX1, SK_PKT_TO_MAX);
+       SK_OUT16(IoC, B3_PA_TOINI_RX2, SK_PKT_TO_MAX);
+       SK_OUT16(IoC, B3_PA_TOINI_TX1, SK_PKT_TO_MAX);
+       SK_OUT16(IoC, B3_PA_TOINI_TX2, SK_PKT_TO_MAX);
+
+       /*
+        * enable timeout timers if jumbo frames not used
+        * NOTE: the packet arbiter timeout interrupt is needed for
+        * half duplex hangup workaround
+        */
+       if (pAC->GIni.GIPortUsage != SK_JUMBO_LINK) {
+               if (pAC->GIni.GIMacsFound == 1) {
+                       SK_OUT16(IoC, B3_PA_CTRL, PA_ENA_TO_TX1);
+               }
+               else {
+                       SK_OUT16(IoC, B3_PA_CTRL, PA_ENA_TO_TX1 | PA_ENA_TO_TX2);
+               }
+       }
+}      /* SkGeInitPktArb */
+
+
+/******************************************************************************
+ *
+ *     SkGeInitMacFifo() - Initialize the MAC FIFOs
+ *
+ * Description:
+ *     Initialize all MAC FIFOs of the specified port
+ *
+ * Returns:
+ *     nothing
+ */
+static void SkGeInitMacFifo(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* IO context */
+int            Port)           /* Port Index (MAC_1 + n) */
+{
+       SK_U16  Word;
+#ifdef VCPU
+       SK_U32  DWord;
+#endif /* VCPU */
+       /*
+        * For each FIFO:
+        *      - release local reset
+        *      - use default value for MAC FIFO size
+        *      - setup defaults for the control register
+        *      - enable the FIFO
+        */
+
+       Word = GMF_RX_CTRL_DEF;
+
+       if (pAC->GIni.GIGenesis) {
+               /* Configure Rx MAC FIFO */
+               SK_OUT8(IoC, MR_ADDR(Port, RX_MFF_CTRL2), MFF_RST_CLR);
+               SK_OUT16(IoC, MR_ADDR(Port, RX_MFF_CTRL1), MFF_RX_CTRL_DEF);
+               SK_OUT8(IoC, MR_ADDR(Port, RX_MFF_CTRL2), MFF_ENA_OP_MD);
+
+               /* Configure Tx MAC FIFO */
+               SK_OUT8(IoC, MR_ADDR(Port, TX_MFF_CTRL2), MFF_RST_CLR);
+               SK_OUT16(IoC, MR_ADDR(Port, TX_MFF_CTRL1), MFF_TX_CTRL_DEF);
+               SK_OUT8(IoC, MR_ADDR(Port, TX_MFF_CTRL2), MFF_ENA_OP_MD);
+
+               /* Enable frame flushing if jumbo frames used */
+               if (pAC->GIni.GIPortUsage == SK_JUMBO_LINK) {
+                       SK_OUT16(IoC, MR_ADDR(Port, RX_MFF_CTRL1), MFF_ENA_FLUSH);
+               }
+       }
+       else {
+               /* set Rx GMAC FIFO Flush Mask */
+               SK_OUT16(IoC, MR_ADDR(Port, RX_GMF_FL_MSK), (SK_U16)RX_FF_FL_DEF_MSK);
+
+               if (pAC->GIni.GIYukonLite && pAC->GIni.GIChipId == CHIP_ID_YUKON) {
+
+                       Word &= ~GMF_RX_F_FL_ON;
+               }
+
+               /* Configure Rx MAC FIFO */
+               SK_OUT8(IoC, MR_ADDR(Port, RX_GMF_CTRL_T), (SK_U8)GMF_RST_CLR);
+               SK_OUT16(IoC, MR_ADDR(Port, RX_GMF_CTRL_T), Word);
+
+               /* set Rx GMAC FIFO Flush Threshold (default: 0x0a -> 56 bytes) */
+               SK_OUT16(IoC, MR_ADDR(Port, RX_GMF_FL_THR), RX_GMF_FL_THR_DEF);
+
+               /* Configure Tx MAC FIFO */
+               SK_OUT8(IoC, MR_ADDR(Port, TX_GMF_CTRL_T), (SK_U8)GMF_RST_CLR);
+               SK_OUT16(IoC, MR_ADDR(Port, TX_GMF_CTRL_T), (SK_U16)GMF_TX_CTRL_DEF);
+
+#ifdef VCPU
+               SK_IN32(IoC, MR_ADDR(Port, RX_GMF_AF_THR), &DWord);
+               SK_IN32(IoC, MR_ADDR(Port, TX_GMF_AE_THR), &DWord);
+#endif /* VCPU */
+
+               /* set Tx GMAC FIFO Almost Empty Threshold */
+/*             SK_OUT32(IoC, MR_ADDR(Port, TX_GMF_AE_THR), 0); */
+       }
+}      /* SkGeInitMacFifo */
+
+
+/******************************************************************************
+ *
+ *     SkGeLoadLnkSyncCnt() - Load the Link Sync Counter and starts counting
+ *
+ * Description:
+ *     This function starts the Link Sync Counter of the specified
+ *     port and enables the generation of an Link Sync IRQ.
+ *     The Link Sync Counter may be used to detect an active link,
+ *     if autonegotiation is not used.
+ *
+ * Note:
+ *     o To ensure receiving the Link Sync Event the LinkSyncCounter
+ *       should be initialized BEFORE clearing the XMAC's reset!
+ *     o Enable IS_LNK_SYNC_M1 and IS_LNK_SYNC_M2 after calling this
+ *       function.
+ *
+ * Returns:
+ *     nothing
+ */
+void SkGeLoadLnkSyncCnt(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* IO context */
+int            Port,           /* Port Index (MAC_1 + n) */
+SK_U32 CntVal)         /* Counter value */
+{
+       SK_U32  OrgIMsk;
+       SK_U32  NewIMsk;
+       SK_U32  ISrc;
+       SK_BOOL IrqPend;
+
+       /* stop counter */
+       SK_OUT8(IoC, MR_ADDR(Port, LNK_SYNC_CTRL), LED_STOP);
+
+       /*
+        * ASIC problem:
+        * Each time starting the Link Sync Counter an IRQ is generated
+        * by the adapter. See problem report entry from 21.07.98
+        *
+        * Workaround:  Disable Link Sync IRQ and clear the unexpeced IRQ
+        *              if no IRQ is already pending.
+        */
+       IrqPend = SK_FALSE;
+       SK_IN32(IoC, B0_ISRC, &ISrc);
+       SK_IN32(IoC, B0_IMSK, &OrgIMsk);
+       if (Port == MAC_1) {
+               NewIMsk = OrgIMsk & ~IS_LNK_SYNC_M1;
+               if ((ISrc & IS_LNK_SYNC_M1) != 0) {
+                       IrqPend = SK_TRUE;
+               }
+       }
+       else {
+               NewIMsk = OrgIMsk & ~IS_LNK_SYNC_M2;
+               if ((ISrc & IS_LNK_SYNC_M2) != 0) {
+                       IrqPend = SK_TRUE;
+               }
+       }
+       if (!IrqPend) {
+               SK_OUT32(IoC, B0_IMSK, NewIMsk);
+       }
+
+       /* load counter */
+       SK_OUT32(IoC, MR_ADDR(Port, LNK_SYNC_INI), CntVal);
+
+       /* start counter */
+       SK_OUT8(IoC, MR_ADDR(Port, LNK_SYNC_CTRL), LED_START);
+
+       if (!IrqPend) {
+               /* clear the unexpected IRQ, and restore the interrupt mask */
+               SK_OUT8(IoC, MR_ADDR(Port, LNK_SYNC_CTRL), LED_CLR_IRQ);
+               SK_OUT32(IoC, B0_IMSK, OrgIMsk);
+       }
+}      /* SkGeLoadLnkSyncCnt*/
+
+
+/******************************************************************************
+ *
+ *     SkGeCfgSync() - Configure synchronous bandwidth for this port.
+ *
+ * Description:
+ *     This function may be used to configure synchronous bandwidth
+ *     to the specified port. This may be done any time after
+ *     initializing the port. The configuration values are NOT saved
+ *     in the HWAC port structure and will be overwritten any
+ *     time when stopping and starting the port.
+ *     Any values for the synchronous configuration will be ignored
+ *     if the size of the synchronous queue is zero!
+ *
+ *     The default configuration for the synchronous service is
+ *     TXA_ENA_FSYNC. This means if the size of
+ *     the synchronous queue is unequal zero but no specific
+ *     synchronous bandwidth is configured, the synchronous queue
+ *     will always have the 'unlimited' transmit priority!
+ *
+ *     This mode will be restored if the synchronous bandwidth is
+ *     deallocated ('IntTime' = 0 and 'LimCount' = 0).
+ *
+ * Returns:
+ *     0:      success
+ *     1:      parameter configuration error
+ *     2:      try to configure quality of service although no
+ *             synchronous queue is configured
+ */
+int SkGeCfgSync(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* IO context */
+int            Port,           /* Port Index (MAC_1 + n) */
+SK_U32 IntTime,        /* Interval Timer Value in units of 8ns */
+SK_U32 LimCount,       /* Number of bytes to transfer during IntTime */
+int            SyncMode)       /* Sync Mode: TXA_ENA_ALLOC | TXA_DIS_ALLOC | 0 */
+{
+       int Rtv;
+
+       Rtv = 0;
+
+       /* check the parameters */
+       if (LimCount > IntTime ||
+               (LimCount == 0 && IntTime != 0) ||
+               (LimCount != 0 && IntTime == 0)) {
+
+               SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E010, SKERR_HWI_E010MSG);
+               return(1);
+       }
+
+       if (pAC->GIni.GP[Port].PXSQSize == 0) {
+               SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E009, SKERR_HWI_E009MSG);
+               return(2);
+       }
+
+       /* calculate register values */
+       IntTime = (IntTime / 2) * pAC->GIni.GIHstClkFact / 100;
+       LimCount = LimCount / 8;
+
+       if (IntTime > TXA_MAX_VAL || LimCount > TXA_MAX_VAL) {
+               SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E010, SKERR_HWI_E010MSG);
+               return(1);
+       }
+
+       /*
+        * - Enable 'Force Sync' to ensure the synchronous queue
+        *   has the priority while configuring the new values.
+        * - Also 'disable alloc' to ensure the settings complies
+        *   to the SyncMode parameter.
+        * - Disable 'Rate Control' to configure the new values.
+        * - write IntTime and LimCount
+        * - start 'Rate Control' and disable 'Force Sync'
+        *   if Interval Timer or Limit Counter not zero.
+        */
+       SK_OUT8(IoC, MR_ADDR(Port, TXA_CTRL),
+               TXA_ENA_FSYNC | TXA_DIS_ALLOC | TXA_STOP_RC);
+
+       SK_OUT32(IoC, MR_ADDR(Port, TXA_ITI_INI), IntTime);
+       SK_OUT32(IoC, MR_ADDR(Port, TXA_LIM_INI), LimCount);
+
+       SK_OUT8(IoC, MR_ADDR(Port, TXA_CTRL),
+               (SK_U8)(SyncMode & (TXA_ENA_ALLOC | TXA_DIS_ALLOC)));
+
+       if (IntTime != 0 || LimCount != 0) {
+               SK_OUT8(IoC, MR_ADDR(Port, TXA_CTRL), TXA_DIS_FSYNC | TXA_START_RC);
+       }
+
+       return(0);
+}      /* SkGeCfgSync */
+
+
+/******************************************************************************
+ *
+ *     DoInitRamQueue() - Initialize the RAM Buffer Address of a single Queue
+ *
+ * Desccription:
+ *     If the queue is used, enable and initialize it.
+ *     Make sure the queue is still reset, if it is not used.
+ *
+ * Returns:
+ *     nothing
+ */
+static void DoInitRamQueue(
+SK_AC  *pAC,                   /* adapter context */
+SK_IOC IoC,                    /* IO context */
+int            QuIoOffs,               /* Queue IO Address Offset */
+SK_U32 QuStartAddr,    /* Queue Start Address */
+SK_U32 QuEndAddr,              /* Queue End Address */
+int            QuType)                 /* Queue Type (SK_RX_SRAM_Q|SK_RX_BRAM_Q|SK_TX_RAM_Q) */
+{
+       SK_U32  RxUpThresVal;
+       SK_U32  RxLoThresVal;
+
+       if (QuStartAddr != QuEndAddr) {
+               /* calculate thresholds, assume we have a big Rx queue */
+               RxUpThresVal = (QuEndAddr + 1 - QuStartAddr - SK_RB_ULPP) / 8;
+               RxLoThresVal = (QuEndAddr + 1 - QuStartAddr - SK_RB_LLPP_B)/8;
+
+               /* build HW address format */
+               QuStartAddr = QuStartAddr / 8;
+               QuEndAddr = QuEndAddr / 8;
+
+               /* release local reset */
+               SK_OUT8(IoC, RB_ADDR(QuIoOffs, RB_CTRL), RB_RST_CLR);
+
+               /* configure addresses */
+               SK_OUT32(IoC, RB_ADDR(QuIoOffs, RB_START), QuStartAddr);
+               SK_OUT32(IoC, RB_ADDR(QuIoOffs, RB_END), QuEndAddr);
+               SK_OUT32(IoC, RB_ADDR(QuIoOffs, RB_WP), QuStartAddr);
+               SK_OUT32(IoC, RB_ADDR(QuIoOffs, RB_RP), QuStartAddr);
+
+               switch (QuType) {
+               case SK_RX_SRAM_Q:
+                       /* configure threshold for small Rx Queue */
+                       RxLoThresVal += (SK_RB_LLPP_B - SK_RB_LLPP_S) / 8;
+
+                       /* continue with SK_RX_BRAM_Q */
+               case SK_RX_BRAM_Q:
+                       /* write threshold for Rx Queue */
+
+                       SK_OUT32(IoC, RB_ADDR(QuIoOffs, RB_RX_UTPP), RxUpThresVal);
+                       SK_OUT32(IoC, RB_ADDR(QuIoOffs, RB_RX_LTPP), RxLoThresVal);
+
+                       /* the high priority threshold not used */
+                       break;
+               case SK_TX_RAM_Q:
+                       /*
+                        * Do NOT use Store & Forward under normal operation due to
+                        * performance optimization (GENESIS only).
+                        * But if Jumbo Frames are configured (XMAC Tx FIFO is only 4 kB)
+                        * or YUKON is used ((GMAC Tx FIFO is only 1 kB)
+                        * we NEED Store & Forward of the RAM buffer.
+                        */
+                       if (pAC->GIni.GIPortUsage == SK_JUMBO_LINK ||
+                               !pAC->GIni.GIGenesis) {
+                               /* enable Store & Forward Mode for the Tx Side */
+                               SK_OUT8(IoC, RB_ADDR(QuIoOffs, RB_CTRL), RB_ENA_STFWD);
+                       }
+                       break;
+               }
+
+               /* set queue operational */
+               SK_OUT8(IoC, RB_ADDR(QuIoOffs, RB_CTRL), RB_ENA_OP_MD);
+       }
+       else {
+               /* ensure the queue is still disabled */
+               SK_OUT8(IoC, RB_ADDR(QuIoOffs, RB_CTRL), RB_RST_SET);
+       }
+}      /* DoInitRamQueue */
+
+
+/******************************************************************************
+ *
+ *     SkGeInitRamBufs() - Initialize the RAM Buffer Queues
+ *
+ * Description:
+ *     Initialize all RAM Buffer Queues of the specified port
+ *
+ * Returns:
+ *     nothing
+ */
+static void SkGeInitRamBufs(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* IO context */
+int            Port)           /* Port Index (MAC_1 + n) */
+{
+       SK_GEPORT *pPrt;
+       int RxQType;
+
+       pPrt = &pAC->GIni.GP[Port];
+
+       if (pPrt->PRxQSize == SK_MIN_RXQ_SIZE) {
+               RxQType = SK_RX_SRAM_Q;         /* small Rx Queue */
+       } else {
+               RxQType = SK_RX_BRAM_Q;         /* big Rx Queue */
+       }
+
+       DoInitRamQueue(pAC, IoC, pPrt->PRxQOff, pPrt->PRxQRamStart,
+               pPrt->PRxQRamEnd, RxQType);
+
+       DoInitRamQueue(pAC, IoC, pPrt->PXsQOff, pPrt->PXsQRamStart,
+               pPrt->PXsQRamEnd, SK_TX_RAM_Q);
+
+       DoInitRamQueue(pAC, IoC, pPrt->PXaQOff, pPrt->PXaQRamStart,
+               pPrt->PXaQRamEnd, SK_TX_RAM_Q);
+
+}      /* SkGeInitRamBufs */
+
+
+/******************************************************************************
+ *
+ *     SkGeInitRamIface() - Initialize the RAM Interface
+ *
+ * Description:
+ *     This function initializes the Adapters RAM Interface.
+ *
+ * Note:
+ *     This function is used in the diagnostics.
+ *
+ * Returns:
+ *     nothing
+ */
+void SkGeInitRamIface(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC)            /* IO context */
+{
+       /* release local reset */
+       SK_OUT16(IoC, B3_RI_CTRL, RI_RST_CLR);
+
+       /* configure timeout values */
+       SK_OUT8(IoC, B3_RI_WTO_R1, SK_RI_TO_53);
+       SK_OUT8(IoC, B3_RI_WTO_XA1, SK_RI_TO_53);
+       SK_OUT8(IoC, B3_RI_WTO_XS1, SK_RI_TO_53);
+       SK_OUT8(IoC, B3_RI_RTO_R1, SK_RI_TO_53);
+       SK_OUT8(IoC, B3_RI_RTO_XA1, SK_RI_TO_53);
+       SK_OUT8(IoC, B3_RI_RTO_XS1, SK_RI_TO_53);
+       SK_OUT8(IoC, B3_RI_WTO_R2, SK_RI_TO_53);
+       SK_OUT8(IoC, B3_RI_WTO_XA2, SK_RI_TO_53);
+       SK_OUT8(IoC, B3_RI_WTO_XS2, SK_RI_TO_53);
+       SK_OUT8(IoC, B3_RI_RTO_R2, SK_RI_TO_53);
+       SK_OUT8(IoC, B3_RI_RTO_XA2, SK_RI_TO_53);
+       SK_OUT8(IoC, B3_RI_RTO_XS2, SK_RI_TO_53);
+
+}      /* SkGeInitRamIface */
+
+
+/******************************************************************************
+ *
+ *     SkGeInitBmu() - Initialize the BMU state machines
+ *
+ * Description:
+ *     Initialize all BMU state machines of the specified port
+ *
+ * Returns:
+ *     nothing
+ */
+static void SkGeInitBmu(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* IO context */
+int            Port)           /* Port Index (MAC_1 + n) */
+{
+       SK_GEPORT       *pPrt;
+       SK_U32          RxWm;
+       SK_U32          TxWm;
+
+       pPrt = &pAC->GIni.GP[Port];
+
+       RxWm = SK_BMU_RX_WM;
+       TxWm = SK_BMU_TX_WM;
+
+       if (!pAC->GIni.GIPciSlot64 && !pAC->GIni.GIPciClock66) {
+               /* for better performance */
+               RxWm /= 2;
+               TxWm /= 2;
+       }
+
+       /* Rx Queue: Release all local resets and set the watermark */
+       SK_OUT32(IoC, Q_ADDR(pPrt->PRxQOff, Q_CSR), CSR_CLR_RESET);
+       SK_OUT32(IoC, Q_ADDR(pPrt->PRxQOff, Q_F), RxWm);
+
+       /*
+        * Tx Queue: Release all local resets if the queue is used !
+        *              set watermark
+        */
+       if (pPrt->PXSQSize != 0) {
+               SK_OUT32(IoC, Q_ADDR(pPrt->PXsQOff, Q_CSR), CSR_CLR_RESET);
+               SK_OUT32(IoC, Q_ADDR(pPrt->PXsQOff, Q_F), TxWm);
+       }
+
+       if (pPrt->PXAQSize != 0) {
+               SK_OUT32(IoC, Q_ADDR(pPrt->PXaQOff, Q_CSR), CSR_CLR_RESET);
+               SK_OUT32(IoC, Q_ADDR(pPrt->PXaQOff, Q_F), TxWm);
+       }
+       /*
+        * Do NOT enable the descriptor poll timers here, because
+        * the descriptor addresses are not specified yet.
+        */
+}      /* SkGeInitBmu */
+
+
+/******************************************************************************
+ *
+ *     TestStopBit() - Test the stop bit of the queue
+ *
+ * Description:
+ *     Stopping a queue is not as simple as it seems to be.
+ *     If descriptor polling is enabled, it may happen
+ *     that RX/TX stop is done and SV idle is NOT set.
+ *     In this case we have to issue another stop command.
+ *
+ * Returns:
+ *     The queues control status register
+ */
+static SK_U32 TestStopBit(
+SK_AC  *pAC,           /* Adapter Context */
+SK_IOC IoC,            /* IO Context */
+int            QuIoOffs)       /* Queue IO Address Offset */
+{
+       SK_U32  QuCsr;  /* CSR contents */
+
+       SK_IN32(IoC, Q_ADDR(QuIoOffs, Q_CSR), &QuCsr);
+
+       if ((QuCsr & (CSR_STOP | CSR_SV_IDLE)) == 0) {
+               /* Stop Descriptor overridden by start command */
+               SK_OUT32(IoC, Q_ADDR(QuIoOffs, Q_CSR), CSR_STOP);
+
+               SK_IN32(IoC, Q_ADDR(QuIoOffs, Q_CSR), &QuCsr);
+       }
+
+       return(QuCsr);
+}      /* TestStopBit */
+
+
+/******************************************************************************
+ *
+ *     SkGeStopPort() - Stop the Rx/Tx activity of the port 'Port'.
+ *
+ * Description:
+ *     After calling this function the descriptor rings and Rx and Tx
+ *     queues of this port may be reconfigured.
+ *
+ *     It is possible to stop the receive and transmit path separate or
+ *     both together.
+ *
+ *     Dir =   SK_STOP_TX      Stops the transmit path only and resets the MAC.
+ *                             The receive queue is still active and
+ *                             the pending Rx frames may be still transferred
+ *                             into the RxD.
+ *             SK_STOP_RX      Stop the receive path. The tansmit path
+ *                             has to be stopped once before.
+ *             SK_STOP_ALL     SK_STOP_TX + SK_STOP_RX
+ *
+ *     RstMode = SK_SOFT_RST   Resets the MAC. The PHY is still alive.
+ *                     SK_HARD_RST     Resets the MAC and the PHY.
+ *
+ * Example:
+ *     1) A Link Down event was signaled for a port. Therefore the activity
+ *     of this port should be stopped and a hardware reset should be issued
+ *     to enable the workaround of XMAC errata #2. But the received frames
+ *     should not be discarded.
+ *             ...
+ *             SkGeStopPort(pAC, IoC, Port, SK_STOP_TX, SK_HARD_RST);
+ *             (transfer all pending Rx frames)
+ *             SkGeStopPort(pAC, IoC, Port, SK_STOP_RX, SK_HARD_RST);
+ *             ...
+ *
+ *     2) An event was issued which request the driver to switch
+ *     the 'virtual active' link to an other already active port
+ *     as soon as possible. The frames in the receive queue of this
+ *     port may be lost. But the PHY must not be reset during this
+ *     event.
+ *             ...
+ *             SkGeStopPort(pAC, IoC, Port, SK_STOP_ALL, SK_SOFT_RST);
+ *             ...
+ *
+ * Extended Description:
+ *     If SK_STOP_TX is set,
+ *             o disable the MAC's receive and transmitter to prevent
+ *               from sending incomplete frames
+ *             o stop the port's transmit queues before terminating the
+ *               BMUs to prevent from performing incomplete PCI cycles
+ *               on the PCI bus
+ *             - The network Rx and Tx activity and PCI Tx transfer is
+ *               disabled now.
+ *             o reset the MAC depending on the RstMode
+ *             o Stop Interval Timer and Limit Counter of Tx Arbiter,
+ *               also disable Force Sync bit and Enable Alloc bit.
+ *             o perform a local reset of the port's Tx path
+ *                     - reset the PCI FIFO of the async Tx queue
+ *                     - reset the PCI FIFO of the sync Tx queue
+ *                     - reset the RAM Buffer async Tx queue
+ *                     - reset the RAM Buffer sync Tx queue
+ *                     - reset the MAC Tx FIFO
+ *             o switch Link and Tx LED off, stop the LED counters
+ *
+ *     If SK_STOP_RX is set,
+ *             o stop the port's receive queue
+ *             - The path data transfer activity is fully stopped now.
+ *             o perform a local reset of the port's Rx path
+ *                     - reset the PCI FIFO of the Rx queue
+ *                     - reset the RAM Buffer receive queue
+ *                     - reset the MAC Rx FIFO
+ *             o switch Rx LED off, stop the LED counter
+ *
+ *     If all ports are stopped,
+ *             o reset the RAM Interface.
+ *
+ * Notes:
+ *     o This function may be called during the driver states RESET_PORT and
+ *       SWITCH_PORT.
+ */
+void SkGeStopPort(
+SK_AC  *pAC,   /* adapter context */
+SK_IOC IoC,    /* I/O context */
+int            Port,   /* port to stop (MAC_1 + n) */
+int            Dir,    /* Direction to Stop (SK_STOP_RX, SK_STOP_TX, SK_STOP_ALL) */
+int            RstMode)/* Reset Mode (SK_SOFT_RST, SK_HARD_RST) */
+{
+#ifndef SK_DIAG
+       SK_EVPARA Para;
+#endif /* !SK_DIAG */
+       SK_GEPORT *pPrt;
+       SK_U32  DWord;
+       SK_U32  XsCsr;
+       SK_U32  XaCsr;
+       SK_U64  ToutStart;
+       int             i;
+       int             ToutCnt;
+
+       pPrt = &pAC->GIni.GP[Port];
+
+       if ((Dir & SK_STOP_TX) != 0) {
+               /* disable receiver and transmitter */
+               SkMacRxTxDisable(pAC, IoC, Port);
+
+               /* stop both transmit queues */
+               /*
+                * If the BMU is in the reset state CSR_STOP will terminate
+                * immediately.
+                */
+               SK_OUT32(IoC, Q_ADDR(pPrt->PXsQOff, Q_CSR), CSR_STOP);
+               SK_OUT32(IoC, Q_ADDR(pPrt->PXaQOff, Q_CSR), CSR_STOP);
+
+               ToutStart = SkOsGetTime(pAC);
+               ToutCnt = 0;
+               do {
+                       /*
+                        * Clear packet arbiter timeout to make sure
+                        * this loop will terminate.
+                        */
+                       SK_OUT16(IoC, B3_PA_CTRL, (Port == MAC_1) ? PA_CLR_TO_TX1 :
+                               PA_CLR_TO_TX2);
+
+                       /*
+                        * If the transfer stucks at the MAC the STOP command will not
+                        * terminate if we don't flush the XMAC's transmit FIFO !
+                        */
+                       SkMacFlushTxFifo(pAC, IoC, Port);
+
+                       XsCsr = TestStopBit(pAC, IoC, pPrt->PXsQOff);
+                       XaCsr = TestStopBit(pAC, IoC, pPrt->PXaQOff);
+
+                       if (SkOsGetTime(pAC) - ToutStart > (SK_TICKS_PER_SEC / 18)) {
+                               /*
+                                * Timeout of 1/18 second reached.
+                                * This needs to be checked at 1/18 sec only.
+                                */
+                               ToutCnt++;
+                               if (ToutCnt > 1) {
+                                       /* Might be a problem when the driver event handler
+                                        * calls StopPort again. XXX.
+                                        */
+
+                                       /* Fatal Error, Loop aborted */
+                                       SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_HWI_E018,
+                                               SKERR_HWI_E018MSG);
+#ifndef SK_DIAG
+                                       Para.Para64 = Port;
+                                       SkEventQueue(pAC, SKGE_DRV, SK_DRV_PORT_FAIL, Para);
+#endif /* !SK_DIAG */
+                                       return;
+                               }
+                               /*
+                                * Cache incoherency workaround: Assume a start command
+                                * has been lost while sending the frame.
+                                */
+                               ToutStart = SkOsGetTime(pAC);
+
+                               if ((XsCsr & CSR_STOP) != 0) {
+                                       SK_OUT32(IoC, Q_ADDR(pPrt->PXsQOff, Q_CSR), CSR_START);
+                               }
+                               if ((XaCsr & CSR_STOP) != 0) {
+                                       SK_OUT32(IoC, Q_ADDR(pPrt->PXaQOff, Q_CSR), CSR_START);
+                               }
+                       }
+
+                       /*
+                        * Because of the ASIC problem report entry from 21.08.1998 it is
+                        * required to wait until CSR_STOP is reset and CSR_SV_IDLE is set.
+                        */
+               } while ((XsCsr & (CSR_STOP | CSR_SV_IDLE)) != CSR_SV_IDLE ||
+                                (XaCsr & (CSR_STOP | CSR_SV_IDLE)) != CSR_SV_IDLE);
+
+               /* Reset the MAC depending on the RstMode */
+               if (RstMode == SK_SOFT_RST) {
+                       SkMacSoftRst(pAC, IoC, Port);
+               }
+               else {
+                       SkMacHardRst(pAC, IoC, Port);
+               }
+
+               /* Disable Force Sync bit and Enable Alloc bit */
+               SK_OUT8(IoC, MR_ADDR(Port, TXA_CTRL),
+                       TXA_DIS_FSYNC | TXA_DIS_ALLOC | TXA_STOP_RC);
+
+               /* Stop Interval Timer and Limit Counter of Tx Arbiter */
+               SK_OUT32(IoC, MR_ADDR(Port, TXA_ITI_INI), 0L);
+               SK_OUT32(IoC, MR_ADDR(Port, TXA_LIM_INI), 0L);
+
+               /* Perform a local reset of the port's Tx path */
+
+               /* Reset the PCI FIFO of the async Tx queue */
+               SK_OUT32(IoC, Q_ADDR(pPrt->PXaQOff, Q_CSR), CSR_SET_RESET);
+               /* Reset the PCI FIFO of the sync Tx queue */
+               SK_OUT32(IoC, Q_ADDR(pPrt->PXsQOff, Q_CSR), CSR_SET_RESET);
+               /* Reset the RAM Buffer async Tx queue */
+               SK_OUT8(IoC, RB_ADDR(pPrt->PXaQOff, RB_CTRL), RB_RST_SET);
+               /* Reset the RAM Buffer sync Tx queue */
+               SK_OUT8(IoC, RB_ADDR(pPrt->PXsQOff, RB_CTRL), RB_RST_SET);
+
+               /* Reset Tx MAC FIFO */
+               if (pAC->GIni.GIGenesis) {
+                       /* Note: MFF_RST_SET does NOT reset the XMAC ! */
+                       SK_OUT8(IoC, MR_ADDR(Port, TX_MFF_CTRL2), MFF_RST_SET);
+
+                       /* switch Link and Tx LED off, stop the LED counters */
+                       /* Link LED is switched off by the RLMT and the Diag itself */
+                       SkGeXmitLED(pAC, IoC, MR_ADDR(Port, TX_LED_INI), SK_LED_DIS);
+               }
+               else {
+                       /* Reset TX MAC FIFO */
+                       SK_OUT8(IoC, MR_ADDR(Port, TX_GMF_CTRL_T), (SK_U8)GMF_RST_SET);
+               }
+       }
+
+       if ((Dir & SK_STOP_RX) != 0) {
+               /*
+                * The RX Stop Command will not terminate if no buffers
+                * are queued in the RxD ring. But it will always reach
+                * the Idle state. Therefore we can use this feature to
+                * stop the transfer of received packets.
+                */
+               /* stop the port's receive queue */
+               SK_OUT32(IoC, Q_ADDR(pPrt->PRxQOff, Q_CSR), CSR_STOP);
+
+               i = 100;
+               do {
+                       /*
+                        * Clear packet arbiter timeout to make sure
+                        * this loop will terminate
+                        */
+                       SK_OUT16(IoC, B3_PA_CTRL, (Port == MAC_1) ? PA_CLR_TO_RX1 :
+                               PA_CLR_TO_RX2);
+
+                       DWord = TestStopBit(pAC, IoC, pPrt->PRxQOff);
+
+                       /* timeout if i==0 (bug fix for #10748) */
+                       if (--i == 0) {
+                               SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_HWI_E024,
+                                       SKERR_HWI_E024MSG);
+                               break;
+                       }
+                       /*
+                        * because of the ASIC problem report entry from 21.08.98
+                        * it is required to wait until CSR_STOP is reset and
+                        * CSR_SV_IDLE is set.
+                        */
+               } while ((DWord & (CSR_STOP | CSR_SV_IDLE)) != CSR_SV_IDLE);
+
+               /* The path data transfer activity is fully stopped now */
+
+               /* Perform a local reset of the port's Rx path */
+
+                /*     Reset the PCI FIFO of the Rx queue */
+               SK_OUT32(IoC, Q_ADDR(pPrt->PRxQOff, Q_CSR), CSR_SET_RESET);
+               /* Reset the RAM Buffer receive queue */
+               SK_OUT8(IoC, RB_ADDR(pPrt->PRxQOff, RB_CTRL), RB_RST_SET);
+
+               /* Reset Rx MAC FIFO */
+               if (pAC->GIni.GIGenesis) {
+
+                       SK_OUT8(IoC, MR_ADDR(Port, RX_MFF_CTRL2), MFF_RST_SET);
+
+                       /* switch Rx LED off, stop the LED counter */
+                       SkGeXmitLED(pAC, IoC, MR_ADDR(Port, RX_LED_INI), SK_LED_DIS);
+               }
+               else {
+                       /* Reset Rx MAC FIFO */
+                       SK_OUT8(IoC, MR_ADDR(Port, RX_GMF_CTRL_T), (SK_U8)GMF_RST_SET);
+               }
+       }
+}      /* SkGeStopPort */
+
+
+/******************************************************************************
+ *
+ *     SkGeInit0() - Level 0 Initialization
+ *
+ * Description:
+ *     - Initialize the BMU address offsets
+ *
+ * Returns:
+ *     nothing
+ */
+static void SkGeInit0(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC)            /* IO context */
+{
+       int i;
+       SK_GEPORT *pPrt;
+
+       for (i = 0; i < SK_MAX_MACS; i++) {
+               pPrt = &pAC->GIni.GP[i];
+
+               pPrt->PState = SK_PRT_RESET;
+               pPrt->PRxQOff = QOffTab[i].RxQOff;
+               pPrt->PXsQOff = QOffTab[i].XsQOff;
+               pPrt->PXaQOff = QOffTab[i].XaQOff;
+               pPrt->PCheckPar = SK_FALSE;
+               pPrt->PIsave = 0;
+               pPrt->PPrevShorts = 0;
+               pPrt->PLinkResCt = 0;
+               pPrt->PAutoNegTOCt = 0;
+               pPrt->PPrevRx = 0;
+               pPrt->PPrevFcs = 0;
+               pPrt->PRxLim = SK_DEF_RX_WA_LIM;
+               pPrt->PLinkMode = SK_LMODE_AUTOFULL;
+               pPrt->PLinkSpeedCap = SK_LSPEED_CAP_1000MBPS;
+               pPrt->PLinkSpeed = SK_LSPEED_1000MBPS;
+               pPrt->PLinkSpeedUsed = SK_LSPEED_STAT_UNKNOWN;
+               pPrt->PLinkModeConf = SK_LMODE_AUTOSENSE;
+               pPrt->PFlowCtrlMode = SK_FLOW_MODE_SYM_OR_REM;
+               pPrt->PLinkBroken = SK_TRUE; /* See WA code */
+               pPrt->PLinkCap = (SK_LMODE_CAP_HALF | SK_LMODE_CAP_FULL |
+                               SK_LMODE_CAP_AUTOHALF | SK_LMODE_CAP_AUTOFULL);
+               pPrt->PLinkModeStatus = SK_LMODE_STAT_UNKNOWN;
+               pPrt->PFlowCtrlCap = SK_FLOW_MODE_SYM_OR_REM;
+               pPrt->PFlowCtrlStatus = SK_FLOW_STAT_NONE;
+               pPrt->PMSCap = 0;
+               pPrt->PMSMode = SK_MS_MODE_AUTO;
+               pPrt->PMSStatus = SK_MS_STAT_UNSET;
+               pPrt->PAutoNegFail = SK_FALSE;
+               pPrt->PLipaAutoNeg = SK_LIPA_UNKNOWN;
+               pPrt->PHWLinkUp = SK_FALSE;
+       }
+
+       pAC->GIni.GIPortUsage = SK_RED_LINK;
+
+}      /* SkGeInit0*/
+
+#ifdef SK_PCI_RESET
+
+/******************************************************************************
+ *
+ *     SkGePciReset() - Reset PCI interface
+ *
+ * Description:
+ *     o Read PCI configuration.
+ *     o Change power state to 3.
+ *     o Change power state to 0.
+ *     o Restore PCI configuration.
+ *
+ * Returns:
+ *     0:      Success.
+ *     1:      Power state could not be changed to 3.
+ */
+static int SkGePciReset(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC)            /* IO context */
+{
+       int             i;
+       SK_U16  PmCtlSts;
+       SK_U32  Bp1;
+       SK_U32  Bp2;
+       SK_U16  PciCmd;
+       SK_U8   Cls;
+       SK_U8   Lat;
+       SK_U8   ConfigSpace[PCI_CFG_SIZE];
+
+       /*
+        * Note: Switching to D3 state is like a software reset.
+        *               Switching from D3 to D0 is a hardware reset.
+        *               We have to save and restore the configuration space.
+        */
+       for (i = 0; i < PCI_CFG_SIZE; i++) {
+               SkPciReadCfgDWord(pAC, i*4, &ConfigSpace[i]);
+       }
+
+       /* We know the RAM Interface Arbiter is enabled. */
+       SkPciWriteCfgWord(pAC, PCI_PM_CTL_STS, PCI_PM_STATE_D3);
+       SkPciReadCfgWord(pAC, PCI_PM_CTL_STS, &PmCtlSts);
+
+       if ((PmCtlSts & PCI_PM_STATE_MSK) != PCI_PM_STATE_D3) {
+               return(1);
+       }
+
+       /* Return to D0 state. */
+       SkPciWriteCfgWord(pAC, PCI_PM_CTL_STS, PCI_PM_STATE_D0);
+
+       /* Check for D0 state. */
+       SkPciReadCfgWord(pAC, PCI_PM_CTL_STS, &PmCtlSts);
+
+       if ((PmCtlSts & PCI_PM_STATE_MSK) != PCI_PM_STATE_D0) {
+               return(1);
+       }
+
+       /* Check PCI Config Registers. */
+       SkPciReadCfgWord(pAC, PCI_COMMAND, &PciCmd);
+       SkPciReadCfgByte(pAC, PCI_CACHE_LSZ, &Cls);
+       SkPciReadCfgDWord(pAC, PCI_BASE_1ST, &Bp1);
+       SkPciReadCfgDWord(pAC, PCI_BASE_2ND, &Bp2);
+       SkPciReadCfgByte(pAC, PCI_LAT_TIM, &Lat);
+
+       if (PciCmd != 0 || Cls != 0 || (Bp1 & 0xfffffff0L) != 0 || Bp2 != 1 ||
+               Lat != 0) {
+               return(1);
+       }
+
+       /* Restore PCI Config Space. */
+       for (i = 0; i < PCI_CFG_SIZE; i++) {
+               SkPciWriteCfgDWord(pAC, i*4, ConfigSpace[i]);
+       }
+
+       return(0);
+}      /* SkGePciReset */
+
+#endif /* SK_PCI_RESET */
+
+/******************************************************************************
+ *
+ *     SkGeInit1() - Level 1 Initialization
+ *
+ * Description:
+ *     o Do a software reset.
+ *     o Clear all reset bits.
+ *     o Verify that the detected hardware is present.
+ *       Return an error if not.
+ *     o Get the hardware configuration
+ *             + Read the number of MACs/Ports.
+ *             + Read the RAM size.
+ *             + Read the PCI Revision Id.
+ *             + Find out the adapters host clock speed
+ *             + Read and check the PHY type
+ *
+ * Returns:
+ *     0:      success
+ *     5:      Unexpected PHY type detected
+ *     6:      HW self test failed
+ */
+static int SkGeInit1(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC)            /* IO context */
+{
+       SK_U8   Byte;
+       SK_U16  Word;
+       SK_U16  CtrlStat;
+       SK_U32  FlashAddr;
+       int     RetVal;
+       int     i;
+
+       RetVal = 0;
+
+       /* save CLK_RUN bits (YUKON-Lite) */
+       SK_IN16(IoC, B0_CTST, &CtrlStat);
+
+#ifdef SK_PCI_RESET
+       (void)SkGePciReset(pAC, IoC);
+#endif /* SK_PCI_RESET */
+
+       /* do the SW-reset */
+       SK_OUT8(IoC, B0_CTST, CS_RST_SET);
+
+       /* release the SW-reset */
+       SK_OUT8(IoC, B0_CTST, CS_RST_CLR);
+
+       /* reset all error bits in the PCI STATUS register */
+       /*
+        * Note: PCI Cfg cycles cannot be used, because they are not
+        *               available on some platforms after 'boot time'.
+        */
+       SK_IN16(IoC, PCI_C(PCI_STATUS), &Word);
+
+       SK_OUT8(IoC, B2_TST_CTRL1, TST_CFG_WRITE_ON);
+       SK_OUT16(IoC, PCI_C(PCI_STATUS), Word | PCI_ERRBITS);
+       SK_OUT8(IoC, B2_TST_CTRL1, TST_CFG_WRITE_OFF);
+
+       /* release Master Reset */
+       SK_OUT8(IoC, B0_CTST, CS_MRST_CLR);
+
+#ifdef CLK_RUN
+       CtrlStat |= CS_CLK_RUN_ENA;
+#endif /* CLK_RUN */
+
+       /* restore CLK_RUN bits */
+       SK_OUT16(IoC, B0_CTST, CtrlStat &
+               (CS_CLK_RUN_HOT | CS_CLK_RUN_RST | CS_CLK_RUN_ENA));
+
+       /* read Chip Identification Number */
+       SK_IN8(IoC, B2_CHIP_ID, &Byte);
+       pAC->GIni.GIChipId = Byte;
+
+       /* read number of MACs */
+       SK_IN8(IoC, B2_MAC_CFG, &Byte);
+       pAC->GIni.GIMacsFound = (Byte & CONFIG_SYS_SNG_MAC) ? 1 : 2;
+
+       /* get Chip Revision Number */
+       pAC->GIni.GIChipRev = (SK_U8)((Byte & CONFIG_SYS_CHIP_R_MSK) >> 4);
+
+       /* get diff. PCI parameters */
+       SK_IN16(IoC, B0_CTST, &CtrlStat);
+
+       /* read the adapters RAM size */
+       SK_IN8(IoC, B2_E_0, &Byte);
+
+       if (pAC->GIni.GIChipId == CHIP_ID_GENESIS) {
+
+               pAC->GIni.GIGenesis = SK_TRUE;
+
+               if (Byte == 3) {
+                       /* special case: 4 x 64k x 36, offset = 0x80000 */
+                       pAC->GIni.GIRamSize = 1024;
+                       pAC->GIni.GIRamOffs = (SK_U32)512 * 1024;
+               }
+               else {
+                       pAC->GIni.GIRamSize = (int)Byte * 512;
+                       pAC->GIni.GIRamOffs = 0;
+               }
+               /* all GE adapters work with 53.125 MHz host clock */
+               pAC->GIni.GIHstClkFact = SK_FACT_53;
+
+               /* set Descr. Poll Timer Init Value to 250 ms */
+               pAC->GIni.GIPollTimerVal =
+                       SK_DPOLL_DEF * (SK_U32)pAC->GIni.GIHstClkFact / 100;
+       }
+       else {
+               pAC->GIni.GIGenesis = SK_FALSE;
+
+#ifndef VCPU
+               pAC->GIni.GIRamSize = (Byte == 0) ? 128 : (int)Byte * 4;
+#else
+               pAC->GIni.GIRamSize = 128;
+#endif
+               pAC->GIni.GIRamOffs = 0;
+
+               /* WA for chip Rev. A */
+               pAC->GIni.GIWolOffs = (pAC->GIni.GIChipRev == 0) ? WOL_REG_OFFS : 0;
+
+               /* get PM Capabilities of PCI config space */
+               SK_IN16(IoC, PCI_C(PCI_PM_CAP_REG), &Word);
+
+               /* check if VAUX is available */
+               if (((CtrlStat & CS_VAUX_AVAIL) != 0) &&
+                       /* check also if PME from D3cold is set */
+                       ((Word & PCI_PME_D3C_SUP) != 0)) {
+                       /* set entry in GE init struct */
+                       pAC->GIni.GIVauxAvail = SK_TRUE;
+               }
+
+               /* save Flash-Address Register */
+               SK_IN32(IoC, B2_FAR, &FlashAddr);
+
+               /* test Flash-Address Register */
+               SK_OUT8(IoC, B2_FAR + 3, 0xff);
+               SK_IN8(IoC, B2_FAR + 3, &Byte);
+
+               pAC->GIni.GIYukonLite = (SK_BOOL)(Byte != 0);
+
+               /* restore Flash-Address Register */
+               SK_OUT32(IoC, B2_FAR, FlashAddr);
+
+               for (i = 0; i < pAC->GIni.GIMacsFound; i++) {
+                       /* set GMAC Link Control reset */
+                       SK_OUT16(IoC, MR_ADDR(i, GMAC_LINK_CTRL), GMLC_RST_SET);
+
+                       /* clear GMAC Link Control reset */
+                       SK_OUT16(IoC, MR_ADDR(i, GMAC_LINK_CTRL), GMLC_RST_CLR);
+               }
+               /* all YU chips work with 78.125 MHz host clock */
+               pAC->GIni.GIHstClkFact = SK_FACT_78;
+
+               pAC->GIni.GIPollTimerVal = SK_DPOLL_MAX;        /* 215 ms */
+       }
+
+       /* check if 64-bit PCI Slot is present */
+       pAC->GIni.GIPciSlot64 = (SK_BOOL)((CtrlStat & CS_BUS_SLOT_SZ) != 0);
+
+       /* check if 66 MHz PCI Clock is active */
+       pAC->GIni.GIPciClock66 = (SK_BOOL)((CtrlStat & CS_BUS_CLOCK) != 0);
+
+       /* read PCI HW Revision Id. */
+       SK_IN8(IoC, PCI_C(PCI_REV_ID), &Byte);
+       pAC->GIni.GIPciHwRev = Byte;
+
+       /* read the PMD type */
+       SK_IN8(IoC, B2_PMD_TYP, &Byte);
+       pAC->GIni.GICopperType = (SK_U8)(Byte == 'T');
+
+       /* read the PHY type */
+       SK_IN8(IoC, B2_E_1, &Byte);
+
+       Byte &= 0x0f;   /* the PHY type is stored in the lower nibble */
+       for (i = 0; i < pAC->GIni.GIMacsFound; i++) {
+
+               if (pAC->GIni.GIGenesis) {
+                       switch (Byte) {
+                       case SK_PHY_XMAC:
+                               pAC->GIni.GP[i].PhyAddr = PHY_ADDR_XMAC;
+                               break;
+                       case SK_PHY_BCOM:
+                               pAC->GIni.GP[i].PhyAddr = PHY_ADDR_BCOM;
+                               pAC->GIni.GP[i].PMSCap =
+                                       SK_MS_CAP_AUTO | SK_MS_CAP_MASTER | SK_MS_CAP_SLAVE;
+                               break;
+#ifdef OTHER_PHY
+                       case SK_PHY_LONE:
+                               pAC->GIni.GP[i].PhyAddr = PHY_ADDR_LONE;
+                               break;
+                       case SK_PHY_NAT:
+                               pAC->GIni.GP[i].PhyAddr = PHY_ADDR_NAT;
+                               break;
+#endif /* OTHER_PHY */
+                       default:
+                               /* ERROR: unexpected PHY type detected */
+                               RetVal = 5;
+                               break;
+                       }
+               }
+               else {
+                       if (Byte == 0) {
+                               /* if this field is not initialized */
+                               Byte = SK_PHY_MARV_COPPER;
+                               pAC->GIni.GICopperType = SK_TRUE;
+                       }
+                       pAC->GIni.GP[i].PhyAddr = PHY_ADDR_MARV;
+
+                       if (pAC->GIni.GICopperType) {
+                               pAC->GIni.GP[i].PLinkSpeedCap = SK_LSPEED_CAP_AUTO |
+                                       SK_LSPEED_CAP_10MBPS | SK_LSPEED_CAP_100MBPS |
+                                       SK_LSPEED_CAP_1000MBPS;
+                               pAC->GIni.GP[i].PLinkSpeed = SK_LSPEED_AUTO;
+                               pAC->GIni.GP[i].PMSCap =
+                                       SK_MS_CAP_AUTO | SK_MS_CAP_MASTER | SK_MS_CAP_SLAVE;
+                       }
+                       else {
+                               Byte = SK_PHY_MARV_FIBER;
+                       }
+               }
+
+               pAC->GIni.GP[i].PhyType = Byte;
+
+               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_INIT,
+                       ("PHY type: %d  PHY addr: %04x\n", Byte,
+                       pAC->GIni.GP[i].PhyAddr));
+       }
+
+       /* get Mac Type & set function pointers dependent on */
+       if (pAC->GIni.GIGenesis) {
+               pAC->GIni.GIMacType = SK_MAC_XMAC;
+
+               pAC->GIni.GIFunc.pFnMacUpdateStats      = SkXmUpdateStats;
+               pAC->GIni.GIFunc.pFnMacStatistic        = SkXmMacStatistic;
+               pAC->GIni.GIFunc.pFnMacResetCounter     = SkXmResetCounter;
+               pAC->GIni.GIFunc.pFnMacOverflow         = SkXmOverflowStatus;
+       }
+       else {
+               pAC->GIni.GIMacType = SK_MAC_GMAC;
+
+               pAC->GIni.GIFunc.pFnMacUpdateStats      = SkGmUpdateStats;
+               pAC->GIni.GIFunc.pFnMacStatistic        = SkGmMacStatistic;
+               pAC->GIni.GIFunc.pFnMacResetCounter     = SkGmResetCounter;
+               pAC->GIni.GIFunc.pFnMacOverflow         = SkGmOverflowStatus;
+
+#ifdef SPECIAL_HANDLING
+               if (pAC->GIni.GIChipId == CHIP_ID_YUKON) {
+                       /* check HW self test result */
+                       SK_IN8(IoC, B2_E_3, &Byte);
+                       if ((Byte & B2_E3_RES_MASK) != 0) {
+                               RetVal = 6;
+                       }
+               }
+#endif
+       }
+       return(RetVal);
+}      /* SkGeInit1 */
+
+
+/******************************************************************************
+ *
+ *     SkGeInit2() - Level 2 Initialization
+ *
+ * Description:
+ *     - start the Blink Source Counter
+ *     - start the Descriptor Poll Timer
+ *     - configure the MAC-Arbiter
+ *     - configure the Packet-Arbiter
+ *     - enable the Tx Arbiters
+ *     - enable the RAM Interface Arbiter
+ *
+ * Returns:
+ *     nothing
+ */
+static void SkGeInit2(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC)            /* IO context */
+{
+       SK_U32  DWord;
+       int             i;
+
+       /* start the Descriptor Poll Timer */
+       if (pAC->GIni.GIPollTimerVal != 0) {
+               if (pAC->GIni.GIPollTimerVal > SK_DPOLL_MAX) {
+                       pAC->GIni.GIPollTimerVal = SK_DPOLL_MAX;
+
+                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E017, SKERR_HWI_E017MSG);
+               }
+               SK_OUT32(IoC, B28_DPT_INI, pAC->GIni.GIPollTimerVal);
+               SK_OUT8(IoC, B28_DPT_CTRL, DPT_START);
+       }
+
+       if (pAC->GIni.GIGenesis) {
+               /* start the Blink Source Counter */
+               DWord = SK_BLK_DUR * (SK_U32)pAC->GIni.GIHstClkFact / 100;
+
+               SK_OUT32(IoC, B2_BSC_INI, DWord);
+               SK_OUT8(IoC, B2_BSC_CTRL, BSC_START);
+
+               /*
+                * Configure the MAC Arbiter and the Packet Arbiter.
+                * They will be started once and never be stopped.
+                */
+               SkGeInitMacArb(pAC, IoC);
+
+               SkGeInitPktArb(pAC, IoC);
+       }
+       else {
+               /* start Time Stamp Timer */
+               SK_OUT8(IoC, GMAC_TI_ST_CTRL, (SK_U8)GMT_ST_START);
+       }
+
+       /* enable the Tx Arbiters */
+       for (i = 0; i < pAC->GIni.GIMacsFound; i++) {
+               SK_OUT8(IoC, MR_ADDR(i, TXA_CTRL), TXA_ENA_ARB);
+       }
+
+       /* enable the RAM Interface Arbiter */
+       SkGeInitRamIface(pAC, IoC);
+
+}      /* SkGeInit2 */
+
+/******************************************************************************
+ *
+ *     SkGeInit() - Initialize the GE Adapter with the specified level.
+ *
+ * Description:
+ *     Level   0:      Initialize the Module structures.
+ *     Level   1:      Generic Hardware Initialization. The IOP/MemBase pointer has
+ *                             to be set before calling this level.
+ *
+ *                     o Do a software reset.
+ *                     o Clear all reset bits.
+ *                     o Verify that the detected hardware is present.
+ *                       Return an error if not.
+ *                     o Get the hardware configuration
+ *                             + Set GIMacsFound with the number of MACs.
+ *                             + Store the RAM size in GIRamSize.
+ *                             + Save the PCI Revision ID in GIPciHwRev.
+ *                     o return an error
+ *                             if Number of MACs > SK_MAX_MACS
+ *
+ *                     After returning from Level 0 the adapter
+ *                     may be accessed with IO operations.
+ *
+ *     Level   2:      start the Blink Source Counter
+ *
+ * Returns:
+ *     0:      success
+ *     1:      Number of MACs exceeds SK_MAX_MACS      (after level 1)
+ *     2:      Adapter not present or not accessible
+ *     3:      Illegal initialization level
+ *     4:      Initialization Level 1 Call missing
+ *     5:      Unexpected PHY type detected
+ *     6:      HW self test failed
+ */
+int    SkGeInit(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* IO context */
+int            Level)          /* initialization level */
+{
+       int             RetVal;         /* return value */
+       SK_U32  DWord;
+
+       RetVal = 0;
+       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_INIT,
+               ("SkGeInit(Level %d)\n", Level));
+
+       switch (Level) {
+       case SK_INIT_DATA:
+               /* Initialization Level 0 */
+               SkGeInit0(pAC, IoC);
+               pAC->GIni.GILevel = SK_INIT_DATA;
+               break;
+
+       case SK_INIT_IO:
+               /* Initialization Level 1 */
+               RetVal = SkGeInit1(pAC, IoC);
+               if (RetVal != 0) {
+                       break;
+               }
+
+               /* check if the adapter seems to be accessible */
+               SK_OUT32(IoC, B2_IRQM_INI, 0x11335577L);
+               SK_IN32(IoC, B2_IRQM_INI, &DWord);
+               SK_OUT32(IoC, B2_IRQM_INI, 0L);
+
+               if (DWord != 0x11335577L) {
+                       RetVal = 2;
+                       break;
+               }
+
+               /* check if the number of GIMacsFound matches SK_MAX_MACS */
+               if (pAC->GIni.GIMacsFound > SK_MAX_MACS) {
+                       RetVal = 1;
+                       break;
+               }
+
+               /* Level 1 successfully passed */
+               pAC->GIni.GILevel = SK_INIT_IO;
+               break;
+
+       case SK_INIT_RUN:
+               /* Initialization Level 2 */
+               if (pAC->GIni.GILevel != SK_INIT_IO) {
+#ifndef SK_DIAG
+                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E002, SKERR_HWI_E002MSG);
+#endif /* !SK_DIAG */
+                       RetVal = 4;
+                       break;
+               }
+               SkGeInit2(pAC, IoC);
+
+               /* Level 2 successfully passed */
+               pAC->GIni.GILevel = SK_INIT_RUN;
+               break;
+
+       default:
+               SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E003, SKERR_HWI_E003MSG);
+               RetVal = 3;
+               break;
+       }
+
+       return(RetVal);
+}      /* SkGeInit */
+
+
+/******************************************************************************
+ *
+ *     SkGeDeInit() - Deinitialize the adapter
+ *
+ * Description:
+ *     All ports of the adapter will be stopped if not already done.
+ *     Do a software reset and switch off all LEDs.
+ *
+ * Returns:
+ *     nothing
+ */
+void SkGeDeInit(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC)            /* IO context */
+{
+       int     i;
+       SK_U16  Word;
+
+#ifndef VCPU
+       /* ensure I2C is ready */
+       SkI2cWaitIrq(pAC, IoC);
+#endif
+
+       /* stop all current transfer activity */
+       for (i = 0; i < pAC->GIni.GIMacsFound; i++) {
+               if (pAC->GIni.GP[i].PState != SK_PRT_STOP &&
+                       pAC->GIni.GP[i].PState != SK_PRT_RESET) {
+
+                       SkGeStopPort(pAC, IoC, i, SK_STOP_ALL, SK_HARD_RST);
+               }
+       }
+
+       /* Reset all bits in the PCI STATUS register */
+       /*
+        * Note: PCI Cfg cycles cannot be used, because they are not
+        *       available on some platforms after 'boot time'.
+        */
+       SK_IN16(IoC, PCI_C(PCI_STATUS), &Word);
+
+       SK_OUT8(IoC, B2_TST_CTRL1, TST_CFG_WRITE_ON);
+       SK_OUT16(IoC, PCI_C(PCI_STATUS), Word | PCI_ERRBITS);
+       SK_OUT8(IoC, B2_TST_CTRL1, TST_CFG_WRITE_OFF);
+
+       /* do the reset, all LEDs are switched off now */
+       SK_OUT8(IoC, B0_CTST, CS_RST_SET);
+}      /* SkGeDeInit */
+
+
+/******************************************************************************
+ *
+ *     SkGeInitPort()  Initialize the specified port.
+ *
+ * Description:
+ *     PRxQSize, PXSQSize, and PXAQSize has to be
+ *     configured for the specified port before calling this function.
+ *  The descriptor rings has to be initialized too.
+ *
+ *     o (Re)configure queues of the specified port.
+ *     o configure the MAC of the specified port.
+ *     o put ASIC and MAC(s) in operational mode.
+ *     o initialize Rx/Tx and Sync LED
+ *     o initialize RAM Buffers and MAC FIFOs
+ *
+ *     The port is ready to connect when returning.
+ *
+ * Note:
+ *     The MAC's Rx and Tx state machine is still disabled when returning.
+ *
+ * Returns:
+ *     0:      success
+ *     1:      Queue size initialization error. The configured values
+ *             for PRxQSize, PXSQSize, or PXAQSize are invalid for one
+ *             or more queues. The specified port was NOT initialized.
+ *             An error log entry was generated.
+ *     2:      The port has to be stopped before it can be initialized again.
+ */
+int SkGeInitPort(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* IO context */
+int            Port)           /* Port to configure */
+{
+       SK_GEPORT *pPrt;
+
+       pPrt = &pAC->GIni.GP[Port];
+
+       if (SkGeCheckQSize(pAC, Port) != 0) {
+               SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E004, SKERR_HWI_E004MSG);
+               return(1);
+       }
+
+       if (pPrt->PState == SK_PRT_INIT || pPrt->PState == SK_PRT_RUN) {
+               SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E005, SKERR_HWI_E005MSG);
+               return(2);
+       }
+
+       /* configuration ok, initialize the Port now */
+
+       if (pAC->GIni.GIGenesis) {
+               /* initialize Rx, Tx and Link LED */
+               /*
+                * If 1000BT Phy needs LED initialization than swap
+                * LED and XMAC initialization order
+                */
+               SkGeXmitLED(pAC, IoC, MR_ADDR(Port, TX_LED_INI), SK_LED_ENA);
+               SkGeXmitLED(pAC, IoC, MR_ADDR(Port, RX_LED_INI), SK_LED_ENA);
+               /* The Link LED is initialized by RLMT or Diagnostics itself */
+
+               SkXmInitMac(pAC, IoC, Port);
+       }
+       else {
+
+               SkGmInitMac(pAC, IoC, Port);
+       }
+
+       /* do NOT initialize the Link Sync Counter */
+
+       SkGeInitMacFifo(pAC, IoC, Port);
+
+       SkGeInitRamBufs(pAC, IoC, Port);
+
+       if (pPrt->PXSQSize != 0) {
+               /* enable Force Sync bit if synchronous queue available */
+               SK_OUT8(IoC, MR_ADDR(Port, TXA_CTRL), TXA_ENA_FSYNC);
+       }
+
+       SkGeInitBmu(pAC, IoC, Port);
+
+       /* mark port as initialized */
+       pPrt->PState = SK_PRT_INIT;
+
+       return(0);
+}      /* SkGeInitPort */
diff -Naur u-boot-2009.03_orig/drivers/net/sk98lin/skgemib.c u-boot-2009.03/drivers/net/sk98lin/skgemib.c
--- u-boot-2009.03_orig/drivers/net/sk98lin/skgemib.c   2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/drivers/net/sk98lin/skgemib.c        2009-03-31 14:54:29.471880000 -0700
@@ -1,1056 +1,1059 @@
-/*****************************************************************************
- *
- * Name:       skgemib.c
- * Project:    GEnesis, PCI Gigabit Ethernet Adapter
- * Version:    $Revision: 1.7 $
- * Date:       $Date: 2002/12/16 09:04:34 $
- * Purpose:    Private Network Management Interface Management Database
- *
- ****************************************************************************/
-
-/******************************************************************************
- *
- *     (C)Copyright 2002 SysKonnect GmbH.
- *
- *     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.
- *
- *     The information in this file is provided "AS IS" without warranty.
- *
- ******************************************************************************/
-
-/*****************************************************************************
- *
- * History:
- *
- *     $Log: skgemib.c,v $
- *     Revision 1.7  2002/12/16 09:04:34  tschilli
- *     Code for VCT handling added.
- *
- *     Revision 1.6  2002/08/09 15:40:21  rwahl
- *     Editorial change (renamed ConfSpeedCap).
- *
- *     Revision 1.5  2002/08/09 11:05:34  rwahl
- *     Added oid handling for link speed cap.
- *
- *     Revision 1.4  2002/08/09 09:40:27  rwahl
- *     Added support for NDIS OID_PNP_xxx.
- *
- *     Revision 1.3  2002/07/17 19:39:54  rwahl
- *     Added handler for OID_SKGE_SPEED_MODE & OID_SKGE_SPEED_STATUS.
- *
- *     Revision 1.2  2002/05/22 08:59:00  rwahl
- *     - static functions only for release build.
- *     - Source file must be included.
- *
- *     Revision 1.1  2002/05/22 08:12:42  rwahl
- *     Initial version.
- *
- ****************************************************************************/
-
-#include <config.h>
-
-/*
- * PRIVATE OID handler function prototypes
- */
-PNMI_STATIC int Addr(SK_AC *pAC, SK_IOC IoC, int action,
-       SK_U32 Id, char *pBuf, unsigned int *pLen, SK_U32 Instance,
-       unsigned int TableIndex, SK_U32 NetIndex);
-PNMI_STATIC int CsumStat(SK_AC *pAC, SK_IOC IoC, int action, SK_U32 Id,
-       char *pBuf, unsigned int *pLen, SK_U32 Instance,
-       unsigned int TableIndex, SK_U32 NetIndex);
-PNMI_STATIC int General(SK_AC *pAC, SK_IOC IoC, int action, SK_U32 Id,
-       char *pBuf, unsigned int *pLen, SK_U32 Instance,
-       unsigned int TableIndex, SK_U32 NetIndex);
-PNMI_STATIC int Mac8023Stat(SK_AC *pAC, SK_IOC IoC, int action, SK_U32 Id,
-       char *pBuf, unsigned int *pLen, SK_U32 Instance,
-       unsigned int TableIndex, SK_U32 NetIndex);
-PNMI_STATIC int MacPrivateConf(SK_AC *pAC, SK_IOC IoC, int action, SK_U32 Id,
-       char *pBuf, unsigned int *pLen, SK_U32 Instance,
-       unsigned int TableIndex, SK_U32 NetIndex);
-PNMI_STATIC int MacPrivateStat(SK_AC *pAC, SK_IOC IoC, int action, SK_U32 Id,
-       char *pBuf, unsigned int *pLen, SK_U32 Instance,
-       unsigned int TableIndex, SK_U32 NetIndex);
-PNMI_STATIC int Monitor(SK_AC *pAC, SK_IOC IoC, int action,
-       SK_U32 Id, char *pBuf, unsigned int *pLen, SK_U32 Instance,
-       unsigned int TableIndex, SK_U32 NetIndex);
-PNMI_STATIC int OidStruct(SK_AC *pAC, SK_IOC IoC, int action, SK_U32 Id,
-       char *pBuf, unsigned int *pLen, SK_U32 Instance,
-       unsigned int TableIndex, SK_U32 NetIndex);
-PNMI_STATIC int Perform(SK_AC *pAC, SK_IOC IoC, int action, SK_U32 Id,
-       char *pBuf, unsigned int* pLen, SK_U32 Instance,
-       unsigned int TableIndex, SK_U32 NetIndex);
-PNMI_STATIC int Rlmt(SK_AC *pAC, SK_IOC IoC, int action, SK_U32 Id,
-       char *pBuf, unsigned int *pLen, SK_U32 Instance,
-       unsigned int TableIndex, SK_U32 NetIndex);
-PNMI_STATIC int RlmtStat(SK_AC *pAC, SK_IOC IoC, int action, SK_U32 Id,
-       char *pBuf, unsigned int *pLen, SK_U32 Instance,
-       unsigned int TableIndex, SK_U32 NetIndex);
-PNMI_STATIC int SensorStat(SK_AC *pAC, SK_IOC IoC, int action, SK_U32 Id,
-       char *pBuf, unsigned int *pLen, SK_U32 Instance,
-       unsigned int TableIndex, SK_U32 NetIndex);
-PNMI_STATIC int Vpd(SK_AC *pAC, SK_IOC IoC, int action, SK_U32 Id,
-       char *pBuf, unsigned int *pLen, SK_U32 Instance,
-       unsigned int TableIndex, SK_U32 NetIndex);
-PNMI_STATIC int Vct(SK_AC *pAC, SK_IOC IoC, int action, SK_U32 Id,
-       char *pBuf, unsigned int *pLen, SK_U32 Instance,
-       unsigned int TableIndex, SK_U32 NetIndex);
-
-#ifdef SK_POWER_MGMT
-PNMI_STATIC int PowerManagement(SK_AC *pAC, SK_IOC IoC, int action, SK_U32 Id,
-       char *pBuf, unsigned int *pLen, SK_U32 Instance,
-       unsigned int TableIndex, SK_U32 NetIndex);
-#endif
-
-
-/* defines *******************************************************************/
-#define ID_TABLE_SIZE (sizeof(IdTable)/sizeof(IdTable[0]))
-
-
-/* global variables **********************************************************/
-
-/*
- * Table to correlate OID with handler function and index to
- * hardware register stored in StatAddress if applicable.
- */
-PNMI_STATIC const SK_PNMI_TAB_ENTRY IdTable[] = {
-       {OID_GEN_XMIT_OK,
-               0,
-               0,
-               0,
-               SK_PNMI_RO, Mac8023Stat, SK_PNMI_HTX},
-       {OID_GEN_RCV_OK,
-               0,
-               0,
-               0,
-               SK_PNMI_RO, Mac8023Stat, SK_PNMI_HRX},
-       {OID_GEN_XMIT_ERROR,
-               0,
-               0,
-               0,
-               SK_PNMI_RO, General, 0},
-       {OID_GEN_RCV_ERROR,
-               0,
-               0,
-               0,
-               SK_PNMI_RO, General, 0},
-       {OID_GEN_RCV_NO_BUFFER,
-               0,
-               0,
-               0,
-               SK_PNMI_RO, General, 0},
-       {OID_GEN_DIRECTED_FRAMES_XMIT,
-               0,
-               0,
-               0,
-               SK_PNMI_RO, Mac8023Stat, SK_PNMI_HTX_UNICAST},
-       {OID_GEN_MULTICAST_FRAMES_XMIT,
-               0,
-               0,
-               0,
-               SK_PNMI_RO, Mac8023Stat, SK_PNMI_HTX_MULTICAST},
-       {OID_GEN_BROADCAST_FRAMES_XMIT,
-               0,
-               0,
-               0,
-               SK_PNMI_RO, Mac8023Stat, SK_PNMI_HTX_BROADCAST},
-       {OID_GEN_DIRECTED_FRAMES_RCV,
-               0,
-               0,
-               0,
-               SK_PNMI_RO, Mac8023Stat, SK_PNMI_HRX_UNICAST},
-       {OID_GEN_MULTICAST_FRAMES_RCV,
-               0,
-               0,
-               0,
-               SK_PNMI_RO, Mac8023Stat, SK_PNMI_HRX_MULTICAST},
-       {OID_GEN_BROADCAST_FRAMES_RCV,
-               0,
-               0,
-               0,
-               SK_PNMI_RO, Mac8023Stat, SK_PNMI_HRX_BROADCAST},
-       {OID_GEN_RCV_CRC_ERROR,
-               0,
-               0,
-               0,
-               SK_PNMI_RO, Mac8023Stat, SK_PNMI_HRX_FCS},
-       {OID_GEN_TRANSMIT_QUEUE_LENGTH,
-               0,
-               0,
-               0,
-               SK_PNMI_RO, General, 0},
-       {OID_802_3_PERMANENT_ADDRESS,
-               0,
-               0,
-               0,
-               SK_PNMI_RO, Mac8023Stat, 0},
-       {OID_802_3_CURRENT_ADDRESS,
-               0,
-               0,
-               0,
-               SK_PNMI_RO, Mac8023Stat, 0},
-       {OID_802_3_RCV_ERROR_ALIGNMENT,
-               0,
-               0,
-               0,
-               SK_PNMI_RO, Mac8023Stat, SK_PNMI_HRX_FRAMING},
-       {OID_802_3_XMIT_ONE_COLLISION,
-               0,
-               0,
-               0,
-               SK_PNMI_RO, Mac8023Stat, SK_PNMI_HTX_SINGLE_COL},
-       {OID_802_3_XMIT_MORE_COLLISIONS,
-               0,
-               0,
-               0,
-               SK_PNMI_RO, Mac8023Stat, SK_PNMI_HTX_MULTI_COL},
-       {OID_802_3_XMIT_DEFERRED,
-               0,
-               0,
-               0,
-               SK_PNMI_RO, Mac8023Stat, SK_PNMI_HTX_DEFFERAL},
-       {OID_802_3_XMIT_MAX_COLLISIONS,
-               0,
-               0,
-               0,
-               SK_PNMI_RO, Mac8023Stat, SK_PNMI_HTX_EXCESS_COL},
-       {OID_802_3_RCV_OVERRUN,
-               0,
-               0,
-               0,
-               SK_PNMI_RO, Mac8023Stat, SK_PNMI_HRX_OVERFLOW},
-       {OID_802_3_XMIT_UNDERRUN,
-               0,
-               0,
-               0,
-               SK_PNMI_RO, Mac8023Stat, SK_PNMI_HTX_UNDERRUN},
-       {OID_802_3_XMIT_TIMES_CRS_LOST,
-               0,
-               0,
-               0,
-               SK_PNMI_RO, Mac8023Stat, SK_PNMI_HTX_CARRIER},
-       {OID_802_3_XMIT_LATE_COLLISIONS,
-               0,
-               0,
-               0,
-               SK_PNMI_RO, Mac8023Stat, SK_PNMI_HTX_LATE_COL},
-#ifdef SK_POWER_MGMT
-       {OID_PNP_CAPABILITIES,
-               0,
-               0,
-               0,
-               SK_PNMI_RO, PowerManagement, 0},
-       {OID_PNP_SET_POWER,
-               0,
-               0,
-               0,
-               SK_PNMI_WO, PowerManagement, 0},
-       {OID_PNP_QUERY_POWER,
-               0,
-               0,
-               0,
-               SK_PNMI_RO, PowerManagement, 0},
-       {OID_PNP_ADD_WAKE_UP_PATTERN,
-               0,
-               0,
-               0,
-               SK_PNMI_WO, PowerManagement, 0},
-       {OID_PNP_REMOVE_WAKE_UP_PATTERN,
-               0,
-               0,
-               0,
-               SK_PNMI_WO, PowerManagement, 0},
-       {OID_PNP_ENABLE_WAKE_UP,
-               0,
-               0,
-               0,
-               SK_PNMI_RW, PowerManagement, 0},
-#endif /* SK_POWER_MGMT */
-       {OID_SKGE_MDB_VERSION,
-               1,
-               0,
-               SK_PNMI_MAI_OFF(MgmtDBVersion),
-               SK_PNMI_RO, General, 0},
-       {OID_SKGE_SUPPORTED_LIST,
-               0,
-               0,
-               0,
-               SK_PNMI_RO, General, 0},
-       {OID_SKGE_ALL_DATA,
-               0,
-               0,
-               0,
-               SK_PNMI_RW, OidStruct, 0},
-       {OID_SKGE_VPD_FREE_BYTES,
-               1,
-               0,
-               SK_PNMI_MAI_OFF(VpdFreeBytes),
-               SK_PNMI_RO, Vpd, 0},
-       {OID_SKGE_VPD_ENTRIES_LIST,
-               1,
-               0,
-               SK_PNMI_MAI_OFF(VpdEntriesList),
-               SK_PNMI_RO, Vpd, 0},
-       {OID_SKGE_VPD_ENTRIES_NUMBER,
-               1,
-               0,
-               SK_PNMI_MAI_OFF(VpdEntriesNumber),
-               SK_PNMI_RO, Vpd, 0},
-       {OID_SKGE_VPD_KEY,
-               SK_PNMI_VPD_ENTRIES,
-               sizeof(SK_PNMI_VPD),
-               SK_PNMI_OFF(Vpd) + SK_PNMI_VPD_OFF(VpdKey),
-               SK_PNMI_RO, Vpd, 0},
-       {OID_SKGE_VPD_VALUE,
-               SK_PNMI_VPD_ENTRIES,
-               sizeof(SK_PNMI_VPD),
-               SK_PNMI_OFF(Vpd) + SK_PNMI_VPD_OFF(VpdValue),
-               SK_PNMI_RO, Vpd, 0},
-       {OID_SKGE_VPD_ACCESS,
-               SK_PNMI_VPD_ENTRIES,
-               sizeof(SK_PNMI_VPD),
-               SK_PNMI_OFF(Vpd) + SK_PNMI_VPD_OFF(VpdAccess),
-               SK_PNMI_RO, Vpd, 0},
-       {OID_SKGE_VPD_ACTION,
-               SK_PNMI_VPD_ENTRIES,
-               sizeof(SK_PNMI_VPD),
-               SK_PNMI_OFF(Vpd) + SK_PNMI_VPD_OFF(VpdAction),
-               SK_PNMI_RW, Vpd, 0},
-       {OID_SKGE_PORT_NUMBER,
-               1,
-               0,
-               SK_PNMI_MAI_OFF(PortNumber),
-               SK_PNMI_RO, General, 0},
-       {OID_SKGE_DEVICE_TYPE,
-               1,
-               0,
-               SK_PNMI_MAI_OFF(DeviceType),
-               SK_PNMI_RO, General, 0},
-       {OID_SKGE_DRIVER_DESCR,
-               1,
-               0,
-               SK_PNMI_MAI_OFF(DriverDescr),
-               SK_PNMI_RO, General, 0},
-       {OID_SKGE_DRIVER_VERSION,
-               1,
-               0,
-               SK_PNMI_MAI_OFF(DriverVersion),
-               SK_PNMI_RO, General, 0},
-       {OID_SKGE_HW_DESCR,
-               1,
-               0,
-               SK_PNMI_MAI_OFF(HwDescr),
-               SK_PNMI_RO, General, 0},
-       {OID_SKGE_HW_VERSION,
-               1,
-               0,
-               SK_PNMI_MAI_OFF(HwVersion),
-               SK_PNMI_RO, General, 0},
-       {OID_SKGE_CHIPSET,
-               1,
-               0,
-               SK_PNMI_MAI_OFF(Chipset),
-               SK_PNMI_RO, General, 0},
-       {OID_SKGE_ACTION,
-               1,
-               0,
-               SK_PNMI_MAI_OFF(Action),
-               SK_PNMI_RW, Perform, 0},
-       {OID_SKGE_RESULT,
-               1,
-               0,
-               SK_PNMI_MAI_OFF(TestResult),
-               SK_PNMI_RO, General, 0},
-       {OID_SKGE_BUS_TYPE,
-               1,
-               0,
-               SK_PNMI_MAI_OFF(BusType),
-               SK_PNMI_RO, General, 0},
-       {OID_SKGE_BUS_SPEED,
-               1,
-               0,
-               SK_PNMI_MAI_OFF(BusSpeed),
-               SK_PNMI_RO, General, 0},
-       {OID_SKGE_BUS_WIDTH,
-               1,
-               0,
-               SK_PNMI_MAI_OFF(BusWidth),
-               SK_PNMI_RO, General, 0},
-       {OID_SKGE_TX_SW_QUEUE_LEN,
-               1,
-               0,
-               SK_PNMI_MAI_OFF(TxSwQueueLen),
-               SK_PNMI_RO, General, 0},
-       {OID_SKGE_TX_SW_QUEUE_MAX,
-               1,
-               0,
-               SK_PNMI_MAI_OFF(TxSwQueueMax),
-               SK_PNMI_RO, General, 0},
-       {OID_SKGE_TX_RETRY,
-               1,
-               0,
-               SK_PNMI_MAI_OFF(TxRetryCts),
-               SK_PNMI_RO, General, 0},
-       {OID_SKGE_RX_INTR_CTS,
-               1,
-               0,
-               SK_PNMI_MAI_OFF(RxIntrCts),
-               SK_PNMI_RO, General, 0},
-       {OID_SKGE_TX_INTR_CTS,
-               1,
-               0,
-               SK_PNMI_MAI_OFF(TxIntrCts),
-               SK_PNMI_RO, General, 0},
-       {OID_SKGE_RX_NO_BUF_CTS,
-               1,
-               0,
-               SK_PNMI_MAI_OFF(RxNoBufCts),
-               SK_PNMI_RO, General, 0},
-       {OID_SKGE_TX_NO_BUF_CTS,
-               1,
-               0,
-               SK_PNMI_MAI_OFF(TxNoBufCts),
-               SK_PNMI_RO, General, 0},
-       {OID_SKGE_TX_USED_DESCR_NO,
-               1,
-               0,
-               SK_PNMI_MAI_OFF(TxUsedDescrNo),
-               SK_PNMI_RO, General, 0},
-       {OID_SKGE_RX_DELIVERED_CTS,
-               1,
-               0,
-               SK_PNMI_MAI_OFF(RxDeliveredCts),
-               SK_PNMI_RO, General, 0},
-       {OID_SKGE_RX_OCTETS_DELIV_CTS,
-               1,
-               0,
-               SK_PNMI_MAI_OFF(RxOctetsDeliveredCts),
-               SK_PNMI_RO, General, 0},
-       {OID_SKGE_RX_HW_ERROR_CTS,
-               1,
-               0,
-               SK_PNMI_MAI_OFF(RxHwErrorsCts),
-               SK_PNMI_RO, General, 0},
-       {OID_SKGE_TX_HW_ERROR_CTS,
-               1,
-               0,
-               SK_PNMI_MAI_OFF(TxHwErrorsCts),
-               SK_PNMI_RO, General, 0},
-       {OID_SKGE_IN_ERRORS_CTS,
-               1,
-               0,
-               SK_PNMI_MAI_OFF(InErrorsCts),
-               SK_PNMI_RO, General, 0},
-       {OID_SKGE_OUT_ERROR_CTS,
-               1,
-               0,
-               SK_PNMI_MAI_OFF(OutErrorsCts),
-               SK_PNMI_RO, General, 0},
-       {OID_SKGE_ERR_RECOVERY_CTS,
-               1,
-               0,
-               SK_PNMI_MAI_OFF(ErrRecoveryCts),
-               SK_PNMI_RO, General, 0},
-       {OID_SKGE_SYSUPTIME,
-               1,
-               0,
-               SK_PNMI_MAI_OFF(SysUpTime),
-               SK_PNMI_RO, General, 0},
-       {OID_SKGE_SENSOR_NUMBER,
-               1,
-               0,
-               SK_PNMI_MAI_OFF(SensorNumber),
-               SK_PNMI_RO, General, 0},
-       {OID_SKGE_SENSOR_INDEX,
-               SK_PNMI_SENSOR_ENTRIES,
-               sizeof(SK_PNMI_SENSOR),
-               SK_PNMI_OFF(Sensor) + SK_PNMI_SEN_OFF(SensorIndex),
-               SK_PNMI_RO, SensorStat, 0},
-       {OID_SKGE_SENSOR_DESCR,
-               SK_PNMI_SENSOR_ENTRIES,
-               sizeof(SK_PNMI_SENSOR),
-               SK_PNMI_OFF(Sensor) + SK_PNMI_SEN_OFF(SensorDescr),
-               SK_PNMI_RO, SensorStat, 0},
-       {OID_SKGE_SENSOR_TYPE,
-               SK_PNMI_SENSOR_ENTRIES,
-               sizeof(SK_PNMI_SENSOR),
-               SK_PNMI_OFF(Sensor) + SK_PNMI_SEN_OFF(SensorType),
-               SK_PNMI_RO, SensorStat, 0},
-       {OID_SKGE_SENSOR_VALUE,
-               SK_PNMI_SENSOR_ENTRIES,
-               sizeof(SK_PNMI_SENSOR),
-               SK_PNMI_OFF(Sensor) + SK_PNMI_SEN_OFF(SensorValue),
-               SK_PNMI_RO, SensorStat, 0},
-       {OID_SKGE_SENSOR_WAR_THRES_LOW,
-               SK_PNMI_SENSOR_ENTRIES,
-               sizeof(SK_PNMI_SENSOR),
-               SK_PNMI_OFF(Sensor) + SK_PNMI_SEN_OFF(SensorWarningThresholdLow),
-               SK_PNMI_RO, SensorStat, 0},
-       {OID_SKGE_SENSOR_WAR_THRES_UPP,
-               SK_PNMI_SENSOR_ENTRIES,
-               sizeof(SK_PNMI_SENSOR),
-               SK_PNMI_OFF(Sensor) + SK_PNMI_SEN_OFF(SensorWarningThresholdHigh),
-               SK_PNMI_RO, SensorStat, 0},
-       {OID_SKGE_SENSOR_ERR_THRES_LOW,
-               SK_PNMI_SENSOR_ENTRIES,
-               sizeof(SK_PNMI_SENSOR),
-               SK_PNMI_OFF(Sensor) + SK_PNMI_SEN_OFF(SensorErrorThresholdLow),
-               SK_PNMI_RO, SensorStat, 0},
-       {OID_SKGE_SENSOR_ERR_THRES_UPP,
-               SK_PNMI_SENSOR_ENTRIES,
-               sizeof(SK_PNMI_SENSOR),
-               SK_PNMI_OFF(Sensor) + SK_PNMI_SEN_OFF(SensorErrorThresholdHigh),
-               SK_PNMI_RO, SensorStat, 0},
-       {OID_SKGE_SENSOR_STATUS,
-               SK_PNMI_SENSOR_ENTRIES,
-               sizeof(SK_PNMI_SENSOR),
-               SK_PNMI_OFF(Sensor) + SK_PNMI_SEN_OFF(SensorStatus),
-               SK_PNMI_RO, SensorStat, 0},
-       {OID_SKGE_SENSOR_WAR_CTS,
-               SK_PNMI_SENSOR_ENTRIES,
-               sizeof(SK_PNMI_SENSOR),
-               SK_PNMI_OFF(Sensor) + SK_PNMI_SEN_OFF(SensorWarningCts),
-               SK_PNMI_RO, SensorStat, 0},
-       {OID_SKGE_SENSOR_ERR_CTS,
-               SK_PNMI_SENSOR_ENTRIES,
-               sizeof(SK_PNMI_SENSOR),
-               SK_PNMI_OFF(Sensor) + SK_PNMI_SEN_OFF(SensorErrorCts),
-               SK_PNMI_RO, SensorStat, 0},
-       {OID_SKGE_SENSOR_WAR_TIME,
-               SK_PNMI_SENSOR_ENTRIES,
-               sizeof(SK_PNMI_SENSOR),
-               SK_PNMI_OFF(Sensor) + SK_PNMI_SEN_OFF(SensorWarningTimestamp),
-               SK_PNMI_RO, SensorStat, 0},
-       {OID_SKGE_SENSOR_ERR_TIME,
-               SK_PNMI_SENSOR_ENTRIES,
-               sizeof(SK_PNMI_SENSOR),
-               SK_PNMI_OFF(Sensor) + SK_PNMI_SEN_OFF(SensorErrorTimestamp),
-               SK_PNMI_RO, SensorStat, 0},
-       {OID_SKGE_CHKSM_NUMBER,
-               1,
-               0,
-               SK_PNMI_MAI_OFF(ChecksumNumber),
-               SK_PNMI_RO, General, 0},
-       {OID_SKGE_CHKSM_RX_OK_CTS,
-               SKCS_NUM_PROTOCOLS,
-               sizeof(SK_PNMI_CHECKSUM),
-               SK_PNMI_OFF(Checksum) + SK_PNMI_CHK_OFF(ChecksumRxOkCts),
-               SK_PNMI_RO, CsumStat, 0},
-       {OID_SKGE_CHKSM_RX_UNABLE_CTS,
-               SKCS_NUM_PROTOCOLS,
-               sizeof(SK_PNMI_CHECKSUM),
-               SK_PNMI_OFF(Checksum) + SK_PNMI_CHK_OFF(ChecksumRxUnableCts),
-               SK_PNMI_RO, CsumStat, 0},
-       {OID_SKGE_CHKSM_RX_ERR_CTS,
-               SKCS_NUM_PROTOCOLS,
-               sizeof(SK_PNMI_CHECKSUM),
-               SK_PNMI_OFF(Checksum) + SK_PNMI_CHK_OFF(ChecksumRxErrCts),
-               SK_PNMI_RO, CsumStat, 0},
-       {OID_SKGE_CHKSM_TX_OK_CTS,
-               SKCS_NUM_PROTOCOLS,
-               sizeof(SK_PNMI_CHECKSUM),
-               SK_PNMI_OFF(Checksum) + SK_PNMI_CHK_OFF(ChecksumTxOkCts),
-               SK_PNMI_RO, CsumStat, 0},
-       {OID_SKGE_CHKSM_TX_UNABLE_CTS,
-               SKCS_NUM_PROTOCOLS,
-               sizeof(SK_PNMI_CHECKSUM),
-               SK_PNMI_OFF(Checksum) + SK_PNMI_CHK_OFF(ChecksumTxUnableCts),
-               SK_PNMI_RO, CsumStat, 0},
-       {OID_SKGE_STAT_TX,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatTxOkCts),
-               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HTX},
-       {OID_SKGE_STAT_TX_OCTETS,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatTxOctetsOkCts),
-               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HTX_OCTET},
-       {OID_SKGE_STAT_TX_BROADCAST,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatTxBroadcastOkCts),
-               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HTX_BROADCAST},
-       {OID_SKGE_STAT_TX_MULTICAST,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatTxMulticastOkCts),
-               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HTX_MULTICAST},
-       {OID_SKGE_STAT_TX_UNICAST,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatTxUnicastOkCts),
-               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HTX_UNICAST},
-       {OID_SKGE_STAT_TX_LONGFRAMES,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatTxLongFramesCts),
-               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HTX_LONGFRAMES},
-       {OID_SKGE_STAT_TX_BURST,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatTxBurstCts),
-               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HTX_BURST},
-       {OID_SKGE_STAT_TX_PFLOWC,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatTxPauseMacCtrlCts),
-               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HTX_PMACC},
-       {OID_SKGE_STAT_TX_FLOWC,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatTxMacCtrlCts),
-               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HTX_MACC},
-       {OID_SKGE_STAT_TX_SINGLE_COL,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatTxSingleCollisionCts),
-               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HTX_SINGLE_COL},
-       {OID_SKGE_STAT_TX_MULTI_COL,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatTxMultipleCollisionCts),
-               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HTX_MULTI_COL},
-       {OID_SKGE_STAT_TX_EXCESS_COL,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatTxExcessiveCollisionCts),
-               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HTX_EXCESS_COL},
-       {OID_SKGE_STAT_TX_LATE_COL,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatTxLateCollisionCts),
-               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HTX_LATE_COL},
-       {OID_SKGE_STAT_TX_DEFFERAL,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatTxDeferralCts),
-               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HTX_DEFFERAL},
-       {OID_SKGE_STAT_TX_EXCESS_DEF,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatTxExcessiveDeferralCts),
-               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HTX_EXCESS_DEF},
-       {OID_SKGE_STAT_TX_UNDERRUN,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatTxFifoUnderrunCts),
-               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HTX_UNDERRUN},
-       {OID_SKGE_STAT_TX_CARRIER,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatTxCarrierCts),
-               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HTX_CARRIER},
-/*     {OID_SKGE_STAT_TX_UTIL,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatTxUtilization),
-               SK_PNMI_RO, MacPrivateStat, (SK_U16)(-1)}, */
-       {OID_SKGE_STAT_TX_64,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatTx64Cts),
-               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HTX_64},
-       {OID_SKGE_STAT_TX_127,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatTx127Cts),
-               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HTX_127},
-       {OID_SKGE_STAT_TX_255,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatTx255Cts),
-               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HTX_255},
-       {OID_SKGE_STAT_TX_511,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatTx511Cts),
-               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HTX_511},
-       {OID_SKGE_STAT_TX_1023,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatTx1023Cts),
-               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HTX_1023},
-       {OID_SKGE_STAT_TX_MAX,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatTxMaxCts),
-               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HTX_MAX},
-       {OID_SKGE_STAT_TX_SYNC,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatTxSyncCts),
-               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HTX_SYNC},
-       {OID_SKGE_STAT_TX_SYNC_OCTETS,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatTxSyncOctetsCts),
-               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HTX_SYNC_OCTET},
-       {OID_SKGE_STAT_RX,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRxOkCts),
-               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX},
-       {OID_SKGE_STAT_RX_OCTETS,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRxOctetsOkCts),
-               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_OCTET},
-       {OID_SKGE_STAT_RX_BROADCAST,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRxBroadcastOkCts),
-               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_BROADCAST},
-       {OID_SKGE_STAT_RX_MULTICAST,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRxMulticastOkCts),
-               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_MULTICAST},
-       {OID_SKGE_STAT_RX_UNICAST,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRxUnicastOkCts),
-               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_UNICAST},
-       {OID_SKGE_STAT_RX_LONGFRAMES,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRxLongFramesCts),
-               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_LONGFRAMES},
-       {OID_SKGE_STAT_RX_PFLOWC,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRxPauseMacCtrlCts),
-               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_PMACC},
-       {OID_SKGE_STAT_RX_FLOWC,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRxMacCtrlCts),
-               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_MACC},
-       {OID_SKGE_STAT_RX_PFLOWC_ERR,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRxPauseMacCtrlErrorCts),
-               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_PMACC_ERR},
-       {OID_SKGE_STAT_RX_FLOWC_UNKWN,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRxMacCtrlUnknownCts),
-               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_MACC_UNKWN},
-       {OID_SKGE_STAT_RX_BURST,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRxBurstCts),
-               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_BURST},
-       {OID_SKGE_STAT_RX_MISSED,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRxMissedCts),
-               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_MISSED},
-       {OID_SKGE_STAT_RX_FRAMING,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRxFramingCts),
-               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_FRAMING},
-       {OID_SKGE_STAT_RX_OVERFLOW,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRxFifoOverflowCts),
-               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_OVERFLOW},
-       {OID_SKGE_STAT_RX_JABBER,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRxJabberCts),
-               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_JABBER},
-       {OID_SKGE_STAT_RX_CARRIER,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRxCarrierCts),
-               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_CARRIER},
-       {OID_SKGE_STAT_RX_IR_LENGTH,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRxIRLengthCts),
-               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_IRLENGTH},
-       {OID_SKGE_STAT_RX_SYMBOL,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRxSymbolCts),
-               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_SYMBOL},
-       {OID_SKGE_STAT_RX_SHORTS,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRxShortsCts),
-               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_SHORTS},
-       {OID_SKGE_STAT_RX_RUNT,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRxRuntCts),
-               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_RUNT},
-       {OID_SKGE_STAT_RX_CEXT,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRxCextCts),
-               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_CEXT},
-       {OID_SKGE_STAT_RX_TOO_LONG,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRxTooLongCts),
-               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_TOO_LONG},
-       {OID_SKGE_STAT_RX_FCS,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRxFcsCts),
-               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_FCS},
-/*     {OID_SKGE_STAT_RX_UTIL,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRxUtilization),
-               SK_PNMI_RO, MacPrivateStat, (SK_U16)(-1)}, */
-       {OID_SKGE_STAT_RX_64,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRx64Cts),
-               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_64},
-       {OID_SKGE_STAT_RX_127,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRx127Cts),
-               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_127},
-       {OID_SKGE_STAT_RX_255,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRx255Cts),
-               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_255},
-       {OID_SKGE_STAT_RX_511,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRx511Cts),
-               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_511},
-       {OID_SKGE_STAT_RX_1023,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRx1023Cts),
-               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_1023},
-       {OID_SKGE_STAT_RX_MAX,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_STAT),
-               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRxMaxCts),
-               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_MAX},
-       {OID_SKGE_PHYS_CUR_ADDR,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_CONF),
-               SK_PNMI_OFF(Conf) + SK_PNMI_CNF_OFF(ConfMacCurrentAddr),
-               SK_PNMI_RW, Addr, 0},
-       {OID_SKGE_PHYS_FAC_ADDR,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_CONF),
-               SK_PNMI_OFF(Conf) + SK_PNMI_CNF_OFF(ConfMacFactoryAddr),
-               SK_PNMI_RO, Addr, 0},
-       {OID_SKGE_PMD,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_CONF),
-               SK_PNMI_OFF(Conf) + SK_PNMI_CNF_OFF(ConfPMD),
-               SK_PNMI_RO, MacPrivateConf, 0},
-       {OID_SKGE_CONNECTOR,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_CONF),
-               SK_PNMI_OFF(Conf) + SK_PNMI_CNF_OFF(ConfConnector),
-               SK_PNMI_RO, MacPrivateConf, 0},
-       {OID_SKGE_LINK_CAP,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_CONF),
-               SK_PNMI_OFF(Conf) + SK_PNMI_CNF_OFF(ConfLinkCapability),
-               SK_PNMI_RO, MacPrivateConf, 0},
-       {OID_SKGE_LINK_MODE,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_CONF),
-               SK_PNMI_OFF(Conf) + SK_PNMI_CNF_OFF(ConfLinkMode),
-               SK_PNMI_RW, MacPrivateConf, 0},
-       {OID_SKGE_LINK_MODE_STATUS,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_CONF),
-               SK_PNMI_OFF(Conf) + SK_PNMI_CNF_OFF(ConfLinkModeStatus),
-               SK_PNMI_RO, MacPrivateConf, 0},
-       {OID_SKGE_LINK_STATUS,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_CONF),
-               SK_PNMI_OFF(Conf) + SK_PNMI_CNF_OFF(ConfLinkStatus),
-               SK_PNMI_RO, MacPrivateConf, 0},
-       {OID_SKGE_FLOWCTRL_CAP,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_CONF),
-               SK_PNMI_OFF(Conf) + SK_PNMI_CNF_OFF(ConfFlowCtrlCapability),
-               SK_PNMI_RO, MacPrivateConf, 0},
-       {OID_SKGE_FLOWCTRL_MODE,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_CONF),
-               SK_PNMI_OFF(Conf) + SK_PNMI_CNF_OFF(ConfFlowCtrlMode),
-               SK_PNMI_RW, MacPrivateConf, 0},
-       {OID_SKGE_FLOWCTRL_STATUS,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_CONF),
-               SK_PNMI_OFF(Conf) + SK_PNMI_CNF_OFF(ConfFlowCtrlStatus),
-               SK_PNMI_RO, MacPrivateConf, 0},
-       {OID_SKGE_PHY_OPERATION_CAP,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_CONF),
-               SK_PNMI_OFF(Conf) + SK_PNMI_CNF_OFF(ConfPhyOperationCapability),
-               SK_PNMI_RO, MacPrivateConf, 0},
-       {OID_SKGE_PHY_OPERATION_MODE,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_CONF),
-               SK_PNMI_OFF(Conf) + SK_PNMI_CNF_OFF(ConfPhyOperationMode),
-               SK_PNMI_RW, MacPrivateConf, 0},
-       {OID_SKGE_PHY_OPERATION_STATUS,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_CONF),
-               SK_PNMI_OFF(Conf) + SK_PNMI_CNF_OFF(ConfPhyOperationStatus),
-               SK_PNMI_RO, MacPrivateConf, 0},
-       {OID_SKGE_SPEED_CAP,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_CONF),
-               SK_PNMI_OFF(Conf) + SK_PNMI_CNF_OFF(ConfSpeedCapability),
-               SK_PNMI_RO, MacPrivateConf, 0},
-       {OID_SKGE_SPEED_MODE,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_CONF),
-               SK_PNMI_OFF(Conf) + SK_PNMI_CNF_OFF(ConfSpeedMode),
-               SK_PNMI_RW, MacPrivateConf, 0},
-       {OID_SKGE_SPEED_STATUS,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_CONF),
-               SK_PNMI_OFF(Conf) + SK_PNMI_CNF_OFF(ConfSpeedStatus),
-               SK_PNMI_RO, MacPrivateConf, 0},
-       {OID_SKGE_TRAP,
-               1,
-               0,
-               SK_PNMI_MAI_OFF(Trap),
-               SK_PNMI_RO, General, 0},
-       {OID_SKGE_TRAP_NUMBER,
-               1,
-               0,
-               SK_PNMI_MAI_OFF(TrapNumber),
-               SK_PNMI_RO, General, 0},
-       {OID_SKGE_RLMT_MODE,
-               1,
-               0,
-               SK_PNMI_MAI_OFF(RlmtMode),
-               SK_PNMI_RW, Rlmt, 0},
-       {OID_SKGE_RLMT_PORT_NUMBER,
-               1,
-               0,
-               SK_PNMI_MAI_OFF(RlmtPortNumber),
-               SK_PNMI_RO, Rlmt, 0},
-       {OID_SKGE_RLMT_PORT_ACTIVE,
-               1,
-               0,
-               SK_PNMI_MAI_OFF(RlmtPortActive),
-               SK_PNMI_RO, Rlmt, 0},
-       {OID_SKGE_RLMT_PORT_PREFERRED,
-               1,
-               0,
-               SK_PNMI_MAI_OFF(RlmtPortPreferred),
-               SK_PNMI_RW, Rlmt, 0},
-       {OID_SKGE_RLMT_CHANGE_CTS,
-               1,
-               0,
-               SK_PNMI_MAI_OFF(RlmtChangeCts),
-               SK_PNMI_RO, Rlmt, 0},
-       {OID_SKGE_RLMT_CHANGE_TIME,
-               1,
-               0,
-               SK_PNMI_MAI_OFF(RlmtChangeTime),
-               SK_PNMI_RO, Rlmt, 0},
-       {OID_SKGE_RLMT_CHANGE_ESTIM,
-               1,
-               0,
-               SK_PNMI_MAI_OFF(RlmtChangeEstimate),
-               SK_PNMI_RO, Rlmt, 0},
-       {OID_SKGE_RLMT_CHANGE_THRES,
-               1,
-               0,
-               SK_PNMI_MAI_OFF(RlmtChangeThreshold),
-               SK_PNMI_RW, Rlmt, 0},
-       {OID_SKGE_RLMT_PORT_INDEX,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_RLMT),
-               SK_PNMI_OFF(Rlmt) + SK_PNMI_RLM_OFF(RlmtIndex),
-               SK_PNMI_RO, RlmtStat, 0},
-       {OID_SKGE_RLMT_STATUS,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_RLMT),
-               SK_PNMI_OFF(Rlmt) + SK_PNMI_RLM_OFF(RlmtStatus),
-               SK_PNMI_RO, RlmtStat, 0},
-       {OID_SKGE_RLMT_TX_HELLO_CTS,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_RLMT),
-               SK_PNMI_OFF(Rlmt) + SK_PNMI_RLM_OFF(RlmtTxHelloCts),
-               SK_PNMI_RO, RlmtStat, 0},
-       {OID_SKGE_RLMT_RX_HELLO_CTS,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_RLMT),
-               SK_PNMI_OFF(Rlmt) + SK_PNMI_RLM_OFF(RlmtRxHelloCts),
-               SK_PNMI_RO, RlmtStat, 0},
-       {OID_SKGE_RLMT_TX_SP_REQ_CTS,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_RLMT),
-               SK_PNMI_OFF(Rlmt) + SK_PNMI_RLM_OFF(RlmtTxSpHelloReqCts),
-               SK_PNMI_RO, RlmtStat, 0},
-       {OID_SKGE_RLMT_RX_SP_CTS,
-               SK_PNMI_MAC_ENTRIES,
-               sizeof(SK_PNMI_RLMT),
-               SK_PNMI_OFF(Rlmt) + SK_PNMI_RLM_OFF(RlmtRxSpHelloCts),
-               SK_PNMI_RO, RlmtStat, 0},
-       {OID_SKGE_RLMT_MONITOR_NUMBER,
-               1,
-               0,
-               SK_PNMI_MAI_OFF(RlmtMonitorNumber),
-               SK_PNMI_RO, General, 0},
-       {OID_SKGE_RLMT_MONITOR_INDEX,
-               SK_PNMI_MONITOR_ENTRIES,
-               sizeof(SK_PNMI_RLMT_MONITOR),
-               SK_PNMI_OFF(RlmtMonitor) + SK_PNMI_MON_OFF(RlmtMonitorIndex),
-               SK_PNMI_RO, Monitor, 0},
-       {OID_SKGE_RLMT_MONITOR_ADDR,
-               SK_PNMI_MONITOR_ENTRIES,
-               sizeof(SK_PNMI_RLMT_MONITOR),
-               SK_PNMI_OFF(RlmtMonitor) + SK_PNMI_MON_OFF(RlmtMonitorAddr),
-               SK_PNMI_RO, Monitor, 0},
-       {OID_SKGE_RLMT_MONITOR_ERRS,
-               SK_PNMI_MONITOR_ENTRIES,
-               sizeof(SK_PNMI_RLMT_MONITOR),
-               SK_PNMI_OFF(RlmtMonitor) + SK_PNMI_MON_OFF(RlmtMonitorErrorCts),
-               SK_PNMI_RO, Monitor, 0},
-       {OID_SKGE_RLMT_MONITOR_TIMESTAMP,
-               SK_PNMI_MONITOR_ENTRIES,
-               sizeof(SK_PNMI_RLMT_MONITOR),
-               SK_PNMI_OFF(RlmtMonitor) + SK_PNMI_MON_OFF(RlmtMonitorTimestamp),
-               SK_PNMI_RO, Monitor, 0},
-       {OID_SKGE_RLMT_MONITOR_ADMIN,
-               SK_PNMI_MONITOR_ENTRIES,
-               sizeof(SK_PNMI_RLMT_MONITOR),
-               SK_PNMI_OFF(RlmtMonitor) + SK_PNMI_MON_OFF(RlmtMonitorAdmin),
-               SK_PNMI_RW, Monitor, 0},
-       {OID_SKGE_MTU,
-               1,
-               0,
-               SK_PNMI_MAI_OFF(MtuSize),
-               SK_PNMI_RW, MacPrivateConf, 0},
-       {OID_SKGE_VCT_GET,
-               0,
-               0,
-               0,
-               SK_PNMI_RO, Vct, 0},
-       {OID_SKGE_VCT_SET,
-               0,
-               0,
-               0,
-               SK_PNMI_WO, Vct, 0},
-       {OID_SKGE_VCT_STATUS,
-               0,
-               0,
-               0,
-               SK_PNMI_RO, Vct, 0},
-};
+/*****************************************************************************
+ *
+ * Name:       skgemib.c
+ * Project:    GEnesis, PCI Gigabit Ethernet Adapter
+ * Version:    $Revision: 1.1.1.1 $
+ * Date:       $Date: 2009/03/25 22:22:09 $
+ * Purpose:    Private Network Management Interface Management Database
+ *
+ ****************************************************************************/
+
+/******************************************************************************
+ *
+ *     (C)Copyright 2002 SysKonnect GmbH.
+ *
+ *     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.
+ *
+ *     The information in this file is provided "AS IS" without warranty.
+ *
+ ******************************************************************************/
+
+/*****************************************************************************
+ *
+ * History:
+ *
+ *     $Log: skgemib.c,v $
+ *     Revision 1.1.1.1  2009/03/25 22:22:09  kenagy
+ *     no message
+ *     
+ *     Revision 1.7  2002/12/16 09:04:34  tschilli
+ *     Code for VCT handling added.
+ *
+ *     Revision 1.6  2002/08/09 15:40:21  rwahl
+ *     Editorial change (renamed ConfSpeedCap).
+ *
+ *     Revision 1.5  2002/08/09 11:05:34  rwahl
+ *     Added oid handling for link speed cap.
+ *
+ *     Revision 1.4  2002/08/09 09:40:27  rwahl
+ *     Added support for NDIS OID_PNP_xxx.
+ *
+ *     Revision 1.3  2002/07/17 19:39:54  rwahl
+ *     Added handler for OID_SKGE_SPEED_MODE & OID_SKGE_SPEED_STATUS.
+ *
+ *     Revision 1.2  2002/05/22 08:59:00  rwahl
+ *     - static functions only for release build.
+ *     - Source file must be included.
+ *
+ *     Revision 1.1  2002/05/22 08:12:42  rwahl
+ *     Initial version.
+ *
+ ****************************************************************************/
+
+#include <config.h>
+
+/*
+ * PRIVATE OID handler function prototypes
+ */
+PNMI_STATIC int Addr(SK_AC *pAC, SK_IOC IoC, int action,
+       SK_U32 Id, char *pBuf, unsigned int *pLen, SK_U32 Instance,
+       unsigned int TableIndex, SK_U32 NetIndex);
+PNMI_STATIC int CsumStat(SK_AC *pAC, SK_IOC IoC, int action, SK_U32 Id,
+       char *pBuf, unsigned int *pLen, SK_U32 Instance,
+       unsigned int TableIndex, SK_U32 NetIndex);
+PNMI_STATIC int General(SK_AC *pAC, SK_IOC IoC, int action, SK_U32 Id,
+       char *pBuf, unsigned int *pLen, SK_U32 Instance,
+       unsigned int TableIndex, SK_U32 NetIndex);
+PNMI_STATIC int Mac8023Stat(SK_AC *pAC, SK_IOC IoC, int action, SK_U32 Id,
+       char *pBuf, unsigned int *pLen, SK_U32 Instance,
+       unsigned int TableIndex, SK_U32 NetIndex);
+PNMI_STATIC int MacPrivateConf(SK_AC *pAC, SK_IOC IoC, int action, SK_U32 Id,
+       char *pBuf, unsigned int *pLen, SK_U32 Instance,
+       unsigned int TableIndex, SK_U32 NetIndex);
+PNMI_STATIC int MacPrivateStat(SK_AC *pAC, SK_IOC IoC, int action, SK_U32 Id,
+       char *pBuf, unsigned int *pLen, SK_U32 Instance,
+       unsigned int TableIndex, SK_U32 NetIndex);
+PNMI_STATIC int Monitor(SK_AC *pAC, SK_IOC IoC, int action,
+       SK_U32 Id, char *pBuf, unsigned int *pLen, SK_U32 Instance,
+       unsigned int TableIndex, SK_U32 NetIndex);
+PNMI_STATIC int OidStruct(SK_AC *pAC, SK_IOC IoC, int action, SK_U32 Id,
+       char *pBuf, unsigned int *pLen, SK_U32 Instance,
+       unsigned int TableIndex, SK_U32 NetIndex);
+PNMI_STATIC int Perform(SK_AC *pAC, SK_IOC IoC, int action, SK_U32 Id,
+       char *pBuf, unsigned int* pLen, SK_U32 Instance,
+       unsigned int TableIndex, SK_U32 NetIndex);
+PNMI_STATIC int Rlmt(SK_AC *pAC, SK_IOC IoC, int action, SK_U32 Id,
+       char *pBuf, unsigned int *pLen, SK_U32 Instance,
+       unsigned int TableIndex, SK_U32 NetIndex);
+PNMI_STATIC int RlmtStat(SK_AC *pAC, SK_IOC IoC, int action, SK_U32 Id,
+       char *pBuf, unsigned int *pLen, SK_U32 Instance,
+       unsigned int TableIndex, SK_U32 NetIndex);
+PNMI_STATIC int SensorStat(SK_AC *pAC, SK_IOC IoC, int action, SK_U32 Id,
+       char *pBuf, unsigned int *pLen, SK_U32 Instance,
+       unsigned int TableIndex, SK_U32 NetIndex);
+PNMI_STATIC int Vpd(SK_AC *pAC, SK_IOC IoC, int action, SK_U32 Id,
+       char *pBuf, unsigned int *pLen, SK_U32 Instance,
+       unsigned int TableIndex, SK_U32 NetIndex);
+PNMI_STATIC int Vct(SK_AC *pAC, SK_IOC IoC, int action, SK_U32 Id,
+       char *pBuf, unsigned int *pLen, SK_U32 Instance,
+       unsigned int TableIndex, SK_U32 NetIndex);
+
+#ifdef SK_POWER_MGMT
+PNMI_STATIC int PowerManagement(SK_AC *pAC, SK_IOC IoC, int action, SK_U32 Id,
+       char *pBuf, unsigned int *pLen, SK_U32 Instance,
+       unsigned int TableIndex, SK_U32 NetIndex);
+#endif
+
+
+/* defines *******************************************************************/
+#define ID_TABLE_SIZE (sizeof(IdTable)/sizeof(IdTable[0]))
+
+
+/* global variables **********************************************************/
+
+/*
+ * Table to correlate OID with handler function and index to
+ * hardware register stored in StatAddress if applicable.
+ */
+PNMI_STATIC const SK_PNMI_TAB_ENTRY IdTable[] = {
+       {OID_GEN_XMIT_OK,
+               0,
+               0,
+               0,
+               SK_PNMI_RO, Mac8023Stat, SK_PNMI_HTX},
+       {OID_GEN_RCV_OK,
+               0,
+               0,
+               0,
+               SK_PNMI_RO, Mac8023Stat, SK_PNMI_HRX},
+       {OID_GEN_XMIT_ERROR,
+               0,
+               0,
+               0,
+               SK_PNMI_RO, General, 0},
+       {OID_GEN_RCV_ERROR,
+               0,
+               0,
+               0,
+               SK_PNMI_RO, General, 0},
+       {OID_GEN_RCV_NO_BUFFER,
+               0,
+               0,
+               0,
+               SK_PNMI_RO, General, 0},
+       {OID_GEN_DIRECTED_FRAMES_XMIT,
+               0,
+               0,
+               0,
+               SK_PNMI_RO, Mac8023Stat, SK_PNMI_HTX_UNICAST},
+       {OID_GEN_MULTICAST_FRAMES_XMIT,
+               0,
+               0,
+               0,
+               SK_PNMI_RO, Mac8023Stat, SK_PNMI_HTX_MULTICAST},
+       {OID_GEN_BROADCAST_FRAMES_XMIT,
+               0,
+               0,
+               0,
+               SK_PNMI_RO, Mac8023Stat, SK_PNMI_HTX_BROADCAST},
+       {OID_GEN_DIRECTED_FRAMES_RCV,
+               0,
+               0,
+               0,
+               SK_PNMI_RO, Mac8023Stat, SK_PNMI_HRX_UNICAST},
+       {OID_GEN_MULTICAST_FRAMES_RCV,
+               0,
+               0,
+               0,
+               SK_PNMI_RO, Mac8023Stat, SK_PNMI_HRX_MULTICAST},
+       {OID_GEN_BROADCAST_FRAMES_RCV,
+               0,
+               0,
+               0,
+               SK_PNMI_RO, Mac8023Stat, SK_PNMI_HRX_BROADCAST},
+       {OID_GEN_RCV_CRC_ERROR,
+               0,
+               0,
+               0,
+               SK_PNMI_RO, Mac8023Stat, SK_PNMI_HRX_FCS},
+       {OID_GEN_TRANSMIT_QUEUE_LENGTH,
+               0,
+               0,
+               0,
+               SK_PNMI_RO, General, 0},
+       {OID_802_3_PERMANENT_ADDRESS,
+               0,
+               0,
+               0,
+               SK_PNMI_RO, Mac8023Stat, 0},
+       {OID_802_3_CURRENT_ADDRESS,
+               0,
+               0,
+               0,
+               SK_PNMI_RO, Mac8023Stat, 0},
+       {OID_802_3_RCV_ERROR_ALIGNMENT,
+               0,
+               0,
+               0,
+               SK_PNMI_RO, Mac8023Stat, SK_PNMI_HRX_FRAMING},
+       {OID_802_3_XMIT_ONE_COLLISION,
+               0,
+               0,
+               0,
+               SK_PNMI_RO, Mac8023Stat, SK_PNMI_HTX_SINGLE_COL},
+       {OID_802_3_XMIT_MORE_COLLISIONS,
+               0,
+               0,
+               0,
+               SK_PNMI_RO, Mac8023Stat, SK_PNMI_HTX_MULTI_COL},
+       {OID_802_3_XMIT_DEFERRED,
+               0,
+               0,
+               0,
+               SK_PNMI_RO, Mac8023Stat, SK_PNMI_HTX_DEFFERAL},
+       {OID_802_3_XMIT_MAX_COLLISIONS,
+               0,
+               0,
+               0,
+               SK_PNMI_RO, Mac8023Stat, SK_PNMI_HTX_EXCESS_COL},
+       {OID_802_3_RCV_OVERRUN,
+               0,
+               0,
+               0,
+               SK_PNMI_RO, Mac8023Stat, SK_PNMI_HRX_OVERFLOW},
+       {OID_802_3_XMIT_UNDERRUN,
+               0,
+               0,
+               0,
+               SK_PNMI_RO, Mac8023Stat, SK_PNMI_HTX_UNDERRUN},
+       {OID_802_3_XMIT_TIMES_CRS_LOST,
+               0,
+               0,
+               0,
+               SK_PNMI_RO, Mac8023Stat, SK_PNMI_HTX_CARRIER},
+       {OID_802_3_XMIT_LATE_COLLISIONS,
+               0,
+               0,
+               0,
+               SK_PNMI_RO, Mac8023Stat, SK_PNMI_HTX_LATE_COL},
+#ifdef SK_POWER_MGMT
+       {OID_PNP_CAPABILITIES,
+               0,
+               0,
+               0,
+               SK_PNMI_RO, PowerManagement, 0},
+       {OID_PNP_SET_POWER,
+               0,
+               0,
+               0,
+               SK_PNMI_WO, PowerManagement, 0},
+       {OID_PNP_QUERY_POWER,
+               0,
+               0,
+               0,
+               SK_PNMI_RO, PowerManagement, 0},
+       {OID_PNP_ADD_WAKE_UP_PATTERN,
+               0,
+               0,
+               0,
+               SK_PNMI_WO, PowerManagement, 0},
+       {OID_PNP_REMOVE_WAKE_UP_PATTERN,
+               0,
+               0,
+               0,
+               SK_PNMI_WO, PowerManagement, 0},
+       {OID_PNP_ENABLE_WAKE_UP,
+               0,
+               0,
+               0,
+               SK_PNMI_RW, PowerManagement, 0},
+#endif /* SK_POWER_MGMT */
+       {OID_SKGE_MDB_VERSION,
+               1,
+               0,
+               SK_PNMI_MAI_OFF(MgmtDBVersion),
+               SK_PNMI_RO, General, 0},
+       {OID_SKGE_SUPPORTED_LIST,
+               0,
+               0,
+               0,
+               SK_PNMI_RO, General, 0},
+       {OID_SKGE_ALL_DATA,
+               0,
+               0,
+               0,
+               SK_PNMI_RW, OidStruct, 0},
+       {OID_SKGE_VPD_FREE_BYTES,
+               1,
+               0,
+               SK_PNMI_MAI_OFF(VpdFreeBytes),
+               SK_PNMI_RO, Vpd, 0},
+       {OID_SKGE_VPD_ENTRIES_LIST,
+               1,
+               0,
+               SK_PNMI_MAI_OFF(VpdEntriesList),
+               SK_PNMI_RO, Vpd, 0},
+       {OID_SKGE_VPD_ENTRIES_NUMBER,
+               1,
+               0,
+               SK_PNMI_MAI_OFF(VpdEntriesNumber),
+               SK_PNMI_RO, Vpd, 0},
+       {OID_SKGE_VPD_KEY,
+               SK_PNMI_VPD_ENTRIES,
+               sizeof(SK_PNMI_VPD),
+               SK_PNMI_OFF(Vpd) + SK_PNMI_VPD_OFF(VpdKey),
+               SK_PNMI_RO, Vpd, 0},
+       {OID_SKGE_VPD_VALUE,
+               SK_PNMI_VPD_ENTRIES,
+               sizeof(SK_PNMI_VPD),
+               SK_PNMI_OFF(Vpd) + SK_PNMI_VPD_OFF(VpdValue),
+               SK_PNMI_RO, Vpd, 0},
+       {OID_SKGE_VPD_ACCESS,
+               SK_PNMI_VPD_ENTRIES,
+               sizeof(SK_PNMI_VPD),
+               SK_PNMI_OFF(Vpd) + SK_PNMI_VPD_OFF(VpdAccess),
+               SK_PNMI_RO, Vpd, 0},
+       {OID_SKGE_VPD_ACTION,
+               SK_PNMI_VPD_ENTRIES,
+               sizeof(SK_PNMI_VPD),
+               SK_PNMI_OFF(Vpd) + SK_PNMI_VPD_OFF(VpdAction),
+               SK_PNMI_RW, Vpd, 0},
+       {OID_SKGE_PORT_NUMBER,
+               1,
+               0,
+               SK_PNMI_MAI_OFF(PortNumber),
+               SK_PNMI_RO, General, 0},
+       {OID_SKGE_DEVICE_TYPE,
+               1,
+               0,
+               SK_PNMI_MAI_OFF(DeviceType),
+               SK_PNMI_RO, General, 0},
+       {OID_SKGE_DRIVER_DESCR,
+               1,
+               0,
+               SK_PNMI_MAI_OFF(DriverDescr),
+               SK_PNMI_RO, General, 0},
+       {OID_SKGE_DRIVER_VERSION,
+               1,
+               0,
+               SK_PNMI_MAI_OFF(DriverVersion),
+               SK_PNMI_RO, General, 0},
+       {OID_SKGE_HW_DESCR,
+               1,
+               0,
+               SK_PNMI_MAI_OFF(HwDescr),
+               SK_PNMI_RO, General, 0},
+       {OID_SKGE_HW_VERSION,
+               1,
+               0,
+               SK_PNMI_MAI_OFF(HwVersion),
+               SK_PNMI_RO, General, 0},
+       {OID_SKGE_CHIPSET,
+               1,
+               0,
+               SK_PNMI_MAI_OFF(Chipset),
+               SK_PNMI_RO, General, 0},
+       {OID_SKGE_ACTION,
+               1,
+               0,
+               SK_PNMI_MAI_OFF(Action),
+               SK_PNMI_RW, Perform, 0},
+       {OID_SKGE_RESULT,
+               1,
+               0,
+               SK_PNMI_MAI_OFF(TestResult),
+               SK_PNMI_RO, General, 0},
+       {OID_SKGE_BUS_TYPE,
+               1,
+               0,
+               SK_PNMI_MAI_OFF(BusType),
+               SK_PNMI_RO, General, 0},
+       {OID_SKGE_BUS_SPEED,
+               1,
+               0,
+               SK_PNMI_MAI_OFF(BusSpeed),
+               SK_PNMI_RO, General, 0},
+       {OID_SKGE_BUS_WIDTH,
+               1,
+               0,
+               SK_PNMI_MAI_OFF(BusWidth),
+               SK_PNMI_RO, General, 0},
+       {OID_SKGE_TX_SW_QUEUE_LEN,
+               1,
+               0,
+               SK_PNMI_MAI_OFF(TxSwQueueLen),
+               SK_PNMI_RO, General, 0},
+       {OID_SKGE_TX_SW_QUEUE_MAX,
+               1,
+               0,
+               SK_PNMI_MAI_OFF(TxSwQueueMax),
+               SK_PNMI_RO, General, 0},
+       {OID_SKGE_TX_RETRY,
+               1,
+               0,
+               SK_PNMI_MAI_OFF(TxRetryCts),
+               SK_PNMI_RO, General, 0},
+       {OID_SKGE_RX_INTR_CTS,
+               1,
+               0,
+               SK_PNMI_MAI_OFF(RxIntrCts),
+               SK_PNMI_RO, General, 0},
+       {OID_SKGE_TX_INTR_CTS,
+               1,
+               0,
+               SK_PNMI_MAI_OFF(TxIntrCts),
+               SK_PNMI_RO, General, 0},
+       {OID_SKGE_RX_NO_BUF_CTS,
+               1,
+               0,
+               SK_PNMI_MAI_OFF(RxNoBufCts),
+               SK_PNMI_RO, General, 0},
+       {OID_SKGE_TX_NO_BUF_CTS,
+               1,
+               0,
+               SK_PNMI_MAI_OFF(TxNoBufCts),
+               SK_PNMI_RO, General, 0},
+       {OID_SKGE_TX_USED_DESCR_NO,
+               1,
+               0,
+               SK_PNMI_MAI_OFF(TxUsedDescrNo),
+               SK_PNMI_RO, General, 0},
+       {OID_SKGE_RX_DELIVERED_CTS,
+               1,
+               0,
+               SK_PNMI_MAI_OFF(RxDeliveredCts),
+               SK_PNMI_RO, General, 0},
+       {OID_SKGE_RX_OCTETS_DELIV_CTS,
+               1,
+               0,
+               SK_PNMI_MAI_OFF(RxOctetsDeliveredCts),
+               SK_PNMI_RO, General, 0},
+       {OID_SKGE_RX_HW_ERROR_CTS,
+               1,
+               0,
+               SK_PNMI_MAI_OFF(RxHwErrorsCts),
+               SK_PNMI_RO, General, 0},
+       {OID_SKGE_TX_HW_ERROR_CTS,
+               1,
+               0,
+               SK_PNMI_MAI_OFF(TxHwErrorsCts),
+               SK_PNMI_RO, General, 0},
+       {OID_SKGE_IN_ERRORS_CTS,
+               1,
+               0,
+               SK_PNMI_MAI_OFF(InErrorsCts),
+               SK_PNMI_RO, General, 0},
+       {OID_SKGE_OUT_ERROR_CTS,
+               1,
+               0,
+               SK_PNMI_MAI_OFF(OutErrorsCts),
+               SK_PNMI_RO, General, 0},
+       {OID_SKGE_ERR_RECOVERY_CTS,
+               1,
+               0,
+               SK_PNMI_MAI_OFF(ErrRecoveryCts),
+               SK_PNMI_RO, General, 0},
+       {OID_SKGE_SYSUPTIME,
+               1,
+               0,
+               SK_PNMI_MAI_OFF(SysUpTime),
+               SK_PNMI_RO, General, 0},
+       {OID_SKGE_SENSOR_NUMBER,
+               1,
+               0,
+               SK_PNMI_MAI_OFF(SensorNumber),
+               SK_PNMI_RO, General, 0},
+       {OID_SKGE_SENSOR_INDEX,
+               SK_PNMI_SENSOR_ENTRIES,
+               sizeof(SK_PNMI_SENSOR),
+               SK_PNMI_OFF(Sensor) + SK_PNMI_SEN_OFF(SensorIndex),
+               SK_PNMI_RO, SensorStat, 0},
+       {OID_SKGE_SENSOR_DESCR,
+               SK_PNMI_SENSOR_ENTRIES,
+               sizeof(SK_PNMI_SENSOR),
+               SK_PNMI_OFF(Sensor) + SK_PNMI_SEN_OFF(SensorDescr),
+               SK_PNMI_RO, SensorStat, 0},
+       {OID_SKGE_SENSOR_TYPE,
+               SK_PNMI_SENSOR_ENTRIES,
+               sizeof(SK_PNMI_SENSOR),
+               SK_PNMI_OFF(Sensor) + SK_PNMI_SEN_OFF(SensorType),
+               SK_PNMI_RO, SensorStat, 0},
+       {OID_SKGE_SENSOR_VALUE,
+               SK_PNMI_SENSOR_ENTRIES,
+               sizeof(SK_PNMI_SENSOR),
+               SK_PNMI_OFF(Sensor) + SK_PNMI_SEN_OFF(SensorValue),
+               SK_PNMI_RO, SensorStat, 0},
+       {OID_SKGE_SENSOR_WAR_THRES_LOW,
+               SK_PNMI_SENSOR_ENTRIES,
+               sizeof(SK_PNMI_SENSOR),
+               SK_PNMI_OFF(Sensor) + SK_PNMI_SEN_OFF(SensorWarningThresholdLow),
+               SK_PNMI_RO, SensorStat, 0},
+       {OID_SKGE_SENSOR_WAR_THRES_UPP,
+               SK_PNMI_SENSOR_ENTRIES,
+               sizeof(SK_PNMI_SENSOR),
+               SK_PNMI_OFF(Sensor) + SK_PNMI_SEN_OFF(SensorWarningThresholdHigh),
+               SK_PNMI_RO, SensorStat, 0},
+       {OID_SKGE_SENSOR_ERR_THRES_LOW,
+               SK_PNMI_SENSOR_ENTRIES,
+               sizeof(SK_PNMI_SENSOR),
+               SK_PNMI_OFF(Sensor) + SK_PNMI_SEN_OFF(SensorErrorThresholdLow),
+               SK_PNMI_RO, SensorStat, 0},
+       {OID_SKGE_SENSOR_ERR_THRES_UPP,
+               SK_PNMI_SENSOR_ENTRIES,
+               sizeof(SK_PNMI_SENSOR),
+               SK_PNMI_OFF(Sensor) + SK_PNMI_SEN_OFF(SensorErrorThresholdHigh),
+               SK_PNMI_RO, SensorStat, 0},
+       {OID_SKGE_SENSOR_STATUS,
+               SK_PNMI_SENSOR_ENTRIES,
+               sizeof(SK_PNMI_SENSOR),
+               SK_PNMI_OFF(Sensor) + SK_PNMI_SEN_OFF(SensorStatus),
+               SK_PNMI_RO, SensorStat, 0},
+       {OID_SKGE_SENSOR_WAR_CTS,
+               SK_PNMI_SENSOR_ENTRIES,
+               sizeof(SK_PNMI_SENSOR),
+               SK_PNMI_OFF(Sensor) + SK_PNMI_SEN_OFF(SensorWarningCts),
+               SK_PNMI_RO, SensorStat, 0},
+       {OID_SKGE_SENSOR_ERR_CTS,
+               SK_PNMI_SENSOR_ENTRIES,
+               sizeof(SK_PNMI_SENSOR),
+               SK_PNMI_OFF(Sensor) + SK_PNMI_SEN_OFF(SensorErrorCts),
+               SK_PNMI_RO, SensorStat, 0},
+       {OID_SKGE_SENSOR_WAR_TIME,
+               SK_PNMI_SENSOR_ENTRIES,
+               sizeof(SK_PNMI_SENSOR),
+               SK_PNMI_OFF(Sensor) + SK_PNMI_SEN_OFF(SensorWarningTimestamp),
+               SK_PNMI_RO, SensorStat, 0},
+       {OID_SKGE_SENSOR_ERR_TIME,
+               SK_PNMI_SENSOR_ENTRIES,
+               sizeof(SK_PNMI_SENSOR),
+               SK_PNMI_OFF(Sensor) + SK_PNMI_SEN_OFF(SensorErrorTimestamp),
+               SK_PNMI_RO, SensorStat, 0},
+       {OID_SKGE_CHKSM_NUMBER,
+               1,
+               0,
+               SK_PNMI_MAI_OFF(ChecksumNumber),
+               SK_PNMI_RO, General, 0},
+       {OID_SKGE_CHKSM_RX_OK_CTS,
+               SKCS_NUM_PROTOCOLS,
+               sizeof(SK_PNMI_CHECKSUM),
+               SK_PNMI_OFF(Checksum) + SK_PNMI_CHK_OFF(ChecksumRxOkCts),
+               SK_PNMI_RO, CsumStat, 0},
+       {OID_SKGE_CHKSM_RX_UNABLE_CTS,
+               SKCS_NUM_PROTOCOLS,
+               sizeof(SK_PNMI_CHECKSUM),
+               SK_PNMI_OFF(Checksum) + SK_PNMI_CHK_OFF(ChecksumRxUnableCts),
+               SK_PNMI_RO, CsumStat, 0},
+       {OID_SKGE_CHKSM_RX_ERR_CTS,
+               SKCS_NUM_PROTOCOLS,
+               sizeof(SK_PNMI_CHECKSUM),
+               SK_PNMI_OFF(Checksum) + SK_PNMI_CHK_OFF(ChecksumRxErrCts),
+               SK_PNMI_RO, CsumStat, 0},
+       {OID_SKGE_CHKSM_TX_OK_CTS,
+               SKCS_NUM_PROTOCOLS,
+               sizeof(SK_PNMI_CHECKSUM),
+               SK_PNMI_OFF(Checksum) + SK_PNMI_CHK_OFF(ChecksumTxOkCts),
+               SK_PNMI_RO, CsumStat, 0},
+       {OID_SKGE_CHKSM_TX_UNABLE_CTS,
+               SKCS_NUM_PROTOCOLS,
+               sizeof(SK_PNMI_CHECKSUM),
+               SK_PNMI_OFF(Checksum) + SK_PNMI_CHK_OFF(ChecksumTxUnableCts),
+               SK_PNMI_RO, CsumStat, 0},
+       {OID_SKGE_STAT_TX,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatTxOkCts),
+               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HTX},
+       {OID_SKGE_STAT_TX_OCTETS,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatTxOctetsOkCts),
+               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HTX_OCTET},
+       {OID_SKGE_STAT_TX_BROADCAST,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatTxBroadcastOkCts),
+               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HTX_BROADCAST},
+       {OID_SKGE_STAT_TX_MULTICAST,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatTxMulticastOkCts),
+               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HTX_MULTICAST},
+       {OID_SKGE_STAT_TX_UNICAST,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatTxUnicastOkCts),
+               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HTX_UNICAST},
+       {OID_SKGE_STAT_TX_LONGFRAMES,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatTxLongFramesCts),
+               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HTX_LONGFRAMES},
+       {OID_SKGE_STAT_TX_BURST,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatTxBurstCts),
+               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HTX_BURST},
+       {OID_SKGE_STAT_TX_PFLOWC,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatTxPauseMacCtrlCts),
+               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HTX_PMACC},
+       {OID_SKGE_STAT_TX_FLOWC,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatTxMacCtrlCts),
+               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HTX_MACC},
+       {OID_SKGE_STAT_TX_SINGLE_COL,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatTxSingleCollisionCts),
+               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HTX_SINGLE_COL},
+       {OID_SKGE_STAT_TX_MULTI_COL,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatTxMultipleCollisionCts),
+               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HTX_MULTI_COL},
+       {OID_SKGE_STAT_TX_EXCESS_COL,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatTxExcessiveCollisionCts),
+               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HTX_EXCESS_COL},
+       {OID_SKGE_STAT_TX_LATE_COL,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatTxLateCollisionCts),
+               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HTX_LATE_COL},
+       {OID_SKGE_STAT_TX_DEFFERAL,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatTxDeferralCts),
+               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HTX_DEFFERAL},
+       {OID_SKGE_STAT_TX_EXCESS_DEF,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatTxExcessiveDeferralCts),
+               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HTX_EXCESS_DEF},
+       {OID_SKGE_STAT_TX_UNDERRUN,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatTxFifoUnderrunCts),
+               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HTX_UNDERRUN},
+       {OID_SKGE_STAT_TX_CARRIER,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatTxCarrierCts),
+               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HTX_CARRIER},
+/*     {OID_SKGE_STAT_TX_UTIL,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatTxUtilization),
+               SK_PNMI_RO, MacPrivateStat, (SK_U16)(-1)}, */
+       {OID_SKGE_STAT_TX_64,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatTx64Cts),
+               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HTX_64},
+       {OID_SKGE_STAT_TX_127,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatTx127Cts),
+               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HTX_127},
+       {OID_SKGE_STAT_TX_255,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatTx255Cts),
+               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HTX_255},
+       {OID_SKGE_STAT_TX_511,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatTx511Cts),
+               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HTX_511},
+       {OID_SKGE_STAT_TX_1023,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatTx1023Cts),
+               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HTX_1023},
+       {OID_SKGE_STAT_TX_MAX,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatTxMaxCts),
+               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HTX_MAX},
+       {OID_SKGE_STAT_TX_SYNC,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatTxSyncCts),
+               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HTX_SYNC},
+       {OID_SKGE_STAT_TX_SYNC_OCTETS,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatTxSyncOctetsCts),
+               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HTX_SYNC_OCTET},
+       {OID_SKGE_STAT_RX,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRxOkCts),
+               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX},
+       {OID_SKGE_STAT_RX_OCTETS,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRxOctetsOkCts),
+               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_OCTET},
+       {OID_SKGE_STAT_RX_BROADCAST,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRxBroadcastOkCts),
+               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_BROADCAST},
+       {OID_SKGE_STAT_RX_MULTICAST,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRxMulticastOkCts),
+               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_MULTICAST},
+       {OID_SKGE_STAT_RX_UNICAST,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRxUnicastOkCts),
+               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_UNICAST},
+       {OID_SKGE_STAT_RX_LONGFRAMES,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRxLongFramesCts),
+               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_LONGFRAMES},
+       {OID_SKGE_STAT_RX_PFLOWC,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRxPauseMacCtrlCts),
+               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_PMACC},
+       {OID_SKGE_STAT_RX_FLOWC,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRxMacCtrlCts),
+               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_MACC},
+       {OID_SKGE_STAT_RX_PFLOWC_ERR,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRxPauseMacCtrlErrorCts),
+               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_PMACC_ERR},
+       {OID_SKGE_STAT_RX_FLOWC_UNKWN,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRxMacCtrlUnknownCts),
+               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_MACC_UNKWN},
+       {OID_SKGE_STAT_RX_BURST,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRxBurstCts),
+               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_BURST},
+       {OID_SKGE_STAT_RX_MISSED,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRxMissedCts),
+               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_MISSED},
+       {OID_SKGE_STAT_RX_FRAMING,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRxFramingCts),
+               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_FRAMING},
+       {OID_SKGE_STAT_RX_OVERFLOW,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRxFifoOverflowCts),
+               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_OVERFLOW},
+       {OID_SKGE_STAT_RX_JABBER,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRxJabberCts),
+               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_JABBER},
+       {OID_SKGE_STAT_RX_CARRIER,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRxCarrierCts),
+               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_CARRIER},
+       {OID_SKGE_STAT_RX_IR_LENGTH,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRxIRLengthCts),
+               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_IRLENGTH},
+       {OID_SKGE_STAT_RX_SYMBOL,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRxSymbolCts),
+               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_SYMBOL},
+       {OID_SKGE_STAT_RX_SHORTS,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRxShortsCts),
+               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_SHORTS},
+       {OID_SKGE_STAT_RX_RUNT,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRxRuntCts),
+               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_RUNT},
+       {OID_SKGE_STAT_RX_CEXT,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRxCextCts),
+               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_CEXT},
+       {OID_SKGE_STAT_RX_TOO_LONG,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRxTooLongCts),
+               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_TOO_LONG},
+       {OID_SKGE_STAT_RX_FCS,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRxFcsCts),
+               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_FCS},
+/*     {OID_SKGE_STAT_RX_UTIL,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRxUtilization),
+               SK_PNMI_RO, MacPrivateStat, (SK_U16)(-1)}, */
+       {OID_SKGE_STAT_RX_64,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRx64Cts),
+               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_64},
+       {OID_SKGE_STAT_RX_127,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRx127Cts),
+               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_127},
+       {OID_SKGE_STAT_RX_255,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRx255Cts),
+               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_255},
+       {OID_SKGE_STAT_RX_511,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRx511Cts),
+               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_511},
+       {OID_SKGE_STAT_RX_1023,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRx1023Cts),
+               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_1023},
+       {OID_SKGE_STAT_RX_MAX,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_STAT),
+               SK_PNMI_OFF(Stat) + SK_PNMI_STA_OFF(StatRxMaxCts),
+               SK_PNMI_RO, MacPrivateStat, SK_PNMI_HRX_MAX},
+       {OID_SKGE_PHYS_CUR_ADDR,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_CONF),
+               SK_PNMI_OFF(Conf) + SK_PNMI_CNF_OFF(ConfMacCurrentAddr),
+               SK_PNMI_RW, Addr, 0},
+       {OID_SKGE_PHYS_FAC_ADDR,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_CONF),
+               SK_PNMI_OFF(Conf) + SK_PNMI_CNF_OFF(ConfMacFactoryAddr),
+               SK_PNMI_RO, Addr, 0},
+       {OID_SKGE_PMD,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_CONF),
+               SK_PNMI_OFF(Conf) + SK_PNMI_CNF_OFF(ConfPMD),
+               SK_PNMI_RO, MacPrivateConf, 0},
+       {OID_SKGE_CONNECTOR,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_CONF),
+               SK_PNMI_OFF(Conf) + SK_PNMI_CNF_OFF(ConfConnector),
+               SK_PNMI_RO, MacPrivateConf, 0},
+       {OID_SKGE_LINK_CAP,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_CONF),
+               SK_PNMI_OFF(Conf) + SK_PNMI_CNF_OFF(ConfLinkCapability),
+               SK_PNMI_RO, MacPrivateConf, 0},
+       {OID_SKGE_LINK_MODE,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_CONF),
+               SK_PNMI_OFF(Conf) + SK_PNMI_CNF_OFF(ConfLinkMode),
+               SK_PNMI_RW, MacPrivateConf, 0},
+       {OID_SKGE_LINK_MODE_STATUS,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_CONF),
+               SK_PNMI_OFF(Conf) + SK_PNMI_CNF_OFF(ConfLinkModeStatus),
+               SK_PNMI_RO, MacPrivateConf, 0},
+       {OID_SKGE_LINK_STATUS,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_CONF),
+               SK_PNMI_OFF(Conf) + SK_PNMI_CNF_OFF(ConfLinkStatus),
+               SK_PNMI_RO, MacPrivateConf, 0},
+       {OID_SKGE_FLOWCTRL_CAP,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_CONF),
+               SK_PNMI_OFF(Conf) + SK_PNMI_CNF_OFF(ConfFlowCtrlCapability),
+               SK_PNMI_RO, MacPrivateConf, 0},
+       {OID_SKGE_FLOWCTRL_MODE,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_CONF),
+               SK_PNMI_OFF(Conf) + SK_PNMI_CNF_OFF(ConfFlowCtrlMode),
+               SK_PNMI_RW, MacPrivateConf, 0},
+       {OID_SKGE_FLOWCTRL_STATUS,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_CONF),
+               SK_PNMI_OFF(Conf) + SK_PNMI_CNF_OFF(ConfFlowCtrlStatus),
+               SK_PNMI_RO, MacPrivateConf, 0},
+       {OID_SKGE_PHY_OPERATION_CAP,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_CONF),
+               SK_PNMI_OFF(Conf) + SK_PNMI_CNF_OFF(ConfPhyOperationCapability),
+               SK_PNMI_RO, MacPrivateConf, 0},
+       {OID_SKGE_PHY_OPERATION_MODE,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_CONF),
+               SK_PNMI_OFF(Conf) + SK_PNMI_CNF_OFF(ConfPhyOperationMode),
+               SK_PNMI_RW, MacPrivateConf, 0},
+       {OID_SKGE_PHY_OPERATION_STATUS,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_CONF),
+               SK_PNMI_OFF(Conf) + SK_PNMI_CNF_OFF(ConfPhyOperationStatus),
+               SK_PNMI_RO, MacPrivateConf, 0},
+       {OID_SKGE_SPEED_CAP,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_CONF),
+               SK_PNMI_OFF(Conf) + SK_PNMI_CNF_OFF(ConfSpeedCapability),
+               SK_PNMI_RO, MacPrivateConf, 0},
+       {OID_SKGE_SPEED_MODE,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_CONF),
+               SK_PNMI_OFF(Conf) + SK_PNMI_CNF_OFF(ConfSpeedMode),
+               SK_PNMI_RW, MacPrivateConf, 0},
+       {OID_SKGE_SPEED_STATUS,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_CONF),
+               SK_PNMI_OFF(Conf) + SK_PNMI_CNF_OFF(ConfSpeedStatus),
+               SK_PNMI_RO, MacPrivateConf, 0},
+       {OID_SKGE_TRAP,
+               1,
+               0,
+               SK_PNMI_MAI_OFF(Trap),
+               SK_PNMI_RO, General, 0},
+       {OID_SKGE_TRAP_NUMBER,
+               1,
+               0,
+               SK_PNMI_MAI_OFF(TrapNumber),
+               SK_PNMI_RO, General, 0},
+       {OID_SKGE_RLMT_MODE,
+               1,
+               0,
+               SK_PNMI_MAI_OFF(RlmtMode),
+               SK_PNMI_RW, Rlmt, 0},
+       {OID_SKGE_RLMT_PORT_NUMBER,
+               1,
+               0,
+               SK_PNMI_MAI_OFF(RlmtPortNumber),
+               SK_PNMI_RO, Rlmt, 0},
+       {OID_SKGE_RLMT_PORT_ACTIVE,
+               1,
+               0,
+               SK_PNMI_MAI_OFF(RlmtPortActive),
+               SK_PNMI_RO, Rlmt, 0},
+       {OID_SKGE_RLMT_PORT_PREFERRED,
+               1,
+               0,
+               SK_PNMI_MAI_OFF(RlmtPortPreferred),
+               SK_PNMI_RW, Rlmt, 0},
+       {OID_SKGE_RLMT_CHANGE_CTS,
+               1,
+               0,
+               SK_PNMI_MAI_OFF(RlmtChangeCts),
+               SK_PNMI_RO, Rlmt, 0},
+       {OID_SKGE_RLMT_CHANGE_TIME,
+               1,
+               0,
+               SK_PNMI_MAI_OFF(RlmtChangeTime),
+               SK_PNMI_RO, Rlmt, 0},
+       {OID_SKGE_RLMT_CHANGE_ESTIM,
+               1,
+               0,
+               SK_PNMI_MAI_OFF(RlmtChangeEstimate),
+               SK_PNMI_RO, Rlmt, 0},
+       {OID_SKGE_RLMT_CHANGE_THRES,
+               1,
+               0,
+               SK_PNMI_MAI_OFF(RlmtChangeThreshold),
+               SK_PNMI_RW, Rlmt, 0},
+       {OID_SKGE_RLMT_PORT_INDEX,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_RLMT),
+               SK_PNMI_OFF(Rlmt) + SK_PNMI_RLM_OFF(RlmtIndex),
+               SK_PNMI_RO, RlmtStat, 0},
+       {OID_SKGE_RLMT_STATUS,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_RLMT),
+               SK_PNMI_OFF(Rlmt) + SK_PNMI_RLM_OFF(RlmtStatus),
+               SK_PNMI_RO, RlmtStat, 0},
+       {OID_SKGE_RLMT_TX_HELLO_CTS,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_RLMT),
+               SK_PNMI_OFF(Rlmt) + SK_PNMI_RLM_OFF(RlmtTxHelloCts),
+               SK_PNMI_RO, RlmtStat, 0},
+       {OID_SKGE_RLMT_RX_HELLO_CTS,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_RLMT),
+               SK_PNMI_OFF(Rlmt) + SK_PNMI_RLM_OFF(RlmtRxHelloCts),
+               SK_PNMI_RO, RlmtStat, 0},
+       {OID_SKGE_RLMT_TX_SP_REQ_CTS,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_RLMT),
+               SK_PNMI_OFF(Rlmt) + SK_PNMI_RLM_OFF(RlmtTxSpHelloReqCts),
+               SK_PNMI_RO, RlmtStat, 0},
+       {OID_SKGE_RLMT_RX_SP_CTS,
+               SK_PNMI_MAC_ENTRIES,
+               sizeof(SK_PNMI_RLMT),
+               SK_PNMI_OFF(Rlmt) + SK_PNMI_RLM_OFF(RlmtRxSpHelloCts),
+               SK_PNMI_RO, RlmtStat, 0},
+       {OID_SKGE_RLMT_MONITOR_NUMBER,
+               1,
+               0,
+               SK_PNMI_MAI_OFF(RlmtMonitorNumber),
+               SK_PNMI_RO, General, 0},
+       {OID_SKGE_RLMT_MONITOR_INDEX,
+               SK_PNMI_MONITOR_ENTRIES,
+               sizeof(SK_PNMI_RLMT_MONITOR),
+               SK_PNMI_OFF(RlmtMonitor) + SK_PNMI_MON_OFF(RlmtMonitorIndex),
+               SK_PNMI_RO, Monitor, 0},
+       {OID_SKGE_RLMT_MONITOR_ADDR,
+               SK_PNMI_MONITOR_ENTRIES,
+               sizeof(SK_PNMI_RLMT_MONITOR),
+               SK_PNMI_OFF(RlmtMonitor) + SK_PNMI_MON_OFF(RlmtMonitorAddr),
+               SK_PNMI_RO, Monitor, 0},
+       {OID_SKGE_RLMT_MONITOR_ERRS,
+               SK_PNMI_MONITOR_ENTRIES,
+               sizeof(SK_PNMI_RLMT_MONITOR),
+               SK_PNMI_OFF(RlmtMonitor) + SK_PNMI_MON_OFF(RlmtMonitorErrorCts),
+               SK_PNMI_RO, Monitor, 0},
+       {OID_SKGE_RLMT_MONITOR_TIMESTAMP,
+               SK_PNMI_MONITOR_ENTRIES,
+               sizeof(SK_PNMI_RLMT_MONITOR),
+               SK_PNMI_OFF(RlmtMonitor) + SK_PNMI_MON_OFF(RlmtMonitorTimestamp),
+               SK_PNMI_RO, Monitor, 0},
+       {OID_SKGE_RLMT_MONITOR_ADMIN,
+               SK_PNMI_MONITOR_ENTRIES,
+               sizeof(SK_PNMI_RLMT_MONITOR),
+               SK_PNMI_OFF(RlmtMonitor) + SK_PNMI_MON_OFF(RlmtMonitorAdmin),
+               SK_PNMI_RW, Monitor, 0},
+       {OID_SKGE_MTU,
+               1,
+               0,
+               SK_PNMI_MAI_OFF(MtuSize),
+               SK_PNMI_RW, MacPrivateConf, 0},
+       {OID_SKGE_VCT_GET,
+               0,
+               0,
+               0,
+               SK_PNMI_RO, Vct, 0},
+       {OID_SKGE_VCT_SET,
+               0,
+               0,
+               0,
+               SK_PNMI_WO, Vct, 0},
+       {OID_SKGE_VCT_STATUS,
+               0,
+               0,
+               0,
+               SK_PNMI_RO, Vct, 0},
+};
diff -Naur u-boot-2009.03_orig/drivers/net/sk98lin/skgepnmi.c u-boot-2009.03/drivers/net/sk98lin/skgepnmi.c
--- u-boot-2009.03_orig/drivers/net/sk98lin/skgepnmi.c  2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/drivers/net/sk98lin/skgepnmi.c       2009-03-31 14:54:29.534379200 -0700
@@ -1,8306 +1,8309 @@
-/*****************************************************************************
- *
- * Name:       skgepnmi.c
- * Project:    GEnesis, PCI Gigabit Ethernet Adapter
- * Version:    $Revision: 1.102 $
- * Date:       $Date: 2002/12/16 14:03:24 $
- * Purpose:    Private Network Management Interface
- *
- ****************************************************************************/
-
-/******************************************************************************
- *
- *     (C)Copyright 1998-2002 SysKonnect GmbH.
- *
- *     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.
- *
- *     The information in this file is provided "AS IS" without warranty.
- *
- ******************************************************************************/
-
-/*****************************************************************************
- *
- * History:
- *
- *     $Log: skgepnmi.c,v $
- *     Revision 1.102  2002/12/16 14:03:24  tschilli
- *     VCT code in Vct() changed.
- *
- *     Revision 1.101  2002/12/16 09:04:10  tschilli
- *     Code for VCT handling added.
- *
- *     Revision 1.100  2002/09/26 14:28:13  tschilli
- *     For XMAC the values in the SK_PNMI_PORT Port struct are copied to
- *     the new SK_PNMI_PORT BufPort struct during a MacUpdate() call.
- *     These values are used when GetPhysStatVal() is called. With this
- *     mechanism you get the best results when software corrections for
- *     counters are needed. Example: RX_LONGFRAMES.
- *
- *     Revision 1.99  2002/09/17 12:31:19  tschilli
- *     OID_SKGE_TX_HW_ERROR_CTS, OID_SKGE_OUT_ERROR_CTS, OID_GEN_XMIT_ERROR:
- *     Double count of SK_PNMI_HTX_EXCESS_COL in function General() removed.
- *     OID_PNP_CAPABILITIES: sizeof(SK_PM_WAKE_UP_CAPABILITIES) changed to
- *     sizeof(SK_PNP_CAPABILITIES) in function PowerManagement().
- *
- *     Revision 1.98  2002/09/10 09:00:03  rwahl
- *     Adapted boolean definitions according sktypes.
- *
- *     Revision 1.97  2002/09/05 15:07:03  rwahl
- *     Editorial changes.
- *
- *     Revision 1.96  2002/09/05 11:04:14  rwahl
- *     - Rx/Tx packets statistics of virtual port were zero on link down (#10750)
- *     - For GMAC the overflow IRQ for Rx longframe counter was not counted.
- *     - Incorrect calculation for oids OID_SKGE_RX_HW_ERROR_CTS,
- *       OID_SKGE_IN_ERRORS_CTS,  OID_GEN_RCV_ERROR.
- *     - Moved correction for OID_SKGE_STAT_RX_TOO_LONG to GetPhysStatVal().
- *     - Editorial changes.
- *
- *     Revision 1.95  2002/09/04 08:53:37  rwahl
- *     - Incorrect statistics for Rx_too_long counter with jumbo frame (#10751)
- *     - StatRxFrameTooLong & StatRxPMaccErr counters were not reset.
- *     - Fixed compiler warning for debug msg arg types.
- *
- *     Revision 1.94  2002/08/09 15:42:14  rwahl
- *     - Fixed StatAddr table for GMAC.
- *     - VirtualConf(): returned indeterminated status for speed oids if no
- *       active port.
- *
- *     Revision 1.93  2002/08/09 11:04:59  rwahl
- *     Added handler for link speed caps.
- *
- *     Revision 1.92  2002/08/09 09:43:03  rwahl
- *     - Added handler for NDIS OID_PNP_xxx ids.
- *
- *     Revision 1.91  2002/07/17 19:53:03  rwahl
- *     - Added StatOvrflwBit table for XMAC & GMAC.
- *     - Extended StatAddr table for GMAC. Added check of number of counters
- *       in enumeration and size of StatAddr table on init level.
- *     - Added use of GIFunc table.
- *     - ChipSet is not static anymore,
- *     - Extended SIRQ event handler for both mac types.
- *     - Fixed rx short counter bug (#10620)
- *     - Added handler for oids SKGE_SPEED_MODE & SKGE_SPEED_STATUS.
- *     - Extendet GetPhysStatVal() for GMAC.
- *     - Editorial changes.
- *
- *     Revision 1.90  2002/05/22 08:56:25  rwahl
- *     - Moved OID table to separate source file.
- *     - Fix: TX_DEFFERAL counter incremented in full-duplex mode.
- *     - Use string definitions for error msgs.
- *
- *     Revision 1.89  2001/09/18 10:01:30  mkunz
- *     some OID's fixed for dualnetmode
- *
- *     Revision 1.88  2001/08/02 07:58:08  rwahl
- *     - Fixed NetIndex to csum module at ResetCounter().
- *
- *     Revision 1.87  2001/04/06 13:35:09  mkunz
- *     -Bugs fixed in handling of OID_SKGE_MTU and the VPD OID's
- *
- *     Revision 1.86  2001/03/09 09:18:03  mkunz
- *     Changes in SK_DBG_MSG
- *
- *     Revision 1.85  2001/03/08 09:37:31  mkunz
- *     Bugfix in ResetCounter for Pnmi.Port structure
- *
- *     Revision 1.84  2001/03/06 09:04:55  mkunz
- *     Made some changes in instance calculation
- *
- *     Revision 1.83  2001/02/15 09:15:32  mkunz
- *     Necessary changes for dual net mode added
- *
- *     Revision 1.82  2001/02/07 08:24:19  mkunz
- *     -Made changes in handling of OID_SKGE_MTU
- *
- *     Revision 1.81  2001/02/06 09:58:00  mkunz
- *     -Vpd bug fixed
- *     -OID_SKGE_MTU added
- *     -pnmi support for dual net mode. Interface function and macros extended
- *
- *     Revision 1.80  2001/01/22 13:41:35  rassmann
- *     Supporting two nets on dual-port adapters.
- *
- *     Revision 1.79  2000/12/05 14:57:40  cgoos
- *     SetStruct failed before first Link Up (link mode of virtual
- *     port "INDETERMINATED").
- *
- *     Revision 1.78  2000/09/12 10:44:58  cgoos
- *     Fixed SK_PNMI_STORE_U32 calls with typecasted argument.
- *
- *     Revision 1.77  2000/09/07 08:10:19  rwahl
- *     - Modified algorithm for 64bit NDIS statistic counters;
- *       returns 64bit or 32bit value depending on passed buffer
- *       size. Indicate capability for 64bit NDIS counter, if passed
- *       buffer size is zero. OID_GEN_XMIT_ERROR, OID_GEN_RCV_ERROR,
- *       and OID_GEN_RCV_NO_BUFFER handled as 64bit counter, too.
- *     - corrected OID_SKGE_RLMT_PORT_PREFERRED.
- *
- *     Revision 1.76  2000/08/03 15:23:39  rwahl
- *     - Correction for FrameTooLong counter has to be moved to OID handling
- *       routines (instead of statistic counter routine).
- *     - Fix in XMAC Reset Event handling: Only offset counter for hardware
- *       statistic registers are updated.
- *
- *     Revision 1.75  2000/08/01 16:46:05  rwahl
- *     - Added StatRxLongFrames counter and correction of FrameTooLong counter.
- *     - Added directive to control width (default = 32bit) of NDIS statistic
- *       counters (SK_NDIS_64BIT_CTR).
- *
- *     Revision 1.74  2000/07/04 11:41:53  rwahl
- *     - Added volition connector type.
- *
- *     Revision 1.73  2000/03/15 16:33:10  rwahl
- *     Fixed bug 10510; wrong reset of virtual port statistic counters.
- *
- *     Revision 1.72  1999/12/06 16:15:53  rwahl
- *     Fixed problem of instance range for current and factory MAC address.
- *
- *     Revision 1.71  1999/12/06 10:14:20  rwahl
- *     Fixed bug 10476; set operation for PHY_OPERATION_MODE.
- *
- *     Revision 1.70  1999/11/22 13:33:34  cgoos
- *     Changed license header to GPL.
- *
- *     Revision 1.69  1999/10/18 11:42:15  rwahl
- *     Added typecasts for checking event dependent param (debug only).
- *
- *     Revision 1.68  1999/10/06 09:35:59  cgoos
- *     Added state check to PHY_READ call (hanged if called during startup).
- *
- *     Revision 1.67  1999/09/22 09:53:20  rwahl
- *     - Read Broadcom register for updating fcs error counter (1000Base-T).
- *
- *     Revision 1.66  1999/08/26 13:47:56  rwahl
- *     Added SK_DRIVER_SENDEVENT when queueing RLMT_CHANGE_THRES trap.
- *
- *     Revision 1.65  1999/07/26 07:49:35  cgoos
- *     Added two typecasts to avoid compiler warnings.
- *
- *     Revision 1.64  1999/05/20 09:24:12  cgoos
- *     Changes for 1000Base-T (sensors, Master/Slave).
- *
- *     Revision 1.63  1999/04/13 15:11:58  mhaveman
- *     Moved include of rlmt.h to header skgepnmi.h because some macros
- *     are needed there.
- *
- *     Revision 1.62  1999/04/13 15:08:07  mhaveman
- *     Replaced again SK_RLMT_CHECK_LINK with SK_PNMI_RLMT_MODE_CHK_LINK
- *     to grant unified interface by only using the PNMI header file.
- *     SK_PNMI_RLMT_MODE_CHK_LINK is defined the same as SK_RLMT_CHECK_LINK.
- *
- *     Revision 1.61  1999/04/13 15:02:48  mhaveman
- *     Changes caused by review:
- *     -Changed some comments
- *     -Removed redundant check for OID_SKGE_PHYS_FAC_ADDR
- *     -Optimized PRESET check.
- *     -Meaning of error SK_ADDR_DUPLICATE_ADDRESS changed. Set of same
- *      address will now not cause this error. Removed corresponding check.
- *
- *     Revision 1.60  1999/03/23 10:41:23  mhaveman
- *     Added comments.
- *
- *     Revision 1.59  1999/02/19 08:01:28  mhaveman
- *     Fixed bug 10372 that after counter reset all ports were displayed
- *     as inactive.
- *
- *     Revision 1.58  1999/02/16 18:04:47  mhaveman
- *     Fixed problem of twisted OIDs SENSOR_WAR_TIME and SENSOR_ERR_TIME.
- *
- *     Revision 1.56  1999/01/27 12:29:11  mhaveman
- *     SkTimerStart was called with time value in milli seconds but needs
- *     micro seconds.
- *
- *     Revision 1.55  1999/01/25 15:00:38  mhaveman
- *     Added support to allow multiple ports to be active. If this feature in
- *     future will be used, the Management Data Base variables PORT_ACTIVE
- *     and PORT_PREFERED should be moved to the port specific part of RLMT.
- *     Currently they return the values of the first active physical port
- *     found. A set to the virtual port will actually change all active
- *     physical ports. A get returns the melted values of all active physical
- *     ports. If the port values differ a return value INDETERMINATED will
- *     be returned. This effects especially the CONF group.
- *
- *     Revision 1.54  1999/01/19 10:10:22  mhaveman
- *     -Fixed bug 10354: Counter values of virtual port were wrong after port
- *      switches
- *     -Added check if a switch to the same port is notified.
- *
- *     Revision 1.53  1999/01/07 09:25:21  mhaveman
- *     Forgot to initialize a variable.
- *
- *     Revision 1.52  1999/01/05 10:34:33  mhaveman
- *     Fixed little error in RlmtChangeEstimate calculation.
- *
- *     Revision 1.51  1999/01/05 09:59:07  mhaveman
- *     -Moved timer start to init level 2
- *     -Redesigned port switch average calculation to avoid 64bit
- *      arithmetic.
- *
- *     Revision 1.50  1998/12/10 15:13:59  mhaveman
- *     -Fixed: PHYS_CUR_ADDR returned wrong addresses
- *     -Fixed: RLMT_PORT_PREFERED and RLMT_CHANGE_THRES preset returned
- *             always BAD_VALUE.
- *     -Fixed: TRAP buffer seemed to sometimes suddenly empty
- *
- *     Revision 1.49  1998/12/09 16:17:07  mhaveman
- *     Fixed: Couldnot delete VPD keys on UNIX.
- *
- *     Revision 1.48  1998/12/09 14:11:10  mhaveman
- *     -Add: Debugmessage for XMAC_RESET supressed to minimize output.
- *     -Fixed: RlmtChangeThreshold will now be initialized.
- *     -Fixed: VPD_ENTRIES_LIST extended value with unnecessary space char.
- *     -Fixed: On VPD key creation an invalid key name could be created
- *             (e.g. A5)
- *     -Some minor changes in comments and code.
- *
- *     Revision 1.47  1998/12/08 16:00:31  mhaveman
- *     -Fixed: For RLMT_PORT_ACTIVE will now be returned a 0 if no port
- *             is active.
- *     -Fixed: For the RLMT statistics group only the last value was
- *             returned and the rest of the buffer was filled with 0xff
- *     -Fixed: Mysteriously the preset on RLMT_MODE still returned
- *             BAD_VALUE.
- *     Revision 1.46  1998/12/08 10:04:56  mhaveman
- *     -Fixed: Preset on RLMT_MODE returned always BAD_VALUE error.
- *     -Fixed: Alignment error in GetStruct
- *     -Fixed: If for Get/Preset/SetStruct the buffer size is equal or
- *             larger than SK_PNMI_MIN_STRUCT_SIZE the return value is stored
- *             to the buffer. In this case the caller should always return
- *             ok to its upper routines. Only if the buffer size is less
- *             than SK_PNMI_MIN_STRUCT_SIZE and the return value is unequal
- *             to 0, an error should be returned by the caller.
- *     -Fixed: Wrong number of instances with RLMT statistic.
- *     -Fixed: Return now SK_LMODE_STAT_UNKNOWN if the LinkModeStatus is 0.
- *
- *     Revision 1.45  1998/12/03 17:17:24  mhaveman
- *     -Removed for VPD create action the buffer size limitation to 4 bytes.
- *     -Pass now physical/active physical port to ADDR for CUR_ADDR set
- *
- *     Revision 1.44  1998/12/03 15:14:35  mhaveman
- *     Another change to Vpd instance evaluation.
- *
- *     Revision 1.43  1998/12/03 14:18:10  mhaveman
- *     -Fixed problem in PnmiSetStruct. It was impossible to set any value.
- *     -Removed VPD key evaluation for VPD_FREE_BYTES and VPD_ACTION.
- *
- *     Revision 1.42  1998/12/03 11:31:47  mhaveman
- *     Inserted cast to satisfy lint.
- *
- *     Revision 1.41  1998/12/03 11:28:16  mhaveman
- *     Removed SK_PNMI_CHECKPTR
- *
- *     Revision 1.40  1998/12/03 11:19:07  mhaveman
- *     Fixed problems
- *     -A set to virtual port will now be ignored. A set with broadcast
- *      address to any port will be ignored.
- *     -GetStruct function made VPD instance calculation wrong.
- *     -Prefered port returned -1 instead of 0.
- *
- *     Revision 1.39  1998/11/26 15:30:29  mhaveman
- *     Added sense mode to link mode.
- *
- *     Revision 1.38  1998/11/23 15:34:00  mhaveman
- *     -Fixed bug for RX counters. On an RX overflow interrupt the high
- *      words of all RX counters were incremented.
- *     -SET operations on FLOWCTRL_MODE and LINK_MODE accept now the
- *      value 0, which has no effect. It is usefull for multiple instance
- *      SETs.
- *
- *     Revision 1.37  1998/11/20 08:02:04  mhaveman
- *     -Fixed: Ports were compared with MAX_SENSORS
- *     -Fixed: Crash in GetTrapEntry with MEMSET macro
- *     -Fixed: Conversions between physical, logical port index and instance
- *
- *     Revision 1.36  1998/11/16 07:48:53  mhaveman
- *     Casted SK_DRIVER_SENDEVENT with (void) to eleminate compiler warnings
- *     on Solaris.
- *
- *     Revision 1.35  1998/11/16 07:45:34  mhaveman
- *     SkAddrOverride now returns value and will be checked.
- *
- *     Revision 1.34  1998/11/10 13:40:37  mhaveman
- *     Needed to change interface, because NT driver needs a return value
- *     of needed buffer space on TOO_SHORT errors. Therefore all
- *     SkPnmiGet/Preset/Set functions now have a pointer to the length
- *     parameter, where the needed space on error is returned.
- *
- *     Revision 1.33  1998/11/03 13:52:46  mhaveman
- *     Made file lint conform.
- *
- *     Revision 1.32  1998/11/03 13:19:07  mhaveman
- *     The events SK_HWEV_SET_LMODE and SK_HWEV_SET_FLOWMODE pass now in
- *     Para32[0] the physical MAC index and in Para32[1] the new mode.
- *
- *     Revision 1.31  1998/11/03 12:30:40  gklug
- *     fix: compiler warning memset
- *
- *     Revision 1.30  1998/11/03 12:04:46  mhaveman
- *     Fixed problem in SENSOR_VALUE, which wrote beyond the buffer end
- *     Fixed alignment problem with CHIPSET.
- *
- *     Revision 1.29  1998/11/02 11:23:54  mhaveman
- *     Corrected SK_ERROR_LOG to SK_ERR_LOG. Sorry.
- *
- *     Revision 1.28  1998/11/02 10:47:16  mhaveman
- *     Added syslog messages for internal errors.
- *
- *     Revision 1.27  1998/10/30 15:48:06  mhaveman
- *     Fixed problems after simulation of SK_PNMI_EVT_CHG_EST_TIMER and
- *     RlmtChangeThreshold calculation.
- *
- *     Revision 1.26  1998/10/29 15:36:55  mhaveman
- *     -Fixed bug in trap buffer handling.
- *     -OID_SKGE_DRIVER_DESCR, OID_SKGE_DRIVER_VERSION, OID_SKGE_HW_DESCR,
- *      OID_SKGE_HW_VERSION, OID_SKGE_VPD_ENTRIES_LIST, OID_SKGE_VPD_KEY,
- *      OID_SKGE_VPD_VALUE, and OID_SKGE_SENSOR_DESCR return values with
- *      a leading octet before each string storing the string length.
- *     -Perform a RlmtUpdate during SK_PNMI_EVT_XMAC_RESET to minimize
- *      RlmtUpdate calls in GetStatVal.
- *     -Inserted SK_PNMI_CHECKFLAGS macro increase readability.
- *
- *     Revision 1.25  1998/10/29 08:50:36  mhaveman
- *     Fixed problems after second event simulation.
- *
- *     Revision 1.24  1998/10/28 08:44:37  mhaveman
- *     -Fixed alignment problem
- *     -Fixed problems during event simulation
- *     -Fixed sequence of error return code (INSTANCE -> ACCESS -> SHORT)
- *     -Changed type of parameter Instance back to SK_U32 because of VPD
- *     -Updated new VPD function calls
- *
- *     Revision 1.23  1998/10/23 10:16:37  mhaveman
- *     Fixed bugs after buffer test simulation.
- *
- *     Revision 1.22  1998/10/21 13:23:52  mhaveman
- *     -Call syntax of SkOsGetTime() changed to SkOsGetTime(pAc).
- *     -Changed calculation of hundrets of seconds.
- *
- *     Revision 1.20  1998/10/20 07:30:45  mhaveman
- *     Made type changes to unsigned integer where possible.
- *
- *     Revision 1.19  1998/10/19 10:51:30  mhaveman
- *     -Made Bug fixes after simulation run
- *     -Renamed RlmtMAC... to RlmtPort...
- *     -Marked workarounds with Errata comments
- *
- *     Revision 1.18  1998/10/14 07:50:08  mhaveman
- *     -For OID_SKGE_LINK_STATUS the link down detection has moved from RLMT
- *      to HWACCESS.
- *     -Provided all MEMCPY/MEMSET macros with (char *) pointers, because
- *      Solaris throwed warnings when mapping to bcopy/bset.
- *
- *     Revision 1.17  1998/10/13 07:42:01  mhaveman
- *     -Added OIDs OID_SKGE_TRAP_NUMBER and OID_SKGE_ALL_DATA
- *     -Removed old cvs history entries
- *     -Renamed MacNumber to PortNumber
- *
- *     Revision 1.16  1998/10/07 10:52:49  mhaveman
- *     -Inserted handling of some OID_GEN_ Ids for windows
- *     -Fixed problem with 803.2 statistic.
- *
- *     Revision 1.15  1998/10/01 09:16:29  mhaveman
- *     Added Debug messages for function call and UpdateFlag tracing.
- *
- *     Revision 1.14  1998/09/30 13:39:09  mhaveman
- *     -Reduced namings of 'MAC' by replacing them with 'PORT'.
- *     -Completed counting of OID_SKGE_RX_HW_ERROR_CTS,
- *       OID_SKGE_TX_HW_ERROR_CTS,
- *      OID_SKGE_IN_ERRORS_CTS, and OID_SKGE_OUT_ERROR_CTS.
- *     -SET check for RlmtMode
- *
- *     Revision 1.13  1998/09/28 13:13:08  mhaveman
- *     Hide strcmp, strlen, and strncpy behind macros SK_STRCMP, SK_STRLEN,
- *     and SK_STRNCPY. (Same reasons as for mem.. and MEM..)
- *
- *     Revision 1.12  1998/09/16 08:18:36  cgoos
- *     Fix: XM_INxx and XM_OUTxx called with different parameter order:
- *      sometimes IoC,Mac,...  sometimes Mac,IoC,... Now always first variant.
- *     Fix: inserted "Pnmi." into some pAC->pDriverDescription / Version.
- *     Change: memset, memcpy to makros SK_MEMSET, SK_MEMCPY
- *
- *     Revision 1.11  1998/09/04 17:01:45  mhaveman
- *     Added SyncCounter as macro and OID_SKGE_.._NO_DESCR_CTS to
- *     OID_SKGE_RX_NO_BUF_CTS.
- *
- *     Revision 1.10  1998/09/04 14:35:35  mhaveman
- *     Added macro counters, that are counted by driver.
- *
- ****************************************************************************/
-
-
-#include <config.h>
-
-static const char SysKonnectFileId[] =
-       "@(#) $Id: skgepnmi.c,v 1.102 2002/12/16 14:03:24 tschilli Exp $"
-       " (C) SysKonnect.";
-
-#include "h/skdrv1st.h"
-#include "h/sktypes.h"
-#include "h/xmac_ii.h"
-#include "h/skdebug.h"
-#include "h/skqueue.h"
-#include "h/skgepnmi.h"
-#include "h/skgesirq.h"
-#include "h/skcsum.h"
-#include "h/skvpd.h"
-#include "h/skgehw.h"
-#include "h/skgeinit.h"
-#include "h/skdrv2nd.h"
-#include "h/skgepnm2.h"
-#ifdef SK_POWER_MGMT
-#include "h/skgepmgt.h"
-#endif
-/* defines *******************************************************************/
-
-#ifndef DEBUG
-#define PNMI_STATIC    static
-#else  /* DEBUG */
-#define PNMI_STATIC
-#endif /* DEBUG */
-
-/*
- * Public Function prototypes
- */
-int SkPnmiInit(SK_AC *pAC, SK_IOC IoC, int level);
-int SkPnmiGetVar(SK_AC *pAC, SK_IOC IoC, SK_U32 Id, void *pBuf,
-       unsigned int *pLen, SK_U32 Instance, SK_U32 NetIndex);
-int SkPnmiPreSetVar(SK_AC *pAC, SK_IOC IoC, SK_U32 Id, void *pBuf,
-       unsigned int *pLen, SK_U32 Instance, SK_U32 NetIndex);
-int SkPnmiSetVar(SK_AC *pAC, SK_IOC IoC, SK_U32 Id, void *pBuf,
-       unsigned int *pLen, SK_U32 Instance, SK_U32 NetIndex);
-int SkPnmiGetStruct(SK_AC *pAC, SK_IOC IoC, void *pBuf,
-       unsigned int *pLen, SK_U32 NetIndex);
-int SkPnmiPreSetStruct(SK_AC *pAC, SK_IOC IoC, void *pBuf,
-       unsigned int *pLen, SK_U32 NetIndex);
-int SkPnmiSetStruct(SK_AC *pAC, SK_IOC IoC, void *pBuf,
-       unsigned int *pLen, SK_U32 NetIndex);
-int SkPnmiEvent(SK_AC *pAC, SK_IOC IoC, SK_U32 Event, SK_EVPARA Param);
-
-
-/*
- * Private Function prototypes
- */
-
-PNMI_STATIC SK_U8 CalculateLinkModeStatus(SK_AC *pAC, SK_IOC IoC, unsigned int
-       PhysPortIndex);
-PNMI_STATIC SK_U8 CalculateLinkStatus(SK_AC *pAC, SK_IOC IoC, unsigned int
-       PhysPortIndex);
-PNMI_STATIC void CopyMac(char *pDst, SK_MAC_ADDR *pMac);
-PNMI_STATIC void CopyTrapQueue(SK_AC *pAC, char *pDstBuf);
-PNMI_STATIC SK_U64 GetPhysStatVal(SK_AC *pAC, SK_IOC IoC,
-       unsigned int PhysPortIndex, unsigned int StatIndex);
-PNMI_STATIC SK_U64 GetStatVal(SK_AC *pAC, SK_IOC IoC, unsigned int LogPortIndex,
-       unsigned int StatIndex, SK_U32 NetIndex);
-PNMI_STATIC char* GetTrapEntry(SK_AC *pAC, SK_U32 TrapId, unsigned int Size);
-PNMI_STATIC void GetTrapQueueLen(SK_AC *pAC, unsigned int *pLen,
-       unsigned int *pEntries);
-PNMI_STATIC int GetVpdKeyArr(SK_AC *pAC, SK_IOC IoC, char *pKeyArr,
-       unsigned int KeyArrLen, unsigned int *pKeyNo);
-PNMI_STATIC int LookupId(SK_U32 Id);
-PNMI_STATIC int MacUpdate(SK_AC *pAC, SK_IOC IoC, unsigned int FirstMac,
-       unsigned int LastMac);
-PNMI_STATIC int PnmiStruct(SK_AC *pAC, SK_IOC IoC, int Action, char *pBuf,
-       unsigned int *pLen, SK_U32 NetIndex);
-PNMI_STATIC int PnmiVar(SK_AC *pAC, SK_IOC IoC, int Action, SK_U32 Id,
-       char *pBuf, unsigned int *pLen, SK_U32 Instance, SK_U32 NetIndex);
-PNMI_STATIC void QueueRlmtNewMacTrap(SK_AC *pAC, unsigned int ActiveMac);
-PNMI_STATIC void QueueRlmtPortTrap(SK_AC *pAC, SK_U32 TrapId,
-       unsigned int PortIndex);
-PNMI_STATIC void QueueSensorTrap(SK_AC *pAC, SK_U32 TrapId,
-       unsigned int SensorIndex);
-PNMI_STATIC void QueueSimpleTrap(SK_AC *pAC, SK_U32 TrapId);
-PNMI_STATIC void ResetCounter(SK_AC *pAC, SK_IOC IoC, SK_U32 NetIndex);
-PNMI_STATIC int RlmtUpdate(SK_AC *pAC, SK_IOC IoC, SK_U32 NetIndex);
-PNMI_STATIC int SirqUpdate(SK_AC *pAC, SK_IOC IoC);
-PNMI_STATIC void VirtualConf(SK_AC *pAC, SK_IOC IoC, SK_U32 Id, char *pBuf);
-PNMI_STATIC int Vct(SK_AC *pAC, SK_IOC IoC, int Action, SK_U32 Id, char *pBuf,
-       unsigned int *pLen, SK_U32 Instance, unsigned int TableIndex, SK_U32 NetIndex);
-PNMI_STATIC void CheckVctStatus(SK_AC *, SK_IOC, char *, SK_U32, SK_U32);
-
-/*
- * Table to correlate OID with handler function and index to
- * hardware register stored in StatAddress if applicable.
- */
-#include "skgemib.c"
-
-/* global variables **********************************************************/
-
-/*
- * Overflow status register bit table and corresponding counter
- * dependent on MAC type - the number relates to the size of overflow
- * mask returned by the pFnMacOverflow function
- */
-PNMI_STATIC const SK_U16 StatOvrflwBit[][SK_PNMI_MAC_TYPES] = {
-/* Bit0  */    { SK_PNMI_HTX,                  SK_PNMI_HTX_UNICAST},
-/* Bit1  */    { SK_PNMI_HTX_OCTETHIGH,        SK_PNMI_HTX_BROADCAST},
-/* Bit2  */    { SK_PNMI_HTX_OCTETLOW,         SK_PNMI_HTX_PMACC},
-/* Bit3  */    { SK_PNMI_HTX_BROADCAST,        SK_PNMI_HTX_MULTICAST},
-/* Bit4  */    { SK_PNMI_HTX_MULTICAST,        SK_PNMI_HTX_OCTETLOW},
-/* Bit5  */    { SK_PNMI_HTX_UNICAST,          SK_PNMI_HTX_OCTETHIGH},
-/* Bit6  */    { SK_PNMI_HTX_LONGFRAMES,       SK_PNMI_HTX_64},
-/* Bit7  */    { SK_PNMI_HTX_BURST,            SK_PNMI_HTX_127},
-/* Bit8  */    { SK_PNMI_HTX_PMACC,            SK_PNMI_HTX_255},
-/* Bit9  */    { SK_PNMI_HTX_MACC,             SK_PNMI_HTX_511},
-/* Bit10 */    { SK_PNMI_HTX_SINGLE_COL,       SK_PNMI_HTX_1023},
-/* Bit11 */    { SK_PNMI_HTX_MULTI_COL,        SK_PNMI_HTX_MAX},
-/* Bit12 */    { SK_PNMI_HTX_EXCESS_COL,       SK_PNMI_HTX_LONGFRAMES},
-/* Bit13 */    { SK_PNMI_HTX_LATE_COL,         SK_PNMI_HTX_RESERVED},
-/* Bit14 */    { SK_PNMI_HTX_DEFFERAL,         SK_PNMI_HTX_COL},
-/* Bit15 */    { SK_PNMI_HTX_EXCESS_DEF,       SK_PNMI_HTX_LATE_COL},
-/* Bit16 */    { SK_PNMI_HTX_UNDERRUN,         SK_PNMI_HTX_EXCESS_COL},
-/* Bit17 */    { SK_PNMI_HTX_CARRIER,          SK_PNMI_HTX_MULTI_COL},
-/* Bit18 */    { SK_PNMI_HTX_UTILUNDER,        SK_PNMI_HTX_SINGLE_COL},
-/* Bit19 */    { SK_PNMI_HTX_UTILOVER,         SK_PNMI_HTX_UNDERRUN},
-/* Bit20 */    { SK_PNMI_HTX_64,               SK_PNMI_HTX_RESERVED},
-/* Bit21 */    { SK_PNMI_HTX_127,              SK_PNMI_HTX_RESERVED},
-/* Bit22 */    { SK_PNMI_HTX_255,              SK_PNMI_HTX_RESERVED},
-/* Bit23 */    { SK_PNMI_HTX_511,              SK_PNMI_HTX_RESERVED},
-/* Bit24 */    { SK_PNMI_HTX_1023,             SK_PNMI_HTX_RESERVED},
-/* Bit25 */    { SK_PNMI_HTX_MAX,              SK_PNMI_HTX_RESERVED},
-/* Bit26 */    { SK_PNMI_HTX_RESERVED,         SK_PNMI_HTX_RESERVED},
-/* Bit27 */    { SK_PNMI_HTX_RESERVED,         SK_PNMI_HTX_RESERVED},
-/* Bit28 */    { SK_PNMI_HTX_RESERVED,         SK_PNMI_HTX_RESERVED},
-/* Bit29 */    { SK_PNMI_HTX_RESERVED,         SK_PNMI_HTX_RESERVED},
-/* Bit30 */    { SK_PNMI_HTX_RESERVED,         SK_PNMI_HTX_RESERVED},
-/* Bit31 */    { SK_PNMI_HTX_RESERVED,         SK_PNMI_HTX_RESERVED},
-/* Bit32 */    { SK_PNMI_HRX,                  SK_PNMI_HRX_UNICAST},
-/* Bit33 */    { SK_PNMI_HRX_OCTETHIGH,        SK_PNMI_HRX_BROADCAST},
-/* Bit34 */    { SK_PNMI_HRX_OCTETLOW,         SK_PNMI_HRX_PMACC},
-/* Bit35 */    { SK_PNMI_HRX_BROADCAST,        SK_PNMI_HRX_MULTICAST},
-/* Bit36 */    { SK_PNMI_HRX_MULTICAST,        SK_PNMI_HRX_FCS},
-/* Bit37 */    { SK_PNMI_HRX_UNICAST,          SK_PNMI_HRX_RESERVED},
-/* Bit38 */    { SK_PNMI_HRX_PMACC,            SK_PNMI_HRX_OCTETLOW},
-/* Bit39 */    { SK_PNMI_HRX_MACC,             SK_PNMI_HRX_OCTETHIGH},
-/* Bit40 */    { SK_PNMI_HRX_PMACC_ERR,        SK_PNMI_HRX_BADOCTETLOW},
-/* Bit41 */    { SK_PNMI_HRX_MACC_UNKWN,       SK_PNMI_HRX_BADOCTETHIGH},
-/* Bit42 */    { SK_PNMI_HRX_BURST,            SK_PNMI_HRX_UNDERSIZE},
-/* Bit43 */    { SK_PNMI_HRX_MISSED,           SK_PNMI_HRX_RUNT},
-/* Bit44 */    { SK_PNMI_HRX_FRAMING,          SK_PNMI_HRX_64},
-/* Bit45 */    { SK_PNMI_HRX_OVERFLOW,         SK_PNMI_HRX_127},
-/* Bit46 */    { SK_PNMI_HRX_JABBER,           SK_PNMI_HRX_255},
-/* Bit47 */    { SK_PNMI_HRX_CARRIER,          SK_PNMI_HRX_511},
-/* Bit48 */    { SK_PNMI_HRX_IRLENGTH,         SK_PNMI_HRX_1023},
-/* Bit49 */    { SK_PNMI_HRX_SYMBOL,           SK_PNMI_HRX_MAX},
-/* Bit50 */    { SK_PNMI_HRX_SHORTS,           SK_PNMI_HRX_LONGFRAMES},
-/* Bit51 */    { SK_PNMI_HRX_RUNT,             SK_PNMI_HRX_TOO_LONG},
-/* Bit52 */    { SK_PNMI_HRX_TOO_LONG,         SK_PNMI_HRX_JABBER},
-/* Bit53 */    { SK_PNMI_HRX_FCS,              SK_PNMI_HRX_RESERVED},
-/* Bit54 */    { SK_PNMI_HRX_RESERVED,         SK_PNMI_HRX_OVERFLOW},
-/* Bit55 */    { SK_PNMI_HRX_CEXT,             SK_PNMI_HRX_RESERVED},
-/* Bit56 */    { SK_PNMI_HRX_UTILUNDER,        SK_PNMI_HRX_RESERVED},
-/* Bit57 */    { SK_PNMI_HRX_UTILOVER,         SK_PNMI_HRX_RESERVED},
-/* Bit58 */    { SK_PNMI_HRX_64,               SK_PNMI_HRX_RESERVED},
-/* Bit59 */    { SK_PNMI_HRX_127,              SK_PNMI_HRX_RESERVED},
-/* Bit60 */    { SK_PNMI_HRX_255,              SK_PNMI_HRX_RESERVED},
-/* Bit61 */    { SK_PNMI_HRX_511,              SK_PNMI_HRX_RESERVED},
-/* Bit62 */    { SK_PNMI_HRX_1023,             SK_PNMI_HRX_RESERVED},
-/* Bit63 */    { SK_PNMI_HRX_MAX,              SK_PNMI_HRX_RESERVED}
-};
-
-/*
- * Table for hardware register saving on resets and port switches
- */
-PNMI_STATIC const SK_PNMI_STATADDR StatAddr[SK_PNMI_MAX_IDX][SK_PNMI_MAC_TYPES] = {
-       /* SK_PNMI_HTX */
-       {{XM_TXF_OK, SK_TRUE}, {0, SK_FALSE}},
-       /* SK_PNMI_HTX_OCTETHIGH */
-       {{XM_TXO_OK_HI, SK_TRUE}, {GM_TXO_OK_HI, SK_TRUE}},
-       /* SK_PNMI_HTX_OCTETLOW */
-       {{XM_TXO_OK_LO, SK_FALSE}, {GM_TXO_OK_LO, SK_FALSE}},
-       /* SK_PNMI_HTX_BROADCAST */
-       {{XM_TXF_BC_OK, SK_TRUE}, {GM_TXF_BC_OK, SK_TRUE}},
-       /* SK_PNMI_HTX_MULTICAST */
-       {{XM_TXF_MC_OK, SK_TRUE}, {GM_TXF_MC_OK, SK_TRUE}},
-       /* SK_PNMI_HTX_UNICAST */
-       {{XM_TXF_UC_OK, SK_TRUE}, {GM_TXF_UC_OK, SK_TRUE}},
-       /* SK_PNMI_HTX_BURST */
-       {{XM_TXE_BURST, SK_TRUE}, {0, SK_FALSE}},
-       /* SK_PNMI_HTX_PMACC */
-       {{XM_TXF_MPAUSE, SK_TRUE}, {GM_TXF_MPAUSE, SK_TRUE}},
-       /* SK_PNMI_HTX_MACC */
-       {{XM_TXF_MCTRL, SK_TRUE}, {0, SK_FALSE}},
-       /* SK_PNMI_HTX_COL */
-       {{0, SK_FALSE}, {GM_TXF_COL, SK_TRUE}},
-       /* SK_PNMI_HTX_SINGLE_COL */
-       {{XM_TXF_SNG_COL, SK_TRUE}, {GM_TXF_SNG_COL, SK_TRUE}},
-       /* SK_PNMI_HTX_MULTI_COL */
-       {{XM_TXF_MUL_COL, SK_TRUE}, {GM_TXF_MUL_COL, SK_TRUE}},
-       /* SK_PNMI_HTX_EXCESS_COL */
-       {{XM_TXF_ABO_COL, SK_TRUE}, {GM_TXF_ABO_COL, SK_TRUE}},
-       /* SK_PNMI_HTX_LATE_COL */
-       {{XM_TXF_LAT_COL, SK_TRUE}, {GM_TXF_LAT_COL, SK_TRUE}},
-       /* SK_PNMI_HTX_DEFFERAL */
-       {{XM_TXF_DEF, SK_TRUE}, {0, SK_FALSE}},
-       /* SK_PNMI_HTX_EXCESS_DEF */
-       {{XM_TXF_EX_DEF, SK_TRUE}, {0, SK_FALSE}},
-       /* SK_PNMI_HTX_UNDERRUN */
-       {{XM_TXE_FIFO_UR, SK_TRUE}, {GM_TXE_FIFO_UR, SK_TRUE}},
-       /* SK_PNMI_HTX_CARRIER */
-       {{XM_TXE_CS_ERR, SK_TRUE}, {0, SK_FALSE}},
-       /* SK_PNMI_HTX_UTILUNDER */
-       {{0, SK_FALSE}, {0, SK_FALSE}},
-       /* SK_PNMI_HTX_UTILOVER */
-       {{0, SK_FALSE}, {0, SK_FALSE}},
-       /* SK_PNMI_HTX_64 */
-       {{XM_TXF_64B, SK_TRUE}, {GM_TXF_64B, SK_TRUE}},
-       /* SK_PNMI_HTX_127 */
-       {{XM_TXF_127B, SK_TRUE}, {GM_TXF_127B, SK_TRUE}},
-       /* SK_PNMI_HTX_255 */
-       {{XM_TXF_255B, SK_TRUE}, {GM_TXF_255B, SK_TRUE}},
-       /* SK_PNMI_HTX_511 */
-       {{XM_TXF_511B, SK_TRUE}, {GM_TXF_511B, SK_TRUE}},
-       /* SK_PNMI_HTX_1023 */
-       {{XM_TXF_1023B, SK_TRUE}, {GM_TXF_1023B, SK_TRUE}},
-       /* SK_PNMI_HTX_MAX */
-       {{XM_TXF_MAX_SZ, SK_TRUE}, {GM_TXF_1518B, SK_TRUE}},
-       /* SK_PNMI_HTX_LONGFRAMES  */
-       {{XM_TXF_LONG, SK_TRUE}, {GM_TXF_MAX_SZ, SK_TRUE}},
-       /* SK_PNMI_HTX_SYNC */
-       {{0, SK_FALSE}, {0, SK_FALSE}},
-       /* SK_PNMI_HTX_SYNC_OCTET */
-       {{0, SK_FALSE}, {0, SK_FALSE}},
-       /* SK_PNMI_HTX_RESERVED */
-       {{0, SK_FALSE}, {0, SK_FALSE}},
-       /* SK_PNMI_HRX */
-       {{XM_RXF_OK, SK_TRUE}, {0, SK_FALSE}},
-       /* SK_PNMI_HRX_OCTETHIGH */
-       {{XM_RXO_OK_HI, SK_TRUE}, {GM_RXO_OK_HI, SK_TRUE}},
-       /* SK_PNMI_HRX_OCTETLOW */
-       {{XM_RXO_OK_LO, SK_FALSE}, {GM_RXO_OK_LO, SK_FALSE}},
-       /* SK_PNMI_HRX_BADOCTETHIGH */
-       {{0, SK_FALSE}, {GM_RXO_ERR_HI, SK_TRUE}},
-       /* SK_PNMI_HRX_BADOCTETLOW */
-       {{0, SK_FALSE}, {GM_RXO_ERR_LO, SK_TRUE}},
-       /* SK_PNMI_HRX_BROADCAST */
-       {{XM_RXF_BC_OK, SK_TRUE}, {GM_RXF_BC_OK, SK_TRUE}},
-       /* SK_PNMI_HRX_MULTICAST */
-       {{XM_RXF_MC_OK, SK_TRUE}, {GM_RXF_MC_OK, SK_TRUE}},
-       /* SK_PNMI_HRX_UNICAST */
-       {{XM_RXF_UC_OK, SK_TRUE}, {GM_RXF_UC_OK, SK_TRUE}},
-       /* SK_PNMI_HRX_PMACC */
-       {{XM_RXF_MPAUSE, SK_TRUE}, {GM_RXF_MPAUSE, SK_TRUE}},
-       /* SK_PNMI_HRX_MACC */
-       {{XM_RXF_MCTRL, SK_TRUE}, {0, SK_FALSE}},
-       /* SK_PNMI_HRX_PMACC_ERR */
-       {{XM_RXF_INV_MP, SK_TRUE}, {0, SK_FALSE}},
-       /* SK_PNMI_HRX_MACC_UNKWN */
-       {{XM_RXF_INV_MOC, SK_TRUE}, {0, SK_FALSE}},
-       /* SK_PNMI_HRX_BURST */
-       {{XM_RXE_BURST, SK_TRUE}, {0, SK_FALSE}},
-       /* SK_PNMI_HRX_MISSED */
-       {{XM_RXE_FMISS, SK_TRUE}, {0, SK_FALSE}},
-       /* SK_PNMI_HRX_FRAMING */
-       {{XM_RXF_FRA_ERR, SK_TRUE}, {0, SK_FALSE}},
-       /* SK_PNMI_HRX_UNDERSIZE */
-       {{0, SK_FALSE},{GM_RXF_SHT, SK_TRUE}},
-       /* SK_PNMI_HRX_OVERFLOW */
-       {{XM_RXE_FIFO_OV, SK_TRUE}, {GM_RXE_FIFO_OV, SK_TRUE}},
-       /* SK_PNMI_HRX_JABBER */
-       {{XM_RXF_JAB_PKT, SK_TRUE}, {GM_RXF_JAB_PKT, SK_TRUE}},
-       /* SK_PNMI_HRX_CARRIER */
-       {{XM_RXE_CAR_ERR, SK_TRUE}, {0, SK_FALSE}},
-       /* SK_PNMI_HRX_IRLENGTH */
-       {{XM_RXF_LEN_ERR, SK_TRUE}, {0, SK_FALSE}},
-       /* SK_PNMI_HRX_SYMBOL */
-       {{XM_RXE_SYM_ERR, SK_TRUE}, {0, SK_FALSE}},
-       /* SK_PNMI_HRX_SHORTS */
-       {{XM_RXE_SHT_ERR, SK_TRUE}, {0, SK_FALSE}},
-       /* SK_PNMI_HRX_RUNT */
-       {{XM_RXE_RUNT, SK_TRUE}, {GM_RXE_FRAG, SK_TRUE}},
-       /* SK_PNMI_HRX_TOO_LONG */
-       {{XM_RXF_LNG_ERR, SK_TRUE}, {GM_RXF_LNG_ERR, SK_TRUE}},
-       /* SK_PNMI_HRX_FCS */
-       {{XM_RXF_FCS_ERR, SK_TRUE}, {GM_RXF_FCS_ERR, SK_TRUE}},
-       /* SK_PNMI_HRX_CEXT */
-       {{XM_RXF_CEX_ERR, SK_TRUE}, {0, SK_FALSE}},
-       /* SK_PNMI_HRX_UTILUNDER */
-       {{0, SK_FALSE}, {0, SK_FALSE}},
-       /* SK_PNMI_HRX_UTILOVER */
-       {{0, SK_FALSE}, {0, SK_FALSE}},
-       /* SK_PNMI_HRX_64 */
-       {{XM_RXF_64B, SK_TRUE}, {GM_RXF_64B, SK_TRUE}},
-       /* SK_PNMI_HRX_127 */
-       {{XM_RXF_127B, SK_TRUE}, {GM_RXF_127B, SK_TRUE}},
-       /* SK_PNMI_HRX_255 */
-       {{XM_RXF_255B, SK_TRUE}, {GM_RXF_255B, SK_TRUE}},
-       /* SK_PNMI_HRX_511 */
-       {{XM_RXF_511B, SK_TRUE}, {GM_RXF_511B, SK_TRUE}},
-       /* SK_PNMI_HRX_1023 */
-       {{XM_RXF_1023B, SK_TRUE}, {GM_RXF_1023B, SK_TRUE}},
-       /* SK_PNMI_HRX_MAX */
-       {{XM_RXF_MAX_SZ, SK_TRUE}, {GM_RXF_1518B, SK_TRUE}},
-       /* SK_PNMI_HRX_LONGFRAMES */
-       {{0, SK_FALSE}, {GM_RXF_MAX_SZ, SK_TRUE}},
-       /* SK_PNMI_HRX_RESERVED */
-       {{0, SK_FALSE}, {0, SK_FALSE}}
-};
-
-
-/*****************************************************************************
- *
- * Public functions
- *
- */
-
-/*****************************************************************************
- *
- * SkPnmiInit - Init function of PNMI
- *
- * Description:
- *     SK_INIT_DATA: Initialises the data structures
- *     SK_INIT_IO:   Resets the XMAC statistics, determines the device and
- *                   connector type.
- *     SK_INIT_RUN:  Starts a timer event for port switch per hour
- *                   calculation.
- *
- * Returns:
- *     Always 0
- */
-int SkPnmiInit(
-SK_AC *pAC,            /* Pointer to adapter context */
-SK_IOC IoC,            /* IO context handle */
-int Level)             /* Initialization level */
-{
-       unsigned int    PortMax;        /* Number of ports */
-       unsigned int    PortIndex;      /* Current port index in loop */
-       SK_U16          Val16;          /* Multiple purpose 16 bit variable */
-       SK_U8           Val8;           /* Mulitple purpose 8 bit variable */
-       SK_EVPARA       EventParam;     /* Event struct for timer event */
-       SK_GEPORT       *pPrt;
-       SK_PNMI_VCT     *pVctBackupData;
-
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_CTRL,
-               ("PNMI: SkPnmiInit: Called, level=%d\n", Level));
-
-       switch (Level) {
-
-       case SK_INIT_DATA:
-               SK_MEMSET((char *)&pAC->Pnmi, 0, sizeof(pAC->Pnmi));
-               pAC->Pnmi.TrapBufFree = SK_PNMI_TRAP_QUEUE_LEN;
-               pAC->Pnmi.StartUpTime = SK_PNMI_HUNDREDS_SEC(SkOsGetTime(pAC));
-               pAC->Pnmi.RlmtChangeThreshold = SK_PNMI_DEF_RLMT_CHG_THRES;
-               for (PortIndex = 0; PortIndex < SK_MAX_MACS; PortIndex ++) {
-
-                       pAC->Pnmi.Port[PortIndex].ActiveFlag = SK_FALSE;
-                       pAC->Pnmi.DualNetActiveFlag = SK_FALSE;
-               }
-
-#ifdef SK_PNMI_CHECK
-               if (SK_PNMI_MAX_IDX != SK_PNMI_CNT_NO) {
-
-                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR049, SK_PNMI_ERR049MSG);
-
-                       SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_INIT | SK_DBGCAT_FATAL,
-                                          ("CounterOffset struct size (%d) differs from"
-                                               "SK_PNMI_MAX_IDX (%d)\n",
-                                               SK_PNMI_CNT_NO, SK_PNMI_MAX_IDX));
-                       BRK;
-               }
-
-               if (SK_PNMI_MAX_IDX !=
-                       (sizeof(StatAddr) / (sizeof(SK_PNMI_STATADDR) * SK_PNMI_MAC_TYPES))) {
-
-                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR050, SK_PNMI_ERR050MSG);
-
-                       SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_INIT | SK_DBGCAT_FATAL,
-                                          ("StatAddr table size (%d) differs from "
-                                               "SK_PNMI_MAX_IDX (%d)\n",
-                                               (sizeof(StatAddr) /
-                                                (sizeof(SK_PNMI_STATADDR) * SK_PNMI_MAC_TYPES)),
-                                                SK_PNMI_MAX_IDX));
-                       BRK;
-               }
-#endif /* SK_PNMI_CHECK */
-               break;
-
-       case SK_INIT_IO:
-               /*
-                * Reset MAC counters
-                */
-               PortMax = pAC->GIni.GIMacsFound;
-
-               for (PortIndex = 0; PortIndex < PortMax; PortIndex ++) {
-
-                       pAC->GIni.GIFunc.pFnMacResetCounter(pAC, IoC, PortIndex);
-               }
-
-               /* Initialize DSP variables for Vct() to 0xff => Never written! */
-               for (PortIndex = 0; PortIndex < PortMax; PortIndex ++) {
-                       pPrt = &pAC->GIni.GP[PortIndex];
-                       pPrt->PCableLen =0xff;
-                       pVctBackupData = &pAC->Pnmi.VctBackup[PortIndex];
-                       pVctBackupData->PCableLen = 0xff;
-               }
-
-               /*
-                * Get pci bus speed
-                */
-               SK_IN16(IoC, B0_CTST, &Val16);
-               if ((Val16 & CS_BUS_CLOCK) == 0) {
-
-                       pAC->Pnmi.PciBusSpeed = 33;
-               }
-               else {
-                       pAC->Pnmi.PciBusSpeed = 66;
-               }
-
-               /*
-                * Get pci bus width
-                */
-               SK_IN16(IoC, B0_CTST, &Val16);
-               if ((Val16 & CS_BUS_SLOT_SZ) == 0) {
-
-                       pAC->Pnmi.PciBusWidth = 32;
-               }
-               else {
-                       pAC->Pnmi.PciBusWidth = 64;
-               }
-
-               /*
-                * Get chipset
-                */
-               switch (pAC->GIni.GIChipId) {
-               case CHIP_ID_GENESIS:
-                       pAC->Pnmi.Chipset = SK_PNMI_CHIPSET_XMAC;
-                       break;
-
-               case CHIP_ID_YUKON:
-                       pAC->Pnmi.Chipset = SK_PNMI_CHIPSET_YUKON;
-                       break;
-
-               default:
-                       break;
-               }
-
-               /*
-                * Get PMD and DeviceType
-                */
-               SK_IN8(IoC, B2_PMD_TYP, &Val8);
-               switch (Val8) {
-               case 'S':
-                       pAC->Pnmi.PMD = 3;
-                       if (pAC->GIni.GIMacsFound > 1) {
-
-                               pAC->Pnmi.DeviceType = 0x00020002;
-                       }
-                       else {
-                               pAC->Pnmi.DeviceType = 0x00020001;
-                       }
-                       break;
-
-               case 'L':
-                       pAC->Pnmi.PMD = 2;
-                       if (pAC->GIni.GIMacsFound > 1) {
-
-                               pAC->Pnmi.DeviceType = 0x00020004;
-                       }
-                       else {
-                               pAC->Pnmi.DeviceType = 0x00020003;
-                       }
-                       break;
-
-               case 'C':
-                       pAC->Pnmi.PMD = 4;
-                       if (pAC->GIni.GIMacsFound > 1) {
-
-                               pAC->Pnmi.DeviceType = 0x00020006;
-                       }
-                       else {
-                               pAC->Pnmi.DeviceType = 0x00020005;
-                       }
-                       break;
-
-               case 'T':
-                       pAC->Pnmi.PMD = 5;
-                       if (pAC->GIni.GIMacsFound > 1) {
-
-                               pAC->Pnmi.DeviceType = 0x00020008;
-                       }
-                       else {
-                               pAC->Pnmi.DeviceType = 0x00020007;
-                       }
-                       break;
-
-               default :
-                       pAC->Pnmi.PMD = 1;
-                       pAC->Pnmi.DeviceType = 0;
-                       break;
-               }
-
-               /*
-                * Get connector
-                */
-               SK_IN8(IoC, B2_CONN_TYP, &Val8);
-               switch (Val8) {
-               case 'C':
-                       pAC->Pnmi.Connector = 2;
-                       break;
-
-               case 'D':
-                       pAC->Pnmi.Connector = 3;
-                       break;
-
-               case 'F':
-                       pAC->Pnmi.Connector = 4;
-                       break;
-
-               case 'J':
-                       pAC->Pnmi.Connector = 5;
-                       break;
-
-               case 'V':
-                       pAC->Pnmi.Connector = 6;
-                       break;
-
-               default:
-                       pAC->Pnmi.Connector = 1;
-                       break;
-               }
-               break;
-
-       case SK_INIT_RUN:
-               /*
-                * Start timer for RLMT change counter
-                */
-               SK_MEMSET((char *) &EventParam, 0, sizeof(EventParam));
-               SkTimerStart(pAC, IoC, &pAC->Pnmi.RlmtChangeEstimate.EstTimer,
-                       28125000, SKGE_PNMI, SK_PNMI_EVT_CHG_EST_TIMER,
-                       EventParam);
-               break;
-
-       default:
-               break; /* Nothing todo */
-       }
-
-       return (0);
-}
-
-/*****************************************************************************
- *
- * SkPnmiGetVar - Retrieves the value of a single OID
- *
- * Description:
- *     Calls a general sub-function for all this stuff. If the instance
- *     -1 is passed, the values of all instances are returned in an
- *     array of values.
- *
- * Returns:
- *     SK_PNMI_ERR_OK           The request was successfully performed
- *     SK_PNMI_ERR_GENERAL      A general severe internal error occured
- *     SK_PNMI_ERR_TOO_SHORT    The passed buffer is too short to take
- *                              the data.
- *     SK_PNMI_ERR_UNKNOWN_OID  The requested OID is unknown
- *     SK_PNMI_ERR_UNKNOWN_INST The requested instance of the OID doesn't
- *                               exist (e.g. port instance 3 on a two port
- *                              adapter.
- */
-int SkPnmiGetVar(
-SK_AC *pAC,            /* Pointer to adapter context */
-SK_IOC IoC,            /* IO context handle */
-SK_U32 Id,             /* Object ID that is to be processed */
-void *pBuf,            /* Buffer to which to mgmt data will be retrieved */
-unsigned int *pLen,    /* On call: buffer length. On return: used buffer */
-SK_U32 Instance,       /* Instance (1..n) that is to be queried or -1 */
-SK_U32 NetIndex)       /* NetIndex (0..n), in single net mode allways zero */
-{
-       SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_CTRL,
-               ("PNMI: SkPnmiGetVar: Called, Id=0x%x, BufLen=%d, Instance=%d, NetIndex=%d\n",
-                       Id, *pLen, Instance, NetIndex));
-
-       return (PnmiVar(pAC, IoC, SK_PNMI_GET, Id, (char *)pBuf, pLen,
-               Instance, NetIndex));
-}
-
-/*****************************************************************************
- *
- * SkPnmiPreSetVar - Presets the value of a single OID
- *
- * Description:
- *     Calls a general sub-function for all this stuff. The preset does
- *     the same as a set, but returns just before finally setting the
- *     new value. This is usefull to check if a set might be successfull.
- *     If as instance a -1 is passed, an array of values is supposed and
- *     all instance of the OID will be set.
- *
- * Returns:
- *     SK_PNMI_ERR_OK           The request was successfully performed.
- *     SK_PNMI_ERR_GENERAL      A general severe internal error occured.
- *     SK_PNMI_ERR_TOO_SHORT    The passed buffer is too short to contain
- *                              the correct data (e.g. a 32bit value is
- *                              needed, but a 16 bit value was passed).
- *     SK_PNMI_ERR_BAD_VALUE    The passed value is not in the valid
- *                              value range.
- *     SK_PNMI_ERR_READ_ONLY    The OID is read-only and cannot be set.
- *     SK_PNMI_ERR_UNKNOWN_OID  The requested OID is unknown.
- *     SK_PNMI_ERR_UNKNOWN_INST The requested instance of the OID doesn't
- *                               exist (e.g. port instance 3 on a two port
- *                              adapter.
- */
-int SkPnmiPreSetVar(
-SK_AC *pAC,            /* Pointer to adapter context */
-SK_IOC IoC,            /* IO context handle */
-SK_U32 Id,             /* Object ID that is to be processed */
-void *pBuf,            /* Buffer which stores the mgmt data to be set */
-unsigned int *pLen,    /* Total length of mgmt data */
-SK_U32 Instance,       /* Instance (1..n) that is to be set or -1 */
-SK_U32 NetIndex)       /* NetIndex (0..n), in single net mode allways zero */
-{
-       SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_CTRL,
-               ("PNMI: SkPnmiPreSetVar: Called, Id=0x%x, BufLen=%d, Instance=%d, NetIndex=%d\n",
-                       Id, *pLen, Instance, NetIndex));
-
-
-       return (PnmiVar(pAC, IoC, SK_PNMI_PRESET, Id, (char *)pBuf, pLen,
-               Instance, NetIndex));
-}
-
-/*****************************************************************************
- *
- * SkPnmiSetVar - Sets the value of a single OID
- *
- * Description:
- *     Calls a general sub-function for all this stuff. The preset does
- *     the same as a set, but returns just before finally setting the
- *     new value. This is usefull to check if a set might be successfull.
- *     If as instance a -1 is passed, an array of values is supposed and
- *     all instance of the OID will be set.
- *
- * Returns:
- *     SK_PNMI_ERR_OK           The request was successfully performed.
- *     SK_PNMI_ERR_GENERAL      A general severe internal error occured.
- *     SK_PNMI_ERR_TOO_SHORT    The passed buffer is too short to contain
- *                              the correct data (e.g. a 32bit value is
- *                              needed, but a 16 bit value was passed).
- *     SK_PNMI_ERR_BAD_VALUE    The passed value is not in the valid
- *                              value range.
- *     SK_PNMI_ERR_READ_ONLY    The OID is read-only and cannot be set.
- *     SK_PNMI_ERR_UNKNOWN_OID  The requested OID is unknown.
- *     SK_PNMI_ERR_UNKNOWN_INST The requested instance of the OID doesn't
- *                               exist (e.g. port instance 3 on a two port
- *                              adapter.
- */
-int SkPnmiSetVar(
-SK_AC *pAC,            /* Pointer to adapter context */
-SK_IOC IoC,            /* IO context handle */
-SK_U32 Id,             /* Object ID that is to be processed */
-void *pBuf,            /* Buffer which stores the mgmt data to be set */
-unsigned int *pLen,    /* Total length of mgmt data */
-SK_U32 Instance,       /* Instance (1..n) that is to be set or -1 */
-SK_U32 NetIndex)       /* NetIndex (0..n), in single net mode allways zero */
-{
-       SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_CTRL,
-               ("PNMI: SkPnmiSetVar: Called, Id=0x%x, BufLen=%d, Instance=%d, NetIndex=%d\n",
-                       Id, *pLen, Instance, NetIndex));
-
-       return (PnmiVar(pAC, IoC, SK_PNMI_SET, Id, (char *)pBuf, pLen,
-               Instance, NetIndex));
-}
-
-/*****************************************************************************
- *
- * SkPnmiGetStruct - Retrieves the management database in SK_PNMI_STRUCT_DATA
- *
- * Description:
- *     Runs through the IdTable, queries the single OIDs and stores the
- *     returned data into the management database structure
- *     SK_PNMI_STRUCT_DATA. The offset of the OID in the structure
- *     is stored in the IdTable. The return value of the function will also
- *     be stored in SK_PNMI_STRUCT_DATA if the passed buffer has the
- *     minimum size of SK_PNMI_MIN_STRUCT_SIZE.
- *
- * Returns:
- *     SK_PNMI_ERR_OK           The request was successfully performed
- *     SK_PNMI_ERR_GENERAL      A general severe internal error occured
- *     SK_PNMI_ERR_TOO_SHORT    The passed buffer is too short to take
- *                              the data.
- *     SK_PNMI_ERR_UNKNOWN_NET  The requested NetIndex doesn't exist
- */
-int SkPnmiGetStruct(
-SK_AC *pAC,            /* Pointer to adapter context */
-SK_IOC IoC,            /* IO context handle */
-void *pBuf,            /* Buffer which will store the retrieved data */
-unsigned int *pLen,    /* Length of buffer */
-SK_U32 NetIndex)       /* NetIndex (0..n), in single net mode allways zero */
-{
-       int             Ret;
-       unsigned int    TableIndex;
-       unsigned int    DstOffset;
-       unsigned int    InstanceNo;
-       unsigned int    InstanceCnt;
-       SK_U32          Instance;
-       unsigned int    TmpLen;
-       char            KeyArr[SK_PNMI_VPD_ENTRIES][SK_PNMI_VPD_KEY_SIZE];
-
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_CTRL,
-               ("PNMI: SkPnmiGetStruct: Called, BufLen=%d, NetIndex=%d\n",
-                       *pLen, NetIndex));
-
-       if (*pLen < SK_PNMI_STRUCT_SIZE) {
-
-               if (*pLen >= SK_PNMI_MIN_STRUCT_SIZE) {
-
-                       SK_PNMI_SET_STAT(pBuf, SK_PNMI_ERR_TOO_SHORT,
-                               (SK_U32)(-1));
-               }
-
-               *pLen = SK_PNMI_STRUCT_SIZE;
-               return (SK_PNMI_ERR_TOO_SHORT);
-       }
-
-    /*
-     * Check NetIndex
-     */
-       if (NetIndex >= pAC->Rlmt.NumNets) {
-               return (SK_PNMI_ERR_UNKNOWN_NET);
-       }
-
-       /* Update statistic */
-       SK_PNMI_CHECKFLAGS("SkPnmiGetStruct: On call");
-
-       if ((Ret = MacUpdate(pAC, IoC, 0, pAC->GIni.GIMacsFound - 1)) !=
-               SK_PNMI_ERR_OK) {
-
-               SK_PNMI_SET_STAT(pBuf, Ret, (SK_U32)(-1));
-               *pLen = SK_PNMI_MIN_STRUCT_SIZE;
-               return (Ret);
-       }
-
-       if ((Ret = RlmtUpdate(pAC, IoC, NetIndex)) != SK_PNMI_ERR_OK) {
-
-               SK_PNMI_SET_STAT(pBuf, Ret, (SK_U32)(-1));
-               *pLen = SK_PNMI_MIN_STRUCT_SIZE;
-               return (Ret);
-       }
-
-       if ((Ret = SirqUpdate(pAC, IoC)) != SK_PNMI_ERR_OK) {
-
-               SK_PNMI_SET_STAT(pBuf, Ret, (SK_U32)(-1));
-               *pLen = SK_PNMI_MIN_STRUCT_SIZE;
-               return (Ret);
-       }
-
-       /*
-        * Increment semaphores to indicate that an update was
-        * already done
-        */
-       pAC->Pnmi.MacUpdatedFlag ++;
-       pAC->Pnmi.RlmtUpdatedFlag ++;
-       pAC->Pnmi.SirqUpdatedFlag ++;
-
-       /* Get vpd keys for instance calculation */
-       Ret = GetVpdKeyArr(pAC, IoC, &KeyArr[0][0], sizeof(KeyArr), &TmpLen);
-       if (Ret != SK_PNMI_ERR_OK) {
-
-               pAC->Pnmi.MacUpdatedFlag --;
-               pAC->Pnmi.RlmtUpdatedFlag --;
-               pAC->Pnmi.SirqUpdatedFlag --;
-
-               SK_PNMI_CHECKFLAGS("SkPnmiGetStruct: On return");
-               SK_PNMI_SET_STAT(pBuf, Ret, (SK_U32)(-1));
-               *pLen = SK_PNMI_MIN_STRUCT_SIZE;
-               return (SK_PNMI_ERR_GENERAL);
-       }
-
-       /* Retrieve values */
-       SK_MEMSET((char *)pBuf, 0, SK_PNMI_STRUCT_SIZE);
-       for (TableIndex = 0; TableIndex < ID_TABLE_SIZE; TableIndex ++) {
-
-               InstanceNo = IdTable[TableIndex].InstanceNo;
-               for (InstanceCnt = 1; InstanceCnt <= InstanceNo;
-                       InstanceCnt ++) {
-
-                       DstOffset = IdTable[TableIndex].Offset +
-                               (InstanceCnt - 1) *
-                               IdTable[TableIndex].StructSize;
-
-                       /*
-                        * For the VPD the instance is not an index number
-                        * but the key itself. Determin with the instance
-                        * counter the VPD key to be used.
-                        */
-                       if (IdTable[TableIndex].Id == OID_SKGE_VPD_KEY ||
-                               IdTable[TableIndex].Id == OID_SKGE_VPD_VALUE ||
-                               IdTable[TableIndex].Id == OID_SKGE_VPD_ACCESS ||
-                               IdTable[TableIndex].Id == OID_SKGE_VPD_ACTION) {
-
-                               SK_STRNCPY((char *)&Instance, KeyArr[InstanceCnt - 1], 4);
-                       }
-                       else {
-                               Instance = (SK_U32)InstanceCnt;
-                       }
-
-                       TmpLen = *pLen - DstOffset;
-                       Ret = IdTable[TableIndex].Func(pAC, IoC, SK_PNMI_GET,
-                               IdTable[TableIndex].Id, (char *)pBuf +
-                               DstOffset, &TmpLen, Instance, TableIndex, NetIndex);
-
-                       /*
-                        * An unknown instance error means that we reached
-                        * the last instance of that variable. Proceed with
-                        * the next OID in the table and ignore the return
-                        * code.
-                        */
-                       if (Ret == SK_PNMI_ERR_UNKNOWN_INST) {
-
-               break;
-                       }
-
-                       if (Ret != SK_PNMI_ERR_OK) {
-
-                               pAC->Pnmi.MacUpdatedFlag --;
-                               pAC->Pnmi.RlmtUpdatedFlag --;
-                               pAC->Pnmi.SirqUpdatedFlag --;
-
-                               SK_PNMI_CHECKFLAGS("SkPnmiGetStruct: On return");
-                               SK_PNMI_SET_STAT(pBuf, Ret, DstOffset);
-                               *pLen = SK_PNMI_MIN_STRUCT_SIZE;
-                               return (Ret);
-                       }
-               }
-       }
-
-       pAC->Pnmi.MacUpdatedFlag --;
-       pAC->Pnmi.RlmtUpdatedFlag --;
-       pAC->Pnmi.SirqUpdatedFlag --;
-
-       *pLen = SK_PNMI_STRUCT_SIZE;
-       SK_PNMI_CHECKFLAGS("SkPnmiGetStruct: On return");
-       SK_PNMI_SET_STAT(pBuf, SK_PNMI_ERR_OK, (SK_U32)(-1));
-       return (SK_PNMI_ERR_OK);
-}
-
-/*****************************************************************************
- *
- * SkPnmiPreSetStruct - Presets the management database in SK_PNMI_STRUCT_DATA
- *
- * Description:
- *     Calls a general sub-function for all this set stuff. The preset does
- *     the same as a set, but returns just before finally setting the
- *     new value. This is usefull to check if a set might be successfull.
- *     The sub-function runs through the IdTable, checks which OIDs are able
- *     to set, and calls the handler function of the OID to perform the
- *     preset. The return value of the function will also be stored in
- *     SK_PNMI_STRUCT_DATA if the passed buffer has the minimum size of
- *     SK_PNMI_MIN_STRUCT_SIZE.
- *
- * Returns:
- *     SK_PNMI_ERR_OK           The request was successfully performed.
- *     SK_PNMI_ERR_GENERAL      A general severe internal error occured.
- *     SK_PNMI_ERR_TOO_SHORT    The passed buffer is too short to contain
- *                              the correct data (e.g. a 32bit value is
- *                              needed, but a 16 bit value was passed).
- *     SK_PNMI_ERR_BAD_VALUE    The passed value is not in the valid
- *                              value range.
- */
-int SkPnmiPreSetStruct(
-SK_AC *pAC,            /* Pointer to adapter context */
-SK_IOC IoC,            /* IO context handle */
-void *pBuf,            /* Buffer which contains the data to be set */
-unsigned int *pLen,    /* Length of buffer */
-SK_U32 NetIndex)       /* NetIndex (0..n), in single net mode allways zero */
-{
-       SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_CTRL,
-               ("PNMI: SkPnmiPreSetStruct: Called, BufLen=%d, NetIndex=%d\n",
-                       *pLen, NetIndex));
-
-       return (PnmiStruct(pAC, IoC, SK_PNMI_PRESET, (char *)pBuf,
-                                       pLen, NetIndex));
-}
-
-/*****************************************************************************
- *
- * SkPnmiSetStruct - Sets the management database in SK_PNMI_STRUCT_DATA
- *
- * Description:
- *     Calls a general sub-function for all this set stuff. The return value
- *     of the function will also be stored in SK_PNMI_STRUCT_DATA if the
- *     passed buffer has the minimum size of SK_PNMI_MIN_STRUCT_SIZE.
- *     The sub-function runs through the IdTable, checks which OIDs are able
- *     to set, and calls the handler function of the OID to perform the
- *     set. The return value of the function will also be stored in
- *     SK_PNMI_STRUCT_DATA if the passed buffer has the minimum size of
- *     SK_PNMI_MIN_STRUCT_SIZE.
- *
- * Returns:
- *     SK_PNMI_ERR_OK           The request was successfully performed.
- *     SK_PNMI_ERR_GENERAL      A general severe internal error occured.
- *     SK_PNMI_ERR_TOO_SHORT    The passed buffer is too short to contain
- *                              the correct data (e.g. a 32bit value is
- *                              needed, but a 16 bit value was passed).
- *     SK_PNMI_ERR_BAD_VALUE    The passed value is not in the valid
- *                              value range.
- */
-int SkPnmiSetStruct(
-SK_AC *pAC,            /* Pointer to adapter context */
-SK_IOC IoC,            /* IO context handle */
-void *pBuf,            /* Buffer which contains the data to be set */
-unsigned int *pLen,    /* Length of buffer */
-SK_U32 NetIndex)       /* NetIndex (0..n), in single net mode allways zero */
-{
-       SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_CTRL,
-               ("PNMI: SkPnmiSetStruct: Called, BufLen=%d, NetIndex=%d\n",
-                       *pLen, NetIndex));
-
-       return (PnmiStruct(pAC, IoC, SK_PNMI_SET, (char *)pBuf,
-                                       pLen, NetIndex));
-}
-
-/*****************************************************************************
- *
- * SkPnmiEvent - Event handler
- *
- * Description:
- *     Handles the following events:
- *     SK_PNMI_EVT_SIRQ_OVERFLOW     When a hardware counter overflows an
- *                                   interrupt will be generated which is
- *                                   first handled by SIRQ which generates a
- *                                   this event. The event increments the
- *                                   upper 32 bit of the 64 bit counter.
- *     SK_PNMI_EVT_SEN_XXX           The event is generated by the I2C module
- *                                   when a sensor reports a warning or
- *                                   error. The event will store a trap
- *                                   message in the trap buffer.
- *     SK_PNMI_EVT_CHG_EST_TIMER     The timer event was initiated by this
- *                                   module and is used to calculate the
- *                                   port switches per hour.
- *     SK_PNMI_EVT_CLEAR_COUNTER     The event clears all counters and
- *                                   timestamps.
- *     SK_PNMI_EVT_XMAC_RESET        The event is generated by the driver
- *                                   before a hard reset of the XMAC is
- *                                   performed. All counters will be saved
- *                                   and added to the hardware counter
- *                                   values after reset to grant continuous
- *                                   counter values.
- *     SK_PNMI_EVT_RLMT_PORT_UP      Generated by RLMT to notify that a port
- *                                   went logically up. A trap message will
- *                                   be stored to the trap buffer.
- *     SK_PNMI_EVT_RLMT_PORT_DOWN    Generated by RLMT to notify that a port
- *                                   went logically down. A trap message will
- *                                   be stored to the trap buffer.
- *     SK_PNMI_EVT_RLMT_SEGMENTATION Generated by RLMT to notify that two
- *                                   spanning tree root bridges were
- *                                   detected. A trap message will be stored
- *                                   to the trap buffer.
- *     SK_PNMI_EVT_RLMT_ACTIVE_DOWN  Notifies PNMI that an active port went
- *                                   down. PNMI will not further add the
- *                                   statistic values to the virtual port.
- *     SK_PNMI_EVT_RLMT_ACTIVE_UP    Notifies PNMI that a port went up and
- *                                   is now an active port. PNMI will now
- *                                   add the statistic data of this port to
- *                                   the virtual port.
- *     SK_PNMI_EVT_RLMT_SET_NETS     Notifies PNMI about the net mode. The first Parameter
- *                                   contains the number of nets. 1 means single net, 2 means
- *                                   dual net. The second Parameter is -1
- *
- * Returns:
- *     Always 0
- */
-int SkPnmiEvent(
-SK_AC *pAC,            /* Pointer to adapter context */
-SK_IOC IoC,            /* IO context handle */
-SK_U32 Event,          /* Event-Id */
-SK_EVPARA Param)       /* Event dependent parameter */
-{
-       unsigned int    PhysPortIndex;
-       unsigned int    MaxNetNumber;
-       int                     CounterIndex;
-       int                     Ret;
-       SK_U16          MacStatus;
-       SK_U64          OverflowStatus;
-       SK_U64          Mask;
-       int                     MacType;
-       SK_U64          Value;
-       SK_U32          Val32;
-       SK_U16          Register;
-       SK_EVPARA       EventParam;
-       SK_U64          NewestValue;
-       SK_U64          OldestValue;
-       SK_U64          Delta;
-       SK_PNMI_ESTIMATE *pEst;
-       SK_U32          NetIndex;
-       SK_GEPORT       *pPrt;
-       SK_PNMI_VCT     *pVctBackupData;
-       SK_U32          RetCode;
-       int             i;
-       SK_U32          CableLength;
-
-
-#ifdef DEBUG
-       if (Event != SK_PNMI_EVT_XMAC_RESET) {
-
-               SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_CTRL,
-                       ("PNMI: SkPnmiEvent: Called, Event=0x%x, Param=0x%x\n",
-                       (unsigned int)Event, (unsigned int)Param.Para64));
-       }
-#endif
-       SK_PNMI_CHECKFLAGS("SkPnmiEvent: On call");
-
-       MacType = pAC->GIni.GIMacType;
-
-       switch (Event) {
-
-       case SK_PNMI_EVT_SIRQ_OVERFLOW:
-               PhysPortIndex = (int)Param.Para32[0];
-               MacStatus = (SK_U16)Param.Para32[1];
-#ifdef DEBUG
-               if (PhysPortIndex >= SK_MAX_MACS) {
-
-                       SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_CTRL,
-                               ("PNMI: ERR: SkPnmiEvent: SK_PNMI_EVT_SIRQ_OVERFLOW parameter"
-                                " wrong, PhysPortIndex=0x%x\n",
-                               PhysPortIndex));
-                       return (0);
-               }
-#endif
-               OverflowStatus = 0;
-
-               /*
-                * Check which source caused an overflow interrupt.
-                */
-               if ((pAC->GIni.GIFunc.pFnMacOverflow(
-                        pAC, IoC, PhysPortIndex, MacStatus, &OverflowStatus) != 0) ||
-                       (OverflowStatus == 0)) {
-
-                       SK_PNMI_CHECKFLAGS("SkPnmiEvent: On return");
-                       return (0);
-               }
-
-               /*
-                * Check the overflow status register and increment
-                * the upper dword of corresponding counter.
-                */
-               for (CounterIndex = 0; CounterIndex < sizeof(Mask) * 8;
-                       CounterIndex ++) {
-
-                       Mask = (SK_U64)1 << CounterIndex;
-                       if ((OverflowStatus & Mask) == 0) {
-
-                               continue;
-                       }
-
-                       switch (StatOvrflwBit[CounterIndex][MacType]) {
-
-                       case SK_PNMI_HTX_UTILUNDER:
-                       case SK_PNMI_HTX_UTILOVER:
-                               XM_IN16(IoC, PhysPortIndex, XM_TX_CMD,
-                                       &Register);
-                               Register |= XM_TX_SAM_LINE;
-                               XM_OUT16(IoC, PhysPortIndex, XM_TX_CMD,
-                                       Register);
-                               break;
-
-                       case SK_PNMI_HRX_UTILUNDER:
-                       case SK_PNMI_HRX_UTILOVER:
-                               XM_IN16(IoC, PhysPortIndex, XM_RX_CMD,
-                                       &Register);
-                               Register |= XM_RX_SAM_LINE;
-                               XM_OUT16(IoC, PhysPortIndex, XM_RX_CMD,
-                                       Register);
-                               break;
-
-                       case SK_PNMI_HTX_OCTETHIGH:
-                       case SK_PNMI_HTX_OCTETLOW:
-                       case SK_PNMI_HTX_RESERVED:
-                       case SK_PNMI_HRX_OCTETHIGH:
-                       case SK_PNMI_HRX_OCTETLOW:
-                       case SK_PNMI_HRX_IRLENGTH:
-                       case SK_PNMI_HRX_RESERVED:
-
-                       /*
-                        * the following counters aren't be handled (id > 63)
-                        */
-                       case SK_PNMI_HTX_SYNC:
-                       case SK_PNMI_HTX_SYNC_OCTET:
-                               break;
-
-                       case SK_PNMI_HRX_LONGFRAMES:
-                               if (MacType == SK_MAC_GMAC) {
-                                       pAC->Pnmi.Port[PhysPortIndex].
-                                               CounterHigh[CounterIndex] ++;
-                               }
-                               break;
-
-                       default:
-                               pAC->Pnmi.Port[PhysPortIndex].
-                                       CounterHigh[CounterIndex] ++;
-                       }
-               }
-               break;
-
-       case SK_PNMI_EVT_SEN_WAR_LOW:
-#ifdef DEBUG
-               if ((unsigned int)Param.Para64 >= (unsigned int)pAC->I2c.MaxSens) {
-
-                       SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_CTRL,
-                               ("PNMI: ERR: SkPnmiEvent: SK_PNMI_EVT_SEN_WAR_LOW parameter wrong, SensorIndex=%d\n",
-                               (unsigned int)Param.Para64));
-                       return (0);
-               }
-#endif
-               /*
-                * Store a trap message in the trap buffer and generate
-                * an event for user space applications with the
-                * SK_DRIVER_SENDEVENT macro.
-                */
-               QueueSensorTrap(pAC, OID_SKGE_TRAP_SEN_WAR_LOW,
-                       (unsigned int)Param.Para64);
-               (void)SK_DRIVER_SENDEVENT(pAC, IoC);
-               break;
-
-       case SK_PNMI_EVT_SEN_WAR_UPP:
-#ifdef DEBUG
-               if ((unsigned int)Param.Para64 >= (unsigned int)pAC->I2c.MaxSens) {
-
-                       SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_CTRL,
-                               ("PNMI: ERR:SkPnmiEvent: SK_PNMI_EVT_SEN_WAR_UPP parameter wrong, SensorIndex=%d\n",
-                               (unsigned int)Param.Para64));
-                       return (0);
-               }
-#endif
-               /*
-                * Store a trap message in the trap buffer and generate
-                * an event for user space applications with the
-                * SK_DRIVER_SENDEVENT macro.
-                */
-               QueueSensorTrap(pAC, OID_SKGE_TRAP_SEN_WAR_UPP,
-                       (unsigned int)Param.Para64);
-               (void)SK_DRIVER_SENDEVENT(pAC, IoC);
-               break;
-
-       case SK_PNMI_EVT_SEN_ERR_LOW:
-#ifdef DEBUG
-               if ((unsigned int)Param.Para64 >= (unsigned int)pAC->I2c.MaxSens) {
-
-                       SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_CTRL,
-                               ("PNMI: ERR: SkPnmiEvent: SK_PNMI_EVT_SEN_ERR_LOW parameter wrong, SensorIndex=%d\n",
-                               (unsigned int)Param.Para64));
-                       return (0);
-               }
-#endif
-               /*
-                * Store a trap message in the trap buffer and generate
-                * an event for user space applications with the
-                * SK_DRIVER_SENDEVENT macro.
-                */
-               QueueSensorTrap(pAC, OID_SKGE_TRAP_SEN_ERR_LOW,
-                       (unsigned int)Param.Para64);
-               (void)SK_DRIVER_SENDEVENT(pAC, IoC);
-               break;
-
-       case SK_PNMI_EVT_SEN_ERR_UPP:
-#ifdef DEBUG
-               if ((unsigned int)Param.Para64 >= (unsigned int)pAC->I2c.MaxSens) {
-
-                       SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_CTRL,
-                               ("PNMI: ERR: SkPnmiEvent: SK_PNMI_EVT_SEN_ERR_UPP parameter wrong, SensorIndex=%d\n",
-                               (unsigned int)Param.Para64));
-                       return (0);
-               }
-#endif
-               /*
-                * Store a trap message in the trap buffer and generate
-                * an event for user space applications with the
-                * SK_DRIVER_SENDEVENT macro.
-                */
-               QueueSensorTrap(pAC, OID_SKGE_TRAP_SEN_ERR_UPP,
-                       (unsigned int)Param.Para64);
-               (void)SK_DRIVER_SENDEVENT(pAC, IoC);
-               break;
-
-       case SK_PNMI_EVT_CHG_EST_TIMER:
-               /*
-                * Calculate port switch average on a per hour basis
-                *   Time interval for check       : 28125 ms
-                *   Number of values for average  : 8
-                *
-                * Be careful in changing these values, on change check
-                *   - typedef of SK_PNMI_ESTIMATE (Size of EstValue
-                *     array one less than value number)
-                *   - Timer initilization SkTimerStart() in SkPnmiInit
-                *   - Delta value below must be multiplicated with
-                *     power of 2
-                *
-                */
-               pEst = &pAC->Pnmi.RlmtChangeEstimate;
-               CounterIndex = pEst->EstValueIndex + 1;
-               if (CounterIndex == 7) {
-
-                       CounterIndex = 0;
-               }
-               pEst->EstValueIndex = CounterIndex;
-
-               NewestValue = pAC->Pnmi.RlmtChangeCts;
-               OldestValue = pEst->EstValue[CounterIndex];
-               pEst->EstValue[CounterIndex] = NewestValue;
-
-               /*
-                * Calculate average. Delta stores the number of
-                * port switches per 28125 * 8 = 225000 ms
-                */
-               if (NewestValue >= OldestValue) {
-
-                       Delta = NewestValue - OldestValue;
-               }
-               else {
-                       /* Overflow situation */
-                       Delta = (SK_U64)(0 - OldestValue) + NewestValue;
-               }
-
-               /*
-                * Extrapolate delta to port switches per hour.
-                *     Estimate = Delta * (3600000 / 225000)
-                *              = Delta * 16
-                *              = Delta << 4
-                */
-               pAC->Pnmi.RlmtChangeEstimate.Estimate = Delta << 4;
-
-               /*
-                * Check if threshold is exceeded. If the threshold is
-                * permanently exceeded every 28125 ms an event will be
-                * generated to remind the user of this condition.
-                */
-               if ((pAC->Pnmi.RlmtChangeThreshold != 0) &&
-                       (pAC->Pnmi.RlmtChangeEstimate.Estimate >=
-                       pAC->Pnmi.RlmtChangeThreshold)) {
-
-                       QueueSimpleTrap(pAC, OID_SKGE_TRAP_RLMT_CHANGE_THRES);
-                       (void)SK_DRIVER_SENDEVENT(pAC, IoC);
-               }
-
-               SK_MEMSET((char *) &EventParam, 0, sizeof(EventParam));
-               SkTimerStart(pAC, IoC, &pAC->Pnmi.RlmtChangeEstimate.EstTimer,
-                       28125000, SKGE_PNMI, SK_PNMI_EVT_CHG_EST_TIMER,
-                       EventParam);
-               break;
-
-       case SK_PNMI_EVT_CLEAR_COUNTER:
-               /*
-                *  Param.Para32[0] contains the NetIndex (0 ..1).
-                *  Param.Para32[1] is reserved, contains -1.
-                */
-               NetIndex = (SK_U32)Param.Para32[0];
-
-#ifdef DEBUG
-               if (NetIndex >= pAC->Rlmt.NumNets) {
-
-                       SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_CTRL,
-                               ("PNMI: ERR: SkPnmiEvent: SK_PNMI_EVT_CLEAR_COUNTER parameter wrong, NetIndex=%d\n",
-                               NetIndex));
-
-                       return (0);
-               }
-#endif
-
-               /*
-                * Set all counters and timestamps to zero
-                */
-               ResetCounter(pAC, IoC, NetIndex); /* the according NetIndex is required
-                                                                                               as a Parameter of the Event */
-               break;
-
-       case SK_PNMI_EVT_XMAC_RESET:
-               /*
-                * To grant continuous counter values store the current
-                * XMAC statistic values to the entries 1..n of the
-                * CounterOffset array. XMAC Errata #2
-                */
-#ifdef DEBUG
-               if ((unsigned int)Param.Para64 >= SK_MAX_MACS) {
-
-                       SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_CTRL,
-                               ("PNMI: ERR: SkPnmiEvent: SK_PNMI_EVT_XMAC_RESET parameter wrong, PhysPortIndex=%d\n",
-                               (unsigned int)Param.Para64));
-                       return (0);
-               }
-#endif
-               PhysPortIndex = (unsigned int)Param.Para64;
-
-               /*
-                * Update XMAC statistic to get fresh values
-                */
-               Ret = MacUpdate(pAC, IoC, 0, pAC->GIni.GIMacsFound - 1);
-               if (Ret != SK_PNMI_ERR_OK) {
-
-                       SK_PNMI_CHECKFLAGS("SkPnmiEvent: On return");
-                       return (0);
-               }
-               /*
-                * Increment semaphore to indicate that an update was
-                * already done
-                */
-               pAC->Pnmi.MacUpdatedFlag ++;
-
-               for (CounterIndex = 0; CounterIndex < SK_PNMI_MAX_IDX;
-                       CounterIndex ++) {
-
-                       if (!StatAddr[CounterIndex][MacType].GetOffset) {
-
-                               continue;
-                       }
-
-                       pAC->Pnmi.Port[PhysPortIndex].
-                               CounterOffset[CounterIndex] = GetPhysStatVal(
-                               pAC, IoC, PhysPortIndex, CounterIndex);
-                       pAC->Pnmi.Port[PhysPortIndex].
-                               CounterHigh[CounterIndex] = 0;
-               }
-
-               pAC->Pnmi.MacUpdatedFlag --;
-               break;
-
-       case SK_PNMI_EVT_RLMT_PORT_UP:
-               PhysPortIndex = (unsigned int)Param.Para32[0];
-#ifdef DEBUG
-               if (PhysPortIndex >= SK_MAX_MACS) {
-
-                       SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_CTRL,
-                               ("PNMI: ERR: SkPnmiEvent: SK_PNMI_EVT_RLMT_PORT_UP parameter"
-                " wrong, PhysPortIndex=%d\n", PhysPortIndex));
-
-                       return (0);
-               }
-#endif
-               /*
-                * Store a trap message in the trap buffer and generate an event for
-                * user space applications with the SK_DRIVER_SENDEVENT macro.
-                */
-               QueueRlmtPortTrap(pAC, OID_SKGE_TRAP_RLMT_PORT_UP, PhysPortIndex);
-               (void)SK_DRIVER_SENDEVENT(pAC, IoC);
-
-               /* Bugfix for XMAC errata (#10620)*/
-               if (pAC->GIni.GIMacType == SK_MAC_XMAC){
-
-                       /* Add incremental difference to offset (#10620)*/
-                       (void)pAC->GIni.GIFunc.pFnMacStatistic(pAC, IoC, PhysPortIndex,
-                               XM_RXE_SHT_ERR, &Val32);
-
-                       Value = (((SK_U64)pAC->Pnmi.Port[PhysPortIndex].
-                                CounterHigh[SK_PNMI_HRX_SHORTS] << 32) | (SK_U64)Val32);
-                       pAC->Pnmi.Port[PhysPortIndex].CounterOffset[SK_PNMI_HRX_SHORTS] +=
-                               Value - pAC->Pnmi.Port[PhysPortIndex].RxShortZeroMark;
-               }
-
-               /* Tell VctStatus() that a link was up meanwhile. */
-               pAC->Pnmi.VctStatus[PhysPortIndex] |= SK_PNMI_VCT_LINK;
-               break;
-
-    case SK_PNMI_EVT_RLMT_PORT_DOWN:
-               PhysPortIndex = (unsigned int)Param.Para32[0];
-
-#ifdef DEBUG
-               if (PhysPortIndex >= SK_MAX_MACS) {
-
-                       SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_CTRL,
-                               ("PNMI: ERR: SkPnmiEvent: SK_PNMI_EVT_RLMT_PORT_DOWN parameter"
-                " wrong, PhysPortIndex=%d\n", PhysPortIndex));
-
-                       return (0);
-               }
-#endif
-               /*
-                * Store a trap message in the trap buffer and generate an event for
-                * user space applications with the SK_DRIVER_SENDEVENT macro.
-                */
-               QueueRlmtPortTrap(pAC, OID_SKGE_TRAP_RLMT_PORT_DOWN, PhysPortIndex);
-               (void)SK_DRIVER_SENDEVENT(pAC, IoC);
-
-               /* Bugfix #10620 - get zero level for incremental difference */
-               if ((pAC->GIni.GIMacType == SK_MAC_XMAC)) {
-
-                       (void)pAC->GIni.GIFunc.pFnMacStatistic(pAC, IoC, PhysPortIndex,
-                               XM_RXE_SHT_ERR, &Val32);
-                       pAC->Pnmi.Port[PhysPortIndex].RxShortZeroMark =
-                               (((SK_U64)pAC->Pnmi.Port[PhysPortIndex].
-                                CounterHigh[SK_PNMI_HRX_SHORTS] << 32) | (SK_U64)Val32);
-               }
-               break;
-
-       case SK_PNMI_EVT_RLMT_ACTIVE_DOWN:
-               PhysPortIndex = (unsigned int)Param.Para32[0];
-               NetIndex = (SK_U32)Param.Para32[1];
-
-#ifdef DEBUG
-               if (PhysPortIndex >= SK_MAX_MACS) {
-
-                       SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_CTRL,
-                               ("PNMI: ERR: SkPnmiEvent: SK_PNMI_EVT_RLMT_ACTIVE_DOWN parameter too high, PhysPort=%d\n",
-                               PhysPortIndex));
-               }
-
-               if (NetIndex >= pAC->Rlmt.NumNets) {
-
-                       SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_CTRL,
-                               ("PNMI: ERR: SkPnmiEvent: SK_PNMI_EVT_RLMT_ACTIVE_DOWN parameter too high, NetIndex=%d\n",
-                               NetIndex));
-               }
-#endif
-               /*
-                * For now, ignore event if NetIndex != 0.
-                */
-               if (Param.Para32[1] != 0) {
-
-                       return (0);
-               }
-
-               /*
-                * Nothing to do if port is already inactive
-                */
-               if (!pAC->Pnmi.Port[PhysPortIndex].ActiveFlag) {
-
-                       return (0);
-               }
-
-               /*
-                * Update statistic counters to calculate new offset for the virtual
-                * port and increment semaphore to indicate that an update was already
-                * done.
-                */
-               if (MacUpdate(pAC, IoC, 0, pAC->GIni.GIMacsFound - 1) !=
-                       SK_PNMI_ERR_OK) {
-
-                       SK_PNMI_CHECKFLAGS("SkPnmiEvent: On return");
-                       return (0);
-               }
-               pAC->Pnmi.MacUpdatedFlag ++;
-
-               /*
-                * Calculate new counter offset for virtual port to grant continous
-                * counting on port switches. The virtual port consists of all currently
-                * active ports. The port down event indicates that a port is removed
-                * from the virtual port. Therefore add the counter value of the removed
-                * port to the CounterOffset for the virtual port to grant the same
-                * counter value.
-                */
-               for (CounterIndex = 0; CounterIndex < SK_PNMI_MAX_IDX;
-                       CounterIndex ++) {
-
-                       if (!StatAddr[CounterIndex][MacType].GetOffset) {
-
-                               continue;
-                       }
-
-                       Value = GetPhysStatVal(pAC, IoC, PhysPortIndex, CounterIndex);
-
-                       pAC->Pnmi.VirtualCounterOffset[CounterIndex] += Value;
-               }
-
-               /*
-                * Set port to inactive
-                */
-               pAC->Pnmi.Port[PhysPortIndex].ActiveFlag = SK_FALSE;
-
-               pAC->Pnmi.MacUpdatedFlag --;
-               break;
-
-       case SK_PNMI_EVT_RLMT_ACTIVE_UP:
-               PhysPortIndex = (unsigned int)Param.Para32[0];
-               NetIndex = (SK_U32)Param.Para32[1];
-
-#ifdef DEBUG
-               if (PhysPortIndex >= SK_MAX_MACS) {
-
-                       SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_CTRL,
-                               ("PNMI: ERR: SkPnmiEvent: SK_PNMI_EVT_RLMT_ACTIVE_UP parameter too high, PhysPort=%d\n",
-                               PhysPortIndex));
-               }
-
-               if (NetIndex >= pAC->Rlmt.NumNets) {
-
-                       SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_CTRL,
-                               ("PNMI: ERR: SkPnmiEvent: SK_PNMI_EVT_RLMT_ACTIVE_UP parameter too high, NetIndex=%d\n",
-                               NetIndex));
-               }
-#endif
-               /*
-                * For now, ignore event if NetIndex != 0.
-                */
-               if (Param.Para32[1] != 0) {
-
-                       return (0);
-               }
-
-               /*
-                * Nothing to do if port is already active
-                */
-               if (pAC->Pnmi.Port[PhysPortIndex].ActiveFlag) {
-
-                       return (0);
-               }
-
-               /*
-                * Statistic maintenance
-                */
-               pAC->Pnmi.RlmtChangeCts ++;
-               pAC->Pnmi.RlmtChangeTime = SK_PNMI_HUNDREDS_SEC(SkOsGetTime(pAC));
-
-               /*
-                * Store a trap message in the trap buffer and generate an event for
-                * user space applications with the SK_DRIVER_SENDEVENT macro.
-                */
-               QueueRlmtNewMacTrap(pAC, PhysPortIndex);
-               (void)SK_DRIVER_SENDEVENT(pAC, IoC);
-
-               /*
-                * Update statistic counters to calculate new offset for the virtual
-                * port and increment semaphore to indicate that an update was
-                * already done.
-                */
-               if (MacUpdate(pAC, IoC, 0, pAC->GIni.GIMacsFound - 1) !=
-                       SK_PNMI_ERR_OK) {
-
-                       SK_PNMI_CHECKFLAGS("SkPnmiEvent: On return");
-                       return (0);
-               }
-               pAC->Pnmi.MacUpdatedFlag ++;
-
-               /*
-                * Calculate new counter offset for virtual port to grant continous
-                * counting on port switches. A new port is added to the virtual port.
-                * Therefore substract the counter value of the new port from the
-                * CounterOffset for the virtual port to grant the same value.
-                */
-               for (CounterIndex = 0; CounterIndex < SK_PNMI_MAX_IDX;
-                       CounterIndex ++) {
-
-                       if (!StatAddr[CounterIndex][MacType].GetOffset) {
-
-                               continue;
-                       }
-
-                       Value = GetPhysStatVal(pAC, IoC, PhysPortIndex, CounterIndex);
-
-                       pAC->Pnmi.VirtualCounterOffset[CounterIndex] -= Value;
-               }
-
-               /*
-                * Set port to active
-                */
-               pAC->Pnmi.Port[PhysPortIndex].ActiveFlag = SK_TRUE;
-
-               pAC->Pnmi.MacUpdatedFlag --;
-               break;
-
-       case SK_PNMI_EVT_RLMT_SEGMENTATION:
-               /*
-                * Para.Para32[0] contains the NetIndex.
-                */
-
-               /*
-                * Store a trap message in the trap buffer and generate an event for
-                * user space applications with the SK_DRIVER_SENDEVENT macro.
-                */
-               QueueSimpleTrap(pAC, OID_SKGE_TRAP_RLMT_SEGMENTATION);
-               (void)SK_DRIVER_SENDEVENT(pAC, IoC);
-               break;
-
-    case SK_PNMI_EVT_RLMT_SET_NETS:
-               /*
-                *  Param.Para32[0] contains the number of Nets.
-                *  Param.Para32[1] is reserved, contains -1.
-                */
-           /*
-        * Check number of nets
-                */
-               MaxNetNumber = pAC->GIni.GIMacsFound;
-               if (((unsigned int)Param.Para32[0] < 1)
-                       || ((unsigned int)Param.Para32[0] > MaxNetNumber)) {
-                       return (SK_PNMI_ERR_UNKNOWN_NET);
-               }
-
-       if ((unsigned int)Param.Para32[0] == 1) { /* single net mode */
-               pAC->Pnmi.DualNetActiveFlag = SK_FALSE;
-       }
-       else { /* dual net mode */
-               pAC->Pnmi.DualNetActiveFlag = SK_TRUE;
-       }
-       break;
-
-    case SK_PNMI_EVT_VCT_RESET:
-       PhysPortIndex = Param.Para32[0];
-       pPrt = &pAC->GIni.GP[PhysPortIndex];
-       pVctBackupData = &pAC->Pnmi.VctBackup[PhysPortIndex];
-
-       if (pAC->Pnmi.VctStatus[PhysPortIndex] & SK_PNMI_VCT_PENDING) {
-               RetCode = SkGmCableDiagStatus(pAC, IoC, PhysPortIndex, SK_FALSE);
-               if (RetCode == 2) {
-                       /*
-                        * VCT test is still running.
-                        * Start VCT timer counter again.
-                        */
-                       SK_MEMSET((char *) &Param, 0, sizeof(Param));
-                       Param.Para32[0] = PhysPortIndex;
-                       Param.Para32[1] = -1;
-                       SkTimerStart(pAC, IoC, &pAC->Pnmi.VctTimeout[PhysPortIndex].VctTimer,
-                               4000000, SKGE_PNMI, SK_PNMI_EVT_VCT_RESET, Param);
-                       break;
-               }
-               pAC->Pnmi.VctStatus[PhysPortIndex] &= ~SK_PNMI_VCT_PENDING;
-               pAC->Pnmi.VctStatus[PhysPortIndex] |=
-                       (SK_PNMI_VCT_NEW_VCT_DATA | SK_PNMI_VCT_TEST_DONE);
-
-               /* Copy results for later use to PNMI struct. */
-               for (i = 0; i < 4; i++)  {
-                       if (pPrt->PMdiPairLen[i] > 35) {
-                               CableLength = 1000 * (((175 * pPrt->PMdiPairLen[i]) / 210) - 28);
-                       }
-                       else {
-                               CableLength = 0;
-                       }
-                       pVctBackupData->PMdiPairLen[i] = CableLength;
-                       pVctBackupData->PMdiPairSts[i] = pPrt->PMdiPairSts[i];
-               }
-
-               Param.Para32[0] = PhysPortIndex;
-               Param.Para32[1] = -1;
-               SkEventQueue(pAC, SKGE_DRV, SK_DRV_PORT_RESET, Param);
-               SkEventDispatcher(pAC, IoC);
-       }
-
-       break;
-
-       default:
-               break;
-       }
-
-       SK_PNMI_CHECKFLAGS("SkPnmiEvent: On return");
-       return (0);
-}
-
-
-/******************************************************************************
- *
- * Private functions
- *
- */
-
-/*****************************************************************************
- *
- * PnmiVar - Gets, presets, and sets single OIDs
- *
- * Description:
- *     Looks up the requested OID, calls the corresponding handler
- *     function, and passes the parameters with the get, preset, or
- *     set command. The function is called by SkGePnmiGetVar,
- *     SkGePnmiPreSetVar, or SkGePnmiSetVar.
- *
- * Returns:
- *     SK_PNMI_ERR_XXX. For details have a look to the description of the
- *     calling functions.
- *     SK_PNMI_ERR_UNKNOWN_NET  The requested NetIndex doesn't exist
- */
-PNMI_STATIC int PnmiVar(
-SK_AC *pAC,            /* Pointer to adapter context */
-SK_IOC IoC,            /* IO context handle */
-int Action,            /* Get/PreSet/Set action */
-SK_U32 Id,             /* Object ID that is to be processed */
-char *pBuf,            /* Buffer which stores the mgmt data to be set */
-unsigned int *pLen,    /* Total length of mgmt data */
-SK_U32 Instance,       /* Instance (1..n) that is to be set or -1 */
-SK_U32 NetIndex)       /* NetIndex (0..n), in single net mode allways zero */
-{
-       unsigned int    TableIndex;
-       int             Ret;
-
-
-       if ((TableIndex = LookupId(Id)) == (unsigned int)(-1)) {
-
-               *pLen = 0;
-               return (SK_PNMI_ERR_UNKNOWN_OID);
-       }
-
-    /*
-     * Check NetIndex
-     */
-       if (NetIndex >= pAC->Rlmt.NumNets) {
-               return (SK_PNMI_ERR_UNKNOWN_NET);
-       }
-
-       SK_PNMI_CHECKFLAGS("PnmiVar: On call");
-
-       Ret = IdTable[TableIndex].Func(pAC, IoC, Action, Id, pBuf, pLen,
-               Instance, TableIndex, NetIndex);
-
-       SK_PNMI_CHECKFLAGS("PnmiVar: On return");
-
-       return (Ret);
-}
-
-/*****************************************************************************
- *
- * PnmiStruct - Presets and Sets data in structure SK_PNMI_STRUCT_DATA
- *
- * Description:
- *     The return value of the function will also be stored in
- *     SK_PNMI_STRUCT_DATA if the passed buffer has the minimum size of
- *     SK_PNMI_MIN_STRUCT_SIZE. The sub-function runs through the IdTable,
- *     checks which OIDs are able to set, and calls the handler function of
- *     the OID to perform the set. The return value of the function will
- *     also be stored in SK_PNMI_STRUCT_DATA if the passed buffer has the
- *     minimum size of SK_PNMI_MIN_STRUCT_SIZE. The function is called
- *     by SkGePnmiPreSetStruct and SkGePnmiSetStruct.
- *
- * Returns:
- *     SK_PNMI_ERR_XXX. The codes are described in the calling functions.
- *     SK_PNMI_ERR_UNKNOWN_NET  The requested NetIndex doesn't exist
- */
-PNMI_STATIC int PnmiStruct(
-SK_AC *pAC,            /* Pointer to adapter context */
-SK_IOC IoC,            /* IO context handle */
-int  Action,           /* Set action to be performed */
-char *pBuf,            /* Buffer which contains the data to be set */
-unsigned int *pLen,    /* Length of buffer */
-SK_U32 NetIndex)       /* NetIndex (0..n), in single net mode allways zero */
-{
-       int             Ret;
-       unsigned int    TableIndex;
-       unsigned int    DstOffset;
-       unsigned int    Len;
-       unsigned int    InstanceNo;
-       unsigned int    InstanceCnt;
-       SK_U32          Instance;
-       SK_U32          Id;
-
-
-       /* Check if the passed buffer has the right size */
-       if (*pLen < SK_PNMI_STRUCT_SIZE) {
-
-               /* Check if we can return the error within the buffer */
-               if (*pLen >= SK_PNMI_MIN_STRUCT_SIZE) {
-
-                       SK_PNMI_SET_STAT(pBuf, SK_PNMI_ERR_TOO_SHORT,
-                               (SK_U32)(-1));
-               }
-
-               *pLen = SK_PNMI_STRUCT_SIZE;
-               return (SK_PNMI_ERR_TOO_SHORT);
-       }
-
-    /*
-     * Check NetIndex
-     */
-       if (NetIndex >= pAC->Rlmt.NumNets) {
-               return (SK_PNMI_ERR_UNKNOWN_NET);
-       }
-
-       SK_PNMI_CHECKFLAGS("PnmiStruct: On call");
-
-       /*
-        * Update the values of RLMT and SIRQ and increment semaphores to
-        * indicate that an update was already done.
-        */
-       if ((Ret = RlmtUpdate(pAC, IoC, NetIndex)) != SK_PNMI_ERR_OK) {
-
-               SK_PNMI_SET_STAT(pBuf, Ret, (SK_U32)(-1));
-               *pLen = SK_PNMI_MIN_STRUCT_SIZE;
-               return (Ret);
-       }
-
-       if ((Ret = SirqUpdate(pAC, IoC)) != SK_PNMI_ERR_OK) {
-
-               SK_PNMI_SET_STAT(pBuf, Ret, (SK_U32)(-1));
-               *pLen = SK_PNMI_MIN_STRUCT_SIZE;
-               return (Ret);
-       }
-
-       pAC->Pnmi.RlmtUpdatedFlag ++;
-       pAC->Pnmi.SirqUpdatedFlag ++;
-
-       /* Preset/Set values */
-       for (TableIndex = 0; TableIndex < ID_TABLE_SIZE; TableIndex ++) {
-
-               if ((IdTable[TableIndex].Access != SK_PNMI_RW) &&
-                       (IdTable[TableIndex].Access != SK_PNMI_WO)) {
-
-                       continue;
-               }
-
-               InstanceNo = IdTable[TableIndex].InstanceNo;
-               Id = IdTable[TableIndex].Id;
-
-               for (InstanceCnt = 1; InstanceCnt <= InstanceNo;
-                       InstanceCnt ++) {
-
-                       DstOffset = IdTable[TableIndex].Offset +
-                               (InstanceCnt - 1) *
-                               IdTable[TableIndex].StructSize;
-
-                       /*
-                        * Because VPD multiple instance variables are
-                        * not setable we do not need to evaluate VPD
-                        * instances. Have a look to VPD instance
-                        * calculation in SkPnmiGetStruct().
-                        */
-                       Instance = (SK_U32)InstanceCnt;
-
-                       /*
-                        * Evaluate needed buffer length
-                        */
-                       Len = 0;
-                       Ret = IdTable[TableIndex].Func(pAC, IoC,
-                               SK_PNMI_GET, IdTable[TableIndex].Id,
-                               NULL, &Len, Instance, TableIndex, NetIndex);
-
-                       if (Ret == SK_PNMI_ERR_UNKNOWN_INST) {
-
-                               break;
-                       }
-                       if (Ret != SK_PNMI_ERR_TOO_SHORT) {
-
-                               pAC->Pnmi.RlmtUpdatedFlag --;
-                               pAC->Pnmi.SirqUpdatedFlag --;
-
-                               SK_PNMI_CHECKFLAGS("PnmiStruct: On return");
-                               SK_PNMI_SET_STAT(pBuf,
-                                       SK_PNMI_ERR_GENERAL, DstOffset);
-                               *pLen = SK_PNMI_MIN_STRUCT_SIZE;
-                               return (SK_PNMI_ERR_GENERAL);
-                       }
-                       if (Id == OID_SKGE_VPD_ACTION) {
-
-                               switch (*(pBuf + DstOffset)) {
-
-                               case SK_PNMI_VPD_CREATE:
-                                       Len = 3 + *(pBuf + DstOffset + 3);
-                                       break;
-
-                               case SK_PNMI_VPD_DELETE:
-                                       Len = 3;
-                                       break;
-
-                               default:
-                                       Len = 1;
-                                       break;
-                               }
-                       }
-
-                       /* Call the OID handler function */
-                       Ret = IdTable[TableIndex].Func(pAC, IoC, Action,
-                               IdTable[TableIndex].Id, pBuf + DstOffset,
-                               &Len, Instance, TableIndex, NetIndex);
-
-                       if (Ret != SK_PNMI_ERR_OK) {
-
-                               pAC->Pnmi.RlmtUpdatedFlag --;
-                               pAC->Pnmi.SirqUpdatedFlag --;
-
-                               SK_PNMI_CHECKFLAGS("PnmiStruct: On return");
-                               SK_PNMI_SET_STAT(pBuf, SK_PNMI_ERR_BAD_VALUE,
-                                       DstOffset);
-                               *pLen = SK_PNMI_MIN_STRUCT_SIZE;
-                               return (SK_PNMI_ERR_BAD_VALUE);
-                       }
-               }
-       }
-
-       pAC->Pnmi.RlmtUpdatedFlag --;
-       pAC->Pnmi.SirqUpdatedFlag --;
-
-       SK_PNMI_CHECKFLAGS("PnmiStruct: On return");
-       SK_PNMI_SET_STAT(pBuf, SK_PNMI_ERR_OK, (SK_U32)(-1));
-       return (SK_PNMI_ERR_OK);
-}
-
-/*****************************************************************************
- *
- * LookupId - Lookup an OID in the IdTable
- *
- * Description:
- *     Scans the IdTable to find the table entry of an OID.
- *
- * Returns:
- *     The table index or -1 if not found.
- */
-PNMI_STATIC int LookupId(
-SK_U32 Id)             /* Object identifier to be searched */
-{
-       int i;
-
-       for (i = 0; i < ID_TABLE_SIZE; i++) {
-
-               if (IdTable[i].Id == Id) {
-
-                       return i;
-               }
-       }
-
-       return (-1);
-}
-
-/*****************************************************************************
- *
- * OidStruct - Handler of OID_SKGE_ALL_DATA
- *
- * Description:
- *     This OID performs a Get/Preset/SetStruct call and returns all data
- *     in a SK_PNMI_STRUCT_DATA structure.
- *
- * Returns:
- *     SK_PNMI_ERR_OK           The request was successfully performed.
- *     SK_PNMI_ERR_GENERAL      A general severe internal error occured.
- *     SK_PNMI_ERR_TOO_SHORT    The passed buffer is too short to contain
- *                              the correct data (e.g. a 32bit value is
- *                              needed, but a 16 bit value was passed).
- *     SK_PNMI_ERR_BAD_VALUE    The passed value is not in the valid
- *                              value range.
- *     SK_PNMI_ERR_READ_ONLY    The OID is read-only and cannot be set.
- *     SK_PNMI_ERR_UNKNOWN_INST The requested instance of the OID doesn't
- *                               exist (e.g. port instance 3 on a two port
- *                              adapter.
- */
-PNMI_STATIC int OidStruct(
-SK_AC *pAC,            /* Pointer to adapter context */
-SK_IOC IoC,            /* IO context handle */
-int Action,            /* Get/PreSet/Set action */
-SK_U32 Id,             /* Object ID that is to be processed */
-char *pBuf,            /* Buffer to which to mgmt data will be retrieved */
-unsigned int *pLen,    /* On call: buffer length. On return: used buffer */
-SK_U32 Instance,       /* Instance (1..n) that is to be queried or -1 */
-unsigned int TableIndex, /* Index to the Id table */
-SK_U32 NetIndex)       /* NetIndex (0..n), in single net mode allways zero */
-{
-       if (Id != OID_SKGE_ALL_DATA) {
-
-               SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR003,
-                       SK_PNMI_ERR003MSG);
-
-               *pLen = 0;
-               return (SK_PNMI_ERR_GENERAL);
-       }
-
-       /*
-        * Check instance. We only handle single instance variables
-        */
-       if (Instance != (SK_U32)(-1) && Instance != 1) {
-
-               *pLen = 0;
-               return (SK_PNMI_ERR_UNKNOWN_INST);
-       }
-
-       switch (Action) {
-
-       case SK_PNMI_GET:
-               return (SkPnmiGetStruct(pAC, IoC, pBuf, pLen, NetIndex));
-
-       case SK_PNMI_PRESET:
-               return (SkPnmiPreSetStruct(pAC, IoC, pBuf, pLen, NetIndex));
-
-       case SK_PNMI_SET:
-               return (SkPnmiSetStruct(pAC, IoC, pBuf, pLen, NetIndex));
-       }
-
-       SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR004, SK_PNMI_ERR004MSG);
-
-       *pLen = 0;
-       return (SK_PNMI_ERR_GENERAL);
-}
-
-/*****************************************************************************
- *
- * Perform - OID handler of OID_SKGE_ACTION
- *
- * Description:
- *     None.
- *
- * Returns:
- *     SK_PNMI_ERR_OK           The request was successfully performed.
- *     SK_PNMI_ERR_GENERAL      A general severe internal error occured.
- *     SK_PNMI_ERR_TOO_SHORT    The passed buffer is too short to contain
- *                              the correct data (e.g. a 32bit value is
- *                              needed, but a 16 bit value was passed).
- *     SK_PNMI_ERR_BAD_VALUE    The passed value is not in the valid
- *                              value range.
- *     SK_PNMI_ERR_READ_ONLY    The OID is read-only and cannot be set.
- *     SK_PNMI_ERR_UNKNOWN_INST The requested instance of the OID doesn't
- *                               exist (e.g. port instance 3 on a two port
- *                              adapter.
- */
-PNMI_STATIC int Perform(
-SK_AC *pAC,            /* Pointer to adapter context */
-SK_IOC IoC,            /* IO context handle */
-int Action,            /* Get/PreSet/Set action */
-SK_U32 Id,             /* Object ID that is to be processed */
-char *pBuf,            /* Buffer to which to mgmt data will be retrieved */
-unsigned int *pLen,    /* On call: buffer length. On return: used buffer */
-SK_U32 Instance,       /* Instance (1..n) that is to be queried or -1 */
-unsigned int TableIndex, /* Index to the Id table */
-SK_U32 NetIndex)       /* NetIndex (0..n), in single net mode allways zero */
-{
-       int     Ret;
-       SK_U32  ActionOp;
-
-
-       /*
-        * Check instance. We only handle single instance variables
-        */
-       if (Instance != (SK_U32)(-1) && Instance != 1) {
-
-               *pLen = 0;
-               return (SK_PNMI_ERR_UNKNOWN_INST);
-       }
-
-       if (*pLen < sizeof(SK_U32)) {
-
-               *pLen = sizeof(SK_U32);
-               return (SK_PNMI_ERR_TOO_SHORT);
-       }
-
-       /* Check if a get should be performed */
-       if (Action == SK_PNMI_GET) {
-
-               /* A get is easy. We always return the same value */
-               ActionOp = (SK_U32)SK_PNMI_ACT_IDLE;
-               SK_PNMI_STORE_U32(pBuf, ActionOp);
-               *pLen = sizeof(SK_U32);
-
-               return (SK_PNMI_ERR_OK);
-       }
-
-       /* Continue with PRESET/SET action */
-       if (*pLen > sizeof(SK_U32)) {
-
-               return (SK_PNMI_ERR_BAD_VALUE);
-       }
-
-       /* Check if the command is a known one */
-       SK_PNMI_READ_U32(pBuf, ActionOp);
-       if (*pLen > sizeof(SK_U32) ||
-               (ActionOp != SK_PNMI_ACT_IDLE &&
-               ActionOp != SK_PNMI_ACT_RESET &&
-               ActionOp != SK_PNMI_ACT_SELFTEST &&
-               ActionOp != SK_PNMI_ACT_RESETCNT)) {
-
-               *pLen = 0;
-               return (SK_PNMI_ERR_BAD_VALUE);
-       }
-
-       /* A preset ends here */
-       if (Action == SK_PNMI_PRESET) {
-
-               return (SK_PNMI_ERR_OK);
-       }
-
-       switch (ActionOp) {
-
-       case SK_PNMI_ACT_IDLE:
-               /* Nothing to do */
-               break;
-
-       case SK_PNMI_ACT_RESET:
-               /*
-                * Perform a driver reset or something that comes near
-                * to this.
-                */
-               Ret = SK_DRIVER_RESET(pAC, IoC);
-               if (Ret != 0) {
-
-                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR005,
-                               SK_PNMI_ERR005MSG);
-
-                       return (SK_PNMI_ERR_GENERAL);
-               }
-               break;
-
-       case SK_PNMI_ACT_SELFTEST:
-               /*
-                * Perform a driver selftest or something similar to this.
-                * Currently this feature is not used and will probably
-                * implemented in another way.
-                */
-               Ret = SK_DRIVER_SELFTEST(pAC, IoC);
-               pAC->Pnmi.TestResult = Ret;
-               break;
-
-       case SK_PNMI_ACT_RESETCNT:
-               /* Set all counters and timestamps to zero */
-               ResetCounter(pAC, IoC, NetIndex);
-               break;
-
-       default:
-               SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR006,
-                       SK_PNMI_ERR006MSG);
-
-               return (SK_PNMI_ERR_GENERAL);
-       }
-
-       return (SK_PNMI_ERR_OK);
-}
-
-/*****************************************************************************
- *
- * Mac8023Stat - OID handler of OID_GEN_XXX and OID_802_3_XXX
- *
- * Description:
- *     Retrieves the statistic values of the virtual port (logical
- *     index 0). Only special OIDs of NDIS are handled which consist
- *     of a 32 bit instead of a 64 bit value. The OIDs are public
- *     because perhaps some other platform can use them too.
- *
- * Returns:
- *     SK_PNMI_ERR_OK           The request was successfully performed.
- *     SK_PNMI_ERR_GENERAL      A general severe internal error occured.
- *     SK_PNMI_ERR_TOO_SHORT    The passed buffer is too short to contain
- *                              the correct data (e.g. a 32bit value is
- *                              needed, but a 16 bit value was passed).
- *     SK_PNMI_ERR_UNKNOWN_INST The requested instance of the OID doesn't
- *                               exist (e.g. port instance 3 on a two port
- *                              adapter.
- */
-PNMI_STATIC int Mac8023Stat(
-SK_AC *pAC,            /* Pointer to adapter context */
-SK_IOC IoC,            /* IO context handle */
-int Action,            /* Get/PreSet/Set action */
-SK_U32 Id,             /* Object ID that is to be processed */
-char *pBuf,            /* Buffer to which to mgmt data will be retrieved */
-unsigned int *pLen,    /* On call: buffer length. On return: used buffer */
-SK_U32 Instance,       /* Instance (1..n) that is to be queried or -1 */
-unsigned int TableIndex,       /* Index to the Id table */
-SK_U32 NetIndex)       /* NetIndex (0..n), in single net mode allways zero */
-{
-       int     Ret;
-       SK_U64  StatVal;
-       SK_U32  StatVal32;
-       SK_BOOL Is64BitReq = SK_FALSE;
-
-       /*
-        * Only the active Mac is returned
-        */
-       if (Instance != (SK_U32)(-1) && Instance != 1) {
-
-               *pLen = 0;
-               return (SK_PNMI_ERR_UNKNOWN_INST);
-       }
-
-       /*
-        * Check action type
-        */
-       if (Action != SK_PNMI_GET) {
-
-               *pLen = 0;
-               return (SK_PNMI_ERR_READ_ONLY);
-       }
-
-       /*
-        * Check length
-        */
-       switch (Id) {
-
-       case OID_802_3_PERMANENT_ADDRESS:
-       case OID_802_3_CURRENT_ADDRESS:
-               if (*pLen < sizeof(SK_MAC_ADDR)) {
-
-                       *pLen = sizeof(SK_MAC_ADDR);
-                       return (SK_PNMI_ERR_TOO_SHORT);
-               }
-               break;
-
-       default:
-#ifndef SK_NDIS_64BIT_CTR
-               if (*pLen < sizeof(SK_U32)) {
-                       *pLen = sizeof(SK_U32);
-                       return (SK_PNMI_ERR_TOO_SHORT);
-               }
-
-#else /* SK_NDIS_64BIT_CTR */
-
-               /*
-                * for compatibility, at least 32bit are required for oid
-                */
-               if (*pLen < sizeof(SK_U32)) {
-                       /*
-                       * but indicate handling for 64bit values,
-                       * if insufficient space is provided
-                       */
-                       *pLen = sizeof(SK_U64);
-                       return (SK_PNMI_ERR_TOO_SHORT);
-               }
-
-               Is64BitReq = (*pLen < sizeof(SK_U64)) ? SK_FALSE : SK_TRUE;
-#endif /* SK_NDIS_64BIT_CTR */
-               break;
-       }
-
-       /*
-        * Update all statistics, because we retrieve virtual MAC, which
-        * consists of multiple physical statistics and increment semaphore
-        * to indicate that an update was already done.
-        */
-       Ret = MacUpdate(pAC, IoC, 0, pAC->GIni.GIMacsFound - 1);
-       if ( Ret != SK_PNMI_ERR_OK) {
-
-               *pLen = 0;
-               return (Ret);
-       }
-       pAC->Pnmi.MacUpdatedFlag ++;
-
-       /*
-        * Get value (MAC Index 0 identifies the virtual MAC)
-        */
-       switch (Id) {
-
-       case OID_802_3_PERMANENT_ADDRESS:
-               CopyMac(pBuf, &pAC->Addr.Net[NetIndex].PermanentMacAddress);
-               *pLen = sizeof(SK_MAC_ADDR);
-               break;
-
-       case OID_802_3_CURRENT_ADDRESS:
-               CopyMac(pBuf, &pAC->Addr.Net[NetIndex].CurrentMacAddress);
-               *pLen = sizeof(SK_MAC_ADDR);
-               break;
-
-       default:
-               StatVal = GetStatVal(pAC, IoC, 0, IdTable[TableIndex].Param, NetIndex);
-
-               /*
-                * by default 32bit values are evaluated
-                */
-               if (!Is64BitReq) {
-                       StatVal32 = (SK_U32)StatVal;
-                       SK_PNMI_STORE_U32(pBuf, StatVal32);
-                       *pLen = sizeof(SK_U32);
-               }
-               else {
-                       SK_PNMI_STORE_U64(pBuf, StatVal);
-                       *pLen = sizeof(SK_U64);
-               }
-               break;
-       }
-
-       pAC->Pnmi.MacUpdatedFlag --;
-
-       return (SK_PNMI_ERR_OK);
-}
-
-/*****************************************************************************
- *
- * MacPrivateStat - OID handler function of OID_SKGE_STAT_XXX
- *
- * Description:
- *     Retrieves the XMAC statistic data.
- *
- * Returns:
- *     SK_PNMI_ERR_OK           The request was successfully performed.
- *     SK_PNMI_ERR_GENERAL      A general severe internal error occured.
- *     SK_PNMI_ERR_TOO_SHORT    The passed buffer is too short to contain
- *                              the correct data (e.g. a 32bit value is
- *                              needed, but a 16 bit value was passed).
- *     SK_PNMI_ERR_UNKNOWN_INST The requested instance of the OID doesn't
- *                               exist (e.g. port instance 3 on a two port
- *                              adapter.
- */
-PNMI_STATIC int MacPrivateStat(
-SK_AC *pAC,            /* Pointer to adapter context */
-SK_IOC IoC,            /* IO context handle */
-int Action,            /* Get/PreSet/Set action */
-SK_U32 Id,             /* Object ID that is to be processed */
-char *pBuf,            /* Buffer to which to mgmt data will be retrieved */
-unsigned int *pLen,    /* On call: buffer length. On return: used buffer */
-SK_U32 Instance,       /* Instance (1..n) that is to be queried or -1 */
-unsigned int TableIndex, /* Index to the Id table */
-SK_U32 NetIndex)       /* NetIndex (0..n), in single net mode allways zero */
-{
-       unsigned int    LogPortMax;
-       unsigned int    LogPortIndex;
-       unsigned int    PhysPortMax;
-       unsigned int    Limit;
-       unsigned int    Offset;
-       int                             Ret;
-       SK_U64                  StatVal;
-
-
-       /*
-        * Calculate instance if wished. MAC index 0 is the virtual
-        * MAC.
-        */
-       PhysPortMax = pAC->GIni.GIMacsFound;
-       LogPortMax = SK_PNMI_PORT_PHYS2LOG(PhysPortMax);
-
-       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) { /* Dual net mode */
-               LogPortMax--;
-       }
-
-       if ((Instance != (SK_U32)(-1))) { /* Only one specific instance is queried */
-               /* Check instance range */
-               if ((Instance < 1) || (Instance > LogPortMax)) {
-
-                       *pLen = 0;
-                       return (SK_PNMI_ERR_UNKNOWN_INST);
-               }
-               LogPortIndex = SK_PNMI_PORT_INST2LOG(Instance);
-               Limit = LogPortIndex + 1;
-       }
-
-       else { /* Instance == (SK_U32)(-1), get all Instances of that OID */
-
-               LogPortIndex = 0;
-               Limit = LogPortMax;
-       }
-
-
-       /*
-        * Check action
-        */
-       if (Action != SK_PNMI_GET) {
-
-               *pLen = 0;
-               return (SK_PNMI_ERR_READ_ONLY);
-       }
-
-       /*
-        * Check length
-        */
-       if (*pLen < (Limit - LogPortIndex) * sizeof(SK_U64)) {
-
-               *pLen = (Limit - LogPortIndex) * sizeof(SK_U64);
-               return (SK_PNMI_ERR_TOO_SHORT);
-       }
-
-       /*
-        * Update XMAC statistic and increment semaphore to indicate that
-        * an update was already done.
-        */
-       Ret = MacUpdate(pAC, IoC, 0, pAC->GIni.GIMacsFound - 1);
-       if (Ret != SK_PNMI_ERR_OK) {
-
-               *pLen = 0;
-               return (Ret);
-       }
-       pAC->Pnmi.MacUpdatedFlag ++;
-
-       /*
-        * Get value
-        */
-       Offset = 0;
-       for (; LogPortIndex < Limit; LogPortIndex ++) {
-
-               switch (Id) {
-
-/* XXX not yet implemented due to XMAC problems
-               case OID_SKGE_STAT_TX_UTIL:
-                       return (SK_PNMI_ERR_GENERAL);
-*/
-/* XXX not yet implemented due to XMAC problems
-               case OID_SKGE_STAT_RX_UTIL:
-                       return (SK_PNMI_ERR_GENERAL);
-*/
-               case OID_SKGE_STAT_RX:
-               case OID_SKGE_STAT_TX:
-                       switch (pAC->GIni.GIMacType) {
-                       case SK_MAC_XMAC:
-                               StatVal = GetStatVal(pAC, IoC, LogPortIndex,
-                                       IdTable[TableIndex].Param, NetIndex);
-                               break;
-
-                       case SK_MAC_GMAC:
-                               if (Id == OID_SKGE_STAT_TX) {
-
-                                       StatVal =
-                                               GetStatVal(pAC, IoC, LogPortIndex,
-                                                                  SK_PNMI_HTX_BROADCAST, NetIndex) +
-                                               GetStatVal(pAC, IoC, LogPortIndex,
-                                                                  SK_PNMI_HTX_MULTICAST, NetIndex) +
-                                               GetStatVal(pAC, IoC, LogPortIndex,
-                                                                  SK_PNMI_HTX_UNICAST, NetIndex);
-                               }
-                               else {
-                                       StatVal =
-                                               GetStatVal(pAC, IoC, LogPortIndex,
-                                                                  SK_PNMI_HRX_BROADCAST, NetIndex) +
-                                               GetStatVal(pAC, IoC, LogPortIndex,
-                                                                  SK_PNMI_HRX_MULTICAST, NetIndex) +
-                                               GetStatVal(pAC, IoC, LogPortIndex,
-                                                                  SK_PNMI_HRX_UNICAST, NetIndex) +
-                                               GetStatVal(pAC, IoC, LogPortIndex,
-                                                                  SK_PNMI_HRX_UNDERSIZE, NetIndex);
-                               }
-                               break;
-
-                       default:
-                               StatVal = 0;
-                               break;
-                       }
-
-                       SK_PNMI_STORE_U64(pBuf + Offset, StatVal);
-                       break;
-
-               default:
-                       StatVal = GetStatVal(pAC, IoC, LogPortIndex,
-                               IdTable[TableIndex].Param, NetIndex);
-                       SK_PNMI_STORE_U64(pBuf + Offset, StatVal);
-                       break;
-               }
-
-               Offset += sizeof(SK_U64);
-       }
-       *pLen = Offset;
-
-       pAC->Pnmi.MacUpdatedFlag --;
-
-       return (SK_PNMI_ERR_OK);
-}
-
-/*****************************************************************************
- *
- * Addr - OID handler function of OID_SKGE_PHYS_CUR_ADDR and _FAC_ADDR
- *
- * Description:
- *     Get/Presets/Sets the current and factory MAC address. The MAC
- *     address of the virtual port, which is reported to the OS, may
- *     not be changed, but the physical ones. A set to the virtual port
- *     will be ignored. No error should be reported because otherwise
- *     a multiple instance set (-1) would always fail.
- *
- * Returns:
- *     SK_PNMI_ERR_OK           The request was successfully performed.
- *     SK_PNMI_ERR_GENERAL      A general severe internal error occured.
- *     SK_PNMI_ERR_TOO_SHORT    The passed buffer is too short to contain
- *                              the correct data (e.g. a 32bit value is
- *                              needed, but a 16 bit value was passed).
- *     SK_PNMI_ERR_BAD_VALUE    The passed value is not in the valid
- *                              value range.
- *     SK_PNMI_ERR_READ_ONLY    The OID is read-only and cannot be set.
- *     SK_PNMI_ERR_UNKNOWN_INST The requested instance of the OID doesn't
- *                               exist (e.g. port instance 3 on a two port
- *                              adapter.
- */
-PNMI_STATIC int Addr(
-SK_AC *pAC,            /* Pointer to adapter context */
-SK_IOC IoC,            /* IO context handle */
-int Action,            /* Get/PreSet/Set action */
-SK_U32 Id,             /* Object ID that is to be processed */
-char *pBuf,            /* Buffer to which to mgmt data will be retrieved */
-unsigned int *pLen,    /* On call: buffer length. On return: used buffer */
-SK_U32 Instance,       /* Instance (1..n) that is to be queried or -1 */
-unsigned int TableIndex, /* Index to the Id table */
-SK_U32 NetIndex)       /* NetIndex (0..n), in single net mode allways zero */
-{
-       int             Ret;
-       unsigned int    LogPortMax;
-       unsigned int    PhysPortMax;
-       unsigned int    LogPortIndex;
-       unsigned int    PhysPortIndex;
-       unsigned int    Limit;
-       unsigned int    Offset = 0;
-
-       /*
-        * Calculate instance if wished. MAC index 0 is the virtual
-        * MAC.
-        */
-       PhysPortMax = pAC->GIni.GIMacsFound;
-       LogPortMax = SK_PNMI_PORT_PHYS2LOG(PhysPortMax);
-
-       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) { /* Dual net mode */
-               LogPortMax--;
-       }
-
-       if ((Instance != (SK_U32)(-1))) { /* Only one specific instance is queried */
-               /* Check instance range */
-               if ((Instance < 1) || (Instance > LogPortMax)) {
-
-                       *pLen = 0;
-                       return (SK_PNMI_ERR_UNKNOWN_INST);
-               }
-               LogPortIndex = SK_PNMI_PORT_INST2LOG(Instance);
-               Limit = LogPortIndex + 1;
-       }
-
-       else { /* Instance == (SK_U32)(-1), get all Instances of that OID */
-
-               LogPortIndex = 0;
-               Limit = LogPortMax;
-       }
-
-       /*
-        * Perform Action
-        */
-       if (Action == SK_PNMI_GET) {
-
-               /*
-                * Check length
-               */
-               if (*pLen < (Limit - LogPortIndex) * 6) {
-
-                       *pLen = (Limit - LogPortIndex) * 6;
-                       return (SK_PNMI_ERR_TOO_SHORT);
-               }
-
-               /*
-                * Get value
-                */
-               for (; LogPortIndex < Limit; LogPortIndex ++) {
-
-                       switch (Id) {
-
-                       case OID_SKGE_PHYS_CUR_ADDR:
-                               if (LogPortIndex == 0) {
-                                       CopyMac(pBuf + Offset, &pAC->Addr.Net[NetIndex].CurrentMacAddress);
-                               }
-                               else {
-                                       PhysPortIndex = SK_PNMI_PORT_LOG2PHYS(pAC, LogPortIndex);
-
-                                       CopyMac(pBuf + Offset,
-                                               &pAC->Addr.Port[PhysPortIndex].CurrentMacAddress);
-                               }
-                               Offset += 6;
-                               break;
-
-                       case OID_SKGE_PHYS_FAC_ADDR:
-                               if (LogPortIndex == 0) {
-                                       CopyMac(pBuf + Offset,
-                                               &pAC->Addr.Net[NetIndex].PermanentMacAddress);
-                               }
-                               else {
-                                       PhysPortIndex = SK_PNMI_PORT_LOG2PHYS(
-                                               pAC, LogPortIndex);
-
-                                       CopyMac(pBuf + Offset,
-                                               &pAC->Addr.Port[PhysPortIndex].PermanentMacAddress);
-                               }
-                               Offset += 6;
-                               break;
-
-                       default:
-                               SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR008,
-                                       SK_PNMI_ERR008MSG);
-
-                               *pLen = 0;
-                               return (SK_PNMI_ERR_GENERAL);
-                       }
-               }
-
-               *pLen = Offset;
-       }
-       else {
-               /*
-                * The logical MAC address may not be changed only
-                * the physical ones
-                */
-               if (Id == OID_SKGE_PHYS_FAC_ADDR) {
-
-                       *pLen = 0;
-                       return (SK_PNMI_ERR_READ_ONLY);
-               }
-
-               /*
-                * Only the current address may be changed
-                */
-               if (Id != OID_SKGE_PHYS_CUR_ADDR) {
-
-                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR009,
-                               SK_PNMI_ERR009MSG);
-
-                       *pLen = 0;
-                       return (SK_PNMI_ERR_GENERAL);
-               }
-
-               /*
-                * Check length
-               */
-               if (*pLen < (Limit - LogPortIndex) * 6) {
-
-                       *pLen = (Limit - LogPortIndex) * 6;
-                       return (SK_PNMI_ERR_TOO_SHORT);
-               }
-               if (*pLen > (Limit - LogPortIndex) * 6) {
-
-                       *pLen = 0;
-                       return (SK_PNMI_ERR_BAD_VALUE);
-               }
-
-               /*
-                * Check Action
-                */
-               if (Action == SK_PNMI_PRESET) {
-
-                       *pLen = 0;
-                       return (SK_PNMI_ERR_OK);
-               }
-
-               /*
-                * Set OID_SKGE_MAC_CUR_ADDR
-                */
-               for (; LogPortIndex < Limit; LogPortIndex ++, Offset += 6) {
-
-                       /*
-                        * A set to virtual port and set of broadcast
-                        * address will be ignored
-                        */
-                       if (LogPortIndex == 0 || SK_MEMCMP(pBuf + Offset,
-                               "\xff\xff\xff\xff\xff\xff", 6) == 0) {
-
-                               continue;
-                       }
-
-                       PhysPortIndex = SK_PNMI_PORT_LOG2PHYS(pAC,
-                               LogPortIndex);
-
-                       Ret = SkAddrOverride(pAC, IoC, PhysPortIndex,
-                               (SK_MAC_ADDR *)(pBuf + Offset),
-                               (LogPortIndex == 0 ? SK_ADDR_VIRTUAL_ADDRESS :
-                               SK_ADDR_PHYSICAL_ADDRESS));
-                       if (Ret != SK_ADDR_OVERRIDE_SUCCESS) {
-
-                               return (SK_PNMI_ERR_GENERAL);
-                       }
-               }
-               *pLen = Offset;
-       }
-
-       return (SK_PNMI_ERR_OK);
-}
-
-/*****************************************************************************
- *
- * CsumStat - OID handler function of OID_SKGE_CHKSM_XXX
- *
- * Description:
- *     Retrieves the statistic values of the CSUM module. The CSUM data
- *     structure must be available in the SK_AC even if the CSUM module
- *     is not included, because PNMI reads the statistic data from the
- *     CSUM part of SK_AC directly.
- *
- * Returns:
- *     SK_PNMI_ERR_OK           The request was successfully performed.
- *     SK_PNMI_ERR_GENERAL      A general severe internal error occured.
- *     SK_PNMI_ERR_TOO_SHORT    The passed buffer is too short to contain
- *                              the correct data (e.g. a 32bit value is
- *                              needed, but a 16 bit value was passed).
- *     SK_PNMI_ERR_UNKNOWN_INST The requested instance of the OID doesn't
- *                               exist (e.g. port instance 3 on a two port
- *                              adapter.
- */
-PNMI_STATIC int CsumStat(
-SK_AC *pAC,            /* Pointer to adapter context */
-SK_IOC IoC,            /* IO context handle */
-int Action,            /* Get/PreSet/Set action */
-SK_U32 Id,             /* Object ID that is to be processed */
-char *pBuf,            /* Buffer to which to mgmt data will be retrieved */
-unsigned int *pLen,    /* On call: buffer length. On return: used buffer */
-SK_U32 Instance,       /* Instance (1..n) that is to be queried or -1 */
-unsigned int TableIndex, /* Index to the Id table */
-SK_U32 NetIndex)       /* NetIndex (0..n), in single net mode allways zero */
-{
-       unsigned int    Index;
-       unsigned int    Limit;
-       unsigned int    Offset = 0;
-       SK_U64          StatVal;
-
-
-       /*
-        * Calculate instance if wished
-        */
-       if (Instance != (SK_U32)(-1)) {
-
-               if ((Instance < 1) || (Instance > SKCS_NUM_PROTOCOLS)) {
-
-                       *pLen = 0;
-                       return (SK_PNMI_ERR_UNKNOWN_INST);
-               }
-               Index = (unsigned int)Instance - 1;
-               Limit = Index + 1;
-       }
-       else {
-               Index = 0;
-               Limit = SKCS_NUM_PROTOCOLS;
-       }
-
-       /*
-        * Check action
-        */
-       if (Action != SK_PNMI_GET) {
-
-               *pLen = 0;
-               return (SK_PNMI_ERR_READ_ONLY);
-       }
-
-       /*
-        * Check length
-        */
-       if (*pLen < (Limit - Index) * sizeof(SK_U64)) {
-
-               *pLen = (Limit - Index) * sizeof(SK_U64);
-               return (SK_PNMI_ERR_TOO_SHORT);
-       }
-
-       /*
-        * Get value
-        */
-       for (; Index < Limit; Index ++) {
-
-               switch (Id) {
-
-               case OID_SKGE_CHKSM_RX_OK_CTS:
-                       StatVal = pAC->Csum.ProtoStats[NetIndex][Index].RxOkCts;
-                       break;
-
-               case OID_SKGE_CHKSM_RX_UNABLE_CTS:
-                       StatVal = pAC->Csum.ProtoStats[NetIndex][Index].RxUnableCts;
-                       break;
-
-               case OID_SKGE_CHKSM_RX_ERR_CTS:
-                       StatVal = pAC->Csum.ProtoStats[NetIndex][Index].RxErrCts;
-                       break;
-
-               case OID_SKGE_CHKSM_TX_OK_CTS:
-                       StatVal = pAC->Csum.ProtoStats[NetIndex][Index].TxOkCts;
-                       break;
-
-               case OID_SKGE_CHKSM_TX_UNABLE_CTS:
-                       StatVal = pAC->Csum.ProtoStats[NetIndex][Index].TxUnableCts;
-                       break;
-
-               default:
-                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR010,
-                               SK_PNMI_ERR010MSG);
-
-                       *pLen = 0;
-                       return (SK_PNMI_ERR_GENERAL);
-               }
-
-               SK_PNMI_STORE_U64(pBuf + Offset, StatVal);
-               Offset += sizeof(SK_U64);
-       }
-
-       /*
-        * Store used buffer space
-        */
-       *pLen = Offset;
-
-       return (SK_PNMI_ERR_OK);
-}
-
-/*****************************************************************************
- *
- * SensorStat - OID handler function of OID_SKGE_SENSOR_XXX
- *
- * Description:
- *     Retrieves the statistic values of the I2C module, which handles
- *     the temperature and voltage sensors.
- *
- * Returns:
- *     SK_PNMI_ERR_OK           The request was successfully performed.
- *     SK_PNMI_ERR_GENERAL      A general severe internal error occured.
- *     SK_PNMI_ERR_TOO_SHORT    The passed buffer is too short to contain
- *                              the correct data (e.g. a 32bit value is
- *                              needed, but a 16 bit value was passed).
- *     SK_PNMI_ERR_UNKNOWN_INST The requested instance of the OID doesn't
- *                               exist (e.g. port instance 3 on a two port
- *                              adapter.
- */
-PNMI_STATIC int SensorStat(
-SK_AC *pAC,            /* Pointer to adapter context */
-SK_IOC IoC,            /* IO context handle */
-int Action,            /* Get/PreSet/Set action */
-SK_U32 Id,             /* Object ID that is to be processed */
-char *pBuf,            /* Buffer to which to mgmt data will be retrieved */
-unsigned int *pLen,    /* On call: buffer length. On return: used buffer */
-SK_U32 Instance,       /* Instance (1..n) that is to be queried or -1 */
-unsigned int TableIndex, /* Index to the Id table */
-SK_U32 NetIndex)       /* NetIndex (0..n), in single net mode allways zero */
-{
-       unsigned int    i;
-       unsigned int    Index;
-       unsigned int    Limit;
-       unsigned int    Offset;
-       unsigned int    Len;
-       SK_U32          Val32;
-       SK_U64          Val64;
-
-
-       /*
-        * Calculate instance if wished
-        */
-       if ((Instance != (SK_U32)(-1))) {
-
-               if ((Instance < 1) || (Instance > (SK_U32)pAC->I2c.MaxSens)) {
-
-                       *pLen = 0;
-                       return (SK_PNMI_ERR_UNKNOWN_INST);
-               }
-
-               Index = (unsigned int)Instance -1;
-               Limit = (unsigned int)Instance;
-       }
-       else {
-               Index = 0;
-               Limit = (unsigned int) pAC->I2c.MaxSens;
-       }
-
-       /*
-        * Check action
-        */
-       if (Action != SK_PNMI_GET) {
-
-               *pLen = 0;
-               return (SK_PNMI_ERR_READ_ONLY);
-       }
-
-       /*
-        * Check length
-        */
-       switch (Id) {
-
-       case OID_SKGE_SENSOR_VALUE:
-       case OID_SKGE_SENSOR_WAR_THRES_LOW:
-       case OID_SKGE_SENSOR_WAR_THRES_UPP:
-       case OID_SKGE_SENSOR_ERR_THRES_LOW:
-       case OID_SKGE_SENSOR_ERR_THRES_UPP:
-               if (*pLen < (Limit - Index) * sizeof(SK_U32)) {
-
-                       *pLen = (Limit - Index) * sizeof(SK_U32);
-                       return (SK_PNMI_ERR_TOO_SHORT);
-               }
-               break;
-
-       case OID_SKGE_SENSOR_DESCR:
-               for (Offset = 0, i = Index; i < Limit; i ++) {
-
-                       Len = (unsigned int)
-                               SK_STRLEN(pAC->I2c.SenTable[i].SenDesc) + 1;
-                       if (Len >= SK_PNMI_STRINGLEN2) {
-
-                               SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR011,
-                                       SK_PNMI_ERR011MSG);
-
-                               *pLen = 0;
-                               return (SK_PNMI_ERR_GENERAL);
-                       }
-                       Offset += Len;
-               }
-               if (*pLen < Offset) {
-
-                       *pLen = Offset;
-                       return (SK_PNMI_ERR_TOO_SHORT);
-               }
-               break;
-
-       case OID_SKGE_SENSOR_INDEX:
-       case OID_SKGE_SENSOR_TYPE:
-       case OID_SKGE_SENSOR_STATUS:
-               if (*pLen < Limit - Index) {
-
-                       *pLen = Limit - Index;
-                       return (SK_PNMI_ERR_TOO_SHORT);
-               }
-               break;
-
-       case OID_SKGE_SENSOR_WAR_CTS:
-       case OID_SKGE_SENSOR_WAR_TIME:
-       case OID_SKGE_SENSOR_ERR_CTS:
-       case OID_SKGE_SENSOR_ERR_TIME:
-               if (*pLen < (Limit - Index) * sizeof(SK_U64)) {
-
-                       *pLen = (Limit - Index) * sizeof(SK_U64);
-                       return (SK_PNMI_ERR_TOO_SHORT);
-               }
-               break;
-
-       default:
-               SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR012,
-                       SK_PNMI_ERR012MSG);
-
-               *pLen = 0;
-               return (SK_PNMI_ERR_GENERAL);
-
-       }
-
-       /*
-        * Get value
-        */
-       for (Offset = 0; Index < Limit; Index ++) {
-
-               switch (Id) {
-
-               case OID_SKGE_SENSOR_INDEX:
-                       *(pBuf + Offset) = (char)Index;
-                       Offset += sizeof(char);
-                       break;
-
-               case OID_SKGE_SENSOR_DESCR:
-                       Len = SK_STRLEN(pAC->I2c.SenTable[Index].SenDesc);
-                       SK_MEMCPY(pBuf + Offset + 1,
-                               pAC->I2c.SenTable[Index].SenDesc, Len);
-                       *(pBuf + Offset) = (char)Len;
-                       Offset += Len + 1;
-                       break;
-
-               case OID_SKGE_SENSOR_TYPE:
-                       *(pBuf + Offset) =
-                               (char)pAC->I2c.SenTable[Index].SenType;
-                       Offset += sizeof(char);
-                       break;
-
-               case OID_SKGE_SENSOR_VALUE:
-                       Val32 = (SK_U32)pAC->I2c.SenTable[Index].SenValue;
-                       SK_PNMI_STORE_U32(pBuf + Offset, Val32);
-                       Offset += sizeof(SK_U32);
-                       break;
-
-               case OID_SKGE_SENSOR_WAR_THRES_LOW:
-                       Val32 = (SK_U32)pAC->I2c.SenTable[Index].
-                               SenThreWarnLow;
-                       SK_PNMI_STORE_U32(pBuf + Offset, Val32);
-                       Offset += sizeof(SK_U32);
-                       break;
-
-               case OID_SKGE_SENSOR_WAR_THRES_UPP:
-                       Val32 = (SK_U32)pAC->I2c.SenTable[Index].
-                               SenThreWarnHigh;
-                       SK_PNMI_STORE_U32(pBuf + Offset, Val32);
-                       Offset += sizeof(SK_U32);
-                       break;
-
-               case OID_SKGE_SENSOR_ERR_THRES_LOW:
-                       Val32 = (SK_U32)pAC->I2c.SenTable[Index].
-                               SenThreErrLow;
-                       SK_PNMI_STORE_U32(pBuf + Offset, Val32);
-                       Offset += sizeof(SK_U32);
-                       break;
-
-               case OID_SKGE_SENSOR_ERR_THRES_UPP:
-                       Val32 = pAC->I2c.SenTable[Index].SenThreErrHigh;
-                       SK_PNMI_STORE_U32(pBuf + Offset, Val32);
-                       Offset += sizeof(SK_U32);
-                       break;
-
-               case OID_SKGE_SENSOR_STATUS:
-                       *(pBuf + Offset) =
-                               (char)pAC->I2c.SenTable[Index].SenErrFlag;
-                       Offset += sizeof(char);
-                       break;
-
-               case OID_SKGE_SENSOR_WAR_CTS:
-                       Val64 = pAC->I2c.SenTable[Index].SenWarnCts;
-                       SK_PNMI_STORE_U64(pBuf + Offset, Val64);
-                       Offset += sizeof(SK_U64);
-                       break;
-
-               case OID_SKGE_SENSOR_ERR_CTS:
-                       Val64 = pAC->I2c.SenTable[Index].SenErrCts;
-                       SK_PNMI_STORE_U64(pBuf + Offset, Val64);
-                       Offset += sizeof(SK_U64);
-                       break;
-
-               case OID_SKGE_SENSOR_WAR_TIME:
-                       Val64 = SK_PNMI_HUNDREDS_SEC(pAC->I2c.SenTable[Index].
-                               SenBegWarnTS);
-                       SK_PNMI_STORE_U64(pBuf + Offset, Val64);
-                       Offset += sizeof(SK_U64);
-                       break;
-
-               case OID_SKGE_SENSOR_ERR_TIME:
-                       Val64 = SK_PNMI_HUNDREDS_SEC(pAC->I2c.SenTable[Index].
-                               SenBegErrTS);
-                       SK_PNMI_STORE_U64(pBuf + Offset, Val64);
-                       Offset += sizeof(SK_U64);
-                       break;
-
-               default:
-                       SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_ERR,
-                               ("SensorStat: Unknown OID should be handled before"));
-
-                       return (SK_PNMI_ERR_GENERAL);
-               }
-       }
-
-       /*
-        * Store used buffer space
-        */
-       *pLen = Offset;
-
-       return (SK_PNMI_ERR_OK);
-}
-
-/*****************************************************************************
- *
- * Vpd - OID handler function of OID_SKGE_VPD_XXX
- *
- * Description:
- *     Get/preset/set of VPD data. As instance the name of a VPD key
- *     can be passed. The Instance parameter is a SK_U32 and can be
- *     used as a string buffer for the VPD key, because their maximum
- *     length is 4 byte.
- *
- * Returns:
- *     SK_PNMI_ERR_OK           The request was successfully performed.
- *     SK_PNMI_ERR_GENERAL      A general severe internal error occured.
- *     SK_PNMI_ERR_TOO_SHORT    The passed buffer is too short to contain
- *                              the correct data (e.g. a 32bit value is
- *                              needed, but a 16 bit value was passed).
- *     SK_PNMI_ERR_BAD_VALUE    The passed value is not in the valid
- *                              value range.
- *     SK_PNMI_ERR_READ_ONLY    The OID is read-only and cannot be set.
- *     SK_PNMI_ERR_UNKNOWN_INST The requested instance of the OID doesn't
- *                               exist (e.g. port instance 3 on a two port
- *                              adapter.
- */
-PNMI_STATIC int Vpd(
-SK_AC *pAC,            /* Pointer to adapter context */
-SK_IOC IoC,            /* IO context handle */
-int Action,            /* Get/PreSet/Set action */
-SK_U32 Id,             /* Object ID that is to be processed */
-char *pBuf,            /* Buffer to which to mgmt data will be retrieved */
-unsigned int *pLen,    /* On call: buffer length. On return: used buffer */
-SK_U32 Instance,       /* Instance (1..n) that is to be queried or -1 */
-unsigned int TableIndex, /* Index to the Id table */
-SK_U32 NetIndex)       /* NetIndex (0..n), in single net mode allways zero */
-{
-       SK_VPD_STATUS   *pVpdStatus;
-       unsigned int    BufLen;
-       char            Buf[256];
-       char            KeyArr[SK_PNMI_VPD_ENTRIES][SK_PNMI_VPD_KEY_SIZE];
-       char            KeyStr[SK_PNMI_VPD_KEY_SIZE];
-       unsigned int    KeyNo;
-       unsigned int    Offset;
-       unsigned int    Index;
-       unsigned int    FirstIndex;
-       unsigned int    LastIndex;
-       unsigned int    Len;
-       int             Ret;
-       SK_U32          Val32;
-
-       /*
-        * Get array of all currently stored VPD keys
-        */
-       Ret = GetVpdKeyArr(pAC, IoC, &KeyArr[0][0], sizeof(KeyArr),
-               &KeyNo);
-       if (Ret != SK_PNMI_ERR_OK) {
-               *pLen = 0;
-               return (Ret);
-       }
-
-       /*
-        * If instance is not -1, try to find the requested VPD key for
-        * the multiple instance variables. The other OIDs as for example
-        * OID VPD_ACTION are single instance variables and must be
-        * handled separatly.
-        */
-       FirstIndex = 0;
-       LastIndex = KeyNo;
-
-       if ((Instance != (SK_U32)(-1))) {
-
-               if (Id == OID_SKGE_VPD_KEY || Id == OID_SKGE_VPD_VALUE ||
-                       Id == OID_SKGE_VPD_ACCESS) {
-
-                       SK_STRNCPY(KeyStr, (char *)&Instance, 4);
-                       KeyStr[4] = 0;
-
-                       for (Index = 0; Index < KeyNo; Index ++) {
-
-                               if (SK_STRCMP(KeyStr, KeyArr[Index]) == 0) {
-                                       FirstIndex = Index;
-                                       LastIndex = Index+1;
-                                       break;
-                               }
-                       }
-                       if (Index == KeyNo) {
-
-                               *pLen = 0;
-                               return (SK_PNMI_ERR_UNKNOWN_INST);
-                       }
-               }
-               else if (Instance != 1) {
-
-                       *pLen = 0;
-                       return (SK_PNMI_ERR_UNKNOWN_INST);
-               }
-       }
-
-       /*
-        * Get value, if a query should be performed
-        */
-       if (Action == SK_PNMI_GET) {
-
-               switch (Id) {
-
-               case OID_SKGE_VPD_FREE_BYTES:
-                       /* Check length of buffer */
-                       if (*pLen < sizeof(SK_U32)) {
-
-                               *pLen = sizeof(SK_U32);
-                               return (SK_PNMI_ERR_TOO_SHORT);
-                       }
-                       /* Get number of free bytes */
-                       pVpdStatus = VpdStat(pAC, IoC);
-                       if (pVpdStatus == NULL) {
-
-                               SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR017,
-                                       SK_PNMI_ERR017MSG);
-
-                               *pLen = 0;
-                               return (SK_PNMI_ERR_GENERAL);
-                       }
-                       if ((pVpdStatus->vpd_status & VPD_VALID) == 0) {
-
-                               SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR018,
-                                       SK_PNMI_ERR018MSG);
-
-                               *pLen = 0;
-                               return (SK_PNMI_ERR_GENERAL);
-                       }
-
-                       Val32 = (SK_U32)pVpdStatus->vpd_free_rw;
-                       SK_PNMI_STORE_U32(pBuf, Val32);
-                       *pLen = sizeof(SK_U32);
-                       break;
-
-               case OID_SKGE_VPD_ENTRIES_LIST:
-                       /* Check length */
-                       for (Len = 0, Index = 0; Index < KeyNo; Index ++) {
-
-                               Len += SK_STRLEN(KeyArr[Index]) + 1;
-                       }
-                       if (*pLen < Len) {
-
-                               *pLen = Len;
-                               return (SK_PNMI_ERR_TOO_SHORT);
-                       }
-
-                       /* Get value */
-                       *(pBuf) = (char)Len - 1;
-                       for (Offset = 1, Index = 0; Index < KeyNo; Index ++) {
-
-                               Len = SK_STRLEN(KeyArr[Index]);
-                               SK_MEMCPY(pBuf + Offset, KeyArr[Index], Len);
-
-                               Offset += Len;
-
-                               if (Index < KeyNo - 1) {
-
-                                       *(pBuf + Offset) = ' ';
-                                       Offset ++;
-                               }
-                       }
-                       *pLen = Offset;
-                       break;
-
-               case OID_SKGE_VPD_ENTRIES_NUMBER:
-                       /* Check length */
-                       if (*pLen < sizeof(SK_U32)) {
-
-                               *pLen = sizeof(SK_U32);
-                               return (SK_PNMI_ERR_TOO_SHORT);
-                       }
-
-                       Val32 = (SK_U32)KeyNo;
-                       SK_PNMI_STORE_U32(pBuf, Val32);
-                       *pLen = sizeof(SK_U32);
-                       break;
-
-               case OID_SKGE_VPD_KEY:
-                       /* Check buffer length, if it is large enough */
-                       for (Len = 0, Index = FirstIndex;
-                               Index < LastIndex; Index ++) {
-
-                               Len += SK_STRLEN(KeyArr[Index]) + 1;
-                       }
-                       if (*pLen < Len) {
-
-                               *pLen = Len;
-                               return (SK_PNMI_ERR_TOO_SHORT);
-                       }
-
-                       /*
-                        * Get the key to an intermediate buffer, because
-                        * we have to prepend a length byte.
-                        */
-                       for (Offset = 0, Index = FirstIndex;
-                               Index < LastIndex; Index ++) {
-
-                               Len = SK_STRLEN(KeyArr[Index]);
-
-                               *(pBuf + Offset) = (char)Len;
-                               SK_MEMCPY(pBuf + Offset + 1, KeyArr[Index],
-                                       Len);
-                               Offset += Len + 1;
-                       }
-                       *pLen = Offset;
-                       break;
-
-               case OID_SKGE_VPD_VALUE:
-                       /* Check the buffer length if it is large enough */
-                       for (Offset = 0, Index = FirstIndex;
-                               Index < LastIndex; Index ++) {
-
-                               BufLen = 256;
-                               if (VpdRead(pAC, IoC, KeyArr[Index], Buf,
-                                       (int *)&BufLen) > 0 ||
-                                       BufLen >= SK_PNMI_VPD_DATALEN) {
-
-                                       SK_ERR_LOG(pAC, SK_ERRCL_SW,
-                                               SK_PNMI_ERR021,
-                                               SK_PNMI_ERR021MSG);
-
-                                       return (SK_PNMI_ERR_GENERAL);
-                               }
-                               Offset += BufLen + 1;
-                       }
-                       if (*pLen < Offset) {
-
-                               *pLen = Offset;
-                               return (SK_PNMI_ERR_TOO_SHORT);
-                       }
-
-                       /*
-                        * Get the value to an intermediate buffer, because
-                        * we have to prepend a length byte.
-                        */
-                       for (Offset = 0, Index = FirstIndex;
-                               Index < LastIndex; Index ++) {
-
-                               BufLen = 256;
-                               if (VpdRead(pAC, IoC, KeyArr[Index], Buf,
-                                       (int *)&BufLen) > 0 ||
-                                       BufLen >= SK_PNMI_VPD_DATALEN) {
-
-                                       SK_ERR_LOG(pAC, SK_ERRCL_SW,
-                                               SK_PNMI_ERR022,
-                                               SK_PNMI_ERR022MSG);
-
-                                       *pLen = 0;
-                                       return (SK_PNMI_ERR_GENERAL);
-                               }
-
-                               *(pBuf + Offset) = (char)BufLen;
-                               SK_MEMCPY(pBuf + Offset + 1, Buf, BufLen);
-                               Offset += BufLen + 1;
-                       }
-                       *pLen = Offset;
-                       break;
-
-               case OID_SKGE_VPD_ACCESS:
-                       if (*pLen < LastIndex - FirstIndex) {
-
-                               *pLen = LastIndex - FirstIndex;
-                               return (SK_PNMI_ERR_TOO_SHORT);
-                       }
-
-                       for (Offset = 0, Index = FirstIndex;
-                               Index < LastIndex; Index ++) {
-
-                               if (VpdMayWrite(KeyArr[Index])) {
-
-                                       *(pBuf + Offset) = SK_PNMI_VPD_RW;
-                               }
-                               else {
-                                       *(pBuf + Offset) = SK_PNMI_VPD_RO;
-                               }
-                               Offset ++;
-                       }
-                       *pLen = Offset;
-                       break;
-
-               case OID_SKGE_VPD_ACTION:
-                       Offset = LastIndex - FirstIndex;
-                       if (*pLen < Offset) {
-
-                               *pLen = Offset;
-                               return (SK_PNMI_ERR_TOO_SHORT);
-                       }
-                       SK_MEMSET(pBuf, 0, Offset);
-                       *pLen = Offset;
-                       break;
-
-               default:
-                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR023,
-                               SK_PNMI_ERR023MSG);
-
-                       *pLen = 0;
-                       return (SK_PNMI_ERR_GENERAL);
-               }
-       }
-       else {
-               /* The only OID which can be set is VPD_ACTION */
-               if (Id != OID_SKGE_VPD_ACTION) {
-
-                       if (Id == OID_SKGE_VPD_FREE_BYTES ||
-                               Id == OID_SKGE_VPD_ENTRIES_LIST ||
-                               Id == OID_SKGE_VPD_ENTRIES_NUMBER ||
-                               Id == OID_SKGE_VPD_KEY ||
-                               Id == OID_SKGE_VPD_VALUE ||
-                               Id == OID_SKGE_VPD_ACCESS) {
-
-                               *pLen = 0;
-                               return (SK_PNMI_ERR_READ_ONLY);
-                       }
-
-                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR024,
-                               SK_PNMI_ERR024MSG);
-
-                       *pLen = 0;
-                       return (SK_PNMI_ERR_GENERAL);
-               }
-
-               /*
-                * From this point we handle VPD_ACTION. Check the buffer
-                * length. It should at least have the size of one byte.
-                */
-               if (*pLen < 1) {
-
-                       *pLen = 1;
-                       return (SK_PNMI_ERR_TOO_SHORT);
-               }
-
-               /*
-                * The first byte contains the VPD action type we should
-                * perform.
-                */
-               switch (*pBuf) {
-
-               case SK_PNMI_VPD_IGNORE:
-                       /* Nothing to do */
-                       break;
-
-               case SK_PNMI_VPD_CREATE:
-                       /*
-                        * We have to create a new VPD entry or we modify
-                        * an existing one. Check first the buffer length.
-                        */
-                       if (*pLen < 4) {
-
-                               *pLen = 4;
-                               return (SK_PNMI_ERR_TOO_SHORT);
-                       }
-                       KeyStr[0] = pBuf[1];
-                       KeyStr[1] = pBuf[2];
-                       KeyStr[2] = 0;
-
-                       /*
-                        * Is the entry writable or does it belong to the
-                        * read-only area?
-                        */
-                       if (!VpdMayWrite(KeyStr)) {
-
-                               *pLen = 0;
-                               return (SK_PNMI_ERR_BAD_VALUE);
-                       }
-
-                       Offset = (int)pBuf[3] & 0xFF;
-
-                       SK_MEMCPY(Buf, pBuf + 4, Offset);
-                       Buf[Offset] = 0;
-
-                       /* A preset ends here */
-                       if (Action == SK_PNMI_PRESET) {
-
-                               return (SK_PNMI_ERR_OK);
-                       }
-
-                       /* Write the new entry or modify an existing one */
-                       Ret = VpdWrite(pAC, IoC, KeyStr, Buf);
-                       if (Ret == SK_PNMI_VPD_NOWRITE ) {
-
-                               *pLen = 0;
-                               return (SK_PNMI_ERR_BAD_VALUE);
-                       }
-                       else if (Ret != SK_PNMI_VPD_OK) {
-
-                               SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR025,
-                                       SK_PNMI_ERR025MSG);
-
-                               *pLen = 0;
-                               return (SK_PNMI_ERR_GENERAL);
-                       }
-
-                       /*
-                        * Perform an update of the VPD data. This is
-                        * not mandantory, but just to be sure.
-                        */
-                       Ret = VpdUpdate(pAC, IoC);
-                       if (Ret != SK_PNMI_VPD_OK) {
-
-                               SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR026,
-                                       SK_PNMI_ERR026MSG);
-
-                               *pLen = 0;
-                               return (SK_PNMI_ERR_GENERAL);
-                       }
-                       break;
-
-               case SK_PNMI_VPD_DELETE:
-                       /* Check if the buffer size is plausible */
-                       if (*pLen < 3) {
-
-                               *pLen = 3;
-                               return (SK_PNMI_ERR_TOO_SHORT);
-                       }
-                       if (*pLen > 3) {
-
-                               *pLen = 0;
-                               return (SK_PNMI_ERR_BAD_VALUE);
-                       }
-                       KeyStr[0] = pBuf[1];
-                       KeyStr[1] = pBuf[2];
-                       KeyStr[2] = 0;
-
-                       /* Find the passed key in the array */
-                       for (Index = 0; Index < KeyNo; Index ++) {
-
-                               if (SK_STRCMP(KeyStr, KeyArr[Index]) == 0) {
-
-                                       break;
-                               }
-                       }
-                       /*
-                        * If we cannot find the key it is wrong, so we
-                        * return an appropriate error value.
-                        */
-                       if (Index == KeyNo) {
-
-                               *pLen = 0;
-                               return (SK_PNMI_ERR_BAD_VALUE);
-                       }
-
-                       if (Action == SK_PNMI_PRESET) {
-
-                               return (SK_PNMI_ERR_OK);
-                       }
-
-                       /* Ok, you wanted it and you will get it */
-                       Ret = VpdDelete(pAC, IoC, KeyStr);
-                       if (Ret != SK_PNMI_VPD_OK) {
-
-                               SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR027,
-                                       SK_PNMI_ERR027MSG);
-
-                               *pLen = 0;
-                               return (SK_PNMI_ERR_GENERAL);
-                       }
-
-                       /*
-                        * Perform an update of the VPD data. This is
-                        * not mandantory, but just to be sure.
-                        */
-                       Ret = VpdUpdate(pAC, IoC);
-                       if (Ret != SK_PNMI_VPD_OK) {
-
-                               SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR028,
-                                       SK_PNMI_ERR028MSG);
-
-                               *pLen = 0;
-                               return (SK_PNMI_ERR_GENERAL);
-                       }
-                       break;
-
-               default:
-                       *pLen = 0;
-                       return (SK_PNMI_ERR_BAD_VALUE);
-               }
-       }
-
-       return (SK_PNMI_ERR_OK);
-}
-
-/*****************************************************************************
- *
- * General - OID handler function of various single instance OIDs
- *
- * Description:
- *     The code is simple. No description necessary.
- *
- * Returns:
- *     SK_PNMI_ERR_OK           The request was successfully performed.
- *     SK_PNMI_ERR_GENERAL      A general severe internal error occured.
- *     SK_PNMI_ERR_TOO_SHORT    The passed buffer is too short to contain
- *                              the correct data (e.g. a 32bit value is
- *                              needed, but a 16 bit value was passed).
- *     SK_PNMI_ERR_UNKNOWN_INST The requested instance of the OID doesn't
- *                               exist (e.g. port instance 3 on a two port
- *                              adapter.
- */
-PNMI_STATIC int General(
-SK_AC *pAC,            /* Pointer to adapter context */
-SK_IOC IoC,            /* IO context handle */
-int Action,            /* Get/PreSet/Set action */
-SK_U32 Id,             /* Object ID that is to be processed */
-char *pBuf,            /* Buffer to which to mgmt data will be retrieved */
-unsigned int *pLen,    /* On call: buffer length. On return: used buffer */
-SK_U32 Instance,       /* Instance (1..n) that is to be queried or -1 */
-unsigned int TableIndex, /* Index to the Id table */
-SK_U32 NetIndex)       /* NetIndex (0..n), in single net mode allways zero */
-{
-       int             Ret;
-       unsigned int    Index;
-       unsigned int    Len;
-       unsigned int    Offset;
-       unsigned int    Val;
-       SK_U8           Val8;
-       SK_U16          Val16;
-       SK_U32          Val32;
-       SK_U64          Val64;
-       SK_U64          Val64RxHwErrs = 0;
-       SK_U64          Val64TxHwErrs = 0;
-       SK_BOOL         Is64BitReq = SK_FALSE;
-       char            Buf[256];
-       int                     MacType;
-
-       /*
-        * Check instance. We only handle single instance variables
-        */
-       if (Instance != (SK_U32)(-1) && Instance != 1) {
-
-               *pLen = 0;
-               return (SK_PNMI_ERR_UNKNOWN_INST);
-       }
-
-       /*
-        * Check action. We only allow get requests.
-        */
-       if (Action != SK_PNMI_GET) {
-
-               *pLen = 0;
-               return (SK_PNMI_ERR_READ_ONLY);
-       }
-
-       MacType = pAC->GIni.GIMacType;
-
-       /*
-        * Check length for the various supported OIDs
-        */
-       switch (Id) {
-
-       case OID_GEN_XMIT_ERROR:
-       case OID_GEN_RCV_ERROR:
-       case OID_GEN_RCV_NO_BUFFER:
-#ifndef SK_NDIS_64BIT_CTR
-               if (*pLen < sizeof(SK_U32)) {
-                       *pLen = sizeof(SK_U32);
-                       return (SK_PNMI_ERR_TOO_SHORT);
-               }
-
-#else /* SK_NDIS_64BIT_CTR */
-
-               /*
-                * for compatibility, at least 32bit are required for oid
-                */
-               if (*pLen < sizeof(SK_U32)) {
-                       /*
-                       * but indicate handling for 64bit values,
-                       * if insufficient space is provided
-                       */
-                       *pLen = sizeof(SK_U64);
-                       return (SK_PNMI_ERR_TOO_SHORT);
-               }
-
-               Is64BitReq = (*pLen < sizeof(SK_U64)) ? SK_FALSE : SK_TRUE;
-#endif /* SK_NDIS_64BIT_CTR */
-               break;
-
-       case OID_SKGE_PORT_NUMBER:
-       case OID_SKGE_DEVICE_TYPE:
-       case OID_SKGE_RESULT:
-       case OID_SKGE_RLMT_MONITOR_NUMBER:
-       case OID_GEN_TRANSMIT_QUEUE_LENGTH:
-       case OID_SKGE_TRAP_NUMBER:
-       case OID_SKGE_MDB_VERSION:
-               if (*pLen < sizeof(SK_U32)) {
-
-                       *pLen = sizeof(SK_U32);
-                       return (SK_PNMI_ERR_TOO_SHORT);
-               }
-               break;
-
-       case OID_SKGE_CHIPSET:
-               if (*pLen < sizeof(SK_U16)) {
-
-                       *pLen = sizeof(SK_U16);
-                       return (SK_PNMI_ERR_TOO_SHORT);
-               }
-               break;
-
-       case OID_SKGE_BUS_TYPE:
-       case OID_SKGE_BUS_SPEED:
-       case OID_SKGE_BUS_WIDTH:
-       case OID_SKGE_SENSOR_NUMBER:
-       case OID_SKGE_CHKSM_NUMBER:
-               if (*pLen < sizeof(SK_U8)) {
-
-                       *pLen = sizeof(SK_U8);
-                       return (SK_PNMI_ERR_TOO_SHORT);
-               }
-               break;
-
-       case OID_SKGE_TX_SW_QUEUE_LEN:
-       case OID_SKGE_TX_SW_QUEUE_MAX:
-       case OID_SKGE_TX_RETRY:
-       case OID_SKGE_RX_INTR_CTS:
-       case OID_SKGE_TX_INTR_CTS:
-       case OID_SKGE_RX_NO_BUF_CTS:
-       case OID_SKGE_TX_NO_BUF_CTS:
-       case OID_SKGE_TX_USED_DESCR_NO:
-       case OID_SKGE_RX_DELIVERED_CTS:
-       case OID_SKGE_RX_OCTETS_DELIV_CTS:
-       case OID_SKGE_RX_HW_ERROR_CTS:
-       case OID_SKGE_TX_HW_ERROR_CTS:
-       case OID_SKGE_IN_ERRORS_CTS:
-       case OID_SKGE_OUT_ERROR_CTS:
-       case OID_SKGE_ERR_RECOVERY_CTS:
-       case OID_SKGE_SYSUPTIME:
-               if (*pLen < sizeof(SK_U64)) {
-
-                       *pLen = sizeof(SK_U64);
-                       return (SK_PNMI_ERR_TOO_SHORT);
-               }
-               break;
-
-       default:
-               /* Checked later */
-               break;
-       }
-
-       /* Update statistic */
-       if (Id == OID_SKGE_RX_HW_ERROR_CTS ||
-               Id == OID_SKGE_TX_HW_ERROR_CTS ||
-               Id == OID_SKGE_IN_ERRORS_CTS ||
-               Id == OID_SKGE_OUT_ERROR_CTS ||
-               Id == OID_GEN_XMIT_ERROR ||
-               Id == OID_GEN_RCV_ERROR) {
-
-               /* Force the XMAC to update its statistic counters and
-                * Increment semaphore to indicate that an update was
-                * already done.
-                */
-               Ret = MacUpdate(pAC, IoC, 0, pAC->GIni.GIMacsFound - 1);
-               if (Ret != SK_PNMI_ERR_OK) {
-
-                       *pLen = 0;
-                       return (Ret);
-               }
-               pAC->Pnmi.MacUpdatedFlag ++;
-
-               /*
-                * Some OIDs consist of multiple hardware counters. Those
-                * values which are contained in all of them will be added
-                * now.
-                */
-               switch (Id) {
-
-               case OID_SKGE_RX_HW_ERROR_CTS:
-               case OID_SKGE_IN_ERRORS_CTS:
-               case OID_GEN_RCV_ERROR:
-                       Val64RxHwErrs =
-                               GetStatVal(pAC, IoC, 0, SK_PNMI_HRX_MISSED, NetIndex) +
-                               GetStatVal(pAC, IoC, 0, SK_PNMI_HRX_FRAMING, NetIndex) +
-                               GetStatVal(pAC, IoC, 0, SK_PNMI_HRX_OVERFLOW, NetIndex)+
-                               GetStatVal(pAC, IoC, 0, SK_PNMI_HRX_JABBER, NetIndex) +
-                               GetStatVal(pAC, IoC, 0, SK_PNMI_HRX_CARRIER, NetIndex) +
-                               GetStatVal(pAC, IoC, 0, SK_PNMI_HRX_IRLENGTH, NetIndex)+
-                               GetStatVal(pAC, IoC, 0, SK_PNMI_HRX_SYMBOL, NetIndex) +
-                               GetStatVal(pAC, IoC, 0, SK_PNMI_HRX_SHORTS, NetIndex) +
-                               GetStatVal(pAC, IoC, 0, SK_PNMI_HRX_RUNT, NetIndex) +
-                               GetStatVal(pAC, IoC, 0, SK_PNMI_HRX_TOO_LONG, NetIndex) +
-                               GetStatVal(pAC, IoC, 0, SK_PNMI_HRX_FCS, NetIndex) +
-                               GetStatVal(pAC, IoC, 0, SK_PNMI_HRX_CEXT, NetIndex);
-               break;
-
-               case OID_SKGE_TX_HW_ERROR_CTS:
-               case OID_SKGE_OUT_ERROR_CTS:
-               case OID_GEN_XMIT_ERROR:
-                       Val64TxHwErrs =
-                               GetStatVal(pAC, IoC, 0, SK_PNMI_HTX_EXCESS_COL, NetIndex) +
-                               GetStatVal(pAC, IoC, 0, SK_PNMI_HTX_LATE_COL, NetIndex)+
-                               GetStatVal(pAC, IoC, 0, SK_PNMI_HTX_UNDERRUN, NetIndex)+
-                               GetStatVal(pAC, IoC, 0, SK_PNMI_HTX_CARRIER, NetIndex);
-                       break;
-               }
-       }
-
-       /*
-        * Retrieve value
-        */
-       switch (Id) {
-
-       case OID_SKGE_SUPPORTED_LIST:
-               Len = ID_TABLE_SIZE * sizeof(SK_U32);
-               if (*pLen < Len) {
-
-                       *pLen = Len;
-                       return (SK_PNMI_ERR_TOO_SHORT);
-               }
-               for (Offset = 0, Index = 0; Offset < Len;
-                       Offset += sizeof(SK_U32), Index ++) {
-
-                       Val32 = (SK_U32)IdTable[Index].Id;
-                       SK_PNMI_STORE_U32(pBuf + Offset, Val32);
-               }
-               *pLen = Len;
-               break;
-
-       case OID_SKGE_PORT_NUMBER:
-               Val32 = (SK_U32)pAC->GIni.GIMacsFound;
-               SK_PNMI_STORE_U32(pBuf, Val32);
-               *pLen = sizeof(SK_U32);
-               break;
-
-       case OID_SKGE_DEVICE_TYPE:
-               Val32 = (SK_U32)pAC->Pnmi.DeviceType;
-               SK_PNMI_STORE_U32(pBuf, Val32);
-               *pLen = sizeof(SK_U32);
-               break;
-
-       case OID_SKGE_DRIVER_DESCR:
-               if (pAC->Pnmi.pDriverDescription == NULL) {
-
-                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR007,
-                               SK_PNMI_ERR007MSG);
-
-                       *pLen = 0;
-                       return (SK_PNMI_ERR_GENERAL);
-               }
-
-               Len = SK_STRLEN(pAC->Pnmi.pDriverDescription) + 1;
-               if (Len > SK_PNMI_STRINGLEN1) {
-
-                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR029,
-                               SK_PNMI_ERR029MSG);
-
-                       *pLen = 0;
-                       return (SK_PNMI_ERR_GENERAL);
-               }
-
-               if (*pLen < Len) {
-
-                       *pLen = Len;
-                       return (SK_PNMI_ERR_TOO_SHORT);
-               }
-               *pBuf = (char)(Len - 1);
-               SK_MEMCPY(pBuf + 1, pAC->Pnmi.pDriverDescription, Len - 1);
-               *pLen = Len;
-               break;
-
-       case OID_SKGE_DRIVER_VERSION:
-               if (pAC->Pnmi.pDriverVersion == NULL) {
-
-                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR030,
-                               SK_PNMI_ERR030MSG);
-
-                       *pLen = 0;
-                       return (SK_PNMI_ERR_GENERAL);
-               }
-
-               Len = SK_STRLEN(pAC->Pnmi.pDriverVersion) + 1;
-               if (Len > SK_PNMI_STRINGLEN1) {
-
-                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR031,
-                               SK_PNMI_ERR031MSG);
-
-                       *pLen = 0;
-                       return (SK_PNMI_ERR_GENERAL);
-               }
-
-               if (*pLen < Len) {
-
-                       *pLen = Len;
-                       return (SK_PNMI_ERR_TOO_SHORT);
-               }
-               *pBuf = (char)(Len - 1);
-               SK_MEMCPY(pBuf + 1, pAC->Pnmi.pDriverVersion, Len - 1);
-               *pLen = Len;
-               break;
-
-       case OID_SKGE_HW_DESCR:
-               /*
-                * The hardware description is located in the VPD. This
-                * query may move to the initialisation routine. But
-                * the VPD data is cached and therefore a call here
-                * will not make much difference.
-                */
-               Len = 256;
-               if (VpdRead(pAC, IoC, VPD_NAME, Buf, (int *)&Len) > 0) {
-
-                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR032,
-                               SK_PNMI_ERR032MSG);
-
-                       *pLen = 0;
-                       return (SK_PNMI_ERR_GENERAL);
-               }
-               Len ++;
-               if (Len > SK_PNMI_STRINGLEN1) {
-
-                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR033,
-                               SK_PNMI_ERR033MSG);
-
-                       *pLen = 0;
-                       return (SK_PNMI_ERR_GENERAL);
-               }
-               if (*pLen < Len) {
-
-                       *pLen = Len;
-                       return (SK_PNMI_ERR_TOO_SHORT);
-               }
-               *pBuf = (char)(Len - 1);
-               SK_MEMCPY(pBuf + 1, Buf, Len - 1);
-               *pLen = Len;
-               break;
-
-       case OID_SKGE_HW_VERSION:
-               /* Oh, I love to do some string manipulation */
-               if (*pLen < 5) {
-
-                       *pLen = 5;
-                       return (SK_PNMI_ERR_TOO_SHORT);
-               }
-               Val8 = (SK_U8)pAC->GIni.GIPciHwRev;
-               pBuf[0] = 4;
-               pBuf[1] = 'v';
-               pBuf[2] = (char)(0x30 | ((Val8 >> 4) & 0x0F));
-               pBuf[3] = '.';
-               pBuf[4] = (char)(0x30 | (Val8 & 0x0F));
-               *pLen = 5;
-               break;
-
-       case OID_SKGE_CHIPSET:
-               Val16 = pAC->Pnmi.Chipset;
-               SK_PNMI_STORE_U16(pBuf, Val16);
-               *pLen = sizeof(SK_U16);
-               break;
-
-       case OID_SKGE_BUS_TYPE:
-               *pBuf = (char)SK_PNMI_BUS_PCI;
-               *pLen = sizeof(char);
-               break;
-
-       case OID_SKGE_BUS_SPEED:
-               *pBuf = pAC->Pnmi.PciBusSpeed;
-               *pLen = sizeof(char);
-               break;
-
-       case OID_SKGE_BUS_WIDTH:
-               *pBuf = pAC->Pnmi.PciBusWidth;
-               *pLen = sizeof(char);
-               break;
-
-       case OID_SKGE_RESULT:
-               Val32 = pAC->Pnmi.TestResult;
-               SK_PNMI_STORE_U32(pBuf, Val32);
-               *pLen = sizeof(SK_U32);
-               break;
-
-       case OID_SKGE_SENSOR_NUMBER:
-               *pBuf = (char)pAC->I2c.MaxSens;
-               *pLen = sizeof(char);
-               break;
-
-       case OID_SKGE_CHKSM_NUMBER:
-               *pBuf = SKCS_NUM_PROTOCOLS;
-               *pLen = sizeof(char);
-               break;
-
-       case OID_SKGE_TRAP_NUMBER:
-               GetTrapQueueLen(pAC, &Len, &Val);
-               Val32 = (SK_U32)Val;
-               SK_PNMI_STORE_U32(pBuf, Val32);
-               *pLen = sizeof(SK_U32);
-               break;
-
-       case OID_SKGE_TRAP:
-               GetTrapQueueLen(pAC, &Len, &Val);
-               if (*pLen < Len) {
-
-                       *pLen = Len;
-                       return (SK_PNMI_ERR_TOO_SHORT);
-               }
-               CopyTrapQueue(pAC, pBuf);
-               *pLen = Len;
-               break;
-
-       case OID_SKGE_RLMT_MONITOR_NUMBER:
-/* XXX Not yet implemented by RLMT therefore we return zero elements */
-               Val32 = 0;
-               SK_PNMI_STORE_U32(pBuf, Val32);
-               *pLen = sizeof(SK_U32);
-               break;
-
-       case OID_SKGE_TX_SW_QUEUE_LEN:
-               /* 2002-09-17 pweber: For XMAC, use the frozen sw counters (BufPort) */
-               if (MacType == SK_MAC_XMAC) {
-                       /* Dual net mode */
-                       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
-                               Val64 = pAC->Pnmi.BufPort[NetIndex].TxSwQueueLen;
-                       }
-                       /* Single net mode */
-                       else {
-                               Val64 = pAC->Pnmi.BufPort[0].TxSwQueueLen +
-                                       pAC->Pnmi.BufPort[1].TxSwQueueLen;
-                       }
-               }
-               else {
-                       /* Dual net mode */
-                       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
-                               Val64 = pAC->Pnmi.Port[NetIndex].TxSwQueueLen;
-                       }
-                       /* Single net mode */
-                       else {
-                               Val64 = pAC->Pnmi.Port[0].TxSwQueueLen +
-                                       pAC->Pnmi.Port[1].TxSwQueueLen;
-                       }
-               }
-               SK_PNMI_STORE_U64(pBuf, Val64);
-               *pLen = sizeof(SK_U64);
-               break;
-
-
-       case OID_SKGE_TX_SW_QUEUE_MAX:
-               /* 2002-09-17 pweber: For XMAC, use the frozen sw counters (BufPort) */
-               if (MacType == SK_MAC_XMAC) {
-                       /* Dual net mode */
-                       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
-                               Val64 = pAC->Pnmi.BufPort[NetIndex].TxSwQueueMax;
-                       }
-                       /* Single net mode */
-                       else {
-                               Val64 = pAC->Pnmi.BufPort[0].TxSwQueueMax +
-                                       pAC->Pnmi.BufPort[1].TxSwQueueMax;
-                       }
-               }
-               else {
-                       /* Dual net mode */
-                       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
-                               Val64 = pAC->Pnmi.Port[NetIndex].TxSwQueueMax;
-                       }
-                       /* Single net mode */
-                       else {
-                               Val64 = pAC->Pnmi.Port[0].TxSwQueueMax +
-                                       pAC->Pnmi.Port[1].TxSwQueueMax;
-                       }
-               }
-               SK_PNMI_STORE_U64(pBuf, Val64);
-               *pLen = sizeof(SK_U64);
-               break;
-
-       case OID_SKGE_TX_RETRY:
-               /* 2002-09-17 pweber: For XMAC, use the frozen sw counters (BufPort) */
-               if (MacType == SK_MAC_XMAC) {
-                       /* Dual net mode */
-                       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
-                               Val64 = pAC->Pnmi.BufPort[NetIndex].TxRetryCts;
-                       }
-                       /* Single net mode */
-                       else {
-                               Val64 = pAC->Pnmi.BufPort[0].TxRetryCts +
-                                       pAC->Pnmi.BufPort[1].TxRetryCts;
-                       }
-               }
-               else {
-                       /* Dual net mode */
-                       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
-                               Val64 = pAC->Pnmi.Port[NetIndex].TxRetryCts;
-                       }
-                       /* Single net mode */
-                       else {
-                               Val64 = pAC->Pnmi.Port[0].TxRetryCts +
-                                       pAC->Pnmi.Port[1].TxRetryCts;
-                       }
-               }
-               SK_PNMI_STORE_U64(pBuf, Val64);
-               *pLen = sizeof(SK_U64);
-               break;
-
-       case OID_SKGE_RX_INTR_CTS:
-               /* 2002-09-17 pweber: For XMAC, use the frozen sw counters (BufPort) */
-               if (MacType == SK_MAC_XMAC) {
-                       /* Dual net mode */
-                       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
-                               Val64 = pAC->Pnmi.BufPort[NetIndex].RxIntrCts;
-                       }
-                       /* Single net mode */
-                       else {
-                               Val64 = pAC->Pnmi.BufPort[0].RxIntrCts +
-                                       pAC->Pnmi.BufPort[1].RxIntrCts;
-                       }
-               }
-               else {
-                       /* Dual net mode */
-                       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
-                               Val64 = pAC->Pnmi.Port[NetIndex].RxIntrCts;
-                       }
-                       /* Single net mode */
-                       else {
-                               Val64 = pAC->Pnmi.Port[0].RxIntrCts +
-                                       pAC->Pnmi.Port[1].RxIntrCts;
-                       }
-               }
-               SK_PNMI_STORE_U64(pBuf, Val64);
-               *pLen = sizeof(SK_U64);
-               break;
-
-       case OID_SKGE_TX_INTR_CTS:
-               /* 2002-09-17 pweber: For XMAC, use the frozen sw counters (BufPort) */
-               if (MacType == SK_MAC_XMAC) {
-                       /* Dual net mode */
-                       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
-                               Val64 = pAC->Pnmi.BufPort[NetIndex].TxIntrCts;
-                       }
-                       /* Single net mode */
-                       else {
-                               Val64 = pAC->Pnmi.BufPort[0].TxIntrCts +
-                                       pAC->Pnmi.BufPort[1].TxIntrCts;
-                       }
-               }
-               else {
-                       /* Dual net mode */
-                       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
-                               Val64 = pAC->Pnmi.Port[NetIndex].TxIntrCts;
-                       }
-                       /* Single net mode */
-                       else {
-                               Val64 = pAC->Pnmi.Port[0].TxIntrCts +
-                                       pAC->Pnmi.Port[1].TxIntrCts;
-                       }
-               }
-               SK_PNMI_STORE_U64(pBuf, Val64);
-               *pLen = sizeof(SK_U64);
-               break;
-
-       case OID_SKGE_RX_NO_BUF_CTS:
-               /* 2002-09-17 pweber: For XMAC, use the frozen sw counters (BufPort) */
-               if (MacType == SK_MAC_XMAC) {
-                       /* Dual net mode */
-                       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
-                               Val64 = pAC->Pnmi.BufPort[NetIndex].RxNoBufCts;
-                       }
-                       /* Single net mode */
-                       else {
-                               Val64 = pAC->Pnmi.BufPort[0].RxNoBufCts +
-                                       pAC->Pnmi.BufPort[1].RxNoBufCts;
-                       }
-               }
-               else {
-                       /* Dual net mode */
-                       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
-                               Val64 = pAC->Pnmi.Port[NetIndex].RxNoBufCts;
-                       }
-                       /* Single net mode */
-                       else {
-                               Val64 = pAC->Pnmi.Port[0].RxNoBufCts +
-                                       pAC->Pnmi.Port[1].RxNoBufCts;
-                       }
-               }
-               SK_PNMI_STORE_U64(pBuf, Val64);
-               *pLen = sizeof(SK_U64);
-               break;
-
-       case OID_SKGE_TX_NO_BUF_CTS:
-               /* 2002-09-17 pweber: For XMAC, use the frozen sw counters (BufPort) */
-               if (MacType == SK_MAC_XMAC) {
-                       /* Dual net mode */
-                       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
-                               Val64 = pAC->Pnmi.BufPort[NetIndex].TxNoBufCts;
-                       }
-                       /* Single net mode */
-                       else {
-                               Val64 = pAC->Pnmi.BufPort[0].TxNoBufCts +
-                                       pAC->Pnmi.BufPort[1].TxNoBufCts;
-                       }
-               }
-               else {
-                       /* Dual net mode */
-                       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
-                               Val64 = pAC->Pnmi.Port[NetIndex].TxNoBufCts;
-                       }
-                       /* Single net mode */
-                       else {
-                               Val64 = pAC->Pnmi.Port[0].TxNoBufCts +
-                                       pAC->Pnmi.Port[1].TxNoBufCts;
-                       }
-               }
-               SK_PNMI_STORE_U64(pBuf, Val64);
-               *pLen = sizeof(SK_U64);
-               break;
-
-       case OID_SKGE_TX_USED_DESCR_NO:
-               /* 2002-09-17 pweber: For XMAC, use the frozen sw counters (BufPort) */
-               if (MacType == SK_MAC_XMAC) {
-                       /* Dual net mode */
-                       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
-                               Val64 = pAC->Pnmi.BufPort[NetIndex].TxUsedDescrNo;
-                       }
-                       /* Single net mode */
-                       else {
-                               Val64 = pAC->Pnmi.BufPort[0].TxUsedDescrNo +
-                                       pAC->Pnmi.BufPort[1].TxUsedDescrNo;
-                       }
-               }
-               else {
-                       /* Dual net mode */
-                       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
-                               Val64 = pAC->Pnmi.Port[NetIndex].TxUsedDescrNo;
-                       }
-                       /* Single net mode */
-                       else {
-                               Val64 = pAC->Pnmi.Port[0].TxUsedDescrNo +
-                                       pAC->Pnmi.Port[1].TxUsedDescrNo;
-                       }
-               }
-               SK_PNMI_STORE_U64(pBuf, Val64);
-               *pLen = sizeof(SK_U64);
-               break;
-
-       case OID_SKGE_RX_DELIVERED_CTS:
-               /* 2002-09-17 pweber: For XMAC, use the frozen sw counters (BufPort) */
-               if (MacType == SK_MAC_XMAC) {
-                       /* Dual net mode */
-                       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
-                               Val64 = pAC->Pnmi.BufPort[NetIndex].RxDeliveredCts;
-                       }
-                       /* Single net mode */
-                       else {
-                               Val64 = pAC->Pnmi.BufPort[0].RxDeliveredCts +
-                                       pAC->Pnmi.BufPort[1].RxDeliveredCts;
-                       }
-               }
-               else {
-                       /* Dual net mode */
-                       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
-                               Val64 = pAC->Pnmi.Port[NetIndex].RxDeliveredCts;
-                       }
-                       /* Single net mode */
-                       else {
-                               Val64 = pAC->Pnmi.Port[0].RxDeliveredCts +
-                                       pAC->Pnmi.Port[1].RxDeliveredCts;
-                       }
-               }
-               SK_PNMI_STORE_U64(pBuf, Val64);
-               *pLen = sizeof(SK_U64);
-               break;
-
-       case OID_SKGE_RX_OCTETS_DELIV_CTS:
-               /* 2002-09-17 pweber: For XMAC, use the frozen sw counters (BufPort) */
-               if (MacType == SK_MAC_XMAC) {
-                       /* Dual net mode */
-                       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
-                               Val64 = pAC->Pnmi.BufPort[NetIndex].RxOctetsDeliveredCts;
-                       }
-                       /* Single net mode */
-                       else {
-                               Val64 = pAC->Pnmi.BufPort[0].RxOctetsDeliveredCts +
-                                       pAC->Pnmi.BufPort[1].RxOctetsDeliveredCts;
-                       }
-               }
-               else {
-                       /* Dual net mode */
-                       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
-                               Val64 = pAC->Pnmi.Port[NetIndex].RxOctetsDeliveredCts;
-                       }
-                       /* Single net mode */
-                       else {
-                               Val64 = pAC->Pnmi.Port[0].RxOctetsDeliveredCts +
-                                       pAC->Pnmi.Port[1].RxOctetsDeliveredCts;
-                       }
-               }
-               SK_PNMI_STORE_U64(pBuf, Val64);
-               *pLen = sizeof(SK_U64);
-               break;
-
-       case OID_SKGE_RX_HW_ERROR_CTS:
-               SK_PNMI_STORE_U64(pBuf, Val64RxHwErrs);
-               *pLen = sizeof(SK_U64);
-               break;
-
-       case OID_SKGE_TX_HW_ERROR_CTS:
-               SK_PNMI_STORE_U64(pBuf, Val64TxHwErrs);
-               *pLen = sizeof(SK_U64);
-               break;
-
-       case OID_SKGE_IN_ERRORS_CTS:
-               /* 2002-09-17 pweber: For XMAC, use the frozen sw counters (BufPort) */
-               if (MacType == SK_MAC_XMAC) {
-                       /* Dual net mode */
-                       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
-                               Val64 = Val64RxHwErrs + pAC->Pnmi.BufPort[NetIndex].RxNoBufCts;
-                       }
-                       /* Single net mode */
-                       else {
-                               Val64 = Val64RxHwErrs +
-                                       pAC->Pnmi.BufPort[0].RxNoBufCts +
-                                       pAC->Pnmi.BufPort[1].RxNoBufCts;
-                       }
-               }
-               else {
-                       /* Dual net mode */
-                       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
-                               Val64 = Val64RxHwErrs + pAC->Pnmi.Port[NetIndex].RxNoBufCts;
-                       }
-                       /* Single net mode */
-                       else {
-                               Val64 = Val64RxHwErrs +
-                                       pAC->Pnmi.Port[0].RxNoBufCts +
-                                       pAC->Pnmi.Port[1].RxNoBufCts;
-                       }
-               }
-               SK_PNMI_STORE_U64(pBuf, Val64);
-               *pLen = sizeof(SK_U64);
-               break;
-
-       case OID_SKGE_OUT_ERROR_CTS:
-               /* 2002-09-17 pweber: For XMAC, use the frozen sw counters (BufPort) */
-               if (MacType == SK_MAC_XMAC) {
-                       /* Dual net mode */
-                       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
-                               Val64 = Val64TxHwErrs + pAC->Pnmi.BufPort[NetIndex].TxNoBufCts;
-                       }
-                       /* Single net mode */
-                       else {
-                               Val64 = Val64TxHwErrs +
-                                       pAC->Pnmi.BufPort[0].TxNoBufCts +
-                                       pAC->Pnmi.BufPort[1].TxNoBufCts;
-                       }
-               }
-               else {
-                       /* Dual net mode */
-                       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
-                               Val64 = Val64TxHwErrs + pAC->Pnmi.Port[NetIndex].TxNoBufCts;
-                       }
-                       /* Single net mode */
-                       else {
-                               Val64 = Val64TxHwErrs +
-                                       pAC->Pnmi.Port[0].TxNoBufCts +
-                                       pAC->Pnmi.Port[1].TxNoBufCts;
-                       }
-               }
-               SK_PNMI_STORE_U64(pBuf, Val64);
-               *pLen = sizeof(SK_U64);
-               break;
-
-       case OID_SKGE_ERR_RECOVERY_CTS:
-               /* 2002-09-17 pweber: For XMAC, use the frozen sw counters (BufPort) */
-               if (MacType == SK_MAC_XMAC) {
-                       /* Dual net mode */
-                       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
-                               Val64 = pAC->Pnmi.BufPort[NetIndex].ErrRecoveryCts;
-                       }
-                       /* Single net mode */
-                       else {
-                               Val64 = pAC->Pnmi.BufPort[0].ErrRecoveryCts +
-                                       pAC->Pnmi.BufPort[1].ErrRecoveryCts;
-                       }
-               }
-               else {
-                       /* Dual net mode */
-                       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
-                               Val64 = pAC->Pnmi.Port[NetIndex].ErrRecoveryCts;
-                       }
-                       /* Single net mode */
-                       else {
-                               Val64 = pAC->Pnmi.Port[0].ErrRecoveryCts +
-                                       pAC->Pnmi.Port[1].ErrRecoveryCts;
-                       }
-               }
-               SK_PNMI_STORE_U64(pBuf, Val64);
-               *pLen = sizeof(SK_U64);
-               break;
-
-       case OID_SKGE_SYSUPTIME:
-               Val64 = SK_PNMI_HUNDREDS_SEC(SkOsGetTime(pAC));
-               Val64 -= pAC->Pnmi.StartUpTime;
-               SK_PNMI_STORE_U64(pBuf, Val64);
-               *pLen = sizeof(SK_U64);
-               break;
-
-       case OID_SKGE_MDB_VERSION:
-               Val32 = SK_PNMI_MDB_VERSION;
-               SK_PNMI_STORE_U32(pBuf, Val32);
-               *pLen = sizeof(SK_U32);
-               break;
-
-       case OID_GEN_RCV_ERROR:
-               /* 2002-09-17 pweber: For XMAC, use the frozen sw counters (BufPort) */
-               if (MacType == SK_MAC_XMAC) {
-                       Val64 = Val64RxHwErrs + pAC->Pnmi.BufPort[NetIndex].RxNoBufCts;
-               }
-               else {
-                       Val64 = Val64RxHwErrs + pAC->Pnmi.Port[NetIndex].RxNoBufCts;
-               }
-
-               /*
-                * by default 32bit values are evaluated
-                */
-               if (!Is64BitReq) {
-                       Val32 = (SK_U32)Val64;
-                       SK_PNMI_STORE_U32(pBuf, Val32);
-                       *pLen = sizeof(SK_U32);
-               }
-               else {
-                       SK_PNMI_STORE_U64(pBuf, Val64);
-                       *pLen = sizeof(SK_U64);
-               }
-               break;
-
-       case OID_GEN_XMIT_ERROR:
-               /* 2002-09-17 pweber: For XMAC, use the frozen sw counters (BufPort) */
-               if (MacType == SK_MAC_XMAC) {
-                       Val64 = Val64TxHwErrs + pAC->Pnmi.BufPort[NetIndex].TxNoBufCts;
-               }
-               else {
-                       Val64 = Val64TxHwErrs + pAC->Pnmi.Port[NetIndex].TxNoBufCts;
-               }
-
-               /*
-                * by default 32bit values are evaluated
-                */
-               if (!Is64BitReq) {
-                       Val32 = (SK_U32)Val64;
-                       SK_PNMI_STORE_U32(pBuf, Val32);
-                       *pLen = sizeof(SK_U32);
-               }
-               else {
-                       SK_PNMI_STORE_U64(pBuf, Val64);
-                       *pLen = sizeof(SK_U64);
-               }
-               break;
-
-       case OID_GEN_RCV_NO_BUFFER:
-               /* 2002-09-17 pweber: For XMAC, use the frozen sw counters (BufPort) */
-               if (MacType == SK_MAC_XMAC) {
-                       Val64 = pAC->Pnmi.BufPort[NetIndex].RxNoBufCts;
-               }
-               else {
-                       Val64 = pAC->Pnmi.Port[NetIndex].RxNoBufCts;
-               }
-
-               /*
-                * by default 32bit values are evaluated
-                */
-               if (!Is64BitReq) {
-                       Val32 = (SK_U32)Val64;
-                       SK_PNMI_STORE_U32(pBuf, Val32);
-                       *pLen = sizeof(SK_U32);
-               }
-               else {
-                       SK_PNMI_STORE_U64(pBuf, Val64);
-                       *pLen = sizeof(SK_U64);
-               }
-               break;
-
-       case OID_GEN_TRANSMIT_QUEUE_LENGTH:
-               Val32 = (SK_U32)pAC->Pnmi.Port[NetIndex].TxSwQueueLen;
-               SK_PNMI_STORE_U32(pBuf, Val32);
-               *pLen = sizeof(SK_U32);
-               break;
-
-       default:
-               SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR034,
-                       SK_PNMI_ERR034MSG);
-
-               *pLen = 0;
-               return (SK_PNMI_ERR_GENERAL);
-       }
-
-       if (Id == OID_SKGE_RX_HW_ERROR_CTS ||
-               Id == OID_SKGE_TX_HW_ERROR_CTS ||
-               Id == OID_SKGE_IN_ERRORS_CTS ||
-               Id == OID_SKGE_OUT_ERROR_CTS ||
-               Id == OID_GEN_XMIT_ERROR ||
-               Id == OID_GEN_RCV_ERROR) {
-
-               pAC->Pnmi.MacUpdatedFlag --;
-       }
-
-       return (SK_PNMI_ERR_OK);
-}
-
-/*****************************************************************************
- *
- * Rlmt - OID handler function of OID_SKGE_RLMT_XXX single instance.
- *
- * Description:
- *     Get/Presets/Sets the RLMT OIDs.
- *
- * Returns:
- *     SK_PNMI_ERR_OK           The request was successfully performed.
- *     SK_PNMI_ERR_GENERAL      A general severe internal error occured.
- *     SK_PNMI_ERR_TOO_SHORT    The passed buffer is too short to contain
- *                              the correct data (e.g. a 32bit value is
- *                              needed, but a 16 bit value was passed).
- *     SK_PNMI_ERR_BAD_VALUE    The passed value is not in the valid
- *                              value range.
- *     SK_PNMI_ERR_READ_ONLY    The OID is read-only and cannot be set.
- *     SK_PNMI_ERR_UNKNOWN_INST The requested instance of the OID doesn't
- *                               exist (e.g. port instance 3 on a two port
- *                              adapter.
- */
-PNMI_STATIC int Rlmt(
-SK_AC *pAC,            /* Pointer to adapter context */
-SK_IOC IoC,            /* IO context handle */
-int Action,            /* Get/PreSet/Set action */
-SK_U32 Id,             /* Object ID that is to be processed */
-char *pBuf,            /* Buffer to which to mgmt data will be retrieved */
-unsigned int *pLen,    /* On call: buffer length. On return: used buffer */
-SK_U32 Instance,       /* Instance (1..n) that is to be queried or -1 */
-unsigned int TableIndex, /* Index to the Id table */
-SK_U32 NetIndex)       /* NetIndex (0..n), in single net mode allways zero */
-{
-       int             Ret;
-       unsigned int    PhysPortIndex;
-       unsigned int    PhysPortMax;
-       SK_EVPARA       EventParam;
-       SK_U32          Val32;
-       SK_U64          Val64;
-
-
-       /*
-        * Check instance. Only single instance OIDs are allowed here.
-        */
-       if (Instance != (SK_U32)(-1) && Instance != 1) {
-
-               *pLen = 0;
-               return (SK_PNMI_ERR_UNKNOWN_INST);
-       }
-
-       /*
-        * Perform the requested action
-        */
-       if (Action == SK_PNMI_GET) {
-
-               /*
-                * Check if the buffer length is large enough.
-                */
-
-               switch (Id) {
-
-               case OID_SKGE_RLMT_MODE:
-               case OID_SKGE_RLMT_PORT_ACTIVE:
-               case OID_SKGE_RLMT_PORT_PREFERRED:
-                       if (*pLen < sizeof(SK_U8)) {
-
-                               *pLen = sizeof(SK_U8);
-                               return (SK_PNMI_ERR_TOO_SHORT);
-                       }
-                       break;
-
-               case OID_SKGE_RLMT_PORT_NUMBER:
-                       if (*pLen < sizeof(SK_U32)) {
-
-                               *pLen = sizeof(SK_U32);
-                               return (SK_PNMI_ERR_TOO_SHORT);
-                       }
-                       break;
-
-               case OID_SKGE_RLMT_CHANGE_CTS:
-               case OID_SKGE_RLMT_CHANGE_TIME:
-               case OID_SKGE_RLMT_CHANGE_ESTIM:
-               case OID_SKGE_RLMT_CHANGE_THRES:
-                       if (*pLen < sizeof(SK_U64)) {
-
-                               *pLen = sizeof(SK_U64);
-                               return (SK_PNMI_ERR_TOO_SHORT);
-                       }
-                       break;
-
-               default:
-                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR035,
-                               SK_PNMI_ERR035MSG);
-
-                       *pLen = 0;
-                       return (SK_PNMI_ERR_GENERAL);
-               }
-
-               /*
-                * Update RLMT statistic and increment semaphores to indicate
-                * that an update was already done. Maybe RLMT will hold its
-                * statistic always up to date some time. Then we can
-                * remove this type of call.
-                */
-               if ((Ret = RlmtUpdate(pAC, IoC, NetIndex)) != SK_PNMI_ERR_OK) {
-
-                       *pLen = 0;
-                       return (Ret);
-               }
-               pAC->Pnmi.RlmtUpdatedFlag ++;
-
-               /*
-                * Retrieve Value
-               */
-               switch (Id) {
-
-               case OID_SKGE_RLMT_MODE:
-                       *pBuf = (char)pAC->Rlmt.Net[0].RlmtMode;
-                       *pLen = sizeof(char);
-                       break;
-
-               case OID_SKGE_RLMT_PORT_NUMBER:
-                       Val32 = (SK_U32)pAC->GIni.GIMacsFound;
-                       SK_PNMI_STORE_U32(pBuf, Val32);
-                       *pLen = sizeof(SK_U32);
-                       break;
-
-               case OID_SKGE_RLMT_PORT_ACTIVE:
-                       *pBuf = 0;
-                       /*
-                        * If multiple ports may become active this OID
-                        * doesn't make sense any more. A new variable in
-                        * the port structure should be created. However,
-                        * for this variable the first active port is
-                        * returned.
-                        */
-                       PhysPortMax = pAC->GIni.GIMacsFound;
-
-                       for (PhysPortIndex = 0; PhysPortIndex < PhysPortMax;
-                               PhysPortIndex ++) {
-
-                               if (pAC->Pnmi.Port[PhysPortIndex].ActiveFlag) {
-
-                                       *pBuf = (char)SK_PNMI_PORT_PHYS2LOG(PhysPortIndex);
-                                       break;
-                               }
-                       }
-                       *pLen = sizeof(char);
-                       break;
-
-               case OID_SKGE_RLMT_PORT_PREFERRED:
-                       *pBuf = (char)SK_PNMI_PORT_PHYS2LOG(pAC->Rlmt.Net[NetIndex].Preference);
-                       *pLen = sizeof(char);
-                       break;
-
-               case OID_SKGE_RLMT_CHANGE_CTS:
-                       Val64 = pAC->Pnmi.RlmtChangeCts;
-                       SK_PNMI_STORE_U64(pBuf, Val64);
-                       *pLen = sizeof(SK_U64);
-                       break;
-
-               case OID_SKGE_RLMT_CHANGE_TIME:
-                       Val64 = pAC->Pnmi.RlmtChangeTime;
-                       SK_PNMI_STORE_U64(pBuf, Val64);
-                       *pLen = sizeof(SK_U64);
-                       break;
-
-               case OID_SKGE_RLMT_CHANGE_ESTIM:
-                       Val64 = pAC->Pnmi.RlmtChangeEstimate.Estimate;
-                       SK_PNMI_STORE_U64(pBuf, Val64);
-                       *pLen = sizeof(SK_U64);
-                       break;
-
-               case OID_SKGE_RLMT_CHANGE_THRES:
-                       Val64 = pAC->Pnmi.RlmtChangeThreshold;
-                       SK_PNMI_STORE_U64(pBuf, Val64);
-                       *pLen = sizeof(SK_U64);
-                       break;
-
-               default:
-                       SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_ERR,
-                               ("Rlmt: Unknown OID should be handled before"));
-
-                       pAC->Pnmi.RlmtUpdatedFlag --;
-                       *pLen = 0;
-                       return (SK_PNMI_ERR_GENERAL);
-               }
-
-               pAC->Pnmi.RlmtUpdatedFlag --;
-       }
-       else {
-               /* Perform a preset or set */
-               switch (Id) {
-
-               case OID_SKGE_RLMT_MODE:
-                       /* Check if the buffer length is plausible */
-                       if (*pLen < sizeof(char)) {
-
-                               *pLen = sizeof(char);
-                               return (SK_PNMI_ERR_TOO_SHORT);
-                       }
-                       /* Check if the value range is correct */
-                       if (*pLen != sizeof(char) ||
-                               (*pBuf & SK_PNMI_RLMT_MODE_CHK_LINK) == 0 ||
-                               *(SK_U8 *)pBuf > 15) {
-
-                               *pLen = 0;
-                               return (SK_PNMI_ERR_BAD_VALUE);
-                       }
-                       /* The preset ends here */
-                       if (Action == SK_PNMI_PRESET) {
-
-                               *pLen = 0;
-                               return (SK_PNMI_ERR_OK);
-                       }
-                       /* Send an event to RLMT to change the mode */
-                       SK_MEMSET((char *)&EventParam, 0, sizeof(EventParam));
-                       EventParam.Para32[0] |= (SK_U32)(*pBuf);
-                       EventParam.Para32[1] = 0;
-                       if (SkRlmtEvent(pAC, IoC, SK_RLMT_MODE_CHANGE,
-                               EventParam) > 0) {
-
-                               SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR037,
-                                       SK_PNMI_ERR037MSG);
-
-                               *pLen = 0;
-                               return (SK_PNMI_ERR_GENERAL);
-                       }
-                       break;
-
-               case OID_SKGE_RLMT_PORT_PREFERRED:
-                       /* Check if the buffer length is plausible */
-                       if (*pLen < sizeof(char)) {
-
-                               *pLen = sizeof(char);
-                               return (SK_PNMI_ERR_TOO_SHORT);
-                       }
-                       /* Check if the value range is correct */
-                       if (*pLen != sizeof(char) || *(SK_U8 *)pBuf >
-                               (SK_U8)pAC->GIni.GIMacsFound) {
-
-                               *pLen = 0;
-                               return (SK_PNMI_ERR_BAD_VALUE);
-                       }
-                       /* The preset ends here */
-                       if (Action == SK_PNMI_PRESET) {
-
-                               *pLen = 0;
-                               return (SK_PNMI_ERR_OK);
-                       }
-
-                       /*
-                        * Send an event to RLMT change the preferred port.
-                        * A param of -1 means automatic mode. RLMT will
-                        * make the decision which is the preferred port.
-                        */
-                       SK_MEMSET((char *)&EventParam, 0, sizeof(EventParam));
-                       EventParam.Para32[0] = (SK_U32)(*pBuf) - 1;
-                       EventParam.Para32[1] = NetIndex;
-                       if (SkRlmtEvent(pAC, IoC, SK_RLMT_PREFPORT_CHANGE,
-                               EventParam) > 0) {
-
-                               SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR038,
-                                       SK_PNMI_ERR038MSG);
-
-                               *pLen = 0;
-                               return (SK_PNMI_ERR_GENERAL);
-                       }
-                       break;
-
-               case OID_SKGE_RLMT_CHANGE_THRES:
-                       /* Check if the buffer length is plausible */
-                       if (*pLen < sizeof(SK_U64)) {
-
-                               *pLen = sizeof(SK_U64);
-                               return (SK_PNMI_ERR_TOO_SHORT);
-                       }
-                       /*
-                        * There are not many restrictions to the
-                        * value range.
-                        */
-                       if (*pLen != sizeof(SK_U64)) {
-
-                               *pLen = 0;
-                               return (SK_PNMI_ERR_BAD_VALUE);
-                       }
-                       /* A preset ends here */
-                       if (Action == SK_PNMI_PRESET) {
-
-                               *pLen = 0;
-                               return (SK_PNMI_ERR_OK);
-                       }
-                       /*
-                        * Store the new threshold, which will be taken
-                        * on the next timer event.
-                        */
-                       SK_PNMI_READ_U64(pBuf, Val64);
-                       pAC->Pnmi.RlmtChangeThreshold = Val64;
-                       break;
-
-               default:
-                       /* The other OIDs are not be able for set */
-                       *pLen = 0;
-                       return (SK_PNMI_ERR_READ_ONLY);
-               }
-       }
-
-       return (SK_PNMI_ERR_OK);
-}
-
-/*****************************************************************************
- *
- * RlmtStat - OID handler function of OID_SKGE_RLMT_XXX multiple instance.
- *
- * Description:
- *     Performs get requests on multiple instance variables.
- *
- * Returns:
- *     SK_PNMI_ERR_OK           The request was successfully performed.
- *     SK_PNMI_ERR_GENERAL      A general severe internal error occured.
- *     SK_PNMI_ERR_TOO_SHORT    The passed buffer is too short to contain
- *                              the correct data (e.g. a 32bit value is
- *                              needed, but a 16 bit value was passed).
- *     SK_PNMI_ERR_UNKNOWN_INST The requested instance of the OID doesn't
- *                               exist (e.g. port instance 3 on a two port
- *                              adapter.
- */
-PNMI_STATIC int RlmtStat(
-SK_AC *pAC,            /* Pointer to adapter context */
-SK_IOC IoC,            /* IO context handle */
-int Action,            /* Get/PreSet/Set action */
-SK_U32 Id,             /* Object ID that is to be processed */
-char *pBuf,            /* Buffer to which to mgmt data will be retrieved */
-unsigned int *pLen,    /* On call: buffer length. On return: used buffer */
-SK_U32 Instance,       /* Instance (1..n) that is to be queried or -1 */
-unsigned int TableIndex, /* Index to the Id table */
-SK_U32 NetIndex)       /* NetIndex (0..n), in single net mode allways zero */
-{
-       unsigned int    PhysPortMax;
-       unsigned int    PhysPortIndex;
-       unsigned int    Limit;
-       unsigned int    Offset;
-       int             Ret;
-       SK_U32          Val32;
-       SK_U64          Val64;
-
-       /*
-        * Calculate the port indexes from the instance
-        */
-       PhysPortMax = pAC->GIni.GIMacsFound;
-
-       if ((Instance != (SK_U32)(-1))) {
-               /* Check instance range */
-               if ((Instance < 1) || (Instance > PhysPortMax)) {
-
-                       *pLen = 0;
-                       return (SK_PNMI_ERR_UNKNOWN_INST);
-               }
-
-               /* Single net mode */
-               PhysPortIndex = Instance - 1;
-
-               /* Dual net mode */
-               if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
-                       PhysPortIndex = NetIndex;
-               }
-
-               /* Both net modes */
-               Limit = PhysPortIndex + 1;
-       }
-       else {
-               /* Single net mode */
-               PhysPortIndex = 0;
-               Limit = PhysPortMax;
-
-               /* Dual net mode */
-               if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
-                       PhysPortIndex = NetIndex;
-                       Limit = PhysPortIndex + 1;
-               }
-       }
-
-       /*
-        * Currently only get requests are allowed.
-        */
-       if (Action != SK_PNMI_GET) {
-
-               *pLen = 0;
-               return (SK_PNMI_ERR_READ_ONLY);
-       }
-
-       /*
-        * Check if the buffer length is large enough.
-        */
-       switch (Id) {
-
-       case OID_SKGE_RLMT_PORT_INDEX:
-       case OID_SKGE_RLMT_STATUS:
-               if (*pLen < (Limit - PhysPortIndex) * sizeof(SK_U32)) {
-
-                       *pLen = (Limit - PhysPortIndex) * sizeof(SK_U32);
-                       return (SK_PNMI_ERR_TOO_SHORT);
-               }
-               break;
-
-       case OID_SKGE_RLMT_TX_HELLO_CTS:
-       case OID_SKGE_RLMT_RX_HELLO_CTS:
-       case OID_SKGE_RLMT_TX_SP_REQ_CTS:
-       case OID_SKGE_RLMT_RX_SP_CTS:
-               if (*pLen < (Limit - PhysPortIndex) * sizeof(SK_U64)) {
-
-                       *pLen = (Limit - PhysPortIndex) * sizeof(SK_U64);
-                       return (SK_PNMI_ERR_TOO_SHORT);
-               }
-               break;
-
-       default:
-               SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR039,
-                       SK_PNMI_ERR039MSG);
-
-               *pLen = 0;
-               return (SK_PNMI_ERR_GENERAL);
-
-       }
-
-       /*
-        * Update statistic and increment semaphores to indicate that
-        * an update was already done.
-        */
-       if ((Ret = RlmtUpdate(pAC, IoC, NetIndex)) != SK_PNMI_ERR_OK) {
-
-               *pLen = 0;
-               return (Ret);
-       }
-       pAC->Pnmi.RlmtUpdatedFlag ++;
-
-       /*
-        * Get value
-        */
-       Offset = 0;
-       for (; PhysPortIndex < Limit; PhysPortIndex ++) {
-
-               switch (Id) {
-
-               case OID_SKGE_RLMT_PORT_INDEX:
-                       Val32 = PhysPortIndex;
-                       SK_PNMI_STORE_U32(pBuf + Offset, Val32);
-                       Offset += sizeof(SK_U32);
-                       break;
-
-               case OID_SKGE_RLMT_STATUS:
-                       if (pAC->Rlmt.Port[PhysPortIndex].PortState ==
-                               SK_RLMT_PS_INIT ||
-                               pAC->Rlmt.Port[PhysPortIndex].PortState ==
-                               SK_RLMT_PS_DOWN) {
-
-                               Val32 = SK_PNMI_RLMT_STATUS_ERROR;
-                       }
-                       else if (pAC->Pnmi.Port[PhysPortIndex].ActiveFlag) {
-
-                               Val32 = SK_PNMI_RLMT_STATUS_ACTIVE;
-                       }
-                       else {
-                               Val32 = SK_PNMI_RLMT_STATUS_STANDBY;
-                       }
-                       SK_PNMI_STORE_U32(pBuf + Offset, Val32);
-                       Offset += sizeof(SK_U32);
-                       break;
-
-               case OID_SKGE_RLMT_TX_HELLO_CTS:
-                       Val64 = pAC->Rlmt.Port[PhysPortIndex].TxHelloCts;
-                       SK_PNMI_STORE_U64(pBuf + Offset, Val64);
-                       Offset += sizeof(SK_U64);
-                       break;
-
-               case OID_SKGE_RLMT_RX_HELLO_CTS:
-                       Val64 = pAC->Rlmt.Port[PhysPortIndex].RxHelloCts;
-                       SK_PNMI_STORE_U64(pBuf + Offset, Val64);
-                       Offset += sizeof(SK_U64);
-                       break;
-
-               case OID_SKGE_RLMT_TX_SP_REQ_CTS:
-                       Val64 = pAC->Rlmt.Port[PhysPortIndex].TxSpHelloReqCts;
-                       SK_PNMI_STORE_U64(pBuf + Offset, Val64);
-                       Offset += sizeof(SK_U64);
-                       break;
-
-               case OID_SKGE_RLMT_RX_SP_CTS:
-                       Val64 = pAC->Rlmt.Port[PhysPortIndex].RxSpHelloCts;
-                       SK_PNMI_STORE_U64(pBuf + Offset, Val64);
-                       Offset += sizeof(SK_U64);
-                       break;
-
-               default:
-                       SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_ERR,
-                               ("RlmtStat: Unknown OID should be errored before"));
-
-                       pAC->Pnmi.RlmtUpdatedFlag --;
-                       *pLen = 0;
-                       return (SK_PNMI_ERR_GENERAL);
-               }
-       }
-       *pLen = Offset;
-
-       pAC->Pnmi.RlmtUpdatedFlag --;
-
-       return (SK_PNMI_ERR_OK);
-}
-
-/*****************************************************************************
- *
- * MacPrivateConf - OID handler function of OIDs concerning the configuration
- *
- * Description:
- *     Get/Presets/Sets the OIDs concerning the configuration.
- *
- * Returns:
- *     SK_PNMI_ERR_OK           The request was successfully performed.
- *     SK_PNMI_ERR_GENERAL      A general severe internal error occured.
- *     SK_PNMI_ERR_TOO_SHORT    The passed buffer is too short to contain
- *                              the correct data (e.g. a 32bit value is
- *                              needed, but a 16 bit value was passed).
- *     SK_PNMI_ERR_BAD_VALUE    The passed value is not in the valid
- *                              value range.
- *     SK_PNMI_ERR_READ_ONLY    The OID is read-only and cannot be set.
- *     SK_PNMI_ERR_UNKNOWN_INST The requested instance of the OID doesn't
- *                               exist (e.g. port instance 3 on a two port
- *                              adapter.
- */
-PNMI_STATIC int MacPrivateConf(
-SK_AC *pAC,            /* Pointer to adapter context */
-SK_IOC IoC,            /* IO context handle */
-int Action,            /* Get/PreSet/Set action */
-SK_U32 Id,             /* Object ID that is to be processed */
-char *pBuf,            /* Buffer to which to mgmt data will be retrieved */
-unsigned int *pLen,    /* On call: buffer length. On return: used buffer */
-SK_U32 Instance,       /* Instance (1..n) that is to be queried or -1 */
-unsigned int TableIndex, /* Index to the Id table */
-SK_U32 NetIndex)       /* NetIndex (0..n), in single net mode allways zero */
-{
-       unsigned int    PhysPortMax;
-       unsigned int    PhysPortIndex;
-       unsigned int    LogPortMax;
-       unsigned int    LogPortIndex;
-       unsigned int    Limit;
-       unsigned int    Offset;
-       char            Val8;
-       int             Ret;
-       SK_EVPARA       EventParam;
-       SK_U32          Val32;
-
-
-       /*
-        * Calculate instance if wished. MAC index 0 is the virtual
-        * MAC.
-        */
-       PhysPortMax = pAC->GIni.GIMacsFound;
-       LogPortMax = SK_PNMI_PORT_PHYS2LOG(PhysPortMax);
-
-       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) { /* Dual net mode */
-               LogPortMax--;
-       }
-
-       if ((Instance != (SK_U32)(-1))) { /* Only one specific instance is queried */
-               /* Check instance range */
-               if ((Instance < 1) || (Instance > LogPortMax)) {
-
-                       *pLen = 0;
-                       return (SK_PNMI_ERR_UNKNOWN_INST);
-               }
-               LogPortIndex = SK_PNMI_PORT_INST2LOG(Instance);
-               Limit = LogPortIndex + 1;
-       }
-
-       else { /* Instance == (SK_U32)(-1), get all Instances of that OID */
-
-               LogPortIndex = 0;
-               Limit = LogPortMax;
-       }
-
-       /*
-        * Perform action
-        */
-       if (Action == SK_PNMI_GET) {
-
-               /*
-                * Check length
-                */
-               switch (Id) {
-
-               case OID_SKGE_PMD:
-               case OID_SKGE_CONNECTOR:
-               case OID_SKGE_LINK_CAP:
-               case OID_SKGE_LINK_MODE:
-               case OID_SKGE_LINK_MODE_STATUS:
-               case OID_SKGE_LINK_STATUS:
-               case OID_SKGE_FLOWCTRL_CAP:
-               case OID_SKGE_FLOWCTRL_MODE:
-               case OID_SKGE_FLOWCTRL_STATUS:
-               case OID_SKGE_PHY_OPERATION_CAP:
-               case OID_SKGE_PHY_OPERATION_MODE:
-               case OID_SKGE_PHY_OPERATION_STATUS:
-               case OID_SKGE_SPEED_CAP:
-               case OID_SKGE_SPEED_MODE:
-               case OID_SKGE_SPEED_STATUS:
-                       if (*pLen < (Limit - LogPortIndex) * sizeof(SK_U8)) {
-
-                               *pLen = (Limit - LogPortIndex) *
-                                       sizeof(SK_U8);
-                               return (SK_PNMI_ERR_TOO_SHORT);
-                       }
-                       break;
-
-       case OID_SKGE_MTU:
-                       if (*pLen < sizeof(SK_U32)) {
-
-                               *pLen = sizeof(SK_U32);
-                               return (SK_PNMI_ERR_TOO_SHORT);
-                       }
-                       break;
-
-               default:
-                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR041,
-                               SK_PNMI_ERR041MSG);
-                       *pLen = 0;
-                       return (SK_PNMI_ERR_GENERAL);
-               }
-
-               /*
-                * Update statistic and increment semaphore to indicate
-                * that an update was already done.
-                */
-               if ((Ret = SirqUpdate(pAC, IoC)) != SK_PNMI_ERR_OK) {
-
-                       *pLen = 0;
-                       return (Ret);
-               }
-               pAC->Pnmi.SirqUpdatedFlag ++;
-
-               /*
-                * Get value
-                */
-               Offset = 0;
-               for (; LogPortIndex < Limit; LogPortIndex ++) {
-
-                       switch (Id) {
-
-                       case OID_SKGE_PMD:
-                               *(pBuf + Offset) = pAC->Pnmi.PMD;
-                               Offset += sizeof(char);
-                               break;
-
-                       case OID_SKGE_CONNECTOR:
-                               *(pBuf + Offset) = pAC->Pnmi.Connector;
-                               Offset += sizeof(char);
-                               break;
-
-                       case OID_SKGE_LINK_CAP:
-                               if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNetMode */
-                                       if (LogPortIndex == 0) {
-
-                                               /* Get value for virtual port */
-                                               VirtualConf(pAC, IoC, Id, pBuf +
-                                                       Offset);
-                                       }
-                                       else {
-                                               /* Get value for physical ports */
-                                               PhysPortIndex = SK_PNMI_PORT_LOG2PHYS(
-                                                       pAC, LogPortIndex);
-
-                                               *(pBuf + Offset) = pAC->GIni.GP[
-                                                       PhysPortIndex].PLinkCap;
-                                       }
-                                       Offset += sizeof(char);
-                               }
-                               else { /* DualNetMode */
-
-                                       *(pBuf + Offset) = pAC->GIni.GP[NetIndex].PLinkCap;
-                                       Offset += sizeof(char);
-                               }
-                               break;
-
-                       case OID_SKGE_LINK_MODE:
-                               if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNetMode */
-                                       if (LogPortIndex == 0) {
-
-                                               /* Get value for virtual port */
-                                               VirtualConf(pAC, IoC, Id, pBuf +
-                                               Offset);
-                                       }
-                                       else {
-                                               /* Get value for physical ports */
-                                               PhysPortIndex = SK_PNMI_PORT_LOG2PHYS(
-                                                       pAC, LogPortIndex);
-
-                                               *(pBuf + Offset) = pAC->GIni.GP[
-                                                       PhysPortIndex].PLinkModeConf;
-                                       }
-                                       Offset += sizeof(char);
-                               }
-                               else { /* DualNetMode */
-
-                                       *(pBuf + Offset) = pAC->GIni.GP[NetIndex].PLinkModeConf;
-                                       Offset += sizeof(char);
-                               }
-                               break;
-
-                       case OID_SKGE_LINK_MODE_STATUS:
-                               if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNetMode */
-                                       if (LogPortIndex == 0) {
-
-                                               /* Get value for virtual port */
-                                               VirtualConf(pAC, IoC, Id, pBuf +
-                                                       Offset);
-                                       }
-                                       else {
-                                               /* Get value for physical port */
-                                               PhysPortIndex = SK_PNMI_PORT_LOG2PHYS(
-                                                       pAC, LogPortIndex);
-
-                                               *(pBuf + Offset) =
-                                                       CalculateLinkModeStatus(pAC,
-                                                               IoC, PhysPortIndex);
-                                       }
-                                       Offset += sizeof(char);
-                               }
-                               else { /* DualNetMode */
-                                       *(pBuf + Offset) = CalculateLinkModeStatus(pAC, IoC, NetIndex);
-                                       Offset += sizeof(char);
-                               }
-                               break;
-
-                       case OID_SKGE_LINK_STATUS:
-                               if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNetMode */
-                                       if (LogPortIndex == 0) {
-
-                                               /* Get value for virtual port */
-                                               VirtualConf(pAC, IoC, Id, pBuf +
-                                                       Offset);
-                                       }
-                                       else {
-                                               /* Get value for physical ports */
-                                               PhysPortIndex = SK_PNMI_PORT_LOG2PHYS(
-                                                       pAC, LogPortIndex);
-
-                                               *(pBuf + Offset) =
-                                                       CalculateLinkStatus(pAC,
-                                                               IoC, PhysPortIndex);
-                                       }
-                                       Offset += sizeof(char);
-                               }
-                               else { /* DualNetMode */
-
-                                       *(pBuf + Offset) = CalculateLinkStatus(pAC, IoC, NetIndex);
-                                       Offset += sizeof(char);
-                               }
-                               break;
-
-                       case OID_SKGE_FLOWCTRL_CAP:
-                               if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNetMode */
-                                       if (LogPortIndex == 0) {
-
-                                               /* Get value for virtual port */
-                                               VirtualConf(pAC, IoC, Id, pBuf +
-                                                       Offset);
-                                       }
-                                       else {
-                                               /* Get value for physical ports */
-                                               PhysPortIndex = SK_PNMI_PORT_LOG2PHYS(
-                                                       pAC, LogPortIndex);
-
-                                               *(pBuf + Offset) = pAC->GIni.GP[
-                                                       PhysPortIndex].PFlowCtrlCap;
-                                       }
-                                       Offset += sizeof(char);
-                               }
-                               else { /* DualNetMode */
-
-                                       *(pBuf + Offset) = pAC->GIni.GP[NetIndex].PFlowCtrlCap;
-                                       Offset += sizeof(char);
-                               }
-                               break;
-
-                       case OID_SKGE_FLOWCTRL_MODE:
-                               if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNetMode */
-                                       if (LogPortIndex == 0) {
-
-                                               /* Get value for virtual port */
-                                               VirtualConf(pAC, IoC, Id, pBuf +
-                                                       Offset);
-                                       }
-                                       else {
-                                               /* Get value for physical port */
-                                               PhysPortIndex = SK_PNMI_PORT_LOG2PHYS(
-                                                       pAC, LogPortIndex);
-
-                                               *(pBuf + Offset) = pAC->GIni.GP[
-                                                       PhysPortIndex].PFlowCtrlMode;
-                                       }
-                                       Offset += sizeof(char);
-                               }
-                               else { /* DualNetMode */
-
-                                       *(pBuf + Offset) = pAC->GIni.GP[NetIndex].PFlowCtrlMode;
-                                       Offset += sizeof(char);
-                               }
-                               break;
-
-                       case OID_SKGE_FLOWCTRL_STATUS:
-                               if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNetMode */
-                                       if (LogPortIndex == 0) {
-
-                                               /* Get value for virtual port */
-                                               VirtualConf(pAC, IoC, Id, pBuf +
-                                                       Offset);
-                                       }
-                                       else {
-                                               /* Get value for physical port */
-                                               PhysPortIndex = SK_PNMI_PORT_LOG2PHYS(
-                                                       pAC, LogPortIndex);
-
-                                               *(pBuf + Offset) = pAC->GIni.GP[
-                                                       PhysPortIndex].PFlowCtrlStatus;
-                                       }
-                                       Offset += sizeof(char);
-                               }
-                               else { /* DualNetMode */
-
-                                       *(pBuf + Offset) = pAC->GIni.GP[NetIndex].PFlowCtrlStatus;
-                                       Offset += sizeof(char);
-                               }
-                               break;
-
-                       case OID_SKGE_PHY_OPERATION_CAP:
-                               if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNetMode */
-                                       if (LogPortIndex == 0) {
-
-                                               /* Get value for virtual port */
-                                               VirtualConf(pAC, IoC, Id, pBuf +
-                                                       Offset);
-                                       }
-                                       else {
-                                               /* Get value for physical ports */
-                                               PhysPortIndex = SK_PNMI_PORT_LOG2PHYS(
-                                                       pAC, LogPortIndex);
-
-                                               *(pBuf + Offset) = pAC->GIni.GP[
-                                                       PhysPortIndex].PMSCap;
-                                       }
-                                       Offset += sizeof(char);
-                               }
-                               else { /* DualNetMode */
-
-                                       *(pBuf + Offset) = pAC->GIni.GP[NetIndex].PMSCap;
-                                       Offset += sizeof(char);
-                               }
-                               break;
-
-                       case OID_SKGE_PHY_OPERATION_MODE:
-                               if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNetMode */
-                                       if (LogPortIndex == 0) {
-
-                                               /* Get value for virtual port */
-                                               VirtualConf(pAC, IoC, Id, pBuf + Offset);
-                                       }
-                                       else {
-                                               /* Get value for physical port */
-                                               PhysPortIndex = SK_PNMI_PORT_LOG2PHYS(
-                                                       pAC, LogPortIndex);
-
-                                               *(pBuf + Offset) = pAC->GIni.GP[
-                                                       PhysPortIndex].PMSMode;
-                                       }
-                                       Offset += sizeof(char);
-                               }
-                               else { /* DualNetMode */
-
-                                       *(pBuf + Offset) = pAC->GIni.GP[NetIndex].PMSMode;
-                                       Offset += sizeof(char);
-                               }
-                               break;
-
-                       case OID_SKGE_PHY_OPERATION_STATUS:
-                               if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNetMode */
-                                       if (LogPortIndex == 0) {
-
-                                               /* Get value for virtual port */
-                                               VirtualConf(pAC, IoC, Id, pBuf + Offset);
-                                       }
-                                       else {
-                                               /* Get value for physical port */
-                                               PhysPortIndex = SK_PNMI_PORT_LOG2PHYS(
-                                                       pAC, LogPortIndex);
-
-                                               *(pBuf + Offset) = pAC->GIni.GP[
-                                                       PhysPortIndex].PMSStatus;
-                                       }
-                                       Offset += sizeof(char);
-                               }
-                               else {
-
-                                       *(pBuf + Offset) = pAC->GIni.GP[NetIndex].PMSStatus;
-                                       Offset += sizeof(char);
-                               }
-                               break;
-
-                       case OID_SKGE_SPEED_CAP:
-                               if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNetMode */
-                                       if (LogPortIndex == 0) {
-
-                                               /* Get value for virtual port */
-                                               VirtualConf(pAC, IoC, Id, pBuf +
-                                                       Offset);
-                                       }
-                                       else {
-                                               /* Get value for physical ports */
-                                               PhysPortIndex = SK_PNMI_PORT_LOG2PHYS(
-                                                       pAC, LogPortIndex);
-
-                                               *(pBuf + Offset) = pAC->GIni.GP[
-                                                       PhysPortIndex].PLinkSpeedCap;
-                                       }
-                                       Offset += sizeof(char);
-                               }
-                               else { /* DualNetMode */
-
-                                       *(pBuf + Offset) = pAC->GIni.GP[NetIndex].PLinkSpeedCap;
-                                       Offset += sizeof(char);
-                               }
-                               break;
-
-                       case OID_SKGE_SPEED_MODE:
-                               if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNetMode */
-                                       if (LogPortIndex == 0) {
-
-                                               /* Get value for virtual port */
-                                               VirtualConf(pAC, IoC, Id, pBuf + Offset);
-                                       }
-                                       else {
-                                               /* Get value for physical port */
-                                               PhysPortIndex = SK_PNMI_PORT_LOG2PHYS(
-                                                       pAC, LogPortIndex);
-
-                                               *(pBuf + Offset) = pAC->GIni.GP[
-                                                       PhysPortIndex].PLinkSpeed;
-                                       }
-                                       Offset += sizeof(char);
-                               }
-                               else { /* DualNetMode */
-
-                                       *(pBuf + Offset) = pAC->GIni.GP[NetIndex].PLinkSpeed;
-                                       Offset += sizeof(char);
-                               }
-                               break;
-
-                       case OID_SKGE_SPEED_STATUS:
-                               if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNetMode */
-                                       if (LogPortIndex == 0) {
-
-                                               /* Get value for virtual port */
-                                               VirtualConf(pAC, IoC, Id, pBuf + Offset);
-                                       }
-                                       else {
-                                               /* Get value for physical port */
-                                               PhysPortIndex = SK_PNMI_PORT_LOG2PHYS(
-                                                       pAC, LogPortIndex);
-
-                                               *(pBuf + Offset) = pAC->GIni.GP[
-                                                       PhysPortIndex].PLinkSpeedUsed;
-                                       }
-                                       Offset += sizeof(char);
-                               }
-                               else { /* DualNetMode */
-
-                                       *(pBuf + Offset) = pAC->GIni.GP[NetIndex].PLinkSpeedUsed;
-                                       Offset += sizeof(char);
-                               }
-                               break;
-
-                       case OID_SKGE_MTU:
-                               Val32 = SK_DRIVER_GET_MTU(pAC, IoC, NetIndex);
-                               SK_PNMI_STORE_U32(pBuf + Offset, Val32);
-                               Offset += sizeof(SK_U32);
-                               break;
-
-                       default:
-                               SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_ERR,
-                                       ("MacPrivateConf: Unknown OID should be handled before"));
-
-                               pAC->Pnmi.SirqUpdatedFlag --;
-                               return (SK_PNMI_ERR_GENERAL);
-                       }
-               }
-               *pLen = Offset;
-               pAC->Pnmi.SirqUpdatedFlag --;
-
-               return (SK_PNMI_ERR_OK);
-       }
-
-       /*
-        * From here SET or PRESET action. Check if the passed
-        * buffer length is plausible.
-        */
-       switch (Id) {
-
-       case OID_SKGE_LINK_MODE:
-       case OID_SKGE_FLOWCTRL_MODE:
-       case OID_SKGE_PHY_OPERATION_MODE:
-       case OID_SKGE_SPEED_MODE:
-               if (*pLen < Limit - LogPortIndex) {
-
-                       *pLen = Limit - LogPortIndex;
-                       return (SK_PNMI_ERR_TOO_SHORT);
-               }
-               if (*pLen != Limit - LogPortIndex) {
-
-                       *pLen = 0;
-                       return (SK_PNMI_ERR_BAD_VALUE);
-               }
-               break;
-
-       case OID_SKGE_MTU:
-               if (*pLen < sizeof(SK_U32)) {
-
-                       *pLen = sizeof(SK_U32);
-                       return (SK_PNMI_ERR_TOO_SHORT);
-               }
-               if (*pLen != sizeof(SK_U32)) {
-
-                       *pLen = 0;
-                       return (SK_PNMI_ERR_BAD_VALUE);
-               }
-               break;
-
-    default:
-               *pLen = 0;
-               return (SK_PNMI_ERR_READ_ONLY);
-       }
-
-       /*
-        * Perform preset or set
-        */
-       Offset = 0;
-       for (; LogPortIndex < Limit; LogPortIndex ++) {
-
-               switch (Id) {
-
-               case OID_SKGE_LINK_MODE:
-                       /* Check the value range */
-                       Val8 = *(pBuf + Offset);
-                       if (Val8 == 0) {
-
-                               Offset += sizeof(char);
-                               break;
-                       }
-                       if (Val8 < SK_LMODE_HALF ||
-                               (LogPortIndex != 0 && Val8 > SK_LMODE_AUTOSENSE) ||
-                               (LogPortIndex == 0 && Val8 > SK_LMODE_INDETERMINATED)) {
-
-                               *pLen = 0;
-                               return (SK_PNMI_ERR_BAD_VALUE);
-                       }
-
-                       /* The preset ends here */
-                       if (Action == SK_PNMI_PRESET) {
-
-                               return (SK_PNMI_ERR_OK);
-                       }
-
-                       if (LogPortIndex == 0) {
-
-                               /*
-                                * The virtual port consists of all currently
-                                * active ports. Find them and send an event
-                                * with the new link mode to SIRQ.
-                                */
-                               for (PhysPortIndex = 0;
-                                       PhysPortIndex < PhysPortMax;
-                                       PhysPortIndex ++) {
-
-                                       if (!pAC->Pnmi.Port[PhysPortIndex].
-                                               ActiveFlag) {
-
-                                               continue;
-                                       }
-
-                                       EventParam.Para32[0] = PhysPortIndex;
-                                       EventParam.Para32[1] = (SK_U32)Val8;
-                                       if (SkGeSirqEvent(pAC, IoC,
-                                               SK_HWEV_SET_LMODE,
-                                               EventParam) > 0) {
-
-                                               SK_ERR_LOG(pAC, SK_ERRCL_SW,
-                                                       SK_PNMI_ERR043,
-                                                       SK_PNMI_ERR043MSG);
-
-                                               *pLen = 0;
-                                               return (SK_PNMI_ERR_GENERAL);
-                                       }
-                               }
-                       }
-                       else {
-                               /*
-                                * Send an event with the new link mode to
-                                * the SIRQ module.
-                                */
-                               EventParam.Para32[0] = SK_PNMI_PORT_LOG2PHYS(
-                                       pAC, LogPortIndex);
-                               EventParam.Para32[1] = (SK_U32)Val8;
-                               if (SkGeSirqEvent(pAC, IoC, SK_HWEV_SET_LMODE,
-                                       EventParam) > 0) {
-
-                                       SK_ERR_LOG(pAC, SK_ERRCL_SW,
-                                               SK_PNMI_ERR043,
-                                               SK_PNMI_ERR043MSG);
-
-                                       *pLen = 0;
-                                       return (SK_PNMI_ERR_GENERAL);
-                               }
-                       }
-                       Offset += sizeof(char);
-                       break;
-
-               case OID_SKGE_FLOWCTRL_MODE:
-                       /* Check the value range */
-                       Val8 = *(pBuf + Offset);
-                       if (Val8 == 0) {
-
-                               Offset += sizeof(char);
-                               break;
-                       }
-                       if (Val8 < SK_FLOW_MODE_NONE ||
-                               (LogPortIndex != 0 && Val8 > SK_FLOW_MODE_SYM_OR_REM) ||
-                               (LogPortIndex == 0 && Val8 > SK_FLOW_MODE_INDETERMINATED)) {
-
-                               *pLen = 0;
-                               return (SK_PNMI_ERR_BAD_VALUE);
-                       }
-
-                       /* The preset ends here */
-                       if (Action == SK_PNMI_PRESET) {
-
-                               return (SK_PNMI_ERR_OK);
-                       }
-
-                       if (LogPortIndex == 0) {
-
-                               /*
-                                * The virtual port consists of all currently
-                                * active ports. Find them and send an event
-                                * with the new flow control mode to SIRQ.
-                                */
-                               for (PhysPortIndex = 0;
-                                       PhysPortIndex < PhysPortMax;
-                                       PhysPortIndex ++) {
-
-                                       if (!pAC->Pnmi.Port[PhysPortIndex].
-                                               ActiveFlag) {
-
-                                               continue;
-                                       }
-
-                                       EventParam.Para32[0] = PhysPortIndex;
-                                       EventParam.Para32[1] = (SK_U32)Val8;
-                                       if (SkGeSirqEvent(pAC, IoC,
-                                               SK_HWEV_SET_FLOWMODE,
-                                               EventParam) > 0) {
-
-                                               SK_ERR_LOG(pAC, SK_ERRCL_SW,
-                                                       SK_PNMI_ERR044,
-                                                       SK_PNMI_ERR044MSG);
-
-                                               *pLen = 0;
-                                               return (SK_PNMI_ERR_GENERAL);
-                                       }
-                               }
-                       }
-                       else {
-                               /*
-                                * Send an event with the new flow control
-                                * mode to the SIRQ module.
-                                */
-                               EventParam.Para32[0] = SK_PNMI_PORT_LOG2PHYS(
-                                       pAC, LogPortIndex);
-                               EventParam.Para32[1] = (SK_U32)Val8;
-                               if (SkGeSirqEvent(pAC, IoC,
-                                       SK_HWEV_SET_FLOWMODE, EventParam)
-                                       > 0) {
-
-                                       SK_ERR_LOG(pAC, SK_ERRCL_SW,
-                                               SK_PNMI_ERR044,
-                                               SK_PNMI_ERR044MSG);
-
-                                       *pLen = 0;
-                                       return (SK_PNMI_ERR_GENERAL);
-                               }
-                       }
-                       Offset += sizeof(char);
-                       break;
-
-               case OID_SKGE_PHY_OPERATION_MODE :
-                       /* Check the value range */
-                       Val8 = *(pBuf + Offset);
-                       if (Val8 == 0) {
-                               /* mode of this port remains unchanged */
-                               Offset += sizeof(char);
-                               break;
-                       }
-                       if (Val8 < SK_MS_MODE_AUTO ||
-                               (LogPortIndex != 0 && Val8 > SK_MS_MODE_SLAVE) ||
-                               (LogPortIndex == 0 && Val8 > SK_MS_MODE_INDETERMINATED)) {
-
-                               *pLen = 0;
-                               return (SK_PNMI_ERR_BAD_VALUE);
-                       }
-
-                       /* The preset ends here */
-                       if (Action == SK_PNMI_PRESET) {
-
-                               return (SK_PNMI_ERR_OK);
-                       }
-
-                       if (LogPortIndex == 0) {
-
-                               /*
-                                * The virtual port consists of all currently
-                                * active ports. Find them and send an event
-                                * with new master/slave (role) mode to SIRQ.
-                                */
-                               for (PhysPortIndex = 0;
-                                       PhysPortIndex < PhysPortMax;
-                                       PhysPortIndex ++) {
-
-                                       if (!pAC->Pnmi.Port[PhysPortIndex].
-                                               ActiveFlag) {
-
-                                               continue;
-                                       }
-
-                                       EventParam.Para32[0] = PhysPortIndex;
-                                       EventParam.Para32[1] = (SK_U32)Val8;
-                                       if (SkGeSirqEvent(pAC, IoC,
-                                               SK_HWEV_SET_ROLE,
-                                               EventParam) > 0) {
-
-                                               SK_ERR_LOG(pAC, SK_ERRCL_SW,
-                                                       SK_PNMI_ERR042,
-                                                       SK_PNMI_ERR042MSG);
-
-                                               *pLen = 0;
-                                               return (SK_PNMI_ERR_GENERAL);
-                                       }
-                               }
-                       }
-                       else {
-                               /*
-                                * Send an event with the new master/slave
-                                * (role) mode to the SIRQ module.
-                                */
-                               EventParam.Para32[0] = SK_PNMI_PORT_LOG2PHYS(
-                                       pAC, LogPortIndex);
-                               EventParam.Para32[1] = (SK_U32)Val8;
-                               if (SkGeSirqEvent(pAC, IoC,
-                                       SK_HWEV_SET_ROLE, EventParam) > 0) {
-
-                                       SK_ERR_LOG(pAC, SK_ERRCL_SW,
-                                               SK_PNMI_ERR042,
-                                               SK_PNMI_ERR042MSG);
-
-                                       *pLen = 0;
-                                       return (SK_PNMI_ERR_GENERAL);
-                               }
-                       }
-
-                       Offset += sizeof(char);
-                       break;
-
-               case OID_SKGE_SPEED_MODE:
-                       /* Check the value range */
-                       Val8 = *(pBuf + Offset);
-                       if (Val8 == 0) {
-
-                               Offset += sizeof(char);
-                               break;
-                       }
-                       if (Val8 < (SK_LSPEED_AUTO) ||
-                               (LogPortIndex != 0 && Val8 > (SK_LSPEED_1000MBPS)) ||
-                               (LogPortIndex == 0 && Val8 > (SK_LSPEED_INDETERMINATED))) {
-
-                               *pLen = 0;
-                               return (SK_PNMI_ERR_BAD_VALUE);
-                       }
-
-                       /* The preset ends here */
-                       if (Action == SK_PNMI_PRESET) {
-
-                               return (SK_PNMI_ERR_OK);
-                       }
-
-                       if (LogPortIndex == 0) {
-
-                               /*
-                                * The virtual port consists of all currently
-                                * active ports. Find them and send an event
-                                * with the new flow control mode to SIRQ.
-                                */
-                               for (PhysPortIndex = 0;
-                                       PhysPortIndex < PhysPortMax;
-                                       PhysPortIndex ++) {
-
-                                       if (!pAC->Pnmi.Port[PhysPortIndex].ActiveFlag) {
-
-                                               continue;
-                                       }
-
-                                       EventParam.Para32[0] = PhysPortIndex;
-                                       EventParam.Para32[1] = (SK_U32)Val8;
-                                       if (SkGeSirqEvent(pAC, IoC,
-                                               SK_HWEV_SET_SPEED,
-                                               EventParam) > 0) {
-
-                                               SK_ERR_LOG(pAC, SK_ERRCL_SW,
-                                                       SK_PNMI_ERR045,
-                                                       SK_PNMI_ERR045MSG);
-
-                                               *pLen = 0;
-                                               return (SK_PNMI_ERR_GENERAL);
-                                       }
-                               }
-                       }
-                       else {
-                               /*
-                                * Send an event with the new flow control
-                                * mode to the SIRQ module.
-                                */
-                               EventParam.Para32[0] = SK_PNMI_PORT_LOG2PHYS(
-                                       pAC, LogPortIndex);
-                               EventParam.Para32[1] = (SK_U32)Val8;
-                               if (SkGeSirqEvent(pAC, IoC,
-                                       SK_HWEV_SET_SPEED,
-                                       EventParam) > 0) {
-
-                                       SK_ERR_LOG(pAC, SK_ERRCL_SW,
-                                               SK_PNMI_ERR045,
-                                               SK_PNMI_ERR045MSG);
-
-                                       *pLen = 0;
-                                       return (SK_PNMI_ERR_GENERAL);
-                               }
-                       }
-                       Offset += sizeof(char);
-                       break;
-
-               case OID_SKGE_MTU :
-                       /* Check the value range */
-                       Val32 = *(SK_U32*)(pBuf + Offset);
-                       if (Val32 == 0) {
-                               /* mtu of this port remains unchanged */
-                               Offset += sizeof(SK_U32);
-                               break;
-                       }
-                       if (SK_DRIVER_PRESET_MTU(pAC, IoC, NetIndex, Val32) != 0) {
-                               *pLen = 0;
-                               return (SK_PNMI_ERR_BAD_VALUE);
-                       }
-
-                       /* The preset ends here */
-                       if (Action == SK_PNMI_PRESET) {
-                               return (SK_PNMI_ERR_OK);
-                       }
-
-                       if (SK_DRIVER_SET_MTU(pAC, IoC, NetIndex, Val32) != 0) {
-                               return (SK_PNMI_ERR_GENERAL);
-                       }
-
-                       Offset += sizeof(SK_U32);
-                       break;
-
-               default:
-           SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_ERR,
-               ("MacPrivateConf: Unknown OID should be handled before set"));
-
-                       *pLen = 0;
-                       return (SK_PNMI_ERR_GENERAL);
-               }
-       }
-
-       return (SK_PNMI_ERR_OK);
-}
-
-/*****************************************************************************
- *
- * Monitor - OID handler function for RLMT_MONITOR_XXX
- *
- * Description:
- *     Because RLMT currently does not support the monitoring of
- *     remote adapter cards, we return always an empty table.
- *
- * Returns:
- *     SK_PNMI_ERR_OK           The request was successfully performed.
- *     SK_PNMI_ERR_GENERAL      A general severe internal error occured.
- *     SK_PNMI_ERR_TOO_SHORT    The passed buffer is too short to contain
- *                              the correct data (e.g. a 32bit value is
- *                              needed, but a 16 bit value was passed).
- *     SK_PNMI_ERR_BAD_VALUE    The passed value is not in the valid
- *                              value range.
- *     SK_PNMI_ERR_READ_ONLY    The OID is read-only and cannot be set.
- *     SK_PNMI_ERR_UNKNOWN_INST The requested instance of the OID doesn't
- *                               exist (e.g. port instance 3 on a two port
- *                              adapter.
- */
-PNMI_STATIC int Monitor(
-SK_AC *pAC,            /* Pointer to adapter context */
-SK_IOC IoC,            /* IO context handle */
-int Action,            /* Get/PreSet/Set action */
-SK_U32 Id,             /* Object ID that is to be processed */
-char *pBuf,            /* Buffer to which to mgmt data will be retrieved */
-unsigned int *pLen,    /* On call: buffer length. On return: used buffer */
-SK_U32 Instance,       /* Instance (1..n) that is to be queried or -1 */
-unsigned int TableIndex, /* Index to the Id table */
-SK_U32 NetIndex)       /* NetIndex (0..n), in single net mode allways zero */
-{
-       unsigned int    Index;
-       unsigned int    Limit;
-       unsigned int    Offset;
-       unsigned int    Entries;
-
-
-       /*
-        * Calculate instance if wished.
-        */
-/* XXX Not yet implemented. Return always an empty table. */
-       Entries = 0;
-
-       if ((Instance != (SK_U32)(-1))) {
-
-               if ((Instance < 1) || (Instance > Entries)) {
-
-                       *pLen = 0;
-                       return (SK_PNMI_ERR_UNKNOWN_INST);
-               }
-
-               Index = (unsigned int)Instance - 1;
-               Limit = (unsigned int)Instance;
-       }
-       else {
-               Index = 0;
-               Limit = Entries;
-       }
-
-       /*
-        * Get/Set value
-       */
-       if (Action == SK_PNMI_GET) {
-
-               for (Offset=0; Index < Limit; Index ++) {
-
-                       switch (Id) {
-
-                       case OID_SKGE_RLMT_MONITOR_INDEX:
-                       case OID_SKGE_RLMT_MONITOR_ADDR:
-                       case OID_SKGE_RLMT_MONITOR_ERRS:
-                       case OID_SKGE_RLMT_MONITOR_TIMESTAMP:
-                       case OID_SKGE_RLMT_MONITOR_ADMIN:
-                               break;
-
-                       default:
-                               SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR046,
-                                       SK_PNMI_ERR046MSG);
-
-                               *pLen = 0;
-                               return (SK_PNMI_ERR_GENERAL);
-                       }
-               }
-               *pLen = Offset;
-       }
-       else {
-               /* Only MONITOR_ADMIN can be set */
-               if (Id != OID_SKGE_RLMT_MONITOR_ADMIN) {
-
-                       *pLen = 0;
-                       return (SK_PNMI_ERR_READ_ONLY);
-               }
-
-               /* Check if the length is plausible */
-               if (*pLen < (Limit - Index)) {
-
-                       return (SK_PNMI_ERR_TOO_SHORT);
-               }
-               /* Okay, we have a wide value range */
-               if (*pLen != (Limit - Index)) {
-
-                       *pLen = 0;
-                       return (SK_PNMI_ERR_BAD_VALUE);
-               }
-/*
-               for (Offset=0; Index < Limit; Index ++) {
-               }
-*/
-/*
- * XXX Not yet implemented. Return always BAD_VALUE, because the table
- * is empty.
- */
-               *pLen = 0;
-               return (SK_PNMI_ERR_BAD_VALUE);
-       }
-
-       return (SK_PNMI_ERR_OK);
-}
-
-/*****************************************************************************
- *
- * VirtualConf - Calculates the values of configuration OIDs for virtual port
- *
- * Description:
- *     We handle here the get of the configuration group OIDs, which are
- *     a little bit complicated. The virtual port consists of all currently
- *     active physical ports. If multiple ports are active and configured
- *     differently we get in some trouble to return a single value. So we
- *     get the value of the first active port and compare it with that of
- *     the other active ports. If they are not the same, we return a value
- *     that indicates that the state is indeterminated.
- *
- * Returns:
- *     Nothing
- */
-PNMI_STATIC void VirtualConf(
-SK_AC *pAC,            /* Pointer to adapter context */
-SK_IOC IoC,            /* IO context handle */
-SK_U32 Id,             /* Object ID that is to be processed */
-char *pBuf)            /* Buffer to which to mgmt data will be retrieved */
-{
-       unsigned int    PhysPortMax;
-       unsigned int    PhysPortIndex;
-       SK_U8           Val8;
-       SK_BOOL         PortActiveFlag;
-
-
-       *pBuf = 0;
-       PortActiveFlag = SK_FALSE;
-       PhysPortMax = pAC->GIni.GIMacsFound;
-
-       for (PhysPortIndex = 0; PhysPortIndex < PhysPortMax;
-               PhysPortIndex ++) {
-
-               /* Check if the physical port is active */
-               if (!pAC->Pnmi.Port[PhysPortIndex].ActiveFlag) {
-
-                       continue;
-               }
-
-               PortActiveFlag = SK_TRUE;
-
-               switch (Id) {
-
-               case OID_SKGE_LINK_CAP:
-
-                       /*
-                        * Different capabilities should not happen, but
-                        * in the case of the cases OR them all together.
-                        * From a curious point of view the virtual port
-                        * is capable of all found capabilities.
-                        */
-                       *pBuf |= pAC->GIni.GP[PhysPortIndex].PLinkCap;
-                       break;
-
-               case OID_SKGE_LINK_MODE:
-                       /* Check if it is the first active port */
-                       if (*pBuf == 0) {
-
-                               *pBuf = pAC->GIni.GP[PhysPortIndex].PLinkModeConf;
-                               continue;
-                       }
-
-                       /*
-                        * If we find an active port with a different link
-                        * mode than the first one we return a value that
-                        * indicates that the link mode is indeterminated.
-                        */
-                       if (*pBuf != pAC->GIni.GP[PhysPortIndex].PLinkModeConf
-                               ) {
-
-                               *pBuf = SK_LMODE_INDETERMINATED;
-                       }
-                       break;
-
-               case OID_SKGE_LINK_MODE_STATUS:
-                       /* Get the link mode of the physical port */
-                       Val8 = CalculateLinkModeStatus(pAC, IoC, PhysPortIndex);
-
-                       /* Check if it is the first active port */
-                       if (*pBuf == 0) {
-
-                               *pBuf = Val8;
-                               continue;
-                       }
-
-                       /*
-                        * If we find an active port with a different link
-                        * mode status than the first one we return a value
-                        * that indicates that the link mode status is
-                        * indeterminated.
-                        */
-                       if (*pBuf != Val8) {
-
-                               *pBuf = SK_LMODE_STAT_INDETERMINATED;
-                       }
-                       break;
-
-               case OID_SKGE_LINK_STATUS:
-                       /* Get the link status of the physical port */
-                       Val8 = CalculateLinkStatus(pAC, IoC, PhysPortIndex);
-
-                       /* Check if it is the first active port */
-                       if (*pBuf == 0) {
-
-                               *pBuf = Val8;
-                               continue;
-                       }
-
-                       /*
-                        * If we find an active port with a different link
-                        * status than the first one, we return a value
-                        * that indicates that the link status is
-                        * indeterminated.
-                        */
-                       if (*pBuf != Val8) {
-
-                               *pBuf = SK_PNMI_RLMT_LSTAT_INDETERMINATED;
-                       }
-                       break;
-
-               case OID_SKGE_FLOWCTRL_CAP:
-                       /* Check if it is the first active port */
-                       if (*pBuf == 0) {
-
-                               *pBuf = pAC->GIni.GP[PhysPortIndex].PFlowCtrlCap;
-                               continue;
-                       }
-
-                       /*
-                        * From a curious point of view the virtual port
-                        * is capable of all found capabilities.
-                        */
-                       *pBuf |= pAC->GIni.GP[PhysPortIndex].PFlowCtrlCap;
-                       break;
-
-               case OID_SKGE_FLOWCTRL_MODE:
-                       /* Check if it is the first active port */
-                       if (*pBuf == 0) {
-
-                               *pBuf = pAC->GIni.GP[PhysPortIndex].PFlowCtrlMode;
-                               continue;
-                       }
-
-                       /*
-                        * If we find an active port with a different flow
-                        * control mode than the first one, we return a value
-                        * that indicates that the mode is indeterminated.
-                        */
-                       if (*pBuf != pAC->GIni.GP[PhysPortIndex].PFlowCtrlMode) {
-
-                               *pBuf = SK_FLOW_MODE_INDETERMINATED;
-                       }
-                       break;
-
-               case OID_SKGE_FLOWCTRL_STATUS:
-                       /* Check if it is the first active port */
-                       if (*pBuf == 0) {
-
-                               *pBuf = pAC->GIni.GP[PhysPortIndex].PFlowCtrlStatus;
-                               continue;
-                       }
-
-                       /*
-                        * If we find an active port with a different flow
-                        * control status than the first one, we return a
-                        * value that indicates that the status is
-                        * indeterminated.
-                        */
-                       if (*pBuf != pAC->GIni.GP[PhysPortIndex].PFlowCtrlStatus) {
-
-                               *pBuf = SK_FLOW_STAT_INDETERMINATED;
-                       }
-                       break;
-
-               case OID_SKGE_PHY_OPERATION_CAP:
-                       /* Check if it is the first active port */
-                       if (*pBuf == 0) {
-
-                               *pBuf = pAC->GIni.GP[PhysPortIndex].PMSCap;
-                               continue;
-                       }
-
-                       /*
-                        * From a curious point of view the virtual port
-                        * is capable of all found capabilities.
-                        */
-                       *pBuf |= pAC->GIni.GP[PhysPortIndex].PMSCap;
-                       break;
-
-               case OID_SKGE_PHY_OPERATION_MODE:
-                       /* Check if it is the first active port */
-                       if (*pBuf == 0) {
-
-                               *pBuf = pAC->GIni.GP[PhysPortIndex].PMSMode;
-                               continue;
-                       }
-
-                       /*
-                        * If we find an active port with a different master/
-                        * slave mode than the first one, we return a value
-                        * that indicates that the mode is indeterminated.
-                        */
-                       if (*pBuf != pAC->GIni.GP[PhysPortIndex].PMSMode) {
-
-                               *pBuf = SK_MS_MODE_INDETERMINATED;
-                       }
-                       break;
-
-               case OID_SKGE_PHY_OPERATION_STATUS:
-                       /* Check if it is the first active port */
-                       if (*pBuf == 0) {
-
-                               *pBuf = pAC->GIni.GP[PhysPortIndex].PMSStatus;
-                               continue;
-                       }
-
-                       /*
-                        * If we find an active port with a different master/
-                        * slave status than the first one, we return a
-                        * value that indicates that the status is
-                        * indeterminated.
-                        */
-                       if (*pBuf != pAC->GIni.GP[PhysPortIndex].PMSStatus) {
-
-                               *pBuf = SK_MS_STAT_INDETERMINATED;
-                       }
-                       break;
-
-               case OID_SKGE_SPEED_MODE:
-                       /* Check if it is the first active port */
-                       if (*pBuf == 0) {
-
-                               *pBuf = pAC->GIni.GP[PhysPortIndex].PLinkSpeed;
-                               continue;
-                       }
-
-                       /*
-                        * If we find an active port with a different flow
-                        * control mode than the first one, we return a value
-                        * that indicates that the mode is indeterminated.
-                        */
-                       if (*pBuf != pAC->GIni.GP[PhysPortIndex].PLinkSpeed) {
-
-                               *pBuf = SK_LSPEED_INDETERMINATED;
-                       }
-                       break;
-
-               case OID_SKGE_SPEED_STATUS:
-                       /* Check if it is the first active port */
-                       if (*pBuf == 0) {
-
-                               *pBuf = pAC->GIni.GP[PhysPortIndex].PLinkSpeedUsed;
-                               continue;
-                       }
-
-                       /*
-                        * If we find an active port with a different flow
-                        * control status than the first one, we return a
-                        * value that indicates that the status is
-                        * indeterminated.
-                        */
-                       if (*pBuf != pAC->GIni.GP[PhysPortIndex].PLinkSpeedUsed) {
-
-                               *pBuf = SK_LSPEED_STAT_INDETERMINATED;
-                       }
-                       break;
-               }
-       }
-
-       /*
-        * If no port is active return an indeterminated answer
-        */
-       if (!PortActiveFlag) {
-
-               switch (Id) {
-
-               case OID_SKGE_LINK_CAP:
-                       *pBuf = SK_LMODE_CAP_INDETERMINATED;
-                       break;
-
-               case OID_SKGE_LINK_MODE:
-                       *pBuf = SK_LMODE_INDETERMINATED;
-                       break;
-
-               case OID_SKGE_LINK_MODE_STATUS:
-                       *pBuf = SK_LMODE_STAT_INDETERMINATED;
-                       break;
-
-               case OID_SKGE_LINK_STATUS:
-                       *pBuf = SK_PNMI_RLMT_LSTAT_INDETERMINATED;
-                       break;
-
-               case OID_SKGE_FLOWCTRL_CAP:
-               case OID_SKGE_FLOWCTRL_MODE:
-                       *pBuf = SK_FLOW_MODE_INDETERMINATED;
-                       break;
-
-               case OID_SKGE_FLOWCTRL_STATUS:
-                       *pBuf = SK_FLOW_STAT_INDETERMINATED;
-                       break;
-
-               case OID_SKGE_PHY_OPERATION_CAP:
-                       *pBuf = SK_MS_CAP_INDETERMINATED;
-                       break;
-
-               case OID_SKGE_PHY_OPERATION_MODE:
-                       *pBuf = SK_MS_MODE_INDETERMINATED;
-                       break;
-
-               case OID_SKGE_PHY_OPERATION_STATUS:
-                       *pBuf = SK_MS_STAT_INDETERMINATED;
-                       break;
-               case OID_SKGE_SPEED_CAP:
-                       *pBuf = SK_LSPEED_CAP_INDETERMINATED;
-                       break;
-
-               case OID_SKGE_SPEED_MODE:
-                       *pBuf = SK_LSPEED_INDETERMINATED;
-                       break;
-
-               case OID_SKGE_SPEED_STATUS:
-                       *pBuf = SK_LSPEED_STAT_INDETERMINATED;
-                       break;
-               }
-       }
-}
-
-/*****************************************************************************
- *
- * CalculateLinkStatus - Determins the link status of a physical port
- *
- * Description:
- *     Determins the link status the following way:
- *       LSTAT_PHY_DOWN:  Link is down
- *       LSTAT_AUTONEG:   Auto-negotiation failed
- *       LSTAT_LOG_DOWN:  Link is up but RLMT did not yet put the port
- *                        logically up.
- *       LSTAT_LOG_UP:    RLMT marked the port as up
- *
- * Returns:
- *     Link status of physical port
- */
-PNMI_STATIC SK_U8 CalculateLinkStatus(
-SK_AC *pAC,                    /* Pointer to adapter context */
-SK_IOC IoC,                    /* IO context handle */
-unsigned int PhysPortIndex)    /* Physical port index */
-{
-       SK_U8   Result;
-
-
-       if (!pAC->GIni.GP[PhysPortIndex].PHWLinkUp) {
-
-               Result = SK_PNMI_RLMT_LSTAT_PHY_DOWN;
-       }
-       else if (pAC->GIni.GP[PhysPortIndex].PAutoNegFail > 0) {
-
-               Result = SK_PNMI_RLMT_LSTAT_AUTONEG;
-                               }
-       else if (!pAC->Rlmt.Port[PhysPortIndex].PortDown) {
-
-               Result = SK_PNMI_RLMT_LSTAT_LOG_UP;
-       }
-       else {
-               Result = SK_PNMI_RLMT_LSTAT_LOG_DOWN;
-       }
-
-       return (Result);
-}
-
-/*****************************************************************************
- *
- * CalculateLinkModeStatus - Determins the link mode status of a phys. port
- *
- * Description:
- *     The COMMON module only tells us if the mode is half or full duplex.
- *     But in the decade of auto sensing it is usefull for the user to
- *     know if the mode was negotiated or forced. Therefore we have a
- *     look to the mode, which was last used by the negotiation process.
- *
- * Returns:
- *     The link mode status
- */
-PNMI_STATIC SK_U8 CalculateLinkModeStatus(
-SK_AC *pAC,                    /* Pointer to adapter context */
-SK_IOC IoC,                    /* IO context handle */
-unsigned int PhysPortIndex)    /* Physical port index */
-{
-       SK_U8   Result;
-
-
-       /* Get the current mode, which can be full or half duplex */
-       Result = pAC->GIni.GP[PhysPortIndex].PLinkModeStatus;
-
-       /* Check if no valid mode could be found (link is down) */
-       if (Result < SK_LMODE_STAT_HALF) {
-
-               Result = SK_LMODE_STAT_UNKNOWN;
-       }
-       else if (pAC->GIni.GP[PhysPortIndex].PLinkMode >= SK_LMODE_AUTOHALF) {
-
-               /*
-                * Auto-negotiation was used to bring up the link. Change
-                * the already found duplex status that it indicates
-                * auto-negotiation was involved.
-                */
-               if (Result == SK_LMODE_STAT_HALF) {
-
-                       Result = SK_LMODE_STAT_AUTOHALF;
-               }
-               else if (Result == SK_LMODE_STAT_FULL) {
-
-                       Result = SK_LMODE_STAT_AUTOFULL;
-               }
-       }
-
-       return (Result);
-}
-
-/*****************************************************************************
- *
- * GetVpdKeyArr - Obtain an array of VPD keys
- *
- * Description:
- *     Read the VPD keys and build an array of VPD keys, which are
- *     easy to access.
- *
- * Returns:
- *     SK_PNMI_ERR_OK       Task successfully performed.
- *     SK_PNMI_ERR_GENERAL  Something went wrong.
- */
-PNMI_STATIC int GetVpdKeyArr(
-SK_AC *pAC,            /* Pointer to adapter context */
-SK_IOC IoC,            /* IO context handle */
-char *pKeyArr,         /* Ptr KeyArray */
-unsigned int KeyArrLen,        /* Length of array in bytes */
-unsigned int *pKeyNo)  /* Number of keys */
-{
-       unsigned int            BufKeysLen = SK_PNMI_VPD_BUFSIZE;
-       char                    BufKeys[SK_PNMI_VPD_BUFSIZE];
-       unsigned int            StartOffset;
-       unsigned int            Offset;
-       int                     Index;
-       int                     Ret;
-
-
-       SK_MEMSET(pKeyArr, 0, KeyArrLen);
-
-       /*
-        * Get VPD key list
-        */
-       Ret = VpdKeys(pAC, IoC, (char *)&BufKeys, (int *)&BufKeysLen,
-               (int *)pKeyNo);
-       if (Ret > 0) {
-
-               SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR014,
-                       SK_PNMI_ERR014MSG);
-
-               return (SK_PNMI_ERR_GENERAL);
-       }
-       /* If no keys are available return now */
-       if (*pKeyNo == 0 || BufKeysLen == 0) {
-
-               return (SK_PNMI_ERR_OK);
-       }
-       /*
-        * If the key list is too long for us trunc it and give a
-        * errorlog notification. This case should not happen because
-        * the maximum number of keys is limited due to RAM limitations
-        */
-       if (*pKeyNo > SK_PNMI_VPD_ENTRIES) {
-
-               SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR015,
-                       SK_PNMI_ERR015MSG);
-
-               *pKeyNo = SK_PNMI_VPD_ENTRIES;
-       }
-
-       /*
-        * Now build an array of fixed string length size and copy
-        * the keys together.
-        */
-       for (Index = 0, StartOffset = 0, Offset = 0; Offset < BufKeysLen;
-               Offset ++) {
-
-               if (BufKeys[Offset] != 0) {
-
-                       continue;
-               }
-
-               if (Offset - StartOffset > SK_PNMI_VPD_KEY_SIZE) {
-
-                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR016,
-                               SK_PNMI_ERR016MSG);
-                       return (SK_PNMI_ERR_GENERAL);
-               }
-
-               SK_STRNCPY(pKeyArr + Index * SK_PNMI_VPD_KEY_SIZE,
-                       &BufKeys[StartOffset], SK_PNMI_VPD_KEY_SIZE);
-
-               Index ++;
-               StartOffset = Offset + 1;
-       }
-
-       /* Last key not zero terminated? Get it anyway */
-       if (StartOffset < Offset) {
-
-               SK_STRNCPY(pKeyArr + Index * SK_PNMI_VPD_KEY_SIZE,
-                       &BufKeys[StartOffset], SK_PNMI_VPD_KEY_SIZE);
-       }
-
-       return (SK_PNMI_ERR_OK);
-}
-
-/*****************************************************************************
- *
- * SirqUpdate - Let the SIRQ update its internal values
- *
- * Description:
- *     Just to be sure that the SIRQ module holds its internal data
- *     structures up to date, we send an update event before we make
- *     any access.
- *
- * Returns:
- *     SK_PNMI_ERR_OK       Task successfully performed.
- *     SK_PNMI_ERR_GENERAL  Something went wrong.
- */
-PNMI_STATIC int SirqUpdate(
-SK_AC *pAC,    /* Pointer to adapter context */
-SK_IOC IoC)    /* IO context handle */
-{
-       SK_EVPARA       EventParam;
-
-
-       /* Was the module already updated during the current PNMI call? */
-       if (pAC->Pnmi.SirqUpdatedFlag > 0) {
-
-               return (SK_PNMI_ERR_OK);
-       }
-
-       /* Send an synchronuous update event to the module */
-       SK_MEMSET((char *)&EventParam, 0, sizeof(EventParam));
-       if (SkGeSirqEvent(pAC, IoC, SK_HWEV_UPDATE_STAT, EventParam) > 0) {
-
-               SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR047,
-                       SK_PNMI_ERR047MSG);
-
-               return (SK_PNMI_ERR_GENERAL);
-       }
-
-       return (SK_PNMI_ERR_OK);
-}
-
-/*****************************************************************************
- *
- * RlmtUpdate - Let the RLMT update its internal values
- *
- * Description:
- *     Just to be sure that the RLMT module holds its internal data
- *     structures up to date, we send an update event before we make
- *     any access.
- *
- * Returns:
- *     SK_PNMI_ERR_OK       Task successfully performed.
- *     SK_PNMI_ERR_GENERAL  Something went wrong.
- */
-PNMI_STATIC int RlmtUpdate(
-SK_AC *pAC,    /* Pointer to adapter context */
-SK_IOC IoC,    /* IO context handle */
-SK_U32 NetIndex)       /* NetIndex (0..n), in single net mode allways zero */
-{
-       SK_EVPARA       EventParam;
-
-
-       /* Was the module already updated during the current PNMI call? */
-       if (pAC->Pnmi.RlmtUpdatedFlag > 0) {
-
-               return (SK_PNMI_ERR_OK);
-       }
-
-       /* Send an synchronuous update event to the module */
-       SK_MEMSET((char *)&EventParam, 0, sizeof(EventParam));
-       EventParam.Para32[0] = NetIndex;
-       EventParam.Para32[1] = (SK_U32)-1;
-       if (SkRlmtEvent(pAC, IoC, SK_RLMT_STATS_UPDATE, EventParam) > 0) {
-
-               SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR048,
-                       SK_PNMI_ERR048MSG);
-
-               return (SK_PNMI_ERR_GENERAL);
-       }
-
-       return (SK_PNMI_ERR_OK);
-}
-
-/*****************************************************************************
- *
- * MacUpdate - Force the XMAC to output the current statistic
- *
- * Description:
- *     The XMAC holds its statistic internally. To obtain the current
- *     values we send a command so that the statistic data will
- *     be written to apredefined memory area on the adapter.
- *
- * Returns:
- *     SK_PNMI_ERR_OK       Task successfully performed.
- *     SK_PNMI_ERR_GENERAL  Something went wrong.
- */
-PNMI_STATIC int MacUpdate(
-SK_AC *pAC,            /* Pointer to adapter context */
-SK_IOC IoC,            /* IO context handle */
-unsigned int FirstMac, /* Index of the first Mac to be updated */
-unsigned int LastMac)  /* Index of the last Mac to be updated */
-{
-       unsigned int    MacIndex;
-
-       /*
-        * Were the statistics already updated during the
-        * current PNMI call?
-        */
-       if (pAC->Pnmi.MacUpdatedFlag > 0) {
-
-               return (SK_PNMI_ERR_OK);
-       }
-
-       /* Send an update command to all MACs specified */
-       for (MacIndex = FirstMac; MacIndex <= LastMac; MacIndex ++) {
-
-               /*
-                * 2002-09-13 pweber:   Freeze the current sw counters.
-                *                      (That should be done as close as
-                *                      possible to the update of the
-                *                      hw counters)
-                */
-               if (pAC->GIni.GIMacType == SK_MAC_XMAC) {
-                       pAC->Pnmi.BufPort[MacIndex] = pAC->Pnmi.Port[MacIndex];
-               }
-
-               /* 2002-09-13 pweber:  Update the hw counter  */
-               if (pAC->GIni.GIFunc.pFnMacUpdateStats(pAC, IoC, MacIndex) != 0) {
-
-                       return (SK_PNMI_ERR_GENERAL);
-               }
-       }
-
-       return (SK_PNMI_ERR_OK);
-}
-
-/*****************************************************************************
- *
- * GetStatVal - Retrieve an XMAC statistic counter
- *
- * Description:
- *     Retrieves the statistic counter of a virtual or physical port. The
- *     virtual port is identified by the index 0. It consists of all
- *     currently active ports. To obtain the counter value for this port
- *     we must add the statistic counter of all active ports. To grant
- *     continuous counter values for the virtual port even when port
- *     switches occur we must additionally add a delta value, which was
- *     calculated during a SK_PNMI_EVT_RLMT_ACTIVE_UP event.
- *
- * Returns:
- *     Requested statistic value
- */
-PNMI_STATIC SK_U64 GetStatVal(
-SK_AC *pAC,                                    /* Pointer to adapter context */
-SK_IOC IoC,                                    /* IO context handle */
-unsigned int LogPortIndex,     /* Index of the logical Port to be processed */
-unsigned int StatIndex,                /* Index to statistic value */
-SK_U32 NetIndex)       /* NetIndex (0..n), in single net mode allways zero */
-{
-       unsigned int    PhysPortIndex;
-       unsigned int    PhysPortMax;
-       SK_U64                  Val = 0;
-
-
-       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {   /* Dual net mode */
-
-               PhysPortIndex = NetIndex;
-               Val = GetPhysStatVal(pAC, IoC, PhysPortIndex, StatIndex);
-       }
-       else {  /* Single Net mode */
-
-               if (LogPortIndex == 0) {
-
-                       PhysPortMax = pAC->GIni.GIMacsFound;
-
-                       /* Add counter of all active ports */
-                       for (PhysPortIndex = 0; PhysPortIndex < PhysPortMax;
-                               PhysPortIndex ++) {
-
-                               if (pAC->Pnmi.Port[PhysPortIndex].ActiveFlag) {
-
-                                       Val += GetPhysStatVal(pAC, IoC, PhysPortIndex,
-                                               StatIndex);
-                               }
-                       }
-
-                       /* Correct value because of port switches */
-                       Val += pAC->Pnmi.VirtualCounterOffset[StatIndex];
-               }
-               else {
-                       /* Get counter value of physical port */
-                       PhysPortIndex = SK_PNMI_PORT_LOG2PHYS(pAC, LogPortIndex);
-                       Val = GetPhysStatVal(pAC, IoC, PhysPortIndex, StatIndex);
-               }
-       }
-       return (Val);
-}
-
-/*****************************************************************************
- *
- * GetPhysStatVal - Get counter value for physical port
- *
- * Description:
- *     Builds a 64bit counter value. Except for the octet counters
- *     the lower 32bit are counted in hardware and the upper 32bit
- *     in software by monitoring counter overflow interrupts in the
- *     event handler. To grant continous counter values during XMAC
- *     resets (caused by a workaround) we must add a delta value.
- *     The delta was calculated in the event handler when a
- *     SK_PNMI_EVT_XMAC_RESET was received.
- *
- * Returns:
- *     Counter value
- */
-PNMI_STATIC SK_U64 GetPhysStatVal(
-SK_AC *pAC,                                    /* Pointer to adapter context */
-SK_IOC IoC,                                    /* IO context handle */
-unsigned int PhysPortIndex,    /* Index of the logical Port to be processed */
-unsigned int StatIndex)                /* Index to statistic value */
-{
-       SK_U64  Val = 0;
-       SK_U32  LowVal = 0;
-       SK_U32  HighVal = 0;
-       SK_U16  Word;
-       int             MacType;
-
-       SK_PNMI_PORT    *pPnmiPrt;
-       SK_GEMACFUNC    *pFnMac;
-
-       MacType = pAC->GIni.GIMacType;
-
-       /* 2002-09-17 pweber: For XMAC, use the frozen sw counters (BufPort) */
-       if (pAC->GIni.GIMacType == SK_MAC_XMAC) {
-               pPnmiPrt = &pAC->Pnmi.BufPort[PhysPortIndex];
-       }
-       else {
-               pPnmiPrt = &pAC->Pnmi.Port[PhysPortIndex];
-       }
-
-       pFnMac   = &pAC->GIni.GIFunc;
-
-       switch (StatIndex) {
-       case SK_PNMI_HTX:
-       case SK_PNMI_HRX:
-               /* Not supported by GMAC */
-               if (MacType == SK_MAC_GMAC) {
-                       return (Val);
-               }
-
-               (void)pFnMac->pFnMacStatistic(pAC, IoC, PhysPortIndex,
-                                                                         StatAddr[StatIndex][MacType].Reg,
-                                                                         &LowVal);
-               HighVal = pPnmiPrt->CounterHigh[StatIndex];
-               break;
-
-       case SK_PNMI_HTX_OCTET:
-       case SK_PNMI_HRX_OCTET:
-               (void)pFnMac->pFnMacStatistic(pAC, IoC, PhysPortIndex,
-                                                                         StatAddr[StatIndex][MacType].Reg,
-                                                                         &HighVal);
-               (void)pFnMac->pFnMacStatistic(pAC, IoC, PhysPortIndex,
-                                                                         StatAddr[StatIndex + 1][MacType].Reg,
-                                                                         &LowVal);
-               break;
-
-       case SK_PNMI_HTX_BURST:
-       case SK_PNMI_HTX_EXCESS_DEF:
-       case SK_PNMI_HTX_CARRIER:
-               /* Not supported by GMAC */
-               if (MacType == SK_MAC_GMAC) {
-                       return (Val);
-               }
-
-               (void)pFnMac->pFnMacStatistic(pAC, IoC, PhysPortIndex,
-                                                                         StatAddr[StatIndex][MacType].Reg,
-                                                                         &LowVal);
-               HighVal = pPnmiPrt->CounterHigh[StatIndex];
-               break;
-
-       case SK_PNMI_HTX_MACC:
-               /* GMAC only supports PAUSE MAC control frames */
-               if (MacType == SK_MAC_GMAC) {
-                       Val = GetPhysStatVal(pAC, IoC, PhysPortIndex, SK_PNMI_HTX_PMACC);
-
-                       return (Val);
-               }
-
-               (void)pFnMac->pFnMacStatistic(pAC, IoC, PhysPortIndex,
-                                                                         StatAddr[StatIndex][MacType].Reg,
-                                                                         &LowVal);
-               HighVal = pPnmiPrt->CounterHigh[StatIndex];
-               break;
-
-       case SK_PNMI_HTX_COL:
-       case SK_PNMI_HRX_UNDERSIZE:
-               /* Not supported by XMAC */
-               if (MacType == SK_MAC_XMAC) {
-                       return (Val);
-               }
-
-               (void)pFnMac->pFnMacStatistic(pAC, IoC, PhysPortIndex,
-                                                                         StatAddr[StatIndex][MacType].Reg,
-                                                                         &LowVal);
-               HighVal = pPnmiPrt->CounterHigh[StatIndex];
-               break;
-
-
-       case SK_PNMI_HTX_DEFFERAL:
-               /* Not supported by GMAC */
-               if (MacType == SK_MAC_GMAC) {
-                       return (Val);
-               }
-
-               /*
-                * XMAC counts frames with deferred transmission
-                * even in full-duplex mode.
-                *
-                * In full-duplex mode the counter remains constant!
-                */
-               if ((pAC->GIni.GP[PhysPortIndex].PLinkModeStatus == SK_LMODE_STAT_AUTOFULL) ||
-                       (pAC->GIni.GP[PhysPortIndex].PLinkModeStatus == SK_LMODE_STAT_FULL)) {
-
-                       LowVal = 0;
-                       HighVal = 0;
-               }
-               else {
-                       /* Otherwise get contents of hardware register. */
-                       (void)pFnMac->pFnMacStatistic(pAC, IoC, PhysPortIndex,
-                                                                                 StatAddr[SK_PNMI_HTX_DEFFERAL][MacType].Reg,
-                                                                                 &LowVal);
-                       HighVal = pPnmiPrt->CounterHigh[StatIndex];
-               }
-               break;
-
-       case SK_PNMI_HRX_BADOCTET:
-               /* Not supported by XMAC */
-               if (MacType == SK_MAC_XMAC) {
-                       return (Val);
-               }
-
-               (void)pFnMac->pFnMacStatistic(pAC, IoC, PhysPortIndex,
-                                                                         StatAddr[StatIndex][MacType].Reg,
-                                                                         &HighVal);
-               (void)pFnMac->pFnMacStatistic(pAC, IoC, PhysPortIndex,
-                                                                         StatAddr[StatIndex + 1][MacType].Reg,
-                                     &LowVal);
-               break;
-
-       case SK_PNMI_HTX_OCTETLOW:
-       case SK_PNMI_HRX_OCTETLOW:
-       case SK_PNMI_HRX_BADOCTETLOW:
-               return (Val);
-
-       case SK_PNMI_HRX_LONGFRAMES:
-               /* For XMAC the SW counter is managed by PNMI */
-               if (MacType == SK_MAC_XMAC) {
-                       return (pPnmiPrt->StatRxLongFrameCts);
-               }
-
-               (void)pFnMac->pFnMacStatistic(pAC, IoC, PhysPortIndex,
-                                                                         StatAddr[StatIndex][MacType].Reg,
-                                                                         &LowVal);
-               HighVal = pPnmiPrt->CounterHigh[StatIndex];
-               break;
-
-       case SK_PNMI_HRX_TOO_LONG:
-               (void)pFnMac->pFnMacStatistic(pAC, IoC, PhysPortIndex,
-                                               StatAddr[StatIndex][MacType].Reg,
-                                                               &LowVal);
-               HighVal = pPnmiPrt->CounterHigh[StatIndex];
-
-               Val = (((SK_U64)HighVal << 32) | (SK_U64)LowVal);
-
-               switch (MacType) {
-               case SK_MAC_GMAC:
-                       /* For GMAC the SW counter is additionally managed by PNMI */
-                       Val += pPnmiPrt->StatRxFrameTooLongCts;
-                       break;
-
-               case SK_MAC_XMAC:
-                       /*
-                        * Frames longer than IEEE 802.3 frame max size are counted
-                        * by XMAC in frame_too_long counter even reception of long
-                        * frames was enabled and the frame was correct.
-                        * So correct the value by subtracting RxLongFrame counter.
-                        */
-                       Val -= pPnmiPrt->StatRxLongFrameCts;
-                       break;
-
-               default:
-                       break;
-               }
-
-               LowVal = (SK_U32)Val;
-               HighVal = (SK_U32)(Val >> 32);
-               break;
-
-       case SK_PNMI_HRX_SHORTS:
-               /* Not supported by GMAC */
-               if (MacType == SK_MAC_GMAC) {
-                       /* GM_RXE_FRAG?? */
-                       return (Val);
-               }
-
-               /*
-                * XMAC counts short frame errors even if link down (#10620)
-                *
-                * If link-down the counter remains constant
-                */
-               if (pAC->GIni.GP[PhysPortIndex].PLinkModeStatus != SK_LMODE_STAT_UNKNOWN) {
-
-                       /* Otherwise get incremental difference */
-                       (void)pFnMac->pFnMacStatistic(pAC, IoC, PhysPortIndex,
-                                                                                 StatAddr[StatIndex][MacType].Reg,
-                                                                                 &LowVal);
-                       HighVal = pPnmiPrt->CounterHigh[StatIndex];
-
-                       Val = (((SK_U64)HighVal << 32) | (SK_U64)LowVal);
-                       Val -= pPnmiPrt->RxShortZeroMark;
-
-                       LowVal = (SK_U32)Val;
-                       HighVal = (SK_U32)(Val >> 32);
-               }
-               break;
-
-       case SK_PNMI_HRX_MACC:
-       case SK_PNMI_HRX_MACC_UNKWN:
-       case SK_PNMI_HRX_BURST:
-       case SK_PNMI_HRX_MISSED:
-       case SK_PNMI_HRX_FRAMING:
-       case SK_PNMI_HRX_CARRIER:
-       case SK_PNMI_HRX_IRLENGTH:
-       case SK_PNMI_HRX_SYMBOL:
-       case SK_PNMI_HRX_CEXT:
-               /* Not supported by GMAC */
-               if (MacType == SK_MAC_GMAC) {
-                       /* GM_RXE_FRAG?? */
-                       return (Val);
-               }
-
-               (void)pFnMac->pFnMacStatistic(pAC, IoC, PhysPortIndex,
-                                                                         StatAddr[StatIndex][MacType].Reg,
-                                                                         &LowVal);
-               HighVal = pPnmiPrt->CounterHigh[StatIndex];
-               break;
-
-       case SK_PNMI_HRX_PMACC_ERR:
-               /* For GMAC the SW counter is managed by PNMI */
-               if (MacType == SK_MAC_GMAC) {
-                       return (pPnmiPrt->StatRxPMaccErr);
-               }
-
-               (void)pFnMac->pFnMacStatistic(pAC, IoC, PhysPortIndex,
-                                                                         StatAddr[StatIndex][MacType].Reg,
-                                                                         &LowVal);
-               HighVal = pPnmiPrt->CounterHigh[StatIndex];
-               break;
-
-       /* SW counter managed by PNMI */
-       case SK_PNMI_HTX_SYNC:
-               LowVal = (SK_U32)pPnmiPrt->StatSyncCts;
-               HighVal = (SK_U32)(pPnmiPrt->StatSyncCts >> 32);
-               break;
-
-       /* SW counter managed by PNMI */
-       case SK_PNMI_HTX_SYNC_OCTET:
-               LowVal = (SK_U32)pPnmiPrt->StatSyncOctetsCts;
-               HighVal = (SK_U32)(pPnmiPrt->StatSyncOctetsCts >> 32);
-               break;
-
-       case SK_PNMI_HRX_FCS:
-               /*
-                * Broadcom filters fcs errors and counts it in
-                * Receive Error Counter register
-                */
-               if (pAC->GIni.GP[PhysPortIndex].PhyType == SK_PHY_BCOM) {
-                       /* do not read while not initialized (PHY_READ hangs!)*/
-                       if (pAC->GIni.GP[PhysPortIndex].PState) {
-                               PHY_READ(IoC, &pAC->GIni.GP[PhysPortIndex],
-                                                PhysPortIndex, PHY_BCOM_RE_CTR,
-                                                &Word);
-
-                               LowVal = Word;
-                       }
-                       HighVal = pPnmiPrt->CounterHigh[StatIndex];
-               }
-               else {
-                       (void)pFnMac->pFnMacStatistic(pAC, IoC, PhysPortIndex,
-                                                                                 StatAddr[StatIndex][MacType].Reg,
-                                                                                 &LowVal);
-                       HighVal = pPnmiPrt->CounterHigh[StatIndex];
-               }
-               break;
-
-       default:
-               (void)pFnMac->pFnMacStatistic(pAC, IoC, PhysPortIndex,
-                                                                         StatAddr[StatIndex][MacType].Reg,
-                                                                         &LowVal);
-               HighVal = pPnmiPrt->CounterHigh[StatIndex];
-               break;
-       }
-
-       Val = (((SK_U64)HighVal << 32) | (SK_U64)LowVal);
-
-       /* Correct value because of possible XMAC reset. XMAC Errata #2 */
-       Val += pPnmiPrt->CounterOffset[StatIndex];
-
-       return (Val);
-}
-
-/*****************************************************************************
- *
- * ResetCounter - Set all counters and timestamps to zero
- *
- * Description:
- *     Notifies other common modules which store statistic data to
- *     reset their counters and finally reset our own counters.
- *
- * Returns:
- *     Nothing
- */
-PNMI_STATIC void ResetCounter(
-SK_AC *pAC,            /* Pointer to adapter context */
-SK_IOC IoC,            /* IO context handle */
-SK_U32 NetIndex)
-{
-       unsigned int    PhysPortIndex;
-       SK_EVPARA       EventParam;
-
-
-       SK_MEMSET((char *)&EventParam, 0, sizeof(EventParam));
-
-       /* Notify sensor module */
-       SkEventQueue(pAC, SKGE_I2C, SK_I2CEV_CLEAR, EventParam);
-
-       /* Notify RLMT module */
-       EventParam.Para32[0] = NetIndex;
-       EventParam.Para32[1] = (SK_U32)-1;
-       SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_STATS_CLEAR, EventParam);
-       EventParam.Para32[1] = 0;
-
-       /* Notify SIRQ module */
-       SkEventQueue(pAC, SKGE_HWAC, SK_HWEV_CLEAR_STAT, EventParam);
-
-       /* Notify CSUM module */
-#ifdef SK_USE_CSUM
-       EventParam.Para32[0] = NetIndex;
-       EventParam.Para32[1] = (SK_U32)-1;
-       SkEventQueue(pAC, SKGE_CSUM, SK_CSUM_EVENT_CLEAR_PROTO_STATS,
-               EventParam);
-#endif
-
-       /* Clear XMAC statistic */
-       for (PhysPortIndex = 0; PhysPortIndex <
-               (unsigned int)pAC->GIni.GIMacsFound; PhysPortIndex ++) {
-
-               (void)pAC->GIni.GIFunc.pFnMacResetCounter(pAC, IoC, PhysPortIndex);
-
-               SK_MEMSET((char *)&pAC->Pnmi.Port[PhysPortIndex].CounterHigh,
-                       0, sizeof(pAC->Pnmi.Port[PhysPortIndex].CounterHigh));
-               SK_MEMSET((char *)&pAC->Pnmi.Port[PhysPortIndex].
-                       CounterOffset, 0, sizeof(pAC->Pnmi.Port[
-                       PhysPortIndex].CounterOffset));
-               SK_MEMSET((char *)&pAC->Pnmi.Port[PhysPortIndex].StatSyncCts,
-                       0, sizeof(pAC->Pnmi.Port[PhysPortIndex].StatSyncCts));
-               SK_MEMSET((char *)&pAC->Pnmi.Port[PhysPortIndex].
-                       StatSyncOctetsCts, 0, sizeof(pAC->Pnmi.Port[
-                       PhysPortIndex].StatSyncOctetsCts));
-               SK_MEMSET((char *)&pAC->Pnmi.Port[PhysPortIndex].
-                       StatRxLongFrameCts, 0, sizeof(pAC->Pnmi.Port[
-                       PhysPortIndex].StatRxLongFrameCts));
-               SK_MEMSET((char *)&pAC->Pnmi.Port[PhysPortIndex].
-                                 StatRxFrameTooLongCts, 0, sizeof(pAC->Pnmi.Port[
-                       PhysPortIndex].StatRxFrameTooLongCts));
-               SK_MEMSET((char *)&pAC->Pnmi.Port[PhysPortIndex].
-                                 StatRxPMaccErr, 0, sizeof(pAC->Pnmi.Port[
-                       PhysPortIndex].StatRxPMaccErr));
-       }
-
-       /*
-        * Clear local statistics
-        */
-       SK_MEMSET((char *)&pAC->Pnmi.VirtualCounterOffset, 0,
-                 sizeof(pAC->Pnmi.VirtualCounterOffset));
-       pAC->Pnmi.RlmtChangeCts = 0;
-       pAC->Pnmi.RlmtChangeTime = 0;
-       SK_MEMSET((char *)&pAC->Pnmi.RlmtChangeEstimate.EstValue[0], 0,
-               sizeof(pAC->Pnmi.RlmtChangeEstimate.EstValue));
-       pAC->Pnmi.RlmtChangeEstimate.EstValueIndex = 0;
-       pAC->Pnmi.RlmtChangeEstimate.Estimate = 0;
-       pAC->Pnmi.Port[NetIndex].TxSwQueueMax = 0;
-       pAC->Pnmi.Port[NetIndex].TxRetryCts = 0;
-       pAC->Pnmi.Port[NetIndex].RxIntrCts = 0;
-       pAC->Pnmi.Port[NetIndex].TxIntrCts = 0;
-       pAC->Pnmi.Port[NetIndex].RxNoBufCts = 0;
-       pAC->Pnmi.Port[NetIndex].TxNoBufCts = 0;
-       pAC->Pnmi.Port[NetIndex].TxUsedDescrNo = 0;
-       pAC->Pnmi.Port[NetIndex].RxDeliveredCts = 0;
-       pAC->Pnmi.Port[NetIndex].RxOctetsDeliveredCts = 0;
-       pAC->Pnmi.Port[NetIndex].ErrRecoveryCts = 0;
-}
-
-/*****************************************************************************
- *
- * GetTrapEntry - Get an entry in the trap buffer
- *
- * Description:
- *     The trap buffer stores various events. A user application somehow
- *     gets notified that an event occured and retrieves the trap buffer
- *     contens (or simply polls the buffer). The buffer is organized as
- *     a ring which stores the newest traps at the beginning. The oldest
- *     traps are overwritten by the newest ones. Each trap entry has a
- *     unique number, so that applications may detect new trap entries.
- *
- * Returns:
- *     A pointer to the trap entry
- */
-PNMI_STATIC char* GetTrapEntry(
-SK_AC *pAC,            /* Pointer to adapter context */
-SK_U32 TrapId,         /* SNMP ID of the trap */
-unsigned int Size)     /* Space needed for trap entry */
-{
-       unsigned int            BufPad = pAC->Pnmi.TrapBufPad;
-       unsigned int            BufFree = pAC->Pnmi.TrapBufFree;
-       unsigned int            Beg = pAC->Pnmi.TrapQueueBeg;
-       unsigned int            End = pAC->Pnmi.TrapQueueEnd;
-       char                    *pBuf = &pAC->Pnmi.TrapBuf[0];
-       int                     Wrap;
-       unsigned int            NeededSpace;
-       unsigned int            EntrySize;
-       SK_U32                  Val32;
-       SK_U64                  Val64;
-
-
-       /* Last byte of entry will get a copy of the entry length */
-       Size ++;
-
-       /*
-        * Calculate needed buffer space */
-       if (Beg >= Size) {
-
-               NeededSpace = Size;
-               Wrap = SK_FALSE;
-       }
-       else {
-               NeededSpace = Beg + Size;
-               Wrap = SK_TRUE;
-       }
-
-       /*
-        * Check if enough buffer space is provided. Otherwise
-        * free some entries. Leave one byte space between begin
-        * and end of buffer to make it possible to detect whether
-        * the buffer is full or empty
-        */
-       while (BufFree < NeededSpace + 1) {
-
-               if (End == 0) {
-
-                       End = SK_PNMI_TRAP_QUEUE_LEN;
-               }
-
-               EntrySize = (unsigned int)*((unsigned char *)pBuf + End - 1);
-               BufFree += EntrySize;
-               End -= EntrySize;
-#ifdef DEBUG
-               SK_MEMSET(pBuf + End, (char)(-1), EntrySize);
-#endif
-               if (End == BufPad) {
-#ifdef DEBUG
-                       SK_MEMSET(pBuf, (char)(-1), End);
-#endif
-                       BufFree += End;
-                       End = 0;
-                       BufPad = 0;
-               }
-       }
-
-       /*
-        * Insert new entry as first entry. Newest entries are
-        * stored at the beginning of the queue.
-        */
-       if (Wrap) {
-
-               BufPad = Beg;
-               Beg = SK_PNMI_TRAP_QUEUE_LEN - Size;
-       }
-       else {
-               Beg = Beg - Size;
-       }
-       BufFree -= NeededSpace;
-
-       /* Save the current offsets */
-       pAC->Pnmi.TrapQueueBeg = Beg;
-       pAC->Pnmi.TrapQueueEnd = End;
-       pAC->Pnmi.TrapBufPad = BufPad;
-       pAC->Pnmi.TrapBufFree = BufFree;
-
-       /* Initialize the trap entry */
-       *(pBuf + Beg + Size - 1) = (char)Size;
-       *(pBuf + Beg) = (char)Size;
-       Val32 = (pAC->Pnmi.TrapUnique) ++;
-       SK_PNMI_STORE_U32(pBuf + Beg + 1, Val32);
-       SK_PNMI_STORE_U32(pBuf + Beg + 1 + sizeof(SK_U32), TrapId);
-       Val64 = SK_PNMI_HUNDREDS_SEC(SkOsGetTime(pAC));
-       SK_PNMI_STORE_U64(pBuf + Beg + 1 + 2 * sizeof(SK_U32), Val64);
-
-       return (pBuf + Beg);
-}
-
-/*****************************************************************************
- *
- * CopyTrapQueue - Copies the trap buffer for the TRAP OID
- *
- * Description:
- *     On a query of the TRAP OID the trap buffer contents will be
- *     copied continuously to the request buffer, which must be large
- *     enough. No length check is performed.
- *
- * Returns:
- *     Nothing
- */
-PNMI_STATIC void CopyTrapQueue(
-SK_AC *pAC,            /* Pointer to adapter context */
-char *pDstBuf)         /* Buffer to which the queued traps will be copied */
-{
-       unsigned int    BufPad = pAC->Pnmi.TrapBufPad;
-       unsigned int    Trap = pAC->Pnmi.TrapQueueBeg;
-       unsigned int    End = pAC->Pnmi.TrapQueueEnd;
-       char            *pBuf = &pAC->Pnmi.TrapBuf[0];
-       unsigned int    Len;
-       unsigned int    DstOff = 0;
-
-
-       while (Trap != End) {
-
-               Len = (unsigned int)*(pBuf + Trap);
-
-               /*
-                * Last byte containing a copy of the length will
-                * not be copied.
-                */
-               *(pDstBuf + DstOff) = (char)(Len - 1);
-               SK_MEMCPY(pDstBuf + DstOff + 1, pBuf + Trap + 1, Len - 2);
-               DstOff += Len - 1;
-
-               Trap += Len;
-               if (Trap == SK_PNMI_TRAP_QUEUE_LEN) {
-
-                       Trap = BufPad;
-               }
-       }
-}
-
-/*****************************************************************************
- *
- * GetTrapQueueLen - Get the length of the trap buffer
- *
- * Description:
- *     Evaluates the number of currently stored traps and the needed
- *     buffer size to retrieve them.
- *
- * Returns:
- *     Nothing
- */
-PNMI_STATIC void GetTrapQueueLen(
-SK_AC *pAC,            /* Pointer to adapter context */
-unsigned int *pLen,    /* Length in Bytes of all queued traps */
-unsigned int *pEntries)        /* Returns number of trapes stored in queue */
-{
-       unsigned int    BufPad = pAC->Pnmi.TrapBufPad;
-       unsigned int    Trap = pAC->Pnmi.TrapQueueBeg;
-       unsigned int    End = pAC->Pnmi.TrapQueueEnd;
-       char            *pBuf = &pAC->Pnmi.TrapBuf[0];
-       unsigned int    Len;
-       unsigned int    Entries = 0;
-       unsigned int    TotalLen = 0;
-
-
-       while (Trap != End) {
-
-               Len = (unsigned int)*(pBuf + Trap);
-               TotalLen += Len - 1;
-               Entries ++;
-
-               Trap += Len;
-               if (Trap == SK_PNMI_TRAP_QUEUE_LEN) {
-
-                       Trap = BufPad;
-               }
-       }
-
-       *pEntries = Entries;
-       *pLen = TotalLen;
-}
-
-/*****************************************************************************
- *
- * QueueSimpleTrap - Store a simple trap to the trap buffer
- *
- * Description:
- *     A simple trap is a trap with now additional data. It consists
- *     simply of a trap code.
- *
- * Returns:
- *     Nothing
- */
-PNMI_STATIC void QueueSimpleTrap(
-SK_AC *pAC,            /* Pointer to adapter context */
-SK_U32 TrapId)         /* Type of sensor trap */
-{
-       GetTrapEntry(pAC, TrapId, SK_PNMI_TRAP_SIMPLE_LEN);
-}
-
-/*****************************************************************************
- *
- * QueueSensorTrap - Stores a sensor trap in the trap buffer
- *
- * Description:
- *     Gets an entry in the trap buffer and fills it with sensor related
- *     data.
- *
- * Returns:
- *     Nothing
- */
-PNMI_STATIC void QueueSensorTrap(
-SK_AC *pAC,                    /* Pointer to adapter context */
-SK_U32 TrapId,                 /* Type of sensor trap */
-unsigned int SensorIndex)      /* Index of sensor which caused the trap */
-{
-       char            *pBuf;
-       unsigned int    Offset;
-       unsigned int    DescrLen;
-       SK_U32          Val32;
-
-
-       /* Get trap buffer entry */
-       DescrLen = SK_STRLEN(pAC->I2c.SenTable[SensorIndex].SenDesc);
-       pBuf = GetTrapEntry(pAC, TrapId,
-               SK_PNMI_TRAP_SENSOR_LEN_BASE + DescrLen);
-       Offset = SK_PNMI_TRAP_SIMPLE_LEN;
-
-       /* Store additionally sensor trap related data */
-       Val32 = OID_SKGE_SENSOR_INDEX;
-       SK_PNMI_STORE_U32(pBuf + Offset, Val32);
-       *(pBuf + Offset + 4) = 4;
-       Val32 = (SK_U32)SensorIndex;
-       SK_PNMI_STORE_U32(pBuf + Offset + 5, Val32);
-       Offset += 9;
-
-       Val32 = (SK_U32)OID_SKGE_SENSOR_DESCR;
-       SK_PNMI_STORE_U32(pBuf + Offset, Val32);
-       *(pBuf + Offset + 4) = (char)DescrLen;
-       SK_MEMCPY(pBuf + Offset + 5, pAC->I2c.SenTable[SensorIndex].SenDesc,
-               DescrLen);
-       Offset += DescrLen + 5;
-
-       Val32 = OID_SKGE_SENSOR_TYPE;
-       SK_PNMI_STORE_U32(pBuf + Offset, Val32);
-       *(pBuf + Offset + 4) = 1;
-       *(pBuf + Offset + 5) = (char)pAC->I2c.SenTable[SensorIndex].SenType;
-       Offset += 6;
-
-       Val32 = OID_SKGE_SENSOR_VALUE;
-       SK_PNMI_STORE_U32(pBuf + Offset, Val32);
-       *(pBuf + Offset + 4) = 4;
-       Val32 = (SK_U32)pAC->I2c.SenTable[SensorIndex].SenValue;
-       SK_PNMI_STORE_U32(pBuf + Offset + 5, Val32);
-}
-
-/*****************************************************************************
- *
- * QueueRlmtNewMacTrap - Store a port switch trap in the trap buffer
- *
- * Description:
- *     Nothing further to explain.
- *
- * Returns:
- *     Nothing
- */
-PNMI_STATIC void QueueRlmtNewMacTrap(
-SK_AC *pAC,            /* Pointer to adapter context */
-unsigned int ActiveMac)        /* Index (0..n) of the currently active port */
-{
-       char    *pBuf;
-       SK_U32  Val32;
-
-
-       pBuf = GetTrapEntry(pAC, OID_SKGE_TRAP_RLMT_CHANGE_PORT,
-               SK_PNMI_TRAP_RLMT_CHANGE_LEN);
-
-       Val32 = OID_SKGE_RLMT_PORT_ACTIVE;
-       SK_PNMI_STORE_U32(pBuf + SK_PNMI_TRAP_SIMPLE_LEN, Val32);
-       *(pBuf + SK_PNMI_TRAP_SIMPLE_LEN + 4) = 1;
-       *(pBuf + SK_PNMI_TRAP_SIMPLE_LEN + 5) = (char)ActiveMac;
-}
-
-/*****************************************************************************
- *
- * QueueRlmtPortTrap - Store port related RLMT trap to trap buffer
- *
- * Description:
- *     Nothing further to explain.
- *
- * Returns:
- *     Nothing
- */
-PNMI_STATIC void QueueRlmtPortTrap(
-SK_AC *pAC,            /* Pointer to adapter context */
-SK_U32 TrapId,         /* Type of RLMT port trap */
-unsigned int PortIndex)        /* Index of the port, which changed its state */
-{
-       char    *pBuf;
-       SK_U32  Val32;
-
-
-       pBuf = GetTrapEntry(pAC, TrapId, SK_PNMI_TRAP_RLMT_PORT_LEN);
-
-       Val32 = OID_SKGE_RLMT_PORT_INDEX;
-       SK_PNMI_STORE_U32(pBuf + SK_PNMI_TRAP_SIMPLE_LEN, Val32);
-       *(pBuf + SK_PNMI_TRAP_SIMPLE_LEN + 4) = 1;
-       *(pBuf + SK_PNMI_TRAP_SIMPLE_LEN + 5) = (char)PortIndex;
-}
-
-/*****************************************************************************
- *
- * CopyMac - Copies a MAC address
- *
- * Description:
- *     Nothing further to explain.
- *
- * Returns:
- *     Nothing
- */
-PNMI_STATIC void CopyMac(
-char *pDst,            /* Pointer to destination buffer */
-SK_MAC_ADDR *pMac)     /* Pointer of Source */
-{
-       int     i;
-
-
-       for (i = 0; i < sizeof(SK_MAC_ADDR); i ++) {
-
-               *(pDst + i) = pMac->a[i];
-       }
-}
-
-
-#ifdef SK_POWER_MGMT
-/*****************************************************************************
- *
- * PowerManagement - OID handler function of PowerManagement OIDs
- *
- * Description:
- *     The code is simple. No description necessary.
- *
- * Returns:
- *     SK_PNMI_ERR_OK           The request was successfully performed.
- *     SK_PNMI_ERR_GENERAL      A general severe internal error occured.
- *     SK_PNMI_ERR_TOO_SHORT    The passed buffer is too short to contain
- *                              the correct data (e.g. a 32bit value is
- *                              needed, but a 16 bit value was passed).
- *     SK_PNMI_ERR_UNKNOWN_INST The requested instance of the OID doesn't
- *                               exist (e.g. port instance 3 on a two port
- *                              adapter.
- */
-
-PNMI_STATIC int PowerManagement(
-SK_AC *pAC,            /* Pointer to adapter context */
-SK_IOC IoC,            /* IO context handle */
-int Action,            /* Get/PreSet/Set action */
-SK_U32 Id,             /* Object ID that is to be processed */
-char *pBuf,            /* Buffer to which to mgmt data will be retrieved */
-unsigned int *pLen,    /* On call: buffer length. On return: used buffer */
-SK_U32 Instance,       /* Instance (1..n) that is to be queried or -1 */
-unsigned int TableIndex, /* Index to the Id table */
-SK_U32 NetIndex)       /* NetIndex (0..n), in single net mode allways zero */
-{
-
-       SK_U32  RetCode = SK_PNMI_ERR_GENERAL;
-
-       /*
-        * Check instance. We only handle single instance variables
-        */
-       if (Instance != (SK_U32)(-1) && Instance != 1) {
-
-               *pLen = 0;
-               return (SK_PNMI_ERR_UNKNOWN_INST);
-       }
-
-       /*
-        * Perform action
-        */
-       if (Action == SK_PNMI_GET) {
-
-               /*
-                * Check length
-                */
-               switch (Id) {
-
-               case OID_PNP_CAPABILITIES:
-                       if (*pLen < sizeof(SK_PNP_CAPABILITIES)) {
-
-                               *pLen = sizeof(SK_PNP_CAPABILITIES);
-                               return (SK_PNMI_ERR_TOO_SHORT);
-                       }
-                       break;
-
-               case OID_PNP_QUERY_POWER:
-               case OID_PNP_ENABLE_WAKE_UP:
-                       if (*pLen < sizeof(SK_U32)) {
-
-                               *pLen = sizeof(SK_U32);
-                               return (SK_PNMI_ERR_TOO_SHORT);
-                       }
-                       break;
-
-               case OID_PNP_SET_POWER:
-               case OID_PNP_ADD_WAKE_UP_PATTERN:
-               case OID_PNP_REMOVE_WAKE_UP_PATTERN:
-                       break;
-
-               default:
-                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR040,
-                               SK_PNMI_ERR040MSG);
-                       *pLen = 0;
-                       return (SK_PNMI_ERR_GENERAL);
-               }
-
-               /*
-                * Get value
-                */
-               switch (Id) {
-
-               case OID_PNP_CAPABILITIES:
-                       RetCode = SkPowerQueryPnPCapabilities(pAC, IoC, pBuf, pLen);
-                       break;
-
-               case OID_PNP_QUERY_POWER:
-                       /* The Windows DDK describes: An OID_PNP_QUERY_POWER requests
-                        the miniport to indicate whether it can transition its NIC
-                        to the low-power state.
-                        A miniport driver must always return NDIS_STATUS_SUCCESS
-                        to a query of OID_PNP_QUERY_POWER. */
-                       RetCode = SK_PNMI_ERR_OK;
-                       break;
-
-                       /* NDIS handles these OIDs as write-only.
-                        * So in case of get action the buffer with written length = 0
-                        * is returned
-                        */
-               case OID_PNP_SET_POWER:
-               case OID_PNP_ADD_WAKE_UP_PATTERN:
-               case OID_PNP_REMOVE_WAKE_UP_PATTERN:
-                       *pLen = 0;
-                       RetCode = SK_PNMI_ERR_OK;
-                       break;
-
-               case OID_PNP_ENABLE_WAKE_UP:
-                       RetCode = SkPowerGetEnableWakeUp(pAC, IoC, pBuf, pLen);
-                       break;
-
-               default:
-                       RetCode = SK_PNMI_ERR_GENERAL;
-                       break;
-               }
-
-               return (RetCode);
-       }
-
-       /*
-        * From here SET or PRESET action. Check if the passed
-        * buffer length is plausible.
-        */
-       switch (Id) {
-       case OID_PNP_SET_POWER:
-       case OID_PNP_ENABLE_WAKE_UP:
-               if (*pLen < sizeof(SK_U32)) {
-
-                       *pLen = sizeof(SK_U32);
-                       return (SK_PNMI_ERR_TOO_SHORT);
-               }
-               if (*pLen != sizeof(SK_U32)) {
-
-                       *pLen = 0;
-                       return (SK_PNMI_ERR_BAD_VALUE);
-               }
-               break;
-
-       case OID_PNP_ADD_WAKE_UP_PATTERN:
-       case OID_PNP_REMOVE_WAKE_UP_PATTERN:
-               if (*pLen < sizeof(SK_PM_PACKET_PATTERN)) {
-
-                       *pLen = 0;
-                       return (SK_PNMI_ERR_BAD_VALUE);
-               }
-               break;
-
-    default:
-               *pLen = 0;
-               return (SK_PNMI_ERR_READ_ONLY);
-       }
-
-       /*
-        * Perform preset or set
-        */
-
-       /* POWER module does not support PRESET action */
-       if (Action == SK_PNMI_PRESET) {
-               return (SK_PNMI_ERR_OK);
-       }
-
-       switch (Id) {
-       case OID_PNP_SET_POWER:
-               RetCode = SkPowerSetPower(pAC, IoC, pBuf, pLen);
-               break;
-
-       case OID_PNP_ADD_WAKE_UP_PATTERN:
-               RetCode = SkPowerAddWakeUpPattern(pAC, IoC, pBuf, pLen);
-               break;
-
-       case OID_PNP_REMOVE_WAKE_UP_PATTERN:
-               RetCode = SkPowerRemoveWakeUpPattern(pAC, IoC, pBuf, pLen);
-               break;
-
-       case OID_PNP_ENABLE_WAKE_UP:
-               RetCode = SkPowerSetEnableWakeUp(pAC, IoC, pBuf, pLen);
-               break;
-
-       default:
-               RetCode = SK_PNMI_ERR_GENERAL;
-       }
-
-       return (RetCode);
-}
-#endif /* SK_POWER_MGMT */
-
-
-/*****************************************************************************
- *
- * Vct - OID handler function of  OIDs
- *
- * Description:
- *     The code is simple. No description necessary.
- *
- * Returns:
- *     SK_PNMI_ERR_OK           The request was performed successfully.
- *     SK_PNMI_ERR_GENERAL      A general severe internal error occured.
- *     SK_PNMI_ERR_TOO_SHORT    The passed buffer is too short to contain
- *                              the correct data (e.g. a 32bit value is
- *                              needed, but a 16 bit value was passed).
- *     SK_PNMI_ERR_UNKNOWN_INST The requested instance of the OID doesn't
- *                               exist (e.g. port instance 3 on a two port
- *                              adapter).
- *     SK_PNMI_ERR_READ_ONLY    Only the Get action is allowed.
- *
- */
-
-PNMI_STATIC int Vct(
-SK_AC *pAC,            /* Pointer to adapter context */
-SK_IOC IoC,            /* IO context handle */
-int Action,            /* Get/PreSet/Set action */
-SK_U32 Id,             /* Object ID that is to be processed */
-char *pBuf,            /* Buffer to which the mgmt data will be copied */
-unsigned int *pLen,    /* On call: buffer length. On return: used buffer */
-SK_U32 Instance,       /* Instance (-1,2..n) that is to be queried */
-unsigned int TableIndex, /* Index to the Id table */
-SK_U32 NetIndex)       /* NetIndex (0..n), in single net mode always zero */
-{
-       SK_GEPORT       *pPrt;
-       SK_PNMI_VCT     *pVctBackupData;
-       SK_U32          LogPortMax;
-       SK_U32          PhysPortMax;
-       SK_U32          PhysPortIndex;
-       SK_U32          Limit;
-       SK_U32          Offset;
-       SK_BOOL         Link;
-       SK_U32          RetCode = SK_PNMI_ERR_GENERAL;
-       int             i;
-       SK_EVPARA       Para;
-       SK_U32          CableLength;
-
-       /*
-        * Calculate the port indexes from the instance.
-        */
-       PhysPortMax = pAC->GIni.GIMacsFound;
-       LogPortMax = SK_PNMI_PORT_PHYS2LOG(PhysPortMax);
-
-       /* Dual net mode? */
-       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
-               LogPortMax--;
-       }
-
-       if ((Instance != (SK_U32) (-1))) {
-               /* Check instance range. */
-               if ((Instance < 2) || (Instance > LogPortMax)) {
-                       *pLen = 0;
-                       return (SK_PNMI_ERR_UNKNOWN_INST);
-               }
-
-               if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
-                       PhysPortIndex = NetIndex;
-               }
-               else {
-                       PhysPortIndex = Instance - 2;
-               }
-               Limit = PhysPortIndex + 1;
-       }
-       else {  /*
-                * Instance == (SK_U32) (-1), get all Instances of that OID.
-                *
-                * Not implemented yet. May be used in future releases.
-                */
-               PhysPortIndex = 0;
-               Limit = PhysPortMax;
-       }
-
-       pPrt = &pAC->GIni.GP[PhysPortIndex];
-       if (pPrt->PHWLinkUp) {
-               Link = SK_TRUE;
-       }
-       else {
-               Link = SK_FALSE;
-       }
-
-       /*
-        * Check MAC type.
-        */
-       if (pPrt->PhyType != SK_PHY_MARV_COPPER) {
-               *pLen = 0;
-               return (SK_PNMI_ERR_GENERAL);
-       }
-
-       /* Initialize backup data pointer. */
-       pVctBackupData = &pAC->Pnmi.VctBackup[PhysPortIndex];
-
-       /*
-        * Check action type.
-        */
-       if (Action == SK_PNMI_GET) {
-               /*
-                * Check length.
-                */
-               switch (Id) {
-
-               case OID_SKGE_VCT_GET:
-                       if (*pLen < (Limit - PhysPortIndex) * sizeof(SK_PNMI_VCT)) {
-                               *pLen = (Limit - PhysPortIndex) * sizeof(SK_PNMI_VCT);
-                               return (SK_PNMI_ERR_TOO_SHORT);
-                       }
-                       break;
-
-               case OID_SKGE_VCT_STATUS:
-                       if (*pLen < (Limit - PhysPortIndex) * sizeof(SK_U8)) {
-                               *pLen = (Limit - PhysPortIndex) * sizeof(SK_U8);
-                               return (SK_PNMI_ERR_TOO_SHORT);
-                       }
-                       break;
-
-               default:
-                       *pLen = 0;
-                       return (SK_PNMI_ERR_GENERAL);
-               }
-
-               /*
-                * Get value.
-                */
-               Offset = 0;
-               for (; PhysPortIndex < Limit; PhysPortIndex++) {
-                       switch (Id) {
-
-                       case OID_SKGE_VCT_GET:
-                               if ((Link == SK_FALSE) &&
-                                       (pAC->Pnmi.VctStatus[PhysPortIndex] & SK_PNMI_VCT_PENDING)) {
-                                       RetCode = SkGmCableDiagStatus(pAC, IoC, PhysPortIndex, SK_FALSE);
-                                       if (RetCode == 0) {
-                                               pAC->Pnmi.VctStatus[PhysPortIndex] &= ~SK_PNMI_VCT_PENDING;
-                                               pAC->Pnmi.VctStatus[PhysPortIndex] |=
-                                                       (SK_PNMI_VCT_NEW_VCT_DATA | SK_PNMI_VCT_TEST_DONE);
-
-                                               /* Copy results for later use to PNMI struct. */
-                                               for (i = 0; i < 4; i++)  {
-                                                       if (pPrt->PMdiPairSts[i] == SK_PNMI_VCT_NORMAL_CABLE) {
-                                                               if ((pPrt->PMdiPairLen[i] > 35) && (pPrt->PMdiPairLen[i] < 0xff)) {
-                                                                       pPrt->PMdiPairSts[i] = SK_PNMI_VCT_IMPEDANCE_MISMATCH;
-                                                               }
-                                                       }
-                                                       if ((pPrt->PMdiPairLen[i] > 35) && (pPrt->PMdiPairLen[i] != 0xff)) {
-                                                               CableLength = 1000 * (((175 * pPrt->PMdiPairLen[i]) / 210) - 28);
-                                                       }
-                                                       else {
-                                                               CableLength = 0;
-                                                       }
-                                                       pVctBackupData->PMdiPairLen[i] = CableLength;
-                                                       pVctBackupData->PMdiPairSts[i] = pPrt->PMdiPairSts[i];
-                                               }
-
-                                               Para.Para32[0] = PhysPortIndex;
-                                               Para.Para32[1] = -1;
-                                               SkEventQueue(pAC, SKGE_DRV, SK_DRV_PORT_RESET, Para);
-                                               SkEventDispatcher(pAC, IoC);
-                                       }
-                                       else {
-                                               ; /* VCT test is running. */
-                                       }
-                               }
-
-                               /* Get all results. */
-                               CheckVctStatus(pAC, IoC, pBuf, Offset, PhysPortIndex);
-                               Offset += sizeof(SK_U8);
-                               *(pBuf + Offset) = pPrt->PCableLen;
-                               Offset += sizeof(SK_U8);
-                               for (i = 0; i < 4; i++)  {
-                                       SK_PNMI_STORE_U32((pBuf + Offset), pVctBackupData->PMdiPairLen[i]);
-                                       Offset += sizeof(SK_U32);
-                               }
-                               for (i = 0; i < 4; i++)  {
-                                       *(pBuf + Offset) = pVctBackupData->PMdiPairSts[i];
-                                       Offset += sizeof(SK_U8);
-                               }
-
-                               RetCode = SK_PNMI_ERR_OK;
-                               break;
-
-                       case OID_SKGE_VCT_STATUS:
-                               CheckVctStatus(pAC, IoC, pBuf, Offset, PhysPortIndex);
-                               Offset += sizeof(SK_U8);
-                               RetCode = SK_PNMI_ERR_OK;
-                               break;
-
-                       default:
-                               *pLen = 0;
-                               return (SK_PNMI_ERR_GENERAL);
-                       }
-               } /* for */
-               *pLen = Offset;
-               return (RetCode);
-
-       } /* if SK_PNMI_GET */
-
-       /*
-        * From here SET or PRESET action. Check if the passed
-        * buffer length is plausible.
-        */
-
-       /*
-        * Check length.
-        */
-       switch (Id) {
-       case OID_SKGE_VCT_SET:
-               if (*pLen < (Limit - PhysPortIndex) * sizeof(SK_U32)) {
-                       *pLen = (Limit - PhysPortIndex) * sizeof(SK_U32);
-                       return (SK_PNMI_ERR_TOO_SHORT);
-               }
-               break;
-
-       default:
-               *pLen = 0;
-               return (SK_PNMI_ERR_GENERAL);
-       }
-
-       /*
-        * Perform preset or set.
-        */
-
-       /* VCT does not support PRESET action. */
-       if (Action == SK_PNMI_PRESET) {
-               return (SK_PNMI_ERR_OK);
-       }
-
-       Offset = 0;
-       for (; PhysPortIndex < Limit; PhysPortIndex++) {
-               switch (Id) {
-               case OID_SKGE_VCT_SET: /* Start VCT test. */
-                       if (Link == SK_FALSE) {
-                               SkGeStopPort(pAC, IoC, PhysPortIndex, SK_STOP_ALL, SK_SOFT_RST);
-
-                               RetCode = SkGmCableDiagStatus(pAC, IoC, PhysPortIndex, SK_TRUE);
-                               if (RetCode == 0) { /* RetCode: 0 => Start! */
-                                       pAC->Pnmi.VctStatus[PhysPortIndex] |= SK_PNMI_VCT_PENDING;
-                                       pAC->Pnmi.VctStatus[PhysPortIndex] &= ~SK_PNMI_VCT_NEW_VCT_DATA;
-                                       pAC->Pnmi.VctStatus[PhysPortIndex] &= ~SK_PNMI_VCT_LINK;
-
-                                       /*
-                                        * Start VCT timer counter.
-                                        */
-                                       SK_MEMSET((char *) &Para, 0, sizeof(Para));
-                                       Para.Para32[0] = PhysPortIndex;
-                                       Para.Para32[1] = -1;
-                                       SkTimerStart(pAC, IoC, &pAC->Pnmi.VctTimeout[PhysPortIndex].VctTimer,
-                                               4000000, SKGE_PNMI, SK_PNMI_EVT_VCT_RESET, Para);
-                                       SK_PNMI_STORE_U32((pBuf + Offset), RetCode);
-                                       RetCode = SK_PNMI_ERR_OK;
-                               }
-                               else { /* RetCode: 2 => Running! */
-                                       SK_PNMI_STORE_U32((pBuf + Offset), RetCode);
-                                       RetCode = SK_PNMI_ERR_OK;
-                               }
-                       }
-                       else { /* RetCode: 4 => Link! */
-                               RetCode = 4;
-                               SK_PNMI_STORE_U32((pBuf + Offset), RetCode);
-                               RetCode = SK_PNMI_ERR_OK;
-                       }
-                       Offset += sizeof(SK_U32);
-                       break;
-
-               default:
-                       *pLen = 0;
-                       return (SK_PNMI_ERR_GENERAL);
-               }
-       } /* for */
-       *pLen = Offset;
-       return (RetCode);
-
-} /* Vct */
-
-
-PNMI_STATIC void CheckVctStatus(
-SK_AC          *pAC,
-SK_IOC         IoC,
-char           *pBuf,
-SK_U32         Offset,
-SK_U32         PhysPortIndex)
-{
-       SK_GEPORT       *pPrt;
-       SK_PNMI_VCT     *pVctData;
-       SK_U32          RetCode;
-       SK_U8           LinkSpeedUsed;
-
-       pPrt = &pAC->GIni.GP[PhysPortIndex];
-
-       pVctData = (SK_PNMI_VCT *) (pBuf + Offset);
-       pVctData->VctStatus = SK_PNMI_VCT_NONE;
-
-       if (!pPrt->PHWLinkUp) {
-
-               /* Was a VCT test ever made before? */
-               if (pAC->Pnmi.VctStatus[PhysPortIndex] & SK_PNMI_VCT_TEST_DONE) {
-                       if ((pAC->Pnmi.VctStatus[PhysPortIndex] & SK_PNMI_VCT_LINK)) {
-                               pVctData->VctStatus |= SK_PNMI_VCT_OLD_VCT_DATA;
-                       }
-                       else {
-                               pVctData->VctStatus |= SK_PNMI_VCT_NEW_VCT_DATA;
-                       }
-               }
-
-               /* Check VCT test status. */
-               RetCode = SkGmCableDiagStatus(pAC,IoC, PhysPortIndex, SK_FALSE);
-               if (RetCode == 2) { /* VCT test is running. */
-                       pVctData->VctStatus |= SK_PNMI_VCT_RUNNING;
-               }
-               else { /* VCT data was copied to pAC here. Check PENDING state. */
-                       if (pAC->Pnmi.VctStatus[PhysPortIndex] & SK_PNMI_VCT_PENDING) {
-                               pVctData->VctStatus |= SK_PNMI_VCT_NEW_VCT_DATA;
-                       }
-               }
-
-               if (pPrt->PCableLen != 0xff) { /* Old DSP value. */
-                       pVctData->VctStatus |= SK_PNMI_VCT_OLD_DSP_DATA;
-               }
-       }
-       else {
-
-               /* Was a VCT test ever made before? */
-               if (pAC->Pnmi.VctStatus[PhysPortIndex] & SK_PNMI_VCT_TEST_DONE) {
-                       pVctData->VctStatus &= ~SK_PNMI_VCT_NEW_VCT_DATA;
-                       pVctData->VctStatus |= SK_PNMI_VCT_OLD_VCT_DATA;
-               }
-
-               /* DSP only valid in 100/1000 modes. */
-               LinkSpeedUsed = pAC->GIni.GP[PhysPortIndex].PLinkSpeedUsed;
-               if (LinkSpeedUsed != SK_LSPEED_STAT_10MBPS) {
-                       pVctData->VctStatus |= SK_PNMI_VCT_NEW_DSP_DATA;
-               }
-       }
-
-} /* CheckVctStatus */
+/*****************************************************************************
+ *
+ * Name:       skgepnmi.c
+ * Project:    GEnesis, PCI Gigabit Ethernet Adapter
+ * Version:    $Revision: 1.1.1.1 $
+ * Date:       $Date: 2009/03/25 22:22:09 $
+ * Purpose:    Private Network Management Interface
+ *
+ ****************************************************************************/
+
+/******************************************************************************
+ *
+ *     (C)Copyright 1998-2002 SysKonnect GmbH.
+ *
+ *     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.
+ *
+ *     The information in this file is provided "AS IS" without warranty.
+ *
+ ******************************************************************************/
+
+/*****************************************************************************
+ *
+ * History:
+ *
+ *     $Log: skgepnmi.c,v $
+ *     Revision 1.1.1.1  2009/03/25 22:22:09  kenagy
+ *     no message
+ *     
+ *     Revision 1.102  2002/12/16 14:03:24  tschilli
+ *     VCT code in Vct() changed.
+ *
+ *     Revision 1.101  2002/12/16 09:04:10  tschilli
+ *     Code for VCT handling added.
+ *
+ *     Revision 1.100  2002/09/26 14:28:13  tschilli
+ *     For XMAC the values in the SK_PNMI_PORT Port struct are copied to
+ *     the new SK_PNMI_PORT BufPort struct during a MacUpdate() call.
+ *     These values are used when GetPhysStatVal() is called. With this
+ *     mechanism you get the best results when software corrections for
+ *     counters are needed. Example: RX_LONGFRAMES.
+ *
+ *     Revision 1.99  2002/09/17 12:31:19  tschilli
+ *     OID_SKGE_TX_HW_ERROR_CTS, OID_SKGE_OUT_ERROR_CTS, OID_GEN_XMIT_ERROR:
+ *     Double count of SK_PNMI_HTX_EXCESS_COL in function General() removed.
+ *     OID_PNP_CAPABILITIES: sizeof(SK_PM_WAKE_UP_CAPABILITIES) changed to
+ *     sizeof(SK_PNP_CAPABILITIES) in function PowerManagement().
+ *
+ *     Revision 1.98  2002/09/10 09:00:03  rwahl
+ *     Adapted boolean definitions according sktypes.
+ *
+ *     Revision 1.97  2002/09/05 15:07:03  rwahl
+ *     Editorial changes.
+ *
+ *     Revision 1.96  2002/09/05 11:04:14  rwahl
+ *     - Rx/Tx packets statistics of virtual port were zero on link down (#10750)
+ *     - For GMAC the overflow IRQ for Rx longframe counter was not counted.
+ *     - Incorrect calculation for oids OID_SKGE_RX_HW_ERROR_CTS,
+ *       OID_SKGE_IN_ERRORS_CTS,  OID_GEN_RCV_ERROR.
+ *     - Moved correction for OID_SKGE_STAT_RX_TOO_LONG to GetPhysStatVal().
+ *     - Editorial changes.
+ *
+ *     Revision 1.95  2002/09/04 08:53:37  rwahl
+ *     - Incorrect statistics for Rx_too_long counter with jumbo frame (#10751)
+ *     - StatRxFrameTooLong & StatRxPMaccErr counters were not reset.
+ *     - Fixed compiler warning for debug msg arg types.
+ *
+ *     Revision 1.94  2002/08/09 15:42:14  rwahl
+ *     - Fixed StatAddr table for GMAC.
+ *     - VirtualConf(): returned indeterminated status for speed oids if no
+ *       active port.
+ *
+ *     Revision 1.93  2002/08/09 11:04:59  rwahl
+ *     Added handler for link speed caps.
+ *
+ *     Revision 1.92  2002/08/09 09:43:03  rwahl
+ *     - Added handler for NDIS OID_PNP_xxx ids.
+ *
+ *     Revision 1.91  2002/07/17 19:53:03  rwahl
+ *     - Added StatOvrflwBit table for XMAC & GMAC.
+ *     - Extended StatAddr table for GMAC. Added check of number of counters
+ *       in enumeration and size of StatAddr table on init level.
+ *     - Added use of GIFunc table.
+ *     - ChipSet is not static anymore,
+ *     - Extended SIRQ event handler for both mac types.
+ *     - Fixed rx short counter bug (#10620)
+ *     - Added handler for oids SKGE_SPEED_MODE & SKGE_SPEED_STATUS.
+ *     - Extendet GetPhysStatVal() for GMAC.
+ *     - Editorial changes.
+ *
+ *     Revision 1.90  2002/05/22 08:56:25  rwahl
+ *     - Moved OID table to separate source file.
+ *     - Fix: TX_DEFFERAL counter incremented in full-duplex mode.
+ *     - Use string definitions for error msgs.
+ *
+ *     Revision 1.89  2001/09/18 10:01:30  mkunz
+ *     some OID's fixed for dualnetmode
+ *
+ *     Revision 1.88  2001/08/02 07:58:08  rwahl
+ *     - Fixed NetIndex to csum module at ResetCounter().
+ *
+ *     Revision 1.87  2001/04/06 13:35:09  mkunz
+ *     -Bugs fixed in handling of OID_SKGE_MTU and the VPD OID's
+ *
+ *     Revision 1.86  2001/03/09 09:18:03  mkunz
+ *     Changes in SK_DBG_MSG
+ *
+ *     Revision 1.85  2001/03/08 09:37:31  mkunz
+ *     Bugfix in ResetCounter for Pnmi.Port structure
+ *
+ *     Revision 1.84  2001/03/06 09:04:55  mkunz
+ *     Made some changes in instance calculation
+ *
+ *     Revision 1.83  2001/02/15 09:15:32  mkunz
+ *     Necessary changes for dual net mode added
+ *
+ *     Revision 1.82  2001/02/07 08:24:19  mkunz
+ *     -Made changes in handling of OID_SKGE_MTU
+ *
+ *     Revision 1.81  2001/02/06 09:58:00  mkunz
+ *     -Vpd bug fixed
+ *     -OID_SKGE_MTU added
+ *     -pnmi support for dual net mode. Interface function and macros extended
+ *
+ *     Revision 1.80  2001/01/22 13:41:35  rassmann
+ *     Supporting two nets on dual-port adapters.
+ *
+ *     Revision 1.79  2000/12/05 14:57:40  cgoos
+ *     SetStruct failed before first Link Up (link mode of virtual
+ *     port "INDETERMINATED").
+ *
+ *     Revision 1.78  2000/09/12 10:44:58  cgoos
+ *     Fixed SK_PNMI_STORE_U32 calls with typecasted argument.
+ *
+ *     Revision 1.77  2000/09/07 08:10:19  rwahl
+ *     - Modified algorithm for 64bit NDIS statistic counters;
+ *       returns 64bit or 32bit value depending on passed buffer
+ *       size. Indicate capability for 64bit NDIS counter, if passed
+ *       buffer size is zero. OID_GEN_XMIT_ERROR, OID_GEN_RCV_ERROR,
+ *       and OID_GEN_RCV_NO_BUFFER handled as 64bit counter, too.
+ *     - corrected OID_SKGE_RLMT_PORT_PREFERRED.
+ *
+ *     Revision 1.76  2000/08/03 15:23:39  rwahl
+ *     - Correction for FrameTooLong counter has to be moved to OID handling
+ *       routines (instead of statistic counter routine).
+ *     - Fix in XMAC Reset Event handling: Only offset counter for hardware
+ *       statistic registers are updated.
+ *
+ *     Revision 1.75  2000/08/01 16:46:05  rwahl
+ *     - Added StatRxLongFrames counter and correction of FrameTooLong counter.
+ *     - Added directive to control width (default = 32bit) of NDIS statistic
+ *       counters (SK_NDIS_64BIT_CTR).
+ *
+ *     Revision 1.74  2000/07/04 11:41:53  rwahl
+ *     - Added volition connector type.
+ *
+ *     Revision 1.73  2000/03/15 16:33:10  rwahl
+ *     Fixed bug 10510; wrong reset of virtual port statistic counters.
+ *
+ *     Revision 1.72  1999/12/06 16:15:53  rwahl
+ *     Fixed problem of instance range for current and factory MAC address.
+ *
+ *     Revision 1.71  1999/12/06 10:14:20  rwahl
+ *     Fixed bug 10476; set operation for PHY_OPERATION_MODE.
+ *
+ *     Revision 1.70  1999/11/22 13:33:34  cgoos
+ *     Changed license header to GPL.
+ *
+ *     Revision 1.69  1999/10/18 11:42:15  rwahl
+ *     Added typecasts for checking event dependent param (debug only).
+ *
+ *     Revision 1.68  1999/10/06 09:35:59  cgoos
+ *     Added state check to PHY_READ call (hanged if called during startup).
+ *
+ *     Revision 1.67  1999/09/22 09:53:20  rwahl
+ *     - Read Broadcom register for updating fcs error counter (1000Base-T).
+ *
+ *     Revision 1.66  1999/08/26 13:47:56  rwahl
+ *     Added SK_DRIVER_SENDEVENT when queueing RLMT_CHANGE_THRES trap.
+ *
+ *     Revision 1.65  1999/07/26 07:49:35  cgoos
+ *     Added two typecasts to avoid compiler warnings.
+ *
+ *     Revision 1.64  1999/05/20 09:24:12  cgoos
+ *     Changes for 1000Base-T (sensors, Master/Slave).
+ *
+ *     Revision 1.63  1999/04/13 15:11:58  mhaveman
+ *     Moved include of rlmt.h to header skgepnmi.h because some macros
+ *     are needed there.
+ *
+ *     Revision 1.62  1999/04/13 15:08:07  mhaveman
+ *     Replaced again SK_RLMT_CHECK_LINK with SK_PNMI_RLMT_MODE_CHK_LINK
+ *     to grant unified interface by only using the PNMI header file.
+ *     SK_PNMI_RLMT_MODE_CHK_LINK is defined the same as SK_RLMT_CHECK_LINK.
+ *
+ *     Revision 1.61  1999/04/13 15:02:48  mhaveman
+ *     Changes caused by review:
+ *     -Changed some comments
+ *     -Removed redundant check for OID_SKGE_PHYS_FAC_ADDR
+ *     -Optimized PRESET check.
+ *     -Meaning of error SK_ADDR_DUPLICATE_ADDRESS changed. Set of same
+ *      address will now not cause this error. Removed corresponding check.
+ *
+ *     Revision 1.60  1999/03/23 10:41:23  mhaveman
+ *     Added comments.
+ *
+ *     Revision 1.59  1999/02/19 08:01:28  mhaveman
+ *     Fixed bug 10372 that after counter reset all ports were displayed
+ *     as inactive.
+ *
+ *     Revision 1.58  1999/02/16 18:04:47  mhaveman
+ *     Fixed problem of twisted OIDs SENSOR_WAR_TIME and SENSOR_ERR_TIME.
+ *
+ *     Revision 1.56  1999/01/27 12:29:11  mhaveman
+ *     SkTimerStart was called with time value in milli seconds but needs
+ *     micro seconds.
+ *
+ *     Revision 1.55  1999/01/25 15:00:38  mhaveman
+ *     Added support to allow multiple ports to be active. If this feature in
+ *     future will be used, the Management Data Base variables PORT_ACTIVE
+ *     and PORT_PREFERED should be moved to the port specific part of RLMT.
+ *     Currently they return the values of the first active physical port
+ *     found. A set to the virtual port will actually change all active
+ *     physical ports. A get returns the melted values of all active physical
+ *     ports. If the port values differ a return value INDETERMINATED will
+ *     be returned. This effects especially the CONF group.
+ *
+ *     Revision 1.54  1999/01/19 10:10:22  mhaveman
+ *     -Fixed bug 10354: Counter values of virtual port were wrong after port
+ *      switches
+ *     -Added check if a switch to the same port is notified.
+ *
+ *     Revision 1.53  1999/01/07 09:25:21  mhaveman
+ *     Forgot to initialize a variable.
+ *
+ *     Revision 1.52  1999/01/05 10:34:33  mhaveman
+ *     Fixed little error in RlmtChangeEstimate calculation.
+ *
+ *     Revision 1.51  1999/01/05 09:59:07  mhaveman
+ *     -Moved timer start to init level 2
+ *     -Redesigned port switch average calculation to avoid 64bit
+ *      arithmetic.
+ *
+ *     Revision 1.50  1998/12/10 15:13:59  mhaveman
+ *     -Fixed: PHYS_CUR_ADDR returned wrong addresses
+ *     -Fixed: RLMT_PORT_PREFERED and RLMT_CHANGE_THRES preset returned
+ *             always BAD_VALUE.
+ *     -Fixed: TRAP buffer seemed to sometimes suddenly empty
+ *
+ *     Revision 1.49  1998/12/09 16:17:07  mhaveman
+ *     Fixed: Couldnot delete VPD keys on UNIX.
+ *
+ *     Revision 1.48  1998/12/09 14:11:10  mhaveman
+ *     -Add: Debugmessage for XMAC_RESET supressed to minimize output.
+ *     -Fixed: RlmtChangeThreshold will now be initialized.
+ *     -Fixed: VPD_ENTRIES_LIST extended value with unnecessary space char.
+ *     -Fixed: On VPD key creation an invalid key name could be created
+ *             (e.g. A5)
+ *     -Some minor changes in comments and code.
+ *
+ *     Revision 1.47  1998/12/08 16:00:31  mhaveman
+ *     -Fixed: For RLMT_PORT_ACTIVE will now be returned a 0 if no port
+ *             is active.
+ *     -Fixed: For the RLMT statistics group only the last value was
+ *             returned and the rest of the buffer was filled with 0xff
+ *     -Fixed: Mysteriously the preset on RLMT_MODE still returned
+ *             BAD_VALUE.
+ *     Revision 1.46  1998/12/08 10:04:56  mhaveman
+ *     -Fixed: Preset on RLMT_MODE returned always BAD_VALUE error.
+ *     -Fixed: Alignment error in GetStruct
+ *     -Fixed: If for Get/Preset/SetStruct the buffer size is equal or
+ *             larger than SK_PNMI_MIN_STRUCT_SIZE the return value is stored
+ *             to the buffer. In this case the caller should always return
+ *             ok to its upper routines. Only if the buffer size is less
+ *             than SK_PNMI_MIN_STRUCT_SIZE and the return value is unequal
+ *             to 0, an error should be returned by the caller.
+ *     -Fixed: Wrong number of instances with RLMT statistic.
+ *     -Fixed: Return now SK_LMODE_STAT_UNKNOWN if the LinkModeStatus is 0.
+ *
+ *     Revision 1.45  1998/12/03 17:17:24  mhaveman
+ *     -Removed for VPD create action the buffer size limitation to 4 bytes.
+ *     -Pass now physical/active physical port to ADDR for CUR_ADDR set
+ *
+ *     Revision 1.44  1998/12/03 15:14:35  mhaveman
+ *     Another change to Vpd instance evaluation.
+ *
+ *     Revision 1.43  1998/12/03 14:18:10  mhaveman
+ *     -Fixed problem in PnmiSetStruct. It was impossible to set any value.
+ *     -Removed VPD key evaluation for VPD_FREE_BYTES and VPD_ACTION.
+ *
+ *     Revision 1.42  1998/12/03 11:31:47  mhaveman
+ *     Inserted cast to satisfy lint.
+ *
+ *     Revision 1.41  1998/12/03 11:28:16  mhaveman
+ *     Removed SK_PNMI_CHECKPTR
+ *
+ *     Revision 1.40  1998/12/03 11:19:07  mhaveman
+ *     Fixed problems
+ *     -A set to virtual port will now be ignored. A set with broadcast
+ *      address to any port will be ignored.
+ *     -GetStruct function made VPD instance calculation wrong.
+ *     -Prefered port returned -1 instead of 0.
+ *
+ *     Revision 1.39  1998/11/26 15:30:29  mhaveman
+ *     Added sense mode to link mode.
+ *
+ *     Revision 1.38  1998/11/23 15:34:00  mhaveman
+ *     -Fixed bug for RX counters. On an RX overflow interrupt the high
+ *      words of all RX counters were incremented.
+ *     -SET operations on FLOWCTRL_MODE and LINK_MODE accept now the
+ *      value 0, which has no effect. It is usefull for multiple instance
+ *      SETs.
+ *
+ *     Revision 1.37  1998/11/20 08:02:04  mhaveman
+ *     -Fixed: Ports were compared with MAX_SENSORS
+ *     -Fixed: Crash in GetTrapEntry with MEMSET macro
+ *     -Fixed: Conversions between physical, logical port index and instance
+ *
+ *     Revision 1.36  1998/11/16 07:48:53  mhaveman
+ *     Casted SK_DRIVER_SENDEVENT with (void) to eleminate compiler warnings
+ *     on Solaris.
+ *
+ *     Revision 1.35  1998/11/16 07:45:34  mhaveman
+ *     SkAddrOverride now returns value and will be checked.
+ *
+ *     Revision 1.34  1998/11/10 13:40:37  mhaveman
+ *     Needed to change interface, because NT driver needs a return value
+ *     of needed buffer space on TOO_SHORT errors. Therefore all
+ *     SkPnmiGet/Preset/Set functions now have a pointer to the length
+ *     parameter, where the needed space on error is returned.
+ *
+ *     Revision 1.33  1998/11/03 13:52:46  mhaveman
+ *     Made file lint conform.
+ *
+ *     Revision 1.32  1998/11/03 13:19:07  mhaveman
+ *     The events SK_HWEV_SET_LMODE and SK_HWEV_SET_FLOWMODE pass now in
+ *     Para32[0] the physical MAC index and in Para32[1] the new mode.
+ *
+ *     Revision 1.31  1998/11/03 12:30:40  gklug
+ *     fix: compiler warning memset
+ *
+ *     Revision 1.30  1998/11/03 12:04:46  mhaveman
+ *     Fixed problem in SENSOR_VALUE, which wrote beyond the buffer end
+ *     Fixed alignment problem with CHIPSET.
+ *
+ *     Revision 1.29  1998/11/02 11:23:54  mhaveman
+ *     Corrected SK_ERROR_LOG to SK_ERR_LOG. Sorry.
+ *
+ *     Revision 1.28  1998/11/02 10:47:16  mhaveman
+ *     Added syslog messages for internal errors.
+ *
+ *     Revision 1.27  1998/10/30 15:48:06  mhaveman
+ *     Fixed problems after simulation of SK_PNMI_EVT_CHG_EST_TIMER and
+ *     RlmtChangeThreshold calculation.
+ *
+ *     Revision 1.26  1998/10/29 15:36:55  mhaveman
+ *     -Fixed bug in trap buffer handling.
+ *     -OID_SKGE_DRIVER_DESCR, OID_SKGE_DRIVER_VERSION, OID_SKGE_HW_DESCR,
+ *      OID_SKGE_HW_VERSION, OID_SKGE_VPD_ENTRIES_LIST, OID_SKGE_VPD_KEY,
+ *      OID_SKGE_VPD_VALUE, and OID_SKGE_SENSOR_DESCR return values with
+ *      a leading octet before each string storing the string length.
+ *     -Perform a RlmtUpdate during SK_PNMI_EVT_XMAC_RESET to minimize
+ *      RlmtUpdate calls in GetStatVal.
+ *     -Inserted SK_PNMI_CHECKFLAGS macro increase readability.
+ *
+ *     Revision 1.25  1998/10/29 08:50:36  mhaveman
+ *     Fixed problems after second event simulation.
+ *
+ *     Revision 1.24  1998/10/28 08:44:37  mhaveman
+ *     -Fixed alignment problem
+ *     -Fixed problems during event simulation
+ *     -Fixed sequence of error return code (INSTANCE -> ACCESS -> SHORT)
+ *     -Changed type of parameter Instance back to SK_U32 because of VPD
+ *     -Updated new VPD function calls
+ *
+ *     Revision 1.23  1998/10/23 10:16:37  mhaveman
+ *     Fixed bugs after buffer test simulation.
+ *
+ *     Revision 1.22  1998/10/21 13:23:52  mhaveman
+ *     -Call syntax of SkOsGetTime() changed to SkOsGetTime(pAc).
+ *     -Changed calculation of hundrets of seconds.
+ *
+ *     Revision 1.20  1998/10/20 07:30:45  mhaveman
+ *     Made type changes to unsigned integer where possible.
+ *
+ *     Revision 1.19  1998/10/19 10:51:30  mhaveman
+ *     -Made Bug fixes after simulation run
+ *     -Renamed RlmtMAC... to RlmtPort...
+ *     -Marked workarounds with Errata comments
+ *
+ *     Revision 1.18  1998/10/14 07:50:08  mhaveman
+ *     -For OID_SKGE_LINK_STATUS the link down detection has moved from RLMT
+ *      to HWACCESS.
+ *     -Provided all MEMCPY/MEMSET macros with (char *) pointers, because
+ *      Solaris throwed warnings when mapping to bcopy/bset.
+ *
+ *     Revision 1.17  1998/10/13 07:42:01  mhaveman
+ *     -Added OIDs OID_SKGE_TRAP_NUMBER and OID_SKGE_ALL_DATA
+ *     -Removed old cvs history entries
+ *     -Renamed MacNumber to PortNumber
+ *
+ *     Revision 1.16  1998/10/07 10:52:49  mhaveman
+ *     -Inserted handling of some OID_GEN_ Ids for windows
+ *     -Fixed problem with 803.2 statistic.
+ *
+ *     Revision 1.15  1998/10/01 09:16:29  mhaveman
+ *     Added Debug messages for function call and UpdateFlag tracing.
+ *
+ *     Revision 1.14  1998/09/30 13:39:09  mhaveman
+ *     -Reduced namings of 'MAC' by replacing them with 'PORT'.
+ *     -Completed counting of OID_SKGE_RX_HW_ERROR_CTS,
+ *       OID_SKGE_TX_HW_ERROR_CTS,
+ *      OID_SKGE_IN_ERRORS_CTS, and OID_SKGE_OUT_ERROR_CTS.
+ *     -SET check for RlmtMode
+ *
+ *     Revision 1.13  1998/09/28 13:13:08  mhaveman
+ *     Hide strcmp, strlen, and strncpy behind macros SK_STRCMP, SK_STRLEN,
+ *     and SK_STRNCPY. (Same reasons as for mem.. and MEM..)
+ *
+ *     Revision 1.12  1998/09/16 08:18:36  cgoos
+ *     Fix: XM_INxx and XM_OUTxx called with different parameter order:
+ *      sometimes IoC,Mac,...  sometimes Mac,IoC,... Now always first variant.
+ *     Fix: inserted "Pnmi." into some pAC->pDriverDescription / Version.
+ *     Change: memset, memcpy to makros SK_MEMSET, SK_MEMCPY
+ *
+ *     Revision 1.11  1998/09/04 17:01:45  mhaveman
+ *     Added SyncCounter as macro and OID_SKGE_.._NO_DESCR_CTS to
+ *     OID_SKGE_RX_NO_BUF_CTS.
+ *
+ *     Revision 1.10  1998/09/04 14:35:35  mhaveman
+ *     Added macro counters, that are counted by driver.
+ *
+ ****************************************************************************/
+
+
+#include <config.h>
+
+static const char SysKonnectFileId[] =
+       "@(#) $Id: skgepnmi.c,v 1.1.1.1 2009/03/25 22:22:09 kenagy Exp $"
+       " (C) SysKonnect.";
+
+#include "h/skdrv1st.h"
+#include "h/sktypes.h"
+#include "h/xmac_ii.h"
+#include "h/skdebug.h"
+#include "h/skqueue.h"
+#include "h/skgepnmi.h"
+#include "h/skgesirq.h"
+#include "h/skcsum.h"
+#include "h/skvpd.h"
+#include "h/skgehw.h"
+#include "h/skgeinit.h"
+#include "h/skdrv2nd.h"
+#include "h/skgepnm2.h"
+#ifdef SK_POWER_MGMT
+#include "h/skgepmgt.h"
+#endif
+/* defines *******************************************************************/
+
+#ifndef DEBUG
+#define PNMI_STATIC    static
+#else  /* DEBUG */
+#define PNMI_STATIC
+#endif /* DEBUG */
+
+/*
+ * Public Function prototypes
+ */
+int SkPnmiInit(SK_AC *pAC, SK_IOC IoC, int level);
+int SkPnmiGetVar(SK_AC *pAC, SK_IOC IoC, SK_U32 Id, void *pBuf,
+       unsigned int *pLen, SK_U32 Instance, SK_U32 NetIndex);
+int SkPnmiPreSetVar(SK_AC *pAC, SK_IOC IoC, SK_U32 Id, void *pBuf,
+       unsigned int *pLen, SK_U32 Instance, SK_U32 NetIndex);
+int SkPnmiSetVar(SK_AC *pAC, SK_IOC IoC, SK_U32 Id, void *pBuf,
+       unsigned int *pLen, SK_U32 Instance, SK_U32 NetIndex);
+int SkPnmiGetStruct(SK_AC *pAC, SK_IOC IoC, void *pBuf,
+       unsigned int *pLen, SK_U32 NetIndex);
+int SkPnmiPreSetStruct(SK_AC *pAC, SK_IOC IoC, void *pBuf,
+       unsigned int *pLen, SK_U32 NetIndex);
+int SkPnmiSetStruct(SK_AC *pAC, SK_IOC IoC, void *pBuf,
+       unsigned int *pLen, SK_U32 NetIndex);
+int SkPnmiEvent(SK_AC *pAC, SK_IOC IoC, SK_U32 Event, SK_EVPARA Param);
+
+
+/*
+ * Private Function prototypes
+ */
+
+PNMI_STATIC SK_U8 CalculateLinkModeStatus(SK_AC *pAC, SK_IOC IoC, unsigned int
+       PhysPortIndex);
+PNMI_STATIC SK_U8 CalculateLinkStatus(SK_AC *pAC, SK_IOC IoC, unsigned int
+       PhysPortIndex);
+PNMI_STATIC void CopyMac(char *pDst, SK_MAC_ADDR *pMac);
+PNMI_STATIC void CopyTrapQueue(SK_AC *pAC, char *pDstBuf);
+PNMI_STATIC SK_U64 GetPhysStatVal(SK_AC *pAC, SK_IOC IoC,
+       unsigned int PhysPortIndex, unsigned int StatIndex);
+PNMI_STATIC SK_U64 GetStatVal(SK_AC *pAC, SK_IOC IoC, unsigned int LogPortIndex,
+       unsigned int StatIndex, SK_U32 NetIndex);
+PNMI_STATIC char* GetTrapEntry(SK_AC *pAC, SK_U32 TrapId, unsigned int Size);
+PNMI_STATIC void GetTrapQueueLen(SK_AC *pAC, unsigned int *pLen,
+       unsigned int *pEntries);
+PNMI_STATIC int GetVpdKeyArr(SK_AC *pAC, SK_IOC IoC, char *pKeyArr,
+       unsigned int KeyArrLen, unsigned int *pKeyNo);
+PNMI_STATIC int LookupId(SK_U32 Id);
+PNMI_STATIC int MacUpdate(SK_AC *pAC, SK_IOC IoC, unsigned int FirstMac,
+       unsigned int LastMac);
+PNMI_STATIC int PnmiStruct(SK_AC *pAC, SK_IOC IoC, int Action, char *pBuf,
+       unsigned int *pLen, SK_U32 NetIndex);
+PNMI_STATIC int PnmiVar(SK_AC *pAC, SK_IOC IoC, int Action, SK_U32 Id,
+       char *pBuf, unsigned int *pLen, SK_U32 Instance, SK_U32 NetIndex);
+PNMI_STATIC void QueueRlmtNewMacTrap(SK_AC *pAC, unsigned int ActiveMac);
+PNMI_STATIC void QueueRlmtPortTrap(SK_AC *pAC, SK_U32 TrapId,
+       unsigned int PortIndex);
+PNMI_STATIC void QueueSensorTrap(SK_AC *pAC, SK_U32 TrapId,
+       unsigned int SensorIndex);
+PNMI_STATIC void QueueSimpleTrap(SK_AC *pAC, SK_U32 TrapId);
+PNMI_STATIC void ResetCounter(SK_AC *pAC, SK_IOC IoC, SK_U32 NetIndex);
+PNMI_STATIC int RlmtUpdate(SK_AC *pAC, SK_IOC IoC, SK_U32 NetIndex);
+PNMI_STATIC int SirqUpdate(SK_AC *pAC, SK_IOC IoC);
+PNMI_STATIC void VirtualConf(SK_AC *pAC, SK_IOC IoC, SK_U32 Id, char *pBuf);
+PNMI_STATIC int Vct(SK_AC *pAC, SK_IOC IoC, int Action, SK_U32 Id, char *pBuf,
+       unsigned int *pLen, SK_U32 Instance, unsigned int TableIndex, SK_U32 NetIndex);
+PNMI_STATIC void CheckVctStatus(SK_AC *, SK_IOC, char *, SK_U32, SK_U32);
+
+/*
+ * Table to correlate OID with handler function and index to
+ * hardware register stored in StatAddress if applicable.
+ */
+#include "skgemib.c"
+
+/* global variables **********************************************************/
+
+/*
+ * Overflow status register bit table and corresponding counter
+ * dependent on MAC type - the number relates to the size of overflow
+ * mask returned by the pFnMacOverflow function
+ */
+PNMI_STATIC const SK_U16 StatOvrflwBit[][SK_PNMI_MAC_TYPES] = {
+/* Bit0  */    { SK_PNMI_HTX,                  SK_PNMI_HTX_UNICAST},
+/* Bit1  */    { SK_PNMI_HTX_OCTETHIGH,        SK_PNMI_HTX_BROADCAST},
+/* Bit2  */    { SK_PNMI_HTX_OCTETLOW,         SK_PNMI_HTX_PMACC},
+/* Bit3  */    { SK_PNMI_HTX_BROADCAST,        SK_PNMI_HTX_MULTICAST},
+/* Bit4  */    { SK_PNMI_HTX_MULTICAST,        SK_PNMI_HTX_OCTETLOW},
+/* Bit5  */    { SK_PNMI_HTX_UNICAST,          SK_PNMI_HTX_OCTETHIGH},
+/* Bit6  */    { SK_PNMI_HTX_LONGFRAMES,       SK_PNMI_HTX_64},
+/* Bit7  */    { SK_PNMI_HTX_BURST,            SK_PNMI_HTX_127},
+/* Bit8  */    { SK_PNMI_HTX_PMACC,            SK_PNMI_HTX_255},
+/* Bit9  */    { SK_PNMI_HTX_MACC,             SK_PNMI_HTX_511},
+/* Bit10 */    { SK_PNMI_HTX_SINGLE_COL,       SK_PNMI_HTX_1023},
+/* Bit11 */    { SK_PNMI_HTX_MULTI_COL,        SK_PNMI_HTX_MAX},
+/* Bit12 */    { SK_PNMI_HTX_EXCESS_COL,       SK_PNMI_HTX_LONGFRAMES},
+/* Bit13 */    { SK_PNMI_HTX_LATE_COL,         SK_PNMI_HTX_RESERVED},
+/* Bit14 */    { SK_PNMI_HTX_DEFFERAL,         SK_PNMI_HTX_COL},
+/* Bit15 */    { SK_PNMI_HTX_EXCESS_DEF,       SK_PNMI_HTX_LATE_COL},
+/* Bit16 */    { SK_PNMI_HTX_UNDERRUN,         SK_PNMI_HTX_EXCESS_COL},
+/* Bit17 */    { SK_PNMI_HTX_CARRIER,          SK_PNMI_HTX_MULTI_COL},
+/* Bit18 */    { SK_PNMI_HTX_UTILUNDER,        SK_PNMI_HTX_SINGLE_COL},
+/* Bit19 */    { SK_PNMI_HTX_UTILOVER,         SK_PNMI_HTX_UNDERRUN},
+/* Bit20 */    { SK_PNMI_HTX_64,               SK_PNMI_HTX_RESERVED},
+/* Bit21 */    { SK_PNMI_HTX_127,              SK_PNMI_HTX_RESERVED},
+/* Bit22 */    { SK_PNMI_HTX_255,              SK_PNMI_HTX_RESERVED},
+/* Bit23 */    { SK_PNMI_HTX_511,              SK_PNMI_HTX_RESERVED},
+/* Bit24 */    { SK_PNMI_HTX_1023,             SK_PNMI_HTX_RESERVED},
+/* Bit25 */    { SK_PNMI_HTX_MAX,              SK_PNMI_HTX_RESERVED},
+/* Bit26 */    { SK_PNMI_HTX_RESERVED,         SK_PNMI_HTX_RESERVED},
+/* Bit27 */    { SK_PNMI_HTX_RESERVED,         SK_PNMI_HTX_RESERVED},
+/* Bit28 */    { SK_PNMI_HTX_RESERVED,         SK_PNMI_HTX_RESERVED},
+/* Bit29 */    { SK_PNMI_HTX_RESERVED,         SK_PNMI_HTX_RESERVED},
+/* Bit30 */    { SK_PNMI_HTX_RESERVED,         SK_PNMI_HTX_RESERVED},
+/* Bit31 */    { SK_PNMI_HTX_RESERVED,         SK_PNMI_HTX_RESERVED},
+/* Bit32 */    { SK_PNMI_HRX,                  SK_PNMI_HRX_UNICAST},
+/* Bit33 */    { SK_PNMI_HRX_OCTETHIGH,        SK_PNMI_HRX_BROADCAST},
+/* Bit34 */    { SK_PNMI_HRX_OCTETLOW,         SK_PNMI_HRX_PMACC},
+/* Bit35 */    { SK_PNMI_HRX_BROADCAST,        SK_PNMI_HRX_MULTICAST},
+/* Bit36 */    { SK_PNMI_HRX_MULTICAST,        SK_PNMI_HRX_FCS},
+/* Bit37 */    { SK_PNMI_HRX_UNICAST,          SK_PNMI_HRX_RESERVED},
+/* Bit38 */    { SK_PNMI_HRX_PMACC,            SK_PNMI_HRX_OCTETLOW},
+/* Bit39 */    { SK_PNMI_HRX_MACC,             SK_PNMI_HRX_OCTETHIGH},
+/* Bit40 */    { SK_PNMI_HRX_PMACC_ERR,        SK_PNMI_HRX_BADOCTETLOW},
+/* Bit41 */    { SK_PNMI_HRX_MACC_UNKWN,       SK_PNMI_HRX_BADOCTETHIGH},
+/* Bit42 */    { SK_PNMI_HRX_BURST,            SK_PNMI_HRX_UNDERSIZE},
+/* Bit43 */    { SK_PNMI_HRX_MISSED,           SK_PNMI_HRX_RUNT},
+/* Bit44 */    { SK_PNMI_HRX_FRAMING,          SK_PNMI_HRX_64},
+/* Bit45 */    { SK_PNMI_HRX_OVERFLOW,         SK_PNMI_HRX_127},
+/* Bit46 */    { SK_PNMI_HRX_JABBER,           SK_PNMI_HRX_255},
+/* Bit47 */    { SK_PNMI_HRX_CARRIER,          SK_PNMI_HRX_511},
+/* Bit48 */    { SK_PNMI_HRX_IRLENGTH,         SK_PNMI_HRX_1023},
+/* Bit49 */    { SK_PNMI_HRX_SYMBOL,           SK_PNMI_HRX_MAX},
+/* Bit50 */    { SK_PNMI_HRX_SHORTS,           SK_PNMI_HRX_LONGFRAMES},
+/* Bit51 */    { SK_PNMI_HRX_RUNT,             SK_PNMI_HRX_TOO_LONG},
+/* Bit52 */    { SK_PNMI_HRX_TOO_LONG,         SK_PNMI_HRX_JABBER},
+/* Bit53 */    { SK_PNMI_HRX_FCS,              SK_PNMI_HRX_RESERVED},
+/* Bit54 */    { SK_PNMI_HRX_RESERVED,         SK_PNMI_HRX_OVERFLOW},
+/* Bit55 */    { SK_PNMI_HRX_CEXT,             SK_PNMI_HRX_RESERVED},
+/* Bit56 */    { SK_PNMI_HRX_UTILUNDER,        SK_PNMI_HRX_RESERVED},
+/* Bit57 */    { SK_PNMI_HRX_UTILOVER,         SK_PNMI_HRX_RESERVED},
+/* Bit58 */    { SK_PNMI_HRX_64,               SK_PNMI_HRX_RESERVED},
+/* Bit59 */    { SK_PNMI_HRX_127,              SK_PNMI_HRX_RESERVED},
+/* Bit60 */    { SK_PNMI_HRX_255,              SK_PNMI_HRX_RESERVED},
+/* Bit61 */    { SK_PNMI_HRX_511,              SK_PNMI_HRX_RESERVED},
+/* Bit62 */    { SK_PNMI_HRX_1023,             SK_PNMI_HRX_RESERVED},
+/* Bit63 */    { SK_PNMI_HRX_MAX,              SK_PNMI_HRX_RESERVED}
+};
+
+/*
+ * Table for hardware register saving on resets and port switches
+ */
+PNMI_STATIC const SK_PNMI_STATADDR StatAddr[SK_PNMI_MAX_IDX][SK_PNMI_MAC_TYPES] = {
+       /* SK_PNMI_HTX */
+       {{XM_TXF_OK, SK_TRUE}, {0, SK_FALSE}},
+       /* SK_PNMI_HTX_OCTETHIGH */
+       {{XM_TXO_OK_HI, SK_TRUE}, {GM_TXO_OK_HI, SK_TRUE}},
+       /* SK_PNMI_HTX_OCTETLOW */
+       {{XM_TXO_OK_LO, SK_FALSE}, {GM_TXO_OK_LO, SK_FALSE}},
+       /* SK_PNMI_HTX_BROADCAST */
+       {{XM_TXF_BC_OK, SK_TRUE}, {GM_TXF_BC_OK, SK_TRUE}},
+       /* SK_PNMI_HTX_MULTICAST */
+       {{XM_TXF_MC_OK, SK_TRUE}, {GM_TXF_MC_OK, SK_TRUE}},
+       /* SK_PNMI_HTX_UNICAST */
+       {{XM_TXF_UC_OK, SK_TRUE}, {GM_TXF_UC_OK, SK_TRUE}},
+       /* SK_PNMI_HTX_BURST */
+       {{XM_TXE_BURST, SK_TRUE}, {0, SK_FALSE}},
+       /* SK_PNMI_HTX_PMACC */
+       {{XM_TXF_MPAUSE, SK_TRUE}, {GM_TXF_MPAUSE, SK_TRUE}},
+       /* SK_PNMI_HTX_MACC */
+       {{XM_TXF_MCTRL, SK_TRUE}, {0, SK_FALSE}},
+       /* SK_PNMI_HTX_COL */
+       {{0, SK_FALSE}, {GM_TXF_COL, SK_TRUE}},
+       /* SK_PNMI_HTX_SINGLE_COL */
+       {{XM_TXF_SNG_COL, SK_TRUE}, {GM_TXF_SNG_COL, SK_TRUE}},
+       /* SK_PNMI_HTX_MULTI_COL */
+       {{XM_TXF_MUL_COL, SK_TRUE}, {GM_TXF_MUL_COL, SK_TRUE}},
+       /* SK_PNMI_HTX_EXCESS_COL */
+       {{XM_TXF_ABO_COL, SK_TRUE}, {GM_TXF_ABO_COL, SK_TRUE}},
+       /* SK_PNMI_HTX_LATE_COL */
+       {{XM_TXF_LAT_COL, SK_TRUE}, {GM_TXF_LAT_COL, SK_TRUE}},
+       /* SK_PNMI_HTX_DEFFERAL */
+       {{XM_TXF_DEF, SK_TRUE}, {0, SK_FALSE}},
+       /* SK_PNMI_HTX_EXCESS_DEF */
+       {{XM_TXF_EX_DEF, SK_TRUE}, {0, SK_FALSE}},
+       /* SK_PNMI_HTX_UNDERRUN */
+       {{XM_TXE_FIFO_UR, SK_TRUE}, {GM_TXE_FIFO_UR, SK_TRUE}},
+       /* SK_PNMI_HTX_CARRIER */
+       {{XM_TXE_CS_ERR, SK_TRUE}, {0, SK_FALSE}},
+       /* SK_PNMI_HTX_UTILUNDER */
+       {{0, SK_FALSE}, {0, SK_FALSE}},
+       /* SK_PNMI_HTX_UTILOVER */
+       {{0, SK_FALSE}, {0, SK_FALSE}},
+       /* SK_PNMI_HTX_64 */
+       {{XM_TXF_64B, SK_TRUE}, {GM_TXF_64B, SK_TRUE}},
+       /* SK_PNMI_HTX_127 */
+       {{XM_TXF_127B, SK_TRUE}, {GM_TXF_127B, SK_TRUE}},
+       /* SK_PNMI_HTX_255 */
+       {{XM_TXF_255B, SK_TRUE}, {GM_TXF_255B, SK_TRUE}},
+       /* SK_PNMI_HTX_511 */
+       {{XM_TXF_511B, SK_TRUE}, {GM_TXF_511B, SK_TRUE}},
+       /* SK_PNMI_HTX_1023 */
+       {{XM_TXF_1023B, SK_TRUE}, {GM_TXF_1023B, SK_TRUE}},
+       /* SK_PNMI_HTX_MAX */
+       {{XM_TXF_MAX_SZ, SK_TRUE}, {GM_TXF_1518B, SK_TRUE}},
+       /* SK_PNMI_HTX_LONGFRAMES  */
+       {{XM_TXF_LONG, SK_TRUE}, {GM_TXF_MAX_SZ, SK_TRUE}},
+       /* SK_PNMI_HTX_SYNC */
+       {{0, SK_FALSE}, {0, SK_FALSE}},
+       /* SK_PNMI_HTX_SYNC_OCTET */
+       {{0, SK_FALSE}, {0, SK_FALSE}},
+       /* SK_PNMI_HTX_RESERVED */
+       {{0, SK_FALSE}, {0, SK_FALSE}},
+       /* SK_PNMI_HRX */
+       {{XM_RXF_OK, SK_TRUE}, {0, SK_FALSE}},
+       /* SK_PNMI_HRX_OCTETHIGH */
+       {{XM_RXO_OK_HI, SK_TRUE}, {GM_RXO_OK_HI, SK_TRUE}},
+       /* SK_PNMI_HRX_OCTETLOW */
+       {{XM_RXO_OK_LO, SK_FALSE}, {GM_RXO_OK_LO, SK_FALSE}},
+       /* SK_PNMI_HRX_BADOCTETHIGH */
+       {{0, SK_FALSE}, {GM_RXO_ERR_HI, SK_TRUE}},
+       /* SK_PNMI_HRX_BADOCTETLOW */
+       {{0, SK_FALSE}, {GM_RXO_ERR_LO, SK_TRUE}},
+       /* SK_PNMI_HRX_BROADCAST */
+       {{XM_RXF_BC_OK, SK_TRUE}, {GM_RXF_BC_OK, SK_TRUE}},
+       /* SK_PNMI_HRX_MULTICAST */
+       {{XM_RXF_MC_OK, SK_TRUE}, {GM_RXF_MC_OK, SK_TRUE}},
+       /* SK_PNMI_HRX_UNICAST */
+       {{XM_RXF_UC_OK, SK_TRUE}, {GM_RXF_UC_OK, SK_TRUE}},
+       /* SK_PNMI_HRX_PMACC */
+       {{XM_RXF_MPAUSE, SK_TRUE}, {GM_RXF_MPAUSE, SK_TRUE}},
+       /* SK_PNMI_HRX_MACC */
+       {{XM_RXF_MCTRL, SK_TRUE}, {0, SK_FALSE}},
+       /* SK_PNMI_HRX_PMACC_ERR */
+       {{XM_RXF_INV_MP, SK_TRUE}, {0, SK_FALSE}},
+       /* SK_PNMI_HRX_MACC_UNKWN */
+       {{XM_RXF_INV_MOC, SK_TRUE}, {0, SK_FALSE}},
+       /* SK_PNMI_HRX_BURST */
+       {{XM_RXE_BURST, SK_TRUE}, {0, SK_FALSE}},
+       /* SK_PNMI_HRX_MISSED */
+       {{XM_RXE_FMISS, SK_TRUE}, {0, SK_FALSE}},
+       /* SK_PNMI_HRX_FRAMING */
+       {{XM_RXF_FRA_ERR, SK_TRUE}, {0, SK_FALSE}},
+       /* SK_PNMI_HRX_UNDERSIZE */
+       {{0, SK_FALSE},{GM_RXF_SHT, SK_TRUE}},
+       /* SK_PNMI_HRX_OVERFLOW */
+       {{XM_RXE_FIFO_OV, SK_TRUE}, {GM_RXE_FIFO_OV, SK_TRUE}},
+       /* SK_PNMI_HRX_JABBER */
+       {{XM_RXF_JAB_PKT, SK_TRUE}, {GM_RXF_JAB_PKT, SK_TRUE}},
+       /* SK_PNMI_HRX_CARRIER */
+       {{XM_RXE_CAR_ERR, SK_TRUE}, {0, SK_FALSE}},
+       /* SK_PNMI_HRX_IRLENGTH */
+       {{XM_RXF_LEN_ERR, SK_TRUE}, {0, SK_FALSE}},
+       /* SK_PNMI_HRX_SYMBOL */
+       {{XM_RXE_SYM_ERR, SK_TRUE}, {0, SK_FALSE}},
+       /* SK_PNMI_HRX_SHORTS */
+       {{XM_RXE_SHT_ERR, SK_TRUE}, {0, SK_FALSE}},
+       /* SK_PNMI_HRX_RUNT */
+       {{XM_RXE_RUNT, SK_TRUE}, {GM_RXE_FRAG, SK_TRUE}},
+       /* SK_PNMI_HRX_TOO_LONG */
+       {{XM_RXF_LNG_ERR, SK_TRUE}, {GM_RXF_LNG_ERR, SK_TRUE}},
+       /* SK_PNMI_HRX_FCS */
+       {{XM_RXF_FCS_ERR, SK_TRUE}, {GM_RXF_FCS_ERR, SK_TRUE}},
+       /* SK_PNMI_HRX_CEXT */
+       {{XM_RXF_CEX_ERR, SK_TRUE}, {0, SK_FALSE}},
+       /* SK_PNMI_HRX_UTILUNDER */
+       {{0, SK_FALSE}, {0, SK_FALSE}},
+       /* SK_PNMI_HRX_UTILOVER */
+       {{0, SK_FALSE}, {0, SK_FALSE}},
+       /* SK_PNMI_HRX_64 */
+       {{XM_RXF_64B, SK_TRUE}, {GM_RXF_64B, SK_TRUE}},
+       /* SK_PNMI_HRX_127 */
+       {{XM_RXF_127B, SK_TRUE}, {GM_RXF_127B, SK_TRUE}},
+       /* SK_PNMI_HRX_255 */
+       {{XM_RXF_255B, SK_TRUE}, {GM_RXF_255B, SK_TRUE}},
+       /* SK_PNMI_HRX_511 */
+       {{XM_RXF_511B, SK_TRUE}, {GM_RXF_511B, SK_TRUE}},
+       /* SK_PNMI_HRX_1023 */
+       {{XM_RXF_1023B, SK_TRUE}, {GM_RXF_1023B, SK_TRUE}},
+       /* SK_PNMI_HRX_MAX */
+       {{XM_RXF_MAX_SZ, SK_TRUE}, {GM_RXF_1518B, SK_TRUE}},
+       /* SK_PNMI_HRX_LONGFRAMES */
+       {{0, SK_FALSE}, {GM_RXF_MAX_SZ, SK_TRUE}},
+       /* SK_PNMI_HRX_RESERVED */
+       {{0, SK_FALSE}, {0, SK_FALSE}}
+};
+
+
+/*****************************************************************************
+ *
+ * Public functions
+ *
+ */
+
+/*****************************************************************************
+ *
+ * SkPnmiInit - Init function of PNMI
+ *
+ * Description:
+ *     SK_INIT_DATA: Initialises the data structures
+ *     SK_INIT_IO:   Resets the XMAC statistics, determines the device and
+ *                   connector type.
+ *     SK_INIT_RUN:  Starts a timer event for port switch per hour
+ *                   calculation.
+ *
+ * Returns:
+ *     Always 0
+ */
+int SkPnmiInit(
+SK_AC *pAC,            /* Pointer to adapter context */
+SK_IOC IoC,            /* IO context handle */
+int Level)             /* Initialization level */
+{
+       unsigned int    PortMax;        /* Number of ports */
+       unsigned int    PortIndex;      /* Current port index in loop */
+       SK_U16          Val16;          /* Multiple purpose 16 bit variable */
+       SK_U8           Val8;           /* Mulitple purpose 8 bit variable */
+       SK_EVPARA       EventParam;     /* Event struct for timer event */
+       SK_GEPORT       *pPrt;
+       SK_PNMI_VCT     *pVctBackupData;
+
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_CTRL,
+               ("PNMI: SkPnmiInit: Called, level=%d\n", Level));
+
+       switch (Level) {
+
+       case SK_INIT_DATA:
+               SK_MEMSET((char *)&pAC->Pnmi, 0, sizeof(pAC->Pnmi));
+               pAC->Pnmi.TrapBufFree = SK_PNMI_TRAP_QUEUE_LEN;
+               pAC->Pnmi.StartUpTime = SK_PNMI_HUNDREDS_SEC(SkOsGetTime(pAC));
+               pAC->Pnmi.RlmtChangeThreshold = SK_PNMI_DEF_RLMT_CHG_THRES;
+               for (PortIndex = 0; PortIndex < SK_MAX_MACS; PortIndex ++) {
+
+                       pAC->Pnmi.Port[PortIndex].ActiveFlag = SK_FALSE;
+                       pAC->Pnmi.DualNetActiveFlag = SK_FALSE;
+               }
+
+#ifdef SK_PNMI_CHECK
+               if (SK_PNMI_MAX_IDX != SK_PNMI_CNT_NO) {
+
+                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR049, SK_PNMI_ERR049MSG);
+
+                       SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_INIT | SK_DBGCAT_FATAL,
+                                          ("CounterOffset struct size (%d) differs from"
+                                               "SK_PNMI_MAX_IDX (%d)\n",
+                                               SK_PNMI_CNT_NO, SK_PNMI_MAX_IDX));
+                       BRK;
+               }
+
+               if (SK_PNMI_MAX_IDX !=
+                       (sizeof(StatAddr) / (sizeof(SK_PNMI_STATADDR) * SK_PNMI_MAC_TYPES))) {
+
+                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR050, SK_PNMI_ERR050MSG);
+
+                       SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_INIT | SK_DBGCAT_FATAL,
+                                          ("StatAddr table size (%d) differs from "
+                                               "SK_PNMI_MAX_IDX (%d)\n",
+                                               (sizeof(StatAddr) /
+                                                (sizeof(SK_PNMI_STATADDR) * SK_PNMI_MAC_TYPES)),
+                                                SK_PNMI_MAX_IDX));
+                       BRK;
+               }
+#endif /* SK_PNMI_CHECK */
+               break;
+
+       case SK_INIT_IO:
+               /*
+                * Reset MAC counters
+                */
+               PortMax = pAC->GIni.GIMacsFound;
+
+               for (PortIndex = 0; PortIndex < PortMax; PortIndex ++) {
+
+                       pAC->GIni.GIFunc.pFnMacResetCounter(pAC, IoC, PortIndex);
+               }
+
+               /* Initialize DSP variables for Vct() to 0xff => Never written! */
+               for (PortIndex = 0; PortIndex < PortMax; PortIndex ++) {
+                       pPrt = &pAC->GIni.GP[PortIndex];
+                       pPrt->PCableLen =0xff;
+                       pVctBackupData = &pAC->Pnmi.VctBackup[PortIndex];
+                       pVctBackupData->PCableLen = 0xff;
+               }
+
+               /*
+                * Get pci bus speed
+                */
+               SK_IN16(IoC, B0_CTST, &Val16);
+               if ((Val16 & CS_BUS_CLOCK) == 0) {
+
+                       pAC->Pnmi.PciBusSpeed = 33;
+               }
+               else {
+                       pAC->Pnmi.PciBusSpeed = 66;
+               }
+
+               /*
+                * Get pci bus width
+                */
+               SK_IN16(IoC, B0_CTST, &Val16);
+               if ((Val16 & CS_BUS_SLOT_SZ) == 0) {
+
+                       pAC->Pnmi.PciBusWidth = 32;
+               }
+               else {
+                       pAC->Pnmi.PciBusWidth = 64;
+               }
+
+               /*
+                * Get chipset
+                */
+               switch (pAC->GIni.GIChipId) {
+               case CHIP_ID_GENESIS:
+                       pAC->Pnmi.Chipset = SK_PNMI_CHIPSET_XMAC;
+                       break;
+
+               case CHIP_ID_YUKON:
+                       pAC->Pnmi.Chipset = SK_PNMI_CHIPSET_YUKON;
+                       break;
+
+               default:
+                       break;
+               }
+
+               /*
+                * Get PMD and DeviceType
+                */
+               SK_IN8(IoC, B2_PMD_TYP, &Val8);
+               switch (Val8) {
+               case 'S':
+                       pAC->Pnmi.PMD = 3;
+                       if (pAC->GIni.GIMacsFound > 1) {
+
+                               pAC->Pnmi.DeviceType = 0x00020002;
+                       }
+                       else {
+                               pAC->Pnmi.DeviceType = 0x00020001;
+                       }
+                       break;
+
+               case 'L':
+                       pAC->Pnmi.PMD = 2;
+                       if (pAC->GIni.GIMacsFound > 1) {
+
+                               pAC->Pnmi.DeviceType = 0x00020004;
+                       }
+                       else {
+                               pAC->Pnmi.DeviceType = 0x00020003;
+                       }
+                       break;
+
+               case 'C':
+                       pAC->Pnmi.PMD = 4;
+                       if (pAC->GIni.GIMacsFound > 1) {
+
+                               pAC->Pnmi.DeviceType = 0x00020006;
+                       }
+                       else {
+                               pAC->Pnmi.DeviceType = 0x00020005;
+                       }
+                       break;
+
+               case 'T':
+                       pAC->Pnmi.PMD = 5;
+                       if (pAC->GIni.GIMacsFound > 1) {
+
+                               pAC->Pnmi.DeviceType = 0x00020008;
+                       }
+                       else {
+                               pAC->Pnmi.DeviceType = 0x00020007;
+                       }
+                       break;
+
+               default :
+                       pAC->Pnmi.PMD = 1;
+                       pAC->Pnmi.DeviceType = 0;
+                       break;
+               }
+
+               /*
+                * Get connector
+                */
+               SK_IN8(IoC, B2_CONN_TYP, &Val8);
+               switch (Val8) {
+               case 'C':
+                       pAC->Pnmi.Connector = 2;
+                       break;
+
+               case 'D':
+                       pAC->Pnmi.Connector = 3;
+                       break;
+
+               case 'F':
+                       pAC->Pnmi.Connector = 4;
+                       break;
+
+               case 'J':
+                       pAC->Pnmi.Connector = 5;
+                       break;
+
+               case 'V':
+                       pAC->Pnmi.Connector = 6;
+                       break;
+
+               default:
+                       pAC->Pnmi.Connector = 1;
+                       break;
+               }
+               break;
+
+       case SK_INIT_RUN:
+               /*
+                * Start timer for RLMT change counter
+                */
+               SK_MEMSET((char *) &EventParam, 0, sizeof(EventParam));
+               SkTimerStart(pAC, IoC, &pAC->Pnmi.RlmtChangeEstimate.EstTimer,
+                       28125000, SKGE_PNMI, SK_PNMI_EVT_CHG_EST_TIMER,
+                       EventParam);
+               break;
+
+       default:
+               break; /* Nothing todo */
+       }
+
+       return (0);
+}
+
+/*****************************************************************************
+ *
+ * SkPnmiGetVar - Retrieves the value of a single OID
+ *
+ * Description:
+ *     Calls a general sub-function for all this stuff. If the instance
+ *     -1 is passed, the values of all instances are returned in an
+ *     array of values.
+ *
+ * Returns:
+ *     SK_PNMI_ERR_OK           The request was successfully performed
+ *     SK_PNMI_ERR_GENERAL      A general severe internal error occured
+ *     SK_PNMI_ERR_TOO_SHORT    The passed buffer is too short to take
+ *                              the data.
+ *     SK_PNMI_ERR_UNKNOWN_OID  The requested OID is unknown
+ *     SK_PNMI_ERR_UNKNOWN_INST The requested instance of the OID doesn't
+ *                               exist (e.g. port instance 3 on a two port
+ *                              adapter.
+ */
+int SkPnmiGetVar(
+SK_AC *pAC,            /* Pointer to adapter context */
+SK_IOC IoC,            /* IO context handle */
+SK_U32 Id,             /* Object ID that is to be processed */
+void *pBuf,            /* Buffer to which to mgmt data will be retrieved */
+unsigned int *pLen,    /* On call: buffer length. On return: used buffer */
+SK_U32 Instance,       /* Instance (1..n) that is to be queried or -1 */
+SK_U32 NetIndex)       /* NetIndex (0..n), in single net mode allways zero */
+{
+       SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_CTRL,
+               ("PNMI: SkPnmiGetVar: Called, Id=0x%x, BufLen=%d, Instance=%d, NetIndex=%d\n",
+                       Id, *pLen, Instance, NetIndex));
+
+       return (PnmiVar(pAC, IoC, SK_PNMI_GET, Id, (char *)pBuf, pLen,
+               Instance, NetIndex));
+}
+
+/*****************************************************************************
+ *
+ * SkPnmiPreSetVar - Presets the value of a single OID
+ *
+ * Description:
+ *     Calls a general sub-function for all this stuff. The preset does
+ *     the same as a set, but returns just before finally setting the
+ *     new value. This is usefull to check if a set might be successfull.
+ *     If as instance a -1 is passed, an array of values is supposed and
+ *     all instance of the OID will be set.
+ *
+ * Returns:
+ *     SK_PNMI_ERR_OK           The request was successfully performed.
+ *     SK_PNMI_ERR_GENERAL      A general severe internal error occured.
+ *     SK_PNMI_ERR_TOO_SHORT    The passed buffer is too short to contain
+ *                              the correct data (e.g. a 32bit value is
+ *                              needed, but a 16 bit value was passed).
+ *     SK_PNMI_ERR_BAD_VALUE    The passed value is not in the valid
+ *                              value range.
+ *     SK_PNMI_ERR_READ_ONLY    The OID is read-only and cannot be set.
+ *     SK_PNMI_ERR_UNKNOWN_OID  The requested OID is unknown.
+ *     SK_PNMI_ERR_UNKNOWN_INST The requested instance of the OID doesn't
+ *                               exist (e.g. port instance 3 on a two port
+ *                              adapter.
+ */
+int SkPnmiPreSetVar(
+SK_AC *pAC,            /* Pointer to adapter context */
+SK_IOC IoC,            /* IO context handle */
+SK_U32 Id,             /* Object ID that is to be processed */
+void *pBuf,            /* Buffer which stores the mgmt data to be set */
+unsigned int *pLen,    /* Total length of mgmt data */
+SK_U32 Instance,       /* Instance (1..n) that is to be set or -1 */
+SK_U32 NetIndex)       /* NetIndex (0..n), in single net mode allways zero */
+{
+       SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_CTRL,
+               ("PNMI: SkPnmiPreSetVar: Called, Id=0x%x, BufLen=%d, Instance=%d, NetIndex=%d\n",
+                       Id, *pLen, Instance, NetIndex));
+
+
+       return (PnmiVar(pAC, IoC, SK_PNMI_PRESET, Id, (char *)pBuf, pLen,
+               Instance, NetIndex));
+}
+
+/*****************************************************************************
+ *
+ * SkPnmiSetVar - Sets the value of a single OID
+ *
+ * Description:
+ *     Calls a general sub-function for all this stuff. The preset does
+ *     the same as a set, but returns just before finally setting the
+ *     new value. This is usefull to check if a set might be successfull.
+ *     If as instance a -1 is passed, an array of values is supposed and
+ *     all instance of the OID will be set.
+ *
+ * Returns:
+ *     SK_PNMI_ERR_OK           The request was successfully performed.
+ *     SK_PNMI_ERR_GENERAL      A general severe internal error occured.
+ *     SK_PNMI_ERR_TOO_SHORT    The passed buffer is too short to contain
+ *                              the correct data (e.g. a 32bit value is
+ *                              needed, but a 16 bit value was passed).
+ *     SK_PNMI_ERR_BAD_VALUE    The passed value is not in the valid
+ *                              value range.
+ *     SK_PNMI_ERR_READ_ONLY    The OID is read-only and cannot be set.
+ *     SK_PNMI_ERR_UNKNOWN_OID  The requested OID is unknown.
+ *     SK_PNMI_ERR_UNKNOWN_INST The requested instance of the OID doesn't
+ *                               exist (e.g. port instance 3 on a two port
+ *                              adapter.
+ */
+int SkPnmiSetVar(
+SK_AC *pAC,            /* Pointer to adapter context */
+SK_IOC IoC,            /* IO context handle */
+SK_U32 Id,             /* Object ID that is to be processed */
+void *pBuf,            /* Buffer which stores the mgmt data to be set */
+unsigned int *pLen,    /* Total length of mgmt data */
+SK_U32 Instance,       /* Instance (1..n) that is to be set or -1 */
+SK_U32 NetIndex)       /* NetIndex (0..n), in single net mode allways zero */
+{
+       SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_CTRL,
+               ("PNMI: SkPnmiSetVar: Called, Id=0x%x, BufLen=%d, Instance=%d, NetIndex=%d\n",
+                       Id, *pLen, Instance, NetIndex));
+
+       return (PnmiVar(pAC, IoC, SK_PNMI_SET, Id, (char *)pBuf, pLen,
+               Instance, NetIndex));
+}
+
+/*****************************************************************************
+ *
+ * SkPnmiGetStruct - Retrieves the management database in SK_PNMI_STRUCT_DATA
+ *
+ * Description:
+ *     Runs through the IdTable, queries the single OIDs and stores the
+ *     returned data into the management database structure
+ *     SK_PNMI_STRUCT_DATA. The offset of the OID in the structure
+ *     is stored in the IdTable. The return value of the function will also
+ *     be stored in SK_PNMI_STRUCT_DATA if the passed buffer has the
+ *     minimum size of SK_PNMI_MIN_STRUCT_SIZE.
+ *
+ * Returns:
+ *     SK_PNMI_ERR_OK           The request was successfully performed
+ *     SK_PNMI_ERR_GENERAL      A general severe internal error occured
+ *     SK_PNMI_ERR_TOO_SHORT    The passed buffer is too short to take
+ *                              the data.
+ *     SK_PNMI_ERR_UNKNOWN_NET  The requested NetIndex doesn't exist
+ */
+int SkPnmiGetStruct(
+SK_AC *pAC,            /* Pointer to adapter context */
+SK_IOC IoC,            /* IO context handle */
+void *pBuf,            /* Buffer which will store the retrieved data */
+unsigned int *pLen,    /* Length of buffer */
+SK_U32 NetIndex)       /* NetIndex (0..n), in single net mode allways zero */
+{
+       int             Ret;
+       unsigned int    TableIndex;
+       unsigned int    DstOffset;
+       unsigned int    InstanceNo;
+       unsigned int    InstanceCnt;
+       SK_U32          Instance;
+       unsigned int    TmpLen;
+       char            KeyArr[SK_PNMI_VPD_ENTRIES][SK_PNMI_VPD_KEY_SIZE];
+
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_CTRL,
+               ("PNMI: SkPnmiGetStruct: Called, BufLen=%d, NetIndex=%d\n",
+                       *pLen, NetIndex));
+
+       if (*pLen < SK_PNMI_STRUCT_SIZE) {
+
+               if (*pLen >= SK_PNMI_MIN_STRUCT_SIZE) {
+
+                       SK_PNMI_SET_STAT(pBuf, SK_PNMI_ERR_TOO_SHORT,
+                               (SK_U32)(-1));
+               }
+
+               *pLen = SK_PNMI_STRUCT_SIZE;
+               return (SK_PNMI_ERR_TOO_SHORT);
+       }
+
+    /*
+     * Check NetIndex
+     */
+       if (NetIndex >= pAC->Rlmt.NumNets) {
+               return (SK_PNMI_ERR_UNKNOWN_NET);
+       }
+
+       /* Update statistic */
+       SK_PNMI_CHECKFLAGS("SkPnmiGetStruct: On call");
+
+       if ((Ret = MacUpdate(pAC, IoC, 0, pAC->GIni.GIMacsFound - 1)) !=
+               SK_PNMI_ERR_OK) {
+
+               SK_PNMI_SET_STAT(pBuf, Ret, (SK_U32)(-1));
+               *pLen = SK_PNMI_MIN_STRUCT_SIZE;
+               return (Ret);
+       }
+
+       if ((Ret = RlmtUpdate(pAC, IoC, NetIndex)) != SK_PNMI_ERR_OK) {
+
+               SK_PNMI_SET_STAT(pBuf, Ret, (SK_U32)(-1));
+               *pLen = SK_PNMI_MIN_STRUCT_SIZE;
+               return (Ret);
+       }
+
+       if ((Ret = SirqUpdate(pAC, IoC)) != SK_PNMI_ERR_OK) {
+
+               SK_PNMI_SET_STAT(pBuf, Ret, (SK_U32)(-1));
+               *pLen = SK_PNMI_MIN_STRUCT_SIZE;
+               return (Ret);
+       }
+
+       /*
+        * Increment semaphores to indicate that an update was
+        * already done
+        */
+       pAC->Pnmi.MacUpdatedFlag ++;
+       pAC->Pnmi.RlmtUpdatedFlag ++;
+       pAC->Pnmi.SirqUpdatedFlag ++;
+
+       /* Get vpd keys for instance calculation */
+       Ret = GetVpdKeyArr(pAC, IoC, &KeyArr[0][0], sizeof(KeyArr), &TmpLen);
+       if (Ret != SK_PNMI_ERR_OK) {
+
+               pAC->Pnmi.MacUpdatedFlag --;
+               pAC->Pnmi.RlmtUpdatedFlag --;
+               pAC->Pnmi.SirqUpdatedFlag --;
+
+               SK_PNMI_CHECKFLAGS("SkPnmiGetStruct: On return");
+               SK_PNMI_SET_STAT(pBuf, Ret, (SK_U32)(-1));
+               *pLen = SK_PNMI_MIN_STRUCT_SIZE;
+               return (SK_PNMI_ERR_GENERAL);
+       }
+
+       /* Retrieve values */
+       SK_MEMSET((char *)pBuf, 0, SK_PNMI_STRUCT_SIZE);
+       for (TableIndex = 0; TableIndex < ID_TABLE_SIZE; TableIndex ++) {
+
+               InstanceNo = IdTable[TableIndex].InstanceNo;
+               for (InstanceCnt = 1; InstanceCnt <= InstanceNo;
+                       InstanceCnt ++) {
+
+                       DstOffset = IdTable[TableIndex].Offset +
+                               (InstanceCnt - 1) *
+                               IdTable[TableIndex].StructSize;
+
+                       /*
+                        * For the VPD the instance is not an index number
+                        * but the key itself. Determin with the instance
+                        * counter the VPD key to be used.
+                        */
+                       if (IdTable[TableIndex].Id == OID_SKGE_VPD_KEY ||
+                               IdTable[TableIndex].Id == OID_SKGE_VPD_VALUE ||
+                               IdTable[TableIndex].Id == OID_SKGE_VPD_ACCESS ||
+                               IdTable[TableIndex].Id == OID_SKGE_VPD_ACTION) {
+
+                               SK_STRNCPY((char *)&Instance, KeyArr[InstanceCnt - 1], 4);
+                       }
+                       else {
+                               Instance = (SK_U32)InstanceCnt;
+                       }
+
+                       TmpLen = *pLen - DstOffset;
+                       Ret = IdTable[TableIndex].Func(pAC, IoC, SK_PNMI_GET,
+                               IdTable[TableIndex].Id, (char *)pBuf +
+                               DstOffset, &TmpLen, Instance, TableIndex, NetIndex);
+
+                       /*
+                        * An unknown instance error means that we reached
+                        * the last instance of that variable. Proceed with
+                        * the next OID in the table and ignore the return
+                        * code.
+                        */
+                       if (Ret == SK_PNMI_ERR_UNKNOWN_INST) {
+
+               break;
+                       }
+
+                       if (Ret != SK_PNMI_ERR_OK) {
+
+                               pAC->Pnmi.MacUpdatedFlag --;
+                               pAC->Pnmi.RlmtUpdatedFlag --;
+                               pAC->Pnmi.SirqUpdatedFlag --;
+
+                               SK_PNMI_CHECKFLAGS("SkPnmiGetStruct: On return");
+                               SK_PNMI_SET_STAT(pBuf, Ret, DstOffset);
+                               *pLen = SK_PNMI_MIN_STRUCT_SIZE;
+                               return (Ret);
+                       }
+               }
+       }
+
+       pAC->Pnmi.MacUpdatedFlag --;
+       pAC->Pnmi.RlmtUpdatedFlag --;
+       pAC->Pnmi.SirqUpdatedFlag --;
+
+       *pLen = SK_PNMI_STRUCT_SIZE;
+       SK_PNMI_CHECKFLAGS("SkPnmiGetStruct: On return");
+       SK_PNMI_SET_STAT(pBuf, SK_PNMI_ERR_OK, (SK_U32)(-1));
+       return (SK_PNMI_ERR_OK);
+}
+
+/*****************************************************************************
+ *
+ * SkPnmiPreSetStruct - Presets the management database in SK_PNMI_STRUCT_DATA
+ *
+ * Description:
+ *     Calls a general sub-function for all this set stuff. The preset does
+ *     the same as a set, but returns just before finally setting the
+ *     new value. This is usefull to check if a set might be successfull.
+ *     The sub-function runs through the IdTable, checks which OIDs are able
+ *     to set, and calls the handler function of the OID to perform the
+ *     preset. The return value of the function will also be stored in
+ *     SK_PNMI_STRUCT_DATA if the passed buffer has the minimum size of
+ *     SK_PNMI_MIN_STRUCT_SIZE.
+ *
+ * Returns:
+ *     SK_PNMI_ERR_OK           The request was successfully performed.
+ *     SK_PNMI_ERR_GENERAL      A general severe internal error occured.
+ *     SK_PNMI_ERR_TOO_SHORT    The passed buffer is too short to contain
+ *                              the correct data (e.g. a 32bit value is
+ *                              needed, but a 16 bit value was passed).
+ *     SK_PNMI_ERR_BAD_VALUE    The passed value is not in the valid
+ *                              value range.
+ */
+int SkPnmiPreSetStruct(
+SK_AC *pAC,            /* Pointer to adapter context */
+SK_IOC IoC,            /* IO context handle */
+void *pBuf,            /* Buffer which contains the data to be set */
+unsigned int *pLen,    /* Length of buffer */
+SK_U32 NetIndex)       /* NetIndex (0..n), in single net mode allways zero */
+{
+       SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_CTRL,
+               ("PNMI: SkPnmiPreSetStruct: Called, BufLen=%d, NetIndex=%d\n",
+                       *pLen, NetIndex));
+
+       return (PnmiStruct(pAC, IoC, SK_PNMI_PRESET, (char *)pBuf,
+                                       pLen, NetIndex));
+}
+
+/*****************************************************************************
+ *
+ * SkPnmiSetStruct - Sets the management database in SK_PNMI_STRUCT_DATA
+ *
+ * Description:
+ *     Calls a general sub-function for all this set stuff. The return value
+ *     of the function will also be stored in SK_PNMI_STRUCT_DATA if the
+ *     passed buffer has the minimum size of SK_PNMI_MIN_STRUCT_SIZE.
+ *     The sub-function runs through the IdTable, checks which OIDs are able
+ *     to set, and calls the handler function of the OID to perform the
+ *     set. The return value of the function will also be stored in
+ *     SK_PNMI_STRUCT_DATA if the passed buffer has the minimum size of
+ *     SK_PNMI_MIN_STRUCT_SIZE.
+ *
+ * Returns:
+ *     SK_PNMI_ERR_OK           The request was successfully performed.
+ *     SK_PNMI_ERR_GENERAL      A general severe internal error occured.
+ *     SK_PNMI_ERR_TOO_SHORT    The passed buffer is too short to contain
+ *                              the correct data (e.g. a 32bit value is
+ *                              needed, but a 16 bit value was passed).
+ *     SK_PNMI_ERR_BAD_VALUE    The passed value is not in the valid
+ *                              value range.
+ */
+int SkPnmiSetStruct(
+SK_AC *pAC,            /* Pointer to adapter context */
+SK_IOC IoC,            /* IO context handle */
+void *pBuf,            /* Buffer which contains the data to be set */
+unsigned int *pLen,    /* Length of buffer */
+SK_U32 NetIndex)       /* NetIndex (0..n), in single net mode allways zero */
+{
+       SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_CTRL,
+               ("PNMI: SkPnmiSetStruct: Called, BufLen=%d, NetIndex=%d\n",
+                       *pLen, NetIndex));
+
+       return (PnmiStruct(pAC, IoC, SK_PNMI_SET, (char *)pBuf,
+                                       pLen, NetIndex));
+}
+
+/*****************************************************************************
+ *
+ * SkPnmiEvent - Event handler
+ *
+ * Description:
+ *     Handles the following events:
+ *     SK_PNMI_EVT_SIRQ_OVERFLOW     When a hardware counter overflows an
+ *                                   interrupt will be generated which is
+ *                                   first handled by SIRQ which generates a
+ *                                   this event. The event increments the
+ *                                   upper 32 bit of the 64 bit counter.
+ *     SK_PNMI_EVT_SEN_XXX           The event is generated by the I2C module
+ *                                   when a sensor reports a warning or
+ *                                   error. The event will store a trap
+ *                                   message in the trap buffer.
+ *     SK_PNMI_EVT_CHG_EST_TIMER     The timer event was initiated by this
+ *                                   module and is used to calculate the
+ *                                   port switches per hour.
+ *     SK_PNMI_EVT_CLEAR_COUNTER     The event clears all counters and
+ *                                   timestamps.
+ *     SK_PNMI_EVT_XMAC_RESET        The event is generated by the driver
+ *                                   before a hard reset of the XMAC is
+ *                                   performed. All counters will be saved
+ *                                   and added to the hardware counter
+ *                                   values after reset to grant continuous
+ *                                   counter values.
+ *     SK_PNMI_EVT_RLMT_PORT_UP      Generated by RLMT to notify that a port
+ *                                   went logically up. A trap message will
+ *                                   be stored to the trap buffer.
+ *     SK_PNMI_EVT_RLMT_PORT_DOWN    Generated by RLMT to notify that a port
+ *                                   went logically down. A trap message will
+ *                                   be stored to the trap buffer.
+ *     SK_PNMI_EVT_RLMT_SEGMENTATION Generated by RLMT to notify that two
+ *                                   spanning tree root bridges were
+ *                                   detected. A trap message will be stored
+ *                                   to the trap buffer.
+ *     SK_PNMI_EVT_RLMT_ACTIVE_DOWN  Notifies PNMI that an active port went
+ *                                   down. PNMI will not further add the
+ *                                   statistic values to the virtual port.
+ *     SK_PNMI_EVT_RLMT_ACTIVE_UP    Notifies PNMI that a port went up and
+ *                                   is now an active port. PNMI will now
+ *                                   add the statistic data of this port to
+ *                                   the virtual port.
+ *     SK_PNMI_EVT_RLMT_SET_NETS     Notifies PNMI about the net mode. The first Parameter
+ *                                   contains the number of nets. 1 means single net, 2 means
+ *                                   dual net. The second Parameter is -1
+ *
+ * Returns:
+ *     Always 0
+ */
+int SkPnmiEvent(
+SK_AC *pAC,            /* Pointer to adapter context */
+SK_IOC IoC,            /* IO context handle */
+SK_U32 Event,          /* Event-Id */
+SK_EVPARA Param)       /* Event dependent parameter */
+{
+       unsigned int    PhysPortIndex;
+       unsigned int    MaxNetNumber;
+       int                     CounterIndex;
+       int                     Ret;
+       SK_U16          MacStatus;
+       SK_U64          OverflowStatus;
+       SK_U64          Mask;
+       int                     MacType;
+       SK_U64          Value;
+       SK_U32          Val32;
+       SK_U16          Register;
+       SK_EVPARA       EventParam;
+       SK_U64          NewestValue;
+       SK_U64          OldestValue;
+       SK_U64          Delta;
+       SK_PNMI_ESTIMATE *pEst;
+       SK_U32          NetIndex;
+       SK_GEPORT       *pPrt;
+       SK_PNMI_VCT     *pVctBackupData;
+       SK_U32          RetCode;
+       int             i;
+       SK_U32          CableLength;
+
+
+#ifdef DEBUG
+       if (Event != SK_PNMI_EVT_XMAC_RESET) {
+
+               SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_CTRL,
+                       ("PNMI: SkPnmiEvent: Called, Event=0x%x, Param=0x%x\n",
+                       (unsigned int)Event, (unsigned int)Param.Para64));
+       }
+#endif
+       SK_PNMI_CHECKFLAGS("SkPnmiEvent: On call");
+
+       MacType = pAC->GIni.GIMacType;
+
+       switch (Event) {
+
+       case SK_PNMI_EVT_SIRQ_OVERFLOW:
+               PhysPortIndex = (int)Param.Para32[0];
+               MacStatus = (SK_U16)Param.Para32[1];
+#ifdef DEBUG
+               if (PhysPortIndex >= SK_MAX_MACS) {
+
+                       SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_CTRL,
+                               ("PNMI: ERR: SkPnmiEvent: SK_PNMI_EVT_SIRQ_OVERFLOW parameter"
+                                " wrong, PhysPortIndex=0x%x\n",
+                               PhysPortIndex));
+                       return (0);
+               }
+#endif
+               OverflowStatus = 0;
+
+               /*
+                * Check which source caused an overflow interrupt.
+                */
+               if ((pAC->GIni.GIFunc.pFnMacOverflow(
+                        pAC, IoC, PhysPortIndex, MacStatus, &OverflowStatus) != 0) ||
+                       (OverflowStatus == 0)) {
+
+                       SK_PNMI_CHECKFLAGS("SkPnmiEvent: On return");
+                       return (0);
+               }
+
+               /*
+                * Check the overflow status register and increment
+                * the upper dword of corresponding counter.
+                */
+               for (CounterIndex = 0; CounterIndex < sizeof(Mask) * 8;
+                       CounterIndex ++) {
+
+                       Mask = (SK_U64)1 << CounterIndex;
+                       if ((OverflowStatus & Mask) == 0) {
+
+                               continue;
+                       }
+
+                       switch (StatOvrflwBit[CounterIndex][MacType]) {
+
+                       case SK_PNMI_HTX_UTILUNDER:
+                       case SK_PNMI_HTX_UTILOVER:
+                               XM_IN16(IoC, PhysPortIndex, XM_TX_CMD,
+                                       &Register);
+                               Register |= XM_TX_SAM_LINE;
+                               XM_OUT16(IoC, PhysPortIndex, XM_TX_CMD,
+                                       Register);
+                               break;
+
+                       case SK_PNMI_HRX_UTILUNDER:
+                       case SK_PNMI_HRX_UTILOVER:
+                               XM_IN16(IoC, PhysPortIndex, XM_RX_CMD,
+                                       &Register);
+                               Register |= XM_RX_SAM_LINE;
+                               XM_OUT16(IoC, PhysPortIndex, XM_RX_CMD,
+                                       Register);
+                               break;
+
+                       case SK_PNMI_HTX_OCTETHIGH:
+                       case SK_PNMI_HTX_OCTETLOW:
+                       case SK_PNMI_HTX_RESERVED:
+                       case SK_PNMI_HRX_OCTETHIGH:
+                       case SK_PNMI_HRX_OCTETLOW:
+                       case SK_PNMI_HRX_IRLENGTH:
+                       case SK_PNMI_HRX_RESERVED:
+
+                       /*
+                        * the following counters aren't be handled (id > 63)
+                        */
+                       case SK_PNMI_HTX_SYNC:
+                       case SK_PNMI_HTX_SYNC_OCTET:
+                               break;
+
+                       case SK_PNMI_HRX_LONGFRAMES:
+                               if (MacType == SK_MAC_GMAC) {
+                                       pAC->Pnmi.Port[PhysPortIndex].
+                                               CounterHigh[CounterIndex] ++;
+                               }
+                               break;
+
+                       default:
+                               pAC->Pnmi.Port[PhysPortIndex].
+                                       CounterHigh[CounterIndex] ++;
+                       }
+               }
+               break;
+
+       case SK_PNMI_EVT_SEN_WAR_LOW:
+#ifdef DEBUG
+               if ((unsigned int)Param.Para64 >= (unsigned int)pAC->I2c.MaxSens) {
+
+                       SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_CTRL,
+                               ("PNMI: ERR: SkPnmiEvent: SK_PNMI_EVT_SEN_WAR_LOW parameter wrong, SensorIndex=%d\n",
+                               (unsigned int)Param.Para64));
+                       return (0);
+               }
+#endif
+               /*
+                * Store a trap message in the trap buffer and generate
+                * an event for user space applications with the
+                * SK_DRIVER_SENDEVENT macro.
+                */
+               QueueSensorTrap(pAC, OID_SKGE_TRAP_SEN_WAR_LOW,
+                       (unsigned int)Param.Para64);
+               (void)SK_DRIVER_SENDEVENT(pAC, IoC);
+               break;
+
+       case SK_PNMI_EVT_SEN_WAR_UPP:
+#ifdef DEBUG
+               if ((unsigned int)Param.Para64 >= (unsigned int)pAC->I2c.MaxSens) {
+
+                       SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_CTRL,
+                               ("PNMI: ERR:SkPnmiEvent: SK_PNMI_EVT_SEN_WAR_UPP parameter wrong, SensorIndex=%d\n",
+                               (unsigned int)Param.Para64));
+                       return (0);
+               }
+#endif
+               /*
+                * Store a trap message in the trap buffer and generate
+                * an event for user space applications with the
+                * SK_DRIVER_SENDEVENT macro.
+                */
+               QueueSensorTrap(pAC, OID_SKGE_TRAP_SEN_WAR_UPP,
+                       (unsigned int)Param.Para64);
+               (void)SK_DRIVER_SENDEVENT(pAC, IoC);
+               break;
+
+       case SK_PNMI_EVT_SEN_ERR_LOW:
+#ifdef DEBUG
+               if ((unsigned int)Param.Para64 >= (unsigned int)pAC->I2c.MaxSens) {
+
+                       SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_CTRL,
+                               ("PNMI: ERR: SkPnmiEvent: SK_PNMI_EVT_SEN_ERR_LOW parameter wrong, SensorIndex=%d\n",
+                               (unsigned int)Param.Para64));
+                       return (0);
+               }
+#endif
+               /*
+                * Store a trap message in the trap buffer and generate
+                * an event for user space applications with the
+                * SK_DRIVER_SENDEVENT macro.
+                */
+               QueueSensorTrap(pAC, OID_SKGE_TRAP_SEN_ERR_LOW,
+                       (unsigned int)Param.Para64);
+               (void)SK_DRIVER_SENDEVENT(pAC, IoC);
+               break;
+
+       case SK_PNMI_EVT_SEN_ERR_UPP:
+#ifdef DEBUG
+               if ((unsigned int)Param.Para64 >= (unsigned int)pAC->I2c.MaxSens) {
+
+                       SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_CTRL,
+                               ("PNMI: ERR: SkPnmiEvent: SK_PNMI_EVT_SEN_ERR_UPP parameter wrong, SensorIndex=%d\n",
+                               (unsigned int)Param.Para64));
+                       return (0);
+               }
+#endif
+               /*
+                * Store a trap message in the trap buffer and generate
+                * an event for user space applications with the
+                * SK_DRIVER_SENDEVENT macro.
+                */
+               QueueSensorTrap(pAC, OID_SKGE_TRAP_SEN_ERR_UPP,
+                       (unsigned int)Param.Para64);
+               (void)SK_DRIVER_SENDEVENT(pAC, IoC);
+               break;
+
+       case SK_PNMI_EVT_CHG_EST_TIMER:
+               /*
+                * Calculate port switch average on a per hour basis
+                *   Time interval for check       : 28125 ms
+                *   Number of values for average  : 8
+                *
+                * Be careful in changing these values, on change check
+                *   - typedef of SK_PNMI_ESTIMATE (Size of EstValue
+                *     array one less than value number)
+                *   - Timer initilization SkTimerStart() in SkPnmiInit
+                *   - Delta value below must be multiplicated with
+                *     power of 2
+                *
+                */
+               pEst = &pAC->Pnmi.RlmtChangeEstimate;
+               CounterIndex = pEst->EstValueIndex + 1;
+               if (CounterIndex == 7) {
+
+                       CounterIndex = 0;
+               }
+               pEst->EstValueIndex = CounterIndex;
+
+               NewestValue = pAC->Pnmi.RlmtChangeCts;
+               OldestValue = pEst->EstValue[CounterIndex];
+               pEst->EstValue[CounterIndex] = NewestValue;
+
+               /*
+                * Calculate average. Delta stores the number of
+                * port switches per 28125 * 8 = 225000 ms
+                */
+               if (NewestValue >= OldestValue) {
+
+                       Delta = NewestValue - OldestValue;
+               }
+               else {
+                       /* Overflow situation */
+                       Delta = (SK_U64)(0 - OldestValue) + NewestValue;
+               }
+
+               /*
+                * Extrapolate delta to port switches per hour.
+                *     Estimate = Delta * (3600000 / 225000)
+                *              = Delta * 16
+                *              = Delta << 4
+                */
+               pAC->Pnmi.RlmtChangeEstimate.Estimate = Delta << 4;
+
+               /*
+                * Check if threshold is exceeded. If the threshold is
+                * permanently exceeded every 28125 ms an event will be
+                * generated to remind the user of this condition.
+                */
+               if ((pAC->Pnmi.RlmtChangeThreshold != 0) &&
+                       (pAC->Pnmi.RlmtChangeEstimate.Estimate >=
+                       pAC->Pnmi.RlmtChangeThreshold)) {
+
+                       QueueSimpleTrap(pAC, OID_SKGE_TRAP_RLMT_CHANGE_THRES);
+                       (void)SK_DRIVER_SENDEVENT(pAC, IoC);
+               }
+
+               SK_MEMSET((char *) &EventParam, 0, sizeof(EventParam));
+               SkTimerStart(pAC, IoC, &pAC->Pnmi.RlmtChangeEstimate.EstTimer,
+                       28125000, SKGE_PNMI, SK_PNMI_EVT_CHG_EST_TIMER,
+                       EventParam);
+               break;
+
+       case SK_PNMI_EVT_CLEAR_COUNTER:
+               /*
+                *  Param.Para32[0] contains the NetIndex (0 ..1).
+                *  Param.Para32[1] is reserved, contains -1.
+                */
+               NetIndex = (SK_U32)Param.Para32[0];
+
+#ifdef DEBUG
+               if (NetIndex >= pAC->Rlmt.NumNets) {
+
+                       SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_CTRL,
+                               ("PNMI: ERR: SkPnmiEvent: SK_PNMI_EVT_CLEAR_COUNTER parameter wrong, NetIndex=%d\n",
+                               NetIndex));
+
+                       return (0);
+               }
+#endif
+
+               /*
+                * Set all counters and timestamps to zero
+                */
+               ResetCounter(pAC, IoC, NetIndex); /* the according NetIndex is required
+                                                                                               as a Parameter of the Event */
+               break;
+
+       case SK_PNMI_EVT_XMAC_RESET:
+               /*
+                * To grant continuous counter values store the current
+                * XMAC statistic values to the entries 1..n of the
+                * CounterOffset array. XMAC Errata #2
+                */
+#ifdef DEBUG
+               if ((unsigned int)Param.Para64 >= SK_MAX_MACS) {
+
+                       SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_CTRL,
+                               ("PNMI: ERR: SkPnmiEvent: SK_PNMI_EVT_XMAC_RESET parameter wrong, PhysPortIndex=%d\n",
+                               (unsigned int)Param.Para64));
+                       return (0);
+               }
+#endif
+               PhysPortIndex = (unsigned int)Param.Para64;
+
+               /*
+                * Update XMAC statistic to get fresh values
+                */
+               Ret = MacUpdate(pAC, IoC, 0, pAC->GIni.GIMacsFound - 1);
+               if (Ret != SK_PNMI_ERR_OK) {
+
+                       SK_PNMI_CHECKFLAGS("SkPnmiEvent: On return");
+                       return (0);
+               }
+               /*
+                * Increment semaphore to indicate that an update was
+                * already done
+                */
+               pAC->Pnmi.MacUpdatedFlag ++;
+
+               for (CounterIndex = 0; CounterIndex < SK_PNMI_MAX_IDX;
+                       CounterIndex ++) {
+
+                       if (!StatAddr[CounterIndex][MacType].GetOffset) {
+
+                               continue;
+                       }
+
+                       pAC->Pnmi.Port[PhysPortIndex].
+                               CounterOffset[CounterIndex] = GetPhysStatVal(
+                               pAC, IoC, PhysPortIndex, CounterIndex);
+                       pAC->Pnmi.Port[PhysPortIndex].
+                               CounterHigh[CounterIndex] = 0;
+               }
+
+               pAC->Pnmi.MacUpdatedFlag --;
+               break;
+
+       case SK_PNMI_EVT_RLMT_PORT_UP:
+               PhysPortIndex = (unsigned int)Param.Para32[0];
+#ifdef DEBUG
+               if (PhysPortIndex >= SK_MAX_MACS) {
+
+                       SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_CTRL,
+                               ("PNMI: ERR: SkPnmiEvent: SK_PNMI_EVT_RLMT_PORT_UP parameter"
+                " wrong, PhysPortIndex=%d\n", PhysPortIndex));
+
+                       return (0);
+               }
+#endif
+               /*
+                * Store a trap message in the trap buffer and generate an event for
+                * user space applications with the SK_DRIVER_SENDEVENT macro.
+                */
+               QueueRlmtPortTrap(pAC, OID_SKGE_TRAP_RLMT_PORT_UP, PhysPortIndex);
+               (void)SK_DRIVER_SENDEVENT(pAC, IoC);
+
+               /* Bugfix for XMAC errata (#10620)*/
+               if (pAC->GIni.GIMacType == SK_MAC_XMAC){
+
+                       /* Add incremental difference to offset (#10620)*/
+                       (void)pAC->GIni.GIFunc.pFnMacStatistic(pAC, IoC, PhysPortIndex,
+                               XM_RXE_SHT_ERR, &Val32);
+
+                       Value = (((SK_U64)pAC->Pnmi.Port[PhysPortIndex].
+                                CounterHigh[SK_PNMI_HRX_SHORTS] << 32) | (SK_U64)Val32);
+                       pAC->Pnmi.Port[PhysPortIndex].CounterOffset[SK_PNMI_HRX_SHORTS] +=
+                               Value - pAC->Pnmi.Port[PhysPortIndex].RxShortZeroMark;
+               }
+
+               /* Tell VctStatus() that a link was up meanwhile. */
+               pAC->Pnmi.VctStatus[PhysPortIndex] |= SK_PNMI_VCT_LINK;
+               break;
+
+    case SK_PNMI_EVT_RLMT_PORT_DOWN:
+               PhysPortIndex = (unsigned int)Param.Para32[0];
+
+#ifdef DEBUG
+               if (PhysPortIndex >= SK_MAX_MACS) {
+
+                       SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_CTRL,
+                               ("PNMI: ERR: SkPnmiEvent: SK_PNMI_EVT_RLMT_PORT_DOWN parameter"
+                " wrong, PhysPortIndex=%d\n", PhysPortIndex));
+
+                       return (0);
+               }
+#endif
+               /*
+                * Store a trap message in the trap buffer and generate an event for
+                * user space applications with the SK_DRIVER_SENDEVENT macro.
+                */
+               QueueRlmtPortTrap(pAC, OID_SKGE_TRAP_RLMT_PORT_DOWN, PhysPortIndex);
+               (void)SK_DRIVER_SENDEVENT(pAC, IoC);
+
+               /* Bugfix #10620 - get zero level for incremental difference */
+               if ((pAC->GIni.GIMacType == SK_MAC_XMAC)) {
+
+                       (void)pAC->GIni.GIFunc.pFnMacStatistic(pAC, IoC, PhysPortIndex,
+                               XM_RXE_SHT_ERR, &Val32);
+                       pAC->Pnmi.Port[PhysPortIndex].RxShortZeroMark =
+                               (((SK_U64)pAC->Pnmi.Port[PhysPortIndex].
+                                CounterHigh[SK_PNMI_HRX_SHORTS] << 32) | (SK_U64)Val32);
+               }
+               break;
+
+       case SK_PNMI_EVT_RLMT_ACTIVE_DOWN:
+               PhysPortIndex = (unsigned int)Param.Para32[0];
+               NetIndex = (SK_U32)Param.Para32[1];
+
+#ifdef DEBUG
+               if (PhysPortIndex >= SK_MAX_MACS) {
+
+                       SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_CTRL,
+                               ("PNMI: ERR: SkPnmiEvent: SK_PNMI_EVT_RLMT_ACTIVE_DOWN parameter too high, PhysPort=%d\n",
+                               PhysPortIndex));
+               }
+
+               if (NetIndex >= pAC->Rlmt.NumNets) {
+
+                       SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_CTRL,
+                               ("PNMI: ERR: SkPnmiEvent: SK_PNMI_EVT_RLMT_ACTIVE_DOWN parameter too high, NetIndex=%d\n",
+                               NetIndex));
+               }
+#endif
+               /*
+                * For now, ignore event if NetIndex != 0.
+                */
+               if (Param.Para32[1] != 0) {
+
+                       return (0);
+               }
+
+               /*
+                * Nothing to do if port is already inactive
+                */
+               if (!pAC->Pnmi.Port[PhysPortIndex].ActiveFlag) {
+
+                       return (0);
+               }
+
+               /*
+                * Update statistic counters to calculate new offset for the virtual
+                * port and increment semaphore to indicate that an update was already
+                * done.
+                */
+               if (MacUpdate(pAC, IoC, 0, pAC->GIni.GIMacsFound - 1) !=
+                       SK_PNMI_ERR_OK) {
+
+                       SK_PNMI_CHECKFLAGS("SkPnmiEvent: On return");
+                       return (0);
+               }
+               pAC->Pnmi.MacUpdatedFlag ++;
+
+               /*
+                * Calculate new counter offset for virtual port to grant continous
+                * counting on port switches. The virtual port consists of all currently
+                * active ports. The port down event indicates that a port is removed
+                * from the virtual port. Therefore add the counter value of the removed
+                * port to the CounterOffset for the virtual port to grant the same
+                * counter value.
+                */
+               for (CounterIndex = 0; CounterIndex < SK_PNMI_MAX_IDX;
+                       CounterIndex ++) {
+
+                       if (!StatAddr[CounterIndex][MacType].GetOffset) {
+
+                               continue;
+                       }
+
+                       Value = GetPhysStatVal(pAC, IoC, PhysPortIndex, CounterIndex);
+
+                       pAC->Pnmi.VirtualCounterOffset[CounterIndex] += Value;
+               }
+
+               /*
+                * Set port to inactive
+                */
+               pAC->Pnmi.Port[PhysPortIndex].ActiveFlag = SK_FALSE;
+
+               pAC->Pnmi.MacUpdatedFlag --;
+               break;
+
+       case SK_PNMI_EVT_RLMT_ACTIVE_UP:
+               PhysPortIndex = (unsigned int)Param.Para32[0];
+               NetIndex = (SK_U32)Param.Para32[1];
+
+#ifdef DEBUG
+               if (PhysPortIndex >= SK_MAX_MACS) {
+
+                       SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_CTRL,
+                               ("PNMI: ERR: SkPnmiEvent: SK_PNMI_EVT_RLMT_ACTIVE_UP parameter too high, PhysPort=%d\n",
+                               PhysPortIndex));
+               }
+
+               if (NetIndex >= pAC->Rlmt.NumNets) {
+
+                       SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_CTRL,
+                               ("PNMI: ERR: SkPnmiEvent: SK_PNMI_EVT_RLMT_ACTIVE_UP parameter too high, NetIndex=%d\n",
+                               NetIndex));
+               }
+#endif
+               /*
+                * For now, ignore event if NetIndex != 0.
+                */
+               if (Param.Para32[1] != 0) {
+
+                       return (0);
+               }
+
+               /*
+                * Nothing to do if port is already active
+                */
+               if (pAC->Pnmi.Port[PhysPortIndex].ActiveFlag) {
+
+                       return (0);
+               }
+
+               /*
+                * Statistic maintenance
+                */
+               pAC->Pnmi.RlmtChangeCts ++;
+               pAC->Pnmi.RlmtChangeTime = SK_PNMI_HUNDREDS_SEC(SkOsGetTime(pAC));
+
+               /*
+                * Store a trap message in the trap buffer and generate an event for
+                * user space applications with the SK_DRIVER_SENDEVENT macro.
+                */
+               QueueRlmtNewMacTrap(pAC, PhysPortIndex);
+               (void)SK_DRIVER_SENDEVENT(pAC, IoC);
+
+               /*
+                * Update statistic counters to calculate new offset for the virtual
+                * port and increment semaphore to indicate that an update was
+                * already done.
+                */
+               if (MacUpdate(pAC, IoC, 0, pAC->GIni.GIMacsFound - 1) !=
+                       SK_PNMI_ERR_OK) {
+
+                       SK_PNMI_CHECKFLAGS("SkPnmiEvent: On return");
+                       return (0);
+               }
+               pAC->Pnmi.MacUpdatedFlag ++;
+
+               /*
+                * Calculate new counter offset for virtual port to grant continous
+                * counting on port switches. A new port is added to the virtual port.
+                * Therefore substract the counter value of the new port from the
+                * CounterOffset for the virtual port to grant the same value.
+                */
+               for (CounterIndex = 0; CounterIndex < SK_PNMI_MAX_IDX;
+                       CounterIndex ++) {
+
+                       if (!StatAddr[CounterIndex][MacType].GetOffset) {
+
+                               continue;
+                       }
+
+                       Value = GetPhysStatVal(pAC, IoC, PhysPortIndex, CounterIndex);
+
+                       pAC->Pnmi.VirtualCounterOffset[CounterIndex] -= Value;
+               }
+
+               /*
+                * Set port to active
+                */
+               pAC->Pnmi.Port[PhysPortIndex].ActiveFlag = SK_TRUE;
+
+               pAC->Pnmi.MacUpdatedFlag --;
+               break;
+
+       case SK_PNMI_EVT_RLMT_SEGMENTATION:
+               /*
+                * Para.Para32[0] contains the NetIndex.
+                */
+
+               /*
+                * Store a trap message in the trap buffer and generate an event for
+                * user space applications with the SK_DRIVER_SENDEVENT macro.
+                */
+               QueueSimpleTrap(pAC, OID_SKGE_TRAP_RLMT_SEGMENTATION);
+               (void)SK_DRIVER_SENDEVENT(pAC, IoC);
+               break;
+
+    case SK_PNMI_EVT_RLMT_SET_NETS:
+               /*
+                *  Param.Para32[0] contains the number of Nets.
+                *  Param.Para32[1] is reserved, contains -1.
+                */
+           /*
+        * Check number of nets
+                */
+               MaxNetNumber = pAC->GIni.GIMacsFound;
+               if (((unsigned int)Param.Para32[0] < 1)
+                       || ((unsigned int)Param.Para32[0] > MaxNetNumber)) {
+                       return (SK_PNMI_ERR_UNKNOWN_NET);
+               }
+
+       if ((unsigned int)Param.Para32[0] == 1) { /* single net mode */
+               pAC->Pnmi.DualNetActiveFlag = SK_FALSE;
+       }
+       else { /* dual net mode */
+               pAC->Pnmi.DualNetActiveFlag = SK_TRUE;
+       }
+       break;
+
+    case SK_PNMI_EVT_VCT_RESET:
+       PhysPortIndex = Param.Para32[0];
+       pPrt = &pAC->GIni.GP[PhysPortIndex];
+       pVctBackupData = &pAC->Pnmi.VctBackup[PhysPortIndex];
+
+       if (pAC->Pnmi.VctStatus[PhysPortIndex] & SK_PNMI_VCT_PENDING) {
+               RetCode = SkGmCableDiagStatus(pAC, IoC, PhysPortIndex, SK_FALSE);
+               if (RetCode == 2) {
+                       /*
+                        * VCT test is still running.
+                        * Start VCT timer counter again.
+                        */
+                       SK_MEMSET((char *) &Param, 0, sizeof(Param));
+                       Param.Para32[0] = PhysPortIndex;
+                       Param.Para32[1] = -1;
+                       SkTimerStart(pAC, IoC, &pAC->Pnmi.VctTimeout[PhysPortIndex].VctTimer,
+                               4000000, SKGE_PNMI, SK_PNMI_EVT_VCT_RESET, Param);
+                       break;
+               }
+               pAC->Pnmi.VctStatus[PhysPortIndex] &= ~SK_PNMI_VCT_PENDING;
+               pAC->Pnmi.VctStatus[PhysPortIndex] |=
+                       (SK_PNMI_VCT_NEW_VCT_DATA | SK_PNMI_VCT_TEST_DONE);
+
+               /* Copy results for later use to PNMI struct. */
+               for (i = 0; i < 4; i++)  {
+                       if (pPrt->PMdiPairLen[i] > 35) {
+                               CableLength = 1000 * (((175 * pPrt->PMdiPairLen[i]) / 210) - 28);
+                       }
+                       else {
+                               CableLength = 0;
+                       }
+                       pVctBackupData->PMdiPairLen[i] = CableLength;
+                       pVctBackupData->PMdiPairSts[i] = pPrt->PMdiPairSts[i];
+               }
+
+               Param.Para32[0] = PhysPortIndex;
+               Param.Para32[1] = -1;
+               SkEventQueue(pAC, SKGE_DRV, SK_DRV_PORT_RESET, Param);
+               SkEventDispatcher(pAC, IoC);
+       }
+
+       break;
+
+       default:
+               break;
+       }
+
+       SK_PNMI_CHECKFLAGS("SkPnmiEvent: On return");
+       return (0);
+}
+
+
+/******************************************************************************
+ *
+ * Private functions
+ *
+ */
+
+/*****************************************************************************
+ *
+ * PnmiVar - Gets, presets, and sets single OIDs
+ *
+ * Description:
+ *     Looks up the requested OID, calls the corresponding handler
+ *     function, and passes the parameters with the get, preset, or
+ *     set command. The function is called by SkGePnmiGetVar,
+ *     SkGePnmiPreSetVar, or SkGePnmiSetVar.
+ *
+ * Returns:
+ *     SK_PNMI_ERR_XXX. For details have a look to the description of the
+ *     calling functions.
+ *     SK_PNMI_ERR_UNKNOWN_NET  The requested NetIndex doesn't exist
+ */
+PNMI_STATIC int PnmiVar(
+SK_AC *pAC,            /* Pointer to adapter context */
+SK_IOC IoC,            /* IO context handle */
+int Action,            /* Get/PreSet/Set action */
+SK_U32 Id,             /* Object ID that is to be processed */
+char *pBuf,            /* Buffer which stores the mgmt data to be set */
+unsigned int *pLen,    /* Total length of mgmt data */
+SK_U32 Instance,       /* Instance (1..n) that is to be set or -1 */
+SK_U32 NetIndex)       /* NetIndex (0..n), in single net mode allways zero */
+{
+       unsigned int    TableIndex;
+       int             Ret;
+
+
+       if ((TableIndex = LookupId(Id)) == (unsigned int)(-1)) {
+
+               *pLen = 0;
+               return (SK_PNMI_ERR_UNKNOWN_OID);
+       }
+
+    /*
+     * Check NetIndex
+     */
+       if (NetIndex >= pAC->Rlmt.NumNets) {
+               return (SK_PNMI_ERR_UNKNOWN_NET);
+       }
+
+       SK_PNMI_CHECKFLAGS("PnmiVar: On call");
+
+       Ret = IdTable[TableIndex].Func(pAC, IoC, Action, Id, pBuf, pLen,
+               Instance, TableIndex, NetIndex);
+
+       SK_PNMI_CHECKFLAGS("PnmiVar: On return");
+
+       return (Ret);
+}
+
+/*****************************************************************************
+ *
+ * PnmiStruct - Presets and Sets data in structure SK_PNMI_STRUCT_DATA
+ *
+ * Description:
+ *     The return value of the function will also be stored in
+ *     SK_PNMI_STRUCT_DATA if the passed buffer has the minimum size of
+ *     SK_PNMI_MIN_STRUCT_SIZE. The sub-function runs through the IdTable,
+ *     checks which OIDs are able to set, and calls the handler function of
+ *     the OID to perform the set. The return value of the function will
+ *     also be stored in SK_PNMI_STRUCT_DATA if the passed buffer has the
+ *     minimum size of SK_PNMI_MIN_STRUCT_SIZE. The function is called
+ *     by SkGePnmiPreSetStruct and SkGePnmiSetStruct.
+ *
+ * Returns:
+ *     SK_PNMI_ERR_XXX. The codes are described in the calling functions.
+ *     SK_PNMI_ERR_UNKNOWN_NET  The requested NetIndex doesn't exist
+ */
+PNMI_STATIC int PnmiStruct(
+SK_AC *pAC,            /* Pointer to adapter context */
+SK_IOC IoC,            /* IO context handle */
+int  Action,           /* Set action to be performed */
+char *pBuf,            /* Buffer which contains the data to be set */
+unsigned int *pLen,    /* Length of buffer */
+SK_U32 NetIndex)       /* NetIndex (0..n), in single net mode allways zero */
+{
+       int             Ret;
+       unsigned int    TableIndex;
+       unsigned int    DstOffset;
+       unsigned int    Len;
+       unsigned int    InstanceNo;
+       unsigned int    InstanceCnt;
+       SK_U32          Instance;
+       SK_U32          Id;
+
+
+       /* Check if the passed buffer has the right size */
+       if (*pLen < SK_PNMI_STRUCT_SIZE) {
+
+               /* Check if we can return the error within the buffer */
+               if (*pLen >= SK_PNMI_MIN_STRUCT_SIZE) {
+
+                       SK_PNMI_SET_STAT(pBuf, SK_PNMI_ERR_TOO_SHORT,
+                               (SK_U32)(-1));
+               }
+
+               *pLen = SK_PNMI_STRUCT_SIZE;
+               return (SK_PNMI_ERR_TOO_SHORT);
+       }
+
+    /*
+     * Check NetIndex
+     */
+       if (NetIndex >= pAC->Rlmt.NumNets) {
+               return (SK_PNMI_ERR_UNKNOWN_NET);
+       }
+
+       SK_PNMI_CHECKFLAGS("PnmiStruct: On call");
+
+       /*
+        * Update the values of RLMT and SIRQ and increment semaphores to
+        * indicate that an update was already done.
+        */
+       if ((Ret = RlmtUpdate(pAC, IoC, NetIndex)) != SK_PNMI_ERR_OK) {
+
+               SK_PNMI_SET_STAT(pBuf, Ret, (SK_U32)(-1));
+               *pLen = SK_PNMI_MIN_STRUCT_SIZE;
+               return (Ret);
+       }
+
+       if ((Ret = SirqUpdate(pAC, IoC)) != SK_PNMI_ERR_OK) {
+
+               SK_PNMI_SET_STAT(pBuf, Ret, (SK_U32)(-1));
+               *pLen = SK_PNMI_MIN_STRUCT_SIZE;
+               return (Ret);
+       }
+
+       pAC->Pnmi.RlmtUpdatedFlag ++;
+       pAC->Pnmi.SirqUpdatedFlag ++;
+
+       /* Preset/Set values */
+       for (TableIndex = 0; TableIndex < ID_TABLE_SIZE; TableIndex ++) {
+
+               if ((IdTable[TableIndex].Access != SK_PNMI_RW) &&
+                       (IdTable[TableIndex].Access != SK_PNMI_WO)) {
+
+                       continue;
+               }
+
+               InstanceNo = IdTable[TableIndex].InstanceNo;
+               Id = IdTable[TableIndex].Id;
+
+               for (InstanceCnt = 1; InstanceCnt <= InstanceNo;
+                       InstanceCnt ++) {
+
+                       DstOffset = IdTable[TableIndex].Offset +
+                               (InstanceCnt - 1) *
+                               IdTable[TableIndex].StructSize;
+
+                       /*
+                        * Because VPD multiple instance variables are
+                        * not setable we do not need to evaluate VPD
+                        * instances. Have a look to VPD instance
+                        * calculation in SkPnmiGetStruct().
+                        */
+                       Instance = (SK_U32)InstanceCnt;
+
+                       /*
+                        * Evaluate needed buffer length
+                        */
+                       Len = 0;
+                       Ret = IdTable[TableIndex].Func(pAC, IoC,
+                               SK_PNMI_GET, IdTable[TableIndex].Id,
+                               NULL, &Len, Instance, TableIndex, NetIndex);
+
+                       if (Ret == SK_PNMI_ERR_UNKNOWN_INST) {
+
+                               break;
+                       }
+                       if (Ret != SK_PNMI_ERR_TOO_SHORT) {
+
+                               pAC->Pnmi.RlmtUpdatedFlag --;
+                               pAC->Pnmi.SirqUpdatedFlag --;
+
+                               SK_PNMI_CHECKFLAGS("PnmiStruct: On return");
+                               SK_PNMI_SET_STAT(pBuf,
+                                       SK_PNMI_ERR_GENERAL, DstOffset);
+                               *pLen = SK_PNMI_MIN_STRUCT_SIZE;
+                               return (SK_PNMI_ERR_GENERAL);
+                       }
+                       if (Id == OID_SKGE_VPD_ACTION) {
+
+                               switch (*(pBuf + DstOffset)) {
+
+                               case SK_PNMI_VPD_CREATE:
+                                       Len = 3 + *(pBuf + DstOffset + 3);
+                                       break;
+
+                               case SK_PNMI_VPD_DELETE:
+                                       Len = 3;
+                                       break;
+
+                               default:
+                                       Len = 1;
+                                       break;
+                               }
+                       }
+
+                       /* Call the OID handler function */
+                       Ret = IdTable[TableIndex].Func(pAC, IoC, Action,
+                               IdTable[TableIndex].Id, pBuf + DstOffset,
+                               &Len, Instance, TableIndex, NetIndex);
+
+                       if (Ret != SK_PNMI_ERR_OK) {
+
+                               pAC->Pnmi.RlmtUpdatedFlag --;
+                               pAC->Pnmi.SirqUpdatedFlag --;
+
+                               SK_PNMI_CHECKFLAGS("PnmiStruct: On return");
+                               SK_PNMI_SET_STAT(pBuf, SK_PNMI_ERR_BAD_VALUE,
+                                       DstOffset);
+                               *pLen = SK_PNMI_MIN_STRUCT_SIZE;
+                               return (SK_PNMI_ERR_BAD_VALUE);
+                       }
+               }
+       }
+
+       pAC->Pnmi.RlmtUpdatedFlag --;
+       pAC->Pnmi.SirqUpdatedFlag --;
+
+       SK_PNMI_CHECKFLAGS("PnmiStruct: On return");
+       SK_PNMI_SET_STAT(pBuf, SK_PNMI_ERR_OK, (SK_U32)(-1));
+       return (SK_PNMI_ERR_OK);
+}
+
+/*****************************************************************************
+ *
+ * LookupId - Lookup an OID in the IdTable
+ *
+ * Description:
+ *     Scans the IdTable to find the table entry of an OID.
+ *
+ * Returns:
+ *     The table index or -1 if not found.
+ */
+PNMI_STATIC int LookupId(
+SK_U32 Id)             /* Object identifier to be searched */
+{
+       int i;
+
+       for (i = 0; i < ID_TABLE_SIZE; i++) {
+
+               if (IdTable[i].Id == Id) {
+
+                       return i;
+               }
+       }
+
+       return (-1);
+}
+
+/*****************************************************************************
+ *
+ * OidStruct - Handler of OID_SKGE_ALL_DATA
+ *
+ * Description:
+ *     This OID performs a Get/Preset/SetStruct call and returns all data
+ *     in a SK_PNMI_STRUCT_DATA structure.
+ *
+ * Returns:
+ *     SK_PNMI_ERR_OK           The request was successfully performed.
+ *     SK_PNMI_ERR_GENERAL      A general severe internal error occured.
+ *     SK_PNMI_ERR_TOO_SHORT    The passed buffer is too short to contain
+ *                              the correct data (e.g. a 32bit value is
+ *                              needed, but a 16 bit value was passed).
+ *     SK_PNMI_ERR_BAD_VALUE    The passed value is not in the valid
+ *                              value range.
+ *     SK_PNMI_ERR_READ_ONLY    The OID is read-only and cannot be set.
+ *     SK_PNMI_ERR_UNKNOWN_INST The requested instance of the OID doesn't
+ *                               exist (e.g. port instance 3 on a two port
+ *                              adapter.
+ */
+PNMI_STATIC int OidStruct(
+SK_AC *pAC,            /* Pointer to adapter context */
+SK_IOC IoC,            /* IO context handle */
+int Action,            /* Get/PreSet/Set action */
+SK_U32 Id,             /* Object ID that is to be processed */
+char *pBuf,            /* Buffer to which to mgmt data will be retrieved */
+unsigned int *pLen,    /* On call: buffer length. On return: used buffer */
+SK_U32 Instance,       /* Instance (1..n) that is to be queried or -1 */
+unsigned int TableIndex, /* Index to the Id table */
+SK_U32 NetIndex)       /* NetIndex (0..n), in single net mode allways zero */
+{
+       if (Id != OID_SKGE_ALL_DATA) {
+
+               SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR003,
+                       SK_PNMI_ERR003MSG);
+
+               *pLen = 0;
+               return (SK_PNMI_ERR_GENERAL);
+       }
+
+       /*
+        * Check instance. We only handle single instance variables
+        */
+       if (Instance != (SK_U32)(-1) && Instance != 1) {
+
+               *pLen = 0;
+               return (SK_PNMI_ERR_UNKNOWN_INST);
+       }
+
+       switch (Action) {
+
+       case SK_PNMI_GET:
+               return (SkPnmiGetStruct(pAC, IoC, pBuf, pLen, NetIndex));
+
+       case SK_PNMI_PRESET:
+               return (SkPnmiPreSetStruct(pAC, IoC, pBuf, pLen, NetIndex));
+
+       case SK_PNMI_SET:
+               return (SkPnmiSetStruct(pAC, IoC, pBuf, pLen, NetIndex));
+       }
+
+       SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR004, SK_PNMI_ERR004MSG);
+
+       *pLen = 0;
+       return (SK_PNMI_ERR_GENERAL);
+}
+
+/*****************************************************************************
+ *
+ * Perform - OID handler of OID_SKGE_ACTION
+ *
+ * Description:
+ *     None.
+ *
+ * Returns:
+ *     SK_PNMI_ERR_OK           The request was successfully performed.
+ *     SK_PNMI_ERR_GENERAL      A general severe internal error occured.
+ *     SK_PNMI_ERR_TOO_SHORT    The passed buffer is too short to contain
+ *                              the correct data (e.g. a 32bit value is
+ *                              needed, but a 16 bit value was passed).
+ *     SK_PNMI_ERR_BAD_VALUE    The passed value is not in the valid
+ *                              value range.
+ *     SK_PNMI_ERR_READ_ONLY    The OID is read-only and cannot be set.
+ *     SK_PNMI_ERR_UNKNOWN_INST The requested instance of the OID doesn't
+ *                               exist (e.g. port instance 3 on a two port
+ *                              adapter.
+ */
+PNMI_STATIC int Perform(
+SK_AC *pAC,            /* Pointer to adapter context */
+SK_IOC IoC,            /* IO context handle */
+int Action,            /* Get/PreSet/Set action */
+SK_U32 Id,             /* Object ID that is to be processed */
+char *pBuf,            /* Buffer to which to mgmt data will be retrieved */
+unsigned int *pLen,    /* On call: buffer length. On return: used buffer */
+SK_U32 Instance,       /* Instance (1..n) that is to be queried or -1 */
+unsigned int TableIndex, /* Index to the Id table */
+SK_U32 NetIndex)       /* NetIndex (0..n), in single net mode allways zero */
+{
+       int     Ret;
+       SK_U32  ActionOp;
+
+
+       /*
+        * Check instance. We only handle single instance variables
+        */
+       if (Instance != (SK_U32)(-1) && Instance != 1) {
+
+               *pLen = 0;
+               return (SK_PNMI_ERR_UNKNOWN_INST);
+       }
+
+       if (*pLen < sizeof(SK_U32)) {
+
+               *pLen = sizeof(SK_U32);
+               return (SK_PNMI_ERR_TOO_SHORT);
+       }
+
+       /* Check if a get should be performed */
+       if (Action == SK_PNMI_GET) {
+
+               /* A get is easy. We always return the same value */
+               ActionOp = (SK_U32)SK_PNMI_ACT_IDLE;
+               SK_PNMI_STORE_U32(pBuf, ActionOp);
+               *pLen = sizeof(SK_U32);
+
+               return (SK_PNMI_ERR_OK);
+       }
+
+       /* Continue with PRESET/SET action */
+       if (*pLen > sizeof(SK_U32)) {
+
+               return (SK_PNMI_ERR_BAD_VALUE);
+       }
+
+       /* Check if the command is a known one */
+       SK_PNMI_READ_U32(pBuf, ActionOp);
+       if (*pLen > sizeof(SK_U32) ||
+               (ActionOp != SK_PNMI_ACT_IDLE &&
+               ActionOp != SK_PNMI_ACT_RESET &&
+               ActionOp != SK_PNMI_ACT_SELFTEST &&
+               ActionOp != SK_PNMI_ACT_RESETCNT)) {
+
+               *pLen = 0;
+               return (SK_PNMI_ERR_BAD_VALUE);
+       }
+
+       /* A preset ends here */
+       if (Action == SK_PNMI_PRESET) {
+
+               return (SK_PNMI_ERR_OK);
+       }
+
+       switch (ActionOp) {
+
+       case SK_PNMI_ACT_IDLE:
+               /* Nothing to do */
+               break;
+
+       case SK_PNMI_ACT_RESET:
+               /*
+                * Perform a driver reset or something that comes near
+                * to this.
+                */
+               Ret = SK_DRIVER_RESET(pAC, IoC);
+               if (Ret != 0) {
+
+                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR005,
+                               SK_PNMI_ERR005MSG);
+
+                       return (SK_PNMI_ERR_GENERAL);
+               }
+               break;
+
+       case SK_PNMI_ACT_SELFTEST:
+               /*
+                * Perform a driver selftest or something similar to this.
+                * Currently this feature is not used and will probably
+                * implemented in another way.
+                */
+               Ret = SK_DRIVER_SELFTEST(pAC, IoC);
+               pAC->Pnmi.TestResult = Ret;
+               break;
+
+       case SK_PNMI_ACT_RESETCNT:
+               /* Set all counters and timestamps to zero */
+               ResetCounter(pAC, IoC, NetIndex);
+               break;
+
+       default:
+               SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR006,
+                       SK_PNMI_ERR006MSG);
+
+               return (SK_PNMI_ERR_GENERAL);
+       }
+
+       return (SK_PNMI_ERR_OK);
+}
+
+/*****************************************************************************
+ *
+ * Mac8023Stat - OID handler of OID_GEN_XXX and OID_802_3_XXX
+ *
+ * Description:
+ *     Retrieves the statistic values of the virtual port (logical
+ *     index 0). Only special OIDs of NDIS are handled which consist
+ *     of a 32 bit instead of a 64 bit value. The OIDs are public
+ *     because perhaps some other platform can use them too.
+ *
+ * Returns:
+ *     SK_PNMI_ERR_OK           The request was successfully performed.
+ *     SK_PNMI_ERR_GENERAL      A general severe internal error occured.
+ *     SK_PNMI_ERR_TOO_SHORT    The passed buffer is too short to contain
+ *                              the correct data (e.g. a 32bit value is
+ *                              needed, but a 16 bit value was passed).
+ *     SK_PNMI_ERR_UNKNOWN_INST The requested instance of the OID doesn't
+ *                               exist (e.g. port instance 3 on a two port
+ *                              adapter.
+ */
+PNMI_STATIC int Mac8023Stat(
+SK_AC *pAC,            /* Pointer to adapter context */
+SK_IOC IoC,            /* IO context handle */
+int Action,            /* Get/PreSet/Set action */
+SK_U32 Id,             /* Object ID that is to be processed */
+char *pBuf,            /* Buffer to which to mgmt data will be retrieved */
+unsigned int *pLen,    /* On call: buffer length. On return: used buffer */
+SK_U32 Instance,       /* Instance (1..n) that is to be queried or -1 */
+unsigned int TableIndex,       /* Index to the Id table */
+SK_U32 NetIndex)       /* NetIndex (0..n), in single net mode allways zero */
+{
+       int     Ret;
+       SK_U64  StatVal;
+       SK_U32  StatVal32;
+       SK_BOOL Is64BitReq = SK_FALSE;
+
+       /*
+        * Only the active Mac is returned
+        */
+       if (Instance != (SK_U32)(-1) && Instance != 1) {
+
+               *pLen = 0;
+               return (SK_PNMI_ERR_UNKNOWN_INST);
+       }
+
+       /*
+        * Check action type
+        */
+       if (Action != SK_PNMI_GET) {
+
+               *pLen = 0;
+               return (SK_PNMI_ERR_READ_ONLY);
+       }
+
+       /*
+        * Check length
+        */
+       switch (Id) {
+
+       case OID_802_3_PERMANENT_ADDRESS:
+       case OID_802_3_CURRENT_ADDRESS:
+               if (*pLen < sizeof(SK_MAC_ADDR)) {
+
+                       *pLen = sizeof(SK_MAC_ADDR);
+                       return (SK_PNMI_ERR_TOO_SHORT);
+               }
+               break;
+
+       default:
+#ifndef SK_NDIS_64BIT_CTR
+               if (*pLen < sizeof(SK_U32)) {
+                       *pLen = sizeof(SK_U32);
+                       return (SK_PNMI_ERR_TOO_SHORT);
+               }
+
+#else /* SK_NDIS_64BIT_CTR */
+
+               /*
+                * for compatibility, at least 32bit are required for oid
+                */
+               if (*pLen < sizeof(SK_U32)) {
+                       /*
+                       * but indicate handling for 64bit values,
+                       * if insufficient space is provided
+                       */
+                       *pLen = sizeof(SK_U64);
+                       return (SK_PNMI_ERR_TOO_SHORT);
+               }
+
+               Is64BitReq = (*pLen < sizeof(SK_U64)) ? SK_FALSE : SK_TRUE;
+#endif /* SK_NDIS_64BIT_CTR */
+               break;
+       }
+
+       /*
+        * Update all statistics, because we retrieve virtual MAC, which
+        * consists of multiple physical statistics and increment semaphore
+        * to indicate that an update was already done.
+        */
+       Ret = MacUpdate(pAC, IoC, 0, pAC->GIni.GIMacsFound - 1);
+       if ( Ret != SK_PNMI_ERR_OK) {
+
+               *pLen = 0;
+               return (Ret);
+       }
+       pAC->Pnmi.MacUpdatedFlag ++;
+
+       /*
+        * Get value (MAC Index 0 identifies the virtual MAC)
+        */
+       switch (Id) {
+
+       case OID_802_3_PERMANENT_ADDRESS:
+               CopyMac(pBuf, &pAC->Addr.Net[NetIndex].PermanentMacAddress);
+               *pLen = sizeof(SK_MAC_ADDR);
+               break;
+
+       case OID_802_3_CURRENT_ADDRESS:
+               CopyMac(pBuf, &pAC->Addr.Net[NetIndex].CurrentMacAddress);
+               *pLen = sizeof(SK_MAC_ADDR);
+               break;
+
+       default:
+               StatVal = GetStatVal(pAC, IoC, 0, IdTable[TableIndex].Param, NetIndex);
+
+               /*
+                * by default 32bit values are evaluated
+                */
+               if (!Is64BitReq) {
+                       StatVal32 = (SK_U32)StatVal;
+                       SK_PNMI_STORE_U32(pBuf, StatVal32);
+                       *pLen = sizeof(SK_U32);
+               }
+               else {
+                       SK_PNMI_STORE_U64(pBuf, StatVal);
+                       *pLen = sizeof(SK_U64);
+               }
+               break;
+       }
+
+       pAC->Pnmi.MacUpdatedFlag --;
+
+       return (SK_PNMI_ERR_OK);
+}
+
+/*****************************************************************************
+ *
+ * MacPrivateStat - OID handler function of OID_SKGE_STAT_XXX
+ *
+ * Description:
+ *     Retrieves the XMAC statistic data.
+ *
+ * Returns:
+ *     SK_PNMI_ERR_OK           The request was successfully performed.
+ *     SK_PNMI_ERR_GENERAL      A general severe internal error occured.
+ *     SK_PNMI_ERR_TOO_SHORT    The passed buffer is too short to contain
+ *                              the correct data (e.g. a 32bit value is
+ *                              needed, but a 16 bit value was passed).
+ *     SK_PNMI_ERR_UNKNOWN_INST The requested instance of the OID doesn't
+ *                               exist (e.g. port instance 3 on a two port
+ *                              adapter.
+ */
+PNMI_STATIC int MacPrivateStat(
+SK_AC *pAC,            /* Pointer to adapter context */
+SK_IOC IoC,            /* IO context handle */
+int Action,            /* Get/PreSet/Set action */
+SK_U32 Id,             /* Object ID that is to be processed */
+char *pBuf,            /* Buffer to which to mgmt data will be retrieved */
+unsigned int *pLen,    /* On call: buffer length. On return: used buffer */
+SK_U32 Instance,       /* Instance (1..n) that is to be queried or -1 */
+unsigned int TableIndex, /* Index to the Id table */
+SK_U32 NetIndex)       /* NetIndex (0..n), in single net mode allways zero */
+{
+       unsigned int    LogPortMax;
+       unsigned int    LogPortIndex;
+       unsigned int    PhysPortMax;
+       unsigned int    Limit;
+       unsigned int    Offset;
+       int                             Ret;
+       SK_U64                  StatVal;
+
+
+       /*
+        * Calculate instance if wished. MAC index 0 is the virtual
+        * MAC.
+        */
+       PhysPortMax = pAC->GIni.GIMacsFound;
+       LogPortMax = SK_PNMI_PORT_PHYS2LOG(PhysPortMax);
+
+       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) { /* Dual net mode */
+               LogPortMax--;
+       }
+
+       if ((Instance != (SK_U32)(-1))) { /* Only one specific instance is queried */
+               /* Check instance range */
+               if ((Instance < 1) || (Instance > LogPortMax)) {
+
+                       *pLen = 0;
+                       return (SK_PNMI_ERR_UNKNOWN_INST);
+               }
+               LogPortIndex = SK_PNMI_PORT_INST2LOG(Instance);
+               Limit = LogPortIndex + 1;
+       }
+
+       else { /* Instance == (SK_U32)(-1), get all Instances of that OID */
+
+               LogPortIndex = 0;
+               Limit = LogPortMax;
+       }
+
+
+       /*
+        * Check action
+        */
+       if (Action != SK_PNMI_GET) {
+
+               *pLen = 0;
+               return (SK_PNMI_ERR_READ_ONLY);
+       }
+
+       /*
+        * Check length
+        */
+       if (*pLen < (Limit - LogPortIndex) * sizeof(SK_U64)) {
+
+               *pLen = (Limit - LogPortIndex) * sizeof(SK_U64);
+               return (SK_PNMI_ERR_TOO_SHORT);
+       }
+
+       /*
+        * Update XMAC statistic and increment semaphore to indicate that
+        * an update was already done.
+        */
+       Ret = MacUpdate(pAC, IoC, 0, pAC->GIni.GIMacsFound - 1);
+       if (Ret != SK_PNMI_ERR_OK) {
+
+               *pLen = 0;
+               return (Ret);
+       }
+       pAC->Pnmi.MacUpdatedFlag ++;
+
+       /*
+        * Get value
+        */
+       Offset = 0;
+       for (; LogPortIndex < Limit; LogPortIndex ++) {
+
+               switch (Id) {
+
+/* XXX not yet implemented due to XMAC problems
+               case OID_SKGE_STAT_TX_UTIL:
+                       return (SK_PNMI_ERR_GENERAL);
+*/
+/* XXX not yet implemented due to XMAC problems
+               case OID_SKGE_STAT_RX_UTIL:
+                       return (SK_PNMI_ERR_GENERAL);
+*/
+               case OID_SKGE_STAT_RX:
+               case OID_SKGE_STAT_TX:
+                       switch (pAC->GIni.GIMacType) {
+                       case SK_MAC_XMAC:
+                               StatVal = GetStatVal(pAC, IoC, LogPortIndex,
+                                       IdTable[TableIndex].Param, NetIndex);
+                               break;
+
+                       case SK_MAC_GMAC:
+                               if (Id == OID_SKGE_STAT_TX) {
+
+                                       StatVal =
+                                               GetStatVal(pAC, IoC, LogPortIndex,
+                                                                  SK_PNMI_HTX_BROADCAST, NetIndex) +
+                                               GetStatVal(pAC, IoC, LogPortIndex,
+                                                                  SK_PNMI_HTX_MULTICAST, NetIndex) +
+                                               GetStatVal(pAC, IoC, LogPortIndex,
+                                                                  SK_PNMI_HTX_UNICAST, NetIndex);
+                               }
+                               else {
+                                       StatVal =
+                                               GetStatVal(pAC, IoC, LogPortIndex,
+                                                                  SK_PNMI_HRX_BROADCAST, NetIndex) +
+                                               GetStatVal(pAC, IoC, LogPortIndex,
+                                                                  SK_PNMI_HRX_MULTICAST, NetIndex) +
+                                               GetStatVal(pAC, IoC, LogPortIndex,
+                                                                  SK_PNMI_HRX_UNICAST, NetIndex) +
+                                               GetStatVal(pAC, IoC, LogPortIndex,
+                                                                  SK_PNMI_HRX_UNDERSIZE, NetIndex);
+                               }
+                               break;
+
+                       default:
+                               StatVal = 0;
+                               break;
+                       }
+
+                       SK_PNMI_STORE_U64(pBuf + Offset, StatVal);
+                       break;
+
+               default:
+                       StatVal = GetStatVal(pAC, IoC, LogPortIndex,
+                               IdTable[TableIndex].Param, NetIndex);
+                       SK_PNMI_STORE_U64(pBuf + Offset, StatVal);
+                       break;
+               }
+
+               Offset += sizeof(SK_U64);
+       }
+       *pLen = Offset;
+
+       pAC->Pnmi.MacUpdatedFlag --;
+
+       return (SK_PNMI_ERR_OK);
+}
+
+/*****************************************************************************
+ *
+ * Addr - OID handler function of OID_SKGE_PHYS_CUR_ADDR and _FAC_ADDR
+ *
+ * Description:
+ *     Get/Presets/Sets the current and factory MAC address. The MAC
+ *     address of the virtual port, which is reported to the OS, may
+ *     not be changed, but the physical ones. A set to the virtual port
+ *     will be ignored. No error should be reported because otherwise
+ *     a multiple instance set (-1) would always fail.
+ *
+ * Returns:
+ *     SK_PNMI_ERR_OK           The request was successfully performed.
+ *     SK_PNMI_ERR_GENERAL      A general severe internal error occured.
+ *     SK_PNMI_ERR_TOO_SHORT    The passed buffer is too short to contain
+ *                              the correct data (e.g. a 32bit value is
+ *                              needed, but a 16 bit value was passed).
+ *     SK_PNMI_ERR_BAD_VALUE    The passed value is not in the valid
+ *                              value range.
+ *     SK_PNMI_ERR_READ_ONLY    The OID is read-only and cannot be set.
+ *     SK_PNMI_ERR_UNKNOWN_INST The requested instance of the OID doesn't
+ *                               exist (e.g. port instance 3 on a two port
+ *                              adapter.
+ */
+PNMI_STATIC int Addr(
+SK_AC *pAC,            /* Pointer to adapter context */
+SK_IOC IoC,            /* IO context handle */
+int Action,            /* Get/PreSet/Set action */
+SK_U32 Id,             /* Object ID that is to be processed */
+char *pBuf,            /* Buffer to which to mgmt data will be retrieved */
+unsigned int *pLen,    /* On call: buffer length. On return: used buffer */
+SK_U32 Instance,       /* Instance (1..n) that is to be queried or -1 */
+unsigned int TableIndex, /* Index to the Id table */
+SK_U32 NetIndex)       /* NetIndex (0..n), in single net mode allways zero */
+{
+       int             Ret;
+       unsigned int    LogPortMax;
+       unsigned int    PhysPortMax;
+       unsigned int    LogPortIndex;
+       unsigned int    PhysPortIndex;
+       unsigned int    Limit;
+       unsigned int    Offset = 0;
+
+       /*
+        * Calculate instance if wished. MAC index 0 is the virtual
+        * MAC.
+        */
+       PhysPortMax = pAC->GIni.GIMacsFound;
+       LogPortMax = SK_PNMI_PORT_PHYS2LOG(PhysPortMax);
+
+       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) { /* Dual net mode */
+               LogPortMax--;
+       }
+
+       if ((Instance != (SK_U32)(-1))) { /* Only one specific instance is queried */
+               /* Check instance range */
+               if ((Instance < 1) || (Instance > LogPortMax)) {
+
+                       *pLen = 0;
+                       return (SK_PNMI_ERR_UNKNOWN_INST);
+               }
+               LogPortIndex = SK_PNMI_PORT_INST2LOG(Instance);
+               Limit = LogPortIndex + 1;
+       }
+
+       else { /* Instance == (SK_U32)(-1), get all Instances of that OID */
+
+               LogPortIndex = 0;
+               Limit = LogPortMax;
+       }
+
+       /*
+        * Perform Action
+        */
+       if (Action == SK_PNMI_GET) {
+
+               /*
+                * Check length
+               */
+               if (*pLen < (Limit - LogPortIndex) * 6) {
+
+                       *pLen = (Limit - LogPortIndex) * 6;
+                       return (SK_PNMI_ERR_TOO_SHORT);
+               }
+
+               /*
+                * Get value
+                */
+               for (; LogPortIndex < Limit; LogPortIndex ++) {
+
+                       switch (Id) {
+
+                       case OID_SKGE_PHYS_CUR_ADDR:
+                               if (LogPortIndex == 0) {
+                                       CopyMac(pBuf + Offset, &pAC->Addr.Net[NetIndex].CurrentMacAddress);
+                               }
+                               else {
+                                       PhysPortIndex = SK_PNMI_PORT_LOG2PHYS(pAC, LogPortIndex);
+
+                                       CopyMac(pBuf + Offset,
+                                               &pAC->Addr.Port[PhysPortIndex].CurrentMacAddress);
+                               }
+                               Offset += 6;
+                               break;
+
+                       case OID_SKGE_PHYS_FAC_ADDR:
+                               if (LogPortIndex == 0) {
+                                       CopyMac(pBuf + Offset,
+                                               &pAC->Addr.Net[NetIndex].PermanentMacAddress);
+                               }
+                               else {
+                                       PhysPortIndex = SK_PNMI_PORT_LOG2PHYS(
+                                               pAC, LogPortIndex);
+
+                                       CopyMac(pBuf + Offset,
+                                               &pAC->Addr.Port[PhysPortIndex].PermanentMacAddress);
+                               }
+                               Offset += 6;
+                               break;
+
+                       default:
+                               SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR008,
+                                       SK_PNMI_ERR008MSG);
+
+                               *pLen = 0;
+                               return (SK_PNMI_ERR_GENERAL);
+                       }
+               }
+
+               *pLen = Offset;
+       }
+       else {
+               /*
+                * The logical MAC address may not be changed only
+                * the physical ones
+                */
+               if (Id == OID_SKGE_PHYS_FAC_ADDR) {
+
+                       *pLen = 0;
+                       return (SK_PNMI_ERR_READ_ONLY);
+               }
+
+               /*
+                * Only the current address may be changed
+                */
+               if (Id != OID_SKGE_PHYS_CUR_ADDR) {
+
+                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR009,
+                               SK_PNMI_ERR009MSG);
+
+                       *pLen = 0;
+                       return (SK_PNMI_ERR_GENERAL);
+               }
+
+               /*
+                * Check length
+               */
+               if (*pLen < (Limit - LogPortIndex) * 6) {
+
+                       *pLen = (Limit - LogPortIndex) * 6;
+                       return (SK_PNMI_ERR_TOO_SHORT);
+               }
+               if (*pLen > (Limit - LogPortIndex) * 6) {
+
+                       *pLen = 0;
+                       return (SK_PNMI_ERR_BAD_VALUE);
+               }
+
+               /*
+                * Check Action
+                */
+               if (Action == SK_PNMI_PRESET) {
+
+                       *pLen = 0;
+                       return (SK_PNMI_ERR_OK);
+               }
+
+               /*
+                * Set OID_SKGE_MAC_CUR_ADDR
+                */
+               for (; LogPortIndex < Limit; LogPortIndex ++, Offset += 6) {
+
+                       /*
+                        * A set to virtual port and set of broadcast
+                        * address will be ignored
+                        */
+                       if (LogPortIndex == 0 || SK_MEMCMP(pBuf + Offset,
+                               "\xff\xff\xff\xff\xff\xff", 6) == 0) {
+
+                               continue;
+                       }
+
+                       PhysPortIndex = SK_PNMI_PORT_LOG2PHYS(pAC,
+                               LogPortIndex);
+
+                       Ret = SkAddrOverride(pAC, IoC, PhysPortIndex,
+                               (SK_MAC_ADDR *)(pBuf + Offset),
+                               (LogPortIndex == 0 ? SK_ADDR_VIRTUAL_ADDRESS :
+                               SK_ADDR_PHYSICAL_ADDRESS));
+                       if (Ret != SK_ADDR_OVERRIDE_SUCCESS) {
+
+                               return (SK_PNMI_ERR_GENERAL);
+                       }
+               }
+               *pLen = Offset;
+       }
+
+       return (SK_PNMI_ERR_OK);
+}
+
+/*****************************************************************************
+ *
+ * CsumStat - OID handler function of OID_SKGE_CHKSM_XXX
+ *
+ * Description:
+ *     Retrieves the statistic values of the CSUM module. The CSUM data
+ *     structure must be available in the SK_AC even if the CSUM module
+ *     is not included, because PNMI reads the statistic data from the
+ *     CSUM part of SK_AC directly.
+ *
+ * Returns:
+ *     SK_PNMI_ERR_OK           The request was successfully performed.
+ *     SK_PNMI_ERR_GENERAL      A general severe internal error occured.
+ *     SK_PNMI_ERR_TOO_SHORT    The passed buffer is too short to contain
+ *                              the correct data (e.g. a 32bit value is
+ *                              needed, but a 16 bit value was passed).
+ *     SK_PNMI_ERR_UNKNOWN_INST The requested instance of the OID doesn't
+ *                               exist (e.g. port instance 3 on a two port
+ *                              adapter.
+ */
+PNMI_STATIC int CsumStat(
+SK_AC *pAC,            /* Pointer to adapter context */
+SK_IOC IoC,            /* IO context handle */
+int Action,            /* Get/PreSet/Set action */
+SK_U32 Id,             /* Object ID that is to be processed */
+char *pBuf,            /* Buffer to which to mgmt data will be retrieved */
+unsigned int *pLen,    /* On call: buffer length. On return: used buffer */
+SK_U32 Instance,       /* Instance (1..n) that is to be queried or -1 */
+unsigned int TableIndex, /* Index to the Id table */
+SK_U32 NetIndex)       /* NetIndex (0..n), in single net mode allways zero */
+{
+       unsigned int    Index;
+       unsigned int    Limit;
+       unsigned int    Offset = 0;
+       SK_U64          StatVal;
+
+
+       /*
+        * Calculate instance if wished
+        */
+       if (Instance != (SK_U32)(-1)) {
+
+               if ((Instance < 1) || (Instance > SKCS_NUM_PROTOCOLS)) {
+
+                       *pLen = 0;
+                       return (SK_PNMI_ERR_UNKNOWN_INST);
+               }
+               Index = (unsigned int)Instance - 1;
+               Limit = Index + 1;
+       }
+       else {
+               Index = 0;
+               Limit = SKCS_NUM_PROTOCOLS;
+       }
+
+       /*
+        * Check action
+        */
+       if (Action != SK_PNMI_GET) {
+
+               *pLen = 0;
+               return (SK_PNMI_ERR_READ_ONLY);
+       }
+
+       /*
+        * Check length
+        */
+       if (*pLen < (Limit - Index) * sizeof(SK_U64)) {
+
+               *pLen = (Limit - Index) * sizeof(SK_U64);
+               return (SK_PNMI_ERR_TOO_SHORT);
+       }
+
+       /*
+        * Get value
+        */
+       for (; Index < Limit; Index ++) {
+
+               switch (Id) {
+
+               case OID_SKGE_CHKSM_RX_OK_CTS:
+                       StatVal = pAC->Csum.ProtoStats[NetIndex][Index].RxOkCts;
+                       break;
+
+               case OID_SKGE_CHKSM_RX_UNABLE_CTS:
+                       StatVal = pAC->Csum.ProtoStats[NetIndex][Index].RxUnableCts;
+                       break;
+
+               case OID_SKGE_CHKSM_RX_ERR_CTS:
+                       StatVal = pAC->Csum.ProtoStats[NetIndex][Index].RxErrCts;
+                       break;
+
+               case OID_SKGE_CHKSM_TX_OK_CTS:
+                       StatVal = pAC->Csum.ProtoStats[NetIndex][Index].TxOkCts;
+                       break;
+
+               case OID_SKGE_CHKSM_TX_UNABLE_CTS:
+                       StatVal = pAC->Csum.ProtoStats[NetIndex][Index].TxUnableCts;
+                       break;
+
+               default:
+                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR010,
+                               SK_PNMI_ERR010MSG);
+
+                       *pLen = 0;
+                       return (SK_PNMI_ERR_GENERAL);
+               }
+
+               SK_PNMI_STORE_U64(pBuf + Offset, StatVal);
+               Offset += sizeof(SK_U64);
+       }
+
+       /*
+        * Store used buffer space
+        */
+       *pLen = Offset;
+
+       return (SK_PNMI_ERR_OK);
+}
+
+/*****************************************************************************
+ *
+ * SensorStat - OID handler function of OID_SKGE_SENSOR_XXX
+ *
+ * Description:
+ *     Retrieves the statistic values of the I2C module, which handles
+ *     the temperature and voltage sensors.
+ *
+ * Returns:
+ *     SK_PNMI_ERR_OK           The request was successfully performed.
+ *     SK_PNMI_ERR_GENERAL      A general severe internal error occured.
+ *     SK_PNMI_ERR_TOO_SHORT    The passed buffer is too short to contain
+ *                              the correct data (e.g. a 32bit value is
+ *                              needed, but a 16 bit value was passed).
+ *     SK_PNMI_ERR_UNKNOWN_INST The requested instance of the OID doesn't
+ *                               exist (e.g. port instance 3 on a two port
+ *                              adapter.
+ */
+PNMI_STATIC int SensorStat(
+SK_AC *pAC,            /* Pointer to adapter context */
+SK_IOC IoC,            /* IO context handle */
+int Action,            /* Get/PreSet/Set action */
+SK_U32 Id,             /* Object ID that is to be processed */
+char *pBuf,            /* Buffer to which to mgmt data will be retrieved */
+unsigned int *pLen,    /* On call: buffer length. On return: used buffer */
+SK_U32 Instance,       /* Instance (1..n) that is to be queried or -1 */
+unsigned int TableIndex, /* Index to the Id table */
+SK_U32 NetIndex)       /* NetIndex (0..n), in single net mode allways zero */
+{
+       unsigned int    i;
+       unsigned int    Index;
+       unsigned int    Limit;
+       unsigned int    Offset;
+       unsigned int    Len;
+       SK_U32          Val32;
+       SK_U64          Val64;
+
+
+       /*
+        * Calculate instance if wished
+        */
+       if ((Instance != (SK_U32)(-1))) {
+
+               if ((Instance < 1) || (Instance > (SK_U32)pAC->I2c.MaxSens)) {
+
+                       *pLen = 0;
+                       return (SK_PNMI_ERR_UNKNOWN_INST);
+               }
+
+               Index = (unsigned int)Instance -1;
+               Limit = (unsigned int)Instance;
+       }
+       else {
+               Index = 0;
+               Limit = (unsigned int) pAC->I2c.MaxSens;
+       }
+
+       /*
+        * Check action
+        */
+       if (Action != SK_PNMI_GET) {
+
+               *pLen = 0;
+               return (SK_PNMI_ERR_READ_ONLY);
+       }
+
+       /*
+        * Check length
+        */
+       switch (Id) {
+
+       case OID_SKGE_SENSOR_VALUE:
+       case OID_SKGE_SENSOR_WAR_THRES_LOW:
+       case OID_SKGE_SENSOR_WAR_THRES_UPP:
+       case OID_SKGE_SENSOR_ERR_THRES_LOW:
+       case OID_SKGE_SENSOR_ERR_THRES_UPP:
+               if (*pLen < (Limit - Index) * sizeof(SK_U32)) {
+
+                       *pLen = (Limit - Index) * sizeof(SK_U32);
+                       return (SK_PNMI_ERR_TOO_SHORT);
+               }
+               break;
+
+       case OID_SKGE_SENSOR_DESCR:
+               for (Offset = 0, i = Index; i < Limit; i ++) {
+
+                       Len = (unsigned int)
+                               SK_STRLEN(pAC->I2c.SenTable[i].SenDesc) + 1;
+                       if (Len >= SK_PNMI_STRINGLEN2) {
+
+                               SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR011,
+                                       SK_PNMI_ERR011MSG);
+
+                               *pLen = 0;
+                               return (SK_PNMI_ERR_GENERAL);
+                       }
+                       Offset += Len;
+               }
+               if (*pLen < Offset) {
+
+                       *pLen = Offset;
+                       return (SK_PNMI_ERR_TOO_SHORT);
+               }
+               break;
+
+       case OID_SKGE_SENSOR_INDEX:
+       case OID_SKGE_SENSOR_TYPE:
+       case OID_SKGE_SENSOR_STATUS:
+               if (*pLen < Limit - Index) {
+
+                       *pLen = Limit - Index;
+                       return (SK_PNMI_ERR_TOO_SHORT);
+               }
+               break;
+
+       case OID_SKGE_SENSOR_WAR_CTS:
+       case OID_SKGE_SENSOR_WAR_TIME:
+       case OID_SKGE_SENSOR_ERR_CTS:
+       case OID_SKGE_SENSOR_ERR_TIME:
+               if (*pLen < (Limit - Index) * sizeof(SK_U64)) {
+
+                       *pLen = (Limit - Index) * sizeof(SK_U64);
+                       return (SK_PNMI_ERR_TOO_SHORT);
+               }
+               break;
+
+       default:
+               SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR012,
+                       SK_PNMI_ERR012MSG);
+
+               *pLen = 0;
+               return (SK_PNMI_ERR_GENERAL);
+
+       }
+
+       /*
+        * Get value
+        */
+       for (Offset = 0; Index < Limit; Index ++) {
+
+               switch (Id) {
+
+               case OID_SKGE_SENSOR_INDEX:
+                       *(pBuf + Offset) = (char)Index;
+                       Offset += sizeof(char);
+                       break;
+
+               case OID_SKGE_SENSOR_DESCR:
+                       Len = SK_STRLEN(pAC->I2c.SenTable[Index].SenDesc);
+                       SK_MEMCPY(pBuf + Offset + 1,
+                               pAC->I2c.SenTable[Index].SenDesc, Len);
+                       *(pBuf + Offset) = (char)Len;
+                       Offset += Len + 1;
+                       break;
+
+               case OID_SKGE_SENSOR_TYPE:
+                       *(pBuf + Offset) =
+                               (char)pAC->I2c.SenTable[Index].SenType;
+                       Offset += sizeof(char);
+                       break;
+
+               case OID_SKGE_SENSOR_VALUE:
+                       Val32 = (SK_U32)pAC->I2c.SenTable[Index].SenValue;
+                       SK_PNMI_STORE_U32(pBuf + Offset, Val32);
+                       Offset += sizeof(SK_U32);
+                       break;
+
+               case OID_SKGE_SENSOR_WAR_THRES_LOW:
+                       Val32 = (SK_U32)pAC->I2c.SenTable[Index].
+                               SenThreWarnLow;
+                       SK_PNMI_STORE_U32(pBuf + Offset, Val32);
+                       Offset += sizeof(SK_U32);
+                       break;
+
+               case OID_SKGE_SENSOR_WAR_THRES_UPP:
+                       Val32 = (SK_U32)pAC->I2c.SenTable[Index].
+                               SenThreWarnHigh;
+                       SK_PNMI_STORE_U32(pBuf + Offset, Val32);
+                       Offset += sizeof(SK_U32);
+                       break;
+
+               case OID_SKGE_SENSOR_ERR_THRES_LOW:
+                       Val32 = (SK_U32)pAC->I2c.SenTable[Index].
+                               SenThreErrLow;
+                       SK_PNMI_STORE_U32(pBuf + Offset, Val32);
+                       Offset += sizeof(SK_U32);
+                       break;
+
+               case OID_SKGE_SENSOR_ERR_THRES_UPP:
+                       Val32 = pAC->I2c.SenTable[Index].SenThreErrHigh;
+                       SK_PNMI_STORE_U32(pBuf + Offset, Val32);
+                       Offset += sizeof(SK_U32);
+                       break;
+
+               case OID_SKGE_SENSOR_STATUS:
+                       *(pBuf + Offset) =
+                               (char)pAC->I2c.SenTable[Index].SenErrFlag;
+                       Offset += sizeof(char);
+                       break;
+
+               case OID_SKGE_SENSOR_WAR_CTS:
+                       Val64 = pAC->I2c.SenTable[Index].SenWarnCts;
+                       SK_PNMI_STORE_U64(pBuf + Offset, Val64);
+                       Offset += sizeof(SK_U64);
+                       break;
+
+               case OID_SKGE_SENSOR_ERR_CTS:
+                       Val64 = pAC->I2c.SenTable[Index].SenErrCts;
+                       SK_PNMI_STORE_U64(pBuf + Offset, Val64);
+                       Offset += sizeof(SK_U64);
+                       break;
+
+               case OID_SKGE_SENSOR_WAR_TIME:
+                       Val64 = SK_PNMI_HUNDREDS_SEC(pAC->I2c.SenTable[Index].
+                               SenBegWarnTS);
+                       SK_PNMI_STORE_U64(pBuf + Offset, Val64);
+                       Offset += sizeof(SK_U64);
+                       break;
+
+               case OID_SKGE_SENSOR_ERR_TIME:
+                       Val64 = SK_PNMI_HUNDREDS_SEC(pAC->I2c.SenTable[Index].
+                               SenBegErrTS);
+                       SK_PNMI_STORE_U64(pBuf + Offset, Val64);
+                       Offset += sizeof(SK_U64);
+                       break;
+
+               default:
+                       SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_ERR,
+                               ("SensorStat: Unknown OID should be handled before"));
+
+                       return (SK_PNMI_ERR_GENERAL);
+               }
+       }
+
+       /*
+        * Store used buffer space
+        */
+       *pLen = Offset;
+
+       return (SK_PNMI_ERR_OK);
+}
+
+/*****************************************************************************
+ *
+ * Vpd - OID handler function of OID_SKGE_VPD_XXX
+ *
+ * Description:
+ *     Get/preset/set of VPD data. As instance the name of a VPD key
+ *     can be passed. The Instance parameter is a SK_U32 and can be
+ *     used as a string buffer for the VPD key, because their maximum
+ *     length is 4 byte.
+ *
+ * Returns:
+ *     SK_PNMI_ERR_OK           The request was successfully performed.
+ *     SK_PNMI_ERR_GENERAL      A general severe internal error occured.
+ *     SK_PNMI_ERR_TOO_SHORT    The passed buffer is too short to contain
+ *                              the correct data (e.g. a 32bit value is
+ *                              needed, but a 16 bit value was passed).
+ *     SK_PNMI_ERR_BAD_VALUE    The passed value is not in the valid
+ *                              value range.
+ *     SK_PNMI_ERR_READ_ONLY    The OID is read-only and cannot be set.
+ *     SK_PNMI_ERR_UNKNOWN_INST The requested instance of the OID doesn't
+ *                               exist (e.g. port instance 3 on a two port
+ *                              adapter.
+ */
+PNMI_STATIC int Vpd(
+SK_AC *pAC,            /* Pointer to adapter context */
+SK_IOC IoC,            /* IO context handle */
+int Action,            /* Get/PreSet/Set action */
+SK_U32 Id,             /* Object ID that is to be processed */
+char *pBuf,            /* Buffer to which to mgmt data will be retrieved */
+unsigned int *pLen,    /* On call: buffer length. On return: used buffer */
+SK_U32 Instance,       /* Instance (1..n) that is to be queried or -1 */
+unsigned int TableIndex, /* Index to the Id table */
+SK_U32 NetIndex)       /* NetIndex (0..n), in single net mode allways zero */
+{
+       SK_VPD_STATUS   *pVpdStatus;
+       unsigned int    BufLen;
+       char            Buf[256];
+       char            KeyArr[SK_PNMI_VPD_ENTRIES][SK_PNMI_VPD_KEY_SIZE];
+       char            KeyStr[SK_PNMI_VPD_KEY_SIZE];
+       unsigned int    KeyNo;
+       unsigned int    Offset;
+       unsigned int    Index;
+       unsigned int    FirstIndex;
+       unsigned int    LastIndex;
+       unsigned int    Len;
+       int             Ret;
+       SK_U32          Val32;
+
+       /*
+        * Get array of all currently stored VPD keys
+        */
+       Ret = GetVpdKeyArr(pAC, IoC, &KeyArr[0][0], sizeof(KeyArr),
+               &KeyNo);
+       if (Ret != SK_PNMI_ERR_OK) {
+               *pLen = 0;
+               return (Ret);
+       }
+
+       /*
+        * If instance is not -1, try to find the requested VPD key for
+        * the multiple instance variables. The other OIDs as for example
+        * OID VPD_ACTION are single instance variables and must be
+        * handled separatly.
+        */
+       FirstIndex = 0;
+       LastIndex = KeyNo;
+
+       if ((Instance != (SK_U32)(-1))) {
+
+               if (Id == OID_SKGE_VPD_KEY || Id == OID_SKGE_VPD_VALUE ||
+                       Id == OID_SKGE_VPD_ACCESS) {
+
+                       SK_STRNCPY(KeyStr, (char *)&Instance, 4);
+                       KeyStr[4] = 0;
+
+                       for (Index = 0; Index < KeyNo; Index ++) {
+
+                               if (SK_STRCMP(KeyStr, KeyArr[Index]) == 0) {
+                                       FirstIndex = Index;
+                                       LastIndex = Index+1;
+                                       break;
+                               }
+                       }
+                       if (Index == KeyNo) {
+
+                               *pLen = 0;
+                               return (SK_PNMI_ERR_UNKNOWN_INST);
+                       }
+               }
+               else if (Instance != 1) {
+
+                       *pLen = 0;
+                       return (SK_PNMI_ERR_UNKNOWN_INST);
+               }
+       }
+
+       /*
+        * Get value, if a query should be performed
+        */
+       if (Action == SK_PNMI_GET) {
+
+               switch (Id) {
+
+               case OID_SKGE_VPD_FREE_BYTES:
+                       /* Check length of buffer */
+                       if (*pLen < sizeof(SK_U32)) {
+
+                               *pLen = sizeof(SK_U32);
+                               return (SK_PNMI_ERR_TOO_SHORT);
+                       }
+                       /* Get number of free bytes */
+                       pVpdStatus = VpdStat(pAC, IoC);
+                       if (pVpdStatus == NULL) {
+
+                               SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR017,
+                                       SK_PNMI_ERR017MSG);
+
+                               *pLen = 0;
+                               return (SK_PNMI_ERR_GENERAL);
+                       }
+                       if ((pVpdStatus->vpd_status & VPD_VALID) == 0) {
+
+                               SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR018,
+                                       SK_PNMI_ERR018MSG);
+
+                               *pLen = 0;
+                               return (SK_PNMI_ERR_GENERAL);
+                       }
+
+                       Val32 = (SK_U32)pVpdStatus->vpd_free_rw;
+                       SK_PNMI_STORE_U32(pBuf, Val32);
+                       *pLen = sizeof(SK_U32);
+                       break;
+
+               case OID_SKGE_VPD_ENTRIES_LIST:
+                       /* Check length */
+                       for (Len = 0, Index = 0; Index < KeyNo; Index ++) {
+
+                               Len += SK_STRLEN(KeyArr[Index]) + 1;
+                       }
+                       if (*pLen < Len) {
+
+                               *pLen = Len;
+                               return (SK_PNMI_ERR_TOO_SHORT);
+                       }
+
+                       /* Get value */
+                       *(pBuf) = (char)Len - 1;
+                       for (Offset = 1, Index = 0; Index < KeyNo; Index ++) {
+
+                               Len = SK_STRLEN(KeyArr[Index]);
+                               SK_MEMCPY(pBuf + Offset, KeyArr[Index], Len);
+
+                               Offset += Len;
+
+                               if (Index < KeyNo - 1) {
+
+                                       *(pBuf + Offset) = ' ';
+                                       Offset ++;
+                               }
+                       }
+                       *pLen = Offset;
+                       break;
+
+               case OID_SKGE_VPD_ENTRIES_NUMBER:
+                       /* Check length */
+                       if (*pLen < sizeof(SK_U32)) {
+
+                               *pLen = sizeof(SK_U32);
+                               return (SK_PNMI_ERR_TOO_SHORT);
+                       }
+
+                       Val32 = (SK_U32)KeyNo;
+                       SK_PNMI_STORE_U32(pBuf, Val32);
+                       *pLen = sizeof(SK_U32);
+                       break;
+
+               case OID_SKGE_VPD_KEY:
+                       /* Check buffer length, if it is large enough */
+                       for (Len = 0, Index = FirstIndex;
+                               Index < LastIndex; Index ++) {
+
+                               Len += SK_STRLEN(KeyArr[Index]) + 1;
+                       }
+                       if (*pLen < Len) {
+
+                               *pLen = Len;
+                               return (SK_PNMI_ERR_TOO_SHORT);
+                       }
+
+                       /*
+                        * Get the key to an intermediate buffer, because
+                        * we have to prepend a length byte.
+                        */
+                       for (Offset = 0, Index = FirstIndex;
+                               Index < LastIndex; Index ++) {
+
+                               Len = SK_STRLEN(KeyArr[Index]);
+
+                               *(pBuf + Offset) = (char)Len;
+                               SK_MEMCPY(pBuf + Offset + 1, KeyArr[Index],
+                                       Len);
+                               Offset += Len + 1;
+                       }
+                       *pLen = Offset;
+                       break;
+
+               case OID_SKGE_VPD_VALUE:
+                       /* Check the buffer length if it is large enough */
+                       for (Offset = 0, Index = FirstIndex;
+                               Index < LastIndex; Index ++) {
+
+                               BufLen = 256;
+                               if (VpdRead(pAC, IoC, KeyArr[Index], Buf,
+                                       (int *)&BufLen) > 0 ||
+                                       BufLen >= SK_PNMI_VPD_DATALEN) {
+
+                                       SK_ERR_LOG(pAC, SK_ERRCL_SW,
+                                               SK_PNMI_ERR021,
+                                               SK_PNMI_ERR021MSG);
+
+                                       return (SK_PNMI_ERR_GENERAL);
+                               }
+                               Offset += BufLen + 1;
+                       }
+                       if (*pLen < Offset) {
+
+                               *pLen = Offset;
+                               return (SK_PNMI_ERR_TOO_SHORT);
+                       }
+
+                       /*
+                        * Get the value to an intermediate buffer, because
+                        * we have to prepend a length byte.
+                        */
+                       for (Offset = 0, Index = FirstIndex;
+                               Index < LastIndex; Index ++) {
+
+                               BufLen = 256;
+                               if (VpdRead(pAC, IoC, KeyArr[Index], Buf,
+                                       (int *)&BufLen) > 0 ||
+                                       BufLen >= SK_PNMI_VPD_DATALEN) {
+
+                                       SK_ERR_LOG(pAC, SK_ERRCL_SW,
+                                               SK_PNMI_ERR022,
+                                               SK_PNMI_ERR022MSG);
+
+                                       *pLen = 0;
+                                       return (SK_PNMI_ERR_GENERAL);
+                               }
+
+                               *(pBuf + Offset) = (char)BufLen;
+                               SK_MEMCPY(pBuf + Offset + 1, Buf, BufLen);
+                               Offset += BufLen + 1;
+                       }
+                       *pLen = Offset;
+                       break;
+
+               case OID_SKGE_VPD_ACCESS:
+                       if (*pLen < LastIndex - FirstIndex) {
+
+                               *pLen = LastIndex - FirstIndex;
+                               return (SK_PNMI_ERR_TOO_SHORT);
+                       }
+
+                       for (Offset = 0, Index = FirstIndex;
+                               Index < LastIndex; Index ++) {
+
+                               if (VpdMayWrite(KeyArr[Index])) {
+
+                                       *(pBuf + Offset) = SK_PNMI_VPD_RW;
+                               }
+                               else {
+                                       *(pBuf + Offset) = SK_PNMI_VPD_RO;
+                               }
+                               Offset ++;
+                       }
+                       *pLen = Offset;
+                       break;
+
+               case OID_SKGE_VPD_ACTION:
+                       Offset = LastIndex - FirstIndex;
+                       if (*pLen < Offset) {
+
+                               *pLen = Offset;
+                               return (SK_PNMI_ERR_TOO_SHORT);
+                       }
+                       SK_MEMSET(pBuf, 0, Offset);
+                       *pLen = Offset;
+                       break;
+
+               default:
+                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR023,
+                               SK_PNMI_ERR023MSG);
+
+                       *pLen = 0;
+                       return (SK_PNMI_ERR_GENERAL);
+               }
+       }
+       else {
+               /* The only OID which can be set is VPD_ACTION */
+               if (Id != OID_SKGE_VPD_ACTION) {
+
+                       if (Id == OID_SKGE_VPD_FREE_BYTES ||
+                               Id == OID_SKGE_VPD_ENTRIES_LIST ||
+                               Id == OID_SKGE_VPD_ENTRIES_NUMBER ||
+                               Id == OID_SKGE_VPD_KEY ||
+                               Id == OID_SKGE_VPD_VALUE ||
+                               Id == OID_SKGE_VPD_ACCESS) {
+
+                               *pLen = 0;
+                               return (SK_PNMI_ERR_READ_ONLY);
+                       }
+
+                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR024,
+                               SK_PNMI_ERR024MSG);
+
+                       *pLen = 0;
+                       return (SK_PNMI_ERR_GENERAL);
+               }
+
+               /*
+                * From this point we handle VPD_ACTION. Check the buffer
+                * length. It should at least have the size of one byte.
+                */
+               if (*pLen < 1) {
+
+                       *pLen = 1;
+                       return (SK_PNMI_ERR_TOO_SHORT);
+               }
+
+               /*
+                * The first byte contains the VPD action type we should
+                * perform.
+                */
+               switch (*pBuf) {
+
+               case SK_PNMI_VPD_IGNORE:
+                       /* Nothing to do */
+                       break;
+
+               case SK_PNMI_VPD_CREATE:
+                       /*
+                        * We have to create a new VPD entry or we modify
+                        * an existing one. Check first the buffer length.
+                        */
+                       if (*pLen < 4) {
+
+                               *pLen = 4;
+                               return (SK_PNMI_ERR_TOO_SHORT);
+                       }
+                       KeyStr[0] = pBuf[1];
+                       KeyStr[1] = pBuf[2];
+                       KeyStr[2] = 0;
+
+                       /*
+                        * Is the entry writable or does it belong to the
+                        * read-only area?
+                        */
+                       if (!VpdMayWrite(KeyStr)) {
+
+                               *pLen = 0;
+                               return (SK_PNMI_ERR_BAD_VALUE);
+                       }
+
+                       Offset = (int)pBuf[3] & 0xFF;
+
+                       SK_MEMCPY(Buf, pBuf + 4, Offset);
+                       Buf[Offset] = 0;
+
+                       /* A preset ends here */
+                       if (Action == SK_PNMI_PRESET) {
+
+                               return (SK_PNMI_ERR_OK);
+                       }
+
+                       /* Write the new entry or modify an existing one */
+                       Ret = VpdWrite(pAC, IoC, KeyStr, Buf);
+                       if (Ret == SK_PNMI_VPD_NOWRITE ) {
+
+                               *pLen = 0;
+                               return (SK_PNMI_ERR_BAD_VALUE);
+                       }
+                       else if (Ret != SK_PNMI_VPD_OK) {
+
+                               SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR025,
+                                       SK_PNMI_ERR025MSG);
+
+                               *pLen = 0;
+                               return (SK_PNMI_ERR_GENERAL);
+                       }
+
+                       /*
+                        * Perform an update of the VPD data. This is
+                        * not mandantory, but just to be sure.
+                        */
+                       Ret = VpdUpdate(pAC, IoC);
+                       if (Ret != SK_PNMI_VPD_OK) {
+
+                               SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR026,
+                                       SK_PNMI_ERR026MSG);
+
+                               *pLen = 0;
+                               return (SK_PNMI_ERR_GENERAL);
+                       }
+                       break;
+
+               case SK_PNMI_VPD_DELETE:
+                       /* Check if the buffer size is plausible */
+                       if (*pLen < 3) {
+
+                               *pLen = 3;
+                               return (SK_PNMI_ERR_TOO_SHORT);
+                       }
+                       if (*pLen > 3) {
+
+                               *pLen = 0;
+                               return (SK_PNMI_ERR_BAD_VALUE);
+                       }
+                       KeyStr[0] = pBuf[1];
+                       KeyStr[1] = pBuf[2];
+                       KeyStr[2] = 0;
+
+                       /* Find the passed key in the array */
+                       for (Index = 0; Index < KeyNo; Index ++) {
+
+                               if (SK_STRCMP(KeyStr, KeyArr[Index]) == 0) {
+
+                                       break;
+                               }
+                       }
+                       /*
+                        * If we cannot find the key it is wrong, so we
+                        * return an appropriate error value.
+                        */
+                       if (Index == KeyNo) {
+
+                               *pLen = 0;
+                               return (SK_PNMI_ERR_BAD_VALUE);
+                       }
+
+                       if (Action == SK_PNMI_PRESET) {
+
+                               return (SK_PNMI_ERR_OK);
+                       }
+
+                       /* Ok, you wanted it and you will get it */
+                       Ret = VpdDelete(pAC, IoC, KeyStr);
+                       if (Ret != SK_PNMI_VPD_OK) {
+
+                               SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR027,
+                                       SK_PNMI_ERR027MSG);
+
+                               *pLen = 0;
+                               return (SK_PNMI_ERR_GENERAL);
+                       }
+
+                       /*
+                        * Perform an update of the VPD data. This is
+                        * not mandantory, but just to be sure.
+                        */
+                       Ret = VpdUpdate(pAC, IoC);
+                       if (Ret != SK_PNMI_VPD_OK) {
+
+                               SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR028,
+                                       SK_PNMI_ERR028MSG);
+
+                               *pLen = 0;
+                               return (SK_PNMI_ERR_GENERAL);
+                       }
+                       break;
+
+               default:
+                       *pLen = 0;
+                       return (SK_PNMI_ERR_BAD_VALUE);
+               }
+       }
+
+       return (SK_PNMI_ERR_OK);
+}
+
+/*****************************************************************************
+ *
+ * General - OID handler function of various single instance OIDs
+ *
+ * Description:
+ *     The code is simple. No description necessary.
+ *
+ * Returns:
+ *     SK_PNMI_ERR_OK           The request was successfully performed.
+ *     SK_PNMI_ERR_GENERAL      A general severe internal error occured.
+ *     SK_PNMI_ERR_TOO_SHORT    The passed buffer is too short to contain
+ *                              the correct data (e.g. a 32bit value is
+ *                              needed, but a 16 bit value was passed).
+ *     SK_PNMI_ERR_UNKNOWN_INST The requested instance of the OID doesn't
+ *                               exist (e.g. port instance 3 on a two port
+ *                              adapter.
+ */
+PNMI_STATIC int General(
+SK_AC *pAC,            /* Pointer to adapter context */
+SK_IOC IoC,            /* IO context handle */
+int Action,            /* Get/PreSet/Set action */
+SK_U32 Id,             /* Object ID that is to be processed */
+char *pBuf,            /* Buffer to which to mgmt data will be retrieved */
+unsigned int *pLen,    /* On call: buffer length. On return: used buffer */
+SK_U32 Instance,       /* Instance (1..n) that is to be queried or -1 */
+unsigned int TableIndex, /* Index to the Id table */
+SK_U32 NetIndex)       /* NetIndex (0..n), in single net mode allways zero */
+{
+       int             Ret;
+       unsigned int    Index;
+       unsigned int    Len;
+       unsigned int    Offset;
+       unsigned int    Val;
+       SK_U8           Val8;
+       SK_U16          Val16;
+       SK_U32          Val32;
+       SK_U64          Val64;
+       SK_U64          Val64RxHwErrs = 0;
+       SK_U64          Val64TxHwErrs = 0;
+       SK_BOOL         Is64BitReq = SK_FALSE;
+       char            Buf[256];
+       int                     MacType;
+
+       /*
+        * Check instance. We only handle single instance variables
+        */
+       if (Instance != (SK_U32)(-1) && Instance != 1) {
+
+               *pLen = 0;
+               return (SK_PNMI_ERR_UNKNOWN_INST);
+       }
+
+       /*
+        * Check action. We only allow get requests.
+        */
+       if (Action != SK_PNMI_GET) {
+
+               *pLen = 0;
+               return (SK_PNMI_ERR_READ_ONLY);
+       }
+
+       MacType = pAC->GIni.GIMacType;
+
+       /*
+        * Check length for the various supported OIDs
+        */
+       switch (Id) {
+
+       case OID_GEN_XMIT_ERROR:
+       case OID_GEN_RCV_ERROR:
+       case OID_GEN_RCV_NO_BUFFER:
+#ifndef SK_NDIS_64BIT_CTR
+               if (*pLen < sizeof(SK_U32)) {
+                       *pLen = sizeof(SK_U32);
+                       return (SK_PNMI_ERR_TOO_SHORT);
+               }
+
+#else /* SK_NDIS_64BIT_CTR */
+
+               /*
+                * for compatibility, at least 32bit are required for oid
+                */
+               if (*pLen < sizeof(SK_U32)) {
+                       /*
+                       * but indicate handling for 64bit values,
+                       * if insufficient space is provided
+                       */
+                       *pLen = sizeof(SK_U64);
+                       return (SK_PNMI_ERR_TOO_SHORT);
+               }
+
+               Is64BitReq = (*pLen < sizeof(SK_U64)) ? SK_FALSE : SK_TRUE;
+#endif /* SK_NDIS_64BIT_CTR */
+               break;
+
+       case OID_SKGE_PORT_NUMBER:
+       case OID_SKGE_DEVICE_TYPE:
+       case OID_SKGE_RESULT:
+       case OID_SKGE_RLMT_MONITOR_NUMBER:
+       case OID_GEN_TRANSMIT_QUEUE_LENGTH:
+       case OID_SKGE_TRAP_NUMBER:
+       case OID_SKGE_MDB_VERSION:
+               if (*pLen < sizeof(SK_U32)) {
+
+                       *pLen = sizeof(SK_U32);
+                       return (SK_PNMI_ERR_TOO_SHORT);
+               }
+               break;
+
+       case OID_SKGE_CHIPSET:
+               if (*pLen < sizeof(SK_U16)) {
+
+                       *pLen = sizeof(SK_U16);
+                       return (SK_PNMI_ERR_TOO_SHORT);
+               }
+               break;
+
+       case OID_SKGE_BUS_TYPE:
+       case OID_SKGE_BUS_SPEED:
+       case OID_SKGE_BUS_WIDTH:
+       case OID_SKGE_SENSOR_NUMBER:
+       case OID_SKGE_CHKSM_NUMBER:
+               if (*pLen < sizeof(SK_U8)) {
+
+                       *pLen = sizeof(SK_U8);
+                       return (SK_PNMI_ERR_TOO_SHORT);
+               }
+               break;
+
+       case OID_SKGE_TX_SW_QUEUE_LEN:
+       case OID_SKGE_TX_SW_QUEUE_MAX:
+       case OID_SKGE_TX_RETRY:
+       case OID_SKGE_RX_INTR_CTS:
+       case OID_SKGE_TX_INTR_CTS:
+       case OID_SKGE_RX_NO_BUF_CTS:
+       case OID_SKGE_TX_NO_BUF_CTS:
+       case OID_SKGE_TX_USED_DESCR_NO:
+       case OID_SKGE_RX_DELIVERED_CTS:
+       case OID_SKGE_RX_OCTETS_DELIV_CTS:
+       case OID_SKGE_RX_HW_ERROR_CTS:
+       case OID_SKGE_TX_HW_ERROR_CTS:
+       case OID_SKGE_IN_ERRORS_CTS:
+       case OID_SKGE_OUT_ERROR_CTS:
+       case OID_SKGE_ERR_RECOVERY_CTS:
+       case OID_SKGE_SYSUPTIME:
+               if (*pLen < sizeof(SK_U64)) {
+
+                       *pLen = sizeof(SK_U64);
+                       return (SK_PNMI_ERR_TOO_SHORT);
+               }
+               break;
+
+       default:
+               /* Checked later */
+               break;
+       }
+
+       /* Update statistic */
+       if (Id == OID_SKGE_RX_HW_ERROR_CTS ||
+               Id == OID_SKGE_TX_HW_ERROR_CTS ||
+               Id == OID_SKGE_IN_ERRORS_CTS ||
+               Id == OID_SKGE_OUT_ERROR_CTS ||
+               Id == OID_GEN_XMIT_ERROR ||
+               Id == OID_GEN_RCV_ERROR) {
+
+               /* Force the XMAC to update its statistic counters and
+                * Increment semaphore to indicate that an update was
+                * already done.
+                */
+               Ret = MacUpdate(pAC, IoC, 0, pAC->GIni.GIMacsFound - 1);
+               if (Ret != SK_PNMI_ERR_OK) {
+
+                       *pLen = 0;
+                       return (Ret);
+               }
+               pAC->Pnmi.MacUpdatedFlag ++;
+
+               /*
+                * Some OIDs consist of multiple hardware counters. Those
+                * values which are contained in all of them will be added
+                * now.
+                */
+               switch (Id) {
+
+               case OID_SKGE_RX_HW_ERROR_CTS:
+               case OID_SKGE_IN_ERRORS_CTS:
+               case OID_GEN_RCV_ERROR:
+                       Val64RxHwErrs =
+                               GetStatVal(pAC, IoC, 0, SK_PNMI_HRX_MISSED, NetIndex) +
+                               GetStatVal(pAC, IoC, 0, SK_PNMI_HRX_FRAMING, NetIndex) +
+                               GetStatVal(pAC, IoC, 0, SK_PNMI_HRX_OVERFLOW, NetIndex)+
+                               GetStatVal(pAC, IoC, 0, SK_PNMI_HRX_JABBER, NetIndex) +
+                               GetStatVal(pAC, IoC, 0, SK_PNMI_HRX_CARRIER, NetIndex) +
+                               GetStatVal(pAC, IoC, 0, SK_PNMI_HRX_IRLENGTH, NetIndex)+
+                               GetStatVal(pAC, IoC, 0, SK_PNMI_HRX_SYMBOL, NetIndex) +
+                               GetStatVal(pAC, IoC, 0, SK_PNMI_HRX_SHORTS, NetIndex) +
+                               GetStatVal(pAC, IoC, 0, SK_PNMI_HRX_RUNT, NetIndex) +
+                               GetStatVal(pAC, IoC, 0, SK_PNMI_HRX_TOO_LONG, NetIndex) +
+                               GetStatVal(pAC, IoC, 0, SK_PNMI_HRX_FCS, NetIndex) +
+                               GetStatVal(pAC, IoC, 0, SK_PNMI_HRX_CEXT, NetIndex);
+               break;
+
+               case OID_SKGE_TX_HW_ERROR_CTS:
+               case OID_SKGE_OUT_ERROR_CTS:
+               case OID_GEN_XMIT_ERROR:
+                       Val64TxHwErrs =
+                               GetStatVal(pAC, IoC, 0, SK_PNMI_HTX_EXCESS_COL, NetIndex) +
+                               GetStatVal(pAC, IoC, 0, SK_PNMI_HTX_LATE_COL, NetIndex)+
+                               GetStatVal(pAC, IoC, 0, SK_PNMI_HTX_UNDERRUN, NetIndex)+
+                               GetStatVal(pAC, IoC, 0, SK_PNMI_HTX_CARRIER, NetIndex);
+                       break;
+               }
+       }
+
+       /*
+        * Retrieve value
+        */
+       switch (Id) {
+
+       case OID_SKGE_SUPPORTED_LIST:
+               Len = ID_TABLE_SIZE * sizeof(SK_U32);
+               if (*pLen < Len) {
+
+                       *pLen = Len;
+                       return (SK_PNMI_ERR_TOO_SHORT);
+               }
+               for (Offset = 0, Index = 0; Offset < Len;
+                       Offset += sizeof(SK_U32), Index ++) {
+
+                       Val32 = (SK_U32)IdTable[Index].Id;
+                       SK_PNMI_STORE_U32(pBuf + Offset, Val32);
+               }
+               *pLen = Len;
+               break;
+
+       case OID_SKGE_PORT_NUMBER:
+               Val32 = (SK_U32)pAC->GIni.GIMacsFound;
+               SK_PNMI_STORE_U32(pBuf, Val32);
+               *pLen = sizeof(SK_U32);
+               break;
+
+       case OID_SKGE_DEVICE_TYPE:
+               Val32 = (SK_U32)pAC->Pnmi.DeviceType;
+               SK_PNMI_STORE_U32(pBuf, Val32);
+               *pLen = sizeof(SK_U32);
+               break;
+
+       case OID_SKGE_DRIVER_DESCR:
+               if (pAC->Pnmi.pDriverDescription == NULL) {
+
+                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR007,
+                               SK_PNMI_ERR007MSG);
+
+                       *pLen = 0;
+                       return (SK_PNMI_ERR_GENERAL);
+               }
+
+               Len = SK_STRLEN(pAC->Pnmi.pDriverDescription) + 1;
+               if (Len > SK_PNMI_STRINGLEN1) {
+
+                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR029,
+                               SK_PNMI_ERR029MSG);
+
+                       *pLen = 0;
+                       return (SK_PNMI_ERR_GENERAL);
+               }
+
+               if (*pLen < Len) {
+
+                       *pLen = Len;
+                       return (SK_PNMI_ERR_TOO_SHORT);
+               }
+               *pBuf = (char)(Len - 1);
+               SK_MEMCPY(pBuf + 1, pAC->Pnmi.pDriverDescription, Len - 1);
+               *pLen = Len;
+               break;
+
+       case OID_SKGE_DRIVER_VERSION:
+               if (pAC->Pnmi.pDriverVersion == NULL) {
+
+                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR030,
+                               SK_PNMI_ERR030MSG);
+
+                       *pLen = 0;
+                       return (SK_PNMI_ERR_GENERAL);
+               }
+
+               Len = SK_STRLEN(pAC->Pnmi.pDriverVersion) + 1;
+               if (Len > SK_PNMI_STRINGLEN1) {
+
+                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR031,
+                               SK_PNMI_ERR031MSG);
+
+                       *pLen = 0;
+                       return (SK_PNMI_ERR_GENERAL);
+               }
+
+               if (*pLen < Len) {
+
+                       *pLen = Len;
+                       return (SK_PNMI_ERR_TOO_SHORT);
+               }
+               *pBuf = (char)(Len - 1);
+               SK_MEMCPY(pBuf + 1, pAC->Pnmi.pDriverVersion, Len - 1);
+               *pLen = Len;
+               break;
+
+       case OID_SKGE_HW_DESCR:
+               /*
+                * The hardware description is located in the VPD. This
+                * query may move to the initialisation routine. But
+                * the VPD data is cached and therefore a call here
+                * will not make much difference.
+                */
+               Len = 256;
+               if (VpdRead(pAC, IoC, VPD_NAME, Buf, (int *)&Len) > 0) {
+
+                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR032,
+                               SK_PNMI_ERR032MSG);
+
+                       *pLen = 0;
+                       return (SK_PNMI_ERR_GENERAL);
+               }
+               Len ++;
+               if (Len > SK_PNMI_STRINGLEN1) {
+
+                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR033,
+                               SK_PNMI_ERR033MSG);
+
+                       *pLen = 0;
+                       return (SK_PNMI_ERR_GENERAL);
+               }
+               if (*pLen < Len) {
+
+                       *pLen = Len;
+                       return (SK_PNMI_ERR_TOO_SHORT);
+               }
+               *pBuf = (char)(Len - 1);
+               SK_MEMCPY(pBuf + 1, Buf, Len - 1);
+               *pLen = Len;
+               break;
+
+       case OID_SKGE_HW_VERSION:
+               /* Oh, I love to do some string manipulation */
+               if (*pLen < 5) {
+
+                       *pLen = 5;
+                       return (SK_PNMI_ERR_TOO_SHORT);
+               }
+               Val8 = (SK_U8)pAC->GIni.GIPciHwRev;
+               pBuf[0] = 4;
+               pBuf[1] = 'v';
+               pBuf[2] = (char)(0x30 | ((Val8 >> 4) & 0x0F));
+               pBuf[3] = '.';
+               pBuf[4] = (char)(0x30 | (Val8 & 0x0F));
+               *pLen = 5;
+               break;
+
+       case OID_SKGE_CHIPSET:
+               Val16 = pAC->Pnmi.Chipset;
+               SK_PNMI_STORE_U16(pBuf, Val16);
+               *pLen = sizeof(SK_U16);
+               break;
+
+       case OID_SKGE_BUS_TYPE:
+               *pBuf = (char)SK_PNMI_BUS_PCI;
+               *pLen = sizeof(char);
+               break;
+
+       case OID_SKGE_BUS_SPEED:
+               *pBuf = pAC->Pnmi.PciBusSpeed;
+               *pLen = sizeof(char);
+               break;
+
+       case OID_SKGE_BUS_WIDTH:
+               *pBuf = pAC->Pnmi.PciBusWidth;
+               *pLen = sizeof(char);
+               break;
+
+       case OID_SKGE_RESULT:
+               Val32 = pAC->Pnmi.TestResult;
+               SK_PNMI_STORE_U32(pBuf, Val32);
+               *pLen = sizeof(SK_U32);
+               break;
+
+       case OID_SKGE_SENSOR_NUMBER:
+               *pBuf = (char)pAC->I2c.MaxSens;
+               *pLen = sizeof(char);
+               break;
+
+       case OID_SKGE_CHKSM_NUMBER:
+               *pBuf = SKCS_NUM_PROTOCOLS;
+               *pLen = sizeof(char);
+               break;
+
+       case OID_SKGE_TRAP_NUMBER:
+               GetTrapQueueLen(pAC, &Len, &Val);
+               Val32 = (SK_U32)Val;
+               SK_PNMI_STORE_U32(pBuf, Val32);
+               *pLen = sizeof(SK_U32);
+               break;
+
+       case OID_SKGE_TRAP:
+               GetTrapQueueLen(pAC, &Len, &Val);
+               if (*pLen < Len) {
+
+                       *pLen = Len;
+                       return (SK_PNMI_ERR_TOO_SHORT);
+               }
+               CopyTrapQueue(pAC, pBuf);
+               *pLen = Len;
+               break;
+
+       case OID_SKGE_RLMT_MONITOR_NUMBER:
+/* XXX Not yet implemented by RLMT therefore we return zero elements */
+               Val32 = 0;
+               SK_PNMI_STORE_U32(pBuf, Val32);
+               *pLen = sizeof(SK_U32);
+               break;
+
+       case OID_SKGE_TX_SW_QUEUE_LEN:
+               /* 2002-09-17 pweber: For XMAC, use the frozen sw counters (BufPort) */
+               if (MacType == SK_MAC_XMAC) {
+                       /* Dual net mode */
+                       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
+                               Val64 = pAC->Pnmi.BufPort[NetIndex].TxSwQueueLen;
+                       }
+                       /* Single net mode */
+                       else {
+                               Val64 = pAC->Pnmi.BufPort[0].TxSwQueueLen +
+                                       pAC->Pnmi.BufPort[1].TxSwQueueLen;
+                       }
+               }
+               else {
+                       /* Dual net mode */
+                       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
+                               Val64 = pAC->Pnmi.Port[NetIndex].TxSwQueueLen;
+                       }
+                       /* Single net mode */
+                       else {
+                               Val64 = pAC->Pnmi.Port[0].TxSwQueueLen +
+                                       pAC->Pnmi.Port[1].TxSwQueueLen;
+                       }
+               }
+               SK_PNMI_STORE_U64(pBuf, Val64);
+               *pLen = sizeof(SK_U64);
+               break;
+
+
+       case OID_SKGE_TX_SW_QUEUE_MAX:
+               /* 2002-09-17 pweber: For XMAC, use the frozen sw counters (BufPort) */
+               if (MacType == SK_MAC_XMAC) {
+                       /* Dual net mode */
+                       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
+                               Val64 = pAC->Pnmi.BufPort[NetIndex].TxSwQueueMax;
+                       }
+                       /* Single net mode */
+                       else {
+                               Val64 = pAC->Pnmi.BufPort[0].TxSwQueueMax +
+                                       pAC->Pnmi.BufPort[1].TxSwQueueMax;
+                       }
+               }
+               else {
+                       /* Dual net mode */
+                       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
+                               Val64 = pAC->Pnmi.Port[NetIndex].TxSwQueueMax;
+                       }
+                       /* Single net mode */
+                       else {
+                               Val64 = pAC->Pnmi.Port[0].TxSwQueueMax +
+                                       pAC->Pnmi.Port[1].TxSwQueueMax;
+                       }
+               }
+               SK_PNMI_STORE_U64(pBuf, Val64);
+               *pLen = sizeof(SK_U64);
+               break;
+
+       case OID_SKGE_TX_RETRY:
+               /* 2002-09-17 pweber: For XMAC, use the frozen sw counters (BufPort) */
+               if (MacType == SK_MAC_XMAC) {
+                       /* Dual net mode */
+                       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
+                               Val64 = pAC->Pnmi.BufPort[NetIndex].TxRetryCts;
+                       }
+                       /* Single net mode */
+                       else {
+                               Val64 = pAC->Pnmi.BufPort[0].TxRetryCts +
+                                       pAC->Pnmi.BufPort[1].TxRetryCts;
+                       }
+               }
+               else {
+                       /* Dual net mode */
+                       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
+                               Val64 = pAC->Pnmi.Port[NetIndex].TxRetryCts;
+                       }
+                       /* Single net mode */
+                       else {
+                               Val64 = pAC->Pnmi.Port[0].TxRetryCts +
+                                       pAC->Pnmi.Port[1].TxRetryCts;
+                       }
+               }
+               SK_PNMI_STORE_U64(pBuf, Val64);
+               *pLen = sizeof(SK_U64);
+               break;
+
+       case OID_SKGE_RX_INTR_CTS:
+               /* 2002-09-17 pweber: For XMAC, use the frozen sw counters (BufPort) */
+               if (MacType == SK_MAC_XMAC) {
+                       /* Dual net mode */
+                       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
+                               Val64 = pAC->Pnmi.BufPort[NetIndex].RxIntrCts;
+                       }
+                       /* Single net mode */
+                       else {
+                               Val64 = pAC->Pnmi.BufPort[0].RxIntrCts +
+                                       pAC->Pnmi.BufPort[1].RxIntrCts;
+                       }
+               }
+               else {
+                       /* Dual net mode */
+                       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
+                               Val64 = pAC->Pnmi.Port[NetIndex].RxIntrCts;
+                       }
+                       /* Single net mode */
+                       else {
+                               Val64 = pAC->Pnmi.Port[0].RxIntrCts +
+                                       pAC->Pnmi.Port[1].RxIntrCts;
+                       }
+               }
+               SK_PNMI_STORE_U64(pBuf, Val64);
+               *pLen = sizeof(SK_U64);
+               break;
+
+       case OID_SKGE_TX_INTR_CTS:
+               /* 2002-09-17 pweber: For XMAC, use the frozen sw counters (BufPort) */
+               if (MacType == SK_MAC_XMAC) {
+                       /* Dual net mode */
+                       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
+                               Val64 = pAC->Pnmi.BufPort[NetIndex].TxIntrCts;
+                       }
+                       /* Single net mode */
+                       else {
+                               Val64 = pAC->Pnmi.BufPort[0].TxIntrCts +
+                                       pAC->Pnmi.BufPort[1].TxIntrCts;
+                       }
+               }
+               else {
+                       /* Dual net mode */
+                       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
+                               Val64 = pAC->Pnmi.Port[NetIndex].TxIntrCts;
+                       }
+                       /* Single net mode */
+                       else {
+                               Val64 = pAC->Pnmi.Port[0].TxIntrCts +
+                                       pAC->Pnmi.Port[1].TxIntrCts;
+                       }
+               }
+               SK_PNMI_STORE_U64(pBuf, Val64);
+               *pLen = sizeof(SK_U64);
+               break;
+
+       case OID_SKGE_RX_NO_BUF_CTS:
+               /* 2002-09-17 pweber: For XMAC, use the frozen sw counters (BufPort) */
+               if (MacType == SK_MAC_XMAC) {
+                       /* Dual net mode */
+                       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
+                               Val64 = pAC->Pnmi.BufPort[NetIndex].RxNoBufCts;
+                       }
+                       /* Single net mode */
+                       else {
+                               Val64 = pAC->Pnmi.BufPort[0].RxNoBufCts +
+                                       pAC->Pnmi.BufPort[1].RxNoBufCts;
+                       }
+               }
+               else {
+                       /* Dual net mode */
+                       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
+                               Val64 = pAC->Pnmi.Port[NetIndex].RxNoBufCts;
+                       }
+                       /* Single net mode */
+                       else {
+                               Val64 = pAC->Pnmi.Port[0].RxNoBufCts +
+                                       pAC->Pnmi.Port[1].RxNoBufCts;
+                       }
+               }
+               SK_PNMI_STORE_U64(pBuf, Val64);
+               *pLen = sizeof(SK_U64);
+               break;
+
+       case OID_SKGE_TX_NO_BUF_CTS:
+               /* 2002-09-17 pweber: For XMAC, use the frozen sw counters (BufPort) */
+               if (MacType == SK_MAC_XMAC) {
+                       /* Dual net mode */
+                       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
+                               Val64 = pAC->Pnmi.BufPort[NetIndex].TxNoBufCts;
+                       }
+                       /* Single net mode */
+                       else {
+                               Val64 = pAC->Pnmi.BufPort[0].TxNoBufCts +
+                                       pAC->Pnmi.BufPort[1].TxNoBufCts;
+                       }
+               }
+               else {
+                       /* Dual net mode */
+                       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
+                               Val64 = pAC->Pnmi.Port[NetIndex].TxNoBufCts;
+                       }
+                       /* Single net mode */
+                       else {
+                               Val64 = pAC->Pnmi.Port[0].TxNoBufCts +
+                                       pAC->Pnmi.Port[1].TxNoBufCts;
+                       }
+               }
+               SK_PNMI_STORE_U64(pBuf, Val64);
+               *pLen = sizeof(SK_U64);
+               break;
+
+       case OID_SKGE_TX_USED_DESCR_NO:
+               /* 2002-09-17 pweber: For XMAC, use the frozen sw counters (BufPort) */
+               if (MacType == SK_MAC_XMAC) {
+                       /* Dual net mode */
+                       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
+                               Val64 = pAC->Pnmi.BufPort[NetIndex].TxUsedDescrNo;
+                       }
+                       /* Single net mode */
+                       else {
+                               Val64 = pAC->Pnmi.BufPort[0].TxUsedDescrNo +
+                                       pAC->Pnmi.BufPort[1].TxUsedDescrNo;
+                       }
+               }
+               else {
+                       /* Dual net mode */
+                       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
+                               Val64 = pAC->Pnmi.Port[NetIndex].TxUsedDescrNo;
+                       }
+                       /* Single net mode */
+                       else {
+                               Val64 = pAC->Pnmi.Port[0].TxUsedDescrNo +
+                                       pAC->Pnmi.Port[1].TxUsedDescrNo;
+                       }
+               }
+               SK_PNMI_STORE_U64(pBuf, Val64);
+               *pLen = sizeof(SK_U64);
+               break;
+
+       case OID_SKGE_RX_DELIVERED_CTS:
+               /* 2002-09-17 pweber: For XMAC, use the frozen sw counters (BufPort) */
+               if (MacType == SK_MAC_XMAC) {
+                       /* Dual net mode */
+                       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
+                               Val64 = pAC->Pnmi.BufPort[NetIndex].RxDeliveredCts;
+                       }
+                       /* Single net mode */
+                       else {
+                               Val64 = pAC->Pnmi.BufPort[0].RxDeliveredCts +
+                                       pAC->Pnmi.BufPort[1].RxDeliveredCts;
+                       }
+               }
+               else {
+                       /* Dual net mode */
+                       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
+                               Val64 = pAC->Pnmi.Port[NetIndex].RxDeliveredCts;
+                       }
+                       /* Single net mode */
+                       else {
+                               Val64 = pAC->Pnmi.Port[0].RxDeliveredCts +
+                                       pAC->Pnmi.Port[1].RxDeliveredCts;
+                       }
+               }
+               SK_PNMI_STORE_U64(pBuf, Val64);
+               *pLen = sizeof(SK_U64);
+               break;
+
+       case OID_SKGE_RX_OCTETS_DELIV_CTS:
+               /* 2002-09-17 pweber: For XMAC, use the frozen sw counters (BufPort) */
+               if (MacType == SK_MAC_XMAC) {
+                       /* Dual net mode */
+                       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
+                               Val64 = pAC->Pnmi.BufPort[NetIndex].RxOctetsDeliveredCts;
+                       }
+                       /* Single net mode */
+                       else {
+                               Val64 = pAC->Pnmi.BufPort[0].RxOctetsDeliveredCts +
+                                       pAC->Pnmi.BufPort[1].RxOctetsDeliveredCts;
+                       }
+               }
+               else {
+                       /* Dual net mode */
+                       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
+                               Val64 = pAC->Pnmi.Port[NetIndex].RxOctetsDeliveredCts;
+                       }
+                       /* Single net mode */
+                       else {
+                               Val64 = pAC->Pnmi.Port[0].RxOctetsDeliveredCts +
+                                       pAC->Pnmi.Port[1].RxOctetsDeliveredCts;
+                       }
+               }
+               SK_PNMI_STORE_U64(pBuf, Val64);
+               *pLen = sizeof(SK_U64);
+               break;
+
+       case OID_SKGE_RX_HW_ERROR_CTS:
+               SK_PNMI_STORE_U64(pBuf, Val64RxHwErrs);
+               *pLen = sizeof(SK_U64);
+               break;
+
+       case OID_SKGE_TX_HW_ERROR_CTS:
+               SK_PNMI_STORE_U64(pBuf, Val64TxHwErrs);
+               *pLen = sizeof(SK_U64);
+               break;
+
+       case OID_SKGE_IN_ERRORS_CTS:
+               /* 2002-09-17 pweber: For XMAC, use the frozen sw counters (BufPort) */
+               if (MacType == SK_MAC_XMAC) {
+                       /* Dual net mode */
+                       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
+                               Val64 = Val64RxHwErrs + pAC->Pnmi.BufPort[NetIndex].RxNoBufCts;
+                       }
+                       /* Single net mode */
+                       else {
+                               Val64 = Val64RxHwErrs +
+                                       pAC->Pnmi.BufPort[0].RxNoBufCts +
+                                       pAC->Pnmi.BufPort[1].RxNoBufCts;
+                       }
+               }
+               else {
+                       /* Dual net mode */
+                       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
+                               Val64 = Val64RxHwErrs + pAC->Pnmi.Port[NetIndex].RxNoBufCts;
+                       }
+                       /* Single net mode */
+                       else {
+                               Val64 = Val64RxHwErrs +
+                                       pAC->Pnmi.Port[0].RxNoBufCts +
+                                       pAC->Pnmi.Port[1].RxNoBufCts;
+                       }
+               }
+               SK_PNMI_STORE_U64(pBuf, Val64);
+               *pLen = sizeof(SK_U64);
+               break;
+
+       case OID_SKGE_OUT_ERROR_CTS:
+               /* 2002-09-17 pweber: For XMAC, use the frozen sw counters (BufPort) */
+               if (MacType == SK_MAC_XMAC) {
+                       /* Dual net mode */
+                       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
+                               Val64 = Val64TxHwErrs + pAC->Pnmi.BufPort[NetIndex].TxNoBufCts;
+                       }
+                       /* Single net mode */
+                       else {
+                               Val64 = Val64TxHwErrs +
+                                       pAC->Pnmi.BufPort[0].TxNoBufCts +
+                                       pAC->Pnmi.BufPort[1].TxNoBufCts;
+                       }
+               }
+               else {
+                       /* Dual net mode */
+                       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
+                               Val64 = Val64TxHwErrs + pAC->Pnmi.Port[NetIndex].TxNoBufCts;
+                       }
+                       /* Single net mode */
+                       else {
+                               Val64 = Val64TxHwErrs +
+                                       pAC->Pnmi.Port[0].TxNoBufCts +
+                                       pAC->Pnmi.Port[1].TxNoBufCts;
+                       }
+               }
+               SK_PNMI_STORE_U64(pBuf, Val64);
+               *pLen = sizeof(SK_U64);
+               break;
+
+       case OID_SKGE_ERR_RECOVERY_CTS:
+               /* 2002-09-17 pweber: For XMAC, use the frozen sw counters (BufPort) */
+               if (MacType == SK_MAC_XMAC) {
+                       /* Dual net mode */
+                       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
+                               Val64 = pAC->Pnmi.BufPort[NetIndex].ErrRecoveryCts;
+                       }
+                       /* Single net mode */
+                       else {
+                               Val64 = pAC->Pnmi.BufPort[0].ErrRecoveryCts +
+                                       pAC->Pnmi.BufPort[1].ErrRecoveryCts;
+                       }
+               }
+               else {
+                       /* Dual net mode */
+                       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
+                               Val64 = pAC->Pnmi.Port[NetIndex].ErrRecoveryCts;
+                       }
+                       /* Single net mode */
+                       else {
+                               Val64 = pAC->Pnmi.Port[0].ErrRecoveryCts +
+                                       pAC->Pnmi.Port[1].ErrRecoveryCts;
+                       }
+               }
+               SK_PNMI_STORE_U64(pBuf, Val64);
+               *pLen = sizeof(SK_U64);
+               break;
+
+       case OID_SKGE_SYSUPTIME:
+               Val64 = SK_PNMI_HUNDREDS_SEC(SkOsGetTime(pAC));
+               Val64 -= pAC->Pnmi.StartUpTime;
+               SK_PNMI_STORE_U64(pBuf, Val64);
+               *pLen = sizeof(SK_U64);
+               break;
+
+       case OID_SKGE_MDB_VERSION:
+               Val32 = SK_PNMI_MDB_VERSION;
+               SK_PNMI_STORE_U32(pBuf, Val32);
+               *pLen = sizeof(SK_U32);
+               break;
+
+       case OID_GEN_RCV_ERROR:
+               /* 2002-09-17 pweber: For XMAC, use the frozen sw counters (BufPort) */
+               if (MacType == SK_MAC_XMAC) {
+                       Val64 = Val64RxHwErrs + pAC->Pnmi.BufPort[NetIndex].RxNoBufCts;
+               }
+               else {
+                       Val64 = Val64RxHwErrs + pAC->Pnmi.Port[NetIndex].RxNoBufCts;
+               }
+
+               /*
+                * by default 32bit values are evaluated
+                */
+               if (!Is64BitReq) {
+                       Val32 = (SK_U32)Val64;
+                       SK_PNMI_STORE_U32(pBuf, Val32);
+                       *pLen = sizeof(SK_U32);
+               }
+               else {
+                       SK_PNMI_STORE_U64(pBuf, Val64);
+                       *pLen = sizeof(SK_U64);
+               }
+               break;
+
+       case OID_GEN_XMIT_ERROR:
+               /* 2002-09-17 pweber: For XMAC, use the frozen sw counters (BufPort) */
+               if (MacType == SK_MAC_XMAC) {
+                       Val64 = Val64TxHwErrs + pAC->Pnmi.BufPort[NetIndex].TxNoBufCts;
+               }
+               else {
+                       Val64 = Val64TxHwErrs + pAC->Pnmi.Port[NetIndex].TxNoBufCts;
+               }
+
+               /*
+                * by default 32bit values are evaluated
+                */
+               if (!Is64BitReq) {
+                       Val32 = (SK_U32)Val64;
+                       SK_PNMI_STORE_U32(pBuf, Val32);
+                       *pLen = sizeof(SK_U32);
+               }
+               else {
+                       SK_PNMI_STORE_U64(pBuf, Val64);
+                       *pLen = sizeof(SK_U64);
+               }
+               break;
+
+       case OID_GEN_RCV_NO_BUFFER:
+               /* 2002-09-17 pweber: For XMAC, use the frozen sw counters (BufPort) */
+               if (MacType == SK_MAC_XMAC) {
+                       Val64 = pAC->Pnmi.BufPort[NetIndex].RxNoBufCts;
+               }
+               else {
+                       Val64 = pAC->Pnmi.Port[NetIndex].RxNoBufCts;
+               }
+
+               /*
+                * by default 32bit values are evaluated
+                */
+               if (!Is64BitReq) {
+                       Val32 = (SK_U32)Val64;
+                       SK_PNMI_STORE_U32(pBuf, Val32);
+                       *pLen = sizeof(SK_U32);
+               }
+               else {
+                       SK_PNMI_STORE_U64(pBuf, Val64);
+                       *pLen = sizeof(SK_U64);
+               }
+               break;
+
+       case OID_GEN_TRANSMIT_QUEUE_LENGTH:
+               Val32 = (SK_U32)pAC->Pnmi.Port[NetIndex].TxSwQueueLen;
+               SK_PNMI_STORE_U32(pBuf, Val32);
+               *pLen = sizeof(SK_U32);
+               break;
+
+       default:
+               SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR034,
+                       SK_PNMI_ERR034MSG);
+
+               *pLen = 0;
+               return (SK_PNMI_ERR_GENERAL);
+       }
+
+       if (Id == OID_SKGE_RX_HW_ERROR_CTS ||
+               Id == OID_SKGE_TX_HW_ERROR_CTS ||
+               Id == OID_SKGE_IN_ERRORS_CTS ||
+               Id == OID_SKGE_OUT_ERROR_CTS ||
+               Id == OID_GEN_XMIT_ERROR ||
+               Id == OID_GEN_RCV_ERROR) {
+
+               pAC->Pnmi.MacUpdatedFlag --;
+       }
+
+       return (SK_PNMI_ERR_OK);
+}
+
+/*****************************************************************************
+ *
+ * Rlmt - OID handler function of OID_SKGE_RLMT_XXX single instance.
+ *
+ * Description:
+ *     Get/Presets/Sets the RLMT OIDs.
+ *
+ * Returns:
+ *     SK_PNMI_ERR_OK           The request was successfully performed.
+ *     SK_PNMI_ERR_GENERAL      A general severe internal error occured.
+ *     SK_PNMI_ERR_TOO_SHORT    The passed buffer is too short to contain
+ *                              the correct data (e.g. a 32bit value is
+ *                              needed, but a 16 bit value was passed).
+ *     SK_PNMI_ERR_BAD_VALUE    The passed value is not in the valid
+ *                              value range.
+ *     SK_PNMI_ERR_READ_ONLY    The OID is read-only and cannot be set.
+ *     SK_PNMI_ERR_UNKNOWN_INST The requested instance of the OID doesn't
+ *                               exist (e.g. port instance 3 on a two port
+ *                              adapter.
+ */
+PNMI_STATIC int Rlmt(
+SK_AC *pAC,            /* Pointer to adapter context */
+SK_IOC IoC,            /* IO context handle */
+int Action,            /* Get/PreSet/Set action */
+SK_U32 Id,             /* Object ID that is to be processed */
+char *pBuf,            /* Buffer to which to mgmt data will be retrieved */
+unsigned int *pLen,    /* On call: buffer length. On return: used buffer */
+SK_U32 Instance,       /* Instance (1..n) that is to be queried or -1 */
+unsigned int TableIndex, /* Index to the Id table */
+SK_U32 NetIndex)       /* NetIndex (0..n), in single net mode allways zero */
+{
+       int             Ret;
+       unsigned int    PhysPortIndex;
+       unsigned int    PhysPortMax;
+       SK_EVPARA       EventParam;
+       SK_U32          Val32;
+       SK_U64          Val64;
+
+
+       /*
+        * Check instance. Only single instance OIDs are allowed here.
+        */
+       if (Instance != (SK_U32)(-1) && Instance != 1) {
+
+               *pLen = 0;
+               return (SK_PNMI_ERR_UNKNOWN_INST);
+       }
+
+       /*
+        * Perform the requested action
+        */
+       if (Action == SK_PNMI_GET) {
+
+               /*
+                * Check if the buffer length is large enough.
+                */
+
+               switch (Id) {
+
+               case OID_SKGE_RLMT_MODE:
+               case OID_SKGE_RLMT_PORT_ACTIVE:
+               case OID_SKGE_RLMT_PORT_PREFERRED:
+                       if (*pLen < sizeof(SK_U8)) {
+
+                               *pLen = sizeof(SK_U8);
+                               return (SK_PNMI_ERR_TOO_SHORT);
+                       }
+                       break;
+
+               case OID_SKGE_RLMT_PORT_NUMBER:
+                       if (*pLen < sizeof(SK_U32)) {
+
+                               *pLen = sizeof(SK_U32);
+                               return (SK_PNMI_ERR_TOO_SHORT);
+                       }
+                       break;
+
+               case OID_SKGE_RLMT_CHANGE_CTS:
+               case OID_SKGE_RLMT_CHANGE_TIME:
+               case OID_SKGE_RLMT_CHANGE_ESTIM:
+               case OID_SKGE_RLMT_CHANGE_THRES:
+                       if (*pLen < sizeof(SK_U64)) {
+
+                               *pLen = sizeof(SK_U64);
+                               return (SK_PNMI_ERR_TOO_SHORT);
+                       }
+                       break;
+
+               default:
+                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR035,
+                               SK_PNMI_ERR035MSG);
+
+                       *pLen = 0;
+                       return (SK_PNMI_ERR_GENERAL);
+               }
+
+               /*
+                * Update RLMT statistic and increment semaphores to indicate
+                * that an update was already done. Maybe RLMT will hold its
+                * statistic always up to date some time. Then we can
+                * remove this type of call.
+                */
+               if ((Ret = RlmtUpdate(pAC, IoC, NetIndex)) != SK_PNMI_ERR_OK) {
+
+                       *pLen = 0;
+                       return (Ret);
+               }
+               pAC->Pnmi.RlmtUpdatedFlag ++;
+
+               /*
+                * Retrieve Value
+               */
+               switch (Id) {
+
+               case OID_SKGE_RLMT_MODE:
+                       *pBuf = (char)pAC->Rlmt.Net[0].RlmtMode;
+                       *pLen = sizeof(char);
+                       break;
+
+               case OID_SKGE_RLMT_PORT_NUMBER:
+                       Val32 = (SK_U32)pAC->GIni.GIMacsFound;
+                       SK_PNMI_STORE_U32(pBuf, Val32);
+                       *pLen = sizeof(SK_U32);
+                       break;
+
+               case OID_SKGE_RLMT_PORT_ACTIVE:
+                       *pBuf = 0;
+                       /*
+                        * If multiple ports may become active this OID
+                        * doesn't make sense any more. A new variable in
+                        * the port structure should be created. However,
+                        * for this variable the first active port is
+                        * returned.
+                        */
+                       PhysPortMax = pAC->GIni.GIMacsFound;
+
+                       for (PhysPortIndex = 0; PhysPortIndex < PhysPortMax;
+                               PhysPortIndex ++) {
+
+                               if (pAC->Pnmi.Port[PhysPortIndex].ActiveFlag) {
+
+                                       *pBuf = (char)SK_PNMI_PORT_PHYS2LOG(PhysPortIndex);
+                                       break;
+                               }
+                       }
+                       *pLen = sizeof(char);
+                       break;
+
+               case OID_SKGE_RLMT_PORT_PREFERRED:
+                       *pBuf = (char)SK_PNMI_PORT_PHYS2LOG(pAC->Rlmt.Net[NetIndex].Preference);
+                       *pLen = sizeof(char);
+                       break;
+
+               case OID_SKGE_RLMT_CHANGE_CTS:
+                       Val64 = pAC->Pnmi.RlmtChangeCts;
+                       SK_PNMI_STORE_U64(pBuf, Val64);
+                       *pLen = sizeof(SK_U64);
+                       break;
+
+               case OID_SKGE_RLMT_CHANGE_TIME:
+                       Val64 = pAC->Pnmi.RlmtChangeTime;
+                       SK_PNMI_STORE_U64(pBuf, Val64);
+                       *pLen = sizeof(SK_U64);
+                       break;
+
+               case OID_SKGE_RLMT_CHANGE_ESTIM:
+                       Val64 = pAC->Pnmi.RlmtChangeEstimate.Estimate;
+                       SK_PNMI_STORE_U64(pBuf, Val64);
+                       *pLen = sizeof(SK_U64);
+                       break;
+
+               case OID_SKGE_RLMT_CHANGE_THRES:
+                       Val64 = pAC->Pnmi.RlmtChangeThreshold;
+                       SK_PNMI_STORE_U64(pBuf, Val64);
+                       *pLen = sizeof(SK_U64);
+                       break;
+
+               default:
+                       SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_ERR,
+                               ("Rlmt: Unknown OID should be handled before"));
+
+                       pAC->Pnmi.RlmtUpdatedFlag --;
+                       *pLen = 0;
+                       return (SK_PNMI_ERR_GENERAL);
+               }
+
+               pAC->Pnmi.RlmtUpdatedFlag --;
+       }
+       else {
+               /* Perform a preset or set */
+               switch (Id) {
+
+               case OID_SKGE_RLMT_MODE:
+                       /* Check if the buffer length is plausible */
+                       if (*pLen < sizeof(char)) {
+
+                               *pLen = sizeof(char);
+                               return (SK_PNMI_ERR_TOO_SHORT);
+                       }
+                       /* Check if the value range is correct */
+                       if (*pLen != sizeof(char) ||
+                               (*pBuf & SK_PNMI_RLMT_MODE_CHK_LINK) == 0 ||
+                               *(SK_U8 *)pBuf > 15) {
+
+                               *pLen = 0;
+                               return (SK_PNMI_ERR_BAD_VALUE);
+                       }
+                       /* The preset ends here */
+                       if (Action == SK_PNMI_PRESET) {
+
+                               *pLen = 0;
+                               return (SK_PNMI_ERR_OK);
+                       }
+                       /* Send an event to RLMT to change the mode */
+                       SK_MEMSET((char *)&EventParam, 0, sizeof(EventParam));
+                       EventParam.Para32[0] |= (SK_U32)(*pBuf);
+                       EventParam.Para32[1] = 0;
+                       if (SkRlmtEvent(pAC, IoC, SK_RLMT_MODE_CHANGE,
+                               EventParam) > 0) {
+
+                               SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR037,
+                                       SK_PNMI_ERR037MSG);
+
+                               *pLen = 0;
+                               return (SK_PNMI_ERR_GENERAL);
+                       }
+                       break;
+
+               case OID_SKGE_RLMT_PORT_PREFERRED:
+                       /* Check if the buffer length is plausible */
+                       if (*pLen < sizeof(char)) {
+
+                               *pLen = sizeof(char);
+                               return (SK_PNMI_ERR_TOO_SHORT);
+                       }
+                       /* Check if the value range is correct */
+                       if (*pLen != sizeof(char) || *(SK_U8 *)pBuf >
+                               (SK_U8)pAC->GIni.GIMacsFound) {
+
+                               *pLen = 0;
+                               return (SK_PNMI_ERR_BAD_VALUE);
+                       }
+                       /* The preset ends here */
+                       if (Action == SK_PNMI_PRESET) {
+
+                               *pLen = 0;
+                               return (SK_PNMI_ERR_OK);
+                       }
+
+                       /*
+                        * Send an event to RLMT change the preferred port.
+                        * A param of -1 means automatic mode. RLMT will
+                        * make the decision which is the preferred port.
+                        */
+                       SK_MEMSET((char *)&EventParam, 0, sizeof(EventParam));
+                       EventParam.Para32[0] = (SK_U32)(*pBuf) - 1;
+                       EventParam.Para32[1] = NetIndex;
+                       if (SkRlmtEvent(pAC, IoC, SK_RLMT_PREFPORT_CHANGE,
+                               EventParam) > 0) {
+
+                               SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR038,
+                                       SK_PNMI_ERR038MSG);
+
+                               *pLen = 0;
+                               return (SK_PNMI_ERR_GENERAL);
+                       }
+                       break;
+
+               case OID_SKGE_RLMT_CHANGE_THRES:
+                       /* Check if the buffer length is plausible */
+                       if (*pLen < sizeof(SK_U64)) {
+
+                               *pLen = sizeof(SK_U64);
+                               return (SK_PNMI_ERR_TOO_SHORT);
+                       }
+                       /*
+                        * There are not many restrictions to the
+                        * value range.
+                        */
+                       if (*pLen != sizeof(SK_U64)) {
+
+                               *pLen = 0;
+                               return (SK_PNMI_ERR_BAD_VALUE);
+                       }
+                       /* A preset ends here */
+                       if (Action == SK_PNMI_PRESET) {
+
+                               *pLen = 0;
+                               return (SK_PNMI_ERR_OK);
+                       }
+                       /*
+                        * Store the new threshold, which will be taken
+                        * on the next timer event.
+                        */
+                       SK_PNMI_READ_U64(pBuf, Val64);
+                       pAC->Pnmi.RlmtChangeThreshold = Val64;
+                       break;
+
+               default:
+                       /* The other OIDs are not be able for set */
+                       *pLen = 0;
+                       return (SK_PNMI_ERR_READ_ONLY);
+               }
+       }
+
+       return (SK_PNMI_ERR_OK);
+}
+
+/*****************************************************************************
+ *
+ * RlmtStat - OID handler function of OID_SKGE_RLMT_XXX multiple instance.
+ *
+ * Description:
+ *     Performs get requests on multiple instance variables.
+ *
+ * Returns:
+ *     SK_PNMI_ERR_OK           The request was successfully performed.
+ *     SK_PNMI_ERR_GENERAL      A general severe internal error occured.
+ *     SK_PNMI_ERR_TOO_SHORT    The passed buffer is too short to contain
+ *                              the correct data (e.g. a 32bit value is
+ *                              needed, but a 16 bit value was passed).
+ *     SK_PNMI_ERR_UNKNOWN_INST The requested instance of the OID doesn't
+ *                               exist (e.g. port instance 3 on a two port
+ *                              adapter.
+ */
+PNMI_STATIC int RlmtStat(
+SK_AC *pAC,            /* Pointer to adapter context */
+SK_IOC IoC,            /* IO context handle */
+int Action,            /* Get/PreSet/Set action */
+SK_U32 Id,             /* Object ID that is to be processed */
+char *pBuf,            /* Buffer to which to mgmt data will be retrieved */
+unsigned int *pLen,    /* On call: buffer length. On return: used buffer */
+SK_U32 Instance,       /* Instance (1..n) that is to be queried or -1 */
+unsigned int TableIndex, /* Index to the Id table */
+SK_U32 NetIndex)       /* NetIndex (0..n), in single net mode allways zero */
+{
+       unsigned int    PhysPortMax;
+       unsigned int    PhysPortIndex;
+       unsigned int    Limit;
+       unsigned int    Offset;
+       int             Ret;
+       SK_U32          Val32;
+       SK_U64          Val64;
+
+       /*
+        * Calculate the port indexes from the instance
+        */
+       PhysPortMax = pAC->GIni.GIMacsFound;
+
+       if ((Instance != (SK_U32)(-1))) {
+               /* Check instance range */
+               if ((Instance < 1) || (Instance > PhysPortMax)) {
+
+                       *pLen = 0;
+                       return (SK_PNMI_ERR_UNKNOWN_INST);
+               }
+
+               /* Single net mode */
+               PhysPortIndex = Instance - 1;
+
+               /* Dual net mode */
+               if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
+                       PhysPortIndex = NetIndex;
+               }
+
+               /* Both net modes */
+               Limit = PhysPortIndex + 1;
+       }
+       else {
+               /* Single net mode */
+               PhysPortIndex = 0;
+               Limit = PhysPortMax;
+
+               /* Dual net mode */
+               if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
+                       PhysPortIndex = NetIndex;
+                       Limit = PhysPortIndex + 1;
+               }
+       }
+
+       /*
+        * Currently only get requests are allowed.
+        */
+       if (Action != SK_PNMI_GET) {
+
+               *pLen = 0;
+               return (SK_PNMI_ERR_READ_ONLY);
+       }
+
+       /*
+        * Check if the buffer length is large enough.
+        */
+       switch (Id) {
+
+       case OID_SKGE_RLMT_PORT_INDEX:
+       case OID_SKGE_RLMT_STATUS:
+               if (*pLen < (Limit - PhysPortIndex) * sizeof(SK_U32)) {
+
+                       *pLen = (Limit - PhysPortIndex) * sizeof(SK_U32);
+                       return (SK_PNMI_ERR_TOO_SHORT);
+               }
+               break;
+
+       case OID_SKGE_RLMT_TX_HELLO_CTS:
+       case OID_SKGE_RLMT_RX_HELLO_CTS:
+       case OID_SKGE_RLMT_TX_SP_REQ_CTS:
+       case OID_SKGE_RLMT_RX_SP_CTS:
+               if (*pLen < (Limit - PhysPortIndex) * sizeof(SK_U64)) {
+
+                       *pLen = (Limit - PhysPortIndex) * sizeof(SK_U64);
+                       return (SK_PNMI_ERR_TOO_SHORT);
+               }
+               break;
+
+       default:
+               SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR039,
+                       SK_PNMI_ERR039MSG);
+
+               *pLen = 0;
+               return (SK_PNMI_ERR_GENERAL);
+
+       }
+
+       /*
+        * Update statistic and increment semaphores to indicate that
+        * an update was already done.
+        */
+       if ((Ret = RlmtUpdate(pAC, IoC, NetIndex)) != SK_PNMI_ERR_OK) {
+
+               *pLen = 0;
+               return (Ret);
+       }
+       pAC->Pnmi.RlmtUpdatedFlag ++;
+
+       /*
+        * Get value
+        */
+       Offset = 0;
+       for (; PhysPortIndex < Limit; PhysPortIndex ++) {
+
+               switch (Id) {
+
+               case OID_SKGE_RLMT_PORT_INDEX:
+                       Val32 = PhysPortIndex;
+                       SK_PNMI_STORE_U32(pBuf + Offset, Val32);
+                       Offset += sizeof(SK_U32);
+                       break;
+
+               case OID_SKGE_RLMT_STATUS:
+                       if (pAC->Rlmt.Port[PhysPortIndex].PortState ==
+                               SK_RLMT_PS_INIT ||
+                               pAC->Rlmt.Port[PhysPortIndex].PortState ==
+                               SK_RLMT_PS_DOWN) {
+
+                               Val32 = SK_PNMI_RLMT_STATUS_ERROR;
+                       }
+                       else if (pAC->Pnmi.Port[PhysPortIndex].ActiveFlag) {
+
+                               Val32 = SK_PNMI_RLMT_STATUS_ACTIVE;
+                       }
+                       else {
+                               Val32 = SK_PNMI_RLMT_STATUS_STANDBY;
+                       }
+                       SK_PNMI_STORE_U32(pBuf + Offset, Val32);
+                       Offset += sizeof(SK_U32);
+                       break;
+
+               case OID_SKGE_RLMT_TX_HELLO_CTS:
+                       Val64 = pAC->Rlmt.Port[PhysPortIndex].TxHelloCts;
+                       SK_PNMI_STORE_U64(pBuf + Offset, Val64);
+                       Offset += sizeof(SK_U64);
+                       break;
+
+               case OID_SKGE_RLMT_RX_HELLO_CTS:
+                       Val64 = pAC->Rlmt.Port[PhysPortIndex].RxHelloCts;
+                       SK_PNMI_STORE_U64(pBuf + Offset, Val64);
+                       Offset += sizeof(SK_U64);
+                       break;
+
+               case OID_SKGE_RLMT_TX_SP_REQ_CTS:
+                       Val64 = pAC->Rlmt.Port[PhysPortIndex].TxSpHelloReqCts;
+                       SK_PNMI_STORE_U64(pBuf + Offset, Val64);
+                       Offset += sizeof(SK_U64);
+                       break;
+
+               case OID_SKGE_RLMT_RX_SP_CTS:
+                       Val64 = pAC->Rlmt.Port[PhysPortIndex].RxSpHelloCts;
+                       SK_PNMI_STORE_U64(pBuf + Offset, Val64);
+                       Offset += sizeof(SK_U64);
+                       break;
+
+               default:
+                       SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_ERR,
+                               ("RlmtStat: Unknown OID should be errored before"));
+
+                       pAC->Pnmi.RlmtUpdatedFlag --;
+                       *pLen = 0;
+                       return (SK_PNMI_ERR_GENERAL);
+               }
+       }
+       *pLen = Offset;
+
+       pAC->Pnmi.RlmtUpdatedFlag --;
+
+       return (SK_PNMI_ERR_OK);
+}
+
+/*****************************************************************************
+ *
+ * MacPrivateConf - OID handler function of OIDs concerning the configuration
+ *
+ * Description:
+ *     Get/Presets/Sets the OIDs concerning the configuration.
+ *
+ * Returns:
+ *     SK_PNMI_ERR_OK           The request was successfully performed.
+ *     SK_PNMI_ERR_GENERAL      A general severe internal error occured.
+ *     SK_PNMI_ERR_TOO_SHORT    The passed buffer is too short to contain
+ *                              the correct data (e.g. a 32bit value is
+ *                              needed, but a 16 bit value was passed).
+ *     SK_PNMI_ERR_BAD_VALUE    The passed value is not in the valid
+ *                              value range.
+ *     SK_PNMI_ERR_READ_ONLY    The OID is read-only and cannot be set.
+ *     SK_PNMI_ERR_UNKNOWN_INST The requested instance of the OID doesn't
+ *                               exist (e.g. port instance 3 on a two port
+ *                              adapter.
+ */
+PNMI_STATIC int MacPrivateConf(
+SK_AC *pAC,            /* Pointer to adapter context */
+SK_IOC IoC,            /* IO context handle */
+int Action,            /* Get/PreSet/Set action */
+SK_U32 Id,             /* Object ID that is to be processed */
+char *pBuf,            /* Buffer to which to mgmt data will be retrieved */
+unsigned int *pLen,    /* On call: buffer length. On return: used buffer */
+SK_U32 Instance,       /* Instance (1..n) that is to be queried or -1 */
+unsigned int TableIndex, /* Index to the Id table */
+SK_U32 NetIndex)       /* NetIndex (0..n), in single net mode allways zero */
+{
+       unsigned int    PhysPortMax;
+       unsigned int    PhysPortIndex;
+       unsigned int    LogPortMax;
+       unsigned int    LogPortIndex;
+       unsigned int    Limit;
+       unsigned int    Offset;
+       char            Val8;
+       int             Ret;
+       SK_EVPARA       EventParam;
+       SK_U32          Val32;
+
+
+       /*
+        * Calculate instance if wished. MAC index 0 is the virtual
+        * MAC.
+        */
+       PhysPortMax = pAC->GIni.GIMacsFound;
+       LogPortMax = SK_PNMI_PORT_PHYS2LOG(PhysPortMax);
+
+       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) { /* Dual net mode */
+               LogPortMax--;
+       }
+
+       if ((Instance != (SK_U32)(-1))) { /* Only one specific instance is queried */
+               /* Check instance range */
+               if ((Instance < 1) || (Instance > LogPortMax)) {
+
+                       *pLen = 0;
+                       return (SK_PNMI_ERR_UNKNOWN_INST);
+               }
+               LogPortIndex = SK_PNMI_PORT_INST2LOG(Instance);
+               Limit = LogPortIndex + 1;
+       }
+
+       else { /* Instance == (SK_U32)(-1), get all Instances of that OID */
+
+               LogPortIndex = 0;
+               Limit = LogPortMax;
+       }
+
+       /*
+        * Perform action
+        */
+       if (Action == SK_PNMI_GET) {
+
+               /*
+                * Check length
+                */
+               switch (Id) {
+
+               case OID_SKGE_PMD:
+               case OID_SKGE_CONNECTOR:
+               case OID_SKGE_LINK_CAP:
+               case OID_SKGE_LINK_MODE:
+               case OID_SKGE_LINK_MODE_STATUS:
+               case OID_SKGE_LINK_STATUS:
+               case OID_SKGE_FLOWCTRL_CAP:
+               case OID_SKGE_FLOWCTRL_MODE:
+               case OID_SKGE_FLOWCTRL_STATUS:
+               case OID_SKGE_PHY_OPERATION_CAP:
+               case OID_SKGE_PHY_OPERATION_MODE:
+               case OID_SKGE_PHY_OPERATION_STATUS:
+               case OID_SKGE_SPEED_CAP:
+               case OID_SKGE_SPEED_MODE:
+               case OID_SKGE_SPEED_STATUS:
+                       if (*pLen < (Limit - LogPortIndex) * sizeof(SK_U8)) {
+
+                               *pLen = (Limit - LogPortIndex) *
+                                       sizeof(SK_U8);
+                               return (SK_PNMI_ERR_TOO_SHORT);
+                       }
+                       break;
+
+       case OID_SKGE_MTU:
+                       if (*pLen < sizeof(SK_U32)) {
+
+                               *pLen = sizeof(SK_U32);
+                               return (SK_PNMI_ERR_TOO_SHORT);
+                       }
+                       break;
+
+               default:
+                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR041,
+                               SK_PNMI_ERR041MSG);
+                       *pLen = 0;
+                       return (SK_PNMI_ERR_GENERAL);
+               }
+
+               /*
+                * Update statistic and increment semaphore to indicate
+                * that an update was already done.
+                */
+               if ((Ret = SirqUpdate(pAC, IoC)) != SK_PNMI_ERR_OK) {
+
+                       *pLen = 0;
+                       return (Ret);
+               }
+               pAC->Pnmi.SirqUpdatedFlag ++;
+
+               /*
+                * Get value
+                */
+               Offset = 0;
+               for (; LogPortIndex < Limit; LogPortIndex ++) {
+
+                       switch (Id) {
+
+                       case OID_SKGE_PMD:
+                               *(pBuf + Offset) = pAC->Pnmi.PMD;
+                               Offset += sizeof(char);
+                               break;
+
+                       case OID_SKGE_CONNECTOR:
+                               *(pBuf + Offset) = pAC->Pnmi.Connector;
+                               Offset += sizeof(char);
+                               break;
+
+                       case OID_SKGE_LINK_CAP:
+                               if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNetMode */
+                                       if (LogPortIndex == 0) {
+
+                                               /* Get value for virtual port */
+                                               VirtualConf(pAC, IoC, Id, pBuf +
+                                                       Offset);
+                                       }
+                                       else {
+                                               /* Get value for physical ports */
+                                               PhysPortIndex = SK_PNMI_PORT_LOG2PHYS(
+                                                       pAC, LogPortIndex);
+
+                                               *(pBuf + Offset) = pAC->GIni.GP[
+                                                       PhysPortIndex].PLinkCap;
+                                       }
+                                       Offset += sizeof(char);
+                               }
+                               else { /* DualNetMode */
+
+                                       *(pBuf + Offset) = pAC->GIni.GP[NetIndex].PLinkCap;
+                                       Offset += sizeof(char);
+                               }
+                               break;
+
+                       case OID_SKGE_LINK_MODE:
+                               if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNetMode */
+                                       if (LogPortIndex == 0) {
+
+                                               /* Get value for virtual port */
+                                               VirtualConf(pAC, IoC, Id, pBuf +
+                                               Offset);
+                                       }
+                                       else {
+                                               /* Get value for physical ports */
+                                               PhysPortIndex = SK_PNMI_PORT_LOG2PHYS(
+                                                       pAC, LogPortIndex);
+
+                                               *(pBuf + Offset) = pAC->GIni.GP[
+                                                       PhysPortIndex].PLinkModeConf;
+                                       }
+                                       Offset += sizeof(char);
+                               }
+                               else { /* DualNetMode */
+
+                                       *(pBuf + Offset) = pAC->GIni.GP[NetIndex].PLinkModeConf;
+                                       Offset += sizeof(char);
+                               }
+                               break;
+
+                       case OID_SKGE_LINK_MODE_STATUS:
+                               if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNetMode */
+                                       if (LogPortIndex == 0) {
+
+                                               /* Get value for virtual port */
+                                               VirtualConf(pAC, IoC, Id, pBuf +
+                                                       Offset);
+                                       }
+                                       else {
+                                               /* Get value for physical port */
+                                               PhysPortIndex = SK_PNMI_PORT_LOG2PHYS(
+                                                       pAC, LogPortIndex);
+
+                                               *(pBuf + Offset) =
+                                                       CalculateLinkModeStatus(pAC,
+                                                               IoC, PhysPortIndex);
+                                       }
+                                       Offset += sizeof(char);
+                               }
+                               else { /* DualNetMode */
+                                       *(pBuf + Offset) = CalculateLinkModeStatus(pAC, IoC, NetIndex);
+                                       Offset += sizeof(char);
+                               }
+                               break;
+
+                       case OID_SKGE_LINK_STATUS:
+                               if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNetMode */
+                                       if (LogPortIndex == 0) {
+
+                                               /* Get value for virtual port */
+                                               VirtualConf(pAC, IoC, Id, pBuf +
+                                                       Offset);
+                                       }
+                                       else {
+                                               /* Get value for physical ports */
+                                               PhysPortIndex = SK_PNMI_PORT_LOG2PHYS(
+                                                       pAC, LogPortIndex);
+
+                                               *(pBuf + Offset) =
+                                                       CalculateLinkStatus(pAC,
+                                                               IoC, PhysPortIndex);
+                                       }
+                                       Offset += sizeof(char);
+                               }
+                               else { /* DualNetMode */
+
+                                       *(pBuf + Offset) = CalculateLinkStatus(pAC, IoC, NetIndex);
+                                       Offset += sizeof(char);
+                               }
+                               break;
+
+                       case OID_SKGE_FLOWCTRL_CAP:
+                               if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNetMode */
+                                       if (LogPortIndex == 0) {
+
+                                               /* Get value for virtual port */
+                                               VirtualConf(pAC, IoC, Id, pBuf +
+                                                       Offset);
+                                       }
+                                       else {
+                                               /* Get value for physical ports */
+                                               PhysPortIndex = SK_PNMI_PORT_LOG2PHYS(
+                                                       pAC, LogPortIndex);
+
+                                               *(pBuf + Offset) = pAC->GIni.GP[
+                                                       PhysPortIndex].PFlowCtrlCap;
+                                       }
+                                       Offset += sizeof(char);
+                               }
+                               else { /* DualNetMode */
+
+                                       *(pBuf + Offset) = pAC->GIni.GP[NetIndex].PFlowCtrlCap;
+                                       Offset += sizeof(char);
+                               }
+                               break;
+
+                       case OID_SKGE_FLOWCTRL_MODE:
+                               if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNetMode */
+                                       if (LogPortIndex == 0) {
+
+                                               /* Get value for virtual port */
+                                               VirtualConf(pAC, IoC, Id, pBuf +
+                                                       Offset);
+                                       }
+                                       else {
+                                               /* Get value for physical port */
+                                               PhysPortIndex = SK_PNMI_PORT_LOG2PHYS(
+                                                       pAC, LogPortIndex);
+
+                                               *(pBuf + Offset) = pAC->GIni.GP[
+                                                       PhysPortIndex].PFlowCtrlMode;
+                                       }
+                                       Offset += sizeof(char);
+                               }
+                               else { /* DualNetMode */
+
+                                       *(pBuf + Offset) = pAC->GIni.GP[NetIndex].PFlowCtrlMode;
+                                       Offset += sizeof(char);
+                               }
+                               break;
+
+                       case OID_SKGE_FLOWCTRL_STATUS:
+                               if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNetMode */
+                                       if (LogPortIndex == 0) {
+
+                                               /* Get value for virtual port */
+                                               VirtualConf(pAC, IoC, Id, pBuf +
+                                                       Offset);
+                                       }
+                                       else {
+                                               /* Get value for physical port */
+                                               PhysPortIndex = SK_PNMI_PORT_LOG2PHYS(
+                                                       pAC, LogPortIndex);
+
+                                               *(pBuf + Offset) = pAC->GIni.GP[
+                                                       PhysPortIndex].PFlowCtrlStatus;
+                                       }
+                                       Offset += sizeof(char);
+                               }
+                               else { /* DualNetMode */
+
+                                       *(pBuf + Offset) = pAC->GIni.GP[NetIndex].PFlowCtrlStatus;
+                                       Offset += sizeof(char);
+                               }
+                               break;
+
+                       case OID_SKGE_PHY_OPERATION_CAP:
+                               if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNetMode */
+                                       if (LogPortIndex == 0) {
+
+                                               /* Get value for virtual port */
+                                               VirtualConf(pAC, IoC, Id, pBuf +
+                                                       Offset);
+                                       }
+                                       else {
+                                               /* Get value for physical ports */
+                                               PhysPortIndex = SK_PNMI_PORT_LOG2PHYS(
+                                                       pAC, LogPortIndex);
+
+                                               *(pBuf + Offset) = pAC->GIni.GP[
+                                                       PhysPortIndex].PMSCap;
+                                       }
+                                       Offset += sizeof(char);
+                               }
+                               else { /* DualNetMode */
+
+                                       *(pBuf + Offset) = pAC->GIni.GP[NetIndex].PMSCap;
+                                       Offset += sizeof(char);
+                               }
+                               break;
+
+                       case OID_SKGE_PHY_OPERATION_MODE:
+                               if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNetMode */
+                                       if (LogPortIndex == 0) {
+
+                                               /* Get value for virtual port */
+                                               VirtualConf(pAC, IoC, Id, pBuf + Offset);
+                                       }
+                                       else {
+                                               /* Get value for physical port */
+                                               PhysPortIndex = SK_PNMI_PORT_LOG2PHYS(
+                                                       pAC, LogPortIndex);
+
+                                               *(pBuf + Offset) = pAC->GIni.GP[
+                                                       PhysPortIndex].PMSMode;
+                                       }
+                                       Offset += sizeof(char);
+                               }
+                               else { /* DualNetMode */
+
+                                       *(pBuf + Offset) = pAC->GIni.GP[NetIndex].PMSMode;
+                                       Offset += sizeof(char);
+                               }
+                               break;
+
+                       case OID_SKGE_PHY_OPERATION_STATUS:
+                               if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNetMode */
+                                       if (LogPortIndex == 0) {
+
+                                               /* Get value for virtual port */
+                                               VirtualConf(pAC, IoC, Id, pBuf + Offset);
+                                       }
+                                       else {
+                                               /* Get value for physical port */
+                                               PhysPortIndex = SK_PNMI_PORT_LOG2PHYS(
+                                                       pAC, LogPortIndex);
+
+                                               *(pBuf + Offset) = pAC->GIni.GP[
+                                                       PhysPortIndex].PMSStatus;
+                                       }
+                                       Offset += sizeof(char);
+                               }
+                               else {
+
+                                       *(pBuf + Offset) = pAC->GIni.GP[NetIndex].PMSStatus;
+                                       Offset += sizeof(char);
+                               }
+                               break;
+
+                       case OID_SKGE_SPEED_CAP:
+                               if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNetMode */
+                                       if (LogPortIndex == 0) {
+
+                                               /* Get value for virtual port */
+                                               VirtualConf(pAC, IoC, Id, pBuf +
+                                                       Offset);
+                                       }
+                                       else {
+                                               /* Get value for physical ports */
+                                               PhysPortIndex = SK_PNMI_PORT_LOG2PHYS(
+                                                       pAC, LogPortIndex);
+
+                                               *(pBuf + Offset) = pAC->GIni.GP[
+                                                       PhysPortIndex].PLinkSpeedCap;
+                                       }
+                                       Offset += sizeof(char);
+                               }
+                               else { /* DualNetMode */
+
+                                       *(pBuf + Offset) = pAC->GIni.GP[NetIndex].PLinkSpeedCap;
+                                       Offset += sizeof(char);
+                               }
+                               break;
+
+                       case OID_SKGE_SPEED_MODE:
+                               if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNetMode */
+                                       if (LogPortIndex == 0) {
+
+                                               /* Get value for virtual port */
+                                               VirtualConf(pAC, IoC, Id, pBuf + Offset);
+                                       }
+                                       else {
+                                               /* Get value for physical port */
+                                               PhysPortIndex = SK_PNMI_PORT_LOG2PHYS(
+                                                       pAC, LogPortIndex);
+
+                                               *(pBuf + Offset) = pAC->GIni.GP[
+                                                       PhysPortIndex].PLinkSpeed;
+                                       }
+                                       Offset += sizeof(char);
+                               }
+                               else { /* DualNetMode */
+
+                                       *(pBuf + Offset) = pAC->GIni.GP[NetIndex].PLinkSpeed;
+                                       Offset += sizeof(char);
+                               }
+                               break;
+
+                       case OID_SKGE_SPEED_STATUS:
+                               if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNetMode */
+                                       if (LogPortIndex == 0) {
+
+                                               /* Get value for virtual port */
+                                               VirtualConf(pAC, IoC, Id, pBuf + Offset);
+                                       }
+                                       else {
+                                               /* Get value for physical port */
+                                               PhysPortIndex = SK_PNMI_PORT_LOG2PHYS(
+                                                       pAC, LogPortIndex);
+
+                                               *(pBuf + Offset) = pAC->GIni.GP[
+                                                       PhysPortIndex].PLinkSpeedUsed;
+                                       }
+                                       Offset += sizeof(char);
+                               }
+                               else { /* DualNetMode */
+
+                                       *(pBuf + Offset) = pAC->GIni.GP[NetIndex].PLinkSpeedUsed;
+                                       Offset += sizeof(char);
+                               }
+                               break;
+
+                       case OID_SKGE_MTU:
+                               Val32 = SK_DRIVER_GET_MTU(pAC, IoC, NetIndex);
+                               SK_PNMI_STORE_U32(pBuf + Offset, Val32);
+                               Offset += sizeof(SK_U32);
+                               break;
+
+                       default:
+                               SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_ERR,
+                                       ("MacPrivateConf: Unknown OID should be handled before"));
+
+                               pAC->Pnmi.SirqUpdatedFlag --;
+                               return (SK_PNMI_ERR_GENERAL);
+                       }
+               }
+               *pLen = Offset;
+               pAC->Pnmi.SirqUpdatedFlag --;
+
+               return (SK_PNMI_ERR_OK);
+       }
+
+       /*
+        * From here SET or PRESET action. Check if the passed
+        * buffer length is plausible.
+        */
+       switch (Id) {
+
+       case OID_SKGE_LINK_MODE:
+       case OID_SKGE_FLOWCTRL_MODE:
+       case OID_SKGE_PHY_OPERATION_MODE:
+       case OID_SKGE_SPEED_MODE:
+               if (*pLen < Limit - LogPortIndex) {
+
+                       *pLen = Limit - LogPortIndex;
+                       return (SK_PNMI_ERR_TOO_SHORT);
+               }
+               if (*pLen != Limit - LogPortIndex) {
+
+                       *pLen = 0;
+                       return (SK_PNMI_ERR_BAD_VALUE);
+               }
+               break;
+
+       case OID_SKGE_MTU:
+               if (*pLen < sizeof(SK_U32)) {
+
+                       *pLen = sizeof(SK_U32);
+                       return (SK_PNMI_ERR_TOO_SHORT);
+               }
+               if (*pLen != sizeof(SK_U32)) {
+
+                       *pLen = 0;
+                       return (SK_PNMI_ERR_BAD_VALUE);
+               }
+               break;
+
+    default:
+               *pLen = 0;
+               return (SK_PNMI_ERR_READ_ONLY);
+       }
+
+       /*
+        * Perform preset or set
+        */
+       Offset = 0;
+       for (; LogPortIndex < Limit; LogPortIndex ++) {
+
+               switch (Id) {
+
+               case OID_SKGE_LINK_MODE:
+                       /* Check the value range */
+                       Val8 = *(pBuf + Offset);
+                       if (Val8 == 0) {
+
+                               Offset += sizeof(char);
+                               break;
+                       }
+                       if (Val8 < SK_LMODE_HALF ||
+                               (LogPortIndex != 0 && Val8 > SK_LMODE_AUTOSENSE) ||
+                               (LogPortIndex == 0 && Val8 > SK_LMODE_INDETERMINATED)) {
+
+                               *pLen = 0;
+                               return (SK_PNMI_ERR_BAD_VALUE);
+                       }
+
+                       /* The preset ends here */
+                       if (Action == SK_PNMI_PRESET) {
+
+                               return (SK_PNMI_ERR_OK);
+                       }
+
+                       if (LogPortIndex == 0) {
+
+                               /*
+                                * The virtual port consists of all currently
+                                * active ports. Find them and send an event
+                                * with the new link mode to SIRQ.
+                                */
+                               for (PhysPortIndex = 0;
+                                       PhysPortIndex < PhysPortMax;
+                                       PhysPortIndex ++) {
+
+                                       if (!pAC->Pnmi.Port[PhysPortIndex].
+                                               ActiveFlag) {
+
+                                               continue;
+                                       }
+
+                                       EventParam.Para32[0] = PhysPortIndex;
+                                       EventParam.Para32[1] = (SK_U32)Val8;
+                                       if (SkGeSirqEvent(pAC, IoC,
+                                               SK_HWEV_SET_LMODE,
+                                               EventParam) > 0) {
+
+                                               SK_ERR_LOG(pAC, SK_ERRCL_SW,
+                                                       SK_PNMI_ERR043,
+                                                       SK_PNMI_ERR043MSG);
+
+                                               *pLen = 0;
+                                               return (SK_PNMI_ERR_GENERAL);
+                                       }
+                               }
+                       }
+                       else {
+                               /*
+                                * Send an event with the new link mode to
+                                * the SIRQ module.
+                                */
+                               EventParam.Para32[0] = SK_PNMI_PORT_LOG2PHYS(
+                                       pAC, LogPortIndex);
+                               EventParam.Para32[1] = (SK_U32)Val8;
+                               if (SkGeSirqEvent(pAC, IoC, SK_HWEV_SET_LMODE,
+                                       EventParam) > 0) {
+
+                                       SK_ERR_LOG(pAC, SK_ERRCL_SW,
+                                               SK_PNMI_ERR043,
+                                               SK_PNMI_ERR043MSG);
+
+                                       *pLen = 0;
+                                       return (SK_PNMI_ERR_GENERAL);
+                               }
+                       }
+                       Offset += sizeof(char);
+                       break;
+
+               case OID_SKGE_FLOWCTRL_MODE:
+                       /* Check the value range */
+                       Val8 = *(pBuf + Offset);
+                       if (Val8 == 0) {
+
+                               Offset += sizeof(char);
+                               break;
+                       }
+                       if (Val8 < SK_FLOW_MODE_NONE ||
+                               (LogPortIndex != 0 && Val8 > SK_FLOW_MODE_SYM_OR_REM) ||
+                               (LogPortIndex == 0 && Val8 > SK_FLOW_MODE_INDETERMINATED)) {
+
+                               *pLen = 0;
+                               return (SK_PNMI_ERR_BAD_VALUE);
+                       }
+
+                       /* The preset ends here */
+                       if (Action == SK_PNMI_PRESET) {
+
+                               return (SK_PNMI_ERR_OK);
+                       }
+
+                       if (LogPortIndex == 0) {
+
+                               /*
+                                * The virtual port consists of all currently
+                                * active ports. Find them and send an event
+                                * with the new flow control mode to SIRQ.
+                                */
+                               for (PhysPortIndex = 0;
+                                       PhysPortIndex < PhysPortMax;
+                                       PhysPortIndex ++) {
+
+                                       if (!pAC->Pnmi.Port[PhysPortIndex].
+                                               ActiveFlag) {
+
+                                               continue;
+                                       }
+
+                                       EventParam.Para32[0] = PhysPortIndex;
+                                       EventParam.Para32[1] = (SK_U32)Val8;
+                                       if (SkGeSirqEvent(pAC, IoC,
+                                               SK_HWEV_SET_FLOWMODE,
+                                               EventParam) > 0) {
+
+                                               SK_ERR_LOG(pAC, SK_ERRCL_SW,
+                                                       SK_PNMI_ERR044,
+                                                       SK_PNMI_ERR044MSG);
+
+                                               *pLen = 0;
+                                               return (SK_PNMI_ERR_GENERAL);
+                                       }
+                               }
+                       }
+                       else {
+                               /*
+                                * Send an event with the new flow control
+                                * mode to the SIRQ module.
+                                */
+                               EventParam.Para32[0] = SK_PNMI_PORT_LOG2PHYS(
+                                       pAC, LogPortIndex);
+                               EventParam.Para32[1] = (SK_U32)Val8;
+                               if (SkGeSirqEvent(pAC, IoC,
+                                       SK_HWEV_SET_FLOWMODE, EventParam)
+                                       > 0) {
+
+                                       SK_ERR_LOG(pAC, SK_ERRCL_SW,
+                                               SK_PNMI_ERR044,
+                                               SK_PNMI_ERR044MSG);
+
+                                       *pLen = 0;
+                                       return (SK_PNMI_ERR_GENERAL);
+                               }
+                       }
+                       Offset += sizeof(char);
+                       break;
+
+               case OID_SKGE_PHY_OPERATION_MODE :
+                       /* Check the value range */
+                       Val8 = *(pBuf + Offset);
+                       if (Val8 == 0) {
+                               /* mode of this port remains unchanged */
+                               Offset += sizeof(char);
+                               break;
+                       }
+                       if (Val8 < SK_MS_MODE_AUTO ||
+                               (LogPortIndex != 0 && Val8 > SK_MS_MODE_SLAVE) ||
+                               (LogPortIndex == 0 && Val8 > SK_MS_MODE_INDETERMINATED)) {
+
+                               *pLen = 0;
+                               return (SK_PNMI_ERR_BAD_VALUE);
+                       }
+
+                       /* The preset ends here */
+                       if (Action == SK_PNMI_PRESET) {
+
+                               return (SK_PNMI_ERR_OK);
+                       }
+
+                       if (LogPortIndex == 0) {
+
+                               /*
+                                * The virtual port consists of all currently
+                                * active ports. Find them and send an event
+                                * with new master/slave (role) mode to SIRQ.
+                                */
+                               for (PhysPortIndex = 0;
+                                       PhysPortIndex < PhysPortMax;
+                                       PhysPortIndex ++) {
+
+                                       if (!pAC->Pnmi.Port[PhysPortIndex].
+                                               ActiveFlag) {
+
+                                               continue;
+                                       }
+
+                                       EventParam.Para32[0] = PhysPortIndex;
+                                       EventParam.Para32[1] = (SK_U32)Val8;
+                                       if (SkGeSirqEvent(pAC, IoC,
+                                               SK_HWEV_SET_ROLE,
+                                               EventParam) > 0) {
+
+                                               SK_ERR_LOG(pAC, SK_ERRCL_SW,
+                                                       SK_PNMI_ERR042,
+                                                       SK_PNMI_ERR042MSG);
+
+                                               *pLen = 0;
+                                               return (SK_PNMI_ERR_GENERAL);
+                                       }
+                               }
+                       }
+                       else {
+                               /*
+                                * Send an event with the new master/slave
+                                * (role) mode to the SIRQ module.
+                                */
+                               EventParam.Para32[0] = SK_PNMI_PORT_LOG2PHYS(
+                                       pAC, LogPortIndex);
+                               EventParam.Para32[1] = (SK_U32)Val8;
+                               if (SkGeSirqEvent(pAC, IoC,
+                                       SK_HWEV_SET_ROLE, EventParam) > 0) {
+
+                                       SK_ERR_LOG(pAC, SK_ERRCL_SW,
+                                               SK_PNMI_ERR042,
+                                               SK_PNMI_ERR042MSG);
+
+                                       *pLen = 0;
+                                       return (SK_PNMI_ERR_GENERAL);
+                               }
+                       }
+
+                       Offset += sizeof(char);
+                       break;
+
+               case OID_SKGE_SPEED_MODE:
+                       /* Check the value range */
+                       Val8 = *(pBuf + Offset);
+                       if (Val8 == 0) {
+
+                               Offset += sizeof(char);
+                               break;
+                       }
+                       if (Val8 < (SK_LSPEED_AUTO) ||
+                               (LogPortIndex != 0 && Val8 > (SK_LSPEED_1000MBPS)) ||
+                               (LogPortIndex == 0 && Val8 > (SK_LSPEED_INDETERMINATED))) {
+
+                               *pLen = 0;
+                               return (SK_PNMI_ERR_BAD_VALUE);
+                       }
+
+                       /* The preset ends here */
+                       if (Action == SK_PNMI_PRESET) {
+
+                               return (SK_PNMI_ERR_OK);
+                       }
+
+                       if (LogPortIndex == 0) {
+
+                               /*
+                                * The virtual port consists of all currently
+                                * active ports. Find them and send an event
+                                * with the new flow control mode to SIRQ.
+                                */
+                               for (PhysPortIndex = 0;
+                                       PhysPortIndex < PhysPortMax;
+                                       PhysPortIndex ++) {
+
+                                       if (!pAC->Pnmi.Port[PhysPortIndex].ActiveFlag) {
+
+                                               continue;
+                                       }
+
+                                       EventParam.Para32[0] = PhysPortIndex;
+                                       EventParam.Para32[1] = (SK_U32)Val8;
+                                       if (SkGeSirqEvent(pAC, IoC,
+                                               SK_HWEV_SET_SPEED,
+                                               EventParam) > 0) {
+
+                                               SK_ERR_LOG(pAC, SK_ERRCL_SW,
+                                                       SK_PNMI_ERR045,
+                                                       SK_PNMI_ERR045MSG);
+
+                                               *pLen = 0;
+                                               return (SK_PNMI_ERR_GENERAL);
+                                       }
+                               }
+                       }
+                       else {
+                               /*
+                                * Send an event with the new flow control
+                                * mode to the SIRQ module.
+                                */
+                               EventParam.Para32[0] = SK_PNMI_PORT_LOG2PHYS(
+                                       pAC, LogPortIndex);
+                               EventParam.Para32[1] = (SK_U32)Val8;
+                               if (SkGeSirqEvent(pAC, IoC,
+                                       SK_HWEV_SET_SPEED,
+                                       EventParam) > 0) {
+
+                                       SK_ERR_LOG(pAC, SK_ERRCL_SW,
+                                               SK_PNMI_ERR045,
+                                               SK_PNMI_ERR045MSG);
+
+                                       *pLen = 0;
+                                       return (SK_PNMI_ERR_GENERAL);
+                               }
+                       }
+                       Offset += sizeof(char);
+                       break;
+
+               case OID_SKGE_MTU :
+                       /* Check the value range */
+                       Val32 = *(SK_U32*)(pBuf + Offset);
+                       if (Val32 == 0) {
+                               /* mtu of this port remains unchanged */
+                               Offset += sizeof(SK_U32);
+                               break;
+                       }
+                       if (SK_DRIVER_PRESET_MTU(pAC, IoC, NetIndex, Val32) != 0) {
+                               *pLen = 0;
+                               return (SK_PNMI_ERR_BAD_VALUE);
+                       }
+
+                       /* The preset ends here */
+                       if (Action == SK_PNMI_PRESET) {
+                               return (SK_PNMI_ERR_OK);
+                       }
+
+                       if (SK_DRIVER_SET_MTU(pAC, IoC, NetIndex, Val32) != 0) {
+                               return (SK_PNMI_ERR_GENERAL);
+                       }
+
+                       Offset += sizeof(SK_U32);
+                       break;
+
+               default:
+           SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_ERR,
+               ("MacPrivateConf: Unknown OID should be handled before set"));
+
+                       *pLen = 0;
+                       return (SK_PNMI_ERR_GENERAL);
+               }
+       }
+
+       return (SK_PNMI_ERR_OK);
+}
+
+/*****************************************************************************
+ *
+ * Monitor - OID handler function for RLMT_MONITOR_XXX
+ *
+ * Description:
+ *     Because RLMT currently does not support the monitoring of
+ *     remote adapter cards, we return always an empty table.
+ *
+ * Returns:
+ *     SK_PNMI_ERR_OK           The request was successfully performed.
+ *     SK_PNMI_ERR_GENERAL      A general severe internal error occured.
+ *     SK_PNMI_ERR_TOO_SHORT    The passed buffer is too short to contain
+ *                              the correct data (e.g. a 32bit value is
+ *                              needed, but a 16 bit value was passed).
+ *     SK_PNMI_ERR_BAD_VALUE    The passed value is not in the valid
+ *                              value range.
+ *     SK_PNMI_ERR_READ_ONLY    The OID is read-only and cannot be set.
+ *     SK_PNMI_ERR_UNKNOWN_INST The requested instance of the OID doesn't
+ *                               exist (e.g. port instance 3 on a two port
+ *                              adapter.
+ */
+PNMI_STATIC int Monitor(
+SK_AC *pAC,            /* Pointer to adapter context */
+SK_IOC IoC,            /* IO context handle */
+int Action,            /* Get/PreSet/Set action */
+SK_U32 Id,             /* Object ID that is to be processed */
+char *pBuf,            /* Buffer to which to mgmt data will be retrieved */
+unsigned int *pLen,    /* On call: buffer length. On return: used buffer */
+SK_U32 Instance,       /* Instance (1..n) that is to be queried or -1 */
+unsigned int TableIndex, /* Index to the Id table */
+SK_U32 NetIndex)       /* NetIndex (0..n), in single net mode allways zero */
+{
+       unsigned int    Index;
+       unsigned int    Limit;
+       unsigned int    Offset;
+       unsigned int    Entries;
+
+
+       /*
+        * Calculate instance if wished.
+        */
+/* XXX Not yet implemented. Return always an empty table. */
+       Entries = 0;
+
+       if ((Instance != (SK_U32)(-1))) {
+
+               if ((Instance < 1) || (Instance > Entries)) {
+
+                       *pLen = 0;
+                       return (SK_PNMI_ERR_UNKNOWN_INST);
+               }
+
+               Index = (unsigned int)Instance - 1;
+               Limit = (unsigned int)Instance;
+       }
+       else {
+               Index = 0;
+               Limit = Entries;
+       }
+
+       /*
+        * Get/Set value
+       */
+       if (Action == SK_PNMI_GET) {
+
+               for (Offset=0; Index < Limit; Index ++) {
+
+                       switch (Id) {
+
+                       case OID_SKGE_RLMT_MONITOR_INDEX:
+                       case OID_SKGE_RLMT_MONITOR_ADDR:
+                       case OID_SKGE_RLMT_MONITOR_ERRS:
+                       case OID_SKGE_RLMT_MONITOR_TIMESTAMP:
+                       case OID_SKGE_RLMT_MONITOR_ADMIN:
+                               break;
+
+                       default:
+                               SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR046,
+                                       SK_PNMI_ERR046MSG);
+
+                               *pLen = 0;
+                               return (SK_PNMI_ERR_GENERAL);
+                       }
+               }
+               *pLen = Offset;
+       }
+       else {
+               /* Only MONITOR_ADMIN can be set */
+               if (Id != OID_SKGE_RLMT_MONITOR_ADMIN) {
+
+                       *pLen = 0;
+                       return (SK_PNMI_ERR_READ_ONLY);
+               }
+
+               /* Check if the length is plausible */
+               if (*pLen < (Limit - Index)) {
+
+                       return (SK_PNMI_ERR_TOO_SHORT);
+               }
+               /* Okay, we have a wide value range */
+               if (*pLen != (Limit - Index)) {
+
+                       *pLen = 0;
+                       return (SK_PNMI_ERR_BAD_VALUE);
+               }
+/*
+               for (Offset=0; Index < Limit; Index ++) {
+               }
+*/
+/*
+ * XXX Not yet implemented. Return always BAD_VALUE, because the table
+ * is empty.
+ */
+               *pLen = 0;
+               return (SK_PNMI_ERR_BAD_VALUE);
+       }
+
+       return (SK_PNMI_ERR_OK);
+}
+
+/*****************************************************************************
+ *
+ * VirtualConf - Calculates the values of configuration OIDs for virtual port
+ *
+ * Description:
+ *     We handle here the get of the configuration group OIDs, which are
+ *     a little bit complicated. The virtual port consists of all currently
+ *     active physical ports. If multiple ports are active and configured
+ *     differently we get in some trouble to return a single value. So we
+ *     get the value of the first active port and compare it with that of
+ *     the other active ports. If they are not the same, we return a value
+ *     that indicates that the state is indeterminated.
+ *
+ * Returns:
+ *     Nothing
+ */
+PNMI_STATIC void VirtualConf(
+SK_AC *pAC,            /* Pointer to adapter context */
+SK_IOC IoC,            /* IO context handle */
+SK_U32 Id,             /* Object ID that is to be processed */
+char *pBuf)            /* Buffer to which to mgmt data will be retrieved */
+{
+       unsigned int    PhysPortMax;
+       unsigned int    PhysPortIndex;
+       SK_U8           Val8;
+       SK_BOOL         PortActiveFlag;
+
+
+       *pBuf = 0;
+       PortActiveFlag = SK_FALSE;
+       PhysPortMax = pAC->GIni.GIMacsFound;
+
+       for (PhysPortIndex = 0; PhysPortIndex < PhysPortMax;
+               PhysPortIndex ++) {
+
+               /* Check if the physical port is active */
+               if (!pAC->Pnmi.Port[PhysPortIndex].ActiveFlag) {
+
+                       continue;
+               }
+
+               PortActiveFlag = SK_TRUE;
+
+               switch (Id) {
+
+               case OID_SKGE_LINK_CAP:
+
+                       /*
+                        * Different capabilities should not happen, but
+                        * in the case of the cases OR them all together.
+                        * From a curious point of view the virtual port
+                        * is capable of all found capabilities.
+                        */
+                       *pBuf |= pAC->GIni.GP[PhysPortIndex].PLinkCap;
+                       break;
+
+               case OID_SKGE_LINK_MODE:
+                       /* Check if it is the first active port */
+                       if (*pBuf == 0) {
+
+                               *pBuf = pAC->GIni.GP[PhysPortIndex].PLinkModeConf;
+                               continue;
+                       }
+
+                       /*
+                        * If we find an active port with a different link
+                        * mode than the first one we return a value that
+                        * indicates that the link mode is indeterminated.
+                        */
+                       if (*pBuf != pAC->GIni.GP[PhysPortIndex].PLinkModeConf
+                               ) {
+
+                               *pBuf = SK_LMODE_INDETERMINATED;
+                       }
+                       break;
+
+               case OID_SKGE_LINK_MODE_STATUS:
+                       /* Get the link mode of the physical port */
+                       Val8 = CalculateLinkModeStatus(pAC, IoC, PhysPortIndex);
+
+                       /* Check if it is the first active port */
+                       if (*pBuf == 0) {
+
+                               *pBuf = Val8;
+                               continue;
+                       }
+
+                       /*
+                        * If we find an active port with a different link
+                        * mode status than the first one we return a value
+                        * that indicates that the link mode status is
+                        * indeterminated.
+                        */
+                       if (*pBuf != Val8) {
+
+                               *pBuf = SK_LMODE_STAT_INDETERMINATED;
+                       }
+                       break;
+
+               case OID_SKGE_LINK_STATUS:
+                       /* Get the link status of the physical port */
+                       Val8 = CalculateLinkStatus(pAC, IoC, PhysPortIndex);
+
+                       /* Check if it is the first active port */
+                       if (*pBuf == 0) {
+
+                               *pBuf = Val8;
+                               continue;
+                       }
+
+                       /*
+                        * If we find an active port with a different link
+                        * status than the first one, we return a value
+                        * that indicates that the link status is
+                        * indeterminated.
+                        */
+                       if (*pBuf != Val8) {
+
+                               *pBuf = SK_PNMI_RLMT_LSTAT_INDETERMINATED;
+                       }
+                       break;
+
+               case OID_SKGE_FLOWCTRL_CAP:
+                       /* Check if it is the first active port */
+                       if (*pBuf == 0) {
+
+                               *pBuf = pAC->GIni.GP[PhysPortIndex].PFlowCtrlCap;
+                               continue;
+                       }
+
+                       /*
+                        * From a curious point of view the virtual port
+                        * is capable of all found capabilities.
+                        */
+                       *pBuf |= pAC->GIni.GP[PhysPortIndex].PFlowCtrlCap;
+                       break;
+
+               case OID_SKGE_FLOWCTRL_MODE:
+                       /* Check if it is the first active port */
+                       if (*pBuf == 0) {
+
+                               *pBuf = pAC->GIni.GP[PhysPortIndex].PFlowCtrlMode;
+                               continue;
+                       }
+
+                       /*
+                        * If we find an active port with a different flow
+                        * control mode than the first one, we return a value
+                        * that indicates that the mode is indeterminated.
+                        */
+                       if (*pBuf != pAC->GIni.GP[PhysPortIndex].PFlowCtrlMode) {
+
+                               *pBuf = SK_FLOW_MODE_INDETERMINATED;
+                       }
+                       break;
+
+               case OID_SKGE_FLOWCTRL_STATUS:
+                       /* Check if it is the first active port */
+                       if (*pBuf == 0) {
+
+                               *pBuf = pAC->GIni.GP[PhysPortIndex].PFlowCtrlStatus;
+                               continue;
+                       }
+
+                       /*
+                        * If we find an active port with a different flow
+                        * control status than the first one, we return a
+                        * value that indicates that the status is
+                        * indeterminated.
+                        */
+                       if (*pBuf != pAC->GIni.GP[PhysPortIndex].PFlowCtrlStatus) {
+
+                               *pBuf = SK_FLOW_STAT_INDETERMINATED;
+                       }
+                       break;
+
+               case OID_SKGE_PHY_OPERATION_CAP:
+                       /* Check if it is the first active port */
+                       if (*pBuf == 0) {
+
+                               *pBuf = pAC->GIni.GP[PhysPortIndex].PMSCap;
+                               continue;
+                       }
+
+                       /*
+                        * From a curious point of view the virtual port
+                        * is capable of all found capabilities.
+                        */
+                       *pBuf |= pAC->GIni.GP[PhysPortIndex].PMSCap;
+                       break;
+
+               case OID_SKGE_PHY_OPERATION_MODE:
+                       /* Check if it is the first active port */
+                       if (*pBuf == 0) {
+
+                               *pBuf = pAC->GIni.GP[PhysPortIndex].PMSMode;
+                               continue;
+                       }
+
+                       /*
+                        * If we find an active port with a different master/
+                        * slave mode than the first one, we return a value
+                        * that indicates that the mode is indeterminated.
+                        */
+                       if (*pBuf != pAC->GIni.GP[PhysPortIndex].PMSMode) {
+
+                               *pBuf = SK_MS_MODE_INDETERMINATED;
+                       }
+                       break;
+
+               case OID_SKGE_PHY_OPERATION_STATUS:
+                       /* Check if it is the first active port */
+                       if (*pBuf == 0) {
+
+                               *pBuf = pAC->GIni.GP[PhysPortIndex].PMSStatus;
+                               continue;
+                       }
+
+                       /*
+                        * If we find an active port with a different master/
+                        * slave status than the first one, we return a
+                        * value that indicates that the status is
+                        * indeterminated.
+                        */
+                       if (*pBuf != pAC->GIni.GP[PhysPortIndex].PMSStatus) {
+
+                               *pBuf = SK_MS_STAT_INDETERMINATED;
+                       }
+                       break;
+
+               case OID_SKGE_SPEED_MODE:
+                       /* Check if it is the first active port */
+                       if (*pBuf == 0) {
+
+                               *pBuf = pAC->GIni.GP[PhysPortIndex].PLinkSpeed;
+                               continue;
+                       }
+
+                       /*
+                        * If we find an active port with a different flow
+                        * control mode than the first one, we return a value
+                        * that indicates that the mode is indeterminated.
+                        */
+                       if (*pBuf != pAC->GIni.GP[PhysPortIndex].PLinkSpeed) {
+
+                               *pBuf = SK_LSPEED_INDETERMINATED;
+                       }
+                       break;
+
+               case OID_SKGE_SPEED_STATUS:
+                       /* Check if it is the first active port */
+                       if (*pBuf == 0) {
+
+                               *pBuf = pAC->GIni.GP[PhysPortIndex].PLinkSpeedUsed;
+                               continue;
+                       }
+
+                       /*
+                        * If we find an active port with a different flow
+                        * control status than the first one, we return a
+                        * value that indicates that the status is
+                        * indeterminated.
+                        */
+                       if (*pBuf != pAC->GIni.GP[PhysPortIndex].PLinkSpeedUsed) {
+
+                               *pBuf = SK_LSPEED_STAT_INDETERMINATED;
+                       }
+                       break;
+               }
+       }
+
+       /*
+        * If no port is active return an indeterminated answer
+        */
+       if (!PortActiveFlag) {
+
+               switch (Id) {
+
+               case OID_SKGE_LINK_CAP:
+                       *pBuf = SK_LMODE_CAP_INDETERMINATED;
+                       break;
+
+               case OID_SKGE_LINK_MODE:
+                       *pBuf = SK_LMODE_INDETERMINATED;
+                       break;
+
+               case OID_SKGE_LINK_MODE_STATUS:
+                       *pBuf = SK_LMODE_STAT_INDETERMINATED;
+                       break;
+
+               case OID_SKGE_LINK_STATUS:
+                       *pBuf = SK_PNMI_RLMT_LSTAT_INDETERMINATED;
+                       break;
+
+               case OID_SKGE_FLOWCTRL_CAP:
+               case OID_SKGE_FLOWCTRL_MODE:
+                       *pBuf = SK_FLOW_MODE_INDETERMINATED;
+                       break;
+
+               case OID_SKGE_FLOWCTRL_STATUS:
+                       *pBuf = SK_FLOW_STAT_INDETERMINATED;
+                       break;
+
+               case OID_SKGE_PHY_OPERATION_CAP:
+                       *pBuf = SK_MS_CAP_INDETERMINATED;
+                       break;
+
+               case OID_SKGE_PHY_OPERATION_MODE:
+                       *pBuf = SK_MS_MODE_INDETERMINATED;
+                       break;
+
+               case OID_SKGE_PHY_OPERATION_STATUS:
+                       *pBuf = SK_MS_STAT_INDETERMINATED;
+                       break;
+               case OID_SKGE_SPEED_CAP:
+                       *pBuf = SK_LSPEED_CAP_INDETERMINATED;
+                       break;
+
+               case OID_SKGE_SPEED_MODE:
+                       *pBuf = SK_LSPEED_INDETERMINATED;
+                       break;
+
+               case OID_SKGE_SPEED_STATUS:
+                       *pBuf = SK_LSPEED_STAT_INDETERMINATED;
+                       break;
+               }
+       }
+}
+
+/*****************************************************************************
+ *
+ * CalculateLinkStatus - Determins the link status of a physical port
+ *
+ * Description:
+ *     Determins the link status the following way:
+ *       LSTAT_PHY_DOWN:  Link is down
+ *       LSTAT_AUTONEG:   Auto-negotiation failed
+ *       LSTAT_LOG_DOWN:  Link is up but RLMT did not yet put the port
+ *                        logically up.
+ *       LSTAT_LOG_UP:    RLMT marked the port as up
+ *
+ * Returns:
+ *     Link status of physical port
+ */
+PNMI_STATIC SK_U8 CalculateLinkStatus(
+SK_AC *pAC,                    /* Pointer to adapter context */
+SK_IOC IoC,                    /* IO context handle */
+unsigned int PhysPortIndex)    /* Physical port index */
+{
+       SK_U8   Result;
+
+
+       if (!pAC->GIni.GP[PhysPortIndex].PHWLinkUp) {
+
+               Result = SK_PNMI_RLMT_LSTAT_PHY_DOWN;
+       }
+       else if (pAC->GIni.GP[PhysPortIndex].PAutoNegFail > 0) {
+
+               Result = SK_PNMI_RLMT_LSTAT_AUTONEG;
+                               }
+       else if (!pAC->Rlmt.Port[PhysPortIndex].PortDown) {
+
+               Result = SK_PNMI_RLMT_LSTAT_LOG_UP;
+       }
+       else {
+               Result = SK_PNMI_RLMT_LSTAT_LOG_DOWN;
+       }
+
+       return (Result);
+}
+
+/*****************************************************************************
+ *
+ * CalculateLinkModeStatus - Determins the link mode status of a phys. port
+ *
+ * Description:
+ *     The COMMON module only tells us if the mode is half or full duplex.
+ *     But in the decade of auto sensing it is usefull for the user to
+ *     know if the mode was negotiated or forced. Therefore we have a
+ *     look to the mode, which was last used by the negotiation process.
+ *
+ * Returns:
+ *     The link mode status
+ */
+PNMI_STATIC SK_U8 CalculateLinkModeStatus(
+SK_AC *pAC,                    /* Pointer to adapter context */
+SK_IOC IoC,                    /* IO context handle */
+unsigned int PhysPortIndex)    /* Physical port index */
+{
+       SK_U8   Result;
+
+
+       /* Get the current mode, which can be full or half duplex */
+       Result = pAC->GIni.GP[PhysPortIndex].PLinkModeStatus;
+
+       /* Check if no valid mode could be found (link is down) */
+       if (Result < SK_LMODE_STAT_HALF) {
+
+               Result = SK_LMODE_STAT_UNKNOWN;
+       }
+       else if (pAC->GIni.GP[PhysPortIndex].PLinkMode >= SK_LMODE_AUTOHALF) {
+
+               /*
+                * Auto-negotiation was used to bring up the link. Change
+                * the already found duplex status that it indicates
+                * auto-negotiation was involved.
+                */
+               if (Result == SK_LMODE_STAT_HALF) {
+
+                       Result = SK_LMODE_STAT_AUTOHALF;
+               }
+               else if (Result == SK_LMODE_STAT_FULL) {
+
+                       Result = SK_LMODE_STAT_AUTOFULL;
+               }
+       }
+
+       return (Result);
+}
+
+/*****************************************************************************
+ *
+ * GetVpdKeyArr - Obtain an array of VPD keys
+ *
+ * Description:
+ *     Read the VPD keys and build an array of VPD keys, which are
+ *     easy to access.
+ *
+ * Returns:
+ *     SK_PNMI_ERR_OK       Task successfully performed.
+ *     SK_PNMI_ERR_GENERAL  Something went wrong.
+ */
+PNMI_STATIC int GetVpdKeyArr(
+SK_AC *pAC,            /* Pointer to adapter context */
+SK_IOC IoC,            /* IO context handle */
+char *pKeyArr,         /* Ptr KeyArray */
+unsigned int KeyArrLen,        /* Length of array in bytes */
+unsigned int *pKeyNo)  /* Number of keys */
+{
+       unsigned int            BufKeysLen = SK_PNMI_VPD_BUFSIZE;
+       char                    BufKeys[SK_PNMI_VPD_BUFSIZE];
+       unsigned int            StartOffset;
+       unsigned int            Offset;
+       int                     Index;
+       int                     Ret;
+
+
+       SK_MEMSET(pKeyArr, 0, KeyArrLen);
+
+       /*
+        * Get VPD key list
+        */
+       Ret = VpdKeys(pAC, IoC, (char *)&BufKeys, (int *)&BufKeysLen,
+               (int *)pKeyNo);
+       if (Ret > 0) {
+
+               SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR014,
+                       SK_PNMI_ERR014MSG);
+
+               return (SK_PNMI_ERR_GENERAL);
+       }
+       /* If no keys are available return now */
+       if (*pKeyNo == 0 || BufKeysLen == 0) {
+
+               return (SK_PNMI_ERR_OK);
+       }
+       /*
+        * If the key list is too long for us trunc it and give a
+        * errorlog notification. This case should not happen because
+        * the maximum number of keys is limited due to RAM limitations
+        */
+       if (*pKeyNo > SK_PNMI_VPD_ENTRIES) {
+
+               SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR015,
+                       SK_PNMI_ERR015MSG);
+
+               *pKeyNo = SK_PNMI_VPD_ENTRIES;
+       }
+
+       /*
+        * Now build an array of fixed string length size and copy
+        * the keys together.
+        */
+       for (Index = 0, StartOffset = 0, Offset = 0; Offset < BufKeysLen;
+               Offset ++) {
+
+               if (BufKeys[Offset] != 0) {
+
+                       continue;
+               }
+
+               if (Offset - StartOffset > SK_PNMI_VPD_KEY_SIZE) {
+
+                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR016,
+                               SK_PNMI_ERR016MSG);
+                       return (SK_PNMI_ERR_GENERAL);
+               }
+
+               SK_STRNCPY(pKeyArr + Index * SK_PNMI_VPD_KEY_SIZE,
+                       &BufKeys[StartOffset], SK_PNMI_VPD_KEY_SIZE);
+
+               Index ++;
+               StartOffset = Offset + 1;
+       }
+
+       /* Last key not zero terminated? Get it anyway */
+       if (StartOffset < Offset) {
+
+               SK_STRNCPY(pKeyArr + Index * SK_PNMI_VPD_KEY_SIZE,
+                       &BufKeys[StartOffset], SK_PNMI_VPD_KEY_SIZE);
+       }
+
+       return (SK_PNMI_ERR_OK);
+}
+
+/*****************************************************************************
+ *
+ * SirqUpdate - Let the SIRQ update its internal values
+ *
+ * Description:
+ *     Just to be sure that the SIRQ module holds its internal data
+ *     structures up to date, we send an update event before we make
+ *     any access.
+ *
+ * Returns:
+ *     SK_PNMI_ERR_OK       Task successfully performed.
+ *     SK_PNMI_ERR_GENERAL  Something went wrong.
+ */
+PNMI_STATIC int SirqUpdate(
+SK_AC *pAC,    /* Pointer to adapter context */
+SK_IOC IoC)    /* IO context handle */
+{
+       SK_EVPARA       EventParam;
+
+
+       /* Was the module already updated during the current PNMI call? */
+       if (pAC->Pnmi.SirqUpdatedFlag > 0) {
+
+               return (SK_PNMI_ERR_OK);
+       }
+
+       /* Send an synchronuous update event to the module */
+       SK_MEMSET((char *)&EventParam, 0, sizeof(EventParam));
+       if (SkGeSirqEvent(pAC, IoC, SK_HWEV_UPDATE_STAT, EventParam) > 0) {
+
+               SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR047,
+                       SK_PNMI_ERR047MSG);
+
+               return (SK_PNMI_ERR_GENERAL);
+       }
+
+       return (SK_PNMI_ERR_OK);
+}
+
+/*****************************************************************************
+ *
+ * RlmtUpdate - Let the RLMT update its internal values
+ *
+ * Description:
+ *     Just to be sure that the RLMT module holds its internal data
+ *     structures up to date, we send an update event before we make
+ *     any access.
+ *
+ * Returns:
+ *     SK_PNMI_ERR_OK       Task successfully performed.
+ *     SK_PNMI_ERR_GENERAL  Something went wrong.
+ */
+PNMI_STATIC int RlmtUpdate(
+SK_AC *pAC,    /* Pointer to adapter context */
+SK_IOC IoC,    /* IO context handle */
+SK_U32 NetIndex)       /* NetIndex (0..n), in single net mode allways zero */
+{
+       SK_EVPARA       EventParam;
+
+
+       /* Was the module already updated during the current PNMI call? */
+       if (pAC->Pnmi.RlmtUpdatedFlag > 0) {
+
+               return (SK_PNMI_ERR_OK);
+       }
+
+       /* Send an synchronuous update event to the module */
+       SK_MEMSET((char *)&EventParam, 0, sizeof(EventParam));
+       EventParam.Para32[0] = NetIndex;
+       EventParam.Para32[1] = (SK_U32)-1;
+       if (SkRlmtEvent(pAC, IoC, SK_RLMT_STATS_UPDATE, EventParam) > 0) {
+
+               SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR048,
+                       SK_PNMI_ERR048MSG);
+
+               return (SK_PNMI_ERR_GENERAL);
+       }
+
+       return (SK_PNMI_ERR_OK);
+}
+
+/*****************************************************************************
+ *
+ * MacUpdate - Force the XMAC to output the current statistic
+ *
+ * Description:
+ *     The XMAC holds its statistic internally. To obtain the current
+ *     values we send a command so that the statistic data will
+ *     be written to apredefined memory area on the adapter.
+ *
+ * Returns:
+ *     SK_PNMI_ERR_OK       Task successfully performed.
+ *     SK_PNMI_ERR_GENERAL  Something went wrong.
+ */
+PNMI_STATIC int MacUpdate(
+SK_AC *pAC,            /* Pointer to adapter context */
+SK_IOC IoC,            /* IO context handle */
+unsigned int FirstMac, /* Index of the first Mac to be updated */
+unsigned int LastMac)  /* Index of the last Mac to be updated */
+{
+       unsigned int    MacIndex;
+
+       /*
+        * Were the statistics already updated during the
+        * current PNMI call?
+        */
+       if (pAC->Pnmi.MacUpdatedFlag > 0) {
+
+               return (SK_PNMI_ERR_OK);
+       }
+
+       /* Send an update command to all MACs specified */
+       for (MacIndex = FirstMac; MacIndex <= LastMac; MacIndex ++) {
+
+               /*
+                * 2002-09-13 pweber:   Freeze the current sw counters.
+                *                      (That should be done as close as
+                *                      possible to the update of the
+                *                      hw counters)
+                */
+               if (pAC->GIni.GIMacType == SK_MAC_XMAC) {
+                       pAC->Pnmi.BufPort[MacIndex] = pAC->Pnmi.Port[MacIndex];
+               }
+
+               /* 2002-09-13 pweber:  Update the hw counter  */
+               if (pAC->GIni.GIFunc.pFnMacUpdateStats(pAC, IoC, MacIndex) != 0) {
+
+                       return (SK_PNMI_ERR_GENERAL);
+               }
+       }
+
+       return (SK_PNMI_ERR_OK);
+}
+
+/*****************************************************************************
+ *
+ * GetStatVal - Retrieve an XMAC statistic counter
+ *
+ * Description:
+ *     Retrieves the statistic counter of a virtual or physical port. The
+ *     virtual port is identified by the index 0. It consists of all
+ *     currently active ports. To obtain the counter value for this port
+ *     we must add the statistic counter of all active ports. To grant
+ *     continuous counter values for the virtual port even when port
+ *     switches occur we must additionally add a delta value, which was
+ *     calculated during a SK_PNMI_EVT_RLMT_ACTIVE_UP event.
+ *
+ * Returns:
+ *     Requested statistic value
+ */
+PNMI_STATIC SK_U64 GetStatVal(
+SK_AC *pAC,                                    /* Pointer to adapter context */
+SK_IOC IoC,                                    /* IO context handle */
+unsigned int LogPortIndex,     /* Index of the logical Port to be processed */
+unsigned int StatIndex,                /* Index to statistic value */
+SK_U32 NetIndex)       /* NetIndex (0..n), in single net mode allways zero */
+{
+       unsigned int    PhysPortIndex;
+       unsigned int    PhysPortMax;
+       SK_U64                  Val = 0;
+
+
+       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {   /* Dual net mode */
+
+               PhysPortIndex = NetIndex;
+               Val = GetPhysStatVal(pAC, IoC, PhysPortIndex, StatIndex);
+       }
+       else {  /* Single Net mode */
+
+               if (LogPortIndex == 0) {
+
+                       PhysPortMax = pAC->GIni.GIMacsFound;
+
+                       /* Add counter of all active ports */
+                       for (PhysPortIndex = 0; PhysPortIndex < PhysPortMax;
+                               PhysPortIndex ++) {
+
+                               if (pAC->Pnmi.Port[PhysPortIndex].ActiveFlag) {
+
+                                       Val += GetPhysStatVal(pAC, IoC, PhysPortIndex,
+                                               StatIndex);
+                               }
+                       }
+
+                       /* Correct value because of port switches */
+                       Val += pAC->Pnmi.VirtualCounterOffset[StatIndex];
+               }
+               else {
+                       /* Get counter value of physical port */
+                       PhysPortIndex = SK_PNMI_PORT_LOG2PHYS(pAC, LogPortIndex);
+                       Val = GetPhysStatVal(pAC, IoC, PhysPortIndex, StatIndex);
+               }
+       }
+       return (Val);
+}
+
+/*****************************************************************************
+ *
+ * GetPhysStatVal - Get counter value for physical port
+ *
+ * Description:
+ *     Builds a 64bit counter value. Except for the octet counters
+ *     the lower 32bit are counted in hardware and the upper 32bit
+ *     in software by monitoring counter overflow interrupts in the
+ *     event handler. To grant continous counter values during XMAC
+ *     resets (caused by a workaround) we must add a delta value.
+ *     The delta was calculated in the event handler when a
+ *     SK_PNMI_EVT_XMAC_RESET was received.
+ *
+ * Returns:
+ *     Counter value
+ */
+PNMI_STATIC SK_U64 GetPhysStatVal(
+SK_AC *pAC,                                    /* Pointer to adapter context */
+SK_IOC IoC,                                    /* IO context handle */
+unsigned int PhysPortIndex,    /* Index of the logical Port to be processed */
+unsigned int StatIndex)                /* Index to statistic value */
+{
+       SK_U64  Val = 0;
+       SK_U32  LowVal = 0;
+       SK_U32  HighVal = 0;
+       SK_U16  Word;
+       int             MacType;
+
+       SK_PNMI_PORT    *pPnmiPrt;
+       SK_GEMACFUNC    *pFnMac;
+
+       MacType = pAC->GIni.GIMacType;
+
+       /* 2002-09-17 pweber: For XMAC, use the frozen sw counters (BufPort) */
+       if (pAC->GIni.GIMacType == SK_MAC_XMAC) {
+               pPnmiPrt = &pAC->Pnmi.BufPort[PhysPortIndex];
+       }
+       else {
+               pPnmiPrt = &pAC->Pnmi.Port[PhysPortIndex];
+       }
+
+       pFnMac   = &pAC->GIni.GIFunc;
+
+       switch (StatIndex) {
+       case SK_PNMI_HTX:
+       case SK_PNMI_HRX:
+               /* Not supported by GMAC */
+               if (MacType == SK_MAC_GMAC) {
+                       return (Val);
+               }
+
+               (void)pFnMac->pFnMacStatistic(pAC, IoC, PhysPortIndex,
+                                                                         StatAddr[StatIndex][MacType].Reg,
+                                                                         &LowVal);
+               HighVal = pPnmiPrt->CounterHigh[StatIndex];
+               break;
+
+       case SK_PNMI_HTX_OCTET:
+       case SK_PNMI_HRX_OCTET:
+               (void)pFnMac->pFnMacStatistic(pAC, IoC, PhysPortIndex,
+                                                                         StatAddr[StatIndex][MacType].Reg,
+                                                                         &HighVal);
+               (void)pFnMac->pFnMacStatistic(pAC, IoC, PhysPortIndex,
+                                                                         StatAddr[StatIndex + 1][MacType].Reg,
+                                                                         &LowVal);
+               break;
+
+       case SK_PNMI_HTX_BURST:
+       case SK_PNMI_HTX_EXCESS_DEF:
+       case SK_PNMI_HTX_CARRIER:
+               /* Not supported by GMAC */
+               if (MacType == SK_MAC_GMAC) {
+                       return (Val);
+               }
+
+               (void)pFnMac->pFnMacStatistic(pAC, IoC, PhysPortIndex,
+                                                                         StatAddr[StatIndex][MacType].Reg,
+                                                                         &LowVal);
+               HighVal = pPnmiPrt->CounterHigh[StatIndex];
+               break;
+
+       case SK_PNMI_HTX_MACC:
+               /* GMAC only supports PAUSE MAC control frames */
+               if (MacType == SK_MAC_GMAC) {
+                       Val = GetPhysStatVal(pAC, IoC, PhysPortIndex, SK_PNMI_HTX_PMACC);
+
+                       return (Val);
+               }
+
+               (void)pFnMac->pFnMacStatistic(pAC, IoC, PhysPortIndex,
+                                                                         StatAddr[StatIndex][MacType].Reg,
+                                                                         &LowVal);
+               HighVal = pPnmiPrt->CounterHigh[StatIndex];
+               break;
+
+       case SK_PNMI_HTX_COL:
+       case SK_PNMI_HRX_UNDERSIZE:
+               /* Not supported by XMAC */
+               if (MacType == SK_MAC_XMAC) {
+                       return (Val);
+               }
+
+               (void)pFnMac->pFnMacStatistic(pAC, IoC, PhysPortIndex,
+                                                                         StatAddr[StatIndex][MacType].Reg,
+                                                                         &LowVal);
+               HighVal = pPnmiPrt->CounterHigh[StatIndex];
+               break;
+
+
+       case SK_PNMI_HTX_DEFFERAL:
+               /* Not supported by GMAC */
+               if (MacType == SK_MAC_GMAC) {
+                       return (Val);
+               }
+
+               /*
+                * XMAC counts frames with deferred transmission
+                * even in full-duplex mode.
+                *
+                * In full-duplex mode the counter remains constant!
+                */
+               if ((pAC->GIni.GP[PhysPortIndex].PLinkModeStatus == SK_LMODE_STAT_AUTOFULL) ||
+                       (pAC->GIni.GP[PhysPortIndex].PLinkModeStatus == SK_LMODE_STAT_FULL)) {
+
+                       LowVal = 0;
+                       HighVal = 0;
+               }
+               else {
+                       /* Otherwise get contents of hardware register. */
+                       (void)pFnMac->pFnMacStatistic(pAC, IoC, PhysPortIndex,
+                                                                                 StatAddr[SK_PNMI_HTX_DEFFERAL][MacType].Reg,
+                                                                                 &LowVal);
+                       HighVal = pPnmiPrt->CounterHigh[StatIndex];
+               }
+               break;
+
+       case SK_PNMI_HRX_BADOCTET:
+               /* Not supported by XMAC */
+               if (MacType == SK_MAC_XMAC) {
+                       return (Val);
+               }
+
+               (void)pFnMac->pFnMacStatistic(pAC, IoC, PhysPortIndex,
+                                                                         StatAddr[StatIndex][MacType].Reg,
+                                                                         &HighVal);
+               (void)pFnMac->pFnMacStatistic(pAC, IoC, PhysPortIndex,
+                                                                         StatAddr[StatIndex + 1][MacType].Reg,
+                                     &LowVal);
+               break;
+
+       case SK_PNMI_HTX_OCTETLOW:
+       case SK_PNMI_HRX_OCTETLOW:
+       case SK_PNMI_HRX_BADOCTETLOW:
+               return (Val);
+
+       case SK_PNMI_HRX_LONGFRAMES:
+               /* For XMAC the SW counter is managed by PNMI */
+               if (MacType == SK_MAC_XMAC) {
+                       return (pPnmiPrt->StatRxLongFrameCts);
+               }
+
+               (void)pFnMac->pFnMacStatistic(pAC, IoC, PhysPortIndex,
+                                                                         StatAddr[StatIndex][MacType].Reg,
+                                                                         &LowVal);
+               HighVal = pPnmiPrt->CounterHigh[StatIndex];
+               break;
+
+       case SK_PNMI_HRX_TOO_LONG:
+               (void)pFnMac->pFnMacStatistic(pAC, IoC, PhysPortIndex,
+                                               StatAddr[StatIndex][MacType].Reg,
+                                                               &LowVal);
+               HighVal = pPnmiPrt->CounterHigh[StatIndex];
+
+               Val = (((SK_U64)HighVal << 32) | (SK_U64)LowVal);
+
+               switch (MacType) {
+               case SK_MAC_GMAC:
+                       /* For GMAC the SW counter is additionally managed by PNMI */
+                       Val += pPnmiPrt->StatRxFrameTooLongCts;
+                       break;
+
+               case SK_MAC_XMAC:
+                       /*
+                        * Frames longer than IEEE 802.3 frame max size are counted
+                        * by XMAC in frame_too_long counter even reception of long
+                        * frames was enabled and the frame was correct.
+                        * So correct the value by subtracting RxLongFrame counter.
+                        */
+                       Val -= pPnmiPrt->StatRxLongFrameCts;
+                       break;
+
+               default:
+                       break;
+               }
+
+               LowVal = (SK_U32)Val;
+               HighVal = (SK_U32)(Val >> 32);
+               break;
+
+       case SK_PNMI_HRX_SHORTS:
+               /* Not supported by GMAC */
+               if (MacType == SK_MAC_GMAC) {
+                       /* GM_RXE_FRAG?? */
+                       return (Val);
+               }
+
+               /*
+                * XMAC counts short frame errors even if link down (#10620)
+                *
+                * If link-down the counter remains constant
+                */
+               if (pAC->GIni.GP[PhysPortIndex].PLinkModeStatus != SK_LMODE_STAT_UNKNOWN) {
+
+                       /* Otherwise get incremental difference */
+                       (void)pFnMac->pFnMacStatistic(pAC, IoC, PhysPortIndex,
+                                                                                 StatAddr[StatIndex][MacType].Reg,
+                                                                                 &LowVal);
+                       HighVal = pPnmiPrt->CounterHigh[StatIndex];
+
+                       Val = (((SK_U64)HighVal << 32) | (SK_U64)LowVal);
+                       Val -= pPnmiPrt->RxShortZeroMark;
+
+                       LowVal = (SK_U32)Val;
+                       HighVal = (SK_U32)(Val >> 32);
+               }
+               break;
+
+       case SK_PNMI_HRX_MACC:
+       case SK_PNMI_HRX_MACC_UNKWN:
+       case SK_PNMI_HRX_BURST:
+       case SK_PNMI_HRX_MISSED:
+       case SK_PNMI_HRX_FRAMING:
+       case SK_PNMI_HRX_CARRIER:
+       case SK_PNMI_HRX_IRLENGTH:
+       case SK_PNMI_HRX_SYMBOL:
+       case SK_PNMI_HRX_CEXT:
+               /* Not supported by GMAC */
+               if (MacType == SK_MAC_GMAC) {
+                       /* GM_RXE_FRAG?? */
+                       return (Val);
+               }
+
+               (void)pFnMac->pFnMacStatistic(pAC, IoC, PhysPortIndex,
+                                                                         StatAddr[StatIndex][MacType].Reg,
+                                                                         &LowVal);
+               HighVal = pPnmiPrt->CounterHigh[StatIndex];
+               break;
+
+       case SK_PNMI_HRX_PMACC_ERR:
+               /* For GMAC the SW counter is managed by PNMI */
+               if (MacType == SK_MAC_GMAC) {
+                       return (pPnmiPrt->StatRxPMaccErr);
+               }
+
+               (void)pFnMac->pFnMacStatistic(pAC, IoC, PhysPortIndex,
+                                                                         StatAddr[StatIndex][MacType].Reg,
+                                                                         &LowVal);
+               HighVal = pPnmiPrt->CounterHigh[StatIndex];
+               break;
+
+       /* SW counter managed by PNMI */
+       case SK_PNMI_HTX_SYNC:
+               LowVal = (SK_U32)pPnmiPrt->StatSyncCts;
+               HighVal = (SK_U32)(pPnmiPrt->StatSyncCts >> 32);
+               break;
+
+       /* SW counter managed by PNMI */
+       case SK_PNMI_HTX_SYNC_OCTET:
+               LowVal = (SK_U32)pPnmiPrt->StatSyncOctetsCts;
+               HighVal = (SK_U32)(pPnmiPrt->StatSyncOctetsCts >> 32);
+               break;
+
+       case SK_PNMI_HRX_FCS:
+               /*
+                * Broadcom filters fcs errors and counts it in
+                * Receive Error Counter register
+                */
+               if (pAC->GIni.GP[PhysPortIndex].PhyType == SK_PHY_BCOM) {
+                       /* do not read while not initialized (PHY_READ hangs!)*/
+                       if (pAC->GIni.GP[PhysPortIndex].PState) {
+                               PHY_READ(IoC, &pAC->GIni.GP[PhysPortIndex],
+                                                PhysPortIndex, PHY_BCOM_RE_CTR,
+                                                &Word);
+
+                               LowVal = Word;
+                       }
+                       HighVal = pPnmiPrt->CounterHigh[StatIndex];
+               }
+               else {
+                       (void)pFnMac->pFnMacStatistic(pAC, IoC, PhysPortIndex,
+                                                                                 StatAddr[StatIndex][MacType].Reg,
+                                                                                 &LowVal);
+                       HighVal = pPnmiPrt->CounterHigh[StatIndex];
+               }
+               break;
+
+       default:
+               (void)pFnMac->pFnMacStatistic(pAC, IoC, PhysPortIndex,
+                                                                         StatAddr[StatIndex][MacType].Reg,
+                                                                         &LowVal);
+               HighVal = pPnmiPrt->CounterHigh[StatIndex];
+               break;
+       }
+
+       Val = (((SK_U64)HighVal << 32) | (SK_U64)LowVal);
+
+       /* Correct value because of possible XMAC reset. XMAC Errata #2 */
+       Val += pPnmiPrt->CounterOffset[StatIndex];
+
+       return (Val);
+}
+
+/*****************************************************************************
+ *
+ * ResetCounter - Set all counters and timestamps to zero
+ *
+ * Description:
+ *     Notifies other common modules which store statistic data to
+ *     reset their counters and finally reset our own counters.
+ *
+ * Returns:
+ *     Nothing
+ */
+PNMI_STATIC void ResetCounter(
+SK_AC *pAC,            /* Pointer to adapter context */
+SK_IOC IoC,            /* IO context handle */
+SK_U32 NetIndex)
+{
+       unsigned int    PhysPortIndex;
+       SK_EVPARA       EventParam;
+
+
+       SK_MEMSET((char *)&EventParam, 0, sizeof(EventParam));
+
+       /* Notify sensor module */
+       SkEventQueue(pAC, SKGE_I2C, SK_I2CEV_CLEAR, EventParam);
+
+       /* Notify RLMT module */
+       EventParam.Para32[0] = NetIndex;
+       EventParam.Para32[1] = (SK_U32)-1;
+       SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_STATS_CLEAR, EventParam);
+       EventParam.Para32[1] = 0;
+
+       /* Notify SIRQ module */
+       SkEventQueue(pAC, SKGE_HWAC, SK_HWEV_CLEAR_STAT, EventParam);
+
+       /* Notify CSUM module */
+#ifdef SK_USE_CSUM
+       EventParam.Para32[0] = NetIndex;
+       EventParam.Para32[1] = (SK_U32)-1;
+       SkEventQueue(pAC, SKGE_CSUM, SK_CSUM_EVENT_CLEAR_PROTO_STATS,
+               EventParam);
+#endif
+
+       /* Clear XMAC statistic */
+       for (PhysPortIndex = 0; PhysPortIndex <
+               (unsigned int)pAC->GIni.GIMacsFound; PhysPortIndex ++) {
+
+               (void)pAC->GIni.GIFunc.pFnMacResetCounter(pAC, IoC, PhysPortIndex);
+
+               SK_MEMSET((char *)&pAC->Pnmi.Port[PhysPortIndex].CounterHigh,
+                       0, sizeof(pAC->Pnmi.Port[PhysPortIndex].CounterHigh));
+               SK_MEMSET((char *)&pAC->Pnmi.Port[PhysPortIndex].
+                       CounterOffset, 0, sizeof(pAC->Pnmi.Port[
+                       PhysPortIndex].CounterOffset));
+               SK_MEMSET((char *)&pAC->Pnmi.Port[PhysPortIndex].StatSyncCts,
+                       0, sizeof(pAC->Pnmi.Port[PhysPortIndex].StatSyncCts));
+               SK_MEMSET((char *)&pAC->Pnmi.Port[PhysPortIndex].
+                       StatSyncOctetsCts, 0, sizeof(pAC->Pnmi.Port[
+                       PhysPortIndex].StatSyncOctetsCts));
+               SK_MEMSET((char *)&pAC->Pnmi.Port[PhysPortIndex].
+                       StatRxLongFrameCts, 0, sizeof(pAC->Pnmi.Port[
+                       PhysPortIndex].StatRxLongFrameCts));
+               SK_MEMSET((char *)&pAC->Pnmi.Port[PhysPortIndex].
+                                 StatRxFrameTooLongCts, 0, sizeof(pAC->Pnmi.Port[
+                       PhysPortIndex].StatRxFrameTooLongCts));
+               SK_MEMSET((char *)&pAC->Pnmi.Port[PhysPortIndex].
+                                 StatRxPMaccErr, 0, sizeof(pAC->Pnmi.Port[
+                       PhysPortIndex].StatRxPMaccErr));
+       }
+
+       /*
+        * Clear local statistics
+        */
+       SK_MEMSET((char *)&pAC->Pnmi.VirtualCounterOffset, 0,
+                 sizeof(pAC->Pnmi.VirtualCounterOffset));
+       pAC->Pnmi.RlmtChangeCts = 0;
+       pAC->Pnmi.RlmtChangeTime = 0;
+       SK_MEMSET((char *)&pAC->Pnmi.RlmtChangeEstimate.EstValue[0], 0,
+               sizeof(pAC->Pnmi.RlmtChangeEstimate.EstValue));
+       pAC->Pnmi.RlmtChangeEstimate.EstValueIndex = 0;
+       pAC->Pnmi.RlmtChangeEstimate.Estimate = 0;
+       pAC->Pnmi.Port[NetIndex].TxSwQueueMax = 0;
+       pAC->Pnmi.Port[NetIndex].TxRetryCts = 0;
+       pAC->Pnmi.Port[NetIndex].RxIntrCts = 0;
+       pAC->Pnmi.Port[NetIndex].TxIntrCts = 0;
+       pAC->Pnmi.Port[NetIndex].RxNoBufCts = 0;
+       pAC->Pnmi.Port[NetIndex].TxNoBufCts = 0;
+       pAC->Pnmi.Port[NetIndex].TxUsedDescrNo = 0;
+       pAC->Pnmi.Port[NetIndex].RxDeliveredCts = 0;
+       pAC->Pnmi.Port[NetIndex].RxOctetsDeliveredCts = 0;
+       pAC->Pnmi.Port[NetIndex].ErrRecoveryCts = 0;
+}
+
+/*****************************************************************************
+ *
+ * GetTrapEntry - Get an entry in the trap buffer
+ *
+ * Description:
+ *     The trap buffer stores various events. A user application somehow
+ *     gets notified that an event occured and retrieves the trap buffer
+ *     contens (or simply polls the buffer). The buffer is organized as
+ *     a ring which stores the newest traps at the beginning. The oldest
+ *     traps are overwritten by the newest ones. Each trap entry has a
+ *     unique number, so that applications may detect new trap entries.
+ *
+ * Returns:
+ *     A pointer to the trap entry
+ */
+PNMI_STATIC char* GetTrapEntry(
+SK_AC *pAC,            /* Pointer to adapter context */
+SK_U32 TrapId,         /* SNMP ID of the trap */
+unsigned int Size)     /* Space needed for trap entry */
+{
+       unsigned int            BufPad = pAC->Pnmi.TrapBufPad;
+       unsigned int            BufFree = pAC->Pnmi.TrapBufFree;
+       unsigned int            Beg = pAC->Pnmi.TrapQueueBeg;
+       unsigned int            End = pAC->Pnmi.TrapQueueEnd;
+       char                    *pBuf = &pAC->Pnmi.TrapBuf[0];
+       int                     Wrap;
+       unsigned int            NeededSpace;
+       unsigned int            EntrySize;
+       SK_U32                  Val32;
+       SK_U64                  Val64;
+
+
+       /* Last byte of entry will get a copy of the entry length */
+       Size ++;
+
+       /*
+        * Calculate needed buffer space */
+       if (Beg >= Size) {
+
+               NeededSpace = Size;
+               Wrap = SK_FALSE;
+       }
+       else {
+               NeededSpace = Beg + Size;
+               Wrap = SK_TRUE;
+       }
+
+       /*
+        * Check if enough buffer space is provided. Otherwise
+        * free some entries. Leave one byte space between begin
+        * and end of buffer to make it possible to detect whether
+        * the buffer is full or empty
+        */
+       while (BufFree < NeededSpace + 1) {
+
+               if (End == 0) {
+
+                       End = SK_PNMI_TRAP_QUEUE_LEN;
+               }
+
+               EntrySize = (unsigned int)*((unsigned char *)pBuf + End - 1);
+               BufFree += EntrySize;
+               End -= EntrySize;
+#ifdef DEBUG
+               SK_MEMSET(pBuf + End, (char)(-1), EntrySize);
+#endif
+               if (End == BufPad) {
+#ifdef DEBUG
+                       SK_MEMSET(pBuf, (char)(-1), End);
+#endif
+                       BufFree += End;
+                       End = 0;
+                       BufPad = 0;
+               }
+       }
+
+       /*
+        * Insert new entry as first entry. Newest entries are
+        * stored at the beginning of the queue.
+        */
+       if (Wrap) {
+
+               BufPad = Beg;
+               Beg = SK_PNMI_TRAP_QUEUE_LEN - Size;
+       }
+       else {
+               Beg = Beg - Size;
+       }
+       BufFree -= NeededSpace;
+
+       /* Save the current offsets */
+       pAC->Pnmi.TrapQueueBeg = Beg;
+       pAC->Pnmi.TrapQueueEnd = End;
+       pAC->Pnmi.TrapBufPad = BufPad;
+       pAC->Pnmi.TrapBufFree = BufFree;
+
+       /* Initialize the trap entry */
+       *(pBuf + Beg + Size - 1) = (char)Size;
+       *(pBuf + Beg) = (char)Size;
+       Val32 = (pAC->Pnmi.TrapUnique) ++;
+       SK_PNMI_STORE_U32(pBuf + Beg + 1, Val32);
+       SK_PNMI_STORE_U32(pBuf + Beg + 1 + sizeof(SK_U32), TrapId);
+       Val64 = SK_PNMI_HUNDREDS_SEC(SkOsGetTime(pAC));
+       SK_PNMI_STORE_U64(pBuf + Beg + 1 + 2 * sizeof(SK_U32), Val64);
+
+       return (pBuf + Beg);
+}
+
+/*****************************************************************************
+ *
+ * CopyTrapQueue - Copies the trap buffer for the TRAP OID
+ *
+ * Description:
+ *     On a query of the TRAP OID the trap buffer contents will be
+ *     copied continuously to the request buffer, which must be large
+ *     enough. No length check is performed.
+ *
+ * Returns:
+ *     Nothing
+ */
+PNMI_STATIC void CopyTrapQueue(
+SK_AC *pAC,            /* Pointer to adapter context */
+char *pDstBuf)         /* Buffer to which the queued traps will be copied */
+{
+       unsigned int    BufPad = pAC->Pnmi.TrapBufPad;
+       unsigned int    Trap = pAC->Pnmi.TrapQueueBeg;
+       unsigned int    End = pAC->Pnmi.TrapQueueEnd;
+       char            *pBuf = &pAC->Pnmi.TrapBuf[0];
+       unsigned int    Len;
+       unsigned int    DstOff = 0;
+
+
+       while (Trap != End) {
+
+               Len = (unsigned int)*(pBuf + Trap);
+
+               /*
+                * Last byte containing a copy of the length will
+                * not be copied.
+                */
+               *(pDstBuf + DstOff) = (char)(Len - 1);
+               SK_MEMCPY(pDstBuf + DstOff + 1, pBuf + Trap + 1, Len - 2);
+               DstOff += Len - 1;
+
+               Trap += Len;
+               if (Trap == SK_PNMI_TRAP_QUEUE_LEN) {
+
+                       Trap = BufPad;
+               }
+       }
+}
+
+/*****************************************************************************
+ *
+ * GetTrapQueueLen - Get the length of the trap buffer
+ *
+ * Description:
+ *     Evaluates the number of currently stored traps and the needed
+ *     buffer size to retrieve them.
+ *
+ * Returns:
+ *     Nothing
+ */
+PNMI_STATIC void GetTrapQueueLen(
+SK_AC *pAC,            /* Pointer to adapter context */
+unsigned int *pLen,    /* Length in Bytes of all queued traps */
+unsigned int *pEntries)        /* Returns number of trapes stored in queue */
+{
+       unsigned int    BufPad = pAC->Pnmi.TrapBufPad;
+       unsigned int    Trap = pAC->Pnmi.TrapQueueBeg;
+       unsigned int    End = pAC->Pnmi.TrapQueueEnd;
+       char            *pBuf = &pAC->Pnmi.TrapBuf[0];
+       unsigned int    Len;
+       unsigned int    Entries = 0;
+       unsigned int    TotalLen = 0;
+
+
+       while (Trap != End) {
+
+               Len = (unsigned int)*(pBuf + Trap);
+               TotalLen += Len - 1;
+               Entries ++;
+
+               Trap += Len;
+               if (Trap == SK_PNMI_TRAP_QUEUE_LEN) {
+
+                       Trap = BufPad;
+               }
+       }
+
+       *pEntries = Entries;
+       *pLen = TotalLen;
+}
+
+/*****************************************************************************
+ *
+ * QueueSimpleTrap - Store a simple trap to the trap buffer
+ *
+ * Description:
+ *     A simple trap is a trap with now additional data. It consists
+ *     simply of a trap code.
+ *
+ * Returns:
+ *     Nothing
+ */
+PNMI_STATIC void QueueSimpleTrap(
+SK_AC *pAC,            /* Pointer to adapter context */
+SK_U32 TrapId)         /* Type of sensor trap */
+{
+       GetTrapEntry(pAC, TrapId, SK_PNMI_TRAP_SIMPLE_LEN);
+}
+
+/*****************************************************************************
+ *
+ * QueueSensorTrap - Stores a sensor trap in the trap buffer
+ *
+ * Description:
+ *     Gets an entry in the trap buffer and fills it with sensor related
+ *     data.
+ *
+ * Returns:
+ *     Nothing
+ */
+PNMI_STATIC void QueueSensorTrap(
+SK_AC *pAC,                    /* Pointer to adapter context */
+SK_U32 TrapId,                 /* Type of sensor trap */
+unsigned int SensorIndex)      /* Index of sensor which caused the trap */
+{
+       char            *pBuf;
+       unsigned int    Offset;
+       unsigned int    DescrLen;
+       SK_U32          Val32;
+
+
+       /* Get trap buffer entry */
+       DescrLen = SK_STRLEN(pAC->I2c.SenTable[SensorIndex].SenDesc);
+       pBuf = GetTrapEntry(pAC, TrapId,
+               SK_PNMI_TRAP_SENSOR_LEN_BASE + DescrLen);
+       Offset = SK_PNMI_TRAP_SIMPLE_LEN;
+
+       /* Store additionally sensor trap related data */
+       Val32 = OID_SKGE_SENSOR_INDEX;
+       SK_PNMI_STORE_U32(pBuf + Offset, Val32);
+       *(pBuf + Offset + 4) = 4;
+       Val32 = (SK_U32)SensorIndex;
+       SK_PNMI_STORE_U32(pBuf + Offset + 5, Val32);
+       Offset += 9;
+
+       Val32 = (SK_U32)OID_SKGE_SENSOR_DESCR;
+       SK_PNMI_STORE_U32(pBuf + Offset, Val32);
+       *(pBuf + Offset + 4) = (char)DescrLen;
+       SK_MEMCPY(pBuf + Offset + 5, pAC->I2c.SenTable[SensorIndex].SenDesc,
+               DescrLen);
+       Offset += DescrLen + 5;
+
+       Val32 = OID_SKGE_SENSOR_TYPE;
+       SK_PNMI_STORE_U32(pBuf + Offset, Val32);
+       *(pBuf + Offset + 4) = 1;
+       *(pBuf + Offset + 5) = (char)pAC->I2c.SenTable[SensorIndex].SenType;
+       Offset += 6;
+
+       Val32 = OID_SKGE_SENSOR_VALUE;
+       SK_PNMI_STORE_U32(pBuf + Offset, Val32);
+       *(pBuf + Offset + 4) = 4;
+       Val32 = (SK_U32)pAC->I2c.SenTable[SensorIndex].SenValue;
+       SK_PNMI_STORE_U32(pBuf + Offset + 5, Val32);
+}
+
+/*****************************************************************************
+ *
+ * QueueRlmtNewMacTrap - Store a port switch trap in the trap buffer
+ *
+ * Description:
+ *     Nothing further to explain.
+ *
+ * Returns:
+ *     Nothing
+ */
+PNMI_STATIC void QueueRlmtNewMacTrap(
+SK_AC *pAC,            /* Pointer to adapter context */
+unsigned int ActiveMac)        /* Index (0..n) of the currently active port */
+{
+       char    *pBuf;
+       SK_U32  Val32;
+
+
+       pBuf = GetTrapEntry(pAC, OID_SKGE_TRAP_RLMT_CHANGE_PORT,
+               SK_PNMI_TRAP_RLMT_CHANGE_LEN);
+
+       Val32 = OID_SKGE_RLMT_PORT_ACTIVE;
+       SK_PNMI_STORE_U32(pBuf + SK_PNMI_TRAP_SIMPLE_LEN, Val32);
+       *(pBuf + SK_PNMI_TRAP_SIMPLE_LEN + 4) = 1;
+       *(pBuf + SK_PNMI_TRAP_SIMPLE_LEN + 5) = (char)ActiveMac;
+}
+
+/*****************************************************************************
+ *
+ * QueueRlmtPortTrap - Store port related RLMT trap to trap buffer
+ *
+ * Description:
+ *     Nothing further to explain.
+ *
+ * Returns:
+ *     Nothing
+ */
+PNMI_STATIC void QueueRlmtPortTrap(
+SK_AC *pAC,            /* Pointer to adapter context */
+SK_U32 TrapId,         /* Type of RLMT port trap */
+unsigned int PortIndex)        /* Index of the port, which changed its state */
+{
+       char    *pBuf;
+       SK_U32  Val32;
+
+
+       pBuf = GetTrapEntry(pAC, TrapId, SK_PNMI_TRAP_RLMT_PORT_LEN);
+
+       Val32 = OID_SKGE_RLMT_PORT_INDEX;
+       SK_PNMI_STORE_U32(pBuf + SK_PNMI_TRAP_SIMPLE_LEN, Val32);
+       *(pBuf + SK_PNMI_TRAP_SIMPLE_LEN + 4) = 1;
+       *(pBuf + SK_PNMI_TRAP_SIMPLE_LEN + 5) = (char)PortIndex;
+}
+
+/*****************************************************************************
+ *
+ * CopyMac - Copies a MAC address
+ *
+ * Description:
+ *     Nothing further to explain.
+ *
+ * Returns:
+ *     Nothing
+ */
+PNMI_STATIC void CopyMac(
+char *pDst,            /* Pointer to destination buffer */
+SK_MAC_ADDR *pMac)     /* Pointer of Source */
+{
+       int     i;
+
+
+       for (i = 0; i < sizeof(SK_MAC_ADDR); i ++) {
+
+               *(pDst + i) = pMac->a[i];
+       }
+}
+
+
+#ifdef SK_POWER_MGMT
+/*****************************************************************************
+ *
+ * PowerManagement - OID handler function of PowerManagement OIDs
+ *
+ * Description:
+ *     The code is simple. No description necessary.
+ *
+ * Returns:
+ *     SK_PNMI_ERR_OK           The request was successfully performed.
+ *     SK_PNMI_ERR_GENERAL      A general severe internal error occured.
+ *     SK_PNMI_ERR_TOO_SHORT    The passed buffer is too short to contain
+ *                              the correct data (e.g. a 32bit value is
+ *                              needed, but a 16 bit value was passed).
+ *     SK_PNMI_ERR_UNKNOWN_INST The requested instance of the OID doesn't
+ *                               exist (e.g. port instance 3 on a two port
+ *                              adapter.
+ */
+
+PNMI_STATIC int PowerManagement(
+SK_AC *pAC,            /* Pointer to adapter context */
+SK_IOC IoC,            /* IO context handle */
+int Action,            /* Get/PreSet/Set action */
+SK_U32 Id,             /* Object ID that is to be processed */
+char *pBuf,            /* Buffer to which to mgmt data will be retrieved */
+unsigned int *pLen,    /* On call: buffer length. On return: used buffer */
+SK_U32 Instance,       /* Instance (1..n) that is to be queried or -1 */
+unsigned int TableIndex, /* Index to the Id table */
+SK_U32 NetIndex)       /* NetIndex (0..n), in single net mode allways zero */
+{
+
+       SK_U32  RetCode = SK_PNMI_ERR_GENERAL;
+
+       /*
+        * Check instance. We only handle single instance variables
+        */
+       if (Instance != (SK_U32)(-1) && Instance != 1) {
+
+               *pLen = 0;
+               return (SK_PNMI_ERR_UNKNOWN_INST);
+       }
+
+       /*
+        * Perform action
+        */
+       if (Action == SK_PNMI_GET) {
+
+               /*
+                * Check length
+                */
+               switch (Id) {
+
+               case OID_PNP_CAPABILITIES:
+                       if (*pLen < sizeof(SK_PNP_CAPABILITIES)) {
+
+                               *pLen = sizeof(SK_PNP_CAPABILITIES);
+                               return (SK_PNMI_ERR_TOO_SHORT);
+                       }
+                       break;
+
+               case OID_PNP_QUERY_POWER:
+               case OID_PNP_ENABLE_WAKE_UP:
+                       if (*pLen < sizeof(SK_U32)) {
+
+                               *pLen = sizeof(SK_U32);
+                               return (SK_PNMI_ERR_TOO_SHORT);
+                       }
+                       break;
+
+               case OID_PNP_SET_POWER:
+               case OID_PNP_ADD_WAKE_UP_PATTERN:
+               case OID_PNP_REMOVE_WAKE_UP_PATTERN:
+                       break;
+
+               default:
+                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR040,
+                               SK_PNMI_ERR040MSG);
+                       *pLen = 0;
+                       return (SK_PNMI_ERR_GENERAL);
+               }
+
+               /*
+                * Get value
+                */
+               switch (Id) {
+
+               case OID_PNP_CAPABILITIES:
+                       RetCode = SkPowerQueryPnPCapabilities(pAC, IoC, pBuf, pLen);
+                       break;
+
+               case OID_PNP_QUERY_POWER:
+                       /* The Windows DDK describes: An OID_PNP_QUERY_POWER requests
+                        the miniport to indicate whether it can transition its NIC
+                        to the low-power state.
+                        A miniport driver must always return NDIS_STATUS_SUCCESS
+                        to a query of OID_PNP_QUERY_POWER. */
+                       RetCode = SK_PNMI_ERR_OK;
+                       break;
+
+                       /* NDIS handles these OIDs as write-only.
+                        * So in case of get action the buffer with written length = 0
+                        * is returned
+                        */
+               case OID_PNP_SET_POWER:
+               case OID_PNP_ADD_WAKE_UP_PATTERN:
+               case OID_PNP_REMOVE_WAKE_UP_PATTERN:
+                       *pLen = 0;
+                       RetCode = SK_PNMI_ERR_OK;
+                       break;
+
+               case OID_PNP_ENABLE_WAKE_UP:
+                       RetCode = SkPowerGetEnableWakeUp(pAC, IoC, pBuf, pLen);
+                       break;
+
+               default:
+                       RetCode = SK_PNMI_ERR_GENERAL;
+                       break;
+               }
+
+               return (RetCode);
+       }
+
+       /*
+        * From here SET or PRESET action. Check if the passed
+        * buffer length is plausible.
+        */
+       switch (Id) {
+       case OID_PNP_SET_POWER:
+       case OID_PNP_ENABLE_WAKE_UP:
+               if (*pLen < sizeof(SK_U32)) {
+
+                       *pLen = sizeof(SK_U32);
+                       return (SK_PNMI_ERR_TOO_SHORT);
+               }
+               if (*pLen != sizeof(SK_U32)) {
+
+                       *pLen = 0;
+                       return (SK_PNMI_ERR_BAD_VALUE);
+               }
+               break;
+
+       case OID_PNP_ADD_WAKE_UP_PATTERN:
+       case OID_PNP_REMOVE_WAKE_UP_PATTERN:
+               if (*pLen < sizeof(SK_PM_PACKET_PATTERN)) {
+
+                       *pLen = 0;
+                       return (SK_PNMI_ERR_BAD_VALUE);
+               }
+               break;
+
+    default:
+               *pLen = 0;
+               return (SK_PNMI_ERR_READ_ONLY);
+       }
+
+       /*
+        * Perform preset or set
+        */
+
+       /* POWER module does not support PRESET action */
+       if (Action == SK_PNMI_PRESET) {
+               return (SK_PNMI_ERR_OK);
+       }
+
+       switch (Id) {
+       case OID_PNP_SET_POWER:
+               RetCode = SkPowerSetPower(pAC, IoC, pBuf, pLen);
+               break;
+
+       case OID_PNP_ADD_WAKE_UP_PATTERN:
+               RetCode = SkPowerAddWakeUpPattern(pAC, IoC, pBuf, pLen);
+               break;
+
+       case OID_PNP_REMOVE_WAKE_UP_PATTERN:
+               RetCode = SkPowerRemoveWakeUpPattern(pAC, IoC, pBuf, pLen);
+               break;
+
+       case OID_PNP_ENABLE_WAKE_UP:
+               RetCode = SkPowerSetEnableWakeUp(pAC, IoC, pBuf, pLen);
+               break;
+
+       default:
+               RetCode = SK_PNMI_ERR_GENERAL;
+       }
+
+       return (RetCode);
+}
+#endif /* SK_POWER_MGMT */
+
+
+/*****************************************************************************
+ *
+ * Vct - OID handler function of  OIDs
+ *
+ * Description:
+ *     The code is simple. No description necessary.
+ *
+ * Returns:
+ *     SK_PNMI_ERR_OK           The request was performed successfully.
+ *     SK_PNMI_ERR_GENERAL      A general severe internal error occured.
+ *     SK_PNMI_ERR_TOO_SHORT    The passed buffer is too short to contain
+ *                              the correct data (e.g. a 32bit value is
+ *                              needed, but a 16 bit value was passed).
+ *     SK_PNMI_ERR_UNKNOWN_INST The requested instance of the OID doesn't
+ *                               exist (e.g. port instance 3 on a two port
+ *                              adapter).
+ *     SK_PNMI_ERR_READ_ONLY    Only the Get action is allowed.
+ *
+ */
+
+PNMI_STATIC int Vct(
+SK_AC *pAC,            /* Pointer to adapter context */
+SK_IOC IoC,            /* IO context handle */
+int Action,            /* Get/PreSet/Set action */
+SK_U32 Id,             /* Object ID that is to be processed */
+char *pBuf,            /* Buffer to which the mgmt data will be copied */
+unsigned int *pLen,    /* On call: buffer length. On return: used buffer */
+SK_U32 Instance,       /* Instance (-1,2..n) that is to be queried */
+unsigned int TableIndex, /* Index to the Id table */
+SK_U32 NetIndex)       /* NetIndex (0..n), in single net mode always zero */
+{
+       SK_GEPORT       *pPrt;
+       SK_PNMI_VCT     *pVctBackupData;
+       SK_U32          LogPortMax;
+       SK_U32          PhysPortMax;
+       SK_U32          PhysPortIndex;
+       SK_U32          Limit;
+       SK_U32          Offset;
+       SK_BOOL         Link;
+       SK_U32          RetCode = SK_PNMI_ERR_GENERAL;
+       int             i;
+       SK_EVPARA       Para;
+       SK_U32          CableLength;
+
+       /*
+        * Calculate the port indexes from the instance.
+        */
+       PhysPortMax = pAC->GIni.GIMacsFound;
+       LogPortMax = SK_PNMI_PORT_PHYS2LOG(PhysPortMax);
+
+       /* Dual net mode? */
+       if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
+               LogPortMax--;
+       }
+
+       if ((Instance != (SK_U32) (-1))) {
+               /* Check instance range. */
+               if ((Instance < 2) || (Instance > LogPortMax)) {
+                       *pLen = 0;
+                       return (SK_PNMI_ERR_UNKNOWN_INST);
+               }
+
+               if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) {
+                       PhysPortIndex = NetIndex;
+               }
+               else {
+                       PhysPortIndex = Instance - 2;
+               }
+               Limit = PhysPortIndex + 1;
+       }
+       else {  /*
+                * Instance == (SK_U32) (-1), get all Instances of that OID.
+                *
+                * Not implemented yet. May be used in future releases.
+                */
+               PhysPortIndex = 0;
+               Limit = PhysPortMax;
+       }
+
+       pPrt = &pAC->GIni.GP[PhysPortIndex];
+       if (pPrt->PHWLinkUp) {
+               Link = SK_TRUE;
+       }
+       else {
+               Link = SK_FALSE;
+       }
+
+       /*
+        * Check MAC type.
+        */
+       if (pPrt->PhyType != SK_PHY_MARV_COPPER) {
+               *pLen = 0;
+               return (SK_PNMI_ERR_GENERAL);
+       }
+
+       /* Initialize backup data pointer. */
+       pVctBackupData = &pAC->Pnmi.VctBackup[PhysPortIndex];
+
+       /*
+        * Check action type.
+        */
+       if (Action == SK_PNMI_GET) {
+               /*
+                * Check length.
+                */
+               switch (Id) {
+
+               case OID_SKGE_VCT_GET:
+                       if (*pLen < (Limit - PhysPortIndex) * sizeof(SK_PNMI_VCT)) {
+                               *pLen = (Limit - PhysPortIndex) * sizeof(SK_PNMI_VCT);
+                               return (SK_PNMI_ERR_TOO_SHORT);
+                       }
+                       break;
+
+               case OID_SKGE_VCT_STATUS:
+                       if (*pLen < (Limit - PhysPortIndex) * sizeof(SK_U8)) {
+                               *pLen = (Limit - PhysPortIndex) * sizeof(SK_U8);
+                               return (SK_PNMI_ERR_TOO_SHORT);
+                       }
+                       break;
+
+               default:
+                       *pLen = 0;
+                       return (SK_PNMI_ERR_GENERAL);
+               }
+
+               /*
+                * Get value.
+                */
+               Offset = 0;
+               for (; PhysPortIndex < Limit; PhysPortIndex++) {
+                       switch (Id) {
+
+                       case OID_SKGE_VCT_GET:
+                               if ((Link == SK_FALSE) &&
+                                       (pAC->Pnmi.VctStatus[PhysPortIndex] & SK_PNMI_VCT_PENDING)) {
+                                       RetCode = SkGmCableDiagStatus(pAC, IoC, PhysPortIndex, SK_FALSE);
+                                       if (RetCode == 0) {
+                                               pAC->Pnmi.VctStatus[PhysPortIndex] &= ~SK_PNMI_VCT_PENDING;
+                                               pAC->Pnmi.VctStatus[PhysPortIndex] |=
+                                                       (SK_PNMI_VCT_NEW_VCT_DATA | SK_PNMI_VCT_TEST_DONE);
+
+                                               /* Copy results for later use to PNMI struct. */
+                                               for (i = 0; i < 4; i++)  {
+                                                       if (pPrt->PMdiPairSts[i] == SK_PNMI_VCT_NORMAL_CABLE) {
+                                                               if ((pPrt->PMdiPairLen[i] > 35) && (pPrt->PMdiPairLen[i] < 0xff)) {
+                                                                       pPrt->PMdiPairSts[i] = SK_PNMI_VCT_IMPEDANCE_MISMATCH;
+                                                               }
+                                                       }
+                                                       if ((pPrt->PMdiPairLen[i] > 35) && (pPrt->PMdiPairLen[i] != 0xff)) {
+                                                               CableLength = 1000 * (((175 * pPrt->PMdiPairLen[i]) / 210) - 28);
+                                                       }
+                                                       else {
+                                                               CableLength = 0;
+                                                       }
+                                                       pVctBackupData->PMdiPairLen[i] = CableLength;
+                                                       pVctBackupData->PMdiPairSts[i] = pPrt->PMdiPairSts[i];
+                                               }
+
+                                               Para.Para32[0] = PhysPortIndex;
+                                               Para.Para32[1] = -1;
+                                               SkEventQueue(pAC, SKGE_DRV, SK_DRV_PORT_RESET, Para);
+                                               SkEventDispatcher(pAC, IoC);
+                                       }
+                                       else {
+                                               ; /* VCT test is running. */
+                                       }
+                               }
+
+                               /* Get all results. */
+                               CheckVctStatus(pAC, IoC, pBuf, Offset, PhysPortIndex);
+                               Offset += sizeof(SK_U8);
+                               *(pBuf + Offset) = pPrt->PCableLen;
+                               Offset += sizeof(SK_U8);
+                               for (i = 0; i < 4; i++)  {
+                                       SK_PNMI_STORE_U32((pBuf + Offset), pVctBackupData->PMdiPairLen[i]);
+                                       Offset += sizeof(SK_U32);
+                               }
+                               for (i = 0; i < 4; i++)  {
+                                       *(pBuf + Offset) = pVctBackupData->PMdiPairSts[i];
+                                       Offset += sizeof(SK_U8);
+                               }
+
+                               RetCode = SK_PNMI_ERR_OK;
+                               break;
+
+                       case OID_SKGE_VCT_STATUS:
+                               CheckVctStatus(pAC, IoC, pBuf, Offset, PhysPortIndex);
+                               Offset += sizeof(SK_U8);
+                               RetCode = SK_PNMI_ERR_OK;
+                               break;
+
+                       default:
+                               *pLen = 0;
+                               return (SK_PNMI_ERR_GENERAL);
+                       }
+               } /* for */
+               *pLen = Offset;
+               return (RetCode);
+
+       } /* if SK_PNMI_GET */
+
+       /*
+        * From here SET or PRESET action. Check if the passed
+        * buffer length is plausible.
+        */
+
+       /*
+        * Check length.
+        */
+       switch (Id) {
+       case OID_SKGE_VCT_SET:
+               if (*pLen < (Limit - PhysPortIndex) * sizeof(SK_U32)) {
+                       *pLen = (Limit - PhysPortIndex) * sizeof(SK_U32);
+                       return (SK_PNMI_ERR_TOO_SHORT);
+               }
+               break;
+
+       default:
+               *pLen = 0;
+               return (SK_PNMI_ERR_GENERAL);
+       }
+
+       /*
+        * Perform preset or set.
+        */
+
+       /* VCT does not support PRESET action. */
+       if (Action == SK_PNMI_PRESET) {
+               return (SK_PNMI_ERR_OK);
+       }
+
+       Offset = 0;
+       for (; PhysPortIndex < Limit; PhysPortIndex++) {
+               switch (Id) {
+               case OID_SKGE_VCT_SET: /* Start VCT test. */
+                       if (Link == SK_FALSE) {
+                               SkGeStopPort(pAC, IoC, PhysPortIndex, SK_STOP_ALL, SK_SOFT_RST);
+
+                               RetCode = SkGmCableDiagStatus(pAC, IoC, PhysPortIndex, SK_TRUE);
+                               if (RetCode == 0) { /* RetCode: 0 => Start! */
+                                       pAC->Pnmi.VctStatus[PhysPortIndex] |= SK_PNMI_VCT_PENDING;
+                                       pAC->Pnmi.VctStatus[PhysPortIndex] &= ~SK_PNMI_VCT_NEW_VCT_DATA;
+                                       pAC->Pnmi.VctStatus[PhysPortIndex] &= ~SK_PNMI_VCT_LINK;
+
+                                       /*
+                                        * Start VCT timer counter.
+                                        */
+                                       SK_MEMSET((char *) &Para, 0, sizeof(Para));
+                                       Para.Para32[0] = PhysPortIndex;
+                                       Para.Para32[1] = -1;
+                                       SkTimerStart(pAC, IoC, &pAC->Pnmi.VctTimeout[PhysPortIndex].VctTimer,
+                                               4000000, SKGE_PNMI, SK_PNMI_EVT_VCT_RESET, Para);
+                                       SK_PNMI_STORE_U32((pBuf + Offset), RetCode);
+                                       RetCode = SK_PNMI_ERR_OK;
+                               }
+                               else { /* RetCode: 2 => Running! */
+                                       SK_PNMI_STORE_U32((pBuf + Offset), RetCode);
+                                       RetCode = SK_PNMI_ERR_OK;
+                               }
+                       }
+                       else { /* RetCode: 4 => Link! */
+                               RetCode = 4;
+                               SK_PNMI_STORE_U32((pBuf + Offset), RetCode);
+                               RetCode = SK_PNMI_ERR_OK;
+                       }
+                       Offset += sizeof(SK_U32);
+                       break;
+
+               default:
+                       *pLen = 0;
+                       return (SK_PNMI_ERR_GENERAL);
+               }
+       } /* for */
+       *pLen = Offset;
+       return (RetCode);
+
+} /* Vct */
+
+
+PNMI_STATIC void CheckVctStatus(
+SK_AC          *pAC,
+SK_IOC         IoC,
+char           *pBuf,
+SK_U32         Offset,
+SK_U32         PhysPortIndex)
+{
+       SK_GEPORT       *pPrt;
+       SK_PNMI_VCT     *pVctData;
+       SK_U32          RetCode;
+       SK_U8           LinkSpeedUsed;
+
+       pPrt = &pAC->GIni.GP[PhysPortIndex];
+
+       pVctData = (SK_PNMI_VCT *) (pBuf + Offset);
+       pVctData->VctStatus = SK_PNMI_VCT_NONE;
+
+       if (!pPrt->PHWLinkUp) {
+
+               /* Was a VCT test ever made before? */
+               if (pAC->Pnmi.VctStatus[PhysPortIndex] & SK_PNMI_VCT_TEST_DONE) {
+                       if ((pAC->Pnmi.VctStatus[PhysPortIndex] & SK_PNMI_VCT_LINK)) {
+                               pVctData->VctStatus |= SK_PNMI_VCT_OLD_VCT_DATA;
+                       }
+                       else {
+                               pVctData->VctStatus |= SK_PNMI_VCT_NEW_VCT_DATA;
+                       }
+               }
+
+               /* Check VCT test status. */
+               RetCode = SkGmCableDiagStatus(pAC,IoC, PhysPortIndex, SK_FALSE);
+               if (RetCode == 2) { /* VCT test is running. */
+                       pVctData->VctStatus |= SK_PNMI_VCT_RUNNING;
+               }
+               else { /* VCT data was copied to pAC here. Check PENDING state. */
+                       if (pAC->Pnmi.VctStatus[PhysPortIndex] & SK_PNMI_VCT_PENDING) {
+                               pVctData->VctStatus |= SK_PNMI_VCT_NEW_VCT_DATA;
+                       }
+               }
+
+               if (pPrt->PCableLen != 0xff) { /* Old DSP value. */
+                       pVctData->VctStatus |= SK_PNMI_VCT_OLD_DSP_DATA;
+               }
+       }
+       else {
+
+               /* Was a VCT test ever made before? */
+               if (pAC->Pnmi.VctStatus[PhysPortIndex] & SK_PNMI_VCT_TEST_DONE) {
+                       pVctData->VctStatus &= ~SK_PNMI_VCT_NEW_VCT_DATA;
+                       pVctData->VctStatus |= SK_PNMI_VCT_OLD_VCT_DATA;
+               }
+
+               /* DSP only valid in 100/1000 modes. */
+               LinkSpeedUsed = pAC->GIni.GP[PhysPortIndex].PLinkSpeedUsed;
+               if (LinkSpeedUsed != SK_LSPEED_STAT_10MBPS) {
+                       pVctData->VctStatus |= SK_PNMI_VCT_NEW_DSP_DATA;
+               }
+       }
+
+} /* CheckVctStatus */
diff -Naur u-boot-2009.03_orig/drivers/net/sk98lin/skgesirq.c u-boot-2009.03/drivers/net/sk98lin/skgesirq.c
--- u-boot-2009.03_orig/drivers/net/sk98lin/skgesirq.c  2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/drivers/net/sk98lin/skgesirq.c       2009-03-31 14:54:29.565628800 -0700
@@ -1,2413 +1,2416 @@
-/******************************************************************************
- *
- * Name:       skgesirq.c
- * Project:    GEnesis, PCI Gigabit Ethernet Adapter
- * Version:    $Revision: 1.83 $
- * Date:       $Date: 2003/02/05 15:10:59 $
- * Purpose:    Special IRQ module
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- *     (C)Copyright 1998-2003 SysKonnect GmbH.
- *
- *     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.
- *
- *     The information in this file is provided "AS IS" without warranty.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * History:
- *
- *     $Log: skgesirq.c,v $
- *     Revision 1.83  2003/02/05 15:10:59  rschmidt
- *     Fixed setting of PLinkSpeedUsed in SkHWLinkUp() when
- *     auto-negotiation is disabled.
- *     Editorial changes.
- *
- *     Revision 1.82  2003/01/29 13:34:33  rschmidt
- *     Added some typecasts to avoid compiler warnings.
- *
- *     Revision 1.81  2002/12/05 10:49:51  rschmidt
- *     Fixed missing Link Down Event for fiber (Bug Id #10768)
- *     Added reading of cable length when link is up
- *     Removed testing of unused error bits in PHY ISR
- *     Editorial changes.
- *
- *     Revision 1.80  2002/11/12 17:15:21  rschmidt
- *     Replaced SkPnmiGetVar() by ...MacStatistic() in SkMacParity().
- *     Editorial changes.
- *
- *     Revision 1.79  2002/10/14 15:14:51  rschmidt
- *     Changed clearing of IS_M1_PAR_ERR (MAC 1 Parity Error) in
- *     SkMacParity() depending on GIChipRev (HW-Bug #8).
- *     Added error messages for GPHY Auto-Negotiation Error and
- *     FIFO Overflow/Underrun in SkPhyIsrGmac().
- *     Editorial changes.
- *
- *     Revision 1.78  2002/10/10 15:54:29  mkarl
- *     changes for PLinkSpeedUsed
- *
- *     Revision 1.77  2002/09/12 08:58:51  rwahl
- *     Retrieve counters needed for XMAC errata workarounds directly because
- *     PNMI returns corrected counter values (e.g. #10620).
- *
- *     Revision 1.76  2002/08/16 15:21:54  rschmidt
- *     Replaced all if(GIChipId == CHIP_ID_GENESIS) with new entry GIGenesis.
- *     Replaced wrong 1st para pAC with IoC in SK_IN/OUT macros.
- *     Editorial changes.
- *
- *     Revision 1.75  2002/08/12 13:50:47  rschmidt
- *     Changed clearing of IS_M1_PAR_ERR (MAC 1 Parity Error) in
- *     SkMacParity() by GMF_CLI_TX_FC instead of GMF_CLI_TX_PE (HW-Bug #8).
- *     Added clearing of IS_IRQ_TIST_OV and IS_IRQ_SENSOR in SkGeHwErr().
- *     Corrected handling of Link Up and Auto-Negotiation Over for GPHY.
- *     in SkGePortCheckUpGmac().
- *     Editorial changes.
- *
- *     Revision 1.74  2002/08/08 16:17:04  rschmidt
- *     Added PhyType check for SK_HWEV_SET_ROLE event (copper only)
- *     Changed Link Up check reading PHY Specific Status (YUKON)
- *     Editorial changes
- *
- *     Revision 1.73  2002/07/15 18:36:53  rwahl
- *     Editorial changes.
- *
- *     Revision 1.72  2002/07/15 15:46:26  rschmidt
- *     Added new event: SK_HWEV_SET_SPEED
- *     Editorial changes
- *
- *     Revision 1.71  2002/06/10 09:34:19  rschmidt
- *     Editorial changes
- *
- *     Revision 1.70  2002/06/05 08:29:18  rschmidt
- *     SkXmRxTxEnable() replaced by SkMacRxTxEnable().
- *     Editorial changes.
- *
- *     Revision 1.69  2002/04/25 13:03:49  rschmidt
- *     Changes for handling YUKON.
- *     Use of #ifdef OTHER_PHY to eliminate code for unused Phy types.
- *     Replaced all XMAC-access macros by functions: SkMacRxTxDisable(),
- *     SkMacIrqDisable().
- *     Added handling for GMAC FIFO in SkMacParity().
- *     Replaced all SkXm...() functions with SkMac...() to handle also
- *     YUKON's GMAC.
- *     Macros for XMAC PHY access PHY_READ(), PHY_WRITE() replaced
- *     by functions SkXmPhyRead(), SkXmPhyWrite().
- *     Disabling all PHY interrupts moved to SkMacIrqDisable().
- *     Added handling for GPHY IRQ in SkGeSirqIsr().
- *     Removed status parameter from MAC IRQ handler SkMacIrq().
- *     Added SkGePortCheckUpGmac(), SkPhyIsrGmac() for GMAC.
- *     Editorial changes
- *
- *     Revision 1.68  2002/02/26 15:24:53  rwahl
- *     Fix: no link with manual configuration (#10673). The previous fix for
- *     #10639 was removed. So for RLMT mode = CLS the RLMT may switch to
- *     misconfigured port. It should not occur for the other RLMT modes.
- *
- *     Revision 1.67  2001/11/20 09:19:58  rwahl
- *     Reworked bugfix #10639 (no dependency to RLMT mode).
- *
- *     Revision 1.66  2001/10/26 07:52:53  afischer
- *     Port switching bug in `check local link` mode
- *
- *     Revision 1.65  2001/02/23 13:41:51  gklug
- *     fix: PHYS2INST should be used correctly for Dual Net operation
- *     chg: do no longer work with older PNMI
- *
- *     Revision 1.64  2001/02/15 11:27:04  rassmann
- *     Working with RLMT v1 if SK_MAX_NETS undefined.
- *
- *     Revision 1.63  2001/02/06 10:44:23  mkunz
- *     - NetIndex added to interface functions of pnmi V4 with dual net support
- *
- *     Revision 1.62  2001/01/31 15:31:41  gklug
- *     fix: problem with autosensing an SR8800 switch
- *
- *     Revision 1.61  2000/11/09 11:30:09  rassmann
- *     WA: Waiting after releasing reset until BCom chip is accessible.
- *
- *     Revision 1.60  2000/10/18 12:37:48  cgoos
- *     Reinserted the comment for version 1.56.
- *
- *     Revision 1.59  2000/10/18 12:22:20  cgoos
- *     Added workaround for half duplex hangup.
- *
- *     Revision 1.58  2000/09/28 13:06:04  gklug
- *     fix: BCom may NOT be touched if XMAC is in RESET state
- *
- *     Revision 1.57  2000/09/08 12:38:39  cgoos
- *     Added forgotten variable declaration.
- *
- *     Revision 1.56  2000/09/08 08:12:13  cgoos
- *     Changed handling of parity errors in SkGeHwErr (correct reset of error).
- *
- *     Revision 1.55  2000/06/19 08:36:25  cgoos
- *     Changed comment.
- *
- *     Revision 1.54  2000/05/22 08:45:57  malthoff
- *     Fix: #10523 is valid for all BCom PHYs.
- *
- *     Revision 1.53  2000/05/19 10:20:30  cgoos
- *     Removed Solaris debug output code.
- *
- *     Revision 1.52  2000/05/19 10:19:37  cgoos
- *     Added PHY state check in HWLinkDown.
- *     Move PHY interrupt code to IS_EXT_REG case in SkGeSirqIsr.
- *
- *     Revision 1.51  2000/05/18 05:56:20  cgoos
- *     Fixed typo.
- *
- *     Revision 1.50  2000/05/17 12:49:49  malthoff
- *     Fixes BCom link bugs (#10523).
- *
- *     Revision 1.49  1999/12/17 11:02:50  gklug
- *     fix: read PHY_STAT of Broadcom chip more often to assure good status
- *
- *     Revision 1.48  1999/12/06 10:01:17  cgoos
- *     Added SET function for Role.
- *
- *     Revision 1.47  1999/11/22 13:34:24  cgoos
- *     Changed license header to GPL.
- *
- *     Revision 1.46  1999/09/16 10:30:07  cgoos
- *     Removed debugging output statement from Linux.
- *
- *     Revision 1.45  1999/09/16 07:32:55  cgoos
- *     Fixed dual-port copperfield bug (PHY_READ from resetted port).
- *     Removed some unused variables.
- *
- *     Revision 1.44  1999/08/03 15:25:04  cgoos
- *     Removed workaround for disabled interrupts in half duplex mode.
- *
- *     Revision 1.43  1999/08/03 14:27:58  cgoos
- *     Removed SENSE mode code from SkGePortCheckUpBcom.
- *
- *     Revision 1.42  1999/07/26 09:16:54  cgoos
- *     Added some typecasts to avoid compiler warnings.
- *
- *     Revision 1.41  1999/05/19 07:28:59  cgoos
- *     Changes for 1000Base-T.
- *
- *     Revision 1.40  1999/04/08 13:59:39  gklug
- *     fix: problem with 3Com switches endless RESTARTs
- *
- *     Revision 1.39  1999/03/08 10:10:52  gklug
- *     fix: AutoSensing did switch to next mode even if LiPa indicated offline
- *
- *     Revision 1.38  1999/03/08 09:49:03  gklug
- *     fix: Bug using pAC instead of IoC, causing AIX problems
- *     fix: change compare for Linux compiler bug workaround
- *
- *     Revision 1.37  1999/01/28 14:51:33  gklug
- *     fix: monitor for autosensing and extra RESETS the RX on wire counters
- *
- *     Revision 1.36  1999/01/22 09:19:55  gklug
- *     fix: Init DupMode and InitPauseMd are now called in RxTxEnable
- *
- *     Revision 1.35  1998/12/11 15:22:59  gklug
- *     chg: autosensing: check for receive if manual mode was guessed
- *     chg: simplified workaround for XMAC errata
- *     chg: wait additional 100 ms before link goes up.
- *     chg: autoneg timeout to 600 ms
- *     chg: restart autoneg even if configured to autonegotiation
- *
- *     Revision 1.34  1998/12/10 10:33:14  gklug
- *     add: more debug messages
- *     fix: do a new InitPhy if link went down (AutoSensing problem)
- *     chg: Check for zero shorts if link is NOT up
- *     chg: reset Port if link goes down
- *     chg: wait additional 100 ms when link comes up to check shorts
- *     fix: dummy read extended autoneg status to prevent link going down immediately
- *
- *     Revision 1.33  1998/12/07 12:18:29  gklug
- *     add: refinement of autosense mode: take into account the autoneg cap of LiPa
- *
- *     Revision 1.32  1998/12/07 07:11:21  gklug
- *     fix: compiler warning
- *
- *     Revision 1.31  1998/12/02 09:29:05  gklug
- *     fix: WA XMAC Errata: FCSCt check was not correct.
- *     fix: WA XMAC Errata: Prec Counter were NOT updated in case of short checks.
- *     fix: Clear Stat : now clears the Prev counters of all known Ports
- *
- *     Revision 1.30  1998/12/01 10:54:15  gklug
- *     dd: workaround for XMAC errata changed. Check RX count and CRC err Count, too.
- *
- *     Revision 1.29  1998/12/01 10:01:53  gklug
- *     fix: if MAC IRQ occurs during port down, this will be handled correctly
- *
- *     Revision 1.28  1998/11/26 16:22:11  gklug
- *     fix: bug in autosense if manual modes are used
- *
- *     Revision 1.27  1998/11/26 15:50:06  gklug
- *     fix: PNMI needs to set PLinkModeConf
- *
- *     Revision 1.26  1998/11/26 14:51:58  gklug
- *     add: AutoSensing functionalty
- *
- *     Revision 1.25  1998/11/26 07:34:37  gklug
- *     fix: Init PrevShorts when restarting port due to Link connection
- *
- *     Revision 1.24  1998/11/25 10:57:32  gklug
- *     fix: remove unreferenced local vars
- *
- *     Revision 1.23  1998/11/25 08:26:40  gklug
- *     fix: don't do a RESET on a starting or stopping port
- *
- *     Revision 1.22  1998/11/24 13:29:44  gklug
- *     add: Workaround for MAC parity errata
- *
- *     Revision 1.21  1998/11/18 15:31:06  gklug
- *     fix: lint bugs
- *
- *     Revision 1.20  1998/11/18 12:58:54  gklug
- *     fix: use PNMI query instead of hardware access
- *
- *     Revision 1.19  1998/11/18 12:54:55  gklug
- *     chg: add new workaround for XMAC Errata
- *     add: short event counter monitoring on active link too
- *
- *     Revision 1.18  1998/11/13 14:27:41  malthoff
- *     Bug Fix: Packet Arbiter Timeout was not cleared correctly
- *     for timeout on TX1 and TX2.
- *
- *     Revision 1.17  1998/11/04 07:01:59  cgoos
- *     Moved HW link poll sequence.
- *     Added call to SkXmRxTxEnable.
- *
- *     Revision 1.16  1998/11/03 13:46:03  gklug
- *     add: functionality of SET_LMODE and SET_FLOW_MODE
- *     fix: send RLMT LinkDown event when Port stop is given with LinkUp
- *
- *     Revision 1.15  1998/11/03 12:56:47  gklug
- *     fix: Needs more events
- *
- *     Revision 1.14  1998/10/30 07:36:35  gklug
- *     rmv: unnecessary code
- *
- *     Revision 1.13  1998/10/29 15:21:57  gklug
- *     add: Poll link feature for activating HW link
- *     fix: Deactivate HWLink when Port STOP is given
- *
- *     Revision 1.12  1998/10/28 07:38:57  cgoos
- *     Checking link status at begin of SkHWLinkUp.
- *
- *     Revision 1.11  1998/10/22 09:46:50  gklug
- *     fix SysKonnectFileId typo
- *
- *     Revision 1.10  1998/10/14 13:57:47  gklug
- *     add: Port start/stop event
- *
- *     Revision 1.9  1998/10/14 05:48:29  cgoos
- *     Added definition for Para.
- *
- *     Revision 1.8  1998/10/14 05:40:09  gklug
- *     add: Hardware Linkup signal used
- *
- *     Revision 1.7  1998/10/09 06:50:20  malthoff
- *     Remove ID_sccs by SysKonnectFileId.
- *
- *     Revision 1.6  1998/10/08 09:11:49  gklug
- *     add: clear IRQ commands
- *
- *     Revision 1.5  1998/10/02 14:27:35  cgoos
- *     Fixed some typos and wrong event names.
- *
- *     Revision 1.4  1998/10/02 06:24:17  gklug
- *     add: HW error function
- *     fix: OUT macros
- *
- *     Revision 1.3  1998/10/01 07:03:00  gklug
- *     add: ISR for the usual interrupt source register
- *
- *     Revision 1.2  1998/09/03 13:50:33  gklug
- *     add: function prototypes
- *
- *     Revision 1.1  1998/08/27 11:50:21  gklug
- *     initial revision
- *
- *
- *
- ******************************************************************************/
-
-#include <config.h>
-
-/*
- *     Special Interrupt handler
- *
- *     The following abstract should show how this module is included
- *     in the driver path:
- *
- *     In the ISR of the driver the bits for frame transmission complete and
- *     for receive complete are checked and handled by the driver itself.
- *     The bits of the slow path mask are checked after that and then the
- *     entry into the so-called "slow path" is prepared. It is an implementors
- *     decision whether this is executed directly or just scheduled by
- *     disabling the mask. In the interrupt service routine some events may be
- *     generated, so it would be a good idea to call the EventDispatcher
- *     right after this ISR.
- *
- *     The Interrupt source register of the adapter is NOT read by this module.
- *  SO if the drivers implementor needs a while loop around the
- *     slow data paths interrupt bits, he needs to call the SkGeSirqIsr() for
- *     each loop entered.
- *
- *     However, the MAC Interrupt status registers are read in a while loop.
- *
- */
-
-static const char SysKonnectFileId[] =
-       "$Id: skgesirq.c,v 1.83 2003/02/05 15:10:59 rschmidt Exp $" ;
-
-#include "h/skdrv1st.h"                /* Driver Specific Definitions */
-#include "h/skgepnmi.h"                /* PNMI Definitions */
-#include "h/skrlmt.h"          /* RLMT Definitions */
-#include "h/skdrv2nd.h"                /* Adapter Control and Driver specific Def. */
-
-/* local function prototypes */
-static int     SkGePortCheckUpXmac(SK_AC*, SK_IOC, int);
-static int     SkGePortCheckUpBcom(SK_AC*, SK_IOC, int);
-static int     SkGePortCheckUpGmac(SK_AC*, SK_IOC, int);
-static void    SkPhyIsrBcom(SK_AC*, SK_IOC, int, SK_U16);
-static void    SkPhyIsrGmac(SK_AC*, SK_IOC, int, SK_U16);
-#ifdef OTHER_PHY
-static int     SkGePortCheckUpLone(SK_AC*, SK_IOC, int);
-static int     SkGePortCheckUpNat(SK_AC*, SK_IOC, int);
-static void    SkPhyIsrLone(SK_AC*, SK_IOC, int, SK_U16);
-#endif /* OTHER_PHY */
-
-/*
- * array of Rx counter from XMAC which are checked
- * in AutoSense mode to check whether a link is not able to auto-negotiate.
- */
-static const SK_U16 SkGeRxRegs[]= {
-       XM_RXF_64B,
-       XM_RXF_127B,
-       XM_RXF_255B,
-       XM_RXF_511B,
-       XM_RXF_1023B,
-       XM_RXF_MAX_SZ
-} ;
-
-#ifdef __C2MAN__
-/*
- *     Special IRQ function
- *
- *     General Description:
- *
- */
-intro()
-{}
-#endif
-
-/* Define return codes of SkGePortCheckUp and CheckShort */
-#define        SK_HW_PS_NONE           0        /* No action needed */
-#define        SK_HW_PS_RESTART        1       /* Restart needed */
-#define        SK_HW_PS_LINK           2       /* Link Up actions needed */
-
-/******************************************************************************
- *
- *     SkHWInitDefSense() - Default Autosensing mode initialization
- *
- * Description: sets the PLinkMode for HWInit
- *
- * Returns: N/A
- */
-static void SkHWInitDefSense(
-SK_AC  *pAC,   /* adapter context */
-SK_IOC IoC,    /* IO context */
-int            Port)   /* Port Index (MAC_1 + n) */
-{
-       SK_GEPORT       *pPrt;          /* GIni Port struct pointer */
-
-       pPrt = &pAC->GIni.GP[Port];
-
-       pPrt->PAutoNegTimeOut = 0;
-
-       if (pPrt->PLinkModeConf != SK_LMODE_AUTOSENSE) {
-               pPrt->PLinkMode = pPrt->PLinkModeConf;
-               return;
-       }
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ,
-               ("AutoSensing: First mode %d on Port %d\n",
-               (int)SK_LMODE_AUTOFULL, Port));
-
-       pPrt->PLinkMode = SK_LMODE_AUTOFULL;
-
-       return;
-}      /* SkHWInitDefSense */
-
-
-/******************************************************************************
- *
- *     SkHWSenseGetNext() - Get Next Autosensing Mode
- *
- * Description: gets the appropriate next mode
- *
- * Note:
- *
- */
-SK_U8 SkHWSenseGetNext(
-SK_AC  *pAC,   /* adapter context */
-SK_IOC IoC,    /* IO context */
-int            Port)   /* Port Index (MAC_1 + n) */
-{
-       SK_GEPORT       *pPrt;          /* GIni Port struct pointer */
-
-       pPrt = &pAC->GIni.GP[Port];
-
-       pPrt->PAutoNegTimeOut = 0;
-
-       if (pPrt->PLinkModeConf != SK_LMODE_AUTOSENSE) {
-               /* Leave all as configured */
-               return(pPrt->PLinkModeConf);
-       }
-
-       if (pPrt->PLinkMode == SK_LMODE_AUTOFULL) {
-               /* Return next mode AUTOBOTH */
-               return(SK_LMODE_AUTOBOTH);
-       }
-
-       /* Return default autofull */
-       return(SK_LMODE_AUTOFULL);
-}      /* SkHWSenseGetNext */
-
-
-/******************************************************************************
- *
- *     SkHWSenseSetNext() - Autosensing Set next mode
- *
- * Description:        sets the appropriate next mode
- *
- * Returns: N/A
- */
-void SkHWSenseSetNext(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* IO context */
-int            Port,           /* Port Index (MAC_1 + n) */
-SK_U8  NewMode)        /* New Mode to be written in sense mode */
-{
-       SK_GEPORT       *pPrt;          /* GIni Port struct pointer */
-
-       pPrt = &pAC->GIni.GP[Port];
-
-       pPrt->PAutoNegTimeOut = 0;
-
-       if (pPrt->PLinkModeConf != SK_LMODE_AUTOSENSE) {
-               return;
-       }
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ,
-               ("AutoSensing: next mode %d on Port %d\n",
-               (int)NewMode, Port));
-
-       pPrt->PLinkMode = NewMode;
-
-       return;
-}      /* SkHWSenseSetNext */
-
-
-/******************************************************************************
- *
- *     SkHWLinkDown() - Link Down handling
- *
- * Description: handles the hardware link down signal
- *
- * Returns: N/A
- */
-void SkHWLinkDown(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* IO context */
-int            Port)           /* Port Index (MAC_1 + n) */
-{
-       SK_GEPORT       *pPrt;          /* GIni Port struct pointer */
-
-       pPrt = &pAC->GIni.GP[Port];
-
-       /* Disable all MAC interrupts */
-       SkMacIrqDisable(pAC, IoC, Port);
-
-       /* Disable Receiver and Transmitter */
-       SkMacRxTxDisable(pAC, IoC, Port);
-
-       /* Init default sense mode */
-       SkHWInitDefSense(pAC, IoC, Port);
-
-       if (!pPrt->PHWLinkUp) {
-               return;
-       }
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ,
-               ("Link down Port %d\n", Port));
-
-       /* Set Link to DOWN */
-       pPrt->PHWLinkUp = SK_FALSE;
-
-       /* Reset Port stati */
-       pPrt->PLinkModeStatus = SK_LMODE_STAT_UNKNOWN;
-       pPrt->PFlowCtrlStatus = SK_FLOW_STAT_NONE;
-       pPrt->PLinkSpeedUsed = SK_LSPEED_STAT_INDETERMINATED;
-
-       /* Re-init Phy especially when the AutoSense default is set now */
-       SkMacInitPhy(pAC, IoC, Port, SK_FALSE);
-
-       /* GP0: used for workaround of Rev. C Errata 2 */
-
-       /* Do NOT signal to RLMT */
-
-       /* Do NOT start the timer here */
-}      /* SkHWLinkDown */
-
-
-/******************************************************************************
- *
- *     SkHWLinkUp() - Link Up handling
- *
- * Description: handles the hardware link up signal
- *
- * Returns: N/A
- */
-void SkHWLinkUp(
-SK_AC  *pAC,   /* adapter context */
-SK_IOC IoC,    /* IO context */
-int            Port)   /* Port Index (MAC_1 + n) */
-{
-       SK_GEPORT       *pPrt;          /* GIni Port struct pointer */
-
-       pPrt = &pAC->GIni.GP[Port];
-
-       if (pPrt->PHWLinkUp) {
-               /* We do NOT need to proceed on active link */
-               return;
-       }
-
-       pPrt->PHWLinkUp = SK_TRUE;
-       pPrt->PAutoNegFail = SK_FALSE;
-       pPrt->PLinkModeStatus = SK_LMODE_STAT_UNKNOWN;
-
-       if (pPrt->PLinkMode != SK_LMODE_AUTOHALF &&
-           pPrt->PLinkMode != SK_LMODE_AUTOFULL &&
-           pPrt->PLinkMode != SK_LMODE_AUTOBOTH) {
-               /* Link is up and no Auto-negotiation should be done */
-
-               /* Link speed should be the configured one */
-               switch (pPrt->PLinkSpeed) {
-               case SK_LSPEED_AUTO:
-                       /* default is 1000 Mbps */
-               case SK_LSPEED_1000MBPS:
-                       pPrt->PLinkSpeedUsed = SK_LSPEED_STAT_1000MBPS;
-                       break;
-               case SK_LSPEED_100MBPS:
-                       pPrt->PLinkSpeedUsed = SK_LSPEED_STAT_100MBPS;
-                       break;
-               case SK_LSPEED_10MBPS:
-                       pPrt->PLinkSpeedUsed = SK_LSPEED_STAT_10MBPS;
-                       break;
-               }
-
-               /* Set Link Mode Status */
-               if (pPrt->PLinkMode == SK_LMODE_FULL) {
-                       pPrt->PLinkModeStatus = SK_LMODE_STAT_FULL;
-               }
-               else {
-                       pPrt->PLinkModeStatus = SK_LMODE_STAT_HALF;
-               }
-
-               /* No flow control without auto-negotiation */
-               pPrt->PFlowCtrlStatus = SK_FLOW_STAT_NONE;
-
-               /* enable Rx/Tx */
-               SkMacRxTxEnable(pAC, IoC, Port);
-       }
-}      /* SkHWLinkUp */
-
-
-/******************************************************************************
- *
- *     SkMacParity() - MAC parity workaround
- *
- * Description: handles MAC parity errors correctly
- *
- * Returns: N/A
- */
-static void SkMacParity(
-SK_AC  *pAC,   /* adapter context */
-SK_IOC IoC,    /* IO context */
-int            Port)   /* Port Index of the port failed */
-{
-       SK_EVPARA       Para;
-       SK_GEPORT       *pPrt;          /* GIni Port struct pointer */
-       SK_U32          TxMax;          /* TxMax Counter */
-
-       pPrt = &pAC->GIni.GP[Port];
-
-       /* Clear IRQ Tx Parity Error */
-       if (pAC->GIni.GIGenesis) {
-               SK_OUT16(IoC, MR_ADDR(Port, TX_MFF_CTRL1), MFF_CLR_PERR);
-       }
-       else {
-               /* HW-Bug #8: cleared by GMF_CLI_TX_FC instead of GMF_CLI_TX_PE */
-               SK_OUT8(IoC, MR_ADDR(Port, TX_GMF_CTRL_T),
-                       (SK_U8)((pAC->GIni.GIChipRev == 0) ? GMF_CLI_TX_FC : GMF_CLI_TX_PE));
-       }
-
-       if (pPrt->PCheckPar) {
-               if (Port == MAC_1) {
-                       SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E016, SKERR_SIRQ_E016MSG);
-               }
-               else {
-                       SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E017, SKERR_SIRQ_E017MSG);
-               }
-               Para.Para64 = Port;
-               SkEventQueue(pAC, SKGE_DRV, SK_DRV_PORT_FAIL, Para);
-               Para.Para32[0] = Port;
-               SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_LINK_DOWN, Para);
-
-               return;
-       }
-
-       /* Check whether frames with a size of 1k were sent */
-       if (pAC->GIni.GIGenesis) {
-               /* Snap statistic counters */
-               (void)SkXmUpdateStats(pAC, IoC, Port);
-
-               (void)SkXmMacStatistic(pAC, IoC, Port, XM_TXF_MAX_SZ, &TxMax);
-       }
-       else {
-               (void)SkGmMacStatistic(pAC, IoC, Port, GM_TXF_1518B, &TxMax);
-       }
-
-       if (TxMax > 0) {
-               /* From now on check the parity */
-               pPrt->PCheckPar = SK_TRUE;
-       }
-}      /* SkMacParity */
-
-
-/******************************************************************************
- *
- *     SkGeHwErr() - Hardware Error service routine
- *
- * Description: handles all HW Error interrupts
- *
- * Returns: N/A
- */
-static void SkGeHwErr(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* IO context */
-SK_U32 HwStatus)       /* Interrupt status word */
-{
-       SK_EVPARA       Para;
-       SK_U16          Word;
-
-       if ((HwStatus & (IS_IRQ_MST_ERR | IS_IRQ_STAT)) != 0) {
-               /* PCI Errors occured */
-               if ((HwStatus & IS_IRQ_STAT) != 0) {
-                       SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E013, SKERR_SIRQ_E013MSG);
-               }
-               else {
-                       SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E012, SKERR_SIRQ_E012MSG);
-               }
-
-               /* Reset all bits in the PCI STATUS register */
-               SK_IN16(IoC, PCI_C(PCI_STATUS), &Word);
-
-               SK_OUT8(IoC, B2_TST_CTRL1, TST_CFG_WRITE_ON);
-               SK_OUT16(IoC, PCI_C(PCI_STATUS), Word | PCI_ERRBITS);
-               SK_OUT8(IoC, B2_TST_CTRL1, TST_CFG_WRITE_OFF);
-
-               Para.Para64 = 0;
-               SkEventQueue(pAC, SKGE_DRV, SK_DRV_ADAP_FAIL, Para);
-       }
-
-       if (pAC->GIni.GIGenesis) {
-               if ((HwStatus & IS_NO_STAT_M1) != 0) {
-                       /* Ignore it */
-                       /* This situation is also indicated in the descriptor */
-                       SK_OUT16(IoC, MR_ADDR(MAC_1, RX_MFF_CTRL1), MFF_CLR_INSTAT);
-               }
-
-               if ((HwStatus & IS_NO_STAT_M2) != 0) {
-                       /* Ignore it */
-                       /* This situation is also indicated in the descriptor */
-                       SK_OUT16(IoC, MR_ADDR(MAC_2, RX_MFF_CTRL1), MFF_CLR_INSTAT);
-               }
-
-               if ((HwStatus & IS_NO_TIST_M1) != 0) {
-                       /* Ignore it */
-                       /* This situation is also indicated in the descriptor */
-                       SK_OUT16(IoC, MR_ADDR(MAC_1, RX_MFF_CTRL1), MFF_CLR_INTIST);
-               }
-
-               if ((HwStatus & IS_NO_TIST_M2) != 0) {
-                       /* Ignore it */
-                       /* This situation is also indicated in the descriptor */
-                       SK_OUT16(IoC, MR_ADDR(MAC_2, RX_MFF_CTRL1), MFF_CLR_INTIST);
-               }
-       }
-       else {  /* YUKON */
-               /* This is necessary only for Rx timing measurements */
-               if ((HwStatus & IS_IRQ_TIST_OV) != 0) {
-                       /* Clear Time Stamp Timer IRQ */
-                       SK_OUT8(IoC, GMAC_TI_ST_CTRL, (SK_U8)GMT_ST_CLR_IRQ);
-               }
-
-               if ((HwStatus & IS_IRQ_SENSOR) != 0) {
-                       /* Clear I2C IRQ */
-                       SK_OUT32(IoC, B2_I2C_IRQ, I2C_CLR_IRQ);
-               }
-       }
-
-       if ((HwStatus & IS_RAM_RD_PAR) != 0) {
-               SK_OUT16(IoC, B3_RI_CTRL, RI_CLR_RD_PERR);
-               SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E014, SKERR_SIRQ_E014MSG);
-               Para.Para64 = 0;
-               SkEventQueue(pAC, SKGE_DRV, SK_DRV_ADAP_FAIL, Para);
-       }
-
-       if ((HwStatus & IS_RAM_WR_PAR) != 0) {
-               SK_OUT16(IoC, B3_RI_CTRL, RI_CLR_WR_PERR);
-               SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E015, SKERR_SIRQ_E015MSG);
-               Para.Para64 = 0;
-               SkEventQueue(pAC, SKGE_DRV, SK_DRV_ADAP_FAIL, Para);
-       }
-
-       if ((HwStatus & IS_M1_PAR_ERR) != 0) {
-               SkMacParity(pAC, IoC, MAC_1);
-       }
-
-       if ((HwStatus & IS_M2_PAR_ERR) != 0) {
-               SkMacParity(pAC, IoC, MAC_2);
-       }
-
-       if ((HwStatus & IS_R1_PAR_ERR) != 0) {
-               /* Clear IRQ */
-               SK_OUT32(IoC, B0_R1_CSR, CSR_IRQ_CL_P);
-
-               SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E018, SKERR_SIRQ_E018MSG);
-               Para.Para64 = MAC_1;
-               SkEventQueue(pAC, SKGE_DRV, SK_DRV_PORT_FAIL, Para);
-               Para.Para32[0] = MAC_1;
-               SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_LINK_DOWN, Para);
-       }
-
-       if ((HwStatus & IS_R2_PAR_ERR) != 0) {
-               /* Clear IRQ */
-               SK_OUT32(IoC, B0_R2_CSR, CSR_IRQ_CL_P);
-
-               SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E019, SKERR_SIRQ_E019MSG);
-               Para.Para64 = MAC_2;
-               SkEventQueue(pAC, SKGE_DRV, SK_DRV_PORT_FAIL, Para);
-               Para.Para32[0] = MAC_2;
-               SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_LINK_DOWN, Para);
-       }
-}      /* SkGeHwErr */
-
-
-/******************************************************************************
- *
- *     SkGeSirqIsr() - Special Interrupt Service Routine
- *
- * Description: handles all non data transfer specific interrupts (slow path)
- *
- * Returns: N/A
- */
-void SkGeSirqIsr(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* IO context */
-SK_U32 Istatus)        /* Interrupt status word */
-{
-       SK_EVPARA       Para;
-       SK_U32          RegVal32;       /* Read register value */
-       SK_GEPORT       *pPrt;          /* GIni Port struct pointer */
-       unsigned        Len;
-       SK_U64          Octets;
-       SK_U16          PhyInt;
-       SK_U16          PhyIMsk;
-       int                     i;
-
-       if ((Istatus & IS_HW_ERR) != 0) {
-               /* read the HW Error Interrupt source */
-               SK_IN32(IoC, B0_HWE_ISRC, &RegVal32);
-
-               SkGeHwErr(pAC, IoC, RegVal32);
-       }
-
-       /*
-        * Packet Timeout interrupts
-        */
-       /* Check whether MACs are correctly initialized */
-       if (((Istatus & (IS_PA_TO_RX1 | IS_PA_TO_TX1)) != 0) &&
-               pAC->GIni.GP[MAC_1].PState == SK_PRT_RESET) {
-               /* MAC 1 was not initialized but Packet timeout occured */
-               SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_SIRQ_E004,
-                       SKERR_SIRQ_E004MSG);
-       }
-
-       if (((Istatus & (IS_PA_TO_RX2 | IS_PA_TO_TX2)) != 0) &&
-           pAC->GIni.GP[MAC_2].PState == SK_PRT_RESET) {
-               /* MAC 2 was not initialized but Packet timeout occured */
-               SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_SIRQ_E005,
-                       SKERR_SIRQ_E005MSG);
-       }
-
-       if ((Istatus & IS_PA_TO_RX1) != 0) {
-               /* Means network is filling us up */
-               SK_ERR_LOG(pAC, SK_ERRCL_HW | SK_ERRCL_INIT, SKERR_SIRQ_E002,
-                       SKERR_SIRQ_E002MSG);
-               SK_OUT16(IoC, B3_PA_CTRL, PA_CLR_TO_RX1);
-       }
-
-       if ((Istatus & IS_PA_TO_RX2) != 0) {
-               /* Means network is filling us up */
-               SK_ERR_LOG(pAC, SK_ERRCL_HW | SK_ERRCL_INIT, SKERR_SIRQ_E003,
-                       SKERR_SIRQ_E003MSG);
-               SK_OUT16(IoC, B3_PA_CTRL, PA_CLR_TO_RX2);
-       }
-
-       if ((Istatus & IS_PA_TO_TX1) != 0) {
-
-               pPrt = &pAC->GIni.GP[0];
-
-               /* May be a normal situation in a server with a slow network */
-               SK_OUT16(IoC, B3_PA_CTRL, PA_CLR_TO_TX1);
-
-               /*
-                * workaround: if in half duplex mode, check for Tx hangup.
-                * Read number of TX'ed bytes, wait for 10 ms, then compare
-                * the number with current value. If nothing changed, we assume
-                * that Tx is hanging and do a FIFO flush (see event routine).
-                */
-               if ((pPrt->PLinkModeStatus == SK_LMODE_STAT_HALF ||
-                   pPrt->PLinkModeStatus == SK_LMODE_STAT_AUTOHALF) &&
-                   !pPrt->HalfDupTimerActive) {
-                       /*
-                        * many more pack. arb. timeouts may come in between,
-                        * we ignore those
-                        */
-                       pPrt->HalfDupTimerActive = SK_TRUE;
-
-                       Len = sizeof(SK_U64);
-                       SkPnmiGetVar(pAC, IoC, OID_SKGE_STAT_TX_OCTETS, (char *)&Octets,
-                               &Len, (SK_U32) SK_PNMI_PORT_PHYS2INST(pAC, 0),
-                               pAC->Rlmt.Port[0].Net->NetNumber);
-
-                       pPrt->LastOctets = Octets;
-
-                       Para.Para32[0] = 0;
-                       SkTimerStart(pAC, IoC, &pPrt->HalfDupChkTimer, SK_HALFDUP_CHK_TIME,
-                               SKGE_HWAC, SK_HWEV_HALFDUP_CHK, Para);
-               }
-       }
-
-       if ((Istatus & IS_PA_TO_TX2) != 0) {
-
-               pPrt = &pAC->GIni.GP[1];
-
-               /* May be a normal situation in a server with a slow network */
-               SK_OUT16(IoC, B3_PA_CTRL, PA_CLR_TO_TX2);
-
-               /* workaround: see above */
-               if ((pPrt->PLinkModeStatus == SK_LMODE_STAT_HALF ||
-                    pPrt->PLinkModeStatus == SK_LMODE_STAT_AUTOHALF) &&
-                   !pPrt->HalfDupTimerActive) {
-                       pPrt->HalfDupTimerActive = SK_TRUE;
-
-                       Len = sizeof(SK_U64);
-                       SkPnmiGetVar(pAC, IoC, OID_SKGE_STAT_TX_OCTETS, (char *)&Octets,
-                               &Len, (SK_U32) SK_PNMI_PORT_PHYS2INST(pAC, 1),
-                               pAC->Rlmt.Port[1].Net->NetNumber);
-
-                       pPrt->LastOctets = Octets;
-
-                       Para.Para32[0] = 1;
-                       SkTimerStart(pAC, IoC, &pPrt->HalfDupChkTimer, SK_HALFDUP_CHK_TIME,
-                               SKGE_HWAC, SK_HWEV_HALFDUP_CHK, Para);
-               }
-       }
-
-       /* Check interrupts of the particular queues */
-       if ((Istatus & IS_R1_C) != 0) {
-               /* Clear IRQ */
-               SK_OUT32(IoC, B0_R1_CSR, CSR_IRQ_CL_C);
-               SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_SIRQ_E006,
-                       SKERR_SIRQ_E006MSG);
-               Para.Para64 = MAC_1;
-               SkEventQueue(pAC, SKGE_DRV, SK_DRV_PORT_FAIL, Para);
-               Para.Para32[0] = MAC_1;
-               SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_LINK_DOWN, Para);
-       }
-
-       if ((Istatus & IS_R2_C) != 0) {
-               /* Clear IRQ */
-               SK_OUT32(IoC, B0_R2_CSR, CSR_IRQ_CL_C);
-               SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_SIRQ_E007,
-                       SKERR_SIRQ_E007MSG);
-               Para.Para64 = MAC_2;
-               SkEventQueue(pAC, SKGE_DRV, SK_DRV_PORT_FAIL, Para);
-               Para.Para32[0] = MAC_2;
-               SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_LINK_DOWN, Para);
-       }
-
-       if ((Istatus & IS_XS1_C) != 0) {
-               /* Clear IRQ */
-               SK_OUT32(IoC, B0_XS1_CSR, CSR_IRQ_CL_C);
-               SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_SIRQ_E008,
-                       SKERR_SIRQ_E008MSG);
-               Para.Para64 = MAC_1;
-               SkEventQueue(pAC, SKGE_DRV, SK_DRV_PORT_FAIL, Para);
-               Para.Para32[0] = MAC_1;
-               SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_LINK_DOWN, Para);
-       }
-
-       if ((Istatus & IS_XA1_C) != 0) {
-               /* Clear IRQ */
-               SK_OUT32(IoC, B0_XA1_CSR, CSR_IRQ_CL_C);
-               SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_SIRQ_E009,
-                       SKERR_SIRQ_E009MSG);
-               Para.Para64 = MAC_1;
-               SkEventQueue(pAC, SKGE_DRV, SK_DRV_PORT_FAIL, Para);
-               Para.Para32[0] = MAC_1;
-               SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_LINK_DOWN, Para);
-       }
-
-       if ((Istatus & IS_XS2_C) != 0) {
-               /* Clear IRQ */
-               SK_OUT32(IoC, B0_XS2_CSR, CSR_IRQ_CL_C);
-               SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_SIRQ_E010,
-                       SKERR_SIRQ_E010MSG);
-               Para.Para64 = MAC_2;
-               SkEventQueue(pAC, SKGE_DRV, SK_DRV_PORT_FAIL, Para);
-               Para.Para32[0] = MAC_2;
-               SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_LINK_DOWN, Para);
-       }
-
-       if ((Istatus & IS_XA2_C) != 0) {
-               /* Clear IRQ */
-               SK_OUT32(IoC, B0_XA2_CSR, CSR_IRQ_CL_C);
-               SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_SIRQ_E011,
-                       SKERR_SIRQ_E011MSG);
-               Para.Para64 = MAC_2;
-               SkEventQueue(pAC, SKGE_DRV, SK_DRV_PORT_FAIL, Para);
-               Para.Para32[0] = MAC_2;
-               SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_LINK_DOWN, Para);
-       }
-
-       /* External reg interrupt */
-       if ((Istatus & IS_EXT_REG) != 0) {
-               /* Test IRQs from PHY */
-               for (i = 0; i < pAC->GIni.GIMacsFound; i++) {
-
-                       pPrt = &pAC->GIni.GP[i];
-
-                       if (pPrt->PState == SK_PRT_RESET) {
-                               continue;
-                       }
-
-                       switch (pPrt->PhyType) {
-
-                       case SK_PHY_XMAC:
-                               break;
-
-                       case SK_PHY_BCOM:
-                               SkXmPhyRead(pAC, IoC, i, PHY_BCOM_INT_STAT, &PhyInt);
-                               SkXmPhyRead(pAC, IoC, i, PHY_BCOM_INT_MASK, &PhyIMsk);
-
-                               if ((PhyInt & ~PhyIMsk) != 0) {
-                                       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ,
-                                               ("Port %d Bcom Int: 0x%04X Mask: 0x%04X\n",
-                                               i, PhyInt, PhyIMsk));
-                                       SkPhyIsrBcom(pAC, IoC, i, PhyInt);
-                               }
-                               break;
-
-                       case SK_PHY_MARV_COPPER:
-                       case SK_PHY_MARV_FIBER:
-                               SkGmPhyRead(pAC, IoC, i, PHY_MARV_INT_STAT, &PhyInt);
-                               SkGmPhyRead(pAC, IoC, i, PHY_MARV_INT_MASK, &PhyIMsk);
-
-                               if ((PhyInt & PhyIMsk) != 0) {
-                                       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ,
-                                               ("Port %d Marv Int: 0x%04X Mask: 0x%04X\n",
-                                               i, PhyInt, PhyIMsk));
-                                       SkPhyIsrGmac(pAC, IoC, i, PhyInt);
-                               }
-                               break;
-
-#ifdef OTHER_PHY
-                       case SK_PHY_LONE:
-                               SkXmPhyRead(pAC, IoC, i, PHY_LONE_INT_STAT, &PhyInt);
-                               SkXmPhyRead(pAC, IoC, i, PHY_LONE_INT_ENAB, &PhyIMsk);
-
-                               if ((PhyInt & PhyIMsk) != 0) {
-                                       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ,
-                                               ("Port %d Lone Int: %x Mask: %x\n",
-                                               i, PhyInt, PhyIMsk));
-                                       SkPhyIsrLone(pAC, IoC, i, PhyInt);
-                               }
-                               break;
-                       case SK_PHY_NAT:
-                               /* todo: National */
-                               break;
-#endif /* OTHER_PHY */
-                       }
-               }
-       }
-
-       /* I2C Ready interrupt */
-       if ((Istatus & IS_I2C_READY) != 0) {
-               SkI2cIsr(pAC, IoC);
-       }
-
-       if ((Istatus & IS_LNK_SYNC_M1) != 0) {
-               /*
-                * We do NOT need the Link Sync interrupt, because it shows
-                * us only a link going down.
-                */
-               /* clear interrupt */
-               SK_OUT8(IoC, MR_ADDR(MAC_1, LNK_SYNC_CTRL), LED_CLR_IRQ);
-       }
-
-       /* Check MAC after link sync counter */
-       if ((Istatus & IS_MAC1) != 0) {
-               /* IRQ from MAC 1 */
-               SkMacIrq(pAC, IoC, MAC_1);
-       }
-
-       if ((Istatus & IS_LNK_SYNC_M2) != 0) {
-               /*
-                * We do NOT need the Link Sync interrupt, because it shows
-                * us only a link going down.
-                */
-               /* clear interrupt */
-               SK_OUT8(IoC, MR_ADDR(MAC_2, LNK_SYNC_CTRL), LED_CLR_IRQ);
-       }
-
-       /* Check MAC after link sync counter */
-       if ((Istatus & IS_MAC2) != 0) {
-               /* IRQ from MAC 2 */
-               SkMacIrq(pAC, IoC, MAC_2);
-       }
-
-       /* Timer interrupt (served last) */
-       if ((Istatus & IS_TIMINT) != 0) {
-               SkHwtIsr(pAC, IoC);
-       }
-}      /* SkGeSirqIsr */
-
-
-/******************************************************************************
- *
- * SkGePortCheckShorts() - Implementing XMAC Workaround Errata # 2
- *
- * return:
- *     0        o.k. nothing needed
- *     1       Restart needed on this port
- */
-static int     SkGePortCheckShorts(
-SK_AC  *pAC,           /* Adapter Context */
-SK_IOC IoC,            /* IO Context */
-int            Port)           /* Which port should be checked */
-{
-       SK_U32          Shorts;                 /* Short Event Counter */
-       SK_U32          CheckShorts;    /* Check value for Short Event Counter */
-       SK_U64          RxCts;                  /* Rx Counter (packets on network) */
-       SK_U32          RxTmp;                  /* Rx temp. Counter */
-       SK_U32          FcsErrCts;              /* FCS Error Counter */
-       SK_GEPORT       *pPrt;                  /* GIni Port struct pointer */
-       int                     Rtv;                    /* Return value */
-       int                     i;
-
-       pPrt = &pAC->GIni.GP[Port];
-
-       /* Default: no action */
-       Rtv = SK_HW_PS_NONE;
-
-       (void)SkXmUpdateStats(pAC, IoC, Port);
-
-       /* Extra precaution: check for short Event counter */
-       (void)SkXmMacStatistic(pAC, IoC, Port, XM_RXE_SHT_ERR, &Shorts);
-
-       /*
-        * Read Rx counter (packets seen on the network and not necessarily
-        * really received.
-        */
-       RxCts = 0;
-
-       for (i = 0; i < sizeof(SkGeRxRegs)/sizeof(SkGeRxRegs[0]); i++) {
-               (void)SkXmMacStatistic(pAC, IoC, Port, SkGeRxRegs[i], &RxTmp);
-               RxCts += (SK_U64)RxTmp;
-       }
-
-       /* On default: check shorts against zero */
-       CheckShorts = 0;
-
-       /* Extra precaution on active links */
-       if (pPrt->PHWLinkUp) {
-               /* Reset Link Restart counter */
-               pPrt->PLinkResCt = 0;
-               pPrt->PAutoNegTOCt = 0;
-
-               /* If link is up check for 2 */
-               CheckShorts = 2;
-
-               (void)SkXmMacStatistic(pAC, IoC, Port, XM_RXF_FCS_ERR, &FcsErrCts);
-
-               if (pPrt->PLinkModeConf == SK_LMODE_AUTOSENSE &&
-                   pPrt->PLipaAutoNeg == SK_LIPA_UNKNOWN &&
-                   (pPrt->PLinkMode == SK_LMODE_HALF ||
-                        pPrt->PLinkMode == SK_LMODE_FULL)) {
-                       /*
-                        * This is autosensing and we are in the fallback
-                        * manual full/half duplex mode.
-                        */
-                       if (RxCts == pPrt->PPrevRx) {
-                               /* Nothing received, restart link */
-                               pPrt->PPrevFcs = FcsErrCts;
-                               pPrt->PPrevShorts = Shorts;
-
-                               return(SK_HW_PS_RESTART);
-                       }
-                       else {
-                               pPrt->PLipaAutoNeg = SK_LIPA_MANUAL;
-                       }
-               }
-
-               if (((RxCts - pPrt->PPrevRx) > pPrt->PRxLim) ||
-                   (!(FcsErrCts - pPrt->PPrevFcs))) {
-                       /*
-                        * Note: The compare with zero above has to be done the way shown,
-                        * otherwise the Linux driver will have a problem.
-                        */
-                       /*
-                        * We received a bunch of frames or no CRC error occured on the
-                        * network -> ok.
-                        */
-                       pPrt->PPrevRx = RxCts;
-                       pPrt->PPrevFcs = FcsErrCts;
-                       pPrt->PPrevShorts = Shorts;
-
-                       return(SK_HW_PS_NONE);
-               }
-
-               pPrt->PPrevFcs = FcsErrCts;
-       }
-
-
-       if ((Shorts - pPrt->PPrevShorts) > CheckShorts) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ,
-                       ("Short Event Count Restart Port %d \n", Port));
-               Rtv = SK_HW_PS_RESTART;
-       }
-
-       pPrt->PPrevShorts = Shorts;
-       pPrt->PPrevRx = RxCts;
-
-       return(Rtv);
-}      /* SkGePortCheckShorts */
-
-
-/******************************************************************************
- *
- * SkGePortCheckUp() - Check if the link is up
- *
- * return:
- *     0        o.k. nothing needed
- *     1       Restart needed on this port
- *     2       Link came up
- */
-static int     SkGePortCheckUp(
-SK_AC  *pAC,           /* Adapter Context */
-SK_IOC IoC,            /* IO Context */
-int            Port)           /* Which port should be checked */
-{
-       switch (pAC->GIni.GP[Port].PhyType) {
-       case SK_PHY_XMAC:
-               return(SkGePortCheckUpXmac(pAC, IoC, Port));
-       case SK_PHY_BCOM:
-               return(SkGePortCheckUpBcom(pAC, IoC, Port));
-       case SK_PHY_MARV_COPPER:
-       case SK_PHY_MARV_FIBER:
-               return(SkGePortCheckUpGmac(pAC, IoC, Port));
-#ifdef OTHER_PHY
-       case SK_PHY_LONE:
-               return(SkGePortCheckUpLone(pAC, IoC, Port));
-       case SK_PHY_NAT:
-               return(SkGePortCheckUpNat(pAC, IoC, Port));
-#endif /* OTHER_PHY */
-       }
-       return(SK_HW_PS_NONE);
-}      /* SkGePortCheckUp */
-
-
-/******************************************************************************
- *
- * SkGePortCheckUpXmac() - Implementing of the Workaround Errata # 2
- *
- * return:
- *     0        o.k. nothing needed
- *     1       Restart needed on this port
- *     2       Link came up
- */
-static int SkGePortCheckUpXmac(
-SK_AC  *pAC,           /* Adapter Context */
-SK_IOC IoC,            /* IO Context */
-int            Port)           /* Which port should be checked */
-{
-       SK_U32          Shorts;         /* Short Event Counter */
-       SK_GEPORT       *pPrt;          /* GIni Port struct pointer */
-       int                     Done;
-       SK_U32          GpReg;          /* General Purpose register value */
-       SK_U16          Isrc;           /* Interrupt source register */
-       SK_U16          IsrcSum;        /* Interrupt source register sum */
-       SK_U16          LpAb;           /* Link Partner Ability */
-       SK_U16          ResAb;          /* Resolved Ability */
-       SK_U16          ExtStat;        /* Extended Status Register */
-       SK_BOOL         AutoNeg;        /* Is Auto-negotiation used ? */
-       SK_U8           NextMode;       /* Next AutoSensing Mode */
-
-       pPrt = &pAC->GIni.GP[Port];
-
-       if (pPrt->PHWLinkUp) {
-               if (pPrt->PhyType != SK_PHY_XMAC) {
-                       return(SK_HW_PS_NONE);
-               }
-               else {
-                       return(SkGePortCheckShorts(pAC, IoC, Port));
-               }
-       }
-
-       IsrcSum = pPrt->PIsave;
-       pPrt->PIsave = 0;
-
-       /* Now wait for each port's link */
-       if (pPrt->PLinkMode == SK_LMODE_HALF || pPrt->PLinkMode == SK_LMODE_FULL) {
-               AutoNeg = SK_FALSE;
-       }
-       else {
-               AutoNeg = SK_TRUE;
-       }
-
-       if (pPrt->PLinkBroken) {
-               /* Link was broken */
-               XM_IN32(IoC, Port, XM_GP_PORT, &GpReg);
-
-               if ((GpReg & XM_GP_INP_ASS) == 0) {
-                       /* The Link is in sync */
-                       XM_IN16(IoC, Port, XM_ISRC, &Isrc);
-                       IsrcSum |= Isrc;
-                       SkXmAutoNegLipaXmac(pAC, IoC, Port, IsrcSum);
-
-                       if ((Isrc & XM_IS_INP_ASS) == 0) {
-                               /* It has been in sync since last time */
-                               /* Restart the PORT */
-                               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ,
-                                       ("Link in sync Restart Port %d\n", Port));
-
-                               (void)SkXmUpdateStats(pAC, IoC, Port);
-
-                               /* We now need to reinitialize the PrevShorts counter */
-                               (void)SkXmMacStatistic(pAC, IoC, Port, XM_RXE_SHT_ERR, &Shorts);
-                               pPrt->PPrevShorts = Shorts;
-
-                               pPrt->PLinkBroken = SK_FALSE;
-
-                               /*
-                                * Link Restart Workaround:
-                                *  it may be possible that the other Link side
-                                *  restarts its link as well an we detect
-                                *  another LinkBroken. To prevent this
-                                *  happening we check for a maximum number
-                                *  of consecutive restart. If those happens,
-                                *  we do NOT restart the active link and
-                                *  check whether the link is now o.k.
-                                */
-                               pPrt->PLinkResCt++;
-
-                               pPrt->PAutoNegTimeOut = 0;
-
-                               if (pPrt->PLinkResCt < SK_MAX_LRESTART) {
-                                       return(SK_HW_PS_RESTART);
-                               }
-
-                               pPrt->PLinkResCt = 0;
-
-                               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-                                       ("Do NOT restart on Port %d %x %x\n", Port, Isrc, IsrcSum));
-                       }
-                       else {
-                               pPrt->PIsave = (SK_U16)(IsrcSum & XM_IS_AND);
-
-                               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-                                       ("Save Sync/nosync Port %d %x %x\n", Port, Isrc, IsrcSum));
-
-                               /* Do nothing more if link is broken */
-                               return(SK_HW_PS_NONE);
-                       }
-               }
-               else {
-                       /* Do nothing more if link is broken */
-                       return(SK_HW_PS_NONE);
-               }
-
-       }
-       else {
-               /* Link was not broken, check if it is */
-               XM_IN16(IoC, Port, XM_ISRC, &Isrc);
-               IsrcSum |= Isrc;
-               if ((Isrc & XM_IS_INP_ASS) != 0) {
-                       XM_IN16(IoC, Port, XM_ISRC, &Isrc);
-                       IsrcSum |= Isrc;
-                       if ((Isrc & XM_IS_INP_ASS) != 0) {
-                               XM_IN16(IoC, Port, XM_ISRC, &Isrc);
-                               IsrcSum |= Isrc;
-                               if ((Isrc & XM_IS_INP_ASS) != 0) {
-                                       pPrt->PLinkBroken = SK_TRUE;
-                                       /* Re-Init Link partner Autoneg flag */
-                                       pPrt->PLipaAutoNeg = SK_LIPA_UNKNOWN;
-                                       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ,
-                                               ("Link broken Port %d\n", Port));
-
-                                       /* Cable removed-> reinit sense mode */
-                                       SkHWInitDefSense(pAC, IoC, Port);
-
-                                       return(SK_HW_PS_RESTART);
-                               }
-                       }
-               }
-               else {
-                       SkXmAutoNegLipaXmac(pAC, IoC, Port, Isrc);
-                       if (SkGePortCheckShorts(pAC, IoC, Port) == SK_HW_PS_RESTART) {
-                               return(SK_HW_PS_RESTART);
-                       }
-               }
-       }
-
-       /*
-        * here we usually can check whether the link is in sync and
-        * auto-negotiation is done.
-        */
-       XM_IN32(IoC, Port, XM_GP_PORT, &GpReg);
-       XM_IN16(IoC, Port, XM_ISRC, &Isrc);
-       IsrcSum |= Isrc;
-
-       SkXmAutoNegLipaXmac(pAC, IoC, Port, IsrcSum);
-
-       if ((GpReg & XM_GP_INP_ASS) != 0 || (IsrcSum & XM_IS_INP_ASS) != 0) {
-               if ((GpReg & XM_GP_INP_ASS) == 0) {
-                       /* Save Auto-negotiation Done interrupt only if link is in sync */
-                       pPrt->PIsave = (SK_U16)(IsrcSum & XM_IS_AND);
-               }
-#ifdef DEBUG
-               if ((pPrt->PIsave & XM_IS_AND) != 0) {
-                       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-                               ("AutoNeg done rescheduled Port %d\n", Port));
-               }
-#endif /* DEBUG */
-               return(SK_HW_PS_NONE);
-       }
-
-       if (AutoNeg) {
-               if ((IsrcSum & XM_IS_AND) != 0) {
-                       SkHWLinkUp(pAC, IoC, Port);
-                       Done = SkMacAutoNegDone(pAC, IoC, Port);
-                       if (Done != SK_AND_OK) {
-                               /* Get PHY parameters, for debugging only */
-                               SkXmPhyRead(pAC, IoC, Port, PHY_XMAC_AUNE_LP, &LpAb);
-                               SkXmPhyRead(pAC, IoC, Port, PHY_XMAC_RES_ABI, &ResAb);
-                               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-                                       ("AutoNeg FAIL Port %d (LpAb %x, ResAb %x)\n",
-                                        Port, LpAb, ResAb));
-
-                               /* Try next possible mode */
-                               NextMode = SkHWSenseGetNext(pAC, IoC, Port);
-                               SkHWLinkDown(pAC, IoC, Port);
-                               if (Done == SK_AND_DUP_CAP) {
-                                       /* GoTo next mode */
-                                       SkHWSenseSetNext(pAC, IoC, Port, NextMode);
-                               }
-
-                               return(SK_HW_PS_RESTART);
-                       }
-                       /*
-                        * Dummy Read extended status to prevent extra link down/ups
-                        * (clear Page Received bit if set)
-                        */
-                       SkXmPhyRead(pAC, IoC, Port, PHY_XMAC_AUNE_EXP, &ExtStat);
-                       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-                               ("AutoNeg done Port %d\n", Port));
-                       return(SK_HW_PS_LINK);
-               }
-
-               /* AutoNeg not done, but HW link is up. Check for timeouts */
-               pPrt->PAutoNegTimeOut++;
-               if (pPrt->PAutoNegTimeOut >= SK_AND_MAX_TO) {
-                       /* Increase the Timeout counter */
-                       pPrt->PAutoNegTOCt++;
-
-                       /* Timeout occured */
-                       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ,
-                               ("AutoNeg timeout Port %d\n", Port));
-                       if (pPrt->PLinkModeConf == SK_LMODE_AUTOSENSE &&
-                               pPrt->PLipaAutoNeg != SK_LIPA_AUTO) {
-                               /* Set Link manually up */
-                               SkHWSenseSetNext(pAC, IoC, Port, SK_LMODE_FULL);
-                               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ,
-                                       ("Set manual full duplex Port %d\n", Port));
-                       }
-
-                       if (pPrt->PLinkModeConf == SK_LMODE_AUTOSENSE &&
-                               pPrt->PLipaAutoNeg == SK_LIPA_AUTO &&
-                               pPrt->PAutoNegTOCt >= SK_MAX_ANEG_TO) {
-                               /*
-                                * This is rather complicated.
-                                * we need to check here whether the LIPA_AUTO
-                                * we saw before is false alert. We saw at one
-                                * switch ( SR8800) that on boot time it sends
-                                * just one auto-neg packet and does no further
-                                * auto-negotiation.
-                                * Solution: we restart the autosensing after
-                                * a few timeouts.
-                                */
-                               pPrt->PAutoNegTOCt = 0;
-                               pPrt->PLipaAutoNeg = SK_LIPA_UNKNOWN;
-                               SkHWInitDefSense(pAC, IoC, Port);
-                       }
-
-                       /* Do the restart */
-                       return(SK_HW_PS_RESTART);
-               }
-       }
-       else {
-               /* Link is up and we don't need more */
-#ifdef DEBUG
-               if (pPrt->PLipaAutoNeg == SK_LIPA_AUTO) {
-                       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-                               ("ERROR: Lipa auto detected on port %d\n", Port));
-               }
-#endif /* DEBUG */
-               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ,
-                       ("Link sync(GP), Port %d\n", Port));
-               SkHWLinkUp(pAC, IoC, Port);
-
-               /*
-                * Link sync (GP) and so assume a good connection. But if not received
-                * a bunch of frames received in a time slot (maybe broken tx cable)
-                * the port is restart.
-                */
-               return(SK_HW_PS_LINK);
-       }
-
-       return(SK_HW_PS_NONE);
-}      /* SkGePortCheckUpXmac */
-
-
-/******************************************************************************
- *
- * SkGePortCheckUpBcom() - Check if the link is up on Bcom PHY
- *
- * return:
- *     0        o.k. nothing needed
- *     1       Restart needed on this port
- *     2       Link came up
- */
-static int SkGePortCheckUpBcom(
-SK_AC  *pAC,   /* Adapter Context */
-SK_IOC IoC,    /* IO Context */
-int            Port)   /* Which port should be checked */
-{
-       SK_GEPORT       *pPrt;          /* GIni Port struct pointer */
-       int                     Done;
-       SK_U16          Isrc;           /* Interrupt source register */
-       SK_U16          PhyStat;        /* Phy Status Register */
-       SK_U16          ResAb;          /* Master/Slave resolution */
-       SK_U16          Ctrl;           /* Broadcom control flags */
-#ifdef DEBUG
-       SK_U16          LpAb;
-       SK_U16          ExtStat;
-#endif /* DEBUG */
-       SK_BOOL         AutoNeg;        /* Is Auto-negotiation used ? */
-
-       pPrt = &pAC->GIni.GP[Port];
-
-       /* Check for No HCD Link events (#10523) */
-       SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_INT_STAT, &Isrc);
-
-#ifdef xDEBUG
-       if ((Isrc & ~(PHY_B_IS_HCT | PHY_B_IS_LCT) ==
-               (PHY_B_IS_SCR_S_ER | PHY_B_IS_RRS_CHANGE | PHY_B_IS_LRS_CHANGE)) {
-
-               SK_U32  Stat1, Stat2, Stat3;
-
-               Stat1 = 0;
-               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_INT_MASK, &Stat1);
-               CMSMPrintString(
-                       pAC->pConfigTable,
-                       MSG_TYPE_RUNTIME_INFO,
-                       "CheckUp1 - Stat: %x, Mask: %x",
-                       (void *)Isrc,
-                       (void *)Stat1);
-
-               Stat1 = 0;
-               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_CTRL, &Stat1);
-               Stat2 = 0;
-               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_STAT, &Stat2);
-               Stat1 = Stat1 << 16 | Stat2;
-               Stat2 = 0;
-               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_AUNE_ADV, &Stat2);
-               Stat3 = 0;
-               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_AUNE_LP, &Stat3);
-               Stat2 = Stat2 << 16 | Stat3;
-               CMSMPrintString(
-                       pAC->pConfigTable,
-                       MSG_TYPE_RUNTIME_INFO,
-                       "Ctrl/Stat: %x, AN Adv/LP: %x",
-                       (void *)Stat1,
-                       (void *)Stat2);
-
-               Stat1 = 0;
-               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_AUNE_EXP, &Stat1);
-               Stat2 = 0;
-               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_EXT_STAT, &Stat2);
-               Stat1 = Stat1 << 16 | Stat2;
-               Stat2 = 0;
-               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_1000T_CTRL, &Stat2);
-               Stat3 = 0;
-               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_1000T_STAT, &Stat3);
-               Stat2 = Stat2 << 16 | Stat3;
-               CMSMPrintString(
-                       pAC->pConfigTable,
-                       MSG_TYPE_RUNTIME_INFO,
-                       "AN Exp/IEEE Ext: %x, 1000T Ctrl/Stat: %x",
-                       (void *)Stat1,
-                       (void *)Stat2);
-
-               Stat1 = 0;
-               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_P_EXT_CTRL, &Stat1);
-               Stat2 = 0;
-               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_P_EXT_STAT, &Stat2);
-               Stat1 = Stat1 << 16 | Stat2;
-               Stat2 = 0;
-               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_AUX_CTRL, &Stat2);
-               Stat3 = 0;
-               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_AUX_STAT, &Stat3);
-               Stat2 = Stat2 << 16 | Stat3;
-               CMSMPrintString(
-                       pAC->pConfigTable,
-                       MSG_TYPE_RUNTIME_INFO,
-                       "PHY Ext Ctrl/Stat: %x, Aux Ctrl/Stat: %x",
-                       (void *)Stat1,
-                       (void *)Stat2);
-       }
-#endif /* DEBUG */
-
-       if ((Isrc & (PHY_B_IS_NO_HDCL /* | PHY_B_IS_NO_HDC */)) != 0) {
-               /*
-                * Workaround BCom Errata:
-                *      enable and disable loopback mode if "NO HCD" occurs.
-                */
-               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_CTRL, &Ctrl);
-               SkXmPhyWrite(pAC, IoC, Port, PHY_BCOM_CTRL,
-                       (SK_U16)(Ctrl | PHY_CT_LOOP));
-               SkXmPhyWrite(pAC, IoC, Port, PHY_BCOM_CTRL,
-                       (SK_U16)(Ctrl & ~PHY_CT_LOOP));
-               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-                       ("No HCD Link event, Port %d\n", Port));
-#ifdef xDEBUG
-               CMSMPrintString(
-                       pAC->pConfigTable,
-                       MSG_TYPE_RUNTIME_INFO,
-                       "No HCD link event, port %d.",
-                       (void *)Port,
-                       (void *)NULL);
-#endif /* DEBUG */
-       }
-
-       /* Not obsolete: link status bit is latched to 0 and autoclearing! */
-       SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_STAT, &PhyStat);
-
-       if (pPrt->PHWLinkUp) {
-               return(SK_HW_PS_NONE);
-       }
-
-#ifdef xDEBUG
-       {
-               SK_U32  Stat1, Stat2, Stat3;
-
-               Stat1 = 0;
-               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_INT_MASK, &Stat1);
-               CMSMPrintString(
-                       pAC->pConfigTable,
-                       MSG_TYPE_RUNTIME_INFO,
-                       "CheckUp1a - Stat: %x, Mask: %x",
-                       (void *)Isrc,
-                       (void *)Stat1);
-
-               Stat1 = 0;
-               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_CTRL, &Stat1);
-               Stat2 = 0;
-               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_STAT, &PhyStat);
-               Stat1 = Stat1 << 16 | PhyStat;
-               Stat2 = 0;
-               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_AUNE_ADV, &Stat2);
-               Stat3 = 0;
-               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_AUNE_LP, &Stat3);
-               Stat2 = Stat2 << 16 | Stat3;
-               CMSMPrintString(
-                       pAC->pConfigTable,
-                       MSG_TYPE_RUNTIME_INFO,
-                       "Ctrl/Stat: %x, AN Adv/LP: %x",
-                       (void *)Stat1,
-                       (void *)Stat2);
-
-               Stat1 = 0;
-               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_AUNE_EXP, &Stat1);
-               Stat2 = 0;
-               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_EXT_STAT, &Stat2);
-               Stat1 = Stat1 << 16 | Stat2;
-               Stat2 = 0;
-               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_1000T_CTRL, &Stat2);
-               Stat3 = 0;
-               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_1000T_STAT, &ResAb);
-               Stat2 = Stat2 << 16 | ResAb;
-               CMSMPrintString(
-                       pAC->pConfigTable,
-                       MSG_TYPE_RUNTIME_INFO,
-                       "AN Exp/IEEE Ext: %x, 1000T Ctrl/Stat: %x",
-                       (void *)Stat1,
-                       (void *)Stat2);
-
-               Stat1 = 0;
-               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_P_EXT_CTRL, &Stat1);
-               Stat2 = 0;
-               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_P_EXT_STAT, &Stat2);
-               Stat1 = Stat1 << 16 | Stat2;
-               Stat2 = 0;
-               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_AUX_CTRL, &Stat2);
-               Stat3 = 0;
-               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_AUX_STAT, &Stat3);
-               Stat2 = Stat2 << 16 | Stat3;
-               CMSMPrintString(
-                       pAC->pConfigTable,
-                       MSG_TYPE_RUNTIME_INFO,
-                       "PHY Ext Ctrl/Stat: %x, Aux Ctrl/Stat: %x",
-                       (void *)Stat1,
-                       (void *)Stat2);
-       }
-#endif /* DEBUG */
-
-       /* Now wait for each port's link */
-       if (pPrt->PLinkMode == SK_LMODE_HALF || pPrt->PLinkMode == SK_LMODE_FULL) {
-               AutoNeg = SK_FALSE;
-       }
-       else {
-               AutoNeg = SK_TRUE;
-       }
-
-       /*
-        * Here we usually can check whether the link is in sync and
-        * auto-negotiation is done.
-        */
-
-       SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_STAT, &PhyStat);
-
-       SkMacAutoNegLipaPhy(pAC, IoC, Port, PhyStat);
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-               ("AutoNeg: %d, PhyStat: 0x%04x\n", AutoNeg, PhyStat));
-
-       SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_1000T_STAT, &ResAb);
-
-       if ((ResAb & PHY_B_1000S_MSF) != 0) {
-               /* Error */
-               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-                       ("Master/Slave Fault port %d\n", Port));
-               pPrt->PAutoNegFail = SK_TRUE;
-               pPrt->PMSStatus = SK_MS_STAT_FAULT;
-
-               return(SK_HW_PS_RESTART);
-       }
-
-       if ((PhyStat & PHY_ST_LSYNC) == 0) {
-               return(SK_HW_PS_NONE);
-       }
-
-       pPrt->PMSStatus = ((ResAb & PHY_B_1000S_MSR) != 0) ?
-               SK_MS_STAT_MASTER : SK_MS_STAT_SLAVE;
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-               ("AutoNeg: %d, PhyStat: 0x%04x\n", AutoNeg, PhyStat));
-
-       if (AutoNeg) {
-               if ((PhyStat & PHY_ST_AN_OVER) != 0) {
-                       SkHWLinkUp(pAC, IoC, Port);
-                       Done = SkMacAutoNegDone(pAC, IoC, Port);
-                       if (Done != SK_AND_OK) {
-#ifdef DEBUG
-                               /* Get PHY parameters, for debugging only */
-                               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_AUNE_LP, &LpAb);
-                               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_1000T_STAT, &ExtStat);
-                               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-                                       ("AutoNeg FAIL Port %d (LpAb %x, 1000TStat %x)\n",
-                                       Port, LpAb, ExtStat));
-#endif /* DEBUG */
-                               return(SK_HW_PS_RESTART);
-                       }
-                       else {
-#ifdef xDEBUG
-                               /* Dummy read ISR to prevent extra link downs/ups */
-                               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_INT_STAT, &ExtStat);
-
-                               if ((ExtStat & ~(PHY_B_IS_HCT | PHY_B_IS_LCT)) != 0) {
-                                       CMSMPrintString(
-                                               pAC->pConfigTable,
-                                               MSG_TYPE_RUNTIME_INFO,
-                                               "CheckUp2 - Stat: %x",
-                                               (void *)ExtStat,
-                                               (void *)NULL);
-                               }
-#endif /* DEBUG */
-
-                               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-                                       ("AutoNeg done Port %d\n", Port));
-                               return(SK_HW_PS_LINK);
-                       }
-               }
-       }
-       else {  /* !AutoNeg */
-               /* Link is up and we don't need more. */
-#ifdef DEBUG
-               if (pPrt->PLipaAutoNeg == SK_LIPA_AUTO) {
-                       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-                               ("ERROR: Lipa auto detected on port %d\n", Port));
-               }
-#endif /* DEBUG */
-
-#ifdef xDEBUG
-               /* Dummy read ISR to prevent extra link downs/ups */
-               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_INT_STAT, &ExtStat);
-
-               if ((ExtStat & ~(PHY_B_IS_HCT | PHY_B_IS_LCT)) != 0) {
-                       CMSMPrintString(
-                               pAC->pConfigTable,
-                               MSG_TYPE_RUNTIME_INFO,
-                               "CheckUp3 - Stat: %x",
-                               (void *)ExtStat,
-                               (void *)NULL);
-               }
-#endif /* DEBUG */
-
-               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ,
-                       ("Link sync(GP), Port %d\n", Port));
-               SkHWLinkUp(pAC, IoC, Port);
-               return(SK_HW_PS_LINK);
-       }
-
-       return(SK_HW_PS_NONE);
-}      /* SkGePortCheckUpBcom */
-
-
-/******************************************************************************
- *
- * SkGePortCheckUpGmac() - Check if the link is up on Marvell PHY
- *
- * return:
- *     0        o.k. nothing needed
- *     1       Restart needed on this port
- *     2       Link came up
- */
-static int SkGePortCheckUpGmac(
-SK_AC  *pAC,   /* Adapter Context */
-SK_IOC IoC,    /* IO Context */
-int            Port)   /* Which port should be checked */
-{
-       SK_GEPORT       *pPrt;          /* GIni Port struct pointer */
-       int                     Done;
-       SK_U16          Isrc;           /* Interrupt source */
-       SK_U16          PhyStat;        /* Phy Status */
-       SK_U16          PhySpecStat;/* Phy Specific Status */
-       SK_U16          ResAb;          /* Master/Slave resolution */
-       SK_BOOL         AutoNeg;        /* Is Auto-negotiation used ? */
-
-       pPrt = &pAC->GIni.GP[Port];
-
-       /* Read PHY Interrupt Status */
-       SkGmPhyRead(pAC, IoC, Port, PHY_MARV_INT_STAT, &Isrc);
-
-       if ((Isrc & PHY_M_IS_AN_COMPL) != 0) {
-               /* TBD */
-       }
-
-       if ((Isrc & PHY_M_IS_DOWNSH_DET) != 0) {
-               /* TBD */
-       }
-
-       if (pPrt->PHWLinkUp) {
-               return(SK_HW_PS_NONE);
-       }
-
-       /* Now wait for each port's link */
-       if (pPrt->PLinkMode == SK_LMODE_HALF || pPrt->PLinkMode == SK_LMODE_FULL) {
-               AutoNeg = SK_FALSE;
-       }
-       else {
-               AutoNeg = SK_TRUE;
-       }
-
-       /* Read PHY Status */
-       SkGmPhyRead(pAC, IoC, Port, PHY_MARV_STAT, &PhyStat);
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-               ("AutoNeg: %d, PhyStat: 0x%04x\n", AutoNeg, PhyStat));
-
-       SkMacAutoNegLipaPhy(pAC, IoC, Port, PhyStat);
-
-       SkGmPhyRead(pAC, IoC, Port, PHY_MARV_1000T_STAT, &ResAb);
-
-       if ((ResAb & PHY_B_1000S_MSF) != 0) {
-               /* Error */
-               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-                       ("Master/Slave Fault port %d\n", Port));
-               pPrt->PAutoNegFail = SK_TRUE;
-               pPrt->PMSStatus = SK_MS_STAT_FAULT;
-
-               return(SK_HW_PS_RESTART);
-       }
-
-       /* Read PHY Specific Status */
-       SkGmPhyRead(pAC, IoC, Port, PHY_MARV_PHY_STAT, &PhySpecStat);
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-               ("AutoNeg: %d, PhySpecStat: 0x%04x\n", AutoNeg, PhySpecStat));
-
-       if ((PhySpecStat & PHY_M_PS_LINK_UP) == 0) {
-               return(SK_HW_PS_NONE);
-       }
-
-       pPrt->PMSStatus = ((ResAb & PHY_B_1000S_MSR) != 0) ?
-               SK_MS_STAT_MASTER : SK_MS_STAT_SLAVE;
-
-       pPrt->PCableLen = (SK_U8)((PhySpecStat & PHY_M_PS_CABLE_MSK) >> 7);
-
-       if (AutoNeg) {
-               /* Auto-Negotiation Over ? */
-               if ((PhyStat & PHY_ST_AN_OVER) != 0) {
-
-                       SkHWLinkUp(pAC, IoC, Port);
-
-                       Done = SkMacAutoNegDone(pAC, IoC, Port);
-
-                       if (Done != SK_AND_OK) {
-                               return(SK_HW_PS_RESTART);
-                       }
-
-                       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-                               ("AutoNeg done Port %d\n", Port));
-                       return(SK_HW_PS_LINK);
-               }
-       }
-       else {  /* !AutoNeg */
-               /* Link is up and we don't need more */
-#ifdef DEBUG
-               if (pPrt->PLipaAutoNeg == SK_LIPA_AUTO) {
-                       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-                               ("ERROR: Lipa auto detected on port %d\n", Port));
-               }
-#endif /* DEBUG */
-
-               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ,
-                       ("Link sync, Port %d\n", Port));
-               SkHWLinkUp(pAC, IoC, Port);
-
-               return(SK_HW_PS_LINK);
-       }
-
-       return(SK_HW_PS_NONE);
-}      /* SkGePortCheckUpGmac */
-
-
-#ifdef OTHER_PHY
-/******************************************************************************
- *
- * SkGePortCheckUpLone() - Check if the link is up on Level One PHY
- *
- * return:
- *     0        o.k. nothing needed
- *     1       Restart needed on this port
- *     2       Link came up
- */
-static int SkGePortCheckUpLone(
-SK_AC  *pAC,           /* Adapter Context */
-SK_IOC IoC,            /* IO Context */
-int            Port)           /* Which port should be checked */
-{
-       SK_GEPORT       *pPrt;          /* GIni Port struct pointer */
-       int                     Done;
-       SK_U16          Isrc;           /* Interrupt source register */
-       SK_U16          LpAb;           /* Link Partner Ability */
-       SK_U16          ExtStat;        /* Extended Status Register */
-       SK_U16          PhyStat;        /* Phy Status Register */
-       SK_U16          StatSum;
-       SK_BOOL         AutoNeg;        /* Is Auto-negotiation used ? */
-       SK_U8           NextMode;       /* Next AutoSensing Mode */
-
-       pPrt = &pAC->GIni.GP[Port];
-
-       if (pPrt->PHWLinkUp) {
-               return(SK_HW_PS_NONE);
-       }
-
-       StatSum = pPrt->PIsave;
-       pPrt->PIsave = 0;
-
-       /* Now wait for each ports link */
-       if (pPrt->PLinkMode == SK_LMODE_HALF || pPrt->PLinkMode == SK_LMODE_FULL) {
-               AutoNeg = SK_FALSE;
-       }
-       else {
-               AutoNeg = SK_TRUE;
-       }
-
-       /*
-        * here we usually can check whether the link is in sync and
-        * auto-negotiation is done.
-        */
-       SkXmPhyRead(pAC, IoC, Port, PHY_LONE_STAT, &PhyStat);
-       StatSum |= PhyStat;
-
-       SkMacAutoNegLipaPhy(pAC, IoC, Port, PhyStat);
-
-       if ((PhyStat & PHY_ST_LSYNC) == 0) {
-               /* Save Auto-negotiation Done bit */
-               pPrt->PIsave = (SK_U16)(StatSum & PHY_ST_AN_OVER);
-#ifdef DEBUG
-               if ((pPrt->PIsave & PHY_ST_AN_OVER) != 0) {
-                       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-                               ("AutoNeg done rescheduled Port %d\n", Port));
-               }
-#endif /* DEBUG */
-               return(SK_HW_PS_NONE);
-       }
-
-       if (AutoNeg) {
-               if ((StatSum & PHY_ST_AN_OVER) != 0) {
-                       SkHWLinkUp(pAC, IoC, Port);
-                       Done = SkMacAutoNegDone(pAC, IoC, Port);
-                       if (Done != SK_AND_OK) {
-                               /* Get PHY parameters, for debugging only */
-                               SkXmPhyRead(pAC, IoC, Port, PHY_LONE_AUNE_LP, &LpAb);
-                               SkXmPhyRead(pAC, IoC, Port, PHY_LONE_1000T_STAT, &ExtStat);
-                               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-                                       ("AutoNeg FAIL Port %d (LpAb %x, 1000TStat %x)\n",
-                                        Port, LpAb, ExtStat));
-
-                               /* Try next possible mode */
-                               NextMode = SkHWSenseGetNext(pAC, IoC, Port);
-                               SkHWLinkDown(pAC, IoC, Port);
-                               if (Done == SK_AND_DUP_CAP) {
-                                       /* GoTo next mode */
-                                       SkHWSenseSetNext(pAC, IoC, Port, NextMode);
-                               }
-
-                               return(SK_HW_PS_RESTART);
-
-                       }
-                       else {
-                               /*
-                                * Dummy Read interrupt status to prevent
-                                * extra link down/ups
-                                */
-                               SkXmPhyRead(pAC, IoC, Port, PHY_LONE_INT_STAT, &ExtStat);
-                               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-                                       ("AutoNeg done Port %d\n", Port));
-                               return(SK_HW_PS_LINK);
-                       }
-               }
-
-               /* AutoNeg not done, but HW link is up. Check for timeouts */
-               pPrt->PAutoNegTimeOut++;
-               if (pPrt->PAutoNegTimeOut >= SK_AND_MAX_TO) {
-                       /* Timeout occured */
-                       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ,
-                               ("AutoNeg timeout Port %d\n", Port));
-                       if (pPrt->PLinkModeConf == SK_LMODE_AUTOSENSE &&
-                               pPrt->PLipaAutoNeg != SK_LIPA_AUTO) {
-                               /* Set Link manually up */
-                               SkHWSenseSetNext(pAC, IoC, Port, SK_LMODE_FULL);
-                               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ,
-                                       ("Set manual full duplex Port %d\n", Port));
-                       }
-
-                       /* Do the restart */
-                       return(SK_HW_PS_RESTART);
-               }
-       }
-       else {
-               /* Link is up and we don't need more */
-#ifdef DEBUG
-               if (pPrt->PLipaAutoNeg == SK_LIPA_AUTO) {
-                       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-                               ("ERROR: Lipa auto detected on port %d\n", Port));
-               }
-#endif /* DEBUG */
-
-               /*
-                * Dummy Read interrupt status to prevent
-                * extra link down/ups
-                */
-               SkXmPhyRead(pAC, IoC, Port, PHY_LONE_INT_STAT, &ExtStat);
-
-               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ,
-                       ("Link sync(GP), Port %d\n", Port));
-               SkHWLinkUp(pAC, IoC, Port);
-               return(SK_HW_PS_LINK);
-       }
-
-       return(SK_HW_PS_NONE);
-}      /* SkGePortCheckUpLone */
-
-
-/******************************************************************************
- *
- * SkGePortCheckUpNat() - Check if the link is up on National PHY
- *
- * return:
- *     0        o.k. nothing needed
- *     1       Restart needed on this port
- *     2       Link came up
- */
-static int SkGePortCheckUpNat(
-SK_AC  *pAC,           /* Adapter Context */
-SK_IOC IoC,            /* IO Context */
-int            Port)           /* Which port should be checked */
-{
-       /* todo: National */
-       return(SK_HW_PS_NONE);
-}      /* SkGePortCheckUpNat */
-#endif /* OTHER_PHY */
-
-
-/******************************************************************************
- *
- *     SkGeSirqEvent() - Event Service Routine
- *
- * Description:
- *
- * Notes:
- */
-int    SkGeSirqEvent(
-SK_AC          *pAC,           /* Adapter Context */
-SK_IOC         IoC,            /* Io Context */
-SK_U32         Event,          /* Module specific Event */
-SK_EVPARA      Para)           /* Event specific Parameter */
-{
-       SK_U64          Octets;
-       SK_GEPORT       *pPrt;          /* GIni Port struct pointer */
-       SK_U32          Port;
-       SK_U32          Time;
-       unsigned        Len;
-       int                     PortStat;
-       SK_U8           Val8;
-
-       Port = Para.Para32[0];
-       pPrt = &pAC->GIni.GP[Port];
-
-       switch (Event) {
-       case SK_HWEV_WATIM:
-               /* Check whether port came up */
-               PortStat = SkGePortCheckUp(pAC, IoC, Port);
-
-               switch (PortStat) {
-               case SK_HW_PS_RESTART:
-                       if (pPrt->PHWLinkUp) {
-                               /*
-                                * Set Link to down.
-                                */
-                               SkHWLinkDown(pAC, IoC, Port);
-
-                               /*
-                                * Signal directly to RLMT to ensure correct
-                                * sequence of SWITCH and RESET event.
-                                */
-                               SkRlmtEvent(pAC, IoC, SK_RLMT_LINK_DOWN, Para);
-                       }
-
-                       /* Restart needed */
-                       SkEventQueue(pAC, SKGE_DRV, SK_DRV_PORT_RESET, Para);
-                       break;
-
-               case SK_HW_PS_LINK:
-                       /* Signal to RLMT */
-                       SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_LINK_UP, Para);
-                       break;
-
-               }
-
-               /* Start again the check Timer */
-               if (pPrt->PHWLinkUp) {
-                       Time = SK_WA_ACT_TIME;
-               }
-               else {
-                       Time = SK_WA_INA_TIME;
-               }
-
-               /* Todo: still needed for non-XMAC PHYs??? */
-               /* Start workaround Errata #2 timer */
-               SkTimerStart(pAC, IoC, &pPrt->PWaTimer, Time,
-                       SKGE_HWAC, SK_HWEV_WATIM, Para);
-               break;
-
-       case SK_HWEV_PORT_START:
-               if (pPrt->PHWLinkUp) {
-                       /*
-                        * Signal directly to RLMT to ensure correct
-                        * sequence of SWITCH and RESET event.
-                        */
-                       SkRlmtEvent(pAC, IoC, SK_RLMT_LINK_DOWN, Para);
-               }
-
-               SkHWLinkDown(pAC, IoC, Port);
-
-               /* Schedule Port RESET */
-               SkEventQueue(pAC, SKGE_DRV, SK_DRV_PORT_RESET, Para);
-
-               /* Start workaround Errata #2 timer */
-               SkTimerStart(pAC, IoC, &pPrt->PWaTimer, SK_WA_INA_TIME,
-                       SKGE_HWAC, SK_HWEV_WATIM, Para);
-               break;
-
-       case SK_HWEV_PORT_STOP:
-               if (pPrt->PHWLinkUp) {
-                       /*
-                        * Signal directly to RLMT to ensure correct
-                        * sequence of SWITCH and RESET event.
-                        */
-                       SkRlmtEvent(pAC, IoC, SK_RLMT_LINK_DOWN, Para);
-               }
-
-               /* Stop Workaround Timer */
-               SkTimerStop(pAC, IoC, &pPrt->PWaTimer);
-
-               SkHWLinkDown(pAC, IoC, Port);
-               break;
-
-       case SK_HWEV_UPDATE_STAT:
-               /* We do NOT need to update any statistics */
-               break;
-
-       case SK_HWEV_CLEAR_STAT:
-               /* We do NOT need to clear any statistics */
-               for (Port = 0; Port < (SK_U32)pAC->GIni.GIMacsFound; Port++) {
-                       pPrt->PPrevRx = 0;
-                       pPrt->PPrevFcs = 0;
-                       pPrt->PPrevShorts = 0;
-               }
-               break;
-
-       case SK_HWEV_SET_LMODE:
-               Val8 = (SK_U8)Para.Para32[1];
-               if (pPrt->PLinkModeConf != Val8) {
-                       /* Set New link mode */
-                       pPrt->PLinkModeConf = Val8;
-
-                       /* Restart Port */
-                       SkEventQueue(pAC, SKGE_HWAC, SK_HWEV_PORT_STOP, Para);
-                       SkEventQueue(pAC, SKGE_HWAC, SK_HWEV_PORT_START, Para);
-               }
-               break;
-
-       case SK_HWEV_SET_FLOWMODE:
-               Val8 = (SK_U8)Para.Para32[1];
-               if (pPrt->PFlowCtrlMode != Val8) {
-                       /* Set New Flow Control mode */
-                       pPrt->PFlowCtrlMode = Val8;
-
-                       /* Restart Port */
-                       SkEventQueue(pAC, SKGE_HWAC, SK_HWEV_PORT_STOP, Para);
-                       SkEventQueue(pAC, SKGE_HWAC, SK_HWEV_PORT_START, Para);
-               }
-               break;
-
-       case SK_HWEV_SET_ROLE:
-               /* not possible for fiber */
-               if (!pAC->GIni.GICopperType) {
-                       break;
-               }
-               Val8 = (SK_U8)Para.Para32[1];
-               if (pPrt->PMSMode != Val8) {
-                       /* Set New link mode */
-                       pPrt->PMSMode = Val8;
-
-                       /* Restart Port */
-                       SkEventQueue(pAC, SKGE_HWAC, SK_HWEV_PORT_STOP, Para);
-                       SkEventQueue(pAC, SKGE_HWAC, SK_HWEV_PORT_START, Para);
-               }
-               break;
-
-       case SK_HWEV_SET_SPEED:
-               if (pPrt->PhyType != SK_PHY_MARV_COPPER) {
-                       break;
-               }
-               Val8 = (SK_U8)Para.Para32[1];
-               if (pPrt->PLinkSpeed != Val8) {
-                       /* Set New Speed parameter */
-                       pPrt->PLinkSpeed = Val8;
-
-                       /* Restart Port */
-                       SkEventQueue(pAC, SKGE_HWAC, SK_HWEV_PORT_STOP, Para);
-                       SkEventQueue(pAC, SKGE_HWAC, SK_HWEV_PORT_START, Para);
-               }
-               break;
-
-       case SK_HWEV_HALFDUP_CHK:
-               /*
-                * half duplex hangup workaround.
-                * See packet arbiter timeout interrupt for description
-                */
-               pPrt->HalfDupTimerActive = SK_FALSE;
-               if (pPrt->PLinkModeStatus == SK_LMODE_STAT_HALF ||
-                   pPrt->PLinkModeStatus == SK_LMODE_STAT_AUTOHALF) {
-
-                       Len = sizeof(SK_U64);
-                       SkPnmiGetVar(pAC, IoC, OID_SKGE_STAT_TX_OCTETS, (char *)&Octets,
-                               &Len, (SK_U32)SK_PNMI_PORT_PHYS2INST(pAC, Port),
-                               pAC->Rlmt.Port[Port].Net->NetNumber);
-
-                       if (pPrt->LastOctets == Octets) {
-                               /* Tx hanging, a FIFO flush restarts it */
-                               SkMacFlushTxFifo(pAC, IoC, Port);
-                       }
-               }
-               break;
-
-       default:
-               SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_SIRQ_E001, SKERR_SIRQ_E001MSG);
-               break;
-       }
-
-       return(0);
-}      /* SkGeSirqEvent */
-
-
-/******************************************************************************
- *
- *     SkPhyIsrBcom() - PHY interrupt service routine
- *
- * Description: handles all interrupts from BCom PHY
- *
- * Returns: N/A
- */
-static void SkPhyIsrBcom(
-SK_AC          *pAC,           /* Adapter Context */
-SK_IOC         IoC,            /* Io Context */
-int                    Port,           /* Port Num = PHY Num */
-SK_U16         IStatus)        /* Interrupt Status */
-{
-       SK_GEPORT       *pPrt;          /* GIni Port struct pointer */
-       SK_EVPARA       Para;
-
-       pPrt = &pAC->GIni.GP[Port];
-
-       if ((IStatus & PHY_B_IS_PSE) != 0) {
-               /* Incorrectable pair swap error */
-               SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_SIRQ_E022,
-                       SKERR_SIRQ_E022MSG);
-       }
-
-       if ((IStatus & (PHY_B_IS_AN_PR | PHY_B_IS_LST_CHANGE)) != 0) {
-               Para.Para32[0] = (SK_U32)Port;
-
-               SkHWLinkDown(pAC, IoC, Port);
-
-               /* Signal to RLMT */
-               SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_LINK_DOWN, Para);
-
-               /* Start workaround Errata #2 timer */
-               SkTimerStart(pAC, IoC, &pPrt->PWaTimer, SK_WA_INA_TIME,
-                       SKGE_HWAC, SK_HWEV_WATIM, Para);
-       }
-
-}      /* SkPhyIsrBcom */
-
-
-/******************************************************************************
- *
- *     SkPhyIsrGmac() - PHY interrupt service routine
- *
- * Description: handles all interrupts from Marvell PHY
- *
- * Returns: N/A
- */
-static void SkPhyIsrGmac(
-SK_AC          *pAC,           /* Adapter Context */
-SK_IOC         IoC,            /* Io Context */
-int                    Port,           /* Port Num = PHY Num */
-SK_U16         IStatus)        /* Interrupt Status */
-{
-       SK_GEPORT       *pPrt;          /* GIni Port struct pointer */
-       SK_EVPARA       Para;
-
-       pPrt = &pAC->GIni.GP[Port];
-
-       if ((IStatus & (PHY_M_IS_AN_PR | PHY_M_IS_LST_CHANGE)) != 0) {
-               Para.Para32[0] = (SK_U32)Port;
-
-               SkHWLinkDown(pAC, IoC, Port);
-
-               /* Signal to RLMT */
-               SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_LINK_DOWN, Para);
-       }
-
-       if ((IStatus & PHY_M_IS_AN_ERROR) != 0) {
-               /* Auto-Negotiation Error */
-               SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E023, SKERR_SIRQ_E023MSG);
-       }
-
-       if ((IStatus & PHY_M_IS_LSP_CHANGE) != 0) {
-               /* TBD */
-       }
-
-       if ((IStatus & PHY_M_IS_FIFO_ERROR) != 0) {
-               /* FIFO Overflow/Underrun Error */
-               SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E024, SKERR_SIRQ_E024MSG);
-       }
-}      /* SkPhyIsrGmac */
-
-
-#ifdef OTHER_PHY
-/******************************************************************************
- *
- *     SkPhyIsrLone() - PHY interrupt service routine
- *
- * Description: handles all interrupts from LONE PHY
- *
- * Returns: N/A
- */
-static void SkPhyIsrLone(
-SK_AC  *pAC,           /* Adapter Context */
-SK_IOC IoC,            /* Io Context */
-int            Port,           /* Port Num = PHY Num */
-SK_U16 IStatus)        /* Interrupt Status */
-{
-       SK_EVPARA       Para;
-
-       if (IStatus & (PHY_L_IS_DUP | PHY_L_IS_ISOL)) {
-               SkHWLinkDown(pAC, IoC, Port);
-
-               /* Signal to RLMT */
-               Para.Para32[0] = (SK_U32)Port;
-               SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_LINK_DOWN, Para);
-       }
-
-}      /* SkPhyIsrLone */
-#endif /* OTHER_PHY */
-
-/* End of File */
+/******************************************************************************
+ *
+ * Name:       skgesirq.c
+ * Project:    GEnesis, PCI Gigabit Ethernet Adapter
+ * Version:    $Revision: 1.1.1.1 $
+ * Date:       $Date: 2009/03/25 22:22:09 $
+ * Purpose:    Special IRQ module
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ *     (C)Copyright 1998-2003 SysKonnect GmbH.
+ *
+ *     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.
+ *
+ *     The information in this file is provided "AS IS" without warranty.
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ * History:
+ *
+ *     $Log: skgesirq.c,v $
+ *     Revision 1.1.1.1  2009/03/25 22:22:09  kenagy
+ *     no message
+ *     
+ *     Revision 1.83  2003/02/05 15:10:59  rschmidt
+ *     Fixed setting of PLinkSpeedUsed in SkHWLinkUp() when
+ *     auto-negotiation is disabled.
+ *     Editorial changes.
+ *
+ *     Revision 1.82  2003/01/29 13:34:33  rschmidt
+ *     Added some typecasts to avoid compiler warnings.
+ *
+ *     Revision 1.81  2002/12/05 10:49:51  rschmidt
+ *     Fixed missing Link Down Event for fiber (Bug Id #10768)
+ *     Added reading of cable length when link is up
+ *     Removed testing of unused error bits in PHY ISR
+ *     Editorial changes.
+ *
+ *     Revision 1.80  2002/11/12 17:15:21  rschmidt
+ *     Replaced SkPnmiGetVar() by ...MacStatistic() in SkMacParity().
+ *     Editorial changes.
+ *
+ *     Revision 1.79  2002/10/14 15:14:51  rschmidt
+ *     Changed clearing of IS_M1_PAR_ERR (MAC 1 Parity Error) in
+ *     SkMacParity() depending on GIChipRev (HW-Bug #8).
+ *     Added error messages for GPHY Auto-Negotiation Error and
+ *     FIFO Overflow/Underrun in SkPhyIsrGmac().
+ *     Editorial changes.
+ *
+ *     Revision 1.78  2002/10/10 15:54:29  mkarl
+ *     changes for PLinkSpeedUsed
+ *
+ *     Revision 1.77  2002/09/12 08:58:51  rwahl
+ *     Retrieve counters needed for XMAC errata workarounds directly because
+ *     PNMI returns corrected counter values (e.g. #10620).
+ *
+ *     Revision 1.76  2002/08/16 15:21:54  rschmidt
+ *     Replaced all if(GIChipId == CHIP_ID_GENESIS) with new entry GIGenesis.
+ *     Replaced wrong 1st para pAC with IoC in SK_IN/OUT macros.
+ *     Editorial changes.
+ *
+ *     Revision 1.75  2002/08/12 13:50:47  rschmidt
+ *     Changed clearing of IS_M1_PAR_ERR (MAC 1 Parity Error) in
+ *     SkMacParity() by GMF_CLI_TX_FC instead of GMF_CLI_TX_PE (HW-Bug #8).
+ *     Added clearing of IS_IRQ_TIST_OV and IS_IRQ_SENSOR in SkGeHwErr().
+ *     Corrected handling of Link Up and Auto-Negotiation Over for GPHY.
+ *     in SkGePortCheckUpGmac().
+ *     Editorial changes.
+ *
+ *     Revision 1.74  2002/08/08 16:17:04  rschmidt
+ *     Added PhyType check for SK_HWEV_SET_ROLE event (copper only)
+ *     Changed Link Up check reading PHY Specific Status (YUKON)
+ *     Editorial changes
+ *
+ *     Revision 1.73  2002/07/15 18:36:53  rwahl
+ *     Editorial changes.
+ *
+ *     Revision 1.72  2002/07/15 15:46:26  rschmidt
+ *     Added new event: SK_HWEV_SET_SPEED
+ *     Editorial changes
+ *
+ *     Revision 1.71  2002/06/10 09:34:19  rschmidt
+ *     Editorial changes
+ *
+ *     Revision 1.70  2002/06/05 08:29:18  rschmidt
+ *     SkXmRxTxEnable() replaced by SkMacRxTxEnable().
+ *     Editorial changes.
+ *
+ *     Revision 1.69  2002/04/25 13:03:49  rschmidt
+ *     Changes for handling YUKON.
+ *     Use of #ifdef OTHER_PHY to eliminate code for unused Phy types.
+ *     Replaced all XMAC-access macros by functions: SkMacRxTxDisable(),
+ *     SkMacIrqDisable().
+ *     Added handling for GMAC FIFO in SkMacParity().
+ *     Replaced all SkXm...() functions with SkMac...() to handle also
+ *     YUKON's GMAC.
+ *     Macros for XMAC PHY access PHY_READ(), PHY_WRITE() replaced
+ *     by functions SkXmPhyRead(), SkXmPhyWrite().
+ *     Disabling all PHY interrupts moved to SkMacIrqDisable().
+ *     Added handling for GPHY IRQ in SkGeSirqIsr().
+ *     Removed status parameter from MAC IRQ handler SkMacIrq().
+ *     Added SkGePortCheckUpGmac(), SkPhyIsrGmac() for GMAC.
+ *     Editorial changes
+ *
+ *     Revision 1.68  2002/02/26 15:24:53  rwahl
+ *     Fix: no link with manual configuration (#10673). The previous fix for
+ *     #10639 was removed. So for RLMT mode = CLS the RLMT may switch to
+ *     misconfigured port. It should not occur for the other RLMT modes.
+ *
+ *     Revision 1.67  2001/11/20 09:19:58  rwahl
+ *     Reworked bugfix #10639 (no dependency to RLMT mode).
+ *
+ *     Revision 1.66  2001/10/26 07:52:53  afischer
+ *     Port switching bug in `check local link` mode
+ *
+ *     Revision 1.65  2001/02/23 13:41:51  gklug
+ *     fix: PHYS2INST should be used correctly for Dual Net operation
+ *     chg: do no longer work with older PNMI
+ *
+ *     Revision 1.64  2001/02/15 11:27:04  rassmann
+ *     Working with RLMT v1 if SK_MAX_NETS undefined.
+ *
+ *     Revision 1.63  2001/02/06 10:44:23  mkunz
+ *     - NetIndex added to interface functions of pnmi V4 with dual net support
+ *
+ *     Revision 1.62  2001/01/31 15:31:41  gklug
+ *     fix: problem with autosensing an SR8800 switch
+ *
+ *     Revision 1.61  2000/11/09 11:30:09  rassmann
+ *     WA: Waiting after releasing reset until BCom chip is accessible.
+ *
+ *     Revision 1.60  2000/10/18 12:37:48  cgoos
+ *     Reinserted the comment for version 1.56.
+ *
+ *     Revision 1.59  2000/10/18 12:22:20  cgoos
+ *     Added workaround for half duplex hangup.
+ *
+ *     Revision 1.58  2000/09/28 13:06:04  gklug
+ *     fix: BCom may NOT be touched if XMAC is in RESET state
+ *
+ *     Revision 1.57  2000/09/08 12:38:39  cgoos
+ *     Added forgotten variable declaration.
+ *
+ *     Revision 1.56  2000/09/08 08:12:13  cgoos
+ *     Changed handling of parity errors in SkGeHwErr (correct reset of error).
+ *
+ *     Revision 1.55  2000/06/19 08:36:25  cgoos
+ *     Changed comment.
+ *
+ *     Revision 1.54  2000/05/22 08:45:57  malthoff
+ *     Fix: #10523 is valid for all BCom PHYs.
+ *
+ *     Revision 1.53  2000/05/19 10:20:30  cgoos
+ *     Removed Solaris debug output code.
+ *
+ *     Revision 1.52  2000/05/19 10:19:37  cgoos
+ *     Added PHY state check in HWLinkDown.
+ *     Move PHY interrupt code to IS_EXT_REG case in SkGeSirqIsr.
+ *
+ *     Revision 1.51  2000/05/18 05:56:20  cgoos
+ *     Fixed typo.
+ *
+ *     Revision 1.50  2000/05/17 12:49:49  malthoff
+ *     Fixes BCom link bugs (#10523).
+ *
+ *     Revision 1.49  1999/12/17 11:02:50  gklug
+ *     fix: read PHY_STAT of Broadcom chip more often to assure good status
+ *
+ *     Revision 1.48  1999/12/06 10:01:17  cgoos
+ *     Added SET function for Role.
+ *
+ *     Revision 1.47  1999/11/22 13:34:24  cgoos
+ *     Changed license header to GPL.
+ *
+ *     Revision 1.46  1999/09/16 10:30:07  cgoos
+ *     Removed debugging output statement from Linux.
+ *
+ *     Revision 1.45  1999/09/16 07:32:55  cgoos
+ *     Fixed dual-port copperfield bug (PHY_READ from resetted port).
+ *     Removed some unused variables.
+ *
+ *     Revision 1.44  1999/08/03 15:25:04  cgoos
+ *     Removed workaround for disabled interrupts in half duplex mode.
+ *
+ *     Revision 1.43  1999/08/03 14:27:58  cgoos
+ *     Removed SENSE mode code from SkGePortCheckUpBcom.
+ *
+ *     Revision 1.42  1999/07/26 09:16:54  cgoos
+ *     Added some typecasts to avoid compiler warnings.
+ *
+ *     Revision 1.41  1999/05/19 07:28:59  cgoos
+ *     Changes for 1000Base-T.
+ *
+ *     Revision 1.40  1999/04/08 13:59:39  gklug
+ *     fix: problem with 3Com switches endless RESTARTs
+ *
+ *     Revision 1.39  1999/03/08 10:10:52  gklug
+ *     fix: AutoSensing did switch to next mode even if LiPa indicated offline
+ *
+ *     Revision 1.38  1999/03/08 09:49:03  gklug
+ *     fix: Bug using pAC instead of IoC, causing AIX problems
+ *     fix: change compare for Linux compiler bug workaround
+ *
+ *     Revision 1.37  1999/01/28 14:51:33  gklug
+ *     fix: monitor for autosensing and extra RESETS the RX on wire counters
+ *
+ *     Revision 1.36  1999/01/22 09:19:55  gklug
+ *     fix: Init DupMode and InitPauseMd are now called in RxTxEnable
+ *
+ *     Revision 1.35  1998/12/11 15:22:59  gklug
+ *     chg: autosensing: check for receive if manual mode was guessed
+ *     chg: simplified workaround for XMAC errata
+ *     chg: wait additional 100 ms before link goes up.
+ *     chg: autoneg timeout to 600 ms
+ *     chg: restart autoneg even if configured to autonegotiation
+ *
+ *     Revision 1.34  1998/12/10 10:33:14  gklug
+ *     add: more debug messages
+ *     fix: do a new InitPhy if link went down (AutoSensing problem)
+ *     chg: Check for zero shorts if link is NOT up
+ *     chg: reset Port if link goes down
+ *     chg: wait additional 100 ms when link comes up to check shorts
+ *     fix: dummy read extended autoneg status to prevent link going down immediately
+ *
+ *     Revision 1.33  1998/12/07 12:18:29  gklug
+ *     add: refinement of autosense mode: take into account the autoneg cap of LiPa
+ *
+ *     Revision 1.32  1998/12/07 07:11:21  gklug
+ *     fix: compiler warning
+ *
+ *     Revision 1.31  1998/12/02 09:29:05  gklug
+ *     fix: WA XMAC Errata: FCSCt check was not correct.
+ *     fix: WA XMAC Errata: Prec Counter were NOT updated in case of short checks.
+ *     fix: Clear Stat : now clears the Prev counters of all known Ports
+ *
+ *     Revision 1.30  1998/12/01 10:54:15  gklug
+ *     dd: workaround for XMAC errata changed. Check RX count and CRC err Count, too.
+ *
+ *     Revision 1.29  1998/12/01 10:01:53  gklug
+ *     fix: if MAC IRQ occurs during port down, this will be handled correctly
+ *
+ *     Revision 1.28  1998/11/26 16:22:11  gklug
+ *     fix: bug in autosense if manual modes are used
+ *
+ *     Revision 1.27  1998/11/26 15:50:06  gklug
+ *     fix: PNMI needs to set PLinkModeConf
+ *
+ *     Revision 1.26  1998/11/26 14:51:58  gklug
+ *     add: AutoSensing functionalty
+ *
+ *     Revision 1.25  1998/11/26 07:34:37  gklug
+ *     fix: Init PrevShorts when restarting port due to Link connection
+ *
+ *     Revision 1.24  1998/11/25 10:57:32  gklug
+ *     fix: remove unreferenced local vars
+ *
+ *     Revision 1.23  1998/11/25 08:26:40  gklug
+ *     fix: don't do a RESET on a starting or stopping port
+ *
+ *     Revision 1.22  1998/11/24 13:29:44  gklug
+ *     add: Workaround for MAC parity errata
+ *
+ *     Revision 1.21  1998/11/18 15:31:06  gklug
+ *     fix: lint bugs
+ *
+ *     Revision 1.20  1998/11/18 12:58:54  gklug
+ *     fix: use PNMI query instead of hardware access
+ *
+ *     Revision 1.19  1998/11/18 12:54:55  gklug
+ *     chg: add new workaround for XMAC Errata
+ *     add: short event counter monitoring on active link too
+ *
+ *     Revision 1.18  1998/11/13 14:27:41  malthoff
+ *     Bug Fix: Packet Arbiter Timeout was not cleared correctly
+ *     for timeout on TX1 and TX2.
+ *
+ *     Revision 1.17  1998/11/04 07:01:59  cgoos
+ *     Moved HW link poll sequence.
+ *     Added call to SkXmRxTxEnable.
+ *
+ *     Revision 1.16  1998/11/03 13:46:03  gklug
+ *     add: functionality of SET_LMODE and SET_FLOW_MODE
+ *     fix: send RLMT LinkDown event when Port stop is given with LinkUp
+ *
+ *     Revision 1.15  1998/11/03 12:56:47  gklug
+ *     fix: Needs more events
+ *
+ *     Revision 1.14  1998/10/30 07:36:35  gklug
+ *     rmv: unnecessary code
+ *
+ *     Revision 1.13  1998/10/29 15:21:57  gklug
+ *     add: Poll link feature for activating HW link
+ *     fix: Deactivate HWLink when Port STOP is given
+ *
+ *     Revision 1.12  1998/10/28 07:38:57  cgoos
+ *     Checking link status at begin of SkHWLinkUp.
+ *
+ *     Revision 1.11  1998/10/22 09:46:50  gklug
+ *     fix SysKonnectFileId typo
+ *
+ *     Revision 1.10  1998/10/14 13:57:47  gklug
+ *     add: Port start/stop event
+ *
+ *     Revision 1.9  1998/10/14 05:48:29  cgoos
+ *     Added definition for Para.
+ *
+ *     Revision 1.8  1998/10/14 05:40:09  gklug
+ *     add: Hardware Linkup signal used
+ *
+ *     Revision 1.7  1998/10/09 06:50:20  malthoff
+ *     Remove ID_sccs by SysKonnectFileId.
+ *
+ *     Revision 1.6  1998/10/08 09:11:49  gklug
+ *     add: clear IRQ commands
+ *
+ *     Revision 1.5  1998/10/02 14:27:35  cgoos
+ *     Fixed some typos and wrong event names.
+ *
+ *     Revision 1.4  1998/10/02 06:24:17  gklug
+ *     add: HW error function
+ *     fix: OUT macros
+ *
+ *     Revision 1.3  1998/10/01 07:03:00  gklug
+ *     add: ISR for the usual interrupt source register
+ *
+ *     Revision 1.2  1998/09/03 13:50:33  gklug
+ *     add: function prototypes
+ *
+ *     Revision 1.1  1998/08/27 11:50:21  gklug
+ *     initial revision
+ *
+ *
+ *
+ ******************************************************************************/
+
+#include <config.h>
+
+/*
+ *     Special Interrupt handler
+ *
+ *     The following abstract should show how this module is included
+ *     in the driver path:
+ *
+ *     In the ISR of the driver the bits for frame transmission complete and
+ *     for receive complete are checked and handled by the driver itself.
+ *     The bits of the slow path mask are checked after that and then the
+ *     entry into the so-called "slow path" is prepared. It is an implementors
+ *     decision whether this is executed directly or just scheduled by
+ *     disabling the mask. In the interrupt service routine some events may be
+ *     generated, so it would be a good idea to call the EventDispatcher
+ *     right after this ISR.
+ *
+ *     The Interrupt source register of the adapter is NOT read by this module.
+ *  SO if the drivers implementor needs a while loop around the
+ *     slow data paths interrupt bits, he needs to call the SkGeSirqIsr() for
+ *     each loop entered.
+ *
+ *     However, the MAC Interrupt status registers are read in a while loop.
+ *
+ */
+
+static const char SysKonnectFileId[] =
+       "$Id: skgesirq.c,v 1.1.1.1 2009/03/25 22:22:09 kenagy Exp $" ;
+
+#include "h/skdrv1st.h"                /* Driver Specific Definitions */
+#include "h/skgepnmi.h"                /* PNMI Definitions */
+#include "h/skrlmt.h"          /* RLMT Definitions */
+#include "h/skdrv2nd.h"                /* Adapter Control and Driver specific Def. */
+
+/* local function prototypes */
+static int     SkGePortCheckUpXmac(SK_AC*, SK_IOC, int);
+static int     SkGePortCheckUpBcom(SK_AC*, SK_IOC, int);
+static int     SkGePortCheckUpGmac(SK_AC*, SK_IOC, int);
+static void    SkPhyIsrBcom(SK_AC*, SK_IOC, int, SK_U16);
+static void    SkPhyIsrGmac(SK_AC*, SK_IOC, int, SK_U16);
+#ifdef OTHER_PHY
+static int     SkGePortCheckUpLone(SK_AC*, SK_IOC, int);
+static int     SkGePortCheckUpNat(SK_AC*, SK_IOC, int);
+static void    SkPhyIsrLone(SK_AC*, SK_IOC, int, SK_U16);
+#endif /* OTHER_PHY */
+
+/*
+ * array of Rx counter from XMAC which are checked
+ * in AutoSense mode to check whether a link is not able to auto-negotiate.
+ */
+static const SK_U16 SkGeRxRegs[]= {
+       XM_RXF_64B,
+       XM_RXF_127B,
+       XM_RXF_255B,
+       XM_RXF_511B,
+       XM_RXF_1023B,
+       XM_RXF_MAX_SZ
+} ;
+
+#ifdef __C2MAN__
+/*
+ *     Special IRQ function
+ *
+ *     General Description:
+ *
+ */
+intro()
+{}
+#endif
+
+/* Define return codes of SkGePortCheckUp and CheckShort */
+#define        SK_HW_PS_NONE           0        /* No action needed */
+#define        SK_HW_PS_RESTART        1       /* Restart needed */
+#define        SK_HW_PS_LINK           2       /* Link Up actions needed */
+
+/******************************************************************************
+ *
+ *     SkHWInitDefSense() - Default Autosensing mode initialization
+ *
+ * Description: sets the PLinkMode for HWInit
+ *
+ * Returns: N/A
+ */
+static void SkHWInitDefSense(
+SK_AC  *pAC,   /* adapter context */
+SK_IOC IoC,    /* IO context */
+int            Port)   /* Port Index (MAC_1 + n) */
+{
+       SK_GEPORT       *pPrt;          /* GIni Port struct pointer */
+
+       pPrt = &pAC->GIni.GP[Port];
+
+       pPrt->PAutoNegTimeOut = 0;
+
+       if (pPrt->PLinkModeConf != SK_LMODE_AUTOSENSE) {
+               pPrt->PLinkMode = pPrt->PLinkModeConf;
+               return;
+       }
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ,
+               ("AutoSensing: First mode %d on Port %d\n",
+               (int)SK_LMODE_AUTOFULL, Port));
+
+       pPrt->PLinkMode = SK_LMODE_AUTOFULL;
+
+       return;
+}      /* SkHWInitDefSense */
+
+
+/******************************************************************************
+ *
+ *     SkHWSenseGetNext() - Get Next Autosensing Mode
+ *
+ * Description: gets the appropriate next mode
+ *
+ * Note:
+ *
+ */
+SK_U8 SkHWSenseGetNext(
+SK_AC  *pAC,   /* adapter context */
+SK_IOC IoC,    /* IO context */
+int            Port)   /* Port Index (MAC_1 + n) */
+{
+       SK_GEPORT       *pPrt;          /* GIni Port struct pointer */
+
+       pPrt = &pAC->GIni.GP[Port];
+
+       pPrt->PAutoNegTimeOut = 0;
+
+       if (pPrt->PLinkModeConf != SK_LMODE_AUTOSENSE) {
+               /* Leave all as configured */
+               return(pPrt->PLinkModeConf);
+       }
+
+       if (pPrt->PLinkMode == SK_LMODE_AUTOFULL) {
+               /* Return next mode AUTOBOTH */
+               return(SK_LMODE_AUTOBOTH);
+       }
+
+       /* Return default autofull */
+       return(SK_LMODE_AUTOFULL);
+}      /* SkHWSenseGetNext */
+
+
+/******************************************************************************
+ *
+ *     SkHWSenseSetNext() - Autosensing Set next mode
+ *
+ * Description:        sets the appropriate next mode
+ *
+ * Returns: N/A
+ */
+void SkHWSenseSetNext(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* IO context */
+int            Port,           /* Port Index (MAC_1 + n) */
+SK_U8  NewMode)        /* New Mode to be written in sense mode */
+{
+       SK_GEPORT       *pPrt;          /* GIni Port struct pointer */
+
+       pPrt = &pAC->GIni.GP[Port];
+
+       pPrt->PAutoNegTimeOut = 0;
+
+       if (pPrt->PLinkModeConf != SK_LMODE_AUTOSENSE) {
+               return;
+       }
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ,
+               ("AutoSensing: next mode %d on Port %d\n",
+               (int)NewMode, Port));
+
+       pPrt->PLinkMode = NewMode;
+
+       return;
+}      /* SkHWSenseSetNext */
+
+
+/******************************************************************************
+ *
+ *     SkHWLinkDown() - Link Down handling
+ *
+ * Description: handles the hardware link down signal
+ *
+ * Returns: N/A
+ */
+void SkHWLinkDown(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* IO context */
+int            Port)           /* Port Index (MAC_1 + n) */
+{
+       SK_GEPORT       *pPrt;          /* GIni Port struct pointer */
+
+       pPrt = &pAC->GIni.GP[Port];
+
+       /* Disable all MAC interrupts */
+       SkMacIrqDisable(pAC, IoC, Port);
+
+       /* Disable Receiver and Transmitter */
+       SkMacRxTxDisable(pAC, IoC, Port);
+
+       /* Init default sense mode */
+       SkHWInitDefSense(pAC, IoC, Port);
+
+       if (!pPrt->PHWLinkUp) {
+               return;
+       }
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ,
+               ("Link down Port %d\n", Port));
+
+       /* Set Link to DOWN */
+       pPrt->PHWLinkUp = SK_FALSE;
+
+       /* Reset Port stati */
+       pPrt->PLinkModeStatus = SK_LMODE_STAT_UNKNOWN;
+       pPrt->PFlowCtrlStatus = SK_FLOW_STAT_NONE;
+       pPrt->PLinkSpeedUsed = SK_LSPEED_STAT_INDETERMINATED;
+
+       /* Re-init Phy especially when the AutoSense default is set now */
+       SkMacInitPhy(pAC, IoC, Port, SK_FALSE);
+
+       /* GP0: used for workaround of Rev. C Errata 2 */
+
+       /* Do NOT signal to RLMT */
+
+       /* Do NOT start the timer here */
+}      /* SkHWLinkDown */
+
+
+/******************************************************************************
+ *
+ *     SkHWLinkUp() - Link Up handling
+ *
+ * Description: handles the hardware link up signal
+ *
+ * Returns: N/A
+ */
+void SkHWLinkUp(
+SK_AC  *pAC,   /* adapter context */
+SK_IOC IoC,    /* IO context */
+int            Port)   /* Port Index (MAC_1 + n) */
+{
+       SK_GEPORT       *pPrt;          /* GIni Port struct pointer */
+
+       pPrt = &pAC->GIni.GP[Port];
+
+       if (pPrt->PHWLinkUp) {
+               /* We do NOT need to proceed on active link */
+               return;
+       }
+
+       pPrt->PHWLinkUp = SK_TRUE;
+       pPrt->PAutoNegFail = SK_FALSE;
+       pPrt->PLinkModeStatus = SK_LMODE_STAT_UNKNOWN;
+
+       if (pPrt->PLinkMode != SK_LMODE_AUTOHALF &&
+           pPrt->PLinkMode != SK_LMODE_AUTOFULL &&
+           pPrt->PLinkMode != SK_LMODE_AUTOBOTH) {
+               /* Link is up and no Auto-negotiation should be done */
+
+               /* Link speed should be the configured one */
+               switch (pPrt->PLinkSpeed) {
+               case SK_LSPEED_AUTO:
+                       /* default is 1000 Mbps */
+               case SK_LSPEED_1000MBPS:
+                       pPrt->PLinkSpeedUsed = SK_LSPEED_STAT_1000MBPS;
+                       break;
+               case SK_LSPEED_100MBPS:
+                       pPrt->PLinkSpeedUsed = SK_LSPEED_STAT_100MBPS;
+                       break;
+               case SK_LSPEED_10MBPS:
+                       pPrt->PLinkSpeedUsed = SK_LSPEED_STAT_10MBPS;
+                       break;
+               }
+
+               /* Set Link Mode Status */
+               if (pPrt->PLinkMode == SK_LMODE_FULL) {
+                       pPrt->PLinkModeStatus = SK_LMODE_STAT_FULL;
+               }
+               else {
+                       pPrt->PLinkModeStatus = SK_LMODE_STAT_HALF;
+               }
+
+               /* No flow control without auto-negotiation */
+               pPrt->PFlowCtrlStatus = SK_FLOW_STAT_NONE;
+
+               /* enable Rx/Tx */
+               SkMacRxTxEnable(pAC, IoC, Port);
+       }
+}      /* SkHWLinkUp */
+
+
+/******************************************************************************
+ *
+ *     SkMacParity() - MAC parity workaround
+ *
+ * Description: handles MAC parity errors correctly
+ *
+ * Returns: N/A
+ */
+static void SkMacParity(
+SK_AC  *pAC,   /* adapter context */
+SK_IOC IoC,    /* IO context */
+int            Port)   /* Port Index of the port failed */
+{
+       SK_EVPARA       Para;
+       SK_GEPORT       *pPrt;          /* GIni Port struct pointer */
+       SK_U32          TxMax;          /* TxMax Counter */
+
+       pPrt = &pAC->GIni.GP[Port];
+
+       /* Clear IRQ Tx Parity Error */
+       if (pAC->GIni.GIGenesis) {
+               SK_OUT16(IoC, MR_ADDR(Port, TX_MFF_CTRL1), MFF_CLR_PERR);
+       }
+       else {
+               /* HW-Bug #8: cleared by GMF_CLI_TX_FC instead of GMF_CLI_TX_PE */
+               SK_OUT8(IoC, MR_ADDR(Port, TX_GMF_CTRL_T),
+                       (SK_U8)((pAC->GIni.GIChipRev == 0) ? GMF_CLI_TX_FC : GMF_CLI_TX_PE));
+       }
+
+       if (pPrt->PCheckPar) {
+               if (Port == MAC_1) {
+                       SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E016, SKERR_SIRQ_E016MSG);
+               }
+               else {
+                       SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E017, SKERR_SIRQ_E017MSG);
+               }
+               Para.Para64 = Port;
+               SkEventQueue(pAC, SKGE_DRV, SK_DRV_PORT_FAIL, Para);
+               Para.Para32[0] = Port;
+               SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_LINK_DOWN, Para);
+
+               return;
+       }
+
+       /* Check whether frames with a size of 1k were sent */
+       if (pAC->GIni.GIGenesis) {
+               /* Snap statistic counters */
+               (void)SkXmUpdateStats(pAC, IoC, Port);
+
+               (void)SkXmMacStatistic(pAC, IoC, Port, XM_TXF_MAX_SZ, &TxMax);
+       }
+       else {
+               (void)SkGmMacStatistic(pAC, IoC, Port, GM_TXF_1518B, &TxMax);
+       }
+
+       if (TxMax > 0) {
+               /* From now on check the parity */
+               pPrt->PCheckPar = SK_TRUE;
+       }
+}      /* SkMacParity */
+
+
+/******************************************************************************
+ *
+ *     SkGeHwErr() - Hardware Error service routine
+ *
+ * Description: handles all HW Error interrupts
+ *
+ * Returns: N/A
+ */
+static void SkGeHwErr(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* IO context */
+SK_U32 HwStatus)       /* Interrupt status word */
+{
+       SK_EVPARA       Para;
+       SK_U16          Word;
+
+       if ((HwStatus & (IS_IRQ_MST_ERR | IS_IRQ_STAT)) != 0) {
+               /* PCI Errors occured */
+               if ((HwStatus & IS_IRQ_STAT) != 0) {
+                       SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E013, SKERR_SIRQ_E013MSG);
+               }
+               else {
+                       SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E012, SKERR_SIRQ_E012MSG);
+               }
+
+               /* Reset all bits in the PCI STATUS register */
+               SK_IN16(IoC, PCI_C(PCI_STATUS), &Word);
+
+               SK_OUT8(IoC, B2_TST_CTRL1, TST_CFG_WRITE_ON);
+               SK_OUT16(IoC, PCI_C(PCI_STATUS), Word | PCI_ERRBITS);
+               SK_OUT8(IoC, B2_TST_CTRL1, TST_CFG_WRITE_OFF);
+
+               Para.Para64 = 0;
+               SkEventQueue(pAC, SKGE_DRV, SK_DRV_ADAP_FAIL, Para);
+       }
+
+       if (pAC->GIni.GIGenesis) {
+               if ((HwStatus & IS_NO_STAT_M1) != 0) {
+                       /* Ignore it */
+                       /* This situation is also indicated in the descriptor */
+                       SK_OUT16(IoC, MR_ADDR(MAC_1, RX_MFF_CTRL1), MFF_CLR_INSTAT);
+               }
+
+               if ((HwStatus & IS_NO_STAT_M2) != 0) {
+                       /* Ignore it */
+                       /* This situation is also indicated in the descriptor */
+                       SK_OUT16(IoC, MR_ADDR(MAC_2, RX_MFF_CTRL1), MFF_CLR_INSTAT);
+               }
+
+               if ((HwStatus & IS_NO_TIST_M1) != 0) {
+                       /* Ignore it */
+                       /* This situation is also indicated in the descriptor */
+                       SK_OUT16(IoC, MR_ADDR(MAC_1, RX_MFF_CTRL1), MFF_CLR_INTIST);
+               }
+
+               if ((HwStatus & IS_NO_TIST_M2) != 0) {
+                       /* Ignore it */
+                       /* This situation is also indicated in the descriptor */
+                       SK_OUT16(IoC, MR_ADDR(MAC_2, RX_MFF_CTRL1), MFF_CLR_INTIST);
+               }
+       }
+       else {  /* YUKON */
+               /* This is necessary only for Rx timing measurements */
+               if ((HwStatus & IS_IRQ_TIST_OV) != 0) {
+                       /* Clear Time Stamp Timer IRQ */
+                       SK_OUT8(IoC, GMAC_TI_ST_CTRL, (SK_U8)GMT_ST_CLR_IRQ);
+               }
+
+               if ((HwStatus & IS_IRQ_SENSOR) != 0) {
+                       /* Clear I2C IRQ */
+                       SK_OUT32(IoC, B2_I2C_IRQ, I2C_CLR_IRQ);
+               }
+       }
+
+       if ((HwStatus & IS_RAM_RD_PAR) != 0) {
+               SK_OUT16(IoC, B3_RI_CTRL, RI_CLR_RD_PERR);
+               SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E014, SKERR_SIRQ_E014MSG);
+               Para.Para64 = 0;
+               SkEventQueue(pAC, SKGE_DRV, SK_DRV_ADAP_FAIL, Para);
+       }
+
+       if ((HwStatus & IS_RAM_WR_PAR) != 0) {
+               SK_OUT16(IoC, B3_RI_CTRL, RI_CLR_WR_PERR);
+               SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E015, SKERR_SIRQ_E015MSG);
+               Para.Para64 = 0;
+               SkEventQueue(pAC, SKGE_DRV, SK_DRV_ADAP_FAIL, Para);
+       }
+
+       if ((HwStatus & IS_M1_PAR_ERR) != 0) {
+               SkMacParity(pAC, IoC, MAC_1);
+       }
+
+       if ((HwStatus & IS_M2_PAR_ERR) != 0) {
+               SkMacParity(pAC, IoC, MAC_2);
+       }
+
+       if ((HwStatus & IS_R1_PAR_ERR) != 0) {
+               /* Clear IRQ */
+               SK_OUT32(IoC, B0_R1_CSR, CSR_IRQ_CL_P);
+
+               SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E018, SKERR_SIRQ_E018MSG);
+               Para.Para64 = MAC_1;
+               SkEventQueue(pAC, SKGE_DRV, SK_DRV_PORT_FAIL, Para);
+               Para.Para32[0] = MAC_1;
+               SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_LINK_DOWN, Para);
+       }
+
+       if ((HwStatus & IS_R2_PAR_ERR) != 0) {
+               /* Clear IRQ */
+               SK_OUT32(IoC, B0_R2_CSR, CSR_IRQ_CL_P);
+
+               SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E019, SKERR_SIRQ_E019MSG);
+               Para.Para64 = MAC_2;
+               SkEventQueue(pAC, SKGE_DRV, SK_DRV_PORT_FAIL, Para);
+               Para.Para32[0] = MAC_2;
+               SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_LINK_DOWN, Para);
+       }
+}      /* SkGeHwErr */
+
+
+/******************************************************************************
+ *
+ *     SkGeSirqIsr() - Special Interrupt Service Routine
+ *
+ * Description: handles all non data transfer specific interrupts (slow path)
+ *
+ * Returns: N/A
+ */
+void SkGeSirqIsr(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* IO context */
+SK_U32 Istatus)        /* Interrupt status word */
+{
+       SK_EVPARA       Para;
+       SK_U32          RegVal32;       /* Read register value */
+       SK_GEPORT       *pPrt;          /* GIni Port struct pointer */
+       unsigned        Len;
+       SK_U64          Octets;
+       SK_U16          PhyInt;
+       SK_U16          PhyIMsk;
+       int                     i;
+
+       if ((Istatus & IS_HW_ERR) != 0) {
+               /* read the HW Error Interrupt source */
+               SK_IN32(IoC, B0_HWE_ISRC, &RegVal32);
+
+               SkGeHwErr(pAC, IoC, RegVal32);
+       }
+
+       /*
+        * Packet Timeout interrupts
+        */
+       /* Check whether MACs are correctly initialized */
+       if (((Istatus & (IS_PA_TO_RX1 | IS_PA_TO_TX1)) != 0) &&
+               pAC->GIni.GP[MAC_1].PState == SK_PRT_RESET) {
+               /* MAC 1 was not initialized but Packet timeout occured */
+               SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_SIRQ_E004,
+                       SKERR_SIRQ_E004MSG);
+       }
+
+       if (((Istatus & (IS_PA_TO_RX2 | IS_PA_TO_TX2)) != 0) &&
+           pAC->GIni.GP[MAC_2].PState == SK_PRT_RESET) {
+               /* MAC 2 was not initialized but Packet timeout occured */
+               SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_SIRQ_E005,
+                       SKERR_SIRQ_E005MSG);
+       }
+
+       if ((Istatus & IS_PA_TO_RX1) != 0) {
+               /* Means network is filling us up */
+               SK_ERR_LOG(pAC, SK_ERRCL_HW | SK_ERRCL_INIT, SKERR_SIRQ_E002,
+                       SKERR_SIRQ_E002MSG);
+               SK_OUT16(IoC, B3_PA_CTRL, PA_CLR_TO_RX1);
+       }
+
+       if ((Istatus & IS_PA_TO_RX2) != 0) {
+               /* Means network is filling us up */
+               SK_ERR_LOG(pAC, SK_ERRCL_HW | SK_ERRCL_INIT, SKERR_SIRQ_E003,
+                       SKERR_SIRQ_E003MSG);
+               SK_OUT16(IoC, B3_PA_CTRL, PA_CLR_TO_RX2);
+       }
+
+       if ((Istatus & IS_PA_TO_TX1) != 0) {
+
+               pPrt = &pAC->GIni.GP[0];
+
+               /* May be a normal situation in a server with a slow network */
+               SK_OUT16(IoC, B3_PA_CTRL, PA_CLR_TO_TX1);
+
+               /*
+                * workaround: if in half duplex mode, check for Tx hangup.
+                * Read number of TX'ed bytes, wait for 10 ms, then compare
+                * the number with current value. If nothing changed, we assume
+                * that Tx is hanging and do a FIFO flush (see event routine).
+                */
+               if ((pPrt->PLinkModeStatus == SK_LMODE_STAT_HALF ||
+                   pPrt->PLinkModeStatus == SK_LMODE_STAT_AUTOHALF) &&
+                   !pPrt->HalfDupTimerActive) {
+                       /*
+                        * many more pack. arb. timeouts may come in between,
+                        * we ignore those
+                        */
+                       pPrt->HalfDupTimerActive = SK_TRUE;
+
+                       Len = sizeof(SK_U64);
+                       SkPnmiGetVar(pAC, IoC, OID_SKGE_STAT_TX_OCTETS, (char *)&Octets,
+                               &Len, (SK_U32) SK_PNMI_PORT_PHYS2INST(pAC, 0),
+                               pAC->Rlmt.Port[0].Net->NetNumber);
+
+                       pPrt->LastOctets = Octets;
+
+                       Para.Para32[0] = 0;
+                       SkTimerStart(pAC, IoC, &pPrt->HalfDupChkTimer, SK_HALFDUP_CHK_TIME,
+                               SKGE_HWAC, SK_HWEV_HALFDUP_CHK, Para);
+               }
+       }
+
+       if ((Istatus & IS_PA_TO_TX2) != 0) {
+
+               pPrt = &pAC->GIni.GP[1];
+
+               /* May be a normal situation in a server with a slow network */
+               SK_OUT16(IoC, B3_PA_CTRL, PA_CLR_TO_TX2);
+
+               /* workaround: see above */
+               if ((pPrt->PLinkModeStatus == SK_LMODE_STAT_HALF ||
+                    pPrt->PLinkModeStatus == SK_LMODE_STAT_AUTOHALF) &&
+                   !pPrt->HalfDupTimerActive) {
+                       pPrt->HalfDupTimerActive = SK_TRUE;
+
+                       Len = sizeof(SK_U64);
+                       SkPnmiGetVar(pAC, IoC, OID_SKGE_STAT_TX_OCTETS, (char *)&Octets,
+                               &Len, (SK_U32) SK_PNMI_PORT_PHYS2INST(pAC, 1),
+                               pAC->Rlmt.Port[1].Net->NetNumber);
+
+                       pPrt->LastOctets = Octets;
+
+                       Para.Para32[0] = 1;
+                       SkTimerStart(pAC, IoC, &pPrt->HalfDupChkTimer, SK_HALFDUP_CHK_TIME,
+                               SKGE_HWAC, SK_HWEV_HALFDUP_CHK, Para);
+               }
+       }
+
+       /* Check interrupts of the particular queues */
+       if ((Istatus & IS_R1_C) != 0) {
+               /* Clear IRQ */
+               SK_OUT32(IoC, B0_R1_CSR, CSR_IRQ_CL_C);
+               SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_SIRQ_E006,
+                       SKERR_SIRQ_E006MSG);
+               Para.Para64 = MAC_1;
+               SkEventQueue(pAC, SKGE_DRV, SK_DRV_PORT_FAIL, Para);
+               Para.Para32[0] = MAC_1;
+               SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_LINK_DOWN, Para);
+       }
+
+       if ((Istatus & IS_R2_C) != 0) {
+               /* Clear IRQ */
+               SK_OUT32(IoC, B0_R2_CSR, CSR_IRQ_CL_C);
+               SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_SIRQ_E007,
+                       SKERR_SIRQ_E007MSG);
+               Para.Para64 = MAC_2;
+               SkEventQueue(pAC, SKGE_DRV, SK_DRV_PORT_FAIL, Para);
+               Para.Para32[0] = MAC_2;
+               SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_LINK_DOWN, Para);
+       }
+
+       if ((Istatus & IS_XS1_C) != 0) {
+               /* Clear IRQ */
+               SK_OUT32(IoC, B0_XS1_CSR, CSR_IRQ_CL_C);
+               SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_SIRQ_E008,
+                       SKERR_SIRQ_E008MSG);
+               Para.Para64 = MAC_1;
+               SkEventQueue(pAC, SKGE_DRV, SK_DRV_PORT_FAIL, Para);
+               Para.Para32[0] = MAC_1;
+               SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_LINK_DOWN, Para);
+       }
+
+       if ((Istatus & IS_XA1_C) != 0) {
+               /* Clear IRQ */
+               SK_OUT32(IoC, B0_XA1_CSR, CSR_IRQ_CL_C);
+               SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_SIRQ_E009,
+                       SKERR_SIRQ_E009MSG);
+               Para.Para64 = MAC_1;
+               SkEventQueue(pAC, SKGE_DRV, SK_DRV_PORT_FAIL, Para);
+               Para.Para32[0] = MAC_1;
+               SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_LINK_DOWN, Para);
+       }
+
+       if ((Istatus & IS_XS2_C) != 0) {
+               /* Clear IRQ */
+               SK_OUT32(IoC, B0_XS2_CSR, CSR_IRQ_CL_C);
+               SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_SIRQ_E010,
+                       SKERR_SIRQ_E010MSG);
+               Para.Para64 = MAC_2;
+               SkEventQueue(pAC, SKGE_DRV, SK_DRV_PORT_FAIL, Para);
+               Para.Para32[0] = MAC_2;
+               SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_LINK_DOWN, Para);
+       }
+
+       if ((Istatus & IS_XA2_C) != 0) {
+               /* Clear IRQ */
+               SK_OUT32(IoC, B0_XA2_CSR, CSR_IRQ_CL_C);
+               SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_SIRQ_E011,
+                       SKERR_SIRQ_E011MSG);
+               Para.Para64 = MAC_2;
+               SkEventQueue(pAC, SKGE_DRV, SK_DRV_PORT_FAIL, Para);
+               Para.Para32[0] = MAC_2;
+               SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_LINK_DOWN, Para);
+       }
+
+       /* External reg interrupt */
+       if ((Istatus & IS_EXT_REG) != 0) {
+               /* Test IRQs from PHY */
+               for (i = 0; i < pAC->GIni.GIMacsFound; i++) {
+
+                       pPrt = &pAC->GIni.GP[i];
+
+                       if (pPrt->PState == SK_PRT_RESET) {
+                               continue;
+                       }
+
+                       switch (pPrt->PhyType) {
+
+                       case SK_PHY_XMAC:
+                               break;
+
+                       case SK_PHY_BCOM:
+                               SkXmPhyRead(pAC, IoC, i, PHY_BCOM_INT_STAT, &PhyInt);
+                               SkXmPhyRead(pAC, IoC, i, PHY_BCOM_INT_MASK, &PhyIMsk);
+
+                               if ((PhyInt & ~PhyIMsk) != 0) {
+                                       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ,
+                                               ("Port %d Bcom Int: 0x%04X Mask: 0x%04X\n",
+                                               i, PhyInt, PhyIMsk));
+                                       SkPhyIsrBcom(pAC, IoC, i, PhyInt);
+                               }
+                               break;
+
+                       case SK_PHY_MARV_COPPER:
+                       case SK_PHY_MARV_FIBER:
+                               SkGmPhyRead(pAC, IoC, i, PHY_MARV_INT_STAT, &PhyInt);
+                               SkGmPhyRead(pAC, IoC, i, PHY_MARV_INT_MASK, &PhyIMsk);
+
+                               if ((PhyInt & PhyIMsk) != 0) {
+                                       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ,
+                                               ("Port %d Marv Int: 0x%04X Mask: 0x%04X\n",
+                                               i, PhyInt, PhyIMsk));
+                                       SkPhyIsrGmac(pAC, IoC, i, PhyInt);
+                               }
+                               break;
+
+#ifdef OTHER_PHY
+                       case SK_PHY_LONE:
+                               SkXmPhyRead(pAC, IoC, i, PHY_LONE_INT_STAT, &PhyInt);
+                               SkXmPhyRead(pAC, IoC, i, PHY_LONE_INT_ENAB, &PhyIMsk);
+
+                               if ((PhyInt & PhyIMsk) != 0) {
+                                       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ,
+                                               ("Port %d Lone Int: %x Mask: %x\n",
+                                               i, PhyInt, PhyIMsk));
+                                       SkPhyIsrLone(pAC, IoC, i, PhyInt);
+                               }
+                               break;
+                       case SK_PHY_NAT:
+                               /* todo: National */
+                               break;
+#endif /* OTHER_PHY */
+                       }
+               }
+       }
+
+       /* I2C Ready interrupt */
+       if ((Istatus & IS_I2C_READY) != 0) {
+               SkI2cIsr(pAC, IoC);
+       }
+
+       if ((Istatus & IS_LNK_SYNC_M1) != 0) {
+               /*
+                * We do NOT need the Link Sync interrupt, because it shows
+                * us only a link going down.
+                */
+               /* clear interrupt */
+               SK_OUT8(IoC, MR_ADDR(MAC_1, LNK_SYNC_CTRL), LED_CLR_IRQ);
+       }
+
+       /* Check MAC after link sync counter */
+       if ((Istatus & IS_MAC1) != 0) {
+               /* IRQ from MAC 1 */
+               SkMacIrq(pAC, IoC, MAC_1);
+       }
+
+       if ((Istatus & IS_LNK_SYNC_M2) != 0) {
+               /*
+                * We do NOT need the Link Sync interrupt, because it shows
+                * us only a link going down.
+                */
+               /* clear interrupt */
+               SK_OUT8(IoC, MR_ADDR(MAC_2, LNK_SYNC_CTRL), LED_CLR_IRQ);
+       }
+
+       /* Check MAC after link sync counter */
+       if ((Istatus & IS_MAC2) != 0) {
+               /* IRQ from MAC 2 */
+               SkMacIrq(pAC, IoC, MAC_2);
+       }
+
+       /* Timer interrupt (served last) */
+       if ((Istatus & IS_TIMINT) != 0) {
+               SkHwtIsr(pAC, IoC);
+       }
+}      /* SkGeSirqIsr */
+
+
+/******************************************************************************
+ *
+ * SkGePortCheckShorts() - Implementing XMAC Workaround Errata # 2
+ *
+ * return:
+ *     0        o.k. nothing needed
+ *     1       Restart needed on this port
+ */
+static int     SkGePortCheckShorts(
+SK_AC  *pAC,           /* Adapter Context */
+SK_IOC IoC,            /* IO Context */
+int            Port)           /* Which port should be checked */
+{
+       SK_U32          Shorts;                 /* Short Event Counter */
+       SK_U32          CheckShorts;    /* Check value for Short Event Counter */
+       SK_U64          RxCts;                  /* Rx Counter (packets on network) */
+       SK_U32          RxTmp;                  /* Rx temp. Counter */
+       SK_U32          FcsErrCts;              /* FCS Error Counter */
+       SK_GEPORT       *pPrt;                  /* GIni Port struct pointer */
+       int                     Rtv;                    /* Return value */
+       int                     i;
+
+       pPrt = &pAC->GIni.GP[Port];
+
+       /* Default: no action */
+       Rtv = SK_HW_PS_NONE;
+
+       (void)SkXmUpdateStats(pAC, IoC, Port);
+
+       /* Extra precaution: check for short Event counter */
+       (void)SkXmMacStatistic(pAC, IoC, Port, XM_RXE_SHT_ERR, &Shorts);
+
+       /*
+        * Read Rx counter (packets seen on the network and not necessarily
+        * really received.
+        */
+       RxCts = 0;
+
+       for (i = 0; i < sizeof(SkGeRxRegs)/sizeof(SkGeRxRegs[0]); i++) {
+               (void)SkXmMacStatistic(pAC, IoC, Port, SkGeRxRegs[i], &RxTmp);
+               RxCts += (SK_U64)RxTmp;
+       }
+
+       /* On default: check shorts against zero */
+       CheckShorts = 0;
+
+       /* Extra precaution on active links */
+       if (pPrt->PHWLinkUp) {
+               /* Reset Link Restart counter */
+               pPrt->PLinkResCt = 0;
+               pPrt->PAutoNegTOCt = 0;
+
+               /* If link is up check for 2 */
+               CheckShorts = 2;
+
+               (void)SkXmMacStatistic(pAC, IoC, Port, XM_RXF_FCS_ERR, &FcsErrCts);
+
+               if (pPrt->PLinkModeConf == SK_LMODE_AUTOSENSE &&
+                   pPrt->PLipaAutoNeg == SK_LIPA_UNKNOWN &&
+                   (pPrt->PLinkMode == SK_LMODE_HALF ||
+                        pPrt->PLinkMode == SK_LMODE_FULL)) {
+                       /*
+                        * This is autosensing and we are in the fallback
+                        * manual full/half duplex mode.
+                        */
+                       if (RxCts == pPrt->PPrevRx) {
+                               /* Nothing received, restart link */
+                               pPrt->PPrevFcs = FcsErrCts;
+                               pPrt->PPrevShorts = Shorts;
+
+                               return(SK_HW_PS_RESTART);
+                       }
+                       else {
+                               pPrt->PLipaAutoNeg = SK_LIPA_MANUAL;
+                       }
+               }
+
+               if (((RxCts - pPrt->PPrevRx) > pPrt->PRxLim) ||
+                   (!(FcsErrCts - pPrt->PPrevFcs))) {
+                       /*
+                        * Note: The compare with zero above has to be done the way shown,
+                        * otherwise the Linux driver will have a problem.
+                        */
+                       /*
+                        * We received a bunch of frames or no CRC error occured on the
+                        * network -> ok.
+                        */
+                       pPrt->PPrevRx = RxCts;
+                       pPrt->PPrevFcs = FcsErrCts;
+                       pPrt->PPrevShorts = Shorts;
+
+                       return(SK_HW_PS_NONE);
+               }
+
+               pPrt->PPrevFcs = FcsErrCts;
+       }
+
+
+       if ((Shorts - pPrt->PPrevShorts) > CheckShorts) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ,
+                       ("Short Event Count Restart Port %d \n", Port));
+               Rtv = SK_HW_PS_RESTART;
+       }
+
+       pPrt->PPrevShorts = Shorts;
+       pPrt->PPrevRx = RxCts;
+
+       return(Rtv);
+}      /* SkGePortCheckShorts */
+
+
+/******************************************************************************
+ *
+ * SkGePortCheckUp() - Check if the link is up
+ *
+ * return:
+ *     0        o.k. nothing needed
+ *     1       Restart needed on this port
+ *     2       Link came up
+ */
+static int     SkGePortCheckUp(
+SK_AC  *pAC,           /* Adapter Context */
+SK_IOC IoC,            /* IO Context */
+int            Port)           /* Which port should be checked */
+{
+       switch (pAC->GIni.GP[Port].PhyType) {
+       case SK_PHY_XMAC:
+               return(SkGePortCheckUpXmac(pAC, IoC, Port));
+       case SK_PHY_BCOM:
+               return(SkGePortCheckUpBcom(pAC, IoC, Port));
+       case SK_PHY_MARV_COPPER:
+       case SK_PHY_MARV_FIBER:
+               return(SkGePortCheckUpGmac(pAC, IoC, Port));
+#ifdef OTHER_PHY
+       case SK_PHY_LONE:
+               return(SkGePortCheckUpLone(pAC, IoC, Port));
+       case SK_PHY_NAT:
+               return(SkGePortCheckUpNat(pAC, IoC, Port));
+#endif /* OTHER_PHY */
+       }
+       return(SK_HW_PS_NONE);
+}      /* SkGePortCheckUp */
+
+
+/******************************************************************************
+ *
+ * SkGePortCheckUpXmac() - Implementing of the Workaround Errata # 2
+ *
+ * return:
+ *     0        o.k. nothing needed
+ *     1       Restart needed on this port
+ *     2       Link came up
+ */
+static int SkGePortCheckUpXmac(
+SK_AC  *pAC,           /* Adapter Context */
+SK_IOC IoC,            /* IO Context */
+int            Port)           /* Which port should be checked */
+{
+       SK_U32          Shorts;         /* Short Event Counter */
+       SK_GEPORT       *pPrt;          /* GIni Port struct pointer */
+       int                     Done;
+       SK_U32          GpReg;          /* General Purpose register value */
+       SK_U16          Isrc;           /* Interrupt source register */
+       SK_U16          IsrcSum;        /* Interrupt source register sum */
+       SK_U16          LpAb;           /* Link Partner Ability */
+       SK_U16          ResAb;          /* Resolved Ability */
+       SK_U16          ExtStat;        /* Extended Status Register */
+       SK_BOOL         AutoNeg;        /* Is Auto-negotiation used ? */
+       SK_U8           NextMode;       /* Next AutoSensing Mode */
+
+       pPrt = &pAC->GIni.GP[Port];
+
+       if (pPrt->PHWLinkUp) {
+               if (pPrt->PhyType != SK_PHY_XMAC) {
+                       return(SK_HW_PS_NONE);
+               }
+               else {
+                       return(SkGePortCheckShorts(pAC, IoC, Port));
+               }
+       }
+
+       IsrcSum = pPrt->PIsave;
+       pPrt->PIsave = 0;
+
+       /* Now wait for each port's link */
+       if (pPrt->PLinkMode == SK_LMODE_HALF || pPrt->PLinkMode == SK_LMODE_FULL) {
+               AutoNeg = SK_FALSE;
+       }
+       else {
+               AutoNeg = SK_TRUE;
+       }
+
+       if (pPrt->PLinkBroken) {
+               /* Link was broken */
+               XM_IN32(IoC, Port, XM_GP_PORT, &GpReg);
+
+               if ((GpReg & XM_GP_INP_ASS) == 0) {
+                       /* The Link is in sync */
+                       XM_IN16(IoC, Port, XM_ISRC, &Isrc);
+                       IsrcSum |= Isrc;
+                       SkXmAutoNegLipaXmac(pAC, IoC, Port, IsrcSum);
+
+                       if ((Isrc & XM_IS_INP_ASS) == 0) {
+                               /* It has been in sync since last time */
+                               /* Restart the PORT */
+                               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ,
+                                       ("Link in sync Restart Port %d\n", Port));
+
+                               (void)SkXmUpdateStats(pAC, IoC, Port);
+
+                               /* We now need to reinitialize the PrevShorts counter */
+                               (void)SkXmMacStatistic(pAC, IoC, Port, XM_RXE_SHT_ERR, &Shorts);
+                               pPrt->PPrevShorts = Shorts;
+
+                               pPrt->PLinkBroken = SK_FALSE;
+
+                               /*
+                                * Link Restart Workaround:
+                                *  it may be possible that the other Link side
+                                *  restarts its link as well an we detect
+                                *  another LinkBroken. To prevent this
+                                *  happening we check for a maximum number
+                                *  of consecutive restart. If those happens,
+                                *  we do NOT restart the active link and
+                                *  check whether the link is now o.k.
+                                */
+                               pPrt->PLinkResCt++;
+
+                               pPrt->PAutoNegTimeOut = 0;
+
+                               if (pPrt->PLinkResCt < SK_MAX_LRESTART) {
+                                       return(SK_HW_PS_RESTART);
+                               }
+
+                               pPrt->PLinkResCt = 0;
+
+                               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+                                       ("Do NOT restart on Port %d %x %x\n", Port, Isrc, IsrcSum));
+                       }
+                       else {
+                               pPrt->PIsave = (SK_U16)(IsrcSum & XM_IS_AND);
+
+                               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+                                       ("Save Sync/nosync Port %d %x %x\n", Port, Isrc, IsrcSum));
+
+                               /* Do nothing more if link is broken */
+                               return(SK_HW_PS_NONE);
+                       }
+               }
+               else {
+                       /* Do nothing more if link is broken */
+                       return(SK_HW_PS_NONE);
+               }
+
+       }
+       else {
+               /* Link was not broken, check if it is */
+               XM_IN16(IoC, Port, XM_ISRC, &Isrc);
+               IsrcSum |= Isrc;
+               if ((Isrc & XM_IS_INP_ASS) != 0) {
+                       XM_IN16(IoC, Port, XM_ISRC, &Isrc);
+                       IsrcSum |= Isrc;
+                       if ((Isrc & XM_IS_INP_ASS) != 0) {
+                               XM_IN16(IoC, Port, XM_ISRC, &Isrc);
+                               IsrcSum |= Isrc;
+                               if ((Isrc & XM_IS_INP_ASS) != 0) {
+                                       pPrt->PLinkBroken = SK_TRUE;
+                                       /* Re-Init Link partner Autoneg flag */
+                                       pPrt->PLipaAutoNeg = SK_LIPA_UNKNOWN;
+                                       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ,
+                                               ("Link broken Port %d\n", Port));
+
+                                       /* Cable removed-> reinit sense mode */
+                                       SkHWInitDefSense(pAC, IoC, Port);
+
+                                       return(SK_HW_PS_RESTART);
+                               }
+                       }
+               }
+               else {
+                       SkXmAutoNegLipaXmac(pAC, IoC, Port, Isrc);
+                       if (SkGePortCheckShorts(pAC, IoC, Port) == SK_HW_PS_RESTART) {
+                               return(SK_HW_PS_RESTART);
+                       }
+               }
+       }
+
+       /*
+        * here we usually can check whether the link is in sync and
+        * auto-negotiation is done.
+        */
+       XM_IN32(IoC, Port, XM_GP_PORT, &GpReg);
+       XM_IN16(IoC, Port, XM_ISRC, &Isrc);
+       IsrcSum |= Isrc;
+
+       SkXmAutoNegLipaXmac(pAC, IoC, Port, IsrcSum);
+
+       if ((GpReg & XM_GP_INP_ASS) != 0 || (IsrcSum & XM_IS_INP_ASS) != 0) {
+               if ((GpReg & XM_GP_INP_ASS) == 0) {
+                       /* Save Auto-negotiation Done interrupt only if link is in sync */
+                       pPrt->PIsave = (SK_U16)(IsrcSum & XM_IS_AND);
+               }
+#ifdef DEBUG
+               if ((pPrt->PIsave & XM_IS_AND) != 0) {
+                       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+                               ("AutoNeg done rescheduled Port %d\n", Port));
+               }
+#endif /* DEBUG */
+               return(SK_HW_PS_NONE);
+       }
+
+       if (AutoNeg) {
+               if ((IsrcSum & XM_IS_AND) != 0) {
+                       SkHWLinkUp(pAC, IoC, Port);
+                       Done = SkMacAutoNegDone(pAC, IoC, Port);
+                       if (Done != SK_AND_OK) {
+                               /* Get PHY parameters, for debugging only */
+                               SkXmPhyRead(pAC, IoC, Port, PHY_XMAC_AUNE_LP, &LpAb);
+                               SkXmPhyRead(pAC, IoC, Port, PHY_XMAC_RES_ABI, &ResAb);
+                               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+                                       ("AutoNeg FAIL Port %d (LpAb %x, ResAb %x)\n",
+                                        Port, LpAb, ResAb));
+
+                               /* Try next possible mode */
+                               NextMode = SkHWSenseGetNext(pAC, IoC, Port);
+                               SkHWLinkDown(pAC, IoC, Port);
+                               if (Done == SK_AND_DUP_CAP) {
+                                       /* GoTo next mode */
+                                       SkHWSenseSetNext(pAC, IoC, Port, NextMode);
+                               }
+
+                               return(SK_HW_PS_RESTART);
+                       }
+                       /*
+                        * Dummy Read extended status to prevent extra link down/ups
+                        * (clear Page Received bit if set)
+                        */
+                       SkXmPhyRead(pAC, IoC, Port, PHY_XMAC_AUNE_EXP, &ExtStat);
+                       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+                               ("AutoNeg done Port %d\n", Port));
+                       return(SK_HW_PS_LINK);
+               }
+
+               /* AutoNeg not done, but HW link is up. Check for timeouts */
+               pPrt->PAutoNegTimeOut++;
+               if (pPrt->PAutoNegTimeOut >= SK_AND_MAX_TO) {
+                       /* Increase the Timeout counter */
+                       pPrt->PAutoNegTOCt++;
+
+                       /* Timeout occured */
+                       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ,
+                               ("AutoNeg timeout Port %d\n", Port));
+                       if (pPrt->PLinkModeConf == SK_LMODE_AUTOSENSE &&
+                               pPrt->PLipaAutoNeg != SK_LIPA_AUTO) {
+                               /* Set Link manually up */
+                               SkHWSenseSetNext(pAC, IoC, Port, SK_LMODE_FULL);
+                               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ,
+                                       ("Set manual full duplex Port %d\n", Port));
+                       }
+
+                       if (pPrt->PLinkModeConf == SK_LMODE_AUTOSENSE &&
+                               pPrt->PLipaAutoNeg == SK_LIPA_AUTO &&
+                               pPrt->PAutoNegTOCt >= SK_MAX_ANEG_TO) {
+                               /*
+                                * This is rather complicated.
+                                * we need to check here whether the LIPA_AUTO
+                                * we saw before is false alert. We saw at one
+                                * switch ( SR8800) that on boot time it sends
+                                * just one auto-neg packet and does no further
+                                * auto-negotiation.
+                                * Solution: we restart the autosensing after
+                                * a few timeouts.
+                                */
+                               pPrt->PAutoNegTOCt = 0;
+                               pPrt->PLipaAutoNeg = SK_LIPA_UNKNOWN;
+                               SkHWInitDefSense(pAC, IoC, Port);
+                       }
+
+                       /* Do the restart */
+                       return(SK_HW_PS_RESTART);
+               }
+       }
+       else {
+               /* Link is up and we don't need more */
+#ifdef DEBUG
+               if (pPrt->PLipaAutoNeg == SK_LIPA_AUTO) {
+                       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+                               ("ERROR: Lipa auto detected on port %d\n", Port));
+               }
+#endif /* DEBUG */
+               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ,
+                       ("Link sync(GP), Port %d\n", Port));
+               SkHWLinkUp(pAC, IoC, Port);
+
+               /*
+                * Link sync (GP) and so assume a good connection. But if not received
+                * a bunch of frames received in a time slot (maybe broken tx cable)
+                * the port is restart.
+                */
+               return(SK_HW_PS_LINK);
+       }
+
+       return(SK_HW_PS_NONE);
+}      /* SkGePortCheckUpXmac */
+
+
+/******************************************************************************
+ *
+ * SkGePortCheckUpBcom() - Check if the link is up on Bcom PHY
+ *
+ * return:
+ *     0        o.k. nothing needed
+ *     1       Restart needed on this port
+ *     2       Link came up
+ */
+static int SkGePortCheckUpBcom(
+SK_AC  *pAC,   /* Adapter Context */
+SK_IOC IoC,    /* IO Context */
+int            Port)   /* Which port should be checked */
+{
+       SK_GEPORT       *pPrt;          /* GIni Port struct pointer */
+       int                     Done;
+       SK_U16          Isrc;           /* Interrupt source register */
+       SK_U16          PhyStat;        /* Phy Status Register */
+       SK_U16          ResAb;          /* Master/Slave resolution */
+       SK_U16          Ctrl;           /* Broadcom control flags */
+#ifdef DEBUG
+       SK_U16          LpAb;
+       SK_U16          ExtStat;
+#endif /* DEBUG */
+       SK_BOOL         AutoNeg;        /* Is Auto-negotiation used ? */
+
+       pPrt = &pAC->GIni.GP[Port];
+
+       /* Check for No HCD Link events (#10523) */
+       SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_INT_STAT, &Isrc);
+
+#ifdef xDEBUG
+       if ((Isrc & ~(PHY_B_IS_HCT | PHY_B_IS_LCT) ==
+               (PHY_B_IS_SCR_S_ER | PHY_B_IS_RRS_CHANGE | PHY_B_IS_LRS_CHANGE)) {
+
+               SK_U32  Stat1, Stat2, Stat3;
+
+               Stat1 = 0;
+               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_INT_MASK, &Stat1);
+               CMSMPrintString(
+                       pAC->pConfigTable,
+                       MSG_TYPE_RUNTIME_INFO,
+                       "CheckUp1 - Stat: %x, Mask: %x",
+                       (void *)Isrc,
+                       (void *)Stat1);
+
+               Stat1 = 0;
+               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_CTRL, &Stat1);
+               Stat2 = 0;
+               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_STAT, &Stat2);
+               Stat1 = Stat1 << 16 | Stat2;
+               Stat2 = 0;
+               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_AUNE_ADV, &Stat2);
+               Stat3 = 0;
+               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_AUNE_LP, &Stat3);
+               Stat2 = Stat2 << 16 | Stat3;
+               CMSMPrintString(
+                       pAC->pConfigTable,
+                       MSG_TYPE_RUNTIME_INFO,
+                       "Ctrl/Stat: %x, AN Adv/LP: %x",
+                       (void *)Stat1,
+                       (void *)Stat2);
+
+               Stat1 = 0;
+               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_AUNE_EXP, &Stat1);
+               Stat2 = 0;
+               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_EXT_STAT, &Stat2);
+               Stat1 = Stat1 << 16 | Stat2;
+               Stat2 = 0;
+               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_1000T_CTRL, &Stat2);
+               Stat3 = 0;
+               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_1000T_STAT, &Stat3);
+               Stat2 = Stat2 << 16 | Stat3;
+               CMSMPrintString(
+                       pAC->pConfigTable,
+                       MSG_TYPE_RUNTIME_INFO,
+                       "AN Exp/IEEE Ext: %x, 1000T Ctrl/Stat: %x",
+                       (void *)Stat1,
+                       (void *)Stat2);
+
+               Stat1 = 0;
+               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_P_EXT_CTRL, &Stat1);
+               Stat2 = 0;
+               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_P_EXT_STAT, &Stat2);
+               Stat1 = Stat1 << 16 | Stat2;
+               Stat2 = 0;
+               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_AUX_CTRL, &Stat2);
+               Stat3 = 0;
+               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_AUX_STAT, &Stat3);
+               Stat2 = Stat2 << 16 | Stat3;
+               CMSMPrintString(
+                       pAC->pConfigTable,
+                       MSG_TYPE_RUNTIME_INFO,
+                       "PHY Ext Ctrl/Stat: %x, Aux Ctrl/Stat: %x",
+                       (void *)Stat1,
+                       (void *)Stat2);
+       }
+#endif /* DEBUG */
+
+       if ((Isrc & (PHY_B_IS_NO_HDCL /* | PHY_B_IS_NO_HDC */)) != 0) {
+               /*
+                * Workaround BCom Errata:
+                *      enable and disable loopback mode if "NO HCD" occurs.
+                */
+               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_CTRL, &Ctrl);
+               SkXmPhyWrite(pAC, IoC, Port, PHY_BCOM_CTRL,
+                       (SK_U16)(Ctrl | PHY_CT_LOOP));
+               SkXmPhyWrite(pAC, IoC, Port, PHY_BCOM_CTRL,
+                       (SK_U16)(Ctrl & ~PHY_CT_LOOP));
+               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+                       ("No HCD Link event, Port %d\n", Port));
+#ifdef xDEBUG
+               CMSMPrintString(
+                       pAC->pConfigTable,
+                       MSG_TYPE_RUNTIME_INFO,
+                       "No HCD link event, port %d.",
+                       (void *)Port,
+                       (void *)NULL);
+#endif /* DEBUG */
+       }
+
+       /* Not obsolete: link status bit is latched to 0 and autoclearing! */
+       SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_STAT, &PhyStat);
+
+       if (pPrt->PHWLinkUp) {
+               return(SK_HW_PS_NONE);
+       }
+
+#ifdef xDEBUG
+       {
+               SK_U32  Stat1, Stat2, Stat3;
+
+               Stat1 = 0;
+               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_INT_MASK, &Stat1);
+               CMSMPrintString(
+                       pAC->pConfigTable,
+                       MSG_TYPE_RUNTIME_INFO,
+                       "CheckUp1a - Stat: %x, Mask: %x",
+                       (void *)Isrc,
+                       (void *)Stat1);
+
+               Stat1 = 0;
+               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_CTRL, &Stat1);
+               Stat2 = 0;
+               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_STAT, &PhyStat);
+               Stat1 = Stat1 << 16 | PhyStat;
+               Stat2 = 0;
+               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_AUNE_ADV, &Stat2);
+               Stat3 = 0;
+               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_AUNE_LP, &Stat3);
+               Stat2 = Stat2 << 16 | Stat3;
+               CMSMPrintString(
+                       pAC->pConfigTable,
+                       MSG_TYPE_RUNTIME_INFO,
+                       "Ctrl/Stat: %x, AN Adv/LP: %x",
+                       (void *)Stat1,
+                       (void *)Stat2);
+
+               Stat1 = 0;
+               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_AUNE_EXP, &Stat1);
+               Stat2 = 0;
+               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_EXT_STAT, &Stat2);
+               Stat1 = Stat1 << 16 | Stat2;
+               Stat2 = 0;
+               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_1000T_CTRL, &Stat2);
+               Stat3 = 0;
+               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_1000T_STAT, &ResAb);
+               Stat2 = Stat2 << 16 | ResAb;
+               CMSMPrintString(
+                       pAC->pConfigTable,
+                       MSG_TYPE_RUNTIME_INFO,
+                       "AN Exp/IEEE Ext: %x, 1000T Ctrl/Stat: %x",
+                       (void *)Stat1,
+                       (void *)Stat2);
+
+               Stat1 = 0;
+               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_P_EXT_CTRL, &Stat1);
+               Stat2 = 0;
+               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_P_EXT_STAT, &Stat2);
+               Stat1 = Stat1 << 16 | Stat2;
+               Stat2 = 0;
+               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_AUX_CTRL, &Stat2);
+               Stat3 = 0;
+               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_AUX_STAT, &Stat3);
+               Stat2 = Stat2 << 16 | Stat3;
+               CMSMPrintString(
+                       pAC->pConfigTable,
+                       MSG_TYPE_RUNTIME_INFO,
+                       "PHY Ext Ctrl/Stat: %x, Aux Ctrl/Stat: %x",
+                       (void *)Stat1,
+                       (void *)Stat2);
+       }
+#endif /* DEBUG */
+
+       /* Now wait for each port's link */
+       if (pPrt->PLinkMode == SK_LMODE_HALF || pPrt->PLinkMode == SK_LMODE_FULL) {
+               AutoNeg = SK_FALSE;
+       }
+       else {
+               AutoNeg = SK_TRUE;
+       }
+
+       /*
+        * Here we usually can check whether the link is in sync and
+        * auto-negotiation is done.
+        */
+
+       SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_STAT, &PhyStat);
+
+       SkMacAutoNegLipaPhy(pAC, IoC, Port, PhyStat);
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+               ("AutoNeg: %d, PhyStat: 0x%04x\n", AutoNeg, PhyStat));
+
+       SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_1000T_STAT, &ResAb);
+
+       if ((ResAb & PHY_B_1000S_MSF) != 0) {
+               /* Error */
+               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+                       ("Master/Slave Fault port %d\n", Port));
+               pPrt->PAutoNegFail = SK_TRUE;
+               pPrt->PMSStatus = SK_MS_STAT_FAULT;
+
+               return(SK_HW_PS_RESTART);
+       }
+
+       if ((PhyStat & PHY_ST_LSYNC) == 0) {
+               return(SK_HW_PS_NONE);
+       }
+
+       pPrt->PMSStatus = ((ResAb & PHY_B_1000S_MSR) != 0) ?
+               SK_MS_STAT_MASTER : SK_MS_STAT_SLAVE;
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+               ("AutoNeg: %d, PhyStat: 0x%04x\n", AutoNeg, PhyStat));
+
+       if (AutoNeg) {
+               if ((PhyStat & PHY_ST_AN_OVER) != 0) {
+                       SkHWLinkUp(pAC, IoC, Port);
+                       Done = SkMacAutoNegDone(pAC, IoC, Port);
+                       if (Done != SK_AND_OK) {
+#ifdef DEBUG
+                               /* Get PHY parameters, for debugging only */
+                               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_AUNE_LP, &LpAb);
+                               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_1000T_STAT, &ExtStat);
+                               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+                                       ("AutoNeg FAIL Port %d (LpAb %x, 1000TStat %x)\n",
+                                       Port, LpAb, ExtStat));
+#endif /* DEBUG */
+                               return(SK_HW_PS_RESTART);
+                       }
+                       else {
+#ifdef xDEBUG
+                               /* Dummy read ISR to prevent extra link downs/ups */
+                               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_INT_STAT, &ExtStat);
+
+                               if ((ExtStat & ~(PHY_B_IS_HCT | PHY_B_IS_LCT)) != 0) {
+                                       CMSMPrintString(
+                                               pAC->pConfigTable,
+                                               MSG_TYPE_RUNTIME_INFO,
+                                               "CheckUp2 - Stat: %x",
+                                               (void *)ExtStat,
+                                               (void *)NULL);
+                               }
+#endif /* DEBUG */
+
+                               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+                                       ("AutoNeg done Port %d\n", Port));
+                               return(SK_HW_PS_LINK);
+                       }
+               }
+       }
+       else {  /* !AutoNeg */
+               /* Link is up and we don't need more. */
+#ifdef DEBUG
+               if (pPrt->PLipaAutoNeg == SK_LIPA_AUTO) {
+                       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+                               ("ERROR: Lipa auto detected on port %d\n", Port));
+               }
+#endif /* DEBUG */
+
+#ifdef xDEBUG
+               /* Dummy read ISR to prevent extra link downs/ups */
+               SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_INT_STAT, &ExtStat);
+
+               if ((ExtStat & ~(PHY_B_IS_HCT | PHY_B_IS_LCT)) != 0) {
+                       CMSMPrintString(
+                               pAC->pConfigTable,
+                               MSG_TYPE_RUNTIME_INFO,
+                               "CheckUp3 - Stat: %x",
+                               (void *)ExtStat,
+                               (void *)NULL);
+               }
+#endif /* DEBUG */
+
+               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ,
+                       ("Link sync(GP), Port %d\n", Port));
+               SkHWLinkUp(pAC, IoC, Port);
+               return(SK_HW_PS_LINK);
+       }
+
+       return(SK_HW_PS_NONE);
+}      /* SkGePortCheckUpBcom */
+
+
+/******************************************************************************
+ *
+ * SkGePortCheckUpGmac() - Check if the link is up on Marvell PHY
+ *
+ * return:
+ *     0        o.k. nothing needed
+ *     1       Restart needed on this port
+ *     2       Link came up
+ */
+static int SkGePortCheckUpGmac(
+SK_AC  *pAC,   /* Adapter Context */
+SK_IOC IoC,    /* IO Context */
+int            Port)   /* Which port should be checked */
+{
+       SK_GEPORT       *pPrt;          /* GIni Port struct pointer */
+       int                     Done;
+       SK_U16          Isrc;           /* Interrupt source */
+       SK_U16          PhyStat;        /* Phy Status */
+       SK_U16          PhySpecStat;/* Phy Specific Status */
+       SK_U16          ResAb;          /* Master/Slave resolution */
+       SK_BOOL         AutoNeg;        /* Is Auto-negotiation used ? */
+
+       pPrt = &pAC->GIni.GP[Port];
+
+       /* Read PHY Interrupt Status */
+       SkGmPhyRead(pAC, IoC, Port, PHY_MARV_INT_STAT, &Isrc);
+
+       if ((Isrc & PHY_M_IS_AN_COMPL) != 0) {
+               /* TBD */
+       }
+
+       if ((Isrc & PHY_M_IS_DOWNSH_DET) != 0) {
+               /* TBD */
+       }
+
+       if (pPrt->PHWLinkUp) {
+               return(SK_HW_PS_NONE);
+       }
+
+       /* Now wait for each port's link */
+       if (pPrt->PLinkMode == SK_LMODE_HALF || pPrt->PLinkMode == SK_LMODE_FULL) {
+               AutoNeg = SK_FALSE;
+       }
+       else {
+               AutoNeg = SK_TRUE;
+       }
+
+       /* Read PHY Status */
+       SkGmPhyRead(pAC, IoC, Port, PHY_MARV_STAT, &PhyStat);
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+               ("AutoNeg: %d, PhyStat: 0x%04x\n", AutoNeg, PhyStat));
+
+       SkMacAutoNegLipaPhy(pAC, IoC, Port, PhyStat);
+
+       SkGmPhyRead(pAC, IoC, Port, PHY_MARV_1000T_STAT, &ResAb);
+
+       if ((ResAb & PHY_B_1000S_MSF) != 0) {
+               /* Error */
+               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+                       ("Master/Slave Fault port %d\n", Port));
+               pPrt->PAutoNegFail = SK_TRUE;
+               pPrt->PMSStatus = SK_MS_STAT_FAULT;
+
+               return(SK_HW_PS_RESTART);
+       }
+
+       /* Read PHY Specific Status */
+       SkGmPhyRead(pAC, IoC, Port, PHY_MARV_PHY_STAT, &PhySpecStat);
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+               ("AutoNeg: %d, PhySpecStat: 0x%04x\n", AutoNeg, PhySpecStat));
+
+       if ((PhySpecStat & PHY_M_PS_LINK_UP) == 0) {
+               return(SK_HW_PS_NONE);
+       }
+
+       pPrt->PMSStatus = ((ResAb & PHY_B_1000S_MSR) != 0) ?
+               SK_MS_STAT_MASTER : SK_MS_STAT_SLAVE;
+
+       pPrt->PCableLen = (SK_U8)((PhySpecStat & PHY_M_PS_CABLE_MSK) >> 7);
+
+       if (AutoNeg) {
+               /* Auto-Negotiation Over ? */
+               if ((PhyStat & PHY_ST_AN_OVER) != 0) {
+
+                       SkHWLinkUp(pAC, IoC, Port);
+
+                       Done = SkMacAutoNegDone(pAC, IoC, Port);
+
+                       if (Done != SK_AND_OK) {
+                               return(SK_HW_PS_RESTART);
+                       }
+
+                       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+                               ("AutoNeg done Port %d\n", Port));
+                       return(SK_HW_PS_LINK);
+               }
+       }
+       else {  /* !AutoNeg */
+               /* Link is up and we don't need more */
+#ifdef DEBUG
+               if (pPrt->PLipaAutoNeg == SK_LIPA_AUTO) {
+                       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+                               ("ERROR: Lipa auto detected on port %d\n", Port));
+               }
+#endif /* DEBUG */
+
+               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ,
+                       ("Link sync, Port %d\n", Port));
+               SkHWLinkUp(pAC, IoC, Port);
+
+               return(SK_HW_PS_LINK);
+       }
+
+       return(SK_HW_PS_NONE);
+}      /* SkGePortCheckUpGmac */
+
+
+#ifdef OTHER_PHY
+/******************************************************************************
+ *
+ * SkGePortCheckUpLone() - Check if the link is up on Level One PHY
+ *
+ * return:
+ *     0        o.k. nothing needed
+ *     1       Restart needed on this port
+ *     2       Link came up
+ */
+static int SkGePortCheckUpLone(
+SK_AC  *pAC,           /* Adapter Context */
+SK_IOC IoC,            /* IO Context */
+int            Port)           /* Which port should be checked */
+{
+       SK_GEPORT       *pPrt;          /* GIni Port struct pointer */
+       int                     Done;
+       SK_U16          Isrc;           /* Interrupt source register */
+       SK_U16          LpAb;           /* Link Partner Ability */
+       SK_U16          ExtStat;        /* Extended Status Register */
+       SK_U16          PhyStat;        /* Phy Status Register */
+       SK_U16          StatSum;
+       SK_BOOL         AutoNeg;        /* Is Auto-negotiation used ? */
+       SK_U8           NextMode;       /* Next AutoSensing Mode */
+
+       pPrt = &pAC->GIni.GP[Port];
+
+       if (pPrt->PHWLinkUp) {
+               return(SK_HW_PS_NONE);
+       }
+
+       StatSum = pPrt->PIsave;
+       pPrt->PIsave = 0;
+
+       /* Now wait for each ports link */
+       if (pPrt->PLinkMode == SK_LMODE_HALF || pPrt->PLinkMode == SK_LMODE_FULL) {
+               AutoNeg = SK_FALSE;
+       }
+       else {
+               AutoNeg = SK_TRUE;
+       }
+
+       /*
+        * here we usually can check whether the link is in sync and
+        * auto-negotiation is done.
+        */
+       SkXmPhyRead(pAC, IoC, Port, PHY_LONE_STAT, &PhyStat);
+       StatSum |= PhyStat;
+
+       SkMacAutoNegLipaPhy(pAC, IoC, Port, PhyStat);
+
+       if ((PhyStat & PHY_ST_LSYNC) == 0) {
+               /* Save Auto-negotiation Done bit */
+               pPrt->PIsave = (SK_U16)(StatSum & PHY_ST_AN_OVER);
+#ifdef DEBUG
+               if ((pPrt->PIsave & PHY_ST_AN_OVER) != 0) {
+                       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+                               ("AutoNeg done rescheduled Port %d\n", Port));
+               }
+#endif /* DEBUG */
+               return(SK_HW_PS_NONE);
+       }
+
+       if (AutoNeg) {
+               if ((StatSum & PHY_ST_AN_OVER) != 0) {
+                       SkHWLinkUp(pAC, IoC, Port);
+                       Done = SkMacAutoNegDone(pAC, IoC, Port);
+                       if (Done != SK_AND_OK) {
+                               /* Get PHY parameters, for debugging only */
+                               SkXmPhyRead(pAC, IoC, Port, PHY_LONE_AUNE_LP, &LpAb);
+                               SkXmPhyRead(pAC, IoC, Port, PHY_LONE_1000T_STAT, &ExtStat);
+                               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+                                       ("AutoNeg FAIL Port %d (LpAb %x, 1000TStat %x)\n",
+                                        Port, LpAb, ExtStat));
+
+                               /* Try next possible mode */
+                               NextMode = SkHWSenseGetNext(pAC, IoC, Port);
+                               SkHWLinkDown(pAC, IoC, Port);
+                               if (Done == SK_AND_DUP_CAP) {
+                                       /* GoTo next mode */
+                                       SkHWSenseSetNext(pAC, IoC, Port, NextMode);
+                               }
+
+                               return(SK_HW_PS_RESTART);
+
+                       }
+                       else {
+                               /*
+                                * Dummy Read interrupt status to prevent
+                                * extra link down/ups
+                                */
+                               SkXmPhyRead(pAC, IoC, Port, PHY_LONE_INT_STAT, &ExtStat);
+                               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+                                       ("AutoNeg done Port %d\n", Port));
+                               return(SK_HW_PS_LINK);
+                       }
+               }
+
+               /* AutoNeg not done, but HW link is up. Check for timeouts */
+               pPrt->PAutoNegTimeOut++;
+               if (pPrt->PAutoNegTimeOut >= SK_AND_MAX_TO) {
+                       /* Timeout occured */
+                       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ,
+                               ("AutoNeg timeout Port %d\n", Port));
+                       if (pPrt->PLinkModeConf == SK_LMODE_AUTOSENSE &&
+                               pPrt->PLipaAutoNeg != SK_LIPA_AUTO) {
+                               /* Set Link manually up */
+                               SkHWSenseSetNext(pAC, IoC, Port, SK_LMODE_FULL);
+                               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ,
+                                       ("Set manual full duplex Port %d\n", Port));
+                       }
+
+                       /* Do the restart */
+                       return(SK_HW_PS_RESTART);
+               }
+       }
+       else {
+               /* Link is up and we don't need more */
+#ifdef DEBUG
+               if (pPrt->PLipaAutoNeg == SK_LIPA_AUTO) {
+                       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+                               ("ERROR: Lipa auto detected on port %d\n", Port));
+               }
+#endif /* DEBUG */
+
+               /*
+                * Dummy Read interrupt status to prevent
+                * extra link down/ups
+                */
+               SkXmPhyRead(pAC, IoC, Port, PHY_LONE_INT_STAT, &ExtStat);
+
+               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ,
+                       ("Link sync(GP), Port %d\n", Port));
+               SkHWLinkUp(pAC, IoC, Port);
+               return(SK_HW_PS_LINK);
+       }
+
+       return(SK_HW_PS_NONE);
+}      /* SkGePortCheckUpLone */
+
+
+/******************************************************************************
+ *
+ * SkGePortCheckUpNat() - Check if the link is up on National PHY
+ *
+ * return:
+ *     0        o.k. nothing needed
+ *     1       Restart needed on this port
+ *     2       Link came up
+ */
+static int SkGePortCheckUpNat(
+SK_AC  *pAC,           /* Adapter Context */
+SK_IOC IoC,            /* IO Context */
+int            Port)           /* Which port should be checked */
+{
+       /* todo: National */
+       return(SK_HW_PS_NONE);
+}      /* SkGePortCheckUpNat */
+#endif /* OTHER_PHY */
+
+
+/******************************************************************************
+ *
+ *     SkGeSirqEvent() - Event Service Routine
+ *
+ * Description:
+ *
+ * Notes:
+ */
+int    SkGeSirqEvent(
+SK_AC          *pAC,           /* Adapter Context */
+SK_IOC         IoC,            /* Io Context */
+SK_U32         Event,          /* Module specific Event */
+SK_EVPARA      Para)           /* Event specific Parameter */
+{
+       SK_U64          Octets;
+       SK_GEPORT       *pPrt;          /* GIni Port struct pointer */
+       SK_U32          Port;
+       SK_U32          Time;
+       unsigned        Len;
+       int                     PortStat;
+       SK_U8           Val8;
+
+       Port = Para.Para32[0];
+       pPrt = &pAC->GIni.GP[Port];
+
+       switch (Event) {
+       case SK_HWEV_WATIM:
+               /* Check whether port came up */
+               PortStat = SkGePortCheckUp(pAC, IoC, Port);
+
+               switch (PortStat) {
+               case SK_HW_PS_RESTART:
+                       if (pPrt->PHWLinkUp) {
+                               /*
+                                * Set Link to down.
+                                */
+                               SkHWLinkDown(pAC, IoC, Port);
+
+                               /*
+                                * Signal directly to RLMT to ensure correct
+                                * sequence of SWITCH and RESET event.
+                                */
+                               SkRlmtEvent(pAC, IoC, SK_RLMT_LINK_DOWN, Para);
+                       }
+
+                       /* Restart needed */
+                       SkEventQueue(pAC, SKGE_DRV, SK_DRV_PORT_RESET, Para);
+                       break;
+
+               case SK_HW_PS_LINK:
+                       /* Signal to RLMT */
+                       SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_LINK_UP, Para);
+                       break;
+
+               }
+
+               /* Start again the check Timer */
+               if (pPrt->PHWLinkUp) {
+                       Time = SK_WA_ACT_TIME;
+               }
+               else {
+                       Time = SK_WA_INA_TIME;
+               }
+
+               /* Todo: still needed for non-XMAC PHYs??? */
+               /* Start workaround Errata #2 timer */
+               SkTimerStart(pAC, IoC, &pPrt->PWaTimer, Time,
+                       SKGE_HWAC, SK_HWEV_WATIM, Para);
+               break;
+
+       case SK_HWEV_PORT_START:
+               if (pPrt->PHWLinkUp) {
+                       /*
+                        * Signal directly to RLMT to ensure correct
+                        * sequence of SWITCH and RESET event.
+                        */
+                       SkRlmtEvent(pAC, IoC, SK_RLMT_LINK_DOWN, Para);
+               }
+
+               SkHWLinkDown(pAC, IoC, Port);
+
+               /* Schedule Port RESET */
+               SkEventQueue(pAC, SKGE_DRV, SK_DRV_PORT_RESET, Para);
+
+               /* Start workaround Errata #2 timer */
+               SkTimerStart(pAC, IoC, &pPrt->PWaTimer, SK_WA_INA_TIME,
+                       SKGE_HWAC, SK_HWEV_WATIM, Para);
+               break;
+
+       case SK_HWEV_PORT_STOP:
+               if (pPrt->PHWLinkUp) {
+                       /*
+                        * Signal directly to RLMT to ensure correct
+                        * sequence of SWITCH and RESET event.
+                        */
+                       SkRlmtEvent(pAC, IoC, SK_RLMT_LINK_DOWN, Para);
+               }
+
+               /* Stop Workaround Timer */
+               SkTimerStop(pAC, IoC, &pPrt->PWaTimer);
+
+               SkHWLinkDown(pAC, IoC, Port);
+               break;
+
+       case SK_HWEV_UPDATE_STAT:
+               /* We do NOT need to update any statistics */
+               break;
+
+       case SK_HWEV_CLEAR_STAT:
+               /* We do NOT need to clear any statistics */
+               for (Port = 0; Port < (SK_U32)pAC->GIni.GIMacsFound; Port++) {
+                       pPrt->PPrevRx = 0;
+                       pPrt->PPrevFcs = 0;
+                       pPrt->PPrevShorts = 0;
+               }
+               break;
+
+       case SK_HWEV_SET_LMODE:
+               Val8 = (SK_U8)Para.Para32[1];
+               if (pPrt->PLinkModeConf != Val8) {
+                       /* Set New link mode */
+                       pPrt->PLinkModeConf = Val8;
+
+                       /* Restart Port */
+                       SkEventQueue(pAC, SKGE_HWAC, SK_HWEV_PORT_STOP, Para);
+                       SkEventQueue(pAC, SKGE_HWAC, SK_HWEV_PORT_START, Para);
+               }
+               break;
+
+       case SK_HWEV_SET_FLOWMODE:
+               Val8 = (SK_U8)Para.Para32[1];
+               if (pPrt->PFlowCtrlMode != Val8) {
+                       /* Set New Flow Control mode */
+                       pPrt->PFlowCtrlMode = Val8;
+
+                       /* Restart Port */
+                       SkEventQueue(pAC, SKGE_HWAC, SK_HWEV_PORT_STOP, Para);
+                       SkEventQueue(pAC, SKGE_HWAC, SK_HWEV_PORT_START, Para);
+               }
+               break;
+
+       case SK_HWEV_SET_ROLE:
+               /* not possible for fiber */
+               if (!pAC->GIni.GICopperType) {
+                       break;
+               }
+               Val8 = (SK_U8)Para.Para32[1];
+               if (pPrt->PMSMode != Val8) {
+                       /* Set New link mode */
+                       pPrt->PMSMode = Val8;
+
+                       /* Restart Port */
+                       SkEventQueue(pAC, SKGE_HWAC, SK_HWEV_PORT_STOP, Para);
+                       SkEventQueue(pAC, SKGE_HWAC, SK_HWEV_PORT_START, Para);
+               }
+               break;
+
+       case SK_HWEV_SET_SPEED:
+               if (pPrt->PhyType != SK_PHY_MARV_COPPER) {
+                       break;
+               }
+               Val8 = (SK_U8)Para.Para32[1];
+               if (pPrt->PLinkSpeed != Val8) {
+                       /* Set New Speed parameter */
+                       pPrt->PLinkSpeed = Val8;
+
+                       /* Restart Port */
+                       SkEventQueue(pAC, SKGE_HWAC, SK_HWEV_PORT_STOP, Para);
+                       SkEventQueue(pAC, SKGE_HWAC, SK_HWEV_PORT_START, Para);
+               }
+               break;
+
+       case SK_HWEV_HALFDUP_CHK:
+               /*
+                * half duplex hangup workaround.
+                * See packet arbiter timeout interrupt for description
+                */
+               pPrt->HalfDupTimerActive = SK_FALSE;
+               if (pPrt->PLinkModeStatus == SK_LMODE_STAT_HALF ||
+                   pPrt->PLinkModeStatus == SK_LMODE_STAT_AUTOHALF) {
+
+                       Len = sizeof(SK_U64);
+                       SkPnmiGetVar(pAC, IoC, OID_SKGE_STAT_TX_OCTETS, (char *)&Octets,
+                               &Len, (SK_U32)SK_PNMI_PORT_PHYS2INST(pAC, Port),
+                               pAC->Rlmt.Port[Port].Net->NetNumber);
+
+                       if (pPrt->LastOctets == Octets) {
+                               /* Tx hanging, a FIFO flush restarts it */
+                               SkMacFlushTxFifo(pAC, IoC, Port);
+                       }
+               }
+               break;
+
+       default:
+               SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_SIRQ_E001, SKERR_SIRQ_E001MSG);
+               break;
+       }
+
+       return(0);
+}      /* SkGeSirqEvent */
+
+
+/******************************************************************************
+ *
+ *     SkPhyIsrBcom() - PHY interrupt service routine
+ *
+ * Description: handles all interrupts from BCom PHY
+ *
+ * Returns: N/A
+ */
+static void SkPhyIsrBcom(
+SK_AC          *pAC,           /* Adapter Context */
+SK_IOC         IoC,            /* Io Context */
+int                    Port,           /* Port Num = PHY Num */
+SK_U16         IStatus)        /* Interrupt Status */
+{
+       SK_GEPORT       *pPrt;          /* GIni Port struct pointer */
+       SK_EVPARA       Para;
+
+       pPrt = &pAC->GIni.GP[Port];
+
+       if ((IStatus & PHY_B_IS_PSE) != 0) {
+               /* Incorrectable pair swap error */
+               SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_SIRQ_E022,
+                       SKERR_SIRQ_E022MSG);
+       }
+
+       if ((IStatus & (PHY_B_IS_AN_PR | PHY_B_IS_LST_CHANGE)) != 0) {
+               Para.Para32[0] = (SK_U32)Port;
+
+               SkHWLinkDown(pAC, IoC, Port);
+
+               /* Signal to RLMT */
+               SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_LINK_DOWN, Para);
+
+               /* Start workaround Errata #2 timer */
+               SkTimerStart(pAC, IoC, &pPrt->PWaTimer, SK_WA_INA_TIME,
+                       SKGE_HWAC, SK_HWEV_WATIM, Para);
+       }
+
+}      /* SkPhyIsrBcom */
+
+
+/******************************************************************************
+ *
+ *     SkPhyIsrGmac() - PHY interrupt service routine
+ *
+ * Description: handles all interrupts from Marvell PHY
+ *
+ * Returns: N/A
+ */
+static void SkPhyIsrGmac(
+SK_AC          *pAC,           /* Adapter Context */
+SK_IOC         IoC,            /* Io Context */
+int                    Port,           /* Port Num = PHY Num */
+SK_U16         IStatus)        /* Interrupt Status */
+{
+       SK_GEPORT       *pPrt;          /* GIni Port struct pointer */
+       SK_EVPARA       Para;
+
+       pPrt = &pAC->GIni.GP[Port];
+
+       if ((IStatus & (PHY_M_IS_AN_PR | PHY_M_IS_LST_CHANGE)) != 0) {
+               Para.Para32[0] = (SK_U32)Port;
+
+               SkHWLinkDown(pAC, IoC, Port);
+
+               /* Signal to RLMT */
+               SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_LINK_DOWN, Para);
+       }
+
+       if ((IStatus & PHY_M_IS_AN_ERROR) != 0) {
+               /* Auto-Negotiation Error */
+               SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E023, SKERR_SIRQ_E023MSG);
+       }
+
+       if ((IStatus & PHY_M_IS_LSP_CHANGE) != 0) {
+               /* TBD */
+       }
+
+       if ((IStatus & PHY_M_IS_FIFO_ERROR) != 0) {
+               /* FIFO Overflow/Underrun Error */
+               SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E024, SKERR_SIRQ_E024MSG);
+       }
+}      /* SkPhyIsrGmac */
+
+
+#ifdef OTHER_PHY
+/******************************************************************************
+ *
+ *     SkPhyIsrLone() - PHY interrupt service routine
+ *
+ * Description: handles all interrupts from LONE PHY
+ *
+ * Returns: N/A
+ */
+static void SkPhyIsrLone(
+SK_AC  *pAC,           /* Adapter Context */
+SK_IOC IoC,            /* Io Context */
+int            Port,           /* Port Num = PHY Num */
+SK_U16 IStatus)        /* Interrupt Status */
+{
+       SK_EVPARA       Para;
+
+       if (IStatus & (PHY_L_IS_DUP | PHY_L_IS_ISOL)) {
+               SkHWLinkDown(pAC, IoC, Port);
+
+               /* Signal to RLMT */
+               Para.Para32[0] = (SK_U32)Port;
+               SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_LINK_DOWN, Para);
+       }
+
+}      /* SkPhyIsrLone */
+#endif /* OTHER_PHY */
+
+/* End of File */
diff -Naur u-boot-2009.03_orig/drivers/net/sk98lin/ski2c.c u-boot-2009.03/drivers/net/sk98lin/ski2c.c
--- u-boot-2009.03_orig/drivers/net/sk98lin/ski2c.c     2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/drivers/net/sk98lin/ski2c.c  2009-03-31 14:54:29.612503200 -0700
@@ -1,1501 +1,1504 @@
-/******************************************************************************
- *
- * Name:       ski2c.c
- * Project:    GEnesis, PCI Gigabit Ethernet Adapter
- * Version:    $Revision: 1.57 $
- * Date:       $Date: 2003/01/28 09:17:38 $
- * Purpose:    Functions to access Voltage and Temperature Sensor
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- *     (C)Copyright 1998-2003 SysKonnect GmbH.
- *
- *     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.
- *
- *     The information in this file is provided "AS IS" without warranty.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * History:
- *
- *     $Log: ski2c.c,v $
- *     Revision 1.57  2003/01/28 09:17:38  rschmidt
- *     Fixed handling for sensors on YUKON Fiber.
- *     Editorial changes.
- *
- *     Revision 1.56  2002/12/19 14:20:41  rschmidt
- *     Added debugging code in SkI2cWait().
- *     Replaced all I2C-write operations with function SkI2cWrite().
- *     Fixed compiler warning because of uninitialized 'Time' in SkI2cEvent().
- *     Editorial changes.
- *
- *     Revision 1.55  2002/10/15 07:23:55  rschmidt
- *     Added setting of the GIYukon32Bit bool variable to distinguish
- *     32-bit adapters.
- *     Editorial changes (TWSI).
- *
- *     Revision 1.54  2002/08/13 09:05:06  rschmidt
- *     Added new thresholds if VAUX is not available (GIVauxAvail).
- *     Merged defines for PHY PLL 3V3 voltage (A and B).
- *     Editorial changes.
- *
- *     Revision 1.53  2002/08/08 11:04:53  rwahl
- *     Added missing comment for revision 1.51
- *
- *     Revision 1.52  2002/08/08 10:09:02  jschmalz
- *     Sensor init state caused wrong error log entry
- *
- *     Revision 1.51  2002/08/06 09:43:03  jschmalz
- *     Extensions and changes for Yukon
- *
- *     Revision 1.50  2002/08/02 12:09:22  rschmidt
- *     Added support for YUKON sensors.
- *     Editorial changes.
- *
- *     Revision 1.49  2002/07/30 11:07:52  rschmidt
- *     Replaced MaxSens init by update for Copper in SkI2cInit1(),
- *     because it was already initialized in SkI2cInit0().
- *     Editorial changes.
- *
- *     Revision 1.48  2001/08/16 12:44:33  afischer
- *     LM80 sensor init values corrected
- *
- *     Revision 1.47  2001/04/05 11:38:09  rassmann
- *     Set SenState to idle in SkI2cWaitIrq().
- *     Changed error message in SkI2cWaitIrq().
- *
- *     Revision 1.46  2001/04/02 14:03:35  rassmann
- *     Changed pAC to IoC in SK_IN32().
- *
- *     Revision 1.45  2001/03/21 12:12:49  rassmann
- *     Resetting I2C_READY interrupt in SkI2cInit1().
- *
- *     Revision 1.44  2000/08/07 15:49:03  gklug
- *     Fix: SK_INFAST only in NetWare driver.
- *
- *     Revision 1.43  2000/08/03 14:28:17  rassmann
- *     Added function to wait for I2C being ready before resetting the board.
- *     Replaced one duplicate "out of range" message with correct one.
- *
- *     Revision 1.42  1999/11/22 13:35:12  cgoos
- *     Changed license header to GPL.
- *
- *     Revision 1.41  1999/09/14 14:11:30  malthoff
- *     The 1000BT Dual Link adapter has got only one Fan.
- *     The second Fan has been removed.
- *
- *     Revision 1.40  1999/05/27 13:37:27  malthoff
- *     Set divisor of 1 for fan count calculation.
- *
- *     Revision 1.39  1999/05/20 14:54:43  malthoff
- *     I2c.DummyReads is not used in Diagnostics.
- *
- *     Revision 1.38  1999/05/20 09:20:56  cgoos
- *     Changes for 1000Base-T (up to 9 sensors and fans).
- *
- *     Revision 1.37  1999/03/25 15:11:36  gklug
- *     fix: reset error flag if sensor reads correct value
- *
- *     Revision 1.36  1999/01/07 14:11:16  gklug
- *     fix: break added
- *
- *     Revision 1.35  1999/01/05 15:31:49  gklug
- *     fix: CLEAR STAT command is now added correctly
- *
- *     Revision 1.34  1998/12/01 13:45:16  gklug
- *     fix: introduced Init level, because we don't need reinits
- *
- *     Revision 1.33  1998/11/09 14:54:25  malthoff
- *     Modify I2C Transfer Timeout handling for Diagnostics.
- *
- *     Revision 1.32  1998/11/03 06:54:35  gklug
- *     fix: Need dummy reads at the beginning to init sensors
- *
- *     Revision 1.31  1998/11/03 06:42:42  gklug
- *     fix: select correctVIO range only if between warning levels
- *
- *     Revision 1.30  1998/11/02 07:36:53  gklug
- *     fix: Error should not include WARNING message
- *
- *     Revision 1.29  1998/10/30 15:07:43  malthoff
- *     Disable 'I2C does not compelete' error log for diagnostics.
- *
- *     Revision 1.28  1998/10/22 09:48:11  gklug
- *     fix: SysKonnectFileId typo
- *
- *     Revision 1.27  1998/10/20 09:59:46  gklug
- *     add: parameter to SkOsGetTime
- *
- *     Revision 1.26  1998/10/09 06:10:59  malthoff
- *     Remove ID_sccs by SysKonnectFileId.
- *
- *     Revision 1.25  1998/09/08 12:40:26  gklug
- *     fix: syntax error in if clause
- *
- *     Revision 1.24  1998/09/08 12:19:42  gklug
- *     chg: INIT Level checking
- *
- *     Revision 1.23  1998/09/08 07:37:20  gklug
- *     fix: log error if PCI_IO voltage sensor could not be initialized
- *
- *     Revision 1.22  1998/09/04 08:30:03  malthoff
- *     Bugfixes during SK_DIAG testing:
- *     - correct NS2BCLK() macro
- *     - correct SkI2cSndDev()
- *     - correct SkI2cWait() loop waiting for an event
- *
- *     Revision 1.21  1998/08/27 14:46:01  gklug
- *     chg: if-then-else replaced by switch
- *
- *     Revision 1.20  1998/08/27 14:40:07  gklug
- *     test: integral types
- *
- *     Revision 1.19  1998/08/25 07:51:54  gklug
- *     fix: typos for compiling
- *
- *     Revision 1.18  1998/08/25 06:12:24  gklug
- *     add: count errors and warnings
- *     fix: check not the sensor state but the ErrFlag!
- *
- *     Revision 1.17  1998/08/25 05:56:48  gklug
- *     add: CheckSensor function
- *
- *     Revision 1.16  1998/08/20 11:41:10  gklug
- *     chg: omit STRCPY macro by using char * as Sensor Description
- *
- *     Revision 1.15  1998/08/20 11:37:35  gklug
- *     chg: change Ioc to IoC
- *
- *     Revision 1.14  1998/08/20 11:32:52  gklug
- *     fix: Para compile error
- *
- *     Revision 1.13  1998/08/20 11:27:41  gklug
- *     fix: Compile bugs with new awrning constants
- *
- *     Revision 1.12  1998/08/20 08:53:05  gklug
- *     fix: compiler errors
- *     add: Threshold values
- *
- *     Revision 1.11  1998/08/19 12:39:22  malthoff
- *     Compiler Fix: Some names have changed.
- *
- *     Revision 1.10  1998/08/19 12:20:56  gklug
- *     fix: remove struct from C files (see CCC)
- *
- *     Revision 1.9  1998/08/19 06:28:46  malthoff
- *     SkOsGetTime returns SK_U64 now.
- *
- *     Revision 1.8  1998/08/17 13:53:33  gklug
- *     fix: Parameter of event function and its result
- *
- *     Revision 1.7  1998/08/17 07:02:15  malthoff
- *     Modify the functions for accessing the I2C SW Registers.
- *     Modify SkI2cWait().
- *     Put Lm80RcvReg into sklm80.c
- *     Remove Compiler Errors.
- *
- *     Revision 1.6  1998/08/14 07:13:20  malthoff
- *     remove pAc with pAC
- *     remove smc with pAC
- *     change names to new convention
- *
- *     Revision 1.5  1998/08/14 06:24:49  gklug
- *     add: init level 1 and 2
- *
- *     Revision 1.4  1998/08/12 14:31:12  gklug
- *     add: error log for unknown event
- *
- *     Revision 1.3  1998/08/12 13:37:04  gklug
- *     add: Init 0 function
- *
- *     Revision 1.2  1998/08/11 07:27:15  gklug
- *     add: functions of the interface
- *     adapt rest of source to C coding Conventions
- *     rmv: unnecessary code taken from Mona Lisa
- *
- *     Revision 1.1  1998/06/19 14:28:43  malthoff
- *     Created. Sources taken from ML Projekt.
- *     Sources have to be reworked for GE.
- *
- *
- ******************************************************************************/
-
-
-#include <config.h>
-
-/*
- *     I2C Protocol
- */
-static const char SysKonnectFileId[] =
-       "$Id: ski2c.c,v 1.57 2003/01/28 09:17:38 rschmidt Exp $";
-
-#include "h/skdrv1st.h"                /* Driver Specific Definitions */
-#include "h/lm80.h"
-#include "h/skdrv2nd.h"                /* Adapter Control- and Driver specific Def. */
-
-#ifdef __C2MAN__
-/*
-       I2C protocol implementation.
-
-       General Description:
-
-       The I2C protocol is used for the temperature sensors and for
-       the serial EEPROM which hold the configuration.
-
-       This file covers functions that allow to read write and do
-       some bulk requests a specified I2C address.
-
-       The Genesis has 2 I2C buses. One for the EEPROM which holds
-       the VPD Data and one for temperature and voltage sensor.
-       The following picture shows the I2C buses, I2C devices and
-       their control registers.
-
-       Note: The VPD functions are in skvpd.c
-.
-.      PCI Config I2C Bus for VPD Data:
-.
-.                    +------------+
-.                    | VPD EEPROM |
-.                    +------------+
-.                           |
-.                           | <-- I2C
-.                           |
-.               +-----------+-----------+
-.               |                       |
-.      +-----------------+     +-----------------+
-.      | PCI_VPD_ADR_REG |     | PCI_VPD_DAT_REG |
-.      +-----------------+     +-----------------+
-.
-.
-.      I2C Bus for LM80 sensor:
-.
-.                      +-----------------+
-.                      | Temperature and |
-.                      | Voltage Sensor  |
-.                      |       LM80      |
-.                      +-----------------+
-.                              |
-.                              |
-.                      I2C --> |
-.                              |
-.                           +----+
-.           +-------------->| OR |<--+
-.           |               +----+   |
-.     +------+------+                |
-.     |                    |                 |
-. +--------+   +--------+      +----------+
-. | B2_I2C |   | B2_I2C |      |  B2_I2C  |
-. | _CTRL  |   | _DATA  |      |   _SW    |
-. +--------+   +--------+      +----------+
-.
-       The I2C bus may be driven by the B2_I2C_SW or by the B2_I2C_CTRL
-       and B2_I2C_DATA registers.
-       For driver software it is recommended to use the I2C control and
-       data register, because I2C bus timing is done by the ASIC and
-       an interrupt may be received when the I2C request is completed.
-
-       Clock Rate Timing:                      MIN     MAX     generated by
-               VPD EEPROM:                     50 kHz  100 kHz         HW
-               LM80 over I2C Ctrl/Data reg.    50 kHz  100 kHz         HW
-               LM80 over B2_I2C_SW register    0        400 kHz         SW
-
-       Note:   The clock generated by the hardware is dependend on the
-               PCI clock. If the PCI bus clock is 33 MHz, the I2C/VPD
-               clock is 50 kHz.
- */
-intro()
-{}
-#endif
-
-#ifdef SK_DIAG
-/*
- * I2C Fast Mode timing values used by the LM80.
- * If new devices are added to the I2C bus the timing values have to be checked.
- */
-#ifndef I2C_SLOW_TIMING
-#define        T_CLK_LOW                       1300L   /* clock low time in ns */
-#define        T_CLK_HIGH                       600L   /* clock high time in ns */
-#define T_DATA_IN_SETUP                 100L   /* data in Set-up Time */
-#define T_START_HOLD            600L   /* start condition hold time */
-#define T_START_SETUP           600L   /* start condition Set-up time */
-#define        T_STOP_SETUP             600L   /* stop condition Set-up time */
-#define T_BUS_IDLE                     1300L   /* time the bus must free after Tx */
-#define        T_CLK_2_DATA_OUT         900L   /* max. clock low to data output valid */
-#else  /* I2C_SLOW_TIMING */
-/* I2C Standard Mode Timing */
-#define        T_CLK_LOW                       4700L   /* clock low time in ns */
-#define        T_CLK_HIGH                      4000L   /* clock high time in ns */
-#define T_DATA_IN_SETUP                 250L   /* data in Set-up Time */
-#define T_START_HOLD           4000L   /* start condition hold time */
-#define T_START_SETUP          4700L   /* start condition Set-up time */
-#define        T_STOP_SETUP            4000L   /* stop condition Set-up time */
-#define T_BUS_IDLE                     4700L   /* time the bus must free after Tx */
-#endif /* !I2C_SLOW_TIMING */
-
-#define NS2BCLK(x)     (((x)*125)/10000)
-
-/*
- * I2C Wire Operations
- *
- * About I2C_CLK_LOW():
- *
- * The Data Direction bit (I2C_DATA_DIR) has to be set to input when setting
- * clock to low, to prevent the ASIC and the I2C data client from driving the
- * serial data line simultaneously (ASIC: last bit of a byte = '1', I2C client
- * send an 'ACK'). See also Concentrator Bugreport No. 10192.
- */
-#define I2C_DATA_HIGH(IoC)     SK_I2C_SET_BIT(IoC, I2C_DATA)
-#define        I2C_DATA_LOW(IoC)       SK_I2C_CLR_BIT(IoC, I2C_DATA)
-#define        I2C_DATA_OUT(IoC)       SK_I2C_SET_BIT(IoC, I2C_DATA_DIR)
-#define        I2C_DATA_IN(IoC)        SK_I2C_CLR_BIT(IoC, I2C_DATA_DIR | I2C_DATA)
-#define        I2C_CLK_HIGH(IoC)       SK_I2C_SET_BIT(IoC, I2C_CLK)
-#define        I2C_CLK_LOW(IoC)        SK_I2C_CLR_BIT(IoC, I2C_CLK | I2C_DATA_DIR)
-#define        I2C_START_COND(IoC)     SK_I2C_CLR_BIT(IoC, I2C_CLK)
-
-#define NS2CLKT(x)     ((x*125L)/10000)
-
-/*--------------- I2C Interface Register Functions --------------- */
-
-/*
- * sending one bit
- */
-void SkI2cSndBit(
-SK_IOC IoC,    /* I/O Context */
-SK_U8  Bit)    /* Bit to send */
-{
-       I2C_DATA_OUT(IoC);
-       if (Bit) {
-               I2C_DATA_HIGH(IoC);
-       }
-       else {
-               I2C_DATA_LOW(IoC);
-       }
-       SkDgWaitTime(IoC, NS2BCLK(T_DATA_IN_SETUP));
-       I2C_CLK_HIGH(IoC);
-       SkDgWaitTime(IoC, NS2BCLK(T_CLK_HIGH));
-       I2C_CLK_LOW(IoC);
-}      /* SkI2cSndBit*/
-
-
-/*
- * Signal a start to the I2C Bus.
- *
- * A start is signaled when data goes to low in a high clock cycle.
- *
- * Ends with Clock Low.
- *
- * Status: not tested
- */
-void SkI2cStart(
-SK_IOC IoC)    /* I/O Context */
-{
-       /* Init data and Clock to output lines */
-       /* Set Data high */
-       I2C_DATA_OUT(IoC);
-       I2C_DATA_HIGH(IoC);
-       /* Set Clock high */
-       I2C_CLK_HIGH(IoC);
-
-       SkDgWaitTime(IoC, NS2BCLK(T_START_SETUP));
-
-       /* Set Data Low */
-       I2C_DATA_LOW(IoC);
-
-       SkDgWaitTime(IoC, NS2BCLK(T_START_HOLD));
-
-       /* Clock low without Data to Input */
-       I2C_START_COND(IoC);
-
-       SkDgWaitTime(IoC, NS2BCLK(T_CLK_LOW));
-}      /* SkI2cStart */
-
-
-void SkI2cStop(
-SK_IOC IoC)    /* I/O Context */
-{
-       /* Init data and Clock to output lines */
-       /* Set Data low */
-       I2C_DATA_OUT(IoC);
-       I2C_DATA_LOW(IoC);
-
-       SkDgWaitTime(IoC, NS2BCLK(T_CLK_2_DATA_OUT));
-
-       /* Set Clock high */
-       I2C_CLK_HIGH(IoC);
-
-       SkDgWaitTime(IoC, NS2BCLK(T_STOP_SETUP));
-
-       /*
-        * Set Data High:       Do it by setting the Data Line to Input.
-        *                      Because of a pull up resistor the Data Line
-        *                      floods to high.
-        */
-       I2C_DATA_IN(IoC);
-
-       /*
-        *      When I2C activity is stopped
-        *       o      DATA should be set to input and
-        *       o      CLOCK should be set to high!
-        */
-       SkDgWaitTime(IoC, NS2BCLK(T_BUS_IDLE));
-}      /* SkI2cStop */
-
-
-/*
- * Receive just one bit via the I2C bus.
- *
- * Note:       Clock must be set to LOW before calling this function.
- *
- * Returns The received bit.
- */
-int SkI2cRcvBit(
-SK_IOC IoC)    /* I/O Context */
-{
-       int     Bit;
-       SK_U8   I2cSwCtrl;
-
-       /* Init data as input line */
-       I2C_DATA_IN(IoC);
-
-       SkDgWaitTime(IoC, NS2BCLK(T_CLK_2_DATA_OUT));
-
-       I2C_CLK_HIGH(IoC);
-
-       SkDgWaitTime(IoC, NS2BCLK(T_CLK_HIGH));
-
-       SK_I2C_GET_SW(IoC, &I2cSwCtrl);
-
-       Bit = (I2cSwCtrl & I2C_DATA) ? 1 : 0;
-
-       I2C_CLK_LOW(IoC);
-       SkDgWaitTime(IoC, NS2BCLK(T_CLK_LOW-T_CLK_2_DATA_OUT));
-
-       return(Bit);
-}      /* SkI2cRcvBit */
-
-
-/*
- * Receive an ACK.
- *
- * returns     0 If acknowledged
- *             1 in case of an error
- */
-int SkI2cRcvAck(
-SK_IOC IoC)    /* I/O Context */
-{
-       /*
-        * Received bit must be zero.
-        */
-       return(SkI2cRcvBit(IoC) != 0);
-}      /* SkI2cRcvAck */
-
-
-/*
- * Send an NACK.
- */
-void SkI2cSndNAck(
-SK_IOC IoC)    /* I/O Context */
-{
-       /*
-        * Received bit must be zero.
-        */
-       SkI2cSndBit(IoC, 1);
-}      /* SkI2cSndNAck */
-
-
-/*
- * Send an ACK.
- */
-void SkI2cSndAck(
-SK_IOC IoC)    /* I/O Context */
-{
-       /*
-        * Received bit must be zero.
-        *
-        */
-       SkI2cSndBit(IoC, 0);
-}      /* SkI2cSndAck */
-
-
-/*
- * Send one byte to the I2C device and wait for ACK.
- *
- * Return acknowleged status.
- */
-int SkI2cSndByte(
-SK_IOC IoC,    /* I/O Context */
-int            Byte)   /* byte to send */
-{
-       int     i;
-
-       for (i = 0; i < 8; i++) {
-               if (Byte & (1<<(7-i))) {
-                       SkI2cSndBit(IoC, 1);
-               }
-               else {
-                       SkI2cSndBit(IoC, 0);
-               }
-       }
-
-       return(SkI2cRcvAck(IoC));
-}      /* SkI2cSndByte */
-
-
-/*
- * Receive one byte and ack it.
- *
- * Return byte.
- */
-int SkI2cRcvByte(
-SK_IOC IoC,    /* I/O Context */
-int            Last)   /* Last Byte Flag */
-{
-       int     i;
-       int     Byte = 0;
-
-       for (i = 0; i < 8; i++) {
-               Byte <<= 1;
-               Byte |= SkI2cRcvBit(IoC);
-       }
-
-       if (Last) {
-               SkI2cSndNAck(IoC);
-       }
-       else {
-               SkI2cSndAck(IoC);
-       }
-
-       return(Byte);
-}      /* SkI2cRcvByte */
-
-
-/*
- * Start dialog and send device address
- *
- * Return 0 if acknowleged, 1 in case of an error
- */
-int    SkI2cSndDev(
-SK_IOC IoC,    /* I/O Context */
-int            Addr,   /* Device Address */
-int            Rw)             /* Read / Write Flag */
-{
-       SkI2cStart(IoC);
-       Rw = ~Rw;
-       Rw &= I2C_WRITE;
-       return(SkI2cSndByte(IoC, (Addr<<1) | Rw));
-}      /* SkI2cSndDev */
-
-#endif /* SK_DIAG */
-
-/*----------------- I2C CTRL Register Functions ----------*/
-
-/*
- * waits for a completion of an I2C transfer
- *
- * returns     0:      success, transfer completes
- *                     1:      error,   transfer does not complete, I2C transfer
- *                                              killed, wait loop terminated.
- */
-int    SkI2cWait(
-SK_AC  *pAC,   /* Adapter Context */
-SK_IOC IoC,    /* I/O Context */
-int            Event)  /* complete event to wait for (I2C_READ or I2C_WRITE) */
-{
-       SK_U64  StartTime;
-       SK_U64  CurrentTime;
-       SK_U32  I2cCtrl;
-
-       StartTime = SkOsGetTime(pAC);
-
-       do {
-               CurrentTime = SkOsGetTime(pAC);
-
-               if (CurrentTime - StartTime > SK_TICKS_PER_SEC / 8) {
-
-                       SK_I2C_STOP(IoC);
-#ifndef SK_DIAG
-                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_I2C_E002, SKERR_I2C_E002MSG);
-#endif /* !SK_DIAG */
-                       return(1);
-               }
-
-               SK_I2C_GET_CTL(IoC, &I2cCtrl);
-
-#ifdef xYUKON_DBG
-               printf("StartTime=%lu, CurrentTime=%lu\n",
-                       StartTime, CurrentTime);
-               if (kbhit()) {
-                       return(1);
-               }
-#endif /* YUKON_DBG */
-
-       } while ((I2cCtrl & I2C_FLAG) == (SK_U32)Event << 31);
-
-       return(0);
-}      /* SkI2cWait */
-
-
-/*
- * waits for a completion of an I2C transfer
- *
- * Returns
- *     Nothing
- */
-void SkI2cWaitIrq(
-SK_AC  *pAC,   /* Adapter Context */
-SK_IOC IoC)    /* I/O Context */
-{
-       SK_SENSOR       *pSen;
-       SK_U64          StartTime;
-       SK_U32          IrqSrc;
-
-       pSen = &pAC->I2c.SenTable[pAC->I2c.CurrSens];
-
-       if (pSen->SenState == SK_SEN_IDLE) {
-               return;
-       }
-
-       StartTime = SkOsGetTime(pAC);
-       do {
-               if (SkOsGetTime(pAC) - StartTime > SK_TICKS_PER_SEC / 8) {
-                       SK_I2C_STOP(IoC);
-#ifndef SK_DIAG
-                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_I2C_E016, SKERR_I2C_E016MSG);
-#endif /* !SK_DIAG */
-                       return;
-               }
-               SK_IN32(IoC, B0_ISRC, &IrqSrc);
-       } while ((IrqSrc & IS_I2C_READY) == 0);
-
-       pSen->SenState = SK_SEN_IDLE;
-       return;
-}      /* SkI2cWaitIrq */
-
-/*
- * writes a single byte or 4 bytes into the I2C device
- *
- * returns     0:      success
- *                     1:      error
- */
-int SkI2cWrite(
-SK_AC  *pAC,           /* Adapter Context */
-SK_IOC IoC,            /* I/O Context */
-SK_U32 I2cData,        /* I2C Data to write */
-int            I2cDev,         /* I2C Device Address */
-int            I2cReg,         /* I2C Device Register Address */
-int            I2cBurst)       /* I2C Burst Flag */
-{
-       SK_OUT32(IoC, B2_I2C_DATA, I2cData);
-       SK_I2C_CTL(IoC, I2C_WRITE, I2cDev, I2cReg, I2cBurst);
-
-       return(SkI2cWait(pAC, IoC, I2C_WRITE));
-}      /* SkI2cWrite*/
-
-
-#ifdef SK_DIAG
-
-/*
- * reads a single byte or 4 bytes from the I2C device
- *
- * returns     the word read
- */
-SK_U32 SkI2cRead(
-SK_AC  *pAC,           /* Adapter Context */
-SK_IOC IoC,            /* I/O Context */
-int            I2cDev,         /* I2C Device Address */
-int            I2cReg,         /* I2C Device Register Address */
-int            I2cBurst)       /* I2C Burst Flag */
-{
-       SK_U32  Data;
-
-       SK_OUT32(IoC, B2_I2C_DATA, 0);
-       SK_I2C_CTL(IoC, I2C_READ, I2cDev, I2cReg, I2cBurst);
-
-       if (SkI2cWait(pAC, IoC, I2C_READ) != 0) {
-               w_print("%s\n", SKERR_I2C_E002MSG);
-       }
-
-       SK_IN32(IoC, B2_I2C_DATA, &Data);
-       return(Data);
-}      /* SkI2cRead */
-
-#endif /* SK_DIAG */
-
-
-/*
- * read a sensor's value
- *
- * This function reads a sensor's value from the I2C sensor chip. The sensor
- * is defined by its index into the sensors database in the struct pAC points
- * to.
- * Returns
- *             1 if the read is completed
- *             0 if the read must be continued (I2C Bus still allocated)
- */
-int    SkI2cReadSensor(
-SK_AC          *pAC,   /* Adapter Context */
-SK_IOC         IoC,    /* I/O Context */
-SK_SENSOR      *pSen)  /* Sensor to be read */
-{
-    if (pSen->SenRead != NULL) {
-       return((*pSen->SenRead)(pAC, IoC, pSen));
-    }
-    else
-       return(0); /* no success */
-}      /* SkI2cReadSensor*/
-
-/*
- * Do the Init state 0 initialization
- */
-static int SkI2cInit0(
-SK_AC  *pAC)   /* Adapter Context */
-{
-       int     i;
-
-       /* Begin with first sensor */
-       pAC->I2c.CurrSens = 0;
-
-       /* Begin with timeout control for state machine */
-       pAC->I2c.TimerMode = SK_TIMER_WATCH_STATEMACHINE;
-
-       /* Set sensor number to zero */
-       pAC->I2c.MaxSens = 0;
-
-#ifndef        SK_DIAG
-       /* Initialize Number of Dummy Reads */
-       pAC->I2c.DummyReads = SK_MAX_SENSORS;
-#endif
-
-       for (i = 0; i < SK_MAX_SENSORS; i++) {
-               pAC->I2c.SenTable[i].SenDesc = "unknown";
-               pAC->I2c.SenTable[i].SenType = SK_SEN_UNKNOWN;
-               pAC->I2c.SenTable[i].SenThreErrHigh = 0;
-               pAC->I2c.SenTable[i].SenThreErrLow = 0;
-               pAC->I2c.SenTable[i].SenThreWarnHigh = 0;
-               pAC->I2c.SenTable[i].SenThreWarnLow = 0;
-               pAC->I2c.SenTable[i].SenReg = LM80_FAN2_IN;
-               pAC->I2c.SenTable[i].SenInit = SK_SEN_DYN_INIT_NONE;
-               pAC->I2c.SenTable[i].SenValue = 0;
-               pAC->I2c.SenTable[i].SenErrFlag = SK_SEN_ERR_NOT_PRESENT;
-               pAC->I2c.SenTable[i].SenErrCts = 0;
-               pAC->I2c.SenTable[i].SenBegErrTS = 0;
-               pAC->I2c.SenTable[i].SenState = SK_SEN_IDLE;
-               pAC->I2c.SenTable[i].SenRead = NULL;
-               pAC->I2c.SenTable[i].SenDev = 0;
-       }
-
-       /* Now we are "INIT data"ed */
-       pAC->I2c.InitLevel = SK_INIT_DATA;
-       return(0);
-}      /* SkI2cInit0*/
-
-
-/*
- * Do the init state 1 initialization
- *
- * initialize the following register of the LM80:
- * Configuration register:
- * - START, noINT, activeLOW, noINT#Clear, noRESET, noCI, noGPO#, noINIT
- *
- * Interrupt Mask Register 1:
- * - all interrupts are Disabled (0xff)
- *
- * Interrupt Mask Register 2:
- * - all interrupts are Disabled (0xff) Interrupt modi doesn't matter.
- *
- * Fan Divisor/RST_OUT register:
- * - Divisors set to 1 (bits 00), all others 0s.
- *
- * OS# Configuration/Temperature resolution Register:
- * - all 0s
- *
- */
-static int SkI2cInit1(
-SK_AC  *pAC,   /* Adapter Context */
-SK_IOC IoC)    /* I/O Context */
-{
-    int i;
-    SK_U8 I2cSwCtrl;
-       SK_GEPORT *pPrt;        /* GIni Port struct pointer */
-
-       if (pAC->I2c.InitLevel != SK_INIT_DATA) {
-               /* ReInit not needed in I2C module */
-               return(0);
-       }
-
-    /* Set the Direction of I2C-Data Pin to IN */
-    SK_I2C_CLR_BIT(IoC, I2C_DATA_DIR | I2C_DATA);
-    /* Check for 32-Bit Yukon with Low at I2C-Data Pin */
-       SK_I2C_GET_SW(IoC, &I2cSwCtrl);
-
-       if ((I2cSwCtrl & I2C_DATA) == 0) {
-               /* this is a 32-Bit board */
-               pAC->GIni.GIYukon32Bit = SK_TRUE;
-       return(0);
-    }
-
-       /* Check for 64 Bit Yukon without sensors */
-       if (SkI2cWrite(pAC, IoC, 0, LM80_ADDR, LM80_CFG, 0) != 0) {
-       return(0);
-    }
-
-       (void)SkI2cWrite(pAC, IoC, 0xff, LM80_ADDR, LM80_IMSK_1, 0);
-
-       (void)SkI2cWrite(pAC, IoC, 0xff, LM80_ADDR, LM80_IMSK_2, 0);
-
-       (void)SkI2cWrite(pAC, IoC, 0, LM80_ADDR, LM80_FAN_CTRL, 0);
-
-       (void)SkI2cWrite(pAC, IoC, 0, LM80_ADDR, LM80_TEMP_CTRL, 0);
-
-       (void)SkI2cWrite(pAC, IoC, LM80_CFG_START, LM80_ADDR, LM80_CFG, 0);
-
-       /*
-        * MaxSens has to be updated here, because PhyType is not
-        * set when performing Init Level 0
-        */
-    pAC->I2c.MaxSens = 5;
-
-       pPrt = &pAC->GIni.GP[0];
-
-       if (pAC->GIni.GIGenesis) {
-               if (pPrt->PhyType == SK_PHY_BCOM) {
-                       if (pAC->GIni.GIMacsFound == 1) {
-                               pAC->I2c.MaxSens += 1;
-                       }
-                       else {
-                               pAC->I2c.MaxSens += 3;
-                       }
-               }
-       }
-       else {
-               pAC->I2c.MaxSens += 3;
-       }
-
-       for (i = 0; i < pAC->I2c.MaxSens; i++) {
-               switch (i) {
-               case 0:
-                       pAC->I2c.SenTable[i].SenDesc = "Temperature";
-                       pAC->I2c.SenTable[i].SenType = SK_SEN_TEMP;
-                       pAC->I2c.SenTable[i].SenThreErrHigh = SK_SEN_TEMP_HIGH_ERR;
-                       pAC->I2c.SenTable[i].SenThreWarnHigh = SK_SEN_TEMP_HIGH_WARN;
-                       pAC->I2c.SenTable[i].SenThreWarnLow = SK_SEN_TEMP_LOW_WARN;
-                       pAC->I2c.SenTable[i].SenThreErrLow = SK_SEN_TEMP_LOW_ERR;
-                       pAC->I2c.SenTable[i].SenReg = LM80_TEMP_IN;
-                       break;
-               case 1:
-                       pAC->I2c.SenTable[i].SenDesc = "Voltage PCI";
-                       pAC->I2c.SenTable[i].SenType = SK_SEN_VOLT;
-                       pAC->I2c.SenTable[i].SenThreErrHigh = SK_SEN_PCI_5V_HIGH_ERR;
-                       pAC->I2c.SenTable[i].SenThreWarnHigh = SK_SEN_PCI_5V_HIGH_WARN;
-                       pAC->I2c.SenTable[i].SenThreWarnLow = SK_SEN_PCI_5V_LOW_WARN;
-                       pAC->I2c.SenTable[i].SenThreErrLow = SK_SEN_PCI_5V_LOW_ERR;
-                       pAC->I2c.SenTable[i].SenReg = LM80_VT0_IN;
-                       break;
-               case 2:
-                       pAC->I2c.SenTable[i].SenDesc = "Voltage PCI-IO";
-                       pAC->I2c.SenTable[i].SenType = SK_SEN_VOLT;
-                       pAC->I2c.SenTable[i].SenThreErrHigh = SK_SEN_PCI_IO_5V_HIGH_ERR;
-                       pAC->I2c.SenTable[i].SenThreWarnHigh = SK_SEN_PCI_IO_5V_HIGH_WARN;
-                       pAC->I2c.SenTable[i].SenThreWarnLow = SK_SEN_PCI_IO_3V3_LOW_WARN;
-                       pAC->I2c.SenTable[i].SenThreErrLow = SK_SEN_PCI_IO_3V3_LOW_ERR;
-                       pAC->I2c.SenTable[i].SenReg = LM80_VT1_IN;
-                       pAC->I2c.SenTable[i].SenInit = SK_SEN_DYN_INIT_PCI_IO;
-                       break;
-               case 3:
-                       pAC->I2c.SenTable[i].SenDesc = "Voltage ASIC";
-                       pAC->I2c.SenTable[i].SenType = SK_SEN_VOLT;
-                       pAC->I2c.SenTable[i].SenThreErrHigh = SK_SEN_VDD_HIGH_ERR;
-                       pAC->I2c.SenTable[i].SenThreWarnHigh = SK_SEN_VDD_HIGH_WARN;
-                       pAC->I2c.SenTable[i].SenThreWarnLow = SK_SEN_VDD_LOW_WARN;
-                       pAC->I2c.SenTable[i].SenThreErrLow = SK_SEN_VDD_LOW_ERR;
-                       pAC->I2c.SenTable[i].SenReg = LM80_VT2_IN;
-                       break;
-               case 4:
-                       if (pAC->GIni.GIGenesis) {
-                               if (pPrt->PhyType == SK_PHY_BCOM) {
-                                       pAC->I2c.SenTable[i].SenDesc = "Voltage PHY A PLL";
-                                       pAC->I2c.SenTable[i].SenThreErrHigh = SK_SEN_PLL_3V3_HIGH_ERR;
-                                       pAC->I2c.SenTable[i].SenThreWarnHigh = SK_SEN_PLL_3V3_HIGH_WARN;
-                                       pAC->I2c.SenTable[i].SenThreWarnLow = SK_SEN_PLL_3V3_LOW_WARN;
-                                       pAC->I2c.SenTable[i].SenThreErrLow = SK_SEN_PLL_3V3_LOW_ERR;
-                               }
-                               else {
-                                       pAC->I2c.SenTable[i].SenDesc = "Voltage PMA";
-                                       pAC->I2c.SenTable[i].SenThreErrHigh = SK_SEN_PLL_3V3_HIGH_ERR;
-                                       pAC->I2c.SenTable[i].SenThreWarnHigh = SK_SEN_PLL_3V3_HIGH_WARN;
-                                       pAC->I2c.SenTable[i].SenThreWarnLow = SK_SEN_PLL_3V3_LOW_WARN;
-                                       pAC->I2c.SenTable[i].SenThreErrLow = SK_SEN_PLL_3V3_LOW_ERR;
-                               }
-                       }
-                       else {
-                               pAC->I2c.SenTable[i].SenDesc = "Voltage VAUX";
-                               pAC->I2c.SenTable[i].SenThreErrHigh = SK_SEN_VAUX_3V3_HIGH_ERR;
-                               pAC->I2c.SenTable[i].SenThreWarnHigh = SK_SEN_VAUX_3V3_HIGH_WARN;
-                               if (pAC->GIni.GIVauxAvail) {
-                                       pAC->I2c.SenTable[i].SenThreWarnLow = SK_SEN_VAUX_3V3_LOW_WARN;
-                                       pAC->I2c.SenTable[i].SenThreErrLow = SK_SEN_VAUX_3V3_LOW_ERR;
-                               }
-                               else {
-                                       pAC->I2c.SenTable[i].SenThreErrLow = SK_SEN_VAUX_0V_WARN_ERR;
-                                       pAC->I2c.SenTable[i].SenThreWarnLow = SK_SEN_VAUX_0V_WARN_ERR;
-                               }
-                       }
-                       pAC->I2c.SenTable[i].SenType = SK_SEN_VOLT;
-                       pAC->I2c.SenTable[i].SenReg = LM80_VT3_IN;
-                       break;
-               case 5:
-                       if (pAC->GIni.GIGenesis) {
-                               pAC->I2c.SenTable[i].SenDesc = "Voltage PHY 2V5";
-                               pAC->I2c.SenTable[i].SenThreErrHigh = SK_SEN_PHY_2V5_HIGH_ERR;
-                               pAC->I2c.SenTable[i].SenThreWarnHigh = SK_SEN_PHY_2V5_HIGH_WARN;
-                               pAC->I2c.SenTable[i].SenThreWarnLow = SK_SEN_PHY_2V5_LOW_WARN;
-                               pAC->I2c.SenTable[i].SenThreErrLow = SK_SEN_PHY_2V5_LOW_ERR;
-                       }
-                       else {
-                               pAC->I2c.SenTable[i].SenDesc = "Voltage ASIC-Co 1V5";
-                               pAC->I2c.SenTable[i].SenThreErrHigh = SK_SEN_CORE_1V5_HIGH_ERR;
-                               pAC->I2c.SenTable[i].SenThreWarnHigh = SK_SEN_CORE_1V5_HIGH_WARN;
-                               pAC->I2c.SenTable[i].SenThreWarnLow = SK_SEN_CORE_1V5_LOW_WARN;
-                               pAC->I2c.SenTable[i].SenThreErrLow = SK_SEN_CORE_1V5_LOW_ERR;
-                       }
-                       pAC->I2c.SenTable[i].SenType = SK_SEN_VOLT;
-                       pAC->I2c.SenTable[i].SenReg = LM80_VT4_IN;
-                       break;
-               case 6:
-                       if (pAC->GIni.GIGenesis) {
-                               pAC->I2c.SenTable[i].SenDesc = "Voltage PHY B PLL";
-                       }
-                       else {
-                               pAC->I2c.SenTable[i].SenDesc = "Voltage PHY 3V3";
-                       }
-                       pAC->I2c.SenTable[i].SenType = SK_SEN_VOLT;
-                       pAC->I2c.SenTable[i].SenThreErrHigh = SK_SEN_PLL_3V3_HIGH_ERR;
-                       pAC->I2c.SenTable[i].SenThreWarnHigh = SK_SEN_PLL_3V3_HIGH_WARN;
-                       pAC->I2c.SenTable[i].SenThreWarnLow = SK_SEN_PLL_3V3_LOW_WARN;
-                       pAC->I2c.SenTable[i].SenThreErrLow = SK_SEN_PLL_3V3_LOW_ERR;
-                       pAC->I2c.SenTable[i].SenReg = LM80_VT5_IN;
-                       break;
-               case 7:
-                       if (pAC->GIni.GIGenesis) {
-                               pAC->I2c.SenTable[i].SenDesc = "Speed Fan";
-                               pAC->I2c.SenTable[i].SenType = SK_SEN_FAN;
-                               pAC->I2c.SenTable[i].SenThreErrHigh = SK_SEN_FAN_HIGH_ERR;
-                               pAC->I2c.SenTable[i].SenThreWarnHigh = SK_SEN_FAN_HIGH_WARN;
-                               pAC->I2c.SenTable[i].SenThreWarnLow = SK_SEN_FAN_LOW_WARN;
-                               pAC->I2c.SenTable[i].SenThreErrLow = SK_SEN_FAN_LOW_ERR;
-                               pAC->I2c.SenTable[i].SenReg = LM80_FAN2_IN;
-                       }
-                       else {
-                               pAC->I2c.SenTable[i].SenDesc = "Voltage PHY 2V5";
-                               pAC->I2c.SenTable[i].SenType = SK_SEN_VOLT;
-                               pAC->I2c.SenTable[i].SenThreErrHigh = SK_SEN_PHY_2V5_HIGH_ERR;
-                               pAC->I2c.SenTable[i].SenThreWarnHigh = SK_SEN_PHY_2V5_HIGH_WARN;
-                               pAC->I2c.SenTable[i].SenThreWarnLow = SK_SEN_PHY_2V5_LOW_WARN;
-                               pAC->I2c.SenTable[i].SenThreErrLow = SK_SEN_PHY_2V5_LOW_ERR;
-                               pAC->I2c.SenTable[i].SenReg = LM80_VT6_IN;
-                       }
-                       break;
-               default:
-                       SK_ERR_LOG(pAC, SK_ERRCL_INIT | SK_ERRCL_SW,
-                               SKERR_I2C_E001, SKERR_I2C_E001MSG);
-                       break;
-               }
-
-               pAC->I2c.SenTable[i].SenValue = 0;
-               pAC->I2c.SenTable[i].SenErrFlag = SK_SEN_ERR_OK;
-               pAC->I2c.SenTable[i].SenErrCts = 0;
-               pAC->I2c.SenTable[i].SenBegErrTS = 0;
-               pAC->I2c.SenTable[i].SenState = SK_SEN_IDLE;
-               pAC->I2c.SenTable[i].SenRead = SkLm80ReadSensor;
-               pAC->I2c.SenTable[i].SenDev = LM80_ADDR;
-       }
-
-#ifndef        SK_DIAG
-       pAC->I2c.DummyReads = pAC->I2c.MaxSens;
-#endif /* !SK_DIAG */
-
-       /* Clear I2C IRQ */
-       SK_OUT32(IoC, B2_I2C_IRQ, I2C_CLR_IRQ);
-
-       /* Now we are I/O initialized */
-       pAC->I2c.InitLevel = SK_INIT_IO;
-       return(0);
-}      /* SkI2cInit1 */
-
-
-/*
- * Init level 2: Start first sensor read.
- */
-static int SkI2cInit2(
-SK_AC  *pAC,   /* Adapter Context */
-SK_IOC IoC)    /* I/O Context */
-{
-       int             ReadComplete;
-       SK_SENSOR       *pSen;
-
-       if (pAC->I2c.InitLevel != SK_INIT_IO) {
-               /* ReInit not needed in I2C module */
-               /* Init0 and Init2 not permitted */
-               return(0);
-       }
-
-       pSen = &pAC->I2c.SenTable[pAC->I2c.CurrSens];
-       ReadComplete = SkI2cReadSensor(pAC, IoC, pSen);
-
-       if (ReadComplete) {
-               SK_ERR_LOG(pAC, SK_ERRCL_INIT, SKERR_I2C_E008, SKERR_I2C_E008MSG);
-       }
-
-       /* Now we are correctly initialized */
-       pAC->I2c.InitLevel = SK_INIT_RUN;
-
-       return(0);
-}      /* SkI2cInit2*/
-
-
-/*
- * Initialize I2C devices
- *
- * Get the first voltage value and discard it.
- * Go into temperature read mode. A default pointer is not set.
- *
- * The things to be done depend on the init level in the parameter list:
- * Level 0:
- *     Initialize only the data structures. Do NOT access hardware.
- * Level 1:
- *     Initialize hardware through SK_IN / SK_OUT commands. Do NOT use interrupts.
- * Level 2:
- *     Everything is possible. Interrupts may be used from now on.
- *
- * return:
- *     0 = success
- *     other = error.
- */
-int    SkI2cInit(
-SK_AC  *pAC,   /* Adapter Context */
-SK_IOC IoC,    /* I/O Context needed in levels 1 and 2 */
-int            Level)  /* Init Level */
-{
-
-       switch (Level) {
-       case SK_INIT_DATA:
-               return(SkI2cInit0(pAC));
-       case SK_INIT_IO:
-               return(SkI2cInit1(pAC, IoC));
-       case SK_INIT_RUN:
-               return(SkI2cInit2(pAC, IoC));
-       default:
-               break;
-       }
-
-       return(0);
-}      /* SkI2cInit */
-
-
-#ifndef SK_DIAG
-
-/*
- * Interrupt service function for the I2C Interface
- *
- * Clears the Interrupt source
- *
- * Reads the register and check it for sending a trap.
- *
- * Starts the timer if necessary.
- */
-void SkI2cIsr(
-SK_AC  *pAC,   /* Adapter Context */
-SK_IOC IoC)    /* I/O Context */
-{
-       SK_EVPARA       Para;
-
-       /* Clear I2C IRQ */
-       SK_OUT32(IoC, B2_I2C_IRQ, I2C_CLR_IRQ);
-
-       Para.Para64 = 0;
-       SkEventQueue(pAC, SKGE_I2C, SK_I2CEV_IRQ, Para);
-}      /* SkI2cIsr */
-
-
-/*
- * Check this sensors Value against the threshold and send events.
- */
-static void SkI2cCheckSensor(
-SK_AC          *pAC,   /* Adapter Context */
-SK_SENSOR      *pSen)
-{
-       SK_EVPARA       ParaLocal;
-       SK_BOOL         TooHigh;        /* Is sensor too high? */
-       SK_BOOL         TooLow;         /* Is sensor too low? */
-       SK_U64          CurrTime;       /* Current Time */
-       SK_BOOL         DoTrapSend;     /* We need to send a trap */
-       SK_BOOL         DoErrLog;       /* We need to log the error */
-       SK_BOOL         IsError;        /* We need to log the error */
-
-       /* Check Dummy Reads first */
-       if (pAC->I2c.DummyReads > 0) {
-               pAC->I2c.DummyReads--;
-               return;
-       }
-
-       /* Get the current time */
-       CurrTime = SkOsGetTime(pAC);
-
-       /* Set para to the most useful setting: The current sensor. */
-       ParaLocal.Para64 = (SK_U64)pAC->I2c.CurrSens;
-
-       /* Check the Value against the thresholds. First: Error Thresholds */
-       TooHigh = (pSen->SenValue > pSen->SenThreErrHigh);
-       TooLow = (pSen->SenValue < pSen->SenThreErrLow);
-
-       IsError = SK_FALSE;
-       if (TooHigh || TooLow) {
-               /* Error condition is satisfied */
-               DoTrapSend = SK_TRUE;
-               DoErrLog = SK_TRUE;
-
-               /* Now error condition is satisfied */
-               IsError = SK_TRUE;
-
-               if (pSen->SenErrFlag == SK_SEN_ERR_ERR) {
-                       /* This state is the former one */
-
-                       /* So check first whether we have to send a trap */
-                       if (pSen->SenLastErrTrapTS + SK_SEN_ERR_TR_HOLD >
-                           CurrTime) {
-                               /*
-                                * Do NOT send the Trap. The hold back time
-                                * has to run out first.
-                                */
-                               DoTrapSend = SK_FALSE;
-                       }
-
-                       /* Check now whether we have to log an Error */
-                       if (pSen->SenLastErrLogTS + SK_SEN_ERR_LOG_HOLD >
-                           CurrTime) {
-                               /*
-                                * Do NOT log the error. The hold back time
-                                * has to run out first.
-                                */
-                               DoErrLog = SK_FALSE;
-                       }
-               }
-               else {
-                       /* We came from a different state -> Set Begin Time Stamp */
-                       pSen->SenBegErrTS = CurrTime;
-                       pSen->SenErrFlag = SK_SEN_ERR_ERR;
-               }
-
-               if (DoTrapSend) {
-                       /* Set current Time */
-                       pSen->SenLastErrTrapTS = CurrTime;
-                       pSen->SenErrCts++;
-
-                       /* Queue PNMI Event */
-                       SkEventQueue(pAC, SKGE_PNMI, (TooHigh ?
-                               SK_PNMI_EVT_SEN_ERR_UPP :
-                               SK_PNMI_EVT_SEN_ERR_LOW),
-                               ParaLocal);
-               }
-
-               if (DoErrLog) {
-                       /* Set current Time */
-                       pSen->SenLastErrLogTS = CurrTime;
-
-                       if (pSen->SenType == SK_SEN_TEMP) {
-                               SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_I2C_E011,
-                                       SKERR_I2C_E011MSG);
-                       } else if (pSen->SenType == SK_SEN_VOLT) {
-                               SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_I2C_E012,
-                                       SKERR_I2C_E012MSG);
-                       } else
-                       {
-                               SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_I2C_E015,
-                                       SKERR_I2C_E015MSG);
-                       }
-               }
-       }
-
-       /* Check the Value against the thresholds */
-       /* 2nd: Warning thresholds */
-       TooHigh = (pSen->SenValue > pSen->SenThreWarnHigh);
-       TooLow = (pSen->SenValue < pSen->SenThreWarnLow);
-
-       if (!IsError && (TooHigh || TooLow)) {
-               /* Error condition is satisfied */
-               DoTrapSend = SK_TRUE;
-               DoErrLog = SK_TRUE;
-
-               if (pSen->SenErrFlag == SK_SEN_ERR_WARN) {
-                       /* This state is the former one */
-
-                       /* So check first whether we have to send a trap */
-                       if (pSen->SenLastWarnTrapTS + SK_SEN_WARN_TR_HOLD >
-                           CurrTime) {
-                               /*
-                                * Do NOT send the Trap. The hold back time
-                                * has to run out first.
-                                */
-                               DoTrapSend = SK_FALSE;
-                       }
-
-                       /* Check now whether we have to log an Error */
-                       if (pSen->SenLastWarnLogTS + SK_SEN_WARN_LOG_HOLD >
-                           CurrTime) {
-                               /*
-                                * Do NOT log the error. The hold back time
-                                * has to run out first.
-                                */
-                               DoErrLog = SK_FALSE;
-                       }
-               }
-               else {
-                       /* We came from a different state -> Set Begin Time Stamp */
-                       pSen->SenBegWarnTS = CurrTime;
-                       pSen->SenErrFlag = SK_SEN_ERR_WARN;
-               }
-
-               if (DoTrapSend) {
-                       /* Set current Time */
-                       pSen->SenLastWarnTrapTS = CurrTime;
-                       pSen->SenWarnCts++;
-
-                       /* Queue PNMI Event */
-                       SkEventQueue(pAC, SKGE_PNMI, (TooHigh ?
-                               SK_PNMI_EVT_SEN_WAR_UPP :
-                               SK_PNMI_EVT_SEN_WAR_LOW),
-                               ParaLocal);
-               }
-
-               if (DoErrLog) {
-                       /* Set current Time */
-                       pSen->SenLastWarnLogTS = CurrTime;
-
-                       if (pSen->SenType == SK_SEN_TEMP) {
-                               SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_I2C_E009,
-                                       SKERR_I2C_E009MSG);
-                       } else if (pSen->SenType == SK_SEN_VOLT) {
-                               SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_I2C_E010,
-                                       SKERR_I2C_E010MSG);
-                       } else
-                       {
-                               SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_I2C_E014,
-                                       SKERR_I2C_E014MSG);
-                       }
-               }
-       }
-
-       /* Check for NO error at all */
-       if (!IsError && !TooHigh && !TooLow) {
-               /* Set o.k. Status if no error and no warning condition */
-               pSen->SenErrFlag = SK_SEN_ERR_OK;
-       }
-
-       /* End of check against the thresholds */
-
-       /* Bug fix AF: 16.Aug.2001: Correct the init base
-        * of LM80 sensor.
-        */
-       if (pSen->SenInit == SK_SEN_DYN_INIT_PCI_IO) {
-
-       pSen->SenInit = SK_SEN_DYN_INIT_NONE;
-
-               if (pSen->SenValue > SK_SEN_PCI_IO_RANGE_LIMITER) {
-                       /* 5V PCI-IO Voltage */
-                       pSen->SenThreWarnLow = SK_SEN_PCI_IO_5V_LOW_WARN;
-                       pSen->SenThreErrLow = SK_SEN_PCI_IO_5V_LOW_ERR;
-               }
-               else {
-                       /* 3.3V PCI-IO Voltage */
-                       pSen->SenThreWarnHigh = SK_SEN_PCI_IO_3V3_HIGH_WARN;
-                       pSen->SenThreErrHigh = SK_SEN_PCI_IO_3V3_HIGH_ERR;
-               }
-       }
-
-#if 0
-    /* Dynamic thresholds also for VAUX of LM80 sensor */
-       if (pSen->SenInit == SK_SEN_DYN_INIT_VAUX) {
-
-       pSen->SenInit = SK_SEN_DYN_INIT_NONE;
-
-               /* 3.3V VAUX Voltage */
-               if (pSen->SenValue > SK_SEN_VAUX_RANGE_LIMITER) {
-                       pSen->SenThreWarnLow = SK_SEN_VAUX_3V3_LOW_WARN;
-                       pSen->SenThreErrLow = SK_SEN_VAUX_3V3_LOW_ERR;
-               }
-               /* 0V VAUX Voltage */
-               else {
-                       pSen->SenThreWarnHigh = SK_SEN_VAUX_0V_WARN_ERR;
-                       pSen->SenThreErrHigh = SK_SEN_VAUX_0V_WARN_ERR;
-               }
-       }
-
-       /*
-        * Check initialization state:
-        * The VIO Thresholds need adaption
-        */
-       if (!pSen->SenInit && pSen->SenReg == LM80_VT1_IN &&
-            pSen->SenValue > SK_SEN_WARNLOW2C &&
-            pSen->SenValue < SK_SEN_WARNHIGH2) {
-               pSen->SenThreErrLow = SK_SEN_ERRLOW2C;
-               pSen->SenThreWarnLow = SK_SEN_WARNLOW2C;
-               pSen->SenInit = SK_TRUE;
-       }
-
-       if (!pSen->SenInit && pSen->SenReg == LM80_VT1_IN &&
-            pSen->SenValue > SK_SEN_WARNLOW2 &&
-            pSen->SenValue < SK_SEN_WARNHIGH2C) {
-               pSen->SenThreErrHigh = SK_SEN_ERRHIGH2C;
-               pSen->SenThreWarnHigh = SK_SEN_WARNHIGH2C;
-               pSen->SenInit = SK_TRUE;
-       }
-#endif
-
-       if (pSen->SenInit != SK_SEN_DYN_INIT_NONE) {
-               SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_I2C_E013, SKERR_I2C_E013MSG);
-       }
-}      /* SkI2cCheckSensor*/
-
-
-/*
- * The only Event to be served is the timeout event
- *
- */
-int    SkI2cEvent(
-SK_AC          *pAC,   /* Adapter Context */
-SK_IOC         IoC,    /* I/O Context */
-SK_U32         Event,  /* Module specific Event */
-SK_EVPARA      Para)   /* Event specific Parameter */
-{
-       int                     ReadComplete;
-       SK_SENSOR       *pSen;
-       SK_U32          Time;
-       SK_EVPARA       ParaLocal;
-       int                     i;
-
-       /* New case: no sensors */
-       if (pAC->I2c.MaxSens == 0) {
-               return(0);
-       }
-
-       switch (Event) {
-       case SK_I2CEV_IRQ:
-               pSen = &pAC->I2c.SenTable[pAC->I2c.CurrSens];
-               ReadComplete = SkI2cReadSensor(pAC, IoC, pSen);
-
-               if (ReadComplete) {
-                       /* Check sensor against defined thresholds */
-                       SkI2cCheckSensor (pAC, pSen);
-
-                       /* Increment Current sensor and set appropriate Timeout */
-                       pAC->I2c.CurrSens++;
-                       if (pAC->I2c.CurrSens >= pAC->I2c.MaxSens) {
-                               pAC->I2c.CurrSens = 0;
-                               Time = SK_I2C_TIM_LONG;
-                       }
-                       else {
-                               Time = SK_I2C_TIM_SHORT;
-                       }
-
-                       /* Start Timer */
-                       ParaLocal.Para64 = (SK_U64)0;
-
-                       pAC->I2c.TimerMode = SK_TIMER_NEW_GAUGING;
-
-                       SkTimerStart(pAC, IoC, &pAC->I2c.SenTimer, Time,
-                               SKGE_I2C, SK_I2CEV_TIM, ParaLocal);
-               }
-       else {
-                       /* Start Timer */
-                       ParaLocal.Para64 = (SK_U64)0;
-
-                       pAC->I2c.TimerMode = SK_TIMER_WATCH_STATEMACHINE;
-
-           SkTimerStart(pAC, IoC, &pAC->I2c.SenTimer, SK_I2C_TIM_WATCH,
-                               SKGE_I2C, SK_I2CEV_TIM, ParaLocal);
-               }
-               break;
-       case SK_I2CEV_TIM:
-               if (pAC->I2c.TimerMode == SK_TIMER_NEW_GAUGING) {
-
-                       ParaLocal.Para64 = (SK_U64)0;
-                       SkTimerStop(pAC, IoC, &pAC->I2c.SenTimer);
-
-                       pSen = &pAC->I2c.SenTable[pAC->I2c.CurrSens];
-                       ReadComplete = SkI2cReadSensor(pAC, IoC, pSen);
-
-                       if (ReadComplete) {
-                               /* Check sensor against defined thresholds */
-                               SkI2cCheckSensor (pAC, pSen);
-
-                               /* Increment Current sensor and set appropriate Timeout */
-                               pAC->I2c.CurrSens++;
-                               if (pAC->I2c.CurrSens == pAC->I2c.MaxSens) {
-                                       pAC->I2c.CurrSens = 0;
-                                       Time = SK_I2C_TIM_LONG;
-                               }
-                               else {
-                                       Time = SK_I2C_TIM_SHORT;
-                               }
-
-                               /* Start Timer */
-                               ParaLocal.Para64 = (SK_U64)0;
-
-                               pAC->I2c.TimerMode = SK_TIMER_NEW_GAUGING;
-
-                               SkTimerStart(pAC, IoC, &pAC->I2c.SenTimer, Time,
-                                       SKGE_I2C, SK_I2CEV_TIM, ParaLocal);
-                       }
-               }
-               else {
-                       pSen = &pAC->I2c.SenTable[pAC->I2c.CurrSens];
-                       pSen->SenErrFlag = SK_SEN_ERR_FAULTY;
-                       SK_I2C_STOP(IoC);
-
-                       /* Increment Current sensor and set appropriate Timeout */
-                       pAC->I2c.CurrSens++;
-                       if (pAC->I2c.CurrSens == pAC->I2c.MaxSens) {
-                               pAC->I2c.CurrSens = 0;
-                               Time = SK_I2C_TIM_LONG;
-                       }
-                       else {
-                               Time = SK_I2C_TIM_SHORT;
-                       }
-
-                       /* Start Timer */
-                       ParaLocal.Para64 = (SK_U64)0;
-
-                       pAC->I2c.TimerMode = SK_TIMER_NEW_GAUGING;
-
-                       SkTimerStart(pAC, IoC, &pAC->I2c.SenTimer, Time,
-                               SKGE_I2C, SK_I2CEV_TIM, ParaLocal);
-               }
-               break;
-       case SK_I2CEV_CLEAR:
-               for (i = 0; i < SK_MAX_SENSORS; i++) {
-                       pAC->I2c.SenTable[i].SenErrFlag = SK_SEN_ERR_OK;
-                       pAC->I2c.SenTable[i].SenErrCts = 0;
-                       pAC->I2c.SenTable[i].SenWarnCts = 0;
-                       pAC->I2c.SenTable[i].SenBegErrTS = 0;
-                       pAC->I2c.SenTable[i].SenBegWarnTS = 0;
-                       pAC->I2c.SenTable[i].SenLastErrTrapTS = (SK_U64)0;
-                       pAC->I2c.SenTable[i].SenLastErrLogTS = (SK_U64)0;
-                       pAC->I2c.SenTable[i].SenLastWarnTrapTS = (SK_U64)0;
-                       pAC->I2c.SenTable[i].SenLastWarnLogTS = (SK_U64)0;
-               }
-               break;
-       default:
-               SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_I2C_E006, SKERR_I2C_E006MSG);
-       }
-
-       return(0);
-}      /* SkI2cEvent*/
-
-#endif /* !SK_DIAG */
+/******************************************************************************
+ *
+ * Name:       ski2c.c
+ * Project:    GEnesis, PCI Gigabit Ethernet Adapter
+ * Version:    $Revision: 1.1.1.1 $
+ * Date:       $Date: 2009/03/25 22:22:09 $
+ * Purpose:    Functions to access Voltage and Temperature Sensor
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ *     (C)Copyright 1998-2003 SysKonnect GmbH.
+ *
+ *     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.
+ *
+ *     The information in this file is provided "AS IS" without warranty.
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ * History:
+ *
+ *     $Log: ski2c.c,v $
+ *     Revision 1.1.1.1  2009/03/25 22:22:09  kenagy
+ *     no message
+ *     
+ *     Revision 1.57  2003/01/28 09:17:38  rschmidt
+ *     Fixed handling for sensors on YUKON Fiber.
+ *     Editorial changes.
+ *
+ *     Revision 1.56  2002/12/19 14:20:41  rschmidt
+ *     Added debugging code in SkI2cWait().
+ *     Replaced all I2C-write operations with function SkI2cWrite().
+ *     Fixed compiler warning because of uninitialized 'Time' in SkI2cEvent().
+ *     Editorial changes.
+ *
+ *     Revision 1.55  2002/10/15 07:23:55  rschmidt
+ *     Added setting of the GIYukon32Bit bool variable to distinguish
+ *     32-bit adapters.
+ *     Editorial changes (TWSI).
+ *
+ *     Revision 1.54  2002/08/13 09:05:06  rschmidt
+ *     Added new thresholds if VAUX is not available (GIVauxAvail).
+ *     Merged defines for PHY PLL 3V3 voltage (A and B).
+ *     Editorial changes.
+ *
+ *     Revision 1.53  2002/08/08 11:04:53  rwahl
+ *     Added missing comment for revision 1.51
+ *
+ *     Revision 1.52  2002/08/08 10:09:02  jschmalz
+ *     Sensor init state caused wrong error log entry
+ *
+ *     Revision 1.51  2002/08/06 09:43:03  jschmalz
+ *     Extensions and changes for Yukon
+ *
+ *     Revision 1.50  2002/08/02 12:09:22  rschmidt
+ *     Added support for YUKON sensors.
+ *     Editorial changes.
+ *
+ *     Revision 1.49  2002/07/30 11:07:52  rschmidt
+ *     Replaced MaxSens init by update for Copper in SkI2cInit1(),
+ *     because it was already initialized in SkI2cInit0().
+ *     Editorial changes.
+ *
+ *     Revision 1.48  2001/08/16 12:44:33  afischer
+ *     LM80 sensor init values corrected
+ *
+ *     Revision 1.47  2001/04/05 11:38:09  rassmann
+ *     Set SenState to idle in SkI2cWaitIrq().
+ *     Changed error message in SkI2cWaitIrq().
+ *
+ *     Revision 1.46  2001/04/02 14:03:35  rassmann
+ *     Changed pAC to IoC in SK_IN32().
+ *
+ *     Revision 1.45  2001/03/21 12:12:49  rassmann
+ *     Resetting I2C_READY interrupt in SkI2cInit1().
+ *
+ *     Revision 1.44  2000/08/07 15:49:03  gklug
+ *     Fix: SK_INFAST only in NetWare driver.
+ *
+ *     Revision 1.43  2000/08/03 14:28:17  rassmann
+ *     Added function to wait for I2C being ready before resetting the board.
+ *     Replaced one duplicate "out of range" message with correct one.
+ *
+ *     Revision 1.42  1999/11/22 13:35:12  cgoos
+ *     Changed license header to GPL.
+ *
+ *     Revision 1.41  1999/09/14 14:11:30  malthoff
+ *     The 1000BT Dual Link adapter has got only one Fan.
+ *     The second Fan has been removed.
+ *
+ *     Revision 1.40  1999/05/27 13:37:27  malthoff
+ *     Set divisor of 1 for fan count calculation.
+ *
+ *     Revision 1.39  1999/05/20 14:54:43  malthoff
+ *     I2c.DummyReads is not used in Diagnostics.
+ *
+ *     Revision 1.38  1999/05/20 09:20:56  cgoos
+ *     Changes for 1000Base-T (up to 9 sensors and fans).
+ *
+ *     Revision 1.37  1999/03/25 15:11:36  gklug
+ *     fix: reset error flag if sensor reads correct value
+ *
+ *     Revision 1.36  1999/01/07 14:11:16  gklug
+ *     fix: break added
+ *
+ *     Revision 1.35  1999/01/05 15:31:49  gklug
+ *     fix: CLEAR STAT command is now added correctly
+ *
+ *     Revision 1.34  1998/12/01 13:45:16  gklug
+ *     fix: introduced Init level, because we don't need reinits
+ *
+ *     Revision 1.33  1998/11/09 14:54:25  malthoff
+ *     Modify I2C Transfer Timeout handling for Diagnostics.
+ *
+ *     Revision 1.32  1998/11/03 06:54:35  gklug
+ *     fix: Need dummy reads at the beginning to init sensors
+ *
+ *     Revision 1.31  1998/11/03 06:42:42  gklug
+ *     fix: select correctVIO range only if between warning levels
+ *
+ *     Revision 1.30  1998/11/02 07:36:53  gklug
+ *     fix: Error should not include WARNING message
+ *
+ *     Revision 1.29  1998/10/30 15:07:43  malthoff
+ *     Disable 'I2C does not compelete' error log for diagnostics.
+ *
+ *     Revision 1.28  1998/10/22 09:48:11  gklug
+ *     fix: SysKonnectFileId typo
+ *
+ *     Revision 1.27  1998/10/20 09:59:46  gklug
+ *     add: parameter to SkOsGetTime
+ *
+ *     Revision 1.26  1998/10/09 06:10:59  malthoff
+ *     Remove ID_sccs by SysKonnectFileId.
+ *
+ *     Revision 1.25  1998/09/08 12:40:26  gklug
+ *     fix: syntax error in if clause
+ *
+ *     Revision 1.24  1998/09/08 12:19:42  gklug
+ *     chg: INIT Level checking
+ *
+ *     Revision 1.23  1998/09/08 07:37:20  gklug
+ *     fix: log error if PCI_IO voltage sensor could not be initialized
+ *
+ *     Revision 1.22  1998/09/04 08:30:03  malthoff
+ *     Bugfixes during SK_DIAG testing:
+ *     - correct NS2BCLK() macro
+ *     - correct SkI2cSndDev()
+ *     - correct SkI2cWait() loop waiting for an event
+ *
+ *     Revision 1.21  1998/08/27 14:46:01  gklug
+ *     chg: if-then-else replaced by switch
+ *
+ *     Revision 1.20  1998/08/27 14:40:07  gklug
+ *     test: integral types
+ *
+ *     Revision 1.19  1998/08/25 07:51:54  gklug
+ *     fix: typos for compiling
+ *
+ *     Revision 1.18  1998/08/25 06:12:24  gklug
+ *     add: count errors and warnings
+ *     fix: check not the sensor state but the ErrFlag!
+ *
+ *     Revision 1.17  1998/08/25 05:56:48  gklug
+ *     add: CheckSensor function
+ *
+ *     Revision 1.16  1998/08/20 11:41:10  gklug
+ *     chg: omit STRCPY macro by using char * as Sensor Description
+ *
+ *     Revision 1.15  1998/08/20 11:37:35  gklug
+ *     chg: change Ioc to IoC
+ *
+ *     Revision 1.14  1998/08/20 11:32:52  gklug
+ *     fix: Para compile error
+ *
+ *     Revision 1.13  1998/08/20 11:27:41  gklug
+ *     fix: Compile bugs with new awrning constants
+ *
+ *     Revision 1.12  1998/08/20 08:53:05  gklug
+ *     fix: compiler errors
+ *     add: Threshold values
+ *
+ *     Revision 1.11  1998/08/19 12:39:22  malthoff
+ *     Compiler Fix: Some names have changed.
+ *
+ *     Revision 1.10  1998/08/19 12:20:56  gklug
+ *     fix: remove struct from C files (see CCC)
+ *
+ *     Revision 1.9  1998/08/19 06:28:46  malthoff
+ *     SkOsGetTime returns SK_U64 now.
+ *
+ *     Revision 1.8  1998/08/17 13:53:33  gklug
+ *     fix: Parameter of event function and its result
+ *
+ *     Revision 1.7  1998/08/17 07:02:15  malthoff
+ *     Modify the functions for accessing the I2C SW Registers.
+ *     Modify SkI2cWait().
+ *     Put Lm80RcvReg into sklm80.c
+ *     Remove Compiler Errors.
+ *
+ *     Revision 1.6  1998/08/14 07:13:20  malthoff
+ *     remove pAc with pAC
+ *     remove smc with pAC
+ *     change names to new convention
+ *
+ *     Revision 1.5  1998/08/14 06:24:49  gklug
+ *     add: init level 1 and 2
+ *
+ *     Revision 1.4  1998/08/12 14:31:12  gklug
+ *     add: error log for unknown event
+ *
+ *     Revision 1.3  1998/08/12 13:37:04  gklug
+ *     add: Init 0 function
+ *
+ *     Revision 1.2  1998/08/11 07:27:15  gklug
+ *     add: functions of the interface
+ *     adapt rest of source to C coding Conventions
+ *     rmv: unnecessary code taken from Mona Lisa
+ *
+ *     Revision 1.1  1998/06/19 14:28:43  malthoff
+ *     Created. Sources taken from ML Projekt.
+ *     Sources have to be reworked for GE.
+ *
+ *
+ ******************************************************************************/
+
+
+#include <config.h>
+
+/*
+ *     I2C Protocol
+ */
+static const char SysKonnectFileId[] =
+       "$Id: ski2c.c,v 1.1.1.1 2009/03/25 22:22:09 kenagy Exp $";
+
+#include "h/skdrv1st.h"                /* Driver Specific Definitions */
+#include "h/lm80.h"
+#include "h/skdrv2nd.h"                /* Adapter Control- and Driver specific Def. */
+
+#ifdef __C2MAN__
+/*
+       I2C protocol implementation.
+
+       General Description:
+
+       The I2C protocol is used for the temperature sensors and for
+       the serial EEPROM which hold the configuration.
+
+       This file covers functions that allow to read write and do
+       some bulk requests a specified I2C address.
+
+       The Genesis has 2 I2C buses. One for the EEPROM which holds
+       the VPD Data and one for temperature and voltage sensor.
+       The following picture shows the I2C buses, I2C devices and
+       their control registers.
+
+       Note: The VPD functions are in skvpd.c
+.
+.      PCI Config I2C Bus for VPD Data:
+.
+.                    +------------+
+.                    | VPD EEPROM |
+.                    +------------+
+.                           |
+.                           | <-- I2C
+.                           |
+.               +-----------+-----------+
+.               |                       |
+.      +-----------------+     +-----------------+
+.      | PCI_VPD_ADR_REG |     | PCI_VPD_DAT_REG |
+.      +-----------------+     +-----------------+
+.
+.
+.      I2C Bus for LM80 sensor:
+.
+.                      +-----------------+
+.                      | Temperature and |
+.                      | Voltage Sensor  |
+.                      |       LM80      |
+.                      +-----------------+
+.                              |
+.                              |
+.                      I2C --> |
+.                              |
+.                           +----+
+.           +-------------->| OR |<--+
+.           |               +----+   |
+.     +------+------+                |
+.     |                    |                 |
+. +--------+   +--------+      +----------+
+. | B2_I2C |   | B2_I2C |      |  B2_I2C  |
+. | _CTRL  |   | _DATA  |      |   _SW    |
+. +--------+   +--------+      +----------+
+.
+       The I2C bus may be driven by the B2_I2C_SW or by the B2_I2C_CTRL
+       and B2_I2C_DATA registers.
+       For driver software it is recommended to use the I2C control and
+       data register, because I2C bus timing is done by the ASIC and
+       an interrupt may be received when the I2C request is completed.
+
+       Clock Rate Timing:                      MIN     MAX     generated by
+               VPD EEPROM:                     50 kHz  100 kHz         HW
+               LM80 over I2C Ctrl/Data reg.    50 kHz  100 kHz         HW
+               LM80 over B2_I2C_SW register    0        400 kHz         SW
+
+       Note:   The clock generated by the hardware is dependend on the
+               PCI clock. If the PCI bus clock is 33 MHz, the I2C/VPD
+               clock is 50 kHz.
+ */
+intro()
+{}
+#endif
+
+#ifdef SK_DIAG
+/*
+ * I2C Fast Mode timing values used by the LM80.
+ * If new devices are added to the I2C bus the timing values have to be checked.
+ */
+#ifndef I2C_SLOW_TIMING
+#define        T_CLK_LOW                       1300L   /* clock low time in ns */
+#define        T_CLK_HIGH                       600L   /* clock high time in ns */
+#define T_DATA_IN_SETUP                 100L   /* data in Set-up Time */
+#define T_START_HOLD            600L   /* start condition hold time */
+#define T_START_SETUP           600L   /* start condition Set-up time */
+#define        T_STOP_SETUP             600L   /* stop condition Set-up time */
+#define T_BUS_IDLE                     1300L   /* time the bus must free after Tx */
+#define        T_CLK_2_DATA_OUT         900L   /* max. clock low to data output valid */
+#else  /* I2C_SLOW_TIMING */
+/* I2C Standard Mode Timing */
+#define        T_CLK_LOW                       4700L   /* clock low time in ns */
+#define        T_CLK_HIGH                      4000L   /* clock high time in ns */
+#define T_DATA_IN_SETUP                 250L   /* data in Set-up Time */
+#define T_START_HOLD           4000L   /* start condition hold time */
+#define T_START_SETUP          4700L   /* start condition Set-up time */
+#define        T_STOP_SETUP            4000L   /* stop condition Set-up time */
+#define T_BUS_IDLE                     4700L   /* time the bus must free after Tx */
+#endif /* !I2C_SLOW_TIMING */
+
+#define NS2BCLK(x)     (((x)*125)/10000)
+
+/*
+ * I2C Wire Operations
+ *
+ * About I2C_CLK_LOW():
+ *
+ * The Data Direction bit (I2C_DATA_DIR) has to be set to input when setting
+ * clock to low, to prevent the ASIC and the I2C data client from driving the
+ * serial data line simultaneously (ASIC: last bit of a byte = '1', I2C client
+ * send an 'ACK'). See also Concentrator Bugreport No. 10192.
+ */
+#define I2C_DATA_HIGH(IoC)     SK_I2C_SET_BIT(IoC, I2C_DATA)
+#define        I2C_DATA_LOW(IoC)       SK_I2C_CLR_BIT(IoC, I2C_DATA)
+#define        I2C_DATA_OUT(IoC)       SK_I2C_SET_BIT(IoC, I2C_DATA_DIR)
+#define        I2C_DATA_IN(IoC)        SK_I2C_CLR_BIT(IoC, I2C_DATA_DIR | I2C_DATA)
+#define        I2C_CLK_HIGH(IoC)       SK_I2C_SET_BIT(IoC, I2C_CLK)
+#define        I2C_CLK_LOW(IoC)        SK_I2C_CLR_BIT(IoC, I2C_CLK | I2C_DATA_DIR)
+#define        I2C_START_COND(IoC)     SK_I2C_CLR_BIT(IoC, I2C_CLK)
+
+#define NS2CLKT(x)     ((x*125L)/10000)
+
+/*--------------- I2C Interface Register Functions --------------- */
+
+/*
+ * sending one bit
+ */
+void SkI2cSndBit(
+SK_IOC IoC,    /* I/O Context */
+SK_U8  Bit)    /* Bit to send */
+{
+       I2C_DATA_OUT(IoC);
+       if (Bit) {
+               I2C_DATA_HIGH(IoC);
+       }
+       else {
+               I2C_DATA_LOW(IoC);
+       }
+       SkDgWaitTime(IoC, NS2BCLK(T_DATA_IN_SETUP));
+       I2C_CLK_HIGH(IoC);
+       SkDgWaitTime(IoC, NS2BCLK(T_CLK_HIGH));
+       I2C_CLK_LOW(IoC);
+}      /* SkI2cSndBit*/
+
+
+/*
+ * Signal a start to the I2C Bus.
+ *
+ * A start is signaled when data goes to low in a high clock cycle.
+ *
+ * Ends with Clock Low.
+ *
+ * Status: not tested
+ */
+void SkI2cStart(
+SK_IOC IoC)    /* I/O Context */
+{
+       /* Init data and Clock to output lines */
+       /* Set Data high */
+       I2C_DATA_OUT(IoC);
+       I2C_DATA_HIGH(IoC);
+       /* Set Clock high */
+       I2C_CLK_HIGH(IoC);
+
+       SkDgWaitTime(IoC, NS2BCLK(T_START_SETUP));
+
+       /* Set Data Low */
+       I2C_DATA_LOW(IoC);
+
+       SkDgWaitTime(IoC, NS2BCLK(T_START_HOLD));
+
+       /* Clock low without Data to Input */
+       I2C_START_COND(IoC);
+
+       SkDgWaitTime(IoC, NS2BCLK(T_CLK_LOW));
+}      /* SkI2cStart */
+
+
+void SkI2cStop(
+SK_IOC IoC)    /* I/O Context */
+{
+       /* Init data and Clock to output lines */
+       /* Set Data low */
+       I2C_DATA_OUT(IoC);
+       I2C_DATA_LOW(IoC);
+
+       SkDgWaitTime(IoC, NS2BCLK(T_CLK_2_DATA_OUT));
+
+       /* Set Clock high */
+       I2C_CLK_HIGH(IoC);
+
+       SkDgWaitTime(IoC, NS2BCLK(T_STOP_SETUP));
+
+       /*
+        * Set Data High:       Do it by setting the Data Line to Input.
+        *                      Because of a pull up resistor the Data Line
+        *                      floods to high.
+        */
+       I2C_DATA_IN(IoC);
+
+       /*
+        *      When I2C activity is stopped
+        *       o      DATA should be set to input and
+        *       o      CLOCK should be set to high!
+        */
+       SkDgWaitTime(IoC, NS2BCLK(T_BUS_IDLE));
+}      /* SkI2cStop */
+
+
+/*
+ * Receive just one bit via the I2C bus.
+ *
+ * Note:       Clock must be set to LOW before calling this function.
+ *
+ * Returns The received bit.
+ */
+int SkI2cRcvBit(
+SK_IOC IoC)    /* I/O Context */
+{
+       int     Bit;
+       SK_U8   I2cSwCtrl;
+
+       /* Init data as input line */
+       I2C_DATA_IN(IoC);
+
+       SkDgWaitTime(IoC, NS2BCLK(T_CLK_2_DATA_OUT));
+
+       I2C_CLK_HIGH(IoC);
+
+       SkDgWaitTime(IoC, NS2BCLK(T_CLK_HIGH));
+
+       SK_I2C_GET_SW(IoC, &I2cSwCtrl);
+
+       Bit = (I2cSwCtrl & I2C_DATA) ? 1 : 0;
+
+       I2C_CLK_LOW(IoC);
+       SkDgWaitTime(IoC, NS2BCLK(T_CLK_LOW-T_CLK_2_DATA_OUT));
+
+       return(Bit);
+}      /* SkI2cRcvBit */
+
+
+/*
+ * Receive an ACK.
+ *
+ * returns     0 If acknowledged
+ *             1 in case of an error
+ */
+int SkI2cRcvAck(
+SK_IOC IoC)    /* I/O Context */
+{
+       /*
+        * Received bit must be zero.
+        */
+       return(SkI2cRcvBit(IoC) != 0);
+}      /* SkI2cRcvAck */
+
+
+/*
+ * Send an NACK.
+ */
+void SkI2cSndNAck(
+SK_IOC IoC)    /* I/O Context */
+{
+       /*
+        * Received bit must be zero.
+        */
+       SkI2cSndBit(IoC, 1);
+}      /* SkI2cSndNAck */
+
+
+/*
+ * Send an ACK.
+ */
+void SkI2cSndAck(
+SK_IOC IoC)    /* I/O Context */
+{
+       /*
+        * Received bit must be zero.
+        *
+        */
+       SkI2cSndBit(IoC, 0);
+}      /* SkI2cSndAck */
+
+
+/*
+ * Send one byte to the I2C device and wait for ACK.
+ *
+ * Return acknowleged status.
+ */
+int SkI2cSndByte(
+SK_IOC IoC,    /* I/O Context */
+int            Byte)   /* byte to send */
+{
+       int     i;
+
+       for (i = 0; i < 8; i++) {
+               if (Byte & (1<<(7-i))) {
+                       SkI2cSndBit(IoC, 1);
+               }
+               else {
+                       SkI2cSndBit(IoC, 0);
+               }
+       }
+
+       return(SkI2cRcvAck(IoC));
+}      /* SkI2cSndByte */
+
+
+/*
+ * Receive one byte and ack it.
+ *
+ * Return byte.
+ */
+int SkI2cRcvByte(
+SK_IOC IoC,    /* I/O Context */
+int            Last)   /* Last Byte Flag */
+{
+       int     i;
+       int     Byte = 0;
+
+       for (i = 0; i < 8; i++) {
+               Byte <<= 1;
+               Byte |= SkI2cRcvBit(IoC);
+       }
+
+       if (Last) {
+               SkI2cSndNAck(IoC);
+       }
+       else {
+               SkI2cSndAck(IoC);
+       }
+
+       return(Byte);
+}      /* SkI2cRcvByte */
+
+
+/*
+ * Start dialog and send device address
+ *
+ * Return 0 if acknowleged, 1 in case of an error
+ */
+int    SkI2cSndDev(
+SK_IOC IoC,    /* I/O Context */
+int            Addr,   /* Device Address */
+int            Rw)             /* Read / Write Flag */
+{
+       SkI2cStart(IoC);
+       Rw = ~Rw;
+       Rw &= I2C_WRITE;
+       return(SkI2cSndByte(IoC, (Addr<<1) | Rw));
+}      /* SkI2cSndDev */
+
+#endif /* SK_DIAG */
+
+/*----------------- I2C CTRL Register Functions ----------*/
+
+/*
+ * waits for a completion of an I2C transfer
+ *
+ * returns     0:      success, transfer completes
+ *                     1:      error,   transfer does not complete, I2C transfer
+ *                                              killed, wait loop terminated.
+ */
+int    SkI2cWait(
+SK_AC  *pAC,   /* Adapter Context */
+SK_IOC IoC,    /* I/O Context */
+int            Event)  /* complete event to wait for (I2C_READ or I2C_WRITE) */
+{
+       SK_U64  StartTime;
+       SK_U64  CurrentTime;
+       SK_U32  I2cCtrl;
+
+       StartTime = SkOsGetTime(pAC);
+
+       do {
+               CurrentTime = SkOsGetTime(pAC);
+
+               if (CurrentTime - StartTime > SK_TICKS_PER_SEC / 8) {
+
+                       SK_I2C_STOP(IoC);
+#ifndef SK_DIAG
+                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_I2C_E002, SKERR_I2C_E002MSG);
+#endif /* !SK_DIAG */
+                       return(1);
+               }
+
+               SK_I2C_GET_CTL(IoC, &I2cCtrl);
+
+#ifdef xYUKON_DBG
+               printf("StartTime=%lu, CurrentTime=%lu\n",
+                       StartTime, CurrentTime);
+               if (kbhit()) {
+                       return(1);
+               }
+#endif /* YUKON_DBG */
+
+       } while ((I2cCtrl & I2C_FLAG) == (SK_U32)Event << 31);
+
+       return(0);
+}      /* SkI2cWait */
+
+
+/*
+ * waits for a completion of an I2C transfer
+ *
+ * Returns
+ *     Nothing
+ */
+void SkI2cWaitIrq(
+SK_AC  *pAC,   /* Adapter Context */
+SK_IOC IoC)    /* I/O Context */
+{
+       SK_SENSOR       *pSen;
+       SK_U64          StartTime;
+       SK_U32          IrqSrc;
+
+       pSen = &pAC->I2c.SenTable[pAC->I2c.CurrSens];
+
+       if (pSen->SenState == SK_SEN_IDLE) {
+               return;
+       }
+
+       StartTime = SkOsGetTime(pAC);
+       do {
+               if (SkOsGetTime(pAC) - StartTime > SK_TICKS_PER_SEC / 8) {
+                       SK_I2C_STOP(IoC);
+#ifndef SK_DIAG
+                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_I2C_E016, SKERR_I2C_E016MSG);
+#endif /* !SK_DIAG */
+                       return;
+               }
+               SK_IN32(IoC, B0_ISRC, &IrqSrc);
+       } while ((IrqSrc & IS_I2C_READY) == 0);
+
+       pSen->SenState = SK_SEN_IDLE;
+       return;
+}      /* SkI2cWaitIrq */
+
+/*
+ * writes a single byte or 4 bytes into the I2C device
+ *
+ * returns     0:      success
+ *                     1:      error
+ */
+int SkI2cWrite(
+SK_AC  *pAC,           /* Adapter Context */
+SK_IOC IoC,            /* I/O Context */
+SK_U32 I2cData,        /* I2C Data to write */
+int            I2cDev,         /* I2C Device Address */
+int            I2cReg,         /* I2C Device Register Address */
+int            I2cBurst)       /* I2C Burst Flag */
+{
+       SK_OUT32(IoC, B2_I2C_DATA, I2cData);
+       SK_I2C_CTL(IoC, I2C_WRITE, I2cDev, I2cReg, I2cBurst);
+
+       return(SkI2cWait(pAC, IoC, I2C_WRITE));
+}      /* SkI2cWrite*/
+
+
+#ifdef SK_DIAG
+
+/*
+ * reads a single byte or 4 bytes from the I2C device
+ *
+ * returns     the word read
+ */
+SK_U32 SkI2cRead(
+SK_AC  *pAC,           /* Adapter Context */
+SK_IOC IoC,            /* I/O Context */
+int            I2cDev,         /* I2C Device Address */
+int            I2cReg,         /* I2C Device Register Address */
+int            I2cBurst)       /* I2C Burst Flag */
+{
+       SK_U32  Data;
+
+       SK_OUT32(IoC, B2_I2C_DATA, 0);
+       SK_I2C_CTL(IoC, I2C_READ, I2cDev, I2cReg, I2cBurst);
+
+       if (SkI2cWait(pAC, IoC, I2C_READ) != 0) {
+               w_print("%s\n", SKERR_I2C_E002MSG);
+       }
+
+       SK_IN32(IoC, B2_I2C_DATA, &Data);
+       return(Data);
+}      /* SkI2cRead */
+
+#endif /* SK_DIAG */
+
+
+/*
+ * read a sensor's value
+ *
+ * This function reads a sensor's value from the I2C sensor chip. The sensor
+ * is defined by its index into the sensors database in the struct pAC points
+ * to.
+ * Returns
+ *             1 if the read is completed
+ *             0 if the read must be continued (I2C Bus still allocated)
+ */
+int    SkI2cReadSensor(
+SK_AC          *pAC,   /* Adapter Context */
+SK_IOC         IoC,    /* I/O Context */
+SK_SENSOR      *pSen)  /* Sensor to be read */
+{
+    if (pSen->SenRead != NULL) {
+       return((*pSen->SenRead)(pAC, IoC, pSen));
+    }
+    else
+       return(0); /* no success */
+}      /* SkI2cReadSensor*/
+
+/*
+ * Do the Init state 0 initialization
+ */
+static int SkI2cInit0(
+SK_AC  *pAC)   /* Adapter Context */
+{
+       int     i;
+
+       /* Begin with first sensor */
+       pAC->I2c.CurrSens = 0;
+
+       /* Begin with timeout control for state machine */
+       pAC->I2c.TimerMode = SK_TIMER_WATCH_STATEMACHINE;
+
+       /* Set sensor number to zero */
+       pAC->I2c.MaxSens = 0;
+
+#ifndef        SK_DIAG
+       /* Initialize Number of Dummy Reads */
+       pAC->I2c.DummyReads = SK_MAX_SENSORS;
+#endif
+
+       for (i = 0; i < SK_MAX_SENSORS; i++) {
+               pAC->I2c.SenTable[i].SenDesc = "unknown";
+               pAC->I2c.SenTable[i].SenType = SK_SEN_UNKNOWN;
+               pAC->I2c.SenTable[i].SenThreErrHigh = 0;
+               pAC->I2c.SenTable[i].SenThreErrLow = 0;
+               pAC->I2c.SenTable[i].SenThreWarnHigh = 0;
+               pAC->I2c.SenTable[i].SenThreWarnLow = 0;
+               pAC->I2c.SenTable[i].SenReg = LM80_FAN2_IN;
+               pAC->I2c.SenTable[i].SenInit = SK_SEN_DYN_INIT_NONE;
+               pAC->I2c.SenTable[i].SenValue = 0;
+               pAC->I2c.SenTable[i].SenErrFlag = SK_SEN_ERR_NOT_PRESENT;
+               pAC->I2c.SenTable[i].SenErrCts = 0;
+               pAC->I2c.SenTable[i].SenBegErrTS = 0;
+               pAC->I2c.SenTable[i].SenState = SK_SEN_IDLE;
+               pAC->I2c.SenTable[i].SenRead = NULL;
+               pAC->I2c.SenTable[i].SenDev = 0;
+       }
+
+       /* Now we are "INIT data"ed */
+       pAC->I2c.InitLevel = SK_INIT_DATA;
+       return(0);
+}      /* SkI2cInit0*/
+
+
+/*
+ * Do the init state 1 initialization
+ *
+ * initialize the following register of the LM80:
+ * Configuration register:
+ * - START, noINT, activeLOW, noINT#Clear, noRESET, noCI, noGPO#, noINIT
+ *
+ * Interrupt Mask Register 1:
+ * - all interrupts are Disabled (0xff)
+ *
+ * Interrupt Mask Register 2:
+ * - all interrupts are Disabled (0xff) Interrupt modi doesn't matter.
+ *
+ * Fan Divisor/RST_OUT register:
+ * - Divisors set to 1 (bits 00), all others 0s.
+ *
+ * OS# Configuration/Temperature resolution Register:
+ * - all 0s
+ *
+ */
+static int SkI2cInit1(
+SK_AC  *pAC,   /* Adapter Context */
+SK_IOC IoC)    /* I/O Context */
+{
+    int i;
+    SK_U8 I2cSwCtrl;
+       SK_GEPORT *pPrt;        /* GIni Port struct pointer */
+
+       if (pAC->I2c.InitLevel != SK_INIT_DATA) {
+               /* ReInit not needed in I2C module */
+               return(0);
+       }
+
+    /* Set the Direction of I2C-Data Pin to IN */
+    SK_I2C_CLR_BIT(IoC, I2C_DATA_DIR | I2C_DATA);
+    /* Check for 32-Bit Yukon with Low at I2C-Data Pin */
+       SK_I2C_GET_SW(IoC, &I2cSwCtrl);
+
+       if ((I2cSwCtrl & I2C_DATA) == 0) {
+               /* this is a 32-Bit board */
+               pAC->GIni.GIYukon32Bit = SK_TRUE;
+       return(0);
+    }
+
+       /* Check for 64 Bit Yukon without sensors */
+       if (SkI2cWrite(pAC, IoC, 0, LM80_ADDR, LM80_CFG, 0) != 0) {
+       return(0);
+    }
+
+       (void)SkI2cWrite(pAC, IoC, 0xff, LM80_ADDR, LM80_IMSK_1, 0);
+
+       (void)SkI2cWrite(pAC, IoC, 0xff, LM80_ADDR, LM80_IMSK_2, 0);
+
+       (void)SkI2cWrite(pAC, IoC, 0, LM80_ADDR, LM80_FAN_CTRL, 0);
+
+       (void)SkI2cWrite(pAC, IoC, 0, LM80_ADDR, LM80_TEMP_CTRL, 0);
+
+       (void)SkI2cWrite(pAC, IoC, LM80_CFG_START, LM80_ADDR, LM80_CFG, 0);
+
+       /*
+        * MaxSens has to be updated here, because PhyType is not
+        * set when performing Init Level 0
+        */
+    pAC->I2c.MaxSens = 5;
+
+       pPrt = &pAC->GIni.GP[0];
+
+       if (pAC->GIni.GIGenesis) {
+               if (pPrt->PhyType == SK_PHY_BCOM) {
+                       if (pAC->GIni.GIMacsFound == 1) {
+                               pAC->I2c.MaxSens += 1;
+                       }
+                       else {
+                               pAC->I2c.MaxSens += 3;
+                       }
+               }
+       }
+       else {
+               pAC->I2c.MaxSens += 3;
+       }
+
+       for (i = 0; i < pAC->I2c.MaxSens; i++) {
+               switch (i) {
+               case 0:
+                       pAC->I2c.SenTable[i].SenDesc = "Temperature";
+                       pAC->I2c.SenTable[i].SenType = SK_SEN_TEMP;
+                       pAC->I2c.SenTable[i].SenThreErrHigh = SK_SEN_TEMP_HIGH_ERR;
+                       pAC->I2c.SenTable[i].SenThreWarnHigh = SK_SEN_TEMP_HIGH_WARN;
+                       pAC->I2c.SenTable[i].SenThreWarnLow = SK_SEN_TEMP_LOW_WARN;
+                       pAC->I2c.SenTable[i].SenThreErrLow = SK_SEN_TEMP_LOW_ERR;
+                       pAC->I2c.SenTable[i].SenReg = LM80_TEMP_IN;
+                       break;
+               case 1:
+                       pAC->I2c.SenTable[i].SenDesc = "Voltage PCI";
+                       pAC->I2c.SenTable[i].SenType = SK_SEN_VOLT;
+                       pAC->I2c.SenTable[i].SenThreErrHigh = SK_SEN_PCI_5V_HIGH_ERR;
+                       pAC->I2c.SenTable[i].SenThreWarnHigh = SK_SEN_PCI_5V_HIGH_WARN;
+                       pAC->I2c.SenTable[i].SenThreWarnLow = SK_SEN_PCI_5V_LOW_WARN;
+                       pAC->I2c.SenTable[i].SenThreErrLow = SK_SEN_PCI_5V_LOW_ERR;
+                       pAC->I2c.SenTable[i].SenReg = LM80_VT0_IN;
+                       break;
+               case 2:
+                       pAC->I2c.SenTable[i].SenDesc = "Voltage PCI-IO";
+                       pAC->I2c.SenTable[i].SenType = SK_SEN_VOLT;
+                       pAC->I2c.SenTable[i].SenThreErrHigh = SK_SEN_PCI_IO_5V_HIGH_ERR;
+                       pAC->I2c.SenTable[i].SenThreWarnHigh = SK_SEN_PCI_IO_5V_HIGH_WARN;
+                       pAC->I2c.SenTable[i].SenThreWarnLow = SK_SEN_PCI_IO_3V3_LOW_WARN;
+                       pAC->I2c.SenTable[i].SenThreErrLow = SK_SEN_PCI_IO_3V3_LOW_ERR;
+                       pAC->I2c.SenTable[i].SenReg = LM80_VT1_IN;
+                       pAC->I2c.SenTable[i].SenInit = SK_SEN_DYN_INIT_PCI_IO;
+                       break;
+               case 3:
+                       pAC->I2c.SenTable[i].SenDesc = "Voltage ASIC";
+                       pAC->I2c.SenTable[i].SenType = SK_SEN_VOLT;
+                       pAC->I2c.SenTable[i].SenThreErrHigh = SK_SEN_VDD_HIGH_ERR;
+                       pAC->I2c.SenTable[i].SenThreWarnHigh = SK_SEN_VDD_HIGH_WARN;
+                       pAC->I2c.SenTable[i].SenThreWarnLow = SK_SEN_VDD_LOW_WARN;
+                       pAC->I2c.SenTable[i].SenThreErrLow = SK_SEN_VDD_LOW_ERR;
+                       pAC->I2c.SenTable[i].SenReg = LM80_VT2_IN;
+                       break;
+               case 4:
+                       if (pAC->GIni.GIGenesis) {
+                               if (pPrt->PhyType == SK_PHY_BCOM) {
+                                       pAC->I2c.SenTable[i].SenDesc = "Voltage PHY A PLL";
+                                       pAC->I2c.SenTable[i].SenThreErrHigh = SK_SEN_PLL_3V3_HIGH_ERR;
+                                       pAC->I2c.SenTable[i].SenThreWarnHigh = SK_SEN_PLL_3V3_HIGH_WARN;
+                                       pAC->I2c.SenTable[i].SenThreWarnLow = SK_SEN_PLL_3V3_LOW_WARN;
+                                       pAC->I2c.SenTable[i].SenThreErrLow = SK_SEN_PLL_3V3_LOW_ERR;
+                               }
+                               else {
+                                       pAC->I2c.SenTable[i].SenDesc = "Voltage PMA";
+                                       pAC->I2c.SenTable[i].SenThreErrHigh = SK_SEN_PLL_3V3_HIGH_ERR;
+                                       pAC->I2c.SenTable[i].SenThreWarnHigh = SK_SEN_PLL_3V3_HIGH_WARN;
+                                       pAC->I2c.SenTable[i].SenThreWarnLow = SK_SEN_PLL_3V3_LOW_WARN;
+                                       pAC->I2c.SenTable[i].SenThreErrLow = SK_SEN_PLL_3V3_LOW_ERR;
+                               }
+                       }
+                       else {
+                               pAC->I2c.SenTable[i].SenDesc = "Voltage VAUX";
+                               pAC->I2c.SenTable[i].SenThreErrHigh = SK_SEN_VAUX_3V3_HIGH_ERR;
+                               pAC->I2c.SenTable[i].SenThreWarnHigh = SK_SEN_VAUX_3V3_HIGH_WARN;
+                               if (pAC->GIni.GIVauxAvail) {
+                                       pAC->I2c.SenTable[i].SenThreWarnLow = SK_SEN_VAUX_3V3_LOW_WARN;
+                                       pAC->I2c.SenTable[i].SenThreErrLow = SK_SEN_VAUX_3V3_LOW_ERR;
+                               }
+                               else {
+                                       pAC->I2c.SenTable[i].SenThreErrLow = SK_SEN_VAUX_0V_WARN_ERR;
+                                       pAC->I2c.SenTable[i].SenThreWarnLow = SK_SEN_VAUX_0V_WARN_ERR;
+                               }
+                       }
+                       pAC->I2c.SenTable[i].SenType = SK_SEN_VOLT;
+                       pAC->I2c.SenTable[i].SenReg = LM80_VT3_IN;
+                       break;
+               case 5:
+                       if (pAC->GIni.GIGenesis) {
+                               pAC->I2c.SenTable[i].SenDesc = "Voltage PHY 2V5";
+                               pAC->I2c.SenTable[i].SenThreErrHigh = SK_SEN_PHY_2V5_HIGH_ERR;
+                               pAC->I2c.SenTable[i].SenThreWarnHigh = SK_SEN_PHY_2V5_HIGH_WARN;
+                               pAC->I2c.SenTable[i].SenThreWarnLow = SK_SEN_PHY_2V5_LOW_WARN;
+                               pAC->I2c.SenTable[i].SenThreErrLow = SK_SEN_PHY_2V5_LOW_ERR;
+                       }
+                       else {
+                               pAC->I2c.SenTable[i].SenDesc = "Voltage ASIC-Co 1V5";
+                               pAC->I2c.SenTable[i].SenThreErrHigh = SK_SEN_CORE_1V5_HIGH_ERR;
+                               pAC->I2c.SenTable[i].SenThreWarnHigh = SK_SEN_CORE_1V5_HIGH_WARN;
+                               pAC->I2c.SenTable[i].SenThreWarnLow = SK_SEN_CORE_1V5_LOW_WARN;
+                               pAC->I2c.SenTable[i].SenThreErrLow = SK_SEN_CORE_1V5_LOW_ERR;
+                       }
+                       pAC->I2c.SenTable[i].SenType = SK_SEN_VOLT;
+                       pAC->I2c.SenTable[i].SenReg = LM80_VT4_IN;
+                       break;
+               case 6:
+                       if (pAC->GIni.GIGenesis) {
+                               pAC->I2c.SenTable[i].SenDesc = "Voltage PHY B PLL";
+                       }
+                       else {
+                               pAC->I2c.SenTable[i].SenDesc = "Voltage PHY 3V3";
+                       }
+                       pAC->I2c.SenTable[i].SenType = SK_SEN_VOLT;
+                       pAC->I2c.SenTable[i].SenThreErrHigh = SK_SEN_PLL_3V3_HIGH_ERR;
+                       pAC->I2c.SenTable[i].SenThreWarnHigh = SK_SEN_PLL_3V3_HIGH_WARN;
+                       pAC->I2c.SenTable[i].SenThreWarnLow = SK_SEN_PLL_3V3_LOW_WARN;
+                       pAC->I2c.SenTable[i].SenThreErrLow = SK_SEN_PLL_3V3_LOW_ERR;
+                       pAC->I2c.SenTable[i].SenReg = LM80_VT5_IN;
+                       break;
+               case 7:
+                       if (pAC->GIni.GIGenesis) {
+                               pAC->I2c.SenTable[i].SenDesc = "Speed Fan";
+                               pAC->I2c.SenTable[i].SenType = SK_SEN_FAN;
+                               pAC->I2c.SenTable[i].SenThreErrHigh = SK_SEN_FAN_HIGH_ERR;
+                               pAC->I2c.SenTable[i].SenThreWarnHigh = SK_SEN_FAN_HIGH_WARN;
+                               pAC->I2c.SenTable[i].SenThreWarnLow = SK_SEN_FAN_LOW_WARN;
+                               pAC->I2c.SenTable[i].SenThreErrLow = SK_SEN_FAN_LOW_ERR;
+                               pAC->I2c.SenTable[i].SenReg = LM80_FAN2_IN;
+                       }
+                       else {
+                               pAC->I2c.SenTable[i].SenDesc = "Voltage PHY 2V5";
+                               pAC->I2c.SenTable[i].SenType = SK_SEN_VOLT;
+                               pAC->I2c.SenTable[i].SenThreErrHigh = SK_SEN_PHY_2V5_HIGH_ERR;
+                               pAC->I2c.SenTable[i].SenThreWarnHigh = SK_SEN_PHY_2V5_HIGH_WARN;
+                               pAC->I2c.SenTable[i].SenThreWarnLow = SK_SEN_PHY_2V5_LOW_WARN;
+                               pAC->I2c.SenTable[i].SenThreErrLow = SK_SEN_PHY_2V5_LOW_ERR;
+                               pAC->I2c.SenTable[i].SenReg = LM80_VT6_IN;
+                       }
+                       break;
+               default:
+                       SK_ERR_LOG(pAC, SK_ERRCL_INIT | SK_ERRCL_SW,
+                               SKERR_I2C_E001, SKERR_I2C_E001MSG);
+                       break;
+               }
+
+               pAC->I2c.SenTable[i].SenValue = 0;
+               pAC->I2c.SenTable[i].SenErrFlag = SK_SEN_ERR_OK;
+               pAC->I2c.SenTable[i].SenErrCts = 0;
+               pAC->I2c.SenTable[i].SenBegErrTS = 0;
+               pAC->I2c.SenTable[i].SenState = SK_SEN_IDLE;
+               pAC->I2c.SenTable[i].SenRead = SkLm80ReadSensor;
+               pAC->I2c.SenTable[i].SenDev = LM80_ADDR;
+       }
+
+#ifndef        SK_DIAG
+       pAC->I2c.DummyReads = pAC->I2c.MaxSens;
+#endif /* !SK_DIAG */
+
+       /* Clear I2C IRQ */
+       SK_OUT32(IoC, B2_I2C_IRQ, I2C_CLR_IRQ);
+
+       /* Now we are I/O initialized */
+       pAC->I2c.InitLevel = SK_INIT_IO;
+       return(0);
+}      /* SkI2cInit1 */
+
+
+/*
+ * Init level 2: Start first sensor read.
+ */
+static int SkI2cInit2(
+SK_AC  *pAC,   /* Adapter Context */
+SK_IOC IoC)    /* I/O Context */
+{
+       int             ReadComplete;
+       SK_SENSOR       *pSen;
+
+       if (pAC->I2c.InitLevel != SK_INIT_IO) {
+               /* ReInit not needed in I2C module */
+               /* Init0 and Init2 not permitted */
+               return(0);
+       }
+
+       pSen = &pAC->I2c.SenTable[pAC->I2c.CurrSens];
+       ReadComplete = SkI2cReadSensor(pAC, IoC, pSen);
+
+       if (ReadComplete) {
+               SK_ERR_LOG(pAC, SK_ERRCL_INIT, SKERR_I2C_E008, SKERR_I2C_E008MSG);
+       }
+
+       /* Now we are correctly initialized */
+       pAC->I2c.InitLevel = SK_INIT_RUN;
+
+       return(0);
+}      /* SkI2cInit2*/
+
+
+/*
+ * Initialize I2C devices
+ *
+ * Get the first voltage value and discard it.
+ * Go into temperature read mode. A default pointer is not set.
+ *
+ * The things to be done depend on the init level in the parameter list:
+ * Level 0:
+ *     Initialize only the data structures. Do NOT access hardware.
+ * Level 1:
+ *     Initialize hardware through SK_IN / SK_OUT commands. Do NOT use interrupts.
+ * Level 2:
+ *     Everything is possible. Interrupts may be used from now on.
+ *
+ * return:
+ *     0 = success
+ *     other = error.
+ */
+int    SkI2cInit(
+SK_AC  *pAC,   /* Adapter Context */
+SK_IOC IoC,    /* I/O Context needed in levels 1 and 2 */
+int            Level)  /* Init Level */
+{
+
+       switch (Level) {
+       case SK_INIT_DATA:
+               return(SkI2cInit0(pAC));
+       case SK_INIT_IO:
+               return(SkI2cInit1(pAC, IoC));
+       case SK_INIT_RUN:
+               return(SkI2cInit2(pAC, IoC));
+       default:
+               break;
+       }
+
+       return(0);
+}      /* SkI2cInit */
+
+
+#ifndef SK_DIAG
+
+/*
+ * Interrupt service function for the I2C Interface
+ *
+ * Clears the Interrupt source
+ *
+ * Reads the register and check it for sending a trap.
+ *
+ * Starts the timer if necessary.
+ */
+void SkI2cIsr(
+SK_AC  *pAC,   /* Adapter Context */
+SK_IOC IoC)    /* I/O Context */
+{
+       SK_EVPARA       Para;
+
+       /* Clear I2C IRQ */
+       SK_OUT32(IoC, B2_I2C_IRQ, I2C_CLR_IRQ);
+
+       Para.Para64 = 0;
+       SkEventQueue(pAC, SKGE_I2C, SK_I2CEV_IRQ, Para);
+}      /* SkI2cIsr */
+
+
+/*
+ * Check this sensors Value against the threshold and send events.
+ */
+static void SkI2cCheckSensor(
+SK_AC          *pAC,   /* Adapter Context */
+SK_SENSOR      *pSen)
+{
+       SK_EVPARA       ParaLocal;
+       SK_BOOL         TooHigh;        /* Is sensor too high? */
+       SK_BOOL         TooLow;         /* Is sensor too low? */
+       SK_U64          CurrTime;       /* Current Time */
+       SK_BOOL         DoTrapSend;     /* We need to send a trap */
+       SK_BOOL         DoErrLog;       /* We need to log the error */
+       SK_BOOL         IsError;        /* We need to log the error */
+
+       /* Check Dummy Reads first */
+       if (pAC->I2c.DummyReads > 0) {
+               pAC->I2c.DummyReads--;
+               return;
+       }
+
+       /* Get the current time */
+       CurrTime = SkOsGetTime(pAC);
+
+       /* Set para to the most useful setting: The current sensor. */
+       ParaLocal.Para64 = (SK_U64)pAC->I2c.CurrSens;
+
+       /* Check the Value against the thresholds. First: Error Thresholds */
+       TooHigh = (pSen->SenValue > pSen->SenThreErrHigh);
+       TooLow = (pSen->SenValue < pSen->SenThreErrLow);
+
+       IsError = SK_FALSE;
+       if (TooHigh || TooLow) {
+               /* Error condition is satisfied */
+               DoTrapSend = SK_TRUE;
+               DoErrLog = SK_TRUE;
+
+               /* Now error condition is satisfied */
+               IsError = SK_TRUE;
+
+               if (pSen->SenErrFlag == SK_SEN_ERR_ERR) {
+                       /* This state is the former one */
+
+                       /* So check first whether we have to send a trap */
+                       if (pSen->SenLastErrTrapTS + SK_SEN_ERR_TR_HOLD >
+                           CurrTime) {
+                               /*
+                                * Do NOT send the Trap. The hold back time
+                                * has to run out first.
+                                */
+                               DoTrapSend = SK_FALSE;
+                       }
+
+                       /* Check now whether we have to log an Error */
+                       if (pSen->SenLastErrLogTS + SK_SEN_ERR_LOG_HOLD >
+                           CurrTime) {
+                               /*
+                                * Do NOT log the error. The hold back time
+                                * has to run out first.
+                                */
+                               DoErrLog = SK_FALSE;
+                       }
+               }
+               else {
+                       /* We came from a different state -> Set Begin Time Stamp */
+                       pSen->SenBegErrTS = CurrTime;
+                       pSen->SenErrFlag = SK_SEN_ERR_ERR;
+               }
+
+               if (DoTrapSend) {
+                       /* Set current Time */
+                       pSen->SenLastErrTrapTS = CurrTime;
+                       pSen->SenErrCts++;
+
+                       /* Queue PNMI Event */
+                       SkEventQueue(pAC, SKGE_PNMI, (TooHigh ?
+                               SK_PNMI_EVT_SEN_ERR_UPP :
+                               SK_PNMI_EVT_SEN_ERR_LOW),
+                               ParaLocal);
+               }
+
+               if (DoErrLog) {
+                       /* Set current Time */
+                       pSen->SenLastErrLogTS = CurrTime;
+
+                       if (pSen->SenType == SK_SEN_TEMP) {
+                               SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_I2C_E011,
+                                       SKERR_I2C_E011MSG);
+                       } else if (pSen->SenType == SK_SEN_VOLT) {
+                               SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_I2C_E012,
+                                       SKERR_I2C_E012MSG);
+                       } else
+                       {
+                               SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_I2C_E015,
+                                       SKERR_I2C_E015MSG);
+                       }
+               }
+       }
+
+       /* Check the Value against the thresholds */
+       /* 2nd: Warning thresholds */
+       TooHigh = (pSen->SenValue > pSen->SenThreWarnHigh);
+       TooLow = (pSen->SenValue < pSen->SenThreWarnLow);
+
+       if (!IsError && (TooHigh || TooLow)) {
+               /* Error condition is satisfied */
+               DoTrapSend = SK_TRUE;
+               DoErrLog = SK_TRUE;
+
+               if (pSen->SenErrFlag == SK_SEN_ERR_WARN) {
+                       /* This state is the former one */
+
+                       /* So check first whether we have to send a trap */
+                       if (pSen->SenLastWarnTrapTS + SK_SEN_WARN_TR_HOLD >
+                           CurrTime) {
+                               /*
+                                * Do NOT send the Trap. The hold back time
+                                * has to run out first.
+                                */
+                               DoTrapSend = SK_FALSE;
+                       }
+
+                       /* Check now whether we have to log an Error */
+                       if (pSen->SenLastWarnLogTS + SK_SEN_WARN_LOG_HOLD >
+                           CurrTime) {
+                               /*
+                                * Do NOT log the error. The hold back time
+                                * has to run out first.
+                                */
+                               DoErrLog = SK_FALSE;
+                       }
+               }
+               else {
+                       /* We came from a different state -> Set Begin Time Stamp */
+                       pSen->SenBegWarnTS = CurrTime;
+                       pSen->SenErrFlag = SK_SEN_ERR_WARN;
+               }
+
+               if (DoTrapSend) {
+                       /* Set current Time */
+                       pSen->SenLastWarnTrapTS = CurrTime;
+                       pSen->SenWarnCts++;
+
+                       /* Queue PNMI Event */
+                       SkEventQueue(pAC, SKGE_PNMI, (TooHigh ?
+                               SK_PNMI_EVT_SEN_WAR_UPP :
+                               SK_PNMI_EVT_SEN_WAR_LOW),
+                               ParaLocal);
+               }
+
+               if (DoErrLog) {
+                       /* Set current Time */
+                       pSen->SenLastWarnLogTS = CurrTime;
+
+                       if (pSen->SenType == SK_SEN_TEMP) {
+                               SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_I2C_E009,
+                                       SKERR_I2C_E009MSG);
+                       } else if (pSen->SenType == SK_SEN_VOLT) {
+                               SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_I2C_E010,
+                                       SKERR_I2C_E010MSG);
+                       } else
+                       {
+                               SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_I2C_E014,
+                                       SKERR_I2C_E014MSG);
+                       }
+               }
+       }
+
+       /* Check for NO error at all */
+       if (!IsError && !TooHigh && !TooLow) {
+               /* Set o.k. Status if no error and no warning condition */
+               pSen->SenErrFlag = SK_SEN_ERR_OK;
+       }
+
+       /* End of check against the thresholds */
+
+       /* Bug fix AF: 16.Aug.2001: Correct the init base
+        * of LM80 sensor.
+        */
+       if (pSen->SenInit == SK_SEN_DYN_INIT_PCI_IO) {
+
+       pSen->SenInit = SK_SEN_DYN_INIT_NONE;
+
+               if (pSen->SenValue > SK_SEN_PCI_IO_RANGE_LIMITER) {
+                       /* 5V PCI-IO Voltage */
+                       pSen->SenThreWarnLow = SK_SEN_PCI_IO_5V_LOW_WARN;
+                       pSen->SenThreErrLow = SK_SEN_PCI_IO_5V_LOW_ERR;
+               }
+               else {
+                       /* 3.3V PCI-IO Voltage */
+                       pSen->SenThreWarnHigh = SK_SEN_PCI_IO_3V3_HIGH_WARN;
+                       pSen->SenThreErrHigh = SK_SEN_PCI_IO_3V3_HIGH_ERR;
+               }
+       }
+
+#if 0
+    /* Dynamic thresholds also for VAUX of LM80 sensor */
+       if (pSen->SenInit == SK_SEN_DYN_INIT_VAUX) {
+
+       pSen->SenInit = SK_SEN_DYN_INIT_NONE;
+
+               /* 3.3V VAUX Voltage */
+               if (pSen->SenValue > SK_SEN_VAUX_RANGE_LIMITER) {
+                       pSen->SenThreWarnLow = SK_SEN_VAUX_3V3_LOW_WARN;
+                       pSen->SenThreErrLow = SK_SEN_VAUX_3V3_LOW_ERR;
+               }
+               /* 0V VAUX Voltage */
+               else {
+                       pSen->SenThreWarnHigh = SK_SEN_VAUX_0V_WARN_ERR;
+                       pSen->SenThreErrHigh = SK_SEN_VAUX_0V_WARN_ERR;
+               }
+       }
+
+       /*
+        * Check initialization state:
+        * The VIO Thresholds need adaption
+        */
+       if (!pSen->SenInit && pSen->SenReg == LM80_VT1_IN &&
+            pSen->SenValue > SK_SEN_WARNLOW2C &&
+            pSen->SenValue < SK_SEN_WARNHIGH2) {
+               pSen->SenThreErrLow = SK_SEN_ERRLOW2C;
+               pSen->SenThreWarnLow = SK_SEN_WARNLOW2C;
+               pSen->SenInit = SK_TRUE;
+       }
+
+       if (!pSen->SenInit && pSen->SenReg == LM80_VT1_IN &&
+            pSen->SenValue > SK_SEN_WARNLOW2 &&
+            pSen->SenValue < SK_SEN_WARNHIGH2C) {
+               pSen->SenThreErrHigh = SK_SEN_ERRHIGH2C;
+               pSen->SenThreWarnHigh = SK_SEN_WARNHIGH2C;
+               pSen->SenInit = SK_TRUE;
+       }
+#endif
+
+       if (pSen->SenInit != SK_SEN_DYN_INIT_NONE) {
+               SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_I2C_E013, SKERR_I2C_E013MSG);
+       }
+}      /* SkI2cCheckSensor*/
+
+
+/*
+ * The only Event to be served is the timeout event
+ *
+ */
+int    SkI2cEvent(
+SK_AC          *pAC,   /* Adapter Context */
+SK_IOC         IoC,    /* I/O Context */
+SK_U32         Event,  /* Module specific Event */
+SK_EVPARA      Para)   /* Event specific Parameter */
+{
+       int                     ReadComplete;
+       SK_SENSOR       *pSen;
+       SK_U32          Time;
+       SK_EVPARA       ParaLocal;
+       int                     i;
+
+       /* New case: no sensors */
+       if (pAC->I2c.MaxSens == 0) {
+               return(0);
+       }
+
+       switch (Event) {
+       case SK_I2CEV_IRQ:
+               pSen = &pAC->I2c.SenTable[pAC->I2c.CurrSens];
+               ReadComplete = SkI2cReadSensor(pAC, IoC, pSen);
+
+               if (ReadComplete) {
+                       /* Check sensor against defined thresholds */
+                       SkI2cCheckSensor (pAC, pSen);
+
+                       /* Increment Current sensor and set appropriate Timeout */
+                       pAC->I2c.CurrSens++;
+                       if (pAC->I2c.CurrSens >= pAC->I2c.MaxSens) {
+                               pAC->I2c.CurrSens = 0;
+                               Time = SK_I2C_TIM_LONG;
+                       }
+                       else {
+                               Time = SK_I2C_TIM_SHORT;
+                       }
+
+                       /* Start Timer */
+                       ParaLocal.Para64 = (SK_U64)0;
+
+                       pAC->I2c.TimerMode = SK_TIMER_NEW_GAUGING;
+
+                       SkTimerStart(pAC, IoC, &pAC->I2c.SenTimer, Time,
+                               SKGE_I2C, SK_I2CEV_TIM, ParaLocal);
+               }
+       else {
+                       /* Start Timer */
+                       ParaLocal.Para64 = (SK_U64)0;
+
+                       pAC->I2c.TimerMode = SK_TIMER_WATCH_STATEMACHINE;
+
+           SkTimerStart(pAC, IoC, &pAC->I2c.SenTimer, SK_I2C_TIM_WATCH,
+                               SKGE_I2C, SK_I2CEV_TIM, ParaLocal);
+               }
+               break;
+       case SK_I2CEV_TIM:
+               if (pAC->I2c.TimerMode == SK_TIMER_NEW_GAUGING) {
+
+                       ParaLocal.Para64 = (SK_U64)0;
+                       SkTimerStop(pAC, IoC, &pAC->I2c.SenTimer);
+
+                       pSen = &pAC->I2c.SenTable[pAC->I2c.CurrSens];
+                       ReadComplete = SkI2cReadSensor(pAC, IoC, pSen);
+
+                       if (ReadComplete) {
+                               /* Check sensor against defined thresholds */
+                               SkI2cCheckSensor (pAC, pSen);
+
+                               /* Increment Current sensor and set appropriate Timeout */
+                               pAC->I2c.CurrSens++;
+                               if (pAC->I2c.CurrSens == pAC->I2c.MaxSens) {
+                                       pAC->I2c.CurrSens = 0;
+                                       Time = SK_I2C_TIM_LONG;
+                               }
+                               else {
+                                       Time = SK_I2C_TIM_SHORT;
+                               }
+
+                               /* Start Timer */
+                               ParaLocal.Para64 = (SK_U64)0;
+
+                               pAC->I2c.TimerMode = SK_TIMER_NEW_GAUGING;
+
+                               SkTimerStart(pAC, IoC, &pAC->I2c.SenTimer, Time,
+                                       SKGE_I2C, SK_I2CEV_TIM, ParaLocal);
+                       }
+               }
+               else {
+                       pSen = &pAC->I2c.SenTable[pAC->I2c.CurrSens];
+                       pSen->SenErrFlag = SK_SEN_ERR_FAULTY;
+                       SK_I2C_STOP(IoC);
+
+                       /* Increment Current sensor and set appropriate Timeout */
+                       pAC->I2c.CurrSens++;
+                       if (pAC->I2c.CurrSens == pAC->I2c.MaxSens) {
+                               pAC->I2c.CurrSens = 0;
+                               Time = SK_I2C_TIM_LONG;
+                       }
+                       else {
+                               Time = SK_I2C_TIM_SHORT;
+                       }
+
+                       /* Start Timer */
+                       ParaLocal.Para64 = (SK_U64)0;
+
+                       pAC->I2c.TimerMode = SK_TIMER_NEW_GAUGING;
+
+                       SkTimerStart(pAC, IoC, &pAC->I2c.SenTimer, Time,
+                               SKGE_I2C, SK_I2CEV_TIM, ParaLocal);
+               }
+               break;
+       case SK_I2CEV_CLEAR:
+               for (i = 0; i < SK_MAX_SENSORS; i++) {
+                       pAC->I2c.SenTable[i].SenErrFlag = SK_SEN_ERR_OK;
+                       pAC->I2c.SenTable[i].SenErrCts = 0;
+                       pAC->I2c.SenTable[i].SenWarnCts = 0;
+                       pAC->I2c.SenTable[i].SenBegErrTS = 0;
+                       pAC->I2c.SenTable[i].SenBegWarnTS = 0;
+                       pAC->I2c.SenTable[i].SenLastErrTrapTS = (SK_U64)0;
+                       pAC->I2c.SenTable[i].SenLastErrLogTS = (SK_U64)0;
+                       pAC->I2c.SenTable[i].SenLastWarnTrapTS = (SK_U64)0;
+                       pAC->I2c.SenTable[i].SenLastWarnLogTS = (SK_U64)0;
+               }
+               break;
+       default:
+               SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_I2C_E006, SKERR_I2C_E006MSG);
+       }
+
+       return(0);
+}      /* SkI2cEvent*/
+
+#endif /* !SK_DIAG */
diff -Naur u-boot-2009.03_orig/drivers/net/sk98lin/sklm80.c u-boot-2009.03/drivers/net/sk98lin/sklm80.c
--- u-boot-2009.03_orig/drivers/net/sk98lin/sklm80.c    2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/drivers/net/sk98lin/sklm80.c 2009-03-31 14:54:29.643752800 -0700
@@ -1,288 +1,291 @@
-/******************************************************************************
- *
- * Name:       sklm80.c
- * Project:    GEnesis, PCI Gigabit Ethernet Adapter
- * Version:    $Revision: 1.20 $
- * Date:       $Date: 2002/08/13 09:16:27 $
- * Purpose:    Funktions to access Voltage and Temperature Sensor (LM80)
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- *     (C)Copyright 1998-2002 SysKonnect GmbH.
- *
- *     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.
- *
- *     The information in this file is provided "AS IS" without warranty.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * History:
- *
- *     $Log: sklm80.c,v $
- *     Revision 1.20  2002/08/13 09:16:27  rschmidt
- *     Changed return value for SkLm80ReadSensor() back to 'int'
- *     Editorial changes
- *
- *     Revision 1.19  2002/08/06 09:43:31  jschmalz
- *     Extensions and changes for Yukon
- *
- *     Revision 1.18  2002/08/02 12:26:57  rschmidt
- *     Editorial changes
- *
- *     Revision 1.17  1999/11/22 13:35:51  cgoos
- *     Changed license header to GPL.
- *
- *     Revision 1.16  1999/05/27 14:05:47  malthoff
- *     Fans: Set SenVal to 0 if the fan value is 0 or 0xff. Both values
- *     are outside the limits (0: div zero error, 0xff: value not in
- *     range, assume 0).
- *
- *     Revision 1.15  1999/05/27 13:38:51  malthoff
- *     Pervent from Division by zero errors.
- *
- *     Revision 1.14  1999/05/20 09:20:01  cgoos
- *     Changes for 1000Base-T (Fan sensors).
- *
- *     Revision 1.13  1998/10/22 09:48:14  gklug
- *     fix: SysKonnectFileId typo
- *
- *     Revision 1.12  1998/10/09 06:12:06  malthoff
- *     Remove ID_sccs by SysKonnectFileId.
- *
- *     Revision 1.11  1998/09/04 08:33:48  malthoff
- *     bug fix: SenState = SK_SEN_IDLE when
- *     leaving SK_SEN_VALEXT state
- *
- *     Revision 1.10  1998/08/20 12:02:10  gklug
- *     fix: compiler warnings type mismatch
- *
- *     Revision 1.9  1998/08/20 11:37:38  gklug
- *     chg: change Ioc to IoC
- *
- *     Revision 1.8  1998/08/19 12:20:58  gklug
- *     fix: remove struct from C files (see CCC)
- *
- *     Revision 1.7  1998/08/17 07:04:57  malthoff
- *     Take SkLm80RcvReg() function from ski2c.c.
- *     Add IoC parameter to BREAK_OR_WAIT() macro.
- *
- *     Revision 1.6  1998/08/14 07:11:28  malthoff
- *     remove pAc with pAC.
- *
- *     Revision 1.5  1998/08/14 06:46:55  gklug
- *     fix: temperature can get negative
- *
- *     Revision 1.4  1998/08/13 08:27:04  gklug
- *     add: temperature reading now o.k.
- *     fix: pSen declaration, SK_ERR_LOG call, ADDR macro
- *
- *     Revision 1.3  1998/08/13 07:28:21  gklug
- *     fix: pSen was wrong initialized
- *     add: correct conversion for voltage readings
- *
- *     Revision 1.2  1998/08/11 07:52:14  gklug
- *     add: Lm80 read sensor function
- *
- *     Revision 1.1  1998/07/17 09:57:12  gklug
- *     initial version
- *
- *
- *
- ******************************************************************************/
-
-
-#include <config.h>
-
-/*
-       LM80 functions
-*/
-static const char SysKonnectFileId[] =
-       "$Id: sklm80.c,v 1.20 2002/08/13 09:16:27 rschmidt Exp $" ;
-
-#include "h/skdrv1st.h"                /* Driver Specific Definitions */
-#include "h/lm80.h"
-#include "h/skdrv2nd.h"                /* Adapter Control- and Driver specific Def. */
-
-#ifdef SK_DIAG
-#define        BREAK_OR_WAIT(pAC,IoC,Event)    SkI2cWait(pAC,IoC,Event)
-#else  /* nSK_DIAG */
-#define        BREAK_OR_WAIT(pAC,IoC,Event)    break
-#endif /* nSK_DIAG */
-
-#ifdef SK_DIAG
-/*
- * read the register 'Reg' from the device 'Dev'
- *
- * return      read error      -1
- *             success         the read value
- */
-int    SkLm80RcvReg(
-SK_IOC IoC,            /* Adapter Context */
-int            Dev,            /* I2C device address */
-int            Reg)            /* register to read */
-{
-       int     Val = 0;
-       int     TempExt;
-
-       /* Signal device number */
-       if (SkI2cSndDev(IoC, Dev, I2C_WRITE)) {
-               return(-1);
-       }
-
-       if (SkI2cSndByte(IoC, Reg)) {
-               return(-1);
-       }
-
-       /* repeat start */
-       if (SkI2cSndDev(IoC, Dev, I2C_READ)) {
-               return(-1);
-       }
-
-       switch (Reg) {
-       case LM80_TEMP_IN:
-               Val = (int)SkI2cRcvByte(IoC, 1);
-
-               /* First: correct the value: it might be negative */
-               if ((Val & 0x80) != 0) {
-                       /* Value is negative */
-                       Val = Val - 256;
-               }
-               Val = Val * SK_LM80_TEMP_LSB;
-               SkI2cStop(IoC);
-
-               TempExt = (int)SkLm80RcvReg(IoC, LM80_ADDR, LM80_TEMP_CTRL);
-
-               if (Val > 0) {
-                       Val += ((TempExt >> 7) * SK_LM80_TEMPEXT_LSB);
-               }
-               else {
-                       Val -= ((TempExt >> 7) * SK_LM80_TEMPEXT_LSB);
-               }
-               return(Val);
-               break;
-       case LM80_VT0_IN:
-       case LM80_VT1_IN:
-       case LM80_VT2_IN:
-       case LM80_VT3_IN:
-               Val = (int)SkI2cRcvByte(IoC, 1) * SK_LM80_VT_LSB;
-               break;
-
-       default:
-               Val = (int)SkI2cRcvByte(IoC, 1);
-               break;
-       }
-
-       SkI2cStop(IoC);
-       return(Val);
-}
-#endif /* SK_DIAG */
-
-/*
- * read a sensors value (LM80 specific)
- *
- * This function reads a sensors value from the I2C sensor chip LM80.
- * The sensor is defined by its index into the sensors database in the struct
- * pAC points to.
- *
- * Returns     1 if the read is completed
- *             0 if the read must be continued (I2C Bus still allocated)
- */
-int SkLm80ReadSensor(
-SK_AC          *pAC,   /* Adapter Context */
-SK_IOC         IoC,    /* I/O Context needed in level 1 and 2 */
-SK_SENSOR      *pSen)  /* Sensor to be read */
-{
-       SK_I32          Value;
-
-       switch (pSen->SenState) {
-       case SK_SEN_IDLE:
-               /* Send address to ADDR register */
-               SK_I2C_CTL(IoC, I2C_READ, pSen->SenDev, pSen->SenReg, 0);
-
-               pSen->SenState = SK_SEN_VALUE ;
-               BREAK_OR_WAIT(pAC, IoC, I2C_READ);
-
-       case SK_SEN_VALUE:
-               /* Read value from data register */
-               SK_IN32(IoC, B2_I2C_DATA, ((SK_U32 *)&Value));
-
-               Value &= 0xff; /* only least significant byte is valid */
-
-               /* Do NOT check the Value against the thresholds */
-               /* Checking is done in the calling instance */
-
-               if (pSen->SenType == SK_SEN_VOLT) {
-                       /* Voltage sensor */
-                       pSen->SenValue = Value * SK_LM80_VT_LSB;
-                       pSen->SenState = SK_SEN_IDLE ;
-                       return(1);
-               }
-
-               if (pSen->SenType == SK_SEN_FAN) {
-                       if (Value != 0 && Value != 0xff) {
-                               /* Fan speed counter */
-                               pSen->SenValue = SK_LM80_FAN_FAKTOR/Value;
-                       }
-                       else {
-                               /* Indicate Fan error */
-                               pSen->SenValue = 0;
-                       }
-                       pSen->SenState = SK_SEN_IDLE ;
-                       return(1);
-               }
-
-               /* First: correct the value: it might be negative */
-               if ((Value & 0x80) != 0) {
-                       /* Value is negative */
-                       Value = Value - 256;
-               }
-
-               /* We have a temperature sensor and need to get the signed extension.
-                * For now we get the extension from the last reading, so in the normal
-                * case we won't see flickering temperatures.
-                */
-               pSen->SenValue = (Value * SK_LM80_TEMP_LSB) +
-                       (pSen->SenValue % SK_LM80_TEMP_LSB);
-
-               /* Send address to ADDR register */
-               SK_I2C_CTL(IoC, I2C_READ, pSen->SenDev, LM80_TEMP_CTRL, 0);
-
-               pSen->SenState = SK_SEN_VALEXT ;
-               BREAK_OR_WAIT(pAC, IoC, I2C_READ);
-
-       case SK_SEN_VALEXT:
-               /* Read value from data register */
-               SK_IN32(IoC, B2_I2C_DATA, ((SK_U32 *)&Value));
-               Value &= LM80_TEMP_LSB_9; /* only bit 7 is valid */
-
-               /* cut the LSB bit */
-               pSen->SenValue = ((pSen->SenValue / SK_LM80_TEMP_LSB) *
-                       SK_LM80_TEMP_LSB);
-
-               if (pSen->SenValue < 0) {
-                       /* Value negative: The bit value must be subtracted */
-                       pSen->SenValue -= ((Value >> 7) * SK_LM80_TEMPEXT_LSB);
-               }
-               else {
-                       /* Value positive: The bit value must be added */
-                       pSen->SenValue += ((Value >> 7) * SK_LM80_TEMPEXT_LSB);
-               }
-
-               pSen->SenState = SK_SEN_IDLE ;
-               return(1);
-
-       default:
-               SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_I2C_E007, SKERR_I2C_E007MSG);
-               return(1);
-       }
-
-       /* Not completed */
-       return(0);
-}
+/******************************************************************************
+ *
+ * Name:       sklm80.c
+ * Project:    GEnesis, PCI Gigabit Ethernet Adapter
+ * Version:    $Revision: 1.1.1.1 $
+ * Date:       $Date: 2009/03/25 22:22:09 $
+ * Purpose:    Funktions to access Voltage and Temperature Sensor (LM80)
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ *     (C)Copyright 1998-2002 SysKonnect GmbH.
+ *
+ *     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.
+ *
+ *     The information in this file is provided "AS IS" without warranty.
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ * History:
+ *
+ *     $Log: sklm80.c,v $
+ *     Revision 1.1.1.1  2009/03/25 22:22:09  kenagy
+ *     no message
+ *     
+ *     Revision 1.20  2002/08/13 09:16:27  rschmidt
+ *     Changed return value for SkLm80ReadSensor() back to 'int'
+ *     Editorial changes
+ *
+ *     Revision 1.19  2002/08/06 09:43:31  jschmalz
+ *     Extensions and changes for Yukon
+ *
+ *     Revision 1.18  2002/08/02 12:26:57  rschmidt
+ *     Editorial changes
+ *
+ *     Revision 1.17  1999/11/22 13:35:51  cgoos
+ *     Changed license header to GPL.
+ *
+ *     Revision 1.16  1999/05/27 14:05:47  malthoff
+ *     Fans: Set SenVal to 0 if the fan value is 0 or 0xff. Both values
+ *     are outside the limits (0: div zero error, 0xff: value not in
+ *     range, assume 0).
+ *
+ *     Revision 1.15  1999/05/27 13:38:51  malthoff
+ *     Pervent from Division by zero errors.
+ *
+ *     Revision 1.14  1999/05/20 09:20:01  cgoos
+ *     Changes for 1000Base-T (Fan sensors).
+ *
+ *     Revision 1.13  1998/10/22 09:48:14  gklug
+ *     fix: SysKonnectFileId typo
+ *
+ *     Revision 1.12  1998/10/09 06:12:06  malthoff
+ *     Remove ID_sccs by SysKonnectFileId.
+ *
+ *     Revision 1.11  1998/09/04 08:33:48  malthoff
+ *     bug fix: SenState = SK_SEN_IDLE when
+ *     leaving SK_SEN_VALEXT state
+ *
+ *     Revision 1.10  1998/08/20 12:02:10  gklug
+ *     fix: compiler warnings type mismatch
+ *
+ *     Revision 1.9  1998/08/20 11:37:38  gklug
+ *     chg: change Ioc to IoC
+ *
+ *     Revision 1.8  1998/08/19 12:20:58  gklug
+ *     fix: remove struct from C files (see CCC)
+ *
+ *     Revision 1.7  1998/08/17 07:04:57  malthoff
+ *     Take SkLm80RcvReg() function from ski2c.c.
+ *     Add IoC parameter to BREAK_OR_WAIT() macro.
+ *
+ *     Revision 1.6  1998/08/14 07:11:28  malthoff
+ *     remove pAc with pAC.
+ *
+ *     Revision 1.5  1998/08/14 06:46:55  gklug
+ *     fix: temperature can get negative
+ *
+ *     Revision 1.4  1998/08/13 08:27:04  gklug
+ *     add: temperature reading now o.k.
+ *     fix: pSen declaration, SK_ERR_LOG call, ADDR macro
+ *
+ *     Revision 1.3  1998/08/13 07:28:21  gklug
+ *     fix: pSen was wrong initialized
+ *     add: correct conversion for voltage readings
+ *
+ *     Revision 1.2  1998/08/11 07:52:14  gklug
+ *     add: Lm80 read sensor function
+ *
+ *     Revision 1.1  1998/07/17 09:57:12  gklug
+ *     initial version
+ *
+ *
+ *
+ ******************************************************************************/
+
+
+#include <config.h>
+
+/*
+       LM80 functions
+*/
+static const char SysKonnectFileId[] =
+       "$Id: sklm80.c,v 1.1.1.1 2009/03/25 22:22:09 kenagy Exp $" ;
+
+#include "h/skdrv1st.h"                /* Driver Specific Definitions */
+#include "h/lm80.h"
+#include "h/skdrv2nd.h"                /* Adapter Control- and Driver specific Def. */
+
+#ifdef SK_DIAG
+#define        BREAK_OR_WAIT(pAC,IoC,Event)    SkI2cWait(pAC,IoC,Event)
+#else  /* nSK_DIAG */
+#define        BREAK_OR_WAIT(pAC,IoC,Event)    break
+#endif /* nSK_DIAG */
+
+#ifdef SK_DIAG
+/*
+ * read the register 'Reg' from the device 'Dev'
+ *
+ * return      read error      -1
+ *             success         the read value
+ */
+int    SkLm80RcvReg(
+SK_IOC IoC,            /* Adapter Context */
+int            Dev,            /* I2C device address */
+int            Reg)            /* register to read */
+{
+       int     Val = 0;
+       int     TempExt;
+
+       /* Signal device number */
+       if (SkI2cSndDev(IoC, Dev, I2C_WRITE)) {
+               return(-1);
+       }
+
+       if (SkI2cSndByte(IoC, Reg)) {
+               return(-1);
+       }
+
+       /* repeat start */
+       if (SkI2cSndDev(IoC, Dev, I2C_READ)) {
+               return(-1);
+       }
+
+       switch (Reg) {
+       case LM80_TEMP_IN:
+               Val = (int)SkI2cRcvByte(IoC, 1);
+
+               /* First: correct the value: it might be negative */
+               if ((Val & 0x80) != 0) {
+                       /* Value is negative */
+                       Val = Val - 256;
+               }
+               Val = Val * SK_LM80_TEMP_LSB;
+               SkI2cStop(IoC);
+
+               TempExt = (int)SkLm80RcvReg(IoC, LM80_ADDR, LM80_TEMP_CTRL);
+
+               if (Val > 0) {
+                       Val += ((TempExt >> 7) * SK_LM80_TEMPEXT_LSB);
+               }
+               else {
+                       Val -= ((TempExt >> 7) * SK_LM80_TEMPEXT_LSB);
+               }
+               return(Val);
+               break;
+       case LM80_VT0_IN:
+       case LM80_VT1_IN:
+       case LM80_VT2_IN:
+       case LM80_VT3_IN:
+               Val = (int)SkI2cRcvByte(IoC, 1) * SK_LM80_VT_LSB;
+               break;
+
+       default:
+               Val = (int)SkI2cRcvByte(IoC, 1);
+               break;
+       }
+
+       SkI2cStop(IoC);
+       return(Val);
+}
+#endif /* SK_DIAG */
+
+/*
+ * read a sensors value (LM80 specific)
+ *
+ * This function reads a sensors value from the I2C sensor chip LM80.
+ * The sensor is defined by its index into the sensors database in the struct
+ * pAC points to.
+ *
+ * Returns     1 if the read is completed
+ *             0 if the read must be continued (I2C Bus still allocated)
+ */
+int SkLm80ReadSensor(
+SK_AC          *pAC,   /* Adapter Context */
+SK_IOC         IoC,    /* I/O Context needed in level 1 and 2 */
+SK_SENSOR      *pSen)  /* Sensor to be read */
+{
+       SK_I32          Value;
+
+       switch (pSen->SenState) {
+       case SK_SEN_IDLE:
+               /* Send address to ADDR register */
+               SK_I2C_CTL(IoC, I2C_READ, pSen->SenDev, pSen->SenReg, 0);
+
+               pSen->SenState = SK_SEN_VALUE ;
+               BREAK_OR_WAIT(pAC, IoC, I2C_READ);
+
+       case SK_SEN_VALUE:
+               /* Read value from data register */
+               SK_IN32(IoC, B2_I2C_DATA, ((SK_U32 *)&Value));
+
+               Value &= 0xff; /* only least significant byte is valid */
+
+               /* Do NOT check the Value against the thresholds */
+               /* Checking is done in the calling instance */
+
+               if (pSen->SenType == SK_SEN_VOLT) {
+                       /* Voltage sensor */
+                       pSen->SenValue = Value * SK_LM80_VT_LSB;
+                       pSen->SenState = SK_SEN_IDLE ;
+                       return(1);
+               }
+
+               if (pSen->SenType == SK_SEN_FAN) {
+                       if (Value != 0 && Value != 0xff) {
+                               /* Fan speed counter */
+                               pSen->SenValue = SK_LM80_FAN_FAKTOR/Value;
+                       }
+                       else {
+                               /* Indicate Fan error */
+                               pSen->SenValue = 0;
+                       }
+                       pSen->SenState = SK_SEN_IDLE ;
+                       return(1);
+               }
+
+               /* First: correct the value: it might be negative */
+               if ((Value & 0x80) != 0) {
+                       /* Value is negative */
+                       Value = Value - 256;
+               }
+
+               /* We have a temperature sensor and need to get the signed extension.
+                * For now we get the extension from the last reading, so in the normal
+                * case we won't see flickering temperatures.
+                */
+               pSen->SenValue = (Value * SK_LM80_TEMP_LSB) +
+                       (pSen->SenValue % SK_LM80_TEMP_LSB);
+
+               /* Send address to ADDR register */
+               SK_I2C_CTL(IoC, I2C_READ, pSen->SenDev, LM80_TEMP_CTRL, 0);
+
+               pSen->SenState = SK_SEN_VALEXT ;
+               BREAK_OR_WAIT(pAC, IoC, I2C_READ);
+
+       case SK_SEN_VALEXT:
+               /* Read value from data register */
+               SK_IN32(IoC, B2_I2C_DATA, ((SK_U32 *)&Value));
+               Value &= LM80_TEMP_LSB_9; /* only bit 7 is valid */
+
+               /* cut the LSB bit */
+               pSen->SenValue = ((pSen->SenValue / SK_LM80_TEMP_LSB) *
+                       SK_LM80_TEMP_LSB);
+
+               if (pSen->SenValue < 0) {
+                       /* Value negative: The bit value must be subtracted */
+                       pSen->SenValue -= ((Value >> 7) * SK_LM80_TEMPEXT_LSB);
+               }
+               else {
+                       /* Value positive: The bit value must be added */
+                       pSen->SenValue += ((Value >> 7) * SK_LM80_TEMPEXT_LSB);
+               }
+
+               pSen->SenState = SK_SEN_IDLE ;
+               return(1);
+
+       default:
+               SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_I2C_E007, SKERR_I2C_E007MSG);
+               return(1);
+       }
+
+       /* Not completed */
+       return(0);
+}
diff -Naur u-boot-2009.03_orig/drivers/net/sk98lin/skproc.c u-boot-2009.03/drivers/net/sk98lin/skproc.c
--- u-boot-2009.03_orig/drivers/net/sk98lin/skproc.c    2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/drivers/net/sk98lin/skproc.c 2009-03-31 14:54:29.690627200 -0700
@@ -1,510 +1,513 @@
-/******************************************************************************
- *
- * Name:    skproc.c
- * Project:    GEnesis, PCI Gigabit Ethernet Adapter
- * Version:    $Revision: 1.4 $
- * Date:    $Date: 2003/02/25 14:16:37 $
- * Purpose:    Funktions to display statictic data
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- *     (C)Copyright 1998-2003 SysKonnect GmbH.
- *
- *     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.
- *
- *     Created 22-Nov-2000
- *     Author: Mirko Lindner (mlindner@syskonnect.de)
- *
- *     The information in this file is provided "AS IS" without warranty.
- *
- ******************************************************************************/
-/******************************************************************************
- *
- * History:
- *
- *     $Log: skproc.c,v $
- *     Revision 1.4  2003/02/25 14:16:37  mlindner
- *     Fix: Copyright statement
- *
- *     Revision 1.3  2002/10/02 12:59:51  mlindner
- *     Add: Support for Yukon
- *     Add: Speed check and setup
- *     Add: Merge source for kernel 2.2.x and 2.4.x
- *     Add: Read sensor names directly from VPD
- *     Fix: Volt values
- *
- *     Revision 1.2.2.7  2002/01/14 12:45:15  mlindner
- *     Fix: Editorial changes
- *
- *     Revision 1.2.2.6  2001/12/06 15:26:07  mlindner
- *     Fix: Return value of proc_read
- *
- *     Revision 1.2.2.5  2001/12/06 09:57:39  mlindner
- *     New ProcFs entries
- *
- *     Revision 1.2.2.4  2001/09/05 12:16:02  mlindner
- *     Add: New ProcFs entries
- *     Fix: Counter Errors (Jumbo == to long errors)
- *     Fix: Kernel error compilation
- *     Fix: too short counters
- *
- *     Revision 1.2.2.3  2001/06/25 07:26:26  mlindner
- *     Add: More error messages
- *
- *     Revision 1.2.2.2  2001/03/15 12:50:13  mlindner
- *     fix: ProcFS owner protection
- *
- *     Revision 1.2.2.1  2001/03/12 16:43:48  mlindner
- *     chg: 2.4 requirements for procfs
- *
- *     Revision 1.1  2001/01/22 14:15:31  mlindner
- *     added ProcFs functionality
- *     Dual Net functionality integrated
- *     Rlmt networks added
- *
- *
- ******************************************************************************/
-
-#include <config.h>
-
-#include <linux/proc_fs.h>
-
-#include "h/skdrv1st.h"
-#include "h/skdrv2nd.h"
-#define ZEROPAD                1               /* pad with zero */
-#define SIGN           2               /* unsigned/signed long */
-#define PLUS           4               /* show plus */
-#define SPACE          8               /* space if plus */
-#define LEFT           16              /* left justified */
-#define SPECIALX       32              /* 0x */
-#define LARGE          64
-
-extern SK_AC *pACList;
-extern struct net_device *SkGeRootDev;
-
-extern char *SkNumber (char *str,
-                      long long num,
-                      int base,
-                      int size,
-                      int precision,
-                      int type);
-
-
-/*****************************************************************************
- *
- *     proc_read - print "summaries" entry
- *
- * Description:
- *  This function fills the proc entry with statistic data about
- *  the ethernet device.
- *
- *
- * Returns: buffer with statistic data
- *
- */
-int proc_read(char *buffer,
-char **buffer_location,
-off_t offset,
-int buffer_length,
-int *eof,
-void *data)
-{
-       int len = 0;
-       int t;
-       int i;
-       DEV_NET                 *pNet;
-       SK_AC                   *pAC;
-       char                    test_buf[100];
-       char                    sens_msg[50];
-       unsigned long           Flags;
-       unsigned int            Size;
-       struct SK_NET_DEVICE    *next;
-       struct SK_NET_DEVICE    *SkgeProcDev = SkGeRootDev;
-
-       SK_PNMI_STRUCT_DATA     *pPnmiStruct;
-       SK_PNMI_STAT            *pPnmiStat;
-       struct proc_dir_entry *file = (struct proc_dir_entry*) data;
-
-       while (SkgeProcDev) {
-               pNet = (DEV_NET*) SkgeProcDev->priv;
-               pAC = pNet->pAC;
-               next = pAC->Next;
-               pPnmiStruct = &pAC->PnmiStruct;
-               /* NetIndex in GetStruct is now required, zero is only dummy */
-
-               for (t=pAC->GIni.GIMacsFound; t > 0; t--) {
-                       if ((pAC->GIni.GIMacsFound == 2) && pAC->RlmtNets == 1)
-                               t--;
-
-                       spin_lock_irqsave(&pAC->SlowPathLock, Flags);
-                       Size = SK_PNMI_STRUCT_SIZE;
-                       SkPnmiGetStruct(pAC, pAC->IoBase,
-                               pPnmiStruct, &Size, t-1);
-                       spin_unlock_irqrestore(&pAC->SlowPathLock, Flags);
-
-                       if (strcmp(pAC->dev[t-1]->name, file->name) == 0) {
-                               pPnmiStat = &pPnmiStruct->Stat[0];
-                               len = sprintf(buffer,
-                                       "\nDetailed statistic for device %s\n",
-                                       pAC->dev[t-1]->name);
-                               len += sprintf(buffer + len,
-                                       "=======================================\n");
-
-                               /* Board statistics */
-                               len += sprintf(buffer + len,
-                                       "\nBoard statistics\n\n");
-                               len += sprintf(buffer + len,
-                                       "Active Port                    %c\n",
-                                       'A' + pAC->Rlmt.Net[t-1].Port[pAC->Rlmt.
-                                       Net[t-1].PrefPort]->PortNumber);
-                               len += sprintf(buffer + len,
-                                       "Preferred Port                 %c\n",
-                                       'A' + pAC->Rlmt.Net[t-1].Port[pAC->Rlmt.
-                                       Net[t-1].PrefPort]->PortNumber);
-
-                               len += sprintf(buffer + len,
-                                       "Bus speed (MHz)                %d\n",
-                                       pPnmiStruct->BusSpeed);
-
-                               len += sprintf(buffer + len,
-                                       "Bus width (Bit)                %d\n",
-                                       pPnmiStruct->BusWidth);
-                               len += sprintf(buffer + len,
-                                       "Hardware revision              v%d.%d\n",
-                                       (pAC->GIni.GIPciHwRev >> 4) & 0x0F,
-                                       pAC->GIni.GIPciHwRev & 0x0F);
-
-                               /* Print sensor informations */
-                               for (i=0; i < pAC->I2c.MaxSens; i ++) {
-                                       /* Check type */
-                                       switch (pAC->I2c.SenTable[i].SenType) {
-                                       case 1:
-                                               strcpy(sens_msg, pAC->I2c.SenTable[i].SenDesc);
-                                               strcat(sens_msg, " (C)");
-                                               len += sprintf(buffer + len,
-                                                       "%-25s      %d.%02d\n",
-                                                       sens_msg,
-                                                       pAC->I2c.SenTable[i].SenValue / 10,
-                                                       pAC->I2c.SenTable[i].SenValue % 10);
-
-                                               strcpy(sens_msg, pAC->I2c.SenTable[i].SenDesc);
-                                               strcat(sens_msg, " (F)");
-                                               len += sprintf(buffer + len,
-                                                       "%-25s      %d.%02d\n",
-                                                       sens_msg,
-                                                       ((((pAC->I2c.SenTable[i].SenValue)
-                                                       *10)*9)/5 + 3200)/100,
-                                                       ((((pAC->I2c.SenTable[i].SenValue)
-                                                       *10)*9)/5 + 3200) % 10);
-                                               break;
-                                       case 2:
-                                               strcpy(sens_msg, pAC->I2c.SenTable[i].SenDesc);
-                                               strcat(sens_msg, " (V)");
-                                               len += sprintf(buffer + len,
-                                                       "%-25s      %d.%03d\n",
-                                                       sens_msg,
-                                                       pAC->I2c.SenTable[i].SenValue / 1000,
-                                                       pAC->I2c.SenTable[i].SenValue % 1000);
-                                               break;
-                                       case 3:
-                                               strcpy(sens_msg, pAC->I2c.SenTable[i].SenDesc);
-                                               strcat(sens_msg, " (rpm)");
-                                               len += sprintf(buffer + len,
-                                                       "%-25s      %d\n",
-                                                       sens_msg,
-                                                       pAC->I2c.SenTable[i].SenValue);
-                                               break;
-                                       default:
-                                               break;
-                                       }
-                               }
-
-                               /*Receive statistics */
-                               len += sprintf(buffer + len,
-                               "\nReceive statistics\n\n");
-
-                               len += sprintf(buffer + len,
-                                       "Received bytes                 %s\n",
-                                       SkNumber(test_buf, pPnmiStat->StatRxOctetsOkCts,
-                                       10,0,-1,0));
-                               len += sprintf(buffer + len,
-                                       "Received packets               %s\n",
-                                       SkNumber(test_buf, pPnmiStat->StatRxOkCts,
-                                       10,0,-1,0));
-#if 0
-                               if (pAC->GIni.GP[0].PhyType == SK_PHY_XMAC &&
-                                       pAC->HWRevision < 12) {
-                                       pPnmiStruct->InErrorsCts = pPnmiStruct->InErrorsCts -
-                                               pPnmiStat->StatRxShortsCts;
-                                       pPnmiStat->StatRxShortsCts = 0;
-                               }
-#endif
-                               if (pNet->Mtu > 1500)
-                                       pPnmiStruct->InErrorsCts = pPnmiStruct->InErrorsCts -
-                                               pPnmiStat->StatRxTooLongCts;
-
-                               len += sprintf(buffer + len,
-                                       "Receive errors                 %s\n",
-                                       SkNumber(test_buf, pPnmiStruct->InErrorsCts,
-                                       10,0,-1,0));
-                               len += sprintf(buffer + len,
-                                       "Receive drops                  %s\n",
-                                       SkNumber(test_buf, pPnmiStruct->RxNoBufCts,
-                                       10,0,-1,0));
-                               len += sprintf(buffer + len,
-                                       "Received multicast             %s\n",
-                                       SkNumber(test_buf, pPnmiStat->StatRxMulticastOkCts,
-                                       10,0,-1,0));
-                               len += sprintf(buffer + len,
-                                       "Receive error types\n");
-                               len += sprintf(buffer + len,
-                                       "   length                      %s\n",
-                                       SkNumber(test_buf, pPnmiStat->StatRxRuntCts,
-                                       10, 0, -1, 0));
-                               len += sprintf(buffer + len,
-                                       "   buffer overflow             %s\n",
-                                       SkNumber(test_buf, pPnmiStat->StatRxFifoOverflowCts,
-                                       10, 0, -1, 0));
-                               len += sprintf(buffer + len,
-                                       "   bad crc                     %s\n",
-                                       SkNumber(test_buf, pPnmiStat->StatRxFcsCts,
-                                       10, 0, -1, 0));
-                               len += sprintf(buffer + len,
-                                       "   framing                     %s\n",
-                                       SkNumber(test_buf, pPnmiStat->StatRxFramingCts,
-                                       10, 0, -1, 0));
-                               len += sprintf(buffer + len,
-                                       "   missed frames               %s\n",
-                                       SkNumber(test_buf, pPnmiStat->StatRxMissedCts,
-                                       10, 0, -1, 0));
-
-                               if (pNet->Mtu > 1500)
-                                       pPnmiStat->StatRxTooLongCts = 0;
-
-                               len += sprintf(buffer + len,
-                                       "   too long                    %s\n",
-                                       SkNumber(test_buf, pPnmiStat->StatRxTooLongCts,
-                                       10, 0, -1, 0));
-                               len += sprintf(buffer + len,
-                                       "   carrier extension           %s\n",
-                                       SkNumber(test_buf, pPnmiStat->StatRxCextCts,
-                                       10, 0, -1, 0));
-                               len += sprintf(buffer + len,
-                                       "   too short                   %s\n",
-                                       SkNumber(test_buf, pPnmiStat->StatRxShortsCts,
-                                       10, 0, -1, 0));
-                               len += sprintf(buffer + len,
-                                       "   symbol                      %s\n",
-                                       SkNumber(test_buf, pPnmiStat->StatRxSymbolCts,
-                                       10, 0, -1, 0));
-                               len += sprintf(buffer + len,
-                                       "   LLC MAC size                %s\n",
-                                       SkNumber(test_buf, pPnmiStat->StatRxIRLengthCts,
-                                       10, 0, -1, 0));
-                               len += sprintf(buffer + len,
-                                       "   carrier event               %s\n",
-                                       SkNumber(test_buf, pPnmiStat->StatRxCarrierCts,
-                                       10, 0, -1, 0));
-                               len += sprintf(buffer + len,
-                                       "   jabber                      %s\n",
-                                       SkNumber(test_buf, pPnmiStat->StatRxJabberCts,
-                                       10, 0, -1, 0));
-
-
-                               /*Transmit statistics */
-                               len += sprintf(buffer + len,
-                               "\nTransmit statistics\n\n");
-
-                               len += sprintf(buffer + len,
-                                       "Transmited bytes               %s\n",
-                                       SkNumber(test_buf, pPnmiStat->StatTxOctetsOkCts,
-                                       10,0,-1,0));
-                               len += sprintf(buffer + len,
-                                       "Transmited packets             %s\n",
-                                       SkNumber(test_buf, pPnmiStat->StatTxOkCts,
-                                       10,0,-1,0));
-                               len += sprintf(buffer + len,
-                                       "Transmit errors                %s\n",
-                                       SkNumber(test_buf, pPnmiStat->StatTxSingleCollisionCts,
-                                       10,0,-1,0));
-                               len += sprintf(buffer + len,
-                                       "Transmit dropped               %s\n",
-                                       SkNumber(test_buf, pPnmiStruct->TxNoBufCts,
-                                       10,0,-1,0));
-                               len += sprintf(buffer + len,
-                                       "Transmit collisions            %s\n",
-                                       SkNumber(test_buf, pPnmiStat->StatTxSingleCollisionCts,
-                                       10,0,-1,0));
-                               len += sprintf(buffer + len,
-                                       "Transmit errors types\n");
-                               len += sprintf(buffer + len,
-                                       "   excessive collision         %ld\n",
-                                       pAC->stats.tx_aborted_errors);
-                               len += sprintf(buffer + len,
-                                       "   carrier                     %s\n",
-                                       SkNumber(test_buf, pPnmiStat->StatTxCarrierCts,
-                                       10, 0, -1, 0));
-                               len += sprintf(buffer + len,
-                                       "   fifo underrun               %s\n",
-                                       SkNumber(test_buf, pPnmiStat->StatTxFifoUnderrunCts,
-                                       10, 0, -1, 0));
-                               len += sprintf(buffer + len,
-                                       "   heartbeat                   %s\n",
-                                       SkNumber(test_buf, pPnmiStat->StatTxCarrierCts,
-                                       10, 0, -1, 0));
-                               len += sprintf(buffer + len,
-                                       "   window                      %ld\n",
-                                       pAC->stats.tx_window_errors);
-
-                       }
-               }
-               SkgeProcDev = next;
-       }
-       if (offset >= len) {
-               *eof = 1;
-               return 0;
-       }
-
-       *buffer_location = buffer + offset;
-       if (buffer_length >= len - offset) {
-               *eof = 1;
-       }
-       return (min_t(int, buffer_length, len - offset));
-}
-
-
-/*****************************************************************************
- *
- * SkDoDiv - convert 64bit number
- *
- * Description:
- *     This function "converts" a long long number.
- *
- * Returns:
- *     remainder of division
- */
-static long SkDoDiv (long long Dividend, int Divisor, long long *pErg)
-{
-       long Rest;
-       long long Ergebnis;
-       long Akku;
-
-
-       Akku = Dividend >> 32;
-
-       Ergebnis = ((long long) (Akku / Divisor)) << 32;
-       Rest = Akku % Divisor;
-
-       Akku = Rest << 16;
-       Akku |= ((Dividend & 0xFFFF0000) >> 16);
-
-
-       Ergebnis += ((long long) (Akku / Divisor)) << 16;
-       Rest = Akku % Divisor;
-
-       Akku = Rest << 16;
-       Akku |= (Dividend & 0xFFFF);
-
-       Ergebnis += (Akku / Divisor);
-       Rest = Akku % Divisor;
-
-       *pErg = Ergebnis;
-       return (Rest);
-}
-
-
-#if 0
-#define do_div(n,base) ({ \
-long long __res; \
-__res = ((unsigned long long) n) % (unsigned) base; \
-n = ((unsigned long long) n) / (unsigned) base; \
-__res; })
-
-#endif
-
-
-/*****************************************************************************
- *
- * SkNumber - Print results
- *
- * Description:
- *     This function converts a long long number into a string.
- *
- * Returns:
- *     number as string
- */
-char * SkNumber(char * str, long long num, int base, int size, int precision
-       ,int type)
-{
-       char c,sign,tmp[66], *strorg = str;
-       const char *digits="0123456789abcdefghijklmnopqrstuvwxyz";
-       int i;
-
-       if (type & LARGE)
-               digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
-       if (type & LEFT)
-               type &= ~ZEROPAD;
-       if (base < 2 || base > 36)
-               return 0;
-       c = (type & ZEROPAD) ? '0' : ' ';
-       sign = 0;
-       if (type & SIGN) {
-               if (num < 0) {
-                       sign = '-';
-                       num = -num;
-                       size--;
-               } else if (type & PLUS) {
-                       sign = '+';
-                       size--;
-               } else if (type & SPACE) {
-                       sign = ' ';
-                       size--;
-               }
-       }
-       if (type & SPECIALX) {
-               if (base == 16)
-                       size -= 2;
-               else if (base == 8)
-                       size--;
-       }
-       i = 0;
-       if (num == 0)
-               tmp[i++]='0';
-       else while (num != 0)
-               tmp[i++] = digits[SkDoDiv(num,base, &num)];
-
-       if (i > precision)
-               precision = i;
-       size -= precision;
-       if (!(type&(ZEROPAD+LEFT)))
-               while(size-->0)
-                       *str++ = ' ';
-       if (sign)
-               *str++ = sign;
-       if (type & SPECIALX) {
-               if (base==8)
-                       *str++ = '0';
-               else if (base==16) {
-                       *str++ = '0';
-                       *str++ = digits[33];
-               }
-       }
-       if (!(type & LEFT))
-               while (size-- > 0)
-                       *str++ = c;
-       while (i < precision--)
-               *str++ = '0';
-       while (i-- > 0)
-               *str++ = tmp[i];
-       while (size-- > 0)
-               *str++ = ' ';
-
-       str[0] = '\0';
-
-       return strorg;
-}
+/******************************************************************************
+ *
+ * Name:    skproc.c
+ * Project:    GEnesis, PCI Gigabit Ethernet Adapter
+ * Version:    $Revision: 1.1.1.1 $
+ * Date:    $Date: 2009/03/25 22:22:09 $
+ * Purpose:    Funktions to display statictic data
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ *     (C)Copyright 1998-2003 SysKonnect GmbH.
+ *
+ *     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.
+ *
+ *     Created 22-Nov-2000
+ *     Author: Mirko Lindner (mlindner@syskonnect.de)
+ *
+ *     The information in this file is provided "AS IS" without warranty.
+ *
+ ******************************************************************************/
+/******************************************************************************
+ *
+ * History:
+ *
+ *     $Log: skproc.c,v $
+ *     Revision 1.1.1.1  2009/03/25 22:22:09  kenagy
+ *     no message
+ *     
+ *     Revision 1.4  2003/02/25 14:16:37  mlindner
+ *     Fix: Copyright statement
+ *
+ *     Revision 1.3  2002/10/02 12:59:51  mlindner
+ *     Add: Support for Yukon
+ *     Add: Speed check and setup
+ *     Add: Merge source for kernel 2.2.x and 2.4.x
+ *     Add: Read sensor names directly from VPD
+ *     Fix: Volt values
+ *
+ *     Revision 1.2.2.7  2002/01/14 12:45:15  mlindner
+ *     Fix: Editorial changes
+ *
+ *     Revision 1.2.2.6  2001/12/06 15:26:07  mlindner
+ *     Fix: Return value of proc_read
+ *
+ *     Revision 1.2.2.5  2001/12/06 09:57:39  mlindner
+ *     New ProcFs entries
+ *
+ *     Revision 1.2.2.4  2001/09/05 12:16:02  mlindner
+ *     Add: New ProcFs entries
+ *     Fix: Counter Errors (Jumbo == to long errors)
+ *     Fix: Kernel error compilation
+ *     Fix: too short counters
+ *
+ *     Revision 1.2.2.3  2001/06/25 07:26:26  mlindner
+ *     Add: More error messages
+ *
+ *     Revision 1.2.2.2  2001/03/15 12:50:13  mlindner
+ *     fix: ProcFS owner protection
+ *
+ *     Revision 1.2.2.1  2001/03/12 16:43:48  mlindner
+ *     chg: 2.4 requirements for procfs
+ *
+ *     Revision 1.1  2001/01/22 14:15:31  mlindner
+ *     added ProcFs functionality
+ *     Dual Net functionality integrated
+ *     Rlmt networks added
+ *
+ *
+ ******************************************************************************/
+
+#include <config.h>
+
+#include <linux/proc_fs.h>
+
+#include "h/skdrv1st.h"
+#include "h/skdrv2nd.h"
+#define ZEROPAD                1               /* pad with zero */
+#define SIGN           2               /* unsigned/signed long */
+#define PLUS           4               /* show plus */
+#define SPACE          8               /* space if plus */
+#define LEFT           16              /* left justified */
+#define SPECIALX       32              /* 0x */
+#define LARGE          64
+
+extern SK_AC *pACList;
+extern struct net_device *SkGeRootDev;
+
+extern char *SkNumber (char *str,
+                      long long num,
+                      int base,
+                      int size,
+                      int precision,
+                      int type);
+
+
+/*****************************************************************************
+ *
+ *     proc_read - print "summaries" entry
+ *
+ * Description:
+ *  This function fills the proc entry with statistic data about
+ *  the ethernet device.
+ *
+ *
+ * Returns: buffer with statistic data
+ *
+ */
+int proc_read(char *buffer,
+char **buffer_location,
+off_t offset,
+int buffer_length,
+int *eof,
+void *data)
+{
+       int len = 0;
+       int t;
+       int i;
+       DEV_NET                 *pNet;
+       SK_AC                   *pAC;
+       char                    test_buf[100];
+       char                    sens_msg[50];
+       unsigned long           Flags;
+       unsigned int            Size;
+       struct SK_NET_DEVICE    *next;
+       struct SK_NET_DEVICE    *SkgeProcDev = SkGeRootDev;
+
+       SK_PNMI_STRUCT_DATA     *pPnmiStruct;
+       SK_PNMI_STAT            *pPnmiStat;
+       struct proc_dir_entry *file = (struct proc_dir_entry*) data;
+
+       while (SkgeProcDev) {
+               pNet = (DEV_NET*) SkgeProcDev->priv;
+               pAC = pNet->pAC;
+               next = pAC->Next;
+               pPnmiStruct = &pAC->PnmiStruct;
+               /* NetIndex in GetStruct is now required, zero is only dummy */
+
+               for (t=pAC->GIni.GIMacsFound; t > 0; t--) {
+                       if ((pAC->GIni.GIMacsFound == 2) && pAC->RlmtNets == 1)
+                               t--;
+
+                       spin_lock_irqsave(&pAC->SlowPathLock, Flags);
+                       Size = SK_PNMI_STRUCT_SIZE;
+                       SkPnmiGetStruct(pAC, pAC->IoBase,
+                               pPnmiStruct, &Size, t-1);
+                       spin_unlock_irqrestore(&pAC->SlowPathLock, Flags);
+
+                       if (strcmp(pAC->dev[t-1]->name, file->name) == 0) {
+                               pPnmiStat = &pPnmiStruct->Stat[0];
+                               len = sprintf(buffer,
+                                       "\nDetailed statistic for device %s\n",
+                                       pAC->dev[t-1]->name);
+                               len += sprintf(buffer + len,
+                                       "=======================================\n");
+
+                               /* Board statistics */
+                               len += sprintf(buffer + len,
+                                       "\nBoard statistics\n\n");
+                               len += sprintf(buffer + len,
+                                       "Active Port                    %c\n",
+                                       'A' + pAC->Rlmt.Net[t-1].Port[pAC->Rlmt.
+                                       Net[t-1].PrefPort]->PortNumber);
+                               len += sprintf(buffer + len,
+                                       "Preferred Port                 %c\n",
+                                       'A' + pAC->Rlmt.Net[t-1].Port[pAC->Rlmt.
+                                       Net[t-1].PrefPort]->PortNumber);
+
+                               len += sprintf(buffer + len,
+                                       "Bus speed (MHz)                %d\n",
+                                       pPnmiStruct->BusSpeed);
+
+                               len += sprintf(buffer + len,
+                                       "Bus width (Bit)                %d\n",
+                                       pPnmiStruct->BusWidth);
+                               len += sprintf(buffer + len,
+                                       "Hardware revision              v%d.%d\n",
+                                       (pAC->GIni.GIPciHwRev >> 4) & 0x0F,
+                                       pAC->GIni.GIPciHwRev & 0x0F);
+
+                               /* Print sensor informations */
+                               for (i=0; i < pAC->I2c.MaxSens; i ++) {
+                                       /* Check type */
+                                       switch (pAC->I2c.SenTable[i].SenType) {
+                                       case 1:
+                                               strcpy(sens_msg, pAC->I2c.SenTable[i].SenDesc);
+                                               strcat(sens_msg, " (C)");
+                                               len += sprintf(buffer + len,
+                                                       "%-25s      %d.%02d\n",
+                                                       sens_msg,
+                                                       pAC->I2c.SenTable[i].SenValue / 10,
+                                                       pAC->I2c.SenTable[i].SenValue % 10);
+
+                                               strcpy(sens_msg, pAC->I2c.SenTable[i].SenDesc);
+                                               strcat(sens_msg, " (F)");
+                                               len += sprintf(buffer + len,
+                                                       "%-25s      %d.%02d\n",
+                                                       sens_msg,
+                                                       ((((pAC->I2c.SenTable[i].SenValue)
+                                                       *10)*9)/5 + 3200)/100,
+                                                       ((((pAC->I2c.SenTable[i].SenValue)
+                                                       *10)*9)/5 + 3200) % 10);
+                                               break;
+                                       case 2:
+                                               strcpy(sens_msg, pAC->I2c.SenTable[i].SenDesc);
+                                               strcat(sens_msg, " (V)");
+                                               len += sprintf(buffer + len,
+                                                       "%-25s      %d.%03d\n",
+                                                       sens_msg,
+                                                       pAC->I2c.SenTable[i].SenValue / 1000,
+                                                       pAC->I2c.SenTable[i].SenValue % 1000);
+                                               break;
+                                       case 3:
+                                               strcpy(sens_msg, pAC->I2c.SenTable[i].SenDesc);
+                                               strcat(sens_msg, " (rpm)");
+                                               len += sprintf(buffer + len,
+                                                       "%-25s      %d\n",
+                                                       sens_msg,
+                                                       pAC->I2c.SenTable[i].SenValue);
+                                               break;
+                                       default:
+                                               break;
+                                       }
+                               }
+
+                               /*Receive statistics */
+                               len += sprintf(buffer + len,
+                               "\nReceive statistics\n\n");
+
+                               len += sprintf(buffer + len,
+                                       "Received bytes                 %s\n",
+                                       SkNumber(test_buf, pPnmiStat->StatRxOctetsOkCts,
+                                       10,0,-1,0));
+                               len += sprintf(buffer + len,
+                                       "Received packets               %s\n",
+                                       SkNumber(test_buf, pPnmiStat->StatRxOkCts,
+                                       10,0,-1,0));
+#if 0
+                               if (pAC->GIni.GP[0].PhyType == SK_PHY_XMAC &&
+                                       pAC->HWRevision < 12) {
+                                       pPnmiStruct->InErrorsCts = pPnmiStruct->InErrorsCts -
+                                               pPnmiStat->StatRxShortsCts;
+                                       pPnmiStat->StatRxShortsCts = 0;
+                               }
+#endif
+                               if (pNet->Mtu > 1500)
+                                       pPnmiStruct->InErrorsCts = pPnmiStruct->InErrorsCts -
+                                               pPnmiStat->StatRxTooLongCts;
+
+                               len += sprintf(buffer + len,
+                                       "Receive errors                 %s\n",
+                                       SkNumber(test_buf, pPnmiStruct->InErrorsCts,
+                                       10,0,-1,0));
+                               len += sprintf(buffer + len,
+                                       "Receive drops                  %s\n",
+                                       SkNumber(test_buf, pPnmiStruct->RxNoBufCts,
+                                       10,0,-1,0));
+                               len += sprintf(buffer + len,
+                                       "Received multicast             %s\n",
+                                       SkNumber(test_buf, pPnmiStat->StatRxMulticastOkCts,
+                                       10,0,-1,0));
+                               len += sprintf(buffer + len,
+                                       "Receive error types\n");
+                               len += sprintf(buffer + len,
+                                       "   length                      %s\n",
+                                       SkNumber(test_buf, pPnmiStat->StatRxRuntCts,
+                                       10, 0, -1, 0));
+                               len += sprintf(buffer + len,
+                                       "   buffer overflow             %s\n",
+                                       SkNumber(test_buf, pPnmiStat->StatRxFifoOverflowCts,
+                                       10, 0, -1, 0));
+                               len += sprintf(buffer + len,
+                                       "   bad crc                     %s\n",
+                                       SkNumber(test_buf, pPnmiStat->StatRxFcsCts,
+                                       10, 0, -1, 0));
+                               len += sprintf(buffer + len,
+                                       "   framing                     %s\n",
+                                       SkNumber(test_buf, pPnmiStat->StatRxFramingCts,
+                                       10, 0, -1, 0));
+                               len += sprintf(buffer + len,
+                                       "   missed frames               %s\n",
+                                       SkNumber(test_buf, pPnmiStat->StatRxMissedCts,
+                                       10, 0, -1, 0));
+
+                               if (pNet->Mtu > 1500)
+                                       pPnmiStat->StatRxTooLongCts = 0;
+
+                               len += sprintf(buffer + len,
+                                       "   too long                    %s\n",
+                                       SkNumber(test_buf, pPnmiStat->StatRxTooLongCts,
+                                       10, 0, -1, 0));
+                               len += sprintf(buffer + len,
+                                       "   carrier extension           %s\n",
+                                       SkNumber(test_buf, pPnmiStat->StatRxCextCts,
+                                       10, 0, -1, 0));
+                               len += sprintf(buffer + len,
+                                       "   too short                   %s\n",
+                                       SkNumber(test_buf, pPnmiStat->StatRxShortsCts,
+                                       10, 0, -1, 0));
+                               len += sprintf(buffer + len,
+                                       "   symbol                      %s\n",
+                                       SkNumber(test_buf, pPnmiStat->StatRxSymbolCts,
+                                       10, 0, -1, 0));
+                               len += sprintf(buffer + len,
+                                       "   LLC MAC size                %s\n",
+                                       SkNumber(test_buf, pPnmiStat->StatRxIRLengthCts,
+                                       10, 0, -1, 0));
+                               len += sprintf(buffer + len,
+                                       "   carrier event               %s\n",
+                                       SkNumber(test_buf, pPnmiStat->StatRxCarrierCts,
+                                       10, 0, -1, 0));
+                               len += sprintf(buffer + len,
+                                       "   jabber                      %s\n",
+                                       SkNumber(test_buf, pPnmiStat->StatRxJabberCts,
+                                       10, 0, -1, 0));
+
+
+                               /*Transmit statistics */
+                               len += sprintf(buffer + len,
+                               "\nTransmit statistics\n\n");
+
+                               len += sprintf(buffer + len,
+                                       "Transmited bytes               %s\n",
+                                       SkNumber(test_buf, pPnmiStat->StatTxOctetsOkCts,
+                                       10,0,-1,0));
+                               len += sprintf(buffer + len,
+                                       "Transmited packets             %s\n",
+                                       SkNumber(test_buf, pPnmiStat->StatTxOkCts,
+                                       10,0,-1,0));
+                               len += sprintf(buffer + len,
+                                       "Transmit errors                %s\n",
+                                       SkNumber(test_buf, pPnmiStat->StatTxSingleCollisionCts,
+                                       10,0,-1,0));
+                               len += sprintf(buffer + len,
+                                       "Transmit dropped               %s\n",
+                                       SkNumber(test_buf, pPnmiStruct->TxNoBufCts,
+                                       10,0,-1,0));
+                               len += sprintf(buffer + len,
+                                       "Transmit collisions            %s\n",
+                                       SkNumber(test_buf, pPnmiStat->StatTxSingleCollisionCts,
+                                       10,0,-1,0));
+                               len += sprintf(buffer + len,
+                                       "Transmit errors types\n");
+                               len += sprintf(buffer + len,
+                                       "   excessive collision         %ld\n",
+                                       pAC->stats.tx_aborted_errors);
+                               len += sprintf(buffer + len,
+                                       "   carrier                     %s\n",
+                                       SkNumber(test_buf, pPnmiStat->StatTxCarrierCts,
+                                       10, 0, -1, 0));
+                               len += sprintf(buffer + len,
+                                       "   fifo underrun               %s\n",
+                                       SkNumber(test_buf, pPnmiStat->StatTxFifoUnderrunCts,
+                                       10, 0, -1, 0));
+                               len += sprintf(buffer + len,
+                                       "   heartbeat                   %s\n",
+                                       SkNumber(test_buf, pPnmiStat->StatTxCarrierCts,
+                                       10, 0, -1, 0));
+                               len += sprintf(buffer + len,
+                                       "   window                      %ld\n",
+                                       pAC->stats.tx_window_errors);
+
+                       }
+               }
+               SkgeProcDev = next;
+       }
+       if (offset >= len) {
+               *eof = 1;
+               return 0;
+       }
+
+       *buffer_location = buffer + offset;
+       if (buffer_length >= len - offset) {
+               *eof = 1;
+       }
+       return (min_t(int, buffer_length, len - offset));
+}
+
+
+/*****************************************************************************
+ *
+ * SkDoDiv - convert 64bit number
+ *
+ * Description:
+ *     This function "converts" a long long number.
+ *
+ * Returns:
+ *     remainder of division
+ */
+static long SkDoDiv (long long Dividend, int Divisor, long long *pErg)
+{
+       long Rest;
+       long long Ergebnis;
+       long Akku;
+
+
+       Akku = Dividend >> 32;
+
+       Ergebnis = ((long long) (Akku / Divisor)) << 32;
+       Rest = Akku % Divisor;
+
+       Akku = Rest << 16;
+       Akku |= ((Dividend & 0xFFFF0000) >> 16);
+
+
+       Ergebnis += ((long long) (Akku / Divisor)) << 16;
+       Rest = Akku % Divisor;
+
+       Akku = Rest << 16;
+       Akku |= (Dividend & 0xFFFF);
+
+       Ergebnis += (Akku / Divisor);
+       Rest = Akku % Divisor;
+
+       *pErg = Ergebnis;
+       return (Rest);
+}
+
+
+#if 0
+#define do_div(n,base) ({ \
+long long __res; \
+__res = ((unsigned long long) n) % (unsigned) base; \
+n = ((unsigned long long) n) / (unsigned) base; \
+__res; })
+
+#endif
+
+
+/*****************************************************************************
+ *
+ * SkNumber - Print results
+ *
+ * Description:
+ *     This function converts a long long number into a string.
+ *
+ * Returns:
+ *     number as string
+ */
+char * SkNumber(char * str, long long num, int base, int size, int precision
+       ,int type)
+{
+       char c,sign,tmp[66], *strorg = str;
+       const char *digits="0123456789abcdefghijklmnopqrstuvwxyz";
+       int i;
+
+       if (type & LARGE)
+               digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+       if (type & LEFT)
+               type &= ~ZEROPAD;
+       if (base < 2 || base > 36)
+               return 0;
+       c = (type & ZEROPAD) ? '0' : ' ';
+       sign = 0;
+       if (type & SIGN) {
+               if (num < 0) {
+                       sign = '-';
+                       num = -num;
+                       size--;
+               } else if (type & PLUS) {
+                       sign = '+';
+                       size--;
+               } else if (type & SPACE) {
+                       sign = ' ';
+                       size--;
+               }
+       }
+       if (type & SPECIALX) {
+               if (base == 16)
+                       size -= 2;
+               else if (base == 8)
+                       size--;
+       }
+       i = 0;
+       if (num == 0)
+               tmp[i++]='0';
+       else while (num != 0)
+               tmp[i++] = digits[SkDoDiv(num,base, &num)];
+
+       if (i > precision)
+               precision = i;
+       size -= precision;
+       if (!(type&(ZEROPAD+LEFT)))
+               while(size-->0)
+                       *str++ = ' ';
+       if (sign)
+               *str++ = sign;
+       if (type & SPECIALX) {
+               if (base==8)
+                       *str++ = '0';
+               else if (base==16) {
+                       *str++ = '0';
+                       *str++ = digits[33];
+               }
+       }
+       if (!(type & LEFT))
+               while (size-- > 0)
+                       *str++ = c;
+       while (i < precision--)
+               *str++ = '0';
+       while (i-- > 0)
+               *str++ = tmp[i];
+       while (size-- > 0)
+               *str++ = ' ';
+
+       str[0] = '\0';
+
+       return strorg;
+}
diff -Naur u-boot-2009.03_orig/drivers/net/sk98lin/skqueue.c u-boot-2009.03/drivers/net/sk98lin/skqueue.c
--- u-boot-2009.03_orig/drivers/net/sk98lin/skqueue.c   2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/drivers/net/sk98lin/skqueue.c        2009-03-31 14:54:29.721876800 -0700
@@ -1,238 +1,241 @@
-/******************************************************************************
- *
- * Name:       skqueue.c
- * Project:    GEnesis, PCI Gigabit Ethernet Adapter
- * Version:    $Revision: 1.18 $
- * Date:       $Date: 2002/05/07 14:11:11 $
- * Purpose:    Management of an event queue.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- *     (C)Copyright 1998,1999 SysKonnect,
- *     a business unit of Schneider & Koch & Co. Datensysteme GmbH.
- *
- *     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.
- *
- *     The information in this file is provided "AS IS" without warranty.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * History:
- *
- *     $Log: skqueue.c,v $
- *     Revision 1.18  2002/05/07 14:11:11  rwahl
- *     Fixed Watcom Precompiler error.
- *
- *     Revision 1.17  2002/03/25 10:06:41  mkunz
- *     SkIgnoreEvent deleted
- *
- *     Revision 1.16  2002/03/15 10:51:59  mkunz
- *     Added event classes for link aggregation
- *
- *     Revision 1.15  1999/11/22 13:36:29  cgoos
- *     Changed license header to GPL.
- *
- *     Revision 1.14  1998/10/15 15:11:35  gklug
- *     fix: ID_sccs to SysKonnectFileId
- *
- *     Revision 1.13  1998/09/08 08:47:52  gklug
- *     add: init level handling
- *
- *     Revision 1.12  1998/09/08 07:43:20  gklug
- *     fix: Sirq Event function name
- *
- *     Revision 1.11  1998/09/08 05:54:34  gklug
- *     chg: define SK_CSUM is replaced by SK_USE_CSUM
- *
- *     Revision 1.10  1998/09/03 14:14:49  gklug
- *     add: CSUM and HWAC Eventclass and function.
- *
- *     Revision 1.9  1998/08/19 09:50:50  gklug
- *     fix: remove struct keyword from c-code (see CCC) add typedefs
- *
- *     Revision 1.8  1998/08/17 13:43:11  gklug
- *     chg: Parameter will be union of 64bit para, 2 times SK_U32 or SK_PTR
- *
- *     Revision 1.7  1998/08/14 07:09:11  gklug
- *     fix: chg pAc -> pAC
- *
- *     Revision 1.6  1998/08/11 12:13:14  gklug
- *     add: return code feature of Event service routines
- *     add: correct Error log calls
- *
- *     Revision 1.5  1998/08/07 12:53:45  gklug
- *     fix: first compiled version
- *
- *     Revision 1.4  1998/08/07 09:20:48  gklug
- *     adapt functions to C coding conventions.
- *
- *     Revision 1.3  1998/08/05 11:29:32  gklug
- *     rmv: Timer event entry. Timer will queue event directly
- *
- *     Revision 1.2  1998/07/31 11:22:40  gklug
- *     Initial version
- *
- *     Revision 1.1  1998/07/30 15:14:01  gklug
- *     Initial version. Adapted from SMT
- *
- *
- *
- ******************************************************************************/
-
-
-#include <config.h>
-
-/*
-       Event queue and dispatcher
-*/
-static const char SysKonnectFileId[] =
-       "$Header: /usr56/projects/ge/schedule/skqueue.c,v 1.18 2002/05/07 14:11:11 rwahl Exp $" ;
-
-#include "h/skdrv1st.h"                /* Driver Specific Definitions */
-#include "h/skqueue.h"         /* Queue Definitions */
-#include "h/skdrv2nd.h"                /* Adapter Control- and Driver specific Def. */
-
-#ifdef __C2MAN__
-/*
-       Event queue management.
-
-       General Description:
-
- */
-intro()
-{}
-#endif
-
-#define PRINTF(a,b,c)
-
-/*
- * init event queue management
- *
- * Must be called during init level 0.
- */
-void   SkEventInit(
-SK_AC  *pAC,   /* Adapter context */
-SK_IOC Ioc,    /* IO context */
-int    Level)  /* Init level */
-{
-       switch (Level) {
-       case SK_INIT_DATA:
-               pAC->Event.EvPut = pAC->Event.EvGet = pAC->Event.EvQueue ;
-               break;
-       default:
-               break;
-       }
-}
-
-/*
- * add event to queue
- */
-void   SkEventQueue(
-SK_AC          *pAC,   /* Adapters context */
-SK_U32         Class,  /* Event Class */
-SK_U32         Event,  /* Event to be queued */
-SK_EVPARA      Para)   /* Event parameter */
-{
-       pAC->Event.EvPut->Class = Class ;
-       pAC->Event.EvPut->Event = Event ;
-       pAC->Event.EvPut->Para = Para ;
-       if (++pAC->Event.EvPut == &pAC->Event.EvQueue[SK_MAX_EVENT])
-               pAC->Event.EvPut = pAC->Event.EvQueue ;
-
-       if (pAC->Event.EvPut == pAC->Event.EvGet) {
-               SK_ERR_LOG(pAC, SK_ERRCL_NORES, SKERR_Q_E001, SKERR_Q_E001MSG) ;
-       }
-}
-
-/*
- * event dispatcher
- *     while event queue is not empty
- *             get event from queue
- *             send command to state machine
- *     end
- *     return error reported by individual Event function
- *             0 if no error occured.
- */
-int    SkEventDispatcher(
-SK_AC  *pAC,   /* Adapters Context */
-SK_IOC Ioc)    /* Io context */
-{
-       SK_EVENTELEM    *pEv ;  /* pointer into queue */
-       SK_U32                  Class ;
-       int                     Rtv ;
-
-       pEv = pAC->Event.EvGet ;
-       PRINTF("dispatch get %x put %x\n",pEv,pAC->Event.ev_put) ;
-       while (pEv != pAC->Event.EvPut) {
-               PRINTF("dispatch Class %d Event %d\n",pEv->Class,pEv->Event) ;
-               switch(Class = pEv->Class) {
-#ifndef SK_USE_LAC_EV
-               case SKGE_RLMT :        /* RLMT Event */
-                       Rtv = SkRlmtEvent(pAC,Ioc,pEv->Event,pEv->Para);
-                       break ;
-               case SKGE_I2C :         /* I2C Event */
-                       Rtv = SkI2cEvent(pAC,Ioc,pEv->Event,pEv->Para);
-                       break ;
-               case SKGE_PNMI :
-                       Rtv = SkPnmiEvent(pAC,Ioc,pEv->Event,pEv->Para);
-                       break ;
-#endif /* SK_USE_LAC_EV */
-               case SKGE_DRV :         /* Driver Event */
-                       Rtv = SkDrvEvent(pAC,Ioc,pEv->Event,pEv->Para);
-                       break ;
-#ifndef SK_USE_SW_TIMER
-               case SKGE_HWAC :
-                       Rtv = SkGeSirqEvent(pAC,Ioc,pEv->Event,pEv->Para);
-                       break ;
-#else /* !SK_USE_SW_TIMER */
-       case SKGE_SWT :
-                       Rtv = SkSwtEvent(pAC,Ioc,pEv->Event,pEv->Para);
-                       break ;
-#endif /* !SK_USE_SW_TIMER */
-#ifdef SK_USE_LAC_EV
-               case SKGE_LACP :
-                       Rtv = SkLacpEvent(pAC,Ioc,pEv->Event,pEv->Para);
-                       break ;
-               case SKGE_RSF :
-                       Rtv = SkRsfEvent(pAC,Ioc,pEv->Event,pEv->Para);
-                       break ;
-               case SKGE_MARKER :
-                       Rtv = SkMarkerEvent(pAC,Ioc,pEv->Event,pEv->Para);
-                       break ;
-               case SKGE_FD :
-                       Rtv = SkFdEvent(pAC,Ioc,pEv->Event,pEv->Para);
-                       break ;
-#endif /* SK_USE_LAC_EV */
-#ifdef SK_USE_CSUM
-               case SKGE_CSUM :
-                       Rtv = SkCsEvent(pAC,Ioc,pEv->Event,pEv->Para);
-                       break ;
-#endif /* SK_USE_CSUM */
-               default :
-                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_Q_E002,
-                               SKERR_Q_E002MSG) ;
-                       Rtv = 0;
-               }
-
-               if (Rtv != 0) {
-                       return(Rtv) ;
-               }
-
-               if (++pEv == &pAC->Event.EvQueue[SK_MAX_EVENT])
-                       pEv = pAC->Event.EvQueue ;
-
-               /* Renew get: it is used in queue_events to detect overruns */
-               pAC->Event.EvGet = pEv;
-       }
-
-       return(0) ;
-}
-
-/* End of file */
+/******************************************************************************
+ *
+ * Name:       skqueue.c
+ * Project:    GEnesis, PCI Gigabit Ethernet Adapter
+ * Version:    $Revision: 1.1.1.1 $
+ * Date:       $Date: 2009/03/25 22:22:09 $
+ * Purpose:    Management of an event queue.
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ *     (C)Copyright 1998,1999 SysKonnect,
+ *     a business unit of Schneider & Koch & Co. Datensysteme GmbH.
+ *
+ *     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.
+ *
+ *     The information in this file is provided "AS IS" without warranty.
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ * History:
+ *
+ *     $Log: skqueue.c,v $
+ *     Revision 1.1.1.1  2009/03/25 22:22:09  kenagy
+ *     no message
+ *     
+ *     Revision 1.18  2002/05/07 14:11:11  rwahl
+ *     Fixed Watcom Precompiler error.
+ *
+ *     Revision 1.17  2002/03/25 10:06:41  mkunz
+ *     SkIgnoreEvent deleted
+ *
+ *     Revision 1.16  2002/03/15 10:51:59  mkunz
+ *     Added event classes for link aggregation
+ *
+ *     Revision 1.15  1999/11/22 13:36:29  cgoos
+ *     Changed license header to GPL.
+ *
+ *     Revision 1.14  1998/10/15 15:11:35  gklug
+ *     fix: ID_sccs to SysKonnectFileId
+ *
+ *     Revision 1.13  1998/09/08 08:47:52  gklug
+ *     add: init level handling
+ *
+ *     Revision 1.12  1998/09/08 07:43:20  gklug
+ *     fix: Sirq Event function name
+ *
+ *     Revision 1.11  1998/09/08 05:54:34  gklug
+ *     chg: define SK_CSUM is replaced by SK_USE_CSUM
+ *
+ *     Revision 1.10  1998/09/03 14:14:49  gklug
+ *     add: CSUM and HWAC Eventclass and function.
+ *
+ *     Revision 1.9  1998/08/19 09:50:50  gklug
+ *     fix: remove struct keyword from c-code (see CCC) add typedefs
+ *
+ *     Revision 1.8  1998/08/17 13:43:11  gklug
+ *     chg: Parameter will be union of 64bit para, 2 times SK_U32 or SK_PTR
+ *
+ *     Revision 1.7  1998/08/14 07:09:11  gklug
+ *     fix: chg pAc -> pAC
+ *
+ *     Revision 1.6  1998/08/11 12:13:14  gklug
+ *     add: return code feature of Event service routines
+ *     add: correct Error log calls
+ *
+ *     Revision 1.5  1998/08/07 12:53:45  gklug
+ *     fix: first compiled version
+ *
+ *     Revision 1.4  1998/08/07 09:20:48  gklug
+ *     adapt functions to C coding conventions.
+ *
+ *     Revision 1.3  1998/08/05 11:29:32  gklug
+ *     rmv: Timer event entry. Timer will queue event directly
+ *
+ *     Revision 1.2  1998/07/31 11:22:40  gklug
+ *     Initial version
+ *
+ *     Revision 1.1  1998/07/30 15:14:01  gklug
+ *     Initial version. Adapted from SMT
+ *
+ *
+ *
+ ******************************************************************************/
+
+
+#include <config.h>
+
+/*
+       Event queue and dispatcher
+*/
+static const char SysKonnectFileId[] =
+       "$Header: C:\qaz\__CVS_ROOT/units/or1200_soc/sw/u-boot-2009.03/drivers/net/sk98lin/skqueue.c,v 1.1.1.1 2009/03/25 22:22:09 kenagy Exp $" ;
+
+#include "h/skdrv1st.h"                /* Driver Specific Definitions */
+#include "h/skqueue.h"         /* Queue Definitions */
+#include "h/skdrv2nd.h"                /* Adapter Control- and Driver specific Def. */
+
+#ifdef __C2MAN__
+/*
+       Event queue management.
+
+       General Description:
+
+ */
+intro()
+{}
+#endif
+
+#define PRINTF(a,b,c)
+
+/*
+ * init event queue management
+ *
+ * Must be called during init level 0.
+ */
+void   SkEventInit(
+SK_AC  *pAC,   /* Adapter context */
+SK_IOC Ioc,    /* IO context */
+int    Level)  /* Init level */
+{
+       switch (Level) {
+       case SK_INIT_DATA:
+               pAC->Event.EvPut = pAC->Event.EvGet = pAC->Event.EvQueue ;
+               break;
+       default:
+               break;
+       }
+}
+
+/*
+ * add event to queue
+ */
+void   SkEventQueue(
+SK_AC          *pAC,   /* Adapters context */
+SK_U32         Class,  /* Event Class */
+SK_U32         Event,  /* Event to be queued */
+SK_EVPARA      Para)   /* Event parameter */
+{
+       pAC->Event.EvPut->Class = Class ;
+       pAC->Event.EvPut->Event = Event ;
+       pAC->Event.EvPut->Para = Para ;
+       if (++pAC->Event.EvPut == &pAC->Event.EvQueue[SK_MAX_EVENT])
+               pAC->Event.EvPut = pAC->Event.EvQueue ;
+
+       if (pAC->Event.EvPut == pAC->Event.EvGet) {
+               SK_ERR_LOG(pAC, SK_ERRCL_NORES, SKERR_Q_E001, SKERR_Q_E001MSG) ;
+       }
+}
+
+/*
+ * event dispatcher
+ *     while event queue is not empty
+ *             get event from queue
+ *             send command to state machine
+ *     end
+ *     return error reported by individual Event function
+ *             0 if no error occured.
+ */
+int    SkEventDispatcher(
+SK_AC  *pAC,   /* Adapters Context */
+SK_IOC Ioc)    /* Io context */
+{
+       SK_EVENTELEM    *pEv ;  /* pointer into queue */
+       SK_U32                  Class ;
+       int                     Rtv ;
+
+       pEv = pAC->Event.EvGet ;
+       PRINTF("dispatch get %x put %x\n",pEv,pAC->Event.ev_put) ;
+       while (pEv != pAC->Event.EvPut) {
+               PRINTF("dispatch Class %d Event %d\n",pEv->Class,pEv->Event) ;
+               switch(Class = pEv->Class) {
+#ifndef SK_USE_LAC_EV
+               case SKGE_RLMT :        /* RLMT Event */
+                       Rtv = SkRlmtEvent(pAC,Ioc,pEv->Event,pEv->Para);
+                       break ;
+               case SKGE_I2C :         /* I2C Event */
+                       Rtv = SkI2cEvent(pAC,Ioc,pEv->Event,pEv->Para);
+                       break ;
+               case SKGE_PNMI :
+                       Rtv = SkPnmiEvent(pAC,Ioc,pEv->Event,pEv->Para);
+                       break ;
+#endif /* SK_USE_LAC_EV */
+               case SKGE_DRV :         /* Driver Event */
+                       Rtv = SkDrvEvent(pAC,Ioc,pEv->Event,pEv->Para);
+                       break ;
+#ifndef SK_USE_SW_TIMER
+               case SKGE_HWAC :
+                       Rtv = SkGeSirqEvent(pAC,Ioc,pEv->Event,pEv->Para);
+                       break ;
+#else /* !SK_USE_SW_TIMER */
+       case SKGE_SWT :
+                       Rtv = SkSwtEvent(pAC,Ioc,pEv->Event,pEv->Para);
+                       break ;
+#endif /* !SK_USE_SW_TIMER */
+#ifdef SK_USE_LAC_EV
+               case SKGE_LACP :
+                       Rtv = SkLacpEvent(pAC,Ioc,pEv->Event,pEv->Para);
+                       break ;
+               case SKGE_RSF :
+                       Rtv = SkRsfEvent(pAC,Ioc,pEv->Event,pEv->Para);
+                       break ;
+               case SKGE_MARKER :
+                       Rtv = SkMarkerEvent(pAC,Ioc,pEv->Event,pEv->Para);
+                       break ;
+               case SKGE_FD :
+                       Rtv = SkFdEvent(pAC,Ioc,pEv->Event,pEv->Para);
+                       break ;
+#endif /* SK_USE_LAC_EV */
+#ifdef SK_USE_CSUM
+               case SKGE_CSUM :
+                       Rtv = SkCsEvent(pAC,Ioc,pEv->Event,pEv->Para);
+                       break ;
+#endif /* SK_USE_CSUM */
+               default :
+                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_Q_E002,
+                               SKERR_Q_E002MSG) ;
+                       Rtv = 0;
+               }
+
+               if (Rtv != 0) {
+                       return(Rtv) ;
+               }
+
+               if (++pEv == &pAC->Event.EvQueue[SK_MAX_EVENT])
+                       pEv = pAC->Event.EvQueue ;
+
+               /* Renew get: it is used in queue_events to detect overruns */
+               pAC->Event.EvGet = pEv;
+       }
+
+       return(0) ;
+}
+
+/* End of file */
diff -Naur u-boot-2009.03_orig/drivers/net/sk98lin/skrlmt.c u-boot-2009.03/drivers/net/sk98lin/skrlmt.c
--- u-boot-2009.03_orig/drivers/net/sk98lin/skrlmt.c    2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/drivers/net/sk98lin/skrlmt.c 2009-03-31 14:54:29.768751200 -0700
@@ -1,3504 +1,3507 @@
-/******************************************************************************
- *
- * Name:       skrlmt.c
- * Project:    GEnesis, PCI Gigabit Ethernet Adapter
- * Version:    $Revision: 1.68 $
- * Date:       $Date: 2003/01/31 15:26:56 $
- * Purpose:    Manage links on SK-NET Adapters, esp. redundant ones.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- *     (C)Copyright 1998-2001 SysKonnect GmbH.
- *
- *     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.
- *
- *     The information in this file is provided "AS IS" without warranty.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * History:
- *
- *     $Log: skrlmt.c,v $
- *     Revision 1.68  2003/01/31 15:26:56  rschmidt
- *     Added init for local variables in RlmtInit().
- *
- *     Revision 1.67  2003/01/31 14:12:41  mkunz
- *     single port adapter runs now with two identical MAC addresses
- *
- *     Revision 1.66  2002/09/23 15:14:19  rwahl
- *     - Reset broadcast timestamp on link down.
- *     - Editorial corrections.
- *
- *     Revision 1.65  2002/07/22 14:29:48  rwahl
- *     - Removed BRK statement from debug check.
- *
- *     Revision 1.64  2001/11/28 19:36:14  rwahl
- *     - RLMT Packets sent to an invalid MAC address in CLP/CLPSS mode
- *       (#10650).
- *     - Reworked fix for port switching in CLS mode (#10639)
- *      (no dependency to RLMT module).
- *     - Enabled dbg output for entry/exit of event functions.
- *     - Editorial changes.
- *
- *     Revision 1.63  2001/10/26 07:53:18  afischer
- *     Port switching bug in `check local link` mode
- *
- *     Revision 1.62  2001/07/03 12:16:30  mkunz
- *     New Flag ChgBcPrio (Change priority of last broadcast received)
- *
- *     Revision 1.61  2001/03/14 12:52:08  rassmann
- *     Fixed reporting of active port up/down to PNMI.
- *
- *     Revision 1.60  2001/02/21 16:02:25  gklug
- *     fix: when RLMT starts set Active Port for PNMI
- *
- *     Revision 1.59  2001/02/16 14:38:19  rassmann
- *     Initializing some pointers earlier in the init phase.
- *     Rx Mbufs are freed if the net which they belong to is stopped.
- *
- *     Revision 1.58  2001/02/14 14:06:31  rassmann
- *     Editorial changes.
- *
- *     Revision 1.57  2001/02/05 14:25:26  rassmann
- *     Prepared RLMT for transparent operation.
- *
- *     Revision 1.56  2001/01/30 10:29:09  rassmann
- *     Not checking switching befor RlmtStart.
- *     Editorial changes.
- *
- *     Revision 1.55  2001/01/22 13:41:38  rassmann
- *     Supporting two nets on dual-port adapters.
- *
- *     Revision 1.54  2000/11/30 13:25:07  rassmann
- *     Setting SK_TICK_INCR to 1 by default.
- *
- *     Revision 1.53  2000/11/30 10:48:07  cgoos
- *     Changed definition of SK_RLMT_BC_DELTA.
- *
- *     Revision 1.52  2000/11/27 12:50:03  rassmann
- *     Checking ports after receiving broadcasts.
- *
- *     Revision 1.51  2000/11/17 08:58:00  rassmann
- *     Moved CheckSwitch from SK_RLMT_PACKET_RECEIVED to SK_RLMT_TIM event.
- *
- *     Revision 1.50  2000/11/09 12:24:34  rassmann
- *     Indicating that segmentation check is not running anymore after
- *       SkRlmtCheckSeg().
- *     Restarting segmentation timer after segmentation log.
- *     Editorial changes.
- *
- *     Revision 1.49  1999/11/22 13:38:02  cgoos
- *     Changed license header to GPL.
- *     Added initialization to some variables to avoid compiler warnings.
- *
- *     Revision 1.48  1999/10/04 14:01:17  rassmann
- *     Corrected reaction to reception of BPDU frames (#10441).
- *
- *     Revision 1.47  1999/07/20 12:53:36  rassmann
- *     Fixed documentation errors for lookahead macros.
- *
- *     Revision 1.46  1999/05/28 13:29:16  rassmann
- *     Replaced C++-style comment.
- *
- *     Revision 1.45  1999/05/28 13:28:08  rassmann
- *     Corrected syntax error (xxx).
- *
- *     Revision 1.44  1999/05/28 11:15:54  rassmann
- *     Changed behaviour to reflect Design Spec v1.2.
- *     Controlling Link LED(s).
- *     Introduced RLMT Packet Version field in RLMT Packet.
- *     Newstyle lookahead macros (checking meta-information before looking at
- *       the packet).
- *
- *     Revision 1.43  1999/01/28 13:12:43  rassmann
- *     Corrected Lookahead (bug introduced in previous Rev.).
- *
- *     Revision 1.42  1999/01/28 12:50:41  rassmann
- *     Not using broadcast time stamps in CheckLinkState mode.
- *
- *     Revision 1.41  1999/01/27 14:13:02  rassmann
- *     Monitoring broadcast traffic.
- *     Switching more reliably and not too early if switch is
- *      configured for spanning tree.
- *
- *     Revision 1.40  1999/01/22 13:17:30  rassmann
- *     Informing PNMI of NET_UP.
- *     Clearing RLMT multicast addresses before setting them for the first time.
- *     Reporting segmentation earlier, setting a "quiet time"
- *      after a report.
- *
- *     Revision 1.39  1998/12/10 15:29:53  rassmann
- *     Corrected SuspectStatus in SkRlmtBuildCheckChain().
- *     Corrected CHECK_SEG mode.
- *
- *     Revision 1.38  1998/12/08 13:11:23  rassmann
- *     Stopping SegTimer at RlmtStop.
- *
- *     Revision 1.37  1998/12/07 16:51:42  rassmann
- *     Corrected comments.
- *
- *     Revision 1.36  1998/12/04 10:58:56  rassmann
- *     Setting next pointer to NULL when receiving.
- *
- *     Revision 1.35  1998/12/03 16:12:42  rassmann
- *     Ignoring/correcting illegal PrefPort values.
- *
- *     Revision 1.34  1998/12/01 11:45:35  rassmann
- *     Code cleanup.
- *
- *     Revision 1.33  1998/12/01 10:29:32  rassmann
- *     Starting standby ports before getting the net up.
- *     Checking if a port is started when the link comes up.
- *
- *     Revision 1.32  1998/11/30 16:19:50  rassmann
- *     New default for PortNoRx.
- *
- *     Revision 1.31  1998/11/27 19:17:13  rassmann
- *     Corrected handling of LINK_DOWN coming shortly after LINK_UP.
- *
- *     Revision 1.30  1998/11/24 12:37:31  rassmann
- *     Implemented segmentation check.
- *
- *     Revision 1.29  1998/11/18 13:04:32  rassmann
- *     Secured PortUpTimer event.
- *     Waiting longer before starting standby port(s).
- *
- *     Revision 1.28  1998/11/17 13:43:04  rassmann
- *     Handling (logical) tx failure.
- *     Sending packet on logical address after PORT_SWITCH.
- *
- *     Revision 1.27  1998/11/13 17:09:50  rassmann
- *     Secured some events against being called in wrong state.
- *
- *     Revision 1.26  1998/11/13 16:56:54  rassmann
- *     Added macro version of SkRlmtLookaheadPacket.
- *
- *     Revision 1.25  1998/11/06 18:06:04  rassmann
- *     Corrected timing when RLMT checks fail.
- *     Clearing tx counter earlier in periodical checks.
- *
- *     Revision 1.24  1998/11/05 10:37:27  rassmann
- *     Checking destination address in Lookahead.
- *
- *     Revision 1.23  1998/11/03 13:53:49  rassmann
- *     RLMT should switch now (at least in mode 3).
- *
- *     Revision 1.22  1998/10/29 14:34:49  rassmann
- *     Clearing SK_RLMT struct at startup.
- *     Initializing PortsUp during SK_RLMT_START.
- *
- *     Revision 1.21  1998/10/28 11:30:17  rassmann
- *     Default mode is now SK_RLMT_CHECK_LOC_LINK.
- *
- *     Revision 1.20  1998/10/26 16:02:03  rassmann
- *     Ignoring LINK_DOWN for links that are down.
- *
- *     Revision 1.19  1998/10/22 15:54:01  rassmann
- *     Corrected EtherLen.
- *     Starting Link Check when second port comes up.
- *
- *     Revision 1.18  1998/10/22 11:39:50  rassmann
- *     Corrected signed/unsigned mismatches.
- *     Corrected receive list handling and address recognition.
- *
- *     Revision 1.17  1998/10/19 17:01:20  rassmann
- *     More detailed checking of received packets.
- *
- *     Revision 1.16  1998/10/15 15:16:34  rassmann
- *     Finished Spanning Tree checking.
- *     Checked with lint.
- *
- *     Revision 1.15  1998/09/24 19:16:07  rassmann
- *     Code cleanup.
- *     Introduced Timer for PORT_DOWN due to no RX.
- *
- *     Revision 1.14  1998/09/18 20:27:14  rassmann
- *     Added address override.
- *
- *     Revision 1.13  1998/09/16 11:31:48  rassmann
- *     Including skdrv1st.h again. :(
- *
- *     Revision 1.12  1998/09/16 11:09:50  rassmann
- *     Syntax corrections.
- *
- *     Revision 1.11  1998/09/15 12:32:03  rassmann
- *     Syntax correction.
- *
- *     Revision 1.10  1998/09/15 11:28:49  rassmann
- *     Syntax corrections.
- *
- *     Revision 1.9  1998/09/14 17:07:37  rassmann
- *     Added code for port checking via LAN.
- *     Changed Mbuf definition.
- *
- *     Revision 1.8  1998/09/07 11:14:14  rassmann
- *     Syntax corrections.
- *
- *     Revision 1.7  1998/09/07 09:06:07  rassmann
- *     Syntax corrections.
- *
- *     Revision 1.6  1998/09/04 19:41:33  rassmann
- *     Syntax corrections.
- *     Started entering code for checking local links.
- *
- *     Revision 1.5  1998/09/04 12:14:27  rassmann
- *     Interface cleanup.
- *
- *     Revision 1.4  1998/09/02 16:55:28  rassmann
- *     Updated to reflect new DRV/HWAC/RLMT interface.
- *
- *     Revision 1.3  1998/08/27 14:29:03  rassmann
- *     Code cleanup.
- *
- *     Revision 1.2  1998/08/27 14:26:24  rassmann
- *     Updated interface.
- *
- *     Revision 1.1  1998/08/21 08:26:49  rassmann
- *     First public version.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * Description:
- *
- * This module contains code for Link ManagemenT (LMT) of SK-NET Adapters.
- * It is mainly intended for adapters with more than one link.
- * For such adapters, this module realizes Redundant Link ManagemenT (RLMT).
- *
- * Include File Hierarchy:
- *
- *     "skdrv1st.h"
- *     "skdrv2nd.h"
- *
- ******************************************************************************/
-
-#include <config.h>
-
-#ifndef        lint
-static const char SysKonnectFileId[] =
-       "@(#) $Id: skrlmt.c,v 1.68 2003/01/31 15:26:56 rschmidt Exp $ (C) SysKonnect.";
-#endif /* !defined(lint) */
-
-#define __SKRLMT_C
-
-#ifdef __cplusplus
-#error C++ is not yet supported.
-extern "C" {
-#endif /* cplusplus */
-
-#include "h/skdrv1st.h"
-#include "h/skdrv2nd.h"
-
-/* defines ********************************************************************/
-
-#ifndef SK_HWAC_LINK_LED
-#define SK_HWAC_LINK_LED(a,b,c,d)
-#endif /* !defined(SK_HWAC_LINK_LED) */
-
-#ifndef DEBUG
-#define RLMT_STATIC    static
-#else  /* DEBUG */
-#define RLMT_STATIC
-
-#ifndef SK_LITTLE_ENDIAN
-/* First 32 bits */
-#define OFFS_LO32      1
-
-/* Second 32 bits */
-#define OFFS_HI32      0
-#else  /* SK_LITTLE_ENDIAN */
-/* First 32 bits */
-#define OFFS_LO32      0
-
-/* Second 32 bits */
-#define OFFS_HI32      1
-#endif /* SK_LITTLE_ENDIAN */
-
-#endif /* DEBUG */
-
-/* ----- Private timeout values ----- */
-
-#define SK_RLMT_MIN_TO_VAL                        125000       /* 1/8 sec. */
-#define SK_RLMT_DEF_TO_VAL                       1000000       /* 1 sec. */
-#define SK_RLMT_PORTDOWN_TIM_VAL          900000       /* another 0.9 sec. */
-#define SK_RLMT_PORTSTART_TIM_VAL         100000       /* 0.1 sec. */
-#define SK_RLMT_PORTUP_TIM_VAL           2500000       /* 2.5 sec. */
-#define SK_RLMT_SEG_TO_VAL                     900000000       /* 15 min. */
-
-/* Assume tick counter increment is 1 - may be set OS-dependent. */
-#ifndef SK_TICK_INCR
-#define SK_TICK_INCR   SK_CONSTU64(1)
-#endif /* !defined(SK_TICK_INCR) */
-
-/*
- * Amount that a time stamp must be later to be recognized as "substantially
- * later". This is about 1/128 sec, but above 1 tick counter increment.
- */
-#define SK_RLMT_BC_DELTA               (1 + ((SK_TICKS_PER_SEC >> 7) > SK_TICK_INCR ? \
-                                                                       (SK_TICKS_PER_SEC >> 7) : SK_TICK_INCR))
-
-/* ----- Private RLMT defaults ----- */
-
-#define SK_RLMT_DEF_PREF_PORT  0                                        /* "Lower" port. */
-#define SK_RLMT_DEF_MODE               SK_RLMT_CHECK_LINK      /* Default RLMT Mode. */
-
-/* ----- Private RLMT checking states ----- */
-
-#define SK_RLMT_RCS_SEG                        1               /* RLMT Check State: check seg. */
-#define SK_RLMT_RCS_START_SEG  2               /* RLMT Check State: start check seg. */
-#define SK_RLMT_RCS_SEND_SEG   4               /* RLMT Check State: send BPDU packet */
-#define SK_RLMT_RCS_REPORT_SEG 8               /* RLMT Check State: report seg. */
-
-/* ----- Private PORT checking states ----- */
-
-#define SK_RLMT_PCS_TX                 1               /* Port Check State: check tx. */
-#define SK_RLMT_PCS_RX                 2               /* Port Check State: check rx. */
-
-/* ----- Private PORT events ----- */
-
-/* Note: Update simulation when changing these. */
-#define SK_RLMT_PORTSTART_TIM  1100    /* Port start timeout. */
-#define SK_RLMT_PORTUP_TIM             1101    /* Port can now go up. */
-#define SK_RLMT_PORTDOWN_RX_TIM        1102    /* Port did not receive once ... */
-#define SK_RLMT_PORTDOWN               1103    /* Port went down. */
-#define SK_RLMT_PORTDOWN_TX_TIM        1104    /* Partner did not receive ... */
-
-/* ----- Private RLMT events ----- */
-
-/* Note: Update simulation when changing these. */
-#define SK_RLMT_TIM                            2100    /* RLMT timeout. */
-#define SK_RLMT_SEG_TIM                        2101    /* RLMT segmentation check timeout. */
-
-#define TO_SHORTEN(tim)        ((tim) / 2)
-
-/* Error numbers and messages. */
-#define SKERR_RLMT_E001                (SK_ERRBASE_RLMT + 0)
-#define SKERR_RLMT_E001_MSG    "No Packet."
-#define SKERR_RLMT_E002                (SKERR_RLMT_E001 + 1)
-#define SKERR_RLMT_E002_MSG    "Short Packet."
-#define SKERR_RLMT_E003                (SKERR_RLMT_E002 + 1)
-#define SKERR_RLMT_E003_MSG    "Unknown RLMT event."
-#define SKERR_RLMT_E004                (SKERR_RLMT_E003 + 1)
-#define SKERR_RLMT_E004_MSG    "PortsUp incorrect."
-#define SKERR_RLMT_E005                (SKERR_RLMT_E004 + 1)
-#define SKERR_RLMT_E005_MSG    \
- "Net seems to be segmented (different root bridges are reported on the ports)."
-#define SKERR_RLMT_E006                (SKERR_RLMT_E005 + 1)
-#define SKERR_RLMT_E006_MSG    "Duplicate MAC Address detected."
-#define SKERR_RLMT_E007                (SKERR_RLMT_E006 + 1)
-#define SKERR_RLMT_E007_MSG    "LinksUp incorrect."
-#define SKERR_RLMT_E008                (SKERR_RLMT_E007 + 1)
-#define SKERR_RLMT_E008_MSG    "Port not started but link came up."
-#define SKERR_RLMT_E009                (SKERR_RLMT_E008 + 1)
-#define SKERR_RLMT_E009_MSG    "Corrected illegal setting of Preferred Port."
-#define SKERR_RLMT_E010                (SKERR_RLMT_E009 + 1)
-#define SKERR_RLMT_E010_MSG    "Ignored illegal Preferred Port."
-
-/* LLC field values. */
-#define LLC_COMMAND_RESPONSE_BIT               1
-#define LLC_TEST_COMMAND                               0xE3
-#define LLC_UI                                                 0x03
-
-/* RLMT Packet fields. */
-#define        SK_RLMT_DSAP                                    0
-#define        SK_RLMT_SSAP                                    0
-#define SK_RLMT_CTRL                                   (LLC_TEST_COMMAND)
-#define SK_RLMT_INDICATOR0                             0x53    /* S */
-#define SK_RLMT_INDICATOR1                             0x4B    /* K */
-#define SK_RLMT_INDICATOR2                             0x2D    /* - */
-#define SK_RLMT_INDICATOR3                             0x52    /* R */
-#define SK_RLMT_INDICATOR4                             0x4C    /* L */
-#define SK_RLMT_INDICATOR5                             0x4D    /* M */
-#define SK_RLMT_INDICATOR6                             0x54    /* T */
-#define SK_RLMT_PACKET_VERSION                 0
-
-/* RLMT SPT Flag values. */
-#define        SK_RLMT_SPT_FLAG_CHANGE                 0x01
-#define        SK_RLMT_SPT_FLAG_CHANGE_ACK             0x80
-
-/* RLMT SPT Packet fields. */
-#define        SK_RLMT_SPT_DSAP                                0x42
-#define        SK_RLMT_SPT_SSAP                                0x42
-#define SK_RLMT_SPT_CTRL                               (LLC_UI)
-#define        SK_RLMT_SPT_PROTOCOL_ID0                0x00
-#define        SK_RLMT_SPT_PROTOCOL_ID1                0x00
-#define        SK_RLMT_SPT_PROTOCOL_VERSION_ID 0x00
-#define        SK_RLMT_SPT_BPDU_TYPE                   0x00
-#define        SK_RLMT_SPT_FLAGS                               0x00    /* ?? */
-#define        SK_RLMT_SPT_ROOT_ID0                    0xFF    /* Lowest possible priority. */
-#define        SK_RLMT_SPT_ROOT_ID1                    0xFF    /* Lowest possible priority. */
-
-/* Remaining 6 bytes will be the current port address. */
-#define        SK_RLMT_SPT_ROOT_PATH_COST0             0x00
-#define        SK_RLMT_SPT_ROOT_PATH_COST1             0x00
-#define        SK_RLMT_SPT_ROOT_PATH_COST2             0x00
-#define        SK_RLMT_SPT_ROOT_PATH_COST3             0x00
-#define        SK_RLMT_SPT_BRIDGE_ID0                  0xFF    /* Lowest possible priority. */
-#define        SK_RLMT_SPT_BRIDGE_ID1                  0xFF    /* Lowest possible priority. */
-
-/* Remaining 6 bytes will be the current port address. */
-#define        SK_RLMT_SPT_PORT_ID0                    0xFF    /* Lowest possible priority. */
-#define        SK_RLMT_SPT_PORT_ID1                    0xFF    /* Lowest possible priority. */
-#define        SK_RLMT_SPT_MSG_AGE0                    0x00
-#define        SK_RLMT_SPT_MSG_AGE1                    0x00
-#define        SK_RLMT_SPT_MAX_AGE0                    0x00
-#define        SK_RLMT_SPT_MAX_AGE1                    0xFF
-#define        SK_RLMT_SPT_HELLO_TIME0                 0x00
-#define        SK_RLMT_SPT_HELLO_TIME1                 0xFF
-#define        SK_RLMT_SPT_FWD_DELAY0                  0x00
-#define        SK_RLMT_SPT_FWD_DELAY1                  0x40
-
-/* Size defines. */
-#define SK_RLMT_MIN_PACKET_SIZE                        34
-#define SK_RLMT_MAX_PACKET_SIZE                        (SK_RLMT_MAX_TX_BUF_SIZE)
-#define SK_PACKET_DATA_LEN                             (SK_RLMT_MAX_PACKET_SIZE - \
-                                                                               SK_RLMT_MIN_PACKET_SIZE)
-
-/* ----- RLMT packet types ----- */
-#define SK_PACKET_ANNOUNCE                             1       /* Port announcement. */
-#define SK_PACKET_ALIVE                                        2       /* Alive packet to port. */
-#define SK_PACKET_ADDR_CHANGED                 3       /* Port address changed. */
-#define SK_PACKET_CHECK_TX                             4       /* Check your tx line. */
-
-#ifdef SK_LITTLE_ENDIAN
-#define SK_U16_TO_NETWORK_ORDER(Val,Addr) { \
-       SK_U8   *_Addr = (SK_U8*)(Addr); \
-       SK_U16  _Val = (SK_U16)(Val); \
-       *_Addr++ = (SK_U8)(_Val >> 8); \
-       *_Addr = (SK_U8)(_Val & 0xFF); \
-}
-#endif /* SK_LITTLE_ENDIAN */
-
-#ifdef SK_BIG_ENDIAN
-#define SK_U16_TO_NETWORK_ORDER(Val,Addr) (*(SK_U16*)(Addr) = (SK_U16)(Val))
-#endif /* SK_BIG_ENDIAN */
-
-#define AUTONEG_FAILED SK_FALSE
-#define AUTONEG_SUCCESS        SK_TRUE
-
-
-/* typedefs *******************************************************************/
-
-/* RLMT packet.  Length: SK_RLMT_MAX_PACKET_SIZE (60) bytes. */
-typedef struct s_RlmtPacket {
-       SK_U8   DstAddr[SK_MAC_ADDR_LEN];
-       SK_U8   SrcAddr[SK_MAC_ADDR_LEN];
-       SK_U8   TypeLen[2];
-       SK_U8   DSap;
-       SK_U8   SSap;
-       SK_U8   Ctrl;
-       SK_U8   Indicator[7];
-       SK_U8   RlmtPacketType[2];
-       SK_U8   Align1[2];
-       SK_U8   Random[4];                              /* Random value of requesting(!) station. */
-       SK_U8   RlmtPacketVersion[2];   /* RLMT Packet version. */
-       SK_U8   Data[SK_PACKET_DATA_LEN];
-} SK_RLMT_PACKET;
-
-typedef struct s_SpTreeRlmtPacket {
-       SK_U8   DstAddr[SK_MAC_ADDR_LEN];
-       SK_U8   SrcAddr[SK_MAC_ADDR_LEN];
-       SK_U8   TypeLen[2];
-       SK_U8   DSap;
-       SK_U8   SSap;
-       SK_U8   Ctrl;
-       SK_U8   ProtocolId[2];
-       SK_U8   ProtocolVersionId;
-       SK_U8   BpduType;
-       SK_U8   Flags;
-       SK_U8   RootId[8];
-       SK_U8   RootPathCost[4];
-       SK_U8   BridgeId[8];
-       SK_U8   PortId[2];
-       SK_U8   MessageAge[2];
-       SK_U8   MaxAge[2];
-       SK_U8   HelloTime[2];
-       SK_U8   ForwardDelay[2];
-} SK_SPTREE_PACKET;
-
-/* global variables ***********************************************************/
-
-SK_MAC_ADDR    SkRlmtMcAddr =  {{0x01,  0x00,  0x5A,  0x52,  0x4C,  0x4D}};
-SK_MAC_ADDR    BridgeMcAddr =  {{0x01,  0x80,  0xC2,  0x00,  0x00,  0x00}};
-SK_MAC_ADDR    BcAddr =                {{0xFF,  0xFF,  0xFF,  0xFF,  0xFF,  0xFF}};
-
-/* local variables ************************************************************/
-
-/* None. */
-
-/* functions ******************************************************************/
-
-RLMT_STATIC void       SkRlmtCheckSwitch(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       SK_U32  NetIdx);
-RLMT_STATIC void       SkRlmtCheckSeg(
-       SK_AC   *pAC,
-       SK_IOC  IoC,
-       SK_U32  NetIdx);
-RLMT_STATIC void       SkRlmtEvtSetNets(
-       SK_AC           *pAC,
-       SK_IOC          IoC,
-       SK_EVPARA       Para);
-
-/******************************************************************************
- *
- *     SkRlmtInit - initialize data, set state to init
- *
- * Description:
- *
- *     SK_INIT_DATA
- *     ============
- *
- *     This routine initializes all RLMT-related variables to a known state.
- *     The initial state is SK_RLMT_RS_INIT.
- *     All ports are initialized to SK_RLMT_PS_INIT.
- *
- *
- *     SK_INIT_IO
- *     ==========
- *
- *     Nothing.
- *
- *
- *     SK_INIT_RUN
- *     ===========
- *
- *     Determine the adapter's random value.
- *     Set the hw registers, the "logical MAC address", the
- *     RLMT multicast address, and eventually the BPDU multicast address.
- *
- * Context:
- *     init, pageable
- *
- * Returns:
- *     Nothing.
- */
-void   SkRlmtInit(
-SK_AC  *pAC,   /* Adapter Context */
-SK_IOC IoC,    /* I/O Context */
-int            Level)  /* Initialization Level */
-{
-       SK_U32          i, j;
-       SK_U64          Random;
-       SK_EVPARA       Para;
-    SK_MAC_ADDR                VirtualMacAddress;
-    SK_MAC_ADDR                PhysicalAMacAddress;
-    SK_BOOL            VirtualMacAddressSet;
-    SK_BOOL            PhysicalAMacAddressSet;
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_INIT,
-               ("RLMT Init level %d.\n", Level))
-
-       switch (Level) {
-       case SK_INIT_DATA:      /* Initialize data structures. */
-               SK_MEMSET((char *)&pAC->Rlmt, 0, sizeof(SK_RLMT));
-
-               for (i = 0; i < SK_MAX_MACS; i++) {
-                       pAC->Rlmt.Port[i].PortState = SK_RLMT_PS_INIT;
-                       pAC->Rlmt.Port[i].LinkDown = SK_TRUE;
-                       pAC->Rlmt.Port[i].PortDown = SK_TRUE;
-                       pAC->Rlmt.Port[i].PortStarted = SK_FALSE;
-                       pAC->Rlmt.Port[i].PortNoRx = SK_FALSE;
-                       pAC->Rlmt.Port[i].RootIdSet = SK_FALSE;
-                       pAC->Rlmt.Port[i].PortNumber = i;
-                       pAC->Rlmt.Port[i].Net = &pAC->Rlmt.Net[0];
-                       pAC->Rlmt.Port[i].AddrPort = &pAC->Addr.Port[i];
-               }
-
-               pAC->Rlmt.NumNets = 1;
-               for (i = 0; i < SK_MAX_NETS; i++) {
-                       pAC->Rlmt.Net[i].RlmtState = SK_RLMT_RS_INIT;
-                       pAC->Rlmt.Net[i].RootIdSet = SK_FALSE;
-                       pAC->Rlmt.Net[i].PrefPort = SK_RLMT_DEF_PREF_PORT;
-                       pAC->Rlmt.Net[i].Preference = 0xFFFFFFFF;         /* Automatic. */
-                       /* Just assuming. */
-                       pAC->Rlmt.Net[i].ActivePort = pAC->Rlmt.Net[i].PrefPort;
-                       pAC->Rlmt.Net[i].RlmtMode = SK_RLMT_DEF_MODE;
-                       pAC->Rlmt.Net[i].TimeoutValue = SK_RLMT_DEF_TO_VAL;
-                       pAC->Rlmt.Net[i].NetNumber = i;
-               }
-
-               pAC->Rlmt.Net[0].Port[0] = &pAC->Rlmt.Port[0];
-               pAC->Rlmt.Net[0].Port[1] = &pAC->Rlmt.Port[1];
-#if SK_MAX_NETS > 1
-               pAC->Rlmt.Net[1].Port[0] = &pAC->Rlmt.Port[1];
-#endif /* SK_MAX_NETS > 1 */
-               break;
-
-       case SK_INIT_IO:        /* GIMacsFound first available here. */
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_INIT,
-                       ("RLMT: %d MACs were detected.\n", pAC->GIni.GIMacsFound))
-
-               pAC->Rlmt.Net[0].NumPorts = pAC->GIni.GIMacsFound;
-
-               /* Initialize HW registers? */
-               if (pAC->GIni.GIMacsFound == 1) {
-                       Para.Para32[0] = SK_RLMT_MODE_CLS;
-                       Para.Para32[1] = 0;
-                       (void)SkRlmtEvent(pAC, IoC, SK_RLMT_MODE_CHANGE, Para);
-               }
-               break;
-
-       case SK_INIT_RUN:
-               /* Ensure RLMT is set to one net. */
-               if (pAC->Rlmt.NumNets > 1) {
-                       Para.Para32[0] = 1;
-                       Para.Para32[1] = -1;
-                       SkRlmtEvtSetNets(pAC, IoC, Para);
-               }
-
-               for (i = 0; i < (SK_U32)pAC->GIni.GIMacsFound; i++) {
-                       Random = SkOsGetTime(pAC);
-                       *(SK_U32*)&pAC->Rlmt.Port[i].Random = *(SK_U32*)&Random;
-
-                       for (j = 0; j < 4; j++) {
-                               pAC->Rlmt.Port[i].Random[j] ^= pAC->Rlmt.Port[i].AddrPort->
-                                       CurrentMacAddress.a[SK_MAC_ADDR_LEN - 1 - j];
-                       }
-
-                       (void)SkAddrMcClear(pAC, IoC, i, SK_ADDR_PERMANENT | SK_MC_SW_ONLY);
-
-                       /* Add RLMT MC address. */
-                       (void)SkAddrMcAdd(pAC, IoC, i, &SkRlmtMcAddr, SK_ADDR_PERMANENT);
-
-                       if (pAC->Rlmt.Net[0].RlmtMode & SK_RLMT_CHECK_SEG) {
-                               /* Add BPDU MC address. */
-                               (void)SkAddrMcAdd(pAC, IoC, i, &BridgeMcAddr, SK_ADDR_PERMANENT);
-                       }
-
-                       (void)SkAddrMcUpdate(pAC, IoC, i);
-               }
-
-       VirtualMacAddressSet = SK_FALSE;
-               /* Read virtual MAC address from Control Register File. */
-               for (j = 0; j < SK_MAC_ADDR_LEN; j++) {
-
-           SK_IN8(IoC, B2_MAC_1 + j, &VirtualMacAddress.a[j]);
-           VirtualMacAddressSet |= VirtualMacAddress.a[j];
-               }
-
-       PhysicalAMacAddressSet = SK_FALSE;
-               /* Read physical MAC address for MAC A from Control Register File. */
-               for (j = 0; j < SK_MAC_ADDR_LEN; j++) {
-
-           SK_IN8(IoC, B2_MAC_2 + j, &PhysicalAMacAddress.a[j]);
-           PhysicalAMacAddressSet |= PhysicalAMacAddress.a[j];
-               }
-
-       /* check if the two mac addresses contain reasonable values */
-       if (!VirtualMacAddressSet || !PhysicalAMacAddressSet) {
-
-           pAC->Rlmt.RlmtOff = SK_TRUE;
-       }
-
-       /* if the two mac addresses are equal switch off the RLMT_PRE_LOOKAHEAD
-          and the RLMT_LOOKAHEAD macros */
-       else if (SK_ADDR_EQUAL(PhysicalAMacAddress.a, VirtualMacAddress.a)) {
-
-           pAC->Rlmt.RlmtOff = SK_TRUE;
-       }
-               else {
-                       pAC->Rlmt.RlmtOff = SK_FALSE;
-               }
-               break;
-
-       default:        /* error */
-               break;
-       }
-       return;
-}      /* SkRlmtInit */
-
-
-/******************************************************************************
- *
- *     SkRlmtBuildCheckChain - build the check chain
- *
- * Description:
- *     This routine builds the local check chain:
- *     - Each port that is up checks the next port.
- *     - The last port that is up checks the first port that is up.
- *
- * Notes:
- *     - Currently only local ports are considered when building the chain.
- *     - Currently the SuspectState is just reset;
- *       it would be better to save it ...
- *
- * Context:
- *     runtime, pageable?
- *
- * Returns:
- *     Nothing
- */
-RLMT_STATIC void       SkRlmtBuildCheckChain(
-SK_AC  *pAC,   /* Adapter Context */
-SK_U32 NetIdx) /* Net Number */
-{
-       SK_U32                  i;
-       SK_U32                  NumMacsUp;
-       SK_RLMT_PORT *  FirstMacUp;
-       SK_RLMT_PORT *  PrevMacUp;
-
-       FirstMacUp      = NULL;
-       PrevMacUp       = NULL;
-
-       if (!(pAC->Rlmt.Net[NetIdx].RlmtMode & SK_RLMT_CHECK_LOC_LINK)) {
-               for (i = 0; i < pAC->Rlmt.Net[i].NumPorts; i++) {
-                       pAC->Rlmt.Net[NetIdx].Port[i]->PortsChecked = 0;
-               }
-               return; /* Done. */
-       }
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-               ("SkRlmtBuildCheckChain.\n"))
-
-       NumMacsUp = 0;
-
-       for (i = 0; i < pAC->Rlmt.Net[NetIdx].NumPorts; i++) {
-               pAC->Rlmt.Net[NetIdx].Port[i]->PortsChecked = 0;
-               pAC->Rlmt.Net[NetIdx].Port[i]->PortsSuspect = 0;
-               pAC->Rlmt.Net[NetIdx].Port[i]->CheckingState &=
-                       ~(SK_RLMT_PCS_RX | SK_RLMT_PCS_TX);
-
-               /*
-                * If more than two links are detected we should consider
-                * checking at least two other ports:
-                * 1. the next port that is not LinkDown and
-                * 2. the next port that is not PortDown.
-                */
-               if (!pAC->Rlmt.Net[NetIdx].Port[i]->LinkDown) {
-                       if (NumMacsUp == 0) {
-                               FirstMacUp = pAC->Rlmt.Net[NetIdx].Port[i];
-                       }
-                       else {
-                               PrevMacUp->PortCheck[
-                                       pAC->Rlmt.Net[NetIdx].Port[i]->PortsChecked].CheckAddr =
-                                       pAC->Rlmt.Net[NetIdx].Port[i]->AddrPort->CurrentMacAddress;
-                               PrevMacUp->PortCheck[
-                                       PrevMacUp->PortsChecked].SuspectTx = SK_FALSE;
-                               PrevMacUp->PortsChecked++;
-                       }
-                       PrevMacUp = pAC->Rlmt.Net[NetIdx].Port[i];
-                       NumMacsUp++;
-               }
-       }
-
-       if (NumMacsUp > 1) {
-               PrevMacUp->PortCheck[PrevMacUp->PortsChecked].CheckAddr =
-                       FirstMacUp->AddrPort->CurrentMacAddress;
-               PrevMacUp->PortCheck[PrevMacUp->PortsChecked].SuspectTx =
-                       SK_FALSE;
-               PrevMacUp->PortsChecked++;
-       }
-
-#ifdef DEBUG
-       for (i = 0; i < pAC->Rlmt.Net[NetIdx].NumPorts; i++) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("Port %d checks %d other ports: %2X.\n", i,
-                               pAC->Rlmt.Net[NetIdx].Port[i]->PortsChecked,
-                               pAC->Rlmt.Net[NetIdx].Port[i]->PortCheck[0].CheckAddr.a[5]))
-       }
-#endif /* DEBUG */
-
-       return;
-}      /* SkRlmtBuildCheckChain */
-
-
-/******************************************************************************
- *
- *     SkRlmtBuildPacket - build an RLMT packet
- *
- * Description:
- *     This routine sets up an RLMT packet.
- *
- * Context:
- *     runtime, pageable?
- *
- * Returns:
- *     NULL or pointer to RLMT mbuf
- */
-RLMT_STATIC SK_MBUF    *SkRlmtBuildPacket(
-SK_AC          *pAC,           /* Adapter Context */
-SK_IOC         IoC,            /* I/O Context */
-SK_U32         PortNumber,     /* Sending port */
-SK_U16         PacketType,     /* RLMT packet type */
-SK_MAC_ADDR    *SrcAddr,       /* Source address */
-SK_MAC_ADDR    *DestAddr)      /* Destination address */
-{
-       int             i;
-       SK_U16          Length;
-       SK_MBUF         *pMb;
-       SK_RLMT_PACKET  *pPacket;
-
-#ifdef DEBUG
-       SK_U8   CheckSrc  = 0;
-       SK_U8   CheckDest = 0;
-
-       for (i = 0; i < SK_MAC_ADDR_LEN; ++i) {
-               CheckSrc  |= SrcAddr->a[i];
-               CheckDest |= DestAddr->a[i];
-       }
-
-       if ((CheckSrc == 0) || (CheckDest == 0)) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_ERR,
-                       ("SkRlmtBuildPacket: Invalid %s%saddr.\n",
-                        (CheckSrc == 0 ? "Src" : ""), (CheckDest == 0 ? "Dest" : "")))
-       }
-#endif
-
-       if ((pMb = SkDrvAllocRlmtMbuf(pAC, IoC, SK_RLMT_MAX_PACKET_SIZE)) != NULL) {
-               pPacket = (SK_RLMT_PACKET*)pMb->pData;
-               for (i = 0; i < SK_MAC_ADDR_LEN; i++) {
-                       pPacket->DstAddr[i] = DestAddr->a[i];
-                       pPacket->SrcAddr[i] = SrcAddr->a[i];
-               }
-               pPacket->DSap = SK_RLMT_DSAP;
-               pPacket->SSap = SK_RLMT_SSAP;
-               pPacket->Ctrl = SK_RLMT_CTRL;
-               pPacket->Indicator[0] = SK_RLMT_INDICATOR0;
-               pPacket->Indicator[1] = SK_RLMT_INDICATOR1;
-               pPacket->Indicator[2] = SK_RLMT_INDICATOR2;
-               pPacket->Indicator[3] = SK_RLMT_INDICATOR3;
-               pPacket->Indicator[4] = SK_RLMT_INDICATOR4;
-               pPacket->Indicator[5] = SK_RLMT_INDICATOR5;
-               pPacket->Indicator[6] = SK_RLMT_INDICATOR6;
-
-               SK_U16_TO_NETWORK_ORDER(PacketType, &pPacket->RlmtPacketType[0]);
-
-               for (i = 0; i < 4; i++) {
-                       pPacket->Random[i] = pAC->Rlmt.Port[PortNumber].Random[i];
-               }
-
-               SK_U16_TO_NETWORK_ORDER(
-                       SK_RLMT_PACKET_VERSION, &pPacket->RlmtPacketVersion[0]);
-
-               for (i = 0; i < SK_PACKET_DATA_LEN; i++) {
-                       pPacket->Data[i] = 0x00;
-               }
-
-               Length = SK_RLMT_MAX_PACKET_SIZE;       /* Or smaller. */
-               pMb->Length = Length;
-               pMb->PortIdx = PortNumber;
-               Length -= 14;
-               SK_U16_TO_NETWORK_ORDER(Length, &pPacket->TypeLen[0]);
-
-               if (PacketType == SK_PACKET_ALIVE) {
-                       pAC->Rlmt.Port[PortNumber].TxHelloCts++;
-               }
-       }
-
-       return (pMb);
-}      /* SkRlmtBuildPacket */
-
-
-/******************************************************************************
- *
- *     SkRlmtBuildSpanningTreePacket - build spanning tree check packet
- *
- * Description:
- *     This routine sets up a BPDU packet for spanning tree check.
- *
- * Context:
- *     runtime, pageable?
- *
- * Returns:
- *     NULL or pointer to RLMT mbuf
- */
-RLMT_STATIC SK_MBUF    *SkRlmtBuildSpanningTreePacket(
-SK_AC  *pAC,           /* Adapter Context */
-SK_IOC IoC,            /* I/O Context */
-SK_U32 PortNumber)     /* Sending port */
-{
-       unsigned                        i;
-       SK_U16                          Length;
-       SK_MBUF                         *pMb;
-       SK_SPTREE_PACKET        *pSPacket;
-
-       if ((pMb = SkDrvAllocRlmtMbuf(pAC, IoC, SK_RLMT_MAX_PACKET_SIZE)) !=
-               NULL) {
-               pSPacket = (SK_SPTREE_PACKET*)pMb->pData;
-               for (i = 0; i < SK_MAC_ADDR_LEN; i++) {
-                       pSPacket->DstAddr[i] = BridgeMcAddr.a[i];
-                       pSPacket->SrcAddr[i] =
-                               pAC->Addr.Port[PortNumber].CurrentMacAddress.a[i];
-               }
-               pSPacket->DSap = SK_RLMT_SPT_DSAP;
-               pSPacket->SSap = SK_RLMT_SPT_SSAP;
-               pSPacket->Ctrl = SK_RLMT_SPT_CTRL;
-
-               pSPacket->ProtocolId[0] = SK_RLMT_SPT_PROTOCOL_ID0;
-               pSPacket->ProtocolId[1] = SK_RLMT_SPT_PROTOCOL_ID1;
-               pSPacket->ProtocolVersionId = SK_RLMT_SPT_PROTOCOL_VERSION_ID;
-               pSPacket->BpduType = SK_RLMT_SPT_BPDU_TYPE;
-               pSPacket->Flags = SK_RLMT_SPT_FLAGS;
-               pSPacket->RootId[0] = SK_RLMT_SPT_ROOT_ID0;
-               pSPacket->RootId[1] = SK_RLMT_SPT_ROOT_ID1;
-               pSPacket->RootPathCost[0] = SK_RLMT_SPT_ROOT_PATH_COST0;
-               pSPacket->RootPathCost[1] = SK_RLMT_SPT_ROOT_PATH_COST1;
-               pSPacket->RootPathCost[2] = SK_RLMT_SPT_ROOT_PATH_COST2;
-               pSPacket->RootPathCost[3] = SK_RLMT_SPT_ROOT_PATH_COST3;
-               pSPacket->BridgeId[0] = SK_RLMT_SPT_BRIDGE_ID0;
-               pSPacket->BridgeId[1] = SK_RLMT_SPT_BRIDGE_ID1;
-
-               /*
-                * Use logical MAC address as bridge ID and filter these packets
-                * on receive.
-                */
-               for (i = 0; i < SK_MAC_ADDR_LEN; i++) {
-                       pSPacket->BridgeId[i + 2] = pSPacket->RootId[i + 2] =
-                               pAC->Addr.Net[pAC->Rlmt.Port[PortNumber].Net->NetNumber].
-                                       CurrentMacAddress.a[i];
-               }
-               pSPacket->PortId[0] = SK_RLMT_SPT_PORT_ID0;
-               pSPacket->PortId[1] = SK_RLMT_SPT_PORT_ID1;
-               pSPacket->MessageAge[0] = SK_RLMT_SPT_MSG_AGE0;
-               pSPacket->MessageAge[1] = SK_RLMT_SPT_MSG_AGE1;
-               pSPacket->MaxAge[0] = SK_RLMT_SPT_MAX_AGE0;
-               pSPacket->MaxAge[1] = SK_RLMT_SPT_MAX_AGE1;
-               pSPacket->HelloTime[0] = SK_RLMT_SPT_HELLO_TIME0;
-               pSPacket->HelloTime[1] = SK_RLMT_SPT_HELLO_TIME1;
-               pSPacket->ForwardDelay[0] = SK_RLMT_SPT_FWD_DELAY0;
-               pSPacket->ForwardDelay[1] = SK_RLMT_SPT_FWD_DELAY1;
-
-               Length = SK_RLMT_MAX_PACKET_SIZE;       /* Or smaller. */
-               pMb->Length = Length;
-               pMb->PortIdx = PortNumber;
-               Length -= 14;
-               SK_U16_TO_NETWORK_ORDER(Length, &pSPacket->TypeLen[0]);
-
-               pAC->Rlmt.Port[PortNumber].TxSpHelloReqCts++;
-       }
-
-       return (pMb);
-}      /* SkRlmtBuildSpanningTreePacket */
-
-
-/******************************************************************************
- *
- *     SkRlmtSend - build and send check packets
- *
- * Description:
- *     Depending on the RLMT state and the checking state, several packets
- *     are sent through the indicated port.
- *
- * Context:
- *     runtime, pageable?
- *
- * Returns:
- *     Nothing.
- */
-RLMT_STATIC void       SkRlmtSend(
-SK_AC  *pAC,           /* Adapter Context */
-SK_IOC IoC,            /* I/O Context */
-SK_U32 PortNumber)     /* Sending port */
-{
-       unsigned        j;
-       SK_EVPARA       Para;
-       SK_RLMT_PORT    *pRPort;
-
-       pRPort = &pAC->Rlmt.Port[PortNumber];
-       if (pAC->Rlmt.Port[PortNumber].Net->RlmtMode & SK_RLMT_CHECK_LOC_LINK) {
-               if (pRPort->CheckingState & (SK_RLMT_PCS_TX | SK_RLMT_PCS_RX)) {
-                       /* Port is suspicious. Send the RLMT packet to the RLMT mc addr. */
-                       if ((Para.pParaPtr = SkRlmtBuildPacket(pAC, IoC, PortNumber,
-                               SK_PACKET_ALIVE, &pAC->Addr.Port[PortNumber].CurrentMacAddress,
-                               &SkRlmtMcAddr)) != NULL) {
-                               SkEventQueue(pAC, SKGE_DRV, SK_DRV_RLMT_SEND, Para);
-                       }
-               }
-               else {
-                       /*
-                        * Send a directed RLMT packet to all ports that are
-                        * checked by the indicated port.
-                        */
-                       for (j = 0; j < pRPort->PortsChecked; j++) {
-                               if ((Para.pParaPtr = SkRlmtBuildPacket(pAC, IoC, PortNumber,
-                                       SK_PACKET_ALIVE, &pAC->Addr.Port[PortNumber].CurrentMacAddress,
-                                       &pRPort->PortCheck[j].CheckAddr)) != NULL) {
-                                       SkEventQueue(pAC, SKGE_DRV, SK_DRV_RLMT_SEND, Para);
-                               }
-                       }
-               }
-       }
-
-       if ((pAC->Rlmt.Port[PortNumber].Net->RlmtMode & SK_RLMT_CHECK_SEG) &&
-               (pAC->Rlmt.Port[PortNumber].Net->CheckingState & SK_RLMT_RCS_SEND_SEG)) {
-               /*
-                * Send a BPDU packet to make a connected switch tell us
-                * the correct root bridge.
-                */
-               if ((Para.pParaPtr =
-                       SkRlmtBuildSpanningTreePacket(pAC, IoC, PortNumber)) != NULL) {
-                       pAC->Rlmt.Port[PortNumber].Net->CheckingState &= ~SK_RLMT_RCS_SEND_SEG;
-                       pRPort->RootIdSet = SK_FALSE;
-
-                       SkEventQueue(pAC, SKGE_DRV, SK_DRV_RLMT_SEND, Para);
-                       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_TX,
-                               ("SkRlmtSend: BPDU Packet on Port %u.\n", PortNumber))
-               }
-       }
-       return;
-}      /* SkRlmtSend */
-
-
-/******************************************************************************
- *
- *     SkRlmtPortReceives - check if port is (going) down and bring it up
- *
- * Description:
- *     This routine checks if a port who received a non-BPDU packet
- *     needs to go up or needs to be stopped going down.
- *
- * Context:
- *     runtime, pageable?
- *
- * Returns:
- *     Nothing.
- */
-RLMT_STATIC void       SkRlmtPortReceives(
-SK_AC  *pAC,                   /* Adapter Context */
-SK_IOC IoC,                    /* I/O Context */
-SK_U32 PortNumber)             /* Port to check */
-{
-       SK_RLMT_PORT    *pRPort;
-       SK_EVPARA               Para;
-
-       pRPort = &pAC->Rlmt.Port[PortNumber];
-       pRPort->PortNoRx = SK_FALSE;
-
-       if ((pRPort->PortState == SK_RLMT_PS_DOWN) &&
-               !(pRPort->CheckingState & SK_RLMT_PCS_TX)) {
-               /*
-                * Port is marked down (rx), but received a non-BPDU packet.
-                * Bring it up.
-                */
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_RX,
-                       ("SkRlmtPacketReceive: Received on PortDown.\n"))
-
-               pRPort->PortState = SK_RLMT_PS_GOING_UP;
-               pRPort->GuTimeStamp = SkOsGetTime(pAC);
-               Para.Para32[0] = PortNumber;
-               Para.Para32[1] = (SK_U32)-1;
-               SkTimerStart(pAC, IoC, &pRPort->UpTimer, SK_RLMT_PORTUP_TIM_VAL,
-                       SKGE_RLMT, SK_RLMT_PORTUP_TIM, Para);
-               pRPort->CheckingState &= ~SK_RLMT_PCS_RX;
-               /* pAC->Rlmt.CheckSwitch = SK_TRUE; */
-               SkRlmtCheckSwitch(pAC, IoC, pRPort->Net->NetNumber);
-       }       /* PortDown && !SuspectTx */
-       else if (pRPort->CheckingState & SK_RLMT_PCS_RX) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_RX,
-                       ("SkRlmtPacketReceive: Stop bringing port down.\n"))
-               SkTimerStop(pAC, IoC, &pRPort->DownRxTimer);
-               pRPort->CheckingState &= ~SK_RLMT_PCS_RX;
-               /* pAC->Rlmt.CheckSwitch = SK_TRUE; */
-               SkRlmtCheckSwitch(pAC, IoC, pRPort->Net->NetNumber);
-       }       /* PortGoingDown */
-
-       return;
-}      /* SkRlmtPortReceives */
-
-
-/******************************************************************************
- *
- *     SkRlmtPacketReceive - receive a packet for closer examination
- *
- * Description:
- *     This routine examines a packet more closely than SK_RLMT_LOOKAHEAD.
- *
- * Context:
- *     runtime, pageable?
- *
- * Returns:
- *     Nothing.
- */
-RLMT_STATIC void       SkRlmtPacketReceive(
-SK_AC  *pAC,   /* Adapter Context */
-SK_IOC IoC,    /* I/O Context */
-SK_MBUF        *pMb)   /* Received packet */
-{
-#ifdef xDEBUG
-       extern  void DumpData(char *p, int size);
-#endif /* DEBUG */
-       int                                     i;
-       unsigned                        j;
-       SK_U16                          PacketType;
-       SK_U32                          PortNumber;
-       SK_ADDR_PORT            *pAPort;
-       SK_RLMT_PORT            *pRPort;
-       SK_RLMT_PACKET          *pRPacket;
-       SK_SPTREE_PACKET        *pSPacket;
-       SK_EVPARA                       Para;
-
-       PortNumber      = pMb->PortIdx;
-       pAPort = &pAC->Addr.Port[PortNumber];
-       pRPort = &pAC->Rlmt.Port[PortNumber];
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_RX,
-               ("SkRlmtPacketReceive: PortNumber == %d.\n", PortNumber))
-
-       pRPacket = (SK_RLMT_PACKET*)pMb->pData;
-       pSPacket = (SK_SPTREE_PACKET*)pRPacket;
-
-#ifdef xDEBUG
-       DumpData((char *)pRPacket, 32);
-#endif /* DEBUG */
-
-       if ((pRPort->PacketsPerTimeSlot - pRPort->BpduPacketsPerTimeSlot) != 0) {
-               SkRlmtPortReceives(pAC, IoC, PortNumber);
-       }
-
-       /* Check destination address. */
-
-       if (!SK_ADDR_EQUAL(pAPort->CurrentMacAddress.a, pRPacket->DstAddr) &&
-               !SK_ADDR_EQUAL(SkRlmtMcAddr.a, pRPacket->DstAddr) &&
-               !SK_ADDR_EQUAL(BridgeMcAddr.a, pRPacket->DstAddr)) {
-
-               /* Not sent to current MAC or registered MC address => Trash it. */
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_RX,
-                       ("SkRlmtPacketReceive: Not for me.\n"))
-
-               SkDrvFreeRlmtMbuf(pAC, IoC, pMb);
-               return;
-       }
-       else if (SK_ADDR_EQUAL(pAPort->CurrentMacAddress.a, pRPacket->SrcAddr)) {
-
-               /*
-                * Was sent by same port (may happen during port switching
-                * or in case of duplicate MAC addresses).
-                */
-
-               /*
-                * Check for duplicate address here:
-                * If Packet.Random != My.Random => DupAddr.
-                */
-               for (i = 3; i >= 0; i--) {
-                       if (pRPort->Random[i] != pRPacket->Random[i]) {
-                               break;
-                       }
-               }
-
-               /*
-                * CAUTION: Do not check for duplicate MAC address in RLMT Alive Reply
-                * packets (they have the LLC_COMMAND_RESPONSE_BIT set in
-                * pRPacket->SSap).
-                */
-               if (i >= 0 && pRPacket->DSap == SK_RLMT_DSAP &&
-                       pRPacket->Ctrl == SK_RLMT_CTRL &&
-                       pRPacket->SSap == SK_RLMT_SSAP &&
-                       pRPacket->Indicator[0] == SK_RLMT_INDICATOR0 &&
-                       pRPacket->Indicator[1] == SK_RLMT_INDICATOR1 &&
-                       pRPacket->Indicator[2] == SK_RLMT_INDICATOR2 &&
-                       pRPacket->Indicator[3] == SK_RLMT_INDICATOR3 &&
-                       pRPacket->Indicator[4] == SK_RLMT_INDICATOR4 &&
-                       pRPacket->Indicator[5] == SK_RLMT_INDICATOR5 &&
-                       pRPacket->Indicator[6] == SK_RLMT_INDICATOR6) {
-                       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_RX,
-                               ("SkRlmtPacketReceive: Duplicate MAC Address.\n"))
-
-                       /* Error Log entry. */
-                       SK_ERR_LOG(pAC, SK_ERRCL_COMM, SKERR_RLMT_E006, SKERR_RLMT_E006_MSG);
-               }
-               else {
-                       /* Simply trash it. */
-                       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_RX,
-                               ("SkRlmtPacketReceive: Sent by me.\n"))
-               }
-
-               SkDrvFreeRlmtMbuf(pAC, IoC, pMb);
-               return;
-       }
-
-       /* Check SuspectTx entries. */
-       if (pRPort->PortsSuspect > 0) {
-               for (j = 0; j < pRPort->PortsChecked; j++) {
-                       if (pRPort->PortCheck[j].SuspectTx &&
-                               SK_ADDR_EQUAL(
-                                       pRPacket->SrcAddr, pRPort->PortCheck[j].CheckAddr.a)) {
-                               pRPort->PortCheck[j].SuspectTx = SK_FALSE;
-                               pRPort->PortsSuspect--;
-                               break;
-                       }
-               }
-       }
-
-       /* Determine type of packet. */
-       if (pRPacket->DSap == SK_RLMT_DSAP &&
-               pRPacket->Ctrl == SK_RLMT_CTRL &&
-               (pRPacket->SSap & ~LLC_COMMAND_RESPONSE_BIT) == SK_RLMT_SSAP &&
-               pRPacket->Indicator[0] == SK_RLMT_INDICATOR0 &&
-               pRPacket->Indicator[1] == SK_RLMT_INDICATOR1 &&
-               pRPacket->Indicator[2] == SK_RLMT_INDICATOR2 &&
-               pRPacket->Indicator[3] == SK_RLMT_INDICATOR3 &&
-               pRPacket->Indicator[4] == SK_RLMT_INDICATOR4 &&
-               pRPacket->Indicator[5] == SK_RLMT_INDICATOR5 &&
-               pRPacket->Indicator[6] == SK_RLMT_INDICATOR6) {
-
-               /* It's an RLMT packet. */
-               PacketType = (SK_U16)((pRPacket->RlmtPacketType[0] << 8) |
-                       pRPacket->RlmtPacketType[1]);
-
-               switch (PacketType) {
-               case SK_PACKET_ANNOUNCE:        /* Not yet used. */
-#if 0
-                       /* Build the check chain. */
-                       SkRlmtBuildCheckChain(pAC);
-#endif /* 0 */
-
-                       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_RX,
-                               ("SkRlmtPacketReceive: Announce.\n"))
-
-                       SkDrvFreeRlmtMbuf(pAC, IoC, pMb);
-                       break;
-
-               case SK_PACKET_ALIVE:
-                       if (pRPacket->SSap & LLC_COMMAND_RESPONSE_BIT) {
-                               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_RX,
-                                       ("SkRlmtPacketReceive: Alive Reply.\n"))
-
-                               if (!(pAC->Addr.Port[PortNumber].PromMode & SK_PROM_MODE_LLC) ||
-                                       SK_ADDR_EQUAL(
-                                               pRPacket->DstAddr, pAPort->CurrentMacAddress.a)) {
-                                       /* Obviously we could send something. */
-                                       if (pRPort->CheckingState & SK_RLMT_PCS_TX) {
-                                               pRPort->CheckingState &=  ~SK_RLMT_PCS_TX;
-                                               SkTimerStop(pAC, IoC, &pRPort->DownTxTimer);
-                                       }
-
-                                       if ((pRPort->PortState == SK_RLMT_PS_DOWN) &&
-                                               !(pRPort->CheckingState & SK_RLMT_PCS_RX)) {
-                                               pRPort->PortState = SK_RLMT_PS_GOING_UP;
-                                               pRPort->GuTimeStamp = SkOsGetTime(pAC);
-
-                                               SkTimerStop(pAC, IoC, &pRPort->DownTxTimer);
-
-                                               Para.Para32[0] = PortNumber;
-                                               Para.Para32[1] = (SK_U32)-1;
-                                               SkTimerStart(pAC, IoC, &pRPort->UpTimer,
-                                                       SK_RLMT_PORTUP_TIM_VAL, SKGE_RLMT,
-                                                       SK_RLMT_PORTUP_TIM, Para);
-                                       }
-                               }
-
-                               /* Mark sending port as alive? */
-                               SkDrvFreeRlmtMbuf(pAC, IoC, pMb);
-                       }
-                       else {  /* Alive Request Packet. */
-                               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_RX,
-                                       ("SkRlmtPacketReceive: Alive Request.\n"))
-
-                               pRPort->RxHelloCts++;
-
-                               /* Answer. */
-                               for (i = 0; i < SK_MAC_ADDR_LEN; i++) {
-                                       pRPacket->DstAddr[i] = pRPacket->SrcAddr[i];
-                                       pRPacket->SrcAddr[i] =
-                                               pAC->Addr.Port[PortNumber].CurrentMacAddress.a[i];
-                               }
-                               pRPacket->SSap |= LLC_COMMAND_RESPONSE_BIT;
-
-                               Para.pParaPtr = pMb;
-                               SkEventQueue(pAC, SKGE_DRV, SK_DRV_RLMT_SEND, Para);
-                       }
-                       break;
-
-               case SK_PACKET_CHECK_TX:
-                       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_RX,
-                               ("SkRlmtPacketReceive: Check your tx line.\n"))
-
-                       /* A port checking us requests us to check our tx line. */
-                       pRPort->CheckingState |= SK_RLMT_PCS_TX;
-
-                       /* Start PortDownTx timer. */
-                       Para.Para32[0] = PortNumber;
-                       Para.Para32[1] = (SK_U32)-1;
-                       SkTimerStart(pAC, IoC, &pRPort->DownTxTimer,
-                               SK_RLMT_PORTDOWN_TIM_VAL, SKGE_RLMT,
-                               SK_RLMT_PORTDOWN_TX_TIM, Para);
-
-                       SkDrvFreeRlmtMbuf(pAC, IoC, pMb);
-
-                       if ((Para.pParaPtr = SkRlmtBuildPacket(pAC, IoC, PortNumber,
-                               SK_PACKET_ALIVE, &pAC->Addr.Port[PortNumber].CurrentMacAddress,
-                               &SkRlmtMcAddr)) != NULL) {
-                               SkEventQueue(pAC, SKGE_DRV, SK_DRV_RLMT_SEND, Para);
-                       }
-                       break;
-
-               case SK_PACKET_ADDR_CHANGED:
-                       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_RX,
-                               ("SkRlmtPacketReceive: Address Change.\n"))
-
-                       /* Build the check chain. */
-                       SkRlmtBuildCheckChain(pAC, pRPort->Net->NetNumber);
-                       SkDrvFreeRlmtMbuf(pAC, IoC, pMb);
-                       break;
-
-               default:
-                       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_RX,
-                               ("SkRlmtPacketReceive: Unknown RLMT packet.\n"))
-
-                       /* RA;:;: ??? */
-                       SkDrvFreeRlmtMbuf(pAC, IoC, pMb);
-               }
-       }
-       else if (pSPacket->DSap == SK_RLMT_SPT_DSAP &&
-               pSPacket->Ctrl == SK_RLMT_SPT_CTRL &&
-               (pSPacket->SSap & ~LLC_COMMAND_RESPONSE_BIT) == SK_RLMT_SPT_SSAP) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_RX,
-                       ("SkRlmtPacketReceive: BPDU Packet.\n"))
-
-               /* Spanning Tree packet. */
-               pRPort->RxSpHelloCts++;
-
-               if (!SK_ADDR_EQUAL(&pSPacket->RootId[2], &pAC->Addr.Net[pAC->Rlmt.
-                       Port[PortNumber].Net->NetNumber].CurrentMacAddress.a[0])) {
-                       /*
-                        * Check segmentation if a new root bridge is set and
-                        * the segmentation check is not currently running.
-                        */
-                       if (!SK_ADDR_EQUAL(&pSPacket->RootId[2], &pRPort->Root.Id[2]) &&
-                               (pAC->Rlmt.Port[PortNumber].Net->LinksUp > 1) &&
-                               (pAC->Rlmt.Port[PortNumber].Net->RlmtMode & SK_RLMT_CHECK_SEG)
-                               != 0 && (pAC->Rlmt.Port[PortNumber].Net->CheckingState &
-                               SK_RLMT_RCS_SEG) == 0) {
-                               pAC->Rlmt.Port[PortNumber].Net->CheckingState |=
-                                       SK_RLMT_RCS_START_SEG | SK_RLMT_RCS_SEND_SEG;
-                       }
-
-                       /* Store tree view of this port. */
-                       for (i = 0; i < 8; i++) {
-                               pRPort->Root.Id[i] = pSPacket->RootId[i];
-                       }
-                       pRPort->RootIdSet = SK_TRUE;
-
-                       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_DUMP,
-                               ("Root ID %d: %02x %02x %02x %02x %02x %02x %02x %02x.\n",
-                                       PortNumber,
-                                       pRPort->Root.Id[0], pRPort->Root.Id[1],
-                                       pRPort->Root.Id[2], pRPort->Root.Id[3],
-                                       pRPort->Root.Id[4], pRPort->Root.Id[5],
-                                       pRPort->Root.Id[6], pRPort->Root.Id[7]))
-               }
-
-               SkDrvFreeRlmtMbuf(pAC, IoC, pMb);
-               if ((pAC->Rlmt.Port[PortNumber].Net->CheckingState &
-                       SK_RLMT_RCS_REPORT_SEG) != 0) {
-                       SkRlmtCheckSeg(pAC, IoC, pAC->Rlmt.Port[PortNumber].Net->NetNumber);
-               }
-       }
-       else {
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_RX,
-                       ("SkRlmtPacketReceive: Unknown Packet Type.\n"))
-
-               /* Unknown packet. */
-               SkDrvFreeRlmtMbuf(pAC, IoC, pMb);
-       }
-       return;
-}      /* SkRlmtPacketReceive */
-
-
-/******************************************************************************
- *
- *     SkRlmtCheckPort - check if a port works
- *
- * Description:
- *     This routine checks if a port whose link is up received something
- *     and if it seems to transmit successfully.
- *
- *     # PortState: PsInit, PsLinkDown, PsDown, PsGoingUp, PsUp
- *     # PortCheckingState (Bitfield): ChkTx, ChkRx, ChkSeg
- *     # RlmtCheckingState (Bitfield): ChkSeg, StartChkSeg, ReportSeg
- *
- *     if (Rx - RxBpdu == 0) { # No rx.
- *             if (state == PsUp) {
- *                     PortCheckingState |= ChkRx
- *             }
- *             if (ModeCheckSeg && (Timeout ==
- *                     TO_SHORTEN(RLMT_DEFAULT_TIMEOUT))) {
- *                     RlmtCheckingState |= ChkSeg)
- *                     PortCheckingState |= ChkSeg
- *             }
- *             NewTimeout = TO_SHORTEN(Timeout)
- *             if (NewTimeout < RLMT_MIN_TIMEOUT) {
- *                     NewTimeout = RLMT_MIN_TIMEOUT
- *                     PortState = PsDown
- *                     ...
- *             }
- *     }
- *     else {  # something was received
- *             # Set counter to 0 at LinkDown?
- *             #   No - rx may be reported after LinkDown ???
- *             PortCheckingState &= ~ChkRx
- *             NewTimeout = RLMT_DEFAULT_TIMEOUT
- *             if (RxAck == 0) {
- *                     possible reasons:
- *                     is my tx line bad? --
- *                             send RLMT multicast and report
- *                             back internally? (only possible
- *                             between ports on same adapter)
- *             }
- *             if (RxChk == 0) {
- *                     possible reasons:
- *                     - tx line of port set to check me
- *                       maybe bad
- *                     - no other port/adapter available or set
- *                       to check me
- *                     - adapter checking me has a longer
- *                       timeout
- *                     ??? anything that can be done here?
- *             }
- *     }
- *
- * Context:
- *     runtime, pageable?
- *
- * Returns:
- *     New timeout value.
- */
-RLMT_STATIC SK_U32     SkRlmtCheckPort(
-SK_AC  *pAC,           /* Adapter Context */
-SK_IOC IoC,            /* I/O Context */
-SK_U32 PortNumber)     /* Port to check */
-{
-       unsigned                i;
-       SK_U32                  NewTimeout;
-       SK_RLMT_PORT    *pRPort;
-       SK_EVPARA               Para;
-
-       pRPort = &pAC->Rlmt.Port[PortNumber];
-
-       if ((pRPort->PacketsPerTimeSlot - pRPort->BpduPacketsPerTimeSlot) == 0) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("SkRlmtCheckPort %d: No (%d) receives in last time slot.\n",
-                               PortNumber, pRPort->PacketsPerTimeSlot))
-
-               /*
-                * Check segmentation if there was no receive at least twice
-                * in a row (PortNoRx is already set) and the segmentation
-                * check is not currently running.
-                */
-
-               if (pRPort->PortNoRx && (pAC->Rlmt.Port[PortNumber].Net->LinksUp > 1) &&
-                       (pAC->Rlmt.Port[PortNumber].Net->RlmtMode & SK_RLMT_CHECK_SEG) &&
-                       !(pAC->Rlmt.Port[PortNumber].Net->CheckingState & SK_RLMT_RCS_SEG)) {
-                       pAC->Rlmt.Port[PortNumber].Net->CheckingState |=
-                               SK_RLMT_RCS_START_SEG | SK_RLMT_RCS_SEND_SEG;
-               }
-
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("SkRlmtCheckPort: PortsSuspect %d, PcsRx %d.\n",
-                               pRPort->PortsSuspect, pRPort->CheckingState & SK_RLMT_PCS_RX))
-
-               if (pRPort->PortState != SK_RLMT_PS_DOWN) {
-                       NewTimeout = TO_SHORTEN(pAC->Rlmt.Port[PortNumber].Net->TimeoutValue);
-                       if (NewTimeout < SK_RLMT_MIN_TO_VAL) {
-                               NewTimeout = SK_RLMT_MIN_TO_VAL;
-                       }
-
-                       if (!(pRPort->CheckingState & SK_RLMT_PCS_RX)) {
-                               Para.Para32[0] = PortNumber;
-                               pRPort->CheckingState |= SK_RLMT_PCS_RX;
-
-                               /*
-                                * What shall we do if the port checked by this one receives
-                                * our request frames?  What's bad - our rx line or his tx line?
-                                */
-                               Para.Para32[1] = (SK_U32)-1;
-                               SkTimerStart(pAC, IoC, &pRPort->DownRxTimer,
-                                       SK_RLMT_PORTDOWN_TIM_VAL, SKGE_RLMT,
-                                       SK_RLMT_PORTDOWN_RX_TIM, Para);
-
-                               for (i = 0; i < pRPort->PortsChecked; i++) {
-                                       if (pRPort->PortCheck[i].SuspectTx) {
-                                               continue;
-                                       }
-                                       pRPort->PortCheck[i].SuspectTx = SK_TRUE;
-                                       pRPort->PortsSuspect++;
-                                       if ((Para.pParaPtr =
-                                               SkRlmtBuildPacket(pAC, IoC, PortNumber, SK_PACKET_CHECK_TX,
-                                                       &pAC->Addr.Port[PortNumber].CurrentMacAddress,
-                                                       &pRPort->PortCheck[i].CheckAddr)) != NULL) {
-                                               SkEventQueue(pAC, SKGE_DRV, SK_DRV_RLMT_SEND, Para);
-                                       }
-                               }
-                       }
-               }
-               else {  /* PortDown -- or all partners suspect. */
-                       NewTimeout = SK_RLMT_DEF_TO_VAL;
-               }
-               pRPort->PortNoRx = SK_TRUE;
-       }
-       else {  /* A non-BPDU packet was received. */
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("SkRlmtCheckPort %d: %d (%d) receives in last time slot.\n",
-                               PortNumber,
-                               pRPort->PacketsPerTimeSlot - pRPort->BpduPacketsPerTimeSlot,
-                               pRPort->PacketsPerTimeSlot))
-
-               SkRlmtPortReceives(pAC, IoC, PortNumber);
-               if (pAC->Rlmt.CheckSwitch) {
-                       SkRlmtCheckSwitch(pAC, IoC, pRPort->Net->NetNumber);
-               }
-
-               NewTimeout = SK_RLMT_DEF_TO_VAL;
-       }
-
-       return (NewTimeout);
-}      /* SkRlmtCheckPort */
-
-
-/******************************************************************************
- *
- *     SkRlmtSelectBcRx - select new active port, criteria 1 (CLP)
- *
- * Description:
- *     This routine selects the port that received a broadcast frame
- *     substantially later than all other ports.
- *
- * Context:
- *     runtime, pageable?
- *
- * Returns:
- *     SK_BOOL
- */
-RLMT_STATIC SK_BOOL    SkRlmtSelectBcRx(
-SK_AC  *pAC,           /* Adapter Context */
-SK_IOC IoC,            /* I/O Context */
-SK_U32 Active,         /* Active port */
-SK_U32 PrefPort,       /* Preferred port */
-SK_U32 *pSelect)       /* New active port */
-{
-       SK_U64          BcTimeStamp;
-       SK_U32          i;
-       SK_BOOL         PortFound;
-
-       BcTimeStamp = 0;        /* Not totally necessary, but feeling better. */
-       PortFound = SK_FALSE;
-
-       /* Select port with the latest TimeStamp. */
-       for (i = 0; i < (SK_U32)pAC->GIni.GIMacsFound; i++) {
-
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("TimeStamp Port %d (Down: %d, NoRx: %d): %08x %08x.\n",
-                               i,
-                               pAC->Rlmt.Port[i].PortDown, pAC->Rlmt.Port[i].PortNoRx,
-                               *((SK_U32*)(&pAC->Rlmt.Port[i].BcTimeStamp) + OFFS_HI32),
-                               *((SK_U32*)(&pAC->Rlmt.Port[i].BcTimeStamp) + OFFS_LO32)))
-
-               if (!pAC->Rlmt.Port[i].PortDown && !pAC->Rlmt.Port[i].PortNoRx) {
-                       if (!PortFound || pAC->Rlmt.Port[i].BcTimeStamp > BcTimeStamp) {
-                               BcTimeStamp = pAC->Rlmt.Port[i].BcTimeStamp;
-                               *pSelect = i;
-                               PortFound = SK_TRUE;
-                       }
-               }
-       }
-
-       if (PortFound) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("Port %d received the last broadcast.\n", *pSelect))
-
-               /* Look if another port's time stamp is similar. */
-               for (i = 0; i < (SK_U32)pAC->GIni.GIMacsFound; i++) {
-                       if (i == *pSelect) {
-                               continue;
-                       }
-                       if (!pAC->Rlmt.Port[i].PortDown && !pAC->Rlmt.Port[i].PortNoRx &&
-                               (pAC->Rlmt.Port[i].BcTimeStamp >
-                                BcTimeStamp - SK_RLMT_BC_DELTA ||
-                               pAC->Rlmt.Port[i].BcTimeStamp +
-                                SK_RLMT_BC_DELTA > BcTimeStamp)) {
-                               PortFound = SK_FALSE;
-
-                               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                                       ("Port %d received a broadcast at a similar time.\n", i))
-                               break;
-                       }
-               }
-       }
-
-#ifdef DEBUG
-       if (PortFound) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("SK_RLMT_SELECT_BCRX found Port %d receiving the substantially "
-                        "latest broadcast (%u).\n",
-                               *pSelect,
-                               BcTimeStamp - pAC->Rlmt.Port[1 - *pSelect].BcTimeStamp))
-       }
-#endif /* DEBUG */
-
-       return (PortFound);
-}      /* SkRlmtSelectBcRx */
-
-
-/******************************************************************************
- *
- *     SkRlmtSelectNotSuspect - select new active port, criteria 2 (CLP)
- *
- * Description:
- *     This routine selects a good port (it is PortUp && !SuspectRx).
- *
- * Context:
- *     runtime, pageable?
- *
- * Returns:
- *     SK_BOOL
- */
-RLMT_STATIC SK_BOOL    SkRlmtSelectNotSuspect(
-SK_AC  *pAC,           /* Adapter Context */
-SK_IOC IoC,            /* I/O Context */
-SK_U32 Active,         /* Active port */
-SK_U32 PrefPort,       /* Preferred port */
-SK_U32 *pSelect)       /* New active port */
-{
-       SK_U32          i;
-       SK_BOOL         PortFound;
-
-       PortFound = SK_FALSE;
-
-       /* Select first port that is PortUp && !SuspectRx. */
-       for (i = 0; i < (SK_U32)pAC->GIni.GIMacsFound; i++) {
-               if (!pAC->Rlmt.Port[i].PortDown &&
-                       !(pAC->Rlmt.Port[i].CheckingState & SK_RLMT_PCS_RX)) {
-                       *pSelect = i;
-                       if (!pAC->Rlmt.Port[Active].PortDown &&
-                               !(pAC->Rlmt.Port[Active].CheckingState & SK_RLMT_PCS_RX)) {
-                               *pSelect = Active;
-                       }
-                       if (!pAC->Rlmt.Port[PrefPort].PortDown &&
-                               !(pAC->Rlmt.Port[PrefPort].CheckingState & SK_RLMT_PCS_RX)) {
-                               *pSelect = PrefPort;
-                       }
-                       PortFound = SK_TRUE;
-                       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                               ("SK_RLMT_SELECT_NOTSUSPECT found Port %d up and not check RX.\n",
-                                       *pSelect))
-                       break;
-               }
-       }
-       return (PortFound);
-}      /* SkRlmtSelectNotSuspect */
-
-
-/******************************************************************************
- *
- *     SkRlmtSelectUp - select new active port, criteria 3, 4 (CLP)
- *
- * Description:
- *     This routine selects a port that is up.
- *
- * Context:
- *     runtime, pageable?
- *
- * Returns:
- *     SK_BOOL
- */
-RLMT_STATIC SK_BOOL    SkRlmtSelectUp(
-SK_AC  *pAC,                   /* Adapter Context */
-SK_IOC IoC,                    /* I/O Context */
-SK_U32 Active,                 /* Active port */
-SK_U32 PrefPort,               /* Preferred port */
-SK_U32 *pSelect,               /* New active port */
-SK_BOOL        AutoNegDone)    /* Successfully auto-negotiated? */
-{
-       SK_U32          i;
-       SK_BOOL         PortFound;
-
-       PortFound = SK_FALSE;
-
-       /* Select first port that is PortUp. */
-       for (i = 0; i < (SK_U32)pAC->GIni.GIMacsFound; i++) {
-               if (pAC->Rlmt.Port[i].PortState == SK_RLMT_PS_UP &&
-                       pAC->GIni.GP[i].PAutoNegFail != AutoNegDone) {
-                       *pSelect = i;
-                       if (pAC->Rlmt.Port[Active].PortState == SK_RLMT_PS_UP &&
-                               pAC->GIni.GP[Active].PAutoNegFail != AutoNegDone) {
-                               *pSelect = Active;
-                       }
-                       if (pAC->Rlmt.Port[PrefPort].PortState == SK_RLMT_PS_UP &&
-                               pAC->GIni.GP[PrefPort].PAutoNegFail != AutoNegDone) {
-                               *pSelect = PrefPort;
-                       }
-                       PortFound = SK_TRUE;
-                       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                               ("SK_RLMT_SELECT_UP found Port %d up.\n", *pSelect))
-                       break;
-               }
-       }
-       return (PortFound);
-}      /* SkRlmtSelectUp */
-
-
-/******************************************************************************
- *
- *     SkRlmtSelectGoingUp - select new active port, criteria 5, 6 (CLP)
- *
- * Description:
- *     This routine selects the port that is going up for the longest time.
- *
- * Context:
- *     runtime, pageable?
- *
- * Returns:
- *     SK_BOOL
- */
-RLMT_STATIC SK_BOOL    SkRlmtSelectGoingUp(
-SK_AC  *pAC,                   /* Adapter Context */
-SK_IOC IoC,                    /* I/O Context */
-SK_U32 Active,                 /* Active port */
-SK_U32 PrefPort,               /* Preferred port */
-SK_U32 *pSelect,               /* New active port */
-SK_BOOL        AutoNegDone)    /* Successfully auto-negotiated? */
-{
-       SK_U64          GuTimeStamp;
-       SK_U32          i;
-       SK_BOOL         PortFound;
-
-       GuTimeStamp = 0;
-       PortFound = SK_FALSE;
-
-       /* Select port that is PortGoingUp for the longest time. */
-       for (i = 0; i < (SK_U32)pAC->GIni.GIMacsFound; i++) {
-               if (pAC->Rlmt.Port[i].PortState == SK_RLMT_PS_GOING_UP &&
-                       pAC->GIni.GP[i].PAutoNegFail != AutoNegDone) {
-                       GuTimeStamp = pAC->Rlmt.Port[i].GuTimeStamp;
-                       *pSelect = i;
-                       PortFound = SK_TRUE;
-                       break;
-               }
-       }
-
-       if (!PortFound) {
-               return (SK_FALSE);
-       }
-
-       for (i = *pSelect + 1; i < (SK_U32)pAC->GIni.GIMacsFound; i++) {
-               if (pAC->Rlmt.Port[i].PortState == SK_RLMT_PS_GOING_UP &&
-                       pAC->Rlmt.Port[i].GuTimeStamp < GuTimeStamp &&
-                       pAC->GIni.GP[i].PAutoNegFail != AutoNegDone) {
-                       GuTimeStamp = pAC->Rlmt.Port[i].GuTimeStamp;
-                       *pSelect = i;
-               }
-       }
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-               ("SK_RLMT_SELECT_GOINGUP found Port %d going up.\n", *pSelect))
-       return (SK_TRUE);
-}      /* SkRlmtSelectGoingUp */
-
-
-/******************************************************************************
- *
- *     SkRlmtSelectDown - select new active port, criteria 7, 8 (CLP)
- *
- * Description:
- *     This routine selects a port that is down.
- *
- * Context:
- *     runtime, pageable?
- *
- * Returns:
- *     SK_BOOL
- */
-RLMT_STATIC SK_BOOL    SkRlmtSelectDown(
-SK_AC  *pAC,                   /* Adapter Context */
-SK_IOC IoC,                    /* I/O Context */
-SK_U32 Active,                 /* Active port */
-SK_U32 PrefPort,               /* Preferred port */
-SK_U32 *pSelect,               /* New active port */
-SK_BOOL        AutoNegDone)    /* Successfully auto-negotiated? */
-{
-       SK_U32          i;
-       SK_BOOL         PortFound;
-
-       PortFound = SK_FALSE;
-
-       /* Select first port that is PortDown. */
-       for (i = 0; i < (SK_U32)pAC->GIni.GIMacsFound; i++) {
-               if (pAC->Rlmt.Port[i].PortState == SK_RLMT_PS_DOWN &&
-                       pAC->GIni.GP[i].PAutoNegFail != AutoNegDone) {
-                       *pSelect = i;
-                       if (pAC->Rlmt.Port[Active].PortState == SK_RLMT_PS_DOWN &&
-                               pAC->GIni.GP[Active].PAutoNegFail != AutoNegDone) {
-                               *pSelect = Active;
-                       }
-                       if (pAC->Rlmt.Port[PrefPort].PortState == SK_RLMT_PS_DOWN &&
-                               pAC->GIni.GP[PrefPort].PAutoNegFail != AutoNegDone) {
-                               *pSelect = PrefPort;
-                       }
-                       PortFound = SK_TRUE;
-                       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                               ("SK_RLMT_SELECT_DOWN found Port %d down.\n", *pSelect))
-                       break;
-               }
-       }
-       return (PortFound);
-}      /* SkRlmtSelectDown */
-
-
-/******************************************************************************
- *
- *     SkRlmtCheckSwitch - select new active port and switch to it
- *
- * Description:
- *     This routine decides which port should be the active one and queues
- *     port switching if necessary.
- *
- * Context:
- *     runtime, pageable?
- *
- * Returns:
- *     Nothing.
- */
-RLMT_STATIC void       SkRlmtCheckSwitch(
-SK_AC  *pAC,   /* Adapter Context */
-SK_IOC IoC,    /* I/O Context */
-SK_U32 NetIdx) /* Net index */
-{
-       SK_EVPARA       Para;
-       SK_U32          Active;
-       SK_U32          PrefPort;
-       SK_U32          i;
-       SK_BOOL         PortFound;
-
-       Active = pAC->Rlmt.Net[NetIdx].ActivePort;      /* Index of active port. */
-       PrefPort = pAC->Rlmt.Net[NetIdx].PrefPort;      /* Index of preferred port. */
-       PortFound = SK_FALSE;
-       pAC->Rlmt.CheckSwitch = SK_FALSE;
-
-#if 0  /* RW 2001/10/18 - active port becomes always prefered one */
-       if (pAC->Rlmt.Net[NetIdx].Preference == 0xFFFFFFFF) { /* Automatic */
-               /* disable auto-fail back */
-               PrefPort = Active;
-       }
-#endif
-
-       if (pAC->Rlmt.Net[NetIdx].LinksUp == 0) {
-               /* Last link went down - shut down the net. */
-               pAC->Rlmt.Net[NetIdx].RlmtState = SK_RLMT_RS_NET_DOWN;
-               Para.Para32[0] = SK_RLMT_NET_DOWN_TEMP;
-               Para.Para32[1] = NetIdx;
-               SkEventQueue(pAC, SKGE_DRV, SK_DRV_NET_DOWN, Para);
-
-               Para.Para32[0] = pAC->Rlmt.Net[NetIdx].
-                       Port[pAC->Rlmt.Net[NetIdx].ActivePort]->PortNumber;
-               Para.Para32[1] = NetIdx;
-               SkEventQueue(pAC, SKGE_PNMI, SK_PNMI_EVT_RLMT_ACTIVE_DOWN, Para);
-               return;
-       }       /* pAC->Rlmt.LinksUp == 0 */
-       else if (pAC->Rlmt.Net[NetIdx].LinksUp == 1 &&
-               pAC->Rlmt.Net[NetIdx].RlmtState == SK_RLMT_RS_NET_DOWN) {
-               /* First link came up - get the net up. */
-               pAC->Rlmt.Net[NetIdx].RlmtState = SK_RLMT_RS_NET_UP;
-
-               /*
-                * If pAC->Rlmt.ActivePort != Para.Para32[0],
-                * the DRV switches to the port that came up.
-                */
-               for (i = 0; i < pAC->Rlmt.Net[NetIdx].NumPorts; i++) {
-                       if (!pAC->Rlmt.Net[NetIdx].Port[i]->LinkDown) {
-                               if (!pAC->Rlmt.Net[NetIdx].Port[Active]->LinkDown) {
-                                       i = Active;
-                               }
-                               if (!pAC->Rlmt.Net[NetIdx].Port[PrefPort]->LinkDown) {
-                                       i = PrefPort;
-                               }
-                               PortFound = SK_TRUE;
-                               break;
-                       }
-               }
-
-               if (PortFound) {
-                       Para.Para32[0] = pAC->Rlmt.Net[NetIdx].Port[i]->PortNumber;
-                       Para.Para32[1] = NetIdx;
-                       SkEventQueue(pAC, SKGE_PNMI, SK_PNMI_EVT_RLMT_ACTIVE_UP, Para);
-
-                       pAC->Rlmt.Net[NetIdx].ActivePort = i;
-                       Para.Para32[0] = pAC->Rlmt.Net[NetIdx].Port[i]->PortNumber;
-                       Para.Para32[1] = NetIdx;
-                       SkEventQueue(pAC, SKGE_DRV, SK_DRV_NET_UP, Para);
-
-                       if ((pAC->Rlmt.Net[NetIdx].RlmtMode & SK_RLMT_TRANSPARENT) == 0 &&
-                               (Para.pParaPtr = SkRlmtBuildPacket(pAC, IoC,
-                               pAC->Rlmt.Net[NetIdx].Port[i]->PortNumber,
-                               SK_PACKET_ANNOUNCE, &pAC->Addr.Net[NetIdx].
-                               CurrentMacAddress, &SkRlmtMcAddr)) != NULL) {
-                               /*
-                                * Send announce packet to RLMT multicast address to force
-                                * switches to learn the new location of the logical MAC address.
-                                */
-                               SkEventQueue(pAC, SKGE_DRV, SK_DRV_RLMT_SEND, Para);
-                       }
-               }
-               else {
-                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_RLMT_E007, SKERR_RLMT_E007_MSG);
-               }
-
-               return;
-       }       /* LinksUp == 1 && RlmtState == SK_RLMT_RS_NET_DOWN */
-       else {  /* Cannot be reached in dual-net mode. */
-               Para.Para32[0] = Active;
-
-               /*
-                * Preselection:
-                *      If RLMT Mode != CheckLinkState
-                *              select port that received a broadcast frame substantially later
-                *              than all other ports
-                *      else select first port that is not SuspectRx
-                *      else select first port that is PortUp
-                *      else select port that is PortGoingUp for the longest time
-                *      else select first port that is PortDown
-                *      else stop.
-                *
-                * For the preselected port:
-                *      If ActivePort is equal in quality, select ActivePort.
-                *
-                *      If PrefPort is equal in quality, select PrefPort.
-                *
-                *      If ActivePort != SelectedPort,
-                *              If old ActivePort is LinkDown,
-                *                      SwitchHard
-                *              else
-                *                      SwitchSoft
-                */
-               /* check of ChgBcPrio flag added */
-               if ((pAC->Rlmt.Net[0].RlmtMode != SK_RLMT_MODE_CLS) &&
-                       (!pAC->Rlmt.Net[0].ChgBcPrio)) {
-
-                       if (!PortFound) {
-                               PortFound = SkRlmtSelectBcRx(
-                                       pAC, IoC, Active, PrefPort, &Para.Para32[1]);
-                       }
-
-                       if (!PortFound) {
-                               PortFound = SkRlmtSelectNotSuspect(
-                                       pAC, IoC, Active, PrefPort, &Para.Para32[1]);
-                       }
-               }       /* pAC->Rlmt.RlmtMode != SK_RLMT_MODE_CLS */
-
-               /* with changed priority for last broadcast received */
-               if ((pAC->Rlmt.Net[0].RlmtMode != SK_RLMT_MODE_CLS) &&
-                       (pAC->Rlmt.Net[0].ChgBcPrio)) {
-                       if (!PortFound) {
-                               PortFound = SkRlmtSelectNotSuspect(
-                                       pAC, IoC, Active, PrefPort, &Para.Para32[1]);
-                       }
-
-                       if (!PortFound) {
-                               PortFound = SkRlmtSelectBcRx(
-                                       pAC, IoC, Active, PrefPort, &Para.Para32[1]);
-                       }
-               }       /* pAC->Rlmt.RlmtMode != SK_RLMT_MODE_CLS */
-
-               if (!PortFound) {
-                       PortFound = SkRlmtSelectUp(
-                               pAC, IoC, Active, PrefPort, &Para.Para32[1], AUTONEG_SUCCESS);
-               }
-
-               if (!PortFound) {
-                       PortFound = SkRlmtSelectUp(
-                               pAC, IoC, Active, PrefPort, &Para.Para32[1], AUTONEG_FAILED);
-               }
-
-               if (!PortFound) {
-                       PortFound = SkRlmtSelectGoingUp(
-                               pAC, IoC, Active, PrefPort, &Para.Para32[1], AUTONEG_SUCCESS);
-               }
-
-               if (!PortFound) {
-                       PortFound = SkRlmtSelectGoingUp(
-                               pAC, IoC, Active, PrefPort, &Para.Para32[1], AUTONEG_FAILED);
-               }
-
-               if (pAC->Rlmt.Net[0].RlmtMode != SK_RLMT_MODE_CLS) {
-                       if (!PortFound) {
-                               PortFound = SkRlmtSelectDown(pAC, IoC,
-                                       Active, PrefPort, &Para.Para32[1], AUTONEG_SUCCESS);
-                       }
-
-                       if (!PortFound) {
-                               PortFound = SkRlmtSelectDown(pAC, IoC,
-                                       Active, PrefPort, &Para.Para32[1], AUTONEG_FAILED);
-                       }
-               }       /* pAC->Rlmt.RlmtMode != SK_RLMT_MODE_CLS */
-
-               if (PortFound) {
-
-                       if (Para.Para32[1] != Active) {
-                               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                                       ("Active: %d, Para1: %d.\n", Active, Para.Para32[1]))
-                               pAC->Rlmt.Net[NetIdx].ActivePort = Para.Para32[1];
-                               Para.Para32[0] = pAC->Rlmt.Net[NetIdx].
-                                       Port[Para.Para32[0]]->PortNumber;
-                               Para.Para32[1] = pAC->Rlmt.Net[NetIdx].
-                                       Port[Para.Para32[1]]->PortNumber;
-                               SK_HWAC_LINK_LED(pAC, IoC, Para.Para32[1], SK_LED_ACTIVE);
-                               if (pAC->Rlmt.Port[Active].LinkDown) {
-                                       SkEventQueue(pAC, SKGE_DRV, SK_DRV_SWITCH_HARD, Para);
-                               }
-                               else {
-                                       SK_HWAC_LINK_LED(pAC, IoC, Para.Para32[0], SK_LED_STANDBY);
-                                       SkEventQueue(pAC, SKGE_DRV, SK_DRV_SWITCH_SOFT, Para);
-                               }
-                               Para.Para32[1] = NetIdx;
-                               Para.Para32[0] =
-                                       pAC->Rlmt.Net[NetIdx].Port[Para.Para32[0]]->PortNumber;
-                               SkEventQueue(pAC, SKGE_PNMI, SK_PNMI_EVT_RLMT_ACTIVE_DOWN, Para);
-                               Para.Para32[0] = pAC->Rlmt.Net[NetIdx].
-                                       Port[pAC->Rlmt.Net[NetIdx].ActivePort]->PortNumber;
-                               SkEventQueue(pAC, SKGE_PNMI, SK_PNMI_EVT_RLMT_ACTIVE_UP, Para);
-                               if ((pAC->Rlmt.Net[NetIdx].RlmtMode & SK_RLMT_TRANSPARENT) == 0 &&
-                                       (Para.pParaPtr = SkRlmtBuildPacket(pAC, IoC, Para.Para32[0],
-                                       SK_PACKET_ANNOUNCE, &pAC->Addr.Net[NetIdx].CurrentMacAddress,
-                                       &SkRlmtMcAddr)) != NULL) {
-                                       /*
-                                        * Send announce packet to RLMT multicast address to force
-                                        * switches to learn the new location of the logical
-                                        * MAC address.
-                                        */
-                                       SkEventQueue(pAC, SKGE_DRV, SK_DRV_RLMT_SEND, Para);
-                               }       /* (Para.pParaPtr = SkRlmtBuildPacket(...)) != NULL */
-                       }       /* Para.Para32[1] != Active */
-               }       /* PortFound */
-               else {
-                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_RLMT_E004, SKERR_RLMT_E004_MSG);
-               }
-       }       /* LinksUp > 1 || LinksUp == 1 && RlmtState != SK_RLMT_RS_NET_DOWN */
-       return;
-}      /* SkRlmtCheckSwitch */
-
-
-/******************************************************************************
- *
- *     SkRlmtCheckSeg - Report if segmentation is detected
- *
- * Description:
- *     This routine checks if the ports see different root bridges and reports
- *     segmentation in such a case.
- *
- * Context:
- *     runtime, pageable?
- *
- * Returns:
- *     Nothing.
- */
-RLMT_STATIC void       SkRlmtCheckSeg(
-SK_AC  *pAC,   /* Adapter Context */
-SK_IOC IoC,    /* I/O Context */
-SK_U32 NetIdx) /* Net number */
-{
-       SK_EVPARA       Para;
-       SK_RLMT_NET     *pNet;
-       SK_U32          i, j;
-       SK_BOOL         Equal;
-
-       pNet = &pAC->Rlmt.Net[NetIdx];
-       pNet->RootIdSet = SK_FALSE;
-       Equal = SK_TRUE;
-
-       for (i = 0; i < pNet->NumPorts; i++) {
-               if (pNet->Port[i]->LinkDown || !pNet->Port[i]->RootIdSet) {
-                       continue;
-               }
-
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_DUMP,
-                       ("Root ID %d: %02x %02x %02x %02x %02x %02x %02x %02x.\n", i,
-                               pNet->Port[i]->Root.Id[0], pNet->Port[i]->Root.Id[1],
-                               pNet->Port[i]->Root.Id[2], pNet->Port[i]->Root.Id[3],
-                               pNet->Port[i]->Root.Id[4], pNet->Port[i]->Root.Id[5],
-                               pNet->Port[i]->Root.Id[6], pNet->Port[i]->Root.Id[7]))
-
-               if (!pNet->RootIdSet) {
-                       pNet->Root = pNet->Port[i]->Root;
-                       pNet->RootIdSet = SK_TRUE;
-                       continue;
-               }
-
-               for (j = 0; j < 8; j ++) {
-                       Equal &= pNet->Port[i]->Root.Id[j] == pNet->Root.Id[j];
-                       if (!Equal) {
-                               break;
-                       }
-               }
-
-               if (!Equal) {
-                       SK_ERR_LOG(pAC, SK_ERRCL_COMM, SKERR_RLMT_E005, SKERR_RLMT_E005_MSG);
-                       Para.Para32[0] = NetIdx;
-                       Para.Para32[1] = (SK_U32)-1;
-                       SkEventQueue(pAC, SKGE_PNMI, SK_PNMI_EVT_RLMT_SEGMENTATION, Para);
-
-                       pNet->CheckingState &= ~SK_RLMT_RCS_REPORT_SEG;
-
-                       /* 2000-03-06 RA: New. */
-                       Para.Para32[0] = NetIdx;
-                       Para.Para32[1] = (SK_U32)-1;
-                       SkTimerStart(pAC, IoC, &pNet->SegTimer, SK_RLMT_SEG_TO_VAL,
-                               SKGE_RLMT, SK_RLMT_SEG_TIM, Para);
-                       break;
-               }
-       }       /* for (i = 0; i < pNet->NumPorts; i++) */
-
-       /* 2000-03-06 RA: Moved here. */
-       /* Segmentation check not running anymore. */
-       pNet->CheckingState &= ~SK_RLMT_RCS_SEG;
-
-}      /* SkRlmtCheckSeg */
-
-
-/******************************************************************************
- *
- *     SkRlmtPortStart - initialize port variables and start port
- *
- * Description:
- *     This routine initializes a port's variables and issues a PORT_START
- *     to the HWAC module.  This handles retries if the start fails or the
- *     link eventually goes down.
- *
- * Context:
- *     runtime, pageable?
- *
- * Returns:
- *     Nothing
- */
-RLMT_STATIC void       SkRlmtPortStart(
-SK_AC  *pAC,           /* Adapter Context */
-SK_IOC IoC,            /* I/O Context */
-SK_U32 PortNumber)     /* Port number */
-{
-       SK_EVPARA       Para;
-
-       pAC->Rlmt.Port[PortNumber].PortState = SK_RLMT_PS_LINK_DOWN;
-       pAC->Rlmt.Port[PortNumber].PortStarted = SK_TRUE;
-       pAC->Rlmt.Port[PortNumber].LinkDown = SK_TRUE;
-       pAC->Rlmt.Port[PortNumber].PortDown = SK_TRUE;
-       pAC->Rlmt.Port[PortNumber].CheckingState = 0;
-       pAC->Rlmt.Port[PortNumber].RootIdSet = SK_FALSE;
-       Para.Para32[0] = PortNumber;
-       Para.Para32[1] = (SK_U32)-1;
-       SkEventQueue(pAC, SKGE_HWAC, SK_HWEV_PORT_START, Para);
-}      /* SkRlmtPortStart */
-
-
-/******************************************************************************
- *
- *     SkRlmtEvtPortStartTim - PORT_START_TIM
- *
- * Description:
- *     This routine handles PORT_START_TIM events.
- *
- * Context:
- *     runtime, pageable?
- *     may be called after SK_INIT_IO
- *
- * Returns:
- *     Nothing
- */
-RLMT_STATIC void       SkRlmtEvtPortStartTim(
-SK_AC          *pAC,   /* Adapter Context */
-SK_IOC         IoC,    /* I/O Context */
-SK_EVPARA      Para)   /* SK_U32 PortNumber; SK_U32 -1 */
-{
-       SK_U32                  i;
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-               ("SK_RLMT_PORTSTART_TIMEOUT Port %d Event BEGIN.\n", Para.Para32[0]))
-
-               if (Para.Para32[1] != (SK_U32)-1) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("Bad Parameter.\n"))
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("SK_RLMT_PORTSTART_TIMEOUT Event EMPTY.\n"))
-               return;
-       }
-
-       /*
-        * Used to start non-preferred ports if the preferred one
-        * does not come up.
-        * This timeout needs only be set when starting the first
-        * (preferred) port.
-        */
-       if (pAC->Rlmt.Port[Para.Para32[0]].LinkDown) {
-               /* PORT_START failed. */
-               for (i = 0; i < pAC->Rlmt.Port[Para.Para32[0]].Net->NumPorts; i++) {
-                       if (!pAC->Rlmt.Port[Para.Para32[0]].Net->Port[i]->PortStarted) {
-                               SkRlmtPortStart(pAC, IoC,
-                                       pAC->Rlmt.Port[Para.Para32[0]].Net->Port[i]->PortNumber);
-                       }
-               }
-       }
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-               ("SK_RLMT_PORTSTART_TIMEOUT Event END.\n"))
-}      /* SkRlmtEvtPortStartTim */
-
-
-/******************************************************************************
- *
- *     SkRlmtEvtLinkUp - LINK_UP
- *
- * Description:
- *     This routine handles LLINK_UP events.
- *
- * Context:
- *     runtime, pageable?
- *     may be called after SK_INIT_IO
- *
- * Returns:
- *     Nothing
- */
-RLMT_STATIC void       SkRlmtEvtLinkUp(
-SK_AC          *pAC,   /* Adapter Context */
-SK_IOC         IoC,    /* I/O Context */
-SK_EVPARA      Para)   /* SK_U32 PortNumber; SK_U32 Undefined */
-{
-       SK_U32                  i;
-       SK_RLMT_PORT    *pRPort;
-       SK_EVPARA               Para2;
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-               ("SK_RLMT_LINK_UP Port %d Event BEGIN.\n", Para.Para32[0]))
-
-       pRPort = &pAC->Rlmt.Port[Para.Para32[0]];
-       if (!pRPort->PortStarted) {
-               SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_RLMT_E008, SKERR_RLMT_E008_MSG);
-
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                               ("SK_RLMT_LINK_UP Event EMPTY.\n"))
-               return;
-       }
-
-       if (!pRPort->LinkDown) {
-               /* RA;:;: Any better solution? */
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("SK_RLMT_LINK_UP Event EMPTY.\n"))
-               return;
-       }
-
-       SkTimerStop(pAC, IoC, &pRPort->UpTimer);
-       SkTimerStop(pAC, IoC, &pRPort->DownRxTimer);
-       SkTimerStop(pAC, IoC, &pRPort->DownTxTimer);
-
-       /* Do something if timer already fired? */
-
-       pRPort->LinkDown = SK_FALSE;
-       pRPort->PortState = SK_RLMT_PS_GOING_UP;
-       pRPort->GuTimeStamp = SkOsGetTime(pAC);
-       pRPort->BcTimeStamp = 0;
-       pRPort->Net->LinksUp++;
-       if (pRPort->Net->LinksUp == 1) {
-               SK_HWAC_LINK_LED(pAC, IoC, Para.Para32[0], SK_LED_ACTIVE);
-       }
-       else {
-               SK_HWAC_LINK_LED(pAC, IoC, Para.Para32[0], SK_LED_STANDBY);
-       }
-
-       for (i = 0; i < pRPort->Net->NumPorts; i++) {
-               if (!pRPort->Net->Port[i]->PortStarted) {
-                       SkRlmtPortStart(pAC, IoC, pRPort->Net->Port[i]->PortNumber);
-               }
-       }
-
-       SkRlmtCheckSwitch(pAC, IoC, pRPort->Net->NetNumber);
-
-       if (pRPort->Net->LinksUp >= 2) {
-               if (pRPort->Net->RlmtMode & SK_RLMT_CHECK_LOC_LINK) {
-                       /* Build the check chain. */
-                       SkRlmtBuildCheckChain(pAC, pRPort->Net->NetNumber);
-               }
-       }
-
-       /* If the first link comes up, start the periodical RLMT timeout. */
-       if (pRPort->Net->NumPorts > 1 && pRPort->Net->LinksUp == 1 &&
-               (pRPort->Net->RlmtMode & SK_RLMT_CHECK_OTHERS) != 0) {
-               Para2.Para32[0] = pRPort->Net->NetNumber;
-               Para2.Para32[1] = (SK_U32)-1;
-               SkTimerStart(pAC, IoC, &pRPort->Net->LocTimer,
-                       pRPort->Net->TimeoutValue, SKGE_RLMT, SK_RLMT_TIM, Para2);
-       }
-
-       Para2 = Para;
-       Para2.Para32[1] = (SK_U32)-1;
-       SkTimerStart(pAC, IoC, &pRPort->UpTimer, SK_RLMT_PORTUP_TIM_VAL,
-               SKGE_RLMT, SK_RLMT_PORTUP_TIM, Para2);
-
-       /* Later: if (pAC->Rlmt.RlmtMode & SK_RLMT_CHECK_LOC_LINK) && */
-       if ((pRPort->Net->RlmtMode & SK_RLMT_TRANSPARENT) == 0 &&
-               (pRPort->Net->RlmtMode & SK_RLMT_CHECK_LINK) != 0 &&
-               (Para2.pParaPtr =
-                       SkRlmtBuildPacket(pAC, IoC, Para.Para32[0], SK_PACKET_ANNOUNCE,
-                       &pAC->Addr.Port[Para.Para32[0]].CurrentMacAddress, &SkRlmtMcAddr)
-               ) != NULL) {
-               /* Send "new" packet to RLMT multicast address. */
-               SkEventQueue(pAC, SKGE_DRV, SK_DRV_RLMT_SEND, Para2);
-       }
-
-       if (pRPort->Net->RlmtMode & SK_RLMT_CHECK_SEG) {
-               if ((Para2.pParaPtr =
-                       SkRlmtBuildSpanningTreePacket(pAC, IoC, Para.Para32[0])) != NULL) {
-                       pAC->Rlmt.Port[Para.Para32[0]].RootIdSet = SK_FALSE;
-                       pRPort->Net->CheckingState |=
-                               SK_RLMT_RCS_SEG | SK_RLMT_RCS_REPORT_SEG;
-
-                       SkEventQueue(pAC, SKGE_DRV, SK_DRV_RLMT_SEND, Para2);
-
-                       Para.Para32[1] = (SK_U32)-1;
-                       SkTimerStart(pAC, IoC, &pRPort->Net->SegTimer,
-                               SK_RLMT_SEG_TO_VAL, SKGE_RLMT, SK_RLMT_SEG_TIM, Para);
-               }
-       }
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-               ("SK_RLMT_LINK_UP Event END.\n"))
-}      /* SkRlmtEvtLinkUp */
-
-
-/******************************************************************************
- *
- *     SkRlmtEvtPortUpTim - PORT_UP_TIM
- *
- * Description:
- *     This routine handles PORT_UP_TIM events.
- *
- * Context:
- *     runtime, pageable?
- *     may be called after SK_INIT_IO
- *
- * Returns:
- *     Nothing
- */
-RLMT_STATIC void       SkRlmtEvtPortUpTim(
-SK_AC          *pAC,   /* Adapter Context */
-SK_IOC         IoC,    /* I/O Context */
-SK_EVPARA      Para)   /* SK_U32 PortNumber; SK_U32 -1 */
-{
-       SK_RLMT_PORT    *pRPort;
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-               ("SK_RLMT_PORTUP_TIM Port %d Event BEGIN.\n", Para.Para32[0]))
-
-       if (Para.Para32[1] != (SK_U32)-1) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("Bad Parameter.\n"))
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("SK_RLMT_PORTUP_TIM Event EMPTY.\n"))
-               return;
-       }
-
-       pRPort = &pAC->Rlmt.Port[Para.Para32[0]];
-       if (pRPort->LinkDown || (pRPort->PortState == SK_RLMT_PS_UP)) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("SK_RLMT_PORTUP_TIM Port %d Event EMPTY.\n", Para.Para32[0]))
-               return;
-       }
-
-       pRPort->PortDown = SK_FALSE;
-       pRPort->PortState = SK_RLMT_PS_UP;
-       pRPort->Net->PortsUp++;
-       if (pRPort->Net->RlmtState != SK_RLMT_RS_INIT) {
-               if (pAC->Rlmt.NumNets <= 1) {
-                       SkRlmtCheckSwitch(pAC, IoC, pRPort->Net->NetNumber);
-               }
-               SkEventQueue(pAC, SKGE_PNMI, SK_PNMI_EVT_RLMT_PORT_UP, Para);
-       }
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-               ("SK_RLMT_PORTUP_TIM Event END.\n"))
-}      /* SkRlmtEvtPortUpTim */
-
-
-/******************************************************************************
- *
- *     SkRlmtEvtPortDownTim - PORT_DOWN_*
- *
- * Description:
- *     This routine handles PORT_DOWN_* events.
- *
- * Context:
- *     runtime, pageable?
- *     may be called after SK_INIT_IO
- *
- * Returns:
- *     Nothing
- */
-RLMT_STATIC void       SkRlmtEvtPortDownX(
-SK_AC          *pAC,   /* Adapter Context */
-SK_IOC         IoC,    /* I/O Context */
-SK_U32         Event,  /* Event code */
-SK_EVPARA      Para)   /* SK_U32 PortNumber; SK_U32 -1 */
-{
-       SK_RLMT_PORT    *pRPort;
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-               ("SK_RLMT_PORTDOWN* Port %d Event (%d) BEGIN.\n",
-                       Para.Para32[0], Event))
-
-       if (Para.Para32[1] != (SK_U32)-1) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("Bad Parameter.\n"))
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("SK_RLMT_PORTDOWN* Event EMPTY.\n"))
-               return;
-       }
-
-       pRPort = &pAC->Rlmt.Port[Para.Para32[0]];
-       if (!pRPort->PortStarted || (Event == SK_RLMT_PORTDOWN_TX_TIM &&
-               !(pRPort->CheckingState & SK_RLMT_PCS_TX))) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("SK_RLMT_PORTDOWN* Event (%d) EMPTY.\n", Event))
-               return;
-       }
-
-       /* Stop port's timers. */
-       SkTimerStop(pAC, IoC, &pRPort->UpTimer);
-       SkTimerStop(pAC, IoC, &pRPort->DownRxTimer);
-       SkTimerStop(pAC, IoC, &pRPort->DownTxTimer);
-
-       if (pRPort->PortState != SK_RLMT_PS_LINK_DOWN) {
-               pRPort->PortState = SK_RLMT_PS_DOWN;
-       }
-
-       if (!pRPort->PortDown) {
-               pRPort->Net->PortsUp--;
-               pRPort->PortDown = SK_TRUE;
-               SkEventQueue(pAC, SKGE_PNMI, SK_PNMI_EVT_RLMT_PORT_DOWN, Para);
-       }
-
-       pRPort->PacketsPerTimeSlot = 0;
-       /* pRPort->DataPacketsPerTimeSlot = 0; */
-       pRPort->BpduPacketsPerTimeSlot = 0;
-       pRPort->BcTimeStamp = 0;
-
-       /*
-        * RA;:;: To be checked:
-        * - actions at RLMT_STOP: We should not switch anymore.
-        */
-       if (pRPort->Net->RlmtState != SK_RLMT_RS_INIT) {
-               if (Para.Para32[0] ==
-                       pRPort->Net->Port[pRPort->Net->ActivePort]->PortNumber) {
-                       /* Active Port went down. */
-                       SkRlmtCheckSwitch(pAC, IoC, pRPort->Net->NetNumber);
-               }
-       }
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-               ("SK_RLMT_PORTDOWN* Event (%d) END.\n", Event))
-}      /* SkRlmtEvtPortDownX */
-
-
-/******************************************************************************
- *
- *     SkRlmtEvtLinkDown - LINK_DOWN
- *
- * Description:
- *     This routine handles LINK_DOWN events.
- *
- * Context:
- *     runtime, pageable?
- *     may be called after SK_INIT_IO
- *
- * Returns:
- *     Nothing
- */
-RLMT_STATIC void       SkRlmtEvtLinkDown(
-SK_AC          *pAC,   /* Adapter Context */
-SK_IOC         IoC,    /* I/O Context */
-SK_EVPARA      Para)   /* SK_U32 PortNumber; SK_U32 Undefined */
-{
-       SK_RLMT_PORT    *pRPort;
-
-       pRPort = &pAC->Rlmt.Port[Para.Para32[0]];
-       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-               ("SK_RLMT_LINK_DOWN Port %d Event BEGIN.\n", Para.Para32[0]))
-
-       if (!pAC->Rlmt.Port[Para.Para32[0]].LinkDown) {
-               pRPort->Net->LinksUp--;
-               pRPort->LinkDown = SK_TRUE;
-               pRPort->PortState = SK_RLMT_PS_LINK_DOWN;
-               SK_HWAC_LINK_LED(pAC, IoC, Para.Para32[0], SK_LED_OFF);
-
-               if ((pRPort->Net->RlmtMode & SK_RLMT_CHECK_LOC_LINK) != 0) {
-                       /* Build the check chain. */
-                       SkRlmtBuildCheckChain(pAC, pRPort->Net->NetNumber);
-               }
-
-               /* Ensure that port is marked down. */
-               Para.Para32[1] = -1;
-               (void)SkRlmtEvent(pAC, IoC, SK_RLMT_PORTDOWN, Para);
-       }
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-               ("SK_RLMT_LINK_DOWN Event END.\n"))
-}      /* SkRlmtEvtLinkDown */
-
-
-/******************************************************************************
- *
- *     SkRlmtEvtPortAddr - PORT_ADDR
- *
- * Description:
- *     This routine handles PORT_ADDR events.
- *
- * Context:
- *     runtime, pageable?
- *     may be called after SK_INIT_IO
- *
- * Returns:
- *     Nothing
- */
-RLMT_STATIC void       SkRlmtEvtPortAddr(
-SK_AC          *pAC,   /* Adapter Context */
-SK_IOC         IoC,    /* I/O Context */
-SK_EVPARA      Para)   /* SK_U32 PortNumber; SK_U32 -1 */
-{
-       SK_U32                  i, j;
-       SK_RLMT_PORT    *pRPort;
-       SK_MAC_ADDR             *pOldMacAddr;
-       SK_MAC_ADDR             *pNewMacAddr;
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-               ("SK_RLMT_PORT_ADDR Port %d Event BEGIN.\n", Para.Para32[0]))
-
-       if (Para.Para32[1] != (SK_U32)-1) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("Bad Parameter.\n"))
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("SK_RLMT_PORT_ADDR Event EMPTY.\n"))
-               return;
-       }
-
-       /* Port's physical MAC address changed. */
-       pOldMacAddr = &pAC->Addr.Port[Para.Para32[0]].PreviousMacAddress;
-       pNewMacAddr = &pAC->Addr.Port[Para.Para32[0]].CurrentMacAddress;
-
-       /*
-        * NOTE: This is not scalable for solutions where ports are
-        *       checked remotely.  There, we need to send an RLMT
-        *       address change packet - and how do we ensure delivery?
-        */
-       for (i = 0; i < (SK_U32)pAC->GIni.GIMacsFound; i++) {
-               pRPort = &pAC->Rlmt.Port[i];
-               for (j = 0; j < pRPort->PortsChecked; j++) {
-                       if (SK_ADDR_EQUAL(
-                               pRPort->PortCheck[j].CheckAddr.a, pOldMacAddr->a)) {
-                               pRPort->PortCheck[j].CheckAddr = *pNewMacAddr;
-                       }
-               }
-       }
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("SK_RLMT_PORT_ADDR Event END.\n"))
-}      /* SkRlmtEvtPortAddr */
-
-
-/******************************************************************************
- *
- *     SkRlmtEvtStart - START
- *
- * Description:
- *     This routine handles START events.
- *
- * Context:
- *     runtime, pageable?
- *     may be called after SK_INIT_IO
- *
- * Returns:
- *     Nothing
- */
-RLMT_STATIC void       SkRlmtEvtStart(
-SK_AC          *pAC,   /* Adapter Context */
-SK_IOC         IoC,    /* I/O Context */
-SK_EVPARA      Para)   /* SK_U32 NetNumber; SK_U32 -1 */
-{
-       SK_EVPARA       Para2;
-       SK_U32          PortIdx;
-       SK_U32          PortNumber;
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-               ("SK_RLMT_START Net %d Event BEGIN.\n", Para.Para32[0]))
-
-       if (Para.Para32[1] != (SK_U32)-1) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("Bad Parameter.\n"))
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("SK_RLMT_START Event EMPTY.\n"))
-               return;
-       }
-
-       if (Para.Para32[0] >= pAC->Rlmt.NumNets) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("Bad NetNumber %d.\n", Para.Para32[0]))
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("SK_RLMT_START Event EMPTY.\n"))
-               return;
-       }
-
-       if (pAC->Rlmt.Net[Para.Para32[0]].RlmtState != SK_RLMT_RS_INIT) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("SK_RLMT_START Event EMPTY.\n"))
-               return;
-       }
-
-       if (pAC->Rlmt.NetsStarted >= pAC->Rlmt.NumNets) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("All nets should have been started.\n"))
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("SK_RLMT_START Event EMPTY.\n"))
-               return;
-       }
-
-       if (pAC->Rlmt.Net[Para.Para32[0]].PrefPort >=
-               pAC->Rlmt.Net[Para.Para32[0]].NumPorts) {
-               SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_RLMT_E009, SKERR_RLMT_E009_MSG);
-
-               /* Change PrefPort to internal default. */
-               Para2.Para32[0] = 0xFFFFFFFF;
-               Para2.Para32[1] = Para.Para32[0];
-               (void)SkRlmtEvent(pAC, IoC, SK_RLMT_PREFPORT_CHANGE, Para2);
-       }
-
-       PortIdx = pAC->Rlmt.Net[Para.Para32[0]].PrefPort;
-       PortNumber = pAC->Rlmt.Net[Para.Para32[0]].Port[PortIdx]->PortNumber;
-
-       pAC->Rlmt.Net[Para.Para32[0]].LinksUp = 0;
-       pAC->Rlmt.Net[Para.Para32[0]].PortsUp = 0;
-       pAC->Rlmt.Net[Para.Para32[0]].CheckingState = 0;
-       pAC->Rlmt.Net[Para.Para32[0]].RlmtState = SK_RLMT_RS_NET_DOWN;
-
-       /* Start preferred port. */
-       SkRlmtPortStart(pAC, IoC, PortNumber);
-
-       /* Start Timer (for first port only). */
-       Para2.Para32[0] = PortNumber;
-       Para2.Para32[1] = (SK_U32)-1;
-       SkTimerStart(pAC, IoC, &pAC->Rlmt.Port[PortNumber].UpTimer,
-               SK_RLMT_PORTSTART_TIM_VAL, SKGE_RLMT, SK_RLMT_PORTSTART_TIM, Para2);
-
-       pAC->Rlmt.NetsStarted++;
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("SK_RLMT_START Event END.\n"))
-}      /* SkRlmtEvtStart */
-
-
-/******************************************************************************
- *
- *     SkRlmtEvtStop - STOP
- *
- * Description:
- *     This routine handles STOP events.
- *
- * Context:
- *     runtime, pageable?
- *     may be called after SK_INIT_IO
- *
- * Returns:
- *     Nothing
- */
-RLMT_STATIC void       SkRlmtEvtStop(
-SK_AC          *pAC,   /* Adapter Context */
-SK_IOC         IoC,    /* I/O Context */
-SK_EVPARA      Para)   /* SK_U32 NetNumber; SK_U32 -1 */
-{
-       SK_EVPARA       Para2;
-       SK_U32          PortNumber;
-       SK_U32          i;
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-               ("SK_RLMT_STOP Net %d Event BEGIN.\n", Para.Para32[0]))
-
-       if (Para.Para32[1] != (SK_U32)-1) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("Bad Parameter.\n"))
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("SK_RLMT_STOP Event EMPTY.\n"))
-               return;
-       }
-
-       if (Para.Para32[0] >= pAC->Rlmt.NumNets) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("Bad NetNumber %d.\n", Para.Para32[0]))
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("SK_RLMT_STOP Event EMPTY.\n"))
-               return;
-       }
-
-       if (pAC->Rlmt.Net[Para.Para32[0]].RlmtState == SK_RLMT_RS_INIT) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("SK_RLMT_STOP Event EMPTY.\n"))
-               return;
-       }
-
-       if (pAC->Rlmt.NetsStarted == 0) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("All nets are stopped.\n"))
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("SK_RLMT_STOP Event EMPTY.\n"))
-               return;
-       }
-
-       /* Stop RLMT timers. */
-       SkTimerStop(pAC, IoC, &pAC->Rlmt.Net[Para.Para32[0]].LocTimer);
-       SkTimerStop(pAC, IoC, &pAC->Rlmt.Net[Para.Para32[0]].SegTimer);
-
-       /* Stop net. */
-       pAC->Rlmt.Net[Para.Para32[0]].RlmtState = SK_RLMT_RS_INIT;
-       pAC->Rlmt.Net[Para.Para32[0]].RootIdSet = SK_FALSE;
-       Para2.Para32[0] = SK_RLMT_NET_DOWN_FINAL;
-       Para2.Para32[1] = Para.Para32[0];                       /* Net# */
-       SkEventQueue(pAC, SKGE_DRV, SK_DRV_NET_DOWN, Para2);
-
-       /* Stop ports. */
-       for (i = 0; i < pAC->Rlmt.Net[Para.Para32[0]].NumPorts; i++) {
-               PortNumber = pAC->Rlmt.Net[Para.Para32[0]].Port[i]->PortNumber;
-               if (pAC->Rlmt.Port[PortNumber].PortState != SK_RLMT_PS_INIT) {
-                       SkTimerStop(pAC, IoC, &pAC->Rlmt.Port[PortNumber].UpTimer);
-                       SkTimerStop(pAC, IoC, &pAC->Rlmt.Port[PortNumber].DownRxTimer);
-                       SkTimerStop(pAC, IoC, &pAC->Rlmt.Port[PortNumber].DownTxTimer);
-
-                       pAC->Rlmt.Port[PortNumber].PortState = SK_RLMT_PS_INIT;
-                       pAC->Rlmt.Port[PortNumber].RootIdSet = SK_FALSE;
-                       pAC->Rlmt.Port[PortNumber].PortStarted = SK_FALSE;
-                       Para2.Para32[0] = PortNumber;
-                       Para2.Para32[1] = (SK_U32)-1;
-                       SkEventQueue(pAC, SKGE_HWAC, SK_HWEV_PORT_STOP, Para2);
-               }
-       }
-
-       pAC->Rlmt.NetsStarted--;
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-               ("SK_RLMT_STOP Event END.\n"))
-}      /* SkRlmtEvtStop */
-
-
-/******************************************************************************
- *
- *     SkRlmtEvtTim - TIM
- *
- * Description:
- *     This routine handles TIM events.
- *
- * Context:
- *     runtime, pageable?
- *     may be called after SK_INIT_IO
- *
- * Returns:
- *     Nothing
- */
-RLMT_STATIC void       SkRlmtEvtTim(
-SK_AC          *pAC,   /* Adapter Context */
-SK_IOC         IoC,    /* I/O Context */
-SK_EVPARA      Para)   /* SK_U32 NetNumber; SK_U32 -1 */
-{
-       SK_RLMT_PORT    *pRPort;
-       SK_U32                  Timeout;
-       SK_U32                  NewTimeout;
-       SK_U32                  PortNumber;
-       SK_U32                  i;
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-               ("SK_RLMT_TIM Event BEGIN.\n"))
-
-       if (Para.Para32[1] != (SK_U32)-1) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("Bad Parameter.\n"))
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("SK_RLMT_TIM Event EMPTY.\n"))
-               return;
-       }
-
-       if ((pAC->Rlmt.Net[Para.Para32[0]].RlmtMode & SK_RLMT_CHECK_OTHERS) == 0 ||
-               pAC->Rlmt.Net[Para.Para32[0]].LinksUp == 0) {
-               /* Mode changed or all links down: No more link checking. */
-               return;
-       }
-
-#if 0
-       pAC->Rlmt.SwitchCheckCounter--;
-       if (pAC->Rlmt.SwitchCheckCounter == 0) {
-               pAC->Rlmt.SwitchCheckCounter;
-       }
-#endif /* 0 */
-
-       NewTimeout = SK_RLMT_DEF_TO_VAL;
-       for (i = 0; i < pAC->Rlmt.Net[Para.Para32[0]].NumPorts; i++) {
-               PortNumber = pAC->Rlmt.Net[Para.Para32[0]].Port[i]->PortNumber;
-               pRPort = &pAC->Rlmt.Port[PortNumber];
-               if (!pRPort->LinkDown) {
-                       Timeout = SkRlmtCheckPort(pAC, IoC, PortNumber);
-                       if (Timeout < NewTimeout) {
-                               NewTimeout = Timeout;
-                       }
-
-                       /*
-                        * These counters should be set to 0 for all ports before the
-                        * first frame is sent in the next loop.
-                        */
-                       pRPort->PacketsPerTimeSlot = 0;
-                       /* pRPort->DataPacketsPerTimeSlot = 0; */
-                       pRPort->BpduPacketsPerTimeSlot = 0;
-               }
-       }
-       pAC->Rlmt.Net[Para.Para32[0]].TimeoutValue = NewTimeout;
-
-       if (pAC->Rlmt.Net[Para.Para32[0]].LinksUp > 1) {
-               /*
-                * If checking remote ports, also send packets if
-                *   (LinksUp == 1) &&
-                *   this port checks at least one (remote) port.
-                */
-
-               /*
-                * Must be new loop, as SkRlmtCheckPort can request to
-                * check segmentation when e.g. checking the last port.
-                */
-               for (i = 0; i < pAC->Rlmt.Net[Para.Para32[0]].NumPorts; i++) {
-                       if (!pAC->Rlmt.Net[Para.Para32[0]].Port[i]->LinkDown) {
-                               SkRlmtSend(pAC, IoC,
-                                       pAC->Rlmt.Net[Para.Para32[0]].Port[i]->PortNumber);
-                       }
-               }
-       }
-
-       SkTimerStart(pAC, IoC, &pAC->Rlmt.Net[Para.Para32[0]].LocTimer,
-               pAC->Rlmt.Net[Para.Para32[0]].TimeoutValue, SKGE_RLMT, SK_RLMT_TIM,
-               Para);
-
-       if (pAC->Rlmt.Net[Para.Para32[0]].LinksUp > 1 &&
-               (pAC->Rlmt.Net[Para.Para32[0]].RlmtMode & SK_RLMT_CHECK_SEG) &&
-               (pAC->Rlmt.Net[Para.Para32[0]].CheckingState & SK_RLMT_RCS_START_SEG)) {
-               SkTimerStart(pAC, IoC, &pAC->Rlmt.Net[Para.Para32[0]].SegTimer,
-                       SK_RLMT_SEG_TO_VAL, SKGE_RLMT, SK_RLMT_SEG_TIM, Para);
-               pAC->Rlmt.Net[Para.Para32[0]].CheckingState &= ~SK_RLMT_RCS_START_SEG;
-               pAC->Rlmt.Net[Para.Para32[0]].CheckingState |=
-                       SK_RLMT_RCS_SEG | SK_RLMT_RCS_REPORT_SEG;
-       }
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("SK_RLMT_TIM Event END.\n"))
-}      /* SkRlmtEvtTim */
-
-
-/******************************************************************************
- *
- *     SkRlmtEvtSegTim - SEG_TIM
- *
- * Description:
- *     This routine handles SEG_TIM events.
- *
- * Context:
- *     runtime, pageable?
- *     may be called after SK_INIT_IO
- *
- * Returns:
- *     Nothing
- */
-RLMT_STATIC void       SkRlmtEvtSegTim(
-SK_AC          *pAC,   /* Adapter Context */
-SK_IOC         IoC,    /* I/O Context */
-SK_EVPARA      Para)   /* SK_U32 NetNumber; SK_U32 -1 */
-{
-#ifdef xDEBUG
-       int j;
-#endif /* DEBUG */
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-               ("SK_RLMT_SEG_TIM Event BEGIN.\n"))
-
-       if (Para.Para32[1] != (SK_U32)-1) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("Bad Parameter.\n"))
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("SK_RLMT_SEG_TIM Event EMPTY.\n"))
-               return;
-       }
-
-#ifdef xDEBUG
-       for (j = 0; j < pAC->Rlmt.Net[Para.Para32[0]].NumPorts; j++) {
-               SK_ADDR_PORT    *pAPort;
-               SK_U32                  k;
-               SK_U16                  *InAddr;
-               SK_U8                   InAddr8[6];
-
-               InAddr = (SK_U16 *)&InAddr8[0];
-               pAPort = pAC->Rlmt.Net[Para.Para32[0]].Port[j]->AddrPort;
-               for (k = 0; k < pAPort->NextExactMatchRlmt; k++) {
-                       /* Get exact match address k from port j. */
-                       XM_INADDR(IoC, pAC->Rlmt.Net[Para.Para32[0]].Port[j]->PortNumber,
-                               XM_EXM(k), InAddr);
-                       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                               ("MC address %d on Port %u: %02x %02x %02x %02x %02x %02x --  %02x %02x %02x %02x %02x %02x.\n",
-                                       k, pAC->Rlmt.Net[Para.Para32[0]].Port[j]->PortNumber,
-                                       InAddr8[0], InAddr8[1], InAddr8[2],
-                                       InAddr8[3], InAddr8[4], InAddr8[5],
-                                       pAPort->Exact[k].a[0], pAPort->Exact[k].a[1],
-                                       pAPort->Exact[k].a[2], pAPort->Exact[k].a[3],
-                                       pAPort->Exact[k].a[4], pAPort->Exact[k].a[5]))
-               }
-       }
-#endif /* xDEBUG */
-
-       SkRlmtCheckSeg(pAC, IoC, Para.Para32[0]);
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("SK_RLMT_SEG_TIM Event END.\n"))
-}      /* SkRlmtEvtSegTim */
-
-
-/******************************************************************************
- *
- *     SkRlmtEvtPacketRx - PACKET_RECEIVED
- *
- * Description:
- *     This routine handles PACKET_RECEIVED events.
- *
- * Context:
- *     runtime, pageable?
- *     may be called after SK_INIT_IO
- *
- * Returns:
- *     Nothing
- */
-RLMT_STATIC void       SkRlmtEvtPacketRx(
-SK_AC          *pAC,   /* Adapter Context */
-SK_IOC         IoC,    /* I/O Context */
-SK_EVPARA      Para)   /* SK_MBUF *pMb */
-{
-       SK_MBUF *pMb;
-       SK_MBUF *pNextMb;
-       SK_U32  NetNumber;
-
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-               ("SK_RLMT_PACKET_RECEIVED Event BEGIN.\n"))
-
-       /* Should we ignore frames during port switching? */
-
-#ifdef DEBUG
-       pMb = Para.pParaPtr;
-       if (pMb == NULL) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, ("No mbuf.\n"))
-       }
-       else if (pMb->pNext != NULL) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("More than one mbuf or pMb->pNext not set.\n"))
-       }
-#endif /* DEBUG */
-
-       for (pMb = Para.pParaPtr; pMb != NULL; pMb = pNextMb) {
-               pNextMb = pMb->pNext;
-               pMb->pNext = NULL;
-
-               NetNumber = pAC->Rlmt.Port[pMb->PortIdx].Net->NetNumber;
-               if (pAC->Rlmt.Net[NetNumber].RlmtState == SK_RLMT_RS_INIT) {
-                       SkDrvFreeRlmtMbuf(pAC, IoC, pMb);
-               }
-               else {
-                       SkRlmtPacketReceive(pAC, IoC, pMb);
-               }
-       }
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-               ("SK_RLMT_PACKET_RECEIVED Event END.\n"))
-}      /* SkRlmtEvtPacketRx */
-
-
-/******************************************************************************
- *
- *     SkRlmtEvtStatsClear - STATS_CLEAR
- *
- * Description:
- *     This routine handles STATS_CLEAR events.
- *
- * Context:
- *     runtime, pageable?
- *     may be called after SK_INIT_IO
- *
- * Returns:
- *     Nothing
- */
-RLMT_STATIC void       SkRlmtEvtStatsClear(
-SK_AC          *pAC,   /* Adapter Context */
-SK_IOC         IoC,    /* I/O Context */
-SK_EVPARA      Para)   /* SK_U32 NetNumber; SK_U32 -1 */
-{
-       SK_U32                  i;
-       SK_RLMT_PORT    *pRPort;
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-               ("SK_RLMT_STATS_CLEAR Event BEGIN.\n"))
-
-       if (Para.Para32[1] != (SK_U32)-1) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("Bad Parameter.\n"))
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("SK_RLMT_STATS_CLEAR Event EMPTY.\n"))
-               return;
-       }
-
-       if (Para.Para32[0] >= pAC->Rlmt.NumNets) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("Bad NetNumber %d.\n", Para.Para32[0]))
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("SK_RLMT_STATS_CLEAR Event EMPTY.\n"))
-               return;
-       }
-
-       /* Clear statistics for logical and physical ports. */
-       for (i = 0; i < pAC->Rlmt.Net[Para.Para32[0]].NumPorts; i++) {
-               pRPort =
-                       &pAC->Rlmt.Port[pAC->Rlmt.Net[Para.Para32[0]].Port[i]->PortNumber];
-               pRPort->TxHelloCts = 0;
-               pRPort->RxHelloCts = 0;
-               pRPort->TxSpHelloReqCts = 0;
-               pRPort->RxSpHelloCts = 0;
-       }
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-               ("SK_RLMT_STATS_CLEAR Event END.\n"))
-}      /* SkRlmtEvtStatsClear */
-
-
-/******************************************************************************
- *
- *     SkRlmtEvtStatsUpdate - STATS_UPDATE
- *
- * Description:
- *     This routine handles STATS_UPDATE events.
- *
- * Context:
- *     runtime, pageable?
- *     may be called after SK_INIT_IO
- *
- * Returns:
- *     Nothing
- */
-RLMT_STATIC void       SkRlmtEvtStatsUpdate(
-SK_AC          *pAC,   /* Adapter Context */
-SK_IOC         IoC,    /* I/O Context */
-SK_EVPARA      Para)   /* SK_U32 NetNumber; SK_U32 -1 */
-{
-       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-               ("SK_RLMT_STATS_UPDATE Event BEGIN.\n"))
-
-       if (Para.Para32[1] != (SK_U32)-1) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("Bad Parameter.\n"))
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("SK_RLMT_STATS_UPDATE Event EMPTY.\n"))
-               return;
-       }
-
-       if (Para.Para32[0] >= pAC->Rlmt.NumNets) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("Bad NetNumber %d.\n", Para.Para32[0]))
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("SK_RLMT_STATS_UPDATE Event EMPTY.\n"))
-               return;
-       }
-
-       /* Update statistics - currently always up-to-date. */
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-               ("SK_RLMT_STATS_UPDATE Event END.\n"))
-}      /* SkRlmtEvtStatsUpdate */
-
-
-/******************************************************************************
- *
- *     SkRlmtEvtPrefportChange - PREFPORT_CHANGE
- *
- * Description:
- *     This routine handles PREFPORT_CHANGE events.
- *
- * Context:
- *     runtime, pageable?
- *     may be called after SK_INIT_IO
- *
- * Returns:
- *     Nothing
- */
-RLMT_STATIC void       SkRlmtEvtPrefportChange(
-SK_AC          *pAC,   /* Adapter Context */
-SK_IOC         IoC,    /* I/O Context */
-SK_EVPARA      Para)   /* SK_U32 PortIndex; SK_U32 NetNumber */
-{
-       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-               ("SK_RLMT_PREFPORT_CHANGE to Port %d Event BEGIN.\n", Para.Para32[0]))
-
-       if (Para.Para32[1] >= pAC->Rlmt.NumNets) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("Bad NetNumber %d.\n", Para.Para32[1]))
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("SK_RLMT_PREFPORT_CHANGE Event EMPTY.\n"))
-               return;
-       }
-
-       /* 0xFFFFFFFF == auto-mode. */
-       if (Para.Para32[0] == 0xFFFFFFFF) {
-               pAC->Rlmt.Net[Para.Para32[1]].PrefPort = SK_RLMT_DEF_PREF_PORT;
-       }
-       else {
-               if (Para.Para32[0] >= pAC->Rlmt.Net[Para.Para32[1]].NumPorts) {
-                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_RLMT_E010, SKERR_RLMT_E010_MSG);
-
-                       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                               ("SK_RLMT_PREFPORT_CHANGE Event EMPTY.\n"))
-                       return;
-               }
-
-               pAC->Rlmt.Net[Para.Para32[1]].PrefPort = Para.Para32[0];
-       }
-
-       pAC->Rlmt.Net[Para.Para32[1]].Preference = Para.Para32[0];
-
-       if (pAC->Rlmt.Net[Para.Para32[1]].RlmtState != SK_RLMT_RS_INIT) {
-               SkRlmtCheckSwitch(pAC, IoC, Para.Para32[1]);
-       }
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-               ("SK_RLMT_PREFPORT_CHANGE Event END.\n"))
-}      /* SkRlmtEvtPrefportChange */
-
-
-/******************************************************************************
- *
- *     SkRlmtEvtSetNets - SET_NETS
- *
- * Description:
- *     This routine handles SET_NETS events.
- *
- * Context:
- *     runtime, pageable?
- *     may be called after SK_INIT_IO
- *
- * Returns:
- *     Nothing
- */
-RLMT_STATIC void       SkRlmtEvtSetNets(
-SK_AC          *pAC,   /* Adapter Context */
-SK_IOC         IoC,    /* I/O Context */
-SK_EVPARA      Para)   /* SK_U32 NumNets; SK_U32 -1 */
-{
-       int i;
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-               ("SK_RLMT_SET_NETS Event BEGIN.\n"))
-
-       if (Para.Para32[1] != (SK_U32)-1) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("Bad Parameter.\n"))
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("SK_RLMT_SET_NETS Event EMPTY.\n"))
-               return;
-       }
-
-       if (Para.Para32[0] == 0 || Para.Para32[0] > SK_MAX_NETS ||
-               Para.Para32[0] > (SK_U32)pAC->GIni.GIMacsFound) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("Bad number of nets: %d.\n", Para.Para32[0]))
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("SK_RLMT_SET_NETS Event EMPTY.\n"))
-               return;
-       }
-
-       if (Para.Para32[0] == pAC->Rlmt.NumNets) {      /* No change. */
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("SK_RLMT_SET_NETS Event EMPTY.\n"))
-               return;
-       }
-
-       /* Entering and leaving dual mode only allowed while nets are stopped. */
-       if (pAC->Rlmt.NetsStarted > 0) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("Changing dual mode only allowed while all nets are stopped.\n"))
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("SK_RLMT_SET_NETS Event EMPTY.\n"))
-               return;
-       }
-
-       if (Para.Para32[0] == 1) {
-               if (pAC->Rlmt.NumNets > 1) {
-                       /* Clear logical MAC addr from second net's active port. */
-                       (void)SkAddrOverride(pAC, IoC, pAC->Rlmt.Net[1].Port[pAC->Addr.
-                               Net[1].ActivePort]->PortNumber, NULL, SK_ADDR_CLEAR_LOGICAL);
-                       pAC->Rlmt.Net[1].NumPorts = 0;
-               }
-
-               pAC->Rlmt.NumNets = Para.Para32[0];
-               for (i = 0; (SK_U32)i < pAC->Rlmt.NumNets; i++) {
-                       pAC->Rlmt.Net[i].RlmtState = SK_RLMT_RS_INIT;
-                       pAC->Rlmt.Net[i].RootIdSet = SK_FALSE;
-                       pAC->Rlmt.Net[i].Preference = 0xFFFFFFFF;         /* "Automatic" */
-                       pAC->Rlmt.Net[i].PrefPort = SK_RLMT_DEF_PREF_PORT;
-                       /* Just assuming. */
-                       pAC->Rlmt.Net[i].ActivePort = pAC->Rlmt.Net[i].PrefPort;
-                       pAC->Rlmt.Net[i].RlmtMode = SK_RLMT_DEF_MODE;
-                       pAC->Rlmt.Net[i].TimeoutValue = SK_RLMT_DEF_TO_VAL;
-                       pAC->Rlmt.Net[i].NetNumber = i;
-               }
-
-               pAC->Rlmt.Port[1].Net= &pAC->Rlmt.Net[0];
-               pAC->Rlmt.Net[0].NumPorts = pAC->GIni.GIMacsFound;
-
-               SkEventQueue(pAC, SKGE_PNMI, SK_PNMI_EVT_RLMT_SET_NETS, Para);
-
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("RLMT: Changed to one net with two ports.\n"))
-       }
-       else if (Para.Para32[0] == 2) {
-               pAC->Rlmt.Port[1].Net= &pAC->Rlmt.Net[1];
-               pAC->Rlmt.Net[1].NumPorts = pAC->GIni.GIMacsFound - 1;
-               pAC->Rlmt.Net[0].NumPorts =
-                       pAC->GIni.GIMacsFound - pAC->Rlmt.Net[1].NumPorts;
-
-               pAC->Rlmt.NumNets = Para.Para32[0];
-               for (i = 0; (SK_U32)i < pAC->Rlmt.NumNets; i++) {
-                       pAC->Rlmt.Net[i].RlmtState = SK_RLMT_RS_INIT;
-                       pAC->Rlmt.Net[i].RootIdSet = SK_FALSE;
-                       pAC->Rlmt.Net[i].Preference = 0xFFFFFFFF;         /* "Automatic" */
-                       pAC->Rlmt.Net[i].PrefPort = SK_RLMT_DEF_PREF_PORT;
-                       /* Just assuming. */
-                       pAC->Rlmt.Net[i].ActivePort = pAC->Rlmt.Net[i].PrefPort;
-                       pAC->Rlmt.Net[i].RlmtMode = SK_RLMT_DEF_MODE;
-                       pAC->Rlmt.Net[i].TimeoutValue = SK_RLMT_DEF_TO_VAL;
-
-                       pAC->Rlmt.Net[i].NetNumber = i;
-               }
-
-               /* Set logical MAC addr on second net's active port. */
-               (void)SkAddrOverride(pAC, IoC, pAC->Rlmt.Net[1].Port[pAC->Addr.
-                       Net[1].ActivePort]->PortNumber, NULL, SK_ADDR_SET_LOGICAL);
-
-               SkEventQueue(pAC, SKGE_PNMI, SK_PNMI_EVT_RLMT_SET_NETS, Para);
-
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("RLMT: Changed to two nets with one port each.\n"))
-       }
-       else {
-               /* Not implemented for more than two nets. */
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("SetNets not implemented for more than two nets.\n"))
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("SK_RLMT_SET_NETS Event EMPTY.\n"))
-               return;
-       }
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-               ("SK_RLMT_SET_NETS Event END.\n"))
-}      /* SkRlmtSetNets */
-
-
-/******************************************************************************
- *
- *     SkRlmtEvtModeChange - MODE_CHANGE
- *
- * Description:
- *     This routine handles MODE_CHANGE events.
- *
- * Context:
- *     runtime, pageable?
- *     may be called after SK_INIT_IO
- *
- * Returns:
- *     Nothing
- */
-RLMT_STATIC void       SkRlmtEvtModeChange(
-SK_AC          *pAC,   /* Adapter Context */
-SK_IOC         IoC,    /* I/O Context */
-SK_EVPARA      Para)   /* SK_U32 NewMode; SK_U32 NetNumber */
-{
-       SK_EVPARA       Para2;
-       SK_U32          i;
-       SK_U32          PrevRlmtMode;
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-               ("SK_RLMT_MODE_CHANGE Event BEGIN.\n"))
-
-       if (Para.Para32[1] >= pAC->Rlmt.NumNets) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("Bad NetNumber %d.\n", Para.Para32[1]))
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("SK_RLMT_MODE_CHANGE Event EMPTY.\n"))
-               return;
-       }
-
-       Para.Para32[0] |= SK_RLMT_CHECK_LINK;
-
-       if ((pAC->Rlmt.Net[Para.Para32[1]].NumPorts == 1) &&
-               Para.Para32[0] != SK_RLMT_MODE_CLS) {
-               pAC->Rlmt.Net[Para.Para32[1]].RlmtMode = SK_RLMT_MODE_CLS;
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("Forced RLMT mode to CLS on single port net.\n"))
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("SK_RLMT_MODE_CHANGE Event EMPTY.\n"))
-               return;
-       }
-
-       /* Update RLMT mode. */
-       PrevRlmtMode = pAC->Rlmt.Net[Para.Para32[1]].RlmtMode;
-       pAC->Rlmt.Net[Para.Para32[1]].RlmtMode = Para.Para32[0];
-
-       if ((PrevRlmtMode & SK_RLMT_CHECK_LOC_LINK) !=
-               (pAC->Rlmt.Net[Para.Para32[1]].RlmtMode & SK_RLMT_CHECK_LOC_LINK)) {
-               /* SK_RLMT_CHECK_LOC_LINK bit changed. */
-               if ((PrevRlmtMode & SK_RLMT_CHECK_OTHERS) == 0 &&
-                       pAC->Rlmt.Net[Para.Para32[1]].NumPorts > 1 &&
-                       pAC->Rlmt.Net[Para.Para32[1]].PortsUp >= 1) {
-                       /* 20001207 RA: Was "PortsUp == 1". */
-                       Para2.Para32[0] = Para.Para32[1];
-                       Para2.Para32[1] = (SK_U32)-1;
-                       SkTimerStart(pAC, IoC, &pAC->Rlmt.Net[Para.Para32[1]].LocTimer,
-                               pAC->Rlmt.Net[Para.Para32[1]].TimeoutValue,
-                               SKGE_RLMT, SK_RLMT_TIM, Para2);
-               }
-       }
-
-       if ((PrevRlmtMode & SK_RLMT_CHECK_SEG) !=
-               (pAC->Rlmt.Net[Para.Para32[1]].RlmtMode & SK_RLMT_CHECK_SEG)) {
-               /* SK_RLMT_CHECK_SEG bit changed. */
-               for (i = 0; i < pAC->Rlmt.Net[Para.Para32[1]].NumPorts; i++) {
-                       (void)SkAddrMcClear(pAC, IoC,
-                               pAC->Rlmt.Net[Para.Para32[1]].Port[i]->PortNumber,
-                               SK_ADDR_PERMANENT | SK_MC_SW_ONLY);
-
-                       /* Add RLMT MC address. */
-                       (void)SkAddrMcAdd(pAC, IoC,
-                               pAC->Rlmt.Net[Para.Para32[1]].Port[i]->PortNumber,
-                               &SkRlmtMcAddr, SK_ADDR_PERMANENT);
-
-                       if ((pAC->Rlmt.Net[Para.Para32[1]].RlmtMode &
-                               SK_RLMT_CHECK_SEG) != 0) {
-                               /* Add BPDU MC address. */
-                               (void)SkAddrMcAdd(pAC, IoC,
-                                       pAC->Rlmt.Net[Para.Para32[1]].Port[i]->PortNumber,
-                                       &BridgeMcAddr, SK_ADDR_PERMANENT);
-
-                               if (pAC->Rlmt.Net[Para.Para32[1]].RlmtState != SK_RLMT_RS_INIT) {
-                                       if (!pAC->Rlmt.Net[Para.Para32[1]].Port[i]->LinkDown &&
-                                               (Para2.pParaPtr = SkRlmtBuildSpanningTreePacket(
-                                               pAC, IoC, i)) != NULL) {
-                                               pAC->Rlmt.Net[Para.Para32[1]].Port[i]->RootIdSet =
-                                                       SK_FALSE;
-                                               SkEventQueue(pAC, SKGE_DRV, SK_DRV_RLMT_SEND, Para2);
-                                       }
-                               }
-                       }
-                       (void)SkAddrMcUpdate(pAC, IoC,
-                               pAC->Rlmt.Net[Para.Para32[1]].Port[i]->PortNumber);
-               }       /* for ... */
-
-               if ((pAC->Rlmt.Net[Para.Para32[1]].RlmtMode & SK_RLMT_CHECK_SEG) != 0) {
-                       Para2.Para32[0] = Para.Para32[1];
-                       Para2.Para32[1] = (SK_U32)-1;
-                       SkTimerStart(pAC, IoC, &pAC->Rlmt.Net[Para.Para32[1]].SegTimer,
-                               SK_RLMT_SEG_TO_VAL, SKGE_RLMT, SK_RLMT_SEG_TIM, Para2);
-               }
-       }       /* SK_RLMT_CHECK_SEG bit changed. */
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("SK_RLMT_MODE_CHANGE Event END.\n"))
-}      /* SkRlmtEvtModeChange */
-
-
-/******************************************************************************
- *
- *     SkRlmtEvent - a PORT- or an RLMT-specific event happened
- *
- * Description:
- *     This routine calls subroutines to handle PORT- and RLMT-specific events.
- *
- * Context:
- *     runtime, pageable?
- *     may be called after SK_INIT_IO
- *
- * Returns:
- *     0
- */
-int    SkRlmtEvent(
-SK_AC          *pAC,   /* Adapter Context */
-SK_IOC         IoC,    /* I/O Context */
-SK_U32         Event,  /* Event code */
-SK_EVPARA      Para)   /* Event-specific parameter */
-{
-       switch (Event) {
-
-       /* ----- PORT events ----- */
-
-       case SK_RLMT_PORTSTART_TIM:     /* From RLMT via TIME. */
-               SkRlmtEvtPortStartTim(pAC, IoC, Para);
-               break;
-       case SK_RLMT_LINK_UP:           /* From SIRQ. */
-               SkRlmtEvtLinkUp(pAC, IoC, Para);
-               break;
-       case SK_RLMT_PORTUP_TIM:        /* From RLMT via TIME. */
-               SkRlmtEvtPortUpTim(pAC, IoC, Para);
-               break;
-       case SK_RLMT_PORTDOWN:                  /* From RLMT. */
-       case SK_RLMT_PORTDOWN_RX_TIM:   /* From RLMT via TIME. */
-       case SK_RLMT_PORTDOWN_TX_TIM:   /* From RLMT via TIME. */
-               SkRlmtEvtPortDownX(pAC, IoC, Event, Para);
-               break;
-       case SK_RLMT_LINK_DOWN:         /* From SIRQ. */
-               SkRlmtEvtLinkDown(pAC, IoC, Para);
-               break;
-       case SK_RLMT_PORT_ADDR:         /* From ADDR. */
-               SkRlmtEvtPortAddr(pAC, IoC, Para);
-               break;
-
-       /* ----- RLMT events ----- */
-
-       case SK_RLMT_START:             /* From DRV. */
-               SkRlmtEvtStart(pAC, IoC, Para);
-               break;
-       case SK_RLMT_STOP:              /* From DRV. */
-               SkRlmtEvtStop(pAC, IoC, Para);
-               break;
-       case SK_RLMT_TIM:               /* From RLMT via TIME. */
-               SkRlmtEvtTim(pAC, IoC, Para);
-               break;
-       case SK_RLMT_SEG_TIM:
-               SkRlmtEvtSegTim(pAC, IoC, Para);
-               break;
-       case SK_RLMT_PACKET_RECEIVED:   /* From DRV. */
-               SkRlmtEvtPacketRx(pAC, IoC, Para);
-               break;
-       case SK_RLMT_STATS_CLEAR:       /* From PNMI. */
-               SkRlmtEvtStatsClear(pAC, IoC, Para);
-               break;
-       case SK_RLMT_STATS_UPDATE:      /* From PNMI. */
-               SkRlmtEvtStatsUpdate(pAC, IoC, Para);
-               break;
-       case SK_RLMT_PREFPORT_CHANGE:   /* From PNMI. */
-               SkRlmtEvtPrefportChange(pAC, IoC, Para);
-               break;
-       case SK_RLMT_MODE_CHANGE:       /* From PNMI. */
-               SkRlmtEvtModeChange(pAC, IoC, Para);
-               break;
-       case SK_RLMT_SET_NETS:  /* From DRV. */
-               SkRlmtEvtSetNets(pAC, IoC, Para);
-               break;
-
-       /* ----- Unknown events ----- */
-
-       default:        /* Create error log entry. */
-               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
-                       ("Unknown RLMT Event %d.\n", Event))
-               SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_RLMT_E003, SKERR_RLMT_E003_MSG);
-               break;
-       }       /* switch() */
-
-       return (0);
-}      /* SkRlmtEvent */
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
+/******************************************************************************
+ *
+ * Name:       skrlmt.c
+ * Project:    GEnesis, PCI Gigabit Ethernet Adapter
+ * Version:    $Revision: 1.1.1.1 $
+ * Date:       $Date: 2009/03/25 22:22:09 $
+ * Purpose:    Manage links on SK-NET Adapters, esp. redundant ones.
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ *     (C)Copyright 1998-2001 SysKonnect GmbH.
+ *
+ *     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.
+ *
+ *     The information in this file is provided "AS IS" without warranty.
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ * History:
+ *
+ *     $Log: skrlmt.c,v $
+ *     Revision 1.1.1.1  2009/03/25 22:22:09  kenagy
+ *     no message
+ *     
+ *     Revision 1.68  2003/01/31 15:26:56  rschmidt
+ *     Added init for local variables in RlmtInit().
+ *
+ *     Revision 1.67  2003/01/31 14:12:41  mkunz
+ *     single port adapter runs now with two identical MAC addresses
+ *
+ *     Revision 1.66  2002/09/23 15:14:19  rwahl
+ *     - Reset broadcast timestamp on link down.
+ *     - Editorial corrections.
+ *
+ *     Revision 1.65  2002/07/22 14:29:48  rwahl
+ *     - Removed BRK statement from debug check.
+ *
+ *     Revision 1.64  2001/11/28 19:36:14  rwahl
+ *     - RLMT Packets sent to an invalid MAC address in CLP/CLPSS mode
+ *       (#10650).
+ *     - Reworked fix for port switching in CLS mode (#10639)
+ *      (no dependency to RLMT module).
+ *     - Enabled dbg output for entry/exit of event functions.
+ *     - Editorial changes.
+ *
+ *     Revision 1.63  2001/10/26 07:53:18  afischer
+ *     Port switching bug in `check local link` mode
+ *
+ *     Revision 1.62  2001/07/03 12:16:30  mkunz
+ *     New Flag ChgBcPrio (Change priority of last broadcast received)
+ *
+ *     Revision 1.61  2001/03/14 12:52:08  rassmann
+ *     Fixed reporting of active port up/down to PNMI.
+ *
+ *     Revision 1.60  2001/02/21 16:02:25  gklug
+ *     fix: when RLMT starts set Active Port for PNMI
+ *
+ *     Revision 1.59  2001/02/16 14:38:19  rassmann
+ *     Initializing some pointers earlier in the init phase.
+ *     Rx Mbufs are freed if the net which they belong to is stopped.
+ *
+ *     Revision 1.58  2001/02/14 14:06:31  rassmann
+ *     Editorial changes.
+ *
+ *     Revision 1.57  2001/02/05 14:25:26  rassmann
+ *     Prepared RLMT for transparent operation.
+ *
+ *     Revision 1.56  2001/01/30 10:29:09  rassmann
+ *     Not checking switching befor RlmtStart.
+ *     Editorial changes.
+ *
+ *     Revision 1.55  2001/01/22 13:41:38  rassmann
+ *     Supporting two nets on dual-port adapters.
+ *
+ *     Revision 1.54  2000/11/30 13:25:07  rassmann
+ *     Setting SK_TICK_INCR to 1 by default.
+ *
+ *     Revision 1.53  2000/11/30 10:48:07  cgoos
+ *     Changed definition of SK_RLMT_BC_DELTA.
+ *
+ *     Revision 1.52  2000/11/27 12:50:03  rassmann
+ *     Checking ports after receiving broadcasts.
+ *
+ *     Revision 1.51  2000/11/17 08:58:00  rassmann
+ *     Moved CheckSwitch from SK_RLMT_PACKET_RECEIVED to SK_RLMT_TIM event.
+ *
+ *     Revision 1.50  2000/11/09 12:24:34  rassmann
+ *     Indicating that segmentation check is not running anymore after
+ *       SkRlmtCheckSeg().
+ *     Restarting segmentation timer after segmentation log.
+ *     Editorial changes.
+ *
+ *     Revision 1.49  1999/11/22 13:38:02  cgoos
+ *     Changed license header to GPL.
+ *     Added initialization to some variables to avoid compiler warnings.
+ *
+ *     Revision 1.48  1999/10/04 14:01:17  rassmann
+ *     Corrected reaction to reception of BPDU frames (#10441).
+ *
+ *     Revision 1.47  1999/07/20 12:53:36  rassmann
+ *     Fixed documentation errors for lookahead macros.
+ *
+ *     Revision 1.46  1999/05/28 13:29:16  rassmann
+ *     Replaced C++-style comment.
+ *
+ *     Revision 1.45  1999/05/28 13:28:08  rassmann
+ *     Corrected syntax error (xxx).
+ *
+ *     Revision 1.44  1999/05/28 11:15:54  rassmann
+ *     Changed behaviour to reflect Design Spec v1.2.
+ *     Controlling Link LED(s).
+ *     Introduced RLMT Packet Version field in RLMT Packet.
+ *     Newstyle lookahead macros (checking meta-information before looking at
+ *       the packet).
+ *
+ *     Revision 1.43  1999/01/28 13:12:43  rassmann
+ *     Corrected Lookahead (bug introduced in previous Rev.).
+ *
+ *     Revision 1.42  1999/01/28 12:50:41  rassmann
+ *     Not using broadcast time stamps in CheckLinkState mode.
+ *
+ *     Revision 1.41  1999/01/27 14:13:02  rassmann
+ *     Monitoring broadcast traffic.
+ *     Switching more reliably and not too early if switch is
+ *      configured for spanning tree.
+ *
+ *     Revision 1.40  1999/01/22 13:17:30  rassmann
+ *     Informing PNMI of NET_UP.
+ *     Clearing RLMT multicast addresses before setting them for the first time.
+ *     Reporting segmentation earlier, setting a "quiet time"
+ *      after a report.
+ *
+ *     Revision 1.39  1998/12/10 15:29:53  rassmann
+ *     Corrected SuspectStatus in SkRlmtBuildCheckChain().
+ *     Corrected CHECK_SEG mode.
+ *
+ *     Revision 1.38  1998/12/08 13:11:23  rassmann
+ *     Stopping SegTimer at RlmtStop.
+ *
+ *     Revision 1.37  1998/12/07 16:51:42  rassmann
+ *     Corrected comments.
+ *
+ *     Revision 1.36  1998/12/04 10:58:56  rassmann
+ *     Setting next pointer to NULL when receiving.
+ *
+ *     Revision 1.35  1998/12/03 16:12:42  rassmann
+ *     Ignoring/correcting illegal PrefPort values.
+ *
+ *     Revision 1.34  1998/12/01 11:45:35  rassmann
+ *     Code cleanup.
+ *
+ *     Revision 1.33  1998/12/01 10:29:32  rassmann
+ *     Starting standby ports before getting the net up.
+ *     Checking if a port is started when the link comes up.
+ *
+ *     Revision 1.32  1998/11/30 16:19:50  rassmann
+ *     New default for PortNoRx.
+ *
+ *     Revision 1.31  1998/11/27 19:17:13  rassmann
+ *     Corrected handling of LINK_DOWN coming shortly after LINK_UP.
+ *
+ *     Revision 1.30  1998/11/24 12:37:31  rassmann
+ *     Implemented segmentation check.
+ *
+ *     Revision 1.29  1998/11/18 13:04:32  rassmann
+ *     Secured PortUpTimer event.
+ *     Waiting longer before starting standby port(s).
+ *
+ *     Revision 1.28  1998/11/17 13:43:04  rassmann
+ *     Handling (logical) tx failure.
+ *     Sending packet on logical address after PORT_SWITCH.
+ *
+ *     Revision 1.27  1998/11/13 17:09:50  rassmann
+ *     Secured some events against being called in wrong state.
+ *
+ *     Revision 1.26  1998/11/13 16:56:54  rassmann
+ *     Added macro version of SkRlmtLookaheadPacket.
+ *
+ *     Revision 1.25  1998/11/06 18:06:04  rassmann
+ *     Corrected timing when RLMT checks fail.
+ *     Clearing tx counter earlier in periodical checks.
+ *
+ *     Revision 1.24  1998/11/05 10:37:27  rassmann
+ *     Checking destination address in Lookahead.
+ *
+ *     Revision 1.23  1998/11/03 13:53:49  rassmann
+ *     RLMT should switch now (at least in mode 3).
+ *
+ *     Revision 1.22  1998/10/29 14:34:49  rassmann
+ *     Clearing SK_RLMT struct at startup.
+ *     Initializing PortsUp during SK_RLMT_START.
+ *
+ *     Revision 1.21  1998/10/28 11:30:17  rassmann
+ *     Default mode is now SK_RLMT_CHECK_LOC_LINK.
+ *
+ *     Revision 1.20  1998/10/26 16:02:03  rassmann
+ *     Ignoring LINK_DOWN for links that are down.
+ *
+ *     Revision 1.19  1998/10/22 15:54:01  rassmann
+ *     Corrected EtherLen.
+ *     Starting Link Check when second port comes up.
+ *
+ *     Revision 1.18  1998/10/22 11:39:50  rassmann
+ *     Corrected signed/unsigned mismatches.
+ *     Corrected receive list handling and address recognition.
+ *
+ *     Revision 1.17  1998/10/19 17:01:20  rassmann
+ *     More detailed checking of received packets.
+ *
+ *     Revision 1.16  1998/10/15 15:16:34  rassmann
+ *     Finished Spanning Tree checking.
+ *     Checked with lint.
+ *
+ *     Revision 1.15  1998/09/24 19:16:07  rassmann
+ *     Code cleanup.
+ *     Introduced Timer for PORT_DOWN due to no RX.
+ *
+ *     Revision 1.14  1998/09/18 20:27:14  rassmann
+ *     Added address override.
+ *
+ *     Revision 1.13  1998/09/16 11:31:48  rassmann
+ *     Including skdrv1st.h again. :(
+ *
+ *     Revision 1.12  1998/09/16 11:09:50  rassmann
+ *     Syntax corrections.
+ *
+ *     Revision 1.11  1998/09/15 12:32:03  rassmann
+ *     Syntax correction.
+ *
+ *     Revision 1.10  1998/09/15 11:28:49  rassmann
+ *     Syntax corrections.
+ *
+ *     Revision 1.9  1998/09/14 17:07:37  rassmann
+ *     Added code for port checking via LAN.
+ *     Changed Mbuf definition.
+ *
+ *     Revision 1.8  1998/09/07 11:14:14  rassmann
+ *     Syntax corrections.
+ *
+ *     Revision 1.7  1998/09/07 09:06:07  rassmann
+ *     Syntax corrections.
+ *
+ *     Revision 1.6  1998/09/04 19:41:33  rassmann
+ *     Syntax corrections.
+ *     Started entering code for checking local links.
+ *
+ *     Revision 1.5  1998/09/04 12:14:27  rassmann
+ *     Interface cleanup.
+ *
+ *     Revision 1.4  1998/09/02 16:55:28  rassmann
+ *     Updated to reflect new DRV/HWAC/RLMT interface.
+ *
+ *     Revision 1.3  1998/08/27 14:29:03  rassmann
+ *     Code cleanup.
+ *
+ *     Revision 1.2  1998/08/27 14:26:24  rassmann
+ *     Updated interface.
+ *
+ *     Revision 1.1  1998/08/21 08:26:49  rassmann
+ *     First public version.
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ * Description:
+ *
+ * This module contains code for Link ManagemenT (LMT) of SK-NET Adapters.
+ * It is mainly intended for adapters with more than one link.
+ * For such adapters, this module realizes Redundant Link ManagemenT (RLMT).
+ *
+ * Include File Hierarchy:
+ *
+ *     "skdrv1st.h"
+ *     "skdrv2nd.h"
+ *
+ ******************************************************************************/
+
+#include <config.h>
+
+#ifndef        lint
+static const char SysKonnectFileId[] =
+       "@(#) $Id: skrlmt.c,v 1.1.1.1 2009/03/25 22:22:09 kenagy Exp $ (C) SysKonnect.";
+#endif /* !defined(lint) */
+
+#define __SKRLMT_C
+
+#ifdef __cplusplus
+#error C++ is not yet supported.
+extern "C" {
+#endif /* cplusplus */
+
+#include "h/skdrv1st.h"
+#include "h/skdrv2nd.h"
+
+/* defines ********************************************************************/
+
+#ifndef SK_HWAC_LINK_LED
+#define SK_HWAC_LINK_LED(a,b,c,d)
+#endif /* !defined(SK_HWAC_LINK_LED) */
+
+#ifndef DEBUG
+#define RLMT_STATIC    static
+#else  /* DEBUG */
+#define RLMT_STATIC
+
+#ifndef SK_LITTLE_ENDIAN
+/* First 32 bits */
+#define OFFS_LO32      1
+
+/* Second 32 bits */
+#define OFFS_HI32      0
+#else  /* SK_LITTLE_ENDIAN */
+/* First 32 bits */
+#define OFFS_LO32      0
+
+/* Second 32 bits */
+#define OFFS_HI32      1
+#endif /* SK_LITTLE_ENDIAN */
+
+#endif /* DEBUG */
+
+/* ----- Private timeout values ----- */
+
+#define SK_RLMT_MIN_TO_VAL                        125000       /* 1/8 sec. */
+#define SK_RLMT_DEF_TO_VAL                       1000000       /* 1 sec. */
+#define SK_RLMT_PORTDOWN_TIM_VAL          900000       /* another 0.9 sec. */
+#define SK_RLMT_PORTSTART_TIM_VAL         100000       /* 0.1 sec. */
+#define SK_RLMT_PORTUP_TIM_VAL           2500000       /* 2.5 sec. */
+#define SK_RLMT_SEG_TO_VAL                     900000000       /* 15 min. */
+
+/* Assume tick counter increment is 1 - may be set OS-dependent. */
+#ifndef SK_TICK_INCR
+#define SK_TICK_INCR   SK_CONSTU64(1)
+#endif /* !defined(SK_TICK_INCR) */
+
+/*
+ * Amount that a time stamp must be later to be recognized as "substantially
+ * later". This is about 1/128 sec, but above 1 tick counter increment.
+ */
+#define SK_RLMT_BC_DELTA               (1 + ((SK_TICKS_PER_SEC >> 7) > SK_TICK_INCR ? \
+                                                                       (SK_TICKS_PER_SEC >> 7) : SK_TICK_INCR))
+
+/* ----- Private RLMT defaults ----- */
+
+#define SK_RLMT_DEF_PREF_PORT  0                                        /* "Lower" port. */
+#define SK_RLMT_DEF_MODE               SK_RLMT_CHECK_LINK      /* Default RLMT Mode. */
+
+/* ----- Private RLMT checking states ----- */
+
+#define SK_RLMT_RCS_SEG                        1               /* RLMT Check State: check seg. */
+#define SK_RLMT_RCS_START_SEG  2               /* RLMT Check State: start check seg. */
+#define SK_RLMT_RCS_SEND_SEG   4               /* RLMT Check State: send BPDU packet */
+#define SK_RLMT_RCS_REPORT_SEG 8               /* RLMT Check State: report seg. */
+
+/* ----- Private PORT checking states ----- */
+
+#define SK_RLMT_PCS_TX                 1               /* Port Check State: check tx. */
+#define SK_RLMT_PCS_RX                 2               /* Port Check State: check rx. */
+
+/* ----- Private PORT events ----- */
+
+/* Note: Update simulation when changing these. */
+#define SK_RLMT_PORTSTART_TIM  1100    /* Port start timeout. */
+#define SK_RLMT_PORTUP_TIM             1101    /* Port can now go up. */
+#define SK_RLMT_PORTDOWN_RX_TIM        1102    /* Port did not receive once ... */
+#define SK_RLMT_PORTDOWN               1103    /* Port went down. */
+#define SK_RLMT_PORTDOWN_TX_TIM        1104    /* Partner did not receive ... */
+
+/* ----- Private RLMT events ----- */
+
+/* Note: Update simulation when changing these. */
+#define SK_RLMT_TIM                            2100    /* RLMT timeout. */
+#define SK_RLMT_SEG_TIM                        2101    /* RLMT segmentation check timeout. */
+
+#define TO_SHORTEN(tim)        ((tim) / 2)
+
+/* Error numbers and messages. */
+#define SKERR_RLMT_E001                (SK_ERRBASE_RLMT + 0)
+#define SKERR_RLMT_E001_MSG    "No Packet."
+#define SKERR_RLMT_E002                (SKERR_RLMT_E001 + 1)
+#define SKERR_RLMT_E002_MSG    "Short Packet."
+#define SKERR_RLMT_E003                (SKERR_RLMT_E002 + 1)
+#define SKERR_RLMT_E003_MSG    "Unknown RLMT event."
+#define SKERR_RLMT_E004                (SKERR_RLMT_E003 + 1)
+#define SKERR_RLMT_E004_MSG    "PortsUp incorrect."
+#define SKERR_RLMT_E005                (SKERR_RLMT_E004 + 1)
+#define SKERR_RLMT_E005_MSG    \
+ "Net seems to be segmented (different root bridges are reported on the ports)."
+#define SKERR_RLMT_E006                (SKERR_RLMT_E005 + 1)
+#define SKERR_RLMT_E006_MSG    "Duplicate MAC Address detected."
+#define SKERR_RLMT_E007                (SKERR_RLMT_E006 + 1)
+#define SKERR_RLMT_E007_MSG    "LinksUp incorrect."
+#define SKERR_RLMT_E008                (SKERR_RLMT_E007 + 1)
+#define SKERR_RLMT_E008_MSG    "Port not started but link came up."
+#define SKERR_RLMT_E009                (SKERR_RLMT_E008 + 1)
+#define SKERR_RLMT_E009_MSG    "Corrected illegal setting of Preferred Port."
+#define SKERR_RLMT_E010                (SKERR_RLMT_E009 + 1)
+#define SKERR_RLMT_E010_MSG    "Ignored illegal Preferred Port."
+
+/* LLC field values. */
+#define LLC_COMMAND_RESPONSE_BIT               1
+#define LLC_TEST_COMMAND                               0xE3
+#define LLC_UI                                                 0x03
+
+/* RLMT Packet fields. */
+#define        SK_RLMT_DSAP                                    0
+#define        SK_RLMT_SSAP                                    0
+#define SK_RLMT_CTRL                                   (LLC_TEST_COMMAND)
+#define SK_RLMT_INDICATOR0                             0x53    /* S */
+#define SK_RLMT_INDICATOR1                             0x4B    /* K */
+#define SK_RLMT_INDICATOR2                             0x2D    /* - */
+#define SK_RLMT_INDICATOR3                             0x52    /* R */
+#define SK_RLMT_INDICATOR4                             0x4C    /* L */
+#define SK_RLMT_INDICATOR5                             0x4D    /* M */
+#define SK_RLMT_INDICATOR6                             0x54    /* T */
+#define SK_RLMT_PACKET_VERSION                 0
+
+/* RLMT SPT Flag values. */
+#define        SK_RLMT_SPT_FLAG_CHANGE                 0x01
+#define        SK_RLMT_SPT_FLAG_CHANGE_ACK             0x80
+
+/* RLMT SPT Packet fields. */
+#define        SK_RLMT_SPT_DSAP                                0x42
+#define        SK_RLMT_SPT_SSAP                                0x42
+#define SK_RLMT_SPT_CTRL                               (LLC_UI)
+#define        SK_RLMT_SPT_PROTOCOL_ID0                0x00
+#define        SK_RLMT_SPT_PROTOCOL_ID1                0x00
+#define        SK_RLMT_SPT_PROTOCOL_VERSION_ID 0x00
+#define        SK_RLMT_SPT_BPDU_TYPE                   0x00
+#define        SK_RLMT_SPT_FLAGS                               0x00    /* ?? */
+#define        SK_RLMT_SPT_ROOT_ID0                    0xFF    /* Lowest possible priority. */
+#define        SK_RLMT_SPT_ROOT_ID1                    0xFF    /* Lowest possible priority. */
+
+/* Remaining 6 bytes will be the current port address. */
+#define        SK_RLMT_SPT_ROOT_PATH_COST0             0x00
+#define        SK_RLMT_SPT_ROOT_PATH_COST1             0x00
+#define        SK_RLMT_SPT_ROOT_PATH_COST2             0x00
+#define        SK_RLMT_SPT_ROOT_PATH_COST3             0x00
+#define        SK_RLMT_SPT_BRIDGE_ID0                  0xFF    /* Lowest possible priority. */
+#define        SK_RLMT_SPT_BRIDGE_ID1                  0xFF    /* Lowest possible priority. */
+
+/* Remaining 6 bytes will be the current port address. */
+#define        SK_RLMT_SPT_PORT_ID0                    0xFF    /* Lowest possible priority. */
+#define        SK_RLMT_SPT_PORT_ID1                    0xFF    /* Lowest possible priority. */
+#define        SK_RLMT_SPT_MSG_AGE0                    0x00
+#define        SK_RLMT_SPT_MSG_AGE1                    0x00
+#define        SK_RLMT_SPT_MAX_AGE0                    0x00
+#define        SK_RLMT_SPT_MAX_AGE1                    0xFF
+#define        SK_RLMT_SPT_HELLO_TIME0                 0x00
+#define        SK_RLMT_SPT_HELLO_TIME1                 0xFF
+#define        SK_RLMT_SPT_FWD_DELAY0                  0x00
+#define        SK_RLMT_SPT_FWD_DELAY1                  0x40
+
+/* Size defines. */
+#define SK_RLMT_MIN_PACKET_SIZE                        34
+#define SK_RLMT_MAX_PACKET_SIZE                        (SK_RLMT_MAX_TX_BUF_SIZE)
+#define SK_PACKET_DATA_LEN                             (SK_RLMT_MAX_PACKET_SIZE - \
+                                                                               SK_RLMT_MIN_PACKET_SIZE)
+
+/* ----- RLMT packet types ----- */
+#define SK_PACKET_ANNOUNCE                             1       /* Port announcement. */
+#define SK_PACKET_ALIVE                                        2       /* Alive packet to port. */
+#define SK_PACKET_ADDR_CHANGED                 3       /* Port address changed. */
+#define SK_PACKET_CHECK_TX                             4       /* Check your tx line. */
+
+#ifdef SK_LITTLE_ENDIAN
+#define SK_U16_TO_NETWORK_ORDER(Val,Addr) { \
+       SK_U8   *_Addr = (SK_U8*)(Addr); \
+       SK_U16  _Val = (SK_U16)(Val); \
+       *_Addr++ = (SK_U8)(_Val >> 8); \
+       *_Addr = (SK_U8)(_Val & 0xFF); \
+}
+#endif /* SK_LITTLE_ENDIAN */
+
+#ifdef SK_BIG_ENDIAN
+#define SK_U16_TO_NETWORK_ORDER(Val,Addr) (*(SK_U16*)(Addr) = (SK_U16)(Val))
+#endif /* SK_BIG_ENDIAN */
+
+#define AUTONEG_FAILED SK_FALSE
+#define AUTONEG_SUCCESS        SK_TRUE
+
+
+/* typedefs *******************************************************************/
+
+/* RLMT packet.  Length: SK_RLMT_MAX_PACKET_SIZE (60) bytes. */
+typedef struct s_RlmtPacket {
+       SK_U8   DstAddr[SK_MAC_ADDR_LEN];
+       SK_U8   SrcAddr[SK_MAC_ADDR_LEN];
+       SK_U8   TypeLen[2];
+       SK_U8   DSap;
+       SK_U8   SSap;
+       SK_U8   Ctrl;
+       SK_U8   Indicator[7];
+       SK_U8   RlmtPacketType[2];
+       SK_U8   Align1[2];
+       SK_U8   Random[4];                              /* Random value of requesting(!) station. */
+       SK_U8   RlmtPacketVersion[2];   /* RLMT Packet version. */
+       SK_U8   Data[SK_PACKET_DATA_LEN];
+} SK_RLMT_PACKET;
+
+typedef struct s_SpTreeRlmtPacket {
+       SK_U8   DstAddr[SK_MAC_ADDR_LEN];
+       SK_U8   SrcAddr[SK_MAC_ADDR_LEN];
+       SK_U8   TypeLen[2];
+       SK_U8   DSap;
+       SK_U8   SSap;
+       SK_U8   Ctrl;
+       SK_U8   ProtocolId[2];
+       SK_U8   ProtocolVersionId;
+       SK_U8   BpduType;
+       SK_U8   Flags;
+       SK_U8   RootId[8];
+       SK_U8   RootPathCost[4];
+       SK_U8   BridgeId[8];
+       SK_U8   PortId[2];
+       SK_U8   MessageAge[2];
+       SK_U8   MaxAge[2];
+       SK_U8   HelloTime[2];
+       SK_U8   ForwardDelay[2];
+} SK_SPTREE_PACKET;
+
+/* global variables ***********************************************************/
+
+SK_MAC_ADDR    SkRlmtMcAddr =  {{0x01,  0x00,  0x5A,  0x52,  0x4C,  0x4D}};
+SK_MAC_ADDR    BridgeMcAddr =  {{0x01,  0x80,  0xC2,  0x00,  0x00,  0x00}};
+SK_MAC_ADDR    BcAddr =                {{0xFF,  0xFF,  0xFF,  0xFF,  0xFF,  0xFF}};
+
+/* local variables ************************************************************/
+
+/* None. */
+
+/* functions ******************************************************************/
+
+RLMT_STATIC void       SkRlmtCheckSwitch(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       SK_U32  NetIdx);
+RLMT_STATIC void       SkRlmtCheckSeg(
+       SK_AC   *pAC,
+       SK_IOC  IoC,
+       SK_U32  NetIdx);
+RLMT_STATIC void       SkRlmtEvtSetNets(
+       SK_AC           *pAC,
+       SK_IOC          IoC,
+       SK_EVPARA       Para);
+
+/******************************************************************************
+ *
+ *     SkRlmtInit - initialize data, set state to init
+ *
+ * Description:
+ *
+ *     SK_INIT_DATA
+ *     ============
+ *
+ *     This routine initializes all RLMT-related variables to a known state.
+ *     The initial state is SK_RLMT_RS_INIT.
+ *     All ports are initialized to SK_RLMT_PS_INIT.
+ *
+ *
+ *     SK_INIT_IO
+ *     ==========
+ *
+ *     Nothing.
+ *
+ *
+ *     SK_INIT_RUN
+ *     ===========
+ *
+ *     Determine the adapter's random value.
+ *     Set the hw registers, the "logical MAC address", the
+ *     RLMT multicast address, and eventually the BPDU multicast address.
+ *
+ * Context:
+ *     init, pageable
+ *
+ * Returns:
+ *     Nothing.
+ */
+void   SkRlmtInit(
+SK_AC  *pAC,   /* Adapter Context */
+SK_IOC IoC,    /* I/O Context */
+int            Level)  /* Initialization Level */
+{
+       SK_U32          i, j;
+       SK_U64          Random;
+       SK_EVPARA       Para;
+    SK_MAC_ADDR                VirtualMacAddress;
+    SK_MAC_ADDR                PhysicalAMacAddress;
+    SK_BOOL            VirtualMacAddressSet;
+    SK_BOOL            PhysicalAMacAddressSet;
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_INIT,
+               ("RLMT Init level %d.\n", Level))
+
+       switch (Level) {
+       case SK_INIT_DATA:      /* Initialize data structures. */
+               SK_MEMSET((char *)&pAC->Rlmt, 0, sizeof(SK_RLMT));
+
+               for (i = 0; i < SK_MAX_MACS; i++) {
+                       pAC->Rlmt.Port[i].PortState = SK_RLMT_PS_INIT;
+                       pAC->Rlmt.Port[i].LinkDown = SK_TRUE;
+                       pAC->Rlmt.Port[i].PortDown = SK_TRUE;
+                       pAC->Rlmt.Port[i].PortStarted = SK_FALSE;
+                       pAC->Rlmt.Port[i].PortNoRx = SK_FALSE;
+                       pAC->Rlmt.Port[i].RootIdSet = SK_FALSE;
+                       pAC->Rlmt.Port[i].PortNumber = i;
+                       pAC->Rlmt.Port[i].Net = &pAC->Rlmt.Net[0];
+                       pAC->Rlmt.Port[i].AddrPort = &pAC->Addr.Port[i];
+               }
+
+               pAC->Rlmt.NumNets = 1;
+               for (i = 0; i < SK_MAX_NETS; i++) {
+                       pAC->Rlmt.Net[i].RlmtState = SK_RLMT_RS_INIT;
+                       pAC->Rlmt.Net[i].RootIdSet = SK_FALSE;
+                       pAC->Rlmt.Net[i].PrefPort = SK_RLMT_DEF_PREF_PORT;
+                       pAC->Rlmt.Net[i].Preference = 0xFFFFFFFF;         /* Automatic. */
+                       /* Just assuming. */
+                       pAC->Rlmt.Net[i].ActivePort = pAC->Rlmt.Net[i].PrefPort;
+                       pAC->Rlmt.Net[i].RlmtMode = SK_RLMT_DEF_MODE;
+                       pAC->Rlmt.Net[i].TimeoutValue = SK_RLMT_DEF_TO_VAL;
+                       pAC->Rlmt.Net[i].NetNumber = i;
+               }
+
+               pAC->Rlmt.Net[0].Port[0] = &pAC->Rlmt.Port[0];
+               pAC->Rlmt.Net[0].Port[1] = &pAC->Rlmt.Port[1];
+#if SK_MAX_NETS > 1
+               pAC->Rlmt.Net[1].Port[0] = &pAC->Rlmt.Port[1];
+#endif /* SK_MAX_NETS > 1 */
+               break;
+
+       case SK_INIT_IO:        /* GIMacsFound first available here. */
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_INIT,
+                       ("RLMT: %d MACs were detected.\n", pAC->GIni.GIMacsFound))
+
+               pAC->Rlmt.Net[0].NumPorts = pAC->GIni.GIMacsFound;
+
+               /* Initialize HW registers? */
+               if (pAC->GIni.GIMacsFound == 1) {
+                       Para.Para32[0] = SK_RLMT_MODE_CLS;
+                       Para.Para32[1] = 0;
+                       (void)SkRlmtEvent(pAC, IoC, SK_RLMT_MODE_CHANGE, Para);
+               }
+               break;
+
+       case SK_INIT_RUN:
+               /* Ensure RLMT is set to one net. */
+               if (pAC->Rlmt.NumNets > 1) {
+                       Para.Para32[0] = 1;
+                       Para.Para32[1] = -1;
+                       SkRlmtEvtSetNets(pAC, IoC, Para);
+               }
+
+               for (i = 0; i < (SK_U32)pAC->GIni.GIMacsFound; i++) {
+                       Random = SkOsGetTime(pAC);
+                       *(SK_U32*)&pAC->Rlmt.Port[i].Random = *(SK_U32*)&Random;
+
+                       for (j = 0; j < 4; j++) {
+                               pAC->Rlmt.Port[i].Random[j] ^= pAC->Rlmt.Port[i].AddrPort->
+                                       CurrentMacAddress.a[SK_MAC_ADDR_LEN - 1 - j];
+                       }
+
+                       (void)SkAddrMcClear(pAC, IoC, i, SK_ADDR_PERMANENT | SK_MC_SW_ONLY);
+
+                       /* Add RLMT MC address. */
+                       (void)SkAddrMcAdd(pAC, IoC, i, &SkRlmtMcAddr, SK_ADDR_PERMANENT);
+
+                       if (pAC->Rlmt.Net[0].RlmtMode & SK_RLMT_CHECK_SEG) {
+                               /* Add BPDU MC address. */
+                               (void)SkAddrMcAdd(pAC, IoC, i, &BridgeMcAddr, SK_ADDR_PERMANENT);
+                       }
+
+                       (void)SkAddrMcUpdate(pAC, IoC, i);
+               }
+
+       VirtualMacAddressSet = SK_FALSE;
+               /* Read virtual MAC address from Control Register File. */
+               for (j = 0; j < SK_MAC_ADDR_LEN; j++) {
+
+           SK_IN8(IoC, B2_MAC_1 + j, &VirtualMacAddress.a[j]);
+           VirtualMacAddressSet |= VirtualMacAddress.a[j];
+               }
+
+       PhysicalAMacAddressSet = SK_FALSE;
+               /* Read physical MAC address for MAC A from Control Register File. */
+               for (j = 0; j < SK_MAC_ADDR_LEN; j++) {
+
+           SK_IN8(IoC, B2_MAC_2 + j, &PhysicalAMacAddress.a[j]);
+           PhysicalAMacAddressSet |= PhysicalAMacAddress.a[j];
+               }
+
+       /* check if the two mac addresses contain reasonable values */
+       if (!VirtualMacAddressSet || !PhysicalAMacAddressSet) {
+
+           pAC->Rlmt.RlmtOff = SK_TRUE;
+       }
+
+       /* if the two mac addresses are equal switch off the RLMT_PRE_LOOKAHEAD
+          and the RLMT_LOOKAHEAD macros */
+       else if (SK_ADDR_EQUAL(PhysicalAMacAddress.a, VirtualMacAddress.a)) {
+
+           pAC->Rlmt.RlmtOff = SK_TRUE;
+       }
+               else {
+                       pAC->Rlmt.RlmtOff = SK_FALSE;
+               }
+               break;
+
+       default:        /* error */
+               break;
+       }
+       return;
+}      /* SkRlmtInit */
+
+
+/******************************************************************************
+ *
+ *     SkRlmtBuildCheckChain - build the check chain
+ *
+ * Description:
+ *     This routine builds the local check chain:
+ *     - Each port that is up checks the next port.
+ *     - The last port that is up checks the first port that is up.
+ *
+ * Notes:
+ *     - Currently only local ports are considered when building the chain.
+ *     - Currently the SuspectState is just reset;
+ *       it would be better to save it ...
+ *
+ * Context:
+ *     runtime, pageable?
+ *
+ * Returns:
+ *     Nothing
+ */
+RLMT_STATIC void       SkRlmtBuildCheckChain(
+SK_AC  *pAC,   /* Adapter Context */
+SK_U32 NetIdx) /* Net Number */
+{
+       SK_U32                  i;
+       SK_U32                  NumMacsUp;
+       SK_RLMT_PORT *  FirstMacUp;
+       SK_RLMT_PORT *  PrevMacUp;
+
+       FirstMacUp      = NULL;
+       PrevMacUp       = NULL;
+
+       if (!(pAC->Rlmt.Net[NetIdx].RlmtMode & SK_RLMT_CHECK_LOC_LINK)) {
+               for (i = 0; i < pAC->Rlmt.Net[i].NumPorts; i++) {
+                       pAC->Rlmt.Net[NetIdx].Port[i]->PortsChecked = 0;
+               }
+               return; /* Done. */
+       }
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+               ("SkRlmtBuildCheckChain.\n"))
+
+       NumMacsUp = 0;
+
+       for (i = 0; i < pAC->Rlmt.Net[NetIdx].NumPorts; i++) {
+               pAC->Rlmt.Net[NetIdx].Port[i]->PortsChecked = 0;
+               pAC->Rlmt.Net[NetIdx].Port[i]->PortsSuspect = 0;
+               pAC->Rlmt.Net[NetIdx].Port[i]->CheckingState &=
+                       ~(SK_RLMT_PCS_RX | SK_RLMT_PCS_TX);
+
+               /*
+                * If more than two links are detected we should consider
+                * checking at least two other ports:
+                * 1. the next port that is not LinkDown and
+                * 2. the next port that is not PortDown.
+                */
+               if (!pAC->Rlmt.Net[NetIdx].Port[i]->LinkDown) {
+                       if (NumMacsUp == 0) {
+                               FirstMacUp = pAC->Rlmt.Net[NetIdx].Port[i];
+                       }
+                       else {
+                               PrevMacUp->PortCheck[
+                                       pAC->Rlmt.Net[NetIdx].Port[i]->PortsChecked].CheckAddr =
+                                       pAC->Rlmt.Net[NetIdx].Port[i]->AddrPort->CurrentMacAddress;
+                               PrevMacUp->PortCheck[
+                                       PrevMacUp->PortsChecked].SuspectTx = SK_FALSE;
+                               PrevMacUp->PortsChecked++;
+                       }
+                       PrevMacUp = pAC->Rlmt.Net[NetIdx].Port[i];
+                       NumMacsUp++;
+               }
+       }
+
+       if (NumMacsUp > 1) {
+               PrevMacUp->PortCheck[PrevMacUp->PortsChecked].CheckAddr =
+                       FirstMacUp->AddrPort->CurrentMacAddress;
+               PrevMacUp->PortCheck[PrevMacUp->PortsChecked].SuspectTx =
+                       SK_FALSE;
+               PrevMacUp->PortsChecked++;
+       }
+
+#ifdef DEBUG
+       for (i = 0; i < pAC->Rlmt.Net[NetIdx].NumPorts; i++) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("Port %d checks %d other ports: %2X.\n", i,
+                               pAC->Rlmt.Net[NetIdx].Port[i]->PortsChecked,
+                               pAC->Rlmt.Net[NetIdx].Port[i]->PortCheck[0].CheckAddr.a[5]))
+       }
+#endif /* DEBUG */
+
+       return;
+}      /* SkRlmtBuildCheckChain */
+
+
+/******************************************************************************
+ *
+ *     SkRlmtBuildPacket - build an RLMT packet
+ *
+ * Description:
+ *     This routine sets up an RLMT packet.
+ *
+ * Context:
+ *     runtime, pageable?
+ *
+ * Returns:
+ *     NULL or pointer to RLMT mbuf
+ */
+RLMT_STATIC SK_MBUF    *SkRlmtBuildPacket(
+SK_AC          *pAC,           /* Adapter Context */
+SK_IOC         IoC,            /* I/O Context */
+SK_U32         PortNumber,     /* Sending port */
+SK_U16         PacketType,     /* RLMT packet type */
+SK_MAC_ADDR    *SrcAddr,       /* Source address */
+SK_MAC_ADDR    *DestAddr)      /* Destination address */
+{
+       int             i;
+       SK_U16          Length;
+       SK_MBUF         *pMb;
+       SK_RLMT_PACKET  *pPacket;
+
+#ifdef DEBUG
+       SK_U8   CheckSrc  = 0;
+       SK_U8   CheckDest = 0;
+
+       for (i = 0; i < SK_MAC_ADDR_LEN; ++i) {
+               CheckSrc  |= SrcAddr->a[i];
+               CheckDest |= DestAddr->a[i];
+       }
+
+       if ((CheckSrc == 0) || (CheckDest == 0)) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_ERR,
+                       ("SkRlmtBuildPacket: Invalid %s%saddr.\n",
+                        (CheckSrc == 0 ? "Src" : ""), (CheckDest == 0 ? "Dest" : "")))
+       }
+#endif
+
+       if ((pMb = SkDrvAllocRlmtMbuf(pAC, IoC, SK_RLMT_MAX_PACKET_SIZE)) != NULL) {
+               pPacket = (SK_RLMT_PACKET*)pMb->pData;
+               for (i = 0; i < SK_MAC_ADDR_LEN; i++) {
+                       pPacket->DstAddr[i] = DestAddr->a[i];
+                       pPacket->SrcAddr[i] = SrcAddr->a[i];
+               }
+               pPacket->DSap = SK_RLMT_DSAP;
+               pPacket->SSap = SK_RLMT_SSAP;
+               pPacket->Ctrl = SK_RLMT_CTRL;
+               pPacket->Indicator[0] = SK_RLMT_INDICATOR0;
+               pPacket->Indicator[1] = SK_RLMT_INDICATOR1;
+               pPacket->Indicator[2] = SK_RLMT_INDICATOR2;
+               pPacket->Indicator[3] = SK_RLMT_INDICATOR3;
+               pPacket->Indicator[4] = SK_RLMT_INDICATOR4;
+               pPacket->Indicator[5] = SK_RLMT_INDICATOR5;
+               pPacket->Indicator[6] = SK_RLMT_INDICATOR6;
+
+               SK_U16_TO_NETWORK_ORDER(PacketType, &pPacket->RlmtPacketType[0]);
+
+               for (i = 0; i < 4; i++) {
+                       pPacket->Random[i] = pAC->Rlmt.Port[PortNumber].Random[i];
+               }
+
+               SK_U16_TO_NETWORK_ORDER(
+                       SK_RLMT_PACKET_VERSION, &pPacket->RlmtPacketVersion[0]);
+
+               for (i = 0; i < SK_PACKET_DATA_LEN; i++) {
+                       pPacket->Data[i] = 0x00;
+               }
+
+               Length = SK_RLMT_MAX_PACKET_SIZE;       /* Or smaller. */
+               pMb->Length = Length;
+               pMb->PortIdx = PortNumber;
+               Length -= 14;
+               SK_U16_TO_NETWORK_ORDER(Length, &pPacket->TypeLen[0]);
+
+               if (PacketType == SK_PACKET_ALIVE) {
+                       pAC->Rlmt.Port[PortNumber].TxHelloCts++;
+               }
+       }
+
+       return (pMb);
+}      /* SkRlmtBuildPacket */
+
+
+/******************************************************************************
+ *
+ *     SkRlmtBuildSpanningTreePacket - build spanning tree check packet
+ *
+ * Description:
+ *     This routine sets up a BPDU packet for spanning tree check.
+ *
+ * Context:
+ *     runtime, pageable?
+ *
+ * Returns:
+ *     NULL or pointer to RLMT mbuf
+ */
+RLMT_STATIC SK_MBUF    *SkRlmtBuildSpanningTreePacket(
+SK_AC  *pAC,           /* Adapter Context */
+SK_IOC IoC,            /* I/O Context */
+SK_U32 PortNumber)     /* Sending port */
+{
+       unsigned                        i;
+       SK_U16                          Length;
+       SK_MBUF                         *pMb;
+       SK_SPTREE_PACKET        *pSPacket;
+
+       if ((pMb = SkDrvAllocRlmtMbuf(pAC, IoC, SK_RLMT_MAX_PACKET_SIZE)) !=
+               NULL) {
+               pSPacket = (SK_SPTREE_PACKET*)pMb->pData;
+               for (i = 0; i < SK_MAC_ADDR_LEN; i++) {
+                       pSPacket->DstAddr[i] = BridgeMcAddr.a[i];
+                       pSPacket->SrcAddr[i] =
+                               pAC->Addr.Port[PortNumber].CurrentMacAddress.a[i];
+               }
+               pSPacket->DSap = SK_RLMT_SPT_DSAP;
+               pSPacket->SSap = SK_RLMT_SPT_SSAP;
+               pSPacket->Ctrl = SK_RLMT_SPT_CTRL;
+
+               pSPacket->ProtocolId[0] = SK_RLMT_SPT_PROTOCOL_ID0;
+               pSPacket->ProtocolId[1] = SK_RLMT_SPT_PROTOCOL_ID1;
+               pSPacket->ProtocolVersionId = SK_RLMT_SPT_PROTOCOL_VERSION_ID;
+               pSPacket->BpduType = SK_RLMT_SPT_BPDU_TYPE;
+               pSPacket->Flags = SK_RLMT_SPT_FLAGS;
+               pSPacket->RootId[0] = SK_RLMT_SPT_ROOT_ID0;
+               pSPacket->RootId[1] = SK_RLMT_SPT_ROOT_ID1;
+               pSPacket->RootPathCost[0] = SK_RLMT_SPT_ROOT_PATH_COST0;
+               pSPacket->RootPathCost[1] = SK_RLMT_SPT_ROOT_PATH_COST1;
+               pSPacket->RootPathCost[2] = SK_RLMT_SPT_ROOT_PATH_COST2;
+               pSPacket->RootPathCost[3] = SK_RLMT_SPT_ROOT_PATH_COST3;
+               pSPacket->BridgeId[0] = SK_RLMT_SPT_BRIDGE_ID0;
+               pSPacket->BridgeId[1] = SK_RLMT_SPT_BRIDGE_ID1;
+
+               /*
+                * Use logical MAC address as bridge ID and filter these packets
+                * on receive.
+                */
+               for (i = 0; i < SK_MAC_ADDR_LEN; i++) {
+                       pSPacket->BridgeId[i + 2] = pSPacket->RootId[i + 2] =
+                               pAC->Addr.Net[pAC->Rlmt.Port[PortNumber].Net->NetNumber].
+                                       CurrentMacAddress.a[i];
+               }
+               pSPacket->PortId[0] = SK_RLMT_SPT_PORT_ID0;
+               pSPacket->PortId[1] = SK_RLMT_SPT_PORT_ID1;
+               pSPacket->MessageAge[0] = SK_RLMT_SPT_MSG_AGE0;
+               pSPacket->MessageAge[1] = SK_RLMT_SPT_MSG_AGE1;
+               pSPacket->MaxAge[0] = SK_RLMT_SPT_MAX_AGE0;
+               pSPacket->MaxAge[1] = SK_RLMT_SPT_MAX_AGE1;
+               pSPacket->HelloTime[0] = SK_RLMT_SPT_HELLO_TIME0;
+               pSPacket->HelloTime[1] = SK_RLMT_SPT_HELLO_TIME1;
+               pSPacket->ForwardDelay[0] = SK_RLMT_SPT_FWD_DELAY0;
+               pSPacket->ForwardDelay[1] = SK_RLMT_SPT_FWD_DELAY1;
+
+               Length = SK_RLMT_MAX_PACKET_SIZE;       /* Or smaller. */
+               pMb->Length = Length;
+               pMb->PortIdx = PortNumber;
+               Length -= 14;
+               SK_U16_TO_NETWORK_ORDER(Length, &pSPacket->TypeLen[0]);
+
+               pAC->Rlmt.Port[PortNumber].TxSpHelloReqCts++;
+       }
+
+       return (pMb);
+}      /* SkRlmtBuildSpanningTreePacket */
+
+
+/******************************************************************************
+ *
+ *     SkRlmtSend - build and send check packets
+ *
+ * Description:
+ *     Depending on the RLMT state and the checking state, several packets
+ *     are sent through the indicated port.
+ *
+ * Context:
+ *     runtime, pageable?
+ *
+ * Returns:
+ *     Nothing.
+ */
+RLMT_STATIC void       SkRlmtSend(
+SK_AC  *pAC,           /* Adapter Context */
+SK_IOC IoC,            /* I/O Context */
+SK_U32 PortNumber)     /* Sending port */
+{
+       unsigned        j;
+       SK_EVPARA       Para;
+       SK_RLMT_PORT    *pRPort;
+
+       pRPort = &pAC->Rlmt.Port[PortNumber];
+       if (pAC->Rlmt.Port[PortNumber].Net->RlmtMode & SK_RLMT_CHECK_LOC_LINK) {
+               if (pRPort->CheckingState & (SK_RLMT_PCS_TX | SK_RLMT_PCS_RX)) {
+                       /* Port is suspicious. Send the RLMT packet to the RLMT mc addr. */
+                       if ((Para.pParaPtr = SkRlmtBuildPacket(pAC, IoC, PortNumber,
+                               SK_PACKET_ALIVE, &pAC->Addr.Port[PortNumber].CurrentMacAddress,
+                               &SkRlmtMcAddr)) != NULL) {
+                               SkEventQueue(pAC, SKGE_DRV, SK_DRV_RLMT_SEND, Para);
+                       }
+               }
+               else {
+                       /*
+                        * Send a directed RLMT packet to all ports that are
+                        * checked by the indicated port.
+                        */
+                       for (j = 0; j < pRPort->PortsChecked; j++) {
+                               if ((Para.pParaPtr = SkRlmtBuildPacket(pAC, IoC, PortNumber,
+                                       SK_PACKET_ALIVE, &pAC->Addr.Port[PortNumber].CurrentMacAddress,
+                                       &pRPort->PortCheck[j].CheckAddr)) != NULL) {
+                                       SkEventQueue(pAC, SKGE_DRV, SK_DRV_RLMT_SEND, Para);
+                               }
+                       }
+               }
+       }
+
+       if ((pAC->Rlmt.Port[PortNumber].Net->RlmtMode & SK_RLMT_CHECK_SEG) &&
+               (pAC->Rlmt.Port[PortNumber].Net->CheckingState & SK_RLMT_RCS_SEND_SEG)) {
+               /*
+                * Send a BPDU packet to make a connected switch tell us
+                * the correct root bridge.
+                */
+               if ((Para.pParaPtr =
+                       SkRlmtBuildSpanningTreePacket(pAC, IoC, PortNumber)) != NULL) {
+                       pAC->Rlmt.Port[PortNumber].Net->CheckingState &= ~SK_RLMT_RCS_SEND_SEG;
+                       pRPort->RootIdSet = SK_FALSE;
+
+                       SkEventQueue(pAC, SKGE_DRV, SK_DRV_RLMT_SEND, Para);
+                       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_TX,
+                               ("SkRlmtSend: BPDU Packet on Port %u.\n", PortNumber))
+               }
+       }
+       return;
+}      /* SkRlmtSend */
+
+
+/******************************************************************************
+ *
+ *     SkRlmtPortReceives - check if port is (going) down and bring it up
+ *
+ * Description:
+ *     This routine checks if a port who received a non-BPDU packet
+ *     needs to go up or needs to be stopped going down.
+ *
+ * Context:
+ *     runtime, pageable?
+ *
+ * Returns:
+ *     Nothing.
+ */
+RLMT_STATIC void       SkRlmtPortReceives(
+SK_AC  *pAC,                   /* Adapter Context */
+SK_IOC IoC,                    /* I/O Context */
+SK_U32 PortNumber)             /* Port to check */
+{
+       SK_RLMT_PORT    *pRPort;
+       SK_EVPARA               Para;
+
+       pRPort = &pAC->Rlmt.Port[PortNumber];
+       pRPort->PortNoRx = SK_FALSE;
+
+       if ((pRPort->PortState == SK_RLMT_PS_DOWN) &&
+               !(pRPort->CheckingState & SK_RLMT_PCS_TX)) {
+               /*
+                * Port is marked down (rx), but received a non-BPDU packet.
+                * Bring it up.
+                */
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_RX,
+                       ("SkRlmtPacketReceive: Received on PortDown.\n"))
+
+               pRPort->PortState = SK_RLMT_PS_GOING_UP;
+               pRPort->GuTimeStamp = SkOsGetTime(pAC);
+               Para.Para32[0] = PortNumber;
+               Para.Para32[1] = (SK_U32)-1;
+               SkTimerStart(pAC, IoC, &pRPort->UpTimer, SK_RLMT_PORTUP_TIM_VAL,
+                       SKGE_RLMT, SK_RLMT_PORTUP_TIM, Para);
+               pRPort->CheckingState &= ~SK_RLMT_PCS_RX;
+               /* pAC->Rlmt.CheckSwitch = SK_TRUE; */
+               SkRlmtCheckSwitch(pAC, IoC, pRPort->Net->NetNumber);
+       }       /* PortDown && !SuspectTx */
+       else if (pRPort->CheckingState & SK_RLMT_PCS_RX) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_RX,
+                       ("SkRlmtPacketReceive: Stop bringing port down.\n"))
+               SkTimerStop(pAC, IoC, &pRPort->DownRxTimer);
+               pRPort->CheckingState &= ~SK_RLMT_PCS_RX;
+               /* pAC->Rlmt.CheckSwitch = SK_TRUE; */
+               SkRlmtCheckSwitch(pAC, IoC, pRPort->Net->NetNumber);
+       }       /* PortGoingDown */
+
+       return;
+}      /* SkRlmtPortReceives */
+
+
+/******************************************************************************
+ *
+ *     SkRlmtPacketReceive - receive a packet for closer examination
+ *
+ * Description:
+ *     This routine examines a packet more closely than SK_RLMT_LOOKAHEAD.
+ *
+ * Context:
+ *     runtime, pageable?
+ *
+ * Returns:
+ *     Nothing.
+ */
+RLMT_STATIC void       SkRlmtPacketReceive(
+SK_AC  *pAC,   /* Adapter Context */
+SK_IOC IoC,    /* I/O Context */
+SK_MBUF        *pMb)   /* Received packet */
+{
+#ifdef xDEBUG
+       extern  void DumpData(char *p, int size);
+#endif /* DEBUG */
+       int                                     i;
+       unsigned                        j;
+       SK_U16                          PacketType;
+       SK_U32                          PortNumber;
+       SK_ADDR_PORT            *pAPort;
+       SK_RLMT_PORT            *pRPort;
+       SK_RLMT_PACKET          *pRPacket;
+       SK_SPTREE_PACKET        *pSPacket;
+       SK_EVPARA                       Para;
+
+       PortNumber      = pMb->PortIdx;
+       pAPort = &pAC->Addr.Port[PortNumber];
+       pRPort = &pAC->Rlmt.Port[PortNumber];
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_RX,
+               ("SkRlmtPacketReceive: PortNumber == %d.\n", PortNumber))
+
+       pRPacket = (SK_RLMT_PACKET*)pMb->pData;
+       pSPacket = (SK_SPTREE_PACKET*)pRPacket;
+
+#ifdef xDEBUG
+       DumpData((char *)pRPacket, 32);
+#endif /* DEBUG */
+
+       if ((pRPort->PacketsPerTimeSlot - pRPort->BpduPacketsPerTimeSlot) != 0) {
+               SkRlmtPortReceives(pAC, IoC, PortNumber);
+       }
+
+       /* Check destination address. */
+
+       if (!SK_ADDR_EQUAL(pAPort->CurrentMacAddress.a, pRPacket->DstAddr) &&
+               !SK_ADDR_EQUAL(SkRlmtMcAddr.a, pRPacket->DstAddr) &&
+               !SK_ADDR_EQUAL(BridgeMcAddr.a, pRPacket->DstAddr)) {
+
+               /* Not sent to current MAC or registered MC address => Trash it. */
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_RX,
+                       ("SkRlmtPacketReceive: Not for me.\n"))
+
+               SkDrvFreeRlmtMbuf(pAC, IoC, pMb);
+               return;
+       }
+       else if (SK_ADDR_EQUAL(pAPort->CurrentMacAddress.a, pRPacket->SrcAddr)) {
+
+               /*
+                * Was sent by same port (may happen during port switching
+                * or in case of duplicate MAC addresses).
+                */
+
+               /*
+                * Check for duplicate address here:
+                * If Packet.Random != My.Random => DupAddr.
+                */
+               for (i = 3; i >= 0; i--) {
+                       if (pRPort->Random[i] != pRPacket->Random[i]) {
+                               break;
+                       }
+               }
+
+               /*
+                * CAUTION: Do not check for duplicate MAC address in RLMT Alive Reply
+                * packets (they have the LLC_COMMAND_RESPONSE_BIT set in
+                * pRPacket->SSap).
+                */
+               if (i >= 0 && pRPacket->DSap == SK_RLMT_DSAP &&
+                       pRPacket->Ctrl == SK_RLMT_CTRL &&
+                       pRPacket->SSap == SK_RLMT_SSAP &&
+                       pRPacket->Indicator[0] == SK_RLMT_INDICATOR0 &&
+                       pRPacket->Indicator[1] == SK_RLMT_INDICATOR1 &&
+                       pRPacket->Indicator[2] == SK_RLMT_INDICATOR2 &&
+                       pRPacket->Indicator[3] == SK_RLMT_INDICATOR3 &&
+                       pRPacket->Indicator[4] == SK_RLMT_INDICATOR4 &&
+                       pRPacket->Indicator[5] == SK_RLMT_INDICATOR5 &&
+                       pRPacket->Indicator[6] == SK_RLMT_INDICATOR6) {
+                       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_RX,
+                               ("SkRlmtPacketReceive: Duplicate MAC Address.\n"))
+
+                       /* Error Log entry. */
+                       SK_ERR_LOG(pAC, SK_ERRCL_COMM, SKERR_RLMT_E006, SKERR_RLMT_E006_MSG);
+               }
+               else {
+                       /* Simply trash it. */
+                       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_RX,
+                               ("SkRlmtPacketReceive: Sent by me.\n"))
+               }
+
+               SkDrvFreeRlmtMbuf(pAC, IoC, pMb);
+               return;
+       }
+
+       /* Check SuspectTx entries. */
+       if (pRPort->PortsSuspect > 0) {
+               for (j = 0; j < pRPort->PortsChecked; j++) {
+                       if (pRPort->PortCheck[j].SuspectTx &&
+                               SK_ADDR_EQUAL(
+                                       pRPacket->SrcAddr, pRPort->PortCheck[j].CheckAddr.a)) {
+                               pRPort->PortCheck[j].SuspectTx = SK_FALSE;
+                               pRPort->PortsSuspect--;
+                               break;
+                       }
+               }
+       }
+
+       /* Determine type of packet. */
+       if (pRPacket->DSap == SK_RLMT_DSAP &&
+               pRPacket->Ctrl == SK_RLMT_CTRL &&
+               (pRPacket->SSap & ~LLC_COMMAND_RESPONSE_BIT) == SK_RLMT_SSAP &&
+               pRPacket->Indicator[0] == SK_RLMT_INDICATOR0 &&
+               pRPacket->Indicator[1] == SK_RLMT_INDICATOR1 &&
+               pRPacket->Indicator[2] == SK_RLMT_INDICATOR2 &&
+               pRPacket->Indicator[3] == SK_RLMT_INDICATOR3 &&
+               pRPacket->Indicator[4] == SK_RLMT_INDICATOR4 &&
+               pRPacket->Indicator[5] == SK_RLMT_INDICATOR5 &&
+               pRPacket->Indicator[6] == SK_RLMT_INDICATOR6) {
+
+               /* It's an RLMT packet. */
+               PacketType = (SK_U16)((pRPacket->RlmtPacketType[0] << 8) |
+                       pRPacket->RlmtPacketType[1]);
+
+               switch (PacketType) {
+               case SK_PACKET_ANNOUNCE:        /* Not yet used. */
+#if 0
+                       /* Build the check chain. */
+                       SkRlmtBuildCheckChain(pAC);
+#endif /* 0 */
+
+                       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_RX,
+                               ("SkRlmtPacketReceive: Announce.\n"))
+
+                       SkDrvFreeRlmtMbuf(pAC, IoC, pMb);
+                       break;
+
+               case SK_PACKET_ALIVE:
+                       if (pRPacket->SSap & LLC_COMMAND_RESPONSE_BIT) {
+                               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_RX,
+                                       ("SkRlmtPacketReceive: Alive Reply.\n"))
+
+                               if (!(pAC->Addr.Port[PortNumber].PromMode & SK_PROM_MODE_LLC) ||
+                                       SK_ADDR_EQUAL(
+                                               pRPacket->DstAddr, pAPort->CurrentMacAddress.a)) {
+                                       /* Obviously we could send something. */
+                                       if (pRPort->CheckingState & SK_RLMT_PCS_TX) {
+                                               pRPort->CheckingState &=  ~SK_RLMT_PCS_TX;
+                                               SkTimerStop(pAC, IoC, &pRPort->DownTxTimer);
+                                       }
+
+                                       if ((pRPort->PortState == SK_RLMT_PS_DOWN) &&
+                                               !(pRPort->CheckingState & SK_RLMT_PCS_RX)) {
+                                               pRPort->PortState = SK_RLMT_PS_GOING_UP;
+                                               pRPort->GuTimeStamp = SkOsGetTime(pAC);
+
+                                               SkTimerStop(pAC, IoC, &pRPort->DownTxTimer);
+
+                                               Para.Para32[0] = PortNumber;
+                                               Para.Para32[1] = (SK_U32)-1;
+                                               SkTimerStart(pAC, IoC, &pRPort->UpTimer,
+                                                       SK_RLMT_PORTUP_TIM_VAL, SKGE_RLMT,
+                                                       SK_RLMT_PORTUP_TIM, Para);
+                                       }
+                               }
+
+                               /* Mark sending port as alive? */
+                               SkDrvFreeRlmtMbuf(pAC, IoC, pMb);
+                       }
+                       else {  /* Alive Request Packet. */
+                               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_RX,
+                                       ("SkRlmtPacketReceive: Alive Request.\n"))
+
+                               pRPort->RxHelloCts++;
+
+                               /* Answer. */
+                               for (i = 0; i < SK_MAC_ADDR_LEN; i++) {
+                                       pRPacket->DstAddr[i] = pRPacket->SrcAddr[i];
+                                       pRPacket->SrcAddr[i] =
+                                               pAC->Addr.Port[PortNumber].CurrentMacAddress.a[i];
+                               }
+                               pRPacket->SSap |= LLC_COMMAND_RESPONSE_BIT;
+
+                               Para.pParaPtr = pMb;
+                               SkEventQueue(pAC, SKGE_DRV, SK_DRV_RLMT_SEND, Para);
+                       }
+                       break;
+
+               case SK_PACKET_CHECK_TX:
+                       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_RX,
+                               ("SkRlmtPacketReceive: Check your tx line.\n"))
+
+                       /* A port checking us requests us to check our tx line. */
+                       pRPort->CheckingState |= SK_RLMT_PCS_TX;
+
+                       /* Start PortDownTx timer. */
+                       Para.Para32[0] = PortNumber;
+                       Para.Para32[1] = (SK_U32)-1;
+                       SkTimerStart(pAC, IoC, &pRPort->DownTxTimer,
+                               SK_RLMT_PORTDOWN_TIM_VAL, SKGE_RLMT,
+                               SK_RLMT_PORTDOWN_TX_TIM, Para);
+
+                       SkDrvFreeRlmtMbuf(pAC, IoC, pMb);
+
+                       if ((Para.pParaPtr = SkRlmtBuildPacket(pAC, IoC, PortNumber,
+                               SK_PACKET_ALIVE, &pAC->Addr.Port[PortNumber].CurrentMacAddress,
+                               &SkRlmtMcAddr)) != NULL) {
+                               SkEventQueue(pAC, SKGE_DRV, SK_DRV_RLMT_SEND, Para);
+                       }
+                       break;
+
+               case SK_PACKET_ADDR_CHANGED:
+                       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_RX,
+                               ("SkRlmtPacketReceive: Address Change.\n"))
+
+                       /* Build the check chain. */
+                       SkRlmtBuildCheckChain(pAC, pRPort->Net->NetNumber);
+                       SkDrvFreeRlmtMbuf(pAC, IoC, pMb);
+                       break;
+
+               default:
+                       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_RX,
+                               ("SkRlmtPacketReceive: Unknown RLMT packet.\n"))
+
+                       /* RA;:;: ??? */
+                       SkDrvFreeRlmtMbuf(pAC, IoC, pMb);
+               }
+       }
+       else if (pSPacket->DSap == SK_RLMT_SPT_DSAP &&
+               pSPacket->Ctrl == SK_RLMT_SPT_CTRL &&
+               (pSPacket->SSap & ~LLC_COMMAND_RESPONSE_BIT) == SK_RLMT_SPT_SSAP) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_RX,
+                       ("SkRlmtPacketReceive: BPDU Packet.\n"))
+
+               /* Spanning Tree packet. */
+               pRPort->RxSpHelloCts++;
+
+               if (!SK_ADDR_EQUAL(&pSPacket->RootId[2], &pAC->Addr.Net[pAC->Rlmt.
+                       Port[PortNumber].Net->NetNumber].CurrentMacAddress.a[0])) {
+                       /*
+                        * Check segmentation if a new root bridge is set and
+                        * the segmentation check is not currently running.
+                        */
+                       if (!SK_ADDR_EQUAL(&pSPacket->RootId[2], &pRPort->Root.Id[2]) &&
+                               (pAC->Rlmt.Port[PortNumber].Net->LinksUp > 1) &&
+                               (pAC->Rlmt.Port[PortNumber].Net->RlmtMode & SK_RLMT_CHECK_SEG)
+                               != 0 && (pAC->Rlmt.Port[PortNumber].Net->CheckingState &
+                               SK_RLMT_RCS_SEG) == 0) {
+                               pAC->Rlmt.Port[PortNumber].Net->CheckingState |=
+                                       SK_RLMT_RCS_START_SEG | SK_RLMT_RCS_SEND_SEG;
+                       }
+
+                       /* Store tree view of this port. */
+                       for (i = 0; i < 8; i++) {
+                               pRPort->Root.Id[i] = pSPacket->RootId[i];
+                       }
+                       pRPort->RootIdSet = SK_TRUE;
+
+                       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_DUMP,
+                               ("Root ID %d: %02x %02x %02x %02x %02x %02x %02x %02x.\n",
+                                       PortNumber,
+                                       pRPort->Root.Id[0], pRPort->Root.Id[1],
+                                       pRPort->Root.Id[2], pRPort->Root.Id[3],
+                                       pRPort->Root.Id[4], pRPort->Root.Id[5],
+                                       pRPort->Root.Id[6], pRPort->Root.Id[7]))
+               }
+
+               SkDrvFreeRlmtMbuf(pAC, IoC, pMb);
+               if ((pAC->Rlmt.Port[PortNumber].Net->CheckingState &
+                       SK_RLMT_RCS_REPORT_SEG) != 0) {
+                       SkRlmtCheckSeg(pAC, IoC, pAC->Rlmt.Port[PortNumber].Net->NetNumber);
+               }
+       }
+       else {
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_RX,
+                       ("SkRlmtPacketReceive: Unknown Packet Type.\n"))
+
+               /* Unknown packet. */
+               SkDrvFreeRlmtMbuf(pAC, IoC, pMb);
+       }
+       return;
+}      /* SkRlmtPacketReceive */
+
+
+/******************************************************************************
+ *
+ *     SkRlmtCheckPort - check if a port works
+ *
+ * Description:
+ *     This routine checks if a port whose link is up received something
+ *     and if it seems to transmit successfully.
+ *
+ *     # PortState: PsInit, PsLinkDown, PsDown, PsGoingUp, PsUp
+ *     # PortCheckingState (Bitfield): ChkTx, ChkRx, ChkSeg
+ *     # RlmtCheckingState (Bitfield): ChkSeg, StartChkSeg, ReportSeg
+ *
+ *     if (Rx - RxBpdu == 0) { # No rx.
+ *             if (state == PsUp) {
+ *                     PortCheckingState |= ChkRx
+ *             }
+ *             if (ModeCheckSeg && (Timeout ==
+ *                     TO_SHORTEN(RLMT_DEFAULT_TIMEOUT))) {
+ *                     RlmtCheckingState |= ChkSeg)
+ *                     PortCheckingState |= ChkSeg
+ *             }
+ *             NewTimeout = TO_SHORTEN(Timeout)
+ *             if (NewTimeout < RLMT_MIN_TIMEOUT) {
+ *                     NewTimeout = RLMT_MIN_TIMEOUT
+ *                     PortState = PsDown
+ *                     ...
+ *             }
+ *     }
+ *     else {  # something was received
+ *             # Set counter to 0 at LinkDown?
+ *             #   No - rx may be reported after LinkDown ???
+ *             PortCheckingState &= ~ChkRx
+ *             NewTimeout = RLMT_DEFAULT_TIMEOUT
+ *             if (RxAck == 0) {
+ *                     possible reasons:
+ *                     is my tx line bad? --
+ *                             send RLMT multicast and report
+ *                             back internally? (only possible
+ *                             between ports on same adapter)
+ *             }
+ *             if (RxChk == 0) {
+ *                     possible reasons:
+ *                     - tx line of port set to check me
+ *                       maybe bad
+ *                     - no other port/adapter available or set
+ *                       to check me
+ *                     - adapter checking me has a longer
+ *                       timeout
+ *                     ??? anything that can be done here?
+ *             }
+ *     }
+ *
+ * Context:
+ *     runtime, pageable?
+ *
+ * Returns:
+ *     New timeout value.
+ */
+RLMT_STATIC SK_U32     SkRlmtCheckPort(
+SK_AC  *pAC,           /* Adapter Context */
+SK_IOC IoC,            /* I/O Context */
+SK_U32 PortNumber)     /* Port to check */
+{
+       unsigned                i;
+       SK_U32                  NewTimeout;
+       SK_RLMT_PORT    *pRPort;
+       SK_EVPARA               Para;
+
+       pRPort = &pAC->Rlmt.Port[PortNumber];
+
+       if ((pRPort->PacketsPerTimeSlot - pRPort->BpduPacketsPerTimeSlot) == 0) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("SkRlmtCheckPort %d: No (%d) receives in last time slot.\n",
+                               PortNumber, pRPort->PacketsPerTimeSlot))
+
+               /*
+                * Check segmentation if there was no receive at least twice
+                * in a row (PortNoRx is already set) and the segmentation
+                * check is not currently running.
+                */
+
+               if (pRPort->PortNoRx && (pAC->Rlmt.Port[PortNumber].Net->LinksUp > 1) &&
+                       (pAC->Rlmt.Port[PortNumber].Net->RlmtMode & SK_RLMT_CHECK_SEG) &&
+                       !(pAC->Rlmt.Port[PortNumber].Net->CheckingState & SK_RLMT_RCS_SEG)) {
+                       pAC->Rlmt.Port[PortNumber].Net->CheckingState |=
+                               SK_RLMT_RCS_START_SEG | SK_RLMT_RCS_SEND_SEG;
+               }
+
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("SkRlmtCheckPort: PortsSuspect %d, PcsRx %d.\n",
+                               pRPort->PortsSuspect, pRPort->CheckingState & SK_RLMT_PCS_RX))
+
+               if (pRPort->PortState != SK_RLMT_PS_DOWN) {
+                       NewTimeout = TO_SHORTEN(pAC->Rlmt.Port[PortNumber].Net->TimeoutValue);
+                       if (NewTimeout < SK_RLMT_MIN_TO_VAL) {
+                               NewTimeout = SK_RLMT_MIN_TO_VAL;
+                       }
+
+                       if (!(pRPort->CheckingState & SK_RLMT_PCS_RX)) {
+                               Para.Para32[0] = PortNumber;
+                               pRPort->CheckingState |= SK_RLMT_PCS_RX;
+
+                               /*
+                                * What shall we do if the port checked by this one receives
+                                * our request frames?  What's bad - our rx line or his tx line?
+                                */
+                               Para.Para32[1] = (SK_U32)-1;
+                               SkTimerStart(pAC, IoC, &pRPort->DownRxTimer,
+                                       SK_RLMT_PORTDOWN_TIM_VAL, SKGE_RLMT,
+                                       SK_RLMT_PORTDOWN_RX_TIM, Para);
+
+                               for (i = 0; i < pRPort->PortsChecked; i++) {
+                                       if (pRPort->PortCheck[i].SuspectTx) {
+                                               continue;
+                                       }
+                                       pRPort->PortCheck[i].SuspectTx = SK_TRUE;
+                                       pRPort->PortsSuspect++;
+                                       if ((Para.pParaPtr =
+                                               SkRlmtBuildPacket(pAC, IoC, PortNumber, SK_PACKET_CHECK_TX,
+                                                       &pAC->Addr.Port[PortNumber].CurrentMacAddress,
+                                                       &pRPort->PortCheck[i].CheckAddr)) != NULL) {
+                                               SkEventQueue(pAC, SKGE_DRV, SK_DRV_RLMT_SEND, Para);
+                                       }
+                               }
+                       }
+               }
+               else {  /* PortDown -- or all partners suspect. */
+                       NewTimeout = SK_RLMT_DEF_TO_VAL;
+               }
+               pRPort->PortNoRx = SK_TRUE;
+       }
+       else {  /* A non-BPDU packet was received. */
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("SkRlmtCheckPort %d: %d (%d) receives in last time slot.\n",
+                               PortNumber,
+                               pRPort->PacketsPerTimeSlot - pRPort->BpduPacketsPerTimeSlot,
+                               pRPort->PacketsPerTimeSlot))
+
+               SkRlmtPortReceives(pAC, IoC, PortNumber);
+               if (pAC->Rlmt.CheckSwitch) {
+                       SkRlmtCheckSwitch(pAC, IoC, pRPort->Net->NetNumber);
+               }
+
+               NewTimeout = SK_RLMT_DEF_TO_VAL;
+       }
+
+       return (NewTimeout);
+}      /* SkRlmtCheckPort */
+
+
+/******************************************************************************
+ *
+ *     SkRlmtSelectBcRx - select new active port, criteria 1 (CLP)
+ *
+ * Description:
+ *     This routine selects the port that received a broadcast frame
+ *     substantially later than all other ports.
+ *
+ * Context:
+ *     runtime, pageable?
+ *
+ * Returns:
+ *     SK_BOOL
+ */
+RLMT_STATIC SK_BOOL    SkRlmtSelectBcRx(
+SK_AC  *pAC,           /* Adapter Context */
+SK_IOC IoC,            /* I/O Context */
+SK_U32 Active,         /* Active port */
+SK_U32 PrefPort,       /* Preferred port */
+SK_U32 *pSelect)       /* New active port */
+{
+       SK_U64          BcTimeStamp;
+       SK_U32          i;
+       SK_BOOL         PortFound;
+
+       BcTimeStamp = 0;        /* Not totally necessary, but feeling better. */
+       PortFound = SK_FALSE;
+
+       /* Select port with the latest TimeStamp. */
+       for (i = 0; i < (SK_U32)pAC->GIni.GIMacsFound; i++) {
+
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("TimeStamp Port %d (Down: %d, NoRx: %d): %08x %08x.\n",
+                               i,
+                               pAC->Rlmt.Port[i].PortDown, pAC->Rlmt.Port[i].PortNoRx,
+                               *((SK_U32*)(&pAC->Rlmt.Port[i].BcTimeStamp) + OFFS_HI32),
+                               *((SK_U32*)(&pAC->Rlmt.Port[i].BcTimeStamp) + OFFS_LO32)))
+
+               if (!pAC->Rlmt.Port[i].PortDown && !pAC->Rlmt.Port[i].PortNoRx) {
+                       if (!PortFound || pAC->Rlmt.Port[i].BcTimeStamp > BcTimeStamp) {
+                               BcTimeStamp = pAC->Rlmt.Port[i].BcTimeStamp;
+                               *pSelect = i;
+                               PortFound = SK_TRUE;
+                       }
+               }
+       }
+
+       if (PortFound) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("Port %d received the last broadcast.\n", *pSelect))
+
+               /* Look if another port's time stamp is similar. */
+               for (i = 0; i < (SK_U32)pAC->GIni.GIMacsFound; i++) {
+                       if (i == *pSelect) {
+                               continue;
+                       }
+                       if (!pAC->Rlmt.Port[i].PortDown && !pAC->Rlmt.Port[i].PortNoRx &&
+                               (pAC->Rlmt.Port[i].BcTimeStamp >
+                                BcTimeStamp - SK_RLMT_BC_DELTA ||
+                               pAC->Rlmt.Port[i].BcTimeStamp +
+                                SK_RLMT_BC_DELTA > BcTimeStamp)) {
+                               PortFound = SK_FALSE;
+
+                               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                                       ("Port %d received a broadcast at a similar time.\n", i))
+                               break;
+                       }
+               }
+       }
+
+#ifdef DEBUG
+       if (PortFound) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("SK_RLMT_SELECT_BCRX found Port %d receiving the substantially "
+                        "latest broadcast (%u).\n",
+                               *pSelect,
+                               BcTimeStamp - pAC->Rlmt.Port[1 - *pSelect].BcTimeStamp))
+       }
+#endif /* DEBUG */
+
+       return (PortFound);
+}      /* SkRlmtSelectBcRx */
+
+
+/******************************************************************************
+ *
+ *     SkRlmtSelectNotSuspect - select new active port, criteria 2 (CLP)
+ *
+ * Description:
+ *     This routine selects a good port (it is PortUp && !SuspectRx).
+ *
+ * Context:
+ *     runtime, pageable?
+ *
+ * Returns:
+ *     SK_BOOL
+ */
+RLMT_STATIC SK_BOOL    SkRlmtSelectNotSuspect(
+SK_AC  *pAC,           /* Adapter Context */
+SK_IOC IoC,            /* I/O Context */
+SK_U32 Active,         /* Active port */
+SK_U32 PrefPort,       /* Preferred port */
+SK_U32 *pSelect)       /* New active port */
+{
+       SK_U32          i;
+       SK_BOOL         PortFound;
+
+       PortFound = SK_FALSE;
+
+       /* Select first port that is PortUp && !SuspectRx. */
+       for (i = 0; i < (SK_U32)pAC->GIni.GIMacsFound; i++) {
+               if (!pAC->Rlmt.Port[i].PortDown &&
+                       !(pAC->Rlmt.Port[i].CheckingState & SK_RLMT_PCS_RX)) {
+                       *pSelect = i;
+                       if (!pAC->Rlmt.Port[Active].PortDown &&
+                               !(pAC->Rlmt.Port[Active].CheckingState & SK_RLMT_PCS_RX)) {
+                               *pSelect = Active;
+                       }
+                       if (!pAC->Rlmt.Port[PrefPort].PortDown &&
+                               !(pAC->Rlmt.Port[PrefPort].CheckingState & SK_RLMT_PCS_RX)) {
+                               *pSelect = PrefPort;
+                       }
+                       PortFound = SK_TRUE;
+                       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                               ("SK_RLMT_SELECT_NOTSUSPECT found Port %d up and not check RX.\n",
+                                       *pSelect))
+                       break;
+               }
+       }
+       return (PortFound);
+}      /* SkRlmtSelectNotSuspect */
+
+
+/******************************************************************************
+ *
+ *     SkRlmtSelectUp - select new active port, criteria 3, 4 (CLP)
+ *
+ * Description:
+ *     This routine selects a port that is up.
+ *
+ * Context:
+ *     runtime, pageable?
+ *
+ * Returns:
+ *     SK_BOOL
+ */
+RLMT_STATIC SK_BOOL    SkRlmtSelectUp(
+SK_AC  *pAC,                   /* Adapter Context */
+SK_IOC IoC,                    /* I/O Context */
+SK_U32 Active,                 /* Active port */
+SK_U32 PrefPort,               /* Preferred port */
+SK_U32 *pSelect,               /* New active port */
+SK_BOOL        AutoNegDone)    /* Successfully auto-negotiated? */
+{
+       SK_U32          i;
+       SK_BOOL         PortFound;
+
+       PortFound = SK_FALSE;
+
+       /* Select first port that is PortUp. */
+       for (i = 0; i < (SK_U32)pAC->GIni.GIMacsFound; i++) {
+               if (pAC->Rlmt.Port[i].PortState == SK_RLMT_PS_UP &&
+                       pAC->GIni.GP[i].PAutoNegFail != AutoNegDone) {
+                       *pSelect = i;
+                       if (pAC->Rlmt.Port[Active].PortState == SK_RLMT_PS_UP &&
+                               pAC->GIni.GP[Active].PAutoNegFail != AutoNegDone) {
+                               *pSelect = Active;
+                       }
+                       if (pAC->Rlmt.Port[PrefPort].PortState == SK_RLMT_PS_UP &&
+                               pAC->GIni.GP[PrefPort].PAutoNegFail != AutoNegDone) {
+                               *pSelect = PrefPort;
+                       }
+                       PortFound = SK_TRUE;
+                       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                               ("SK_RLMT_SELECT_UP found Port %d up.\n", *pSelect))
+                       break;
+               }
+       }
+       return (PortFound);
+}      /* SkRlmtSelectUp */
+
+
+/******************************************************************************
+ *
+ *     SkRlmtSelectGoingUp - select new active port, criteria 5, 6 (CLP)
+ *
+ * Description:
+ *     This routine selects the port that is going up for the longest time.
+ *
+ * Context:
+ *     runtime, pageable?
+ *
+ * Returns:
+ *     SK_BOOL
+ */
+RLMT_STATIC SK_BOOL    SkRlmtSelectGoingUp(
+SK_AC  *pAC,                   /* Adapter Context */
+SK_IOC IoC,                    /* I/O Context */
+SK_U32 Active,                 /* Active port */
+SK_U32 PrefPort,               /* Preferred port */
+SK_U32 *pSelect,               /* New active port */
+SK_BOOL        AutoNegDone)    /* Successfully auto-negotiated? */
+{
+       SK_U64          GuTimeStamp;
+       SK_U32          i;
+       SK_BOOL         PortFound;
+
+       GuTimeStamp = 0;
+       PortFound = SK_FALSE;
+
+       /* Select port that is PortGoingUp for the longest time. */
+       for (i = 0; i < (SK_U32)pAC->GIni.GIMacsFound; i++) {
+               if (pAC->Rlmt.Port[i].PortState == SK_RLMT_PS_GOING_UP &&
+                       pAC->GIni.GP[i].PAutoNegFail != AutoNegDone) {
+                       GuTimeStamp = pAC->Rlmt.Port[i].GuTimeStamp;
+                       *pSelect = i;
+                       PortFound = SK_TRUE;
+                       break;
+               }
+       }
+
+       if (!PortFound) {
+               return (SK_FALSE);
+       }
+
+       for (i = *pSelect + 1; i < (SK_U32)pAC->GIni.GIMacsFound; i++) {
+               if (pAC->Rlmt.Port[i].PortState == SK_RLMT_PS_GOING_UP &&
+                       pAC->Rlmt.Port[i].GuTimeStamp < GuTimeStamp &&
+                       pAC->GIni.GP[i].PAutoNegFail != AutoNegDone) {
+                       GuTimeStamp = pAC->Rlmt.Port[i].GuTimeStamp;
+                       *pSelect = i;
+               }
+       }
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+               ("SK_RLMT_SELECT_GOINGUP found Port %d going up.\n", *pSelect))
+       return (SK_TRUE);
+}      /* SkRlmtSelectGoingUp */
+
+
+/******************************************************************************
+ *
+ *     SkRlmtSelectDown - select new active port, criteria 7, 8 (CLP)
+ *
+ * Description:
+ *     This routine selects a port that is down.
+ *
+ * Context:
+ *     runtime, pageable?
+ *
+ * Returns:
+ *     SK_BOOL
+ */
+RLMT_STATIC SK_BOOL    SkRlmtSelectDown(
+SK_AC  *pAC,                   /* Adapter Context */
+SK_IOC IoC,                    /* I/O Context */
+SK_U32 Active,                 /* Active port */
+SK_U32 PrefPort,               /* Preferred port */
+SK_U32 *pSelect,               /* New active port */
+SK_BOOL        AutoNegDone)    /* Successfully auto-negotiated? */
+{
+       SK_U32          i;
+       SK_BOOL         PortFound;
+
+       PortFound = SK_FALSE;
+
+       /* Select first port that is PortDown. */
+       for (i = 0; i < (SK_U32)pAC->GIni.GIMacsFound; i++) {
+               if (pAC->Rlmt.Port[i].PortState == SK_RLMT_PS_DOWN &&
+                       pAC->GIni.GP[i].PAutoNegFail != AutoNegDone) {
+                       *pSelect = i;
+                       if (pAC->Rlmt.Port[Active].PortState == SK_RLMT_PS_DOWN &&
+                               pAC->GIni.GP[Active].PAutoNegFail != AutoNegDone) {
+                               *pSelect = Active;
+                       }
+                       if (pAC->Rlmt.Port[PrefPort].PortState == SK_RLMT_PS_DOWN &&
+                               pAC->GIni.GP[PrefPort].PAutoNegFail != AutoNegDone) {
+                               *pSelect = PrefPort;
+                       }
+                       PortFound = SK_TRUE;
+                       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                               ("SK_RLMT_SELECT_DOWN found Port %d down.\n", *pSelect))
+                       break;
+               }
+       }
+       return (PortFound);
+}      /* SkRlmtSelectDown */
+
+
+/******************************************************************************
+ *
+ *     SkRlmtCheckSwitch - select new active port and switch to it
+ *
+ * Description:
+ *     This routine decides which port should be the active one and queues
+ *     port switching if necessary.
+ *
+ * Context:
+ *     runtime, pageable?
+ *
+ * Returns:
+ *     Nothing.
+ */
+RLMT_STATIC void       SkRlmtCheckSwitch(
+SK_AC  *pAC,   /* Adapter Context */
+SK_IOC IoC,    /* I/O Context */
+SK_U32 NetIdx) /* Net index */
+{
+       SK_EVPARA       Para;
+       SK_U32          Active;
+       SK_U32          PrefPort;
+       SK_U32          i;
+       SK_BOOL         PortFound;
+
+       Active = pAC->Rlmt.Net[NetIdx].ActivePort;      /* Index of active port. */
+       PrefPort = pAC->Rlmt.Net[NetIdx].PrefPort;      /* Index of preferred port. */
+       PortFound = SK_FALSE;
+       pAC->Rlmt.CheckSwitch = SK_FALSE;
+
+#if 0  /* RW 2001/10/18 - active port becomes always prefered one */
+       if (pAC->Rlmt.Net[NetIdx].Preference == 0xFFFFFFFF) { /* Automatic */
+               /* disable auto-fail back */
+               PrefPort = Active;
+       }
+#endif
+
+       if (pAC->Rlmt.Net[NetIdx].LinksUp == 0) {
+               /* Last link went down - shut down the net. */
+               pAC->Rlmt.Net[NetIdx].RlmtState = SK_RLMT_RS_NET_DOWN;
+               Para.Para32[0] = SK_RLMT_NET_DOWN_TEMP;
+               Para.Para32[1] = NetIdx;
+               SkEventQueue(pAC, SKGE_DRV, SK_DRV_NET_DOWN, Para);
+
+               Para.Para32[0] = pAC->Rlmt.Net[NetIdx].
+                       Port[pAC->Rlmt.Net[NetIdx].ActivePort]->PortNumber;
+               Para.Para32[1] = NetIdx;
+               SkEventQueue(pAC, SKGE_PNMI, SK_PNMI_EVT_RLMT_ACTIVE_DOWN, Para);
+               return;
+       }       /* pAC->Rlmt.LinksUp == 0 */
+       else if (pAC->Rlmt.Net[NetIdx].LinksUp == 1 &&
+               pAC->Rlmt.Net[NetIdx].RlmtState == SK_RLMT_RS_NET_DOWN) {
+               /* First link came up - get the net up. */
+               pAC->Rlmt.Net[NetIdx].RlmtState = SK_RLMT_RS_NET_UP;
+
+               /*
+                * If pAC->Rlmt.ActivePort != Para.Para32[0],
+                * the DRV switches to the port that came up.
+                */
+               for (i = 0; i < pAC->Rlmt.Net[NetIdx].NumPorts; i++) {
+                       if (!pAC->Rlmt.Net[NetIdx].Port[i]->LinkDown) {
+                               if (!pAC->Rlmt.Net[NetIdx].Port[Active]->LinkDown) {
+                                       i = Active;
+                               }
+                               if (!pAC->Rlmt.Net[NetIdx].Port[PrefPort]->LinkDown) {
+                                       i = PrefPort;
+                               }
+                               PortFound = SK_TRUE;
+                               break;
+                       }
+               }
+
+               if (PortFound) {
+                       Para.Para32[0] = pAC->Rlmt.Net[NetIdx].Port[i]->PortNumber;
+                       Para.Para32[1] = NetIdx;
+                       SkEventQueue(pAC, SKGE_PNMI, SK_PNMI_EVT_RLMT_ACTIVE_UP, Para);
+
+                       pAC->Rlmt.Net[NetIdx].ActivePort = i;
+                       Para.Para32[0] = pAC->Rlmt.Net[NetIdx].Port[i]->PortNumber;
+                       Para.Para32[1] = NetIdx;
+                       SkEventQueue(pAC, SKGE_DRV, SK_DRV_NET_UP, Para);
+
+                       if ((pAC->Rlmt.Net[NetIdx].RlmtMode & SK_RLMT_TRANSPARENT) == 0 &&
+                               (Para.pParaPtr = SkRlmtBuildPacket(pAC, IoC,
+                               pAC->Rlmt.Net[NetIdx].Port[i]->PortNumber,
+                               SK_PACKET_ANNOUNCE, &pAC->Addr.Net[NetIdx].
+                               CurrentMacAddress, &SkRlmtMcAddr)) != NULL) {
+                               /*
+                                * Send announce packet to RLMT multicast address to force
+                                * switches to learn the new location of the logical MAC address.
+                                */
+                               SkEventQueue(pAC, SKGE_DRV, SK_DRV_RLMT_SEND, Para);
+                       }
+               }
+               else {
+                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_RLMT_E007, SKERR_RLMT_E007_MSG);
+               }
+
+               return;
+       }       /* LinksUp == 1 && RlmtState == SK_RLMT_RS_NET_DOWN */
+       else {  /* Cannot be reached in dual-net mode. */
+               Para.Para32[0] = Active;
+
+               /*
+                * Preselection:
+                *      If RLMT Mode != CheckLinkState
+                *              select port that received a broadcast frame substantially later
+                *              than all other ports
+                *      else select first port that is not SuspectRx
+                *      else select first port that is PortUp
+                *      else select port that is PortGoingUp for the longest time
+                *      else select first port that is PortDown
+                *      else stop.
+                *
+                * For the preselected port:
+                *      If ActivePort is equal in quality, select ActivePort.
+                *
+                *      If PrefPort is equal in quality, select PrefPort.
+                *
+                *      If ActivePort != SelectedPort,
+                *              If old ActivePort is LinkDown,
+                *                      SwitchHard
+                *              else
+                *                      SwitchSoft
+                */
+               /* check of ChgBcPrio flag added */
+               if ((pAC->Rlmt.Net[0].RlmtMode != SK_RLMT_MODE_CLS) &&
+                       (!pAC->Rlmt.Net[0].ChgBcPrio)) {
+
+                       if (!PortFound) {
+                               PortFound = SkRlmtSelectBcRx(
+                                       pAC, IoC, Active, PrefPort, &Para.Para32[1]);
+                       }
+
+                       if (!PortFound) {
+                               PortFound = SkRlmtSelectNotSuspect(
+                                       pAC, IoC, Active, PrefPort, &Para.Para32[1]);
+                       }
+               }       /* pAC->Rlmt.RlmtMode != SK_RLMT_MODE_CLS */
+
+               /* with changed priority for last broadcast received */
+               if ((pAC->Rlmt.Net[0].RlmtMode != SK_RLMT_MODE_CLS) &&
+                       (pAC->Rlmt.Net[0].ChgBcPrio)) {
+                       if (!PortFound) {
+                               PortFound = SkRlmtSelectNotSuspect(
+                                       pAC, IoC, Active, PrefPort, &Para.Para32[1]);
+                       }
+
+                       if (!PortFound) {
+                               PortFound = SkRlmtSelectBcRx(
+                                       pAC, IoC, Active, PrefPort, &Para.Para32[1]);
+                       }
+               }       /* pAC->Rlmt.RlmtMode != SK_RLMT_MODE_CLS */
+
+               if (!PortFound) {
+                       PortFound = SkRlmtSelectUp(
+                               pAC, IoC, Active, PrefPort, &Para.Para32[1], AUTONEG_SUCCESS);
+               }
+
+               if (!PortFound) {
+                       PortFound = SkRlmtSelectUp(
+                               pAC, IoC, Active, PrefPort, &Para.Para32[1], AUTONEG_FAILED);
+               }
+
+               if (!PortFound) {
+                       PortFound = SkRlmtSelectGoingUp(
+                               pAC, IoC, Active, PrefPort, &Para.Para32[1], AUTONEG_SUCCESS);
+               }
+
+               if (!PortFound) {
+                       PortFound = SkRlmtSelectGoingUp(
+                               pAC, IoC, Active, PrefPort, &Para.Para32[1], AUTONEG_FAILED);
+               }
+
+               if (pAC->Rlmt.Net[0].RlmtMode != SK_RLMT_MODE_CLS) {
+                       if (!PortFound) {
+                               PortFound = SkRlmtSelectDown(pAC, IoC,
+                                       Active, PrefPort, &Para.Para32[1], AUTONEG_SUCCESS);
+                       }
+
+                       if (!PortFound) {
+                               PortFound = SkRlmtSelectDown(pAC, IoC,
+                                       Active, PrefPort, &Para.Para32[1], AUTONEG_FAILED);
+                       }
+               }       /* pAC->Rlmt.RlmtMode != SK_RLMT_MODE_CLS */
+
+               if (PortFound) {
+
+                       if (Para.Para32[1] != Active) {
+                               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                                       ("Active: %d, Para1: %d.\n", Active, Para.Para32[1]))
+                               pAC->Rlmt.Net[NetIdx].ActivePort = Para.Para32[1];
+                               Para.Para32[0] = pAC->Rlmt.Net[NetIdx].
+                                       Port[Para.Para32[0]]->PortNumber;
+                               Para.Para32[1] = pAC->Rlmt.Net[NetIdx].
+                                       Port[Para.Para32[1]]->PortNumber;
+                               SK_HWAC_LINK_LED(pAC, IoC, Para.Para32[1], SK_LED_ACTIVE);
+                               if (pAC->Rlmt.Port[Active].LinkDown) {
+                                       SkEventQueue(pAC, SKGE_DRV, SK_DRV_SWITCH_HARD, Para);
+                               }
+                               else {
+                                       SK_HWAC_LINK_LED(pAC, IoC, Para.Para32[0], SK_LED_STANDBY);
+                                       SkEventQueue(pAC, SKGE_DRV, SK_DRV_SWITCH_SOFT, Para);
+                               }
+                               Para.Para32[1] = NetIdx;
+                               Para.Para32[0] =
+                                       pAC->Rlmt.Net[NetIdx].Port[Para.Para32[0]]->PortNumber;
+                               SkEventQueue(pAC, SKGE_PNMI, SK_PNMI_EVT_RLMT_ACTIVE_DOWN, Para);
+                               Para.Para32[0] = pAC->Rlmt.Net[NetIdx].
+                                       Port[pAC->Rlmt.Net[NetIdx].ActivePort]->PortNumber;
+                               SkEventQueue(pAC, SKGE_PNMI, SK_PNMI_EVT_RLMT_ACTIVE_UP, Para);
+                               if ((pAC->Rlmt.Net[NetIdx].RlmtMode & SK_RLMT_TRANSPARENT) == 0 &&
+                                       (Para.pParaPtr = SkRlmtBuildPacket(pAC, IoC, Para.Para32[0],
+                                       SK_PACKET_ANNOUNCE, &pAC->Addr.Net[NetIdx].CurrentMacAddress,
+                                       &SkRlmtMcAddr)) != NULL) {
+                                       /*
+                                        * Send announce packet to RLMT multicast address to force
+                                        * switches to learn the new location of the logical
+                                        * MAC address.
+                                        */
+                                       SkEventQueue(pAC, SKGE_DRV, SK_DRV_RLMT_SEND, Para);
+                               }       /* (Para.pParaPtr = SkRlmtBuildPacket(...)) != NULL */
+                       }       /* Para.Para32[1] != Active */
+               }       /* PortFound */
+               else {
+                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_RLMT_E004, SKERR_RLMT_E004_MSG);
+               }
+       }       /* LinksUp > 1 || LinksUp == 1 && RlmtState != SK_RLMT_RS_NET_DOWN */
+       return;
+}      /* SkRlmtCheckSwitch */
+
+
+/******************************************************************************
+ *
+ *     SkRlmtCheckSeg - Report if segmentation is detected
+ *
+ * Description:
+ *     This routine checks if the ports see different root bridges and reports
+ *     segmentation in such a case.
+ *
+ * Context:
+ *     runtime, pageable?
+ *
+ * Returns:
+ *     Nothing.
+ */
+RLMT_STATIC void       SkRlmtCheckSeg(
+SK_AC  *pAC,   /* Adapter Context */
+SK_IOC IoC,    /* I/O Context */
+SK_U32 NetIdx) /* Net number */
+{
+       SK_EVPARA       Para;
+       SK_RLMT_NET     *pNet;
+       SK_U32          i, j;
+       SK_BOOL         Equal;
+
+       pNet = &pAC->Rlmt.Net[NetIdx];
+       pNet->RootIdSet = SK_FALSE;
+       Equal = SK_TRUE;
+
+       for (i = 0; i < pNet->NumPorts; i++) {
+               if (pNet->Port[i]->LinkDown || !pNet->Port[i]->RootIdSet) {
+                       continue;
+               }
+
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_DUMP,
+                       ("Root ID %d: %02x %02x %02x %02x %02x %02x %02x %02x.\n", i,
+                               pNet->Port[i]->Root.Id[0], pNet->Port[i]->Root.Id[1],
+                               pNet->Port[i]->Root.Id[2], pNet->Port[i]->Root.Id[3],
+                               pNet->Port[i]->Root.Id[4], pNet->Port[i]->Root.Id[5],
+                               pNet->Port[i]->Root.Id[6], pNet->Port[i]->Root.Id[7]))
+
+               if (!pNet->RootIdSet) {
+                       pNet->Root = pNet->Port[i]->Root;
+                       pNet->RootIdSet = SK_TRUE;
+                       continue;
+               }
+
+               for (j = 0; j < 8; j ++) {
+                       Equal &= pNet->Port[i]->Root.Id[j] == pNet->Root.Id[j];
+                       if (!Equal) {
+                               break;
+                       }
+               }
+
+               if (!Equal) {
+                       SK_ERR_LOG(pAC, SK_ERRCL_COMM, SKERR_RLMT_E005, SKERR_RLMT_E005_MSG);
+                       Para.Para32[0] = NetIdx;
+                       Para.Para32[1] = (SK_U32)-1;
+                       SkEventQueue(pAC, SKGE_PNMI, SK_PNMI_EVT_RLMT_SEGMENTATION, Para);
+
+                       pNet->CheckingState &= ~SK_RLMT_RCS_REPORT_SEG;
+
+                       /* 2000-03-06 RA: New. */
+                       Para.Para32[0] = NetIdx;
+                       Para.Para32[1] = (SK_U32)-1;
+                       SkTimerStart(pAC, IoC, &pNet->SegTimer, SK_RLMT_SEG_TO_VAL,
+                               SKGE_RLMT, SK_RLMT_SEG_TIM, Para);
+                       break;
+               }
+       }       /* for (i = 0; i < pNet->NumPorts; i++) */
+
+       /* 2000-03-06 RA: Moved here. */
+       /* Segmentation check not running anymore. */
+       pNet->CheckingState &= ~SK_RLMT_RCS_SEG;
+
+}      /* SkRlmtCheckSeg */
+
+
+/******************************************************************************
+ *
+ *     SkRlmtPortStart - initialize port variables and start port
+ *
+ * Description:
+ *     This routine initializes a port's variables and issues a PORT_START
+ *     to the HWAC module.  This handles retries if the start fails or the
+ *     link eventually goes down.
+ *
+ * Context:
+ *     runtime, pageable?
+ *
+ * Returns:
+ *     Nothing
+ */
+RLMT_STATIC void       SkRlmtPortStart(
+SK_AC  *pAC,           /* Adapter Context */
+SK_IOC IoC,            /* I/O Context */
+SK_U32 PortNumber)     /* Port number */
+{
+       SK_EVPARA       Para;
+
+       pAC->Rlmt.Port[PortNumber].PortState = SK_RLMT_PS_LINK_DOWN;
+       pAC->Rlmt.Port[PortNumber].PortStarted = SK_TRUE;
+       pAC->Rlmt.Port[PortNumber].LinkDown = SK_TRUE;
+       pAC->Rlmt.Port[PortNumber].PortDown = SK_TRUE;
+       pAC->Rlmt.Port[PortNumber].CheckingState = 0;
+       pAC->Rlmt.Port[PortNumber].RootIdSet = SK_FALSE;
+       Para.Para32[0] = PortNumber;
+       Para.Para32[1] = (SK_U32)-1;
+       SkEventQueue(pAC, SKGE_HWAC, SK_HWEV_PORT_START, Para);
+}      /* SkRlmtPortStart */
+
+
+/******************************************************************************
+ *
+ *     SkRlmtEvtPortStartTim - PORT_START_TIM
+ *
+ * Description:
+ *     This routine handles PORT_START_TIM events.
+ *
+ * Context:
+ *     runtime, pageable?
+ *     may be called after SK_INIT_IO
+ *
+ * Returns:
+ *     Nothing
+ */
+RLMT_STATIC void       SkRlmtEvtPortStartTim(
+SK_AC          *pAC,   /* Adapter Context */
+SK_IOC         IoC,    /* I/O Context */
+SK_EVPARA      Para)   /* SK_U32 PortNumber; SK_U32 -1 */
+{
+       SK_U32                  i;
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+               ("SK_RLMT_PORTSTART_TIMEOUT Port %d Event BEGIN.\n", Para.Para32[0]))
+
+               if (Para.Para32[1] != (SK_U32)-1) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("Bad Parameter.\n"))
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("SK_RLMT_PORTSTART_TIMEOUT Event EMPTY.\n"))
+               return;
+       }
+
+       /*
+        * Used to start non-preferred ports if the preferred one
+        * does not come up.
+        * This timeout needs only be set when starting the first
+        * (preferred) port.
+        */
+       if (pAC->Rlmt.Port[Para.Para32[0]].LinkDown) {
+               /* PORT_START failed. */
+               for (i = 0; i < pAC->Rlmt.Port[Para.Para32[0]].Net->NumPorts; i++) {
+                       if (!pAC->Rlmt.Port[Para.Para32[0]].Net->Port[i]->PortStarted) {
+                               SkRlmtPortStart(pAC, IoC,
+                                       pAC->Rlmt.Port[Para.Para32[0]].Net->Port[i]->PortNumber);
+                       }
+               }
+       }
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+               ("SK_RLMT_PORTSTART_TIMEOUT Event END.\n"))
+}      /* SkRlmtEvtPortStartTim */
+
+
+/******************************************************************************
+ *
+ *     SkRlmtEvtLinkUp - LINK_UP
+ *
+ * Description:
+ *     This routine handles LLINK_UP events.
+ *
+ * Context:
+ *     runtime, pageable?
+ *     may be called after SK_INIT_IO
+ *
+ * Returns:
+ *     Nothing
+ */
+RLMT_STATIC void       SkRlmtEvtLinkUp(
+SK_AC          *pAC,   /* Adapter Context */
+SK_IOC         IoC,    /* I/O Context */
+SK_EVPARA      Para)   /* SK_U32 PortNumber; SK_U32 Undefined */
+{
+       SK_U32                  i;
+       SK_RLMT_PORT    *pRPort;
+       SK_EVPARA               Para2;
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+               ("SK_RLMT_LINK_UP Port %d Event BEGIN.\n", Para.Para32[0]))
+
+       pRPort = &pAC->Rlmt.Port[Para.Para32[0]];
+       if (!pRPort->PortStarted) {
+               SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_RLMT_E008, SKERR_RLMT_E008_MSG);
+
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                               ("SK_RLMT_LINK_UP Event EMPTY.\n"))
+               return;
+       }
+
+       if (!pRPort->LinkDown) {
+               /* RA;:;: Any better solution? */
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("SK_RLMT_LINK_UP Event EMPTY.\n"))
+               return;
+       }
+
+       SkTimerStop(pAC, IoC, &pRPort->UpTimer);
+       SkTimerStop(pAC, IoC, &pRPort->DownRxTimer);
+       SkTimerStop(pAC, IoC, &pRPort->DownTxTimer);
+
+       /* Do something if timer already fired? */
+
+       pRPort->LinkDown = SK_FALSE;
+       pRPort->PortState = SK_RLMT_PS_GOING_UP;
+       pRPort->GuTimeStamp = SkOsGetTime(pAC);
+       pRPort->BcTimeStamp = 0;
+       pRPort->Net->LinksUp++;
+       if (pRPort->Net->LinksUp == 1) {
+               SK_HWAC_LINK_LED(pAC, IoC, Para.Para32[0], SK_LED_ACTIVE);
+       }
+       else {
+               SK_HWAC_LINK_LED(pAC, IoC, Para.Para32[0], SK_LED_STANDBY);
+       }
+
+       for (i = 0; i < pRPort->Net->NumPorts; i++) {
+               if (!pRPort->Net->Port[i]->PortStarted) {
+                       SkRlmtPortStart(pAC, IoC, pRPort->Net->Port[i]->PortNumber);
+               }
+       }
+
+       SkRlmtCheckSwitch(pAC, IoC, pRPort->Net->NetNumber);
+
+       if (pRPort->Net->LinksUp >= 2) {
+               if (pRPort->Net->RlmtMode & SK_RLMT_CHECK_LOC_LINK) {
+                       /* Build the check chain. */
+                       SkRlmtBuildCheckChain(pAC, pRPort->Net->NetNumber);
+               }
+       }
+
+       /* If the first link comes up, start the periodical RLMT timeout. */
+       if (pRPort->Net->NumPorts > 1 && pRPort->Net->LinksUp == 1 &&
+               (pRPort->Net->RlmtMode & SK_RLMT_CHECK_OTHERS) != 0) {
+               Para2.Para32[0] = pRPort->Net->NetNumber;
+               Para2.Para32[1] = (SK_U32)-1;
+               SkTimerStart(pAC, IoC, &pRPort->Net->LocTimer,
+                       pRPort->Net->TimeoutValue, SKGE_RLMT, SK_RLMT_TIM, Para2);
+       }
+
+       Para2 = Para;
+       Para2.Para32[1] = (SK_U32)-1;
+       SkTimerStart(pAC, IoC, &pRPort->UpTimer, SK_RLMT_PORTUP_TIM_VAL,
+               SKGE_RLMT, SK_RLMT_PORTUP_TIM, Para2);
+
+       /* Later: if (pAC->Rlmt.RlmtMode & SK_RLMT_CHECK_LOC_LINK) && */
+       if ((pRPort->Net->RlmtMode & SK_RLMT_TRANSPARENT) == 0 &&
+               (pRPort->Net->RlmtMode & SK_RLMT_CHECK_LINK) != 0 &&
+               (Para2.pParaPtr =
+                       SkRlmtBuildPacket(pAC, IoC, Para.Para32[0], SK_PACKET_ANNOUNCE,
+                       &pAC->Addr.Port[Para.Para32[0]].CurrentMacAddress, &SkRlmtMcAddr)
+               ) != NULL) {
+               /* Send "new" packet to RLMT multicast address. */
+               SkEventQueue(pAC, SKGE_DRV, SK_DRV_RLMT_SEND, Para2);
+       }
+
+       if (pRPort->Net->RlmtMode & SK_RLMT_CHECK_SEG) {
+               if ((Para2.pParaPtr =
+                       SkRlmtBuildSpanningTreePacket(pAC, IoC, Para.Para32[0])) != NULL) {
+                       pAC->Rlmt.Port[Para.Para32[0]].RootIdSet = SK_FALSE;
+                       pRPort->Net->CheckingState |=
+                               SK_RLMT_RCS_SEG | SK_RLMT_RCS_REPORT_SEG;
+
+                       SkEventQueue(pAC, SKGE_DRV, SK_DRV_RLMT_SEND, Para2);
+
+                       Para.Para32[1] = (SK_U32)-1;
+                       SkTimerStart(pAC, IoC, &pRPort->Net->SegTimer,
+                               SK_RLMT_SEG_TO_VAL, SKGE_RLMT, SK_RLMT_SEG_TIM, Para);
+               }
+       }
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+               ("SK_RLMT_LINK_UP Event END.\n"))
+}      /* SkRlmtEvtLinkUp */
+
+
+/******************************************************************************
+ *
+ *     SkRlmtEvtPortUpTim - PORT_UP_TIM
+ *
+ * Description:
+ *     This routine handles PORT_UP_TIM events.
+ *
+ * Context:
+ *     runtime, pageable?
+ *     may be called after SK_INIT_IO
+ *
+ * Returns:
+ *     Nothing
+ */
+RLMT_STATIC void       SkRlmtEvtPortUpTim(
+SK_AC          *pAC,   /* Adapter Context */
+SK_IOC         IoC,    /* I/O Context */
+SK_EVPARA      Para)   /* SK_U32 PortNumber; SK_U32 -1 */
+{
+       SK_RLMT_PORT    *pRPort;
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+               ("SK_RLMT_PORTUP_TIM Port %d Event BEGIN.\n", Para.Para32[0]))
+
+       if (Para.Para32[1] != (SK_U32)-1) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("Bad Parameter.\n"))
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("SK_RLMT_PORTUP_TIM Event EMPTY.\n"))
+               return;
+       }
+
+       pRPort = &pAC->Rlmt.Port[Para.Para32[0]];
+       if (pRPort->LinkDown || (pRPort->PortState == SK_RLMT_PS_UP)) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("SK_RLMT_PORTUP_TIM Port %d Event EMPTY.\n", Para.Para32[0]))
+               return;
+       }
+
+       pRPort->PortDown = SK_FALSE;
+       pRPort->PortState = SK_RLMT_PS_UP;
+       pRPort->Net->PortsUp++;
+       if (pRPort->Net->RlmtState != SK_RLMT_RS_INIT) {
+               if (pAC->Rlmt.NumNets <= 1) {
+                       SkRlmtCheckSwitch(pAC, IoC, pRPort->Net->NetNumber);
+               }
+               SkEventQueue(pAC, SKGE_PNMI, SK_PNMI_EVT_RLMT_PORT_UP, Para);
+       }
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+               ("SK_RLMT_PORTUP_TIM Event END.\n"))
+}      /* SkRlmtEvtPortUpTim */
+
+
+/******************************************************************************
+ *
+ *     SkRlmtEvtPortDownTim - PORT_DOWN_*
+ *
+ * Description:
+ *     This routine handles PORT_DOWN_* events.
+ *
+ * Context:
+ *     runtime, pageable?
+ *     may be called after SK_INIT_IO
+ *
+ * Returns:
+ *     Nothing
+ */
+RLMT_STATIC void       SkRlmtEvtPortDownX(
+SK_AC          *pAC,   /* Adapter Context */
+SK_IOC         IoC,    /* I/O Context */
+SK_U32         Event,  /* Event code */
+SK_EVPARA      Para)   /* SK_U32 PortNumber; SK_U32 -1 */
+{
+       SK_RLMT_PORT    *pRPort;
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+               ("SK_RLMT_PORTDOWN* Port %d Event (%d) BEGIN.\n",
+                       Para.Para32[0], Event))
+
+       if (Para.Para32[1] != (SK_U32)-1) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("Bad Parameter.\n"))
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("SK_RLMT_PORTDOWN* Event EMPTY.\n"))
+               return;
+       }
+
+       pRPort = &pAC->Rlmt.Port[Para.Para32[0]];
+       if (!pRPort->PortStarted || (Event == SK_RLMT_PORTDOWN_TX_TIM &&
+               !(pRPort->CheckingState & SK_RLMT_PCS_TX))) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("SK_RLMT_PORTDOWN* Event (%d) EMPTY.\n", Event))
+               return;
+       }
+
+       /* Stop port's timers. */
+       SkTimerStop(pAC, IoC, &pRPort->UpTimer);
+       SkTimerStop(pAC, IoC, &pRPort->DownRxTimer);
+       SkTimerStop(pAC, IoC, &pRPort->DownTxTimer);
+
+       if (pRPort->PortState != SK_RLMT_PS_LINK_DOWN) {
+               pRPort->PortState = SK_RLMT_PS_DOWN;
+       }
+
+       if (!pRPort->PortDown) {
+               pRPort->Net->PortsUp--;
+               pRPort->PortDown = SK_TRUE;
+               SkEventQueue(pAC, SKGE_PNMI, SK_PNMI_EVT_RLMT_PORT_DOWN, Para);
+       }
+
+       pRPort->PacketsPerTimeSlot = 0;
+       /* pRPort->DataPacketsPerTimeSlot = 0; */
+       pRPort->BpduPacketsPerTimeSlot = 0;
+       pRPort->BcTimeStamp = 0;
+
+       /*
+        * RA;:;: To be checked:
+        * - actions at RLMT_STOP: We should not switch anymore.
+        */
+       if (pRPort->Net->RlmtState != SK_RLMT_RS_INIT) {
+               if (Para.Para32[0] ==
+                       pRPort->Net->Port[pRPort->Net->ActivePort]->PortNumber) {
+                       /* Active Port went down. */
+                       SkRlmtCheckSwitch(pAC, IoC, pRPort->Net->NetNumber);
+               }
+       }
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+               ("SK_RLMT_PORTDOWN* Event (%d) END.\n", Event))
+}      /* SkRlmtEvtPortDownX */
+
+
+/******************************************************************************
+ *
+ *     SkRlmtEvtLinkDown - LINK_DOWN
+ *
+ * Description:
+ *     This routine handles LINK_DOWN events.
+ *
+ * Context:
+ *     runtime, pageable?
+ *     may be called after SK_INIT_IO
+ *
+ * Returns:
+ *     Nothing
+ */
+RLMT_STATIC void       SkRlmtEvtLinkDown(
+SK_AC          *pAC,   /* Adapter Context */
+SK_IOC         IoC,    /* I/O Context */
+SK_EVPARA      Para)   /* SK_U32 PortNumber; SK_U32 Undefined */
+{
+       SK_RLMT_PORT    *pRPort;
+
+       pRPort = &pAC->Rlmt.Port[Para.Para32[0]];
+       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+               ("SK_RLMT_LINK_DOWN Port %d Event BEGIN.\n", Para.Para32[0]))
+
+       if (!pAC->Rlmt.Port[Para.Para32[0]].LinkDown) {
+               pRPort->Net->LinksUp--;
+               pRPort->LinkDown = SK_TRUE;
+               pRPort->PortState = SK_RLMT_PS_LINK_DOWN;
+               SK_HWAC_LINK_LED(pAC, IoC, Para.Para32[0], SK_LED_OFF);
+
+               if ((pRPort->Net->RlmtMode & SK_RLMT_CHECK_LOC_LINK) != 0) {
+                       /* Build the check chain. */
+                       SkRlmtBuildCheckChain(pAC, pRPort->Net->NetNumber);
+               }
+
+               /* Ensure that port is marked down. */
+               Para.Para32[1] = -1;
+               (void)SkRlmtEvent(pAC, IoC, SK_RLMT_PORTDOWN, Para);
+       }
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+               ("SK_RLMT_LINK_DOWN Event END.\n"))
+}      /* SkRlmtEvtLinkDown */
+
+
+/******************************************************************************
+ *
+ *     SkRlmtEvtPortAddr - PORT_ADDR
+ *
+ * Description:
+ *     This routine handles PORT_ADDR events.
+ *
+ * Context:
+ *     runtime, pageable?
+ *     may be called after SK_INIT_IO
+ *
+ * Returns:
+ *     Nothing
+ */
+RLMT_STATIC void       SkRlmtEvtPortAddr(
+SK_AC          *pAC,   /* Adapter Context */
+SK_IOC         IoC,    /* I/O Context */
+SK_EVPARA      Para)   /* SK_U32 PortNumber; SK_U32 -1 */
+{
+       SK_U32                  i, j;
+       SK_RLMT_PORT    *pRPort;
+       SK_MAC_ADDR             *pOldMacAddr;
+       SK_MAC_ADDR             *pNewMacAddr;
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+               ("SK_RLMT_PORT_ADDR Port %d Event BEGIN.\n", Para.Para32[0]))
+
+       if (Para.Para32[1] != (SK_U32)-1) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("Bad Parameter.\n"))
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("SK_RLMT_PORT_ADDR Event EMPTY.\n"))
+               return;
+       }
+
+       /* Port's physical MAC address changed. */
+       pOldMacAddr = &pAC->Addr.Port[Para.Para32[0]].PreviousMacAddress;
+       pNewMacAddr = &pAC->Addr.Port[Para.Para32[0]].CurrentMacAddress;
+
+       /*
+        * NOTE: This is not scalable for solutions where ports are
+        *       checked remotely.  There, we need to send an RLMT
+        *       address change packet - and how do we ensure delivery?
+        */
+       for (i = 0; i < (SK_U32)pAC->GIni.GIMacsFound; i++) {
+               pRPort = &pAC->Rlmt.Port[i];
+               for (j = 0; j < pRPort->PortsChecked; j++) {
+                       if (SK_ADDR_EQUAL(
+                               pRPort->PortCheck[j].CheckAddr.a, pOldMacAddr->a)) {
+                               pRPort->PortCheck[j].CheckAddr = *pNewMacAddr;
+                       }
+               }
+       }
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("SK_RLMT_PORT_ADDR Event END.\n"))
+}      /* SkRlmtEvtPortAddr */
+
+
+/******************************************************************************
+ *
+ *     SkRlmtEvtStart - START
+ *
+ * Description:
+ *     This routine handles START events.
+ *
+ * Context:
+ *     runtime, pageable?
+ *     may be called after SK_INIT_IO
+ *
+ * Returns:
+ *     Nothing
+ */
+RLMT_STATIC void       SkRlmtEvtStart(
+SK_AC          *pAC,   /* Adapter Context */
+SK_IOC         IoC,    /* I/O Context */
+SK_EVPARA      Para)   /* SK_U32 NetNumber; SK_U32 -1 */
+{
+       SK_EVPARA       Para2;
+       SK_U32          PortIdx;
+       SK_U32          PortNumber;
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+               ("SK_RLMT_START Net %d Event BEGIN.\n", Para.Para32[0]))
+
+       if (Para.Para32[1] != (SK_U32)-1) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("Bad Parameter.\n"))
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("SK_RLMT_START Event EMPTY.\n"))
+               return;
+       }
+
+       if (Para.Para32[0] >= pAC->Rlmt.NumNets) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("Bad NetNumber %d.\n", Para.Para32[0]))
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("SK_RLMT_START Event EMPTY.\n"))
+               return;
+       }
+
+       if (pAC->Rlmt.Net[Para.Para32[0]].RlmtState != SK_RLMT_RS_INIT) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("SK_RLMT_START Event EMPTY.\n"))
+               return;
+       }
+
+       if (pAC->Rlmt.NetsStarted >= pAC->Rlmt.NumNets) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("All nets should have been started.\n"))
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("SK_RLMT_START Event EMPTY.\n"))
+               return;
+       }
+
+       if (pAC->Rlmt.Net[Para.Para32[0]].PrefPort >=
+               pAC->Rlmt.Net[Para.Para32[0]].NumPorts) {
+               SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_RLMT_E009, SKERR_RLMT_E009_MSG);
+
+               /* Change PrefPort to internal default. */
+               Para2.Para32[0] = 0xFFFFFFFF;
+               Para2.Para32[1] = Para.Para32[0];
+               (void)SkRlmtEvent(pAC, IoC, SK_RLMT_PREFPORT_CHANGE, Para2);
+       }
+
+       PortIdx = pAC->Rlmt.Net[Para.Para32[0]].PrefPort;
+       PortNumber = pAC->Rlmt.Net[Para.Para32[0]].Port[PortIdx]->PortNumber;
+
+       pAC->Rlmt.Net[Para.Para32[0]].LinksUp = 0;
+       pAC->Rlmt.Net[Para.Para32[0]].PortsUp = 0;
+       pAC->Rlmt.Net[Para.Para32[0]].CheckingState = 0;
+       pAC->Rlmt.Net[Para.Para32[0]].RlmtState = SK_RLMT_RS_NET_DOWN;
+
+       /* Start preferred port. */
+       SkRlmtPortStart(pAC, IoC, PortNumber);
+
+       /* Start Timer (for first port only). */
+       Para2.Para32[0] = PortNumber;
+       Para2.Para32[1] = (SK_U32)-1;
+       SkTimerStart(pAC, IoC, &pAC->Rlmt.Port[PortNumber].UpTimer,
+               SK_RLMT_PORTSTART_TIM_VAL, SKGE_RLMT, SK_RLMT_PORTSTART_TIM, Para2);
+
+       pAC->Rlmt.NetsStarted++;
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("SK_RLMT_START Event END.\n"))
+}      /* SkRlmtEvtStart */
+
+
+/******************************************************************************
+ *
+ *     SkRlmtEvtStop - STOP
+ *
+ * Description:
+ *     This routine handles STOP events.
+ *
+ * Context:
+ *     runtime, pageable?
+ *     may be called after SK_INIT_IO
+ *
+ * Returns:
+ *     Nothing
+ */
+RLMT_STATIC void       SkRlmtEvtStop(
+SK_AC          *pAC,   /* Adapter Context */
+SK_IOC         IoC,    /* I/O Context */
+SK_EVPARA      Para)   /* SK_U32 NetNumber; SK_U32 -1 */
+{
+       SK_EVPARA       Para2;
+       SK_U32          PortNumber;
+       SK_U32          i;
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+               ("SK_RLMT_STOP Net %d Event BEGIN.\n", Para.Para32[0]))
+
+       if (Para.Para32[1] != (SK_U32)-1) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("Bad Parameter.\n"))
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("SK_RLMT_STOP Event EMPTY.\n"))
+               return;
+       }
+
+       if (Para.Para32[0] >= pAC->Rlmt.NumNets) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("Bad NetNumber %d.\n", Para.Para32[0]))
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("SK_RLMT_STOP Event EMPTY.\n"))
+               return;
+       }
+
+       if (pAC->Rlmt.Net[Para.Para32[0]].RlmtState == SK_RLMT_RS_INIT) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("SK_RLMT_STOP Event EMPTY.\n"))
+               return;
+       }
+
+       if (pAC->Rlmt.NetsStarted == 0) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("All nets are stopped.\n"))
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("SK_RLMT_STOP Event EMPTY.\n"))
+               return;
+       }
+
+       /* Stop RLMT timers. */
+       SkTimerStop(pAC, IoC, &pAC->Rlmt.Net[Para.Para32[0]].LocTimer);
+       SkTimerStop(pAC, IoC, &pAC->Rlmt.Net[Para.Para32[0]].SegTimer);
+
+       /* Stop net. */
+       pAC->Rlmt.Net[Para.Para32[0]].RlmtState = SK_RLMT_RS_INIT;
+       pAC->Rlmt.Net[Para.Para32[0]].RootIdSet = SK_FALSE;
+       Para2.Para32[0] = SK_RLMT_NET_DOWN_FINAL;
+       Para2.Para32[1] = Para.Para32[0];                       /* Net# */
+       SkEventQueue(pAC, SKGE_DRV, SK_DRV_NET_DOWN, Para2);
+
+       /* Stop ports. */
+       for (i = 0; i < pAC->Rlmt.Net[Para.Para32[0]].NumPorts; i++) {
+               PortNumber = pAC->Rlmt.Net[Para.Para32[0]].Port[i]->PortNumber;
+               if (pAC->Rlmt.Port[PortNumber].PortState != SK_RLMT_PS_INIT) {
+                       SkTimerStop(pAC, IoC, &pAC->Rlmt.Port[PortNumber].UpTimer);
+                       SkTimerStop(pAC, IoC, &pAC->Rlmt.Port[PortNumber].DownRxTimer);
+                       SkTimerStop(pAC, IoC, &pAC->Rlmt.Port[PortNumber].DownTxTimer);
+
+                       pAC->Rlmt.Port[PortNumber].PortState = SK_RLMT_PS_INIT;
+                       pAC->Rlmt.Port[PortNumber].RootIdSet = SK_FALSE;
+                       pAC->Rlmt.Port[PortNumber].PortStarted = SK_FALSE;
+                       Para2.Para32[0] = PortNumber;
+                       Para2.Para32[1] = (SK_U32)-1;
+                       SkEventQueue(pAC, SKGE_HWAC, SK_HWEV_PORT_STOP, Para2);
+               }
+       }
+
+       pAC->Rlmt.NetsStarted--;
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+               ("SK_RLMT_STOP Event END.\n"))
+}      /* SkRlmtEvtStop */
+
+
+/******************************************************************************
+ *
+ *     SkRlmtEvtTim - TIM
+ *
+ * Description:
+ *     This routine handles TIM events.
+ *
+ * Context:
+ *     runtime, pageable?
+ *     may be called after SK_INIT_IO
+ *
+ * Returns:
+ *     Nothing
+ */
+RLMT_STATIC void       SkRlmtEvtTim(
+SK_AC          *pAC,   /* Adapter Context */
+SK_IOC         IoC,    /* I/O Context */
+SK_EVPARA      Para)   /* SK_U32 NetNumber; SK_U32 -1 */
+{
+       SK_RLMT_PORT    *pRPort;
+       SK_U32                  Timeout;
+       SK_U32                  NewTimeout;
+       SK_U32                  PortNumber;
+       SK_U32                  i;
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+               ("SK_RLMT_TIM Event BEGIN.\n"))
+
+       if (Para.Para32[1] != (SK_U32)-1) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("Bad Parameter.\n"))
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("SK_RLMT_TIM Event EMPTY.\n"))
+               return;
+       }
+
+       if ((pAC->Rlmt.Net[Para.Para32[0]].RlmtMode & SK_RLMT_CHECK_OTHERS) == 0 ||
+               pAC->Rlmt.Net[Para.Para32[0]].LinksUp == 0) {
+               /* Mode changed or all links down: No more link checking. */
+               return;
+       }
+
+#if 0
+       pAC->Rlmt.SwitchCheckCounter--;
+       if (pAC->Rlmt.SwitchCheckCounter == 0) {
+               pAC->Rlmt.SwitchCheckCounter;
+       }
+#endif /* 0 */
+
+       NewTimeout = SK_RLMT_DEF_TO_VAL;
+       for (i = 0; i < pAC->Rlmt.Net[Para.Para32[0]].NumPorts; i++) {
+               PortNumber = pAC->Rlmt.Net[Para.Para32[0]].Port[i]->PortNumber;
+               pRPort = &pAC->Rlmt.Port[PortNumber];
+               if (!pRPort->LinkDown) {
+                       Timeout = SkRlmtCheckPort(pAC, IoC, PortNumber);
+                       if (Timeout < NewTimeout) {
+                               NewTimeout = Timeout;
+                       }
+
+                       /*
+                        * These counters should be set to 0 for all ports before the
+                        * first frame is sent in the next loop.
+                        */
+                       pRPort->PacketsPerTimeSlot = 0;
+                       /* pRPort->DataPacketsPerTimeSlot = 0; */
+                       pRPort->BpduPacketsPerTimeSlot = 0;
+               }
+       }
+       pAC->Rlmt.Net[Para.Para32[0]].TimeoutValue = NewTimeout;
+
+       if (pAC->Rlmt.Net[Para.Para32[0]].LinksUp > 1) {
+               /*
+                * If checking remote ports, also send packets if
+                *   (LinksUp == 1) &&
+                *   this port checks at least one (remote) port.
+                */
+
+               /*
+                * Must be new loop, as SkRlmtCheckPort can request to
+                * check segmentation when e.g. checking the last port.
+                */
+               for (i = 0; i < pAC->Rlmt.Net[Para.Para32[0]].NumPorts; i++) {
+                       if (!pAC->Rlmt.Net[Para.Para32[0]].Port[i]->LinkDown) {
+                               SkRlmtSend(pAC, IoC,
+                                       pAC->Rlmt.Net[Para.Para32[0]].Port[i]->PortNumber);
+                       }
+               }
+       }
+
+       SkTimerStart(pAC, IoC, &pAC->Rlmt.Net[Para.Para32[0]].LocTimer,
+               pAC->Rlmt.Net[Para.Para32[0]].TimeoutValue, SKGE_RLMT, SK_RLMT_TIM,
+               Para);
+
+       if (pAC->Rlmt.Net[Para.Para32[0]].LinksUp > 1 &&
+               (pAC->Rlmt.Net[Para.Para32[0]].RlmtMode & SK_RLMT_CHECK_SEG) &&
+               (pAC->Rlmt.Net[Para.Para32[0]].CheckingState & SK_RLMT_RCS_START_SEG)) {
+               SkTimerStart(pAC, IoC, &pAC->Rlmt.Net[Para.Para32[0]].SegTimer,
+                       SK_RLMT_SEG_TO_VAL, SKGE_RLMT, SK_RLMT_SEG_TIM, Para);
+               pAC->Rlmt.Net[Para.Para32[0]].CheckingState &= ~SK_RLMT_RCS_START_SEG;
+               pAC->Rlmt.Net[Para.Para32[0]].CheckingState |=
+                       SK_RLMT_RCS_SEG | SK_RLMT_RCS_REPORT_SEG;
+       }
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("SK_RLMT_TIM Event END.\n"))
+}      /* SkRlmtEvtTim */
+
+
+/******************************************************************************
+ *
+ *     SkRlmtEvtSegTim - SEG_TIM
+ *
+ * Description:
+ *     This routine handles SEG_TIM events.
+ *
+ * Context:
+ *     runtime, pageable?
+ *     may be called after SK_INIT_IO
+ *
+ * Returns:
+ *     Nothing
+ */
+RLMT_STATIC void       SkRlmtEvtSegTim(
+SK_AC          *pAC,   /* Adapter Context */
+SK_IOC         IoC,    /* I/O Context */
+SK_EVPARA      Para)   /* SK_U32 NetNumber; SK_U32 -1 */
+{
+#ifdef xDEBUG
+       int j;
+#endif /* DEBUG */
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+               ("SK_RLMT_SEG_TIM Event BEGIN.\n"))
+
+       if (Para.Para32[1] != (SK_U32)-1) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("Bad Parameter.\n"))
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("SK_RLMT_SEG_TIM Event EMPTY.\n"))
+               return;
+       }
+
+#ifdef xDEBUG
+       for (j = 0; j < pAC->Rlmt.Net[Para.Para32[0]].NumPorts; j++) {
+               SK_ADDR_PORT    *pAPort;
+               SK_U32                  k;
+               SK_U16                  *InAddr;
+               SK_U8                   InAddr8[6];
+
+               InAddr = (SK_U16 *)&InAddr8[0];
+               pAPort = pAC->Rlmt.Net[Para.Para32[0]].Port[j]->AddrPort;
+               for (k = 0; k < pAPort->NextExactMatchRlmt; k++) {
+                       /* Get exact match address k from port j. */
+                       XM_INADDR(IoC, pAC->Rlmt.Net[Para.Para32[0]].Port[j]->PortNumber,
+                               XM_EXM(k), InAddr);
+                       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                               ("MC address %d on Port %u: %02x %02x %02x %02x %02x %02x --  %02x %02x %02x %02x %02x %02x.\n",
+                                       k, pAC->Rlmt.Net[Para.Para32[0]].Port[j]->PortNumber,
+                                       InAddr8[0], InAddr8[1], InAddr8[2],
+                                       InAddr8[3], InAddr8[4], InAddr8[5],
+                                       pAPort->Exact[k].a[0], pAPort->Exact[k].a[1],
+                                       pAPort->Exact[k].a[2], pAPort->Exact[k].a[3],
+                                       pAPort->Exact[k].a[4], pAPort->Exact[k].a[5]))
+               }
+       }
+#endif /* xDEBUG */
+
+       SkRlmtCheckSeg(pAC, IoC, Para.Para32[0]);
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("SK_RLMT_SEG_TIM Event END.\n"))
+}      /* SkRlmtEvtSegTim */
+
+
+/******************************************************************************
+ *
+ *     SkRlmtEvtPacketRx - PACKET_RECEIVED
+ *
+ * Description:
+ *     This routine handles PACKET_RECEIVED events.
+ *
+ * Context:
+ *     runtime, pageable?
+ *     may be called after SK_INIT_IO
+ *
+ * Returns:
+ *     Nothing
+ */
+RLMT_STATIC void       SkRlmtEvtPacketRx(
+SK_AC          *pAC,   /* Adapter Context */
+SK_IOC         IoC,    /* I/O Context */
+SK_EVPARA      Para)   /* SK_MBUF *pMb */
+{
+       SK_MBUF *pMb;
+       SK_MBUF *pNextMb;
+       SK_U32  NetNumber;
+
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+               ("SK_RLMT_PACKET_RECEIVED Event BEGIN.\n"))
+
+       /* Should we ignore frames during port switching? */
+
+#ifdef DEBUG
+       pMb = Para.pParaPtr;
+       if (pMb == NULL) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, ("No mbuf.\n"))
+       }
+       else if (pMb->pNext != NULL) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("More than one mbuf or pMb->pNext not set.\n"))
+       }
+#endif /* DEBUG */
+
+       for (pMb = Para.pParaPtr; pMb != NULL; pMb = pNextMb) {
+               pNextMb = pMb->pNext;
+               pMb->pNext = NULL;
+
+               NetNumber = pAC->Rlmt.Port[pMb->PortIdx].Net->NetNumber;
+               if (pAC->Rlmt.Net[NetNumber].RlmtState == SK_RLMT_RS_INIT) {
+                       SkDrvFreeRlmtMbuf(pAC, IoC, pMb);
+               }
+               else {
+                       SkRlmtPacketReceive(pAC, IoC, pMb);
+               }
+       }
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+               ("SK_RLMT_PACKET_RECEIVED Event END.\n"))
+}      /* SkRlmtEvtPacketRx */
+
+
+/******************************************************************************
+ *
+ *     SkRlmtEvtStatsClear - STATS_CLEAR
+ *
+ * Description:
+ *     This routine handles STATS_CLEAR events.
+ *
+ * Context:
+ *     runtime, pageable?
+ *     may be called after SK_INIT_IO
+ *
+ * Returns:
+ *     Nothing
+ */
+RLMT_STATIC void       SkRlmtEvtStatsClear(
+SK_AC          *pAC,   /* Adapter Context */
+SK_IOC         IoC,    /* I/O Context */
+SK_EVPARA      Para)   /* SK_U32 NetNumber; SK_U32 -1 */
+{
+       SK_U32                  i;
+       SK_RLMT_PORT    *pRPort;
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+               ("SK_RLMT_STATS_CLEAR Event BEGIN.\n"))
+
+       if (Para.Para32[1] != (SK_U32)-1) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("Bad Parameter.\n"))
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("SK_RLMT_STATS_CLEAR Event EMPTY.\n"))
+               return;
+       }
+
+       if (Para.Para32[0] >= pAC->Rlmt.NumNets) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("Bad NetNumber %d.\n", Para.Para32[0]))
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("SK_RLMT_STATS_CLEAR Event EMPTY.\n"))
+               return;
+       }
+
+       /* Clear statistics for logical and physical ports. */
+       for (i = 0; i < pAC->Rlmt.Net[Para.Para32[0]].NumPorts; i++) {
+               pRPort =
+                       &pAC->Rlmt.Port[pAC->Rlmt.Net[Para.Para32[0]].Port[i]->PortNumber];
+               pRPort->TxHelloCts = 0;
+               pRPort->RxHelloCts = 0;
+               pRPort->TxSpHelloReqCts = 0;
+               pRPort->RxSpHelloCts = 0;
+       }
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+               ("SK_RLMT_STATS_CLEAR Event END.\n"))
+}      /* SkRlmtEvtStatsClear */
+
+
+/******************************************************************************
+ *
+ *     SkRlmtEvtStatsUpdate - STATS_UPDATE
+ *
+ * Description:
+ *     This routine handles STATS_UPDATE events.
+ *
+ * Context:
+ *     runtime, pageable?
+ *     may be called after SK_INIT_IO
+ *
+ * Returns:
+ *     Nothing
+ */
+RLMT_STATIC void       SkRlmtEvtStatsUpdate(
+SK_AC          *pAC,   /* Adapter Context */
+SK_IOC         IoC,    /* I/O Context */
+SK_EVPARA      Para)   /* SK_U32 NetNumber; SK_U32 -1 */
+{
+       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+               ("SK_RLMT_STATS_UPDATE Event BEGIN.\n"))
+
+       if (Para.Para32[1] != (SK_U32)-1) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("Bad Parameter.\n"))
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("SK_RLMT_STATS_UPDATE Event EMPTY.\n"))
+               return;
+       }
+
+       if (Para.Para32[0] >= pAC->Rlmt.NumNets) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("Bad NetNumber %d.\n", Para.Para32[0]))
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("SK_RLMT_STATS_UPDATE Event EMPTY.\n"))
+               return;
+       }
+
+       /* Update statistics - currently always up-to-date. */
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+               ("SK_RLMT_STATS_UPDATE Event END.\n"))
+}      /* SkRlmtEvtStatsUpdate */
+
+
+/******************************************************************************
+ *
+ *     SkRlmtEvtPrefportChange - PREFPORT_CHANGE
+ *
+ * Description:
+ *     This routine handles PREFPORT_CHANGE events.
+ *
+ * Context:
+ *     runtime, pageable?
+ *     may be called after SK_INIT_IO
+ *
+ * Returns:
+ *     Nothing
+ */
+RLMT_STATIC void       SkRlmtEvtPrefportChange(
+SK_AC          *pAC,   /* Adapter Context */
+SK_IOC         IoC,    /* I/O Context */
+SK_EVPARA      Para)   /* SK_U32 PortIndex; SK_U32 NetNumber */
+{
+       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+               ("SK_RLMT_PREFPORT_CHANGE to Port %d Event BEGIN.\n", Para.Para32[0]))
+
+       if (Para.Para32[1] >= pAC->Rlmt.NumNets) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("Bad NetNumber %d.\n", Para.Para32[1]))
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("SK_RLMT_PREFPORT_CHANGE Event EMPTY.\n"))
+               return;
+       }
+
+       /* 0xFFFFFFFF == auto-mode. */
+       if (Para.Para32[0] == 0xFFFFFFFF) {
+               pAC->Rlmt.Net[Para.Para32[1]].PrefPort = SK_RLMT_DEF_PREF_PORT;
+       }
+       else {
+               if (Para.Para32[0] >= pAC->Rlmt.Net[Para.Para32[1]].NumPorts) {
+                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_RLMT_E010, SKERR_RLMT_E010_MSG);
+
+                       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                               ("SK_RLMT_PREFPORT_CHANGE Event EMPTY.\n"))
+                       return;
+               }
+
+               pAC->Rlmt.Net[Para.Para32[1]].PrefPort = Para.Para32[0];
+       }
+
+       pAC->Rlmt.Net[Para.Para32[1]].Preference = Para.Para32[0];
+
+       if (pAC->Rlmt.Net[Para.Para32[1]].RlmtState != SK_RLMT_RS_INIT) {
+               SkRlmtCheckSwitch(pAC, IoC, Para.Para32[1]);
+       }
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+               ("SK_RLMT_PREFPORT_CHANGE Event END.\n"))
+}      /* SkRlmtEvtPrefportChange */
+
+
+/******************************************************************************
+ *
+ *     SkRlmtEvtSetNets - SET_NETS
+ *
+ * Description:
+ *     This routine handles SET_NETS events.
+ *
+ * Context:
+ *     runtime, pageable?
+ *     may be called after SK_INIT_IO
+ *
+ * Returns:
+ *     Nothing
+ */
+RLMT_STATIC void       SkRlmtEvtSetNets(
+SK_AC          *pAC,   /* Adapter Context */
+SK_IOC         IoC,    /* I/O Context */
+SK_EVPARA      Para)   /* SK_U32 NumNets; SK_U32 -1 */
+{
+       int i;
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+               ("SK_RLMT_SET_NETS Event BEGIN.\n"))
+
+       if (Para.Para32[1] != (SK_U32)-1) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("Bad Parameter.\n"))
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("SK_RLMT_SET_NETS Event EMPTY.\n"))
+               return;
+       }
+
+       if (Para.Para32[0] == 0 || Para.Para32[0] > SK_MAX_NETS ||
+               Para.Para32[0] > (SK_U32)pAC->GIni.GIMacsFound) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("Bad number of nets: %d.\n", Para.Para32[0]))
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("SK_RLMT_SET_NETS Event EMPTY.\n"))
+               return;
+       }
+
+       if (Para.Para32[0] == pAC->Rlmt.NumNets) {      /* No change. */
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("SK_RLMT_SET_NETS Event EMPTY.\n"))
+               return;
+       }
+
+       /* Entering and leaving dual mode only allowed while nets are stopped. */
+       if (pAC->Rlmt.NetsStarted > 0) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("Changing dual mode only allowed while all nets are stopped.\n"))
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("SK_RLMT_SET_NETS Event EMPTY.\n"))
+               return;
+       }
+
+       if (Para.Para32[0] == 1) {
+               if (pAC->Rlmt.NumNets > 1) {
+                       /* Clear logical MAC addr from second net's active port. */
+                       (void)SkAddrOverride(pAC, IoC, pAC->Rlmt.Net[1].Port[pAC->Addr.
+                               Net[1].ActivePort]->PortNumber, NULL, SK_ADDR_CLEAR_LOGICAL);
+                       pAC->Rlmt.Net[1].NumPorts = 0;
+               }
+
+               pAC->Rlmt.NumNets = Para.Para32[0];
+               for (i = 0; (SK_U32)i < pAC->Rlmt.NumNets; i++) {
+                       pAC->Rlmt.Net[i].RlmtState = SK_RLMT_RS_INIT;
+                       pAC->Rlmt.Net[i].RootIdSet = SK_FALSE;
+                       pAC->Rlmt.Net[i].Preference = 0xFFFFFFFF;         /* "Automatic" */
+                       pAC->Rlmt.Net[i].PrefPort = SK_RLMT_DEF_PREF_PORT;
+                       /* Just assuming. */
+                       pAC->Rlmt.Net[i].ActivePort = pAC->Rlmt.Net[i].PrefPort;
+                       pAC->Rlmt.Net[i].RlmtMode = SK_RLMT_DEF_MODE;
+                       pAC->Rlmt.Net[i].TimeoutValue = SK_RLMT_DEF_TO_VAL;
+                       pAC->Rlmt.Net[i].NetNumber = i;
+               }
+
+               pAC->Rlmt.Port[1].Net= &pAC->Rlmt.Net[0];
+               pAC->Rlmt.Net[0].NumPorts = pAC->GIni.GIMacsFound;
+
+               SkEventQueue(pAC, SKGE_PNMI, SK_PNMI_EVT_RLMT_SET_NETS, Para);
+
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("RLMT: Changed to one net with two ports.\n"))
+       }
+       else if (Para.Para32[0] == 2) {
+               pAC->Rlmt.Port[1].Net= &pAC->Rlmt.Net[1];
+               pAC->Rlmt.Net[1].NumPorts = pAC->GIni.GIMacsFound - 1;
+               pAC->Rlmt.Net[0].NumPorts =
+                       pAC->GIni.GIMacsFound - pAC->Rlmt.Net[1].NumPorts;
+
+               pAC->Rlmt.NumNets = Para.Para32[0];
+               for (i = 0; (SK_U32)i < pAC->Rlmt.NumNets; i++) {
+                       pAC->Rlmt.Net[i].RlmtState = SK_RLMT_RS_INIT;
+                       pAC->Rlmt.Net[i].RootIdSet = SK_FALSE;
+                       pAC->Rlmt.Net[i].Preference = 0xFFFFFFFF;         /* "Automatic" */
+                       pAC->Rlmt.Net[i].PrefPort = SK_RLMT_DEF_PREF_PORT;
+                       /* Just assuming. */
+                       pAC->Rlmt.Net[i].ActivePort = pAC->Rlmt.Net[i].PrefPort;
+                       pAC->Rlmt.Net[i].RlmtMode = SK_RLMT_DEF_MODE;
+                       pAC->Rlmt.Net[i].TimeoutValue = SK_RLMT_DEF_TO_VAL;
+
+                       pAC->Rlmt.Net[i].NetNumber = i;
+               }
+
+               /* Set logical MAC addr on second net's active port. */
+               (void)SkAddrOverride(pAC, IoC, pAC->Rlmt.Net[1].Port[pAC->Addr.
+                       Net[1].ActivePort]->PortNumber, NULL, SK_ADDR_SET_LOGICAL);
+
+               SkEventQueue(pAC, SKGE_PNMI, SK_PNMI_EVT_RLMT_SET_NETS, Para);
+
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("RLMT: Changed to two nets with one port each.\n"))
+       }
+       else {
+               /* Not implemented for more than two nets. */
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("SetNets not implemented for more than two nets.\n"))
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("SK_RLMT_SET_NETS Event EMPTY.\n"))
+               return;
+       }
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+               ("SK_RLMT_SET_NETS Event END.\n"))
+}      /* SkRlmtSetNets */
+
+
+/******************************************************************************
+ *
+ *     SkRlmtEvtModeChange - MODE_CHANGE
+ *
+ * Description:
+ *     This routine handles MODE_CHANGE events.
+ *
+ * Context:
+ *     runtime, pageable?
+ *     may be called after SK_INIT_IO
+ *
+ * Returns:
+ *     Nothing
+ */
+RLMT_STATIC void       SkRlmtEvtModeChange(
+SK_AC          *pAC,   /* Adapter Context */
+SK_IOC         IoC,    /* I/O Context */
+SK_EVPARA      Para)   /* SK_U32 NewMode; SK_U32 NetNumber */
+{
+       SK_EVPARA       Para2;
+       SK_U32          i;
+       SK_U32          PrevRlmtMode;
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+               ("SK_RLMT_MODE_CHANGE Event BEGIN.\n"))
+
+       if (Para.Para32[1] >= pAC->Rlmt.NumNets) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("Bad NetNumber %d.\n", Para.Para32[1]))
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("SK_RLMT_MODE_CHANGE Event EMPTY.\n"))
+               return;
+       }
+
+       Para.Para32[0] |= SK_RLMT_CHECK_LINK;
+
+       if ((pAC->Rlmt.Net[Para.Para32[1]].NumPorts == 1) &&
+               Para.Para32[0] != SK_RLMT_MODE_CLS) {
+               pAC->Rlmt.Net[Para.Para32[1]].RlmtMode = SK_RLMT_MODE_CLS;
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("Forced RLMT mode to CLS on single port net.\n"))
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("SK_RLMT_MODE_CHANGE Event EMPTY.\n"))
+               return;
+       }
+
+       /* Update RLMT mode. */
+       PrevRlmtMode = pAC->Rlmt.Net[Para.Para32[1]].RlmtMode;
+       pAC->Rlmt.Net[Para.Para32[1]].RlmtMode = Para.Para32[0];
+
+       if ((PrevRlmtMode & SK_RLMT_CHECK_LOC_LINK) !=
+               (pAC->Rlmt.Net[Para.Para32[1]].RlmtMode & SK_RLMT_CHECK_LOC_LINK)) {
+               /* SK_RLMT_CHECK_LOC_LINK bit changed. */
+               if ((PrevRlmtMode & SK_RLMT_CHECK_OTHERS) == 0 &&
+                       pAC->Rlmt.Net[Para.Para32[1]].NumPorts > 1 &&
+                       pAC->Rlmt.Net[Para.Para32[1]].PortsUp >= 1) {
+                       /* 20001207 RA: Was "PortsUp == 1". */
+                       Para2.Para32[0] = Para.Para32[1];
+                       Para2.Para32[1] = (SK_U32)-1;
+                       SkTimerStart(pAC, IoC, &pAC->Rlmt.Net[Para.Para32[1]].LocTimer,
+                               pAC->Rlmt.Net[Para.Para32[1]].TimeoutValue,
+                               SKGE_RLMT, SK_RLMT_TIM, Para2);
+               }
+       }
+
+       if ((PrevRlmtMode & SK_RLMT_CHECK_SEG) !=
+               (pAC->Rlmt.Net[Para.Para32[1]].RlmtMode & SK_RLMT_CHECK_SEG)) {
+               /* SK_RLMT_CHECK_SEG bit changed. */
+               for (i = 0; i < pAC->Rlmt.Net[Para.Para32[1]].NumPorts; i++) {
+                       (void)SkAddrMcClear(pAC, IoC,
+                               pAC->Rlmt.Net[Para.Para32[1]].Port[i]->PortNumber,
+                               SK_ADDR_PERMANENT | SK_MC_SW_ONLY);
+
+                       /* Add RLMT MC address. */
+                       (void)SkAddrMcAdd(pAC, IoC,
+                               pAC->Rlmt.Net[Para.Para32[1]].Port[i]->PortNumber,
+                               &SkRlmtMcAddr, SK_ADDR_PERMANENT);
+
+                       if ((pAC->Rlmt.Net[Para.Para32[1]].RlmtMode &
+                               SK_RLMT_CHECK_SEG) != 0) {
+                               /* Add BPDU MC address. */
+                               (void)SkAddrMcAdd(pAC, IoC,
+                                       pAC->Rlmt.Net[Para.Para32[1]].Port[i]->PortNumber,
+                                       &BridgeMcAddr, SK_ADDR_PERMANENT);
+
+                               if (pAC->Rlmt.Net[Para.Para32[1]].RlmtState != SK_RLMT_RS_INIT) {
+                                       if (!pAC->Rlmt.Net[Para.Para32[1]].Port[i]->LinkDown &&
+                                               (Para2.pParaPtr = SkRlmtBuildSpanningTreePacket(
+                                               pAC, IoC, i)) != NULL) {
+                                               pAC->Rlmt.Net[Para.Para32[1]].Port[i]->RootIdSet =
+                                                       SK_FALSE;
+                                               SkEventQueue(pAC, SKGE_DRV, SK_DRV_RLMT_SEND, Para2);
+                                       }
+                               }
+                       }
+                       (void)SkAddrMcUpdate(pAC, IoC,
+                               pAC->Rlmt.Net[Para.Para32[1]].Port[i]->PortNumber);
+               }       /* for ... */
+
+               if ((pAC->Rlmt.Net[Para.Para32[1]].RlmtMode & SK_RLMT_CHECK_SEG) != 0) {
+                       Para2.Para32[0] = Para.Para32[1];
+                       Para2.Para32[1] = (SK_U32)-1;
+                       SkTimerStart(pAC, IoC, &pAC->Rlmt.Net[Para.Para32[1]].SegTimer,
+                               SK_RLMT_SEG_TO_VAL, SKGE_RLMT, SK_RLMT_SEG_TIM, Para2);
+               }
+       }       /* SK_RLMT_CHECK_SEG bit changed. */
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("SK_RLMT_MODE_CHANGE Event END.\n"))
+}      /* SkRlmtEvtModeChange */
+
+
+/******************************************************************************
+ *
+ *     SkRlmtEvent - a PORT- or an RLMT-specific event happened
+ *
+ * Description:
+ *     This routine calls subroutines to handle PORT- and RLMT-specific events.
+ *
+ * Context:
+ *     runtime, pageable?
+ *     may be called after SK_INIT_IO
+ *
+ * Returns:
+ *     0
+ */
+int    SkRlmtEvent(
+SK_AC          *pAC,   /* Adapter Context */
+SK_IOC         IoC,    /* I/O Context */
+SK_U32         Event,  /* Event code */
+SK_EVPARA      Para)   /* Event-specific parameter */
+{
+       switch (Event) {
+
+       /* ----- PORT events ----- */
+
+       case SK_RLMT_PORTSTART_TIM:     /* From RLMT via TIME. */
+               SkRlmtEvtPortStartTim(pAC, IoC, Para);
+               break;
+       case SK_RLMT_LINK_UP:           /* From SIRQ. */
+               SkRlmtEvtLinkUp(pAC, IoC, Para);
+               break;
+       case SK_RLMT_PORTUP_TIM:        /* From RLMT via TIME. */
+               SkRlmtEvtPortUpTim(pAC, IoC, Para);
+               break;
+       case SK_RLMT_PORTDOWN:                  /* From RLMT. */
+       case SK_RLMT_PORTDOWN_RX_TIM:   /* From RLMT via TIME. */
+       case SK_RLMT_PORTDOWN_TX_TIM:   /* From RLMT via TIME. */
+               SkRlmtEvtPortDownX(pAC, IoC, Event, Para);
+               break;
+       case SK_RLMT_LINK_DOWN:         /* From SIRQ. */
+               SkRlmtEvtLinkDown(pAC, IoC, Para);
+               break;
+       case SK_RLMT_PORT_ADDR:         /* From ADDR. */
+               SkRlmtEvtPortAddr(pAC, IoC, Para);
+               break;
+
+       /* ----- RLMT events ----- */
+
+       case SK_RLMT_START:             /* From DRV. */
+               SkRlmtEvtStart(pAC, IoC, Para);
+               break;
+       case SK_RLMT_STOP:              /* From DRV. */
+               SkRlmtEvtStop(pAC, IoC, Para);
+               break;
+       case SK_RLMT_TIM:               /* From RLMT via TIME. */
+               SkRlmtEvtTim(pAC, IoC, Para);
+               break;
+       case SK_RLMT_SEG_TIM:
+               SkRlmtEvtSegTim(pAC, IoC, Para);
+               break;
+       case SK_RLMT_PACKET_RECEIVED:   /* From DRV. */
+               SkRlmtEvtPacketRx(pAC, IoC, Para);
+               break;
+       case SK_RLMT_STATS_CLEAR:       /* From PNMI. */
+               SkRlmtEvtStatsClear(pAC, IoC, Para);
+               break;
+       case SK_RLMT_STATS_UPDATE:      /* From PNMI. */
+               SkRlmtEvtStatsUpdate(pAC, IoC, Para);
+               break;
+       case SK_RLMT_PREFPORT_CHANGE:   /* From PNMI. */
+               SkRlmtEvtPrefportChange(pAC, IoC, Para);
+               break;
+       case SK_RLMT_MODE_CHANGE:       /* From PNMI. */
+               SkRlmtEvtModeChange(pAC, IoC, Para);
+               break;
+       case SK_RLMT_SET_NETS:  /* From DRV. */
+               SkRlmtEvtSetNets(pAC, IoC, Para);
+               break;
+
+       /* ----- Unknown events ----- */
+
+       default:        /* Create error log entry. */
+               SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL,
+                       ("Unknown RLMT Event %d.\n", Event))
+               SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_RLMT_E003, SKERR_RLMT_E003_MSG);
+               break;
+       }       /* switch() */
+
+       return (0);
+}      /* SkRlmtEvent */
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
diff -Naur u-boot-2009.03_orig/drivers/net/sk98lin/sktimer.c u-boot-2009.03/drivers/net/sk98lin/sktimer.c
--- u-boot-2009.03_orig/drivers/net/sk98lin/sktimer.c   2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/drivers/net/sk98lin/sktimer.c        2009-03-31 14:54:29.800000800 -0700
@@ -1,293 +1,296 @@
-/******************************************************************************
- *
- * Name:       sktimer.c
- * Project:    GEnesis, PCI Gigabit Ethernet Adapter
- * Version:    $Revision: 1.12 $
- * Date:       $Date: 1999/11/22 13:38:51 $
- * Purpose:    High level timer functions.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- *     (C)Copyright 1998,1999 SysKonnect,
- *     a business unit of Schneider & Koch & Co. Datensysteme GmbH.
- *
- *     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.
- *
- *     The information in this file is provided "AS IS" without warranty.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * History:
- *
- *     $Log: sktimer.c,v $
- *     Revision 1.12  1999/11/22 13:38:51  cgoos
- *     Changed license header to GPL.
- *
- *     Revision 1.11  1998/12/17 13:24:13  gklug
- *     fix: restart problem: do NOT destroy timer queue if init 1 is done
- *
- *     Revision 1.10  1998/10/15 15:11:36  gklug
- *     fix: ID_sccs to SysKonnectFileId
- *
- *     Revision 1.9  1998/09/15 15:15:04  cgoos
- *     Changed TRUE/FALSE to SK_TRUE/SK_FALSE
- *
- *     Revision 1.8  1998/09/08 08:47:55  gklug
- *     add: init level handling
- *
- *     Revision 1.7  1998/08/19 09:50:53  gklug
- *     fix: remove struct keyword from c-code (see CCC) add typedefs
- *
- *     Revision 1.6  1998/08/17 13:43:13  gklug
- *     chg: Parameter will be union of 64bit para, 2 times SK_U32 or SK_PTR
- *
- *     Revision 1.5  1998/08/14 07:09:14  gklug
- *     fix: chg pAc -> pAC
- *
- *     Revision 1.4  1998/08/07 12:53:46  gklug
- *     fix: first compiled version
- *
- *     Revision 1.3  1998/08/07 09:31:53  gklug
- *     fix: delta spelling
- *
- *     Revision 1.2  1998/08/07 09:31:02  gklug
- *     adapt functions to new c coding conventions
- *     rmv: "fast" handling
- *     chg: inserting of new timer in queue.
- *     chg: event queue generation when timer runs out
- *
- *     Revision 1.1  1998/08/05 11:27:55  gklug
- *     first version: adapted from SMT
- *
- *
- *
- *
- ******************************************************************************/
-
-
-#include <config.h>
-
-/*
-       Event queue and dispatcher
-*/
-static const char SysKonnectFileId[] =
-       "$Header: /usr56/projects/ge/schedule/sktimer.c,v 1.12 1999/11/22 13:38:51 cgoos Exp $" ;
-
-#include "h/skdrv1st.h"                /* Driver Specific Definitions */
-#include "h/skdrv2nd.h"                /* Adapter Control- and Driver specific Def. */
-
-#ifdef __C2MAN__
-/*
-       Event queue management.
-
-       General Description:
-
- */
-intro()
-{}
-#endif
-
-
-/* Forward declaration */
-static void timer_done(SK_AC *pAC,SK_IOC Ioc,int Restart);
-
-
-/*
- * Inits the software timer
- *
- * needs to be called during Init level 1.
- */
-void   SkTimerInit(
-SK_AC  *pAC,           /* Adapters context */
-SK_IOC Ioc,            /* IoContext */
-int    Level)          /* Init Level */
-{
-       switch (Level) {
-       case SK_INIT_DATA:
-               pAC->Tim.StQueue = 0 ;
-               break;
-       case SK_INIT_IO:
-               SkHwtInit(pAC,Ioc) ;
-               SkTimerDone(pAC, Ioc);
-               break;
-       default:
-               break;
-       }
-}
-
-/*
- * Stops a high level timer
- * - If a timer is not in the queue the function returns normally, too.
- */
-void   SkTimerStop(
-SK_AC          *pAC,           /* Adapters context */
-SK_IOC         Ioc,            /* IoContext */
-SK_TIMER       *pTimer)        /* Timer Pointer to be started */
-{
-       SK_TIMER        **ppTimPrev ;
-       SK_TIMER        *pTm ;
-
-       /*
-        * remove timer from queue
-        */
-       pTimer->TmActive = SK_FALSE ;
-       if (pAC->Tim.StQueue == pTimer && !pTimer->TmNext) {
-               SkHwtStop(pAC,Ioc) ;
-       }
-       for (ppTimPrev = &pAC->Tim.StQueue ; (pTm = *ppTimPrev) ;
-               ppTimPrev = &pTm->TmNext ) {
-               if (pTm == pTimer) {
-                       /*
-                        * Timer found in queue
-                        * - dequeue it and
-                        * - correct delta of the next timer
-                        */
-                       *ppTimPrev = pTm->TmNext ;
-
-                       if (pTm->TmNext) {
-                               /* correct delta of next timer in queue */
-                               pTm->TmNext->TmDelta += pTm->TmDelta ;
-                       }
-                       return ;
-               }
-       }
-}
-
-/*
- * Start a high level software timer
- */
-void   SkTimerStart(
-SK_AC          *pAC,           /* Adapters context */
-SK_IOC         Ioc,            /* IoContext */
-SK_TIMER       *pTimer,        /* Timer Pointer to be started */
-SK_U32         Time,           /* Time value */
-SK_U32         Class,          /* Event Class for this timer */
-SK_U32         Event,          /* Event Value for this timer */
-SK_EVPARA      Para)           /* Event Parameter for this timer */
-{
-       SK_TIMER        **ppTimPrev ;
-       SK_TIMER        *pTm ;
-       SK_U32          Delta ;
-
-       Time /= 16 ;            /* input is uS, clock ticks are 16uS */
-       if (!Time)
-               Time = 1 ;
-
-       SkTimerStop(pAC,Ioc,pTimer) ;
-
-       pTimer->TmClass = Class ;
-       pTimer->TmEvent = Event ;
-       pTimer->TmPara = Para ;
-       pTimer->TmActive = SK_TRUE ;
-
-       if (!pAC->Tim.StQueue) {
-               /* First Timer to be started */
-               pAC->Tim.StQueue = pTimer ;
-               pTimer->TmNext = 0 ;
-               pTimer->TmDelta = Time ;
-               SkHwtStart(pAC,Ioc,Time) ;
-               return ;
-       }
-
-       /*
-        * timer correction
-        */
-       timer_done(pAC,Ioc,0) ;
-
-       /*
-        * find position in queue
-        */
-       Delta = 0 ;
-       for (ppTimPrev = &pAC->Tim.StQueue ; (pTm = *ppTimPrev) ;
-               ppTimPrev = &pTm->TmNext ) {
-               if (Delta + pTm->TmDelta > Time) {
-                       /* Position found */
-                       /* Here the timer needs to be inserted. */
-                       break ;
-               }
-               Delta += pTm->TmDelta ;
-       }
-
-       /* insert in queue */
-       *ppTimPrev = pTimer ;
-       pTimer->TmNext = pTm ;
-       pTimer->TmDelta = Time - Delta ;
-
-       if (pTm) {
-               /* There is a next timer
-                * -> correct its Delta value.
-                */
-               pTm->TmDelta -= pTimer->TmDelta ;
-       }
-
-       /*
-        * start new with first
-        */
-       SkHwtStart(pAC,Ioc,pAC->Tim.StQueue->TmDelta) ;
-}
-
-
-void   SkTimerDone(
-SK_AC  *pAC,           /* Adapters context */
-SK_IOC Ioc)            /* IoContext */
-{
-       timer_done(pAC,Ioc,1) ;
-}
-
-
-static void    timer_done(
-SK_AC  *pAC,           /* Adapters context */
-SK_IOC Ioc,            /* IoContext */
-int    Restart)        /* Do we need to restart the Hardware timer ? */
-{
-       SK_U32          Delta ;
-       SK_TIMER        *pTm ;
-       SK_TIMER        *pTComp ;       /* Timer completed now now */
-       SK_TIMER        **ppLast ;      /* Next field of Last timer to be deq */
-       int             Done = 0 ;
-
-       Delta = SkHwtRead(pAC,Ioc) ;
-       ppLast = &pAC->Tim.StQueue ;
-       pTm = pAC->Tim.StQueue ;
-       while (pTm && !Done) {
-               if (Delta >= pTm->TmDelta) {
-                       /* Timer ran out */
-                       pTm->TmActive = SK_FALSE ;
-                       Delta -= pTm->TmDelta ;
-                       ppLast = &pTm->TmNext ;
-                       pTm = pTm->TmNext ;
-               } else {
-                       /* We found the first timer that did not run out */
-                       pTm->TmDelta -= Delta ;
-                       Delta = 0 ;
-                       Done = 1 ;
-               }
-       }
-       *ppLast = 0 ;
-       /*
-        * pTm points to the first Timer that did not run out.
-        * StQueue points to the first Timer that run out.
-        */
-
-       for ( pTComp = pAC->Tim.StQueue ; pTComp ; pTComp = pTComp->TmNext) {
-               SkEventQueue(pAC,pTComp->TmClass, pTComp->TmEvent,
-                       pTComp->TmPara) ;
-       }
-
-       /* Set head of timer queue to the first timer that did not run out */
-       pAC->Tim.StQueue = pTm ;
-
-       if (Restart && pAC->Tim.StQueue) {
-               /* Restart HW timer */
-               SkHwtStart(pAC,Ioc,pAC->Tim.StQueue->TmDelta) ;
-       }
-}
-
-/* End of file */
+/******************************************************************************
+ *
+ * Name:       sktimer.c
+ * Project:    GEnesis, PCI Gigabit Ethernet Adapter
+ * Version:    $Revision: 1.1.1.1 $
+ * Date:       $Date: 2009/03/25 22:22:09 $
+ * Purpose:    High level timer functions.
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ *     (C)Copyright 1998,1999 SysKonnect,
+ *     a business unit of Schneider & Koch & Co. Datensysteme GmbH.
+ *
+ *     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.
+ *
+ *     The information in this file is provided "AS IS" without warranty.
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ * History:
+ *
+ *     $Log: sktimer.c,v $
+ *     Revision 1.1.1.1  2009/03/25 22:22:09  kenagy
+ *     no message
+ *     
+ *     Revision 1.12  1999/11/22 13:38:51  cgoos
+ *     Changed license header to GPL.
+ *
+ *     Revision 1.11  1998/12/17 13:24:13  gklug
+ *     fix: restart problem: do NOT destroy timer queue if init 1 is done
+ *
+ *     Revision 1.10  1998/10/15 15:11:36  gklug
+ *     fix: ID_sccs to SysKonnectFileId
+ *
+ *     Revision 1.9  1998/09/15 15:15:04  cgoos
+ *     Changed TRUE/FALSE to SK_TRUE/SK_FALSE
+ *
+ *     Revision 1.8  1998/09/08 08:47:55  gklug
+ *     add: init level handling
+ *
+ *     Revision 1.7  1998/08/19 09:50:53  gklug
+ *     fix: remove struct keyword from c-code (see CCC) add typedefs
+ *
+ *     Revision 1.6  1998/08/17 13:43:13  gklug
+ *     chg: Parameter will be union of 64bit para, 2 times SK_U32 or SK_PTR
+ *
+ *     Revision 1.5  1998/08/14 07:09:14  gklug
+ *     fix: chg pAc -> pAC
+ *
+ *     Revision 1.4  1998/08/07 12:53:46  gklug
+ *     fix: first compiled version
+ *
+ *     Revision 1.3  1998/08/07 09:31:53  gklug
+ *     fix: delta spelling
+ *
+ *     Revision 1.2  1998/08/07 09:31:02  gklug
+ *     adapt functions to new c coding conventions
+ *     rmv: "fast" handling
+ *     chg: inserting of new timer in queue.
+ *     chg: event queue generation when timer runs out
+ *
+ *     Revision 1.1  1998/08/05 11:27:55  gklug
+ *     first version: adapted from SMT
+ *
+ *
+ *
+ *
+ ******************************************************************************/
+
+
+#include <config.h>
+
+/*
+       Event queue and dispatcher
+*/
+static const char SysKonnectFileId[] =
+       "$Header: C:\qaz\__CVS_ROOT/units/or1200_soc/sw/u-boot-2009.03/drivers/net/sk98lin/sktimer.c,v 1.1.1.1 2009/03/25 22:22:09 kenagy Exp $" ;
+
+#include "h/skdrv1st.h"                /* Driver Specific Definitions */
+#include "h/skdrv2nd.h"                /* Adapter Control- and Driver specific Def. */
+
+#ifdef __C2MAN__
+/*
+       Event queue management.
+
+       General Description:
+
+ */
+intro()
+{}
+#endif
+
+
+/* Forward declaration */
+static void timer_done(SK_AC *pAC,SK_IOC Ioc,int Restart);
+
+
+/*
+ * Inits the software timer
+ *
+ * needs to be called during Init level 1.
+ */
+void   SkTimerInit(
+SK_AC  *pAC,           /* Adapters context */
+SK_IOC Ioc,            /* IoContext */
+int    Level)          /* Init Level */
+{
+       switch (Level) {
+       case SK_INIT_DATA:
+               pAC->Tim.StQueue = 0 ;
+               break;
+       case SK_INIT_IO:
+               SkHwtInit(pAC,Ioc) ;
+               SkTimerDone(pAC, Ioc);
+               break;
+       default:
+               break;
+       }
+}
+
+/*
+ * Stops a high level timer
+ * - If a timer is not in the queue the function returns normally, too.
+ */
+void   SkTimerStop(
+SK_AC          *pAC,           /* Adapters context */
+SK_IOC         Ioc,            /* IoContext */
+SK_TIMER       *pTimer)        /* Timer Pointer to be started */
+{
+       SK_TIMER        **ppTimPrev ;
+       SK_TIMER        *pTm ;
+
+       /*
+        * remove timer from queue
+        */
+       pTimer->TmActive = SK_FALSE ;
+       if (pAC->Tim.StQueue == pTimer && !pTimer->TmNext) {
+               SkHwtStop(pAC,Ioc) ;
+       }
+       for (ppTimPrev = &pAC->Tim.StQueue ; (pTm = *ppTimPrev) ;
+               ppTimPrev = &pTm->TmNext ) {
+               if (pTm == pTimer) {
+                       /*
+                        * Timer found in queue
+                        * - dequeue it and
+                        * - correct delta of the next timer
+                        */
+                       *ppTimPrev = pTm->TmNext ;
+
+                       if (pTm->TmNext) {
+                               /* correct delta of next timer in queue */
+                               pTm->TmNext->TmDelta += pTm->TmDelta ;
+                       }
+                       return ;
+               }
+       }
+}
+
+/*
+ * Start a high level software timer
+ */
+void   SkTimerStart(
+SK_AC          *pAC,           /* Adapters context */
+SK_IOC         Ioc,            /* IoContext */
+SK_TIMER       *pTimer,        /* Timer Pointer to be started */
+SK_U32         Time,           /* Time value */
+SK_U32         Class,          /* Event Class for this timer */
+SK_U32         Event,          /* Event Value for this timer */
+SK_EVPARA      Para)           /* Event Parameter for this timer */
+{
+       SK_TIMER        **ppTimPrev ;
+       SK_TIMER        *pTm ;
+       SK_U32          Delta ;
+
+       Time /= 16 ;            /* input is uS, clock ticks are 16uS */
+       if (!Time)
+               Time = 1 ;
+
+       SkTimerStop(pAC,Ioc,pTimer) ;
+
+       pTimer->TmClass = Class ;
+       pTimer->TmEvent = Event ;
+       pTimer->TmPara = Para ;
+       pTimer->TmActive = SK_TRUE ;
+
+       if (!pAC->Tim.StQueue) {
+               /* First Timer to be started */
+               pAC->Tim.StQueue = pTimer ;
+               pTimer->TmNext = 0 ;
+               pTimer->TmDelta = Time ;
+               SkHwtStart(pAC,Ioc,Time) ;
+               return ;
+       }
+
+       /*
+        * timer correction
+        */
+       timer_done(pAC,Ioc,0) ;
+
+       /*
+        * find position in queue
+        */
+       Delta = 0 ;
+       for (ppTimPrev = &pAC->Tim.StQueue ; (pTm = *ppTimPrev) ;
+               ppTimPrev = &pTm->TmNext ) {
+               if (Delta + pTm->TmDelta > Time) {
+                       /* Position found */
+                       /* Here the timer needs to be inserted. */
+                       break ;
+               }
+               Delta += pTm->TmDelta ;
+       }
+
+       /* insert in queue */
+       *ppTimPrev = pTimer ;
+       pTimer->TmNext = pTm ;
+       pTimer->TmDelta = Time - Delta ;
+
+       if (pTm) {
+               /* There is a next timer
+                * -> correct its Delta value.
+                */
+               pTm->TmDelta -= pTimer->TmDelta ;
+       }
+
+       /*
+        * start new with first
+        */
+       SkHwtStart(pAC,Ioc,pAC->Tim.StQueue->TmDelta) ;
+}
+
+
+void   SkTimerDone(
+SK_AC  *pAC,           /* Adapters context */
+SK_IOC Ioc)            /* IoContext */
+{
+       timer_done(pAC,Ioc,1) ;
+}
+
+
+static void    timer_done(
+SK_AC  *pAC,           /* Adapters context */
+SK_IOC Ioc,            /* IoContext */
+int    Restart)        /* Do we need to restart the Hardware timer ? */
+{
+       SK_U32          Delta ;
+       SK_TIMER        *pTm ;
+       SK_TIMER        *pTComp ;       /* Timer completed now now */
+       SK_TIMER        **ppLast ;      /* Next field of Last timer to be deq */
+       int             Done = 0 ;
+
+       Delta = SkHwtRead(pAC,Ioc) ;
+       ppLast = &pAC->Tim.StQueue ;
+       pTm = pAC->Tim.StQueue ;
+       while (pTm && !Done) {
+               if (Delta >= pTm->TmDelta) {
+                       /* Timer ran out */
+                       pTm->TmActive = SK_FALSE ;
+                       Delta -= pTm->TmDelta ;
+                       ppLast = &pTm->TmNext ;
+                       pTm = pTm->TmNext ;
+               } else {
+                       /* We found the first timer that did not run out */
+                       pTm->TmDelta -= Delta ;
+                       Delta = 0 ;
+                       Done = 1 ;
+               }
+       }
+       *ppLast = 0 ;
+       /*
+        * pTm points to the first Timer that did not run out.
+        * StQueue points to the first Timer that run out.
+        */
+
+       for ( pTComp = pAC->Tim.StQueue ; pTComp ; pTComp = pTComp->TmNext) {
+               SkEventQueue(pAC,pTComp->TmClass, pTComp->TmEvent,
+                       pTComp->TmPara) ;
+       }
+
+       /* Set head of timer queue to the first timer that did not run out */
+       pAC->Tim.StQueue = pTm ;
+
+       if (Restart && pAC->Tim.StQueue) {
+               /* Restart HW timer */
+               SkHwtStart(pAC,Ioc,pAC->Tim.StQueue->TmDelta) ;
+       }
+}
+
+/* End of file */
diff -Naur u-boot-2009.03_orig/drivers/net/sk98lin/skvpd.c u-boot-2009.03/drivers/net/sk98lin/skvpd.c
--- u-boot-2009.03_orig/drivers/net/sk98lin/skvpd.c     2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/drivers/net/sk98lin/skvpd.c  2009-03-31 14:54:29.831250400 -0700
@@ -1,1325 +1,1328 @@
-/******************************************************************************
- *
- * Name:       skvpd.c
- * Project:    GEnesis, PCI Gigabit Ethernet Adapter
- * Version:    $Revision: 1.37 $
- * Date:       $Date: 2003/01/13 10:42:45 $
- * Purpose:    Shared software to read and write VPD data
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- *     (C)Copyright 1998-2003 SysKonnect GmbH.
- *
- *     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.
- *
- *     The information in this file is provided "AS IS" without warranty.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * History:
- *
- *     $Log: skvpd.c,v $
- *     Revision 1.37  2003/01/13 10:42:45  rschmidt
- *     Replaced check for PCI device Id from YUKON with GENESIS
- *     to set the VPD size in VpdInit()
- *     Editorial changes
- *
- *     Revision 1.36  2002/11/14 15:16:56  gheinig
- *     Added const specifier to key and buf parameters for VpdPara, VpdRead
- *     and VpdWrite for Diag 7 GUI
- *
- *     Revision 1.35  2002/10/21 14:31:59  gheinig
- *     Took out CVS web garbage at head of file
- *
- *     Revision 1.34  2002/10/21 11:47:24  gheinig
- *     Reverted to version 1.32 due to unwanted commit
- *
- *     Revision 1.32  2002/10/14 16:04:29  rschmidt
- *     Added saving of VPD ROM Size from PCI_OUR_REG_2
- *     Avoid reading of PCI_OUR_REG_2 in VpdTransferBlock()
- *     Editorial changes
- *
- *     Revision 1.31  2002/09/10 09:21:32  mkarl
- *     Replaced all if(GIChipId == CHIP_ID_GENESIS) with new entry GIGenesis
- *
- *     Revision 1.30  2002/09/09 14:43:03  mkarl
- *     changes for diagnostics in order to read VPD data before the adapter
- *     has been initialized
- *     editorial changes
- *
- *     Revision 1.29  2002/07/26 13:20:43  mkarl
- *     added Yukon support
- *     save size of VPD in pAC->vpd.vpd_size
- *
- *     Revision 1.28  2002/04/02 15:31:47  afischer
- *     Bug fix in VpdWait()
- *
- *     Revision 1.27  2000/08/10 11:29:06  rassmann
- *     Editorial changes.
- *     Preserving 32-bit alignment in structs for the adapter context.
- *     Removed unused function VpdWriteDword() (#if 0).
- *     Made VpdReadKeyword() available for SKDIAG only.
- *
- *     Revision 1.26  2000/06/13 08:00:01  mkarl
- *     additional cast to avoid compile problems in 64 bit environment
- *
- *     Revision 1.25  1999/11/22 13:39:32  cgoos
- *     Changed license header to GPL.
- *
- *     Revision 1.24  1999/03/11 14:25:49  malthoff
- *     Replace __STDC__ with SK_KR_PROTO.
- *
- *     Revision 1.23  1999/01/11 15:13:11  gklug
- *     fix: syntax error
- *
- *     Revision 1.22  1998/10/30 06:41:15  gklug
- *     rmv: WARNING
- *
- *     Revision 1.21  1998/10/29 07:15:14  gklug
- *     fix: Write Stream function needs verify.
- *
- *     Revision 1.20  1998/10/28 18:05:08  gklug
- *     chg: no DEBUG in VpdMayWrite
- *
- *     Revision 1.19  1998/10/28 15:56:11  gklug
- *     fix: Return len at end of ReadStream
- *     fix: Write even less than 4 bytes correctly
- *
- *     Revision 1.18  1998/10/28 09:00:47  gklug
- *     fix: unreferenced local vars
- *
- *     Revision 1.17  1998/10/28 08:25:45  gklug
- *     fix: WARNING
- *
- *     Revision 1.16  1998/10/28 08:17:30  gklug
- *     fix: typo
- *
- *     Revision 1.15  1998/10/28 07:50:32  gklug
- *     fix: typo
- *
- *     Revision 1.14  1998/10/28 07:20:38  gklug
- *     chg: Interface functions to use IoC as parameter as well
- *     fix: VpdRead/WriteDWord now returns SK_U32
- *     chg: VPD_IN/OUT names conform to SK_IN/OUT
- *     add: usage of VPD_IN/OUT8 macros
- *     add: VpdRead/Write Stream functions to r/w a stream of data
- *     fix: VpdTransferBlock swapped illegal
- *     add: VpdMayWrite
- *
- *     Revision 1.13  1998/10/22 10:02:37  gklug
- *     fix: SysKonnectFileId typo
- *
- *     Revision 1.12  1998/10/20 10:01:01  gklug
- *     fix: parameter to SkOsGetTime
- *
- *     Revision 1.11  1998/10/15 12:51:48  malthoff
- *     Remove unrequired parameter p in vpd_setup_para().
- *
- *     Revision 1.10  1998/10/08 14:52:43  malthoff
- *     Remove CvsId by SysKonnectFileId.
- *
- *     Revision 1.9  1998/09/16 07:33:52  malthoff
- *     replace memcmp() by SK_MEMCMP and
- *     memcpy() by SK_MEMCPY() to be
- *     independent from the 'C' Standard Library.
- *
- *     Revision 1.8  1998/08/19 12:52:35  malthoff
- *     compiler fix: use SK_VPD_KEY instead of S_VPD.
- *
- *     Revision 1.7  1998/08/19 08:14:01  gklug
- *     fix: remove struct keyword as much as possible from the C-code (see CCC)
- *
- *     Revision 1.6  1998/08/18 13:03:58  gklug
- *     SkOsGetTime now returns SK_U64
- *
- *     Revision 1.5  1998/08/18 08:17:29  malthoff
- *     Ensure we issue a VPD read in vpd_read_dword().
- *     Discard all VPD keywords other than Vx or Yx, where
- *     x is '0..9' or 'A..Z'.
- *
- *     Revision 1.4  1998/07/03 14:52:19  malthoff
- *     Add category SK_DBGCAT_FATAL to some debug macros.
- *     bug fix: correct the keyword name check in vpd_write().
- *
- *     Revision 1.3  1998/06/26 11:16:53  malthoff
- *     Correct the modified File Identifier.
- *
- *     Revision 1.2  1998/06/26 11:13:43  malthoff
- *     Modify the File Identifier.
- *
- *     Revision 1.1  1998/06/19 14:11:08  malthoff
- *     Created, Tests with AIX were performed successfully
- *
- *
- ******************************************************************************/
-
-#include <config.h>
-
-/*
-       Please refer skvpd.txt for infomation how to include this module
- */
-static const char SysKonnectFileId[] =
-       "@(#)$Id: skvpd.c,v 1.37 2003/01/13 10:42:45 rschmidt Exp $ (C) SK";
-
-#include "h/skdrv1st.h"
-#include "h/sktypes.h"
-#include "h/skdebug.h"
-#include "h/skdrv2nd.h"
-
-/*
- * Static functions
- */
-#ifndef SK_KR_PROTO
-static SK_VPD_PARA     *vpd_find_para(
-       SK_AC   *pAC,
-       const char      *key,
-       SK_VPD_PARA *p);
-#else  /* SK_KR_PROTO */
-static SK_VPD_PARA     *vpd_find_para();
-#endif /* SK_KR_PROTO */
-
-/*
- * waits for a completion of a VPD transfer
- * The VPD transfer must complete within SK_TICKS_PER_SEC/16
- *
- * returns     0:      success, transfer completes
- *             error   exit(9) with a error message
- */
-static int VpdWait(
-SK_AC  *pAC,   /* Adapters context */
-SK_IOC IoC,    /* IO Context */
-int            event)  /* event to wait for (VPD_READ / VPD_write) completion*/
-{
-       SK_U64  start_time;
-       SK_U16  state;
-
-       SK_DBG_MSG(pAC,SK_DBGMOD_VPD, SK_DBGCAT_CTRL,
-               ("VPD wait for %s\n", event?"Write":"Read"));
-       start_time = SkOsGetTime(pAC);
-       do {
-               if (SkOsGetTime(pAC) - start_time > SK_TICKS_PER_SEC) {
-
-                       /* Bug fix AF: Thu Mar 28 2002
-                        * Do not call: VPD_STOP(pAC, IoC);
-                        * A pending VPD read cycle can not be aborted by writing
-                        * VPD_WRITE to the PCI_VPD_ADR_REG (VPD address register).
-                        * Although the write threshold in the OUR-register protects
-                        * VPD read only space from being overwritten this does not
-                        * protect a VPD read from being `converted` into a VPD write
-                        * operation (on the fly). As a consequence the VPD_STOP would
-                        * delete VPD read only data. In case of any problems with the
-                        * I2C bus we exit the loop here. The I2C read operation can
-                        * not be aborted except by a reset (->LR).
-                        */
-                       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_FATAL | SK_DBGCAT_ERR,
-                               ("ERROR:VPD wait timeout\n"));
-                       return(1);
-               }
-
-               VPD_IN16(pAC, IoC, PCI_VPD_ADR_REG, &state);
-
-               SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_CTRL,
-                       ("state = %x, event %x\n",state,event));
-       } while((int)(state & PCI_VPD_FLAG) == event);
-
-       return(0);
-}
-
-#ifdef SKDIAG
-
-/*
- * Read the dword at address 'addr' from the VPD EEPROM.
- *
- * Needed Time:        MIN 1,3 ms      MAX 2,6 ms
- *
- * Note: The DWord is returned in the endianess of the machine the routine
- *       is running on.
- *
- * Returns the data read.
- */
-SK_U32 VpdReadDWord(
-SK_AC  *pAC,   /* Adapters context */
-SK_IOC IoC,    /* IO Context */
-int            addr)   /* VPD address */
-{
-       SK_U32  Rtv;
-
-       /* start VPD read */
-       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_CTRL,
-               ("VPD read dword at 0x%x\n",addr));
-       addr &= ~VPD_WRITE;             /* ensure the R/W bit is set to read */
-
-       VPD_OUT16(pAC, IoC, PCI_VPD_ADR_REG, (SK_U16)addr);
-
-       /* ignore return code here */
-       (void)VpdWait(pAC, IoC, VPD_READ);
-
-       /* Don't swap here, it's a data stream of bytes */
-       Rtv = 0;
-
-       VPD_IN32(pAC, IoC, PCI_VPD_DAT_REG, &Rtv);
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_CTRL,
-               ("VPD read dword data = 0x%x\n",Rtv));
-       return(Rtv);
-}
-
-#endif /* SKDIAG */
-
-#if 0
-
-/*
-       Write the dword 'data' at address 'addr' into the VPD EEPROM, and
-       verify that the data is written.
-
- Needed Time:
-
-.                              MIN             MAX
-. -------------------------------------------------------------------
-. write                                1.8 ms          3.6 ms
-. internal write cyles         0.7 ms          7.0 ms
-. -------------------------------------------------------------------
-. over all program time                2.5 ms          10.6 ms
-. read                         1.3 ms          2.6 ms
-. -------------------------------------------------------------------
-. over all                     3.8 ms          13.2 ms
-.
-
-
- Returns       0:      success
-                       1:      error,  I2C transfer does not terminate
-                       2:      error,  data verify error
-
- */
-static int VpdWriteDWord(
-SK_AC  *pAC,   /* pAC pointer */
-SK_IOC IoC,    /* IO Context */
-int            addr,   /* VPD address */
-SK_U32 data)   /* VPD data to write */
-{
-       /* start VPD write */
-       /* Don't swap here, it's a data stream of bytes */
-       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_CTRL,
-               ("VPD write dword at addr 0x%x, data = 0x%x\n",addr,data));
-       VPD_OUT32(pAC, IoC, PCI_VPD_DAT_REG, (SK_U32)data);
-       /* But do it here */
-       addr |= VPD_WRITE;
-
-       VPD_OUT16(pAC, IoC, PCI_VPD_ADR_REG, (SK_U16)(addr | VPD_WRITE));
-
-       /* this may take up to 10,6 ms */
-       if (VpdWait(pAC, IoC, VPD_WRITE)) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR,
-                       ("Write Timed Out\n"));
-               return(1);
-       };
-
-       /* verify data */
-       if (VpdReadDWord(pAC, IoC, addr) != data) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR | SK_DBGCAT_FATAL,
-                       ("Data Verify Error\n"));
-               return(2);
-       }
-       return(0);
-}      /* VpdWriteDWord */
-
-#endif /* 0 */
-
-/*
- *     Read one Stream of 'len' bytes of VPD data, starting at 'addr' from
- *     or to the I2C EEPROM.
- *
- * Returns number of bytes read / written.
- */
-static int VpdWriteStream(
-SK_AC  *pAC,   /* Adapters context */
-SK_IOC IoC,    /* IO Context */
-char   *buf,   /* data buffer */
-int            Addr,   /* VPD start address */
-int            Len)    /* number of bytes to read / to write */
-{
-       int             i;
-       int             j;
-       SK_U16  AdrReg;
-       int             Rtv;
-       SK_U8   * pComp;        /* Compare pointer */
-       SK_U8   Data;           /* Input Data for Compare */
-
-       /* Init Compare Pointer */
-       pComp = (SK_U8 *) buf;
-
-       for (i = 0; i < Len; i++, buf++) {
-               if ((i%sizeof(SK_U32)) == 0) {
-                       /*
-                        * At the begin of each cycle read the Data Reg
-                        * So it is initialized even if only a few bytes
-                        * are written.
-                        */
-                       AdrReg = (SK_U16) Addr;
-                       AdrReg &= ~VPD_WRITE;   /* READ operation */
-
-                       VPD_OUT16(pAC, IoC, PCI_VPD_ADR_REG, AdrReg);
-
-                       /* Wait for termination */
-                       Rtv = VpdWait(pAC, IoC, VPD_READ);
-                       if (Rtv != 0) {
-                               return(i);
-                       }
-               }
-
-               /* Write current Byte */
-               VPD_OUT8(pAC, IoC, PCI_VPD_DAT_REG + (i%sizeof(SK_U32)),
-                               *(SK_U8*)buf);
-
-               if (((i%sizeof(SK_U32)) == 3) || (i == (Len - 1))) {
-                       /* New Address needs to be written to VPD_ADDR reg */
-                       AdrReg = (SK_U16) Addr;
-                       Addr += sizeof(SK_U32);
-                       AdrReg |= VPD_WRITE;    /* WRITE operation */
-
-                       VPD_OUT16(pAC, IoC, PCI_VPD_ADR_REG, AdrReg);
-
-                       /* Wait for termination */
-                       Rtv = VpdWait(pAC, IoC, VPD_WRITE);
-                       if (Rtv != 0) {
-                               SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR,
-                                       ("Write Timed Out\n"));
-                               return(i - (i%sizeof(SK_U32)));
-                       }
-
-                       /*
-                        * Now re-read to verify
-                        */
-                       AdrReg &= ~VPD_WRITE;   /* READ operation */
-
-                       VPD_OUT16(pAC, IoC, PCI_VPD_ADR_REG, AdrReg);
-
-                       /* Wait for termination */
-                       Rtv = VpdWait(pAC, IoC, VPD_READ);
-                       if (Rtv != 0) {
-                               SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR,
-                                       ("Verify Timed Out\n"));
-                               return(i - (i%sizeof(SK_U32)));
-                       }
-
-                       for (j = 0; j <= (int)(i%sizeof(SK_U32)); j++, pComp++) {
-
-                               VPD_IN8(pAC, IoC, PCI_VPD_DAT_REG + j, &Data);
-
-                               if (Data != *pComp) {
-                                       /* Verify Error */
-                                       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR,
-                                               ("WriteStream Verify Error\n"));
-                                       return(i - (i%sizeof(SK_U32)) + j);
-                               }
-                       }
-               }
-       }
-
-       return(Len);
-}
-
-
-/*
- *     Read one Stream of 'len' bytes of VPD data, starting at 'addr' from
- *     or to the I2C EEPROM.
- *
- * Returns number of bytes read / written.
- */
-static int VpdReadStream(
-SK_AC  *pAC,   /* Adapters context */
-SK_IOC IoC,    /* IO Context */
-char   *buf,   /* data buffer */
-int            Addr,   /* VPD start address */
-int            Len)    /* number of bytes to read / to write */
-{
-       int             i;
-       SK_U16  AdrReg;
-       int             Rtv;
-
-       for (i = 0; i < Len; i++, buf++) {
-               if ((i%sizeof(SK_U32)) == 0) {
-                       /* New Address needs to be written to VPD_ADDR reg */
-                       AdrReg = (SK_U16) Addr;
-                       Addr += sizeof(SK_U32);
-                       AdrReg &= ~VPD_WRITE;   /* READ operation */
-
-                       VPD_OUT16(pAC, IoC, PCI_VPD_ADR_REG, AdrReg);
-
-                       /* Wait for termination */
-                       Rtv = VpdWait(pAC, IoC, VPD_READ);
-                       if (Rtv != 0) {
-                               return(i);
-                       }
-               }
-               VPD_IN8(pAC, IoC, PCI_VPD_DAT_REG + (i%sizeof(SK_U32)),
-                       (SK_U8 *)buf);
-       }
-
-       return(Len);
-}
-
-/*
- *     Read ore writes 'len' bytes of VPD data, starting at 'addr' from
- *     or to the I2C EEPROM.
- *
- * Returns number of bytes read / written.
- */
-static int VpdTransferBlock(
-SK_AC  *pAC,   /* Adapters context */
-SK_IOC IoC,    /* IO Context */
-char   *buf,   /* data buffer */
-int            addr,   /* VPD start address */
-int            len,    /* number of bytes to read / to write */
-int            dir)    /* transfer direction may be VPD_READ or VPD_WRITE */
-{
-       int             Rtv;    /* Return value */
-       int             vpd_rom_size;
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_CTRL,
-               ("VPD %s block, addr = 0x%x, len = %d\n",
-               dir ? "write" : "read", addr, len));
-
-       if (len == 0)
-               return(0);
-
-       vpd_rom_size = pAC->vpd.rom_size;
-
-       if (addr > vpd_rom_size - 4) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR | SK_DBGCAT_FATAL,
-                       ("Address error: 0x%x, exp. < 0x%x\n",
-                       addr, vpd_rom_size - 4));
-               return(0);
-       }
-
-       if (addr + len > vpd_rom_size) {
-               len = vpd_rom_size - addr;
-               SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR,
-                       ("Warning: len was cut to %d\n", len));
-       }
-
-       if (dir == VPD_READ) {
-               Rtv = VpdReadStream(pAC, IoC, buf, addr, len);
-       }
-       else {
-               Rtv = VpdWriteStream(pAC, IoC, buf, addr, len);
-       }
-
-       return(Rtv);
-}
-
-#ifdef SKDIAG
-
-/*
- *     Read 'len' bytes of VPD data, starting at 'addr'.
- *
- * Returns number of bytes read.
- */
-int VpdReadBlock(
-SK_AC  *pAC,   /* pAC pointer */
-SK_IOC IoC,    /* IO Context */
-char   *buf,   /* buffer were the data should be stored */
-int            addr,   /* start reading at the VPD address */
-int            len)    /* number of bytes to read */
-{
-       return(VpdTransferBlock(pAC, IoC, buf, addr, len, VPD_READ));
-}
-
-/*
- *     Write 'len' bytes of *but to the VPD EEPROM, starting at 'addr'.
- *
- * Returns number of bytes writes.
- */
-int VpdWriteBlock(
-SK_AC  *pAC,   /* pAC pointer */
-SK_IOC IoC,    /* IO Context */
-char   *buf,   /* buffer, holds the data to write */
-int            addr,   /* start writing at the VPD address */
-int            len)    /* number of bytes to write */
-{
-       return(VpdTransferBlock(pAC, IoC, buf, addr, len, VPD_WRITE));
-}
-#endif /* SKDIAG */
-
-/*
- * (re)initialize the VPD buffer
- *
- * Reads the VPD data from the EEPROM into the VPD buffer.
- * Get the remaining read only and read / write space.
- *
- * return      0:      success
- *             1:      fatal VPD error
- */
-static int VpdInit(
-SK_AC  *pAC,   /* Adapters context */
-SK_IOC IoC)    /* IO Context */
-{
-       SK_VPD_PARA *r, rp;     /* RW or RV */
-       int             i;
-       unsigned char   x;
-       int             vpd_size;
-       SK_U16  dev_id;
-       SK_U32  our_reg2;
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_INIT, ("VpdInit .. "));
-
-       VPD_IN16(pAC, IoC, PCI_DEVICE_ID, &dev_id);
-
-       VPD_IN32(pAC, IoC, PCI_OUR_REG_2, &our_reg2);
-
-       pAC->vpd.rom_size = 256 << ((our_reg2 & PCI_VPD_ROM_SZ) >> 14);
-
-       /*
-        * this function might get used before the hardware is initialized
-        * therefore we cannot always trust in GIChipId
-        */
-       if (((pAC->vpd.v.vpd_status & VPD_VALID) == 0 &&
-               dev_id != VPD_DEV_ID_GENESIS) ||
-               ((pAC->vpd.v.vpd_status & VPD_VALID) != 0 &&
-               !pAC->GIni.GIGenesis)) {
-
-               /* for Yukon the VPD size is always 256 */
-               vpd_size = VPD_SIZE_YUKON;
-       }
-       else {
-               /* Genesis uses the maximum ROM size up to 512 for VPD */
-               if (pAC->vpd.rom_size > VPD_SIZE_GENESIS) {
-                       vpd_size = VPD_SIZE_GENESIS;
-               }
-               else {
-                       vpd_size = pAC->vpd.rom_size;
-               }
-       }
-
-       /* read the VPD data into the VPD buffer */
-       if (VpdTransferBlock(pAC, IoC, pAC->vpd.vpd_buf, 0, vpd_size, VPD_READ)
-               != vpd_size) {
-
-               SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR,
-                       ("Block Read Error\n"));
-               return(1);
-       }
-
-       pAC->vpd.vpd_size = vpd_size;
-
-       /* find the end tag of the RO area */
-       if (!(r = vpd_find_para(pAC, VPD_RV, &rp))) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR | SK_DBGCAT_FATAL,
-                       ("Encoding Error: RV Tag not found\n"));
-               return(1);
-       }
-
-       if (r->p_val + r->p_len > pAC->vpd.vpd_buf + vpd_size/2) {
-               SK_DBG_MSG(pAC,SK_DBGMOD_VPD,SK_DBGCAT_ERR | SK_DBGCAT_FATAL,
-                       ("Encoding Error: Invalid VPD struct size\n"));
-               return(1);
-       }
-       pAC->vpd.v.vpd_free_ro = r->p_len - 1;
-
-       /* test the checksum */
-       for (i = 0, x = 0; (unsigned)i <= (unsigned)vpd_size/2 - r->p_len; i++) {
-               x += pAC->vpd.vpd_buf[i];
-       }
-
-       if (x != 0) {
-               /* checksum error */
-               SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR | SK_DBGCAT_FATAL,
-                       ("VPD Checksum Error\n"));
-               return(1);
-       }
-
-       /* find and check the end tag of the RW area */
-       if (!(r = vpd_find_para(pAC, VPD_RW, &rp))) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR | SK_DBGCAT_FATAL,
-                       ("Encoding Error: RV Tag not found\n"));
-               return(1);
-       }
-
-       if (r->p_val < pAC->vpd.vpd_buf + vpd_size/2) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR | SK_DBGCAT_FATAL,
-                       ("Encoding Error: Invalid VPD struct size\n"));
-               return(1);
-       }
-       pAC->vpd.v.vpd_free_rw = r->p_len;
-
-       /* everything seems to be ok */
-       if (pAC->GIni.GIChipId != 0) {
-               pAC->vpd.v.vpd_status |= VPD_VALID;
-       }
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_INIT,
-               ("done. Free RO = %d, Free RW = %d\n",
-               pAC->vpd.v.vpd_free_ro, pAC->vpd.v.vpd_free_rw));
-
-       return(0);
-}
-
-/*
- *     find the Keyword 'key' in the VPD buffer and fills the
- *     parameter struct 'p' with it's values
- *
- * returns     *p      success
- *             0:      parameter was not found or VPD encoding error
- */
-static SK_VPD_PARA *vpd_find_para(
-SK_AC          *pAC,   /* common data base */
-const char     *key,   /* keyword to find (e.g. "MN") */
-SK_VPD_PARA *p)                /* parameter description struct */
-{
-       char *v ;       /* points to VPD buffer */
-       int max;        /* Maximum Number of Iterations */
-
-       v = pAC->vpd.vpd_buf;
-       max = 128;
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_CTRL,
-               ("VPD find para %s .. ",key));
-
-       /* check mandatory resource type ID string (Product Name) */
-       if (*v != (char)RES_ID) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR | SK_DBGCAT_FATAL,
-                       ("Error: 0x%x missing\n", RES_ID));
-               return(0);
-       }
-
-       if (strcmp(key, VPD_NAME) == 0) {
-               p->p_len = VPD_GET_RES_LEN(v);
-               p->p_val = VPD_GET_VAL(v);
-               SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_CTRL,
-                       ("found, len = %d\n", p->p_len));
-               return(p);
-       }
-
-       v += 3 + VPD_GET_RES_LEN(v) + 3;
-       for (;; ) {
-               if (SK_MEMCMP(key,v,2) == 0) {
-                       p->p_len = VPD_GET_VPD_LEN(v);
-                       p->p_val = VPD_GET_VAL(v);
-                       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_CTRL,
-                               ("found, len = %d\n",p->p_len));
-                       return(p);
-               }
-
-               /* exit when reaching the "RW" Tag or the maximum of itera. */
-               max--;
-               if (SK_MEMCMP(VPD_RW,v,2) == 0 || max == 0) {
-                       break;
-               }
-
-               if (SK_MEMCMP(VPD_RV,v,2) == 0) {
-                       v += 3 + VPD_GET_VPD_LEN(v) + 3;        /* skip VPD-W */
-               }
-               else {
-                       v += 3 + VPD_GET_VPD_LEN(v);
-               }
-               SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_CTRL,
-                       ("scanning '%c%c' len = %d\n",v[0],v[1],v[2]));
-       }
-
-#ifdef DEBUG
-       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_CTRL, ("not found\n"));
-       if (max == 0) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR | SK_DBGCAT_FATAL,
-                       ("Key/Len Encoding error\n"));
-       }
-#endif /* DEBUG */
-       return(0);
-}
-
-/*
- *     Move 'n' bytes. Begin with the last byte if 'n' is > 0,
- *     Start with the last byte if n is < 0.
- *
- * returns nothing
- */
-static void vpd_move_para(
-char   *start,         /* start of memory block */
-char   *end,           /* end of memory block to move */
-int            n)                      /* number of bytes the memory block has to be moved */
-{
-       char *p;
-       int i;          /* number of byte copied */
-
-       if (n == 0)
-               return;
-
-       i = (int) (end - start + 1);
-       if (n < 0) {
-               p = start + n;
-               while (i != 0) {
-                       *p++ = *start++;
-                       i--;
-               }
-       }
-       else {
-               p = end + n;
-               while (i != 0) {
-                       *p-- = *end--;
-                       i--;
-               }
-       }
-}
-
-/*
- *     setup the VPD keyword 'key' at 'ip'.
- *
- * returns nothing
- */
-static void vpd_insert_key(
-const char     *key,   /* keyword to insert */
-const char     *buf,   /* buffer with the keyword value */
-int            len,            /* length of the value string */
-char   *ip)            /* inseration point */
-{
-       SK_VPD_KEY *p;
-
-       p = (SK_VPD_KEY *) ip;
-       p->p_key[0] = key[0];
-       p->p_key[1] = key[1];
-       p->p_len = (unsigned char) len;
-       SK_MEMCPY(&p->p_val,buf,len);
-}
-
-/*
- *     Setup the VPD end tag "RV" / "RW".
- *     Also correct the remaining space variables vpd_free_ro / vpd_free_rw.
- *
- * returns     0:      success
- *             1:      encoding error
- */
-static int vpd_mod_endtag(
-SK_AC  *pAC,           /* common data base */
-char   *etp)           /* end pointer input position */
-{
-       SK_VPD_KEY *p;
-       unsigned char   x;
-       int     i;
-       int     vpd_size;
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_CTRL,
-               ("VPD modify endtag at 0x%x = '%c%c'\n",etp,etp[0],etp[1]));
-
-       vpd_size = pAC->vpd.vpd_size;
-
-       p = (SK_VPD_KEY *) etp;
-
-       if (p->p_key[0] != 'R' || (p->p_key[1] != 'V' && p->p_key[1] != 'W')) {
-               /* something wrong here, encoding error */
-               SK_DBG_MSG(pAC,SK_DBGMOD_VPD,SK_DBGCAT_ERR | SK_DBGCAT_FATAL,
-                       ("Encoding Error: invalid end tag\n"));
-               return(1);
-       }
-       if (etp > pAC->vpd.vpd_buf + vpd_size/2) {
-               /* create "RW" tag */
-               p->p_len = (unsigned char)(pAC->vpd.vpd_buf+vpd_size-etp-3-1);
-               pAC->vpd.v.vpd_free_rw = (int) p->p_len;
-               i = pAC->vpd.v.vpd_free_rw;
-               etp += 3;
-       }
-       else {
-               /* create "RV" tag */
-               p->p_len = (unsigned char)(pAC->vpd.vpd_buf+vpd_size/2-etp-3);
-               pAC->vpd.v.vpd_free_ro = (int) p->p_len - 1;
-
-               /* setup checksum */
-               for (i = 0, x = 0; i < vpd_size/2 - p->p_len; i++) {
-                       x += pAC->vpd.vpd_buf[i];
-               }
-               p->p_val = (char) 0 - x;
-               i = pAC->vpd.v.vpd_free_ro;
-               etp += 4;
-       }
-       while (i) {
-               *etp++ = 0x00;
-               i--;
-       }
-
-       return(0);
-}
-
-/*
- *     Insert a VPD keyword into the VPD buffer.
- *
- *     The keyword 'key' is inserted at the position 'ip' in the
- *     VPD buffer.
- *     The keywords behind the input position will
- *     be moved. The VPD end tag "RV" or "RW" is generated again.
- *
- * returns     0:      success
- *             2:      value string was cut
- *             4:      VPD full, keyword was not written
- *             6:      fatal VPD error
- *
- */
-int    VpdSetupPara(
-SK_AC  *pAC,           /* common data base */
-const char     *key,   /* keyword to insert */
-const char     *buf,   /* buffer with the keyword value */
-int            len,            /* length of the keyword value */
-int            type,           /* VPD_RO_KEY or VPD_RW_KEY */
-int            op)                     /* operation to do: ADD_KEY or OWR_KEY */
-{
-       SK_VPD_PARA vp;
-       char    *etp;           /* end tag position */
-       int     free;           /* remaining space in selected area */
-       char    *ip;            /* input position inside the VPD buffer */
-       int     rtv;            /* return code */
-       int     head;           /* additional haeder bytes to move */
-       int     found;          /* additinoal bytes if the keyword was found */
-       int vpd_size;
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_CTRL,
-               ("VPD setup para key = %s, val = %s\n",key,buf));
-
-       vpd_size = pAC->vpd.vpd_size;
-
-       rtv = 0;
-       ip = 0;
-       if (type == VPD_RW_KEY) {
-               /* end tag is "RW" */
-               free = pAC->vpd.v.vpd_free_rw;
-               etp = pAC->vpd.vpd_buf + (vpd_size - free - 1 - 3);
-       }
-       else {
-               /* end tag is "RV" */
-               free = pAC->vpd.v.vpd_free_ro;
-               etp = pAC->vpd.vpd_buf + (vpd_size/2 - free - 4);
-       }
-       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_CTRL,
-               ("Free RO = %d, Free RW = %d\n",
-               pAC->vpd.v.vpd_free_ro, pAC->vpd.v.vpd_free_rw));
-
-       head = 0;
-       found = 0;
-       if (op == OWR_KEY) {
-               if (vpd_find_para(pAC, key, &vp)) {
-                       found = 3;
-                       ip = vp.p_val - 3;
-                       free += vp.p_len + 3;
-                       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_CTRL,
-                               ("Overwrite Key\n"));
-               }
-               else {
-                       op = ADD_KEY;
-                       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_CTRL,
-                               ("Add Key\n"));
-               }
-       }
-       if (op == ADD_KEY) {
-               ip = etp;
-               vp.p_len = 0;
-               head = 3;
-       }
-
-       if (len + 3 > free) {
-               if (free < 7) {
-                       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR,
-                               ("VPD Buffer Overflow, keyword not written\n"));
-                       return(4);
-               }
-               /* cut it again */
-               len = free - 3;
-               rtv = 2;
-               SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR,
-                       ("VPD Buffer Full, Keyword was cut\n"));
-       }
-
-       vpd_move_para(ip + vp.p_len + found, etp+2, len-vp.p_len+head);
-       vpd_insert_key(key, buf, len, ip);
-       if (vpd_mod_endtag(pAC, etp + len - vp.p_len + head)) {
-               pAC->vpd.v.vpd_status &= ~VPD_VALID;
-               SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR,
-                       ("VPD Encoding Error\n"));
-               return(6);
-       }
-
-       return(rtv);
-}
-
-
-/*
- *     Read the contents of the VPD EEPROM and copy it to the
- *     VPD buffer if not already done.
- *
- * return:     A pointer to the vpd_status structure. The structure contains
- *             this fields.
- */
-SK_VPD_STATUS *VpdStat(
-SK_AC  *pAC,   /* Adapters context */
-SK_IOC IoC)    /* IO Context */
-{
-       if ((pAC->vpd.v.vpd_status & VPD_VALID) == 0) {
-               (void)VpdInit(pAC, IoC);
-       }
-       return(&pAC->vpd.v);
-}
-
-
-/*
- *     Read the contents of the VPD EEPROM and copy it to the VPD
- *     buffer if not already done.
- *     Scan the VPD buffer for VPD keywords and create the VPD
- *     keyword list by copying the keywords to 'buf', all after
- *     each other and terminated with a '\0'.
- *
- * Exceptions: o The Resource Type ID String (product name) is called "Name"
- *             o The VPD end tags 'RV' and 'RW' are not listed
- *
- *     The number of copied keywords is counted in 'elements'.
- *
- * returns     0:      success
- *             2:      buffer overfull, one or more keywords are missing
- *             6:      fatal VPD error
- *
- *     example values after returning:
- *
- *             buf =   "Name\0PN\0EC\0MN\0SN\0CP\0VF\0VL\0YA\0"
- *             *len =          30
- *             *elements =      9
- */
-int VpdKeys(
-SK_AC  *pAC,           /* common data base */
-SK_IOC IoC,            /* IO Context */
-char   *buf,           /* buffer where to copy the keywords */
-int            *len,           /* buffer length */
-int            *elements)      /* number of keywords returned */
-{
-       char *v;
-       int n;
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_RX, ("list VPD keys .. "));
-       *elements = 0;
-       if ((pAC->vpd.v.vpd_status & VPD_VALID) == 0) {
-               if (VpdInit(pAC, IoC) != 0) {
-                       *len = 0;
-                       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR,
-                               ("VPD Init Error, terminated\n"));
-                       return(6);
-               }
-       }
-
-       if ((signed)strlen(VPD_NAME) + 1 <= *len) {
-               v = pAC->vpd.vpd_buf;
-               strcpy(buf,VPD_NAME);
-               n = strlen(VPD_NAME) + 1;
-               buf += n;
-               *elements = 1;
-               SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_RX,
-                       ("'%c%c' ",v[0],v[1]));
-       }
-       else {
-               *len = 0;
-               SK_DBG_MSG(pAC,SK_DBGMOD_VPD,SK_DBGCAT_ERR,
-                       ("buffer overflow\n"));
-               return(2);
-       }
-
-       v += 3 + VPD_GET_RES_LEN(v) + 3;
-       for (;; ) {
-               /* exit when reaching the "RW" Tag */
-               if (SK_MEMCMP(VPD_RW,v,2) == 0) {
-                       break;
-               }
-
-               if (SK_MEMCMP(VPD_RV,v,2) == 0) {
-                       v += 3 + VPD_GET_VPD_LEN(v) + 3;        /* skip VPD-W */
-                       continue;
-               }
-
-               if (n+3 <= *len) {
-                       SK_MEMCPY(buf,v,2);
-                       buf += 2;
-                       *buf++ = '\0';
-                       n += 3;
-                       v += 3 + VPD_GET_VPD_LEN(v);
-                       *elements += 1;
-                       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_RX,
-                               ("'%c%c' ",v[0],v[1]));
-               }
-               else {
-                       *len = n;
-                       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR,
-                               ("buffer overflow\n"));
-                       return(2);
-               }
-       }
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_RX, ("\n"));
-       *len = n;
-       return(0);
-}
-
-
-/*
- *     Read the contents of the VPD EEPROM and copy it to the
- *     VPD buffer if not already done. Search for the VPD keyword
- *     'key' and copy its value to 'buf'. Add a terminating '\0'.
- *     If the value does not fit into the buffer cut it after
- *     'len' - 1 bytes.
- *
- * returns     0:      success
- *             1:      keyword not found
- *             2:      value string was cut
- *             3:      VPD transfer timeout
- *             6:      fatal VPD error
- */
-int VpdRead(
-SK_AC          *pAC,   /* common data base */
-SK_IOC         IoC,    /* IO Context */
-const char     *key,   /* keyword to read (e.g. "MN") */
-char           *buf,   /* buffer where to copy the keyword value */
-int                    *len)   /* buffer length */
-{
-       SK_VPD_PARA *p, vp;
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_RX, ("VPD read %s .. ", key));
-       if ((pAC->vpd.v.vpd_status & VPD_VALID) == 0) {
-               if (VpdInit(pAC, IoC) != 0) {
-                       *len = 0;
-                       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR,
-                               ("VPD init error\n"));
-                       return(6);
-               }
-       }
-
-       if ((p = vpd_find_para(pAC, key, &vp)) != NULL) {
-               if (p->p_len > (*(unsigned *)len)-1) {
-                       p->p_len = *len - 1;
-               }
-               SK_MEMCPY(buf, p->p_val, p->p_len);
-               buf[p->p_len] = '\0';
-               *len = p->p_len;
-               SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_RX,
-                       ("%c%c%c%c.., len = %d\n",
-                       buf[0],buf[1],buf[2],buf[3],*len));
-       }
-       else {
-               *len = 0;
-               SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR, ("not found\n"));
-               return(1);
-       }
-       return(0);
-}
-
-
-/*
- *     Check whether a given key may be written
- *
- * returns
- *     SK_TRUE         Yes it may be written
- *     SK_FALSE        No it may be written
- */
-SK_BOOL VpdMayWrite(
-char   *key)   /* keyword to write (allowed values "Yx", "Vx") */
-{
-       if ((*key != 'Y' && *key != 'V') ||
-               key[1] < '0' || key[1] > 'Z' ||
-               (key[1] > '9' && key[1] < 'A') || strlen(key) != 2) {
-
-               return(SK_FALSE);
-       }
-       return(SK_TRUE);
-}
-
-/*
- *     Read the contents of the VPD EEPROM and copy it to the VPD
- *     buffer if not already done. Insert/overwrite the keyword 'key'
- *     in the VPD buffer. Cut the keyword value if it does not fit
- *     into the VPD read / write area.
- *
- * returns     0:      success
- *             2:      value string was cut
- *             3:      VPD transfer timeout
- *             4:      VPD full, keyword was not written
- *             5:      keyword cannot be written
- *             6:      fatal VPD error
- */
-int VpdWrite(
-SK_AC          *pAC,   /* common data base */
-SK_IOC         IoC,    /* IO Context */
-const char     *key,   /* keyword to write (allowed values "Yx", "Vx") */
-const char     *buf)   /* buffer where the keyword value can be read from */
-{
-       int len;                /* length of the keyword to write */
-       int rtv;                /* return code */
-       int rtv2;
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_TX,
-               ("VPD write %s = %s\n",key,buf));
-
-       if ((*key != 'Y' && *key != 'V') ||
-               key[1] < '0' || key[1] > 'Z' ||
-               (key[1] > '9' && key[1] < 'A') || strlen(key) != 2) {
-
-               SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR,
-                       ("illegal key tag, keyword not written\n"));
-               return(5);
-       }
-
-       if ((pAC->vpd.v.vpd_status & VPD_VALID) == 0) {
-               if (VpdInit(pAC, IoC) != 0) {
-                       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR,
-                               ("VPD init error\n"));
-                       return(6);
-               }
-       }
-
-       rtv = 0;
-       len = strlen(buf);
-       if (len > VPD_MAX_LEN) {
-               /* cut it */
-               len = VPD_MAX_LEN;
-               rtv = 2;
-               SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR,
-                       ("keyword too long, cut after %d bytes\n",VPD_MAX_LEN));
-       }
-       if ((rtv2 = VpdSetupPara(pAC, key, buf, len, VPD_RW_KEY, OWR_KEY)) != 0) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR,
-                       ("VPD write error\n"));
-               return(rtv2);
-       }
-
-       return(rtv);
-}
-
-/*
- *     Read the contents of the VPD EEPROM and copy it to the
- *     VPD buffer if not already done. Remove the VPD keyword
- *     'key' from the VPD buffer.
- *     Only the keywords in the read/write area can be deleted.
- *     Keywords in the read only area cannot be deleted.
- *
- * returns     0:      success, keyword was removed
- *             1:      keyword not found
- *             5:      keyword cannot be deleted
- *             6:      fatal VPD error
- */
-int VpdDelete(
-SK_AC  *pAC,   /* common data base */
-SK_IOC IoC,    /* IO Context */
-char   *key)   /* keyword to read (e.g. "MN") */
-{
-       SK_VPD_PARA *p, vp;
-       char *etp;
-       int     vpd_size;
-
-       vpd_size = pAC->vpd.vpd_size;
-
-       SK_DBG_MSG(pAC,SK_DBGMOD_VPD,SK_DBGCAT_TX,("VPD delete key %s\n",key));
-       if ((pAC->vpd.v.vpd_status & VPD_VALID) == 0) {
-               if (VpdInit(pAC, IoC) != 0) {
-                       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR,
-                               ("VPD init error\n"));
-                       return(6);
-               }
-       }
-
-       if ((p = vpd_find_para(pAC, key, &vp)) != NULL) {
-               if (p->p_val < pAC->vpd.vpd_buf + vpd_size/2) {
-                       /* try to delete read only keyword */
-                       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR,
-                               ("cannot delete RO keyword\n"));
-                       return(5);
-               }
-
-               etp = pAC->vpd.vpd_buf + (vpd_size-pAC->vpd.v.vpd_free_rw-1-3);
-
-               vpd_move_para(vp.p_val+vp.p_len, etp+2,
-                       - ((int)(vp.p_len + 3)));
-               if (vpd_mod_endtag(pAC, etp - vp.p_len - 3)) {
-                       pAC->vpd.v.vpd_status &= ~VPD_VALID;
-                       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR,
-                               ("VPD encoding error\n"));
-                       return(6);
-               }
-       }
-       else {
-               SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR,
-                       ("keyword not found\n"));
-               return(1);
-       }
-
-       return(0);
-}
-
-/*
- *     If the VPD buffer contains valid data write the VPD
- *     read/write area back to the VPD EEPROM.
- *
- * returns     0:      success
- *             3:      VPD transfer timeout
- */
-int VpdUpdate(
-SK_AC  *pAC,   /* Adapters context */
-SK_IOC IoC)    /* IO Context */
-{
-       int vpd_size;
-
-       vpd_size = pAC->vpd.vpd_size;
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_TX, ("VPD update .. "));
-       if ((pAC->vpd.v.vpd_status & VPD_VALID) != 0) {
-               if (VpdTransferBlock(pAC, IoC, pAC->vpd.vpd_buf + vpd_size/2,
-                       vpd_size/2, vpd_size/2, VPD_WRITE) != vpd_size/2) {
-
-                       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR,
-                               ("transfer timed out\n"));
-                       return(3);
-               }
-       }
-       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_TX, ("done\n"));
-       return(0);
-}
-
-
-/*
- *     Read the contents of the VPD EEPROM and copy it to the VPD buffer
- *     if not already done. If the keyword "VF" is not present it will be
- *     created and the error log message will be stored to this keyword.
- *     If "VF" is not present the error log message will be stored to the
- *     keyword "VL". "VL" will created or overwritten if "VF" is present.
- *     The VPD read/write area is saved to the VPD EEPROM.
- *
- * returns nothing, errors will be ignored.
- */
-void VpdErrLog(
-SK_AC  *pAC,   /* common data base */
-SK_IOC IoC,    /* IO Context */
-char   *msg)   /* error log message */
-{
-       SK_VPD_PARA *v, vf;     /* VF */
-       int len;
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_TX,
-               ("VPD error log msg %s\n", msg));
-       if ((pAC->vpd.v.vpd_status & VPD_VALID) == 0) {
-               if (VpdInit(pAC, IoC) != 0) {
-                       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR,
-                               ("VPD init error\n"));
-                       return;
-               }
-       }
-
-       len = strlen(msg);
-       if (len > VPD_MAX_LEN) {
-               /* cut it */
-               len = VPD_MAX_LEN;
-       }
-       if ((v = vpd_find_para(pAC, VPD_VF, &vf)) != NULL) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_TX, ("overwrite VL\n"));
-               (void)VpdSetupPara(pAC, VPD_VL, msg, len, VPD_RW_KEY, OWR_KEY);
-       }
-       else {
-               SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_TX, ("write VF\n"));
-               (void)VpdSetupPara(pAC, VPD_VF, msg, len, VPD_RW_KEY, ADD_KEY);
-       }
-
-       (void)VpdUpdate(pAC, IoC);
-}
+/******************************************************************************
+ *
+ * Name:       skvpd.c
+ * Project:    GEnesis, PCI Gigabit Ethernet Adapter
+ * Version:    $Revision: 1.1.1.1 $
+ * Date:       $Date: 2009/03/25 22:22:09 $
+ * Purpose:    Shared software to read and write VPD data
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ *     (C)Copyright 1998-2003 SysKonnect GmbH.
+ *
+ *     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.
+ *
+ *     The information in this file is provided "AS IS" without warranty.
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ * History:
+ *
+ *     $Log: skvpd.c,v $
+ *     Revision 1.1.1.1  2009/03/25 22:22:09  kenagy
+ *     no message
+ *     
+ *     Revision 1.37  2003/01/13 10:42:45  rschmidt
+ *     Replaced check for PCI device Id from YUKON with GENESIS
+ *     to set the VPD size in VpdInit()
+ *     Editorial changes
+ *
+ *     Revision 1.36  2002/11/14 15:16:56  gheinig
+ *     Added const specifier to key and buf parameters for VpdPara, VpdRead
+ *     and VpdWrite for Diag 7 GUI
+ *
+ *     Revision 1.35  2002/10/21 14:31:59  gheinig
+ *     Took out CVS web garbage at head of file
+ *
+ *     Revision 1.34  2002/10/21 11:47:24  gheinig
+ *     Reverted to version 1.32 due to unwanted commit
+ *
+ *     Revision 1.32  2002/10/14 16:04:29  rschmidt
+ *     Added saving of VPD ROM Size from PCI_OUR_REG_2
+ *     Avoid reading of PCI_OUR_REG_2 in VpdTransferBlock()
+ *     Editorial changes
+ *
+ *     Revision 1.31  2002/09/10 09:21:32  mkarl
+ *     Replaced all if(GIChipId == CHIP_ID_GENESIS) with new entry GIGenesis
+ *
+ *     Revision 1.30  2002/09/09 14:43:03  mkarl
+ *     changes for diagnostics in order to read VPD data before the adapter
+ *     has been initialized
+ *     editorial changes
+ *
+ *     Revision 1.29  2002/07/26 13:20:43  mkarl
+ *     added Yukon support
+ *     save size of VPD in pAC->vpd.vpd_size
+ *
+ *     Revision 1.28  2002/04/02 15:31:47  afischer
+ *     Bug fix in VpdWait()
+ *
+ *     Revision 1.27  2000/08/10 11:29:06  rassmann
+ *     Editorial changes.
+ *     Preserving 32-bit alignment in structs for the adapter context.
+ *     Removed unused function VpdWriteDword() (#if 0).
+ *     Made VpdReadKeyword() available for SKDIAG only.
+ *
+ *     Revision 1.26  2000/06/13 08:00:01  mkarl
+ *     additional cast to avoid compile problems in 64 bit environment
+ *
+ *     Revision 1.25  1999/11/22 13:39:32  cgoos
+ *     Changed license header to GPL.
+ *
+ *     Revision 1.24  1999/03/11 14:25:49  malthoff
+ *     Replace __STDC__ with SK_KR_PROTO.
+ *
+ *     Revision 1.23  1999/01/11 15:13:11  gklug
+ *     fix: syntax error
+ *
+ *     Revision 1.22  1998/10/30 06:41:15  gklug
+ *     rmv: WARNING
+ *
+ *     Revision 1.21  1998/10/29 07:15:14  gklug
+ *     fix: Write Stream function needs verify.
+ *
+ *     Revision 1.20  1998/10/28 18:05:08  gklug
+ *     chg: no DEBUG in VpdMayWrite
+ *
+ *     Revision 1.19  1998/10/28 15:56:11  gklug
+ *     fix: Return len at end of ReadStream
+ *     fix: Write even less than 4 bytes correctly
+ *
+ *     Revision 1.18  1998/10/28 09:00:47  gklug
+ *     fix: unreferenced local vars
+ *
+ *     Revision 1.17  1998/10/28 08:25:45  gklug
+ *     fix: WARNING
+ *
+ *     Revision 1.16  1998/10/28 08:17:30  gklug
+ *     fix: typo
+ *
+ *     Revision 1.15  1998/10/28 07:50:32  gklug
+ *     fix: typo
+ *
+ *     Revision 1.14  1998/10/28 07:20:38  gklug
+ *     chg: Interface functions to use IoC as parameter as well
+ *     fix: VpdRead/WriteDWord now returns SK_U32
+ *     chg: VPD_IN/OUT names conform to SK_IN/OUT
+ *     add: usage of VPD_IN/OUT8 macros
+ *     add: VpdRead/Write Stream functions to r/w a stream of data
+ *     fix: VpdTransferBlock swapped illegal
+ *     add: VpdMayWrite
+ *
+ *     Revision 1.13  1998/10/22 10:02:37  gklug
+ *     fix: SysKonnectFileId typo
+ *
+ *     Revision 1.12  1998/10/20 10:01:01  gklug
+ *     fix: parameter to SkOsGetTime
+ *
+ *     Revision 1.11  1998/10/15 12:51:48  malthoff
+ *     Remove unrequired parameter p in vpd_setup_para().
+ *
+ *     Revision 1.10  1998/10/08 14:52:43  malthoff
+ *     Remove CvsId by SysKonnectFileId.
+ *
+ *     Revision 1.9  1998/09/16 07:33:52  malthoff
+ *     replace memcmp() by SK_MEMCMP and
+ *     memcpy() by SK_MEMCPY() to be
+ *     independent from the 'C' Standard Library.
+ *
+ *     Revision 1.8  1998/08/19 12:52:35  malthoff
+ *     compiler fix: use SK_VPD_KEY instead of S_VPD.
+ *
+ *     Revision 1.7  1998/08/19 08:14:01  gklug
+ *     fix: remove struct keyword as much as possible from the C-code (see CCC)
+ *
+ *     Revision 1.6  1998/08/18 13:03:58  gklug
+ *     SkOsGetTime now returns SK_U64
+ *
+ *     Revision 1.5  1998/08/18 08:17:29  malthoff
+ *     Ensure we issue a VPD read in vpd_read_dword().
+ *     Discard all VPD keywords other than Vx or Yx, where
+ *     x is '0..9' or 'A..Z'.
+ *
+ *     Revision 1.4  1998/07/03 14:52:19  malthoff
+ *     Add category SK_DBGCAT_FATAL to some debug macros.
+ *     bug fix: correct the keyword name check in vpd_write().
+ *
+ *     Revision 1.3  1998/06/26 11:16:53  malthoff
+ *     Correct the modified File Identifier.
+ *
+ *     Revision 1.2  1998/06/26 11:13:43  malthoff
+ *     Modify the File Identifier.
+ *
+ *     Revision 1.1  1998/06/19 14:11:08  malthoff
+ *     Created, Tests with AIX were performed successfully
+ *
+ *
+ ******************************************************************************/
+
+#include <config.h>
+
+/*
+       Please refer skvpd.txt for infomation how to include this module
+ */
+static const char SysKonnectFileId[] =
+       "@(#)$Id: skvpd.c,v 1.1.1.1 2009/03/25 22:22:09 kenagy Exp $ (C) SK";
+
+#include "h/skdrv1st.h"
+#include "h/sktypes.h"
+#include "h/skdebug.h"
+#include "h/skdrv2nd.h"
+
+/*
+ * Static functions
+ */
+#ifndef SK_KR_PROTO
+static SK_VPD_PARA     *vpd_find_para(
+       SK_AC   *pAC,
+       const char      *key,
+       SK_VPD_PARA *p);
+#else  /* SK_KR_PROTO */
+static SK_VPD_PARA     *vpd_find_para();
+#endif /* SK_KR_PROTO */
+
+/*
+ * waits for a completion of a VPD transfer
+ * The VPD transfer must complete within SK_TICKS_PER_SEC/16
+ *
+ * returns     0:      success, transfer completes
+ *             error   exit(9) with a error message
+ */
+static int VpdWait(
+SK_AC  *pAC,   /* Adapters context */
+SK_IOC IoC,    /* IO Context */
+int            event)  /* event to wait for (VPD_READ / VPD_write) completion*/
+{
+       SK_U64  start_time;
+       SK_U16  state;
+
+       SK_DBG_MSG(pAC,SK_DBGMOD_VPD, SK_DBGCAT_CTRL,
+               ("VPD wait for %s\n", event?"Write":"Read"));
+       start_time = SkOsGetTime(pAC);
+       do {
+               if (SkOsGetTime(pAC) - start_time > SK_TICKS_PER_SEC) {
+
+                       /* Bug fix AF: Thu Mar 28 2002
+                        * Do not call: VPD_STOP(pAC, IoC);
+                        * A pending VPD read cycle can not be aborted by writing
+                        * VPD_WRITE to the PCI_VPD_ADR_REG (VPD address register).
+                        * Although the write threshold in the OUR-register protects
+                        * VPD read only space from being overwritten this does not
+                        * protect a VPD read from being `converted` into a VPD write
+                        * operation (on the fly). As a consequence the VPD_STOP would
+                        * delete VPD read only data. In case of any problems with the
+                        * I2C bus we exit the loop here. The I2C read operation can
+                        * not be aborted except by a reset (->LR).
+                        */
+                       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_FATAL | SK_DBGCAT_ERR,
+                               ("ERROR:VPD wait timeout\n"));
+                       return(1);
+               }
+
+               VPD_IN16(pAC, IoC, PCI_VPD_ADR_REG, &state);
+
+               SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_CTRL,
+                       ("state = %x, event %x\n",state,event));
+       } while((int)(state & PCI_VPD_FLAG) == event);
+
+       return(0);
+}
+
+#ifdef SKDIAG
+
+/*
+ * Read the dword at address 'addr' from the VPD EEPROM.
+ *
+ * Needed Time:        MIN 1,3 ms      MAX 2,6 ms
+ *
+ * Note: The DWord is returned in the endianess of the machine the routine
+ *       is running on.
+ *
+ * Returns the data read.
+ */
+SK_U32 VpdReadDWord(
+SK_AC  *pAC,   /* Adapters context */
+SK_IOC IoC,    /* IO Context */
+int            addr)   /* VPD address */
+{
+       SK_U32  Rtv;
+
+       /* start VPD read */
+       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_CTRL,
+               ("VPD read dword at 0x%x\n",addr));
+       addr &= ~VPD_WRITE;             /* ensure the R/W bit is set to read */
+
+       VPD_OUT16(pAC, IoC, PCI_VPD_ADR_REG, (SK_U16)addr);
+
+       /* ignore return code here */
+       (void)VpdWait(pAC, IoC, VPD_READ);
+
+       /* Don't swap here, it's a data stream of bytes */
+       Rtv = 0;
+
+       VPD_IN32(pAC, IoC, PCI_VPD_DAT_REG, &Rtv);
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_CTRL,
+               ("VPD read dword data = 0x%x\n",Rtv));
+       return(Rtv);
+}
+
+#endif /* SKDIAG */
+
+#if 0
+
+/*
+       Write the dword 'data' at address 'addr' into the VPD EEPROM, and
+       verify that the data is written.
+
+ Needed Time:
+
+.                              MIN             MAX
+. -------------------------------------------------------------------
+. write                                1.8 ms          3.6 ms
+. internal write cyles         0.7 ms          7.0 ms
+. -------------------------------------------------------------------
+. over all program time                2.5 ms          10.6 ms
+. read                         1.3 ms          2.6 ms
+. -------------------------------------------------------------------
+. over all                     3.8 ms          13.2 ms
+.
+
+
+ Returns       0:      success
+                       1:      error,  I2C transfer does not terminate
+                       2:      error,  data verify error
+
+ */
+static int VpdWriteDWord(
+SK_AC  *pAC,   /* pAC pointer */
+SK_IOC IoC,    /* IO Context */
+int            addr,   /* VPD address */
+SK_U32 data)   /* VPD data to write */
+{
+       /* start VPD write */
+       /* Don't swap here, it's a data stream of bytes */
+       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_CTRL,
+               ("VPD write dword at addr 0x%x, data = 0x%x\n",addr,data));
+       VPD_OUT32(pAC, IoC, PCI_VPD_DAT_REG, (SK_U32)data);
+       /* But do it here */
+       addr |= VPD_WRITE;
+
+       VPD_OUT16(pAC, IoC, PCI_VPD_ADR_REG, (SK_U16)(addr | VPD_WRITE));
+
+       /* this may take up to 10,6 ms */
+       if (VpdWait(pAC, IoC, VPD_WRITE)) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR,
+                       ("Write Timed Out\n"));
+               return(1);
+       };
+
+       /* verify data */
+       if (VpdReadDWord(pAC, IoC, addr) != data) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR | SK_DBGCAT_FATAL,
+                       ("Data Verify Error\n"));
+               return(2);
+       }
+       return(0);
+}      /* VpdWriteDWord */
+
+#endif /* 0 */
+
+/*
+ *     Read one Stream of 'len' bytes of VPD data, starting at 'addr' from
+ *     or to the I2C EEPROM.
+ *
+ * Returns number of bytes read / written.
+ */
+static int VpdWriteStream(
+SK_AC  *pAC,   /* Adapters context */
+SK_IOC IoC,    /* IO Context */
+char   *buf,   /* data buffer */
+int            Addr,   /* VPD start address */
+int            Len)    /* number of bytes to read / to write */
+{
+       int             i;
+       int             j;
+       SK_U16  AdrReg;
+       int             Rtv;
+       SK_U8   * pComp;        /* Compare pointer */
+       SK_U8   Data;           /* Input Data for Compare */
+
+       /* Init Compare Pointer */
+       pComp = (SK_U8 *) buf;
+
+       for (i = 0; i < Len; i++, buf++) {
+               if ((i%sizeof(SK_U32)) == 0) {
+                       /*
+                        * At the begin of each cycle read the Data Reg
+                        * So it is initialized even if only a few bytes
+                        * are written.
+                        */
+                       AdrReg = (SK_U16) Addr;
+                       AdrReg &= ~VPD_WRITE;   /* READ operation */
+
+                       VPD_OUT16(pAC, IoC, PCI_VPD_ADR_REG, AdrReg);
+
+                       /* Wait for termination */
+                       Rtv = VpdWait(pAC, IoC, VPD_READ);
+                       if (Rtv != 0) {
+                               return(i);
+                       }
+               }
+
+               /* Write current Byte */
+               VPD_OUT8(pAC, IoC, PCI_VPD_DAT_REG + (i%sizeof(SK_U32)),
+                               *(SK_U8*)buf);
+
+               if (((i%sizeof(SK_U32)) == 3) || (i == (Len - 1))) {
+                       /* New Address needs to be written to VPD_ADDR reg */
+                       AdrReg = (SK_U16) Addr;
+                       Addr += sizeof(SK_U32);
+                       AdrReg |= VPD_WRITE;    /* WRITE operation */
+
+                       VPD_OUT16(pAC, IoC, PCI_VPD_ADR_REG, AdrReg);
+
+                       /* Wait for termination */
+                       Rtv = VpdWait(pAC, IoC, VPD_WRITE);
+                       if (Rtv != 0) {
+                               SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR,
+                                       ("Write Timed Out\n"));
+                               return(i - (i%sizeof(SK_U32)));
+                       }
+
+                       /*
+                        * Now re-read to verify
+                        */
+                       AdrReg &= ~VPD_WRITE;   /* READ operation */
+
+                       VPD_OUT16(pAC, IoC, PCI_VPD_ADR_REG, AdrReg);
+
+                       /* Wait for termination */
+                       Rtv = VpdWait(pAC, IoC, VPD_READ);
+                       if (Rtv != 0) {
+                               SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR,
+                                       ("Verify Timed Out\n"));
+                               return(i - (i%sizeof(SK_U32)));
+                       }
+
+                       for (j = 0; j <= (int)(i%sizeof(SK_U32)); j++, pComp++) {
+
+                               VPD_IN8(pAC, IoC, PCI_VPD_DAT_REG + j, &Data);
+
+                               if (Data != *pComp) {
+                                       /* Verify Error */
+                                       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR,
+                                               ("WriteStream Verify Error\n"));
+                                       return(i - (i%sizeof(SK_U32)) + j);
+                               }
+                       }
+               }
+       }
+
+       return(Len);
+}
+
+
+/*
+ *     Read one Stream of 'len' bytes of VPD data, starting at 'addr' from
+ *     or to the I2C EEPROM.
+ *
+ * Returns number of bytes read / written.
+ */
+static int VpdReadStream(
+SK_AC  *pAC,   /* Adapters context */
+SK_IOC IoC,    /* IO Context */
+char   *buf,   /* data buffer */
+int            Addr,   /* VPD start address */
+int            Len)    /* number of bytes to read / to write */
+{
+       int             i;
+       SK_U16  AdrReg;
+       int             Rtv;
+
+       for (i = 0; i < Len; i++, buf++) {
+               if ((i%sizeof(SK_U32)) == 0) {
+                       /* New Address needs to be written to VPD_ADDR reg */
+                       AdrReg = (SK_U16) Addr;
+                       Addr += sizeof(SK_U32);
+                       AdrReg &= ~VPD_WRITE;   /* READ operation */
+
+                       VPD_OUT16(pAC, IoC, PCI_VPD_ADR_REG, AdrReg);
+
+                       /* Wait for termination */
+                       Rtv = VpdWait(pAC, IoC, VPD_READ);
+                       if (Rtv != 0) {
+                               return(i);
+                       }
+               }
+               VPD_IN8(pAC, IoC, PCI_VPD_DAT_REG + (i%sizeof(SK_U32)),
+                       (SK_U8 *)buf);
+       }
+
+       return(Len);
+}
+
+/*
+ *     Read ore writes 'len' bytes of VPD data, starting at 'addr' from
+ *     or to the I2C EEPROM.
+ *
+ * Returns number of bytes read / written.
+ */
+static int VpdTransferBlock(
+SK_AC  *pAC,   /* Adapters context */
+SK_IOC IoC,    /* IO Context */
+char   *buf,   /* data buffer */
+int            addr,   /* VPD start address */
+int            len,    /* number of bytes to read / to write */
+int            dir)    /* transfer direction may be VPD_READ or VPD_WRITE */
+{
+       int             Rtv;    /* Return value */
+       int             vpd_rom_size;
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_CTRL,
+               ("VPD %s block, addr = 0x%x, len = %d\n",
+               dir ? "write" : "read", addr, len));
+
+       if (len == 0)
+               return(0);
+
+       vpd_rom_size = pAC->vpd.rom_size;
+
+       if (addr > vpd_rom_size - 4) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR | SK_DBGCAT_FATAL,
+                       ("Address error: 0x%x, exp. < 0x%x\n",
+                       addr, vpd_rom_size - 4));
+               return(0);
+       }
+
+       if (addr + len > vpd_rom_size) {
+               len = vpd_rom_size - addr;
+               SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR,
+                       ("Warning: len was cut to %d\n", len));
+       }
+
+       if (dir == VPD_READ) {
+               Rtv = VpdReadStream(pAC, IoC, buf, addr, len);
+       }
+       else {
+               Rtv = VpdWriteStream(pAC, IoC, buf, addr, len);
+       }
+
+       return(Rtv);
+}
+
+#ifdef SKDIAG
+
+/*
+ *     Read 'len' bytes of VPD data, starting at 'addr'.
+ *
+ * Returns number of bytes read.
+ */
+int VpdReadBlock(
+SK_AC  *pAC,   /* pAC pointer */
+SK_IOC IoC,    /* IO Context */
+char   *buf,   /* buffer were the data should be stored */
+int            addr,   /* start reading at the VPD address */
+int            len)    /* number of bytes to read */
+{
+       return(VpdTransferBlock(pAC, IoC, buf, addr, len, VPD_READ));
+}
+
+/*
+ *     Write 'len' bytes of *but to the VPD EEPROM, starting at 'addr'.
+ *
+ * Returns number of bytes writes.
+ */
+int VpdWriteBlock(
+SK_AC  *pAC,   /* pAC pointer */
+SK_IOC IoC,    /* IO Context */
+char   *buf,   /* buffer, holds the data to write */
+int            addr,   /* start writing at the VPD address */
+int            len)    /* number of bytes to write */
+{
+       return(VpdTransferBlock(pAC, IoC, buf, addr, len, VPD_WRITE));
+}
+#endif /* SKDIAG */
+
+/*
+ * (re)initialize the VPD buffer
+ *
+ * Reads the VPD data from the EEPROM into the VPD buffer.
+ * Get the remaining read only and read / write space.
+ *
+ * return      0:      success
+ *             1:      fatal VPD error
+ */
+static int VpdInit(
+SK_AC  *pAC,   /* Adapters context */
+SK_IOC IoC)    /* IO Context */
+{
+       SK_VPD_PARA *r, rp;     /* RW or RV */
+       int             i;
+       unsigned char   x;
+       int             vpd_size;
+       SK_U16  dev_id;
+       SK_U32  our_reg2;
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_INIT, ("VpdInit .. "));
+
+       VPD_IN16(pAC, IoC, PCI_DEVICE_ID, &dev_id);
+
+       VPD_IN32(pAC, IoC, PCI_OUR_REG_2, &our_reg2);
+
+       pAC->vpd.rom_size = 256 << ((our_reg2 & PCI_VPD_ROM_SZ) >> 14);
+
+       /*
+        * this function might get used before the hardware is initialized
+        * therefore we cannot always trust in GIChipId
+        */
+       if (((pAC->vpd.v.vpd_status & VPD_VALID) == 0 &&
+               dev_id != VPD_DEV_ID_GENESIS) ||
+               ((pAC->vpd.v.vpd_status & VPD_VALID) != 0 &&
+               !pAC->GIni.GIGenesis)) {
+
+               /* for Yukon the VPD size is always 256 */
+               vpd_size = VPD_SIZE_YUKON;
+       }
+       else {
+               /* Genesis uses the maximum ROM size up to 512 for VPD */
+               if (pAC->vpd.rom_size > VPD_SIZE_GENESIS) {
+                       vpd_size = VPD_SIZE_GENESIS;
+               }
+               else {
+                       vpd_size = pAC->vpd.rom_size;
+               }
+       }
+
+       /* read the VPD data into the VPD buffer */
+       if (VpdTransferBlock(pAC, IoC, pAC->vpd.vpd_buf, 0, vpd_size, VPD_READ)
+               != vpd_size) {
+
+               SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR,
+                       ("Block Read Error\n"));
+               return(1);
+       }
+
+       pAC->vpd.vpd_size = vpd_size;
+
+       /* find the end tag of the RO area */
+       if (!(r = vpd_find_para(pAC, VPD_RV, &rp))) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR | SK_DBGCAT_FATAL,
+                       ("Encoding Error: RV Tag not found\n"));
+               return(1);
+       }
+
+       if (r->p_val + r->p_len > pAC->vpd.vpd_buf + vpd_size/2) {
+               SK_DBG_MSG(pAC,SK_DBGMOD_VPD,SK_DBGCAT_ERR | SK_DBGCAT_FATAL,
+                       ("Encoding Error: Invalid VPD struct size\n"));
+               return(1);
+       }
+       pAC->vpd.v.vpd_free_ro = r->p_len - 1;
+
+       /* test the checksum */
+       for (i = 0, x = 0; (unsigned)i <= (unsigned)vpd_size/2 - r->p_len; i++) {
+               x += pAC->vpd.vpd_buf[i];
+       }
+
+       if (x != 0) {
+               /* checksum error */
+               SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR | SK_DBGCAT_FATAL,
+                       ("VPD Checksum Error\n"));
+               return(1);
+       }
+
+       /* find and check the end tag of the RW area */
+       if (!(r = vpd_find_para(pAC, VPD_RW, &rp))) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR | SK_DBGCAT_FATAL,
+                       ("Encoding Error: RV Tag not found\n"));
+               return(1);
+       }
+
+       if (r->p_val < pAC->vpd.vpd_buf + vpd_size/2) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR | SK_DBGCAT_FATAL,
+                       ("Encoding Error: Invalid VPD struct size\n"));
+               return(1);
+       }
+       pAC->vpd.v.vpd_free_rw = r->p_len;
+
+       /* everything seems to be ok */
+       if (pAC->GIni.GIChipId != 0) {
+               pAC->vpd.v.vpd_status |= VPD_VALID;
+       }
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_INIT,
+               ("done. Free RO = %d, Free RW = %d\n",
+               pAC->vpd.v.vpd_free_ro, pAC->vpd.v.vpd_free_rw));
+
+       return(0);
+}
+
+/*
+ *     find the Keyword 'key' in the VPD buffer and fills the
+ *     parameter struct 'p' with it's values
+ *
+ * returns     *p      success
+ *             0:      parameter was not found or VPD encoding error
+ */
+static SK_VPD_PARA *vpd_find_para(
+SK_AC          *pAC,   /* common data base */
+const char     *key,   /* keyword to find (e.g. "MN") */
+SK_VPD_PARA *p)                /* parameter description struct */
+{
+       char *v ;       /* points to VPD buffer */
+       int max;        /* Maximum Number of Iterations */
+
+       v = pAC->vpd.vpd_buf;
+       max = 128;
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_CTRL,
+               ("VPD find para %s .. ",key));
+
+       /* check mandatory resource type ID string (Product Name) */
+       if (*v != (char)RES_ID) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR | SK_DBGCAT_FATAL,
+                       ("Error: 0x%x missing\n", RES_ID));
+               return(0);
+       }
+
+       if (strcmp(key, VPD_NAME) == 0) {
+               p->p_len = VPD_GET_RES_LEN(v);
+               p->p_val = VPD_GET_VAL(v);
+               SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_CTRL,
+                       ("found, len = %d\n", p->p_len));
+               return(p);
+       }
+
+       v += 3 + VPD_GET_RES_LEN(v) + 3;
+       for (;; ) {
+               if (SK_MEMCMP(key,v,2) == 0) {
+                       p->p_len = VPD_GET_VPD_LEN(v);
+                       p->p_val = VPD_GET_VAL(v);
+                       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_CTRL,
+                               ("found, len = %d\n",p->p_len));
+                       return(p);
+               }
+
+               /* exit when reaching the "RW" Tag or the maximum of itera. */
+               max--;
+               if (SK_MEMCMP(VPD_RW,v,2) == 0 || max == 0) {
+                       break;
+               }
+
+               if (SK_MEMCMP(VPD_RV,v,2) == 0) {
+                       v += 3 + VPD_GET_VPD_LEN(v) + 3;        /* skip VPD-W */
+               }
+               else {
+                       v += 3 + VPD_GET_VPD_LEN(v);
+               }
+               SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_CTRL,
+                       ("scanning '%c%c' len = %d\n",v[0],v[1],v[2]));
+       }
+
+#ifdef DEBUG
+       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_CTRL, ("not found\n"));
+       if (max == 0) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR | SK_DBGCAT_FATAL,
+                       ("Key/Len Encoding error\n"));
+       }
+#endif /* DEBUG */
+       return(0);
+}
+
+/*
+ *     Move 'n' bytes. Begin with the last byte if 'n' is > 0,
+ *     Start with the last byte if n is < 0.
+ *
+ * returns nothing
+ */
+static void vpd_move_para(
+char   *start,         /* start of memory block */
+char   *end,           /* end of memory block to move */
+int            n)                      /* number of bytes the memory block has to be moved */
+{
+       char *p;
+       int i;          /* number of byte copied */
+
+       if (n == 0)
+               return;
+
+       i = (int) (end - start + 1);
+       if (n < 0) {
+               p = start + n;
+               while (i != 0) {
+                       *p++ = *start++;
+                       i--;
+               }
+       }
+       else {
+               p = end + n;
+               while (i != 0) {
+                       *p-- = *end--;
+                       i--;
+               }
+       }
+}
+
+/*
+ *     setup the VPD keyword 'key' at 'ip'.
+ *
+ * returns nothing
+ */
+static void vpd_insert_key(
+const char     *key,   /* keyword to insert */
+const char     *buf,   /* buffer with the keyword value */
+int            len,            /* length of the value string */
+char   *ip)            /* inseration point */
+{
+       SK_VPD_KEY *p;
+
+       p = (SK_VPD_KEY *) ip;
+       p->p_key[0] = key[0];
+       p->p_key[1] = key[1];
+       p->p_len = (unsigned char) len;
+       SK_MEMCPY(&p->p_val,buf,len);
+}
+
+/*
+ *     Setup the VPD end tag "RV" / "RW".
+ *     Also correct the remaining space variables vpd_free_ro / vpd_free_rw.
+ *
+ * returns     0:      success
+ *             1:      encoding error
+ */
+static int vpd_mod_endtag(
+SK_AC  *pAC,           /* common data base */
+char   *etp)           /* end pointer input position */
+{
+       SK_VPD_KEY *p;
+       unsigned char   x;
+       int     i;
+       int     vpd_size;
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_CTRL,
+               ("VPD modify endtag at 0x%x = '%c%c'\n",etp,etp[0],etp[1]));
+
+       vpd_size = pAC->vpd.vpd_size;
+
+       p = (SK_VPD_KEY *) etp;
+
+       if (p->p_key[0] != 'R' || (p->p_key[1] != 'V' && p->p_key[1] != 'W')) {
+               /* something wrong here, encoding error */
+               SK_DBG_MSG(pAC,SK_DBGMOD_VPD,SK_DBGCAT_ERR | SK_DBGCAT_FATAL,
+                       ("Encoding Error: invalid end tag\n"));
+               return(1);
+       }
+       if (etp > pAC->vpd.vpd_buf + vpd_size/2) {
+               /* create "RW" tag */
+               p->p_len = (unsigned char)(pAC->vpd.vpd_buf+vpd_size-etp-3-1);
+               pAC->vpd.v.vpd_free_rw = (int) p->p_len;
+               i = pAC->vpd.v.vpd_free_rw;
+               etp += 3;
+       }
+       else {
+               /* create "RV" tag */
+               p->p_len = (unsigned char)(pAC->vpd.vpd_buf+vpd_size/2-etp-3);
+               pAC->vpd.v.vpd_free_ro = (int) p->p_len - 1;
+
+               /* setup checksum */
+               for (i = 0, x = 0; i < vpd_size/2 - p->p_len; i++) {
+                       x += pAC->vpd.vpd_buf[i];
+               }
+               p->p_val = (char) 0 - x;
+               i = pAC->vpd.v.vpd_free_ro;
+               etp += 4;
+       }
+       while (i) {
+               *etp++ = 0x00;
+               i--;
+       }
+
+       return(0);
+}
+
+/*
+ *     Insert a VPD keyword into the VPD buffer.
+ *
+ *     The keyword 'key' is inserted at the position 'ip' in the
+ *     VPD buffer.
+ *     The keywords behind the input position will
+ *     be moved. The VPD end tag "RV" or "RW" is generated again.
+ *
+ * returns     0:      success
+ *             2:      value string was cut
+ *             4:      VPD full, keyword was not written
+ *             6:      fatal VPD error
+ *
+ */
+int    VpdSetupPara(
+SK_AC  *pAC,           /* common data base */
+const char     *key,   /* keyword to insert */
+const char     *buf,   /* buffer with the keyword value */
+int            len,            /* length of the keyword value */
+int            type,           /* VPD_RO_KEY or VPD_RW_KEY */
+int            op)                     /* operation to do: ADD_KEY or OWR_KEY */
+{
+       SK_VPD_PARA vp;
+       char    *etp;           /* end tag position */
+       int     free;           /* remaining space in selected area */
+       char    *ip;            /* input position inside the VPD buffer */
+       int     rtv;            /* return code */
+       int     head;           /* additional haeder bytes to move */
+       int     found;          /* additinoal bytes if the keyword was found */
+       int vpd_size;
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_CTRL,
+               ("VPD setup para key = %s, val = %s\n",key,buf));
+
+       vpd_size = pAC->vpd.vpd_size;
+
+       rtv = 0;
+       ip = 0;
+       if (type == VPD_RW_KEY) {
+               /* end tag is "RW" */
+               free = pAC->vpd.v.vpd_free_rw;
+               etp = pAC->vpd.vpd_buf + (vpd_size - free - 1 - 3);
+       }
+       else {
+               /* end tag is "RV" */
+               free = pAC->vpd.v.vpd_free_ro;
+               etp = pAC->vpd.vpd_buf + (vpd_size/2 - free - 4);
+       }
+       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_CTRL,
+               ("Free RO = %d, Free RW = %d\n",
+               pAC->vpd.v.vpd_free_ro, pAC->vpd.v.vpd_free_rw));
+
+       head = 0;
+       found = 0;
+       if (op == OWR_KEY) {
+               if (vpd_find_para(pAC, key, &vp)) {
+                       found = 3;
+                       ip = vp.p_val - 3;
+                       free += vp.p_len + 3;
+                       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_CTRL,
+                               ("Overwrite Key\n"));
+               }
+               else {
+                       op = ADD_KEY;
+                       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_CTRL,
+                               ("Add Key\n"));
+               }
+       }
+       if (op == ADD_KEY) {
+               ip = etp;
+               vp.p_len = 0;
+               head = 3;
+       }
+
+       if (len + 3 > free) {
+               if (free < 7) {
+                       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR,
+                               ("VPD Buffer Overflow, keyword not written\n"));
+                       return(4);
+               }
+               /* cut it again */
+               len = free - 3;
+               rtv = 2;
+               SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR,
+                       ("VPD Buffer Full, Keyword was cut\n"));
+       }
+
+       vpd_move_para(ip + vp.p_len + found, etp+2, len-vp.p_len+head);
+       vpd_insert_key(key, buf, len, ip);
+       if (vpd_mod_endtag(pAC, etp + len - vp.p_len + head)) {
+               pAC->vpd.v.vpd_status &= ~VPD_VALID;
+               SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR,
+                       ("VPD Encoding Error\n"));
+               return(6);
+       }
+
+       return(rtv);
+}
+
+
+/*
+ *     Read the contents of the VPD EEPROM and copy it to the
+ *     VPD buffer if not already done.
+ *
+ * return:     A pointer to the vpd_status structure. The structure contains
+ *             this fields.
+ */
+SK_VPD_STATUS *VpdStat(
+SK_AC  *pAC,   /* Adapters context */
+SK_IOC IoC)    /* IO Context */
+{
+       if ((pAC->vpd.v.vpd_status & VPD_VALID) == 0) {
+               (void)VpdInit(pAC, IoC);
+       }
+       return(&pAC->vpd.v);
+}
+
+
+/*
+ *     Read the contents of the VPD EEPROM and copy it to the VPD
+ *     buffer if not already done.
+ *     Scan the VPD buffer for VPD keywords and create the VPD
+ *     keyword list by copying the keywords to 'buf', all after
+ *     each other and terminated with a '\0'.
+ *
+ * Exceptions: o The Resource Type ID String (product name) is called "Name"
+ *             o The VPD end tags 'RV' and 'RW' are not listed
+ *
+ *     The number of copied keywords is counted in 'elements'.
+ *
+ * returns     0:      success
+ *             2:      buffer overfull, one or more keywords are missing
+ *             6:      fatal VPD error
+ *
+ *     example values after returning:
+ *
+ *             buf =   "Name\0PN\0EC\0MN\0SN\0CP\0VF\0VL\0YA\0"
+ *             *len =          30
+ *             *elements =      9
+ */
+int VpdKeys(
+SK_AC  *pAC,           /* common data base */
+SK_IOC IoC,            /* IO Context */
+char   *buf,           /* buffer where to copy the keywords */
+int            *len,           /* buffer length */
+int            *elements)      /* number of keywords returned */
+{
+       char *v;
+       int n;
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_RX, ("list VPD keys .. "));
+       *elements = 0;
+       if ((pAC->vpd.v.vpd_status & VPD_VALID) == 0) {
+               if (VpdInit(pAC, IoC) != 0) {
+                       *len = 0;
+                       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR,
+                               ("VPD Init Error, terminated\n"));
+                       return(6);
+               }
+       }
+
+       if ((signed)strlen(VPD_NAME) + 1 <= *len) {
+               v = pAC->vpd.vpd_buf;
+               strcpy(buf,VPD_NAME);
+               n = strlen(VPD_NAME) + 1;
+               buf += n;
+               *elements = 1;
+               SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_RX,
+                       ("'%c%c' ",v[0],v[1]));
+       }
+       else {
+               *len = 0;
+               SK_DBG_MSG(pAC,SK_DBGMOD_VPD,SK_DBGCAT_ERR,
+                       ("buffer overflow\n"));
+               return(2);
+       }
+
+       v += 3 + VPD_GET_RES_LEN(v) + 3;
+       for (;; ) {
+               /* exit when reaching the "RW" Tag */
+               if (SK_MEMCMP(VPD_RW,v,2) == 0) {
+                       break;
+               }
+
+               if (SK_MEMCMP(VPD_RV,v,2) == 0) {
+                       v += 3 + VPD_GET_VPD_LEN(v) + 3;        /* skip VPD-W */
+                       continue;
+               }
+
+               if (n+3 <= *len) {
+                       SK_MEMCPY(buf,v,2);
+                       buf += 2;
+                       *buf++ = '\0';
+                       n += 3;
+                       v += 3 + VPD_GET_VPD_LEN(v);
+                       *elements += 1;
+                       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_RX,
+                               ("'%c%c' ",v[0],v[1]));
+               }
+               else {
+                       *len = n;
+                       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR,
+                               ("buffer overflow\n"));
+                       return(2);
+               }
+       }
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_RX, ("\n"));
+       *len = n;
+       return(0);
+}
+
+
+/*
+ *     Read the contents of the VPD EEPROM and copy it to the
+ *     VPD buffer if not already done. Search for the VPD keyword
+ *     'key' and copy its value to 'buf'. Add a terminating '\0'.
+ *     If the value does not fit into the buffer cut it after
+ *     'len' - 1 bytes.
+ *
+ * returns     0:      success
+ *             1:      keyword not found
+ *             2:      value string was cut
+ *             3:      VPD transfer timeout
+ *             6:      fatal VPD error
+ */
+int VpdRead(
+SK_AC          *pAC,   /* common data base */
+SK_IOC         IoC,    /* IO Context */
+const char     *key,   /* keyword to read (e.g. "MN") */
+char           *buf,   /* buffer where to copy the keyword value */
+int                    *len)   /* buffer length */
+{
+       SK_VPD_PARA *p, vp;
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_RX, ("VPD read %s .. ", key));
+       if ((pAC->vpd.v.vpd_status & VPD_VALID) == 0) {
+               if (VpdInit(pAC, IoC) != 0) {
+                       *len = 0;
+                       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR,
+                               ("VPD init error\n"));
+                       return(6);
+               }
+       }
+
+       if ((p = vpd_find_para(pAC, key, &vp)) != NULL) {
+               if (p->p_len > (*(unsigned *)len)-1) {
+                       p->p_len = *len - 1;
+               }
+               SK_MEMCPY(buf, p->p_val, p->p_len);
+               buf[p->p_len] = '\0';
+               *len = p->p_len;
+               SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_RX,
+                       ("%c%c%c%c.., len = %d\n",
+                       buf[0],buf[1],buf[2],buf[3],*len));
+       }
+       else {
+               *len = 0;
+               SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR, ("not found\n"));
+               return(1);
+       }
+       return(0);
+}
+
+
+/*
+ *     Check whether a given key may be written
+ *
+ * returns
+ *     SK_TRUE         Yes it may be written
+ *     SK_FALSE        No it may be written
+ */
+SK_BOOL VpdMayWrite(
+char   *key)   /* keyword to write (allowed values "Yx", "Vx") */
+{
+       if ((*key != 'Y' && *key != 'V') ||
+               key[1] < '0' || key[1] > 'Z' ||
+               (key[1] > '9' && key[1] < 'A') || strlen(key) != 2) {
+
+               return(SK_FALSE);
+       }
+       return(SK_TRUE);
+}
+
+/*
+ *     Read the contents of the VPD EEPROM and copy it to the VPD
+ *     buffer if not already done. Insert/overwrite the keyword 'key'
+ *     in the VPD buffer. Cut the keyword value if it does not fit
+ *     into the VPD read / write area.
+ *
+ * returns     0:      success
+ *             2:      value string was cut
+ *             3:      VPD transfer timeout
+ *             4:      VPD full, keyword was not written
+ *             5:      keyword cannot be written
+ *             6:      fatal VPD error
+ */
+int VpdWrite(
+SK_AC          *pAC,   /* common data base */
+SK_IOC         IoC,    /* IO Context */
+const char     *key,   /* keyword to write (allowed values "Yx", "Vx") */
+const char     *buf)   /* buffer where the keyword value can be read from */
+{
+       int len;                /* length of the keyword to write */
+       int rtv;                /* return code */
+       int rtv2;
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_TX,
+               ("VPD write %s = %s\n",key,buf));
+
+       if ((*key != 'Y' && *key != 'V') ||
+               key[1] < '0' || key[1] > 'Z' ||
+               (key[1] > '9' && key[1] < 'A') || strlen(key) != 2) {
+
+               SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR,
+                       ("illegal key tag, keyword not written\n"));
+               return(5);
+       }
+
+       if ((pAC->vpd.v.vpd_status & VPD_VALID) == 0) {
+               if (VpdInit(pAC, IoC) != 0) {
+                       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR,
+                               ("VPD init error\n"));
+                       return(6);
+               }
+       }
+
+       rtv = 0;
+       len = strlen(buf);
+       if (len > VPD_MAX_LEN) {
+               /* cut it */
+               len = VPD_MAX_LEN;
+               rtv = 2;
+               SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR,
+                       ("keyword too long, cut after %d bytes\n",VPD_MAX_LEN));
+       }
+       if ((rtv2 = VpdSetupPara(pAC, key, buf, len, VPD_RW_KEY, OWR_KEY)) != 0) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR,
+                       ("VPD write error\n"));
+               return(rtv2);
+       }
+
+       return(rtv);
+}
+
+/*
+ *     Read the contents of the VPD EEPROM and copy it to the
+ *     VPD buffer if not already done. Remove the VPD keyword
+ *     'key' from the VPD buffer.
+ *     Only the keywords in the read/write area can be deleted.
+ *     Keywords in the read only area cannot be deleted.
+ *
+ * returns     0:      success, keyword was removed
+ *             1:      keyword not found
+ *             5:      keyword cannot be deleted
+ *             6:      fatal VPD error
+ */
+int VpdDelete(
+SK_AC  *pAC,   /* common data base */
+SK_IOC IoC,    /* IO Context */
+char   *key)   /* keyword to read (e.g. "MN") */
+{
+       SK_VPD_PARA *p, vp;
+       char *etp;
+       int     vpd_size;
+
+       vpd_size = pAC->vpd.vpd_size;
+
+       SK_DBG_MSG(pAC,SK_DBGMOD_VPD,SK_DBGCAT_TX,("VPD delete key %s\n",key));
+       if ((pAC->vpd.v.vpd_status & VPD_VALID) == 0) {
+               if (VpdInit(pAC, IoC) != 0) {
+                       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR,
+                               ("VPD init error\n"));
+                       return(6);
+               }
+       }
+
+       if ((p = vpd_find_para(pAC, key, &vp)) != NULL) {
+               if (p->p_val < pAC->vpd.vpd_buf + vpd_size/2) {
+                       /* try to delete read only keyword */
+                       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR,
+                               ("cannot delete RO keyword\n"));
+                       return(5);
+               }
+
+               etp = pAC->vpd.vpd_buf + (vpd_size-pAC->vpd.v.vpd_free_rw-1-3);
+
+               vpd_move_para(vp.p_val+vp.p_len, etp+2,
+                       - ((int)(vp.p_len + 3)));
+               if (vpd_mod_endtag(pAC, etp - vp.p_len - 3)) {
+                       pAC->vpd.v.vpd_status &= ~VPD_VALID;
+                       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR,
+                               ("VPD encoding error\n"));
+                       return(6);
+               }
+       }
+       else {
+               SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR,
+                       ("keyword not found\n"));
+               return(1);
+       }
+
+       return(0);
+}
+
+/*
+ *     If the VPD buffer contains valid data write the VPD
+ *     read/write area back to the VPD EEPROM.
+ *
+ * returns     0:      success
+ *             3:      VPD transfer timeout
+ */
+int VpdUpdate(
+SK_AC  *pAC,   /* Adapters context */
+SK_IOC IoC)    /* IO Context */
+{
+       int vpd_size;
+
+       vpd_size = pAC->vpd.vpd_size;
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_TX, ("VPD update .. "));
+       if ((pAC->vpd.v.vpd_status & VPD_VALID) != 0) {
+               if (VpdTransferBlock(pAC, IoC, pAC->vpd.vpd_buf + vpd_size/2,
+                       vpd_size/2, vpd_size/2, VPD_WRITE) != vpd_size/2) {
+
+                       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR,
+                               ("transfer timed out\n"));
+                       return(3);
+               }
+       }
+       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_TX, ("done\n"));
+       return(0);
+}
+
+
+/*
+ *     Read the contents of the VPD EEPROM and copy it to the VPD buffer
+ *     if not already done. If the keyword "VF" is not present it will be
+ *     created and the error log message will be stored to this keyword.
+ *     If "VF" is not present the error log message will be stored to the
+ *     keyword "VL". "VL" will created or overwritten if "VF" is present.
+ *     The VPD read/write area is saved to the VPD EEPROM.
+ *
+ * returns nothing, errors will be ignored.
+ */
+void VpdErrLog(
+SK_AC  *pAC,   /* common data base */
+SK_IOC IoC,    /* IO Context */
+char   *msg)   /* error log message */
+{
+       SK_VPD_PARA *v, vf;     /* VF */
+       int len;
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_TX,
+               ("VPD error log msg %s\n", msg));
+       if ((pAC->vpd.v.vpd_status & VPD_VALID) == 0) {
+               if (VpdInit(pAC, IoC) != 0) {
+                       SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR,
+                               ("VPD init error\n"));
+                       return;
+               }
+       }
+
+       len = strlen(msg);
+       if (len > VPD_MAX_LEN) {
+               /* cut it */
+               len = VPD_MAX_LEN;
+       }
+       if ((v = vpd_find_para(pAC, VPD_VF, &vf)) != NULL) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_TX, ("overwrite VL\n"));
+               (void)VpdSetupPara(pAC, VPD_VL, msg, len, VPD_RW_KEY, OWR_KEY);
+       }
+       else {
+               SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_TX, ("write VF\n"));
+               (void)VpdSetupPara(pAC, VPD_VF, msg, len, VPD_RW_KEY, ADD_KEY);
+       }
+
+       (void)VpdUpdate(pAC, IoC);
+}
diff -Naur u-boot-2009.03_orig/drivers/net/sk98lin/skxmac2.c u-boot-2009.03/drivers/net/sk98lin/skxmac2.c
--- u-boot-2009.03_orig/drivers/net/sk98lin/skxmac2.c   2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/drivers/net/sk98lin/skxmac2.c        2009-03-31 14:54:29.878124800 -0700
@@ -1,4392 +1,4395 @@
-/******************************************************************************
- *
- * Name:       skxmac2.c
- * Project:    GEnesis, PCI Gigabit Ethernet Adapter
- * Version:    $Revision: 1.91 $
- * Date:       $Date: 2003/02/05 15:09:34 $
- * Purpose:    Contains functions to initialize the MACs and PHYs
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- *     (C)Copyright 1998-2003 SysKonnect GmbH.
- *
- *     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.
- *
- *     The information in this file is provided "AS IS" without warranty.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * History:
- *
- *     $Log: skxmac2.c,v $
- *     Revision 1.91  2003/02/05 15:09:34  rschmidt
- *     Removed setting of 'Collision Test'-bit in SkGmInitPhyMarv().
- *     Disabled auto-update for speed, duplex and flow-control when
- *     auto-negotiation is not enabled (Bug Id #10766).
- *     Editorial changes.
- *
- *     Revision 1.90  2003/01/29 13:35:19  rschmidt
- *     Increment Rx FIFO Overflow counter only in DEBUG-mode.
- *     Corrected define for blinking active LED.
- *
- *     Revision 1.89  2003/01/28 16:37:45  rschmidt
- *     Changed init for blinking active LED
- *
- *     Revision 1.88  2003/01/28 10:09:38  rschmidt
- *     Added debug outputs in SkGmInitMac().
- *     Added customized init of LED registers in SkGmInitPhyMarv(),
- *     for blinking active LED (#ifdef ACT_LED_BLINK) and
- *     for normal duplex LED (#ifdef DUP_LED_NORMAL).
- *     Editorial changes.
- *
- *     Revision 1.87  2002/12/10 14:39:05  rschmidt
- *     Improved initialization of GPHY in SkGmInitPhyMarv().
- *     Editorial changes.
- *
- *     Revision 1.86  2002/12/09 15:01:12  rschmidt
- *     Added setup of Ext. PHY Specific Ctrl Reg (downshift feature).
- *
- *     Revision 1.85  2002/12/05 14:09:16  rschmidt
- *     Improved avoiding endless loop in SkGmPhyWrite(), SkGmPhyWrite().
- *     Added additional advertising for 10Base-T when 100Base-T is selected.
- *     Added case SK_PHY_MARV_FIBER for YUKON Fiber adapter.
- *     Editorial changes.
- *
- *     Revision 1.84  2002/11/15 12:50:09  rschmidt
- *     Changed SkGmCableDiagStatus() when getting results.
- *
- *     Revision 1.83  2002/11/13 10:28:29  rschmidt
- *     Added some typecasts to avoid compiler warnings.
- *
- *     Revision 1.82  2002/11/13 09:20:46  rschmidt
- *     Replaced for(..) with do {} while (...) in SkXmUpdateStats().
- *     Replaced 2 macros GM_IN16() with 1 GM_IN32() in SkGmMacStatistic().
- *     Added SkGmCableDiagStatus() for Virtual Cable Test (VCT).
- *     Editorial changes.
- *
- *     Revision 1.81  2002/10/28 14:28:08  rschmidt
- *     Changed MAC address setup for GMAC in SkGmInitMac().
- *     Optimized handling of counter overflow IRQ in SkGmOverflowStatus().
- *     Editorial changes.
- *
- *     Revision 1.80  2002/10/14 15:29:44  rschmidt
- *     Corrected disabling of all PHY IRQs.
- *     Added WA for deviation #16 (address used for pause packets).
- *     Set Pause Mode in SkMacRxTxEnable() only for Genesis.
- *     Added IRQ and counter for Receive FIFO Overflow in DEBUG-mode.
- *     SkXmTimeStamp() replaced by SkMacTimeStamp().
- *     Added clearing of GMAC Tx FIFO Underrun IRQ in SkGmIrq().
- *     Editorial changes.
- *
- *     Revision 1.79  2002/10/10 15:55:36  mkarl
- *     changes for PLinkSpeedUsed
- *
- *     Revision 1.78  2002/09/12 09:39:51  rwahl
- *     Removed deactivate code for SIRQ overflow event separate for TX/RX.
- *
- *     Revision 1.77  2002/09/09 12:26:37  mkarl
- *     added handling for Yukon to SkXmTimeStamp
- *
- *     Revision 1.76  2002/08/21 16:41:16  rschmidt
- *     Added bit GPC_ENA_XC (Enable MDI crossover) in HWCFG_MODE.
- *     Added forced speed settings in SkGmInitPhyMarv().
- *     Added settings of full/half duplex capabilities for YUKON Fiber.
- *     Editorial changes.
- *
- *     Revision 1.75  2002/08/16 15:12:01  rschmidt
- *     Replaced all if(GIChipId == CHIP_ID_GENESIS) with new entry GIGenesis.
- *     Added function SkMacHashing() for ADDR-Module.
- *     Removed functions SkXmClrSrcCheck(), SkXmClrHashAddr() (calls replaced
- *     with macros).
- *     Removed functions SkGmGetMuxConfig().
- *     Added HWCFG_MODE init for YUKON Fiber.
- *     Changed initialization of GPHY in SkGmInitPhyMarv().
- *     Changed check of parameter in SkXmMacStatistic().
- *     Editorial changes.
- *
- *     Revision 1.74  2002/08/12 14:00:17  rschmidt
- *     Replaced usage of Broadcom PHY Ids with defines.
- *     Corrected error messages in SkGmMacStatistic().
- *     Made SkMacPromiscMode() public for ADDR-Modul.
- *     Editorial changes.
- *
- *     Revision 1.73  2002/08/08 16:26:24  rschmidt
- *     Improved reset sequence for YUKON in SkGmHardRst() and SkGmInitMac().
- *     Replaced XMAC Rx High Watermark init value with SK_XM_RX_HI_WM.
- *     Editorial changes.
- *
- *     Revision 1.72  2002/07/24 15:11:19  rschmidt
- *     Fixed wrong placement of parenthesis.
- *     Editorial changes.
- *
- *     Revision 1.71  2002/07/23 16:05:18  rschmidt
- *     Added global functions for PHY: SkGePhyRead(), SkGePhyWrite().
- *     Fixed Tx Counter Overflow IRQ (Bug ID #10730).
- *     Editorial changes.
- *
- *     Revision 1.70  2002/07/18 14:27:27  rwahl
- *     Fixed syntax error.
- *
- *     Revision 1.69  2002/07/17 17:08:47  rwahl
- *     Fixed check in SkXmMacStatistic().
- *
- *     Revision 1.68  2002/07/16 07:35:24  rwahl
- *     Removed check for cleared mib counter in SkGmResetCounter().
- *
- *     Revision 1.67  2002/07/15 18:35:56  rwahl
- *     Added SkXmUpdateStats(), SkGmUpdateStats(), SkXmMacStatistic(),
- *       SkGmMacStatistic(), SkXmResetCounter(), SkGmResetCounter(),
- *       SkXmOverflowStatus(), SkGmOverflowStatus().
- *     Changes to SkXmIrq() & SkGmIrq(): Combined SIRQ Overflow for both
- *       RX & TX.
- *     Changes to SkGmInitMac(): call to SkGmResetCounter().
- *     Editorial changes.
- *
- *     Revision 1.66  2002/07/15 15:59:30  rschmidt
- *     Added PHY Address in SkXmPhyRead(), SkXmPhyWrite().
- *     Added MIB Clear Counter in SkGmInitMac().
- *     Added Duplex and Flow-Control settings.
- *     Reset all Multicast filtering Hash reg. in SkGmInitMac().
- *     Added new function: SkGmGetMuxConfig().
- *     Editorial changes.
- *
- *     Revision 1.65  2002/06/10 09:35:39  rschmidt
- *     Replaced C++ comments (//).
- *     Added #define VCPU around VCPUwaitTime.
- *     Editorial changes.
- *
- *     Revision 1.64  2002/06/05 08:41:10  rschmidt
- *     Added function for XMAC2: SkXmTimeStamp().
- *     Added function for YUKON: SkGmSetRxCmd().
- *     Changed SkGmInitMac() resp. SkGmHardRst().
- *     Fixed wrong variable in SkXmAutoNegLipaXmac() (debug mode).
- *     SkXmRxTxEnable() replaced by SkMacRxTxEnable().
- *     Editorial changes.
- *
- *     Revision 1.63  2002/04/25 13:04:44  rschmidt
- *     Changes for handling YUKON.
- *     Use of #ifdef OTHER_PHY to eliminate code for unused Phy types.
- *     Macros for XMAC PHY access PHY_READ(), PHY_WRITE() replaced
- *     by functions SkXmPhyRead(), SkXmPhyWrite();
- *     Removed use of PRxCmd to setup XMAC.
- *     Added define PHY_B_AS_PAUSE_MSK for BCom Pause Res.
- *     Added setting of XM_RX_DIS_CEXT in SkXmInitMac().
- *     Removed status parameter from MAC IRQ handler SkMacIrq(),
- *     SkXmIrq() and SkGmIrq().
- *     SkXmAutoNegLipa...() for ext. Phy replaced by SkMacAutoNegLipaPhy().
- *     Added SkMac...() functions to handle both XMAC and GMAC.
- *     Added functions for YUKON: SkGmHardRst(), SkGmSoftRst(),
- *     SkGmSetRxTxEn(), SkGmIrq(), SkGmInitMac(), SkGmInitPhyMarv(),
- *     SkGmAutoNegDoneMarv(), SkGmPhyRead(), SkGmPhyWrite().
- *     Changes for V-CPU support.
- *     Editorial changes.
- *
- *     Revision 1.62  2001/08/06 09:50:14  rschmidt
- *     Workaround BCOM Errata #1 for the C5 type.
- *     Editorial changes.
- *
- *     Revision 1.61  2001/02/09 15:40:59  rassmann
- *     Editorial changes.
- *
- *     Revision 1.60  2001/02/07 15:02:01  cgoos
- *     Added workaround for Fujitsu switch link down.
- *
- *     Revision 1.59  2001/01/10 09:38:06  cgoos
- *     Fixed Broadcom C0/A1 Id check for workaround.
- *
- *     Revision 1.58  2000/11/29 11:30:38  cgoos
- *     Changed DEBUG sections with NW output to xDEBUG
- *
- *     Revision 1.57  2000/11/27 12:40:40  rassmann
- *     Suppressing preamble after first access to BCom, not before (#10556).
- *
- *     Revision 1.56  2000/11/09 12:32:48  rassmann
- *     Renamed variables.
- *
- *     Revision 1.55  2000/11/09 11:30:10  rassmann
- *     WA: Waiting after releasing reset until BCom chip is accessible.
- *
- *     Revision 1.54  2000/10/02 14:10:27  rassmann
- *     Reading BCOM PHY after releasing reset until it returns a valid value.
- *
- *     Revision 1.53  2000/07/27 12:22:11  gklug
- *     fix: possible endless loop in XmHardRst.
- *
- *     Revision 1.52  2000/05/22 08:48:31  malthoff
- *     Fix: #10523 errata valid for all BCOM PHYs.
- *
- *     Revision 1.51  2000/05/17 12:52:18  malthoff
- *     Fixes BCom link errata (#10523).
- *
- *     Revision 1.50  1999/11/22 13:40:14  cgoos
- *     Changed license header to GPL.
- *
- *     Revision 1.49  1999/11/22 08:12:13  malthoff
- *     Add workaround for power consumption feature of BCom C0 chip.
- *
- *     Revision 1.48  1999/11/16 08:39:01  malthoff
- *     Fix: MDIO preamble suppression is port dependent.
- *
- *     Revision 1.47  1999/08/27 08:55:35  malthoff
- *     1000BT: Optimizing MDIO transfer by oppressing MDIO preamble.
- *
- *     Revision 1.46  1999/08/13 11:01:12  malthoff
- *     Fix for 1000BT: pFlowCtrlMode was not set correctly.
- *
- *     Revision 1.45  1999/08/12 19:18:28  malthoff
- *     1000BT Fixes: Do not owerwrite XM_MMU_CMD.
- *     Do not execute BCOM A1 workaround for B1 chips.
- *     Fix pause frame setting.
- *     Always set PHY_B_AC_TX_TST in PHY_BCOM_AUX_CTRL.
- *
- *     Revision 1.44  1999/08/03 15:23:48  cgoos
- *     Fixed setting of PHY interrupt mask in half duplex mode.
- *
- *     Revision 1.43  1999/08/03 15:22:17  cgoos
- *     Added some debug output.
- *     Disabled XMac GP0 interrupt for external PHYs.
- *
- *     Revision 1.42  1999/08/02 08:39:23  malthoff
- *     BCOM PHY: TX LED: To get the mono flop behaviour it is required
- *     to set the LED Traffic Mode bit in PHY_BCOM_P_EXT_CTRL.
- *
- *     Revision 1.41  1999/07/30 06:54:31  malthoff
- *     Add temp. workarounds for the BCOM Phy revision A1.
- *
- *     Revision 1.40  1999/06/01 07:43:26  cgoos
- *     Changed Link Mode Status in SkXmAutoNegDone... from FULL/HALF to
- *     AUTOFULL/AUTOHALF.
- *
- *     Revision 1.39  1999/05/19 07:29:51  cgoos
- *     Changes for 1000Base-T.
- *
- *     Revision 1.38  1999/04/08 14:35:10  malthoff
- *     Add code for enabling signal detect. Enabling signal detect is disabled.
- *
- *     Revision 1.37  1999/03/12 13:42:54  malthoff
- *     Add: Jumbo Frame Support.
- *     Add: Receive modes SK_LENERR_OK_ON/OFF and
- *     SK_BIG_PK_OK_ON/OFF in SkXmSetRxCmd().
- *
- *     Revision 1.36  1999/03/08 10:10:55  gklug
- *     fix: AutoSensing did switch to next mode even if LiPa indicated offline
- *
- *     Revision 1.35  1999/02/22 15:16:41  malthoff
- *     Remove some compiler warnings.
- *
- *     Revision 1.34  1999/01/22 09:19:59  gklug
- *     fix: Init DupMode and InitPauseMd are now called in RxTxEnable
- *
- *     Revision 1.33  1998/12/11 15:19:11  gklug
- *     chg: lipa autoneg stati
- *     chg: debug messages
- *     chg: do NOT use spurious XmIrq
- *
- *     Revision 1.32  1998/12/10 11:08:44  malthoff
- *     bug fix: pAC has been used for IOs in SkXmHardRst().
- *     SkXmInitPhy() is also called for the Diag in SkXmInitMac().
- *
- *     Revision 1.31  1998/12/10 10:39:11  gklug
- *     fix: do 4 RESETS of the XMAC at the beginning
- *     fix: dummy read interrupt source register BEFORE initializing the Phy
- *     add: debug messages
- *     fix: Linkpartners autoneg capability cannot be shown by TX_PAGE interrupt
- *
- *     Revision 1.30  1998/12/07 12:18:32  gklug
- *     add: refinement of autosense mode: take into account the autoneg cap of LiPa
- *
- *     Revision 1.29  1998/12/07 07:12:29  gklug
- *     fix: if page is received the link is  down.
- *
- *     Revision 1.28  1998/12/01 10:12:47  gklug
- *     chg: if spurious IRQ from XMAC encountered, save it
- *
- *     Revision 1.27  1998/11/26 07:33:38  gklug
- *     add: InitPhy call is now in XmInit function
- *
- *     Revision 1.26  1998/11/18 13:38:24  malthoff
- *     'Imsk' is also unused in SkXmAutoNegDone.
- *
- *     Revision 1.25  1998/11/18 13:28:01  malthoff
- *     Remove unused variable 'Reg' in SkXmAutoNegDone().
- *
- *     Revision 1.24  1998/11/18 13:18:45  gklug
- *     add: workaround for xmac errata #1
- *     add: detect Link Down also when Link partner requested config
- *     chg: XMIrq is only used when link is up
- *
- *     Revision 1.23  1998/11/04 07:07:04  cgoos
- *     Added function SkXmRxTxEnable.
- *
- *     Revision 1.22  1998/10/30 07:35:54  gklug
- *     fix: serve LinkDown interrupt when link is already down
- *
- *     Revision 1.21  1998/10/29 15:32:03  gklug
- *     fix: Link Down signaling
- *
- *     Revision 1.20  1998/10/29 11:17:27  gklug
- *     fix: AutoNegDone bug
- *
- *     Revision 1.19  1998/10/29 10:14:43  malthoff
- *     Add endainesss comment for reading/writing MAC addresses.
- *
- *     Revision 1.18  1998/10/28 07:48:55  cgoos
- *     Fix: ASS somtimes signaled although link is up.
- *
- *     Revision 1.17  1998/10/26 07:55:39  malthoff
- *     Fix in SkXmInitPauseMd(): Pause Mode
- *     was disabled and not enabled.
- *     Fix in SkXmAutoNegDone(): Checking Mode bits
- *     always failed, becaues of some missing braces.
- *
- *     Revision 1.16  1998/10/22 09:46:52  gklug
- *     fix SysKonnectFileId typo
- *
- *     Revision 1.15  1998/10/21 05:51:37  gklug
- *     add: para DoLoop to InitPhy function for loopback set-up
- *
- *     Revision 1.14  1998/10/16 10:59:23  malthoff
- *     Remove Lint warning for dummy reads.
- *
- *     Revision 1.13  1998/10/15 14:01:20  malthoff
- *     Fix: SkXmAutoNegDone() is (int) but does not return a value.
- *
- *     Revision 1.12  1998/10/14 14:45:04  malthoff
- *     Remove SKERR_SIRQ_E0xx and SKERR_SIRQ_E0xxMSG by
- *     SKERR_HWI_Exx and SKERR_HWI_E0xxMSG to be independent
- *     from the Sirq module.
- *
- *     Revision 1.11  1998/10/14 13:59:01  gklug
- *     add: InitPhy function
- *
- *     Revision 1.10  1998/10/14 11:20:57  malthoff
- *     Make SkXmAutoNegDone() public, because it's
- *     used in diagnostics, too.
- *     The Link Up event to the RLMT is issued in SkXmIrq().
- *  SkXmIrq() is not available in diagnostics.
- *  Use PHY_READ when reading PHY registers.
- *
- *     Revision 1.9  1998/10/14 05:50:10  cgoos
- *     Added definition for Para.
- *
- *     Revision 1.8  1998/10/14 05:41:28  gklug
- *     add: Xmac IRQ
- *     add: auto-negotiation done function
- *
- *     Revision 1.7  1998/10/09 06:55:20  malthoff
- *     The configuration of the XMACs Tx Request Threshold
- *     depends from the drivers port usage now. The port
- *     usage is configured in GIPortUsage.
- *
- *     Revision 1.6  1998/10/05 07:48:00  malthoff
- *     minor changes
- *
- *     Revision 1.5  1998/10/01 07:03:54  gklug
- *     add: dummy function for XMAC ISR
- *
- *     Revision 1.4  1998/09/30 12:37:44  malthoff
- *     Add SkXmSetRxCmd() and related code.
- *
- *     Revision 1.3  1998/09/28 13:26:40  malthoff
- *     Add SkXmInitMac(), SkXmInitDupMd(), and SkXmInitPauseMd()
- *
- *     Revision 1.2  1998/09/16 14:34:21  malthoff
- *     Add SkXmClrExactAddr(), SkXmClrSrcCheck(),
- *     SkXmClrHashAddr(), SkXmFlushTxFifo(),
- *     SkXmFlushRxFifo(), and SkXmHardRst().
- *     Finish Coding of SkXmSoftRst().
- *     The sources may be compiled now.
- *
- *     Revision 1.1  1998/09/04 10:05:56  malthoff
- *     Created.
- *
- *
- ******************************************************************************/
-
-#include <config.h>
-
-#include "h/skdrv1st.h"
-#include "h/skdrv2nd.h"
-
-/* typedefs *******************************************************************/
-
-/* BCOM PHY magic pattern list */
-typedef struct s_PhyHack {
-       int             PhyReg;         /* Phy register */
-       SK_U16  PhyVal;         /* Value to write */
-} BCOM_HACK;
-
-/* local variables ************************************************************/
-static const char SysKonnectFileId[] =
-       "@(#)$Id: skxmac2.c,v 1.91 2003/02/05 15:09:34 rschmidt Exp $ (C) SK ";
-
-BCOM_HACK BcomRegA1Hack[] = {
- { 0x18, 0x0c20 }, { 0x17, 0x0012 }, { 0x15, 0x1104 }, { 0x17, 0x0013 },
- { 0x15, 0x0404 }, { 0x17, 0x8006 }, { 0x15, 0x0132 }, { 0x17, 0x8006 },
- { 0x15, 0x0232 }, { 0x17, 0x800D }, { 0x15, 0x000F }, { 0x18, 0x0420 },
- { 0, 0 }
-};
-BCOM_HACK BcomRegC0Hack[] = {
- { 0x18, 0x0c20 }, { 0x17, 0x0012 }, { 0x15, 0x1204 }, { 0x17, 0x0013 },
- { 0x15, 0x0A04 }, { 0x18, 0x0420 },
- { 0, 0 }
-};
-
-/* function prototypes ********************************************************/
-static void    SkXmInitPhyXmac(SK_AC*, SK_IOC, int, SK_BOOL);
-static void    SkXmInitPhyBcom(SK_AC*, SK_IOC, int, SK_BOOL);
-static void    SkGmInitPhyMarv(SK_AC*, SK_IOC, int, SK_BOOL);
-static int     SkXmAutoNegDoneXmac(SK_AC*, SK_IOC, int);
-static int     SkXmAutoNegDoneBcom(SK_AC*, SK_IOC, int);
-static int     SkGmAutoNegDoneMarv(SK_AC*, SK_IOC, int);
-#ifdef OTHER_PHY
-static void    SkXmInitPhyLone(SK_AC*, SK_IOC, int, SK_BOOL);
-static void    SkXmInitPhyNat (SK_AC*, SK_IOC, int, SK_BOOL);
-static int     SkXmAutoNegDoneLone(SK_AC*, SK_IOC, int);
-static int     SkXmAutoNegDoneNat (SK_AC*, SK_IOC, int);
-#endif /* OTHER_PHY */
-
-
-/******************************************************************************
- *
- *     SkXmPhyRead() - Read from XMAC PHY register
- *
- * Description:        reads a 16-bit word from XMAC PHY or ext. PHY
- *
- * Returns:
- *     nothing
- */
-void SkXmPhyRead(
-SK_AC  *pAC,           /* Adapter Context */
-SK_IOC IoC,            /* I/O Context */
-int            Port,           /* Port Index (MAC_1 + n) */
-int            PhyReg,         /* Register Address (Offset) */
-SK_U16 *pVal)          /* Pointer to Value */
-{
-       SK_U16          Mmu;
-       SK_GEPORT       *pPrt;
-
-       pPrt = &pAC->GIni.GP[Port];
-
-       /* write the PHY register's address */
-       XM_OUT16(IoC, Port, XM_PHY_ADDR, PhyReg | pPrt->PhyAddr);
-
-       /* get the PHY register's value */
-       XM_IN16(IoC, Port, XM_PHY_DATA, pVal);
-
-       if (pPrt->PhyType != SK_PHY_XMAC) {
-               do {
-                       XM_IN16(IoC, Port, XM_MMU_CMD, &Mmu);
-                       /* wait until 'Ready' is set */
-               } while ((Mmu & XM_MMU_PHY_RDY) == 0);
-
-               /* get the PHY register's value */
-               XM_IN16(IoC, Port, XM_PHY_DATA, pVal);
-       }
-}      /* SkXmPhyRead */
-
-
-/******************************************************************************
- *
- *     SkXmPhyWrite() - Write to XMAC PHY register
- *
- * Description:        writes a 16-bit word to XMAC PHY or ext. PHY
- *
- * Returns:
- *     nothing
- */
-void SkXmPhyWrite(
-SK_AC  *pAC,           /* Adapter Context */
-SK_IOC IoC,            /* I/O Context */
-int            Port,           /* Port Index (MAC_1 + n) */
-int            PhyReg,         /* Register Address (Offset) */
-SK_U16 Val)            /* Value */
-{
-       SK_U16          Mmu;
-       SK_GEPORT       *pPrt;
-
-       pPrt = &pAC->GIni.GP[Port];
-
-       if (pPrt->PhyType != SK_PHY_XMAC) {
-               do {
-                       XM_IN16(IoC, Port, XM_MMU_CMD, &Mmu);
-                       /* wait until 'Busy' is cleared */
-               } while ((Mmu & XM_MMU_PHY_BUSY) != 0);
-       }
-
-       /* write the PHY register's address */
-       XM_OUT16(IoC, Port, XM_PHY_ADDR, PhyReg | pPrt->PhyAddr);
-
-       /* write the PHY register's value */
-       XM_OUT16(IoC, Port, XM_PHY_DATA, Val);
-
-       if (pPrt->PhyType != SK_PHY_XMAC) {
-               do {
-                       XM_IN16(IoC, Port, XM_MMU_CMD, &Mmu);
-                       /* wait until 'Busy' is cleared */
-               } while ((Mmu & XM_MMU_PHY_BUSY) != 0);
-       }
-}      /* SkXmPhyWrite */
-
-
-/******************************************************************************
- *
- *     SkGmPhyRead() - Read from GPHY register
- *
- * Description:        reads a 16-bit word from GPHY through MDIO
- *
- * Returns:
- *     nothing
- */
-void SkGmPhyRead(
-SK_AC  *pAC,           /* Adapter Context */
-SK_IOC IoC,            /* I/O Context */
-int            Port,           /* Port Index (MAC_1 + n) */
-int            PhyReg,         /* Register Address (Offset) */
-SK_U16 *pVal)          /* Pointer to Value */
-{
-       SK_U16  Ctrl;
-       SK_GEPORT       *pPrt;
-#ifdef VCPU
-       u_long SimCyle;
-       u_long SimLowTime;
-
-       VCPUgetTime(&SimCyle, &SimLowTime);
-       VCPUprintf(0, "SkGmPhyRead(%u), SimCyle=%u, SimLowTime=%u\n",
-               PhyReg, SimCyle, SimLowTime);
-#endif /* VCPU */
-
-       pPrt = &pAC->GIni.GP[Port];
-
-       /* set PHY-Register offset and 'Read' OpCode (= 1) */
-       *pVal = (SK_U16)(GM_SMI_CT_PHY_AD(pPrt->PhyAddr) |
-               GM_SMI_CT_REG_AD(PhyReg) | GM_SMI_CT_OP_RD);
-
-       GM_OUT16(IoC, Port, GM_SMI_CTRL, *pVal);
-
-       GM_IN16(IoC, Port, GM_SMI_CTRL, &Ctrl);
-
-       /* additional check for MDC/MDIO activity */
-       if ((Ctrl & GM_SMI_CT_BUSY) == 0) {
-               *pVal = 0;
-               return;
-       }
-
-       *pVal |= GM_SMI_CT_BUSY;
-
-       do {
-#ifdef VCPU
-               VCPUwaitTime(1000);
-#endif /* VCPU */
-
-               GM_IN16(IoC, Port, GM_SMI_CTRL, &Ctrl);
-
-       /* wait until 'ReadValid' is set */
-       } while (Ctrl == *pVal);
-
-       /* get the PHY register's value */
-       GM_IN16(IoC, Port, GM_SMI_DATA, pVal);
-
-#ifdef VCPU
-       VCPUgetTime(&SimCyle, &SimLowTime);
-       VCPUprintf(0, "VCPUgetTime(), SimCyle=%u, SimLowTime=%u\n",
-               SimCyle, SimLowTime);
-#endif /* VCPU */
-}      /* SkGmPhyRead */
-
-
-/******************************************************************************
- *
- *     SkGmPhyWrite() - Write to GPHY register
- *
- * Description:        writes a 16-bit word to GPHY through MDIO
- *
- * Returns:
- *     nothing
- */
-void SkGmPhyWrite(
-SK_AC  *pAC,           /* Adapter Context */
-SK_IOC IoC,            /* I/O Context */
-int            Port,           /* Port Index (MAC_1 + n) */
-int            PhyReg,         /* Register Address (Offset) */
-SK_U16 Val)            /* Value */
-{
-       SK_U16  Ctrl;
-       SK_GEPORT       *pPrt;
-#ifdef VCPU
-       SK_U32  DWord;
-       u_long  SimCyle;
-       u_long  SimLowTime;
-
-       VCPUgetTime(&SimCyle, &SimLowTime);
-       VCPUprintf(0, "SkGmPhyWrite(Reg=%u, Val=0x%04x), SimCyle=%u, SimLowTime=%u\n",
-               PhyReg, Val, SimCyle, SimLowTime);
-#endif /* VCPU */
-
-       pPrt = &pAC->GIni.GP[Port];
-
-       /* write the PHY register's value */
-       GM_OUT16(IoC, Port, GM_SMI_DATA, Val);
-
-       /* set PHY-Register offset and 'Write' OpCode (= 0) */
-       Val = GM_SMI_CT_PHY_AD(pPrt->PhyAddr) | GM_SMI_CT_REG_AD(PhyReg);
-
-       GM_OUT16(IoC, Port, GM_SMI_CTRL, Val);
-
-       GM_IN16(IoC, Port, GM_SMI_CTRL, &Ctrl);
-
-       /* additional check for MDC/MDIO activity */
-       if ((Ctrl & GM_SMI_CT_BUSY) == 0) {
-               return;
-       }
-
-       Val |= GM_SMI_CT_BUSY;
-
-       do {
-#ifdef VCPU
-               /* read Timer value */
-               SK_IN32(IoC, B2_TI_VAL, &DWord);
-
-               VCPUwaitTime(1000);
-#endif /* VCPU */
-
-               GM_IN16(IoC, Port, GM_SMI_CTRL, &Ctrl);
-
-       /* wait until 'Busy' is cleared */
-       } while (Ctrl == Val);
-
-#ifdef VCPU
-       VCPUgetTime(&SimCyle, &SimLowTime);
-       VCPUprintf(0, "VCPUgetTime(), SimCyle=%u, SimLowTime=%u\n",
-               SimCyle, SimLowTime);
-#endif /* VCPU */
-}      /* SkGmPhyWrite */
-
-
-/******************************************************************************
- *
- *     SkGePhyRead() - Read from PHY register
- *
- * Description:        calls a read PHY routine dep. on board type
- *
- * Returns:
- *     nothing
- */
-void SkGePhyRead(
-SK_AC  *pAC,           /* Adapter Context */
-SK_IOC IoC,            /* I/O Context */
-int            Port,           /* Port Index (MAC_1 + n) */
-int            PhyReg,         /* Register Address (Offset) */
-SK_U16 *pVal)          /* Pointer to Value */
-{
-       void (*r_func)(SK_AC *pAC, SK_IOC IoC, int Port, int Reg, SK_U16 *pVal);
-
-       if (pAC->GIni.GIGenesis) {
-               r_func = SkXmPhyRead;
-       }
-       else {
-               r_func = SkGmPhyRead;
-       }
-
-       r_func(pAC, IoC, Port, PhyReg, pVal);
-}      /* SkGePhyRead */
-
-
-/******************************************************************************
- *
- *     SkGePhyWrite() - Write to PHY register
- *
- * Description:        calls a write PHY routine dep. on board type
- *
- * Returns:
- *     nothing
- */
-void SkGePhyWrite(
-SK_AC  *pAC,           /* Adapter Context */
-SK_IOC IoC,            /* I/O Context */
-int            Port,           /* Port Index (MAC_1 + n) */
-int            PhyReg,         /* Register Address (Offset) */
-SK_U16 Val)            /* Value */
-{
-       void (*w_func)(SK_AC *pAC, SK_IOC IoC, int Port, int Reg, SK_U16 Val);
-
-       if (pAC->GIni.GIGenesis) {
-               w_func = SkXmPhyWrite;
-       }
-       else {
-               w_func = SkGmPhyWrite;
-       }
-
-       w_func(pAC, IoC, Port, PhyReg, Val);
-}      /* SkGePhyWrite */
-
-
-/******************************************************************************
- *
- *     SkMacPromiscMode() - Enable / Disable Promiscuous Mode
- *
- * Description:
- *   enables / disables promiscuous mode by setting Mode Register (XMAC) or
- *   Receive Control Register (GMAC) dep. on board type
- *
- * Returns:
- *     nothing
- */
-void SkMacPromiscMode(
-SK_AC  *pAC,   /* adapter context */
-SK_IOC IoC,    /* IO context */
-int            Port,   /* Port Index (MAC_1 + n) */
-SK_BOOL        Enable) /* Enable / Disable */
-{
-       SK_U16  RcReg;
-       SK_U32  MdReg;
-
-       if (pAC->GIni.GIGenesis) {
-
-               XM_IN32(IoC, Port, XM_MODE, &MdReg);
-               /* enable or disable promiscuous mode */
-               if (Enable) {
-                       MdReg |= XM_MD_ENA_PROM;
-               }
-               else {
-                       MdReg &= ~XM_MD_ENA_PROM;
-               }
-               /* setup Mode Register */
-               XM_OUT32(IoC, Port, XM_MODE, MdReg);
-       }
-       else {
-
-               GM_IN16(IoC, Port, GM_RX_CTRL, &RcReg);
-
-               /* enable or disable unicast and multicast filtering */
-               if (Enable) {
-                       RcReg &= ~(GM_RXCR_UCF_ENA | GM_RXCR_MCF_ENA);
-               }
-               else {
-                       RcReg |= (GM_RXCR_UCF_ENA | GM_RXCR_MCF_ENA);
-               }
-               /* setup Receive Control Register */
-               GM_OUT16(IoC, Port, GM_RX_CTRL, RcReg);
-       }
-}      /* SkMacPromiscMode*/
-
-
-/******************************************************************************
- *
- *     SkMacHashing() - Enable / Disable Hashing
- *
- * Description:
- *   enables / disables hashing by setting Mode Register (XMAC) or
- *   Receive Control Register (GMAC) dep. on board type
- *
- * Returns:
- *     nothing
- */
-void SkMacHashing(
-SK_AC  *pAC,   /* adapter context */
-SK_IOC IoC,    /* IO context */
-int            Port,   /* Port Index (MAC_1 + n) */
-SK_BOOL        Enable) /* Enable / Disable */
-{
-       SK_U16  RcReg;
-       SK_U32  MdReg;
-
-       if (pAC->GIni.GIGenesis) {
-
-               XM_IN32(IoC, Port, XM_MODE, &MdReg);
-               /* enable or disable hashing */
-               if (Enable) {
-                       MdReg |= XM_MD_ENA_HASH;
-               }
-               else {
-                       MdReg &= ~XM_MD_ENA_HASH;
-               }
-               /* setup Mode Register */
-               XM_OUT32(IoC, Port, XM_MODE, MdReg);
-       }
-       else {
-
-               GM_IN16(IoC, Port, GM_RX_CTRL, &RcReg);
-
-               /* enable or disable multicast filtering */
-               if (Enable) {
-                       RcReg |= GM_RXCR_MCF_ENA;
-               }
-               else {
-                       RcReg &= ~GM_RXCR_MCF_ENA;
-               }
-               /* setup Receive Control Register */
-               GM_OUT16(IoC, Port, GM_RX_CTRL, RcReg);
-       }
-}      /* SkMacHashing*/
-
-
-#ifdef SK_DIAG
-/******************************************************************************
- *
- *     SkXmSetRxCmd() - Modify the value of the XMAC's Rx Command Register
- *
- * Description:
- *     The features
- *      - FCS stripping,                                       SK_STRIP_FCS_ON/OFF
- *      - pad byte stripping,                          SK_STRIP_PAD_ON/OFF
- *      - don't set XMR_FS_ERR in status       SK_LENERR_OK_ON/OFF
- *        for inrange length error frames
- *      - don't set XMR_FS_ERR in status       SK_BIG_PK_OK_ON/OFF
- *        for frames > 1514 bytes
- *   - enable Rx of own packets         SK_SELF_RX_ON/OFF
- *
- *     for incoming packets may be enabled/disabled by this function.
- *     Additional modes may be added later.
- *     Multiple modes can be enabled/disabled at the same time.
- *     The new configuration is written to the Rx Command register immediately.
- *
- * Returns:
- *     nothing
- */
-static void SkXmSetRxCmd(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* IO context */
-int            Port,           /* Port Index (MAC_1 + n) */
-int            Mode)           /* Mode is SK_STRIP_FCS_ON/OFF, SK_STRIP_PAD_ON/OFF,
-                                          SK_LENERR_OK_ON/OFF, or SK_BIG_PK_OK_ON/OFF */
-{
-       SK_U16  OldRxCmd;
-       SK_U16  RxCmd;
-
-       XM_IN16(IoC, Port, XM_RX_CMD, &OldRxCmd);
-
-       RxCmd = OldRxCmd;
-
-       switch (Mode & (SK_STRIP_FCS_ON | SK_STRIP_FCS_OFF)) {
-       case SK_STRIP_FCS_ON:
-               RxCmd |= XM_RX_STRIP_FCS;
-               break;
-       case SK_STRIP_FCS_OFF:
-               RxCmd &= ~XM_RX_STRIP_FCS;
-               break;
-       }
-
-       switch (Mode & (SK_STRIP_PAD_ON | SK_STRIP_PAD_OFF)) {
-       case SK_STRIP_PAD_ON:
-               RxCmd |= XM_RX_STRIP_PAD;
-               break;
-       case SK_STRIP_PAD_OFF:
-               RxCmd &= ~XM_RX_STRIP_PAD;
-               break;
-       }
-
-       switch (Mode & (SK_LENERR_OK_ON | SK_LENERR_OK_OFF)) {
-       case SK_LENERR_OK_ON:
-               RxCmd |= XM_RX_LENERR_OK;
-               break;
-       case SK_LENERR_OK_OFF:
-               RxCmd &= ~XM_RX_LENERR_OK;
-               break;
-       }
-
-       switch (Mode & (SK_BIG_PK_OK_ON | SK_BIG_PK_OK_OFF)) {
-       case SK_BIG_PK_OK_ON:
-               RxCmd |= XM_RX_BIG_PK_OK;
-               break;
-       case SK_BIG_PK_OK_OFF:
-               RxCmd &= ~XM_RX_BIG_PK_OK;
-               break;
-       }
-
-       switch (Mode & (SK_SELF_RX_ON | SK_SELF_RX_OFF)) {
-       case SK_SELF_RX_ON:
-               RxCmd |= XM_RX_SELF_RX;
-               break;
-       case SK_SELF_RX_OFF:
-               RxCmd &= ~XM_RX_SELF_RX;
-               break;
-       }
-
-       /* Write the new mode to the Rx command register if required */
-       if (OldRxCmd != RxCmd) {
-               XM_OUT16(IoC, Port, XM_RX_CMD, RxCmd);
-       }
-}      /* SkXmSetRxCmd */
-
-
-/******************************************************************************
- *
- *     SkGmSetRxCmd() - Modify the value of the GMAC's Rx Control Register
- *
- * Description:
- *     The features
- *      - FCS (CRC) stripping,                         SK_STRIP_FCS_ON/OFF
- *      - don't set GMR_FS_LONG_ERR            SK_BIG_PK_OK_ON/OFF
- *        for frames > 1514 bytes
- *   - enable Rx of own packets         SK_SELF_RX_ON/OFF
- *
- *     for incoming packets may be enabled/disabled by this function.
- *     Additional modes may be added later.
- *     Multiple modes can be enabled/disabled at the same time.
- *     The new configuration is written to the Rx Command register immediately.
- *
- * Returns:
- *     nothing
- */
-static void SkGmSetRxCmd(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* IO context */
-int            Port,           /* Port Index (MAC_1 + n) */
-int            Mode)           /* Mode is SK_STRIP_FCS_ON/OFF, SK_STRIP_PAD_ON/OFF,
-                                          SK_LENERR_OK_ON/OFF, or SK_BIG_PK_OK_ON/OFF */
-{
-       SK_U16  OldRxCmd;
-       SK_U16  RxCmd;
-
-       if ((Mode & (SK_STRIP_FCS_ON | SK_STRIP_FCS_OFF)) != 0) {
-
-               GM_IN16(IoC, Port, GM_RX_CTRL, &OldRxCmd);
-
-               RxCmd = OldRxCmd;
-
-               if ((Mode & SK_STRIP_FCS_ON) != 0) {
-                       RxCmd |= GM_RXCR_CRC_DIS;
-               }
-               else {
-                       RxCmd &= ~GM_RXCR_CRC_DIS;
-               }
-               /* Write the new mode to the Rx control register if required */
-               if (OldRxCmd != RxCmd) {
-                       GM_OUT16(IoC, Port, GM_RX_CTRL, RxCmd);
-               }
-       }
-
-       if ((Mode & (SK_BIG_PK_OK_ON | SK_BIG_PK_OK_OFF)) != 0) {
-
-               GM_IN16(IoC, Port, GM_SERIAL_MODE, &OldRxCmd);
-
-               RxCmd = OldRxCmd;
-
-               if ((Mode & SK_BIG_PK_OK_ON) != 0) {
-                       RxCmd |= GM_SMOD_JUMBO_ENA;
-               }
-               else {
-                       RxCmd &= ~GM_SMOD_JUMBO_ENA;
-               }
-               /* Write the new mode to the Rx control register if required */
-               if (OldRxCmd != RxCmd) {
-                       GM_OUT16(IoC, Port, GM_SERIAL_MODE, RxCmd);
-               }
-       }
-}      /* SkGmSetRxCmd */
-
-
-/******************************************************************************
- *
- *     SkMacSetRxCmd() - Modify the value of the MAC's Rx Control Register
- *
- * Description:        modifies the MAC's Rx Control reg. dep. on board type
- *
- * Returns:
- *     nothing
- */
-void SkMacSetRxCmd(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* IO context */
-int            Port,           /* Port Index (MAC_1 + n) */
-int            Mode)           /* Rx Mode */
-{
-       if (pAC->GIni.GIGenesis) {
-
-               SkXmSetRxCmd(pAC, IoC, Port, Mode);
-       }
-       else {
-
-               SkGmSetRxCmd(pAC, IoC, Port, Mode);
-       }
-}      /* SkMacSetRxCmd */
-
-
-/******************************************************************************
- *
- *     SkMacCrcGener() - Enable / Disable CRC Generation
- *
- * Description:        enables / disables CRC generation dep. on board type
- *
- * Returns:
- *     nothing
- */
-void SkMacCrcGener(
-SK_AC  *pAC,   /* adapter context */
-SK_IOC IoC,    /* IO context */
-int            Port,   /* Port Index (MAC_1 + n) */
-SK_BOOL        Enable) /* Enable / Disable */
-{
-       SK_U16  Word;
-
-       if (pAC->GIni.GIGenesis) {
-
-               XM_IN16(IoC, Port, XM_TX_CMD, &Word);
-
-               if (Enable) {
-                       Word &= ~XM_TX_NO_CRC;
-               }
-               else {
-                       Word |= XM_TX_NO_CRC;
-               }
-               /* setup Tx Command Register */
-               XM_OUT16(pAC, Port, XM_TX_CMD, Word);
-       }
-       else {
-
-               GM_IN16(IoC, Port, GM_TX_CTRL, &Word);
-
-               if (Enable) {
-                       Word &= ~GM_TXCR_CRC_DIS;
-               }
-               else {
-                       Word |= GM_TXCR_CRC_DIS;
-               }
-               /* setup Tx Control Register */
-               GM_OUT16(IoC, Port, GM_TX_CTRL, Word);
-       }
-}      /* SkMacCrcGener*/
-
-#endif /* SK_DIAG */
-
-
-/******************************************************************************
- *
- *     SkXmClrExactAddr() - Clear Exact Match Address Registers
- *
- * Description:
- *     All Exact Match Address registers of the XMAC 'Port' will be
- *     cleared starting with 'StartNum' up to (and including) the
- *     Exact Match address number of 'StopNum'.
- *
- * Returns:
- *     nothing
- */
-void SkXmClrExactAddr(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* IO context */
-int            Port,           /* Port Index (MAC_1 + n) */
-int            StartNum,       /* Begin with this Address Register Index (0..15) */
-int            StopNum)        /* Stop after finished with this Register Idx (0..15) */
-{
-       int             i;
-       SK_U16  ZeroAddr[3] = {0x0000, 0x0000, 0x0000};
-
-       if ((unsigned)StartNum > 15 || (unsigned)StopNum > 15 ||
-               StartNum > StopNum) {
-
-               SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E001, SKERR_HWI_E001MSG);
-               return;
-       }
-
-       for (i = StartNum; i <= StopNum; i++) {
-               XM_OUTADDR(IoC, Port, XM_EXM(i), &ZeroAddr[0]);
-       }
-}      /* SkXmClrExactAddr */
-
-
-/******************************************************************************
- *
- *     SkMacFlushTxFifo() - Flush the MAC's transmit FIFO
- *
- * Description:
- *     Flush the transmit FIFO of the MAC specified by the index 'Port'
- *
- * Returns:
- *     nothing
- */
-void SkMacFlushTxFifo(
-SK_AC  *pAC,   /* adapter context */
-SK_IOC IoC,    /* IO context */
-int            Port)   /* Port Index (MAC_1 + n) */
-{
-       SK_U32  MdReg;
-
-       if (pAC->GIni.GIGenesis) {
-
-               XM_IN32(IoC, Port, XM_MODE, &MdReg);
-
-               XM_OUT32(IoC, Port, XM_MODE, MdReg | XM_MD_FTF);
-       }
-       else {
-               /* no way to flush the FIFO we have to issue a reset */
-               /* TBD */
-       }
-}      /* SkMacFlushTxFifo */
-
-
-/******************************************************************************
- *
- *     SkMacFlushRxFifo() - Flush the MAC's receive FIFO
- *
- * Description:
- *     Flush the receive FIFO of the MAC specified by the index 'Port'
- *
- * Returns:
- *     nothing
- */
-void SkMacFlushRxFifo(
-SK_AC  *pAC,   /* adapter context */
-SK_IOC IoC,    /* IO context */
-int            Port)   /* Port Index (MAC_1 + n) */
-{
-       SK_U32  MdReg;
-
-       if (pAC->GIni.GIGenesis) {
-
-               XM_IN32(IoC, Port, XM_MODE, &MdReg);
-
-               XM_OUT32(IoC, Port, XM_MODE, MdReg | XM_MD_FRF);
-       }
-       else {
-               /* no way to flush the FIFO we have to issue a reset */
-               /* TBD */
-       }
-}      /* SkMacFlushRxFifo */
-
-
-/******************************************************************************
- *
- *     SkXmSoftRst() - Do a XMAC software reset
- *
- * Description:
- *     The PHY registers should not be destroyed during this
- *     kind of software reset. Therefore the XMAC Software Reset
- *     (XM_GP_RES_MAC bit in XM_GP_PORT) must not be used!
- *
- *     The software reset is done by
- *             - disabling the Rx and Tx state machine,
- *             - resetting the statistics module,
- *             - clear all other significant XMAC Mode,
- *               Command, and Control Registers
- *             - clearing the Hash Register and the
- *               Exact Match Address registers, and
- *             - flushing the XMAC's Rx and Tx FIFOs.
- *
- * Note:
- *     Another requirement when stopping the XMAC is to
- *     avoid sending corrupted frames on the network.
- *     Disabling the Tx state machine will NOT interrupt
- *     the currently transmitted frame. But we must take care
- *     that the Tx FIFO is cleared AFTER the current frame
- *     is complete sent to the network.
- *
- *     It takes about 12ns to send a frame with 1538 bytes.
- *     One PCI clock goes at least 15ns (66MHz). Therefore
- *     after reading XM_GP_PORT back, we are sure that the
- *     transmitter is disabled AND idle. And this means
- *     we may flush the transmit FIFO now.
- *
- * Returns:
- *     nothing
- */
-static void SkXmSoftRst(
-SK_AC  *pAC,   /* adapter context */
-SK_IOC IoC,    /* IO context */
-int            Port)   /* Port Index (MAC_1 + n) */
-{
-       SK_U16  ZeroAddr[4] = {0x0000, 0x0000, 0x0000, 0x0000};
-
-       /* reset the statistics module */
-       XM_OUT32(IoC, Port, XM_GP_PORT, XM_GP_RES_STAT);
-
-       /* disable all XMAC IRQs */
-       XM_OUT16(IoC, Port, XM_IMSK, 0xffff);
-
-       XM_OUT32(IoC, Port, XM_MODE, 0);                /* clear Mode Reg */
-
-       XM_OUT16(IoC, Port, XM_TX_CMD, 0);              /* reset TX CMD Reg */
-       XM_OUT16(IoC, Port, XM_RX_CMD, 0);              /* reset RX CMD Reg */
-
-       /* disable all PHY IRQs */
-       switch (pAC->GIni.GP[Port].PhyType) {
-       case SK_PHY_BCOM:
-                       SkXmPhyWrite(pAC, IoC, Port, PHY_BCOM_INT_MASK, 0xffff);
-                       break;
-#ifdef OTHER_PHY
-               case SK_PHY_LONE:
-                       SkXmPhyWrite(pAC, IoC, Port, PHY_LONE_INT_ENAB, 0);
-                       break;
-               case SK_PHY_NAT:
-                       /* todo: National
-                        SkXmPhyWrite(pAC, IoC, Port, PHY_NAT_INT_MASK, 0xffff); */
-                       break;
-#endif /* OTHER_PHY */
-       }
-
-       /* clear the Hash Register */
-       XM_OUTHASH(IoC, Port, XM_HSM, &ZeroAddr);
-
-       /* clear the Exact Match Address registers */
-       SkXmClrExactAddr(pAC, IoC, Port, 0, 15);
-
-       /* clear the Source Check Address registers */
-       XM_OUTHASH(IoC, Port, XM_SRC_CHK, &ZeroAddr);
-
-}      /* SkXmSoftRst */
-
-
-/******************************************************************************
- *
- *     SkXmHardRst() - Do a XMAC hardware reset
- *
- * Description:
- *     The XMAC of the specified 'Port' and all connected devices
- *     (PHY and SERDES) will receive a reset signal on its *Reset pins.
- *     External PHYs must be reset be clearing a bit in the GPIO register
- *  (Timing requirements: Broadcom: 400ns, Level One: none, National: 80ns).
- *
- * ATTENTION:
- *     It is absolutely necessary to reset the SW_RST Bit first
- *     before calling this function.
- *
- * Returns:
- *     nothing
- */
-static void SkXmHardRst(
-SK_AC  *pAC,   /* adapter context */
-SK_IOC IoC,    /* IO context */
-int            Port)   /* Port Index (MAC_1 + n) */
-{
-       SK_U32  Reg;
-       int             i;
-       int             TOut;
-       SK_U16  Word;
-
-       for (i = 0; i < 4; i++) {
-               /* TX_MFF_CTRL1 has 32 bits, but only the lowest 16 bits are used */
-               SK_OUT16(IoC, MR_ADDR(Port, TX_MFF_CTRL1), MFF_CLR_MAC_RST);
-
-               TOut = 0;
-               do {
-                       if (TOut++ > 10000) {
-                               /*
-                                * Adapter seems to be in RESET state.
-                                * Registers cannot be written.
-                                */
-                               return;
-                       }
-
-                       SK_OUT16(IoC, MR_ADDR(Port, TX_MFF_CTRL1), MFF_SET_MAC_RST);
-
-                       SK_IN16(IoC, MR_ADDR(Port, TX_MFF_CTRL1), &Word);
-
-               } while ((Word & MFF_SET_MAC_RST) == 0);
-       }
-
-       /* For external PHYs there must be special handling */
-       if (pAC->GIni.GP[Port].PhyType != SK_PHY_XMAC) {
-               /* reset external PHY */
-               SK_IN32(IoC, B2_GP_IO, &Reg);
-               if (Port == 0) {
-                       Reg |= GP_DIR_0; /* set to output */
-                       Reg &= ~GP_IO_0;
-               }
-               else {
-                       Reg |= GP_DIR_2; /* set to output */
-                       Reg &= ~GP_IO_2;
-               }
-               SK_OUT32(IoC, B2_GP_IO, Reg);
-
-               /* short delay */
-               SK_IN32(IoC, B2_GP_IO, &Reg);
-       }
-
-}      /* SkXmHardRst */
-
-
-/******************************************************************************
- *
- *     SkGmSoftRst() - Do a GMAC software reset
- *
- * Description:
- *     The GPHY registers should not be destroyed during this
- *     kind of software reset.
- *
- * Returns:
- *     nothing
- */
-static void SkGmSoftRst(
-SK_AC  *pAC,   /* adapter context */
-SK_IOC IoC,    /* IO context */
-int            Port)   /* Port Index (MAC_1 + n) */
-{
-       SK_U16  EmptyHash[4] = {0x0000, 0x0000, 0x0000, 0x0000};
-       SK_U16  RxCtrl;
-
-       /* reset the statistics module */
-
-       /* disable all GMAC IRQs */
-       SK_OUT8(IoC, GMAC_IRQ_MSK, 0);
-
-       /* disable all PHY IRQs */
-       SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_INT_MASK, 0);
-
-       /* clear the Hash Register */
-       GM_OUTHASH(IoC, Port, GM_MC_ADDR_H1, EmptyHash);
-
-       /* Enable Unicast and Multicast filtering */
-       GM_IN16(IoC, Port, GM_RX_CTRL, &RxCtrl);
-
-       GM_OUT16(IoC, Port, GM_RX_CTRL,
-               RxCtrl | GM_RXCR_UCF_ENA | GM_RXCR_MCF_ENA);
-
-}      /* SkGmSoftRst */
-
-
-/******************************************************************************
- *
- *     SkGmHardRst() - Do a GMAC hardware reset
- *
- * Description:
- *
- * ATTENTION:
- *     It is absolutely necessary to reset the SW_RST Bit first
- *     before calling this function.
- *
- * Returns:
- *     nothing
- */
-static void SkGmHardRst(
-SK_AC  *pAC,   /* adapter context */
-SK_IOC IoC,    /* IO context */
-int            Port)   /* Port Index (MAC_1 + n) */
-{
-       /* set GPHY Control reset */
-       SK_OUT32(IoC, MR_ADDR(Port, GPHY_CTRL), GPC_RST_SET);
-
-       /* set GMAC Control reset */
-       SK_OUT32(IoC, MR_ADDR(Port, GMAC_CTRL), GMC_RST_SET);
-
-}      /* SkGmHardRst */
-
-
-/******************************************************************************
- *
- *     SkMacSoftRst() - Do a MAC software reset
- *
- * Description:        calls a MAC software reset routine dep. on board type
- *
- * Returns:
- *     nothing
- */
-void SkMacSoftRst(
-SK_AC  *pAC,   /* adapter context */
-SK_IOC IoC,    /* IO context */
-int            Port)   /* Port Index (MAC_1 + n) */
-{
-       SK_GEPORT       *pPrt;
-
-       pPrt = &pAC->GIni.GP[Port];
-
-       /* disable receiver and transmitter */
-       SkMacRxTxDisable(pAC, IoC, Port);
-
-       if (pAC->GIni.GIGenesis) {
-
-               SkXmSoftRst(pAC, IoC, Port);
-       }
-       else {
-
-               SkGmSoftRst(pAC, IoC, Port);
-       }
-
-       /* flush the MAC's Rx and Tx FIFOs */
-       SkMacFlushTxFifo(pAC, IoC, Port);
-
-       SkMacFlushRxFifo(pAC, IoC, Port);
-
-       pPrt->PState = SK_PRT_STOP;
-
-}      /* SkMacSoftRst */
-
-
-/******************************************************************************
- *
- *     SkMacHardRst() - Do a MAC hardware reset
- *
- * Description:        calls a MAC hardware reset routine dep. on board type
- *
- * Returns:
- *     nothing
- */
-void SkMacHardRst(
-SK_AC  *pAC,   /* adapter context */
-SK_IOC IoC,    /* IO context */
-int            Port)   /* Port Index (MAC_1 + n) */
-{
-
-       if (pAC->GIni.GIGenesis) {
-
-               SkXmHardRst(pAC, IoC, Port);
-       }
-       else {
-
-               SkGmHardRst(pAC, IoC, Port);
-       }
-
-       pAC->GIni.GP[Port].PState = SK_PRT_RESET;
-
-}      /* SkMacHardRst */
-
-
-/******************************************************************************
- *
- *     SkXmInitMac() - Initialize the XMAC II
- *
- * Description:
- *     Initialize the XMAC of the specified port.
- *     The XMAC must be reset or stopped before calling this function.
- *
- * Note:
- *     The XMAC's Rx and Tx state machine is still disabled when returning.
- *
- * Returns:
- *     nothing
- */
-void SkXmInitMac(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* IO context */
-int            Port)           /* Port Index (MAC_1 + n) */
-{
-       SK_GEPORT       *pPrt;
-       SK_U32          Reg;
-       int                     i;
-       SK_U16          SWord;
-
-       pPrt = &pAC->GIni.GP[Port];
-
-       if (pPrt->PState == SK_PRT_STOP) {
-               /* Port State: SK_PRT_STOP */
-               /* Verify that the reset bit is cleared */
-               SK_IN16(IoC, MR_ADDR(Port, TX_MFF_CTRL1), &SWord);
-
-               if ((SWord & MFF_SET_MAC_RST) != 0) {
-                       /* PState does not match HW state */
-                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E006, SKERR_HWI_E006MSG);
-                       /* Correct it */
-                       pPrt->PState = SK_PRT_RESET;
-               }
-       }
-
-       if (pPrt->PState == SK_PRT_RESET) {
-               /*
-                * clear HW reset
-                * Note: The SW reset is self clearing, therefore there is
-                *       nothing to do here.
-                */
-               SK_OUT16(IoC, MR_ADDR(Port, TX_MFF_CTRL1), MFF_CLR_MAC_RST);
-
-               /* Ensure that XMAC reset release is done (errata from LReinbold?) */
-               SK_IN16(IoC, MR_ADDR(Port, TX_MFF_CTRL1), &SWord);
-
-               /* Clear PHY reset */
-               if (pPrt->PhyType != SK_PHY_XMAC) {
-
-                       SK_IN32(IoC, B2_GP_IO, &Reg);
-
-                       if (Port == 0) {
-                               Reg |= (GP_DIR_0 | GP_IO_0); /* set to output */
-                       }
-                       else {
-                               Reg |= (GP_DIR_2 | GP_IO_2); /* set to output */
-                       }
-                       SK_OUT32(IoC, B2_GP_IO, Reg);
-
-                       /* Enable GMII interface */
-                       XM_OUT16(IoC, Port, XM_HW_CFG, XM_HW_GMII_MD);
-
-                       /* read Id from external PHY (all have the same address) */
-                       SkXmPhyRead(pAC, IoC, Port, PHY_XMAC_ID1, &pPrt->PhyId1);
-
-                       /*
-                        * Optimize MDIO transfer by suppressing preamble.
-                        * Must be done AFTER first access to BCOM chip.
-                        */
-                       XM_IN16(IoC, Port, XM_MMU_CMD, &SWord);
-
-                       XM_OUT16(IoC, Port, XM_MMU_CMD, SWord | XM_MMU_NO_PRE);
-
-                       if (pPrt->PhyId1 == PHY_BCOM_ID1_C0) {
-                               /*
-                                * Workaround BCOM Errata for the C0 type.
-                                * Write magic patterns to reserved registers.
-                                */
-                               i = 0;
-                               while (BcomRegC0Hack[i].PhyReg != 0) {
-                                       SkXmPhyWrite(pAC, IoC, Port, BcomRegC0Hack[i].PhyReg,
-                                               BcomRegC0Hack[i].PhyVal);
-                                       i++;
-                               }
-                       }
-                       else if (pPrt->PhyId1 == PHY_BCOM_ID1_A1) {
-                               /*
-                                * Workaround BCOM Errata for the A1 type.
-                                * Write magic patterns to reserved registers.
-                                */
-                               i = 0;
-                               while (BcomRegA1Hack[i].PhyReg != 0) {
-                                       SkXmPhyWrite(pAC, IoC, Port, BcomRegA1Hack[i].PhyReg,
-                                               BcomRegA1Hack[i].PhyVal);
-                                       i++;
-                               }
-                       }
-
-                       /*
-                        * Workaround BCOM Errata (#10523) for all BCom PHYs.
-                        * Disable Power Management after reset.
-                        */
-                       SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_AUX_CTRL, &SWord);
-
-                       SkXmPhyWrite(pAC, IoC, Port, PHY_BCOM_AUX_CTRL,
-                               (SK_U16)(SWord | PHY_B_AC_DIS_PM));
-
-                       /* PHY LED initialization is done in SkGeXmitLED() */
-               }
-
-               /* Dummy read the Interrupt source register */
-               XM_IN16(IoC, Port, XM_ISRC, &SWord);
-
-               /*
-                * The auto-negotiation process starts immediately after
-                * clearing the reset. The auto-negotiation process should be
-                * started by the SIRQ, therefore stop it here immediately.
-                */
-               SkMacInitPhy(pAC, IoC, Port, SK_FALSE);
-
-#if 0
-               /* temp. code: enable signal detect */
-               /* WARNING: do not override GMII setting above */
-               XM_OUT16(pAC, Port, XM_HW_CFG, XM_HW_COM4SIG);
-#endif
-       }
-
-       /*
-        * configure the XMACs Station Address
-        * B2_MAC_2 = xx xx xx xx xx x1 is programmed to XMAC A
-        * B2_MAC_3 = xx xx xx xx xx x2 is programmed to XMAC B
-        */
-       for (i = 0; i < 3; i++) {
-               /*
-                * The following 2 statements are together endianess
-                * independent. Remember this when changing.
-                */
-               SK_IN16(IoC, (B2_MAC_2 + Port * 8 + i * 2), &SWord);
-
-               XM_OUT16(IoC, Port, (XM_SA + i * 2), SWord);
-       }
-
-       /* Tx Inter Packet Gap (XM_TX_IPG):     use default */
-       /* Tx High Water Mark (XM_TX_HI_WM):    use default */
-       /* Tx Low Water Mark (XM_TX_LO_WM):     use default */
-       /* Host Request Threshold (XM_HT_THR):  use default */
-       /* Rx Request Threshold (XM_RX_THR):    use default */
-       /* Rx Low Water Mark (XM_RX_LO_WM):     use default */
-
-       /* configure Rx High Water Mark (XM_RX_HI_WM) */
-       XM_OUT16(IoC, Port, XM_RX_HI_WM, SK_XM_RX_HI_WM);
-
-       /* Configure Tx Request Threshold */
-       SWord = SK_XM_THR_SL;                           /* for single port */
-
-       if (pAC->GIni.GIMacsFound > 1) {
-               switch (pAC->GIni.GIPortUsage) {
-               case SK_RED_LINK:
-                       SWord = SK_XM_THR_REDL;         /* redundant link */
-                       break;
-               case SK_MUL_LINK:
-                       SWord = SK_XM_THR_MULL;         /* load balancing */
-                       break;
-               case SK_JUMBO_LINK:
-                       SWord = SK_XM_THR_JUMBO;        /* jumbo frames */
-                       break;
-               default:
-                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E014, SKERR_HWI_E014MSG);
-                       break;
-               }
-       }
-       XM_OUT16(IoC, Port, XM_TX_THR, SWord);
-
-       /* setup register defaults for the Tx Command Register */
-       XM_OUT16(IoC, Port, XM_TX_CMD, XM_TX_AUTO_PAD);
-
-       /* setup register defaults for the Rx Command Register */
-       SWord = XM_RX_STRIP_FCS | XM_RX_LENERR_OK;
-
-       if (pAC->GIni.GIPortUsage == SK_JUMBO_LINK) {
-               SWord |= XM_RX_BIG_PK_OK;
-       }
-
-       if (pPrt->PLinkModeConf == SK_LMODE_HALF) {
-               /*
-                * If in manual half duplex mode the other side might be in
-                * full duplex mode, so ignore if a carrier extension is not seen
-                * on frames received
-                */
-               SWord |= XM_RX_DIS_CEXT;
-       }
-
-       XM_OUT16(IoC, Port, XM_RX_CMD, SWord);
-
-       /*
-        * setup register defaults for the Mode Register
-        *      - Don't strip error frames to avoid Store & Forward
-        *        on the Rx side.
-        *      - Enable 'Check Station Address' bit
-        *      - Enable 'Check Address Array' bit
-        */
-       XM_OUT32(IoC, Port, XM_MODE, XM_DEF_MODE);
-
-       /*
-        * Initialize the Receive Counter Event Mask (XM_RX_EV_MSK)
-        *      - Enable all bits excepting 'Octets Rx OK Low CntOv'
-        *        and 'Octets Rx OK Hi Cnt Ov'.
-        */
-       XM_OUT32(IoC, Port, XM_RX_EV_MSK, XMR_DEF_MSK);
-
-       /*
-        * Initialize the Transmit Counter Event Mask (XM_TX_EV_MSK)
-        *      - Enable all bits excepting 'Octets Tx OK Low CntOv'
-        *        and 'Octets Tx OK Hi Cnt Ov'.
-        */
-       XM_OUT32(IoC, Port, XM_TX_EV_MSK, XMT_DEF_MSK);
-
-       /*
-        * Do NOT init XMAC interrupt mask here.
-        * All interrupts remain disable until link comes up!
-        */
-
-       /*
-        * Any additional configuration changes may be done now.
-        * The last action is to enable the Rx and Tx state machine.
-        * This should be done after the auto-negotiation process
-        * has been completed successfully.
-        */
-}      /* SkXmInitMac */
-
-/******************************************************************************
- *
- *     SkGmInitMac() - Initialize the GMAC
- *
- * Description:
- *     Initialize the GMAC of the specified port.
- *     The GMAC must be reset or stopped before calling this function.
- *
- * Note:
- *     The GMAC's Rx and Tx state machine is still disabled when returning.
- *
- * Returns:
- *     nothing
- */
-void SkGmInitMac(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* IO context */
-int            Port)           /* Port Index (MAC_1 + n) */
-{
-       SK_GEPORT       *pPrt;
-       int                     i;
-       SK_U16          SWord;
-       SK_U32          DWord;
-
-       pPrt = &pAC->GIni.GP[Port];
-
-       if (pPrt->PState == SK_PRT_STOP) {
-               /* Port State: SK_PRT_STOP */
-               /* Verify that the reset bit is cleared */
-               SK_IN32(IoC, MR_ADDR(Port, GMAC_CTRL), &DWord);
-
-               if ((DWord & GMC_RST_SET) != 0) {
-                       /* PState does not match HW state */
-                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E006, SKERR_HWI_E006MSG);
-                       /* Correct it */
-                       pPrt->PState = SK_PRT_RESET;
-               }
-       }
-
-       if (pPrt->PState == SK_PRT_RESET) {
-               /* set GPHY Control reset */
-               SK_OUT32(IoC, MR_ADDR(Port, GPHY_CTRL), GPC_RST_SET);
-
-               /* set GMAC Control reset */
-               SK_OUT32(IoC, MR_ADDR(Port, GMAC_CTRL), GMC_RST_SET);
-
-               /* clear GMAC Control reset */
-               SK_OUT32(IoC, MR_ADDR(Port, GMAC_CTRL), GMC_RST_CLR);
-
-               /* set GMAC Control reset */
-               SK_OUT32(IoC, MR_ADDR(Port, GMAC_CTRL), GMC_RST_SET);
-
-               /* set HWCFG_MODE */
-               DWord = GPC_INT_POL_HI | GPC_DIS_FC | GPC_DIS_SLEEP |
-                       GPC_ENA_XC | GPC_ANEG_ADV_ALL_M | GPC_ENA_PAUSE |
-                       (pAC->GIni.GICopperType ? GPC_HWCFG_GMII_COP :
-                       GPC_HWCFG_GMII_FIB);
-
-               /* set GPHY Control reset */
-               SK_OUT32(IoC, MR_ADDR(Port, GPHY_CTRL), DWord | GPC_RST_SET);
-
-               /* release GPHY Control reset */
-               SK_OUT32(IoC, MR_ADDR(Port, GPHY_CTRL), DWord | GPC_RST_CLR);
-
-               /* clear GMAC Control reset */
-               SK_OUT32(IoC, MR_ADDR(Port, GMAC_CTRL), GMC_PAUSE_ON | GMC_RST_CLR);
-
-               /* Dummy read the Interrupt source register */
-               SK_IN16(IoC, GMAC_IRQ_SRC, &SWord);
-
-#ifndef VCPU
-               /* read Id from PHY */
-               SkGmPhyRead(pAC, IoC, Port, PHY_MARV_ID1, &pPrt->PhyId1);
-
-               SkGmInitPhyMarv(pAC, IoC, Port, SK_FALSE);
-#endif /* VCPU */
-       }
-
-       (void)SkGmResetCounter(pAC, IoC, Port);
-
-       SWord =  0;
-
-       /* speed settings */
-       switch (pPrt->PLinkSpeed) {
-       case SK_LSPEED_AUTO:
-       case SK_LSPEED_1000MBPS:
-               SWord |= GM_GPCR_SPEED_1000 | GM_GPCR_SPEED_100;
-               break;
-       case SK_LSPEED_100MBPS:
-               SWord |= GM_GPCR_SPEED_100;
-               break;
-       case SK_LSPEED_10MBPS:
-               break;
-       }
-
-       /* duplex settings */
-       if (pPrt->PLinkMode != SK_LMODE_HALF) {
-               /* set full duplex */
-               SWord |= GM_GPCR_DUP_FULL;
-       }
-
-       /* flow control settings */
-       switch (pPrt->PFlowCtrlMode) {
-       case SK_FLOW_MODE_NONE:
-               /* disable auto-negotiation for flow-control */
-               SWord |= GM_GPCR_FC_TX_DIS | GM_GPCR_FC_RX_DIS;
-               break;
-       case SK_FLOW_MODE_LOC_SEND:
-               SWord |= GM_GPCR_FC_RX_DIS;
-               break;
-       case SK_FLOW_MODE_SYMMETRIC:
-               /* TBD */
-       case SK_FLOW_MODE_SYM_OR_REM:
-               /* enable auto-negotiation for flow-control and */
-               /* enable Rx and Tx of pause frames */
-               break;
-       }
-
-       /* Auto-negotiation ? */
-       if (pPrt->PLinkMode == SK_LMODE_HALF || pPrt->PLinkMode == SK_LMODE_FULL) {
-               /* disable auto-update for speed, duplex and flow-control */
-               SWord |= GM_GPCR_AU_ALL_DIS;
-       }
-
-       /* setup General Purpose Control Register */
-       GM_OUT16(IoC, Port, GM_GP_CTRL, SWord);
-
-       /* setup Transmit Control Register */
-       GM_OUT16(IoC, Port, GM_TX_CTRL, GM_TXCR_COL_THR);
-
-       /* setup Receive Control Register */
-       GM_OUT16(IoC, Port, GM_RX_CTRL, GM_RXCR_UCF_ENA | GM_RXCR_MCF_ENA |
-               GM_RXCR_CRC_DIS);
-
-       /* setup Transmit Flow Control Register */
-       GM_OUT16(IoC, Port, GM_TX_FLOW_CTRL, 0xffff);
-
-       /* setup Transmit Parameter Register */
-#ifdef VCPU
-       GM_IN16(IoC, Port, GM_TX_PARAM, &SWord);
-#endif /* VCPU */
-
-       SWord = JAM_LEN_VAL(3) | JAM_IPG_VAL(11) | IPG_JAM_DATA(26);
-
-       GM_OUT16(IoC, Port, GM_TX_PARAM, SWord);
-
-       /* configure the Serial Mode Register */
-#ifdef VCPU
-       GM_IN16(IoC, Port, GM_SERIAL_MODE, &SWord);
-#endif /* VCPU */
-
-       SWord = GM_SMOD_VLAN_ENA | IPG_VAL_FAST_ETH;
-
-       if (pAC->GIni.GIPortUsage == SK_JUMBO_LINK) {
-               /* enable jumbo mode (Max. Frame Length = 9018) */
-               SWord |= GM_SMOD_JUMBO_ENA;
-       }
-
-       GM_OUT16(IoC, Port, GM_SERIAL_MODE, SWord);
-
-       /*
-        * configure the GMACs Station Addresses
-        * in PROM you can find our addresses at:
-        * B2_MAC_1 = xx xx xx xx xx x0 virtual address
-        * B2_MAC_2 = xx xx xx xx xx x1 is programmed to GMAC A
-        * B2_MAC_3 = xx xx xx xx xx x2 is reserved for DualPort
-        */
-
-       for (i = 0; i < 3; i++) {
-               /*
-                * The following 2 statements are together endianess
-                * independent. Remember this when changing.
-                */
-               /* physical address: will be used for pause frames */
-               SK_IN16(IoC, (B2_MAC_2 + Port * 8 + i * 2), &SWord);
-
-#ifdef WA_DEV_16
-               /* WA for deviation #16 */
-               if (pAC->GIni.GIChipRev == 0) {
-                       /* swap the address bytes */
-                       SWord = ((SWord & 0xff00) >> 8) | ((SWord & 0x00ff) << 8);
-
-                       /* write to register in reversed order */
-                       GM_OUT16(IoC, Port, (GM_SRC_ADDR_1L + (2 - i) * 4), SWord);
-               }
-               else {
-                       GM_OUT16(IoC, Port, (GM_SRC_ADDR_1L + i * 4), SWord);
-               }
-#else
-               GM_OUT16(IoC, Port, (GM_SRC_ADDR_1L + i * 4), SWord);
-#endif /* WA_DEV_16 */
-
-               /* virtual address: will be used for data */
-               SK_IN16(IoC, (B2_MAC_1 + Port * 8 + i * 2), &SWord);
-
-               GM_OUT16(IoC, Port, (GM_SRC_ADDR_2L + i * 4), SWord);
-
-               /* reset Multicast filtering Hash registers 1-3 */
-               GM_OUT16(IoC, Port, GM_MC_ADDR_H1 + 4*i, 0);
-       }
-
-       /* reset Multicast filtering Hash register 4 */
-       GM_OUT16(IoC, Port, GM_MC_ADDR_H4, 0);
-
-       /* enable interrupt mask for counter overflows */
-       GM_OUT16(IoC, Port, GM_TX_IRQ_MSK, 0);
-       GM_OUT16(IoC, Port, GM_RX_IRQ_MSK, 0);
-       GM_OUT16(IoC, Port, GM_TR_IRQ_MSK, 0);
-
-       /* read General Purpose Status */
-       GM_IN16(IoC, Port, GM_GP_STAT, &SWord);
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-               ("MAC Stat Reg=0x%04X\n", SWord));
-
-#ifdef SK_DIAG
-       c_print("MAC Stat Reg=0x%04X\n", SWord);
-#endif /* SK_DIAG */
-
-}      /* SkGmInitMac */
-
-
-/******************************************************************************
- *
- *     SkXmInitDupMd() - Initialize the XMACs Duplex Mode
- *
- * Description:
- *     This function initializes the XMACs Duplex Mode.
- *     It should be called after successfully finishing
- *     the Auto-negotiation Process
- *
- * Returns:
- *     nothing
- */
-void SkXmInitDupMd(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* IO context */
-int            Port)           /* Port Index (MAC_1 + n) */
-{
-       switch (pAC->GIni.GP[Port].PLinkModeStatus) {
-       case SK_LMODE_STAT_AUTOHALF:
-       case SK_LMODE_STAT_HALF:
-               /* Configuration Actions for Half Duplex Mode */
-               /*
-                * XM_BURST = default value. We are probable not quick
-                *      enough at the 'XMAC' bus to burst 8kB.
-                *      The XMAC stops bursting if no transmit frames
-                *      are available or the burst limit is exceeded.
-                */
-               /* XM_TX_RT_LIM = default value (15) */
-               /* XM_TX_STIME = default value (0xff = 4096 bit times) */
-               break;
-       case SK_LMODE_STAT_AUTOFULL:
-       case SK_LMODE_STAT_FULL:
-               /* Configuration Actions for Full Duplex Mode */
-               /*
-                * The duplex mode is configured by the PHY,
-                * therefore it seems to be that there is nothing
-                * to do here.
-                */
-               break;
-       case SK_LMODE_STAT_UNKNOWN:
-       default:
-               SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E007, SKERR_HWI_E007MSG);
-               break;
-       }
-}      /* SkXmInitDupMd */
-
-
-/******************************************************************************
- *
- *     SkXmInitPauseMd() - initialize the Pause Mode to be used for this port
- *
- * Description:
- *     This function initializes the Pause Mode which should
- *     be used for this port.
- *     It should be called after successfully finishing
- *     the Auto-negotiation Process
- *
- * Returns:
- *     nothing
- */
-void SkXmInitPauseMd(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* IO context */
-int            Port)           /* Port Index (MAC_1 + n) */
-{
-       SK_GEPORT       *pPrt;
-       SK_U32          DWord;
-       SK_U16          Word;
-
-       pPrt = &pAC->GIni.GP[Port];
-
-       XM_IN16(IoC, Port, XM_MMU_CMD, &Word);
-
-       if (pPrt->PFlowCtrlStatus == SK_FLOW_STAT_NONE ||
-               pPrt->PFlowCtrlStatus == SK_FLOW_STAT_LOC_SEND) {
-
-               /* Disable Pause Frame Reception */
-               Word |= XM_MMU_IGN_PF;
-       }
-       else {
-               /*
-                * enabling pause frame reception is required for 1000BT
-                * because the XMAC is not reset if the link is going down
-                */
-               /* Enable Pause Frame Reception */
-               Word &= ~XM_MMU_IGN_PF;
-       }
-
-       XM_OUT16(IoC, Port, XM_MMU_CMD, Word);
-
-       XM_IN32(IoC, Port, XM_MODE, &DWord);
-
-       if (pPrt->PFlowCtrlStatus == SK_FLOW_STAT_SYMMETRIC ||
-               pPrt->PFlowCtrlStatus == SK_FLOW_STAT_LOC_SEND) {
-
-               /*
-                * Configure Pause Frame Generation
-                * Use internal and external Pause Frame Generation.
-                * Sending pause frames is edge triggered.
-                * Send a Pause frame with the maximum pause time if
-                * internal oder external FIFO full condition occurs.
-                * Send a zero pause time frame to re-start transmission.
-                */
-
-               /* XM_PAUSE_DA = '010000C28001' (default) */
-
-               /* XM_MAC_PTIME = 0xffff (maximum) */
-               /* remember this value is defined in big endian (!) */
-               XM_OUT16(IoC, Port, XM_MAC_PTIME, 0xffff);
-
-               /* Set Pause Mode in Mode Register */
-               DWord |= XM_PAUSE_MODE;
-
-               /* Set Pause Mode in MAC Rx FIFO */
-               SK_OUT16(IoC, MR_ADDR(Port, RX_MFF_CTRL1), MFF_ENA_PAUSE);
-       }
-       else {
-               /*
-                * disable pause frame generation is required for 1000BT
-                * because the XMAC is not reset if the link is going down
-                */
-               /* Disable Pause Mode in Mode Register */
-               DWord &= ~XM_PAUSE_MODE;
-
-               /* Disable Pause Mode in MAC Rx FIFO */
-               SK_OUT16(IoC, MR_ADDR(Port, RX_MFF_CTRL1), MFF_DIS_PAUSE);
-       }
-
-       XM_OUT32(IoC, Port, XM_MODE, DWord);
-}      /* SkXmInitPauseMd*/
-
-
-/******************************************************************************
- *
- *     SkXmInitPhyXmac() - Initialize the XMAC Phy registers
- *
- * Description:        initializes all the XMACs Phy registers
- *
- * Note:
- *
- * Returns:
- *     nothing
- */
-static void SkXmInitPhyXmac(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* IO context */
-int            Port,           /* Port Index (MAC_1 + n) */
-SK_BOOL        DoLoop)         /* Should a Phy LoopBack be set-up? */
-{
-       SK_GEPORT       *pPrt;
-       SK_U16          Ctrl;
-
-       pPrt = &pAC->GIni.GP[Port];
-       Ctrl = 0;
-
-       /* Auto-negotiation ? */
-       if (pPrt->PLinkMode == SK_LMODE_HALF || pPrt->PLinkMode == SK_LMODE_FULL) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-                       ("InitPhyXmac: no auto-negotiation Port %d\n", Port));
-               /* Set DuplexMode in Config register */
-               if (pPrt->PLinkMode == SK_LMODE_FULL) {
-                       Ctrl |= PHY_CT_DUP_MD;
-               }
-
-               /*
-                * Do NOT enable Auto-negotiation here. This would hold
-                * the link down because no IDLEs are transmitted
-                */
-       }
-       else {
-               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-                       ("InitPhyXmac: with auto-negotiation Port %d\n", Port));
-               /* Set Auto-negotiation advertisement */
-
-               /* Set Full/half duplex capabilities */
-               switch (pPrt->PLinkMode) {
-               case SK_LMODE_AUTOHALF:
-                       Ctrl |= PHY_X_AN_HD;
-                       break;
-               case SK_LMODE_AUTOFULL:
-                       Ctrl |= PHY_X_AN_FD;
-                       break;
-               case SK_LMODE_AUTOBOTH:
-                       Ctrl |= PHY_X_AN_FD | PHY_X_AN_HD;
-                       break;
-               default:
-                       SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_HWI_E015,
-                               SKERR_HWI_E015MSG);
-               }
-
-               switch (pPrt->PFlowCtrlMode) {
-               case SK_FLOW_MODE_NONE:
-                       Ctrl |= PHY_X_P_NO_PAUSE;
-                       break;
-               case SK_FLOW_MODE_LOC_SEND:
-                       Ctrl |= PHY_X_P_ASYM_MD;
-                       break;
-               case SK_FLOW_MODE_SYMMETRIC:
-                       Ctrl |= PHY_X_P_SYM_MD;
-                       break;
-               case SK_FLOW_MODE_SYM_OR_REM:
-                       Ctrl |= PHY_X_P_BOTH_MD;
-                       break;
-               default:
-                       SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_HWI_E016,
-                               SKERR_HWI_E016MSG);
-               }
-
-               /* Write AutoNeg Advertisement Register */
-               SkXmPhyWrite(pAC, IoC, Port, PHY_XMAC_AUNE_ADV, Ctrl);
-
-               /* Restart Auto-negotiation */
-               Ctrl = PHY_CT_ANE | PHY_CT_RE_CFG;
-       }
-
-       if (DoLoop) {
-               /* Set the Phy Loopback bit, too */
-               Ctrl |= PHY_CT_LOOP;
-       }
-
-       /* Write to the Phy control register */
-       SkXmPhyWrite(pAC, IoC, Port, PHY_XMAC_CTRL, Ctrl);
-}      /* SkXmInitPhyXmac */
-
-
-/******************************************************************************
- *
- *     SkXmInitPhyBcom() - Initialize the Broadcom Phy registers
- *
- * Description:        initializes all the Broadcom Phy registers
- *
- * Note:
- *
- * Returns:
- *     nothing
- */
-static void SkXmInitPhyBcom(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* IO context */
-int            Port,           /* Port Index (MAC_1 + n) */
-SK_BOOL        DoLoop)         /* Should a Phy LoopBack be set-up? */
-{
-       SK_GEPORT       *pPrt;
-       SK_U16          Ctrl1;
-       SK_U16          Ctrl2;
-       SK_U16          Ctrl3;
-       SK_U16          Ctrl4;
-       SK_U16          Ctrl5;
-
-       Ctrl1 = PHY_CT_SP1000;
-       Ctrl2 = 0;
-       Ctrl3 = PHY_SEL_TYPE;
-       Ctrl4 = PHY_B_PEC_EN_LTR;
-       Ctrl5 = PHY_B_AC_TX_TST;
-
-       pPrt = &pAC->GIni.GP[Port];
-
-       /* manually Master/Slave ? */
-       if (pPrt->PMSMode != SK_MS_MODE_AUTO) {
-               Ctrl2 |= PHY_B_1000C_MSE;
-
-               if (pPrt->PMSMode == SK_MS_MODE_MASTER) {
-                       Ctrl2 |= PHY_B_1000C_MSC;
-               }
-       }
-       /* Auto-negotiation ? */
-       if (pPrt->PLinkMode == SK_LMODE_HALF || pPrt->PLinkMode == SK_LMODE_FULL) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-                       ("InitPhyBcom: no auto-negotiation Port %d\n", Port));
-               /* Set DuplexMode in Config register */
-               Ctrl1 |= (pPrt->PLinkMode == SK_LMODE_FULL ? PHY_CT_DUP_MD : 0);
-
-               /* Determine Master/Slave manually if not already done */
-               if (pPrt->PMSMode == SK_MS_MODE_AUTO) {
-                       Ctrl2 |= PHY_B_1000C_MSE;       /* set it to Slave */
-               }
-
-               /*
-                * Do NOT enable Auto-negotiation here. This would hold
-                * the link down because no IDLES are transmitted
-                */
-       }
-       else {
-               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-                       ("InitPhyBcom: with auto-negotiation Port %d\n", Port));
-               /* Set Auto-negotiation advertisement */
-
-               /*
-                * Workaround BCOM Errata #1 for the C5 type.
-                * 1000Base-T Link Acquisition Failure in Slave Mode
-                * Set Repeater/DTE bit 10 of the 1000Base-T Control Register
-                */
-               Ctrl2 |= PHY_B_1000C_RD;
-
-                /* Set Full/half duplex capabilities */
-               switch (pPrt->PLinkMode) {
-               case SK_LMODE_AUTOHALF:
-                       Ctrl2 |= PHY_B_1000C_AHD;
-                       break;
-               case SK_LMODE_AUTOFULL:
-                       Ctrl2 |= PHY_B_1000C_AFD;
-                       break;
-               case SK_LMODE_AUTOBOTH:
-                       Ctrl2 |= PHY_B_1000C_AFD | PHY_B_1000C_AHD;
-                       break;
-               default:
-                       SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_HWI_E015,
-                               SKERR_HWI_E015MSG);
-               }
-
-               switch (pPrt->PFlowCtrlMode) {
-               case SK_FLOW_MODE_NONE:
-                       Ctrl3 |= PHY_B_P_NO_PAUSE;
-                       break;
-               case SK_FLOW_MODE_LOC_SEND:
-                       Ctrl3 |= PHY_B_P_ASYM_MD;
-                       break;
-               case SK_FLOW_MODE_SYMMETRIC:
-                       Ctrl3 |= PHY_B_P_SYM_MD;
-                       break;
-               case SK_FLOW_MODE_SYM_OR_REM:
-                       Ctrl3 |= PHY_B_P_BOTH_MD;
-                       break;
-               default:
-                       SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_HWI_E016,
-                               SKERR_HWI_E016MSG);
-               }
-
-               /* Restart Auto-negotiation */
-               Ctrl1 |= PHY_CT_ANE | PHY_CT_RE_CFG;
-       }
-
-       /* Initialize LED register here? */
-       /* No. Please do it in SkDgXmitLed() (if required) and swap
-          init order of LEDs and XMAC. (MAl) */
-
-       /* Write 1000Base-T Control Register */
-       SkXmPhyWrite(pAC, IoC, Port, PHY_BCOM_1000T_CTRL, Ctrl2);
-       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-               ("1000B-T Ctrl Reg=0x%04X\n", Ctrl2));
-
-       /* Write AutoNeg Advertisement Register */
-       SkXmPhyWrite(pAC, IoC, Port, PHY_BCOM_AUNE_ADV, Ctrl3);
-       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-               ("Auto-Neg. Adv. Reg=0x%04X\n", Ctrl3));
-
-       if (DoLoop) {
-               /* Set the Phy Loopback bit, too */
-               Ctrl1 |= PHY_CT_LOOP;
-       }
-
-       if (pAC->GIni.GIPortUsage == SK_JUMBO_LINK) {
-               /* configure FIFO to high latency for transmission of ext. packets */
-               Ctrl4 |= PHY_B_PEC_HIGH_LA;
-
-               /* configure reception of extended packets */
-               Ctrl5 |= PHY_B_AC_LONG_PACK;
-
-               SkXmPhyWrite(pAC, IoC, Port, PHY_BCOM_AUX_CTRL, Ctrl5);
-       }
-
-       /* Configure LED Traffic Mode and Jumbo Frame usage if specified */
-       SkXmPhyWrite(pAC, IoC, Port, PHY_BCOM_P_EXT_CTRL, Ctrl4);
-
-       /* Write to the Phy control register */
-       SkXmPhyWrite(pAC, IoC, Port, PHY_BCOM_CTRL, Ctrl1);
-       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-               ("PHY Control Reg=0x%04X\n", Ctrl1));
-}      /* SkXmInitPhyBcom */
-
-
-/******************************************************************************
- *
- *     SkGmInitPhyMarv() - Initialize the Marvell Phy registers
- *
- * Description:        initializes all the Marvell Phy registers
- *
- * Note:
- *
- * Returns:
- *     nothing
- */
-static void SkGmInitPhyMarv(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* IO context */
-int            Port,           /* Port Index (MAC_1 + n) */
-SK_BOOL        DoLoop)         /* Should a Phy LoopBack be set-up? */
-{
-       SK_GEPORT       *pPrt;
-       SK_U16          PhyCtrl;
-       SK_U16          C1000BaseT;
-       SK_U16          AutoNegAdv;
-       SK_U16          ExtPhyCtrl;
-       SK_U16          PhyStat;
-       SK_U16          PhyStat1;
-       SK_U16          PhySpecStat;
-       SK_U16          LedCtrl;
-       SK_BOOL         AutoNeg;
-
-#ifdef VCPU
-       VCPUprintf(0, "SkGmInitPhyMarv(), Port=%u, DoLoop=%u\n",
-               Port, DoLoop);
-#else /* VCPU */
-
-       pPrt = &pAC->GIni.GP[Port];
-
-       /* Auto-negotiation ? */
-       if (pPrt->PLinkMode == SK_LMODE_HALF || pPrt->PLinkMode == SK_LMODE_FULL) {
-               AutoNeg = SK_FALSE;
-       }
-       else {
-               AutoNeg = SK_TRUE;
-       }
-
-       if (!DoLoop) {
-               /* Read Ext. PHY Specific Control */
-               SkGmPhyRead(pAC, IoC, Port, PHY_MARV_EXT_CTRL, &ExtPhyCtrl);
-
-               ExtPhyCtrl &= ~(PHY_M_EC_M_DSC_MSK | PHY_M_EC_S_DSC_MSK |
-                       PHY_M_EC_MAC_S_MSK);
-
-               ExtPhyCtrl |= PHY_M_EC_M_DSC(1) | PHY_M_EC_S_DSC(1) |
-                       PHY_M_EC_MAC_S(MAC_TX_CLK_25_MHZ);
-
-               SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_EXT_CTRL, ExtPhyCtrl);
-               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-                       ("Ext.PHYCtrl=0x%04X\n", ExtPhyCtrl));
-
-               /* Read PHY Control */
-               SkGmPhyRead(pAC, IoC, Port, PHY_MARV_CTRL, &PhyCtrl);
-
-               /* Assert software reset */
-               SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_CTRL,
-                       (SK_U16)(PhyCtrl | PHY_CT_RESET));
-       }
-#endif /* VCPU */
-
-       PhyCtrl = 0 /* PHY_CT_COL_TST */;
-       C1000BaseT = 0;
-       AutoNegAdv = PHY_SEL_TYPE;
-
-       /* manually Master/Slave ? */
-       if (pPrt->PMSMode != SK_MS_MODE_AUTO) {
-               /* enable Manual Master/Slave */
-               C1000BaseT |= PHY_M_1000C_MSE;
-
-               if (pPrt->PMSMode == SK_MS_MODE_MASTER) {
-                       C1000BaseT |= PHY_M_1000C_MSC;  /* set it to Master */
-               }
-       }
-
-       /* Auto-negotiation ? */
-       if (!AutoNeg) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-                       ("InitPhyMarv: no auto-negotiation Port %d\n", Port));
-
-               if (pPrt->PLinkMode == SK_LMODE_FULL) {
-                       /* Set Full Duplex Mode */
-                       PhyCtrl |= PHY_CT_DUP_MD;
-               }
-
-               /* Set Master/Slave manually if not already done */
-               if (pPrt->PMSMode == SK_MS_MODE_AUTO) {
-                       C1000BaseT |= PHY_M_1000C_MSE;  /* set it to Slave */
-               }
-
-               /* Set Speed */
-               switch (pPrt->PLinkSpeed) {
-               case SK_LSPEED_AUTO:
-               case SK_LSPEED_1000MBPS:
-                       PhyCtrl |= PHY_CT_SP1000;
-                       break;
-               case SK_LSPEED_100MBPS:
-                       PhyCtrl |= PHY_CT_SP100;
-                       break;
-               case SK_LSPEED_10MBPS:
-                       break;
-               default:
-                       SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_HWI_E019,
-                               SKERR_HWI_E019MSG);
-               }
-
-               if (!DoLoop) {
-                       PhyCtrl |= PHY_CT_RESET;
-               }
-               /*
-                * Do NOT enable Auto-negotiation here. This would hold
-                * the link down because no IDLES are transmitted
-                */
-       }
-       else {
-               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-                       ("InitPhyMarv: with auto-negotiation Port %d\n", Port));
-
-               PhyCtrl |= PHY_CT_ANE;
-
-               if (pAC->GIni.GICopperType) {
-                       /* Set Speed capabilities */
-                       switch (pPrt->PLinkSpeed) {
-                       case SK_LSPEED_AUTO:
-                               C1000BaseT |= PHY_M_1000C_AHD | PHY_M_1000C_AFD;
-                               AutoNegAdv |= PHY_M_AN_100_FD | PHY_M_AN_100_HD |
-                                       PHY_M_AN_10_FD | PHY_M_AN_10_HD;
-                               break;
-                       case SK_LSPEED_1000MBPS:
-                               C1000BaseT |= PHY_M_1000C_AHD | PHY_M_1000C_AFD;
-                               break;
-                       case SK_LSPEED_100MBPS:
-                               AutoNegAdv |= PHY_M_AN_100_FD | PHY_M_AN_100_HD |
-                                       PHY_M_AN_10_FD | PHY_M_AN_10_HD;
-                               break;
-                       case SK_LSPEED_10MBPS:
-                               AutoNegAdv |= PHY_M_AN_10_FD | PHY_M_AN_10_HD;
-                               break;
-                       default:
-                               SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_HWI_E019,
-                                       SKERR_HWI_E019MSG);
-                       }
-
-                       /* Set Full/half duplex capabilities */
-                       switch (pPrt->PLinkMode) {
-                       case SK_LMODE_AUTOHALF:
-                               C1000BaseT &= ~PHY_M_1000C_AFD;
-                               AutoNegAdv &= ~(PHY_M_AN_100_FD | PHY_M_AN_10_FD);
-                               break;
-                       case SK_LMODE_AUTOFULL:
-                               C1000BaseT &= ~PHY_M_1000C_AHD;
-                               AutoNegAdv &= ~(PHY_M_AN_100_HD | PHY_M_AN_10_HD);
-                               break;
-                       case SK_LMODE_AUTOBOTH:
-                               break;
-                       default:
-                               SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_HWI_E015,
-                                       SKERR_HWI_E015MSG);
-                       }
-
-                       /* Set Auto-negotiation advertisement */
-                       switch (pPrt->PFlowCtrlMode) {
-                       case SK_FLOW_MODE_NONE:
-                               AutoNegAdv |= PHY_B_P_NO_PAUSE;
-                               break;
-                       case SK_FLOW_MODE_LOC_SEND:
-                               AutoNegAdv |= PHY_B_P_ASYM_MD;
-                               break;
-                       case SK_FLOW_MODE_SYMMETRIC:
-                               AutoNegAdv |= PHY_B_P_SYM_MD;
-                               break;
-                       case SK_FLOW_MODE_SYM_OR_REM:
-                               AutoNegAdv |= PHY_B_P_BOTH_MD;
-                               break;
-                       default:
-                               SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_HWI_E016,
-                                       SKERR_HWI_E016MSG);
-                       }
-               }
-               else {  /* special defines for FIBER (88E1011S only) */
-
-                       /* Set Full/half duplex capabilities */
-                       switch (pPrt->PLinkMode) {
-                       case SK_LMODE_AUTOHALF:
-                               AutoNegAdv |= PHY_M_AN_1000X_AHD;
-                               break;
-                       case SK_LMODE_AUTOFULL:
-                               AutoNegAdv |= PHY_M_AN_1000X_AFD;
-                               break;
-                       case SK_LMODE_AUTOBOTH:
-                               AutoNegAdv |= PHY_M_AN_1000X_AHD | PHY_M_AN_1000X_AFD;
-                               break;
-                       default:
-                               SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_HWI_E015,
-                                       SKERR_HWI_E015MSG);
-                       }
-
-                       /* Set Auto-negotiation advertisement */
-                       switch (pPrt->PFlowCtrlMode) {
-                       case SK_FLOW_MODE_NONE:
-                               AutoNegAdv |= PHY_M_P_NO_PAUSE_X;
-                               break;
-                       case SK_FLOW_MODE_LOC_SEND:
-                               AutoNegAdv |= PHY_M_P_ASYM_MD_X;
-                               break;
-                       case SK_FLOW_MODE_SYMMETRIC:
-                               AutoNegAdv |= PHY_M_P_SYM_MD_X;
-                               break;
-                       case SK_FLOW_MODE_SYM_OR_REM:
-                               AutoNegAdv |= PHY_M_P_BOTH_MD_X;
-                               break;
-                       default:
-                               SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_HWI_E016,
-                                       SKERR_HWI_E016MSG);
-                       }
-               }
-
-               if (!DoLoop) {
-                       /* Restart Auto-negotiation */
-                       PhyCtrl |= PHY_CT_RE_CFG;
-               }
-       }
-
-#ifdef VCPU
-       /*
-        * E-mail from Gu Lin (08-03-2002):
-        */
-
-       /* Program PHY register 30 as 16'h0708 for simulation speed up */
-       SkGmPhyWrite(pAC, IoC, Port, 30, 0x0708);
-
-       VCpuWait(2000);
-
-#else /* VCPU */
-
-       /* Write 1000Base-T Control Register */
-       SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_1000T_CTRL, C1000BaseT);
-       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-               ("1000B-T Ctrl=0x%04X\n", C1000BaseT));
-
-       /* Write AutoNeg Advertisement Register */
-       SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_AUNE_ADV, AutoNegAdv);
-       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-               ("Auto-Neg.Ad.=0x%04X\n", AutoNegAdv));
-#endif /* VCPU */
-
-       if (DoLoop) {
-               /* Set the PHY Loopback bit */
-               PhyCtrl |= PHY_CT_LOOP;
-
-               /* Program PHY register 16 as 16'h0400 to force link good */
-               SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_PHY_CTRL, PHY_M_PC_FL_GOOD);
-
-#if 0
-               if (pPrt->PLinkSpeed != SK_LSPEED_AUTO) {
-                       /* Write Ext. PHY Specific Control */
-                       SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_EXT_CTRL,
-                               (SK_U16)((pPrt->PLinkSpeed + 2) << 4));
-               }
-       }
-       else if (pPrt->PLinkSpeed == SK_LSPEED_10MBPS) {
-                       /* Write PHY Specific Control */
-                       SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_PHY_CTRL, PHY_M_PC_EN_DET_MSK);
-               }
-#endif /* 0 */
-       }
-
-       /* Write to the PHY Control register */
-       SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_CTRL, PhyCtrl);
-
-#ifdef VCPU
-       VCpuWait(2000);
-#else
-
-       LedCtrl = PHY_M_LED_PULS_DUR(PULS_170MS) | PHY_M_LED_BLINK_RT(BLINK_84MS);
-
-#ifdef ACT_LED_BLINK
-       LedCtrl |= PHY_M_LEDC_RX_CTRL | PHY_M_LEDC_TX_CTRL;
-#endif /* ACT_LED_BLINK */
-
-#ifdef DUP_LED_NORMAL
-       LedCtrl |= PHY_M_LEDC_DP_CTRL;
-#endif /* DUP_LED_NORMAL */
-
-       SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_LED_CTRL, LedCtrl);
-
-#endif /* VCPU */
-
-#ifdef SK_DIAG
-       c_print("Set PHY Ctrl=0x%04X\n", PhyCtrl);
-       c_print("Set 1000 B-T=0x%04X\n", C1000BaseT);
-       c_print("Set Auto-Neg=0x%04X\n", AutoNegAdv);
-       c_print("Set Ext Ctrl=0x%04X\n", ExtPhyCtrl);
-#endif /* SK_DIAG */
-
-#ifndef xDEBUG
-       /* Read PHY Control */
-       SkGmPhyRead(pAC, IoC, Port, PHY_MARV_CTRL, &PhyCtrl);
-       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-               ("PHY Ctrl Reg.=0x%04X\n", PhyCtrl));
-
-       /* Read 1000Base-T Control Register */
-       SkGmPhyRead(pAC, IoC, Port, PHY_MARV_1000T_CTRL, &C1000BaseT);
-       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-               ("1000B-T Ctrl =0x%04X\n", C1000BaseT));
-
-       /* Read AutoNeg Advertisement Register */
-       SkGmPhyRead(pAC, IoC, Port, PHY_MARV_AUNE_ADV, &AutoNegAdv);
-       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-               ("Auto-Neg. Ad.=0x%04X\n", AutoNegAdv));
-
-       /* Read Ext. PHY Specific Control */
-       SkGmPhyRead(pAC, IoC, Port, PHY_MARV_EXT_CTRL, &ExtPhyCtrl);
-       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-               ("Ext PHY Ctrl=0x%04X\n", ExtPhyCtrl));
-
-       /* Read PHY Status */
-       SkGmPhyRead(pAC, IoC, Port, PHY_MARV_STAT, &PhyStat);
-       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-               ("PHY Stat Reg.=0x%04X\n", PhyStat));
-       SkGmPhyRead(pAC, IoC, Port, PHY_MARV_STAT, &PhyStat1);
-       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-               ("PHY Stat Reg.=0x%04X\n", PhyStat1));
-
-       /* Read PHY Specific Status */
-       SkGmPhyRead(pAC, IoC, Port, PHY_MARV_PHY_STAT, &PhySpecStat);
-       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-               ("PHY Spec Stat=0x%04X\n", PhySpecStat));
-#endif /* DEBUG */
-
-#ifdef SK_DIAG
-       c_print("PHY Ctrl Reg=0x%04X\n", PhyCtrl);
-       c_print("PHY 1000 Reg=0x%04X\n", C1000BaseT);
-       c_print("PHY AnAd Reg=0x%04X\n", AutoNegAdv);
-       c_print("Ext Ctrl Reg=0x%04X\n", ExtPhyCtrl);
-       c_print("PHY Stat Reg=0x%04X\n", PhyStat);
-       c_print("PHY Stat Reg=0x%04X\n", PhyStat1);
-       c_print("PHY Spec Reg=0x%04X\n", PhySpecStat);
-#endif /* SK_DIAG */
-
-}      /* SkGmInitPhyMarv */
-
-
-#ifdef OTHER_PHY
-/******************************************************************************
- *
- *     SkXmInitPhyLone() - Initialize the Level One Phy registers
- *
- * Description:        initializes all the Level One Phy registers
- *
- * Note:
- *
- * Returns:
- *     nothing
- */
-static void SkXmInitPhyLone(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* IO context */
-int            Port,           /* Port Index (MAC_1 + n) */
-SK_BOOL        DoLoop)         /* Should a Phy LoopBack be set-up? */
-{
-       SK_GEPORT       *pPrt;
-       SK_U16          Ctrl1;
-       SK_U16          Ctrl2;
-       SK_U16          Ctrl3;
-
-       Ctrl1 = PHY_CT_SP1000;
-       Ctrl2 = 0;
-       Ctrl3 = PHY_SEL_TYPE;
-
-       pPrt = &pAC->GIni.GP[Port];
-
-       /* manually Master/Slave ? */
-       if (pPrt->PMSMode != SK_MS_MODE_AUTO) {
-               Ctrl2 |= PHY_L_1000C_MSE;
-
-               if (pPrt->PMSMode == SK_MS_MODE_MASTER) {
-                       Ctrl2 |= PHY_L_1000C_MSC;
-               }
-       }
-       /* Auto-negotiation ? */
-       if (pPrt->PLinkMode == SK_LMODE_HALF || pPrt->PLinkMode == SK_LMODE_FULL) {
-               /*
-                * level one spec say: "1000Mbps: manual mode not allowed"
-                * but lets see what happens...
-                */
-               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-                       ("InitPhyLone: no auto-negotiation Port %d\n", Port));
-               /* Set DuplexMode in Config register */
-               Ctrl1 = (pPrt->PLinkMode == SK_LMODE_FULL ? PHY_CT_DUP_MD : 0);
-
-               /* Determine Master/Slave manually if not already done */
-               if (pPrt->PMSMode == SK_MS_MODE_AUTO) {
-                       Ctrl2 |= PHY_L_1000C_MSE;       /* set it to Slave */
-               }
-
-               /*
-                * Do NOT enable Auto-negotiation here. This would hold
-                * the link down because no IDLES are transmitted
-                */
-       }
-       else {
-               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-                       ("InitPhyLone: with auto-negotiation Port %d\n", Port));
-               /* Set Auto-negotiation advertisement */
-
-               /* Set Full/half duplex capabilities */
-               switch (pPrt->PLinkMode) {
-               case SK_LMODE_AUTOHALF:
-                       Ctrl2 |= PHY_L_1000C_AHD;
-                       break;
-               case SK_LMODE_AUTOFULL:
-                       Ctrl2 |= PHY_L_1000C_AFD;
-                       break;
-               case SK_LMODE_AUTOBOTH:
-                       Ctrl2 |= PHY_L_1000C_AFD | PHY_L_1000C_AHD;
-                       break;
-               default:
-                       SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_HWI_E015,
-                               SKERR_HWI_E015MSG);
-               }
-
-               switch (pPrt->PFlowCtrlMode) {
-               case SK_FLOW_MODE_NONE:
-                       Ctrl3 |= PHY_L_P_NO_PAUSE;
-                       break;
-               case SK_FLOW_MODE_LOC_SEND:
-                       Ctrl3 |= PHY_L_P_ASYM_MD;
-                       break;
-               case SK_FLOW_MODE_SYMMETRIC:
-                       Ctrl3 |= PHY_L_P_SYM_MD;
-                       break;
-               case SK_FLOW_MODE_SYM_OR_REM:
-                       Ctrl3 |= PHY_L_P_BOTH_MD;
-                       break;
-               default:
-                       SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_HWI_E016,
-                               SKERR_HWI_E016MSG);
-               }
-
-               /* Restart Auto-negotiation */
-               Ctrl1 = PHY_CT_ANE | PHY_CT_RE_CFG;
-
-       }
-
-       /* Initialize LED register here ? */
-       /* No. Please do it in SkDgXmitLed() (if required) and swap
-          init order of LEDs and XMAC. (MAl) */
-
-       /* Write 1000Base-T Control Register */
-       SkXmPhyWrite(pAC, IoC, Port, PHY_LONE_1000T_CTRL, Ctrl2);
-       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-               ("1000B-T Ctrl Reg=0x%04X\n", Ctrl2));
-
-       /* Write AutoNeg Advertisement Register */
-       SkXmPhyWrite(pAC, IoC, Port, PHY_LONE_AUNE_ADV, Ctrl3);
-       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-               ("Auto-Neg. Adv. Reg=0x%04X\n", Ctrl3));
-
-
-       if (DoLoop) {
-               /* Set the Phy Loopback bit, too */
-               Ctrl1 |= PHY_CT_LOOP;
-       }
-
-       /* Write to the Phy control register */
-       SkXmPhyWrite(pAC, IoC, Port, PHY_LONE_CTRL, Ctrl1);
-       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-               ("PHY Control Reg=0x%04X\n", Ctrl1));
-}      /* SkXmInitPhyLone */
-
-
-/******************************************************************************
- *
- *     SkXmInitPhyNat() - Initialize the National Phy registers
- *
- * Description:        initializes all the National Phy registers
- *
- * Note:
- *
- * Returns:
- *     nothing
- */
-static void SkXmInitPhyNat(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* IO context */
-int            Port,           /* Port Index (MAC_1 + n) */
-SK_BOOL        DoLoop)         /* Should a Phy LoopBack be set-up? */
-{
-/* todo: National */
-}      /* SkXmInitPhyNat */
-#endif /* OTHER_PHY */
-
-
-/******************************************************************************
- *
- *     SkMacInitPhy() - Initialize the PHY registers
- *
- * Description:        calls the Init PHY routines dep. on board type
- *
- * Note:
- *
- * Returns:
- *     nothing
- */
-void SkMacInitPhy(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* IO context */
-int            Port,           /* Port Index (MAC_1 + n) */
-SK_BOOL        DoLoop)         /* Should a Phy LoopBack be set-up? */
-{
-       SK_GEPORT       *pPrt;
-
-       pPrt = &pAC->GIni.GP[Port];
-
-       switch (pPrt->PhyType) {
-       case SK_PHY_XMAC:
-               SkXmInitPhyXmac(pAC, IoC, Port, DoLoop);
-               break;
-       case SK_PHY_BCOM:
-               SkXmInitPhyBcom(pAC, IoC, Port, DoLoop);
-               break;
-       case SK_PHY_MARV_COPPER:
-       case SK_PHY_MARV_FIBER:
-               SkGmInitPhyMarv(pAC, IoC, Port, DoLoop);
-               break;
-#ifdef OTHER_PHY
-       case SK_PHY_LONE:
-               SkXmInitPhyLone(pAC, IoC, Port, DoLoop);
-               break;
-       case SK_PHY_NAT:
-               SkXmInitPhyNat(pAC, IoC, Port, DoLoop);
-               break;
-#endif /* OTHER_PHY */
-       }
-}      /* SkMacInitPhy */
-
-
-#ifndef SK_DIAG
-/******************************************************************************
- *
- *     SkXmAutoNegLipaXmac() - Decides whether Link Partner could do auto-neg
- *
- *     This function analyses the Interrupt status word. If any of the
- *     Auto-negotiating interrupt bits are set, the PLipaAutoNeg variable
- *     is set true.
- */
-void SkXmAutoNegLipaXmac(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* IO context */
-int            Port,           /* Port Index (MAC_1 + n) */
-SK_U16 IStatus)        /* Interrupt Status word to analyse */
-{
-       SK_GEPORT       *pPrt;
-
-       pPrt = &pAC->GIni.GP[Port];
-
-       if (pPrt->PLipaAutoNeg != SK_LIPA_AUTO &&
-               (IStatus & (XM_IS_LIPA_RC | XM_IS_RX_PAGE | XM_IS_AND)) != 0) {
-
-               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-                       ("AutoNegLipa: AutoNeg detected on Port %d, IStatus=0x%04x\n",
-                       Port, IStatus));
-               pPrt->PLipaAutoNeg = SK_LIPA_AUTO;
-       }
-}      /* SkXmAutoNegLipaXmac */
-
-
-/******************************************************************************
- *
- *     SkMacAutoNegLipaPhy() - Decides whether Link Partner could do auto-neg
- *
- *     This function analyses the PHY status word.
- *  If any of the Auto-negotiating bits are set, the PLipaAutoNeg variable
- *     is set true.
- */
-void SkMacAutoNegLipaPhy(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* IO context */
-int            Port,           /* Port Index (MAC_1 + n) */
-SK_U16 PhyStat)        /* PHY Status word to analyse */
-{
-       SK_GEPORT       *pPrt;
-
-       pPrt = &pAC->GIni.GP[Port];
-
-       if (pPrt->PLipaAutoNeg != SK_LIPA_AUTO &&
-               (PhyStat & PHY_ST_AN_OVER) != 0) {
-
-               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-                       ("AutoNegLipa: AutoNeg detected on Port %d, PhyStat=0x%04x\n",
-                       Port, PhyStat));
-               pPrt->PLipaAutoNeg = SK_LIPA_AUTO;
-       }
-}      /* SkMacAutoNegLipaPhy */
-#endif /* SK_DIAG */
-
-
-/******************************************************************************
- *
- *     SkXmAutoNegDoneXmac() - Auto-negotiation handling
- *
- * Description:
- *     This function handles the auto-negotiation if the Done bit is set.
- *
- * Returns:
- *     SK_AND_OK       o.k.
- *     SK_AND_DUP_CAP  Duplex capability error happened
- *     SK_AND_OTHER    Other error happened
- */
-static int SkXmAutoNegDoneXmac(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* IO context */
-int            Port)           /* Port Index (MAC_1 + n) */
-{
-       SK_GEPORT       *pPrt;
-       SK_U16          ResAb;          /* Resolved Ability */
-       SK_U16          LPAb;           /* Link Partner Ability */
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-               ("AutoNegDoneXmac, Port %d\n",Port));
-
-       pPrt = &pAC->GIni.GP[Port];
-
-       /* Get PHY parameters */
-       SkXmPhyRead(pAC, IoC, Port, PHY_XMAC_AUNE_LP, &LPAb);
-       SkXmPhyRead(pAC, IoC, Port, PHY_XMAC_RES_ABI, &ResAb);
-
-       if ((LPAb & PHY_X_AN_RFB) != 0) {
-               /* At least one of the remote fault bit is set */
-               /* Error */
-               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-                       ("AutoNegFail: Remote fault bit set Port %d\n", Port));
-               pPrt->PAutoNegFail = SK_TRUE;
-               return(SK_AND_OTHER);
-       }
-
-       /* Check Duplex mismatch */
-       if ((ResAb & (PHY_X_RS_HD | PHY_X_RS_FD)) == PHY_X_RS_FD) {
-               pPrt->PLinkModeStatus = SK_LMODE_STAT_AUTOFULL;
-       }
-       else if ((ResAb & (PHY_X_RS_HD | PHY_X_RS_FD)) == PHY_X_RS_HD) {
-               pPrt->PLinkModeStatus = SK_LMODE_STAT_AUTOHALF;
-       }
-       else {
-               /* Error */
-               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-                       ("AutoNegFail: Duplex mode mismatch Port %d\n", Port));
-               pPrt->PAutoNegFail = SK_TRUE;
-               return(SK_AND_DUP_CAP);
-       }
-
-       /* Check PAUSE mismatch */
-       /* We are NOT using chapter 4.23 of the Xaqti manual */
-       /* We are using IEEE 802.3z/D5.0 Table 37-4 */
-       if ((pPrt->PFlowCtrlMode == SK_FLOW_MODE_SYMMETRIC ||
-            pPrt->PFlowCtrlMode == SK_FLOW_MODE_SYM_OR_REM) &&
-           (LPAb & PHY_X_P_SYM_MD) != 0) {
-               /* Symmetric PAUSE */
-               pPrt->PFlowCtrlStatus = SK_FLOW_STAT_SYMMETRIC;
-       }
-       else if (pPrt->PFlowCtrlMode == SK_FLOW_MODE_SYM_OR_REM &&
-                  (LPAb & PHY_X_RS_PAUSE) == PHY_X_P_ASYM_MD) {
-               /* Enable PAUSE receive, disable PAUSE transmit */
-               pPrt->PFlowCtrlStatus = SK_FLOW_STAT_REM_SEND;
-       }
-       else if (pPrt->PFlowCtrlMode == SK_FLOW_MODE_LOC_SEND &&
-                  (LPAb & PHY_X_RS_PAUSE) == PHY_X_P_BOTH_MD) {
-               /* Disable PAUSE receive, enable PAUSE transmit */
-               pPrt->PFlowCtrlStatus = SK_FLOW_STAT_LOC_SEND;
-       }
-       else {
-               /* PAUSE mismatch -> no PAUSE */
-               pPrt->PFlowCtrlStatus = SK_FLOW_STAT_NONE;
-       }
-       pPrt->PLinkSpeedUsed = SK_LSPEED_STAT_1000MBPS;
-
-       return(SK_AND_OK);
-}      /* SkXmAutoNegDoneXmac */
-
-
-/******************************************************************************
- *
- *     SkXmAutoNegDoneBcom() - Auto-negotiation handling
- *
- * Description:
- *     This function handles the auto-negotiation if the Done bit is set.
- *
- * Returns:
- *     SK_AND_OK       o.k.
- *     SK_AND_DUP_CAP  Duplex capability error happened
- *     SK_AND_OTHER    Other error happened
- */
-static int SkXmAutoNegDoneBcom(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* IO context */
-int            Port)           /* Port Index (MAC_1 + n) */
-{
-       SK_GEPORT       *pPrt;
-       SK_U16          LPAb;           /* Link Partner Ability */
-       SK_U16          AuxStat;        /* Auxiliary Status */
-
-#if 0
-01-Sep-2000 RA;:;:
-       SK_U16          ResAb;          /* Resolved Ability */
-#endif /* 0 */
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-               ("AutoNegDoneBcom, Port %d\n", Port));
-       pPrt = &pAC->GIni.GP[Port];
-
-       /* Get PHY parameters */
-       SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_AUNE_LP, &LPAb);
-#if 0
-01-Sep-2000 RA;:;:
-       SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_1000T_STAT, &ResAb);
-#endif /* 0 */
-
-       SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_AUX_STAT, &AuxStat);
-
-       if ((LPAb & PHY_B_AN_RF) != 0) {
-               /* Remote fault bit is set: Error */
-               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-                       ("AutoNegFail: Remote fault bit set Port %d\n", Port));
-               pPrt->PAutoNegFail = SK_TRUE;
-               return(SK_AND_OTHER);
-       }
-
-       /* Check Duplex mismatch */
-       if ((AuxStat & PHY_B_AS_AN_RES_MSK) == PHY_B_RES_1000FD) {
-               pPrt->PLinkModeStatus = SK_LMODE_STAT_AUTOFULL;
-       }
-       else if ((AuxStat & PHY_B_AS_AN_RES_MSK) == PHY_B_RES_1000HD) {
-               pPrt->PLinkModeStatus = SK_LMODE_STAT_AUTOHALF;
-       }
-       else {
-               /* Error */
-               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-                       ("AutoNegFail: Duplex mode mismatch Port %d\n", Port));
-               pPrt->PAutoNegFail = SK_TRUE;
-               return(SK_AND_DUP_CAP);
-       }
-
-#if 0
-01-Sep-2000 RA;:;:
-       /* Check Master/Slave resolution */
-       if ((ResAb & PHY_B_1000S_MSF) != 0) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-                       ("Master/Slave Fault Port %d\n", Port));
-               pPrt->PAutoNegFail = SK_TRUE;
-               pPrt->PMSStatus = SK_MS_STAT_FAULT;
-               return(SK_AND_OTHER);
-       }
-
-       pPrt->PMSStatus = ((ResAb & PHY_B_1000S_MSR) != 0) ?
-               SK_MS_STAT_MASTER : SK_MS_STAT_SLAVE;
-#endif /* 0 */
-
-       /* Check PAUSE mismatch */
-       /* We are using IEEE 802.3z/D5.0 Table 37-4 */
-       if ((AuxStat & PHY_B_AS_PAUSE_MSK) == PHY_B_AS_PAUSE_MSK) {
-               /* Symmetric PAUSE */
-               pPrt->PFlowCtrlStatus = SK_FLOW_STAT_SYMMETRIC;
-       }
-       else if ((AuxStat & PHY_B_AS_PAUSE_MSK) == PHY_B_AS_PRR) {
-               /* Enable PAUSE receive, disable PAUSE transmit */
-               pPrt->PFlowCtrlStatus = SK_FLOW_STAT_REM_SEND;
-       }
-       else if ((AuxStat & PHY_B_AS_PAUSE_MSK) == PHY_B_AS_PRT) {
-               /* Disable PAUSE receive, enable PAUSE transmit */
-               pPrt->PFlowCtrlStatus = SK_FLOW_STAT_LOC_SEND;
-       }
-       else {
-               /* PAUSE mismatch -> no PAUSE */
-               pPrt->PFlowCtrlStatus = SK_FLOW_STAT_NONE;
-       }
-       pPrt->PLinkSpeedUsed = SK_LSPEED_STAT_1000MBPS;
-
-       return(SK_AND_OK);
-}      /* SkXmAutoNegDoneBcom */
-
-
-/******************************************************************************
- *
- *     SkGmAutoNegDoneMarv() - Auto-negotiation handling
- *
- * Description:
- *     This function handles the auto-negotiation if the Done bit is set.
- *
- * Returns:
- *     SK_AND_OK       o.k.
- *     SK_AND_DUP_CAP  Duplex capability error happened
- *     SK_AND_OTHER    Other error happened
- */
-static int SkGmAutoNegDoneMarv(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* IO context */
-int            Port)           /* Port Index (MAC_1 + n) */
-{
-       SK_GEPORT       *pPrt;
-       SK_U16          LPAb;           /* Link Partner Ability */
-       SK_U16          ResAb;          /* Resolved Ability */
-       SK_U16          AuxStat;        /* Auxiliary Status */
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-               ("AutoNegDoneMarv, Port %d\n", Port));
-       pPrt = &pAC->GIni.GP[Port];
-
-       /* Get PHY parameters */
-       SkGmPhyRead(pAC, IoC, Port, PHY_MARV_AUNE_LP, &LPAb);
-
-       if ((LPAb & PHY_M_AN_RF) != 0) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-                       ("AutoNegFail: Remote fault bit set Port %d\n", Port));
-               pPrt->PAutoNegFail = SK_TRUE;
-               return(SK_AND_OTHER);
-       }
-
-       SkGmPhyRead(pAC, IoC, Port, PHY_MARV_1000T_STAT, &ResAb);
-
-       /* Check Master/Slave resolution */
-       if ((ResAb & PHY_B_1000S_MSF) != 0) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-                       ("Master/Slave Fault Port %d\n", Port));
-               pPrt->PAutoNegFail = SK_TRUE;
-               pPrt->PMSStatus = SK_MS_STAT_FAULT;
-               return(SK_AND_OTHER);
-       }
-
-       pPrt->PMSStatus = ((ResAb & PHY_B_1000S_MSR) != 0) ?
-               (SK_U8)SK_MS_STAT_MASTER : (SK_U8)SK_MS_STAT_SLAVE;
-
-       /* Read PHY Specific Status */
-       SkGmPhyRead(pAC, IoC, Port, PHY_MARV_PHY_STAT, &AuxStat);
-
-       /* Check Speed & Duplex resolved */
-       if ((AuxStat & PHY_M_PS_SPDUP_RES) == 0) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-                       ("AutoNegFail: Speed & Duplex not resolved Port %d\n", Port));
-               pPrt->PAutoNegFail = SK_TRUE;
-               pPrt->PLinkModeStatus = SK_LMODE_STAT_UNKNOWN;
-               return(SK_AND_DUP_CAP);
-       }
-
-       if ((AuxStat & PHY_M_PS_FULL_DUP) != 0) {
-               pPrt->PLinkModeStatus = SK_LMODE_STAT_AUTOFULL;
-       }
-       else {
-               pPrt->PLinkModeStatus = SK_LMODE_STAT_AUTOHALF;
-       }
-
-       /* Check PAUSE mismatch */
-       /* We are using IEEE 802.3z/D5.0 Table 37-4 */
-       if ((AuxStat & PHY_M_PS_PAUSE_MSK) == PHY_M_PS_PAUSE_MSK) {
-               /* Symmetric PAUSE */
-               pPrt->PFlowCtrlStatus = SK_FLOW_STAT_SYMMETRIC;
-       }
-       else if ((AuxStat & PHY_M_PS_PAUSE_MSK) == PHY_M_PS_RX_P_EN) {
-               /* Enable PAUSE receive, disable PAUSE transmit */
-               pPrt->PFlowCtrlStatus = SK_FLOW_STAT_REM_SEND;
-       }
-       else if ((AuxStat & PHY_M_PS_PAUSE_MSK) == PHY_M_PS_TX_P_EN) {
-               /* Disable PAUSE receive, enable PAUSE transmit */
-               pPrt->PFlowCtrlStatus = SK_FLOW_STAT_LOC_SEND;
-       }
-       else {
-               /* PAUSE mismatch -> no PAUSE */
-               pPrt->PFlowCtrlStatus = SK_FLOW_STAT_NONE;
-       }
-
-       /* set used link speed */
-       switch ((unsigned)(AuxStat & PHY_M_PS_SPEED_MSK)) {
-       case (unsigned)PHY_M_PS_SPEED_1000:
-               pPrt->PLinkSpeedUsed = SK_LSPEED_STAT_1000MBPS;
-               break;
-       case PHY_M_PS_SPEED_100:
-               pPrt->PLinkSpeedUsed = SK_LSPEED_STAT_100MBPS;
-               break;
-       default:
-               pPrt->PLinkSpeedUsed = SK_LSPEED_STAT_10MBPS;
-       }
-
-       return(SK_AND_OK);
-}      /* SkGmAutoNegDoneMarv */
-
-
-#ifdef OTHER_PHY
-/******************************************************************************
- *
- *     SkXmAutoNegDoneLone() - Auto-negotiation handling
- *
- * Description:
- *     This function handles the auto-negotiation if the Done bit is set.
- *
- * Returns:
- *     SK_AND_OK       o.k.
- *     SK_AND_DUP_CAP  Duplex capability error happened
- *     SK_AND_OTHER    Other error happened
- */
-static int SkXmAutoNegDoneLone(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* IO context */
-int            Port)           /* Port Index (MAC_1 + n) */
-{
-       SK_GEPORT       *pPrt;
-       SK_U16          ResAb;          /* Resolved Ability */
-       SK_U16          LPAb;           /* Link Partner Ability */
-       SK_U16          QuickStat;      /* Auxiliary Status */
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-               ("AutoNegDoneLone, Port %d\n",Port));
-       pPrt = &pAC->GIni.GP[Port];
-
-       /* Get PHY parameters */
-       SkXmPhyRead(pAC, IoC, Port, PHY_LONE_AUNE_LP, &LPAb);
-       SkXmPhyRead(pAC, IoC, Port, PHY_LONE_1000T_STAT, &ResAb);
-       SkXmPhyRead(pAC, IoC, Port, PHY_LONE_Q_STAT, &QuickStat);
-
-       if ((LPAb & PHY_L_AN_RF) != 0) {
-               /* Remote fault bit is set */
-               /* Error */
-               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-                       ("AutoNegFail: Remote fault bit set Port %d\n", Port));
-               pPrt->PAutoNegFail = SK_TRUE;
-               return(SK_AND_OTHER);
-       }
-
-       /* Check Duplex mismatch */
-       if ((QuickStat & PHY_L_QS_DUP_MOD) != 0) {
-               pPrt->PLinkModeStatus = SK_LMODE_STAT_AUTOFULL;
-       }
-       else {
-               pPrt->PLinkModeStatus = SK_LMODE_STAT_AUTOHALF;
-       }
-
-       /* Check Master/Slave resolution */
-       if ((ResAb & PHY_L_1000S_MSF) != 0) {
-               /* Error */
-               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-                       ("Master/Slave Fault Port %d\n", Port));
-               pPrt->PAutoNegFail = SK_TRUE;
-               pPrt->PMSStatus = SK_MS_STAT_FAULT;
-               return(SK_AND_OTHER);
-       }
-       else if (ResAb & PHY_L_1000S_MSR) {
-               pPrt->PMSStatus = SK_MS_STAT_MASTER;
-       }
-       else {
-               pPrt->PMSStatus = SK_MS_STAT_SLAVE;
-       }
-
-       /* Check PAUSE mismatch */
-       /* We are using IEEE 802.3z/D5.0 Table 37-4 */
-       /* we must manually resolve the abilities here */
-       pPrt->PFlowCtrlStatus = SK_FLOW_STAT_NONE;
-       switch (pPrt->PFlowCtrlMode) {
-       case SK_FLOW_MODE_NONE:
-               /* default */
-               break;
-       case SK_FLOW_MODE_LOC_SEND:
-               if ((QuickStat & (PHY_L_QS_PAUSE | PHY_L_QS_AS_PAUSE)) ==
-                       (PHY_L_QS_PAUSE | PHY_L_QS_AS_PAUSE)) {
-                       /* Disable PAUSE receive, enable PAUSE transmit */
-                       pPrt->PFlowCtrlStatus = SK_FLOW_STAT_LOC_SEND;
-               }
-               break;
-       case SK_FLOW_MODE_SYMMETRIC:
-               if ((QuickStat & PHY_L_QS_PAUSE) != 0) {
-                       /* Symmetric PAUSE */
-                       pPrt->PFlowCtrlStatus = SK_FLOW_STAT_SYMMETRIC;
-               }
-               break;
-       case SK_FLOW_MODE_SYM_OR_REM:
-               if ((QuickStat & (PHY_L_QS_PAUSE | PHY_L_QS_AS_PAUSE)) ==
-                       PHY_L_QS_AS_PAUSE) {
-                       /* Enable PAUSE receive, disable PAUSE transmit */
-                       pPrt->PFlowCtrlStatus = SK_FLOW_STAT_REM_SEND;
-               }
-               else if ((QuickStat & PHY_L_QS_PAUSE) != 0) {
-                       /* Symmetric PAUSE */
-                       pPrt->PFlowCtrlStatus = SK_FLOW_STAT_SYMMETRIC;
-               }
-               break;
-       default:
-               SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_HWI_E016,
-                       SKERR_HWI_E016MSG);
-       }
-
-       return(SK_AND_OK);
-}      /* SkXmAutoNegDoneLone */
-
-
-/******************************************************************************
- *
- *     SkXmAutoNegDoneNat() - Auto-negotiation handling
- *
- * Description:
- *     This function handles the auto-negotiation if the Done bit is set.
- *
- * Returns:
- *     SK_AND_OK       o.k.
- *     SK_AND_DUP_CAP  Duplex capability error happened
- *     SK_AND_OTHER    Other error happened
- */
-static int SkXmAutoNegDoneNat(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* IO context */
-int            Port)           /* Port Index (MAC_1 + n) */
-{
-/* todo: National */
-       return(SK_AND_OK);
-}      /* SkXmAutoNegDoneNat */
-#endif /* OTHER_PHY */
-
-
-/******************************************************************************
- *
- *     SkMacAutoNegDone() - Auto-negotiation handling
- *
- * Description:        calls the auto-negotiation done routines dep. on board type
- *
- * Returns:
- *     SK_AND_OK       o.k.
- *     SK_AND_DUP_CAP  Duplex capability error happened
- *     SK_AND_OTHER    Other error happened
- */
-int    SkMacAutoNegDone(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* IO context */
-int            Port)           /* Port Index (MAC_1 + n) */
-{
-       SK_GEPORT       *pPrt;
-       int     Rtv;
-
-       pPrt = &pAC->GIni.GP[Port];
-
-       switch (pPrt->PhyType) {
-       case SK_PHY_XMAC:
-               Rtv = SkXmAutoNegDoneXmac(pAC, IoC, Port);
-               break;
-       case SK_PHY_BCOM:
-               Rtv = SkXmAutoNegDoneBcom(pAC, IoC, Port);
-               break;
-       case SK_PHY_MARV_COPPER:
-       case SK_PHY_MARV_FIBER:
-               Rtv = SkGmAutoNegDoneMarv(pAC, IoC, Port);
-               break;
-#ifdef OTHER_PHY
-       case SK_PHY_LONE:
-               Rtv = SkXmAutoNegDoneLone(pAC, IoC, Port);
-               break;
-       case SK_PHY_NAT:
-               Rtv = SkXmAutoNegDoneNat(pAC, IoC, Port);
-               break;
-#endif /* OTHER_PHY */
-       default:
-               return(SK_AND_OTHER);
-       }
-
-       if (Rtv != SK_AND_OK) {
-               return(Rtv);
-       }
-
-       /* We checked everything and may now enable the link */
-       pPrt->PAutoNegFail = SK_FALSE;
-
-       SkMacRxTxEnable(pAC, IoC, Port);
-
-       return(SK_AND_OK);
-}      /* SkMacAutoNegDone */
-
-
-/******************************************************************************
- *
- *     SkXmSetRxTxEn() - Special Set Rx/Tx Enable and some features in XMAC
- *
- * Description:
- *  sets MAC or PHY LoopBack and Duplex Mode in the MMU Command Reg.
- *  enables Rx/Tx
- *
- * Returns: N/A
- */
-static void SkXmSetRxTxEn(
-SK_AC  *pAC,           /* Adapter Context */
-SK_IOC IoC,            /* IO context */
-int            Port,           /* Port Index (MAC_1 + n) */
-int            Para)           /* Parameter to set: MAC or PHY LoopBack, Duplex Mode */
-{
-       SK_U16  Word;
-
-       XM_IN16(IoC, Port, XM_MMU_CMD, &Word);
-
-       switch (Para & (SK_MAC_LOOPB_ON | SK_MAC_LOOPB_OFF)) {
-       case SK_MAC_LOOPB_ON:
-               Word |= XM_MMU_MAC_LB;
-               break;
-       case SK_MAC_LOOPB_OFF:
-               Word &= ~XM_MMU_MAC_LB;
-               break;
-       }
-
-       switch (Para & (SK_PHY_LOOPB_ON | SK_PHY_LOOPB_OFF)) {
-       case SK_PHY_LOOPB_ON:
-               Word |= XM_MMU_GMII_LOOP;
-               break;
-       case SK_PHY_LOOPB_OFF:
-               Word &= ~XM_MMU_GMII_LOOP;
-               break;
-       }
-
-       switch (Para & (SK_PHY_FULLD_ON | SK_PHY_FULLD_OFF)) {
-       case SK_PHY_FULLD_ON:
-               Word |= XM_MMU_GMII_FD;
-               break;
-       case SK_PHY_FULLD_OFF:
-               Word &= ~XM_MMU_GMII_FD;
-               break;
-       }
-
-       XM_OUT16(IoC, Port, XM_MMU_CMD, Word | XM_MMU_ENA_RX | XM_MMU_ENA_TX);
-
-       /* dummy read to ensure writing */
-       XM_IN16(IoC, Port, XM_MMU_CMD, &Word);
-
-}      /* SkXmSetRxTxEn */
-
-
-/******************************************************************************
- *
- *     SkGmSetRxTxEn() - Special Set Rx/Tx Enable and some features in GMAC
- *
- * Description:
- *  sets MAC LoopBack and Duplex Mode in the General Purpose Control Reg.
- *  enables Rx/Tx
- *
- * Returns: N/A
- */
-static void SkGmSetRxTxEn(
-SK_AC  *pAC,           /* Adapter Context */
-SK_IOC IoC,            /* IO context */
-int            Port,           /* Port Index (MAC_1 + n) */
-int            Para)           /* Parameter to set: MAC LoopBack, Duplex Mode */
-{
-       SK_U16  Ctrl;
-
-       GM_IN16(IoC, Port, GM_GP_CTRL, &Ctrl);
-
-       switch (Para & (SK_MAC_LOOPB_ON | SK_MAC_LOOPB_OFF)) {
-       case SK_MAC_LOOPB_ON:
-               Ctrl |= GM_GPCR_LOOP_ENA;
-               break;
-       case SK_MAC_LOOPB_OFF:
-               Ctrl &= ~GM_GPCR_LOOP_ENA;
-               break;
-       }
-
-       switch (Para & (SK_PHY_FULLD_ON | SK_PHY_FULLD_OFF)) {
-       case SK_PHY_FULLD_ON:
-               Ctrl |= GM_GPCR_DUP_FULL;
-               break;
-       case SK_PHY_FULLD_OFF:
-               Ctrl &= ~GM_GPCR_DUP_FULL;
-               break;
-       }
-
-       GM_OUT16(IoC, Port, GM_GP_CTRL, Ctrl | GM_GPCR_RX_ENA | GM_GPCR_TX_ENA);
-
-       /* dummy read to ensure writing */
-       GM_IN16(IoC, Port, GM_GP_CTRL, &Ctrl);
-
-}      /* SkGmSetRxTxEn */
-
-
-/******************************************************************************
- *
- *     SkMacSetRxTxEn() - Special Set Rx/Tx Enable and parameters
- *
- * Description:        calls the Special Set Rx/Tx Enable routines dep. on board type
- *
- * Returns: N/A
- */
-void SkMacSetRxTxEn(
-SK_AC  *pAC,           /* Adapter Context */
-SK_IOC IoC,            /* IO context */
-int            Port,           /* Port Index (MAC_1 + n) */
-int            Para)
-{
-       if (pAC->GIni.GIGenesis) {
-
-               SkXmSetRxTxEn(pAC, IoC, Port, Para);
-       }
-       else {
-
-               SkGmSetRxTxEn(pAC, IoC, Port, Para);
-       }
-
-}      /* SkMacSetRxTxEn */
-
-
-/******************************************************************************
- *
- *     SkMacRxTxEnable() - Enable Rx/Tx activity if port is up
- *
- * Description:        enables Rx/Tx dep. on board type
- *
- * Returns:
- *     0        o.k.
- *     != 0    Error happened
- */
-int SkMacRxTxEnable(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* IO context */
-int            Port)           /* Port Index (MAC_1 + n) */
-{
-       SK_GEPORT       *pPrt;
-       SK_U16          Reg;            /* 16-bit register value */
-       SK_U16          IntMask;        /* MAC interrupt mask */
-       SK_U16          SWord;
-
-       pPrt = &pAC->GIni.GP[Port];
-
-       if (!pPrt->PHWLinkUp) {
-               /* The Hardware link is NOT up */
-               return(0);
-       }
-
-       if ((pPrt->PLinkMode == SK_LMODE_AUTOHALF ||
-            pPrt->PLinkMode == SK_LMODE_AUTOFULL ||
-            pPrt->PLinkMode == SK_LMODE_AUTOBOTH) &&
-            pPrt->PAutoNegFail) {
-               /* Auto-negotiation is not done or failed */
-               return(0);
-       }
-
-       if (pAC->GIni.GIGenesis) {
-               /* set Duplex Mode and Pause Mode */
-               SkXmInitDupMd(pAC, IoC, Port);
-
-               SkXmInitPauseMd(pAC, IoC, Port);
-
-               /*
-                * Initialize the Interrupt Mask Register. Default IRQs are...
-                *      - Link Asynchronous Event
-                *      - Link Partner requests config
-                *      - Auto Negotiation Done
-                *      - Rx Counter Event Overflow
-                *      - Tx Counter Event Overflow
-                *      - Transmit FIFO Underrun
-                */
-               IntMask = XM_DEF_MSK;
-
-#ifdef DEBUG
-               /* add IRQ for Receive FIFO Overflow */
-               IntMask &= ~XM_IS_RXF_OV;
-#endif /* DEBUG */
-
-               if (pPrt->PhyType != SK_PHY_XMAC) {
-                       /* disable GP0 interrupt bit */
-                       IntMask |= XM_IS_INP_ASS;
-               }
-               XM_OUT16(IoC, Port, XM_IMSK, IntMask);
-
-               /* get MMU Command Reg. */
-               XM_IN16(IoC, Port, XM_MMU_CMD, &Reg);
-
-               if (pPrt->PhyType != SK_PHY_XMAC &&
-                       (pPrt->PLinkModeStatus == SK_LMODE_STAT_FULL ||
-                        pPrt->PLinkModeStatus == SK_LMODE_STAT_AUTOFULL)) {
-                       /* set to Full Duplex */
-                       Reg |= XM_MMU_GMII_FD;
-               }
-
-               switch (pPrt->PhyType) {
-               case SK_PHY_BCOM:
-                       /*
-                        * Workaround BCOM Errata (#10523) for all BCom Phys
-                        * Enable Power Management after link up
-                        */
-                       SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_AUX_CTRL, &SWord);
-                       SkXmPhyWrite(pAC, IoC, Port, PHY_BCOM_AUX_CTRL,
-                               (SK_U16)(SWord & ~PHY_B_AC_DIS_PM));
-                       SkXmPhyWrite(pAC, IoC, Port, PHY_BCOM_INT_MASK, PHY_B_DEF_MSK);
-                       break;
-#ifdef OTHER_PHY
-               case SK_PHY_LONE:
-                       SkXmPhyWrite(pAC, IoC, Port, PHY_LONE_INT_ENAB, PHY_L_DEF_MSK);
-                       break;
-               case SK_PHY_NAT:
-                       /* todo National:
-                       SkXmPhyWrite(pAC, IoC, Port, PHY_NAT_INT_MASK, PHY_N_DEF_MSK); */
-                       /* no interrupts possible from National ??? */
-                       break;
-#endif /* OTHER_PHY */
-               }
-
-               /* enable Rx/Tx */
-               XM_OUT16(IoC, Port, XM_MMU_CMD, Reg | XM_MMU_ENA_RX | XM_MMU_ENA_TX);
-       }
-       else {
-               /*
-                * Initialize the Interrupt Mask Register. Default IRQs are...
-                *      - Rx Counter Event Overflow
-                *      - Tx Counter Event Overflow
-                *      - Transmit FIFO Underrun
-                */
-               IntMask = GMAC_DEF_MSK;
-
-#ifdef DEBUG
-               /* add IRQ for Receive FIFO Overrun */
-               IntMask |= GM_IS_RX_FF_OR;
-#endif /* DEBUG */
-
-               SK_OUT8(IoC, GMAC_IRQ_MSK, (SK_U8)IntMask);
-
-               /* get General Purpose Control */
-               GM_IN16(IoC, Port, GM_GP_CTRL, &Reg);
-
-               if (pPrt->PLinkModeStatus == SK_LMODE_STAT_FULL ||
-                       pPrt->PLinkModeStatus == SK_LMODE_STAT_AUTOFULL) {
-                       /* set to Full Duplex */
-                       Reg |= GM_GPCR_DUP_FULL;
-               }
-
-               /* enable Rx/Tx */
-               GM_OUT16(IoC, Port, GM_GP_CTRL, Reg | GM_GPCR_RX_ENA | GM_GPCR_TX_ENA);
-
-#ifndef VCPU
-               /* Enable all PHY interrupts */
-               SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_INT_MASK, PHY_M_DEF_MSK);
-#endif /* VCPU */
-       }
-
-       return(0);
-
-}      /* SkMacRxTxEnable */
-
-
-/******************************************************************************
- *
- *     SkMacRxTxDisable() - Disable Receiver and Transmitter
- *
- * Description:        disables Rx/Tx dep. on board type
- *
- * Returns: N/A
- */
-void SkMacRxTxDisable(
-SK_AC  *pAC,           /* Adapter Context */
-SK_IOC IoC,            /* IO context */
-int            Port)           /* Port Index (MAC_1 + n) */
-{
-       SK_U16  Word;
-
-       if (pAC->GIni.GIGenesis) {
-
-               XM_IN16(IoC, Port, XM_MMU_CMD, &Word);
-
-               XM_OUT16(IoC, Port, XM_MMU_CMD, Word & ~(XM_MMU_ENA_RX | XM_MMU_ENA_TX));
-
-               /* dummy read to ensure writing */
-               XM_IN16(IoC, Port, XM_MMU_CMD, &Word);
-       }
-       else {
-
-               GM_IN16(IoC, Port, GM_GP_CTRL, &Word);
-
-               GM_OUT16(IoC, Port, GM_GP_CTRL, Word & ~(GM_GPCR_RX_ENA | GM_GPCR_TX_ENA));
-
-               /* dummy read to ensure writing */
-               GM_IN16(IoC, Port, GM_GP_CTRL, &Word);
-       }
-}      /* SkMacRxTxDisable */
-
-
-/******************************************************************************
- *
- *     SkMacIrqDisable() - Disable IRQ from MAC
- *
- * Description:        sets the IRQ-mask to disable IRQ dep. on board type
- *
- * Returns: N/A
- */
-void SkMacIrqDisable(
-SK_AC  *pAC,           /* Adapter Context */
-SK_IOC IoC,            /* IO context */
-int            Port)           /* Port Index (MAC_1 + n) */
-{
-       SK_GEPORT       *pPrt;
-       SK_U16          Word;
-
-       pPrt = &pAC->GIni.GP[Port];
-
-       if (pAC->GIni.GIGenesis) {
-
-               /* disable all XMAC IRQs */
-               XM_OUT16(IoC, Port, XM_IMSK, 0xffff);
-
-               /* Disable all PHY interrupts */
-               switch (pPrt->PhyType) {
-                       case SK_PHY_BCOM:
-                               /* Make sure that PHY is initialized */
-                               if (pPrt->PState != SK_PRT_RESET) {
-                                       /* NOT allowed if BCOM is in RESET state */
-                                       /* Workaround BCOM Errata (#10523) all BCom */
-                                       /* Disable Power Management if link is down */
-                                       SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_AUX_CTRL, &Word);
-                                       SkXmPhyWrite(pAC, IoC, Port, PHY_BCOM_AUX_CTRL,
-                                               (SK_U16)(Word | PHY_B_AC_DIS_PM));
-                                       SkXmPhyWrite(pAC, IoC, Port, PHY_BCOM_INT_MASK, 0xffff);
-                               }
-                               break;
-#ifdef OTHER_PHY
-                       case SK_PHY_LONE:
-                               SkXmPhyWrite(pAC, IoC, Port, PHY_LONE_INT_ENAB, 0);
-                               break;
-                       case SK_PHY_NAT:
-                               /* todo: National
-                               SkXmPhyWrite(pAC, IoC, Port, PHY_NAT_INT_MASK, 0xffff); */
-                               break;
-#endif /* OTHER_PHY */
-               }
-       }
-       else {
-               /* disable all GMAC IRQs */
-               SK_OUT8(IoC, GMAC_IRQ_MSK, 0);
-
-#ifndef VCPU
-               /* Disable all PHY interrupts */
-               SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_INT_MASK, 0);
-#endif /* VCPU */
-       }
-}      /* SkMacIrqDisable */
-
-
-#ifdef SK_DIAG
-/******************************************************************************
- *
- *     SkXmSendCont() - Enable / Disable Send Continuous Mode
- *
- * Description:        enable / disable Send Continuous Mode on XMAC
- *
- * Returns:
- *     nothing
- */
-void SkXmSendCont(
-SK_AC  *pAC,   /* adapter context */
-SK_IOC IoC,    /* IO context */
-int            Port,   /* Port Index (MAC_1 + n) */
-SK_BOOL        Enable) /* Enable / Disable */
-{
-       SK_U32  MdReg;
-
-       XM_IN32(IoC, Port, XM_MODE, &MdReg);
-
-       if (Enable) {
-               MdReg |= XM_MD_TX_CONT;
-       }
-       else {
-               MdReg &= ~XM_MD_TX_CONT;
-       }
-       /* setup Mode Register */
-       XM_OUT32(IoC, Port, XM_MODE, MdReg);
-
-}      /* SkXmSendCont*/
-
-/******************************************************************************
- *
- *     SkMacTimeStamp() - Enable / Disable Time Stamp
- *
- * Description:        enable / disable Time Stamp generation for Rx packets
- *
- * Returns:
- *     nothing
- */
-void SkMacTimeStamp(
-SK_AC  *pAC,   /* adapter context */
-SK_IOC IoC,    /* IO context */
-int            Port,   /* Port Index (MAC_1 + n) */
-SK_BOOL        Enable) /* Enable / Disable */
-{
-       SK_U32  MdReg;
-       SK_U8   TimeCtrl;
-
-       if (pAC->GIni.GIGenesis) {
-
-               XM_IN32(IoC, Port, XM_MODE, &MdReg);
-
-               if (Enable) {
-                       MdReg |= XM_MD_ATS;
-               }
-               else {
-                       MdReg &= ~XM_MD_ATS;
-               }
-               /* setup Mode Register */
-               XM_OUT32(IoC, Port, XM_MODE, MdReg);
-       }
-       else {
-               if (Enable) {
-                       TimeCtrl = GMT_ST_START | GMT_ST_CLR_IRQ;
-               }
-               else {
-                       TimeCtrl = GMT_ST_STOP | GMT_ST_CLR_IRQ;
-               }
-               /* Start/Stop Time Stamp Timer */
-               SK_OUT8(pAC, GMAC_TI_ST_CTRL, TimeCtrl);
-       }
-}      /* SkMacTimeStamp*/
-
-#else /* SK_DIAG */
-
-/******************************************************************************
- *
- *     SkXmIrq() - Interrupt Service Routine
- *
- * Description:        services an Interrupt Request of the XMAC
- *
- * Note:
- *     With an external PHY, some interrupt bits are not meaningfull any more:
- *     - LinkAsyncEvent (bit #14)              XM_IS_LNK_AE
- *     - LinkPartnerReqConfig (bit #10)        XM_IS_LIPA_RC
- *     - Page Received (bit #9)                XM_IS_RX_PAGE
- *     - NextPageLoadedForXmt (bit #8)         XM_IS_TX_PAGE
- *     - AutoNegDone (bit #7)                  XM_IS_AND
- *     Also probably not valid any more is the GP0 input bit:
- *     - GPRegisterBit0set                     XM_IS_INP_ASS
- *
- * Returns:
- *     nothing
- */
-void SkXmIrq(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* IO context */
-int            Port)           /* Port Index (MAC_1 + n) */
-{
-       SK_GEPORT       *pPrt;
-       SK_EVPARA       Para;
-       SK_U16          IStatus;        /* Interrupt status read from the XMAC */
-       SK_U16          IStatus2;
-
-       pPrt = &pAC->GIni.GP[Port];
-
-       XM_IN16(IoC, Port, XM_ISRC, &IStatus);
-
-       /* LinkPartner Auto-negable? */
-       if (pPrt->PhyType == SK_PHY_XMAC) {
-               SkXmAutoNegLipaXmac(pAC, IoC, Port, IStatus);
-       }
-       else {
-               /* mask bits that are not used with ext. PHY */
-               IStatus &= ~(XM_IS_LNK_AE | XM_IS_LIPA_RC |
-                       XM_IS_RX_PAGE | XM_IS_TX_PAGE |
-                       XM_IS_AND | XM_IS_INP_ASS);
-       }
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ,
-               ("XmacIrq Port %d Isr 0x%04x\n", Port, IStatus));
-
-       if (!pPrt->PHWLinkUp) {
-               /* Spurious XMAC interrupt */
-               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ,
-                       ("SkXmIrq: spurious interrupt on Port %d\n", Port));
-               return;
-       }
-
-       if ((IStatus & XM_IS_INP_ASS) != 0) {
-               /* Reread ISR Register if link is not in sync */
-               XM_IN16(IoC, Port, XM_ISRC, &IStatus2);
-
-               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ,
-                       ("SkXmIrq: Link async. Double check Port %d 0x%04x 0x%04x\n",
-                        Port, IStatus, IStatus2));
-               IStatus &= ~XM_IS_INP_ASS;
-               IStatus |= IStatus2;
-       }
-
-       if ((IStatus & XM_IS_LNK_AE) != 0) {
-               /* not used, GP0 is used instead */
-       }
-
-       if ((IStatus & XM_IS_TX_ABORT) != 0) {
-               /* not used */
-       }
-
-       if ((IStatus & XM_IS_FRC_INT) != 0) {
-               /* not used, use ASIC IRQ instead if needed */
-       }
-
-       if ((IStatus & (XM_IS_INP_ASS | XM_IS_LIPA_RC | XM_IS_RX_PAGE)) != 0) {
-               SkHWLinkDown(pAC, IoC, Port);
-
-               /* Signal to RLMT */
-               Para.Para32[0] = (SK_U32)Port;
-               SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_LINK_DOWN, Para);
-
-               /* Start workaround Errata #2 timer */
-               SkTimerStart(pAC, IoC, &pPrt->PWaTimer, SK_WA_INA_TIME,
-                       SKGE_HWAC, SK_HWEV_WATIM, Para);
-       }
-
-       if ((IStatus & XM_IS_RX_PAGE) != 0) {
-               /* not used */
-       }
-
-       if ((IStatus & XM_IS_TX_PAGE) != 0) {
-               /* not used */
-       }
-
-       if ((IStatus & XM_IS_AND) != 0) {
-               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ,
-                       ("SkXmIrq: AND on link that is up Port %d\n", Port));
-       }
-
-       if ((IStatus & XM_IS_TSC_OV) != 0) {
-               /* not used */
-       }
-
-       /* Combined Tx & Rx Counter Overflow SIRQ Event */
-       if ((IStatus & (XM_IS_RXC_OV | XM_IS_TXC_OV)) != 0) {
-               Para.Para32[0] = (SK_U32)Port;
-               Para.Para32[1] = (SK_U32)IStatus;
-               SkPnmiEvent(pAC, IoC, SK_PNMI_EVT_SIRQ_OVERFLOW, Para);
-       }
-
-       if ((IStatus & XM_IS_RXF_OV) != 0) {
-               /* normal situation -> no effect */
-#ifdef DEBUG
-               pPrt->PRxOverCnt++;
-#endif /* DEBUG */
-       }
-
-       if ((IStatus & XM_IS_TXF_UR) != 0) {
-               /* may NOT happen -> error log */
-               SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E020, SKERR_SIRQ_E020MSG);
-       }
-
-       if ((IStatus & XM_IS_TX_COMP) != 0) {
-               /* not served here */
-       }
-
-       if ((IStatus & XM_IS_RX_COMP) != 0) {
-               /* not served here */
-       }
-}      /* SkXmIrq */
-
-
-/******************************************************************************
- *
- *     SkGmIrq() - Interrupt Service Routine
- *
- * Description:        services an Interrupt Request of the GMAC
- *
- * Note:
- *
- * Returns:
- *     nothing
- */
-void SkGmIrq(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* IO context */
-int            Port)           /* Port Index (MAC_1 + n) */
-{
-       SK_GEPORT       *pPrt;
-       SK_EVPARA       Para;
-       SK_U8           IStatus;        /* Interrupt status */
-
-       pPrt = &pAC->GIni.GP[Port];
-
-       SK_IN8(IoC, GMAC_IRQ_SRC, &IStatus);
-
-       /* LinkPartner Auto-negable? */
-       SkMacAutoNegLipaPhy(pAC, IoC, Port, IStatus);
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ,
-               ("GmacIrq Port %d Isr 0x%04x\n", Port, IStatus));
-
-       /* Combined Tx & Rx Counter Overflow SIRQ Event */
-       if (IStatus & (GM_IS_RX_CO_OV | GM_IS_TX_CO_OV)) {
-               /* these IRQs will be cleared by reading GMACs register */
-               Para.Para32[0] = (SK_U32)Port;
-               Para.Para32[1] = (SK_U32)IStatus;
-               SkPnmiEvent(pAC, IoC, SK_PNMI_EVT_SIRQ_OVERFLOW, Para);
-       }
-
-       if (IStatus & GM_IS_RX_FF_OR) {
-               /* clear GMAC Rx FIFO Overrun IRQ */
-               SK_OUT8(IoC, MR_ADDR(Port, RX_GMF_CTRL_T), (SK_U8)GMF_CLI_RX_FO);
-#ifdef DEBUG
-               pPrt->PRxOverCnt++;
-#endif /* DEBUG */
-       }
-
-       if (IStatus & GM_IS_TX_FF_UR) {
-               /* clear GMAC Tx FIFO Underrun IRQ */
-               SK_OUT8(IoC, MR_ADDR(Port, TX_GMF_CTRL_T), (SK_U8)GMF_CLI_TX_FU);
-               /* may NOT happen -> error log */
-               SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E020, SKERR_SIRQ_E020MSG);
-       }
-
-       if (IStatus & GM_IS_TX_COMPL) {
-               /* not served here */
-       }
-
-       if (IStatus & GM_IS_RX_COMPL) {
-               /* not served here */
-       }
-}      /* SkGmIrq */
-
-/******************************************************************************
- *
- *     SkMacIrq() - Interrupt Service Routine for MAC
- *
- * Description:        calls the Interrupt Service Routine dep. on board type
- *
- * Returns:
- *     nothing
- */
-void SkMacIrq(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* IO context */
-int            Port)           /* Port Index (MAC_1 + n) */
-{
-
-       if (pAC->GIni.GIGenesis) {
-               /* IRQ from XMAC */
-               SkXmIrq(pAC, IoC, Port);
-       }
-       else {
-               /* IRQ from GMAC */
-               SkGmIrq(pAC, IoC, Port);
-       }
-}      /* SkMacIrq */
-
-#endif /* !SK_DIAG */
-
-/******************************************************************************
- *
- *     SkXmUpdateStats() - Force the XMAC to output the current statistic
- *
- * Description:
- *     The XMAC holds its statistic internally. To obtain the current
- *     values a command must be sent so that the statistic data will
- *     be written to a predefined memory area on the adapter.
- *
- * Returns:
- *     0:  success
- *     1:  something went wrong
- */
-int SkXmUpdateStats(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* IO context */
-unsigned int Port)     /* Port Index (MAC_1 + n) */
-{
-       SK_GEPORT       *pPrt;
-       SK_U16          StatReg;
-       int                     WaitIndex;
-
-       pPrt = &pAC->GIni.GP[Port];
-       WaitIndex = 0;
-
-       /* Send an update command to XMAC specified */
-       XM_OUT16(IoC, Port, XM_STAT_CMD, XM_SC_SNP_TXC | XM_SC_SNP_RXC);
-
-       /*
-        * It is an auto-clearing register. If the command bits
-        * went to zero again, the statistics are transferred.
-        * Normally the command should be executed immediately.
-        * But just to be sure we execute a loop.
-        */
-       do {
-
-               XM_IN16(IoC, Port, XM_STAT_CMD, &StatReg);
-
-               if (++WaitIndex > 10) {
-
-                       SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_HWI_E021, SKERR_HWI_E021MSG);
-
-                       return(1);
-               }
-       } while ((StatReg & (XM_SC_SNP_TXC | XM_SC_SNP_RXC)) != 0);
-
-       return(0);
-}      /* SkXmUpdateStats */
-
-/******************************************************************************
- *
- *     SkGmUpdateStats() - Force the GMAC to output the current statistic
- *
- * Description:
- *     Empty function for GMAC. Statistic data is accessible in direct way.
- *
- * Returns:
- *     0:  success
- *     1:  something went wrong
- */
-int SkGmUpdateStats(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* IO context */
-unsigned int Port)     /* Port Index (MAC_1 + n) */
-{
-       return(0);
-}
-
-/******************************************************************************
- *
- *     SkXmMacStatistic() - Get XMAC counter value
- *
- * Description:
- *     Gets the 32bit counter value. Except for the octet counters
- *     the lower 32bit are counted in hardware and the upper 32bit
- *     must be counted in software by monitoring counter overflow interrupts.
- *
- * Returns:
- *     0:  success
- *     1:  something went wrong
- */
-int SkXmMacStatistic(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* IO context */
-unsigned int Port,     /* Port Index (MAC_1 + n) */
-SK_U16 StatAddr,       /* MIB counter base address */
-SK_U32 *pVal)          /* ptr to return statistic value */
-{
-       if ((StatAddr < XM_TXF_OK) || (StatAddr > XM_RXF_MAX_SZ)) {
-
-               SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E022, SKERR_HWI_E022MSG);
-
-               return(1);
-       }
-
-       XM_IN32(IoC, Port, StatAddr, pVal);
-
-       return(0);
-}      /* SkXmMacStatistic */
-
-/******************************************************************************
- *
- *     SkGmMacStatistic() - Get GMAC counter value
- *
- * Description:
- *     Gets the 32bit counter value. Except for the octet counters
- *     the lower 32bit are counted in hardware and the upper 32bit
- *     must be counted in software by monitoring counter overflow interrupts.
- *
- * Returns:
- *     0:  success
- *     1:  something went wrong
- */
-int SkGmMacStatistic(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* IO context */
-unsigned int Port,     /* Port Index (MAC_1 + n) */
-SK_U16 StatAddr,       /* MIB counter base address */
-SK_U32 *pVal)          /* ptr to return statistic value */
-{
-
-       if ((StatAddr < GM_RXF_UC_OK) || (StatAddr > GM_TXE_FIFO_UR)) {
-
-               SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E022, SKERR_HWI_E022MSG);
-
-               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-                       ("SkGmMacStat: wrong MIB counter 0x%04X\n", StatAddr));
-               return(1);
-       }
-
-       GM_IN32(IoC, Port, StatAddr, pVal);
-
-       return(0);
-}      /* SkGmMacStatistic */
-
-/******************************************************************************
- *
- *     SkXmResetCounter() - Clear MAC statistic counter
- *
- * Description:
- *     Force the XMAC to clear its statistic counter.
- *
- * Returns:
- *     0:  success
- *     1:  something went wrong
- */
-int SkXmResetCounter(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* IO context */
-unsigned int Port)     /* Port Index (MAC_1 + n) */
-{
-       XM_OUT16(IoC, Port, XM_STAT_CMD, XM_SC_CLR_RXC | XM_SC_CLR_TXC);
-       /* Clear two times according to Errata #3 */
-       XM_OUT16(IoC, Port, XM_STAT_CMD, XM_SC_CLR_RXC | XM_SC_CLR_TXC);
-
-       return(0);
-}      /* SkXmResetCounter */
-
-/******************************************************************************
- *
- *     SkGmResetCounter() - Clear MAC statistic counter
- *
- * Description:
- *     Force GMAC to clear its statistic counter.
- *
- * Returns:
- *     0:  success
- *     1:  something went wrong
- */
-int SkGmResetCounter(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* IO context */
-unsigned int Port)     /* Port Index (MAC_1 + n) */
-{
-       SK_U16  Reg;    /* Phy Address Register */
-       SK_U16  Word;
-       int             i;
-
-       GM_IN16(IoC, Port, GM_PHY_ADDR, &Reg);
-
-#ifndef VCPU
-       /* set MIB Clear Counter Mode */
-       GM_OUT16(IoC, Port, GM_PHY_ADDR, Reg | GM_PAR_MIB_CLR);
-
-       /* read all MIB Counters with Clear Mode set */
-       for (i = 0; i < GM_MIB_CNT_SIZE; i++) {
-               /* the reset is performed only when the lower 16 bits are read */
-               GM_IN16(IoC, Port, GM_MIB_CNT_BASE + 8*i, &Word);
-       }
-
-       /* clear MIB Clear Counter Mode */
-       GM_OUT16(IoC, Port, GM_PHY_ADDR, Reg);
-#endif /* !VCPU */
-
-       return(0);
-}      /* SkGmResetCounter */
-
-/******************************************************************************
- *
- *     SkXmOverflowStatus() - Gets the status of counter overflow interrupt
- *
- * Description:
- *     Checks the source causing an counter overflow interrupt. On success the
- *     resulting counter overflow status is written to <pStatus>, whereas the
- *     upper dword stores the XMAC ReceiveCounterEvent register and the lower
- *     dword the XMAC TransmitCounterEvent register.
- *
- * Note:
- *     For XMAC the interrupt source is a self-clearing register, so the source
- *     must be checked only once. SIRQ module does another check to be sure
- *     that no interrupt get lost during process time.
- *
- * Returns:
- *     0:  success
- *     1:  something went wrong
- */
-int SkXmOverflowStatus(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* IO context */
-unsigned int Port,     /* Port Index (MAC_1 + n) */
-SK_U16  IStatus,       /* Interupt Status from MAC */
-SK_U64 *pStatus)       /* ptr for return overflow status value */
-{
-       SK_U64  Status; /* Overflow status */
-       SK_U32  RegVal;
-
-       Status = 0;
-
-       if ((IStatus & XM_IS_RXC_OV) != 0) {
-
-               XM_IN32(IoC, Port, XM_RX_CNT_EV, &RegVal);
-               Status |= (SK_U64)RegVal << 32;
-       }
-
-       if ((IStatus & XM_IS_TXC_OV) != 0) {
-
-               XM_IN32(IoC, Port, XM_TX_CNT_EV, &RegVal);
-               Status |= (SK_U64)RegVal;
-       }
-
-       *pStatus = Status;
-
-       return(0);
-}      /* SkXmOverflowStatus */
-
-
-/******************************************************************************
- *
- *     SkGmOverflowStatus() - Gets the status of counter overflow interrupt
- *
- * Description:
- *     Checks the source causing an counter overflow interrupt. On success the
- *     resulting counter overflow status is written to <pStatus>, whereas the
- *     the following bit coding is used:
- *     63:56 - unused
- *     55:48 - TxRx interrupt register bit7:0
- *     32:47 - Rx interrupt register
- *     31:24 - unused
- *     23:16 - TxRx interrupt register bit15:8
- *     15:0  - Tx interrupt register
- *
- * Returns:
- *     0:  success
- *     1:  something went wrong
- */
-int SkGmOverflowStatus(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* IO context */
-unsigned int Port,     /* Port Index (MAC_1 + n) */
-SK_U16  IStatus,       /* Interupt Status from MAC */
-SK_U64 *pStatus)       /* ptr for return overflow status value */
-{
-       SK_U64  Status;         /* Overflow status */
-       SK_U16  RegVal;
-
-       Status = 0;
-
-       if ((IStatus & GM_IS_RX_CO_OV) != 0) {
-               /* this register is self-clearing after read */
-               GM_IN16(IoC, Port, GM_RX_IRQ_SRC, &RegVal);
-               Status |= (SK_U64)RegVal << 32;
-       }
-
-       if ((IStatus & GM_IS_TX_CO_OV) != 0) {
-               /* this register is self-clearing after read */
-               GM_IN16(IoC, Port, GM_TX_IRQ_SRC, &RegVal);
-               Status |= (SK_U64)RegVal;
-       }
-
-       /* this register is self-clearing after read */
-       GM_IN16(IoC, Port, GM_TR_IRQ_SRC, &RegVal);
-       /* Rx overflow interrupt register bits (LoByte)*/
-       Status |= (SK_U64)((SK_U8)RegVal) << 48;
-       /* Tx overflow interrupt register bits (HiByte)*/
-       Status |= (SK_U64)(RegVal >> 8) << 16;
-
-       *pStatus = Status;
-
-       return(0);
-}      /* SkGmOverflowStatus */
-
-/******************************************************************************
- *
- *     SkGmCableDiagStatus() - Starts / Gets status of cable diagnostic test
- *
- * Description:
- *  starts the cable diagnostic test if 'StartTest' is true
- *  gets the results if 'StartTest' is true
- *
- * NOTE:       this test is meaningful only when link is down
- *
- * Returns:
- *     0:  success
- *     1:      no YUKON copper
- *     2:      test in progress
- */
-int SkGmCableDiagStatus(
-SK_AC  *pAC,           /* adapter context */
-SK_IOC IoC,            /* IO context */
-int            Port,           /* Port Index (MAC_1 + n) */
-SK_BOOL        StartTest)      /* flag for start / get result */
-{
-       int             i;
-       SK_U16  RegVal;
-       SK_GEPORT       *pPrt;
-
-       pPrt = &pAC->GIni.GP[Port];
-
-       if (pPrt->PhyType != SK_PHY_MARV_COPPER) {
-
-               return(1);
-       }
-
-       if (StartTest) {
-               /* only start the cable test */
-               if ((pPrt->PhyId1 & PHY_I1_REV_MSK) < 4) {
-                       /* apply TDR workaround from Marvell */
-                       SkGmPhyWrite(pAC, IoC, Port, 29, 0x001e);
-
-                       SkGmPhyWrite(pAC, IoC, Port, 30, 0xcc00);
-                       SkGmPhyWrite(pAC, IoC, Port, 30, 0xc800);
-                       SkGmPhyWrite(pAC, IoC, Port, 30, 0xc400);
-                       SkGmPhyWrite(pAC, IoC, Port, 30, 0xc000);
-                       SkGmPhyWrite(pAC, IoC, Port, 30, 0xc100);
-               }
-
-               /* set address to 0 for MDI[0] */
-               SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_EXT_ADR, 0);
-
-               /* Read Cable Diagnostic Reg */
-               SkGmPhyRead(pAC, IoC, Port, PHY_MARV_CABLE_DIAG, &RegVal);
-
-               /* start Cable Diagnostic Test */
-               SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_CABLE_DIAG,
-                       (SK_U16)(RegVal | PHY_M_CABD_ENA_TEST));
-
-               return(0);
-       }
-
-       /* Read Cable Diagnostic Reg */
-       SkGmPhyRead(pAC, IoC, Port, PHY_MARV_CABLE_DIAG, &RegVal);
-
-       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
-               ("PHY Cable Diag.=0x%04X\n", RegVal));
-
-       if ((RegVal & PHY_M_CABD_ENA_TEST) != 0) {
-               /* test is running */
-               return(2);
-       }
-
-       /* get the test results */
-       for (i = 0; i < 4; i++)  {
-               /* set address to i for MDI[i] */
-               SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_EXT_ADR, (SK_U16)i);
-
-               /* get Cable Diagnostic values */
-               SkGmPhyRead(pAC, IoC, Port, PHY_MARV_CABLE_DIAG, &RegVal);
-
-               pPrt->PMdiPairLen[i] = (SK_U8)(RegVal & PHY_M_CABD_DIST_MSK);
-
-               pPrt->PMdiPairSts[i] = (SK_U8)((RegVal & PHY_M_CABD_STAT_MSK) >> 13);
-       }
-
-       return(0);
-}      /* SkGmCableDiagStatus */
-
-/* End of file */
+/******************************************************************************
+ *
+ * Name:       skxmac2.c
+ * Project:    GEnesis, PCI Gigabit Ethernet Adapter
+ * Version:    $Revision: 1.1.1.1 $
+ * Date:       $Date: 2009/03/25 22:22:09 $
+ * Purpose:    Contains functions to initialize the MACs and PHYs
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ *     (C)Copyright 1998-2003 SysKonnect GmbH.
+ *
+ *     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.
+ *
+ *     The information in this file is provided "AS IS" without warranty.
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ * History:
+ *
+ *     $Log: skxmac2.c,v $
+ *     Revision 1.1.1.1  2009/03/25 22:22:09  kenagy
+ *     no message
+ *     
+ *     Revision 1.91  2003/02/05 15:09:34  rschmidt
+ *     Removed setting of 'Collision Test'-bit in SkGmInitPhyMarv().
+ *     Disabled auto-update for speed, duplex and flow-control when
+ *     auto-negotiation is not enabled (Bug Id #10766).
+ *     Editorial changes.
+ *
+ *     Revision 1.90  2003/01/29 13:35:19  rschmidt
+ *     Increment Rx FIFO Overflow counter only in DEBUG-mode.
+ *     Corrected define for blinking active LED.
+ *
+ *     Revision 1.89  2003/01/28 16:37:45  rschmidt
+ *     Changed init for blinking active LED
+ *
+ *     Revision 1.88  2003/01/28 10:09:38  rschmidt
+ *     Added debug outputs in SkGmInitMac().
+ *     Added customized init of LED registers in SkGmInitPhyMarv(),
+ *     for blinking active LED (#ifdef ACT_LED_BLINK) and
+ *     for normal duplex LED (#ifdef DUP_LED_NORMAL).
+ *     Editorial changes.
+ *
+ *     Revision 1.87  2002/12/10 14:39:05  rschmidt
+ *     Improved initialization of GPHY in SkGmInitPhyMarv().
+ *     Editorial changes.
+ *
+ *     Revision 1.86  2002/12/09 15:01:12  rschmidt
+ *     Added setup of Ext. PHY Specific Ctrl Reg (downshift feature).
+ *
+ *     Revision 1.85  2002/12/05 14:09:16  rschmidt
+ *     Improved avoiding endless loop in SkGmPhyWrite(), SkGmPhyWrite().
+ *     Added additional advertising for 10Base-T when 100Base-T is selected.
+ *     Added case SK_PHY_MARV_FIBER for YUKON Fiber adapter.
+ *     Editorial changes.
+ *
+ *     Revision 1.84  2002/11/15 12:50:09  rschmidt
+ *     Changed SkGmCableDiagStatus() when getting results.
+ *
+ *     Revision 1.83  2002/11/13 10:28:29  rschmidt
+ *     Added some typecasts to avoid compiler warnings.
+ *
+ *     Revision 1.82  2002/11/13 09:20:46  rschmidt
+ *     Replaced for(..) with do {} while (...) in SkXmUpdateStats().
+ *     Replaced 2 macros GM_IN16() with 1 GM_IN32() in SkGmMacStatistic().
+ *     Added SkGmCableDiagStatus() for Virtual Cable Test (VCT).
+ *     Editorial changes.
+ *
+ *     Revision 1.81  2002/10/28 14:28:08  rschmidt
+ *     Changed MAC address setup for GMAC in SkGmInitMac().
+ *     Optimized handling of counter overflow IRQ in SkGmOverflowStatus().
+ *     Editorial changes.
+ *
+ *     Revision 1.80  2002/10/14 15:29:44  rschmidt
+ *     Corrected disabling of all PHY IRQs.
+ *     Added WA for deviation #16 (address used for pause packets).
+ *     Set Pause Mode in SkMacRxTxEnable() only for Genesis.
+ *     Added IRQ and counter for Receive FIFO Overflow in DEBUG-mode.
+ *     SkXmTimeStamp() replaced by SkMacTimeStamp().
+ *     Added clearing of GMAC Tx FIFO Underrun IRQ in SkGmIrq().
+ *     Editorial changes.
+ *
+ *     Revision 1.79  2002/10/10 15:55:36  mkarl
+ *     changes for PLinkSpeedUsed
+ *
+ *     Revision 1.78  2002/09/12 09:39:51  rwahl
+ *     Removed deactivate code for SIRQ overflow event separate for TX/RX.
+ *
+ *     Revision 1.77  2002/09/09 12:26:37  mkarl
+ *     added handling for Yukon to SkXmTimeStamp
+ *
+ *     Revision 1.76  2002/08/21 16:41:16  rschmidt
+ *     Added bit GPC_ENA_XC (Enable MDI crossover) in HWCFG_MODE.
+ *     Added forced speed settings in SkGmInitPhyMarv().
+ *     Added settings of full/half duplex capabilities for YUKON Fiber.
+ *     Editorial changes.
+ *
+ *     Revision 1.75  2002/08/16 15:12:01  rschmidt
+ *     Replaced all if(GIChipId == CHIP_ID_GENESIS) with new entry GIGenesis.
+ *     Added function SkMacHashing() for ADDR-Module.
+ *     Removed functions SkXmClrSrcCheck(), SkXmClrHashAddr() (calls replaced
+ *     with macros).
+ *     Removed functions SkGmGetMuxConfig().
+ *     Added HWCFG_MODE init for YUKON Fiber.
+ *     Changed initialization of GPHY in SkGmInitPhyMarv().
+ *     Changed check of parameter in SkXmMacStatistic().
+ *     Editorial changes.
+ *
+ *     Revision 1.74  2002/08/12 14:00:17  rschmidt
+ *     Replaced usage of Broadcom PHY Ids with defines.
+ *     Corrected error messages in SkGmMacStatistic().
+ *     Made SkMacPromiscMode() public for ADDR-Modul.
+ *     Editorial changes.
+ *
+ *     Revision 1.73  2002/08/08 16:26:24  rschmidt
+ *     Improved reset sequence for YUKON in SkGmHardRst() and SkGmInitMac().
+ *     Replaced XMAC Rx High Watermark init value with SK_XM_RX_HI_WM.
+ *     Editorial changes.
+ *
+ *     Revision 1.72  2002/07/24 15:11:19  rschmidt
+ *     Fixed wrong placement of parenthesis.
+ *     Editorial changes.
+ *
+ *     Revision 1.71  2002/07/23 16:05:18  rschmidt
+ *     Added global functions for PHY: SkGePhyRead(), SkGePhyWrite().
+ *     Fixed Tx Counter Overflow IRQ (Bug ID #10730).
+ *     Editorial changes.
+ *
+ *     Revision 1.70  2002/07/18 14:27:27  rwahl
+ *     Fixed syntax error.
+ *
+ *     Revision 1.69  2002/07/17 17:08:47  rwahl
+ *     Fixed check in SkXmMacStatistic().
+ *
+ *     Revision 1.68  2002/07/16 07:35:24  rwahl
+ *     Removed check for cleared mib counter in SkGmResetCounter().
+ *
+ *     Revision 1.67  2002/07/15 18:35:56  rwahl
+ *     Added SkXmUpdateStats(), SkGmUpdateStats(), SkXmMacStatistic(),
+ *       SkGmMacStatistic(), SkXmResetCounter(), SkGmResetCounter(),
+ *       SkXmOverflowStatus(), SkGmOverflowStatus().
+ *     Changes to SkXmIrq() & SkGmIrq(): Combined SIRQ Overflow for both
+ *       RX & TX.
+ *     Changes to SkGmInitMac(): call to SkGmResetCounter().
+ *     Editorial changes.
+ *
+ *     Revision 1.66  2002/07/15 15:59:30  rschmidt
+ *     Added PHY Address in SkXmPhyRead(), SkXmPhyWrite().
+ *     Added MIB Clear Counter in SkGmInitMac().
+ *     Added Duplex and Flow-Control settings.
+ *     Reset all Multicast filtering Hash reg. in SkGmInitMac().
+ *     Added new function: SkGmGetMuxConfig().
+ *     Editorial changes.
+ *
+ *     Revision 1.65  2002/06/10 09:35:39  rschmidt
+ *     Replaced C++ comments (//).
+ *     Added #define VCPU around VCPUwaitTime.
+ *     Editorial changes.
+ *
+ *     Revision 1.64  2002/06/05 08:41:10  rschmidt
+ *     Added function for XMAC2: SkXmTimeStamp().
+ *     Added function for YUKON: SkGmSetRxCmd().
+ *     Changed SkGmInitMac() resp. SkGmHardRst().
+ *     Fixed wrong variable in SkXmAutoNegLipaXmac() (debug mode).
+ *     SkXmRxTxEnable() replaced by SkMacRxTxEnable().
+ *     Editorial changes.
+ *
+ *     Revision 1.63  2002/04/25 13:04:44  rschmidt
+ *     Changes for handling YUKON.
+ *     Use of #ifdef OTHER_PHY to eliminate code for unused Phy types.
+ *     Macros for XMAC PHY access PHY_READ(), PHY_WRITE() replaced
+ *     by functions SkXmPhyRead(), SkXmPhyWrite();
+ *     Removed use of PRxCmd to setup XMAC.
+ *     Added define PHY_B_AS_PAUSE_MSK for BCom Pause Res.
+ *     Added setting of XM_RX_DIS_CEXT in SkXmInitMac().
+ *     Removed status parameter from MAC IRQ handler SkMacIrq(),
+ *     SkXmIrq() and SkGmIrq().
+ *     SkXmAutoNegLipa...() for ext. Phy replaced by SkMacAutoNegLipaPhy().
+ *     Added SkMac...() functions to handle both XMAC and GMAC.
+ *     Added functions for YUKON: SkGmHardRst(), SkGmSoftRst(),
+ *     SkGmSetRxTxEn(), SkGmIrq(), SkGmInitMac(), SkGmInitPhyMarv(),
+ *     SkGmAutoNegDoneMarv(), SkGmPhyRead(), SkGmPhyWrite().
+ *     Changes for V-CPU support.
+ *     Editorial changes.
+ *
+ *     Revision 1.62  2001/08/06 09:50:14  rschmidt
+ *     Workaround BCOM Errata #1 for the C5 type.
+ *     Editorial changes.
+ *
+ *     Revision 1.61  2001/02/09 15:40:59  rassmann
+ *     Editorial changes.
+ *
+ *     Revision 1.60  2001/02/07 15:02:01  cgoos
+ *     Added workaround for Fujitsu switch link down.
+ *
+ *     Revision 1.59  2001/01/10 09:38:06  cgoos
+ *     Fixed Broadcom C0/A1 Id check for workaround.
+ *
+ *     Revision 1.58  2000/11/29 11:30:38  cgoos
+ *     Changed DEBUG sections with NW output to xDEBUG
+ *
+ *     Revision 1.57  2000/11/27 12:40:40  rassmann
+ *     Suppressing preamble after first access to BCom, not before (#10556).
+ *
+ *     Revision 1.56  2000/11/09 12:32:48  rassmann
+ *     Renamed variables.
+ *
+ *     Revision 1.55  2000/11/09 11:30:10  rassmann
+ *     WA: Waiting after releasing reset until BCom chip is accessible.
+ *
+ *     Revision 1.54  2000/10/02 14:10:27  rassmann
+ *     Reading BCOM PHY after releasing reset until it returns a valid value.
+ *
+ *     Revision 1.53  2000/07/27 12:22:11  gklug
+ *     fix: possible endless loop in XmHardRst.
+ *
+ *     Revision 1.52  2000/05/22 08:48:31  malthoff
+ *     Fix: #10523 errata valid for all BCOM PHYs.
+ *
+ *     Revision 1.51  2000/05/17 12:52:18  malthoff
+ *     Fixes BCom link errata (#10523).
+ *
+ *     Revision 1.50  1999/11/22 13:40:14  cgoos
+ *     Changed license header to GPL.
+ *
+ *     Revision 1.49  1999/11/22 08:12:13  malthoff
+ *     Add workaround for power consumption feature of BCom C0 chip.
+ *
+ *     Revision 1.48  1999/11/16 08:39:01  malthoff
+ *     Fix: MDIO preamble suppression is port dependent.
+ *
+ *     Revision 1.47  1999/08/27 08:55:35  malthoff
+ *     1000BT: Optimizing MDIO transfer by oppressing MDIO preamble.
+ *
+ *     Revision 1.46  1999/08/13 11:01:12  malthoff
+ *     Fix for 1000BT: pFlowCtrlMode was not set correctly.
+ *
+ *     Revision 1.45  1999/08/12 19:18:28  malthoff
+ *     1000BT Fixes: Do not owerwrite XM_MMU_CMD.
+ *     Do not execute BCOM A1 workaround for B1 chips.
+ *     Fix pause frame setting.
+ *     Always set PHY_B_AC_TX_TST in PHY_BCOM_AUX_CTRL.
+ *
+ *     Revision 1.44  1999/08/03 15:23:48  cgoos
+ *     Fixed setting of PHY interrupt mask in half duplex mode.
+ *
+ *     Revision 1.43  1999/08/03 15:22:17  cgoos
+ *     Added some debug output.
+ *     Disabled XMac GP0 interrupt for external PHYs.
+ *
+ *     Revision 1.42  1999/08/02 08:39:23  malthoff
+ *     BCOM PHY: TX LED: To get the mono flop behaviour it is required
+ *     to set the LED Traffic Mode bit in PHY_BCOM_P_EXT_CTRL.
+ *
+ *     Revision 1.41  1999/07/30 06:54:31  malthoff
+ *     Add temp. workarounds for the BCOM Phy revision A1.
+ *
+ *     Revision 1.40  1999/06/01 07:43:26  cgoos
+ *     Changed Link Mode Status in SkXmAutoNegDone... from FULL/HALF to
+ *     AUTOFULL/AUTOHALF.
+ *
+ *     Revision 1.39  1999/05/19 07:29:51  cgoos
+ *     Changes for 1000Base-T.
+ *
+ *     Revision 1.38  1999/04/08 14:35:10  malthoff
+ *     Add code for enabling signal detect. Enabling signal detect is disabled.
+ *
+ *     Revision 1.37  1999/03/12 13:42:54  malthoff
+ *     Add: Jumbo Frame Support.
+ *     Add: Receive modes SK_LENERR_OK_ON/OFF and
+ *     SK_BIG_PK_OK_ON/OFF in SkXmSetRxCmd().
+ *
+ *     Revision 1.36  1999/03/08 10:10:55  gklug
+ *     fix: AutoSensing did switch to next mode even if LiPa indicated offline
+ *
+ *     Revision 1.35  1999/02/22 15:16:41  malthoff
+ *     Remove some compiler warnings.
+ *
+ *     Revision 1.34  1999/01/22 09:19:59  gklug
+ *     fix: Init DupMode and InitPauseMd are now called in RxTxEnable
+ *
+ *     Revision 1.33  1998/12/11 15:19:11  gklug
+ *     chg: lipa autoneg stati
+ *     chg: debug messages
+ *     chg: do NOT use spurious XmIrq
+ *
+ *     Revision 1.32  1998/12/10 11:08:44  malthoff
+ *     bug fix: pAC has been used for IOs in SkXmHardRst().
+ *     SkXmInitPhy() is also called for the Diag in SkXmInitMac().
+ *
+ *     Revision 1.31  1998/12/10 10:39:11  gklug
+ *     fix: do 4 RESETS of the XMAC at the beginning
+ *     fix: dummy read interrupt source register BEFORE initializing the Phy
+ *     add: debug messages
+ *     fix: Linkpartners autoneg capability cannot be shown by TX_PAGE interrupt
+ *
+ *     Revision 1.30  1998/12/07 12:18:32  gklug
+ *     add: refinement of autosense mode: take into account the autoneg cap of LiPa
+ *
+ *     Revision 1.29  1998/12/07 07:12:29  gklug
+ *     fix: if page is received the link is  down.
+ *
+ *     Revision 1.28  1998/12/01 10:12:47  gklug
+ *     chg: if spurious IRQ from XMAC encountered, save it
+ *
+ *     Revision 1.27  1998/11/26 07:33:38  gklug
+ *     add: InitPhy call is now in XmInit function
+ *
+ *     Revision 1.26  1998/11/18 13:38:24  malthoff
+ *     'Imsk' is also unused in SkXmAutoNegDone.
+ *
+ *     Revision 1.25  1998/11/18 13:28:01  malthoff
+ *     Remove unused variable 'Reg' in SkXmAutoNegDone().
+ *
+ *     Revision 1.24  1998/11/18 13:18:45  gklug
+ *     add: workaround for xmac errata #1
+ *     add: detect Link Down also when Link partner requested config
+ *     chg: XMIrq is only used when link is up
+ *
+ *     Revision 1.23  1998/11/04 07:07:04  cgoos
+ *     Added function SkXmRxTxEnable.
+ *
+ *     Revision 1.22  1998/10/30 07:35:54  gklug
+ *     fix: serve LinkDown interrupt when link is already down
+ *
+ *     Revision 1.21  1998/10/29 15:32:03  gklug
+ *     fix: Link Down signaling
+ *
+ *     Revision 1.20  1998/10/29 11:17:27  gklug
+ *     fix: AutoNegDone bug
+ *
+ *     Revision 1.19  1998/10/29 10:14:43  malthoff
+ *     Add endainesss comment for reading/writing MAC addresses.
+ *
+ *     Revision 1.18  1998/10/28 07:48:55  cgoos
+ *     Fix: ASS somtimes signaled although link is up.
+ *
+ *     Revision 1.17  1998/10/26 07:55:39  malthoff
+ *     Fix in SkXmInitPauseMd(): Pause Mode
+ *     was disabled and not enabled.
+ *     Fix in SkXmAutoNegDone(): Checking Mode bits
+ *     always failed, becaues of some missing braces.
+ *
+ *     Revision 1.16  1998/10/22 09:46:52  gklug
+ *     fix SysKonnectFileId typo
+ *
+ *     Revision 1.15  1998/10/21 05:51:37  gklug
+ *     add: para DoLoop to InitPhy function for loopback set-up
+ *
+ *     Revision 1.14  1998/10/16 10:59:23  malthoff
+ *     Remove Lint warning for dummy reads.
+ *
+ *     Revision 1.13  1998/10/15 14:01:20  malthoff
+ *     Fix: SkXmAutoNegDone() is (int) but does not return a value.
+ *
+ *     Revision 1.12  1998/10/14 14:45:04  malthoff
+ *     Remove SKERR_SIRQ_E0xx and SKERR_SIRQ_E0xxMSG by
+ *     SKERR_HWI_Exx and SKERR_HWI_E0xxMSG to be independent
+ *     from the Sirq module.
+ *
+ *     Revision 1.11  1998/10/14 13:59:01  gklug
+ *     add: InitPhy function
+ *
+ *     Revision 1.10  1998/10/14 11:20:57  malthoff
+ *     Make SkXmAutoNegDone() public, because it's
+ *     used in diagnostics, too.
+ *     The Link Up event to the RLMT is issued in SkXmIrq().
+ *  SkXmIrq() is not available in diagnostics.
+ *  Use PHY_READ when reading PHY registers.
+ *
+ *     Revision 1.9  1998/10/14 05:50:10  cgoos
+ *     Added definition for Para.
+ *
+ *     Revision 1.8  1998/10/14 05:41:28  gklug
+ *     add: Xmac IRQ
+ *     add: auto-negotiation done function
+ *
+ *     Revision 1.7  1998/10/09 06:55:20  malthoff
+ *     The configuration of the XMACs Tx Request Threshold
+ *     depends from the drivers port usage now. The port
+ *     usage is configured in GIPortUsage.
+ *
+ *     Revision 1.6  1998/10/05 07:48:00  malthoff
+ *     minor changes
+ *
+ *     Revision 1.5  1998/10/01 07:03:54  gklug
+ *     add: dummy function for XMAC ISR
+ *
+ *     Revision 1.4  1998/09/30 12:37:44  malthoff
+ *     Add SkXmSetRxCmd() and related code.
+ *
+ *     Revision 1.3  1998/09/28 13:26:40  malthoff
+ *     Add SkXmInitMac(), SkXmInitDupMd(), and SkXmInitPauseMd()
+ *
+ *     Revision 1.2  1998/09/16 14:34:21  malthoff
+ *     Add SkXmClrExactAddr(), SkXmClrSrcCheck(),
+ *     SkXmClrHashAddr(), SkXmFlushTxFifo(),
+ *     SkXmFlushRxFifo(), and SkXmHardRst().
+ *     Finish Coding of SkXmSoftRst().
+ *     The sources may be compiled now.
+ *
+ *     Revision 1.1  1998/09/04 10:05:56  malthoff
+ *     Created.
+ *
+ *
+ ******************************************************************************/
+
+#include <config.h>
+
+#include "h/skdrv1st.h"
+#include "h/skdrv2nd.h"
+
+/* typedefs *******************************************************************/
+
+/* BCOM PHY magic pattern list */
+typedef struct s_PhyHack {
+       int             PhyReg;         /* Phy register */
+       SK_U16  PhyVal;         /* Value to write */
+} BCOM_HACK;
+
+/* local variables ************************************************************/
+static const char SysKonnectFileId[] =
+       "@(#)$Id: skxmac2.c,v 1.1.1.1 2009/03/25 22:22:09 kenagy Exp $ (C) SK ";
+
+BCOM_HACK BcomRegA1Hack[] = {
+ { 0x18, 0x0c20 }, { 0x17, 0x0012 }, { 0x15, 0x1104 }, { 0x17, 0x0013 },
+ { 0x15, 0x0404 }, { 0x17, 0x8006 }, { 0x15, 0x0132 }, { 0x17, 0x8006 },
+ { 0x15, 0x0232 }, { 0x17, 0x800D }, { 0x15, 0x000F }, { 0x18, 0x0420 },
+ { 0, 0 }
+};
+BCOM_HACK BcomRegC0Hack[] = {
+ { 0x18, 0x0c20 }, { 0x17, 0x0012 }, { 0x15, 0x1204 }, { 0x17, 0x0013 },
+ { 0x15, 0x0A04 }, { 0x18, 0x0420 },
+ { 0, 0 }
+};
+
+/* function prototypes ********************************************************/
+static void    SkXmInitPhyXmac(SK_AC*, SK_IOC, int, SK_BOOL);
+static void    SkXmInitPhyBcom(SK_AC*, SK_IOC, int, SK_BOOL);
+static void    SkGmInitPhyMarv(SK_AC*, SK_IOC, int, SK_BOOL);
+static int     SkXmAutoNegDoneXmac(SK_AC*, SK_IOC, int);
+static int     SkXmAutoNegDoneBcom(SK_AC*, SK_IOC, int);
+static int     SkGmAutoNegDoneMarv(SK_AC*, SK_IOC, int);
+#ifdef OTHER_PHY
+static void    SkXmInitPhyLone(SK_AC*, SK_IOC, int, SK_BOOL);
+static void    SkXmInitPhyNat (SK_AC*, SK_IOC, int, SK_BOOL);
+static int     SkXmAutoNegDoneLone(SK_AC*, SK_IOC, int);
+static int     SkXmAutoNegDoneNat (SK_AC*, SK_IOC, int);
+#endif /* OTHER_PHY */
+
+
+/******************************************************************************
+ *
+ *     SkXmPhyRead() - Read from XMAC PHY register
+ *
+ * Description:        reads a 16-bit word from XMAC PHY or ext. PHY
+ *
+ * Returns:
+ *     nothing
+ */
+void SkXmPhyRead(
+SK_AC  *pAC,           /* Adapter Context */
+SK_IOC IoC,            /* I/O Context */
+int            Port,           /* Port Index (MAC_1 + n) */
+int            PhyReg,         /* Register Address (Offset) */
+SK_U16 *pVal)          /* Pointer to Value */
+{
+       SK_U16          Mmu;
+       SK_GEPORT       *pPrt;
+
+       pPrt = &pAC->GIni.GP[Port];
+
+       /* write the PHY register's address */
+       XM_OUT16(IoC, Port, XM_PHY_ADDR, PhyReg | pPrt->PhyAddr);
+
+       /* get the PHY register's value */
+       XM_IN16(IoC, Port, XM_PHY_DATA, pVal);
+
+       if (pPrt->PhyType != SK_PHY_XMAC) {
+               do {
+                       XM_IN16(IoC, Port, XM_MMU_CMD, &Mmu);
+                       /* wait until 'Ready' is set */
+               } while ((Mmu & XM_MMU_PHY_RDY) == 0);
+
+               /* get the PHY register's value */
+               XM_IN16(IoC, Port, XM_PHY_DATA, pVal);
+       }
+}      /* SkXmPhyRead */
+
+
+/******************************************************************************
+ *
+ *     SkXmPhyWrite() - Write to XMAC PHY register
+ *
+ * Description:        writes a 16-bit word to XMAC PHY or ext. PHY
+ *
+ * Returns:
+ *     nothing
+ */
+void SkXmPhyWrite(
+SK_AC  *pAC,           /* Adapter Context */
+SK_IOC IoC,            /* I/O Context */
+int            Port,           /* Port Index (MAC_1 + n) */
+int            PhyReg,         /* Register Address (Offset) */
+SK_U16 Val)            /* Value */
+{
+       SK_U16          Mmu;
+       SK_GEPORT       *pPrt;
+
+       pPrt = &pAC->GIni.GP[Port];
+
+       if (pPrt->PhyType != SK_PHY_XMAC) {
+               do {
+                       XM_IN16(IoC, Port, XM_MMU_CMD, &Mmu);
+                       /* wait until 'Busy' is cleared */
+               } while ((Mmu & XM_MMU_PHY_BUSY) != 0);
+       }
+
+       /* write the PHY register's address */
+       XM_OUT16(IoC, Port, XM_PHY_ADDR, PhyReg | pPrt->PhyAddr);
+
+       /* write the PHY register's value */
+       XM_OUT16(IoC, Port, XM_PHY_DATA, Val);
+
+       if (pPrt->PhyType != SK_PHY_XMAC) {
+               do {
+                       XM_IN16(IoC, Port, XM_MMU_CMD, &Mmu);
+                       /* wait until 'Busy' is cleared */
+               } while ((Mmu & XM_MMU_PHY_BUSY) != 0);
+       }
+}      /* SkXmPhyWrite */
+
+
+/******************************************************************************
+ *
+ *     SkGmPhyRead() - Read from GPHY register
+ *
+ * Description:        reads a 16-bit word from GPHY through MDIO
+ *
+ * Returns:
+ *     nothing
+ */
+void SkGmPhyRead(
+SK_AC  *pAC,           /* Adapter Context */
+SK_IOC IoC,            /* I/O Context */
+int            Port,           /* Port Index (MAC_1 + n) */
+int            PhyReg,         /* Register Address (Offset) */
+SK_U16 *pVal)          /* Pointer to Value */
+{
+       SK_U16  Ctrl;
+       SK_GEPORT       *pPrt;
+#ifdef VCPU
+       u_long SimCyle;
+       u_long SimLowTime;
+
+       VCPUgetTime(&SimCyle, &SimLowTime);
+       VCPUprintf(0, "SkGmPhyRead(%u), SimCyle=%u, SimLowTime=%u\n",
+               PhyReg, SimCyle, SimLowTime);
+#endif /* VCPU */
+
+       pPrt = &pAC->GIni.GP[Port];
+
+       /* set PHY-Register offset and 'Read' OpCode (= 1) */
+       *pVal = (SK_U16)(GM_SMI_CT_PHY_AD(pPrt->PhyAddr) |
+               GM_SMI_CT_REG_AD(PhyReg) | GM_SMI_CT_OP_RD);
+
+       GM_OUT16(IoC, Port, GM_SMI_CTRL, *pVal);
+
+       GM_IN16(IoC, Port, GM_SMI_CTRL, &Ctrl);
+
+       /* additional check for MDC/MDIO activity */
+       if ((Ctrl & GM_SMI_CT_BUSY) == 0) {
+               *pVal = 0;
+               return;
+       }
+
+       *pVal |= GM_SMI_CT_BUSY;
+
+       do {
+#ifdef VCPU
+               VCPUwaitTime(1000);
+#endif /* VCPU */
+
+               GM_IN16(IoC, Port, GM_SMI_CTRL, &Ctrl);
+
+       /* wait until 'ReadValid' is set */
+       } while (Ctrl == *pVal);
+
+       /* get the PHY register's value */
+       GM_IN16(IoC, Port, GM_SMI_DATA, pVal);
+
+#ifdef VCPU
+       VCPUgetTime(&SimCyle, &SimLowTime);
+       VCPUprintf(0, "VCPUgetTime(), SimCyle=%u, SimLowTime=%u\n",
+               SimCyle, SimLowTime);
+#endif /* VCPU */
+}      /* SkGmPhyRead */
+
+
+/******************************************************************************
+ *
+ *     SkGmPhyWrite() - Write to GPHY register
+ *
+ * Description:        writes a 16-bit word to GPHY through MDIO
+ *
+ * Returns:
+ *     nothing
+ */
+void SkGmPhyWrite(
+SK_AC  *pAC,           /* Adapter Context */
+SK_IOC IoC,            /* I/O Context */
+int            Port,           /* Port Index (MAC_1 + n) */
+int            PhyReg,         /* Register Address (Offset) */
+SK_U16 Val)            /* Value */
+{
+       SK_U16  Ctrl;
+       SK_GEPORT       *pPrt;
+#ifdef VCPU
+       SK_U32  DWord;
+       u_long  SimCyle;
+       u_long  SimLowTime;
+
+       VCPUgetTime(&SimCyle, &SimLowTime);
+       VCPUprintf(0, "SkGmPhyWrite(Reg=%u, Val=0x%04x), SimCyle=%u, SimLowTime=%u\n",
+               PhyReg, Val, SimCyle, SimLowTime);
+#endif /* VCPU */
+
+       pPrt = &pAC->GIni.GP[Port];
+
+       /* write the PHY register's value */
+       GM_OUT16(IoC, Port, GM_SMI_DATA, Val);
+
+       /* set PHY-Register offset and 'Write' OpCode (= 0) */
+       Val = GM_SMI_CT_PHY_AD(pPrt->PhyAddr) | GM_SMI_CT_REG_AD(PhyReg);
+
+       GM_OUT16(IoC, Port, GM_SMI_CTRL, Val);
+
+       GM_IN16(IoC, Port, GM_SMI_CTRL, &Ctrl);
+
+       /* additional check for MDC/MDIO activity */
+       if ((Ctrl & GM_SMI_CT_BUSY) == 0) {
+               return;
+       }
+
+       Val |= GM_SMI_CT_BUSY;
+
+       do {
+#ifdef VCPU
+               /* read Timer value */
+               SK_IN32(IoC, B2_TI_VAL, &DWord);
+
+               VCPUwaitTime(1000);
+#endif /* VCPU */
+
+               GM_IN16(IoC, Port, GM_SMI_CTRL, &Ctrl);
+
+       /* wait until 'Busy' is cleared */
+       } while (Ctrl == Val);
+
+#ifdef VCPU
+       VCPUgetTime(&SimCyle, &SimLowTime);
+       VCPUprintf(0, "VCPUgetTime(), SimCyle=%u, SimLowTime=%u\n",
+               SimCyle, SimLowTime);
+#endif /* VCPU */
+}      /* SkGmPhyWrite */
+
+
+/******************************************************************************
+ *
+ *     SkGePhyRead() - Read from PHY register
+ *
+ * Description:        calls a read PHY routine dep. on board type
+ *
+ * Returns:
+ *     nothing
+ */
+void SkGePhyRead(
+SK_AC  *pAC,           /* Adapter Context */
+SK_IOC IoC,            /* I/O Context */
+int            Port,           /* Port Index (MAC_1 + n) */
+int            PhyReg,         /* Register Address (Offset) */
+SK_U16 *pVal)          /* Pointer to Value */
+{
+       void (*r_func)(SK_AC *pAC, SK_IOC IoC, int Port, int Reg, SK_U16 *pVal);
+
+       if (pAC->GIni.GIGenesis) {
+               r_func = SkXmPhyRead;
+       }
+       else {
+               r_func = SkGmPhyRead;
+       }
+
+       r_func(pAC, IoC, Port, PhyReg, pVal);
+}      /* SkGePhyRead */
+
+
+/******************************************************************************
+ *
+ *     SkGePhyWrite() - Write to PHY register
+ *
+ * Description:        calls a write PHY routine dep. on board type
+ *
+ * Returns:
+ *     nothing
+ */
+void SkGePhyWrite(
+SK_AC  *pAC,           /* Adapter Context */
+SK_IOC IoC,            /* I/O Context */
+int            Port,           /* Port Index (MAC_1 + n) */
+int            PhyReg,         /* Register Address (Offset) */
+SK_U16 Val)            /* Value */
+{
+       void (*w_func)(SK_AC *pAC, SK_IOC IoC, int Port, int Reg, SK_U16 Val);
+
+       if (pAC->GIni.GIGenesis) {
+               w_func = SkXmPhyWrite;
+       }
+       else {
+               w_func = SkGmPhyWrite;
+       }
+
+       w_func(pAC, IoC, Port, PhyReg, Val);
+}      /* SkGePhyWrite */
+
+
+/******************************************************************************
+ *
+ *     SkMacPromiscMode() - Enable / Disable Promiscuous Mode
+ *
+ * Description:
+ *   enables / disables promiscuous mode by setting Mode Register (XMAC) or
+ *   Receive Control Register (GMAC) dep. on board type
+ *
+ * Returns:
+ *     nothing
+ */
+void SkMacPromiscMode(
+SK_AC  *pAC,   /* adapter context */
+SK_IOC IoC,    /* IO context */
+int            Port,   /* Port Index (MAC_1 + n) */
+SK_BOOL        Enable) /* Enable / Disable */
+{
+       SK_U16  RcReg;
+       SK_U32  MdReg;
+
+       if (pAC->GIni.GIGenesis) {
+
+               XM_IN32(IoC, Port, XM_MODE, &MdReg);
+               /* enable or disable promiscuous mode */
+               if (Enable) {
+                       MdReg |= XM_MD_ENA_PROM;
+               }
+               else {
+                       MdReg &= ~XM_MD_ENA_PROM;
+               }
+               /* setup Mode Register */
+               XM_OUT32(IoC, Port, XM_MODE, MdReg);
+       }
+       else {
+
+               GM_IN16(IoC, Port, GM_RX_CTRL, &RcReg);
+
+               /* enable or disable unicast and multicast filtering */
+               if (Enable) {
+                       RcReg &= ~(GM_RXCR_UCF_ENA | GM_RXCR_MCF_ENA);
+               }
+               else {
+                       RcReg |= (GM_RXCR_UCF_ENA | GM_RXCR_MCF_ENA);
+               }
+               /* setup Receive Control Register */
+               GM_OUT16(IoC, Port, GM_RX_CTRL, RcReg);
+       }
+}      /* SkMacPromiscMode*/
+
+
+/******************************************************************************
+ *
+ *     SkMacHashing() - Enable / Disable Hashing
+ *
+ * Description:
+ *   enables / disables hashing by setting Mode Register (XMAC) or
+ *   Receive Control Register (GMAC) dep. on board type
+ *
+ * Returns:
+ *     nothing
+ */
+void SkMacHashing(
+SK_AC  *pAC,   /* adapter context */
+SK_IOC IoC,    /* IO context */
+int            Port,   /* Port Index (MAC_1 + n) */
+SK_BOOL        Enable) /* Enable / Disable */
+{
+       SK_U16  RcReg;
+       SK_U32  MdReg;
+
+       if (pAC->GIni.GIGenesis) {
+
+               XM_IN32(IoC, Port, XM_MODE, &MdReg);
+               /* enable or disable hashing */
+               if (Enable) {
+                       MdReg |= XM_MD_ENA_HASH;
+               }
+               else {
+                       MdReg &= ~XM_MD_ENA_HASH;
+               }
+               /* setup Mode Register */
+               XM_OUT32(IoC, Port, XM_MODE, MdReg);
+       }
+       else {
+
+               GM_IN16(IoC, Port, GM_RX_CTRL, &RcReg);
+
+               /* enable or disable multicast filtering */
+               if (Enable) {
+                       RcReg |= GM_RXCR_MCF_ENA;
+               }
+               else {
+                       RcReg &= ~GM_RXCR_MCF_ENA;
+               }
+               /* setup Receive Control Register */
+               GM_OUT16(IoC, Port, GM_RX_CTRL, RcReg);
+       }
+}      /* SkMacHashing*/
+
+
+#ifdef SK_DIAG
+/******************************************************************************
+ *
+ *     SkXmSetRxCmd() - Modify the value of the XMAC's Rx Command Register
+ *
+ * Description:
+ *     The features
+ *      - FCS stripping,                                       SK_STRIP_FCS_ON/OFF
+ *      - pad byte stripping,                          SK_STRIP_PAD_ON/OFF
+ *      - don't set XMR_FS_ERR in status       SK_LENERR_OK_ON/OFF
+ *        for inrange length error frames
+ *      - don't set XMR_FS_ERR in status       SK_BIG_PK_OK_ON/OFF
+ *        for frames > 1514 bytes
+ *   - enable Rx of own packets         SK_SELF_RX_ON/OFF
+ *
+ *     for incoming packets may be enabled/disabled by this function.
+ *     Additional modes may be added later.
+ *     Multiple modes can be enabled/disabled at the same time.
+ *     The new configuration is written to the Rx Command register immediately.
+ *
+ * Returns:
+ *     nothing
+ */
+static void SkXmSetRxCmd(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* IO context */
+int            Port,           /* Port Index (MAC_1 + n) */
+int            Mode)           /* Mode is SK_STRIP_FCS_ON/OFF, SK_STRIP_PAD_ON/OFF,
+                                          SK_LENERR_OK_ON/OFF, or SK_BIG_PK_OK_ON/OFF */
+{
+       SK_U16  OldRxCmd;
+       SK_U16  RxCmd;
+
+       XM_IN16(IoC, Port, XM_RX_CMD, &OldRxCmd);
+
+       RxCmd = OldRxCmd;
+
+       switch (Mode & (SK_STRIP_FCS_ON | SK_STRIP_FCS_OFF)) {
+       case SK_STRIP_FCS_ON:
+               RxCmd |= XM_RX_STRIP_FCS;
+               break;
+       case SK_STRIP_FCS_OFF:
+               RxCmd &= ~XM_RX_STRIP_FCS;
+               break;
+       }
+
+       switch (Mode & (SK_STRIP_PAD_ON | SK_STRIP_PAD_OFF)) {
+       case SK_STRIP_PAD_ON:
+               RxCmd |= XM_RX_STRIP_PAD;
+               break;
+       case SK_STRIP_PAD_OFF:
+               RxCmd &= ~XM_RX_STRIP_PAD;
+               break;
+       }
+
+       switch (Mode & (SK_LENERR_OK_ON | SK_LENERR_OK_OFF)) {
+       case SK_LENERR_OK_ON:
+               RxCmd |= XM_RX_LENERR_OK;
+               break;
+       case SK_LENERR_OK_OFF:
+               RxCmd &= ~XM_RX_LENERR_OK;
+               break;
+       }
+
+       switch (Mode & (SK_BIG_PK_OK_ON | SK_BIG_PK_OK_OFF)) {
+       case SK_BIG_PK_OK_ON:
+               RxCmd |= XM_RX_BIG_PK_OK;
+               break;
+       case SK_BIG_PK_OK_OFF:
+               RxCmd &= ~XM_RX_BIG_PK_OK;
+               break;
+       }
+
+       switch (Mode & (SK_SELF_RX_ON | SK_SELF_RX_OFF)) {
+       case SK_SELF_RX_ON:
+               RxCmd |= XM_RX_SELF_RX;
+               break;
+       case SK_SELF_RX_OFF:
+               RxCmd &= ~XM_RX_SELF_RX;
+               break;
+       }
+
+       /* Write the new mode to the Rx command register if required */
+       if (OldRxCmd != RxCmd) {
+               XM_OUT16(IoC, Port, XM_RX_CMD, RxCmd);
+       }
+}      /* SkXmSetRxCmd */
+
+
+/******************************************************************************
+ *
+ *     SkGmSetRxCmd() - Modify the value of the GMAC's Rx Control Register
+ *
+ * Description:
+ *     The features
+ *      - FCS (CRC) stripping,                         SK_STRIP_FCS_ON/OFF
+ *      - don't set GMR_FS_LONG_ERR            SK_BIG_PK_OK_ON/OFF
+ *        for frames > 1514 bytes
+ *   - enable Rx of own packets         SK_SELF_RX_ON/OFF
+ *
+ *     for incoming packets may be enabled/disabled by this function.
+ *     Additional modes may be added later.
+ *     Multiple modes can be enabled/disabled at the same time.
+ *     The new configuration is written to the Rx Command register immediately.
+ *
+ * Returns:
+ *     nothing
+ */
+static void SkGmSetRxCmd(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* IO context */
+int            Port,           /* Port Index (MAC_1 + n) */
+int            Mode)           /* Mode is SK_STRIP_FCS_ON/OFF, SK_STRIP_PAD_ON/OFF,
+                                          SK_LENERR_OK_ON/OFF, or SK_BIG_PK_OK_ON/OFF */
+{
+       SK_U16  OldRxCmd;
+       SK_U16  RxCmd;
+
+       if ((Mode & (SK_STRIP_FCS_ON | SK_STRIP_FCS_OFF)) != 0) {
+
+               GM_IN16(IoC, Port, GM_RX_CTRL, &OldRxCmd);
+
+               RxCmd = OldRxCmd;
+
+               if ((Mode & SK_STRIP_FCS_ON) != 0) {
+                       RxCmd |= GM_RXCR_CRC_DIS;
+               }
+               else {
+                       RxCmd &= ~GM_RXCR_CRC_DIS;
+               }
+               /* Write the new mode to the Rx control register if required */
+               if (OldRxCmd != RxCmd) {
+                       GM_OUT16(IoC, Port, GM_RX_CTRL, RxCmd);
+               }
+       }
+
+       if ((Mode & (SK_BIG_PK_OK_ON | SK_BIG_PK_OK_OFF)) != 0) {
+
+               GM_IN16(IoC, Port, GM_SERIAL_MODE, &OldRxCmd);
+
+               RxCmd = OldRxCmd;
+
+               if ((Mode & SK_BIG_PK_OK_ON) != 0) {
+                       RxCmd |= GM_SMOD_JUMBO_ENA;
+               }
+               else {
+                       RxCmd &= ~GM_SMOD_JUMBO_ENA;
+               }
+               /* Write the new mode to the Rx control register if required */
+               if (OldRxCmd != RxCmd) {
+                       GM_OUT16(IoC, Port, GM_SERIAL_MODE, RxCmd);
+               }
+       }
+}      /* SkGmSetRxCmd */
+
+
+/******************************************************************************
+ *
+ *     SkMacSetRxCmd() - Modify the value of the MAC's Rx Control Register
+ *
+ * Description:        modifies the MAC's Rx Control reg. dep. on board type
+ *
+ * Returns:
+ *     nothing
+ */
+void SkMacSetRxCmd(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* IO context */
+int            Port,           /* Port Index (MAC_1 + n) */
+int            Mode)           /* Rx Mode */
+{
+       if (pAC->GIni.GIGenesis) {
+
+               SkXmSetRxCmd(pAC, IoC, Port, Mode);
+       }
+       else {
+
+               SkGmSetRxCmd(pAC, IoC, Port, Mode);
+       }
+}      /* SkMacSetRxCmd */
+
+
+/******************************************************************************
+ *
+ *     SkMacCrcGener() - Enable / Disable CRC Generation
+ *
+ * Description:        enables / disables CRC generation dep. on board type
+ *
+ * Returns:
+ *     nothing
+ */
+void SkMacCrcGener(
+SK_AC  *pAC,   /* adapter context */
+SK_IOC IoC,    /* IO context */
+int            Port,   /* Port Index (MAC_1 + n) */
+SK_BOOL        Enable) /* Enable / Disable */
+{
+       SK_U16  Word;
+
+       if (pAC->GIni.GIGenesis) {
+
+               XM_IN16(IoC, Port, XM_TX_CMD, &Word);
+
+               if (Enable) {
+                       Word &= ~XM_TX_NO_CRC;
+               }
+               else {
+                       Word |= XM_TX_NO_CRC;
+               }
+               /* setup Tx Command Register */
+               XM_OUT16(pAC, Port, XM_TX_CMD, Word);
+       }
+       else {
+
+               GM_IN16(IoC, Port, GM_TX_CTRL, &Word);
+
+               if (Enable) {
+                       Word &= ~GM_TXCR_CRC_DIS;
+               }
+               else {
+                       Word |= GM_TXCR_CRC_DIS;
+               }
+               /* setup Tx Control Register */
+               GM_OUT16(IoC, Port, GM_TX_CTRL, Word);
+       }
+}      /* SkMacCrcGener*/
+
+#endif /* SK_DIAG */
+
+
+/******************************************************************************
+ *
+ *     SkXmClrExactAddr() - Clear Exact Match Address Registers
+ *
+ * Description:
+ *     All Exact Match Address registers of the XMAC 'Port' will be
+ *     cleared starting with 'StartNum' up to (and including) the
+ *     Exact Match address number of 'StopNum'.
+ *
+ * Returns:
+ *     nothing
+ */
+void SkXmClrExactAddr(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* IO context */
+int            Port,           /* Port Index (MAC_1 + n) */
+int            StartNum,       /* Begin with this Address Register Index (0..15) */
+int            StopNum)        /* Stop after finished with this Register Idx (0..15) */
+{
+       int             i;
+       SK_U16  ZeroAddr[3] = {0x0000, 0x0000, 0x0000};
+
+       if ((unsigned)StartNum > 15 || (unsigned)StopNum > 15 ||
+               StartNum > StopNum) {
+
+               SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E001, SKERR_HWI_E001MSG);
+               return;
+       }
+
+       for (i = StartNum; i <= StopNum; i++) {
+               XM_OUTADDR(IoC, Port, XM_EXM(i), &ZeroAddr[0]);
+       }
+}      /* SkXmClrExactAddr */
+
+
+/******************************************************************************
+ *
+ *     SkMacFlushTxFifo() - Flush the MAC's transmit FIFO
+ *
+ * Description:
+ *     Flush the transmit FIFO of the MAC specified by the index 'Port'
+ *
+ * Returns:
+ *     nothing
+ */
+void SkMacFlushTxFifo(
+SK_AC  *pAC,   /* adapter context */
+SK_IOC IoC,    /* IO context */
+int            Port)   /* Port Index (MAC_1 + n) */
+{
+       SK_U32  MdReg;
+
+       if (pAC->GIni.GIGenesis) {
+
+               XM_IN32(IoC, Port, XM_MODE, &MdReg);
+
+               XM_OUT32(IoC, Port, XM_MODE, MdReg | XM_MD_FTF);
+       }
+       else {
+               /* no way to flush the FIFO we have to issue a reset */
+               /* TBD */
+       }
+}      /* SkMacFlushTxFifo */
+
+
+/******************************************************************************
+ *
+ *     SkMacFlushRxFifo() - Flush the MAC's receive FIFO
+ *
+ * Description:
+ *     Flush the receive FIFO of the MAC specified by the index 'Port'
+ *
+ * Returns:
+ *     nothing
+ */
+void SkMacFlushRxFifo(
+SK_AC  *pAC,   /* adapter context */
+SK_IOC IoC,    /* IO context */
+int            Port)   /* Port Index (MAC_1 + n) */
+{
+       SK_U32  MdReg;
+
+       if (pAC->GIni.GIGenesis) {
+
+               XM_IN32(IoC, Port, XM_MODE, &MdReg);
+
+               XM_OUT32(IoC, Port, XM_MODE, MdReg | XM_MD_FRF);
+       }
+       else {
+               /* no way to flush the FIFO we have to issue a reset */
+               /* TBD */
+       }
+}      /* SkMacFlushRxFifo */
+
+
+/******************************************************************************
+ *
+ *     SkXmSoftRst() - Do a XMAC software reset
+ *
+ * Description:
+ *     The PHY registers should not be destroyed during this
+ *     kind of software reset. Therefore the XMAC Software Reset
+ *     (XM_GP_RES_MAC bit in XM_GP_PORT) must not be used!
+ *
+ *     The software reset is done by
+ *             - disabling the Rx and Tx state machine,
+ *             - resetting the statistics module,
+ *             - clear all other significant XMAC Mode,
+ *               Command, and Control Registers
+ *             - clearing the Hash Register and the
+ *               Exact Match Address registers, and
+ *             - flushing the XMAC's Rx and Tx FIFOs.
+ *
+ * Note:
+ *     Another requirement when stopping the XMAC is to
+ *     avoid sending corrupted frames on the network.
+ *     Disabling the Tx state machine will NOT interrupt
+ *     the currently transmitted frame. But we must take care
+ *     that the Tx FIFO is cleared AFTER the current frame
+ *     is complete sent to the network.
+ *
+ *     It takes about 12ns to send a frame with 1538 bytes.
+ *     One PCI clock goes at least 15ns (66MHz). Therefore
+ *     after reading XM_GP_PORT back, we are sure that the
+ *     transmitter is disabled AND idle. And this means
+ *     we may flush the transmit FIFO now.
+ *
+ * Returns:
+ *     nothing
+ */
+static void SkXmSoftRst(
+SK_AC  *pAC,   /* adapter context */
+SK_IOC IoC,    /* IO context */
+int            Port)   /* Port Index (MAC_1 + n) */
+{
+       SK_U16  ZeroAddr[4] = {0x0000, 0x0000, 0x0000, 0x0000};
+
+       /* reset the statistics module */
+       XM_OUT32(IoC, Port, XM_GP_PORT, XM_GP_RES_STAT);
+
+       /* disable all XMAC IRQs */
+       XM_OUT16(IoC, Port, XM_IMSK, 0xffff);
+
+       XM_OUT32(IoC, Port, XM_MODE, 0);                /* clear Mode Reg */
+
+       XM_OUT16(IoC, Port, XM_TX_CMD, 0);              /* reset TX CMD Reg */
+       XM_OUT16(IoC, Port, XM_RX_CMD, 0);              /* reset RX CMD Reg */
+
+       /* disable all PHY IRQs */
+       switch (pAC->GIni.GP[Port].PhyType) {
+       case SK_PHY_BCOM:
+                       SkXmPhyWrite(pAC, IoC, Port, PHY_BCOM_INT_MASK, 0xffff);
+                       break;
+#ifdef OTHER_PHY
+               case SK_PHY_LONE:
+                       SkXmPhyWrite(pAC, IoC, Port, PHY_LONE_INT_ENAB, 0);
+                       break;
+               case SK_PHY_NAT:
+                       /* todo: National
+                        SkXmPhyWrite(pAC, IoC, Port, PHY_NAT_INT_MASK, 0xffff); */
+                       break;
+#endif /* OTHER_PHY */
+       }
+
+       /* clear the Hash Register */
+       XM_OUTHASH(IoC, Port, XM_HSM, &ZeroAddr);
+
+       /* clear the Exact Match Address registers */
+       SkXmClrExactAddr(pAC, IoC, Port, 0, 15);
+
+       /* clear the Source Check Address registers */
+       XM_OUTHASH(IoC, Port, XM_SRC_CHK, &ZeroAddr);
+
+}      /* SkXmSoftRst */
+
+
+/******************************************************************************
+ *
+ *     SkXmHardRst() - Do a XMAC hardware reset
+ *
+ * Description:
+ *     The XMAC of the specified 'Port' and all connected devices
+ *     (PHY and SERDES) will receive a reset signal on its *Reset pins.
+ *     External PHYs must be reset be clearing a bit in the GPIO register
+ *  (Timing requirements: Broadcom: 400ns, Level One: none, National: 80ns).
+ *
+ * ATTENTION:
+ *     It is absolutely necessary to reset the SW_RST Bit first
+ *     before calling this function.
+ *
+ * Returns:
+ *     nothing
+ */
+static void SkXmHardRst(
+SK_AC  *pAC,   /* adapter context */
+SK_IOC IoC,    /* IO context */
+int            Port)   /* Port Index (MAC_1 + n) */
+{
+       SK_U32  Reg;
+       int             i;
+       int             TOut;
+       SK_U16  Word;
+
+       for (i = 0; i < 4; i++) {
+               /* TX_MFF_CTRL1 has 32 bits, but only the lowest 16 bits are used */
+               SK_OUT16(IoC, MR_ADDR(Port, TX_MFF_CTRL1), MFF_CLR_MAC_RST);
+
+               TOut = 0;
+               do {
+                       if (TOut++ > 10000) {
+                               /*
+                                * Adapter seems to be in RESET state.
+                                * Registers cannot be written.
+                                */
+                               return;
+                       }
+
+                       SK_OUT16(IoC, MR_ADDR(Port, TX_MFF_CTRL1), MFF_SET_MAC_RST);
+
+                       SK_IN16(IoC, MR_ADDR(Port, TX_MFF_CTRL1), &Word);
+
+               } while ((Word & MFF_SET_MAC_RST) == 0);
+       }
+
+       /* For external PHYs there must be special handling */
+       if (pAC->GIni.GP[Port].PhyType != SK_PHY_XMAC) {
+               /* reset external PHY */
+               SK_IN32(IoC, B2_GP_IO, &Reg);
+               if (Port == 0) {
+                       Reg |= GP_DIR_0; /* set to output */
+                       Reg &= ~GP_IO_0;
+               }
+               else {
+                       Reg |= GP_DIR_2; /* set to output */
+                       Reg &= ~GP_IO_2;
+               }
+               SK_OUT32(IoC, B2_GP_IO, Reg);
+
+               /* short delay */
+               SK_IN32(IoC, B2_GP_IO, &Reg);
+       }
+
+}      /* SkXmHardRst */
+
+
+/******************************************************************************
+ *
+ *     SkGmSoftRst() - Do a GMAC software reset
+ *
+ * Description:
+ *     The GPHY registers should not be destroyed during this
+ *     kind of software reset.
+ *
+ * Returns:
+ *     nothing
+ */
+static void SkGmSoftRst(
+SK_AC  *pAC,   /* adapter context */
+SK_IOC IoC,    /* IO context */
+int            Port)   /* Port Index (MAC_1 + n) */
+{
+       SK_U16  EmptyHash[4] = {0x0000, 0x0000, 0x0000, 0x0000};
+       SK_U16  RxCtrl;
+
+       /* reset the statistics module */
+
+       /* disable all GMAC IRQs */
+       SK_OUT8(IoC, GMAC_IRQ_MSK, 0);
+
+       /* disable all PHY IRQs */
+       SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_INT_MASK, 0);
+
+       /* clear the Hash Register */
+       GM_OUTHASH(IoC, Port, GM_MC_ADDR_H1, EmptyHash);
+
+       /* Enable Unicast and Multicast filtering */
+       GM_IN16(IoC, Port, GM_RX_CTRL, &RxCtrl);
+
+       GM_OUT16(IoC, Port, GM_RX_CTRL,
+               RxCtrl | GM_RXCR_UCF_ENA | GM_RXCR_MCF_ENA);
+
+}      /* SkGmSoftRst */
+
+
+/******************************************************************************
+ *
+ *     SkGmHardRst() - Do a GMAC hardware reset
+ *
+ * Description:
+ *
+ * ATTENTION:
+ *     It is absolutely necessary to reset the SW_RST Bit first
+ *     before calling this function.
+ *
+ * Returns:
+ *     nothing
+ */
+static void SkGmHardRst(
+SK_AC  *pAC,   /* adapter context */
+SK_IOC IoC,    /* IO context */
+int            Port)   /* Port Index (MAC_1 + n) */
+{
+       /* set GPHY Control reset */
+       SK_OUT32(IoC, MR_ADDR(Port, GPHY_CTRL), GPC_RST_SET);
+
+       /* set GMAC Control reset */
+       SK_OUT32(IoC, MR_ADDR(Port, GMAC_CTRL), GMC_RST_SET);
+
+}      /* SkGmHardRst */
+
+
+/******************************************************************************
+ *
+ *     SkMacSoftRst() - Do a MAC software reset
+ *
+ * Description:        calls a MAC software reset routine dep. on board type
+ *
+ * Returns:
+ *     nothing
+ */
+void SkMacSoftRst(
+SK_AC  *pAC,   /* adapter context */
+SK_IOC IoC,    /* IO context */
+int            Port)   /* Port Index (MAC_1 + n) */
+{
+       SK_GEPORT       *pPrt;
+
+       pPrt = &pAC->GIni.GP[Port];
+
+       /* disable receiver and transmitter */
+       SkMacRxTxDisable(pAC, IoC, Port);
+
+       if (pAC->GIni.GIGenesis) {
+
+               SkXmSoftRst(pAC, IoC, Port);
+       }
+       else {
+
+               SkGmSoftRst(pAC, IoC, Port);
+       }
+
+       /* flush the MAC's Rx and Tx FIFOs */
+       SkMacFlushTxFifo(pAC, IoC, Port);
+
+       SkMacFlushRxFifo(pAC, IoC, Port);
+
+       pPrt->PState = SK_PRT_STOP;
+
+}      /* SkMacSoftRst */
+
+
+/******************************************************************************
+ *
+ *     SkMacHardRst() - Do a MAC hardware reset
+ *
+ * Description:        calls a MAC hardware reset routine dep. on board type
+ *
+ * Returns:
+ *     nothing
+ */
+void SkMacHardRst(
+SK_AC  *pAC,   /* adapter context */
+SK_IOC IoC,    /* IO context */
+int            Port)   /* Port Index (MAC_1 + n) */
+{
+
+       if (pAC->GIni.GIGenesis) {
+
+               SkXmHardRst(pAC, IoC, Port);
+       }
+       else {
+
+               SkGmHardRst(pAC, IoC, Port);
+       }
+
+       pAC->GIni.GP[Port].PState = SK_PRT_RESET;
+
+}      /* SkMacHardRst */
+
+
+/******************************************************************************
+ *
+ *     SkXmInitMac() - Initialize the XMAC II
+ *
+ * Description:
+ *     Initialize the XMAC of the specified port.
+ *     The XMAC must be reset or stopped before calling this function.
+ *
+ * Note:
+ *     The XMAC's Rx and Tx state machine is still disabled when returning.
+ *
+ * Returns:
+ *     nothing
+ */
+void SkXmInitMac(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* IO context */
+int            Port)           /* Port Index (MAC_1 + n) */
+{
+       SK_GEPORT       *pPrt;
+       SK_U32          Reg;
+       int                     i;
+       SK_U16          SWord;
+
+       pPrt = &pAC->GIni.GP[Port];
+
+       if (pPrt->PState == SK_PRT_STOP) {
+               /* Port State: SK_PRT_STOP */
+               /* Verify that the reset bit is cleared */
+               SK_IN16(IoC, MR_ADDR(Port, TX_MFF_CTRL1), &SWord);
+
+               if ((SWord & MFF_SET_MAC_RST) != 0) {
+                       /* PState does not match HW state */
+                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E006, SKERR_HWI_E006MSG);
+                       /* Correct it */
+                       pPrt->PState = SK_PRT_RESET;
+               }
+       }
+
+       if (pPrt->PState == SK_PRT_RESET) {
+               /*
+                * clear HW reset
+                * Note: The SW reset is self clearing, therefore there is
+                *       nothing to do here.
+                */
+               SK_OUT16(IoC, MR_ADDR(Port, TX_MFF_CTRL1), MFF_CLR_MAC_RST);
+
+               /* Ensure that XMAC reset release is done (errata from LReinbold?) */
+               SK_IN16(IoC, MR_ADDR(Port, TX_MFF_CTRL1), &SWord);
+
+               /* Clear PHY reset */
+               if (pPrt->PhyType != SK_PHY_XMAC) {
+
+                       SK_IN32(IoC, B2_GP_IO, &Reg);
+
+                       if (Port == 0) {
+                               Reg |= (GP_DIR_0 | GP_IO_0); /* set to output */
+                       }
+                       else {
+                               Reg |= (GP_DIR_2 | GP_IO_2); /* set to output */
+                       }
+                       SK_OUT32(IoC, B2_GP_IO, Reg);
+
+                       /* Enable GMII interface */
+                       XM_OUT16(IoC, Port, XM_HW_CFG, XM_HW_GMII_MD);
+
+                       /* read Id from external PHY (all have the same address) */
+                       SkXmPhyRead(pAC, IoC, Port, PHY_XMAC_ID1, &pPrt->PhyId1);
+
+                       /*
+                        * Optimize MDIO transfer by suppressing preamble.
+                        * Must be done AFTER first access to BCOM chip.
+                        */
+                       XM_IN16(IoC, Port, XM_MMU_CMD, &SWord);
+
+                       XM_OUT16(IoC, Port, XM_MMU_CMD, SWord | XM_MMU_NO_PRE);
+
+                       if (pPrt->PhyId1 == PHY_BCOM_ID1_C0) {
+                               /*
+                                * Workaround BCOM Errata for the C0 type.
+                                * Write magic patterns to reserved registers.
+                                */
+                               i = 0;
+                               while (BcomRegC0Hack[i].PhyReg != 0) {
+                                       SkXmPhyWrite(pAC, IoC, Port, BcomRegC0Hack[i].PhyReg,
+                                               BcomRegC0Hack[i].PhyVal);
+                                       i++;
+                               }
+                       }
+                       else if (pPrt->PhyId1 == PHY_BCOM_ID1_A1) {
+                               /*
+                                * Workaround BCOM Errata for the A1 type.
+                                * Write magic patterns to reserved registers.
+                                */
+                               i = 0;
+                               while (BcomRegA1Hack[i].PhyReg != 0) {
+                                       SkXmPhyWrite(pAC, IoC, Port, BcomRegA1Hack[i].PhyReg,
+                                               BcomRegA1Hack[i].PhyVal);
+                                       i++;
+                               }
+                       }
+
+                       /*
+                        * Workaround BCOM Errata (#10523) for all BCom PHYs.
+                        * Disable Power Management after reset.
+                        */
+                       SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_AUX_CTRL, &SWord);
+
+                       SkXmPhyWrite(pAC, IoC, Port, PHY_BCOM_AUX_CTRL,
+                               (SK_U16)(SWord | PHY_B_AC_DIS_PM));
+
+                       /* PHY LED initialization is done in SkGeXmitLED() */
+               }
+
+               /* Dummy read the Interrupt source register */
+               XM_IN16(IoC, Port, XM_ISRC, &SWord);
+
+               /*
+                * The auto-negotiation process starts immediately after
+                * clearing the reset. The auto-negotiation process should be
+                * started by the SIRQ, therefore stop it here immediately.
+                */
+               SkMacInitPhy(pAC, IoC, Port, SK_FALSE);
+
+#if 0
+               /* temp. code: enable signal detect */
+               /* WARNING: do not override GMII setting above */
+               XM_OUT16(pAC, Port, XM_HW_CFG, XM_HW_COM4SIG);
+#endif
+       }
+
+       /*
+        * configure the XMACs Station Address
+        * B2_MAC_2 = xx xx xx xx xx x1 is programmed to XMAC A
+        * B2_MAC_3 = xx xx xx xx xx x2 is programmed to XMAC B
+        */
+       for (i = 0; i < 3; i++) {
+               /*
+                * The following 2 statements are together endianess
+                * independent. Remember this when changing.
+                */
+               SK_IN16(IoC, (B2_MAC_2 + Port * 8 + i * 2), &SWord);
+
+               XM_OUT16(IoC, Port, (XM_SA + i * 2), SWord);
+       }
+
+       /* Tx Inter Packet Gap (XM_TX_IPG):     use default */
+       /* Tx High Water Mark (XM_TX_HI_WM):    use default */
+       /* Tx Low Water Mark (XM_TX_LO_WM):     use default */
+       /* Host Request Threshold (XM_HT_THR):  use default */
+       /* Rx Request Threshold (XM_RX_THR):    use default */
+       /* Rx Low Water Mark (XM_RX_LO_WM):     use default */
+
+       /* configure Rx High Water Mark (XM_RX_HI_WM) */
+       XM_OUT16(IoC, Port, XM_RX_HI_WM, SK_XM_RX_HI_WM);
+
+       /* Configure Tx Request Threshold */
+       SWord = SK_XM_THR_SL;                           /* for single port */
+
+       if (pAC->GIni.GIMacsFound > 1) {
+               switch (pAC->GIni.GIPortUsage) {
+               case SK_RED_LINK:
+                       SWord = SK_XM_THR_REDL;         /* redundant link */
+                       break;
+               case SK_MUL_LINK:
+                       SWord = SK_XM_THR_MULL;         /* load balancing */
+                       break;
+               case SK_JUMBO_LINK:
+                       SWord = SK_XM_THR_JUMBO;        /* jumbo frames */
+                       break;
+               default:
+                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E014, SKERR_HWI_E014MSG);
+                       break;
+               }
+       }
+       XM_OUT16(IoC, Port, XM_TX_THR, SWord);
+
+       /* setup register defaults for the Tx Command Register */
+       XM_OUT16(IoC, Port, XM_TX_CMD, XM_TX_AUTO_PAD);
+
+       /* setup register defaults for the Rx Command Register */
+       SWord = XM_RX_STRIP_FCS | XM_RX_LENERR_OK;
+
+       if (pAC->GIni.GIPortUsage == SK_JUMBO_LINK) {
+               SWord |= XM_RX_BIG_PK_OK;
+       }
+
+       if (pPrt->PLinkModeConf == SK_LMODE_HALF) {
+               /*
+                * If in manual half duplex mode the other side might be in
+                * full duplex mode, so ignore if a carrier extension is not seen
+                * on frames received
+                */
+               SWord |= XM_RX_DIS_CEXT;
+       }
+
+       XM_OUT16(IoC, Port, XM_RX_CMD, SWord);
+
+       /*
+        * setup register defaults for the Mode Register
+        *      - Don't strip error frames to avoid Store & Forward
+        *        on the Rx side.
+        *      - Enable 'Check Station Address' bit
+        *      - Enable 'Check Address Array' bit
+        */
+       XM_OUT32(IoC, Port, XM_MODE, XM_DEF_MODE);
+
+       /*
+        * Initialize the Receive Counter Event Mask (XM_RX_EV_MSK)
+        *      - Enable all bits excepting 'Octets Rx OK Low CntOv'
+        *        and 'Octets Rx OK Hi Cnt Ov'.
+        */
+       XM_OUT32(IoC, Port, XM_RX_EV_MSK, XMR_DEF_MSK);
+
+       /*
+        * Initialize the Transmit Counter Event Mask (XM_TX_EV_MSK)
+        *      - Enable all bits excepting 'Octets Tx OK Low CntOv'
+        *        and 'Octets Tx OK Hi Cnt Ov'.
+        */
+       XM_OUT32(IoC, Port, XM_TX_EV_MSK, XMT_DEF_MSK);
+
+       /*
+        * Do NOT init XMAC interrupt mask here.
+        * All interrupts remain disable until link comes up!
+        */
+
+       /*
+        * Any additional configuration changes may be done now.
+        * The last action is to enable the Rx and Tx state machine.
+        * This should be done after the auto-negotiation process
+        * has been completed successfully.
+        */
+}      /* SkXmInitMac */
+
+/******************************************************************************
+ *
+ *     SkGmInitMac() - Initialize the GMAC
+ *
+ * Description:
+ *     Initialize the GMAC of the specified port.
+ *     The GMAC must be reset or stopped before calling this function.
+ *
+ * Note:
+ *     The GMAC's Rx and Tx state machine is still disabled when returning.
+ *
+ * Returns:
+ *     nothing
+ */
+void SkGmInitMac(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* IO context */
+int            Port)           /* Port Index (MAC_1 + n) */
+{
+       SK_GEPORT       *pPrt;
+       int                     i;
+       SK_U16          SWord;
+       SK_U32          DWord;
+
+       pPrt = &pAC->GIni.GP[Port];
+
+       if (pPrt->PState == SK_PRT_STOP) {
+               /* Port State: SK_PRT_STOP */
+               /* Verify that the reset bit is cleared */
+               SK_IN32(IoC, MR_ADDR(Port, GMAC_CTRL), &DWord);
+
+               if ((DWord & GMC_RST_SET) != 0) {
+                       /* PState does not match HW state */
+                       SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E006, SKERR_HWI_E006MSG);
+                       /* Correct it */
+                       pPrt->PState = SK_PRT_RESET;
+               }
+       }
+
+       if (pPrt->PState == SK_PRT_RESET) {
+               /* set GPHY Control reset */
+               SK_OUT32(IoC, MR_ADDR(Port, GPHY_CTRL), GPC_RST_SET);
+
+               /* set GMAC Control reset */
+               SK_OUT32(IoC, MR_ADDR(Port, GMAC_CTRL), GMC_RST_SET);
+
+               /* clear GMAC Control reset */
+               SK_OUT32(IoC, MR_ADDR(Port, GMAC_CTRL), GMC_RST_CLR);
+
+               /* set GMAC Control reset */
+               SK_OUT32(IoC, MR_ADDR(Port, GMAC_CTRL), GMC_RST_SET);
+
+               /* set HWCFG_MODE */
+               DWord = GPC_INT_POL_HI | GPC_DIS_FC | GPC_DIS_SLEEP |
+                       GPC_ENA_XC | GPC_ANEG_ADV_ALL_M | GPC_ENA_PAUSE |
+                       (pAC->GIni.GICopperType ? GPC_HWCFG_GMII_COP :
+                       GPC_HWCFG_GMII_FIB);
+
+               /* set GPHY Control reset */
+               SK_OUT32(IoC, MR_ADDR(Port, GPHY_CTRL), DWord | GPC_RST_SET);
+
+               /* release GPHY Control reset */
+               SK_OUT32(IoC, MR_ADDR(Port, GPHY_CTRL), DWord | GPC_RST_CLR);
+
+               /* clear GMAC Control reset */
+               SK_OUT32(IoC, MR_ADDR(Port, GMAC_CTRL), GMC_PAUSE_ON | GMC_RST_CLR);
+
+               /* Dummy read the Interrupt source register */
+               SK_IN16(IoC, GMAC_IRQ_SRC, &SWord);
+
+#ifndef VCPU
+               /* read Id from PHY */
+               SkGmPhyRead(pAC, IoC, Port, PHY_MARV_ID1, &pPrt->PhyId1);
+
+               SkGmInitPhyMarv(pAC, IoC, Port, SK_FALSE);
+#endif /* VCPU */
+       }
+
+       (void)SkGmResetCounter(pAC, IoC, Port);
+
+       SWord =  0;
+
+       /* speed settings */
+       switch (pPrt->PLinkSpeed) {
+       case SK_LSPEED_AUTO:
+       case SK_LSPEED_1000MBPS:
+               SWord |= GM_GPCR_SPEED_1000 | GM_GPCR_SPEED_100;
+               break;
+       case SK_LSPEED_100MBPS:
+               SWord |= GM_GPCR_SPEED_100;
+               break;
+       case SK_LSPEED_10MBPS:
+               break;
+       }
+
+       /* duplex settings */
+       if (pPrt->PLinkMode != SK_LMODE_HALF) {
+               /* set full duplex */
+               SWord |= GM_GPCR_DUP_FULL;
+       }
+
+       /* flow control settings */
+       switch (pPrt->PFlowCtrlMode) {
+       case SK_FLOW_MODE_NONE:
+               /* disable auto-negotiation for flow-control */
+               SWord |= GM_GPCR_FC_TX_DIS | GM_GPCR_FC_RX_DIS;
+               break;
+       case SK_FLOW_MODE_LOC_SEND:
+               SWord |= GM_GPCR_FC_RX_DIS;
+               break;
+       case SK_FLOW_MODE_SYMMETRIC:
+               /* TBD */
+       case SK_FLOW_MODE_SYM_OR_REM:
+               /* enable auto-negotiation for flow-control and */
+               /* enable Rx and Tx of pause frames */
+               break;
+       }
+
+       /* Auto-negotiation ? */
+       if (pPrt->PLinkMode == SK_LMODE_HALF || pPrt->PLinkMode == SK_LMODE_FULL) {
+               /* disable auto-update for speed, duplex and flow-control */
+               SWord |= GM_GPCR_AU_ALL_DIS;
+       }
+
+       /* setup General Purpose Control Register */
+       GM_OUT16(IoC, Port, GM_GP_CTRL, SWord);
+
+       /* setup Transmit Control Register */
+       GM_OUT16(IoC, Port, GM_TX_CTRL, GM_TXCR_COL_THR);
+
+       /* setup Receive Control Register */
+       GM_OUT16(IoC, Port, GM_RX_CTRL, GM_RXCR_UCF_ENA | GM_RXCR_MCF_ENA |
+               GM_RXCR_CRC_DIS);
+
+       /* setup Transmit Flow Control Register */
+       GM_OUT16(IoC, Port, GM_TX_FLOW_CTRL, 0xffff);
+
+       /* setup Transmit Parameter Register */
+#ifdef VCPU
+       GM_IN16(IoC, Port, GM_TX_PARAM, &SWord);
+#endif /* VCPU */
+
+       SWord = JAM_LEN_VAL(3) | JAM_IPG_VAL(11) | IPG_JAM_DATA(26);
+
+       GM_OUT16(IoC, Port, GM_TX_PARAM, SWord);
+
+       /* configure the Serial Mode Register */
+#ifdef VCPU
+       GM_IN16(IoC, Port, GM_SERIAL_MODE, &SWord);
+#endif /* VCPU */
+
+       SWord = GM_SMOD_VLAN_ENA | IPG_VAL_FAST_ETH;
+
+       if (pAC->GIni.GIPortUsage == SK_JUMBO_LINK) {
+               /* enable jumbo mode (Max. Frame Length = 9018) */
+               SWord |= GM_SMOD_JUMBO_ENA;
+       }
+
+       GM_OUT16(IoC, Port, GM_SERIAL_MODE, SWord);
+
+       /*
+        * configure the GMACs Station Addresses
+        * in PROM you can find our addresses at:
+        * B2_MAC_1 = xx xx xx xx xx x0 virtual address
+        * B2_MAC_2 = xx xx xx xx xx x1 is programmed to GMAC A
+        * B2_MAC_3 = xx xx xx xx xx x2 is reserved for DualPort
+        */
+
+       for (i = 0; i < 3; i++) {
+               /*
+                * The following 2 statements are together endianess
+                * independent. Remember this when changing.
+                */
+               /* physical address: will be used for pause frames */
+               SK_IN16(IoC, (B2_MAC_2 + Port * 8 + i * 2), &SWord);
+
+#ifdef WA_DEV_16
+               /* WA for deviation #16 */
+               if (pAC->GIni.GIChipRev == 0) {
+                       /* swap the address bytes */
+                       SWord = ((SWord & 0xff00) >> 8) | ((SWord & 0x00ff) << 8);
+
+                       /* write to register in reversed order */
+                       GM_OUT16(IoC, Port, (GM_SRC_ADDR_1L + (2 - i) * 4), SWord);
+               }
+               else {
+                       GM_OUT16(IoC, Port, (GM_SRC_ADDR_1L + i * 4), SWord);
+               }
+#else
+               GM_OUT16(IoC, Port, (GM_SRC_ADDR_1L + i * 4), SWord);
+#endif /* WA_DEV_16 */
+
+               /* virtual address: will be used for data */
+               SK_IN16(IoC, (B2_MAC_1 + Port * 8 + i * 2), &SWord);
+
+               GM_OUT16(IoC, Port, (GM_SRC_ADDR_2L + i * 4), SWord);
+
+               /* reset Multicast filtering Hash registers 1-3 */
+               GM_OUT16(IoC, Port, GM_MC_ADDR_H1 + 4*i, 0);
+       }
+
+       /* reset Multicast filtering Hash register 4 */
+       GM_OUT16(IoC, Port, GM_MC_ADDR_H4, 0);
+
+       /* enable interrupt mask for counter overflows */
+       GM_OUT16(IoC, Port, GM_TX_IRQ_MSK, 0);
+       GM_OUT16(IoC, Port, GM_RX_IRQ_MSK, 0);
+       GM_OUT16(IoC, Port, GM_TR_IRQ_MSK, 0);
+
+       /* read General Purpose Status */
+       GM_IN16(IoC, Port, GM_GP_STAT, &SWord);
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+               ("MAC Stat Reg=0x%04X\n", SWord));
+
+#ifdef SK_DIAG
+       c_print("MAC Stat Reg=0x%04X\n", SWord);
+#endif /* SK_DIAG */
+
+}      /* SkGmInitMac */
+
+
+/******************************************************************************
+ *
+ *     SkXmInitDupMd() - Initialize the XMACs Duplex Mode
+ *
+ * Description:
+ *     This function initializes the XMACs Duplex Mode.
+ *     It should be called after successfully finishing
+ *     the Auto-negotiation Process
+ *
+ * Returns:
+ *     nothing
+ */
+void SkXmInitDupMd(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* IO context */
+int            Port)           /* Port Index (MAC_1 + n) */
+{
+       switch (pAC->GIni.GP[Port].PLinkModeStatus) {
+       case SK_LMODE_STAT_AUTOHALF:
+       case SK_LMODE_STAT_HALF:
+               /* Configuration Actions for Half Duplex Mode */
+               /*
+                * XM_BURST = default value. We are probable not quick
+                *      enough at the 'XMAC' bus to burst 8kB.
+                *      The XMAC stops bursting if no transmit frames
+                *      are available or the burst limit is exceeded.
+                */
+               /* XM_TX_RT_LIM = default value (15) */
+               /* XM_TX_STIME = default value (0xff = 4096 bit times) */
+               break;
+       case SK_LMODE_STAT_AUTOFULL:
+       case SK_LMODE_STAT_FULL:
+               /* Configuration Actions for Full Duplex Mode */
+               /*
+                * The duplex mode is configured by the PHY,
+                * therefore it seems to be that there is nothing
+                * to do here.
+                */
+               break;
+       case SK_LMODE_STAT_UNKNOWN:
+       default:
+               SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E007, SKERR_HWI_E007MSG);
+               break;
+       }
+}      /* SkXmInitDupMd */
+
+
+/******************************************************************************
+ *
+ *     SkXmInitPauseMd() - initialize the Pause Mode to be used for this port
+ *
+ * Description:
+ *     This function initializes the Pause Mode which should
+ *     be used for this port.
+ *     It should be called after successfully finishing
+ *     the Auto-negotiation Process
+ *
+ * Returns:
+ *     nothing
+ */
+void SkXmInitPauseMd(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* IO context */
+int            Port)           /* Port Index (MAC_1 + n) */
+{
+       SK_GEPORT       *pPrt;
+       SK_U32          DWord;
+       SK_U16          Word;
+
+       pPrt = &pAC->GIni.GP[Port];
+
+       XM_IN16(IoC, Port, XM_MMU_CMD, &Word);
+
+       if (pPrt->PFlowCtrlStatus == SK_FLOW_STAT_NONE ||
+               pPrt->PFlowCtrlStatus == SK_FLOW_STAT_LOC_SEND) {
+
+               /* Disable Pause Frame Reception */
+               Word |= XM_MMU_IGN_PF;
+       }
+       else {
+               /*
+                * enabling pause frame reception is required for 1000BT
+                * because the XMAC is not reset if the link is going down
+                */
+               /* Enable Pause Frame Reception */
+               Word &= ~XM_MMU_IGN_PF;
+       }
+
+       XM_OUT16(IoC, Port, XM_MMU_CMD, Word);
+
+       XM_IN32(IoC, Port, XM_MODE, &DWord);
+
+       if (pPrt->PFlowCtrlStatus == SK_FLOW_STAT_SYMMETRIC ||
+               pPrt->PFlowCtrlStatus == SK_FLOW_STAT_LOC_SEND) {
+
+               /*
+                * Configure Pause Frame Generation
+                * Use internal and external Pause Frame Generation.
+                * Sending pause frames is edge triggered.
+                * Send a Pause frame with the maximum pause time if
+                * internal oder external FIFO full condition occurs.
+                * Send a zero pause time frame to re-start transmission.
+                */
+
+               /* XM_PAUSE_DA = '010000C28001' (default) */
+
+               /* XM_MAC_PTIME = 0xffff (maximum) */
+               /* remember this value is defined in big endian (!) */
+               XM_OUT16(IoC, Port, XM_MAC_PTIME, 0xffff);
+
+               /* Set Pause Mode in Mode Register */
+               DWord |= XM_PAUSE_MODE;
+
+               /* Set Pause Mode in MAC Rx FIFO */
+               SK_OUT16(IoC, MR_ADDR(Port, RX_MFF_CTRL1), MFF_ENA_PAUSE);
+       }
+       else {
+               /*
+                * disable pause frame generation is required for 1000BT
+                * because the XMAC is not reset if the link is going down
+                */
+               /* Disable Pause Mode in Mode Register */
+               DWord &= ~XM_PAUSE_MODE;
+
+               /* Disable Pause Mode in MAC Rx FIFO */
+               SK_OUT16(IoC, MR_ADDR(Port, RX_MFF_CTRL1), MFF_DIS_PAUSE);
+       }
+
+       XM_OUT32(IoC, Port, XM_MODE, DWord);
+}      /* SkXmInitPauseMd*/
+
+
+/******************************************************************************
+ *
+ *     SkXmInitPhyXmac() - Initialize the XMAC Phy registers
+ *
+ * Description:        initializes all the XMACs Phy registers
+ *
+ * Note:
+ *
+ * Returns:
+ *     nothing
+ */
+static void SkXmInitPhyXmac(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* IO context */
+int            Port,           /* Port Index (MAC_1 + n) */
+SK_BOOL        DoLoop)         /* Should a Phy LoopBack be set-up? */
+{
+       SK_GEPORT       *pPrt;
+       SK_U16          Ctrl;
+
+       pPrt = &pAC->GIni.GP[Port];
+       Ctrl = 0;
+
+       /* Auto-negotiation ? */
+       if (pPrt->PLinkMode == SK_LMODE_HALF || pPrt->PLinkMode == SK_LMODE_FULL) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+                       ("InitPhyXmac: no auto-negotiation Port %d\n", Port));
+               /* Set DuplexMode in Config register */
+               if (pPrt->PLinkMode == SK_LMODE_FULL) {
+                       Ctrl |= PHY_CT_DUP_MD;
+               }
+
+               /*
+                * Do NOT enable Auto-negotiation here. This would hold
+                * the link down because no IDLEs are transmitted
+                */
+       }
+       else {
+               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+                       ("InitPhyXmac: with auto-negotiation Port %d\n", Port));
+               /* Set Auto-negotiation advertisement */
+
+               /* Set Full/half duplex capabilities */
+               switch (pPrt->PLinkMode) {
+               case SK_LMODE_AUTOHALF:
+                       Ctrl |= PHY_X_AN_HD;
+                       break;
+               case SK_LMODE_AUTOFULL:
+                       Ctrl |= PHY_X_AN_FD;
+                       break;
+               case SK_LMODE_AUTOBOTH:
+                       Ctrl |= PHY_X_AN_FD | PHY_X_AN_HD;
+                       break;
+               default:
+                       SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_HWI_E015,
+                               SKERR_HWI_E015MSG);
+               }
+
+               switch (pPrt->PFlowCtrlMode) {
+               case SK_FLOW_MODE_NONE:
+                       Ctrl |= PHY_X_P_NO_PAUSE;
+                       break;
+               case SK_FLOW_MODE_LOC_SEND:
+                       Ctrl |= PHY_X_P_ASYM_MD;
+                       break;
+               case SK_FLOW_MODE_SYMMETRIC:
+                       Ctrl |= PHY_X_P_SYM_MD;
+                       break;
+               case SK_FLOW_MODE_SYM_OR_REM:
+                       Ctrl |= PHY_X_P_BOTH_MD;
+                       break;
+               default:
+                       SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_HWI_E016,
+                               SKERR_HWI_E016MSG);
+               }
+
+               /* Write AutoNeg Advertisement Register */
+               SkXmPhyWrite(pAC, IoC, Port, PHY_XMAC_AUNE_ADV, Ctrl);
+
+               /* Restart Auto-negotiation */
+               Ctrl = PHY_CT_ANE | PHY_CT_RE_CFG;
+       }
+
+       if (DoLoop) {
+               /* Set the Phy Loopback bit, too */
+               Ctrl |= PHY_CT_LOOP;
+       }
+
+       /* Write to the Phy control register */
+       SkXmPhyWrite(pAC, IoC, Port, PHY_XMAC_CTRL, Ctrl);
+}      /* SkXmInitPhyXmac */
+
+
+/******************************************************************************
+ *
+ *     SkXmInitPhyBcom() - Initialize the Broadcom Phy registers
+ *
+ * Description:        initializes all the Broadcom Phy registers
+ *
+ * Note:
+ *
+ * Returns:
+ *     nothing
+ */
+static void SkXmInitPhyBcom(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* IO context */
+int            Port,           /* Port Index (MAC_1 + n) */
+SK_BOOL        DoLoop)         /* Should a Phy LoopBack be set-up? */
+{
+       SK_GEPORT       *pPrt;
+       SK_U16          Ctrl1;
+       SK_U16          Ctrl2;
+       SK_U16          Ctrl3;
+       SK_U16          Ctrl4;
+       SK_U16          Ctrl5;
+
+       Ctrl1 = PHY_CT_SP1000;
+       Ctrl2 = 0;
+       Ctrl3 = PHY_SEL_TYPE;
+       Ctrl4 = PHY_B_PEC_EN_LTR;
+       Ctrl5 = PHY_B_AC_TX_TST;
+
+       pPrt = &pAC->GIni.GP[Port];
+
+       /* manually Master/Slave ? */
+       if (pPrt->PMSMode != SK_MS_MODE_AUTO) {
+               Ctrl2 |= PHY_B_1000C_MSE;
+
+               if (pPrt->PMSMode == SK_MS_MODE_MASTER) {
+                       Ctrl2 |= PHY_B_1000C_MSC;
+               }
+       }
+       /* Auto-negotiation ? */
+       if (pPrt->PLinkMode == SK_LMODE_HALF || pPrt->PLinkMode == SK_LMODE_FULL) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+                       ("InitPhyBcom: no auto-negotiation Port %d\n", Port));
+               /* Set DuplexMode in Config register */
+               Ctrl1 |= (pPrt->PLinkMode == SK_LMODE_FULL ? PHY_CT_DUP_MD : 0);
+
+               /* Determine Master/Slave manually if not already done */
+               if (pPrt->PMSMode == SK_MS_MODE_AUTO) {
+                       Ctrl2 |= PHY_B_1000C_MSE;       /* set it to Slave */
+               }
+
+               /*
+                * Do NOT enable Auto-negotiation here. This would hold
+                * the link down because no IDLES are transmitted
+                */
+       }
+       else {
+               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+                       ("InitPhyBcom: with auto-negotiation Port %d\n", Port));
+               /* Set Auto-negotiation advertisement */
+
+               /*
+                * Workaround BCOM Errata #1 for the C5 type.
+                * 1000Base-T Link Acquisition Failure in Slave Mode
+                * Set Repeater/DTE bit 10 of the 1000Base-T Control Register
+                */
+               Ctrl2 |= PHY_B_1000C_RD;
+
+                /* Set Full/half duplex capabilities */
+               switch (pPrt->PLinkMode) {
+               case SK_LMODE_AUTOHALF:
+                       Ctrl2 |= PHY_B_1000C_AHD;
+                       break;
+               case SK_LMODE_AUTOFULL:
+                       Ctrl2 |= PHY_B_1000C_AFD;
+                       break;
+               case SK_LMODE_AUTOBOTH:
+                       Ctrl2 |= PHY_B_1000C_AFD | PHY_B_1000C_AHD;
+                       break;
+               default:
+                       SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_HWI_E015,
+                               SKERR_HWI_E015MSG);
+               }
+
+               switch (pPrt->PFlowCtrlMode) {
+               case SK_FLOW_MODE_NONE:
+                       Ctrl3 |= PHY_B_P_NO_PAUSE;
+                       break;
+               case SK_FLOW_MODE_LOC_SEND:
+                       Ctrl3 |= PHY_B_P_ASYM_MD;
+                       break;
+               case SK_FLOW_MODE_SYMMETRIC:
+                       Ctrl3 |= PHY_B_P_SYM_MD;
+                       break;
+               case SK_FLOW_MODE_SYM_OR_REM:
+                       Ctrl3 |= PHY_B_P_BOTH_MD;
+                       break;
+               default:
+                       SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_HWI_E016,
+                               SKERR_HWI_E016MSG);
+               }
+
+               /* Restart Auto-negotiation */
+               Ctrl1 |= PHY_CT_ANE | PHY_CT_RE_CFG;
+       }
+
+       /* Initialize LED register here? */
+       /* No. Please do it in SkDgXmitLed() (if required) and swap
+          init order of LEDs and XMAC. (MAl) */
+
+       /* Write 1000Base-T Control Register */
+       SkXmPhyWrite(pAC, IoC, Port, PHY_BCOM_1000T_CTRL, Ctrl2);
+       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+               ("1000B-T Ctrl Reg=0x%04X\n", Ctrl2));
+
+       /* Write AutoNeg Advertisement Register */
+       SkXmPhyWrite(pAC, IoC, Port, PHY_BCOM_AUNE_ADV, Ctrl3);
+       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+               ("Auto-Neg. Adv. Reg=0x%04X\n", Ctrl3));
+
+       if (DoLoop) {
+               /* Set the Phy Loopback bit, too */
+               Ctrl1 |= PHY_CT_LOOP;
+       }
+
+       if (pAC->GIni.GIPortUsage == SK_JUMBO_LINK) {
+               /* configure FIFO to high latency for transmission of ext. packets */
+               Ctrl4 |= PHY_B_PEC_HIGH_LA;
+
+               /* configure reception of extended packets */
+               Ctrl5 |= PHY_B_AC_LONG_PACK;
+
+               SkXmPhyWrite(pAC, IoC, Port, PHY_BCOM_AUX_CTRL, Ctrl5);
+       }
+
+       /* Configure LED Traffic Mode and Jumbo Frame usage if specified */
+       SkXmPhyWrite(pAC, IoC, Port, PHY_BCOM_P_EXT_CTRL, Ctrl4);
+
+       /* Write to the Phy control register */
+       SkXmPhyWrite(pAC, IoC, Port, PHY_BCOM_CTRL, Ctrl1);
+       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+               ("PHY Control Reg=0x%04X\n", Ctrl1));
+}      /* SkXmInitPhyBcom */
+
+
+/******************************************************************************
+ *
+ *     SkGmInitPhyMarv() - Initialize the Marvell Phy registers
+ *
+ * Description:        initializes all the Marvell Phy registers
+ *
+ * Note:
+ *
+ * Returns:
+ *     nothing
+ */
+static void SkGmInitPhyMarv(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* IO context */
+int            Port,           /* Port Index (MAC_1 + n) */
+SK_BOOL        DoLoop)         /* Should a Phy LoopBack be set-up? */
+{
+       SK_GEPORT       *pPrt;
+       SK_U16          PhyCtrl;
+       SK_U16          C1000BaseT;
+       SK_U16          AutoNegAdv;
+       SK_U16          ExtPhyCtrl;
+       SK_U16          PhyStat;
+       SK_U16          PhyStat1;
+       SK_U16          PhySpecStat;
+       SK_U16          LedCtrl;
+       SK_BOOL         AutoNeg;
+
+#ifdef VCPU
+       VCPUprintf(0, "SkGmInitPhyMarv(), Port=%u, DoLoop=%u\n",
+               Port, DoLoop);
+#else /* VCPU */
+
+       pPrt = &pAC->GIni.GP[Port];
+
+       /* Auto-negotiation ? */
+       if (pPrt->PLinkMode == SK_LMODE_HALF || pPrt->PLinkMode == SK_LMODE_FULL) {
+               AutoNeg = SK_FALSE;
+       }
+       else {
+               AutoNeg = SK_TRUE;
+       }
+
+       if (!DoLoop) {
+               /* Read Ext. PHY Specific Control */
+               SkGmPhyRead(pAC, IoC, Port, PHY_MARV_EXT_CTRL, &ExtPhyCtrl);
+
+               ExtPhyCtrl &= ~(PHY_M_EC_M_DSC_MSK | PHY_M_EC_S_DSC_MSK |
+                       PHY_M_EC_MAC_S_MSK);
+
+               ExtPhyCtrl |= PHY_M_EC_M_DSC(1) | PHY_M_EC_S_DSC(1) |
+                       PHY_M_EC_MAC_S(MAC_TX_CLK_25_MHZ);
+
+               SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_EXT_CTRL, ExtPhyCtrl);
+               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+                       ("Ext.PHYCtrl=0x%04X\n", ExtPhyCtrl));
+
+               /* Read PHY Control */
+               SkGmPhyRead(pAC, IoC, Port, PHY_MARV_CTRL, &PhyCtrl);
+
+               /* Assert software reset */
+               SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_CTRL,
+                       (SK_U16)(PhyCtrl | PHY_CT_RESET));
+       }
+#endif /* VCPU */
+
+       PhyCtrl = 0 /* PHY_CT_COL_TST */;
+       C1000BaseT = 0;
+       AutoNegAdv = PHY_SEL_TYPE;
+
+       /* manually Master/Slave ? */
+       if (pPrt->PMSMode != SK_MS_MODE_AUTO) {
+               /* enable Manual Master/Slave */
+               C1000BaseT |= PHY_M_1000C_MSE;
+
+               if (pPrt->PMSMode == SK_MS_MODE_MASTER) {
+                       C1000BaseT |= PHY_M_1000C_MSC;  /* set it to Master */
+               }
+       }
+
+       /* Auto-negotiation ? */
+       if (!AutoNeg) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+                       ("InitPhyMarv: no auto-negotiation Port %d\n", Port));
+
+               if (pPrt->PLinkMode == SK_LMODE_FULL) {
+                       /* Set Full Duplex Mode */
+                       PhyCtrl |= PHY_CT_DUP_MD;
+               }
+
+               /* Set Master/Slave manually if not already done */
+               if (pPrt->PMSMode == SK_MS_MODE_AUTO) {
+                       C1000BaseT |= PHY_M_1000C_MSE;  /* set it to Slave */
+               }
+
+               /* Set Speed */
+               switch (pPrt->PLinkSpeed) {
+               case SK_LSPEED_AUTO:
+               case SK_LSPEED_1000MBPS:
+                       PhyCtrl |= PHY_CT_SP1000;
+                       break;
+               case SK_LSPEED_100MBPS:
+                       PhyCtrl |= PHY_CT_SP100;
+                       break;
+               case SK_LSPEED_10MBPS:
+                       break;
+               default:
+                       SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_HWI_E019,
+                               SKERR_HWI_E019MSG);
+               }
+
+               if (!DoLoop) {
+                       PhyCtrl |= PHY_CT_RESET;
+               }
+               /*
+                * Do NOT enable Auto-negotiation here. This would hold
+                * the link down because no IDLES are transmitted
+                */
+       }
+       else {
+               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+                       ("InitPhyMarv: with auto-negotiation Port %d\n", Port));
+
+               PhyCtrl |= PHY_CT_ANE;
+
+               if (pAC->GIni.GICopperType) {
+                       /* Set Speed capabilities */
+                       switch (pPrt->PLinkSpeed) {
+                       case SK_LSPEED_AUTO:
+                               C1000BaseT |= PHY_M_1000C_AHD | PHY_M_1000C_AFD;
+                               AutoNegAdv |= PHY_M_AN_100_FD | PHY_M_AN_100_HD |
+                                       PHY_M_AN_10_FD | PHY_M_AN_10_HD;
+                               break;
+                       case SK_LSPEED_1000MBPS:
+                               C1000BaseT |= PHY_M_1000C_AHD | PHY_M_1000C_AFD;
+                               break;
+                       case SK_LSPEED_100MBPS:
+                               AutoNegAdv |= PHY_M_AN_100_FD | PHY_M_AN_100_HD |
+                                       PHY_M_AN_10_FD | PHY_M_AN_10_HD;
+                               break;
+                       case SK_LSPEED_10MBPS:
+                               AutoNegAdv |= PHY_M_AN_10_FD | PHY_M_AN_10_HD;
+                               break;
+                       default:
+                               SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_HWI_E019,
+                                       SKERR_HWI_E019MSG);
+                       }
+
+                       /* Set Full/half duplex capabilities */
+                       switch (pPrt->PLinkMode) {
+                       case SK_LMODE_AUTOHALF:
+                               C1000BaseT &= ~PHY_M_1000C_AFD;
+                               AutoNegAdv &= ~(PHY_M_AN_100_FD | PHY_M_AN_10_FD);
+                               break;
+                       case SK_LMODE_AUTOFULL:
+                               C1000BaseT &= ~PHY_M_1000C_AHD;
+                               AutoNegAdv &= ~(PHY_M_AN_100_HD | PHY_M_AN_10_HD);
+                               break;
+                       case SK_LMODE_AUTOBOTH:
+                               break;
+                       default:
+                               SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_HWI_E015,
+                                       SKERR_HWI_E015MSG);
+                       }
+
+                       /* Set Auto-negotiation advertisement */
+                       switch (pPrt->PFlowCtrlMode) {
+                       case SK_FLOW_MODE_NONE:
+                               AutoNegAdv |= PHY_B_P_NO_PAUSE;
+                               break;
+                       case SK_FLOW_MODE_LOC_SEND:
+                               AutoNegAdv |= PHY_B_P_ASYM_MD;
+                               break;
+                       case SK_FLOW_MODE_SYMMETRIC:
+                               AutoNegAdv |= PHY_B_P_SYM_MD;
+                               break;
+                       case SK_FLOW_MODE_SYM_OR_REM:
+                               AutoNegAdv |= PHY_B_P_BOTH_MD;
+                               break;
+                       default:
+                               SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_HWI_E016,
+                                       SKERR_HWI_E016MSG);
+                       }
+               }
+               else {  /* special defines for FIBER (88E1011S only) */
+
+                       /* Set Full/half duplex capabilities */
+                       switch (pPrt->PLinkMode) {
+                       case SK_LMODE_AUTOHALF:
+                               AutoNegAdv |= PHY_M_AN_1000X_AHD;
+                               break;
+                       case SK_LMODE_AUTOFULL:
+                               AutoNegAdv |= PHY_M_AN_1000X_AFD;
+                               break;
+                       case SK_LMODE_AUTOBOTH:
+                               AutoNegAdv |= PHY_M_AN_1000X_AHD | PHY_M_AN_1000X_AFD;
+                               break;
+                       default:
+                               SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_HWI_E015,
+                                       SKERR_HWI_E015MSG);
+                       }
+
+                       /* Set Auto-negotiation advertisement */
+                       switch (pPrt->PFlowCtrlMode) {
+                       case SK_FLOW_MODE_NONE:
+                               AutoNegAdv |= PHY_M_P_NO_PAUSE_X;
+                               break;
+                       case SK_FLOW_MODE_LOC_SEND:
+                               AutoNegAdv |= PHY_M_P_ASYM_MD_X;
+                               break;
+                       case SK_FLOW_MODE_SYMMETRIC:
+                               AutoNegAdv |= PHY_M_P_SYM_MD_X;
+                               break;
+                       case SK_FLOW_MODE_SYM_OR_REM:
+                               AutoNegAdv |= PHY_M_P_BOTH_MD_X;
+                               break;
+                       default:
+                               SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_HWI_E016,
+                                       SKERR_HWI_E016MSG);
+                       }
+               }
+
+               if (!DoLoop) {
+                       /* Restart Auto-negotiation */
+                       PhyCtrl |= PHY_CT_RE_CFG;
+               }
+       }
+
+#ifdef VCPU
+       /*
+        * E-mail from Gu Lin (08-03-2002):
+        */
+
+       /* Program PHY register 30 as 16'h0708 for simulation speed up */
+       SkGmPhyWrite(pAC, IoC, Port, 30, 0x0708);
+
+       VCpuWait(2000);
+
+#else /* VCPU */
+
+       /* Write 1000Base-T Control Register */
+       SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_1000T_CTRL, C1000BaseT);
+       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+               ("1000B-T Ctrl=0x%04X\n", C1000BaseT));
+
+       /* Write AutoNeg Advertisement Register */
+       SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_AUNE_ADV, AutoNegAdv);
+       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+               ("Auto-Neg.Ad.=0x%04X\n", AutoNegAdv));
+#endif /* VCPU */
+
+       if (DoLoop) {
+               /* Set the PHY Loopback bit */
+               PhyCtrl |= PHY_CT_LOOP;
+
+               /* Program PHY register 16 as 16'h0400 to force link good */
+               SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_PHY_CTRL, PHY_M_PC_FL_GOOD);
+
+#if 0
+               if (pPrt->PLinkSpeed != SK_LSPEED_AUTO) {
+                       /* Write Ext. PHY Specific Control */
+                       SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_EXT_CTRL,
+                               (SK_U16)((pPrt->PLinkSpeed + 2) << 4));
+               }
+       }
+       else if (pPrt->PLinkSpeed == SK_LSPEED_10MBPS) {
+                       /* Write PHY Specific Control */
+                       SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_PHY_CTRL, PHY_M_PC_EN_DET_MSK);
+               }
+#endif /* 0 */
+       }
+
+       /* Write to the PHY Control register */
+       SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_CTRL, PhyCtrl);
+
+#ifdef VCPU
+       VCpuWait(2000);
+#else
+
+       LedCtrl = PHY_M_LED_PULS_DUR(PULS_170MS) | PHY_M_LED_BLINK_RT(BLINK_84MS);
+
+#ifdef ACT_LED_BLINK
+       LedCtrl |= PHY_M_LEDC_RX_CTRL | PHY_M_LEDC_TX_CTRL;
+#endif /* ACT_LED_BLINK */
+
+#ifdef DUP_LED_NORMAL
+       LedCtrl |= PHY_M_LEDC_DP_CTRL;
+#endif /* DUP_LED_NORMAL */
+
+       SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_LED_CTRL, LedCtrl);
+
+#endif /* VCPU */
+
+#ifdef SK_DIAG
+       c_print("Set PHY Ctrl=0x%04X\n", PhyCtrl);
+       c_print("Set 1000 B-T=0x%04X\n", C1000BaseT);
+       c_print("Set Auto-Neg=0x%04X\n", AutoNegAdv);
+       c_print("Set Ext Ctrl=0x%04X\n", ExtPhyCtrl);
+#endif /* SK_DIAG */
+
+#ifndef xDEBUG
+       /* Read PHY Control */
+       SkGmPhyRead(pAC, IoC, Port, PHY_MARV_CTRL, &PhyCtrl);
+       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+               ("PHY Ctrl Reg.=0x%04X\n", PhyCtrl));
+
+       /* Read 1000Base-T Control Register */
+       SkGmPhyRead(pAC, IoC, Port, PHY_MARV_1000T_CTRL, &C1000BaseT);
+       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+               ("1000B-T Ctrl =0x%04X\n", C1000BaseT));
+
+       /* Read AutoNeg Advertisement Register */
+       SkGmPhyRead(pAC, IoC, Port, PHY_MARV_AUNE_ADV, &AutoNegAdv);
+       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+               ("Auto-Neg. Ad.=0x%04X\n", AutoNegAdv));
+
+       /* Read Ext. PHY Specific Control */
+       SkGmPhyRead(pAC, IoC, Port, PHY_MARV_EXT_CTRL, &ExtPhyCtrl);
+       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+               ("Ext PHY Ctrl=0x%04X\n", ExtPhyCtrl));
+
+       /* Read PHY Status */
+       SkGmPhyRead(pAC, IoC, Port, PHY_MARV_STAT, &PhyStat);
+       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+               ("PHY Stat Reg.=0x%04X\n", PhyStat));
+       SkGmPhyRead(pAC, IoC, Port, PHY_MARV_STAT, &PhyStat1);
+       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+               ("PHY Stat Reg.=0x%04X\n", PhyStat1));
+
+       /* Read PHY Specific Status */
+       SkGmPhyRead(pAC, IoC, Port, PHY_MARV_PHY_STAT, &PhySpecStat);
+       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+               ("PHY Spec Stat=0x%04X\n", PhySpecStat));
+#endif /* DEBUG */
+
+#ifdef SK_DIAG
+       c_print("PHY Ctrl Reg=0x%04X\n", PhyCtrl);
+       c_print("PHY 1000 Reg=0x%04X\n", C1000BaseT);
+       c_print("PHY AnAd Reg=0x%04X\n", AutoNegAdv);
+       c_print("Ext Ctrl Reg=0x%04X\n", ExtPhyCtrl);
+       c_print("PHY Stat Reg=0x%04X\n", PhyStat);
+       c_print("PHY Stat Reg=0x%04X\n", PhyStat1);
+       c_print("PHY Spec Reg=0x%04X\n", PhySpecStat);
+#endif /* SK_DIAG */
+
+}      /* SkGmInitPhyMarv */
+
+
+#ifdef OTHER_PHY
+/******************************************************************************
+ *
+ *     SkXmInitPhyLone() - Initialize the Level One Phy registers
+ *
+ * Description:        initializes all the Level One Phy registers
+ *
+ * Note:
+ *
+ * Returns:
+ *     nothing
+ */
+static void SkXmInitPhyLone(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* IO context */
+int            Port,           /* Port Index (MAC_1 + n) */
+SK_BOOL        DoLoop)         /* Should a Phy LoopBack be set-up? */
+{
+       SK_GEPORT       *pPrt;
+       SK_U16          Ctrl1;
+       SK_U16          Ctrl2;
+       SK_U16          Ctrl3;
+
+       Ctrl1 = PHY_CT_SP1000;
+       Ctrl2 = 0;
+       Ctrl3 = PHY_SEL_TYPE;
+
+       pPrt = &pAC->GIni.GP[Port];
+
+       /* manually Master/Slave ? */
+       if (pPrt->PMSMode != SK_MS_MODE_AUTO) {
+               Ctrl2 |= PHY_L_1000C_MSE;
+
+               if (pPrt->PMSMode == SK_MS_MODE_MASTER) {
+                       Ctrl2 |= PHY_L_1000C_MSC;
+               }
+       }
+       /* Auto-negotiation ? */
+       if (pPrt->PLinkMode == SK_LMODE_HALF || pPrt->PLinkMode == SK_LMODE_FULL) {
+               /*
+                * level one spec say: "1000Mbps: manual mode not allowed"
+                * but lets see what happens...
+                */
+               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+                       ("InitPhyLone: no auto-negotiation Port %d\n", Port));
+               /* Set DuplexMode in Config register */
+               Ctrl1 = (pPrt->PLinkMode == SK_LMODE_FULL ? PHY_CT_DUP_MD : 0);
+
+               /* Determine Master/Slave manually if not already done */
+               if (pPrt->PMSMode == SK_MS_MODE_AUTO) {
+                       Ctrl2 |= PHY_L_1000C_MSE;       /* set it to Slave */
+               }
+
+               /*
+                * Do NOT enable Auto-negotiation here. This would hold
+                * the link down because no IDLES are transmitted
+                */
+       }
+       else {
+               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+                       ("InitPhyLone: with auto-negotiation Port %d\n", Port));
+               /* Set Auto-negotiation advertisement */
+
+               /* Set Full/half duplex capabilities */
+               switch (pPrt->PLinkMode) {
+               case SK_LMODE_AUTOHALF:
+                       Ctrl2 |= PHY_L_1000C_AHD;
+                       break;
+               case SK_LMODE_AUTOFULL:
+                       Ctrl2 |= PHY_L_1000C_AFD;
+                       break;
+               case SK_LMODE_AUTOBOTH:
+                       Ctrl2 |= PHY_L_1000C_AFD | PHY_L_1000C_AHD;
+                       break;
+               default:
+                       SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_HWI_E015,
+                               SKERR_HWI_E015MSG);
+               }
+
+               switch (pPrt->PFlowCtrlMode) {
+               case SK_FLOW_MODE_NONE:
+                       Ctrl3 |= PHY_L_P_NO_PAUSE;
+                       break;
+               case SK_FLOW_MODE_LOC_SEND:
+                       Ctrl3 |= PHY_L_P_ASYM_MD;
+                       break;
+               case SK_FLOW_MODE_SYMMETRIC:
+                       Ctrl3 |= PHY_L_P_SYM_MD;
+                       break;
+               case SK_FLOW_MODE_SYM_OR_REM:
+                       Ctrl3 |= PHY_L_P_BOTH_MD;
+                       break;
+               default:
+                       SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_HWI_E016,
+                               SKERR_HWI_E016MSG);
+               }
+
+               /* Restart Auto-negotiation */
+               Ctrl1 = PHY_CT_ANE | PHY_CT_RE_CFG;
+
+       }
+
+       /* Initialize LED register here ? */
+       /* No. Please do it in SkDgXmitLed() (if required) and swap
+          init order of LEDs and XMAC. (MAl) */
+
+       /* Write 1000Base-T Control Register */
+       SkXmPhyWrite(pAC, IoC, Port, PHY_LONE_1000T_CTRL, Ctrl2);
+       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+               ("1000B-T Ctrl Reg=0x%04X\n", Ctrl2));
+
+       /* Write AutoNeg Advertisement Register */
+       SkXmPhyWrite(pAC, IoC, Port, PHY_LONE_AUNE_ADV, Ctrl3);
+       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+               ("Auto-Neg. Adv. Reg=0x%04X\n", Ctrl3));
+
+
+       if (DoLoop) {
+               /* Set the Phy Loopback bit, too */
+               Ctrl1 |= PHY_CT_LOOP;
+       }
+
+       /* Write to the Phy control register */
+       SkXmPhyWrite(pAC, IoC, Port, PHY_LONE_CTRL, Ctrl1);
+       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+               ("PHY Control Reg=0x%04X\n", Ctrl1));
+}      /* SkXmInitPhyLone */
+
+
+/******************************************************************************
+ *
+ *     SkXmInitPhyNat() - Initialize the National Phy registers
+ *
+ * Description:        initializes all the National Phy registers
+ *
+ * Note:
+ *
+ * Returns:
+ *     nothing
+ */
+static void SkXmInitPhyNat(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* IO context */
+int            Port,           /* Port Index (MAC_1 + n) */
+SK_BOOL        DoLoop)         /* Should a Phy LoopBack be set-up? */
+{
+/* todo: National */
+}      /* SkXmInitPhyNat */
+#endif /* OTHER_PHY */
+
+
+/******************************************************************************
+ *
+ *     SkMacInitPhy() - Initialize the PHY registers
+ *
+ * Description:        calls the Init PHY routines dep. on board type
+ *
+ * Note:
+ *
+ * Returns:
+ *     nothing
+ */
+void SkMacInitPhy(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* IO context */
+int            Port,           /* Port Index (MAC_1 + n) */
+SK_BOOL        DoLoop)         /* Should a Phy LoopBack be set-up? */
+{
+       SK_GEPORT       *pPrt;
+
+       pPrt = &pAC->GIni.GP[Port];
+
+       switch (pPrt->PhyType) {
+       case SK_PHY_XMAC:
+               SkXmInitPhyXmac(pAC, IoC, Port, DoLoop);
+               break;
+       case SK_PHY_BCOM:
+               SkXmInitPhyBcom(pAC, IoC, Port, DoLoop);
+               break;
+       case SK_PHY_MARV_COPPER:
+       case SK_PHY_MARV_FIBER:
+               SkGmInitPhyMarv(pAC, IoC, Port, DoLoop);
+               break;
+#ifdef OTHER_PHY
+       case SK_PHY_LONE:
+               SkXmInitPhyLone(pAC, IoC, Port, DoLoop);
+               break;
+       case SK_PHY_NAT:
+               SkXmInitPhyNat(pAC, IoC, Port, DoLoop);
+               break;
+#endif /* OTHER_PHY */
+       }
+}      /* SkMacInitPhy */
+
+
+#ifndef SK_DIAG
+/******************************************************************************
+ *
+ *     SkXmAutoNegLipaXmac() - Decides whether Link Partner could do auto-neg
+ *
+ *     This function analyses the Interrupt status word. If any of the
+ *     Auto-negotiating interrupt bits are set, the PLipaAutoNeg variable
+ *     is set true.
+ */
+void SkXmAutoNegLipaXmac(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* IO context */
+int            Port,           /* Port Index (MAC_1 + n) */
+SK_U16 IStatus)        /* Interrupt Status word to analyse */
+{
+       SK_GEPORT       *pPrt;
+
+       pPrt = &pAC->GIni.GP[Port];
+
+       if (pPrt->PLipaAutoNeg != SK_LIPA_AUTO &&
+               (IStatus & (XM_IS_LIPA_RC | XM_IS_RX_PAGE | XM_IS_AND)) != 0) {
+
+               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+                       ("AutoNegLipa: AutoNeg detected on Port %d, IStatus=0x%04x\n",
+                       Port, IStatus));
+               pPrt->PLipaAutoNeg = SK_LIPA_AUTO;
+       }
+}      /* SkXmAutoNegLipaXmac */
+
+
+/******************************************************************************
+ *
+ *     SkMacAutoNegLipaPhy() - Decides whether Link Partner could do auto-neg
+ *
+ *     This function analyses the PHY status word.
+ *  If any of the Auto-negotiating bits are set, the PLipaAutoNeg variable
+ *     is set true.
+ */
+void SkMacAutoNegLipaPhy(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* IO context */
+int            Port,           /* Port Index (MAC_1 + n) */
+SK_U16 PhyStat)        /* PHY Status word to analyse */
+{
+       SK_GEPORT       *pPrt;
+
+       pPrt = &pAC->GIni.GP[Port];
+
+       if (pPrt->PLipaAutoNeg != SK_LIPA_AUTO &&
+               (PhyStat & PHY_ST_AN_OVER) != 0) {
+
+               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+                       ("AutoNegLipa: AutoNeg detected on Port %d, PhyStat=0x%04x\n",
+                       Port, PhyStat));
+               pPrt->PLipaAutoNeg = SK_LIPA_AUTO;
+       }
+}      /* SkMacAutoNegLipaPhy */
+#endif /* SK_DIAG */
+
+
+/******************************************************************************
+ *
+ *     SkXmAutoNegDoneXmac() - Auto-negotiation handling
+ *
+ * Description:
+ *     This function handles the auto-negotiation if the Done bit is set.
+ *
+ * Returns:
+ *     SK_AND_OK       o.k.
+ *     SK_AND_DUP_CAP  Duplex capability error happened
+ *     SK_AND_OTHER    Other error happened
+ */
+static int SkXmAutoNegDoneXmac(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* IO context */
+int            Port)           /* Port Index (MAC_1 + n) */
+{
+       SK_GEPORT       *pPrt;
+       SK_U16          ResAb;          /* Resolved Ability */
+       SK_U16          LPAb;           /* Link Partner Ability */
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+               ("AutoNegDoneXmac, Port %d\n",Port));
+
+       pPrt = &pAC->GIni.GP[Port];
+
+       /* Get PHY parameters */
+       SkXmPhyRead(pAC, IoC, Port, PHY_XMAC_AUNE_LP, &LPAb);
+       SkXmPhyRead(pAC, IoC, Port, PHY_XMAC_RES_ABI, &ResAb);
+
+       if ((LPAb & PHY_X_AN_RFB) != 0) {
+               /* At least one of the remote fault bit is set */
+               /* Error */
+               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+                       ("AutoNegFail: Remote fault bit set Port %d\n", Port));
+               pPrt->PAutoNegFail = SK_TRUE;
+               return(SK_AND_OTHER);
+       }
+
+       /* Check Duplex mismatch */
+       if ((ResAb & (PHY_X_RS_HD | PHY_X_RS_FD)) == PHY_X_RS_FD) {
+               pPrt->PLinkModeStatus = SK_LMODE_STAT_AUTOFULL;
+       }
+       else if ((ResAb & (PHY_X_RS_HD | PHY_X_RS_FD)) == PHY_X_RS_HD) {
+               pPrt->PLinkModeStatus = SK_LMODE_STAT_AUTOHALF;
+       }
+       else {
+               /* Error */
+               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+                       ("AutoNegFail: Duplex mode mismatch Port %d\n", Port));
+               pPrt->PAutoNegFail = SK_TRUE;
+               return(SK_AND_DUP_CAP);
+       }
+
+       /* Check PAUSE mismatch */
+       /* We are NOT using chapter 4.23 of the Xaqti manual */
+       /* We are using IEEE 802.3z/D5.0 Table 37-4 */
+       if ((pPrt->PFlowCtrlMode == SK_FLOW_MODE_SYMMETRIC ||
+            pPrt->PFlowCtrlMode == SK_FLOW_MODE_SYM_OR_REM) &&
+           (LPAb & PHY_X_P_SYM_MD) != 0) {
+               /* Symmetric PAUSE */
+               pPrt->PFlowCtrlStatus = SK_FLOW_STAT_SYMMETRIC;
+       }
+       else if (pPrt->PFlowCtrlMode == SK_FLOW_MODE_SYM_OR_REM &&
+                  (LPAb & PHY_X_RS_PAUSE) == PHY_X_P_ASYM_MD) {
+               /* Enable PAUSE receive, disable PAUSE transmit */
+               pPrt->PFlowCtrlStatus = SK_FLOW_STAT_REM_SEND;
+       }
+       else if (pPrt->PFlowCtrlMode == SK_FLOW_MODE_LOC_SEND &&
+                  (LPAb & PHY_X_RS_PAUSE) == PHY_X_P_BOTH_MD) {
+               /* Disable PAUSE receive, enable PAUSE transmit */
+               pPrt->PFlowCtrlStatus = SK_FLOW_STAT_LOC_SEND;
+       }
+       else {
+               /* PAUSE mismatch -> no PAUSE */
+               pPrt->PFlowCtrlStatus = SK_FLOW_STAT_NONE;
+       }
+       pPrt->PLinkSpeedUsed = SK_LSPEED_STAT_1000MBPS;
+
+       return(SK_AND_OK);
+}      /* SkXmAutoNegDoneXmac */
+
+
+/******************************************************************************
+ *
+ *     SkXmAutoNegDoneBcom() - Auto-negotiation handling
+ *
+ * Description:
+ *     This function handles the auto-negotiation if the Done bit is set.
+ *
+ * Returns:
+ *     SK_AND_OK       o.k.
+ *     SK_AND_DUP_CAP  Duplex capability error happened
+ *     SK_AND_OTHER    Other error happened
+ */
+static int SkXmAutoNegDoneBcom(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* IO context */
+int            Port)           /* Port Index (MAC_1 + n) */
+{
+       SK_GEPORT       *pPrt;
+       SK_U16          LPAb;           /* Link Partner Ability */
+       SK_U16          AuxStat;        /* Auxiliary Status */
+
+#if 0
+01-Sep-2000 RA;:;:
+       SK_U16          ResAb;          /* Resolved Ability */
+#endif /* 0 */
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+               ("AutoNegDoneBcom, Port %d\n", Port));
+       pPrt = &pAC->GIni.GP[Port];
+
+       /* Get PHY parameters */
+       SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_AUNE_LP, &LPAb);
+#if 0
+01-Sep-2000 RA;:;:
+       SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_1000T_STAT, &ResAb);
+#endif /* 0 */
+
+       SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_AUX_STAT, &AuxStat);
+
+       if ((LPAb & PHY_B_AN_RF) != 0) {
+               /* Remote fault bit is set: Error */
+               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+                       ("AutoNegFail: Remote fault bit set Port %d\n", Port));
+               pPrt->PAutoNegFail = SK_TRUE;
+               return(SK_AND_OTHER);
+       }
+
+       /* Check Duplex mismatch */
+       if ((AuxStat & PHY_B_AS_AN_RES_MSK) == PHY_B_RES_1000FD) {
+               pPrt->PLinkModeStatus = SK_LMODE_STAT_AUTOFULL;
+       }
+       else if ((AuxStat & PHY_B_AS_AN_RES_MSK) == PHY_B_RES_1000HD) {
+               pPrt->PLinkModeStatus = SK_LMODE_STAT_AUTOHALF;
+       }
+       else {
+               /* Error */
+               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+                       ("AutoNegFail: Duplex mode mismatch Port %d\n", Port));
+               pPrt->PAutoNegFail = SK_TRUE;
+               return(SK_AND_DUP_CAP);
+       }
+
+#if 0
+01-Sep-2000 RA;:;:
+       /* Check Master/Slave resolution */
+       if ((ResAb & PHY_B_1000S_MSF) != 0) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+                       ("Master/Slave Fault Port %d\n", Port));
+               pPrt->PAutoNegFail = SK_TRUE;
+               pPrt->PMSStatus = SK_MS_STAT_FAULT;
+               return(SK_AND_OTHER);
+       }
+
+       pPrt->PMSStatus = ((ResAb & PHY_B_1000S_MSR) != 0) ?
+               SK_MS_STAT_MASTER : SK_MS_STAT_SLAVE;
+#endif /* 0 */
+
+       /* Check PAUSE mismatch */
+       /* We are using IEEE 802.3z/D5.0 Table 37-4 */
+       if ((AuxStat & PHY_B_AS_PAUSE_MSK) == PHY_B_AS_PAUSE_MSK) {
+               /* Symmetric PAUSE */
+               pPrt->PFlowCtrlStatus = SK_FLOW_STAT_SYMMETRIC;
+       }
+       else if ((AuxStat & PHY_B_AS_PAUSE_MSK) == PHY_B_AS_PRR) {
+               /* Enable PAUSE receive, disable PAUSE transmit */
+               pPrt->PFlowCtrlStatus = SK_FLOW_STAT_REM_SEND;
+       }
+       else if ((AuxStat & PHY_B_AS_PAUSE_MSK) == PHY_B_AS_PRT) {
+               /* Disable PAUSE receive, enable PAUSE transmit */
+               pPrt->PFlowCtrlStatus = SK_FLOW_STAT_LOC_SEND;
+       }
+       else {
+               /* PAUSE mismatch -> no PAUSE */
+               pPrt->PFlowCtrlStatus = SK_FLOW_STAT_NONE;
+       }
+       pPrt->PLinkSpeedUsed = SK_LSPEED_STAT_1000MBPS;
+
+       return(SK_AND_OK);
+}      /* SkXmAutoNegDoneBcom */
+
+
+/******************************************************************************
+ *
+ *     SkGmAutoNegDoneMarv() - Auto-negotiation handling
+ *
+ * Description:
+ *     This function handles the auto-negotiation if the Done bit is set.
+ *
+ * Returns:
+ *     SK_AND_OK       o.k.
+ *     SK_AND_DUP_CAP  Duplex capability error happened
+ *     SK_AND_OTHER    Other error happened
+ */
+static int SkGmAutoNegDoneMarv(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* IO context */
+int            Port)           /* Port Index (MAC_1 + n) */
+{
+       SK_GEPORT       *pPrt;
+       SK_U16          LPAb;           /* Link Partner Ability */
+       SK_U16          ResAb;          /* Resolved Ability */
+       SK_U16          AuxStat;        /* Auxiliary Status */
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+               ("AutoNegDoneMarv, Port %d\n", Port));
+       pPrt = &pAC->GIni.GP[Port];
+
+       /* Get PHY parameters */
+       SkGmPhyRead(pAC, IoC, Port, PHY_MARV_AUNE_LP, &LPAb);
+
+       if ((LPAb & PHY_M_AN_RF) != 0) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+                       ("AutoNegFail: Remote fault bit set Port %d\n", Port));
+               pPrt->PAutoNegFail = SK_TRUE;
+               return(SK_AND_OTHER);
+       }
+
+       SkGmPhyRead(pAC, IoC, Port, PHY_MARV_1000T_STAT, &ResAb);
+
+       /* Check Master/Slave resolution */
+       if ((ResAb & PHY_B_1000S_MSF) != 0) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+                       ("Master/Slave Fault Port %d\n", Port));
+               pPrt->PAutoNegFail = SK_TRUE;
+               pPrt->PMSStatus = SK_MS_STAT_FAULT;
+               return(SK_AND_OTHER);
+       }
+
+       pPrt->PMSStatus = ((ResAb & PHY_B_1000S_MSR) != 0) ?
+               (SK_U8)SK_MS_STAT_MASTER : (SK_U8)SK_MS_STAT_SLAVE;
+
+       /* Read PHY Specific Status */
+       SkGmPhyRead(pAC, IoC, Port, PHY_MARV_PHY_STAT, &AuxStat);
+
+       /* Check Speed & Duplex resolved */
+       if ((AuxStat & PHY_M_PS_SPDUP_RES) == 0) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+                       ("AutoNegFail: Speed & Duplex not resolved Port %d\n", Port));
+               pPrt->PAutoNegFail = SK_TRUE;
+               pPrt->PLinkModeStatus = SK_LMODE_STAT_UNKNOWN;
+               return(SK_AND_DUP_CAP);
+       }
+
+       if ((AuxStat & PHY_M_PS_FULL_DUP) != 0) {
+               pPrt->PLinkModeStatus = SK_LMODE_STAT_AUTOFULL;
+       }
+       else {
+               pPrt->PLinkModeStatus = SK_LMODE_STAT_AUTOHALF;
+       }
+
+       /* Check PAUSE mismatch */
+       /* We are using IEEE 802.3z/D5.0 Table 37-4 */
+       if ((AuxStat & PHY_M_PS_PAUSE_MSK) == PHY_M_PS_PAUSE_MSK) {
+               /* Symmetric PAUSE */
+               pPrt->PFlowCtrlStatus = SK_FLOW_STAT_SYMMETRIC;
+       }
+       else if ((AuxStat & PHY_M_PS_PAUSE_MSK) == PHY_M_PS_RX_P_EN) {
+               /* Enable PAUSE receive, disable PAUSE transmit */
+               pPrt->PFlowCtrlStatus = SK_FLOW_STAT_REM_SEND;
+       }
+       else if ((AuxStat & PHY_M_PS_PAUSE_MSK) == PHY_M_PS_TX_P_EN) {
+               /* Disable PAUSE receive, enable PAUSE transmit */
+               pPrt->PFlowCtrlStatus = SK_FLOW_STAT_LOC_SEND;
+       }
+       else {
+               /* PAUSE mismatch -> no PAUSE */
+               pPrt->PFlowCtrlStatus = SK_FLOW_STAT_NONE;
+       }
+
+       /* set used link speed */
+       switch ((unsigned)(AuxStat & PHY_M_PS_SPEED_MSK)) {
+       case (unsigned)PHY_M_PS_SPEED_1000:
+               pPrt->PLinkSpeedUsed = SK_LSPEED_STAT_1000MBPS;
+               break;
+       case PHY_M_PS_SPEED_100:
+               pPrt->PLinkSpeedUsed = SK_LSPEED_STAT_100MBPS;
+               break;
+       default:
+               pPrt->PLinkSpeedUsed = SK_LSPEED_STAT_10MBPS;
+       }
+
+       return(SK_AND_OK);
+}      /* SkGmAutoNegDoneMarv */
+
+
+#ifdef OTHER_PHY
+/******************************************************************************
+ *
+ *     SkXmAutoNegDoneLone() - Auto-negotiation handling
+ *
+ * Description:
+ *     This function handles the auto-negotiation if the Done bit is set.
+ *
+ * Returns:
+ *     SK_AND_OK       o.k.
+ *     SK_AND_DUP_CAP  Duplex capability error happened
+ *     SK_AND_OTHER    Other error happened
+ */
+static int SkXmAutoNegDoneLone(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* IO context */
+int            Port)           /* Port Index (MAC_1 + n) */
+{
+       SK_GEPORT       *pPrt;
+       SK_U16          ResAb;          /* Resolved Ability */
+       SK_U16          LPAb;           /* Link Partner Ability */
+       SK_U16          QuickStat;      /* Auxiliary Status */
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+               ("AutoNegDoneLone, Port %d\n",Port));
+       pPrt = &pAC->GIni.GP[Port];
+
+       /* Get PHY parameters */
+       SkXmPhyRead(pAC, IoC, Port, PHY_LONE_AUNE_LP, &LPAb);
+       SkXmPhyRead(pAC, IoC, Port, PHY_LONE_1000T_STAT, &ResAb);
+       SkXmPhyRead(pAC, IoC, Port, PHY_LONE_Q_STAT, &QuickStat);
+
+       if ((LPAb & PHY_L_AN_RF) != 0) {
+               /* Remote fault bit is set */
+               /* Error */
+               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+                       ("AutoNegFail: Remote fault bit set Port %d\n", Port));
+               pPrt->PAutoNegFail = SK_TRUE;
+               return(SK_AND_OTHER);
+       }
+
+       /* Check Duplex mismatch */
+       if ((QuickStat & PHY_L_QS_DUP_MOD) != 0) {
+               pPrt->PLinkModeStatus = SK_LMODE_STAT_AUTOFULL;
+       }
+       else {
+               pPrt->PLinkModeStatus = SK_LMODE_STAT_AUTOHALF;
+       }
+
+       /* Check Master/Slave resolution */
+       if ((ResAb & PHY_L_1000S_MSF) != 0) {
+               /* Error */
+               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+                       ("Master/Slave Fault Port %d\n", Port));
+               pPrt->PAutoNegFail = SK_TRUE;
+               pPrt->PMSStatus = SK_MS_STAT_FAULT;
+               return(SK_AND_OTHER);
+       }
+       else if (ResAb & PHY_L_1000S_MSR) {
+               pPrt->PMSStatus = SK_MS_STAT_MASTER;
+       }
+       else {
+               pPrt->PMSStatus = SK_MS_STAT_SLAVE;
+       }
+
+       /* Check PAUSE mismatch */
+       /* We are using IEEE 802.3z/D5.0 Table 37-4 */
+       /* we must manually resolve the abilities here */
+       pPrt->PFlowCtrlStatus = SK_FLOW_STAT_NONE;
+       switch (pPrt->PFlowCtrlMode) {
+       case SK_FLOW_MODE_NONE:
+               /* default */
+               break;
+       case SK_FLOW_MODE_LOC_SEND:
+               if ((QuickStat & (PHY_L_QS_PAUSE | PHY_L_QS_AS_PAUSE)) ==
+                       (PHY_L_QS_PAUSE | PHY_L_QS_AS_PAUSE)) {
+                       /* Disable PAUSE receive, enable PAUSE transmit */
+                       pPrt->PFlowCtrlStatus = SK_FLOW_STAT_LOC_SEND;
+               }
+               break;
+       case SK_FLOW_MODE_SYMMETRIC:
+               if ((QuickStat & PHY_L_QS_PAUSE) != 0) {
+                       /* Symmetric PAUSE */
+                       pPrt->PFlowCtrlStatus = SK_FLOW_STAT_SYMMETRIC;
+               }
+               break;
+       case SK_FLOW_MODE_SYM_OR_REM:
+               if ((QuickStat & (PHY_L_QS_PAUSE | PHY_L_QS_AS_PAUSE)) ==
+                       PHY_L_QS_AS_PAUSE) {
+                       /* Enable PAUSE receive, disable PAUSE transmit */
+                       pPrt->PFlowCtrlStatus = SK_FLOW_STAT_REM_SEND;
+               }
+               else if ((QuickStat & PHY_L_QS_PAUSE) != 0) {
+                       /* Symmetric PAUSE */
+                       pPrt->PFlowCtrlStatus = SK_FLOW_STAT_SYMMETRIC;
+               }
+               break;
+       default:
+               SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_HWI_E016,
+                       SKERR_HWI_E016MSG);
+       }
+
+       return(SK_AND_OK);
+}      /* SkXmAutoNegDoneLone */
+
+
+/******************************************************************************
+ *
+ *     SkXmAutoNegDoneNat() - Auto-negotiation handling
+ *
+ * Description:
+ *     This function handles the auto-negotiation if the Done bit is set.
+ *
+ * Returns:
+ *     SK_AND_OK       o.k.
+ *     SK_AND_DUP_CAP  Duplex capability error happened
+ *     SK_AND_OTHER    Other error happened
+ */
+static int SkXmAutoNegDoneNat(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* IO context */
+int            Port)           /* Port Index (MAC_1 + n) */
+{
+/* todo: National */
+       return(SK_AND_OK);
+}      /* SkXmAutoNegDoneNat */
+#endif /* OTHER_PHY */
+
+
+/******************************************************************************
+ *
+ *     SkMacAutoNegDone() - Auto-negotiation handling
+ *
+ * Description:        calls the auto-negotiation done routines dep. on board type
+ *
+ * Returns:
+ *     SK_AND_OK       o.k.
+ *     SK_AND_DUP_CAP  Duplex capability error happened
+ *     SK_AND_OTHER    Other error happened
+ */
+int    SkMacAutoNegDone(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* IO context */
+int            Port)           /* Port Index (MAC_1 + n) */
+{
+       SK_GEPORT       *pPrt;
+       int     Rtv;
+
+       pPrt = &pAC->GIni.GP[Port];
+
+       switch (pPrt->PhyType) {
+       case SK_PHY_XMAC:
+               Rtv = SkXmAutoNegDoneXmac(pAC, IoC, Port);
+               break;
+       case SK_PHY_BCOM:
+               Rtv = SkXmAutoNegDoneBcom(pAC, IoC, Port);
+               break;
+       case SK_PHY_MARV_COPPER:
+       case SK_PHY_MARV_FIBER:
+               Rtv = SkGmAutoNegDoneMarv(pAC, IoC, Port);
+               break;
+#ifdef OTHER_PHY
+       case SK_PHY_LONE:
+               Rtv = SkXmAutoNegDoneLone(pAC, IoC, Port);
+               break;
+       case SK_PHY_NAT:
+               Rtv = SkXmAutoNegDoneNat(pAC, IoC, Port);
+               break;
+#endif /* OTHER_PHY */
+       default:
+               return(SK_AND_OTHER);
+       }
+
+       if (Rtv != SK_AND_OK) {
+               return(Rtv);
+       }
+
+       /* We checked everything and may now enable the link */
+       pPrt->PAutoNegFail = SK_FALSE;
+
+       SkMacRxTxEnable(pAC, IoC, Port);
+
+       return(SK_AND_OK);
+}      /* SkMacAutoNegDone */
+
+
+/******************************************************************************
+ *
+ *     SkXmSetRxTxEn() - Special Set Rx/Tx Enable and some features in XMAC
+ *
+ * Description:
+ *  sets MAC or PHY LoopBack and Duplex Mode in the MMU Command Reg.
+ *  enables Rx/Tx
+ *
+ * Returns: N/A
+ */
+static void SkXmSetRxTxEn(
+SK_AC  *pAC,           /* Adapter Context */
+SK_IOC IoC,            /* IO context */
+int            Port,           /* Port Index (MAC_1 + n) */
+int            Para)           /* Parameter to set: MAC or PHY LoopBack, Duplex Mode */
+{
+       SK_U16  Word;
+
+       XM_IN16(IoC, Port, XM_MMU_CMD, &Word);
+
+       switch (Para & (SK_MAC_LOOPB_ON | SK_MAC_LOOPB_OFF)) {
+       case SK_MAC_LOOPB_ON:
+               Word |= XM_MMU_MAC_LB;
+               break;
+       case SK_MAC_LOOPB_OFF:
+               Word &= ~XM_MMU_MAC_LB;
+               break;
+       }
+
+       switch (Para & (SK_PHY_LOOPB_ON | SK_PHY_LOOPB_OFF)) {
+       case SK_PHY_LOOPB_ON:
+               Word |= XM_MMU_GMII_LOOP;
+               break;
+       case SK_PHY_LOOPB_OFF:
+               Word &= ~XM_MMU_GMII_LOOP;
+               break;
+       }
+
+       switch (Para & (SK_PHY_FULLD_ON | SK_PHY_FULLD_OFF)) {
+       case SK_PHY_FULLD_ON:
+               Word |= XM_MMU_GMII_FD;
+               break;
+       case SK_PHY_FULLD_OFF:
+               Word &= ~XM_MMU_GMII_FD;
+               break;
+       }
+
+       XM_OUT16(IoC, Port, XM_MMU_CMD, Word | XM_MMU_ENA_RX | XM_MMU_ENA_TX);
+
+       /* dummy read to ensure writing */
+       XM_IN16(IoC, Port, XM_MMU_CMD, &Word);
+
+}      /* SkXmSetRxTxEn */
+
+
+/******************************************************************************
+ *
+ *     SkGmSetRxTxEn() - Special Set Rx/Tx Enable and some features in GMAC
+ *
+ * Description:
+ *  sets MAC LoopBack and Duplex Mode in the General Purpose Control Reg.
+ *  enables Rx/Tx
+ *
+ * Returns: N/A
+ */
+static void SkGmSetRxTxEn(
+SK_AC  *pAC,           /* Adapter Context */
+SK_IOC IoC,            /* IO context */
+int            Port,           /* Port Index (MAC_1 + n) */
+int            Para)           /* Parameter to set: MAC LoopBack, Duplex Mode */
+{
+       SK_U16  Ctrl;
+
+       GM_IN16(IoC, Port, GM_GP_CTRL, &Ctrl);
+
+       switch (Para & (SK_MAC_LOOPB_ON | SK_MAC_LOOPB_OFF)) {
+       case SK_MAC_LOOPB_ON:
+               Ctrl |= GM_GPCR_LOOP_ENA;
+               break;
+       case SK_MAC_LOOPB_OFF:
+               Ctrl &= ~GM_GPCR_LOOP_ENA;
+               break;
+       }
+
+       switch (Para & (SK_PHY_FULLD_ON | SK_PHY_FULLD_OFF)) {
+       case SK_PHY_FULLD_ON:
+               Ctrl |= GM_GPCR_DUP_FULL;
+               break;
+       case SK_PHY_FULLD_OFF:
+               Ctrl &= ~GM_GPCR_DUP_FULL;
+               break;
+       }
+
+       GM_OUT16(IoC, Port, GM_GP_CTRL, Ctrl | GM_GPCR_RX_ENA | GM_GPCR_TX_ENA);
+
+       /* dummy read to ensure writing */
+       GM_IN16(IoC, Port, GM_GP_CTRL, &Ctrl);
+
+}      /* SkGmSetRxTxEn */
+
+
+/******************************************************************************
+ *
+ *     SkMacSetRxTxEn() - Special Set Rx/Tx Enable and parameters
+ *
+ * Description:        calls the Special Set Rx/Tx Enable routines dep. on board type
+ *
+ * Returns: N/A
+ */
+void SkMacSetRxTxEn(
+SK_AC  *pAC,           /* Adapter Context */
+SK_IOC IoC,            /* IO context */
+int            Port,           /* Port Index (MAC_1 + n) */
+int            Para)
+{
+       if (pAC->GIni.GIGenesis) {
+
+               SkXmSetRxTxEn(pAC, IoC, Port, Para);
+       }
+       else {
+
+               SkGmSetRxTxEn(pAC, IoC, Port, Para);
+       }
+
+}      /* SkMacSetRxTxEn */
+
+
+/******************************************************************************
+ *
+ *     SkMacRxTxEnable() - Enable Rx/Tx activity if port is up
+ *
+ * Description:        enables Rx/Tx dep. on board type
+ *
+ * Returns:
+ *     0        o.k.
+ *     != 0    Error happened
+ */
+int SkMacRxTxEnable(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* IO context */
+int            Port)           /* Port Index (MAC_1 + n) */
+{
+       SK_GEPORT       *pPrt;
+       SK_U16          Reg;            /* 16-bit register value */
+       SK_U16          IntMask;        /* MAC interrupt mask */
+       SK_U16          SWord;
+
+       pPrt = &pAC->GIni.GP[Port];
+
+       if (!pPrt->PHWLinkUp) {
+               /* The Hardware link is NOT up */
+               return(0);
+       }
+
+       if ((pPrt->PLinkMode == SK_LMODE_AUTOHALF ||
+            pPrt->PLinkMode == SK_LMODE_AUTOFULL ||
+            pPrt->PLinkMode == SK_LMODE_AUTOBOTH) &&
+            pPrt->PAutoNegFail) {
+               /* Auto-negotiation is not done or failed */
+               return(0);
+       }
+
+       if (pAC->GIni.GIGenesis) {
+               /* set Duplex Mode and Pause Mode */
+               SkXmInitDupMd(pAC, IoC, Port);
+
+               SkXmInitPauseMd(pAC, IoC, Port);
+
+               /*
+                * Initialize the Interrupt Mask Register. Default IRQs are...
+                *      - Link Asynchronous Event
+                *      - Link Partner requests config
+                *      - Auto Negotiation Done
+                *      - Rx Counter Event Overflow
+                *      - Tx Counter Event Overflow
+                *      - Transmit FIFO Underrun
+                */
+               IntMask = XM_DEF_MSK;
+
+#ifdef DEBUG
+               /* add IRQ for Receive FIFO Overflow */
+               IntMask &= ~XM_IS_RXF_OV;
+#endif /* DEBUG */
+
+               if (pPrt->PhyType != SK_PHY_XMAC) {
+                       /* disable GP0 interrupt bit */
+                       IntMask |= XM_IS_INP_ASS;
+               }
+               XM_OUT16(IoC, Port, XM_IMSK, IntMask);
+
+               /* get MMU Command Reg. */
+               XM_IN16(IoC, Port, XM_MMU_CMD, &Reg);
+
+               if (pPrt->PhyType != SK_PHY_XMAC &&
+                       (pPrt->PLinkModeStatus == SK_LMODE_STAT_FULL ||
+                        pPrt->PLinkModeStatus == SK_LMODE_STAT_AUTOFULL)) {
+                       /* set to Full Duplex */
+                       Reg |= XM_MMU_GMII_FD;
+               }
+
+               switch (pPrt->PhyType) {
+               case SK_PHY_BCOM:
+                       /*
+                        * Workaround BCOM Errata (#10523) for all BCom Phys
+                        * Enable Power Management after link up
+                        */
+                       SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_AUX_CTRL, &SWord);
+                       SkXmPhyWrite(pAC, IoC, Port, PHY_BCOM_AUX_CTRL,
+                               (SK_U16)(SWord & ~PHY_B_AC_DIS_PM));
+                       SkXmPhyWrite(pAC, IoC, Port, PHY_BCOM_INT_MASK, PHY_B_DEF_MSK);
+                       break;
+#ifdef OTHER_PHY
+               case SK_PHY_LONE:
+                       SkXmPhyWrite(pAC, IoC, Port, PHY_LONE_INT_ENAB, PHY_L_DEF_MSK);
+                       break;
+               case SK_PHY_NAT:
+                       /* todo National:
+                       SkXmPhyWrite(pAC, IoC, Port, PHY_NAT_INT_MASK, PHY_N_DEF_MSK); */
+                       /* no interrupts possible from National ??? */
+                       break;
+#endif /* OTHER_PHY */
+               }
+
+               /* enable Rx/Tx */
+               XM_OUT16(IoC, Port, XM_MMU_CMD, Reg | XM_MMU_ENA_RX | XM_MMU_ENA_TX);
+       }
+       else {
+               /*
+                * Initialize the Interrupt Mask Register. Default IRQs are...
+                *      - Rx Counter Event Overflow
+                *      - Tx Counter Event Overflow
+                *      - Transmit FIFO Underrun
+                */
+               IntMask = GMAC_DEF_MSK;
+
+#ifdef DEBUG
+               /* add IRQ for Receive FIFO Overrun */
+               IntMask |= GM_IS_RX_FF_OR;
+#endif /* DEBUG */
+
+               SK_OUT8(IoC, GMAC_IRQ_MSK, (SK_U8)IntMask);
+
+               /* get General Purpose Control */
+               GM_IN16(IoC, Port, GM_GP_CTRL, &Reg);
+
+               if (pPrt->PLinkModeStatus == SK_LMODE_STAT_FULL ||
+                       pPrt->PLinkModeStatus == SK_LMODE_STAT_AUTOFULL) {
+                       /* set to Full Duplex */
+                       Reg |= GM_GPCR_DUP_FULL;
+               }
+
+               /* enable Rx/Tx */
+               GM_OUT16(IoC, Port, GM_GP_CTRL, Reg | GM_GPCR_RX_ENA | GM_GPCR_TX_ENA);
+
+#ifndef VCPU
+               /* Enable all PHY interrupts */
+               SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_INT_MASK, PHY_M_DEF_MSK);
+#endif /* VCPU */
+       }
+
+       return(0);
+
+}      /* SkMacRxTxEnable */
+
+
+/******************************************************************************
+ *
+ *     SkMacRxTxDisable() - Disable Receiver and Transmitter
+ *
+ * Description:        disables Rx/Tx dep. on board type
+ *
+ * Returns: N/A
+ */
+void SkMacRxTxDisable(
+SK_AC  *pAC,           /* Adapter Context */
+SK_IOC IoC,            /* IO context */
+int            Port)           /* Port Index (MAC_1 + n) */
+{
+       SK_U16  Word;
+
+       if (pAC->GIni.GIGenesis) {
+
+               XM_IN16(IoC, Port, XM_MMU_CMD, &Word);
+
+               XM_OUT16(IoC, Port, XM_MMU_CMD, Word & ~(XM_MMU_ENA_RX | XM_MMU_ENA_TX));
+
+               /* dummy read to ensure writing */
+               XM_IN16(IoC, Port, XM_MMU_CMD, &Word);
+       }
+       else {
+
+               GM_IN16(IoC, Port, GM_GP_CTRL, &Word);
+
+               GM_OUT16(IoC, Port, GM_GP_CTRL, Word & ~(GM_GPCR_RX_ENA | GM_GPCR_TX_ENA));
+
+               /* dummy read to ensure writing */
+               GM_IN16(IoC, Port, GM_GP_CTRL, &Word);
+       }
+}      /* SkMacRxTxDisable */
+
+
+/******************************************************************************
+ *
+ *     SkMacIrqDisable() - Disable IRQ from MAC
+ *
+ * Description:        sets the IRQ-mask to disable IRQ dep. on board type
+ *
+ * Returns: N/A
+ */
+void SkMacIrqDisable(
+SK_AC  *pAC,           /* Adapter Context */
+SK_IOC IoC,            /* IO context */
+int            Port)           /* Port Index (MAC_1 + n) */
+{
+       SK_GEPORT       *pPrt;
+       SK_U16          Word;
+
+       pPrt = &pAC->GIni.GP[Port];
+
+       if (pAC->GIni.GIGenesis) {
+
+               /* disable all XMAC IRQs */
+               XM_OUT16(IoC, Port, XM_IMSK, 0xffff);
+
+               /* Disable all PHY interrupts */
+               switch (pPrt->PhyType) {
+                       case SK_PHY_BCOM:
+                               /* Make sure that PHY is initialized */
+                               if (pPrt->PState != SK_PRT_RESET) {
+                                       /* NOT allowed if BCOM is in RESET state */
+                                       /* Workaround BCOM Errata (#10523) all BCom */
+                                       /* Disable Power Management if link is down */
+                                       SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_AUX_CTRL, &Word);
+                                       SkXmPhyWrite(pAC, IoC, Port, PHY_BCOM_AUX_CTRL,
+                                               (SK_U16)(Word | PHY_B_AC_DIS_PM));
+                                       SkXmPhyWrite(pAC, IoC, Port, PHY_BCOM_INT_MASK, 0xffff);
+                               }
+                               break;
+#ifdef OTHER_PHY
+                       case SK_PHY_LONE:
+                               SkXmPhyWrite(pAC, IoC, Port, PHY_LONE_INT_ENAB, 0);
+                               break;
+                       case SK_PHY_NAT:
+                               /* todo: National
+                               SkXmPhyWrite(pAC, IoC, Port, PHY_NAT_INT_MASK, 0xffff); */
+                               break;
+#endif /* OTHER_PHY */
+               }
+       }
+       else {
+               /* disable all GMAC IRQs */
+               SK_OUT8(IoC, GMAC_IRQ_MSK, 0);
+
+#ifndef VCPU
+               /* Disable all PHY interrupts */
+               SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_INT_MASK, 0);
+#endif /* VCPU */
+       }
+}      /* SkMacIrqDisable */
+
+
+#ifdef SK_DIAG
+/******************************************************************************
+ *
+ *     SkXmSendCont() - Enable / Disable Send Continuous Mode
+ *
+ * Description:        enable / disable Send Continuous Mode on XMAC
+ *
+ * Returns:
+ *     nothing
+ */
+void SkXmSendCont(
+SK_AC  *pAC,   /* adapter context */
+SK_IOC IoC,    /* IO context */
+int            Port,   /* Port Index (MAC_1 + n) */
+SK_BOOL        Enable) /* Enable / Disable */
+{
+       SK_U32  MdReg;
+
+       XM_IN32(IoC, Port, XM_MODE, &MdReg);
+
+       if (Enable) {
+               MdReg |= XM_MD_TX_CONT;
+       }
+       else {
+               MdReg &= ~XM_MD_TX_CONT;
+       }
+       /* setup Mode Register */
+       XM_OUT32(IoC, Port, XM_MODE, MdReg);
+
+}      /* SkXmSendCont*/
+
+/******************************************************************************
+ *
+ *     SkMacTimeStamp() - Enable / Disable Time Stamp
+ *
+ * Description:        enable / disable Time Stamp generation for Rx packets
+ *
+ * Returns:
+ *     nothing
+ */
+void SkMacTimeStamp(
+SK_AC  *pAC,   /* adapter context */
+SK_IOC IoC,    /* IO context */
+int            Port,   /* Port Index (MAC_1 + n) */
+SK_BOOL        Enable) /* Enable / Disable */
+{
+       SK_U32  MdReg;
+       SK_U8   TimeCtrl;
+
+       if (pAC->GIni.GIGenesis) {
+
+               XM_IN32(IoC, Port, XM_MODE, &MdReg);
+
+               if (Enable) {
+                       MdReg |= XM_MD_ATS;
+               }
+               else {
+                       MdReg &= ~XM_MD_ATS;
+               }
+               /* setup Mode Register */
+               XM_OUT32(IoC, Port, XM_MODE, MdReg);
+       }
+       else {
+               if (Enable) {
+                       TimeCtrl = GMT_ST_START | GMT_ST_CLR_IRQ;
+               }
+               else {
+                       TimeCtrl = GMT_ST_STOP | GMT_ST_CLR_IRQ;
+               }
+               /* Start/Stop Time Stamp Timer */
+               SK_OUT8(pAC, GMAC_TI_ST_CTRL, TimeCtrl);
+       }
+}      /* SkMacTimeStamp*/
+
+#else /* SK_DIAG */
+
+/******************************************************************************
+ *
+ *     SkXmIrq() - Interrupt Service Routine
+ *
+ * Description:        services an Interrupt Request of the XMAC
+ *
+ * Note:
+ *     With an external PHY, some interrupt bits are not meaningfull any more:
+ *     - LinkAsyncEvent (bit #14)              XM_IS_LNK_AE
+ *     - LinkPartnerReqConfig (bit #10)        XM_IS_LIPA_RC
+ *     - Page Received (bit #9)                XM_IS_RX_PAGE
+ *     - NextPageLoadedForXmt (bit #8)         XM_IS_TX_PAGE
+ *     - AutoNegDone (bit #7)                  XM_IS_AND
+ *     Also probably not valid any more is the GP0 input bit:
+ *     - GPRegisterBit0set                     XM_IS_INP_ASS
+ *
+ * Returns:
+ *     nothing
+ */
+void SkXmIrq(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* IO context */
+int            Port)           /* Port Index (MAC_1 + n) */
+{
+       SK_GEPORT       *pPrt;
+       SK_EVPARA       Para;
+       SK_U16          IStatus;        /* Interrupt status read from the XMAC */
+       SK_U16          IStatus2;
+
+       pPrt = &pAC->GIni.GP[Port];
+
+       XM_IN16(IoC, Port, XM_ISRC, &IStatus);
+
+       /* LinkPartner Auto-negable? */
+       if (pPrt->PhyType == SK_PHY_XMAC) {
+               SkXmAutoNegLipaXmac(pAC, IoC, Port, IStatus);
+       }
+       else {
+               /* mask bits that are not used with ext. PHY */
+               IStatus &= ~(XM_IS_LNK_AE | XM_IS_LIPA_RC |
+                       XM_IS_RX_PAGE | XM_IS_TX_PAGE |
+                       XM_IS_AND | XM_IS_INP_ASS);
+       }
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ,
+               ("XmacIrq Port %d Isr 0x%04x\n", Port, IStatus));
+
+       if (!pPrt->PHWLinkUp) {
+               /* Spurious XMAC interrupt */
+               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ,
+                       ("SkXmIrq: spurious interrupt on Port %d\n", Port));
+               return;
+       }
+
+       if ((IStatus & XM_IS_INP_ASS) != 0) {
+               /* Reread ISR Register if link is not in sync */
+               XM_IN16(IoC, Port, XM_ISRC, &IStatus2);
+
+               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ,
+                       ("SkXmIrq: Link async. Double check Port %d 0x%04x 0x%04x\n",
+                        Port, IStatus, IStatus2));
+               IStatus &= ~XM_IS_INP_ASS;
+               IStatus |= IStatus2;
+       }
+
+       if ((IStatus & XM_IS_LNK_AE) != 0) {
+               /* not used, GP0 is used instead */
+       }
+
+       if ((IStatus & XM_IS_TX_ABORT) != 0) {
+               /* not used */
+       }
+
+       if ((IStatus & XM_IS_FRC_INT) != 0) {
+               /* not used, use ASIC IRQ instead if needed */
+       }
+
+       if ((IStatus & (XM_IS_INP_ASS | XM_IS_LIPA_RC | XM_IS_RX_PAGE)) != 0) {
+               SkHWLinkDown(pAC, IoC, Port);
+
+               /* Signal to RLMT */
+               Para.Para32[0] = (SK_U32)Port;
+               SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_LINK_DOWN, Para);
+
+               /* Start workaround Errata #2 timer */
+               SkTimerStart(pAC, IoC, &pPrt->PWaTimer, SK_WA_INA_TIME,
+                       SKGE_HWAC, SK_HWEV_WATIM, Para);
+       }
+
+       if ((IStatus & XM_IS_RX_PAGE) != 0) {
+               /* not used */
+       }
+
+       if ((IStatus & XM_IS_TX_PAGE) != 0) {
+               /* not used */
+       }
+
+       if ((IStatus & XM_IS_AND) != 0) {
+               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ,
+                       ("SkXmIrq: AND on link that is up Port %d\n", Port));
+       }
+
+       if ((IStatus & XM_IS_TSC_OV) != 0) {
+               /* not used */
+       }
+
+       /* Combined Tx & Rx Counter Overflow SIRQ Event */
+       if ((IStatus & (XM_IS_RXC_OV | XM_IS_TXC_OV)) != 0) {
+               Para.Para32[0] = (SK_U32)Port;
+               Para.Para32[1] = (SK_U32)IStatus;
+               SkPnmiEvent(pAC, IoC, SK_PNMI_EVT_SIRQ_OVERFLOW, Para);
+       }
+
+       if ((IStatus & XM_IS_RXF_OV) != 0) {
+               /* normal situation -> no effect */
+#ifdef DEBUG
+               pPrt->PRxOverCnt++;
+#endif /* DEBUG */
+       }
+
+       if ((IStatus & XM_IS_TXF_UR) != 0) {
+               /* may NOT happen -> error log */
+               SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E020, SKERR_SIRQ_E020MSG);
+       }
+
+       if ((IStatus & XM_IS_TX_COMP) != 0) {
+               /* not served here */
+       }
+
+       if ((IStatus & XM_IS_RX_COMP) != 0) {
+               /* not served here */
+       }
+}      /* SkXmIrq */
+
+
+/******************************************************************************
+ *
+ *     SkGmIrq() - Interrupt Service Routine
+ *
+ * Description:        services an Interrupt Request of the GMAC
+ *
+ * Note:
+ *
+ * Returns:
+ *     nothing
+ */
+void SkGmIrq(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* IO context */
+int            Port)           /* Port Index (MAC_1 + n) */
+{
+       SK_GEPORT       *pPrt;
+       SK_EVPARA       Para;
+       SK_U8           IStatus;        /* Interrupt status */
+
+       pPrt = &pAC->GIni.GP[Port];
+
+       SK_IN8(IoC, GMAC_IRQ_SRC, &IStatus);
+
+       /* LinkPartner Auto-negable? */
+       SkMacAutoNegLipaPhy(pAC, IoC, Port, IStatus);
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ,
+               ("GmacIrq Port %d Isr 0x%04x\n", Port, IStatus));
+
+       /* Combined Tx & Rx Counter Overflow SIRQ Event */
+       if (IStatus & (GM_IS_RX_CO_OV | GM_IS_TX_CO_OV)) {
+               /* these IRQs will be cleared by reading GMACs register */
+               Para.Para32[0] = (SK_U32)Port;
+               Para.Para32[1] = (SK_U32)IStatus;
+               SkPnmiEvent(pAC, IoC, SK_PNMI_EVT_SIRQ_OVERFLOW, Para);
+       }
+
+       if (IStatus & GM_IS_RX_FF_OR) {
+               /* clear GMAC Rx FIFO Overrun IRQ */
+               SK_OUT8(IoC, MR_ADDR(Port, RX_GMF_CTRL_T), (SK_U8)GMF_CLI_RX_FO);
+#ifdef DEBUG
+               pPrt->PRxOverCnt++;
+#endif /* DEBUG */
+       }
+
+       if (IStatus & GM_IS_TX_FF_UR) {
+               /* clear GMAC Tx FIFO Underrun IRQ */
+               SK_OUT8(IoC, MR_ADDR(Port, TX_GMF_CTRL_T), (SK_U8)GMF_CLI_TX_FU);
+               /* may NOT happen -> error log */
+               SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E020, SKERR_SIRQ_E020MSG);
+       }
+
+       if (IStatus & GM_IS_TX_COMPL) {
+               /* not served here */
+       }
+
+       if (IStatus & GM_IS_RX_COMPL) {
+               /* not served here */
+       }
+}      /* SkGmIrq */
+
+/******************************************************************************
+ *
+ *     SkMacIrq() - Interrupt Service Routine for MAC
+ *
+ * Description:        calls the Interrupt Service Routine dep. on board type
+ *
+ * Returns:
+ *     nothing
+ */
+void SkMacIrq(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* IO context */
+int            Port)           /* Port Index (MAC_1 + n) */
+{
+
+       if (pAC->GIni.GIGenesis) {
+               /* IRQ from XMAC */
+               SkXmIrq(pAC, IoC, Port);
+       }
+       else {
+               /* IRQ from GMAC */
+               SkGmIrq(pAC, IoC, Port);
+       }
+}      /* SkMacIrq */
+
+#endif /* !SK_DIAG */
+
+/******************************************************************************
+ *
+ *     SkXmUpdateStats() - Force the XMAC to output the current statistic
+ *
+ * Description:
+ *     The XMAC holds its statistic internally. To obtain the current
+ *     values a command must be sent so that the statistic data will
+ *     be written to a predefined memory area on the adapter.
+ *
+ * Returns:
+ *     0:  success
+ *     1:  something went wrong
+ */
+int SkXmUpdateStats(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* IO context */
+unsigned int Port)     /* Port Index (MAC_1 + n) */
+{
+       SK_GEPORT       *pPrt;
+       SK_U16          StatReg;
+       int                     WaitIndex;
+
+       pPrt = &pAC->GIni.GP[Port];
+       WaitIndex = 0;
+
+       /* Send an update command to XMAC specified */
+       XM_OUT16(IoC, Port, XM_STAT_CMD, XM_SC_SNP_TXC | XM_SC_SNP_RXC);
+
+       /*
+        * It is an auto-clearing register. If the command bits
+        * went to zero again, the statistics are transferred.
+        * Normally the command should be executed immediately.
+        * But just to be sure we execute a loop.
+        */
+       do {
+
+               XM_IN16(IoC, Port, XM_STAT_CMD, &StatReg);
+
+               if (++WaitIndex > 10) {
+
+                       SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_HWI_E021, SKERR_HWI_E021MSG);
+
+                       return(1);
+               }
+       } while ((StatReg & (XM_SC_SNP_TXC | XM_SC_SNP_RXC)) != 0);
+
+       return(0);
+}      /* SkXmUpdateStats */
+
+/******************************************************************************
+ *
+ *     SkGmUpdateStats() - Force the GMAC to output the current statistic
+ *
+ * Description:
+ *     Empty function for GMAC. Statistic data is accessible in direct way.
+ *
+ * Returns:
+ *     0:  success
+ *     1:  something went wrong
+ */
+int SkGmUpdateStats(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* IO context */
+unsigned int Port)     /* Port Index (MAC_1 + n) */
+{
+       return(0);
+}
+
+/******************************************************************************
+ *
+ *     SkXmMacStatistic() - Get XMAC counter value
+ *
+ * Description:
+ *     Gets the 32bit counter value. Except for the octet counters
+ *     the lower 32bit are counted in hardware and the upper 32bit
+ *     must be counted in software by monitoring counter overflow interrupts.
+ *
+ * Returns:
+ *     0:  success
+ *     1:  something went wrong
+ */
+int SkXmMacStatistic(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* IO context */
+unsigned int Port,     /* Port Index (MAC_1 + n) */
+SK_U16 StatAddr,       /* MIB counter base address */
+SK_U32 *pVal)          /* ptr to return statistic value */
+{
+       if ((StatAddr < XM_TXF_OK) || (StatAddr > XM_RXF_MAX_SZ)) {
+
+               SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E022, SKERR_HWI_E022MSG);
+
+               return(1);
+       }
+
+       XM_IN32(IoC, Port, StatAddr, pVal);
+
+       return(0);
+}      /* SkXmMacStatistic */
+
+/******************************************************************************
+ *
+ *     SkGmMacStatistic() - Get GMAC counter value
+ *
+ * Description:
+ *     Gets the 32bit counter value. Except for the octet counters
+ *     the lower 32bit are counted in hardware and the upper 32bit
+ *     must be counted in software by monitoring counter overflow interrupts.
+ *
+ * Returns:
+ *     0:  success
+ *     1:  something went wrong
+ */
+int SkGmMacStatistic(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* IO context */
+unsigned int Port,     /* Port Index (MAC_1 + n) */
+SK_U16 StatAddr,       /* MIB counter base address */
+SK_U32 *pVal)          /* ptr to return statistic value */
+{
+
+       if ((StatAddr < GM_RXF_UC_OK) || (StatAddr > GM_TXE_FIFO_UR)) {
+
+               SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E022, SKERR_HWI_E022MSG);
+
+               SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+                       ("SkGmMacStat: wrong MIB counter 0x%04X\n", StatAddr));
+               return(1);
+       }
+
+       GM_IN32(IoC, Port, StatAddr, pVal);
+
+       return(0);
+}      /* SkGmMacStatistic */
+
+/******************************************************************************
+ *
+ *     SkXmResetCounter() - Clear MAC statistic counter
+ *
+ * Description:
+ *     Force the XMAC to clear its statistic counter.
+ *
+ * Returns:
+ *     0:  success
+ *     1:  something went wrong
+ */
+int SkXmResetCounter(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* IO context */
+unsigned int Port)     /* Port Index (MAC_1 + n) */
+{
+       XM_OUT16(IoC, Port, XM_STAT_CMD, XM_SC_CLR_RXC | XM_SC_CLR_TXC);
+       /* Clear two times according to Errata #3 */
+       XM_OUT16(IoC, Port, XM_STAT_CMD, XM_SC_CLR_RXC | XM_SC_CLR_TXC);
+
+       return(0);
+}      /* SkXmResetCounter */
+
+/******************************************************************************
+ *
+ *     SkGmResetCounter() - Clear MAC statistic counter
+ *
+ * Description:
+ *     Force GMAC to clear its statistic counter.
+ *
+ * Returns:
+ *     0:  success
+ *     1:  something went wrong
+ */
+int SkGmResetCounter(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* IO context */
+unsigned int Port)     /* Port Index (MAC_1 + n) */
+{
+       SK_U16  Reg;    /* Phy Address Register */
+       SK_U16  Word;
+       int             i;
+
+       GM_IN16(IoC, Port, GM_PHY_ADDR, &Reg);
+
+#ifndef VCPU
+       /* set MIB Clear Counter Mode */
+       GM_OUT16(IoC, Port, GM_PHY_ADDR, Reg | GM_PAR_MIB_CLR);
+
+       /* read all MIB Counters with Clear Mode set */
+       for (i = 0; i < GM_MIB_CNT_SIZE; i++) {
+               /* the reset is performed only when the lower 16 bits are read */
+               GM_IN16(IoC, Port, GM_MIB_CNT_BASE + 8*i, &Word);
+       }
+
+       /* clear MIB Clear Counter Mode */
+       GM_OUT16(IoC, Port, GM_PHY_ADDR, Reg);
+#endif /* !VCPU */
+
+       return(0);
+}      /* SkGmResetCounter */
+
+/******************************************************************************
+ *
+ *     SkXmOverflowStatus() - Gets the status of counter overflow interrupt
+ *
+ * Description:
+ *     Checks the source causing an counter overflow interrupt. On success the
+ *     resulting counter overflow status is written to <pStatus>, whereas the
+ *     upper dword stores the XMAC ReceiveCounterEvent register and the lower
+ *     dword the XMAC TransmitCounterEvent register.
+ *
+ * Note:
+ *     For XMAC the interrupt source is a self-clearing register, so the source
+ *     must be checked only once. SIRQ module does another check to be sure
+ *     that no interrupt get lost during process time.
+ *
+ * Returns:
+ *     0:  success
+ *     1:  something went wrong
+ */
+int SkXmOverflowStatus(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* IO context */
+unsigned int Port,     /* Port Index (MAC_1 + n) */
+SK_U16  IStatus,       /* Interupt Status from MAC */
+SK_U64 *pStatus)       /* ptr for return overflow status value */
+{
+       SK_U64  Status; /* Overflow status */
+       SK_U32  RegVal;
+
+       Status = 0;
+
+       if ((IStatus & XM_IS_RXC_OV) != 0) {
+
+               XM_IN32(IoC, Port, XM_RX_CNT_EV, &RegVal);
+               Status |= (SK_U64)RegVal << 32;
+       }
+
+       if ((IStatus & XM_IS_TXC_OV) != 0) {
+
+               XM_IN32(IoC, Port, XM_TX_CNT_EV, &RegVal);
+               Status |= (SK_U64)RegVal;
+       }
+
+       *pStatus = Status;
+
+       return(0);
+}      /* SkXmOverflowStatus */
+
+
+/******************************************************************************
+ *
+ *     SkGmOverflowStatus() - Gets the status of counter overflow interrupt
+ *
+ * Description:
+ *     Checks the source causing an counter overflow interrupt. On success the
+ *     resulting counter overflow status is written to <pStatus>, whereas the
+ *     the following bit coding is used:
+ *     63:56 - unused
+ *     55:48 - TxRx interrupt register bit7:0
+ *     32:47 - Rx interrupt register
+ *     31:24 - unused
+ *     23:16 - TxRx interrupt register bit15:8
+ *     15:0  - Tx interrupt register
+ *
+ * Returns:
+ *     0:  success
+ *     1:  something went wrong
+ */
+int SkGmOverflowStatus(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* IO context */
+unsigned int Port,     /* Port Index (MAC_1 + n) */
+SK_U16  IStatus,       /* Interupt Status from MAC */
+SK_U64 *pStatus)       /* ptr for return overflow status value */
+{
+       SK_U64  Status;         /* Overflow status */
+       SK_U16  RegVal;
+
+       Status = 0;
+
+       if ((IStatus & GM_IS_RX_CO_OV) != 0) {
+               /* this register is self-clearing after read */
+               GM_IN16(IoC, Port, GM_RX_IRQ_SRC, &RegVal);
+               Status |= (SK_U64)RegVal << 32;
+       }
+
+       if ((IStatus & GM_IS_TX_CO_OV) != 0) {
+               /* this register is self-clearing after read */
+               GM_IN16(IoC, Port, GM_TX_IRQ_SRC, &RegVal);
+               Status |= (SK_U64)RegVal;
+       }
+
+       /* this register is self-clearing after read */
+       GM_IN16(IoC, Port, GM_TR_IRQ_SRC, &RegVal);
+       /* Rx overflow interrupt register bits (LoByte)*/
+       Status |= (SK_U64)((SK_U8)RegVal) << 48;
+       /* Tx overflow interrupt register bits (HiByte)*/
+       Status |= (SK_U64)(RegVal >> 8) << 16;
+
+       *pStatus = Status;
+
+       return(0);
+}      /* SkGmOverflowStatus */
+
+/******************************************************************************
+ *
+ *     SkGmCableDiagStatus() - Starts / Gets status of cable diagnostic test
+ *
+ * Description:
+ *  starts the cable diagnostic test if 'StartTest' is true
+ *  gets the results if 'StartTest' is true
+ *
+ * NOTE:       this test is meaningful only when link is down
+ *
+ * Returns:
+ *     0:  success
+ *     1:      no YUKON copper
+ *     2:      test in progress
+ */
+int SkGmCableDiagStatus(
+SK_AC  *pAC,           /* adapter context */
+SK_IOC IoC,            /* IO context */
+int            Port,           /* Port Index (MAC_1 + n) */
+SK_BOOL        StartTest)      /* flag for start / get result */
+{
+       int             i;
+       SK_U16  RegVal;
+       SK_GEPORT       *pPrt;
+
+       pPrt = &pAC->GIni.GP[Port];
+
+       if (pPrt->PhyType != SK_PHY_MARV_COPPER) {
+
+               return(1);
+       }
+
+       if (StartTest) {
+               /* only start the cable test */
+               if ((pPrt->PhyId1 & PHY_I1_REV_MSK) < 4) {
+                       /* apply TDR workaround from Marvell */
+                       SkGmPhyWrite(pAC, IoC, Port, 29, 0x001e);
+
+                       SkGmPhyWrite(pAC, IoC, Port, 30, 0xcc00);
+                       SkGmPhyWrite(pAC, IoC, Port, 30, 0xc800);
+                       SkGmPhyWrite(pAC, IoC, Port, 30, 0xc400);
+                       SkGmPhyWrite(pAC, IoC, Port, 30, 0xc000);
+                       SkGmPhyWrite(pAC, IoC, Port, 30, 0xc100);
+               }
+
+               /* set address to 0 for MDI[0] */
+               SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_EXT_ADR, 0);
+
+               /* Read Cable Diagnostic Reg */
+               SkGmPhyRead(pAC, IoC, Port, PHY_MARV_CABLE_DIAG, &RegVal);
+
+               /* start Cable Diagnostic Test */
+               SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_CABLE_DIAG,
+                       (SK_U16)(RegVal | PHY_M_CABD_ENA_TEST));
+
+               return(0);
+       }
+
+       /* Read Cable Diagnostic Reg */
+       SkGmPhyRead(pAC, IoC, Port, PHY_MARV_CABLE_DIAG, &RegVal);
+
+       SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL,
+               ("PHY Cable Diag.=0x%04X\n", RegVal));
+
+       if ((RegVal & PHY_M_CABD_ENA_TEST) != 0) {
+               /* test is running */
+               return(2);
+       }
+
+       /* get the test results */
+       for (i = 0; i < 4; i++)  {
+               /* set address to i for MDI[i] */
+               SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_EXT_ADR, (SK_U16)i);
+
+               /* get Cable Diagnostic values */
+               SkGmPhyRead(pAC, IoC, Port, PHY_MARV_CABLE_DIAG, &RegVal);
+
+               pPrt->PMdiPairLen[i] = (SK_U8)(RegVal & PHY_M_CABD_DIST_MSK);
+
+               pPrt->PMdiPairSts[i] = (SK_U8)((RegVal & PHY_M_CABD_STAT_MSK) >> 13);
+       }
+
+       return(0);
+}      /* SkGmCableDiagStatus */
+
+/* End of file */
diff -Naur u-boot-2009.03_orig/drivers/pci/CVS/Entries u-boot-2009.03/drivers/pci/CVS/Entries
--- u-boot-2009.03_orig/drivers/pci/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/pci/CVS/Entries      2009-03-25 15:58:03.246750400 -0700
@@ -0,0 +1,12 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fsl_pci_init.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci_auto.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci_indirect.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci_ixp.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci_sh4.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci_sh7751.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci_sh7780.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tsi108_pci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/w83c553f.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/drivers/pci/CVS/Entries.Extra u-boot-2009.03/drivers/pci/CVS/Entries.Extra
--- u-boot-2009.03_orig/drivers/pci/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/pci/CVS/Entries.Extra        2009-03-25 15:58:03.246750400 -0700
@@ -0,0 +1,11 @@
+/Makefile///1238019730/
+/fsl_pci_init.c///1238019730/
+/pci.c///1238019730/
+/pci_auto.c///1238019730/
+/pci_indirect.c///1238019730/
+/pci_ixp.c///1238019730/
+/pci_sh4.c///1238019730/
+/pci_sh7751.c///1238019730/
+/pci_sh7780.c///1238019730/
+/tsi108_pci.c///1238019730/
+/w83c553f.c///1238019730/
diff -Naur u-boot-2009.03_orig/drivers/pci/CVS/Entries.Extra.Old u-boot-2009.03/drivers/pci/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/drivers/pci/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/pci/CVS/Entries.Extra.Old    2009-03-25 15:25:31.000000000 -0700
@@ -0,0 +1,11 @@
+/Makefile///1238019730/
+/fsl_pci_init.c///1238019730/
+/pci.c///1238019730/
+/pci_auto.c///1238019730/
+/pci_indirect.c///1238019730/
+/pci_ixp.c///1238019730/
+/pci_sh4.c///1238019730/
+/pci_sh7751.c///1238019730/
+/pci_sh7780.c///1238019730/
+/tsi108_pci.c///1238019730/
+/w83c553f.c///1238019730/
diff -Naur u-boot-2009.03_orig/drivers/pci/CVS/Entries.Old u-boot-2009.03/drivers/pci/CVS/Entries.Old
--- u-boot-2009.03_orig/drivers/pci/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/pci/CVS/Entries.Old  2009-03-25 15:25:31.000000000 -0700
@@ -0,0 +1,12 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/fsl_pci_init.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/pci.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/pci_auto.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/pci_indirect.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/pci_ixp.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/pci_sh4.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/pci_sh7751.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/pci_sh7780.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/tsi108_pci.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/w83c553f.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+D
diff -Naur u-boot-2009.03_orig/drivers/pci/CVS/Repository u-boot-2009.03/drivers/pci/CVS/Repository
--- u-boot-2009.03_orig/drivers/pci/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/pci/CVS/Repository   2009-03-25 15:25:31.806114700 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/drivers/pci
diff -Naur u-boot-2009.03_orig/drivers/pci/CVS/Root u-boot-2009.03/drivers/pci/CVS/Root
--- u-boot-2009.03_orig/drivers/pci/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/pci/CVS/Root 2009-03-25 15:25:31.790489800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/drivers/pcmcia/CVS/Entries u-boot-2009.03/drivers/pcmcia/CVS/Entries
--- u-boot-2009.03_orig/drivers/pcmcia/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/pcmcia/CVS/Entries   2009-03-25 15:58:03.340499800 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/i82365.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/marubun_pcmcia.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc8xx_pcmcia.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pxa_pcmcia.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/rpx_pcmcia.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ti_pci1410a.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tqm8xx_pcmcia.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/drivers/pcmcia/CVS/Entries.Extra u-boot-2009.03/drivers/pcmcia/CVS/Entries.Extra
--- u-boot-2009.03_orig/drivers/pcmcia/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/pcmcia/CVS/Entries.Extra     2009-03-25 15:58:03.356124700 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019730/
+/i82365.c///1238019730/
+/marubun_pcmcia.c///1238019730/
+/mpc8xx_pcmcia.c///1238019730/
+/pxa_pcmcia.c///1238019730/
+/rpx_pcmcia.c///1238019730/
+/ti_pci1410a.c///1238019730/
+/tqm8xx_pcmcia.c///1238019730/
diff -Naur u-boot-2009.03_orig/drivers/pcmcia/CVS/Entries.Extra.Old u-boot-2009.03/drivers/pcmcia/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/drivers/pcmcia/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/pcmcia/CVS/Entries.Extra.Old 2009-03-25 15:25:32.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019730/
+/i82365.c///1238019730/
+/marubun_pcmcia.c///1238019730/
+/mpc8xx_pcmcia.c///1238019730/
+/pxa_pcmcia.c///1238019730/
+/rpx_pcmcia.c///1238019730/
+/ti_pci1410a.c///1238019730/
+/tqm8xx_pcmcia.c///1238019730/
diff -Naur u-boot-2009.03_orig/drivers/pcmcia/CVS/Entries.Old u-boot-2009.03/drivers/pcmcia/CVS/Entries.Old
--- u-boot-2009.03_orig/drivers/pcmcia/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/pcmcia/CVS/Entries.Old       2009-03-25 15:25:32.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/i82365.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/marubun_pcmcia.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/mpc8xx_pcmcia.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/pxa_pcmcia.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/rpx_pcmcia.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/ti_pci1410a.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/tqm8xx_pcmcia.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+D
diff -Naur u-boot-2009.03_orig/drivers/pcmcia/CVS/Repository u-boot-2009.03/drivers/pcmcia/CVS/Repository
--- u-boot-2009.03_orig/drivers/pcmcia/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/pcmcia/CVS/Repository        2009-03-25 15:25:31.977988600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/drivers/pcmcia
diff -Naur u-boot-2009.03_orig/drivers/pcmcia/CVS/Root u-boot-2009.03/drivers/pcmcia/CVS/Root
--- u-boot-2009.03_orig/drivers/pcmcia/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/pcmcia/CVS/Root      2009-03-25 15:25:31.977988600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/drivers/qe/CVS/Entries u-boot-2009.03/drivers/qe/CVS/Entries
--- u-boot-2009.03_orig/drivers/qe/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/qe/CVS/Entries       2009-03-25 15:58:03.449874100 -0700
@@ -0,0 +1,11 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fdt.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/qe.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/qe.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/uccf.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/uccf.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/uec.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/uec.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/uec_phy.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/uec_phy.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/drivers/qe/CVS/Entries.Extra u-boot-2009.03/drivers/qe/CVS/Entries.Extra
--- u-boot-2009.03_orig/drivers/qe/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/qe/CVS/Entries.Extra 2009-03-25 15:58:03.449874100 -0700
@@ -0,0 +1,10 @@
+/Makefile///1238019730/
+/fdt.c///1238019730/
+/qe.c///1238019730/
+/qe.h///1238019730/
+/uccf.c///1238019730/
+/uccf.h///1238019730/
+/uec.c///1238019730/
+/uec.h///1238019730/
+/uec_phy.c///1238019730/
+/uec_phy.h///1238019730/
diff -Naur u-boot-2009.03_orig/drivers/qe/CVS/Entries.Extra.Old u-boot-2009.03/drivers/qe/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/drivers/qe/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/qe/CVS/Entries.Extra.Old     2009-03-25 15:25:32.000000000 -0700
@@ -0,0 +1,10 @@
+/Makefile///1238019730/
+/fdt.c///1238019730/
+/qe.c///1238019730/
+/qe.h///1238019730/
+/uccf.c///1238019730/
+/uccf.h///1238019730/
+/uec.c///1238019730/
+/uec.h///1238019730/
+/uec_phy.c///1238019730/
+/uec_phy.h///1238019730/
diff -Naur u-boot-2009.03_orig/drivers/qe/CVS/Entries.Old u-boot-2009.03/drivers/qe/CVS/Entries.Old
--- u-boot-2009.03_orig/drivers/qe/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/qe/CVS/Entries.Old   2009-03-25 15:25:32.000000000 -0700
@@ -0,0 +1,11 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/fdt.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/qe.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/qe.h/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/uccf.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/uccf.h/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/uec.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/uec.h/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/uec_phy.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/uec_phy.h/1.1.1.1/Wed Mar 25 22:22:10 2009//
+D
diff -Naur u-boot-2009.03_orig/drivers/qe/CVS/Repository u-boot-2009.03/drivers/qe/CVS/Repository
--- u-boot-2009.03_orig/drivers/qe/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/qe/CVS/Repository    2009-03-25 15:25:32.134237600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/drivers/qe
diff -Naur u-boot-2009.03_orig/drivers/qe/CVS/Root u-boot-2009.03/drivers/qe/CVS/Root
--- u-boot-2009.03_orig/drivers/qe/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/qe/CVS/Root  2009-03-25 15:25:32.134237600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/drivers/rtc/CVS/Entries u-boot-2009.03/drivers/rtc/CVS/Entries
--- u-boot-2009.03_orig/drivers/rtc/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/rtc/CVS/Entries      2009-03-25 15:58:03.606123100 -0700
@@ -0,0 +1,32 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bfin_rtc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/date.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ds12887.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ds1302.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ds1306.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ds1307.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ds1337.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ds1374.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ds1556.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ds164x.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ds174x.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ds3231.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/isl1208.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/m41t11.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/m41t60.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/m41t62.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/m48t35ax.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/max6900.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mc13783-rtc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mc146818.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mcfrtc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mk48t59.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc5xxx.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc8xx.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pcf8563.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pl031.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/rs5c372.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/rx8025.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/s3c24x0_rtc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/x1205.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/drivers/rtc/CVS/Entries.Extra u-boot-2009.03/drivers/rtc/CVS/Entries.Extra
--- u-boot-2009.03_orig/drivers/rtc/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/rtc/CVS/Entries.Extra        2009-03-25 15:58:03.621748000 -0700
@@ -0,0 +1,31 @@
+/Makefile///1238019730/
+/bfin_rtc.c///1238019730/
+/date.c///1238019730/
+/ds12887.c///1238019730/
+/ds1302.c///1238019730/
+/ds1306.c///1238019730/
+/ds1307.c///1238019730/
+/ds1337.c///1238019730/
+/ds1374.c///1238019730/
+/ds1556.c///1238019730/
+/ds164x.c///1238019730/
+/ds174x.c///1238019730/
+/ds3231.c///1238019730/
+/isl1208.c///1238019730/
+/m41t11.c///1238019730/
+/m41t60.c///1238019730/
+/m41t62.c///1238019730/
+/m48t35ax.c///1238019730/
+/max6900.c///1238019730/
+/mc13783-rtc.c///1238019730/
+/mc146818.c///1238019730/
+/mcfrtc.c///1238019730/
+/mk48t59.c///1238019730/
+/mpc5xxx.c///1238019730/
+/mpc8xx.c///1238019730/
+/pcf8563.c///1238019730/
+/pl031.c///1238019730/
+/rs5c372.c///1238019730/
+/rx8025.c///1238019730/
+/s3c24x0_rtc.c///1238019730/
+/x1205.c///1238019730/
diff -Naur u-boot-2009.03_orig/drivers/rtc/CVS/Entries.Extra.Old u-boot-2009.03/drivers/rtc/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/drivers/rtc/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/rtc/CVS/Entries.Extra.Old    2009-03-25 15:25:32.000000000 -0700
@@ -0,0 +1,31 @@
+/Makefile///1238019730/
+/bfin_rtc.c///1238019730/
+/date.c///1238019730/
+/ds12887.c///1238019730/
+/ds1302.c///1238019730/
+/ds1306.c///1238019730/
+/ds1307.c///1238019730/
+/ds1337.c///1238019730/
+/ds1374.c///1238019730/
+/ds1556.c///1238019730/
+/ds164x.c///1238019730/
+/ds174x.c///1238019730/
+/ds3231.c///1238019730/
+/isl1208.c///1238019730/
+/m41t11.c///1238019730/
+/m41t60.c///1238019730/
+/m41t62.c///1238019730/
+/m48t35ax.c///1238019730/
+/max6900.c///1238019730/
+/mc13783-rtc.c///1238019730/
+/mc146818.c///1238019730/
+/mcfrtc.c///1238019730/
+/mk48t59.c///1238019730/
+/mpc5xxx.c///1238019730/
+/mpc8xx.c///1238019730/
+/pcf8563.c///1238019730/
+/pl031.c///1238019730/
+/rs5c372.c///1238019730/
+/rx8025.c///1238019730/
+/s3c24x0_rtc.c///1238019730/
+/x1205.c///1238019730/
diff -Naur u-boot-2009.03_orig/drivers/rtc/CVS/Entries.Old u-boot-2009.03/drivers/rtc/CVS/Entries.Old
--- u-boot-2009.03_orig/drivers/rtc/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/rtc/CVS/Entries.Old  2009-03-25 15:25:32.000000000 -0700
@@ -0,0 +1,32 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/bfin_rtc.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/date.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/ds12887.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/ds1302.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/ds1306.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/ds1307.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/ds1337.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/ds1374.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/ds1556.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/ds164x.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/ds174x.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/ds3231.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/isl1208.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/m41t11.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/m41t60.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/m41t62.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/m48t35ax.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/max6900.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/mc13783-rtc.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/mc146818.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/mcfrtc.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/mk48t59.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/mpc5xxx.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/mpc8xx.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/pcf8563.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/pl031.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/rs5c372.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/rx8025.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/s3c24x0_rtc.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/x1205.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+D
diff -Naur u-boot-2009.03_orig/drivers/rtc/CVS/Repository u-boot-2009.03/drivers/rtc/CVS/Repository
--- u-boot-2009.03_orig/drivers/rtc/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/rtc/CVS/Repository   2009-03-25 15:25:32.290486600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/drivers/rtc
diff -Naur u-boot-2009.03_orig/drivers/rtc/CVS/Root u-boot-2009.03/drivers/rtc/CVS/Root
--- u-boot-2009.03_orig/drivers/rtc/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/rtc/CVS/Root 2009-03-25 15:25:32.290486600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/drivers/serial/CVS/Entries u-boot-2009.03/drivers/serial/CVS/Entries
--- u-boot-2009.03_orig/drivers/serial/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/serial/CVS/Entries   2009-03-31 14:55:26.002406400 -0700
@@ -0,0 +1,21 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/arm_dcc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/atmel_usart.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/atmel_usart.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mcfuart.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ns16550.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/s3c4510b_uart.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/s3c64xx.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial_ixp.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial_max3100.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial_pl01x.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial_pl01x.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial_sh.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial_xuartlite.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usbtty.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usbtty.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/vct.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ns9750_serial.c/1.1.1.1/Tue Mar 31 21:55:25 2009//T1.1.1.1
+/s3c4510b_uart.c/1.1.1.1/Tue Mar 31 21:55:25 2009//T1.1.1.1
+D
diff -Naur u-boot-2009.03_orig/drivers/serial/CVS/Entries.Extra u-boot-2009.03/drivers/serial/CVS/Entries.Extra
--- u-boot-2009.03_orig/drivers/serial/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/serial/CVS/Entries.Extra     2009-03-31 14:55:26.002406400 -0700
@@ -0,0 +1,20 @@
+/Makefile///1238019730/
+/arm_dcc.c///1238019730/
+/atmel_usart.c///1238019730/
+/atmel_usart.h///1238019730/
+/mcfuart.c///1238019730/
+/ns16550.c///1238019730/
+/s3c4510b_uart.h///1238019730/
+/s3c64xx.c///1238019730/
+/serial.c///1238019730/
+/serial_ixp.c///1238019730/
+/serial_max3100.c///1238019730/
+/serial_pl01x.c///1238019730/
+/serial_pl01x.h///1238019730/
+/serial_sh.c///1238019730/
+/serial_xuartlite.c///1238019730/
+/usbtty.c///1238019730/
+/usbtty.h///1238019730/
+/vct.c///1238019730/
+/ns9750_serial.c///1238019730/
+/s3c4510b_uart.c///1238019730/
diff -Naur u-boot-2009.03_orig/drivers/serial/CVS/Entries.Extra.Old u-boot-2009.03/drivers/serial/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/drivers/serial/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/serial/CVS/Entries.Extra.Old 2009-03-25 17:51:47.000000000 -0700
@@ -0,0 +1,20 @@
+/Makefile///1238019730/
+/arm_dcc.c///1238019730/
+/atmel_usart.c///1238019730/
+/atmel_usart.h///1238019730/
+/mcfuart.c///1238019730/
+/ns16550.c///1238019730/
+/s3c4510b_uart.h///1238019730/
+/s3c64xx.c///1238019730/
+/serial.c///1238019730/
+/serial_ixp.c///1238019730/
+/serial_max3100.c///1238019730/
+/serial_pl01x.c///1238019730/
+/serial_pl01x.h///1238019730/
+/serial_sh.c///1238019730/
+/serial_xuartlite.c///1238019730/
+/usbtty.c///1238019730/
+/usbtty.h///1238019730/
+/vct.c///1238019730/
+/ns9750_serial.c///1238028707/
+/s3c4510b_uart.c///1238028707/
diff -Naur u-boot-2009.03_orig/drivers/serial/CVS/Entries.Old u-boot-2009.03/drivers/serial/CVS/Entries.Old
--- u-boot-2009.03_orig/drivers/serial/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/serial/CVS/Entries.Old       2009-03-25 17:51:47.000000000 -0700
@@ -0,0 +1,21 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/arm_dcc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/atmel_usart.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/atmel_usart.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mcfuart.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ns16550.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/s3c4510b_uart.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/s3c64xx.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial_ixp.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial_max3100.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial_pl01x.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial_pl01x.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial_sh.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial_xuartlite.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usbtty.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usbtty.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/vct.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ns9750_serial.c/1.2/Thu Mar 26 00:51:47 2009//
+/s3c4510b_uart.c/1.2/Thu Mar 26 00:51:47 2009//
+D
diff -Naur u-boot-2009.03_orig/drivers/serial/CVS/Repository u-boot-2009.03/drivers/serial/CVS/Repository
--- u-boot-2009.03_orig/drivers/serial/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/serial/CVS/Repository        2009-03-25 15:25:32.681109100 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/drivers/serial
diff -Naur u-boot-2009.03_orig/drivers/serial/CVS/Root u-boot-2009.03/drivers/serial/CVS/Root
--- u-boot-2009.03_orig/drivers/serial/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/serial/CVS/Root      2009-03-25 15:25:32.681109100 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/drivers/serial/ns9750_serial.c u-boot-2009.03/drivers/serial/ns9750_serial.c
--- u-boot-2009.03_orig/drivers/serial/ns9750_serial.c  2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/drivers/serial/ns9750_serial.c       2009-03-31 14:55:25.814908800 -0700
@@ -1,210 +1,210 @@
-/***********************************************************************
- *
- * Copyright (C) 2004 by FS Forth-Systeme GmbH.
- * All rights reserved.
- *
- * $Id: ns9750_serial.c,v 1.1 2004/02/16 10:37:20 mpietrek Exp $
- * @Author: Markus Pietrek
- * @Descr: Serial driver for the NS9750. Only one UART is supported yet.
- * @References: [1] NS9750 Hardware Reference/December 2003
- * @TODO: Implement Character GAP Timer when chip is fixed for PLL bypass
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.         See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- *
- ***********************************************************************/
-
-#include <common.h>
-
-#include "ns9750_bbus.h"       /* for GPIOs */
-#include "ns9750_ser.h"                /* for serial configuration */
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#if !defined(CONFIG_CONS_INDEX)
-#error "No console index specified."
-#endif
-
-#define CONSOLE CONFIG_CONS_INDEX
-
-static unsigned int calcBitrateRegister( void );
-static unsigned int calcRxCharGapRegister( void );
-
-static char cCharsAvailable; /* Numbers of chars in unCharCache */
-static unsigned int unCharCache; /* unCharCache is only valid if
-                                 * cCharsAvailable > 0 */
-
-/***********************************************************************
- * @Function: serial_init
- * @Return: 0
- * @Descr: configures GPIOs and UART. Requires BBUS Master Reset turned off
- ***********************************************************************/
-
-int serial_init( void )
-{
-       unsigned int aunGPIOTxD[] = { 0, 8, 40, 44 };
-       unsigned int aunGPIORxD[] = { 1, 9, 41, 45 };
-
-       cCharsAvailable = 0;
-
-       /* configure TxD and RxD pins for their special function */
-       set_gpio_cfg_reg_val( aunGPIOTxD[ CONSOLE ],
-                             NS9750_GPIO_CFG_FUNC_0 | NS9750_GPIO_CFG_OUTPUT );
-       set_gpio_cfg_reg_val( aunGPIORxD[ CONSOLE ],
-                             NS9750_GPIO_CFG_FUNC_0 | NS9750_GPIO_CFG_INPUT );
-
-       /* configure serial engine */
-       *get_ser_reg_addr_channel( NS9750_SER_CTRL_A, CONSOLE ) =
-               NS9750_SER_CTRL_A_CE |
-               NS9750_SER_CTRL_A_STOP |
-               NS9750_SER_CTRL_A_WLS_8;
-
-       serial_setbrg();
-
-       *get_ser_reg_addr_channel( NS9750_SER_CTRL_B, CONSOLE ) =
-               NS9750_SER_CTRL_B_RCGT;
-
-       return 0;
-}
-
-/***********************************************************************
- * @Function: serial_putc
- * @Return: n/a
- * @Descr: writes one character to the FIFO. Blocks until FIFO is not full
- ***********************************************************************/
-
-void serial_putc( const char c )
-{
-       if (c == '\n')
-               serial_putc( '\r' );
-
-       while (!(*get_ser_reg_addr_channel( NS9750_SER_STAT_A, CONSOLE) &
-                NS9750_SER_STAT_A_TRDY ) ) {
-               /* do nothing, wait for characters in FIFO sent */
-       }
-
-       *(volatile char*) get_ser_reg_addr_channel( NS9750_SER_FIFO,
-                                                   CONSOLE) = c;
-}
-
-/***********************************************************************
- * @Function: serial_puts
- * @Return: n/a
- * @Descr: writes non-zero string to the FIFO.
- ***********************************************************************/
-
-void serial_puts( const char *s )
-{
-       while (*s) {
-               serial_putc( *s++ );
-       }
-}
-
-/***********************************************************************
- * @Function: serial_getc
- * @Return: the character read
- * @Descr: performs only 8bit accesses to the FIFO. No error handling
- ***********************************************************************/
-
-int serial_getc( void )
-{
-       int i;
-
-       while (!serial_tstc() ) {
-               /* do nothing, wait for incoming characters */
-       }
-
-       /*  at least one character in unCharCache */
-       i = (int) (unCharCache & 0xff);
-
-       unCharCache >>= 8;
-       cCharsAvailable--;
-
-       return i;
-}
-
-/***********************************************************************
- * @Function: serial_tstc
- * @Return: 0 if no input available, otherwise != 0
- * @Descr: checks for incoming FIFO not empty. Stores the incoming chars in
- *        unCharCache and the numbers of characters in cCharsAvailable
- ***********************************************************************/
-
-int serial_tstc( void )
-{
-       unsigned int unRegCache;
-
-       if ( cCharsAvailable )
-               return 1;
-
-       unRegCache = *get_ser_reg_addr_channel( NS9750_SER_STAT_A,CONSOLE );
-       if( unRegCache & NS9750_SER_STAT_A_RBC ) {
-               *get_ser_reg_addr_channel( NS9750_SER_STAT_A, CONSOLE ) =
-                       NS9750_SER_STAT_A_RBC;
-               unRegCache = *get_ser_reg_addr_channel( NS9750_SER_STAT_A,
-                                                       CONSOLE );
-       }
-
-       if ( unRegCache & NS9750_SER_STAT_A_RRDY ) {
-               cCharsAvailable = (unRegCache & NS9750_SER_STAT_A_RXFDB_MA)>>20;
-               if ( !cCharsAvailable )
-                       cCharsAvailable = 4;
-
-               unCharCache = *get_ser_reg_addr_channel( NS9750_SER_FIFO,
-                                                        CONSOLE );
-               return 1;
-       }
-
-       /* no chars available */
-       return 0;
-}
-
-void serial_setbrg( void )
-{
-       *get_ser_reg_addr_channel( NS9750_SER_BITRATE, CONSOLE ) =
-               calcBitrateRegister();
-       *get_ser_reg_addr_channel( NS9750_SER_RX_CHAR_TIMER, CONSOLE ) =
-               calcRxCharGapRegister();
-}
-
-/***********************************************************************
- * @Function: calcBitrateRegister
- * @Return: value for the serial bitrate register
- * @Descr: register value depends on clock frequency and baudrate
- ***********************************************************************/
-
-static unsigned int calcBitrateRegister( void )
-{
-       return ( NS9750_SER_BITRATE_EBIT |
-                NS9750_SER_BITRATE_CLKMUX_BCLK |
-                NS9750_SER_BITRATE_TMODE |
-                NS9750_SER_BITRATE_TCDR_16 |
-                NS9750_SER_BITRATE_RCDR_16 |
-                ( ( ( ( CONFIG_SYS_CLK_FREQ / 8 ) / /* BBUS clock,[1] Fig. 38 */
-                      ( gd->baudrate * 16 ) ) - 1 ) &
-                  NS9750_SER_BITRATE_N_MA ) );
-}
-
-/***********************************************************************
- * @Function: calcRxCharGapRegister
- * @Return: value for the character gap timer register
- * @Descr: register value depends on clock frequency and baudrate. Currently 0
- *        is used as there is a bug with the gap timer in PLL bypass mode.
- ***********************************************************************/
-
-static unsigned int calcRxCharGapRegister( void )
-{
-       return NS9750_SER_RX_CHAR_TIMER_TRUN;
-}
+/***********************************************************************
+ *
+ * Copyright (C) 2004 by FS Forth-Systeme GmbH.
+ * All rights reserved.
+ *
+ * $Id: ns9750_serial.c,v 1.1.1.1 2009/03/25 22:22:10 kenagy Exp $
+ * @Author: Markus Pietrek
+ * @Descr: Serial driver for the NS9750. Only one UART is supported yet.
+ * @References: [1] NS9750 Hardware Reference/December 2003
+ * @TODO: Implement Character GAP Timer when chip is fixed for PLL bypass
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.         See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ ***********************************************************************/
+
+#include <common.h>
+
+#include "ns9750_bbus.h"       /* for GPIOs */
+#include "ns9750_ser.h"                /* for serial configuration */
+
+DECLARE_GLOBAL_DATA_PTR;
+
+#if !defined(CONFIG_CONS_INDEX)
+#error "No console index specified."
+#endif
+
+#define CONSOLE CONFIG_CONS_INDEX
+
+static unsigned int calcBitrateRegister( void );
+static unsigned int calcRxCharGapRegister( void );
+
+static char cCharsAvailable; /* Numbers of chars in unCharCache */
+static unsigned int unCharCache; /* unCharCache is only valid if
+                                 * cCharsAvailable > 0 */
+
+/***********************************************************************
+ * @Function: serial_init
+ * @Return: 0
+ * @Descr: configures GPIOs and UART. Requires BBUS Master Reset turned off
+ ***********************************************************************/
+
+int serial_init( void )
+{
+       unsigned int aunGPIOTxD[] = { 0, 8, 40, 44 };
+       unsigned int aunGPIORxD[] = { 1, 9, 41, 45 };
+
+       cCharsAvailable = 0;
+
+       /* configure TxD and RxD pins for their special function */
+       set_gpio_cfg_reg_val( aunGPIOTxD[ CONSOLE ],
+                             NS9750_GPIO_CFG_FUNC_0 | NS9750_GPIO_CFG_OUTPUT );
+       set_gpio_cfg_reg_val( aunGPIORxD[ CONSOLE ],
+                             NS9750_GPIO_CFG_FUNC_0 | NS9750_GPIO_CFG_INPUT );
+
+       /* configure serial engine */
+       *get_ser_reg_addr_channel( NS9750_SER_CTRL_A, CONSOLE ) =
+               NS9750_SER_CTRL_A_CE |
+               NS9750_SER_CTRL_A_STOP |
+               NS9750_SER_CTRL_A_WLS_8;
+
+       serial_setbrg();
+
+       *get_ser_reg_addr_channel( NS9750_SER_CTRL_B, CONSOLE ) =
+               NS9750_SER_CTRL_B_RCGT;
+
+       return 0;
+}
+
+/***********************************************************************
+ * @Function: serial_putc
+ * @Return: n/a
+ * @Descr: writes one character to the FIFO. Blocks until FIFO is not full
+ ***********************************************************************/
+
+void serial_putc( const char c )
+{
+       if (c == '\n')
+               serial_putc( '\r' );
+
+       while (!(*get_ser_reg_addr_channel( NS9750_SER_STAT_A, CONSOLE) &
+                NS9750_SER_STAT_A_TRDY ) ) {
+               /* do nothing, wait for characters in FIFO sent */
+       }
+
+       *(volatile char*) get_ser_reg_addr_channel( NS9750_SER_FIFO,
+                                                   CONSOLE) = c;
+}
+
+/***********************************************************************
+ * @Function: serial_puts
+ * @Return: n/a
+ * @Descr: writes non-zero string to the FIFO.
+ ***********************************************************************/
+
+void serial_puts( const char *s )
+{
+       while (*s) {
+               serial_putc( *s++ );
+       }
+}
+
+/***********************************************************************
+ * @Function: serial_getc
+ * @Return: the character read
+ * @Descr: performs only 8bit accesses to the FIFO. No error handling
+ ***********************************************************************/
+
+int serial_getc( void )
+{
+       int i;
+
+       while (!serial_tstc() ) {
+               /* do nothing, wait for incoming characters */
+       }
+
+       /*  at least one character in unCharCache */
+       i = (int) (unCharCache & 0xff);
+
+       unCharCache >>= 8;
+       cCharsAvailable--;
+
+       return i;
+}
+
+/***********************************************************************
+ * @Function: serial_tstc
+ * @Return: 0 if no input available, otherwise != 0
+ * @Descr: checks for incoming FIFO not empty. Stores the incoming chars in
+ *        unCharCache and the numbers of characters in cCharsAvailable
+ ***********************************************************************/
+
+int serial_tstc( void )
+{
+       unsigned int unRegCache;
+
+       if ( cCharsAvailable )
+               return 1;
+
+       unRegCache = *get_ser_reg_addr_channel( NS9750_SER_STAT_A,CONSOLE );
+       if( unRegCache & NS9750_SER_STAT_A_RBC ) {
+               *get_ser_reg_addr_channel( NS9750_SER_STAT_A, CONSOLE ) =
+                       NS9750_SER_STAT_A_RBC;
+               unRegCache = *get_ser_reg_addr_channel( NS9750_SER_STAT_A,
+                                                       CONSOLE );
+       }
+
+       if ( unRegCache & NS9750_SER_STAT_A_RRDY ) {
+               cCharsAvailable = (unRegCache & NS9750_SER_STAT_A_RXFDB_MA)>>20;
+               if ( !cCharsAvailable )
+                       cCharsAvailable = 4;
+
+               unCharCache = *get_ser_reg_addr_channel( NS9750_SER_FIFO,
+                                                        CONSOLE );
+               return 1;
+       }
+
+       /* no chars available */
+       return 0;
+}
+
+void serial_setbrg( void )
+{
+       *get_ser_reg_addr_channel( NS9750_SER_BITRATE, CONSOLE ) =
+               calcBitrateRegister();
+       *get_ser_reg_addr_channel( NS9750_SER_RX_CHAR_TIMER, CONSOLE ) =
+               calcRxCharGapRegister();
+}
+
+/***********************************************************************
+ * @Function: calcBitrateRegister
+ * @Return: value for the serial bitrate register
+ * @Descr: register value depends on clock frequency and baudrate
+ ***********************************************************************/
+
+static unsigned int calcBitrateRegister( void )
+{
+       return ( NS9750_SER_BITRATE_EBIT |
+                NS9750_SER_BITRATE_CLKMUX_BCLK |
+                NS9750_SER_BITRATE_TMODE |
+                NS9750_SER_BITRATE_TCDR_16 |
+                NS9750_SER_BITRATE_RCDR_16 |
+                ( ( ( ( CONFIG_SYS_CLK_FREQ / 8 ) / /* BBUS clock,[1] Fig. 38 */
+                      ( gd->baudrate * 16 ) ) - 1 ) &
+                  NS9750_SER_BITRATE_N_MA ) );
+}
+
+/***********************************************************************
+ * @Function: calcRxCharGapRegister
+ * @Return: value for the character gap timer register
+ * @Descr: register value depends on clock frequency and baudrate. Currently 0
+ *        is used as there is a bug with the gap timer in PLL bypass mode.
+ ***********************************************************************/
+
+static unsigned int calcRxCharGapRegister( void )
+{
+       return NS9750_SER_RX_CHAR_TIMER_TRUN;
+}
diff -Naur u-boot-2009.03_orig/drivers/serial/s3c4510b_uart.c u-boot-2009.03/drivers/serial/s3c4510b_uart.c
--- u-boot-2009.03_orig/drivers/serial/s3c4510b_uart.c  2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/drivers/serial/s3c4510b_uart.c       2009-03-31 14:55:25.971156800 -0700
@@ -1,212 +1,212 @@
-/*
- * Copyright (c) 2004  Cucy Systems (http://www.cucy.com)
- * Curt Brune <curt@cucy.com>
- *
- * (C) Copyright 2004
- * DAVE Srl
- * http://www.dave-tech.it
- * http://www.wawnet.biz
- * mailto:info@wawnet.biz
- *
- * (C) Copyright 2002-2004
- * Wolfgang Denk, DENX Software Engineering, <wd@denx.de>
- *
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- *
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Alex Zuepke <azu@sysgo.de>
- *
- * Copyright (C) 1999 2000 2001 Erik Mouw (J.A.K.Mouw@its.tudelft.nl)
- *
- * 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
- *
- * MODULE:        $Id:$
- * Description:   UART/Serial interface for Samsung S3C4510B SoC
- * Runtime Env:   ARM7TDMI
- * Change History:
- *     03-02-04    Create (Curt Brune) curt@cucy.com
- *
- */
-
-#include <common.h>
-
-#include <asm/hardware.h>
-#include "s3c4510b_uart.h"
-
-DECLARE_GLOBAL_DATA_PTR;
-
-static UART    *uart;
-
-/* flush serial input queue. returns 0 on success or negative error
- * number otherwise
- */
-static int serial_flush_input(void)
-{
-       volatile u32 tmp;
-
-       /* keep on reading as long as the receiver is not empty */
-       while( uart->m_stat.bf.rxReady) {
-               tmp = uart->m_rx;
-       }
-
-       return 0;
-}
-
-
-/* flush output queue. returns 0 on success or negative error number
- * otherwise
- */
-static int serial_flush_output(void)
-{
-       /* wait until the transmitter is no longer busy */
-       while( !uart->m_stat.bf.txBufEmpty);
-
-       return 0;
-}
-
-
-void serial_setbrg (void)
-{
-       UART_LINE_CTRL ulctrl;
-       UART_CTRL      uctrl;
-       UART_BAUD_DIV  ubd;
-
-       serial_flush_output();
-       serial_flush_input();
-
-       /* control register */
-       uctrl.ui = 0x0;
-       uctrl.bf.rxMode = 0x1;
-       uctrl.bf.rxIrq = 0x0;
-       uctrl.bf.txMode = 0x1;
-       uctrl.bf.DSR = 0x0;
-       uctrl.bf.sendBreak = 0x0;
-       uctrl.bf.loopBack = 0x0;
-       uart->m_ctrl.ui = uctrl.ui;
-
-       /* line control register */
-       ulctrl.ui  = 0x0;
-       ulctrl.bf.wordLen   = 0x3; /* 8 bit data */
-       ulctrl.bf.nStop     = 0x0; /* 1 stop bit */
-       ulctrl.bf.parity    = 0x0; /* no parity */
-       ulctrl.bf.clk       = 0x0; /* internal clock */
-       ulctrl.bf.infra_red = 0x0; /* no infra_red */
-       uart->m_lineCtrl.ui = ulctrl.ui;
-
-       ubd.ui = 0x0;
-
-       /* see table on page 10-15 in SAMSUNG S3C4510B manual */
-       /* get correct divisor */
-       switch(gd->baudrate) {
-       case   1200:    ubd.bf.cnt0 = 1301;     break;
-       case   2400:    ubd.bf.cnt0 =  650;     break;
-       case   4800:    ubd.bf.cnt0 =  324;     break;
-       case   9600:    ubd.bf.cnt0 =  162;     break;
-       case  19200:    ubd.bf.cnt0 =   80;     break;
-       case  38400:    ubd.bf.cnt0 =   40;     break;
-       case  57600:    ubd.bf.cnt0 =   26;     break;
-       case 115200:    ubd.bf.cnt0 =   13;     break;
-       }
-
-       uart->m_baudDiv.ui = ubd.ui;
-       uart->m_baudCnt = 0x0;
-       uart->m_baudClk = 0x0;
-
-}
-
-
-/*
- * Initialise the serial port with the given baudrate. The settings
- * are always 8 data bits, no parity, 1 stop bit, no start bits.
- *
- */
-int serial_init (void)
-{
-
-#if   CONFIG_SERIAL1 == 1
-       uart = (UART *)UART0_BASE;
-#elif CONFIG_SERIAL1 == 2
-       uart = (UART *)UART1_BASE;
-#else
-#error CONFIG_SERIAL1 not equal to 1 or 2
-#endif
-
-       serial_setbrg ();
-
-       return (0);
-}
-
-
-/*
- * Output a single byte to the serial port.
- */
-void serial_putc (const char c)
-{
-       /* wait for room in the transmit FIFO */
-       while( !uart->m_stat.bf.txBufEmpty);
-
-       uart->m_tx = c;
-
-       /*
-               to be polite with serial console add a line feed
-               to the carriage return character
-       */
-       if (c=='\n')
-               serial_putc('\r');
-}
-
-/*
- * Test if an input byte is ready from the serial port. Returns non-zero on
- * success, 0 otherwise.
- */
-int serial_tstc (void)
-{
-       return uart->m_stat.bf.rxReady;
-}
-
-/*
- * Read a single byte from the serial port. Returns 1 on success, 0
- * otherwise. When the function is succesfull, the character read is
- * written into its argument c.
- */
-int serial_getc (void)
-{
-       int rv;
-
-       for(;;) {
-               rv = serial_tstc();
-
-               if (rv) {
-                       return uart->m_rx & 0xFF;
-               }
-       }
-}
-
-void serial_puts (const char *s)
-{
-       while (*s) {
-               serial_putc (*s++);
-       }
-
-       /* busy wait for tx complete */
-       while ( !uart->m_stat.bf.txComplete);
-
-       /* clear break */
-       uart->m_ctrl.bf.sendBreak = 0;
-
-}
+/*
+ * Copyright (c) 2004  Cucy Systems (http://www.cucy.com)
+ * Curt Brune <curt@cucy.com>
+ *
+ * (C) Copyright 2004
+ * DAVE Srl
+ * http://www.dave-tech.it
+ * http://www.wawnet.biz
+ * mailto:info@wawnet.biz
+ *
+ * (C) Copyright 2002-2004
+ * Wolfgang Denk, DENX Software Engineering, <wd@denx.de>
+ *
+ * (C) Copyright 2002
+ * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
+ * Marius Groeger <mgroeger@sysgo.de>
+ *
+ * (C) Copyright 2002
+ * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
+ * Alex Zuepke <azu@sysgo.de>
+ *
+ * Copyright (C) 1999 2000 2001 Erik Mouw (J.A.K.Mouw@its.tudelft.nl)
+ *
+ * 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
+ *
+ * MODULE:        $Id: s3c4510b_uart.c,v 1.1.1.1 2009/03/25 22:22:10 kenagy Exp $
+ * Description:   UART/Serial interface for Samsung S3C4510B SoC
+ * Runtime Env:   ARM7TDMI
+ * Change History:
+ *     03-02-04    Create (Curt Brune) curt@cucy.com
+ *
+ */
+
+#include <common.h>
+
+#include <asm/hardware.h>
+#include "s3c4510b_uart.h"
+
+DECLARE_GLOBAL_DATA_PTR;
+
+static UART    *uart;
+
+/* flush serial input queue. returns 0 on success or negative error
+ * number otherwise
+ */
+static int serial_flush_input(void)
+{
+       volatile u32 tmp;
+
+       /* keep on reading as long as the receiver is not empty */
+       while( uart->m_stat.bf.rxReady) {
+               tmp = uart->m_rx;
+       }
+
+       return 0;
+}
+
+
+/* flush output queue. returns 0 on success or negative error number
+ * otherwise
+ */
+static int serial_flush_output(void)
+{
+       /* wait until the transmitter is no longer busy */
+       while( !uart->m_stat.bf.txBufEmpty);
+
+       return 0;
+}
+
+
+void serial_setbrg (void)
+{
+       UART_LINE_CTRL ulctrl;
+       UART_CTRL      uctrl;
+       UART_BAUD_DIV  ubd;
+
+       serial_flush_output();
+       serial_flush_input();
+
+       /* control register */
+       uctrl.ui = 0x0;
+       uctrl.bf.rxMode = 0x1;
+       uctrl.bf.rxIrq = 0x0;
+       uctrl.bf.txMode = 0x1;
+       uctrl.bf.DSR = 0x0;
+       uctrl.bf.sendBreak = 0x0;
+       uctrl.bf.loopBack = 0x0;
+       uart->m_ctrl.ui = uctrl.ui;
+
+       /* line control register */
+       ulctrl.ui  = 0x0;
+       ulctrl.bf.wordLen   = 0x3; /* 8 bit data */
+       ulctrl.bf.nStop     = 0x0; /* 1 stop bit */
+       ulctrl.bf.parity    = 0x0; /* no parity */
+       ulctrl.bf.clk       = 0x0; /* internal clock */
+       ulctrl.bf.infra_red = 0x0; /* no infra_red */
+       uart->m_lineCtrl.ui = ulctrl.ui;
+
+       ubd.ui = 0x0;
+
+       /* see table on page 10-15 in SAMSUNG S3C4510B manual */
+       /* get correct divisor */
+       switch(gd->baudrate) {
+       case   1200:    ubd.bf.cnt0 = 1301;     break;
+       case   2400:    ubd.bf.cnt0 =  650;     break;
+       case   4800:    ubd.bf.cnt0 =  324;     break;
+       case   9600:    ubd.bf.cnt0 =  162;     break;
+       case  19200:    ubd.bf.cnt0 =   80;     break;
+       case  38400:    ubd.bf.cnt0 =   40;     break;
+       case  57600:    ubd.bf.cnt0 =   26;     break;
+       case 115200:    ubd.bf.cnt0 =   13;     break;
+       }
+
+       uart->m_baudDiv.ui = ubd.ui;
+       uart->m_baudCnt = 0x0;
+       uart->m_baudClk = 0x0;
+
+}
+
+
+/*
+ * Initialise the serial port with the given baudrate. The settings
+ * are always 8 data bits, no parity, 1 stop bit, no start bits.
+ *
+ */
+int serial_init (void)
+{
+
+#if   CONFIG_SERIAL1 == 1
+       uart = (UART *)UART0_BASE;
+#elif CONFIG_SERIAL1 == 2
+       uart = (UART *)UART1_BASE;
+#else
+#error CONFIG_SERIAL1 not equal to 1 or 2
+#endif
+
+       serial_setbrg ();
+
+       return (0);
+}
+
+
+/*
+ * Output a single byte to the serial port.
+ */
+void serial_putc (const char c)
+{
+       /* wait for room in the transmit FIFO */
+       while( !uart->m_stat.bf.txBufEmpty);
+
+       uart->m_tx = c;
+
+       /*
+               to be polite with serial console add a line feed
+               to the carriage return character
+       */
+       if (c=='\n')
+               serial_putc('\r');
+}
+
+/*
+ * Test if an input byte is ready from the serial port. Returns non-zero on
+ * success, 0 otherwise.
+ */
+int serial_tstc (void)
+{
+       return uart->m_stat.bf.rxReady;
+}
+
+/*
+ * Read a single byte from the serial port. Returns 1 on success, 0
+ * otherwise. When the function is succesfull, the character read is
+ * written into its argument c.
+ */
+int serial_getc (void)
+{
+       int rv;
+
+       for(;;) {
+               rv = serial_tstc();
+
+               if (rv) {
+                       return uart->m_rx & 0xFF;
+               }
+       }
+}
+
+void serial_puts (const char *s)
+{
+       while (*s) {
+               serial_putc (*s++);
+       }
+
+       /* busy wait for tx complete */
+       while ( !uart->m_stat.bf.txComplete);
+
+       /* clear break */
+       uart->m_ctrl.bf.sendBreak = 0;
+
+}
diff -Naur u-boot-2009.03_orig/drivers/spi/CVS/Entries u-boot-2009.03/drivers/spi/CVS/Entries
--- u-boot-2009.03_orig/drivers/spi/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/spi/CVS/Entries      2009-03-25 15:58:03.840496600 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/atmel_spi.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/atmel_spi.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bfin_spi.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc8xxx_spi.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mxc_spi.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/soft_spi.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/drivers/spi/CVS/Entries.Extra u-boot-2009.03/drivers/spi/CVS/Entries.Extra
--- u-boot-2009.03_orig/drivers/spi/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/spi/CVS/Entries.Extra        2009-03-25 15:58:03.840496600 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019730/
+/atmel_spi.c///1238019730/
+/atmel_spi.h///1238019730/
+/bfin_spi.c///1238019730/
+/mpc8xxx_spi.c///1238019730/
+/mxc_spi.c///1238019730/
+/soft_spi.c///1238019730/
diff -Naur u-boot-2009.03_orig/drivers/spi/CVS/Entries.Extra.Old u-boot-2009.03/drivers/spi/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/drivers/spi/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/spi/CVS/Entries.Extra.Old    2009-03-25 15:25:33.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019730/
+/atmel_spi.c///1238019730/
+/atmel_spi.h///1238019730/
+/bfin_spi.c///1238019730/
+/mpc8xxx_spi.c///1238019730/
+/mxc_spi.c///1238019730/
+/soft_spi.c///1238019730/
diff -Naur u-boot-2009.03_orig/drivers/spi/CVS/Entries.Old u-boot-2009.03/drivers/spi/CVS/Entries.Old
--- u-boot-2009.03_orig/drivers/spi/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/spi/CVS/Entries.Old  2009-03-25 15:25:33.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/atmel_spi.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/atmel_spi.h/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/bfin_spi.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/mpc8xxx_spi.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/mxc_spi.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/soft_spi.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+D
diff -Naur u-boot-2009.03_orig/drivers/spi/CVS/Repository u-boot-2009.03/drivers/spi/CVS/Repository
--- u-boot-2009.03_orig/drivers/spi/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/spi/CVS/Repository   2009-03-25 15:25:32.946732400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/drivers/spi
diff -Naur u-boot-2009.03_orig/drivers/spi/CVS/Root u-boot-2009.03/drivers/spi/CVS/Root
--- u-boot-2009.03_orig/drivers/spi/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/spi/CVS/Root 2009-03-25 15:25:32.946732400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/drivers/usb/CVS/Entries u-boot-2009.03/drivers/usb/CVS/Entries
--- u-boot-2009.03_orig/drivers/usb/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/usb/CVS/Entries      2009-03-25 15:58:04.012370500 -0700
@@ -0,0 +1,28 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/davinci_usb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/davinci_usb.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/isp116x-hcd.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/isp116x.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/musb_core.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/musb_core.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/musb_hcd.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/musb_hcd.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/r8a66597-hcd.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/r8a66597.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sl811.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sl811_usb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usb_ehci.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usb_ehci_core.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usb_ehci_core.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usb_ehci_fsl.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usb_ehci_fsl.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usb_ehci_ixp.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usb_ehci_pci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usb_ehci_vct.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usb_ohci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usb_ohci.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usbdcore.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usbdcore_ep0.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usbdcore_mpc8xx.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usbdcore_omap1510.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/drivers/usb/CVS/Entries.Extra u-boot-2009.03/drivers/usb/CVS/Entries.Extra
--- u-boot-2009.03_orig/drivers/usb/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/usb/CVS/Entries.Extra        2009-03-25 15:58:04.012370500 -0700
@@ -0,0 +1,27 @@
+/Makefile///1238019730/
+/davinci_usb.c///1238019730/
+/davinci_usb.h///1238019730/
+/isp116x-hcd.c///1238019730/
+/isp116x.h///1238019730/
+/musb_core.c///1238019730/
+/musb_core.h///1238019730/
+/musb_hcd.c///1238019730/
+/musb_hcd.h///1238019730/
+/r8a66597-hcd.c///1238019730/
+/r8a66597.h///1238019730/
+/sl811.h///1238019731/
+/sl811_usb.c///1238019731/
+/usb_ehci.h///1238019731/
+/usb_ehci_core.c///1238019731/
+/usb_ehci_core.h///1238019731/
+/usb_ehci_fsl.c///1238019731/
+/usb_ehci_fsl.h///1238019731/
+/usb_ehci_ixp.c///1238019731/
+/usb_ehci_pci.c///1238019731/
+/usb_ehci_vct.c///1238019731/
+/usb_ohci.c///1238019731/
+/usb_ohci.h///1238019731/
+/usbdcore.c///1238019731/
+/usbdcore_ep0.c///1238019731/
+/usbdcore_mpc8xx.c///1238019731/
+/usbdcore_omap1510.c///1238019731/
diff -Naur u-boot-2009.03_orig/drivers/usb/CVS/Entries.Extra.Old u-boot-2009.03/drivers/usb/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/drivers/usb/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/usb/CVS/Entries.Extra.Old    2009-03-25 15:25:33.000000000 -0700
@@ -0,0 +1,27 @@
+/Makefile///1238019730/
+/davinci_usb.c///1238019730/
+/davinci_usb.h///1238019730/
+/isp116x-hcd.c///1238019730/
+/isp116x.h///1238019730/
+/musb_core.c///1238019730/
+/musb_core.h///1238019730/
+/musb_hcd.c///1238019730/
+/musb_hcd.h///1238019730/
+/r8a66597-hcd.c///1238019730/
+/r8a66597.h///1238019730/
+/sl811.h///1238019731/
+/sl811_usb.c///1238019731/
+/usb_ehci.h///1238019731/
+/usb_ehci_core.c///1238019731/
+/usb_ehci_core.h///1238019731/
+/usb_ehci_fsl.c///1238019731/
+/usb_ehci_fsl.h///1238019731/
+/usb_ehci_ixp.c///1238019731/
+/usb_ehci_pci.c///1238019731/
+/usb_ehci_vct.c///1238019731/
+/usb_ohci.c///1238019731/
+/usb_ohci.h///1238019731/
+/usbdcore.c///1238019731/
+/usbdcore_ep0.c///1238019731/
+/usbdcore_mpc8xx.c///1238019731/
+/usbdcore_omap1510.c///1238019731/
diff -Naur u-boot-2009.03_orig/drivers/usb/CVS/Entries.Old u-boot-2009.03/drivers/usb/CVS/Entries.Old
--- u-boot-2009.03_orig/drivers/usb/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/usb/CVS/Entries.Old  2009-03-25 15:25:33.000000000 -0700
@@ -0,0 +1,28 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/davinci_usb.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/davinci_usb.h/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/isp116x-hcd.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/isp116x.h/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/musb_core.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/musb_core.h/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/musb_hcd.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/musb_hcd.h/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/r8a66597-hcd.c/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/r8a66597.h/1.1.1.1/Wed Mar 25 22:22:10 2009//
+/sl811.h/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/sl811_usb.c/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/usb_ehci.h/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/usb_ehci_core.c/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/usb_ehci_core.h/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/usb_ehci_fsl.c/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/usb_ehci_fsl.h/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/usb_ehci_ixp.c/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/usb_ehci_pci.c/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/usb_ehci_vct.c/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/usb_ohci.c/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/usb_ohci.h/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/usbdcore.c/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/usbdcore_ep0.c/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/usbdcore_mpc8xx.c/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/usbdcore_omap1510.c/1.1.1.1/Wed Mar 25 22:22:11 2009//
+D
diff -Naur u-boot-2009.03_orig/drivers/usb/CVS/Repository u-boot-2009.03/drivers/usb/CVS/Repository
--- u-boot-2009.03_orig/drivers/usb/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/usb/CVS/Repository   2009-03-25 15:25:33.102981400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/drivers/usb
diff -Naur u-boot-2009.03_orig/drivers/usb/CVS/Root u-boot-2009.03/drivers/usb/CVS/Root
--- u-boot-2009.03_orig/drivers/usb/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/usb/CVS/Root 2009-03-25 15:25:33.087356500 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/drivers/video/CVS/Entries u-boot-2009.03/drivers/video/CVS/Entries
--- u-boot-2009.03_orig/drivers/video/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/video/CVS/Entries    2009-03-25 15:58:04.277993800 -0700
@@ -0,0 +1,17 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ati_ids.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ati_radeon_fb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ati_radeon_fb.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/atmel_lcdfb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cfb_console.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ct69000.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mb862xx.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mx3fb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/s6e63d6.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sed13806.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sed156x.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sm501.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/smiLynxEM.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/videomodes.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/videomodes.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/drivers/video/CVS/Entries.Extra u-boot-2009.03/drivers/video/CVS/Entries.Extra
--- u-boot-2009.03_orig/drivers/video/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/video/CVS/Entries.Extra      2009-03-25 15:58:04.277993800 -0700
@@ -0,0 +1,16 @@
+/Makefile///1238019731/
+/ati_ids.h///1238019731/
+/ati_radeon_fb.c///1238019731/
+/ati_radeon_fb.h///1238019731/
+/atmel_lcdfb.c///1238019731/
+/cfb_console.c///1238019731/
+/ct69000.c///1238019731/
+/mb862xx.c///1238019731/
+/mx3fb.c///1238019731/
+/s6e63d6.c///1238019731/
+/sed13806.c///1238019731/
+/sed156x.c///1238019731/
+/sm501.c///1238019731/
+/smiLynxEM.c///1238019731/
+/videomodes.c///1238019731/
+/videomodes.h///1238019731/
diff -Naur u-boot-2009.03_orig/drivers/video/CVS/Entries.Extra.Old u-boot-2009.03/drivers/video/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/drivers/video/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/video/CVS/Entries.Extra.Old  2009-03-25 15:25:33.000000000 -0700
@@ -0,0 +1,16 @@
+/Makefile///1238019731/
+/ati_ids.h///1238019731/
+/ati_radeon_fb.c///1238019731/
+/ati_radeon_fb.h///1238019731/
+/atmel_lcdfb.c///1238019731/
+/cfb_console.c///1238019731/
+/ct69000.c///1238019731/
+/mb862xx.c///1238019731/
+/mx3fb.c///1238019731/
+/s6e63d6.c///1238019731/
+/sed13806.c///1238019731/
+/sed156x.c///1238019731/
+/sm501.c///1238019731/
+/smiLynxEM.c///1238019731/
+/videomodes.c///1238019731/
+/videomodes.h///1238019731/
diff -Naur u-boot-2009.03_orig/drivers/video/CVS/Entries.Old u-boot-2009.03/drivers/video/CVS/Entries.Old
--- u-boot-2009.03_orig/drivers/video/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/video/CVS/Entries.Old        2009-03-25 15:25:33.000000000 -0700
@@ -0,0 +1,17 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/ati_ids.h/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/ati_radeon_fb.c/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/ati_radeon_fb.h/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/atmel_lcdfb.c/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/cfb_console.c/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/ct69000.c/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/mb862xx.c/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/mx3fb.c/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/s6e63d6.c/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/sed13806.c/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/sed156x.c/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/sm501.c/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/smiLynxEM.c/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/videomodes.c/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/videomodes.h/1.1.1.1/Wed Mar 25 22:22:11 2009//
+D
diff -Naur u-boot-2009.03_orig/drivers/video/CVS/Repository u-boot-2009.03/drivers/video/CVS/Repository
--- u-boot-2009.03_orig/drivers/video/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/video/CVS/Repository 2009-03-25 15:25:33.618603100 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/drivers/video
diff -Naur u-boot-2009.03_orig/drivers/video/CVS/Root u-boot-2009.03/drivers/video/CVS/Root
--- u-boot-2009.03_orig/drivers/video/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/drivers/video/CVS/Root       2009-03-25 15:25:33.618603100 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/examples/CVS/Entries u-boot-2009.03/examples/CVS/Entries
--- u-boot-2009.03_orig/examples/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/examples/CVS/Entries 2009-03-25 15:58:04.418617900 -0700
@@ -0,0 +1,24 @@
+/.gitignore/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/82559_eeprom.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.smc91111_eeprom/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/eepro100_eeprom.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/hello_world.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupt.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mem_to_mem_idma2intr.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mips.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nios.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nios2.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ppc_longjmp.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ppc_setjmp.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sched.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/smc91111_eeprom.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/smc911x_eeprom.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sparc.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/stubs.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/test_burst.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/test_burst.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/test_burst_lib.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/timer.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/x86-testapp.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/examples/CVS/Entries.Extra u-boot-2009.03/examples/CVS/Entries.Extra
--- u-boot-2009.03_orig/examples/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/examples/CVS/Entries.Extra   2009-03-25 15:58:04.418617900 -0700
@@ -0,0 +1,23 @@
+/.gitignore///1238019731/
+/82559_eeprom.c///1238019731/
+/Makefile///1238019731/
+/README.smc91111_eeprom///1238019731/
+/eepro100_eeprom.c///1238019731/
+/hello_world.c///1238019731/
+/interrupt.c///1238019731/
+/mem_to_mem_idma2intr.c///1238019731/
+/mips.lds///1238019731/
+/nios.lds///1238019731/
+/nios2.lds///1238019731/
+/ppc_longjmp.S///1238019731/
+/ppc_setjmp.S///1238019731/
+/sched.c///1238019731/
+/smc91111_eeprom.c///1238019731/
+/smc911x_eeprom.c///1238019731/
+/sparc.lds///1238019731/
+/stubs.c///1238019731/
+/test_burst.c///1238019731/
+/test_burst.h///1238019731/
+/test_burst_lib.S///1238019731/
+/timer.c///1238019731/
+/x86-testapp.c///1238019731/
diff -Naur u-boot-2009.03_orig/examples/CVS/Entries.Extra.Old u-boot-2009.03/examples/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/examples/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/examples/CVS/Entries.Extra.Old       2009-03-25 15:25:34.000000000 -0700
@@ -0,0 +1,23 @@
+/.gitignore///1238019731/
+/82559_eeprom.c///1238019731/
+/Makefile///1238019731/
+/README.smc91111_eeprom///1238019731/
+/eepro100_eeprom.c///1238019731/
+/hello_world.c///1238019731/
+/interrupt.c///1238019731/
+/mem_to_mem_idma2intr.c///1238019731/
+/mips.lds///1238019731/
+/nios.lds///1238019731/
+/nios2.lds///1238019731/
+/ppc_longjmp.S///1238019731/
+/ppc_setjmp.S///1238019731/
+/sched.c///1238019731/
+/smc91111_eeprom.c///1238019731/
+/smc911x_eeprom.c///1238019731/
+/sparc.lds///1238019731/
+/stubs.c///1238019731/
+/test_burst.c///1238019731/
+/test_burst.h///1238019731/
+/test_burst_lib.S///1238019731/
+/timer.c///1238019731/
+/x86-testapp.c///1238019731/
diff -Naur u-boot-2009.03_orig/examples/CVS/Entries.Old u-boot-2009.03/examples/CVS/Entries.Old
--- u-boot-2009.03_orig/examples/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/examples/CVS/Entries.Old     2009-03-25 15:25:34.000000000 -0700
@@ -0,0 +1,24 @@
+/.gitignore/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/82559_eeprom.c/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/Makefile/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/README.smc91111_eeprom/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/eepro100_eeprom.c/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/hello_world.c/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/interrupt.c/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/mem_to_mem_idma2intr.c/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/mips.lds/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/nios.lds/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/nios2.lds/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/ppc_longjmp.S/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/ppc_setjmp.S/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/sched.c/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/smc91111_eeprom.c/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/smc911x_eeprom.c/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/sparc.lds/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/stubs.c/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/test_burst.c/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/test_burst.h/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/test_burst_lib.S/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/timer.c/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/x86-testapp.c/1.1.1.1/Wed Mar 25 22:22:11 2009//
+D
diff -Naur u-boot-2009.03_orig/examples/CVS/Repository u-boot-2009.03/examples/CVS/Repository
--- u-boot-2009.03_orig/examples/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/examples/CVS/Repository      2009-03-25 15:25:33.899851300 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/examples
diff -Naur u-boot-2009.03_orig/examples/CVS/Root u-boot-2009.03/examples/CVS/Root
--- u-boot-2009.03_orig/examples/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/examples/CVS/Root    2009-03-25 15:25:33.899851300 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/fs/CVS/Entries u-boot-2009.03/fs/CVS/Entries
--- u-boot-2009.03_orig/fs/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/fs/CVS/Entries       2009-03-25 15:58:05.168613100 -0700
@@ -0,0 +1,8 @@
+D/cramfs////
+D/ext2////
+D/fat////
+D/fdos////
+D/jffs2////
+D/reiserfs////
+D/yaffs2////
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
diff -Naur u-boot-2009.03_orig/fs/CVS/Entries.Extra u-boot-2009.03/fs/CVS/Entries.Extra
--- u-boot-2009.03_orig/fs/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/fs/CVS/Entries.Extra 2009-03-25 15:58:05.168613100 -0700
@@ -0,0 +1,8 @@
+D/cramfs////
+D/ext2////
+D/fat////
+D/fdos////
+D/jffs2////
+D/reiserfs////
+D/yaffs2////
+/Makefile///1238019731/
diff -Naur u-boot-2009.03_orig/fs/CVS/Entries.Extra.Old u-boot-2009.03/fs/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/fs/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/fs/CVS/Entries.Extra.Old     2009-03-25 15:25:35.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019731/
+D/cramfs////
+D/ext2////
+D/fat////
+D/fdos////
+D/jffs2////
+D/reiserfs////
+D/yaffs2////
diff -Naur u-boot-2009.03_orig/fs/CVS/Entries.Old u-boot-2009.03/fs/CVS/Entries.Old
--- u-boot-2009.03_orig/fs/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/fs/CVS/Entries.Old   2009-03-25 15:25:35.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:11 2009//
+D/cramfs////
+D/ext2////
+D/fat////
+D/fdos////
+D/jffs2////
+D/reiserfs////
+D/yaffs2////
diff -Naur u-boot-2009.03_orig/fs/CVS/Repository u-boot-2009.03/fs/CVS/Repository
--- u-boot-2009.03_orig/fs/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/fs/CVS/Repository    2009-03-25 15:25:34.181099500 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/fs
diff -Naur u-boot-2009.03_orig/fs/CVS/Root u-boot-2009.03/fs/CVS/Root
--- u-boot-2009.03_orig/fs/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/fs/CVS/Root  2009-03-25 15:25:34.181099500 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/fs/cramfs/CVS/Entries u-boot-2009.03/fs/cramfs/CVS/Entries
--- u-boot-2009.03_orig/fs/cramfs/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/fs/cramfs/CVS/Entries        2009-03-25 15:58:04.512367300 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cramfs.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/uncompress.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/fs/cramfs/CVS/Entries.Extra u-boot-2009.03/fs/cramfs/CVS/Entries.Extra
--- u-boot-2009.03_orig/fs/cramfs/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/fs/cramfs/CVS/Entries.Extra  2009-03-25 15:58:04.512367300 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019731/
+/cramfs.c///1238019731/
+/uncompress.c///1238019731/
diff -Naur u-boot-2009.03_orig/fs/cramfs/CVS/Entries.Extra.Old u-boot-2009.03/fs/cramfs/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/fs/cramfs/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/fs/cramfs/CVS/Entries.Extra.Old      2009-03-25 15:25:34.000000000 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019731/
+/cramfs.c///1238019731/
+/uncompress.c///1238019731/
diff -Naur u-boot-2009.03_orig/fs/cramfs/CVS/Entries.Old u-boot-2009.03/fs/cramfs/CVS/Entries.Old
--- u-boot-2009.03_orig/fs/cramfs/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/fs/cramfs/CVS/Entries.Old    2009-03-25 15:25:34.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/cramfs.c/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/uncompress.c/1.1.1.1/Wed Mar 25 22:22:11 2009//
+D
diff -Naur u-boot-2009.03_orig/fs/cramfs/CVS/Repository u-boot-2009.03/fs/cramfs/CVS/Repository
--- u-boot-2009.03_orig/fs/cramfs/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/fs/cramfs/CVS/Repository     2009-03-25 15:25:34.212349300 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/fs/cramfs
diff -Naur u-boot-2009.03_orig/fs/cramfs/CVS/Root u-boot-2009.03/fs/cramfs/CVS/Root
--- u-boot-2009.03_orig/fs/cramfs/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/fs/cramfs/CVS/Root   2009-03-25 15:25:34.212349300 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/fs/ext2/CVS/Entries u-boot-2009.03/fs/ext2/CVS/Entries
--- u-boot-2009.03_orig/fs/ext2/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/fs/ext2/CVS/Entries  2009-03-25 15:58:04.574866900 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dev.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ext2fs.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/fs/ext2/CVS/Entries.Extra u-boot-2009.03/fs/ext2/CVS/Entries.Extra
--- u-boot-2009.03_orig/fs/ext2/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/fs/ext2/CVS/Entries.Extra    2009-03-25 15:58:04.574866900 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019731/
+/dev.c///1238019731/
+/ext2fs.c///1238019731/
diff -Naur u-boot-2009.03_orig/fs/ext2/CVS/Entries.Extra.Old u-boot-2009.03/fs/ext2/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/fs/ext2/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/fs/ext2/CVS/Entries.Extra.Old        2009-03-25 15:25:34.000000000 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019731/
+/dev.c///1238019731/
+/ext2fs.c///1238019731/
diff -Naur u-boot-2009.03_orig/fs/ext2/CVS/Entries.Old u-boot-2009.03/fs/ext2/CVS/Entries.Old
--- u-boot-2009.03_orig/fs/ext2/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/fs/ext2/CVS/Entries.Old      2009-03-25 15:25:34.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/dev.c/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/ext2fs.c/1.1.1.1/Wed Mar 25 22:22:11 2009//
+D
diff -Naur u-boot-2009.03_orig/fs/ext2/CVS/Repository u-boot-2009.03/fs/ext2/CVS/Repository
--- u-boot-2009.03_orig/fs/ext2/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/fs/ext2/CVS/Repository       2009-03-25 15:25:34.321723600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/fs/ext2
diff -Naur u-boot-2009.03_orig/fs/ext2/CVS/Root u-boot-2009.03/fs/ext2/CVS/Root
--- u-boot-2009.03_orig/fs/ext2/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/fs/ext2/CVS/Root     2009-03-25 15:25:34.321723600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/fs/fat/CVS/Entries u-boot-2009.03/fs/fat/CVS/Entries
--- u-boot-2009.03_orig/fs/fat/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/fs/fat/CVS/Entries   2009-03-25 15:58:04.621741600 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fat.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/file.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/fs/fat/CVS/Entries.Extra u-boot-2009.03/fs/fat/CVS/Entries.Extra
--- u-boot-2009.03_orig/fs/fat/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/fs/fat/CVS/Entries.Extra     2009-03-25 15:58:04.621741600 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019731/
+/fat.c///1238019731/
+/file.c///1238019731/
diff -Naur u-boot-2009.03_orig/fs/fat/CVS/Entries.Extra.Old u-boot-2009.03/fs/fat/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/fs/fat/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/fs/fat/CVS/Entries.Extra.Old 2009-03-25 15:25:34.000000000 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019731/
+/fat.c///1238019731/
+/file.c///1238019731/
diff -Naur u-boot-2009.03_orig/fs/fat/CVS/Entries.Old u-boot-2009.03/fs/fat/CVS/Entries.Old
--- u-boot-2009.03_orig/fs/fat/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/fs/fat/CVS/Entries.Old       2009-03-25 15:25:34.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/fat.c/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/file.c/1.1.1.1/Wed Mar 25 22:22:11 2009//
+D
diff -Naur u-boot-2009.03_orig/fs/fat/CVS/Repository u-boot-2009.03/fs/fat/CVS/Repository
--- u-boot-2009.03_orig/fs/fat/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/fs/fat/CVS/Repository        2009-03-25 15:25:34.712346100 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/fs/fat
diff -Naur u-boot-2009.03_orig/fs/fat/CVS/Root u-boot-2009.03/fs/fat/CVS/Root
--- u-boot-2009.03_orig/fs/fat/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/fs/fat/CVS/Root      2009-03-25 15:25:34.696721200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/fs/fdos/CVS/Entries u-boot-2009.03/fs/fdos/CVS/Entries
--- u-boot-2009.03_orig/fs/fdos/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/fs/fdos/CVS/Entries  2009-03-25 15:58:04.715491000 -0700
@@ -0,0 +1,10 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dev.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dos.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fat.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fdos.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fdos.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fs.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/subdir.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/vfat.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/fs/fdos/CVS/Entries.Extra u-boot-2009.03/fs/fdos/CVS/Entries.Extra
--- u-boot-2009.03_orig/fs/fdos/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/fs/fdos/CVS/Entries.Extra    2009-03-25 15:58:04.715491000 -0700
@@ -0,0 +1,9 @@
+/Makefile///1238019731/
+/dev.c///1238019731/
+/dos.h///1238019731/
+/fat.c///1238019731/
+/fdos.c///1238019731/
+/fdos.h///1238019731/
+/fs.c///1238019731/
+/subdir.c///1238019731/
+/vfat.c///1238019731/
diff -Naur u-boot-2009.03_orig/fs/fdos/CVS/Entries.Extra.Old u-boot-2009.03/fs/fdos/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/fs/fdos/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/fs/fdos/CVS/Entries.Extra.Old        2009-03-25 15:25:34.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile///1238019731/
+/dev.c///1238019731/
+/dos.h///1238019731/
+/fat.c///1238019731/
+/fdos.c///1238019731/
+/fdos.h///1238019731/
+/fs.c///1238019731/
+/subdir.c///1238019731/
+/vfat.c///1238019731/
diff -Naur u-boot-2009.03_orig/fs/fdos/CVS/Entries.Old u-boot-2009.03/fs/fdos/CVS/Entries.Old
--- u-boot-2009.03_orig/fs/fdos/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/fs/fdos/CVS/Entries.Old      2009-03-25 15:25:34.000000000 -0700
@@ -0,0 +1,10 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/dev.c/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/dos.h/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/fat.c/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/fdos.c/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/fdos.h/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/fs.c/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/subdir.c/1.1.1.1/Wed Mar 25 22:22:11 2009//
+/vfat.c/1.1.1.1/Wed Mar 25 22:22:11 2009//
+D
diff -Naur u-boot-2009.03_orig/fs/fdos/CVS/Repository u-boot-2009.03/fs/fdos/CVS/Repository
--- u-boot-2009.03_orig/fs/fdos/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/fs/fdos/CVS/Repository       2009-03-25 15:25:34.868595100 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/fs/fdos
diff -Naur u-boot-2009.03_orig/fs/fdos/CVS/Root u-boot-2009.03/fs/fdos/CVS/Root
--- u-boot-2009.03_orig/fs/fdos/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/fs/fdos/CVS/Root     2009-03-25 15:25:34.852970200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/fs/jffs2/CVS/Entries u-boot-2009.03/fs/jffs2/CVS/Entries
--- u-boot-2009.03_orig/fs/jffs2/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/fs/jffs2/CVS/Entries 2009-03-31 14:55:58.048871200 -0700
@@ -0,0 +1,13 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/jffs2_nand_1pass.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/jffs2_nand_private.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/jffs2_private.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/summary.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/compr_lzari.c/1.1.1.1/Tue Mar 31 21:55:57 2009//T1.1.1.1
+/compr_lzo.c/1.1.1.1/Tue Mar 31 21:55:57 2009//T1.1.1.1
+/compr_rtime.c/1.1.1.1/Tue Mar 31 21:55:57 2009//T1.1.1.1
+/compr_rubin.c/1.1.1.1/Tue Mar 31 21:55:57 2009//T1.1.1.1
+/compr_zlib.c/1.1.1.1/Tue Mar 31 21:55:57 2009//T1.1.1.1
+/jffs2_1pass.c/1.1.1.1/Tue Mar 31 21:55:58 2009//T1.1.1.1
+/mini_inflate.c/1.1.1.1/Tue Mar 31 21:55:58 2009//T1.1.1.1
+D
diff -Naur u-boot-2009.03_orig/fs/jffs2/CVS/Entries.Extra u-boot-2009.03/fs/jffs2/CVS/Entries.Extra
--- u-boot-2009.03_orig/fs/jffs2/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/fs/jffs2/CVS/Entries.Extra   2009-03-31 14:55:58.048871200 -0700
@@ -0,0 +1,12 @@
+/Makefile///1238019731/
+/jffs2_nand_1pass.c///1238019731/
+/jffs2_nand_private.h///1238019731/
+/jffs2_private.h///1238019731/
+/summary.h///1238019732/
+/compr_lzari.c///1238019731/
+/compr_lzo.c///1238019731/
+/compr_rtime.c///1238019731/
+/compr_rubin.c///1238019731/
+/compr_zlib.c///1238019731/
+/jffs2_1pass.c///1238019731/
+/mini_inflate.c///1238019732/
diff -Naur u-boot-2009.03_orig/fs/jffs2/CVS/Entries.Extra.Old u-boot-2009.03/fs/jffs2/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/fs/jffs2/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/fs/jffs2/CVS/Entries.Extra.Old       2009-03-25 17:51:47.000000000 -0700
@@ -0,0 +1,12 @@
+/Makefile///1238019731/
+/jffs2_nand_1pass.c///1238019731/
+/jffs2_nand_private.h///1238019731/
+/jffs2_private.h///1238019731/
+/summary.h///1238019732/
+/compr_lzari.c///1238028707/
+/compr_lzo.c///1238028707/
+/compr_rtime.c///1238028707/
+/compr_rubin.c///1238028707/
+/compr_zlib.c///1238028707/
+/jffs2_1pass.c///1238028707/
+/mini_inflate.c///1238028707/
diff -Naur u-boot-2009.03_orig/fs/jffs2/CVS/Entries.Old u-boot-2009.03/fs/jffs2/CVS/Entries.Old
--- u-boot-2009.03_orig/fs/jffs2/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/fs/jffs2/CVS/Entries.Old     2009-03-25 17:51:47.000000000 -0700
@@ -0,0 +1,13 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/jffs2_nand_1pass.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/jffs2_nand_private.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/jffs2_private.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/summary.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/compr_lzari.c/1.2/Thu Mar 26 00:51:47 2009//
+/compr_lzo.c/1.2/Thu Mar 26 00:51:47 2009//
+/compr_rtime.c/1.2/Thu Mar 26 00:51:47 2009//
+/compr_rubin.c/1.2/Thu Mar 26 00:51:47 2009//
+/compr_zlib.c/1.2/Thu Mar 26 00:51:47 2009//
+/jffs2_1pass.c/1.2/Thu Mar 26 00:51:47 2009//
+/mini_inflate.c/1.2/Thu Mar 26 00:51:47 2009//
+D
diff -Naur u-boot-2009.03_orig/fs/jffs2/CVS/Repository u-boot-2009.03/fs/jffs2/CVS/Repository
--- u-boot-2009.03_orig/fs/jffs2/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/fs/jffs2/CVS/Repository      2009-03-25 15:25:35.040469000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/fs/jffs2
diff -Naur u-boot-2009.03_orig/fs/jffs2/CVS/Root u-boot-2009.03/fs/jffs2/CVS/Root
--- u-boot-2009.03_orig/fs/jffs2/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/fs/jffs2/CVS/Root    2009-03-25 15:25:35.024844100 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/fs/jffs2/compr_lzari.c u-boot-2009.03/fs/jffs2/compr_lzari.c
--- u-boot-2009.03_orig/fs/jffs2/compr_lzari.c  2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/fs/jffs2/compr_lzari.c       2009-03-31 14:55:57.705125600 -0700
@@ -1,259 +1,259 @@
-/*
- * JFFS2 -- Journalling Flash File System, Version 2.
- *
- * Copyright (C) 2004 Patrik Kluba,
- *                    University of Szeged, Hungary
- *
- * For licensing information, see the file 'LICENCE' in the
- * jffs2 directory.
- *
- * $Id: compr_lzari.c,v 1.3 2004/06/23 16:34:39 havasi Exp $
- *
- */
-
-/*
-   Lempel-Ziv-Arithmetic coding compression module for jffs2
-   Based on the LZARI source included in LDS (lossless datacompression sources)
-*/
-
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */
-
-/*
-Original copyright follows:
-
-**************************************************************
-       LZARI.C -- A Data Compression Program
-       (tab = 4 spaces)
-**************************************************************
-       4/7/1989 Haruhiko Okumura
-       Use, distribute, and modify this program freely.
-       Please send me your improved versions.
-               PC-VAN          SCIENCE
-               NIFTY-Serve     PAF01022
-               CompuServe      74050,1022
-**************************************************************
-
-LZARI.C (c)1989 by Haruyasu Yoshizaki, Haruhiko Okumura, and Kenji Rikitake.
-All rights reserved. Permission granted for non-commercial use.
-
-*/
-
-/*
-
-       2004-02-18  pajko <pajko(AT)halom(DOT)u-szeged(DOT)hu>
-                               Removed unused variables and fixed no return value
-
-       2004-02-16  pajko <pajko(AT)halom(DOT)u-szeged(DOT)hu>
-                               Initial release
-
-*/
-
-
-#include <config.h>
-#include <linux/stddef.h>
-#include <jffs2/jffs2.h>
-
-
-#define N                      4096    /* size of ring buffer */
-#define F                      60      /* upper limit for match_length */
-#define THRESHOLD              2       /* encode string into position and length
-                                          if match_length is greater than this */
-#define NIL                    N       /* index for root of binary search trees */
-
-static unsigned char
-               text_buf[N + F - 1];    /* ring buffer of size N,
-                       with extra F-1 bytes to facilitate string comparison */
-
-/********** Arithmetic Compression **********/
-
-/*  If you are not familiar with arithmetic compression, you should read
-               I. E. Witten, R. M. Neal, and J. G. Cleary,
-                       Communications of the ACM, Vol. 30, pp. 520-540 (1987),
-       from which much have been borrowed.  */
-
-#define M   15
-
-/*     Q1 (= 2 to the M) must be sufficiently large, but not so
-       large as the unsigned long 4 * Q1 * (Q1 - 1) overflows.  */
-
-#define Q1  (1UL << M)
-#define Q2  (2 * Q1)
-#define Q3  (3 * Q1)
-#define Q4  (4 * Q1)
-#define MAX_CUM (Q1 - 1)
-
-#define N_CHAR  (256 - THRESHOLD + F)
-       /* character code = 0, 1, ..., N_CHAR - 1 */
-
-static unsigned long char_to_sym[N_CHAR], sym_to_char[N_CHAR + 1];
-static unsigned long
-       sym_freq[N_CHAR + 1],  /* frequency for symbols */
-       sym_cum[N_CHAR + 1],   /* cumulative freq for symbols */
-       position_cum[N + 1];   /* cumulative freq for positions */
-
-static void StartModel(void)  /* Initialize model */
-{
-       unsigned long ch, sym, i;
-
-       sym_cum[N_CHAR] = 0;
-       for (sym = N_CHAR; sym >= 1; sym--) {
-               ch = sym - 1;
-               char_to_sym[ch] = sym;  sym_to_char[sym] = ch;
-               sym_freq[sym] = 1;
-               sym_cum[sym - 1] = sym_cum[sym] + sym_freq[sym];
-       }
-       sym_freq[0] = 0;  /* sentinel (!= sym_freq[1]) */
-       position_cum[N] = 0;
-       for (i = N; i >= 1; i--)
-               position_cum[i - 1] = position_cum[i] + 10000 / (i + 200);
-                       /* empirical distribution function (quite tentative) */
-                       /* Please devise a better mechanism! */
-}
-
-static void UpdateModel(unsigned long sym)
-{
-       unsigned long c, ch_i, ch_sym;
-       unsigned long i;
-       if (sym_cum[0] >= MAX_CUM) {
-               c = 0;
-               for (i = N_CHAR; i > 0; i--) {
-                       sym_cum[i] = c;
-                       c += (sym_freq[i] = (sym_freq[i] + 1) >> 1);
-               }
-               sym_cum[0] = c;
-       }
-       for (i = sym; sym_freq[i] == sym_freq[i - 1]; i--) ;
-       if (i < sym) {
-               ch_i = sym_to_char[i];    ch_sym = sym_to_char[sym];
-               sym_to_char[i] = ch_sym;  sym_to_char[sym] = ch_i;
-               char_to_sym[ch_i] = sym;  char_to_sym[ch_sym] = i;
-       }
-       sym_freq[i]++;
-       while (--i > 0) sym_cum[i]++;
-       sym_cum[0]++;
-}
-
-static unsigned long BinarySearchSym(unsigned long x)
-       /* 1      if x >= sym_cum[1],
-          N_CHAR if sym_cum[N_CHAR] > x,
-          i such that sym_cum[i - 1] > x >= sym_cum[i] otherwise */
-{
-       unsigned long i, j, k;
-
-       i = 1;  j = N_CHAR;
-       while (i < j) {
-               k = (i + j) / 2;
-               if (sym_cum[k] > x) i = k + 1;  else j = k;
-       }
-       return i;
-}
-
-unsigned long BinarySearchPos(unsigned long x)
-       /* 0 if x >= position_cum[1],
-          N - 1 if position_cum[N] > x,
-          i such that position_cum[i] > x >= position_cum[i + 1] otherwise */
-{
-       unsigned long i, j, k;
-
-       i = 1;  j = N;
-       while (i < j) {
-               k = (i + j) / 2;
-               if (position_cum[k] > x) i = k + 1;  else j = k;
-       }
-       return i - 1;
-}
-
-static int Decode(unsigned char *srcbuf, unsigned char *dstbuf, unsigned long srclen,
-                                       unsigned long dstlen)   /* Just the reverse of Encode(). */
-{
-       unsigned long i, r, j, k, c, range, sym;
-       unsigned char *ip, *op;
-       unsigned char *srcend = srcbuf + srclen;
-       unsigned char *dstend = dstbuf + dstlen;
-       unsigned char buffer = 0;
-       unsigned char mask = 0;
-       unsigned long low = 0;
-       unsigned long high = Q4;
-       unsigned long value = 0;
-
-       ip = srcbuf;
-       op = dstbuf;
-       for (i = 0; i < M + 2; i++) {
-               value *= 2;
-               if ((mask >>= 1) == 0) {
-                       buffer = (ip >= srcend) ? 0 : *(ip++);
-                       mask = 128;
-               }
-               value += ((buffer & mask) != 0);
-       }
-
-       StartModel();
-       for (i = 0; i < N - F; i++) text_buf[i] = ' ';
-       r = N - F;
-
-       while (op < dstend) {
-               range = high - low;
-               sym = BinarySearchSym((unsigned long)
-                               (((value - low + 1) * sym_cum[0] - 1) / range));
-               high = low + (range * sym_cum[sym - 1]) / sym_cum[0];
-               low +=       (range * sym_cum[sym    ]) / sym_cum[0];
-               for ( ; ; ) {
-                       if (low >= Q2) {
-                               value -= Q2;  low -= Q2;  high -= Q2;
-                       } else if (low >= Q1 && high <= Q3) {
-                               value -= Q1;  low -= Q1;  high -= Q1;
-                       } else if (high > Q2) break;
-                       low += low;  high += high;
-                       value *= 2;
-                       if ((mask >>= 1) == 0) {
-                               buffer = (ip >= srcend) ? 0 : *(ip++);
-                               mask = 128;
-                       }
-                       value += ((buffer & mask) != 0);
-               }
-               c = sym_to_char[sym];
-               UpdateModel(sym);
-               if (c < 256) {
-                       if (op >= dstend) return -1;
-                       *(op++) = c;
-                       text_buf[r++] = c;
-                       r &= (N - 1);
-               } else {
-                       j = c - 255 + THRESHOLD;
-                       range = high - low;
-                       i = BinarySearchPos((unsigned long)
-                               (((value - low + 1) * position_cum[0] - 1) / range));
-                       high = low + (range * position_cum[i    ]) / position_cum[0];
-                       low +=       (range * position_cum[i + 1]) / position_cum[0];
-                       for ( ; ; ) {
-                               if (low >= Q2) {
-                                       value -= Q2;  low -= Q2;  high -= Q2;
-                               } else if (low >= Q1 && high <= Q3) {
-                                       value -= Q1;  low -= Q1;  high -= Q1;
-                               } else if (high > Q2) break;
-                               low += low;  high += high;
-                               value *= 2;
-                               if ((mask >>= 1) == 0) {
-                                       buffer = (ip >= srcend) ? 0 : *(ip++);
-                                       mask = 128;
-                               }
-                               value += ((buffer & mask) != 0);
-                       }
-                       i = (r - i - 1) & (N - 1);
-                       for (k = 0; k < j; k++) {
-                               c = text_buf[(i + k) & (N - 1)];
-                               if (op >= dstend) return -1;
-                               *(op++) = c;
-                               text_buf[r++] = c;
-                               r &= (N - 1);
-                       }
-               }
-       }
-       return 0;
-}
-
-int lzari_decompress(unsigned char *data_in, unsigned char *cpage_out,
-                     u32 srclen, u32 destlen)
-{
-    return Decode(data_in, cpage_out, srclen, destlen);
-}
+/*
+ * JFFS2 -- Journalling Flash File System, Version 2.
+ *
+ * Copyright (C) 2004 Patrik Kluba,
+ *                    University of Szeged, Hungary
+ *
+ * For licensing information, see the file 'LICENCE' in the
+ * jffs2 directory.
+ *
+ * $Id: compr_lzari.c,v 1.1.1.1 2009/03/25 22:22:11 kenagy Exp $
+ *
+ */
+
+/*
+   Lempel-Ziv-Arithmetic coding compression module for jffs2
+   Based on the LZARI source included in LDS (lossless datacompression sources)
+*/
+
+/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */
+
+/*
+Original copyright follows:
+
+**************************************************************
+       LZARI.C -- A Data Compression Program
+       (tab = 4 spaces)
+**************************************************************
+       4/7/1989 Haruhiko Okumura
+       Use, distribute, and modify this program freely.
+       Please send me your improved versions.
+               PC-VAN          SCIENCE
+               NIFTY-Serve     PAF01022
+               CompuServe      74050,1022
+**************************************************************
+
+LZARI.C (c)1989 by Haruyasu Yoshizaki, Haruhiko Okumura, and Kenji Rikitake.
+All rights reserved. Permission granted for non-commercial use.
+
+*/
+
+/*
+
+       2004-02-18  pajko <pajko(AT)halom(DOT)u-szeged(DOT)hu>
+                               Removed unused variables and fixed no return value
+
+       2004-02-16  pajko <pajko(AT)halom(DOT)u-szeged(DOT)hu>
+                               Initial release
+
+*/
+
+
+#include <config.h>
+#include <linux/stddef.h>
+#include <jffs2/jffs2.h>
+
+
+#define N                      4096    /* size of ring buffer */
+#define F                      60      /* upper limit for match_length */
+#define THRESHOLD              2       /* encode string into position and length
+                                          if match_length is greater than this */
+#define NIL                    N       /* index for root of binary search trees */
+
+static unsigned char
+               text_buf[N + F - 1];    /* ring buffer of size N,
+                       with extra F-1 bytes to facilitate string comparison */
+
+/********** Arithmetic Compression **********/
+
+/*  If you are not familiar with arithmetic compression, you should read
+               I. E. Witten, R. M. Neal, and J. G. Cleary,
+                       Communications of the ACM, Vol. 30, pp. 520-540 (1987),
+       from which much have been borrowed.  */
+
+#define M   15
+
+/*     Q1 (= 2 to the M) must be sufficiently large, but not so
+       large as the unsigned long 4 * Q1 * (Q1 - 1) overflows.  */
+
+#define Q1  (1UL << M)
+#define Q2  (2 * Q1)
+#define Q3  (3 * Q1)
+#define Q4  (4 * Q1)
+#define MAX_CUM (Q1 - 1)
+
+#define N_CHAR  (256 - THRESHOLD + F)
+       /* character code = 0, 1, ..., N_CHAR - 1 */
+
+static unsigned long char_to_sym[N_CHAR], sym_to_char[N_CHAR + 1];
+static unsigned long
+       sym_freq[N_CHAR + 1],  /* frequency for symbols */
+       sym_cum[N_CHAR + 1],   /* cumulative freq for symbols */
+       position_cum[N + 1];   /* cumulative freq for positions */
+
+static void StartModel(void)  /* Initialize model */
+{
+       unsigned long ch, sym, i;
+
+       sym_cum[N_CHAR] = 0;
+       for (sym = N_CHAR; sym >= 1; sym--) {
+               ch = sym - 1;
+               char_to_sym[ch] = sym;  sym_to_char[sym] = ch;
+               sym_freq[sym] = 1;
+               sym_cum[sym - 1] = sym_cum[sym] + sym_freq[sym];
+       }
+       sym_freq[0] = 0;  /* sentinel (!= sym_freq[1]) */
+       position_cum[N] = 0;
+       for (i = N; i >= 1; i--)
+               position_cum[i - 1] = position_cum[i] + 10000 / (i + 200);
+                       /* empirical distribution function (quite tentative) */
+                       /* Please devise a better mechanism! */
+}
+
+static void UpdateModel(unsigned long sym)
+{
+       unsigned long c, ch_i, ch_sym;
+       unsigned long i;
+       if (sym_cum[0] >= MAX_CUM) {
+               c = 0;
+               for (i = N_CHAR; i > 0; i--) {
+                       sym_cum[i] = c;
+                       c += (sym_freq[i] = (sym_freq[i] + 1) >> 1);
+               }
+               sym_cum[0] = c;
+       }
+       for (i = sym; sym_freq[i] == sym_freq[i - 1]; i--) ;
+       if (i < sym) {
+               ch_i = sym_to_char[i];    ch_sym = sym_to_char[sym];
+               sym_to_char[i] = ch_sym;  sym_to_char[sym] = ch_i;
+               char_to_sym[ch_i] = sym;  char_to_sym[ch_sym] = i;
+       }
+       sym_freq[i]++;
+       while (--i > 0) sym_cum[i]++;
+       sym_cum[0]++;
+}
+
+static unsigned long BinarySearchSym(unsigned long x)
+       /* 1      if x >= sym_cum[1],
+          N_CHAR if sym_cum[N_CHAR] > x,
+          i such that sym_cum[i - 1] > x >= sym_cum[i] otherwise */
+{
+       unsigned long i, j, k;
+
+       i = 1;  j = N_CHAR;
+       while (i < j) {
+               k = (i + j) / 2;
+               if (sym_cum[k] > x) i = k + 1;  else j = k;
+       }
+       return i;
+}
+
+unsigned long BinarySearchPos(unsigned long x)
+       /* 0 if x >= position_cum[1],
+          N - 1 if position_cum[N] > x,
+          i such that position_cum[i] > x >= position_cum[i + 1] otherwise */
+{
+       unsigned long i, j, k;
+
+       i = 1;  j = N;
+       while (i < j) {
+               k = (i + j) / 2;
+               if (position_cum[k] > x) i = k + 1;  else j = k;
+       }
+       return i - 1;
+}
+
+static int Decode(unsigned char *srcbuf, unsigned char *dstbuf, unsigned long srclen,
+                                       unsigned long dstlen)   /* Just the reverse of Encode(). */
+{
+       unsigned long i, r, j, k, c, range, sym;
+       unsigned char *ip, *op;
+       unsigned char *srcend = srcbuf + srclen;
+       unsigned char *dstend = dstbuf + dstlen;
+       unsigned char buffer = 0;
+       unsigned char mask = 0;
+       unsigned long low = 0;
+       unsigned long high = Q4;
+       unsigned long value = 0;
+
+       ip = srcbuf;
+       op = dstbuf;
+       for (i = 0; i < M + 2; i++) {
+               value *= 2;
+               if ((mask >>= 1) == 0) {
+                       buffer = (ip >= srcend) ? 0 : *(ip++);
+                       mask = 128;
+               }
+               value += ((buffer & mask) != 0);
+       }
+
+       StartModel();
+       for (i = 0; i < N - F; i++) text_buf[i] = ' ';
+       r = N - F;
+
+       while (op < dstend) {
+               range = high - low;
+               sym = BinarySearchSym((unsigned long)
+                               (((value - low + 1) * sym_cum[0] - 1) / range));
+               high = low + (range * sym_cum[sym - 1]) / sym_cum[0];
+               low +=       (range * sym_cum[sym    ]) / sym_cum[0];
+               for ( ; ; ) {
+                       if (low >= Q2) {
+                               value -= Q2;  low -= Q2;  high -= Q2;
+                       } else if (low >= Q1 && high <= Q3) {
+                               value -= Q1;  low -= Q1;  high -= Q1;
+                       } else if (high > Q2) break;
+                       low += low;  high += high;
+                       value *= 2;
+                       if ((mask >>= 1) == 0) {
+                               buffer = (ip >= srcend) ? 0 : *(ip++);
+                               mask = 128;
+                       }
+                       value += ((buffer & mask) != 0);
+               }
+               c = sym_to_char[sym];
+               UpdateModel(sym);
+               if (c < 256) {
+                       if (op >= dstend) return -1;
+                       *(op++) = c;
+                       text_buf[r++] = c;
+                       r &= (N - 1);
+               } else {
+                       j = c - 255 + THRESHOLD;
+                       range = high - low;
+                       i = BinarySearchPos((unsigned long)
+                               (((value - low + 1) * position_cum[0] - 1) / range));
+                       high = low + (range * position_cum[i    ]) / position_cum[0];
+                       low +=       (range * position_cum[i + 1]) / position_cum[0];
+                       for ( ; ; ) {
+                               if (low >= Q2) {
+                                       value -= Q2;  low -= Q2;  high -= Q2;
+                               } else if (low >= Q1 && high <= Q3) {
+                                       value -= Q1;  low -= Q1;  high -= Q1;
+                               } else if (high > Q2) break;
+                               low += low;  high += high;
+                               value *= 2;
+                               if ((mask >>= 1) == 0) {
+                                       buffer = (ip >= srcend) ? 0 : *(ip++);
+                                       mask = 128;
+                               }
+                               value += ((buffer & mask) != 0);
+                       }
+                       i = (r - i - 1) & (N - 1);
+                       for (k = 0; k < j; k++) {
+                               c = text_buf[(i + k) & (N - 1)];
+                               if (op >= dstend) return -1;
+                               *(op++) = c;
+                               text_buf[r++] = c;
+                               r &= (N - 1);
+                       }
+               }
+       }
+       return 0;
+}
+
+int lzari_decompress(unsigned char *data_in, unsigned char *cpage_out,
+                     u32 srclen, u32 destlen)
+{
+    return Decode(data_in, cpage_out, srclen, destlen);
+}
diff -Naur u-boot-2009.03_orig/fs/jffs2/compr_lzo.c u-boot-2009.03/fs/jffs2/compr_lzo.c
--- u-boot-2009.03_orig/fs/jffs2/compr_lzo.c    2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/fs/jffs2/compr_lzo.c 2009-03-31 14:55:57.876998400 -0700
@@ -1,401 +1,401 @@
-/*
- * JFFS2 -- Journalling Flash File System, Version 2.
- *
- * Copyright (C) 2004 Patrik Kluba,
- *                   University of Szeged, Hungary
- *
- * For licensing information, see the file 'LICENCE' in the
- * jffs2 directory.
- *
- * $Id: compr_lzo.c,v 1.3 2004/06/23 16:34:39 havasi Exp $
- *
- */
-
-/*
-   LZO1X-1 (and -999) compression module for jffs2
-   based on the original LZO sources
-*/
-
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */
-
-/*
-   Original copyright notice follows:
-
-   lzo1x_9x.c -- implementation of the LZO1X-999 compression algorithm
-   lzo_ptr.h -- low-level pointer constructs
-   lzo_swd.ch -- sliding window dictionary
-   lzoconf.h -- configuration for the LZO real-time data compression library
-   lzo_mchw.ch -- matching functions using a window
-   minilzo.c -- mini subset of the LZO real-time data compression library
-   config1x.h -- configuration for the LZO1X algorithm
-   lzo1x.h -- public interface of the LZO1X compression algorithm
-
-   These files are part of the LZO real-time data compression library.
-
-   Copyright (C) 1996-2002 Markus Franz Xaver Johannes Oberhumer
-   All Rights Reserved.
-
-   The LZO library 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.
-
-   The LZO library 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 the LZO library; see the file COPYING.
-   If not, write to the Free Software Foundation, Inc.,
-   59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-   Markus F.X.J. Oberhumer
-   <markus@oberhumer.com>
-*/
-
-/*
-
-       2004-02-16  pajko <pajko(AT)halom(DOT)u-szeged(DOT)hu>
-                               Initial release
-                                       -removed all 16 bit code
-                                       -all sensitive data will be on 4 byte boundary
-                                       -removed check parts for library use
-                                       -removed all but LZO1X-* compression
-
-*/
-
-
-#include <config.h>
-#include <linux/stddef.h>
-#include <jffs2/jffs2.h>
-#include <jffs2/compr_rubin.h>
-
-/* Integral types that have *exactly* the same number of bits as a lzo_voidp */
-typedef unsigned long lzo_ptr_t;
-typedef long lzo_sptr_t;
-
-/* data type definitions */
-#define U32 unsigned long
-#define S32 signed long
-#define I32 long
-#define U16 unsigned short
-#define S16 signed short
-#define I16 short
-#define U8 unsigned char
-#define S8 signed char
-#define I8 char
-
-#define M1_MAX_OFFSET  0x0400
-#define M2_MAX_OFFSET  0x0800
-#define M3_MAX_OFFSET  0x4000
-#define M4_MAX_OFFSET  0xbfff
-
-#define __COPY4(dst,src)  * (lzo_uint32p)(dst) = * (const lzo_uint32p)(src)
-#define COPY4(dst,src) __COPY4((lzo_ptr_t)(dst),(lzo_ptr_t)(src))
-
-#define TEST_IP                (ip < ip_end)
-#define TEST_OP                (op <= op_end)
-
-#define NEED_IP(x) \
-           if ((lzo_uint)(ip_end - ip) < (lzo_uint)(x))  goto input_overrun
-#define NEED_OP(x) \
-           if ((lzo_uint)(op_end - op) < (lzo_uint)(x))  goto output_overrun
-#define TEST_LOOKBEHIND(m_pos,out)    if (m_pos < out) goto lookbehind_overrun
-
-typedef U32 lzo_uint32;
-typedef I32 lzo_int32;
-typedef U32 lzo_uint;
-typedef I32 lzo_int;
-typedef int lzo_bool;
-
-#define lzo_byte               U8
-#define lzo_bytep              U8 *
-#define lzo_charp              char *
-#define lzo_voidp              void *
-#define lzo_shortp             short *
-#define lzo_ushortp            unsigned short *
-#define lzo_uint32p            lzo_uint32 *
-#define lzo_int32p             lzo_int32 *
-#define lzo_uintp              lzo_uint *
-#define lzo_intp               lzo_int *
-#define lzo_voidpp             lzo_voidp *
-#define lzo_bytepp             lzo_bytep *
-#define lzo_sizeof_dict_t              sizeof(lzo_bytep)
-
-#define LZO_E_OK                   0
-#define LZO_E_ERROR                (-1)
-#define LZO_E_OUT_OF_MEMORY        (-2)        /* not used right now */
-#define LZO_E_NOT_COMPRESSIBLE     (-3)        /* not used right now */
-#define LZO_E_INPUT_OVERRUN        (-4)
-#define LZO_E_OUTPUT_OVERRUN       (-5)
-#define LZO_E_LOOKBEHIND_OVERRUN    (-6)
-#define LZO_E_EOF_NOT_FOUND        (-7)
-#define LZO_E_INPUT_NOT_CONSUMED    (-8)
-
-#define PTR(a)                         ((lzo_ptr_t) (a))
-#define PTR_LINEAR(a)          PTR(a)
-#define PTR_ALIGNED_4(a)       ((PTR_LINEAR(a) & 3) == 0)
-#define PTR_ALIGNED_8(a)       ((PTR_LINEAR(a) & 7) == 0)
-#define PTR_ALIGNED2_4(a,b)    (((PTR_LINEAR(a) | PTR_LINEAR(b)) & 3) == 0)
-#define PTR_ALIGNED2_8(a,b)    (((PTR_LINEAR(a) | PTR_LINEAR(b)) & 7) == 0)
-#define PTR_LT(a,b)                    (PTR(a) < PTR(b))
-#define PTR_GE(a,b)                    (PTR(a) >= PTR(b))
-#define PTR_DIFF(a,b)          ((lzo_ptrdiff_t) (PTR(a) - PTR(b)))
-#define pd(a,b)                        ((lzo_uint) ((a)-(b)))
-
-typedef ptrdiff_t lzo_ptrdiff_t;
-
-static int
-lzo1x_decompress (const lzo_byte * in, lzo_uint in_len,
-                 lzo_byte * out, lzo_uintp out_len, lzo_voidp wrkmem)
-{
-       register lzo_byte *op;
-       register const lzo_byte *ip;
-       register lzo_uint t;
-
-       register const lzo_byte *m_pos;
-
-       const lzo_byte *const ip_end = in + in_len;
-       lzo_byte *const op_end = out + *out_len;
-
-       *out_len = 0;
-
-       op = out;
-       ip = in;
-
-       if (*ip > 17)
-       {
-               t = *ip++ - 17;
-               if (t < 4)
-                       goto match_next;
-               NEED_OP (t);
-               NEED_IP (t + 1);
-               do
-                       *op++ = *ip++;
-               while (--t > 0);
-               goto first_literal_run;
-       }
-
-       while (TEST_IP && TEST_OP)
-       {
-               t = *ip++;
-               if (t >= 16)
-                       goto match;
-               if (t == 0)
-               {
-                       NEED_IP (1);
-                       while (*ip == 0)
-                       {
-                               t += 255;
-                               ip++;
-                               NEED_IP (1);
-                       }
-                       t += 15 + *ip++;
-               }
-               NEED_OP (t + 3);
-               NEED_IP (t + 4);
-               if (PTR_ALIGNED2_4 (op, ip))
-               {
-                       COPY4 (op, ip);
-
-                       op += 4;
-                       ip += 4;
-                       if (--t > 0)
-                       {
-                               if (t >= 4)
-                               {
-                                       do
-                                       {
-                                               COPY4 (op, ip);
-                                               op += 4;
-                                               ip += 4;
-                                               t -= 4;
-                                       }
-                                       while (t >= 4);
-                                       if (t > 0)
-                                               do
-                                                       *op++ = *ip++;
-                                               while (--t > 0);
-                               }
-                               else
-                                       do
-                                               *op++ = *ip++;
-                                       while (--t > 0);
-                       }
-               }
-               else
-               {
-                       *op++ = *ip++;
-                       *op++ = *ip++;
-                       *op++ = *ip++;
-                       do
-                               *op++ = *ip++;
-                       while (--t > 0);
-               }
-             first_literal_run:
-
-               t = *ip++;
-               if (t >= 16)
-                       goto match;
-
-               m_pos = op - (1 + M2_MAX_OFFSET);
-               m_pos -= t >> 2;
-               m_pos -= *ip++ << 2;
-               TEST_LOOKBEHIND (m_pos, out);
-               NEED_OP (3);
-               *op++ = *m_pos++;
-               *op++ = *m_pos++;
-               *op++ = *m_pos;
-
-               goto match_done;
-
-               while (TEST_IP && TEST_OP)
-               {
-                     match:
-                       if (t >= 64)
-                       {
-                               m_pos = op - 1;
-                               m_pos -= (t >> 2) & 7;
-                               m_pos -= *ip++ << 3;
-                               t = (t >> 5) - 1;
-                               TEST_LOOKBEHIND (m_pos, out);
-                               NEED_OP (t + 3 - 1);
-                               goto copy_match;
-
-                       }
-                       else if (t >= 32)
-                       {
-                               t &= 31;
-                               if (t == 0)
-                               {
-                                       NEED_IP (1);
-                                       while (*ip == 0)
-                                       {
-                                               t += 255;
-                                               ip++;
-                                               NEED_IP (1);
-                                       }
-                                       t += 31 + *ip++;
-                               }
-
-                               m_pos = op - 1;
-                               m_pos -= (ip[0] >> 2) + (ip[1] << 6);
-
-                               ip += 2;
-                       }
-                       else if (t >= 16)
-                       {
-                               m_pos = op;
-                               m_pos -= (t & 8) << 11;
-
-                               t &= 7;
-                               if (t == 0)
-                               {
-                                       NEED_IP (1);
-                                       while (*ip == 0)
-                                       {
-                                               t += 255;
-                                               ip++;
-                                               NEED_IP (1);
-                                       }
-                                       t += 7 + *ip++;
-                               }
-
-                               m_pos -= (ip[0] >> 2) + (ip[1] << 6);
-
-                               ip += 2;
-                               if (m_pos == op)
-                                       goto eof_found;
-                               m_pos -= 0x4000;
-                       }
-                       else
-                       {
-
-                               m_pos = op - 1;
-                               m_pos -= t >> 2;
-                               m_pos -= *ip++ << 2;
-                               TEST_LOOKBEHIND (m_pos, out);
-                               NEED_OP (2);
-                               *op++ = *m_pos++;
-                               *op++ = *m_pos;
-
-                               goto match_done;
-                       }
-
-                       TEST_LOOKBEHIND (m_pos, out);
-                       NEED_OP (t + 3 - 1);
-                       if (t >= 2 * 4 - (3 - 1)
-                           && PTR_ALIGNED2_4 (op, m_pos))
-                       {
-                               COPY4 (op, m_pos);
-                               op += 4;
-                               m_pos += 4;
-                               t -= 4 - (3 - 1);
-                               do
-                               {
-                                       COPY4 (op, m_pos);
-                                       op += 4;
-                                       m_pos += 4;
-                                       t -= 4;
-                               }
-                               while (t >= 4);
-                               if (t > 0)
-                                       do
-                                               *op++ = *m_pos++;
-                                       while (--t > 0);
-                       }
-                       else
-
-                       {
-                             copy_match:
-                               *op++ = *m_pos++;
-                               *op++ = *m_pos++;
-                               do
-                                       *op++ = *m_pos++;
-                               while (--t > 0);
-                       }
-
-                     match_done:
-                       t = ip[-2] & 3;
-
-                       if (t == 0)
-                               break;
-
-                     match_next:
-                       NEED_OP (t);
-                       NEED_IP (t + 1);
-                       do
-                               *op++ = *ip++;
-                       while (--t > 0);
-                       t = *ip++;
-               }
-       }
-       *out_len = op - out;
-       return LZO_E_EOF_NOT_FOUND;
-
-      eof_found:
-       *out_len = op - out;
-       return (ip == ip_end ? LZO_E_OK :
-               (ip <
-                ip_end ? LZO_E_INPUT_NOT_CONSUMED : LZO_E_INPUT_OVERRUN));
-
-      input_overrun:
-       *out_len = op - out;
-       return LZO_E_INPUT_OVERRUN;
-
-      output_overrun:
-       *out_len = op - out;
-       return LZO_E_OUTPUT_OVERRUN;
-
-      lookbehind_overrun:
-       *out_len = op - out;
-       return LZO_E_LOOKBEHIND_OVERRUN;
-}
-
-int lzo_decompress(unsigned char *data_in, unsigned char *cpage_out,
-                     u32 srclen, u32 destlen)
-{
-       lzo_uint outlen = destlen;
-       return lzo1x_decompress (data_in, srclen, cpage_out, &outlen, NULL);
-}
+/*
+ * JFFS2 -- Journalling Flash File System, Version 2.
+ *
+ * Copyright (C) 2004 Patrik Kluba,
+ *                   University of Szeged, Hungary
+ *
+ * For licensing information, see the file 'LICENCE' in the
+ * jffs2 directory.
+ *
+ * $Id: compr_lzo.c,v 1.1.1.1 2009/03/25 22:22:11 kenagy Exp $
+ *
+ */
+
+/*
+   LZO1X-1 (and -999) compression module for jffs2
+   based on the original LZO sources
+*/
+
+/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */
+
+/*
+   Original copyright notice follows:
+
+   lzo1x_9x.c -- implementation of the LZO1X-999 compression algorithm
+   lzo_ptr.h -- low-level pointer constructs
+   lzo_swd.ch -- sliding window dictionary
+   lzoconf.h -- configuration for the LZO real-time data compression library
+   lzo_mchw.ch -- matching functions using a window
+   minilzo.c -- mini subset of the LZO real-time data compression library
+   config1x.h -- configuration for the LZO1X algorithm
+   lzo1x.h -- public interface of the LZO1X compression algorithm
+
+   These files are part of the LZO real-time data compression library.
+
+   Copyright (C) 1996-2002 Markus Franz Xaver Johannes Oberhumer
+   All Rights Reserved.
+
+   The LZO library 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.
+
+   The LZO library 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 the LZO library; see the file COPYING.
+   If not, write to the Free Software Foundation, Inc.,
+   59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+   Markus F.X.J. Oberhumer
+   <markus@oberhumer.com>
+*/
+
+/*
+
+       2004-02-16  pajko <pajko(AT)halom(DOT)u-szeged(DOT)hu>
+                               Initial release
+                                       -removed all 16 bit code
+                                       -all sensitive data will be on 4 byte boundary
+                                       -removed check parts for library use
+                                       -removed all but LZO1X-* compression
+
+*/
+
+
+#include <config.h>
+#include <linux/stddef.h>
+#include <jffs2/jffs2.h>
+#include <jffs2/compr_rubin.h>
+
+/* Integral types that have *exactly* the same number of bits as a lzo_voidp */
+typedef unsigned long lzo_ptr_t;
+typedef long lzo_sptr_t;
+
+/* data type definitions */
+#define U32 unsigned long
+#define S32 signed long
+#define I32 long
+#define U16 unsigned short
+#define S16 signed short
+#define I16 short
+#define U8 unsigned char
+#define S8 signed char
+#define I8 char
+
+#define M1_MAX_OFFSET  0x0400
+#define M2_MAX_OFFSET  0x0800
+#define M3_MAX_OFFSET  0x4000
+#define M4_MAX_OFFSET  0xbfff
+
+#define __COPY4(dst,src)  * (lzo_uint32p)(dst) = * (const lzo_uint32p)(src)
+#define COPY4(dst,src) __COPY4((lzo_ptr_t)(dst),(lzo_ptr_t)(src))
+
+#define TEST_IP                (ip < ip_end)
+#define TEST_OP                (op <= op_end)
+
+#define NEED_IP(x) \
+           if ((lzo_uint)(ip_end - ip) < (lzo_uint)(x))  goto input_overrun
+#define NEED_OP(x) \
+           if ((lzo_uint)(op_end - op) < (lzo_uint)(x))  goto output_overrun
+#define TEST_LOOKBEHIND(m_pos,out)    if (m_pos < out) goto lookbehind_overrun
+
+typedef U32 lzo_uint32;
+typedef I32 lzo_int32;
+typedef U32 lzo_uint;
+typedef I32 lzo_int;
+typedef int lzo_bool;
+
+#define lzo_byte               U8
+#define lzo_bytep              U8 *
+#define lzo_charp              char *
+#define lzo_voidp              void *
+#define lzo_shortp             short *
+#define lzo_ushortp            unsigned short *
+#define lzo_uint32p            lzo_uint32 *
+#define lzo_int32p             lzo_int32 *
+#define lzo_uintp              lzo_uint *
+#define lzo_intp               lzo_int *
+#define lzo_voidpp             lzo_voidp *
+#define lzo_bytepp             lzo_bytep *
+#define lzo_sizeof_dict_t              sizeof(lzo_bytep)
+
+#define LZO_E_OK                   0
+#define LZO_E_ERROR                (-1)
+#define LZO_E_OUT_OF_MEMORY        (-2)        /* not used right now */
+#define LZO_E_NOT_COMPRESSIBLE     (-3)        /* not used right now */
+#define LZO_E_INPUT_OVERRUN        (-4)
+#define LZO_E_OUTPUT_OVERRUN       (-5)
+#define LZO_E_LOOKBEHIND_OVERRUN    (-6)
+#define LZO_E_EOF_NOT_FOUND        (-7)
+#define LZO_E_INPUT_NOT_CONSUMED    (-8)
+
+#define PTR(a)                         ((lzo_ptr_t) (a))
+#define PTR_LINEAR(a)          PTR(a)
+#define PTR_ALIGNED_4(a)       ((PTR_LINEAR(a) & 3) == 0)
+#define PTR_ALIGNED_8(a)       ((PTR_LINEAR(a) & 7) == 0)
+#define PTR_ALIGNED2_4(a,b)    (((PTR_LINEAR(a) | PTR_LINEAR(b)) & 3) == 0)
+#define PTR_ALIGNED2_8(a,b)    (((PTR_LINEAR(a) | PTR_LINEAR(b)) & 7) == 0)
+#define PTR_LT(a,b)                    (PTR(a) < PTR(b))
+#define PTR_GE(a,b)                    (PTR(a) >= PTR(b))
+#define PTR_DIFF(a,b)          ((lzo_ptrdiff_t) (PTR(a) - PTR(b)))
+#define pd(a,b)                        ((lzo_uint) ((a)-(b)))
+
+typedef ptrdiff_t lzo_ptrdiff_t;
+
+static int
+lzo1x_decompress (const lzo_byte * in, lzo_uint in_len,
+                 lzo_byte * out, lzo_uintp out_len, lzo_voidp wrkmem)
+{
+       register lzo_byte *op;
+       register const lzo_byte *ip;
+       register lzo_uint t;
+
+       register const lzo_byte *m_pos;
+
+       const lzo_byte *const ip_end = in + in_len;
+       lzo_byte *const op_end = out + *out_len;
+
+       *out_len = 0;
+
+       op = out;
+       ip = in;
+
+       if (*ip > 17)
+       {
+               t = *ip++ - 17;
+               if (t < 4)
+                       goto match_next;
+               NEED_OP (t);
+               NEED_IP (t + 1);
+               do
+                       *op++ = *ip++;
+               while (--t > 0);
+               goto first_literal_run;
+       }
+
+       while (TEST_IP && TEST_OP)
+       {
+               t = *ip++;
+               if (t >= 16)
+                       goto match;
+               if (t == 0)
+               {
+                       NEED_IP (1);
+                       while (*ip == 0)
+                       {
+                               t += 255;
+                               ip++;
+                               NEED_IP (1);
+                       }
+                       t += 15 + *ip++;
+               }
+               NEED_OP (t + 3);
+               NEED_IP (t + 4);
+               if (PTR_ALIGNED2_4 (op, ip))
+               {
+                       COPY4 (op, ip);
+
+                       op += 4;
+                       ip += 4;
+                       if (--t > 0)
+                       {
+                               if (t >= 4)
+                               {
+                                       do
+                                       {
+                                               COPY4 (op, ip);
+                                               op += 4;
+                                               ip += 4;
+                                               t -= 4;
+                                       }
+                                       while (t >= 4);
+                                       if (t > 0)
+                                               do
+                                                       *op++ = *ip++;
+                                               while (--t > 0);
+                               }
+                               else
+                                       do
+                                               *op++ = *ip++;
+                                       while (--t > 0);
+                       }
+               }
+               else
+               {
+                       *op++ = *ip++;
+                       *op++ = *ip++;
+                       *op++ = *ip++;
+                       do
+                               *op++ = *ip++;
+                       while (--t > 0);
+               }
+             first_literal_run:
+
+               t = *ip++;
+               if (t >= 16)
+                       goto match;
+
+               m_pos = op - (1 + M2_MAX_OFFSET);
+               m_pos -= t >> 2;
+               m_pos -= *ip++ << 2;
+               TEST_LOOKBEHIND (m_pos, out);
+               NEED_OP (3);
+               *op++ = *m_pos++;
+               *op++ = *m_pos++;
+               *op++ = *m_pos;
+
+               goto match_done;
+
+               while (TEST_IP && TEST_OP)
+               {
+                     match:
+                       if (t >= 64)
+                       {
+                               m_pos = op - 1;
+                               m_pos -= (t >> 2) & 7;
+                               m_pos -= *ip++ << 3;
+                               t = (t >> 5) - 1;
+                               TEST_LOOKBEHIND (m_pos, out);
+                               NEED_OP (t + 3 - 1);
+                               goto copy_match;
+
+                       }
+                       else if (t >= 32)
+                       {
+                               t &= 31;
+                               if (t == 0)
+                               {
+                                       NEED_IP (1);
+                                       while (*ip == 0)
+                                       {
+                                               t += 255;
+                                               ip++;
+                                               NEED_IP (1);
+                                       }
+                                       t += 31 + *ip++;
+                               }
+
+                               m_pos = op - 1;
+                               m_pos -= (ip[0] >> 2) + (ip[1] << 6);
+
+                               ip += 2;
+                       }
+                       else if (t >= 16)
+                       {
+                               m_pos = op;
+                               m_pos -= (t & 8) << 11;
+
+                               t &= 7;
+                               if (t == 0)
+                               {
+                                       NEED_IP (1);
+                                       while (*ip == 0)
+                                       {
+                                               t += 255;
+                                               ip++;
+                                               NEED_IP (1);
+                                       }
+                                       t += 7 + *ip++;
+                               }
+
+                               m_pos -= (ip[0] >> 2) + (ip[1] << 6);
+
+                               ip += 2;
+                               if (m_pos == op)
+                                       goto eof_found;
+                               m_pos -= 0x4000;
+                       }
+                       else
+                       {
+
+                               m_pos = op - 1;
+                               m_pos -= t >> 2;
+                               m_pos -= *ip++ << 2;
+                               TEST_LOOKBEHIND (m_pos, out);
+                               NEED_OP (2);
+                               *op++ = *m_pos++;
+                               *op++ = *m_pos;
+
+                               goto match_done;
+                       }
+
+                       TEST_LOOKBEHIND (m_pos, out);
+                       NEED_OP (t + 3 - 1);
+                       if (t >= 2 * 4 - (3 - 1)
+                           && PTR_ALIGNED2_4 (op, m_pos))
+                       {
+                               COPY4 (op, m_pos);
+                               op += 4;
+                               m_pos += 4;
+                               t -= 4 - (3 - 1);
+                               do
+                               {
+                                       COPY4 (op, m_pos);
+                                       op += 4;
+                                       m_pos += 4;
+                                       t -= 4;
+                               }
+                               while (t >= 4);
+                               if (t > 0)
+                                       do
+                                               *op++ = *m_pos++;
+                                       while (--t > 0);
+                       }
+                       else
+
+                       {
+                             copy_match:
+                               *op++ = *m_pos++;
+                               *op++ = *m_pos++;
+                               do
+                                       *op++ = *m_pos++;
+                               while (--t > 0);
+                       }
+
+                     match_done:
+                       t = ip[-2] & 3;
+
+                       if (t == 0)
+                               break;
+
+                     match_next:
+                       NEED_OP (t);
+                       NEED_IP (t + 1);
+                       do
+                               *op++ = *ip++;
+                       while (--t > 0);
+                       t = *ip++;
+               }
+       }
+       *out_len = op - out;
+       return LZO_E_EOF_NOT_FOUND;
+
+      eof_found:
+       *out_len = op - out;
+       return (ip == ip_end ? LZO_E_OK :
+               (ip <
+                ip_end ? LZO_E_INPUT_NOT_CONSUMED : LZO_E_INPUT_OVERRUN));
+
+      input_overrun:
+       *out_len = op - out;
+       return LZO_E_INPUT_OVERRUN;
+
+      output_overrun:
+       *out_len = op - out;
+       return LZO_E_OUTPUT_OVERRUN;
+
+      lookbehind_overrun:
+       *out_len = op - out;
+       return LZO_E_LOOKBEHIND_OVERRUN;
+}
+
+int lzo_decompress(unsigned char *data_in, unsigned char *cpage_out,
+                     u32 srclen, u32 destlen)
+{
+       lzo_uint outlen = destlen;
+       return lzo1x_decompress (data_in, srclen, cpage_out, &outlen, NULL);
+}
diff -Naur u-boot-2009.03_orig/fs/jffs2/compr_rtime.c u-boot-2009.03/fs/jffs2/compr_rtime.c
--- u-boot-2009.03_orig/fs/jffs2/compr_rtime.c  2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/fs/jffs2/compr_rtime.c       2009-03-31 14:55:57.908248000 -0700
@@ -1,87 +1,87 @@
-/*
- * JFFS2 -- Journalling Flash File System, Version 2.
- *
- * Copyright (C) 2001 Red Hat, Inc.
- *
- * Created by Arjan van de Ven <arjanv@redhat.com>
- *
- * The original JFFS, from which the design for JFFS2 was derived,
- * was designed and implemented by Axis Communications AB.
- *
- * The contents of this file are subject to the Red Hat eCos Public
- * License Version 1.1 (the "Licence"); you may not use this file
- * except in compliance with the Licence.  You may obtain a copy of
- * the Licence at http://www.redhat.com/
- *
- * Software distributed under the Licence is distributed on an "AS IS"
- * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.
- * See the Licence for the specific language governing rights and
- * limitations under the Licence.
- *
- * The Original Code is JFFS2 - Journalling Flash File System, version 2
- *
- * Alternatively, the contents of this file may be used under the
- * terms of the GNU General Public License version 2 (the "GPL"), in
- * which case the provisions of the GPL are applicable instead of the
- * above.  If you wish to allow the use of your version of this file
- * only under the terms of the GPL and not to allow others to use your
- * version of this file under the RHEPL, indicate your decision by
- * deleting the provisions above and replace them with the notice and
- * other provisions required by the GPL.  If you do not delete the
- * provisions above, a recipient may use your version of this file
- * under either the RHEPL or the GPL.
- *
- * $Id: compr_rtime.c,v 1.2 2002/01/24 22:58:42 rfeany Exp $
- *
- *
- * Very simple lz77-ish encoder.
- *
- * Theory of operation: Both encoder and decoder have a list of "last
- * occurances" for every possible source-value; after sending the
- * first source-byte, the second byte indicated the "run" length of
- * matches
- *
- * The algorithm is intended to only send "whole bytes", no bit-messing.
- *
- */
-
-#include <config.h>
-#include <jffs2/jffs2.h>
-
-void rtime_decompress(unsigned char *data_in, unsigned char *cpage_out,
-                     u32 srclen, u32 destlen)
-{
-       int positions[256];
-       int outpos;
-       int pos;
-       int i;
-
-       outpos = pos = 0;
-
-       for (i = 0; i < 256; positions[i++] = 0);
-
-       while (outpos<destlen) {
-               unsigned char value;
-               int backoffs;
-               int repeat;
-
-               value = data_in[pos++];
-               cpage_out[outpos++] = value; /* first the verbatim copied byte */
-               repeat = data_in[pos++];
-               backoffs = positions[value];
-
-               positions[value]=outpos;
-               if (repeat) {
-                       if (backoffs + repeat >= outpos) {
-                               while(repeat) {
-                                       cpage_out[outpos++] = cpage_out[backoffs++];
-                                       repeat--;
-                               }
-                       } else {
-                               for (i = 0; i < repeat; i++)
-                                       *(cpage_out + outpos + i) = *(cpage_out + backoffs + i);
-                               outpos+=repeat;
-                       }
-               }
-       }
-}
+/*
+ * JFFS2 -- Journalling Flash File System, Version 2.
+ *
+ * Copyright (C) 2001 Red Hat, Inc.
+ *
+ * Created by Arjan van de Ven <arjanv@redhat.com>
+ *
+ * The original JFFS, from which the design for JFFS2 was derived,
+ * was designed and implemented by Axis Communications AB.
+ *
+ * The contents of this file are subject to the Red Hat eCos Public
+ * License Version 1.1 (the "Licence"); you may not use this file
+ * except in compliance with the Licence.  You may obtain a copy of
+ * the Licence at http://www.redhat.com/
+ *
+ * Software distributed under the Licence is distributed on an "AS IS"
+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.
+ * See the Licence for the specific language governing rights and
+ * limitations under the Licence.
+ *
+ * The Original Code is JFFS2 - Journalling Flash File System, version 2
+ *
+ * Alternatively, the contents of this file may be used under the
+ * terms of the GNU General Public License version 2 (the "GPL"), in
+ * which case the provisions of the GPL are applicable instead of the
+ * above.  If you wish to allow the use of your version of this file
+ * only under the terms of the GPL and not to allow others to use your
+ * version of this file under the RHEPL, indicate your decision by
+ * deleting the provisions above and replace them with the notice and
+ * other provisions required by the GPL.  If you do not delete the
+ * provisions above, a recipient may use your version of this file
+ * under either the RHEPL or the GPL.
+ *
+ * $Id: compr_rtime.c,v 1.1.1.1 2009/03/25 22:22:11 kenagy Exp $
+ *
+ *
+ * Very simple lz77-ish encoder.
+ *
+ * Theory of operation: Both encoder and decoder have a list of "last
+ * occurances" for every possible source-value; after sending the
+ * first source-byte, the second byte indicated the "run" length of
+ * matches
+ *
+ * The algorithm is intended to only send "whole bytes", no bit-messing.
+ *
+ */
+
+#include <config.h>
+#include <jffs2/jffs2.h>
+
+void rtime_decompress(unsigned char *data_in, unsigned char *cpage_out,
+                     u32 srclen, u32 destlen)
+{
+       int positions[256];
+       int outpos;
+       int pos;
+       int i;
+
+       outpos = pos = 0;
+
+       for (i = 0; i < 256; positions[i++] = 0);
+
+       while (outpos<destlen) {
+               unsigned char value;
+               int backoffs;
+               int repeat;
+
+               value = data_in[pos++];
+               cpage_out[outpos++] = value; /* first the verbatim copied byte */
+               repeat = data_in[pos++];
+               backoffs = positions[value];
+
+               positions[value]=outpos;
+               if (repeat) {
+                       if (backoffs + repeat >= outpos) {
+                               while(repeat) {
+                                       cpage_out[outpos++] = cpage_out[backoffs++];
+                                       repeat--;
+                               }
+                       } else {
+                               for (i = 0; i < repeat; i++)
+                                       *(cpage_out + outpos + i) = *(cpage_out + backoffs + i);
+                               outpos+=repeat;
+                       }
+               }
+       }
+}
diff -Naur u-boot-2009.03_orig/fs/jffs2/compr_rubin.c u-boot-2009.03/fs/jffs2/compr_rubin.c
--- u-boot-2009.03_orig/fs/jffs2/compr_rubin.c  2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/fs/jffs2/compr_rubin.c       2009-03-31 14:55:57.939497600 -0700
@@ -1,122 +1,122 @@
-/*
- * JFFS2 -- Journalling Flash File System, Version 2.
- *
- * Copyright (C) 2001 Red Hat, Inc.
- *
- * Created by Arjan van de Ven <arjanv@redhat.com>
- *
- * Heavily modified by Russ Dill <Russ.Dill@asu.edu> in an attempt at
- * a little more speed.
- *
- * The original JFFS, from which the design for JFFS2 was derived,
- * was designed and implemented by Axis Communications AB.
- *
- * The contents of this file are subject to the Red Hat eCos Public
- * License Version 1.1 (the "Licence"); you may not use this file
- * except in compliance with the Licence.  You may obtain a copy of
- * the Licence at http://www.redhat.com/
- *
- * Software distributed under the Licence is distributed on an "AS IS"
- * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.
- * See the Licence for the specific language governing rights and
- * limitations under the Licence.
- *
- * The Original Code is JFFS2 - Journalling Flash File System, version 2
- *
- * Alternatively, the contents of this file may be used under the
- * terms of the GNU General Public License version 2 (the "GPL"), in
- * which case the provisions of the GPL are applicable instead of the
- * above.  If you wish to allow the use of your version of this file
- * only under the terms of the GPL and not to allow others to use your
- * version of this file under the RHEPL, indicate your decision by
- * deleting the provisions above and replace them with the notice and
- * other provisions required by the GPL.  If you do not delete the
- * provisions above, a recipient may use your version of this file
- * under either the RHEPL or the GPL.
- *
- * $Id: compr_rubin.c,v 1.2 2002/01/24 22:58:42 rfeany Exp $
- *
- */
-
-#include <config.h>
-#include <jffs2/jffs2.h>
-#include <jffs2/compr_rubin.h>
-
-
-void rubin_do_decompress(unsigned char *bits, unsigned char *in,
-                        unsigned char *page_out, __u32 destlen)
-{
-       register char *curr = (char *)page_out;
-       char *end = (char *)(page_out + destlen);
-       register unsigned long temp;
-       register unsigned long result;
-       register unsigned long p;
-       register unsigned long q;
-       register unsigned long rec_q;
-       register unsigned long bit;
-       register long i0;
-       unsigned long i;
-
-       /* init_pushpull */
-       temp = *(u32 *) in;
-       bit = 16;
-
-       /* init_rubin */
-       q = 0;
-       p = (long) (2 * UPPER_BIT_RUBIN);
-
-       /* init_decode */
-       rec_q = (in[0] << 8) | in[1];
-
-       while (curr < end) {
-               /* in byte */
-
-               result = 0;
-               for (i = 0; i < 8; i++) {
-                       /* decode */
-
-                       while ((q & UPPER_BIT_RUBIN) || ((p + q) <= UPPER_BIT_RUBIN)) {
-                               q &= ~UPPER_BIT_RUBIN;
-                               q <<= 1;
-                               p <<= 1;
-                               rec_q &= ~UPPER_BIT_RUBIN;
-                               rec_q <<= 1;
-                               rec_q |= (temp >> (bit++ ^ 7)) & 1;
-                               if (bit > 31) {
-                                       u32 *p = (u32 *)in;
-                                       bit = 0;
-                                       temp = *(++p);
-                                       in = (unsigned char *)p;
-                               }
-                       }
-                       i0 =  (bits[i] * p) >> 8;
-
-                       if (i0 <= 0) i0 = 1;
-                       /* if it fails, it fails, we have our crc
-                       if (i0 >= p) i0 = p - 1; */
-
-                       result >>= 1;
-                       if (rec_q < q + i0) {
-                               /* result |= 0x00; */
-                               p = i0;
-                       } else {
-                               result |= 0x80;
-                               p -= i0;
-                               q += i0;
-                       }
-               }
-               *(curr++) = result;
-       }
-}
-
-void dynrubin_decompress(unsigned char *data_in, unsigned char *cpage_out,
-                  unsigned long sourcelen, unsigned long dstlen)
-{
-       unsigned char bits[8];
-       int c;
-
-       for (c=0; c<8; c++)
-               bits[c] = (256 - data_in[c]);
-
-       rubin_do_decompress(bits, data_in+8, cpage_out, dstlen);
-}
+/*
+ * JFFS2 -- Journalling Flash File System, Version 2.
+ *
+ * Copyright (C) 2001 Red Hat, Inc.
+ *
+ * Created by Arjan van de Ven <arjanv@redhat.com>
+ *
+ * Heavily modified by Russ Dill <Russ.Dill@asu.edu> in an attempt at
+ * a little more speed.
+ *
+ * The original JFFS, from which the design for JFFS2 was derived,
+ * was designed and implemented by Axis Communications AB.
+ *
+ * The contents of this file are subject to the Red Hat eCos Public
+ * License Version 1.1 (the "Licence"); you may not use this file
+ * except in compliance with the Licence.  You may obtain a copy of
+ * the Licence at http://www.redhat.com/
+ *
+ * Software distributed under the Licence is distributed on an "AS IS"
+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.
+ * See the Licence for the specific language governing rights and
+ * limitations under the Licence.
+ *
+ * The Original Code is JFFS2 - Journalling Flash File System, version 2
+ *
+ * Alternatively, the contents of this file may be used under the
+ * terms of the GNU General Public License version 2 (the "GPL"), in
+ * which case the provisions of the GPL are applicable instead of the
+ * above.  If you wish to allow the use of your version of this file
+ * only under the terms of the GPL and not to allow others to use your
+ * version of this file under the RHEPL, indicate your decision by
+ * deleting the provisions above and replace them with the notice and
+ * other provisions required by the GPL.  If you do not delete the
+ * provisions above, a recipient may use your version of this file
+ * under either the RHEPL or the GPL.
+ *
+ * $Id: compr_rubin.c,v 1.1.1.1 2009/03/25 22:22:11 kenagy Exp $
+ *
+ */
+
+#include <config.h>
+#include <jffs2/jffs2.h>
+#include <jffs2/compr_rubin.h>
+
+
+void rubin_do_decompress(unsigned char *bits, unsigned char *in,
+                        unsigned char *page_out, __u32 destlen)
+{
+       register char *curr = (char *)page_out;
+       char *end = (char *)(page_out + destlen);
+       register unsigned long temp;
+       register unsigned long result;
+       register unsigned long p;
+       register unsigned long q;
+       register unsigned long rec_q;
+       register unsigned long bit;
+       register long i0;
+       unsigned long i;
+
+       /* init_pushpull */
+       temp = *(u32 *) in;
+       bit = 16;
+
+       /* init_rubin */
+       q = 0;
+       p = (long) (2 * UPPER_BIT_RUBIN);
+
+       /* init_decode */
+       rec_q = (in[0] << 8) | in[1];
+
+       while (curr < end) {
+               /* in byte */
+
+               result = 0;
+               for (i = 0; i < 8; i++) {
+                       /* decode */
+
+                       while ((q & UPPER_BIT_RUBIN) || ((p + q) <= UPPER_BIT_RUBIN)) {
+                               q &= ~UPPER_BIT_RUBIN;
+                               q <<= 1;
+                               p <<= 1;
+                               rec_q &= ~UPPER_BIT_RUBIN;
+                               rec_q <<= 1;
+                               rec_q |= (temp >> (bit++ ^ 7)) & 1;
+                               if (bit > 31) {
+                                       u32 *p = (u32 *)in;
+                                       bit = 0;
+                                       temp = *(++p);
+                                       in = (unsigned char *)p;
+                               }
+                       }
+                       i0 =  (bits[i] * p) >> 8;
+
+                       if (i0 <= 0) i0 = 1;
+                       /* if it fails, it fails, we have our crc
+                       if (i0 >= p) i0 = p - 1; */
+
+                       result >>= 1;
+                       if (rec_q < q + i0) {
+                               /* result |= 0x00; */
+                               p = i0;
+                       } else {
+                               result |= 0x80;
+                               p -= i0;
+                               q += i0;
+                       }
+               }
+               *(curr++) = result;
+       }
+}
+
+void dynrubin_decompress(unsigned char *data_in, unsigned char *cpage_out,
+                  unsigned long sourcelen, unsigned long dstlen)
+{
+       unsigned char bits[8];
+       int c;
+
+       for (c=0; c<8; c++)
+               bits[c] = (256 - data_in[c]);
+
+       rubin_do_decompress(bits, data_in+8, cpage_out, dstlen);
+}
diff -Naur u-boot-2009.03_orig/fs/jffs2/compr_zlib.c u-boot-2009.03/fs/jffs2/compr_zlib.c
--- u-boot-2009.03_orig/fs/jffs2/compr_zlib.c   2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/fs/jffs2/compr_zlib.c        2009-03-31 14:55:57.970747200 -0700
@@ -1,48 +1,48 @@
-/*
- * JFFS2 -- Journalling Flash File System, Version 2.
- *
- * Copyright (C) 2001 Red Hat, Inc.
- *
- * Created by David Woodhouse <dwmw2@cambridge.redhat.com>
- *
- * The original JFFS, from which the design for JFFS2 was derived,
- * was designed and implemented by Axis Communications AB.
- *
- * The contents of this file are subject to the Red Hat eCos Public
- * License Version 1.1 (the "Licence"); you may not use this file
- * except in compliance with the Licence.  You may obtain a copy of
- * the Licence at http://www.redhat.com/
- *
- * Software distributed under the Licence is distributed on an "AS IS"
- * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.
- * See the Licence for the specific language governing rights and
- * limitations under the Licence.
- *
- * The Original Code is JFFS2 - Journalling Flash File System, version 2
- *
- * Alternatively, the contents of this file may be used under the
- * terms of the GNU General Public License version 2 (the "GPL"), in
- * which case the provisions of the GPL are applicable instead of the
- * above.  If you wish to allow the use of your version of this file
- * only under the terms of the GPL and not to allow others to use your
- * version of this file under the RHEPL, indicate your decision by
- * deleting the provisions above and replace them with the notice and
- * other provisions required by the GPL.  If you do not delete the
- * provisions above, a recipient may use your version of this file
- * under either the RHEPL or the GPL.
- *
- * $Id: compr_zlib.c,v 1.2 2002/01/24 22:58:42 rfeany Exp $
- *
- */
-
-#include <common.h>
-#include <config.h>
-#include <jffs2/jffs2.h>
-#include <jffs2/mini_inflate.h>
-
-long zlib_decompress(unsigned char *data_in, unsigned char *cpage_out,
-                     __u32 srclen, __u32 destlen)
-{
-    return (decompress_block(cpage_out, data_in + 2, (void *) ldr_memcpy));
-
-}
+/*
+ * JFFS2 -- Journalling Flash File System, Version 2.
+ *
+ * Copyright (C) 2001 Red Hat, Inc.
+ *
+ * Created by David Woodhouse <dwmw2@cambridge.redhat.com>
+ *
+ * The original JFFS, from which the design for JFFS2 was derived,
+ * was designed and implemented by Axis Communications AB.
+ *
+ * The contents of this file are subject to the Red Hat eCos Public
+ * License Version 1.1 (the "Licence"); you may not use this file
+ * except in compliance with the Licence.  You may obtain a copy of
+ * the Licence at http://www.redhat.com/
+ *
+ * Software distributed under the Licence is distributed on an "AS IS"
+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.
+ * See the Licence for the specific language governing rights and
+ * limitations under the Licence.
+ *
+ * The Original Code is JFFS2 - Journalling Flash File System, version 2
+ *
+ * Alternatively, the contents of this file may be used under the
+ * terms of the GNU General Public License version 2 (the "GPL"), in
+ * which case the provisions of the GPL are applicable instead of the
+ * above.  If you wish to allow the use of your version of this file
+ * only under the terms of the GPL and not to allow others to use your
+ * version of this file under the RHEPL, indicate your decision by
+ * deleting the provisions above and replace them with the notice and
+ * other provisions required by the GPL.  If you do not delete the
+ * provisions above, a recipient may use your version of this file
+ * under either the RHEPL or the GPL.
+ *
+ * $Id: compr_zlib.c,v 1.1.1.1 2009/03/25 22:22:11 kenagy Exp $
+ *
+ */
+
+#include <common.h>
+#include <config.h>
+#include <jffs2/jffs2.h>
+#include <jffs2/mini_inflate.h>
+
+long zlib_decompress(unsigned char *data_in, unsigned char *cpage_out,
+                     __u32 srclen, __u32 destlen)
+{
+    return (decompress_block(cpage_out, data_in + 2, (void *) ldr_memcpy));
+
+}
diff -Naur u-boot-2009.03_orig/fs/jffs2/jffs2_1pass.c u-boot-2009.03/fs/jffs2/jffs2_1pass.c
--- u-boot-2009.03_orig/fs/jffs2/jffs2_1pass.c  2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/fs/jffs2/jffs2_1pass.c       2009-03-31 14:55:58.001996800 -0700
@@ -1,1835 +1,1835 @@
-/*
--------------------------------------------------------------------------
- * Filename:      jffs2.c
- * Version:       $Id: jffs2_1pass.c,v 1.7 2002/01/25 01:56:47 nyet Exp $
- * Copyright:     Copyright (C) 2001, Russ Dill
- * Author:        Russ Dill <Russ.Dill@asu.edu>
- * Description:   Module to load kernel from jffs2
- *-----------------------------------------------------------------------*/
-/*
- * some portions of this code are taken from jffs2, and as such, the
- * following copyright notice is included.
- *
- * JFFS2 -- Journalling Flash File System, Version 2.
- *
- * Copyright (C) 2001 Red Hat, Inc.
- *
- * Created by David Woodhouse <dwmw2@cambridge.redhat.com>
- *
- * The original JFFS, from which the design for JFFS2 was derived,
- * was designed and implemented by Axis Communications AB.
- *
- * The contents of this file are subject to the Red Hat eCos Public
- * License Version 1.1 (the "Licence"); you may not use this file
- * except in compliance with the Licence.  You may obtain a copy of
- * the Licence at http://www.redhat.com/
- *
- * Software distributed under the Licence is distributed on an "AS IS"
- * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.
- * See the Licence for the specific language governing rights and
- * limitations under the Licence.
- *
- * The Original Code is JFFS2 - Journalling Flash File System, version 2
- *
- * Alternatively, the contents of this file may be used under the
- * terms of the GNU General Public License version 2 (the "GPL"), in
- * which case the provisions of the GPL are applicable instead of the
- * above.  If you wish to allow the use of your version of this file
- * only under the terms of the GPL and not to allow others to use your
- * version of this file under the RHEPL, indicate your decision by
- * deleting the provisions above and replace them with the notice and
- * other provisions required by the GPL.  If you do not delete the
- * provisions above, a recipient may use your version of this file
- * under either the RHEPL or the GPL.
- *
- * $Id: jffs2_1pass.c,v 1.7 2002/01/25 01:56:47 nyet Exp $
- *
- */
-
-/* Ok, so anyone who knows the jffs2 code will probably want to get a papar
- * bag to throw up into before reading this code. I looked through the jffs2
- * code, the caching scheme is very elegant. I tried to keep the version
- * for a bootloader as small and simple as possible. Instead of worring about
- * unneccesary data copies, node scans, etc, I just optimized for the known
- * common case, a kernel, which looks like:
- *     (1) most pages are 4096 bytes
- *     (2) version numbers are somewhat sorted in acsending order
- *     (3) multiple compressed blocks making up one page is uncommon
- *
- * So I create a linked list of decending version numbers (insertions at the
- * head), and then for each page, walk down the list, until a matching page
- * with 4096 bytes is found, and then decompress the watching pages in
- * reverse order.
- *
- */
-
-/*
- * Adapted by Nye Liu <nyet@zumanetworks.com> and
- * Rex Feany <rfeany@zumanetworks.com>
- * on Jan/2002 for U-Boot.
- *
- * Clipped out all the non-1pass functions, cleaned up warnings,
- * wrappers, etc. No major changes to the code.
- * Please, he really means it when he said have a paper bag
- * handy. We needed it ;).
- *
- */
-
-/*
- * Bugfixing by Kai-Uwe Bloem <kai-uwe.bloem@auerswald.de>, (C) Mar/2003
- *
- * - overhaul of the memory management. Removed much of the "paper-bagging"
- *   in that part of the code, fixed several bugs, now frees memory when
- *   partition is changed.
- *   It's still ugly :-(
- * - fixed a bug in jffs2_1pass_read_inode where the file length calculation
- *   was incorrect. Removed a bit of the paper-bagging as well.
- * - removed double crc calculation for fragment headers in jffs2_private.h
- *   for speedup.
- * - scan_empty rewritten in a more "standard" manner (non-paperbag, that is).
- * - spinning wheel now spins depending on how much memory has been scanned
- * - lots of small changes all over the place to "improve" readability.
- * - implemented fragment sorting to ensure that the newest data is copied
- *   if there are multiple copies of fragments for a certain file offset.
- *
- * The fragment sorting feature must be enabled by CONFIG_SYS_JFFS2_SORT_FRAGMENTS.
- * Sorting is done while adding fragments to the lists, which is more or less a
- * bubble sort. This takes a lot of time, and is most probably not an issue if
- * the boot filesystem is always mounted readonly.
- *
- * You should define it if the boot filesystem is mounted writable, and updates
- * to the boot files are done by copying files to that filesystem.
- *
- *
- * There's a big issue left: endianess is completely ignored in this code. Duh!
- *
- *
- * You still should have paper bags at hand :-(. The code lacks more or less
- * any comment, and is still arcane and difficult to read in places. As this
- * might be incompatible with any new code from the jffs2 maintainers anyway,
- * it should probably be dumped and replaced by something like jffs2reader!
- */
-
-
-#include <common.h>
-#include <config.h>
-#include <malloc.h>
-#include <linux/stat.h>
-#include <linux/time.h>
-#include <watchdog.h>
-#include <jffs2/jffs2.h>
-#include <jffs2/jffs2_1pass.h>
-#include <linux/mtd/compat.h>
-
-#include "jffs2_private.h"
-
-
-#define        NODE_CHUNK      1024    /* size of memory allocation chunk in b_nodes */
-#define        SPIN_BLKSIZE    18      /* spin after having scanned 1<<BLKSIZE bytes */
-
-/* Debugging switches */
-#undef DEBUG_DIRENTS           /* print directory entry list after scan */
-#undef DEBUG_FRAGMENTS         /* print fragment list after scan */
-#undef DEBUG                   /* enable debugging messages */
-
-
-#ifdef  DEBUG
-# define DEBUGF(fmt,args...)   printf(fmt ,##args)
-#else
-# define DEBUGF(fmt,args...)
-#endif
-
-#include "summary.h"
-
-/* keeps pointer to currentlu processed partition */
-static struct part_info *current_part;
-
-#if (defined(CONFIG_JFFS2_NAND) && \
-     defined(CONFIG_CMD_NAND) )
-#if defined(CONFIG_NAND_LEGACY)
-#include <linux/mtd/nand_legacy.h>
-#else
-#include <nand.h>
-#endif
-/*
- * Support for jffs2 on top of NAND-flash
- *
- * NAND memory isn't mapped in processor's address space,
- * so data should be fetched from flash before
- * being processed. This is exactly what functions declared
- * here do.
- *
- */
-
-#if defined(CONFIG_NAND_LEGACY)
-/* this one defined in nand_legacy.c */
-int read_jffs2_nand(size_t start, size_t len,
-               size_t * retlen, u_char * buf, int nanddev);
-#endif
-
-#define NAND_PAGE_SIZE 512
-#define NAND_PAGE_SHIFT 9
-#define NAND_PAGE_MASK (~(NAND_PAGE_SIZE-1))
-
-#ifndef NAND_CACHE_PAGES
-#define NAND_CACHE_PAGES 16
-#endif
-#define NAND_CACHE_SIZE (NAND_CACHE_PAGES*NAND_PAGE_SIZE)
-
-static u8* nand_cache = NULL;
-static u32 nand_cache_off = (u32)-1;
-
-static int read_nand_cached(u32 off, u32 size, u_char *buf)
-{
-       struct mtdids *id = current_part->dev->id;
-       u32 bytes_read = 0;
-       size_t retlen;
-       int cpy_bytes;
-
-       while (bytes_read < size) {
-               if ((off + bytes_read < nand_cache_off) ||
-                   (off + bytes_read >= nand_cache_off+NAND_CACHE_SIZE)) {
-                       nand_cache_off = (off + bytes_read) & NAND_PAGE_MASK;
-                       if (!nand_cache) {
-                               /* This memory never gets freed but 'cause
-                                  it's a bootloader, nobody cares */
-                               nand_cache = malloc(NAND_CACHE_SIZE);
-                               if (!nand_cache) {
-                                       printf("read_nand_cached: can't alloc cache size %d bytes\n",
-                                              NAND_CACHE_SIZE);
-                                       return -1;
-                               }
-                       }
-
-#if defined(CONFIG_NAND_LEGACY)
-                       if (read_jffs2_nand(nand_cache_off, NAND_CACHE_SIZE,
-                                               &retlen, nand_cache, id->num) < 0 ||
-                                       retlen != NAND_CACHE_SIZE) {
-                               printf("read_nand_cached: error reading nand off %#x size %d bytes\n",
-                                               nand_cache_off, NAND_CACHE_SIZE);
-                               return -1;
-                       }
-#else
-                       retlen = NAND_CACHE_SIZE;
-                       if (nand_read(&nand_info[id->num], nand_cache_off,
-                                               &retlen, nand_cache) != 0 ||
-                                       retlen != NAND_CACHE_SIZE) {
-                               printf("read_nand_cached: error reading nand off %#x size %d bytes\n",
-                                               nand_cache_off, NAND_CACHE_SIZE);
-                               return -1;
-                       }
-#endif
-               }
-               cpy_bytes = nand_cache_off + NAND_CACHE_SIZE - (off + bytes_read);
-               if (cpy_bytes > size - bytes_read)
-                       cpy_bytes = size - bytes_read;
-               memcpy(buf + bytes_read,
-                      nand_cache + off + bytes_read - nand_cache_off,
-                      cpy_bytes);
-               bytes_read += cpy_bytes;
-       }
-       return bytes_read;
-}
-
-static void *get_fl_mem_nand(u32 off, u32 size, void *ext_buf)
-{
-       u_char *buf = ext_buf ? (u_char*)ext_buf : (u_char*)malloc(size);
-
-       if (NULL == buf) {
-               printf("get_fl_mem_nand: can't alloc %d bytes\n", size);
-               return NULL;
-       }
-       if (read_nand_cached(off, size, buf) < 0) {
-               if (!ext_buf)
-                       free(buf);
-               return NULL;
-       }
-
-       return buf;
-}
-
-static void *get_node_mem_nand(u32 off, void *ext_buf)
-{
-       struct jffs2_unknown_node node;
-       void *ret = NULL;
-
-       if (NULL == get_fl_mem_nand(off, sizeof(node), &node))
-               return NULL;
-
-       if (!(ret = get_fl_mem_nand(off, node.magic ==
-                              JFFS2_MAGIC_BITMASK ? node.totlen : sizeof(node),
-                              ext_buf))) {
-               printf("off = %#x magic %#x type %#x node.totlen = %d\n",
-                      off, node.magic, node.nodetype, node.totlen);
-       }
-       return ret;
-}
-
-static void put_fl_mem_nand(void *buf)
-{
-       free(buf);
-}
-#endif
-
-#if defined(CONFIG_CMD_ONENAND)
-
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/onenand.h>
-#include <onenand_uboot.h>
-
-#define ONENAND_PAGE_SIZE 2048
-#define ONENAND_PAGE_SHIFT 11
-#define ONENAND_PAGE_MASK (~(ONENAND_PAGE_SIZE-1))
-
-#ifndef ONENAND_CACHE_PAGES
-#define ONENAND_CACHE_PAGES 4
-#endif
-#define ONENAND_CACHE_SIZE (ONENAND_CACHE_PAGES*ONENAND_PAGE_SIZE)
-
-static u8* onenand_cache;
-static u32 onenand_cache_off = (u32)-1;
-
-static int read_onenand_cached(u32 off, u32 size, u_char *buf)
-{
-       u32 bytes_read = 0;
-       size_t retlen;
-       int cpy_bytes;
-
-       while (bytes_read < size) {
-               if ((off + bytes_read < onenand_cache_off) ||
-                   (off + bytes_read >= onenand_cache_off + ONENAND_CACHE_SIZE)) {
-                       onenand_cache_off = (off + bytes_read) & ONENAND_PAGE_MASK;
-                       if (!onenand_cache) {
-                               /* This memory never gets freed but 'cause
-                                  it's a bootloader, nobody cares */
-                               onenand_cache = malloc(ONENAND_CACHE_SIZE);
-                               if (!onenand_cache) {
-                                       printf("read_onenand_cached: can't alloc cache size %d bytes\n",
-                                              ONENAND_CACHE_SIZE);
-                                       return -1;
-                               }
-                       }
-
-                       retlen = ONENAND_CACHE_SIZE;
-                       if (onenand_read(&onenand_mtd, onenand_cache_off, retlen,
-                                               &retlen, onenand_cache) != 0 ||
-                                       retlen != ONENAND_CACHE_SIZE) {
-                               printf("read_onenand_cached: error reading nand off %#x size %d bytes\n",
-                                       onenand_cache_off, ONENAND_CACHE_SIZE);
-                               return -1;
-                       }
-               }
-               cpy_bytes = onenand_cache_off + ONENAND_CACHE_SIZE - (off + bytes_read);
-               if (cpy_bytes > size - bytes_read)
-                       cpy_bytes = size - bytes_read;
-               memcpy(buf + bytes_read,
-                      onenand_cache + off + bytes_read - onenand_cache_off,
-                      cpy_bytes);
-               bytes_read += cpy_bytes;
-       }
-       return bytes_read;
-}
-
-static void *get_fl_mem_onenand(u32 off, u32 size, void *ext_buf)
-{
-       u_char *buf = ext_buf ? (u_char *)ext_buf : (u_char *)malloc(size);
-
-       if (NULL == buf) {
-               printf("get_fl_mem_onenand: can't alloc %d bytes\n", size);
-               return NULL;
-       }
-       if (read_onenand_cached(off, size, buf) < 0) {
-               if (!ext_buf)
-                       free(buf);
-               return NULL;
-       }
-
-       return buf;
-}
-
-static void *get_node_mem_onenand(u32 off, void *ext_buf)
-{
-       struct jffs2_unknown_node node;
-       void *ret = NULL;
-
-       if (NULL == get_fl_mem_onenand(off, sizeof(node), &node))
-               return NULL;
-
-       ret = get_fl_mem_onenand(off, node.magic ==
-                       JFFS2_MAGIC_BITMASK ? node.totlen : sizeof(node),
-                       ext_buf);
-       if (!ret) {
-               printf("off = %#x magic %#x type %#x node.totlen = %d\n",
-                      off, node.magic, node.nodetype, node.totlen);
-       }
-       return ret;
-}
-
-
-static void put_fl_mem_onenand(void *buf)
-{
-       free(buf);
-}
-#endif
-
-
-#if defined(CONFIG_CMD_FLASH)
-/*
- * Support for jffs2 on top of NOR-flash
- *
- * NOR flash memory is mapped in processor's address space,
- * just return address.
- */
-static inline void *get_fl_mem_nor(u32 off, u32 size, void *ext_buf)
-{
-       u32 addr = off;
-       struct mtdids *id = current_part->dev->id;
-
-       extern flash_info_t flash_info[];
-       flash_info_t *flash = &flash_info[id->num];
-
-       addr += flash->start[0];
-       if (ext_buf) {
-               memcpy(ext_buf, (void *)addr, size);
-               return ext_buf;
-       }
-       return (void*)addr;
-}
-
-static inline void *get_node_mem_nor(u32 off, void *ext_buf)
-{
-       struct jffs2_unknown_node *pNode;
-
-       /* pNode will point directly to flash - don't provide external buffer
-          and don't care about size */
-       pNode = get_fl_mem_nor(off, 0, NULL);
-       return (void *)get_fl_mem_nor(off, pNode->magic == JFFS2_MAGIC_BITMASK ?
-                       pNode->totlen : sizeof(*pNode), ext_buf);
-}
-#endif
-
-
-/*
- * Generic jffs2 raw memory and node read routines.
- *
- */
-static inline void *get_fl_mem(u32 off, u32 size, void *ext_buf)
-{
-       struct mtdids *id = current_part->dev->id;
-
-#if defined(CONFIG_CMD_FLASH)
-       if (id->type == MTD_DEV_TYPE_NOR) {
-               return get_fl_mem_nor(off, size, ext_buf);
-       }
-#endif
-
-#if defined(CONFIG_JFFS2_NAND) && defined(CONFIG_CMD_NAND)
-       if (id->type == MTD_DEV_TYPE_NAND)
-               return get_fl_mem_nand(off, size, ext_buf);
-#endif
-
-#if defined(CONFIG_CMD_ONENAND)
-       if (id->type == MTD_DEV_TYPE_ONENAND)
-               return get_fl_mem_onenand(off, size, ext_buf);
-#endif
-
-       printf("get_fl_mem: unknown device type, using raw offset!\n");
-       return (void*)off;
-}
-
-static inline void *get_node_mem(u32 off, void *ext_buf)
-{
-       struct mtdids *id = current_part->dev->id;
-
-#if defined(CONFIG_CMD_FLASH)
-       if (id->type == MTD_DEV_TYPE_NOR)
-               return get_node_mem_nor(off, ext_buf);
-#endif
-
-#if defined(CONFIG_JFFS2_NAND) && \
-    defined(CONFIG_CMD_NAND)
-       if (id->type == MTD_DEV_TYPE_NAND)
-               return get_node_mem_nand(off, ext_buf);
-#endif
-
-#if defined(CONFIG_CMD_ONENAND)
-       if (id->type == MTD_DEV_TYPE_ONENAND)
-               return get_node_mem_onenand(off, ext_buf);
-#endif
-
-       printf("get_node_mem: unknown device type, using raw offset!\n");
-       return (void*)off;
-}
-
-static inline void put_fl_mem(void *buf, void *ext_buf)
-{
-       struct mtdids *id = current_part->dev->id;
-
-       /* If buf is the same as ext_buf, it was provided by the caller -
-          we shouldn't free it then. */
-       if (buf == ext_buf)
-               return;
-       switch (id->type) {
-#if defined(CONFIG_JFFS2_NAND) && defined(CONFIG_CMD_NAND)
-       case MTD_DEV_TYPE_NAND:
-               return put_fl_mem_nand(buf);
-#endif
-#if defined(CONFIG_CMD_ONENAND)
-       case MTD_DEV_TYPE_ONENAND:
-               return put_fl_mem_onenand(buf);
-#endif
-       }
-}
-
-/* Compression names */
-static char *compr_names[] = {
-       "NONE",
-       "ZERO",
-       "RTIME",
-       "RUBINMIPS",
-       "COPY",
-       "DYNRUBIN",
-       "ZLIB",
-#if defined(CONFIG_JFFS2_LZO_LZARI)
-       "LZO",
-       "LZARI",
-#endif
-};
-
-/* Memory management */
-struct mem_block {
-       u32     index;
-       struct mem_block *next;
-       struct b_node nodes[NODE_CHUNK];
-};
-
-
-static void
-free_nodes(struct b_list *list)
-{
-       while (list->listMemBase != NULL) {
-               struct mem_block *next = list->listMemBase->next;
-               free( list->listMemBase );
-               list->listMemBase = next;
-       }
-}
-
-static struct b_node *
-add_node(struct b_list *list)
-{
-       u32 index = 0;
-       struct mem_block *memBase;
-       struct b_node *b;
-
-       memBase = list->listMemBase;
-       if (memBase != NULL)
-               index = memBase->index;
-#if 0
-       putLabeledWord("add_node: index = ", index);
-       putLabeledWord("add_node: memBase = ", list->listMemBase);
-#endif
-
-       if (memBase == NULL || index >= NODE_CHUNK) {
-               /* we need more space before we continue */
-               memBase = mmalloc(sizeof(struct mem_block));
-               if (memBase == NULL) {
-                       putstr("add_node: malloc failed\n");
-                       return NULL;
-               }
-               memBase->next = list->listMemBase;
-               index = 0;
-#if 0
-               putLabeledWord("add_node: alloced a new membase at ", *memBase);
-#endif
-
-       }
-       /* now we have room to add it. */
-       b = &memBase->nodes[index];
-       index ++;
-
-       memBase->index = index;
-       list->listMemBase = memBase;
-       list->listCount++;
-       return b;
-}
-
-static struct b_node *
-insert_node(struct b_list *list, u32 offset)
-{
-       struct b_node *new;
-#ifdef CONFIG_SYS_JFFS2_SORT_FRAGMENTS
-       struct b_node *b, *prev;
-#endif
-
-       if (!(new = add_node(list))) {
-               putstr("add_node failed!\r\n");
-               return NULL;
-       }
-       new->offset = offset;
-
-#ifdef CONFIG_SYS_JFFS2_SORT_FRAGMENTS
-       if (list->listTail != NULL && list->listCompare(new, list->listTail))
-               prev = list->listTail;
-       else if (list->listLast != NULL && list->listCompare(new, list->listLast))
-               prev = list->listLast;
-       else
-               prev = NULL;
-
-       for (b = (prev ? prev->next : list->listHead);
-            b != NULL && list->listCompare(new, b);
-            prev = b, b = b->next) {
-               list->listLoops++;
-       }
-       if (b != NULL)
-               list->listLast = prev;
-
-       if (b != NULL) {
-               new->next = b;
-               if (prev != NULL)
-                       prev->next = new;
-               else
-                       list->listHead = new;
-       } else
-#endif
-       {
-               new->next = (struct b_node *) NULL;
-               if (list->listTail != NULL) {
-                       list->listTail->next = new;
-                       list->listTail = new;
-               } else {
-                       list->listTail = list->listHead = new;
-               }
-       }
-
-       return new;
-}
-
-#ifdef CONFIG_SYS_JFFS2_SORT_FRAGMENTS
-/* Sort data entries with the latest version last, so that if there
- * is overlapping data the latest version will be used.
- */
-static int compare_inodes(struct b_node *new, struct b_node *old)
-{
-       struct jffs2_raw_inode ojNew;
-       struct jffs2_raw_inode ojOld;
-       struct jffs2_raw_inode *jNew =
-               (struct jffs2_raw_inode *)get_fl_mem(new->offset, sizeof(ojNew), &ojNew);
-       struct jffs2_raw_inode *jOld =
-               (struct jffs2_raw_inode *)get_fl_mem(old->offset, sizeof(ojOld), &ojOld);
-
-       return jNew->version > jOld->version;
-}
-
-/* Sort directory entries so all entries in the same directory
- * with the same name are grouped together, with the latest version
- * last. This makes it easy to eliminate all but the latest version
- * by marking the previous version dead by setting the inode to 0.
- */
-static int compare_dirents(struct b_node *new, struct b_node *old)
-{
-       struct jffs2_raw_dirent ojNew;
-       struct jffs2_raw_dirent ojOld;
-       struct jffs2_raw_dirent *jNew =
-               (struct jffs2_raw_dirent *)get_fl_mem(new->offset, sizeof(ojNew), &ojNew);
-       struct jffs2_raw_dirent *jOld =
-               (struct jffs2_raw_dirent *)get_fl_mem(old->offset, sizeof(ojOld), &ojOld);
-       int cmp;
-
-       /* ascending sort by pino */
-       if (jNew->pino != jOld->pino)
-               return jNew->pino > jOld->pino;
-
-       /* pino is the same, so use ascending sort by nsize, so
-        * we don't do strncmp unless we really must.
-        */
-       if (jNew->nsize != jOld->nsize)
-               return jNew->nsize > jOld->nsize;
-
-       /* length is also the same, so use ascending sort by name
-        */
-       cmp = strncmp((char *)jNew->name, (char *)jOld->name, jNew->nsize);
-       if (cmp != 0)
-               return cmp > 0;
-
-       /* we have duplicate names in this directory, so use ascending
-        * sort by version
-        */
-       if (jNew->version > jOld->version) {
-               /* since jNew is newer, we know jOld is not valid, so
-                * mark it with inode 0 and it will not be used
-                */
-               jOld->ino = 0;
-               return 1;
-       }
-
-       return 0;
-}
-#endif
-
-void
-jffs2_free_cache(struct part_info *part)
-{
-       struct b_lists *pL;
-
-       if (part->jffs2_priv != NULL) {
-               pL = (struct b_lists *)part->jffs2_priv;
-               free_nodes(&pL->frag);
-               free_nodes(&pL->dir);
-               free(pL->readbuf);
-               free(pL);
-       }
-}
-
-static u32
-jffs_init_1pass_list(struct part_info *part)
-{
-       struct b_lists *pL;
-
-       jffs2_free_cache(part);
-
-       if (NULL != (part->jffs2_priv = malloc(sizeof(struct b_lists)))) {
-               pL = (struct b_lists *)part->jffs2_priv;
-
-               memset(pL, 0, sizeof(*pL));
-#ifdef CONFIG_SYS_JFFS2_SORT_FRAGMENTS
-               pL->dir.listCompare = compare_dirents;
-               pL->frag.listCompare = compare_inodes;
-#endif
-       }
-       return 0;
-}
-
-/* find the inode from the slashless name given a parent */
-static long
-jffs2_1pass_read_inode(struct b_lists *pL, u32 inode, char *dest)
-{
-       struct b_node *b;
-       struct jffs2_raw_inode *jNode;
-       u32 totalSize = 0;
-       u32 latestVersion = 0;
-       uchar *lDest;
-       uchar *src;
-       long ret;
-       int i;
-       u32 counter = 0;
-#ifdef CONFIG_SYS_JFFS2_SORT_FRAGMENTS
-       /* Find file size before loading any data, so fragments that
-        * start past the end of file can be ignored. A fragment
-        * that is partially in the file is loaded, so extra data may
-        * be loaded up to the next 4K boundary above the file size.
-        * This shouldn't cause trouble when loading kernel images, so
-        * we will live with it.
-        */
-       for (b = pL->frag.listHead; b != NULL; b = b->next) {
-               jNode = (struct jffs2_raw_inode *) get_fl_mem(b->offset,
-                       sizeof(struct jffs2_raw_inode), pL->readbuf);
-               if ((inode == jNode->ino)) {
-                       /* get actual file length from the newest node */
-                       if (jNode->version >= latestVersion) {
-                               totalSize = jNode->isize;
-                               latestVersion = jNode->version;
-                       }
-               }
-               put_fl_mem(jNode, pL->readbuf);
-       }
-#endif
-
-       for (b = pL->frag.listHead; b != NULL; b = b->next) {
-               jNode = (struct jffs2_raw_inode *) get_node_mem(b->offset,
-                                                               pL->readbuf);
-               if ((inode == jNode->ino)) {
-#if 0
-                       putLabeledWord("\r\n\r\nread_inode: totlen = ", jNode->totlen);
-                       putLabeledWord("read_inode: inode = ", jNode->ino);
-                       putLabeledWord("read_inode: version = ", jNode->version);
-                       putLabeledWord("read_inode: isize = ", jNode->isize);
-                       putLabeledWord("read_inode: offset = ", jNode->offset);
-                       putLabeledWord("read_inode: csize = ", jNode->csize);
-                       putLabeledWord("read_inode: dsize = ", jNode->dsize);
-                       putLabeledWord("read_inode: compr = ", jNode->compr);
-                       putLabeledWord("read_inode: usercompr = ", jNode->usercompr);
-                       putLabeledWord("read_inode: flags = ", jNode->flags);
-#endif
-
-#ifndef CONFIG_SYS_JFFS2_SORT_FRAGMENTS
-                       /* get actual file length from the newest node */
-                       if (jNode->version >= latestVersion) {
-                               totalSize = jNode->isize;
-                               latestVersion = jNode->version;
-                       }
-#endif
-
-                       if(dest) {
-                               src = ((uchar *) jNode) + sizeof(struct jffs2_raw_inode);
-                               /* ignore data behind latest known EOF */
-                               if (jNode->offset > totalSize) {
-                                       put_fl_mem(jNode, pL->readbuf);
-                                       continue;
-                               }
-                               if (b->datacrc == CRC_UNKNOWN)
-                                       b->datacrc = data_crc(jNode) ?
-                                               CRC_OK : CRC_BAD;
-                               if (b->datacrc == CRC_BAD) {
-                                       put_fl_mem(jNode, pL->readbuf);
-                                       continue;
-                               }
-
-                               lDest = (uchar *) (dest + jNode->offset);
-#if 0
-                               putLabeledWord("read_inode: src = ", src);
-                               putLabeledWord("read_inode: dest = ", lDest);
-#endif
-                               switch (jNode->compr) {
-                               case JFFS2_COMPR_NONE:
-                                       ret = (unsigned long) ldr_memcpy(lDest, src, jNode->dsize);
-                                       break;
-                               case JFFS2_COMPR_ZERO:
-                                       ret = 0;
-                                       for (i = 0; i < jNode->dsize; i++)
-                                               *(lDest++) = 0;
-                                       break;
-                               case JFFS2_COMPR_RTIME:
-                                       ret = 0;
-                                       rtime_decompress(src, lDest, jNode->csize, jNode->dsize);
-                                       break;
-                               case JFFS2_COMPR_DYNRUBIN:
-                                       /* this is slow but it works */
-                                       ret = 0;
-                                       dynrubin_decompress(src, lDest, jNode->csize, jNode->dsize);
-                                       break;
-                               case JFFS2_COMPR_ZLIB:
-                                       ret = zlib_decompress(src, lDest, jNode->csize, jNode->dsize);
-                                       break;
-#if defined(CONFIG_JFFS2_LZO_LZARI)
-                               case JFFS2_COMPR_LZO:
-                                       ret = lzo_decompress(src, lDest, jNode->csize, jNode->dsize);
-                                       break;
-                               case JFFS2_COMPR_LZARI:
-                                       ret = lzari_decompress(src, lDest, jNode->csize, jNode->dsize);
-                                       break;
-#endif
-                               default:
-                                       /* unknown */
-                                       putLabeledWord("UNKOWN COMPRESSION METHOD = ", jNode->compr);
-                                       put_fl_mem(jNode, pL->readbuf);
-                                       return -1;
-                                       break;
-                               }
-                       }
-
-#if 0
-                       putLabeledWord("read_inode: totalSize = ", totalSize);
-                       putLabeledWord("read_inode: compr ret = ", ret);
-#endif
-               }
-               counter++;
-               put_fl_mem(jNode, pL->readbuf);
-       }
-
-#if 0
-       putLabeledWord("read_inode: returning = ", totalSize);
-#endif
-       return totalSize;
-}
-
-/* find the inode from the slashless name given a parent */
-static u32
-jffs2_1pass_find_inode(struct b_lists * pL, const char *name, u32 pino)
-{
-       struct b_node *b;
-       struct jffs2_raw_dirent *jDir;
-       int len;
-       u32 counter;
-       u32 version = 0;
-       u32 inode = 0;
-
-       /* name is assumed slash free */
-       len = strlen(name);
-
-       counter = 0;
-       /* we need to search all and return the inode with the highest version */
-       for(b = pL->dir.listHead; b; b = b->next, counter++) {
-               jDir = (struct jffs2_raw_dirent *) get_node_mem(b->offset,
-                                                               pL->readbuf);
-               if ((pino == jDir->pino) && (len == jDir->nsize) &&
-                   (jDir->ino) &&      /* 0 for unlink */
-                   (!strncmp((char *)jDir->name, name, len))) {        /* a match */
-                       if (jDir->version < version) {
-                               put_fl_mem(jDir, pL->readbuf);
-                               continue;
-                       }
-
-                       if (jDir->version == version && inode != 0) {
-                               /* I'm pretty sure this isn't legal */
-                               putstr(" ** ERROR ** ");
-                               putnstr(jDir->name, jDir->nsize);
-                               putLabeledWord(" has dup version =", version);
-                       }
-                       inode = jDir->ino;
-                       version = jDir->version;
-               }
-#if 0
-               putstr("\r\nfind_inode:p&l ->");
-               putnstr(jDir->name, jDir->nsize);
-               putstr("\r\n");
-               putLabeledWord("pino = ", jDir->pino);
-               putLabeledWord("nsize = ", jDir->nsize);
-               putLabeledWord("b = ", (u32) b);
-               putLabeledWord("counter = ", counter);
-#endif
-               put_fl_mem(jDir, pL->readbuf);
-       }
-       return inode;
-}
-
-char *mkmodestr(unsigned long mode, char *str)
-{
-       static const char *l = "xwr";
-       int mask = 1, i;
-       char c;
-
-       switch (mode & S_IFMT) {
-               case S_IFDIR:    str[0] = 'd'; break;
-               case S_IFBLK:    str[0] = 'b'; break;
-               case S_IFCHR:    str[0] = 'c'; break;
-               case S_IFIFO:    str[0] = 'f'; break;
-               case S_IFLNK:    str[0] = 'l'; break;
-               case S_IFSOCK:   str[0] = 's'; break;
-               case S_IFREG:    str[0] = '-'; break;
-               default:         str[0] = '?';
-       }
-
-       for(i = 0; i < 9; i++) {
-               c = l[i%3];
-               str[9-i] = (mode & mask)?c:'-';
-               mask = mask<<1;
-       }
-
-       if(mode & S_ISUID) str[3] = (mode & S_IXUSR)?'s':'S';
-       if(mode & S_ISGID) str[6] = (mode & S_IXGRP)?'s':'S';
-       if(mode & S_ISVTX) str[9] = (mode & S_IXOTH)?'t':'T';
-       str[10] = '\0';
-       return str;
-}
-
-static inline void dump_stat(struct stat *st, const char *name)
-{
-       char str[20];
-       char s[64], *p;
-
-       if (st->st_mtime == (time_t)(-1)) /* some ctimes really hate -1 */
-               st->st_mtime = 1;
-
-       ctime_r((time_t *)&st->st_mtime, s/*,64*/); /* newlib ctime doesn't have buflen */
-
-       if ((p = strchr(s,'\n')) != NULL) *p = '\0';
-       if ((p = strchr(s,'\r')) != NULL) *p = '\0';
-
-/*
-       printf("%6lo %s %8ld %s %s\n", st->st_mode, mkmodestr(st->st_mode, str),
-               st->st_size, s, name);
-*/
-
-       printf(" %s %8ld %s %s", mkmodestr(st->st_mode,str), st->st_size, s, name);
-}
-
-static inline u32 dump_inode(struct b_lists * pL, struct jffs2_raw_dirent *d, struct jffs2_raw_inode *i)
-{
-       char fname[256];
-       struct stat st;
-
-       if(!d || !i) return -1;
-
-       strncpy(fname, (char *)d->name, d->nsize);
-       fname[d->nsize] = '\0';
-
-       memset(&st,0,sizeof(st));
-
-       st.st_mtime = i->mtime;
-       st.st_mode = i->mode;
-       st.st_ino = i->ino;
-       st.st_size = i->isize;
-
-       dump_stat(&st, fname);
-
-       if (d->type == DT_LNK) {
-               unsigned char *src = (unsigned char *) (&i[1]);
-               putstr(" -> ");
-               putnstr(src, (int)i->dsize);
-       }
-
-       putstr("\r\n");
-
-       return 0;
-}
-
-/* list inodes with the given pino */
-static u32
-jffs2_1pass_list_inodes(struct b_lists * pL, u32 pino)
-{
-       struct b_node *b;
-       struct jffs2_raw_dirent *jDir;
-
-       for (b = pL->dir.listHead; b; b = b->next) {
-               jDir = (struct jffs2_raw_dirent *) get_node_mem(b->offset,
-                                                               pL->readbuf);
-               if ((pino == jDir->pino) && (jDir->ino)) { /* ino=0 -> unlink */
-                       u32 i_version = 0;
-                       struct jffs2_raw_inode ojNode;
-                       struct jffs2_raw_inode *jNode, *i = NULL;
-                       struct b_node *b2 = pL->frag.listHead;
-
-                       while (b2) {
-                               jNode = (struct jffs2_raw_inode *)
-                                       get_fl_mem(b2->offset, sizeof(ojNode), &ojNode);
-                               if (jNode->ino == jDir->ino && jNode->version >= i_version) {
-                                       i_version = jNode->version;
-                                       if (i)
-                                               put_fl_mem(i, NULL);
-
-                                       if (jDir->type == DT_LNK)
-                                               i = get_node_mem(b2->offset,
-                                                                NULL);
-                                       else
-                                               i = get_fl_mem(b2->offset,
-                                                              sizeof(*i),
-                                                              NULL);
-                               }
-                               b2 = b2->next;
-                       }
-
-                       dump_inode(pL, jDir, i);
-                       put_fl_mem(i, NULL);
-               }
-               put_fl_mem(jDir, pL->readbuf);
-       }
-       return pino;
-}
-
-static u32
-jffs2_1pass_search_inode(struct b_lists * pL, const char *fname, u32 pino)
-{
-       int i;
-       char tmp[256];
-       char working_tmp[256];
-       char *c;
-
-       /* discard any leading slash */
-       i = 0;
-       while (fname[i] == '/')
-               i++;
-       strcpy(tmp, &fname[i]);
-
-       while ((c = (char *) strchr(tmp, '/'))) /* we are still dired searching */
-       {
-               strncpy(working_tmp, tmp, c - tmp);
-               working_tmp[c - tmp] = '\0';
-#if 0
-               putstr("search_inode: tmp = ");
-               putstr(tmp);
-               putstr("\r\n");
-               putstr("search_inode: wtmp = ");
-               putstr(working_tmp);
-               putstr("\r\n");
-               putstr("search_inode: c = ");
-               putstr(c);
-               putstr("\r\n");
-#endif
-               for (i = 0; i < strlen(c) - 1; i++)
-                       tmp[i] = c[i + 1];
-               tmp[i] = '\0';
-#if 0
-               putstr("search_inode: post tmp = ");
-               putstr(tmp);
-               putstr("\r\n");
-#endif
-
-               if (!(pino = jffs2_1pass_find_inode(pL, working_tmp, pino))) {
-                       putstr("find_inode failed for name=");
-                       putstr(working_tmp);
-                       putstr("\r\n");
-                       return 0;
-               }
-       }
-       /* this is for the bare filename, directories have already been mapped */
-       if (!(pino = jffs2_1pass_find_inode(pL, tmp, pino))) {
-               putstr("find_inode failed for name=");
-               putstr(tmp);
-               putstr("\r\n");
-               return 0;
-       }
-       return pino;
-
-}
-
-static u32
-jffs2_1pass_resolve_inode(struct b_lists * pL, u32 ino)
-{
-       struct b_node *b;
-       struct b_node *b2;
-       struct jffs2_raw_dirent *jDir;
-       struct jffs2_raw_inode *jNode;
-       u8 jDirFoundType = 0;
-       u32 jDirFoundIno = 0;
-       u32 jDirFoundPino = 0;
-       char tmp[256];
-       u32 version = 0;
-       u32 pino;
-       unsigned char *src;
-
-       /* we need to search all and return the inode with the highest version */
-       for(b = pL->dir.listHead; b; b = b->next) {
-               jDir = (struct jffs2_raw_dirent *) get_node_mem(b->offset,
-                                                               pL->readbuf);
-               if (ino == jDir->ino) {
-                       if (jDir->version < version) {
-                               put_fl_mem(jDir, pL->readbuf);
-                               continue;
-                       }
-
-                       if (jDir->version == version && jDirFoundType) {
-                               /* I'm pretty sure this isn't legal */
-                               putstr(" ** ERROR ** ");
-                               putnstr(jDir->name, jDir->nsize);
-                               putLabeledWord(" has dup version (resolve) = ",
-                                       version);
-                       }
-
-                       jDirFoundType = jDir->type;
-                       jDirFoundIno = jDir->ino;
-                       jDirFoundPino = jDir->pino;
-                       version = jDir->version;
-               }
-               put_fl_mem(jDir, pL->readbuf);
-       }
-       /* now we found the right entry again. (shoulda returned inode*) */
-       if (jDirFoundType != DT_LNK)
-               return jDirFoundIno;
-
-       /* it's a soft link so we follow it again. */
-       b2 = pL->frag.listHead;
-       while (b2) {
-               jNode = (struct jffs2_raw_inode *) get_node_mem(b2->offset,
-                                                               pL->readbuf);
-               if (jNode->ino == jDirFoundIno) {
-                       src = (unsigned char *)jNode + sizeof(struct jffs2_raw_inode);
-
-#if 0
-                       putLabeledWord("\t\t dsize = ", jNode->dsize);
-                       putstr("\t\t target = ");
-                       putnstr(src, jNode->dsize);
-                       putstr("\r\n");
-#endif
-                       strncpy(tmp, (char *)src, jNode->dsize);
-                       tmp[jNode->dsize] = '\0';
-                       put_fl_mem(jNode, pL->readbuf);
-                       break;
-               }
-               b2 = b2->next;
-               put_fl_mem(jNode, pL->readbuf);
-       }
-       /* ok so the name of the new file to find is in tmp */
-       /* if it starts with a slash it is root based else shared dirs */
-       if (tmp[0] == '/')
-               pino = 1;
-       else
-               pino = jDirFoundPino;
-
-       return jffs2_1pass_search_inode(pL, tmp, pino);
-}
-
-static u32
-jffs2_1pass_search_list_inodes(struct b_lists * pL, const char *fname, u32 pino)
-{
-       int i;
-       char tmp[256];
-       char working_tmp[256];
-       char *c;
-
-       /* discard any leading slash */
-       i = 0;
-       while (fname[i] == '/')
-               i++;
-       strcpy(tmp, &fname[i]);
-       working_tmp[0] = '\0';
-       while ((c = (char *) strchr(tmp, '/'))) /* we are still dired searching */
-       {
-               strncpy(working_tmp, tmp, c - tmp);
-               working_tmp[c - tmp] = '\0';
-               for (i = 0; i < strlen(c) - 1; i++)
-                       tmp[i] = c[i + 1];
-               tmp[i] = '\0';
-               /* only a failure if we arent looking at top level */
-               if (!(pino = jffs2_1pass_find_inode(pL, working_tmp, pino)) &&
-                   (working_tmp[0])) {
-                       putstr("find_inode failed for name=");
-                       putstr(working_tmp);
-                       putstr("\r\n");
-                       return 0;
-               }
-       }
-
-       if (tmp[0] && !(pino = jffs2_1pass_find_inode(pL, tmp, pino))) {
-               putstr("find_inode failed for name=");
-               putstr(tmp);
-               putstr("\r\n");
-               return 0;
-       }
-       /* this is for the bare filename, directories have already been mapped */
-       if (!(pino = jffs2_1pass_list_inodes(pL, pino))) {
-               putstr("find_inode failed for name=");
-               putstr(tmp);
-               putstr("\r\n");
-               return 0;
-       }
-       return pino;
-
-}
-
-unsigned char
-jffs2_1pass_rescan_needed(struct part_info *part)
-{
-       struct b_node *b;
-       struct jffs2_unknown_node onode;
-       struct jffs2_unknown_node *node;
-       struct b_lists *pL = (struct b_lists *)part->jffs2_priv;
-
-       if (part->jffs2_priv == 0){
-               DEBUGF ("rescan: First time in use\n");
-               return 1;
-       }
-
-       /* if we have no list, we need to rescan */
-       if (pL->frag.listCount == 0) {
-               DEBUGF ("rescan: fraglist zero\n");
-               return 1;
-       }
-
-       /* but suppose someone reflashed a partition at the same offset... */
-       b = pL->dir.listHead;
-       while (b) {
-               node = (struct jffs2_unknown_node *) get_fl_mem(b->offset,
-                       sizeof(onode), &onode);
-               if (node->nodetype != JFFS2_NODETYPE_DIRENT) {
-                       DEBUGF ("rescan: fs changed beneath me? (%lx)\n",
-                                       (unsigned long) b->offset);
-                       return 1;
-               }
-               b = b->next;
-       }
-       return 0;
-}
-
-#define dbg_summary(...) do {} while (0);
-/* Process the stored summary information - helper function for
- * jffs2_sum_scan_sumnode()
- */
-
-static int jffs2_sum_process_sum_data(struct part_info *part, uint32_t offset,
-                               struct jffs2_raw_summary *summary,
-                               struct b_lists *pL)
-{
-       void *sp;
-       int i;
-
-       sp = summary->sum;
-
-       for (i = 0; i < summary->sum_num; i++) {
-               dbg_summary("processing summary index %d\n", i);
-
-               switch (((struct jffs2_sum_unknown_flash *)sp)->nodetype) {
-                       case JFFS2_NODETYPE_INODE: {
-                               struct jffs2_sum_inode_flash *spi;
-                               spi = sp;
-
-                               dbg_summary("Inode at 0x%08x-0x%08x\n",
-                                           offset + spi->offset,
-                                           offset + spi->offset + spi->totlen);
-
-                               if (insert_node(&pL->frag, (u32) part->offset +
-                                               offset + spi->offset) == NULL)
-                                       return -1;
-
-                               sp += JFFS2_SUMMARY_INODE_SIZE;
-
-                               break;
-                       }
-
-                       case JFFS2_NODETYPE_DIRENT: {
-                               struct jffs2_sum_dirent_flash *spd;
-                               spd = sp;
-
-                               dbg_summary("Dirent at 0x%08x-0x%08x\n",
-                                           offset + spd->offset,
-                                           offset + spd->offset + spd->totlen);
-
-                               if (insert_node(&pL->dir, (u32) part->offset +
-                                               offset + spd->offset) == NULL)
-                                       return -1;
-
-                               sp += JFFS2_SUMMARY_DIRENT_SIZE(spd->nsize);
-
-                               break;
-                       }
-                       default : {
-                               uint16_t nodetype =
-                                       ((struct jffs2_sum_unknown_flash *)
-                                        sp)->nodetype;
-                               printf("Unsupported node type %x found in "
-                                               "summary!\n", nodetype);
-                               break;
-                       }
-               }
-       }
-       return 0;
-}
-
-/* Process the summary node - called from jffs2_scan_eraseblock() */
-int jffs2_sum_scan_sumnode(struct part_info *part, uint32_t offset,
-                          struct jffs2_raw_summary *summary, uint32_t sumsize,
-                          struct b_lists *pL)
-{
-       struct jffs2_unknown_node crcnode;
-       int ret, ofs;
-       uint32_t crc;
-
-       ofs = part->sector_size - sumsize;
-
-       dbg_summary("summary found for 0x%08x at 0x%08x (0x%x bytes)\n",
-                   offset, offset + ofs, sumsize);
-
-       /* OK, now check for node validity and CRC */
-       crcnode.magic = JFFS2_MAGIC_BITMASK;
-       crcnode.nodetype = JFFS2_NODETYPE_SUMMARY;
-       crcnode.totlen = summary->totlen;
-       crc = crc32_no_comp(0, (uchar *)&crcnode, sizeof(crcnode)-4);
-
-       if (summary->hdr_crc != crc) {
-               dbg_summary("Summary node header is corrupt (bad CRC or "
-                               "no summary at all)\n");
-               goto crc_err;
-       }
-
-       if (summary->totlen != sumsize) {
-               dbg_summary("Summary node is corrupt (wrong erasesize?)\n");
-               goto crc_err;
-       }
-
-       crc = crc32_no_comp(0, (uchar *)summary,
-                       sizeof(struct jffs2_raw_summary)-8);
-
-       if (summary->node_crc != crc) {
-               dbg_summary("Summary node is corrupt (bad CRC)\n");
-               goto crc_err;
-       }
-
-       crc = crc32_no_comp(0, (uchar *)summary->sum,
-                       sumsize - sizeof(struct jffs2_raw_summary));
-
-       if (summary->sum_crc != crc) {
-               dbg_summary("Summary node data is corrupt (bad CRC)\n");
-               goto crc_err;
-       }
-
-       if (summary->cln_mkr)
-               dbg_summary("Summary : CLEANMARKER node \n");
-
-       ret = jffs2_sum_process_sum_data(part, offset, summary, pL);
-       if (ret)
-               return ret;             /* real error */
-
-       return 1;
-
-crc_err:
-       putstr("Summary node crc error, skipping summary information.\n");
-
-       return 0;
-}
-
-#ifdef DEBUG_FRAGMENTS
-static void
-dump_fragments(struct b_lists *pL)
-{
-       struct b_node *b;
-       struct jffs2_raw_inode ojNode;
-       struct jffs2_raw_inode *jNode;
-
-       putstr("\r\n\r\n******The fragment Entries******\r\n");
-       b = pL->frag.listHead;
-       while (b) {
-               jNode = (struct jffs2_raw_inode *) get_fl_mem(b->offset,
-                       sizeof(ojNode), &ojNode);
-               putLabeledWord("\r\n\tbuild_list: FLASH_OFFSET = ", b->offset);
-               putLabeledWord("\tbuild_list: totlen = ", jNode->totlen);
-               putLabeledWord("\tbuild_list: inode = ", jNode->ino);
-               putLabeledWord("\tbuild_list: version = ", jNode->version);
-               putLabeledWord("\tbuild_list: isize = ", jNode->isize);
-               putLabeledWord("\tbuild_list: atime = ", jNode->atime);
-               putLabeledWord("\tbuild_list: offset = ", jNode->offset);
-               putLabeledWord("\tbuild_list: csize = ", jNode->csize);
-               putLabeledWord("\tbuild_list: dsize = ", jNode->dsize);
-               putLabeledWord("\tbuild_list: compr = ", jNode->compr);
-               putLabeledWord("\tbuild_list: usercompr = ", jNode->usercompr);
-               putLabeledWord("\tbuild_list: flags = ", jNode->flags);
-               putLabeledWord("\tbuild_list: offset = ", b->offset);   /* FIXME: ? [RS] */
-               b = b->next;
-       }
-}
-#endif
-
-#ifdef DEBUG_DIRENTS
-static void
-dump_dirents(struct b_lists *pL)
-{
-       struct b_node *b;
-       struct jffs2_raw_dirent *jDir;
-
-       putstr("\r\n\r\n******The directory Entries******\r\n");
-       b = pL->dir.listHead;
-       while (b) {
-               jDir = (struct jffs2_raw_dirent *) get_node_mem(b->offset,
-                                                               pL->readbuf);
-               putstr("\r\n");
-               putnstr(jDir->name, jDir->nsize);
-               putLabeledWord("\r\n\tbuild_list: magic = ", jDir->magic);
-               putLabeledWord("\tbuild_list: nodetype = ", jDir->nodetype);
-               putLabeledWord("\tbuild_list: hdr_crc = ", jDir->hdr_crc);
-               putLabeledWord("\tbuild_list: pino = ", jDir->pino);
-               putLabeledWord("\tbuild_list: version = ", jDir->version);
-               putLabeledWord("\tbuild_list: ino = ", jDir->ino);
-               putLabeledWord("\tbuild_list: mctime = ", jDir->mctime);
-               putLabeledWord("\tbuild_list: nsize = ", jDir->nsize);
-               putLabeledWord("\tbuild_list: type = ", jDir->type);
-               putLabeledWord("\tbuild_list: node_crc = ", jDir->node_crc);
-               putLabeledWord("\tbuild_list: name_crc = ", jDir->name_crc);
-               putLabeledWord("\tbuild_list: offset = ", b->offset);   /* FIXME: ? [RS] */
-               b = b->next;
-               put_fl_mem(jDir, pL->readbuf);
-       }
-}
-#endif
-
-#define DEFAULT_EMPTY_SCAN_SIZE        4096
-
-static inline uint32_t EMPTY_SCAN_SIZE(uint32_t sector_size)
-{
-       if (sector_size < DEFAULT_EMPTY_SCAN_SIZE)
-               return sector_size;
-       else
-               return DEFAULT_EMPTY_SCAN_SIZE;
-}
-
-static u32
-jffs2_1pass_build_lists(struct part_info * part)
-{
-       struct b_lists *pL;
-       struct jffs2_unknown_node *node;
-       u32 nr_sectors = part->size/part->sector_size;
-       u32 i;
-       u32 counter4 = 0;
-       u32 counterF = 0;
-       u32 counterN = 0;
-       u32 max_totlen = 0;
-       u32 buf_size = DEFAULT_EMPTY_SCAN_SIZE;
-       char *buf;
-
-       /* turn off the lcd.  Refreshing the lcd adds 50% overhead to the */
-       /* jffs2 list building enterprise nope.  in newer versions the overhead is */
-       /* only about 5 %.  not enough to inconvenience people for. */
-       /* lcd_off(); */
-
-       /* if we are building a list we need to refresh the cache. */
-       jffs_init_1pass_list(part);
-       pL = (struct b_lists *)part->jffs2_priv;
-       buf = malloc(buf_size);
-       puts ("Scanning JFFS2 FS:   ");
-
-       /* start at the beginning of the partition */
-       for (i = 0; i < nr_sectors; i++) {
-               uint32_t sector_ofs = i * part->sector_size;
-               uint32_t buf_ofs = sector_ofs;
-               uint32_t buf_len;
-               uint32_t ofs, prevofs;
-               struct jffs2_sum_marker *sm;
-               void *sumptr = NULL;
-               uint32_t sumlen;
-               int ret;
-
-               WATCHDOG_RESET();
-
-               buf_len = sizeof(*sm);
-
-               /* Read as much as we want into the _end_ of the preallocated
-                * buffer
-                */
-               get_fl_mem(part->offset + sector_ofs + part->sector_size -
-                               buf_len, buf_len, buf + buf_size - buf_len);
-
-               sm = (void *)buf + buf_size - sizeof(*sm);
-               if (sm->magic == JFFS2_SUM_MAGIC) {
-                       sumlen = part->sector_size - sm->offset;
-                       sumptr = buf + buf_size - sumlen;
-
-                       /* Now, make sure the summary itself is available */
-                       if (sumlen > buf_size) {
-                               /* Need to kmalloc for this. */
-                               sumptr = malloc(sumlen);
-                               if (!sumptr) {
-                                       putstr("Can't get memory for summary "
-                                                       "node!\n");
-                                       return 0;
-                               }
-                               memcpy(sumptr + sumlen - buf_len, buf +
-                                               buf_size - buf_len, buf_len);
-                       }
-                       if (buf_len < sumlen) {
-                               /* Need to read more so that the entire summary
-                                * node is present
-                                */
-                               get_fl_mem(part->offset + sector_ofs +
-                                               part->sector_size - sumlen,
-                                               sumlen - buf_len, sumptr);
-                       }
-               }
-
-               if (sumptr) {
-                       ret = jffs2_sum_scan_sumnode(part, sector_ofs, sumptr,
-                                       sumlen, pL);
-
-                       if (buf_size && sumlen > buf_size)
-                               free(sumptr);
-                       if (ret < 0)
-                               return 0;
-                       if (ret)
-                               continue;
-
-               }
-
-               buf_len = EMPTY_SCAN_SIZE(part->sector_size);
-
-               get_fl_mem((u32)part->offset + buf_ofs, buf_len, buf);
-
-               /* We temporarily use 'ofs' as a pointer into the buffer/jeb */
-               ofs = 0;
-
-               /* Scan only 4KiB of 0xFF before declaring it's empty */
-               while (ofs < EMPTY_SCAN_SIZE(part->sector_size) &&
-                               *(uint32_t *)(&buf[ofs]) == 0xFFFFFFFF)
-                       ofs += 4;
-
-               if (ofs == EMPTY_SCAN_SIZE(part->sector_size))
-                       continue;
-
-               ofs += sector_ofs;
-               prevofs = ofs - 1;
-
-       scan_more:
-               while (ofs < sector_ofs + part->sector_size) {
-                       if (ofs == prevofs) {
-                               printf("offset %08x already seen, skip\n", ofs);
-                               ofs += 4;
-                               counter4++;
-                               continue;
-                       }
-                       prevofs = ofs;
-                       if (sector_ofs + part->sector_size <
-                                       ofs + sizeof(*node))
-                               break;
-                       if (buf_ofs + buf_len < ofs + sizeof(*node)) {
-                               buf_len = min_t(uint32_t, buf_size, sector_ofs
-                                               + part->sector_size - ofs);
-                               get_fl_mem((u32)part->offset + ofs, buf_len,
-                                          buf);
-                               buf_ofs = ofs;
-                       }
-
-                       node = (struct jffs2_unknown_node *)&buf[ofs-buf_ofs];
-
-                       if (*(uint32_t *)(&buf[ofs-buf_ofs]) == 0xffffffff) {
-                               uint32_t inbuf_ofs;
-                               uint32_t empty_start, scan_end;
-
-                               empty_start = ofs;
-                               ofs += 4;
-                               scan_end = min_t(uint32_t, EMPTY_SCAN_SIZE(
-                                                       part->sector_size)/8,
-                                                       buf_len);
-                       more_empty:
-                               inbuf_ofs = ofs - buf_ofs;
-                               while (inbuf_ofs < scan_end) {
-                                       if (*(uint32_t *)(&buf[inbuf_ofs]) !=
-                                                       0xffffffff)
-                                               goto scan_more;
-
-                                       inbuf_ofs += 4;
-                                       ofs += 4;
-                               }
-                               /* Ran off end. */
-
-                               /* See how much more there is to read in this
-                                * eraseblock...
-                                */
-                               buf_len = min_t(uint32_t, buf_size,
-                                               sector_ofs +
-                                               part->sector_size - ofs);
-                               if (!buf_len) {
-                                       /* No more to read. Break out of main
-                                        * loop without marking this range of
-                                        * empty space as dirty (because it's
-                                        * not)
-                                        */
-                                       break;
-                               }
-                               scan_end = buf_len;
-                               get_fl_mem((u32)part->offset + ofs, buf_len,
-                                          buf);
-                               buf_ofs = ofs;
-                               goto more_empty;
-                       }
-                       if (node->magic != JFFS2_MAGIC_BITMASK ||
-                                       !hdr_crc(node)) {
-                               ofs += 4;
-                               counter4++;
-                               continue;
-                       }
-                       if (ofs + node->totlen >
-                                       sector_ofs + part->sector_size) {
-                               ofs += 4;
-                               counter4++;
-                               continue;
-                       }
-                       /* if its a fragment add it */
-                       switch (node->nodetype) {
-                       case JFFS2_NODETYPE_INODE:
-                               if (buf_ofs + buf_len < ofs + sizeof(struct
-                                                       jffs2_raw_inode)) {
-                                       get_fl_mem((u32)part->offset + ofs,
-                                                  buf_len, buf);
-                                       buf_ofs = ofs;
-                                       node = (void *)buf;
-                               }
-                               if (!inode_crc((struct jffs2_raw_inode *) node))
-                                      break;
-
-                               if (insert_node(&pL->frag, (u32) part->offset +
-                                               ofs) == NULL)
-                                       return 0;
-                               if (max_totlen < node->totlen)
-                                       max_totlen = node->totlen;
-                               break;
-                       case JFFS2_NODETYPE_DIRENT:
-                               if (buf_ofs + buf_len < ofs + sizeof(struct
-                                                       jffs2_raw_dirent) +
-                                                       ((struct
-                                                        jffs2_raw_dirent *)
-                                                       node)->nsize) {
-                                       get_fl_mem((u32)part->offset + ofs,
-                                                  buf_len, buf);
-                                       buf_ofs = ofs;
-                                       node = (void *)buf;
-                               }
-
-                               if (!dirent_crc((struct jffs2_raw_dirent *)
-                                                       node) ||
-                                               !dirent_name_crc(
-                                                       (struct
-                                                        jffs2_raw_dirent *)
-                                                       node))
-                                       break;
-                               if (! (counterN%100))
-                                       puts ("\b\b.  ");
-                               if (insert_node(&pL->dir, (u32) part->offset +
-                                               ofs) == NULL)
-                                       return 0;
-                               if (max_totlen < node->totlen)
-                                       max_totlen = node->totlen;
-                               counterN++;
-                               break;
-                       case JFFS2_NODETYPE_CLEANMARKER:
-                               if (node->totlen != sizeof(struct jffs2_unknown_node))
-                                       printf("OOPS Cleanmarker has bad size "
-                                               "%d != %zu\n",
-                                               node->totlen,
-                                               sizeof(struct jffs2_unknown_node));
-                               break;
-                       case JFFS2_NODETYPE_PADDING:
-                               if (node->totlen < sizeof(struct jffs2_unknown_node))
-                                       printf("OOPS Padding has bad size "
-                                               "%d < %zu\n",
-                                               node->totlen,
-                                               sizeof(struct jffs2_unknown_node));
-                               break;
-                       case JFFS2_NODETYPE_SUMMARY:
-                               break;
-                       default:
-                               printf("Unknown node type: %x len %d offset 0x%x\n",
-                                       node->nodetype,
-                                       node->totlen, ofs);
-                       }
-                       ofs += ((node->totlen + 3) & ~3);
-                       counterF++;
-               }
-       }
-
-       free(buf);
-       putstr("\b\b done.\r\n");               /* close off the dots */
-
-       /* We don't care if malloc failed - then each read operation will
-        * allocate its own buffer as necessary (NAND) or will read directly
-        * from flash (NOR).
-        */
-       pL->readbuf = malloc(max_totlen);
-
-       /* turn the lcd back on. */
-       /* splash(); */
-
-#if 0
-       putLabeledWord("dir entries = ", pL->dir.listCount);
-       putLabeledWord("frag entries = ", pL->frag.listCount);
-       putLabeledWord("+4 increments = ", counter4);
-       putLabeledWord("+file_offset increments = ", counterF);
-
-#endif
-
-#ifdef DEBUG_DIRENTS
-       dump_dirents(pL);
-#endif
-
-#ifdef DEBUG_FRAGMENTS
-       dump_fragments(pL);
-#endif
-
-       /* give visual feedback that we are done scanning the flash */
-       led_blink(0x0, 0x0, 0x1, 0x1);  /* off, forever, on 100ms, off 100ms */
-       return 1;
-}
-
-
-static u32
-jffs2_1pass_fill_info(struct b_lists * pL, struct b_jffs2_info * piL)
-{
-       struct b_node *b;
-       struct jffs2_raw_inode ojNode;
-       struct jffs2_raw_inode *jNode;
-       int i;
-
-       for (i = 0; i < JFFS2_NUM_COMPR; i++) {
-               piL->compr_info[i].num_frags = 0;
-               piL->compr_info[i].compr_sum = 0;
-               piL->compr_info[i].decompr_sum = 0;
-       }
-
-       b = pL->frag.listHead;
-       while (b) {
-               jNode = (struct jffs2_raw_inode *) get_fl_mem(b->offset,
-                       sizeof(ojNode), &ojNode);
-               if (jNode->compr < JFFS2_NUM_COMPR) {
-                       piL->compr_info[jNode->compr].num_frags++;
-                       piL->compr_info[jNode->compr].compr_sum += jNode->csize;
-                       piL->compr_info[jNode->compr].decompr_sum += jNode->dsize;
-               }
-               b = b->next;
-       }
-       return 0;
-}
-
-
-static struct b_lists *
-jffs2_get_list(struct part_info * part, const char *who)
-{
-       /* copy requested part_info struct pointer to global location */
-       current_part = part;
-
-       if (jffs2_1pass_rescan_needed(part)) {
-               if (!jffs2_1pass_build_lists(part)) {
-                       printf("%s: Failed to scan JFFSv2 file structure\n", who);
-                       return NULL;
-               }
-       }
-       return (struct b_lists *)part->jffs2_priv;
-}
-
-
-/* Print directory / file contents */
-u32
-jffs2_1pass_ls(struct part_info * part, const char *fname)
-{
-       struct b_lists *pl;
-       long ret = 1;
-       u32 inode;
-
-       if (! (pl = jffs2_get_list(part, "ls")))
-               return 0;
-
-       if (! (inode = jffs2_1pass_search_list_inodes(pl, fname, 1))) {
-               putstr("ls: Failed to scan jffs2 file structure\r\n");
-               return 0;
-       }
-
-
-#if 0
-       putLabeledWord("found file at inode = ", inode);
-       putLabeledWord("read_inode returns = ", ret);
-#endif
-
-       return ret;
-}
-
-
-/* Load a file from flash into memory. fname can be a full path */
-u32
-jffs2_1pass_load(char *dest, struct part_info * part, const char *fname)
-{
-
-       struct b_lists *pl;
-       long ret = 1;
-       u32 inode;
-
-       if (! (pl  = jffs2_get_list(part, "load")))
-               return 0;
-
-       if (! (inode = jffs2_1pass_search_inode(pl, fname, 1))) {
-               putstr("load: Failed to find inode\r\n");
-               return 0;
-       }
-
-       /* Resolve symlinks */
-       if (! (inode = jffs2_1pass_resolve_inode(pl, inode))) {
-               putstr("load: Failed to resolve inode structure\r\n");
-               return 0;
-       }
-
-       if ((ret = jffs2_1pass_read_inode(pl, inode, dest)) < 0) {
-               putstr("load: Failed to read inode\r\n");
-               return 0;
-       }
-
-       DEBUGF ("load: loaded '%s' to 0x%lx (%ld bytes)\n", fname,
-                               (unsigned long) dest, ret);
-       return ret;
-}
-
-/* Return information about the fs on this partition */
-u32
-jffs2_1pass_info(struct part_info * part)
-{
-       struct b_jffs2_info info;
-       struct b_lists *pl;
-       int i;
-
-       if (! (pl  = jffs2_get_list(part, "info")))
-               return 0;
-
-       jffs2_1pass_fill_info(pl, &info);
-       for (i = 0; i < JFFS2_NUM_COMPR; i++) {
-               printf ("Compression: %s\n"
-                       "\tfrag count: %d\n"
-                       "\tcompressed sum: %d\n"
-                       "\tuncompressed sum: %d\n",
-                       compr_names[i],
-                       info.compr_info[i].num_frags,
-                       info.compr_info[i].compr_sum,
-                       info.compr_info[i].decompr_sum);
-       }
-       return 1;
-}
+/*
+-------------------------------------------------------------------------
+ * Filename:      jffs2.c
+ * Version:       $Id: jffs2_1pass.c,v 1.1.1.1 2009/03/25 22:22:11 kenagy Exp $
+ * Copyright:     Copyright (C) 2001, Russ Dill
+ * Author:        Russ Dill <Russ.Dill@asu.edu>
+ * Description:   Module to load kernel from jffs2
+ *-----------------------------------------------------------------------*/
+/*
+ * some portions of this code are taken from jffs2, and as such, the
+ * following copyright notice is included.
+ *
+ * JFFS2 -- Journalling Flash File System, Version 2.
+ *
+ * Copyright (C) 2001 Red Hat, Inc.
+ *
+ * Created by David Woodhouse <dwmw2@cambridge.redhat.com>
+ *
+ * The original JFFS, from which the design for JFFS2 was derived,
+ * was designed and implemented by Axis Communications AB.
+ *
+ * The contents of this file are subject to the Red Hat eCos Public
+ * License Version 1.1 (the "Licence"); you may not use this file
+ * except in compliance with the Licence.  You may obtain a copy of
+ * the Licence at http://www.redhat.com/
+ *
+ * Software distributed under the Licence is distributed on an "AS IS"
+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.
+ * See the Licence for the specific language governing rights and
+ * limitations under the Licence.
+ *
+ * The Original Code is JFFS2 - Journalling Flash File System, version 2
+ *
+ * Alternatively, the contents of this file may be used under the
+ * terms of the GNU General Public License version 2 (the "GPL"), in
+ * which case the provisions of the GPL are applicable instead of the
+ * above.  If you wish to allow the use of your version of this file
+ * only under the terms of the GPL and not to allow others to use your
+ * version of this file under the RHEPL, indicate your decision by
+ * deleting the provisions above and replace them with the notice and
+ * other provisions required by the GPL.  If you do not delete the
+ * provisions above, a recipient may use your version of this file
+ * under either the RHEPL or the GPL.
+ *
+ * $Id: jffs2_1pass.c,v 1.1.1.1 2009/03/25 22:22:11 kenagy Exp $
+ *
+ */
+
+/* Ok, so anyone who knows the jffs2 code will probably want to get a papar
+ * bag to throw up into before reading this code. I looked through the jffs2
+ * code, the caching scheme is very elegant. I tried to keep the version
+ * for a bootloader as small and simple as possible. Instead of worring about
+ * unneccesary data copies, node scans, etc, I just optimized for the known
+ * common case, a kernel, which looks like:
+ *     (1) most pages are 4096 bytes
+ *     (2) version numbers are somewhat sorted in acsending order
+ *     (3) multiple compressed blocks making up one page is uncommon
+ *
+ * So I create a linked list of decending version numbers (insertions at the
+ * head), and then for each page, walk down the list, until a matching page
+ * with 4096 bytes is found, and then decompress the watching pages in
+ * reverse order.
+ *
+ */
+
+/*
+ * Adapted by Nye Liu <nyet@zumanetworks.com> and
+ * Rex Feany <rfeany@zumanetworks.com>
+ * on Jan/2002 for U-Boot.
+ *
+ * Clipped out all the non-1pass functions, cleaned up warnings,
+ * wrappers, etc. No major changes to the code.
+ * Please, he really means it when he said have a paper bag
+ * handy. We needed it ;).
+ *
+ */
+
+/*
+ * Bugfixing by Kai-Uwe Bloem <kai-uwe.bloem@auerswald.de>, (C) Mar/2003
+ *
+ * - overhaul of the memory management. Removed much of the "paper-bagging"
+ *   in that part of the code, fixed several bugs, now frees memory when
+ *   partition is changed.
+ *   It's still ugly :-(
+ * - fixed a bug in jffs2_1pass_read_inode where the file length calculation
+ *   was incorrect. Removed a bit of the paper-bagging as well.
+ * - removed double crc calculation for fragment headers in jffs2_private.h
+ *   for speedup.
+ * - scan_empty rewritten in a more "standard" manner (non-paperbag, that is).
+ * - spinning wheel now spins depending on how much memory has been scanned
+ * - lots of small changes all over the place to "improve" readability.
+ * - implemented fragment sorting to ensure that the newest data is copied
+ *   if there are multiple copies of fragments for a certain file offset.
+ *
+ * The fragment sorting feature must be enabled by CONFIG_SYS_JFFS2_SORT_FRAGMENTS.
+ * Sorting is done while adding fragments to the lists, which is more or less a
+ * bubble sort. This takes a lot of time, and is most probably not an issue if
+ * the boot filesystem is always mounted readonly.
+ *
+ * You should define it if the boot filesystem is mounted writable, and updates
+ * to the boot files are done by copying files to that filesystem.
+ *
+ *
+ * There's a big issue left: endianess is completely ignored in this code. Duh!
+ *
+ *
+ * You still should have paper bags at hand :-(. The code lacks more or less
+ * any comment, and is still arcane and difficult to read in places. As this
+ * might be incompatible with any new code from the jffs2 maintainers anyway,
+ * it should probably be dumped and replaced by something like jffs2reader!
+ */
+
+
+#include <common.h>
+#include <config.h>
+#include <malloc.h>
+#include <linux/stat.h>
+#include <linux/time.h>
+#include <watchdog.h>
+#include <jffs2/jffs2.h>
+#include <jffs2/jffs2_1pass.h>
+#include <linux/mtd/compat.h>
+
+#include "jffs2_private.h"
+
+
+#define        NODE_CHUNK      1024    /* size of memory allocation chunk in b_nodes */
+#define        SPIN_BLKSIZE    18      /* spin after having scanned 1<<BLKSIZE bytes */
+
+/* Debugging switches */
+#undef DEBUG_DIRENTS           /* print directory entry list after scan */
+#undef DEBUG_FRAGMENTS         /* print fragment list after scan */
+#undef DEBUG                   /* enable debugging messages */
+
+
+#ifdef  DEBUG
+# define DEBUGF(fmt,args...)   printf(fmt ,##args)
+#else
+# define DEBUGF(fmt,args...)
+#endif
+
+#include "summary.h"
+
+/* keeps pointer to currentlu processed partition */
+static struct part_info *current_part;
+
+#if (defined(CONFIG_JFFS2_NAND) && \
+     defined(CONFIG_CMD_NAND) )
+#if defined(CONFIG_NAND_LEGACY)
+#include <linux/mtd/nand_legacy.h>
+#else
+#include <nand.h>
+#endif
+/*
+ * Support for jffs2 on top of NAND-flash
+ *
+ * NAND memory isn't mapped in processor's address space,
+ * so data should be fetched from flash before
+ * being processed. This is exactly what functions declared
+ * here do.
+ *
+ */
+
+#if defined(CONFIG_NAND_LEGACY)
+/* this one defined in nand_legacy.c */
+int read_jffs2_nand(size_t start, size_t len,
+               size_t * retlen, u_char * buf, int nanddev);
+#endif
+
+#define NAND_PAGE_SIZE 512
+#define NAND_PAGE_SHIFT 9
+#define NAND_PAGE_MASK (~(NAND_PAGE_SIZE-1))
+
+#ifndef NAND_CACHE_PAGES
+#define NAND_CACHE_PAGES 16
+#endif
+#define NAND_CACHE_SIZE (NAND_CACHE_PAGES*NAND_PAGE_SIZE)
+
+static u8* nand_cache = NULL;
+static u32 nand_cache_off = (u32)-1;
+
+static int read_nand_cached(u32 off, u32 size, u_char *buf)
+{
+       struct mtdids *id = current_part->dev->id;
+       u32 bytes_read = 0;
+       size_t retlen;
+       int cpy_bytes;
+
+       while (bytes_read < size) {
+               if ((off + bytes_read < nand_cache_off) ||
+                   (off + bytes_read >= nand_cache_off+NAND_CACHE_SIZE)) {
+                       nand_cache_off = (off + bytes_read) & NAND_PAGE_MASK;
+                       if (!nand_cache) {
+                               /* This memory never gets freed but 'cause
+                                  it's a bootloader, nobody cares */
+                               nand_cache = malloc(NAND_CACHE_SIZE);
+                               if (!nand_cache) {
+                                       printf("read_nand_cached: can't alloc cache size %d bytes\n",
+                                              NAND_CACHE_SIZE);
+                                       return -1;
+                               }
+                       }
+
+#if defined(CONFIG_NAND_LEGACY)
+                       if (read_jffs2_nand(nand_cache_off, NAND_CACHE_SIZE,
+                                               &retlen, nand_cache, id->num) < 0 ||
+                                       retlen != NAND_CACHE_SIZE) {
+                               printf("read_nand_cached: error reading nand off %#x size %d bytes\n",
+                                               nand_cache_off, NAND_CACHE_SIZE);
+                               return -1;
+                       }
+#else
+                       retlen = NAND_CACHE_SIZE;
+                       if (nand_read(&nand_info[id->num], nand_cache_off,
+                                               &retlen, nand_cache) != 0 ||
+                                       retlen != NAND_CACHE_SIZE) {
+                               printf("read_nand_cached: error reading nand off %#x size %d bytes\n",
+                                               nand_cache_off, NAND_CACHE_SIZE);
+                               return -1;
+                       }
+#endif
+               }
+               cpy_bytes = nand_cache_off + NAND_CACHE_SIZE - (off + bytes_read);
+               if (cpy_bytes > size - bytes_read)
+                       cpy_bytes = size - bytes_read;
+               memcpy(buf + bytes_read,
+                      nand_cache + off + bytes_read - nand_cache_off,
+                      cpy_bytes);
+               bytes_read += cpy_bytes;
+       }
+       return bytes_read;
+}
+
+static void *get_fl_mem_nand(u32 off, u32 size, void *ext_buf)
+{
+       u_char *buf = ext_buf ? (u_char*)ext_buf : (u_char*)malloc(size);
+
+       if (NULL == buf) {
+               printf("get_fl_mem_nand: can't alloc %d bytes\n", size);
+               return NULL;
+       }
+       if (read_nand_cached(off, size, buf) < 0) {
+               if (!ext_buf)
+                       free(buf);
+               return NULL;
+       }
+
+       return buf;
+}
+
+static void *get_node_mem_nand(u32 off, void *ext_buf)
+{
+       struct jffs2_unknown_node node;
+       void *ret = NULL;
+
+       if (NULL == get_fl_mem_nand(off, sizeof(node), &node))
+               return NULL;
+
+       if (!(ret = get_fl_mem_nand(off, node.magic ==
+                              JFFS2_MAGIC_BITMASK ? node.totlen : sizeof(node),
+                              ext_buf))) {
+               printf("off = %#x magic %#x type %#x node.totlen = %d\n",
+                      off, node.magic, node.nodetype, node.totlen);
+       }
+       return ret;
+}
+
+static void put_fl_mem_nand(void *buf)
+{
+       free(buf);
+}
+#endif
+
+#if defined(CONFIG_CMD_ONENAND)
+
+#include <linux/mtd/mtd.h>
+#include <linux/mtd/onenand.h>
+#include <onenand_uboot.h>
+
+#define ONENAND_PAGE_SIZE 2048
+#define ONENAND_PAGE_SHIFT 11
+#define ONENAND_PAGE_MASK (~(ONENAND_PAGE_SIZE-1))
+
+#ifndef ONENAND_CACHE_PAGES
+#define ONENAND_CACHE_PAGES 4
+#endif
+#define ONENAND_CACHE_SIZE (ONENAND_CACHE_PAGES*ONENAND_PAGE_SIZE)
+
+static u8* onenand_cache;
+static u32 onenand_cache_off = (u32)-1;
+
+static int read_onenand_cached(u32 off, u32 size, u_char *buf)
+{
+       u32 bytes_read = 0;
+       size_t retlen;
+       int cpy_bytes;
+
+       while (bytes_read < size) {
+               if ((off + bytes_read < onenand_cache_off) ||
+                   (off + bytes_read >= onenand_cache_off + ONENAND_CACHE_SIZE)) {
+                       onenand_cache_off = (off + bytes_read) & ONENAND_PAGE_MASK;
+                       if (!onenand_cache) {
+                               /* This memory never gets freed but 'cause
+                                  it's a bootloader, nobody cares */
+                               onenand_cache = malloc(ONENAND_CACHE_SIZE);
+                               if (!onenand_cache) {
+                                       printf("read_onenand_cached: can't alloc cache size %d bytes\n",
+                                              ONENAND_CACHE_SIZE);
+                                       return -1;
+                               }
+                       }
+
+                       retlen = ONENAND_CACHE_SIZE;
+                       if (onenand_read(&onenand_mtd, onenand_cache_off, retlen,
+                                               &retlen, onenand_cache) != 0 ||
+                                       retlen != ONENAND_CACHE_SIZE) {
+                               printf("read_onenand_cached: error reading nand off %#x size %d bytes\n",
+                                       onenand_cache_off, ONENAND_CACHE_SIZE);
+                               return -1;
+                       }
+               }
+               cpy_bytes = onenand_cache_off + ONENAND_CACHE_SIZE - (off + bytes_read);
+               if (cpy_bytes > size - bytes_read)
+                       cpy_bytes = size - bytes_read;
+               memcpy(buf + bytes_read,
+                      onenand_cache + off + bytes_read - onenand_cache_off,
+                      cpy_bytes);
+               bytes_read += cpy_bytes;
+       }
+       return bytes_read;
+}
+
+static void *get_fl_mem_onenand(u32 off, u32 size, void *ext_buf)
+{
+       u_char *buf = ext_buf ? (u_char *)ext_buf : (u_char *)malloc(size);
+
+       if (NULL == buf) {
+               printf("get_fl_mem_onenand: can't alloc %d bytes\n", size);
+               return NULL;
+       }
+       if (read_onenand_cached(off, size, buf) < 0) {
+               if (!ext_buf)
+                       free(buf);
+               return NULL;
+       }
+
+       return buf;
+}
+
+static void *get_node_mem_onenand(u32 off, void *ext_buf)
+{
+       struct jffs2_unknown_node node;
+       void *ret = NULL;
+
+       if (NULL == get_fl_mem_onenand(off, sizeof(node), &node))
+               return NULL;
+
+       ret = get_fl_mem_onenand(off, node.magic ==
+                       JFFS2_MAGIC_BITMASK ? node.totlen : sizeof(node),
+                       ext_buf);
+       if (!ret) {
+               printf("off = %#x magic %#x type %#x node.totlen = %d\n",
+                      off, node.magic, node.nodetype, node.totlen);
+       }
+       return ret;
+}
+
+
+static void put_fl_mem_onenand(void *buf)
+{
+       free(buf);
+}
+#endif
+
+
+#if defined(CONFIG_CMD_FLASH)
+/*
+ * Support for jffs2 on top of NOR-flash
+ *
+ * NOR flash memory is mapped in processor's address space,
+ * just return address.
+ */
+static inline void *get_fl_mem_nor(u32 off, u32 size, void *ext_buf)
+{
+       u32 addr = off;
+       struct mtdids *id = current_part->dev->id;
+
+       extern flash_info_t flash_info[];
+       flash_info_t *flash = &flash_info[id->num];
+
+       addr += flash->start[0];
+       if (ext_buf) {
+               memcpy(ext_buf, (void *)addr, size);
+               return ext_buf;
+       }
+       return (void*)addr;
+}
+
+static inline void *get_node_mem_nor(u32 off, void *ext_buf)
+{
+       struct jffs2_unknown_node *pNode;
+
+       /* pNode will point directly to flash - don't provide external buffer
+          and don't care about size */
+       pNode = get_fl_mem_nor(off, 0, NULL);
+       return (void *)get_fl_mem_nor(off, pNode->magic == JFFS2_MAGIC_BITMASK ?
+                       pNode->totlen : sizeof(*pNode), ext_buf);
+}
+#endif
+
+
+/*
+ * Generic jffs2 raw memory and node read routines.
+ *
+ */
+static inline void *get_fl_mem(u32 off, u32 size, void *ext_buf)
+{
+       struct mtdids *id = current_part->dev->id;
+
+#if defined(CONFIG_CMD_FLASH)
+       if (id->type == MTD_DEV_TYPE_NOR) {
+               return get_fl_mem_nor(off, size, ext_buf);
+       }
+#endif
+
+#if defined(CONFIG_JFFS2_NAND) && defined(CONFIG_CMD_NAND)
+       if (id->type == MTD_DEV_TYPE_NAND)
+               return get_fl_mem_nand(off, size, ext_buf);
+#endif
+
+#if defined(CONFIG_CMD_ONENAND)
+       if (id->type == MTD_DEV_TYPE_ONENAND)
+               return get_fl_mem_onenand(off, size, ext_buf);
+#endif
+
+       printf("get_fl_mem: unknown device type, using raw offset!\n");
+       return (void*)off;
+}
+
+static inline void *get_node_mem(u32 off, void *ext_buf)
+{
+       struct mtdids *id = current_part->dev->id;
+
+#if defined(CONFIG_CMD_FLASH)
+       if (id->type == MTD_DEV_TYPE_NOR)
+               return get_node_mem_nor(off, ext_buf);
+#endif
+
+#if defined(CONFIG_JFFS2_NAND) && \
+    defined(CONFIG_CMD_NAND)
+       if (id->type == MTD_DEV_TYPE_NAND)
+               return get_node_mem_nand(off, ext_buf);
+#endif
+
+#if defined(CONFIG_CMD_ONENAND)
+       if (id->type == MTD_DEV_TYPE_ONENAND)
+               return get_node_mem_onenand(off, ext_buf);
+#endif
+
+       printf("get_node_mem: unknown device type, using raw offset!\n");
+       return (void*)off;
+}
+
+static inline void put_fl_mem(void *buf, void *ext_buf)
+{
+       struct mtdids *id = current_part->dev->id;
+
+       /* If buf is the same as ext_buf, it was provided by the caller -
+          we shouldn't free it then. */
+       if (buf == ext_buf)
+               return;
+       switch (id->type) {
+#if defined(CONFIG_JFFS2_NAND) && defined(CONFIG_CMD_NAND)
+       case MTD_DEV_TYPE_NAND:
+               return put_fl_mem_nand(buf);
+#endif
+#if defined(CONFIG_CMD_ONENAND)
+       case MTD_DEV_TYPE_ONENAND:
+               return put_fl_mem_onenand(buf);
+#endif
+       }
+}
+
+/* Compression names */
+static char *compr_names[] = {
+       "NONE",
+       "ZERO",
+       "RTIME",
+       "RUBINMIPS",
+       "COPY",
+       "DYNRUBIN",
+       "ZLIB",
+#if defined(CONFIG_JFFS2_LZO_LZARI)
+       "LZO",
+       "LZARI",
+#endif
+};
+
+/* Memory management */
+struct mem_block {
+       u32     index;
+       struct mem_block *next;
+       struct b_node nodes[NODE_CHUNK];
+};
+
+
+static void
+free_nodes(struct b_list *list)
+{
+       while (list->listMemBase != NULL) {
+               struct mem_block *next = list->listMemBase->next;
+               free( list->listMemBase );
+               list->listMemBase = next;
+       }
+}
+
+static struct b_node *
+add_node(struct b_list *list)
+{
+       u32 index = 0;
+       struct mem_block *memBase;
+       struct b_node *b;
+
+       memBase = list->listMemBase;
+       if (memBase != NULL)
+               index = memBase->index;
+#if 0
+       putLabeledWord("add_node: index = ", index);
+       putLabeledWord("add_node: memBase = ", list->listMemBase);
+#endif
+
+       if (memBase == NULL || index >= NODE_CHUNK) {
+               /* we need more space before we continue */
+               memBase = mmalloc(sizeof(struct mem_block));
+               if (memBase == NULL) {
+                       putstr("add_node: malloc failed\n");
+                       return NULL;
+               }
+               memBase->next = list->listMemBase;
+               index = 0;
+#if 0
+               putLabeledWord("add_node: alloced a new membase at ", *memBase);
+#endif
+
+       }
+       /* now we have room to add it. */
+       b = &memBase->nodes[index];
+       index ++;
+
+       memBase->index = index;
+       list->listMemBase = memBase;
+       list->listCount++;
+       return b;
+}
+
+static struct b_node *
+insert_node(struct b_list *list, u32 offset)
+{
+       struct b_node *new;
+#ifdef CONFIG_SYS_JFFS2_SORT_FRAGMENTS
+       struct b_node *b, *prev;
+#endif
+
+       if (!(new = add_node(list))) {
+               putstr("add_node failed!\r\n");
+               return NULL;
+       }
+       new->offset = offset;
+
+#ifdef CONFIG_SYS_JFFS2_SORT_FRAGMENTS
+       if (list->listTail != NULL && list->listCompare(new, list->listTail))
+               prev = list->listTail;
+       else if (list->listLast != NULL && list->listCompare(new, list->listLast))
+               prev = list->listLast;
+       else
+               prev = NULL;
+
+       for (b = (prev ? prev->next : list->listHead);
+            b != NULL && list->listCompare(new, b);
+            prev = b, b = b->next) {
+               list->listLoops++;
+       }
+       if (b != NULL)
+               list->listLast = prev;
+
+       if (b != NULL) {
+               new->next = b;
+               if (prev != NULL)
+                       prev->next = new;
+               else
+                       list->listHead = new;
+       } else
+#endif
+       {
+               new->next = (struct b_node *) NULL;
+               if (list->listTail != NULL) {
+                       list->listTail->next = new;
+                       list->listTail = new;
+               } else {
+                       list->listTail = list->listHead = new;
+               }
+       }
+
+       return new;
+}
+
+#ifdef CONFIG_SYS_JFFS2_SORT_FRAGMENTS
+/* Sort data entries with the latest version last, so that if there
+ * is overlapping data the latest version will be used.
+ */
+static int compare_inodes(struct b_node *new, struct b_node *old)
+{
+       struct jffs2_raw_inode ojNew;
+       struct jffs2_raw_inode ojOld;
+       struct jffs2_raw_inode *jNew =
+               (struct jffs2_raw_inode *)get_fl_mem(new->offset, sizeof(ojNew), &ojNew);
+       struct jffs2_raw_inode *jOld =
+               (struct jffs2_raw_inode *)get_fl_mem(old->offset, sizeof(ojOld), &ojOld);
+
+       return jNew->version > jOld->version;
+}
+
+/* Sort directory entries so all entries in the same directory
+ * with the same name are grouped together, with the latest version
+ * last. This makes it easy to eliminate all but the latest version
+ * by marking the previous version dead by setting the inode to 0.
+ */
+static int compare_dirents(struct b_node *new, struct b_node *old)
+{
+       struct jffs2_raw_dirent ojNew;
+       struct jffs2_raw_dirent ojOld;
+       struct jffs2_raw_dirent *jNew =
+               (struct jffs2_raw_dirent *)get_fl_mem(new->offset, sizeof(ojNew), &ojNew);
+       struct jffs2_raw_dirent *jOld =
+               (struct jffs2_raw_dirent *)get_fl_mem(old->offset, sizeof(ojOld), &ojOld);
+       int cmp;
+
+       /* ascending sort by pino */
+       if (jNew->pino != jOld->pino)
+               return jNew->pino > jOld->pino;
+
+       /* pino is the same, so use ascending sort by nsize, so
+        * we don't do strncmp unless we really must.
+        */
+       if (jNew->nsize != jOld->nsize)
+               return jNew->nsize > jOld->nsize;
+
+       /* length is also the same, so use ascending sort by name
+        */
+       cmp = strncmp((char *)jNew->name, (char *)jOld->name, jNew->nsize);
+       if (cmp != 0)
+               return cmp > 0;
+
+       /* we have duplicate names in this directory, so use ascending
+        * sort by version
+        */
+       if (jNew->version > jOld->version) {
+               /* since jNew is newer, we know jOld is not valid, so
+                * mark it with inode 0 and it will not be used
+                */
+               jOld->ino = 0;
+               return 1;
+       }
+
+       return 0;
+}
+#endif
+
+void
+jffs2_free_cache(struct part_info *part)
+{
+       struct b_lists *pL;
+
+       if (part->jffs2_priv != NULL) {
+               pL = (struct b_lists *)part->jffs2_priv;
+               free_nodes(&pL->frag);
+               free_nodes(&pL->dir);
+               free(pL->readbuf);
+               free(pL);
+       }
+}
+
+static u32
+jffs_init_1pass_list(struct part_info *part)
+{
+       struct b_lists *pL;
+
+       jffs2_free_cache(part);
+
+       if (NULL != (part->jffs2_priv = malloc(sizeof(struct b_lists)))) {
+               pL = (struct b_lists *)part->jffs2_priv;
+
+               memset(pL, 0, sizeof(*pL));
+#ifdef CONFIG_SYS_JFFS2_SORT_FRAGMENTS
+               pL->dir.listCompare = compare_dirents;
+               pL->frag.listCompare = compare_inodes;
+#endif
+       }
+       return 0;
+}
+
+/* find the inode from the slashless name given a parent */
+static long
+jffs2_1pass_read_inode(struct b_lists *pL, u32 inode, char *dest)
+{
+       struct b_node *b;
+       struct jffs2_raw_inode *jNode;
+       u32 totalSize = 0;
+       u32 latestVersion = 0;
+       uchar *lDest;
+       uchar *src;
+       long ret;
+       int i;
+       u32 counter = 0;
+#ifdef CONFIG_SYS_JFFS2_SORT_FRAGMENTS
+       /* Find file size before loading any data, so fragments that
+        * start past the end of file can be ignored. A fragment
+        * that is partially in the file is loaded, so extra data may
+        * be loaded up to the next 4K boundary above the file size.
+        * This shouldn't cause trouble when loading kernel images, so
+        * we will live with it.
+        */
+       for (b = pL->frag.listHead; b != NULL; b = b->next) {
+               jNode = (struct jffs2_raw_inode *) get_fl_mem(b->offset,
+                       sizeof(struct jffs2_raw_inode), pL->readbuf);
+               if ((inode == jNode->ino)) {
+                       /* get actual file length from the newest node */
+                       if (jNode->version >= latestVersion) {
+                               totalSize = jNode->isize;
+                               latestVersion = jNode->version;
+                       }
+               }
+               put_fl_mem(jNode, pL->readbuf);
+       }
+#endif
+
+       for (b = pL->frag.listHead; b != NULL; b = b->next) {
+               jNode = (struct jffs2_raw_inode *) get_node_mem(b->offset,
+                                                               pL->readbuf);
+               if ((inode == jNode->ino)) {
+#if 0
+                       putLabeledWord("\r\n\r\nread_inode: totlen = ", jNode->totlen);
+                       putLabeledWord("read_inode: inode = ", jNode->ino);
+                       putLabeledWord("read_inode: version = ", jNode->version);
+                       putLabeledWord("read_inode: isize = ", jNode->isize);
+                       putLabeledWord("read_inode: offset = ", jNode->offset);
+                       putLabeledWord("read_inode: csize = ", jNode->csize);
+                       putLabeledWord("read_inode: dsize = ", jNode->dsize);
+                       putLabeledWord("read_inode: compr = ", jNode->compr);
+                       putLabeledWord("read_inode: usercompr = ", jNode->usercompr);
+                       putLabeledWord("read_inode: flags = ", jNode->flags);
+#endif
+
+#ifndef CONFIG_SYS_JFFS2_SORT_FRAGMENTS
+                       /* get actual file length from the newest node */
+                       if (jNode->version >= latestVersion) {
+                               totalSize = jNode->isize;
+                               latestVersion = jNode->version;
+                       }
+#endif
+
+                       if(dest) {
+                               src = ((uchar *) jNode) + sizeof(struct jffs2_raw_inode);
+                               /* ignore data behind latest known EOF */
+                               if (jNode->offset > totalSize) {
+                                       put_fl_mem(jNode, pL->readbuf);
+                                       continue;
+                               }
+                               if (b->datacrc == CRC_UNKNOWN)
+                                       b->datacrc = data_crc(jNode) ?
+                                               CRC_OK : CRC_BAD;
+                               if (b->datacrc == CRC_BAD) {
+                                       put_fl_mem(jNode, pL->readbuf);
+                                       continue;
+                               }
+
+                               lDest = (uchar *) (dest + jNode->offset);
+#if 0
+                               putLabeledWord("read_inode: src = ", src);
+                               putLabeledWord("read_inode: dest = ", lDest);
+#endif
+                               switch (jNode->compr) {
+                               case JFFS2_COMPR_NONE:
+                                       ret = (unsigned long) ldr_memcpy(lDest, src, jNode->dsize);
+                                       break;
+                               case JFFS2_COMPR_ZERO:
+                                       ret = 0;
+                                       for (i = 0; i < jNode->dsize; i++)
+                                               *(lDest++) = 0;
+                                       break;
+                               case JFFS2_COMPR_RTIME:
+                                       ret = 0;
+                                       rtime_decompress(src, lDest, jNode->csize, jNode->dsize);
+                                       break;
+                               case JFFS2_COMPR_DYNRUBIN:
+                                       /* this is slow but it works */
+                                       ret = 0;
+                                       dynrubin_decompress(src, lDest, jNode->csize, jNode->dsize);
+                                       break;
+                               case JFFS2_COMPR_ZLIB:
+                                       ret = zlib_decompress(src, lDest, jNode->csize, jNode->dsize);
+                                       break;
+#if defined(CONFIG_JFFS2_LZO_LZARI)
+                               case JFFS2_COMPR_LZO:
+                                       ret = lzo_decompress(src, lDest, jNode->csize, jNode->dsize);
+                                       break;
+                               case JFFS2_COMPR_LZARI:
+                                       ret = lzari_decompress(src, lDest, jNode->csize, jNode->dsize);
+                                       break;
+#endif
+                               default:
+                                       /* unknown */
+                                       putLabeledWord("UNKOWN COMPRESSION METHOD = ", jNode->compr);
+                                       put_fl_mem(jNode, pL->readbuf);
+                                       return -1;
+                                       break;
+                               }
+                       }
+
+#if 0
+                       putLabeledWord("read_inode: totalSize = ", totalSize);
+                       putLabeledWord("read_inode: compr ret = ", ret);
+#endif
+               }
+               counter++;
+               put_fl_mem(jNode, pL->readbuf);
+       }
+
+#if 0
+       putLabeledWord("read_inode: returning = ", totalSize);
+#endif
+       return totalSize;
+}
+
+/* find the inode from the slashless name given a parent */
+static u32
+jffs2_1pass_find_inode(struct b_lists * pL, const char *name, u32 pino)
+{
+       struct b_node *b;
+       struct jffs2_raw_dirent *jDir;
+       int len;
+       u32 counter;
+       u32 version = 0;
+       u32 inode = 0;
+
+       /* name is assumed slash free */
+       len = strlen(name);
+
+       counter = 0;
+       /* we need to search all and return the inode with the highest version */
+       for(b = pL->dir.listHead; b; b = b->next, counter++) {
+               jDir = (struct jffs2_raw_dirent *) get_node_mem(b->offset,
+                                                               pL->readbuf);
+               if ((pino == jDir->pino) && (len == jDir->nsize) &&
+                   (jDir->ino) &&      /* 0 for unlink */
+                   (!strncmp((char *)jDir->name, name, len))) {        /* a match */
+                       if (jDir->version < version) {
+                               put_fl_mem(jDir, pL->readbuf);
+                               continue;
+                       }
+
+                       if (jDir->version == version && inode != 0) {
+                               /* I'm pretty sure this isn't legal */
+                               putstr(" ** ERROR ** ");
+                               putnstr(jDir->name, jDir->nsize);
+                               putLabeledWord(" has dup version =", version);
+                       }
+                       inode = jDir->ino;
+                       version = jDir->version;
+               }
+#if 0
+               putstr("\r\nfind_inode:p&l ->");
+               putnstr(jDir->name, jDir->nsize);
+               putstr("\r\n");
+               putLabeledWord("pino = ", jDir->pino);
+               putLabeledWord("nsize = ", jDir->nsize);
+               putLabeledWord("b = ", (u32) b);
+               putLabeledWord("counter = ", counter);
+#endif
+               put_fl_mem(jDir, pL->readbuf);
+       }
+       return inode;
+}
+
+char *mkmodestr(unsigned long mode, char *str)
+{
+       static const char *l = "xwr";
+       int mask = 1, i;
+       char c;
+
+       switch (mode & S_IFMT) {
+               case S_IFDIR:    str[0] = 'd'; break;
+               case S_IFBLK:    str[0] = 'b'; break;
+               case S_IFCHR:    str[0] = 'c'; break;
+               case S_IFIFO:    str[0] = 'f'; break;
+               case S_IFLNK:    str[0] = 'l'; break;
+               case S_IFSOCK:   str[0] = 's'; break;
+               case S_IFREG:    str[0] = '-'; break;
+               default:         str[0] = '?';
+       }
+
+       for(i = 0; i < 9; i++) {
+               c = l[i%3];
+               str[9-i] = (mode & mask)?c:'-';
+               mask = mask<<1;
+       }
+
+       if(mode & S_ISUID) str[3] = (mode & S_IXUSR)?'s':'S';
+       if(mode & S_ISGID) str[6] = (mode & S_IXGRP)?'s':'S';
+       if(mode & S_ISVTX) str[9] = (mode & S_IXOTH)?'t':'T';
+       str[10] = '\0';
+       return str;
+}
+
+static inline void dump_stat(struct stat *st, const char *name)
+{
+       char str[20];
+       char s[64], *p;
+
+       if (st->st_mtime == (time_t)(-1)) /* some ctimes really hate -1 */
+               st->st_mtime = 1;
+
+       ctime_r((time_t *)&st->st_mtime, s/*,64*/); /* newlib ctime doesn't have buflen */
+
+       if ((p = strchr(s,'\n')) != NULL) *p = '\0';
+       if ((p = strchr(s,'\r')) != NULL) *p = '\0';
+
+/*
+       printf("%6lo %s %8ld %s %s\n", st->st_mode, mkmodestr(st->st_mode, str),
+               st->st_size, s, name);
+*/
+
+       printf(" %s %8ld %s %s", mkmodestr(st->st_mode,str), st->st_size, s, name);
+}
+
+static inline u32 dump_inode(struct b_lists * pL, struct jffs2_raw_dirent *d, struct jffs2_raw_inode *i)
+{
+       char fname[256];
+       struct stat st;
+
+       if(!d || !i) return -1;
+
+       strncpy(fname, (char *)d->name, d->nsize);
+       fname[d->nsize] = '\0';
+
+       memset(&st,0,sizeof(st));
+
+       st.st_mtime = i->mtime;
+       st.st_mode = i->mode;
+       st.st_ino = i->ino;
+       st.st_size = i->isize;
+
+       dump_stat(&st, fname);
+
+       if (d->type == DT_LNK) {
+               unsigned char *src = (unsigned char *) (&i[1]);
+               putstr(" -> ");
+               putnstr(src, (int)i->dsize);
+       }
+
+       putstr("\r\n");
+
+       return 0;
+}
+
+/* list inodes with the given pino */
+static u32
+jffs2_1pass_list_inodes(struct b_lists * pL, u32 pino)
+{
+       struct b_node *b;
+       struct jffs2_raw_dirent *jDir;
+
+       for (b = pL->dir.listHead; b; b = b->next) {
+               jDir = (struct jffs2_raw_dirent *) get_node_mem(b->offset,
+                                                               pL->readbuf);
+               if ((pino == jDir->pino) && (jDir->ino)) { /* ino=0 -> unlink */
+                       u32 i_version = 0;
+                       struct jffs2_raw_inode ojNode;
+                       struct jffs2_raw_inode *jNode, *i = NULL;
+                       struct b_node *b2 = pL->frag.listHead;
+
+                       while (b2) {
+                               jNode = (struct jffs2_raw_inode *)
+                                       get_fl_mem(b2->offset, sizeof(ojNode), &ojNode);
+                               if (jNode->ino == jDir->ino && jNode->version >= i_version) {
+                                       i_version = jNode->version;
+                                       if (i)
+                                               put_fl_mem(i, NULL);
+
+                                       if (jDir->type == DT_LNK)
+                                               i = get_node_mem(b2->offset,
+                                                                NULL);
+                                       else
+                                               i = get_fl_mem(b2->offset,
+                                                              sizeof(*i),
+                                                              NULL);
+                               }
+                               b2 = b2->next;
+                       }
+
+                       dump_inode(pL, jDir, i);
+                       put_fl_mem(i, NULL);
+               }
+               put_fl_mem(jDir, pL->readbuf);
+       }
+       return pino;
+}
+
+static u32
+jffs2_1pass_search_inode(struct b_lists * pL, const char *fname, u32 pino)
+{
+       int i;
+       char tmp[256];
+       char working_tmp[256];
+       char *c;
+
+       /* discard any leading slash */
+       i = 0;
+       while (fname[i] == '/')
+               i++;
+       strcpy(tmp, &fname[i]);
+
+       while ((c = (char *) strchr(tmp, '/'))) /* we are still dired searching */
+       {
+               strncpy(working_tmp, tmp, c - tmp);
+               working_tmp[c - tmp] = '\0';
+#if 0
+               putstr("search_inode: tmp = ");
+               putstr(tmp);
+               putstr("\r\n");
+               putstr("search_inode: wtmp = ");
+               putstr(working_tmp);
+               putstr("\r\n");
+               putstr("search_inode: c = ");
+               putstr(c);
+               putstr("\r\n");
+#endif
+               for (i = 0; i < strlen(c) - 1; i++)
+                       tmp[i] = c[i + 1];
+               tmp[i] = '\0';
+#if 0
+               putstr("search_inode: post tmp = ");
+               putstr(tmp);
+               putstr("\r\n");
+#endif
+
+               if (!(pino = jffs2_1pass_find_inode(pL, working_tmp, pino))) {
+                       putstr("find_inode failed for name=");
+                       putstr(working_tmp);
+                       putstr("\r\n");
+                       return 0;
+               }
+       }
+       /* this is for the bare filename, directories have already been mapped */
+       if (!(pino = jffs2_1pass_find_inode(pL, tmp, pino))) {
+               putstr("find_inode failed for name=");
+               putstr(tmp);
+               putstr("\r\n");
+               return 0;
+       }
+       return pino;
+
+}
+
+static u32
+jffs2_1pass_resolve_inode(struct b_lists * pL, u32 ino)
+{
+       struct b_node *b;
+       struct b_node *b2;
+       struct jffs2_raw_dirent *jDir;
+       struct jffs2_raw_inode *jNode;
+       u8 jDirFoundType = 0;
+       u32 jDirFoundIno = 0;
+       u32 jDirFoundPino = 0;
+       char tmp[256];
+       u32 version = 0;
+       u32 pino;
+       unsigned char *src;
+
+       /* we need to search all and return the inode with the highest version */
+       for(b = pL->dir.listHead; b; b = b->next) {
+               jDir = (struct jffs2_raw_dirent *) get_node_mem(b->offset,
+                                                               pL->readbuf);
+               if (ino == jDir->ino) {
+                       if (jDir->version < version) {
+                               put_fl_mem(jDir, pL->readbuf);
+                               continue;
+                       }
+
+                       if (jDir->version == version && jDirFoundType) {
+                               /* I'm pretty sure this isn't legal */
+                               putstr(" ** ERROR ** ");
+                               putnstr(jDir->name, jDir->nsize);
+                               putLabeledWord(" has dup version (resolve) = ",
+                                       version);
+                       }
+
+                       jDirFoundType = jDir->type;
+                       jDirFoundIno = jDir->ino;
+                       jDirFoundPino = jDir->pino;
+                       version = jDir->version;
+               }
+               put_fl_mem(jDir, pL->readbuf);
+       }
+       /* now we found the right entry again. (shoulda returned inode*) */
+       if (jDirFoundType != DT_LNK)
+               return jDirFoundIno;
+
+       /* it's a soft link so we follow it again. */
+       b2 = pL->frag.listHead;
+       while (b2) {
+               jNode = (struct jffs2_raw_inode *) get_node_mem(b2->offset,
+                                                               pL->readbuf);
+               if (jNode->ino == jDirFoundIno) {
+                       src = (unsigned char *)jNode + sizeof(struct jffs2_raw_inode);
+
+#if 0
+                       putLabeledWord("\t\t dsize = ", jNode->dsize);
+                       putstr("\t\t target = ");
+                       putnstr(src, jNode->dsize);
+                       putstr("\r\n");
+#endif
+                       strncpy(tmp, (char *)src, jNode->dsize);
+                       tmp[jNode->dsize] = '\0';
+                       put_fl_mem(jNode, pL->readbuf);
+                       break;
+               }
+               b2 = b2->next;
+               put_fl_mem(jNode, pL->readbuf);
+       }
+       /* ok so the name of the new file to find is in tmp */
+       /* if it starts with a slash it is root based else shared dirs */
+       if (tmp[0] == '/')
+               pino = 1;
+       else
+               pino = jDirFoundPino;
+
+       return jffs2_1pass_search_inode(pL, tmp, pino);
+}
+
+static u32
+jffs2_1pass_search_list_inodes(struct b_lists * pL, const char *fname, u32 pino)
+{
+       int i;
+       char tmp[256];
+       char working_tmp[256];
+       char *c;
+
+       /* discard any leading slash */
+       i = 0;
+       while (fname[i] == '/')
+               i++;
+       strcpy(tmp, &fname[i]);
+       working_tmp[0] = '\0';
+       while ((c = (char *) strchr(tmp, '/'))) /* we are still dired searching */
+       {
+               strncpy(working_tmp, tmp, c - tmp);
+               working_tmp[c - tmp] = '\0';
+               for (i = 0; i < strlen(c) - 1; i++)
+                       tmp[i] = c[i + 1];
+               tmp[i] = '\0';
+               /* only a failure if we arent looking at top level */
+               if (!(pino = jffs2_1pass_find_inode(pL, working_tmp, pino)) &&
+                   (working_tmp[0])) {
+                       putstr("find_inode failed for name=");
+                       putstr(working_tmp);
+                       putstr("\r\n");
+                       return 0;
+               }
+       }
+
+       if (tmp[0] && !(pino = jffs2_1pass_find_inode(pL, tmp, pino))) {
+               putstr("find_inode failed for name=");
+               putstr(tmp);
+               putstr("\r\n");
+               return 0;
+       }
+       /* this is for the bare filename, directories have already been mapped */
+       if (!(pino = jffs2_1pass_list_inodes(pL, pino))) {
+               putstr("find_inode failed for name=");
+               putstr(tmp);
+               putstr("\r\n");
+               return 0;
+       }
+       return pino;
+
+}
+
+unsigned char
+jffs2_1pass_rescan_needed(struct part_info *part)
+{
+       struct b_node *b;
+       struct jffs2_unknown_node onode;
+       struct jffs2_unknown_node *node;
+       struct b_lists *pL = (struct b_lists *)part->jffs2_priv;
+
+       if (part->jffs2_priv == 0){
+               DEBUGF ("rescan: First time in use\n");
+               return 1;
+       }
+
+       /* if we have no list, we need to rescan */
+       if (pL->frag.listCount == 0) {
+               DEBUGF ("rescan: fraglist zero\n");
+               return 1;
+       }
+
+       /* but suppose someone reflashed a partition at the same offset... */
+       b = pL->dir.listHead;
+       while (b) {
+               node = (struct jffs2_unknown_node *) get_fl_mem(b->offset,
+                       sizeof(onode), &onode);
+               if (node->nodetype != JFFS2_NODETYPE_DIRENT) {
+                       DEBUGF ("rescan: fs changed beneath me? (%lx)\n",
+                                       (unsigned long) b->offset);
+                       return 1;
+               }
+               b = b->next;
+       }
+       return 0;
+}
+
+#define dbg_summary(...) do {} while (0);
+/* Process the stored summary information - helper function for
+ * jffs2_sum_scan_sumnode()
+ */
+
+static int jffs2_sum_process_sum_data(struct part_info *part, uint32_t offset,
+                               struct jffs2_raw_summary *summary,
+                               struct b_lists *pL)
+{
+       void *sp;
+       int i;
+
+       sp = summary->sum;
+
+       for (i = 0; i < summary->sum_num; i++) {
+               dbg_summary("processing summary index %d\n", i);
+
+               switch (((struct jffs2_sum_unknown_flash *)sp)->nodetype) {
+                       case JFFS2_NODETYPE_INODE: {
+                               struct jffs2_sum_inode_flash *spi;
+                               spi = sp;
+
+                               dbg_summary("Inode at 0x%08x-0x%08x\n",
+                                           offset + spi->offset,
+                                           offset + spi->offset + spi->totlen);
+
+                               if (insert_node(&pL->frag, (u32) part->offset +
+                                               offset + spi->offset) == NULL)
+                                       return -1;
+
+                               sp += JFFS2_SUMMARY_INODE_SIZE;
+
+                               break;
+                       }
+
+                       case JFFS2_NODETYPE_DIRENT: {
+                               struct jffs2_sum_dirent_flash *spd;
+                               spd = sp;
+
+                               dbg_summary("Dirent at 0x%08x-0x%08x\n",
+                                           offset + spd->offset,
+                                           offset + spd->offset + spd->totlen);
+
+                               if (insert_node(&pL->dir, (u32) part->offset +
+                                               offset + spd->offset) == NULL)
+                                       return -1;
+
+                               sp += JFFS2_SUMMARY_DIRENT_SIZE(spd->nsize);
+
+                               break;
+                       }
+                       default : {
+                               uint16_t nodetype =
+                                       ((struct jffs2_sum_unknown_flash *)
+                                        sp)->nodetype;
+                               printf("Unsupported node type %x found in "
+                                               "summary!\n", nodetype);
+                               break;
+                       }
+               }
+       }
+       return 0;
+}
+
+/* Process the summary node - called from jffs2_scan_eraseblock() */
+int jffs2_sum_scan_sumnode(struct part_info *part, uint32_t offset,
+                          struct jffs2_raw_summary *summary, uint32_t sumsize,
+                          struct b_lists *pL)
+{
+       struct jffs2_unknown_node crcnode;
+       int ret, ofs;
+       uint32_t crc;
+
+       ofs = part->sector_size - sumsize;
+
+       dbg_summary("summary found for 0x%08x at 0x%08x (0x%x bytes)\n",
+                   offset, offset + ofs, sumsize);
+
+       /* OK, now check for node validity and CRC */
+       crcnode.magic = JFFS2_MAGIC_BITMASK;
+       crcnode.nodetype = JFFS2_NODETYPE_SUMMARY;
+       crcnode.totlen = summary->totlen;
+       crc = crc32_no_comp(0, (uchar *)&crcnode, sizeof(crcnode)-4);
+
+       if (summary->hdr_crc != crc) {
+               dbg_summary("Summary node header is corrupt (bad CRC or "
+                               "no summary at all)\n");
+               goto crc_err;
+       }
+
+       if (summary->totlen != sumsize) {
+               dbg_summary("Summary node is corrupt (wrong erasesize?)\n");
+               goto crc_err;
+       }
+
+       crc = crc32_no_comp(0, (uchar *)summary,
+                       sizeof(struct jffs2_raw_summary)-8);
+
+       if (summary->node_crc != crc) {
+               dbg_summary("Summary node is corrupt (bad CRC)\n");
+               goto crc_err;
+       }
+
+       crc = crc32_no_comp(0, (uchar *)summary->sum,
+                       sumsize - sizeof(struct jffs2_raw_summary));
+
+       if (summary->sum_crc != crc) {
+               dbg_summary("Summary node data is corrupt (bad CRC)\n");
+               goto crc_err;
+       }
+
+       if (summary->cln_mkr)
+               dbg_summary("Summary : CLEANMARKER node \n");
+
+       ret = jffs2_sum_process_sum_data(part, offset, summary, pL);
+       if (ret)
+               return ret;             /* real error */
+
+       return 1;
+
+crc_err:
+       putstr("Summary node crc error, skipping summary information.\n");
+
+       return 0;
+}
+
+#ifdef DEBUG_FRAGMENTS
+static void
+dump_fragments(struct b_lists *pL)
+{
+       struct b_node *b;
+       struct jffs2_raw_inode ojNode;
+       struct jffs2_raw_inode *jNode;
+
+       putstr("\r\n\r\n******The fragment Entries******\r\n");
+       b = pL->frag.listHead;
+       while (b) {
+               jNode = (struct jffs2_raw_inode *) get_fl_mem(b->offset,
+                       sizeof(ojNode), &ojNode);
+               putLabeledWord("\r\n\tbuild_list: FLASH_OFFSET = ", b->offset);
+               putLabeledWord("\tbuild_list: totlen = ", jNode->totlen);
+               putLabeledWord("\tbuild_list: inode = ", jNode->ino);
+               putLabeledWord("\tbuild_list: version = ", jNode->version);
+               putLabeledWord("\tbuild_list: isize = ", jNode->isize);
+               putLabeledWord("\tbuild_list: atime = ", jNode->atime);
+               putLabeledWord("\tbuild_list: offset = ", jNode->offset);
+               putLabeledWord("\tbuild_list: csize = ", jNode->csize);
+               putLabeledWord("\tbuild_list: dsize = ", jNode->dsize);
+               putLabeledWord("\tbuild_list: compr = ", jNode->compr);
+               putLabeledWord("\tbuild_list: usercompr = ", jNode->usercompr);
+               putLabeledWord("\tbuild_list: flags = ", jNode->flags);
+               putLabeledWord("\tbuild_list: offset = ", b->offset);   /* FIXME: ? [RS] */
+               b = b->next;
+       }
+}
+#endif
+
+#ifdef DEBUG_DIRENTS
+static void
+dump_dirents(struct b_lists *pL)
+{
+       struct b_node *b;
+       struct jffs2_raw_dirent *jDir;
+
+       putstr("\r\n\r\n******The directory Entries******\r\n");
+       b = pL->dir.listHead;
+       while (b) {
+               jDir = (struct jffs2_raw_dirent *) get_node_mem(b->offset,
+                                                               pL->readbuf);
+               putstr("\r\n");
+               putnstr(jDir->name, jDir->nsize);
+               putLabeledWord("\r\n\tbuild_list: magic = ", jDir->magic);
+               putLabeledWord("\tbuild_list: nodetype = ", jDir->nodetype);
+               putLabeledWord("\tbuild_list: hdr_crc = ", jDir->hdr_crc);
+               putLabeledWord("\tbuild_list: pino = ", jDir->pino);
+               putLabeledWord("\tbuild_list: version = ", jDir->version);
+               putLabeledWord("\tbuild_list: ino = ", jDir->ino);
+               putLabeledWord("\tbuild_list: mctime = ", jDir->mctime);
+               putLabeledWord("\tbuild_list: nsize = ", jDir->nsize);
+               putLabeledWord("\tbuild_list: type = ", jDir->type);
+               putLabeledWord("\tbuild_list: node_crc = ", jDir->node_crc);
+               putLabeledWord("\tbuild_list: name_crc = ", jDir->name_crc);
+               putLabeledWord("\tbuild_list: offset = ", b->offset);   /* FIXME: ? [RS] */
+               b = b->next;
+               put_fl_mem(jDir, pL->readbuf);
+       }
+}
+#endif
+
+#define DEFAULT_EMPTY_SCAN_SIZE        4096
+
+static inline uint32_t EMPTY_SCAN_SIZE(uint32_t sector_size)
+{
+       if (sector_size < DEFAULT_EMPTY_SCAN_SIZE)
+               return sector_size;
+       else
+               return DEFAULT_EMPTY_SCAN_SIZE;
+}
+
+static u32
+jffs2_1pass_build_lists(struct part_info * part)
+{
+       struct b_lists *pL;
+       struct jffs2_unknown_node *node;
+       u32 nr_sectors = part->size/part->sector_size;
+       u32 i;
+       u32 counter4 = 0;
+       u32 counterF = 0;
+       u32 counterN = 0;
+       u32 max_totlen = 0;
+       u32 buf_size = DEFAULT_EMPTY_SCAN_SIZE;
+       char *buf;
+
+       /* turn off the lcd.  Refreshing the lcd adds 50% overhead to the */
+       /* jffs2 list building enterprise nope.  in newer versions the overhead is */
+       /* only about 5 %.  not enough to inconvenience people for. */
+       /* lcd_off(); */
+
+       /* if we are building a list we need to refresh the cache. */
+       jffs_init_1pass_list(part);
+       pL = (struct b_lists *)part->jffs2_priv;
+       buf = malloc(buf_size);
+       puts ("Scanning JFFS2 FS:   ");
+
+       /* start at the beginning of the partition */
+       for (i = 0; i < nr_sectors; i++) {
+               uint32_t sector_ofs = i * part->sector_size;
+               uint32_t buf_ofs = sector_ofs;
+               uint32_t buf_len;
+               uint32_t ofs, prevofs;
+               struct jffs2_sum_marker *sm;
+               void *sumptr = NULL;
+               uint32_t sumlen;
+               int ret;
+
+               WATCHDOG_RESET();
+
+               buf_len = sizeof(*sm);
+
+               /* Read as much as we want into the _end_ of the preallocated
+                * buffer
+                */
+               get_fl_mem(part->offset + sector_ofs + part->sector_size -
+                               buf_len, buf_len, buf + buf_size - buf_len);
+
+               sm = (void *)buf + buf_size - sizeof(*sm);
+               if (sm->magic == JFFS2_SUM_MAGIC) {
+                       sumlen = part->sector_size - sm->offset;
+                       sumptr = buf + buf_size - sumlen;
+
+                       /* Now, make sure the summary itself is available */
+                       if (sumlen > buf_size) {
+                               /* Need to kmalloc for this. */
+                               sumptr = malloc(sumlen);
+                               if (!sumptr) {
+                                       putstr("Can't get memory for summary "
+                                                       "node!\n");
+                                       return 0;
+                               }
+                               memcpy(sumptr + sumlen - buf_len, buf +
+                                               buf_size - buf_len, buf_len);
+                       }
+                       if (buf_len < sumlen) {
+                               /* Need to read more so that the entire summary
+                                * node is present
+                                */
+                               get_fl_mem(part->offset + sector_ofs +
+                                               part->sector_size - sumlen,
+                                               sumlen - buf_len, sumptr);
+                       }
+               }
+
+               if (sumptr) {
+                       ret = jffs2_sum_scan_sumnode(part, sector_ofs, sumptr,
+                                       sumlen, pL);
+
+                       if (buf_size && sumlen > buf_size)
+                               free(sumptr);
+                       if (ret < 0)
+                               return 0;
+                       if (ret)
+                               continue;
+
+               }
+
+               buf_len = EMPTY_SCAN_SIZE(part->sector_size);
+
+               get_fl_mem((u32)part->offset + buf_ofs, buf_len, buf);
+
+               /* We temporarily use 'ofs' as a pointer into the buffer/jeb */
+               ofs = 0;
+
+               /* Scan only 4KiB of 0xFF before declaring it's empty */
+               while (ofs < EMPTY_SCAN_SIZE(part->sector_size) &&
+                               *(uint32_t *)(&buf[ofs]) == 0xFFFFFFFF)
+                       ofs += 4;
+
+               if (ofs == EMPTY_SCAN_SIZE(part->sector_size))
+                       continue;
+
+               ofs += sector_ofs;
+               prevofs = ofs - 1;
+
+       scan_more:
+               while (ofs < sector_ofs + part->sector_size) {
+                       if (ofs == prevofs) {
+                               printf("offset %08x already seen, skip\n", ofs);
+                               ofs += 4;
+                               counter4++;
+                               continue;
+                       }
+                       prevofs = ofs;
+                       if (sector_ofs + part->sector_size <
+                                       ofs + sizeof(*node))
+                               break;
+                       if (buf_ofs + buf_len < ofs + sizeof(*node)) {
+                               buf_len = min_t(uint32_t, buf_size, sector_ofs
+                                               + part->sector_size - ofs);
+                               get_fl_mem((u32)part->offset + ofs, buf_len,
+                                          buf);
+                               buf_ofs = ofs;
+                       }
+
+                       node = (struct jffs2_unknown_node *)&buf[ofs-buf_ofs];
+
+                       if (*(uint32_t *)(&buf[ofs-buf_ofs]) == 0xffffffff) {
+                               uint32_t inbuf_ofs;
+                               uint32_t empty_start, scan_end;
+
+                               empty_start = ofs;
+                               ofs += 4;
+                               scan_end = min_t(uint32_t, EMPTY_SCAN_SIZE(
+                                                       part->sector_size)/8,
+                                                       buf_len);
+                       more_empty:
+                               inbuf_ofs = ofs - buf_ofs;
+                               while (inbuf_ofs < scan_end) {
+                                       if (*(uint32_t *)(&buf[inbuf_ofs]) !=
+                                                       0xffffffff)
+                                               goto scan_more;
+
+                                       inbuf_ofs += 4;
+                                       ofs += 4;
+                               }
+                               /* Ran off end. */
+
+                               /* See how much more there is to read in this
+                                * eraseblock...
+                                */
+                               buf_len = min_t(uint32_t, buf_size,
+                                               sector_ofs +
+                                               part->sector_size - ofs);
+                               if (!buf_len) {
+                                       /* No more to read. Break out of main
+                                        * loop without marking this range of
+                                        * empty space as dirty (because it's
+                                        * not)
+                                        */
+                                       break;
+                               }
+                               scan_end = buf_len;
+                               get_fl_mem((u32)part->offset + ofs, buf_len,
+                                          buf);
+                               buf_ofs = ofs;
+                               goto more_empty;
+                       }
+                       if (node->magic != JFFS2_MAGIC_BITMASK ||
+                                       !hdr_crc(node)) {
+                               ofs += 4;
+                               counter4++;
+                               continue;
+                       }
+                       if (ofs + node->totlen >
+                                       sector_ofs + part->sector_size) {
+                               ofs += 4;
+                               counter4++;
+                               continue;
+                       }
+                       /* if its a fragment add it */
+                       switch (node->nodetype) {
+                       case JFFS2_NODETYPE_INODE:
+                               if (buf_ofs + buf_len < ofs + sizeof(struct
+                                                       jffs2_raw_inode)) {
+                                       get_fl_mem((u32)part->offset + ofs,
+                                                  buf_len, buf);
+                                       buf_ofs = ofs;
+                                       node = (void *)buf;
+                               }
+                               if (!inode_crc((struct jffs2_raw_inode *) node))
+                                      break;
+
+                               if (insert_node(&pL->frag, (u32) part->offset +
+                                               ofs) == NULL)
+                                       return 0;
+                               if (max_totlen < node->totlen)
+                                       max_totlen = node->totlen;
+                               break;
+                       case JFFS2_NODETYPE_DIRENT:
+                               if (buf_ofs + buf_len < ofs + sizeof(struct
+                                                       jffs2_raw_dirent) +
+                                                       ((struct
+                                                        jffs2_raw_dirent *)
+                                                       node)->nsize) {
+                                       get_fl_mem((u32)part->offset + ofs,
+                                                  buf_len, buf);
+                                       buf_ofs = ofs;
+                                       node = (void *)buf;
+                               }
+
+                               if (!dirent_crc((struct jffs2_raw_dirent *)
+                                                       node) ||
+                                               !dirent_name_crc(
+                                                       (struct
+                                                        jffs2_raw_dirent *)
+                                                       node))
+                                       break;
+                               if (! (counterN%100))
+                                       puts ("\b\b.  ");
+                               if (insert_node(&pL->dir, (u32) part->offset +
+                                               ofs) == NULL)
+                                       return 0;
+                               if (max_totlen < node->totlen)
+                                       max_totlen = node->totlen;
+                               counterN++;
+                               break;
+                       case JFFS2_NODETYPE_CLEANMARKER:
+                               if (node->totlen != sizeof(struct jffs2_unknown_node))
+                                       printf("OOPS Cleanmarker has bad size "
+                                               "%d != %zu\n",
+                                               node->totlen,
+                                               sizeof(struct jffs2_unknown_node));
+                               break;
+                       case JFFS2_NODETYPE_PADDING:
+                               if (node->totlen < sizeof(struct jffs2_unknown_node))
+                                       printf("OOPS Padding has bad size "
+                                               "%d < %zu\n",
+                                               node->totlen,
+                                               sizeof(struct jffs2_unknown_node));
+                               break;
+                       case JFFS2_NODETYPE_SUMMARY:
+                               break;
+                       default:
+                               printf("Unknown node type: %x len %d offset 0x%x\n",
+                                       node->nodetype,
+                                       node->totlen, ofs);
+                       }
+                       ofs += ((node->totlen + 3) & ~3);
+                       counterF++;
+               }
+       }
+
+       free(buf);
+       putstr("\b\b done.\r\n");               /* close off the dots */
+
+       /* We don't care if malloc failed - then each read operation will
+        * allocate its own buffer as necessary (NAND) or will read directly
+        * from flash (NOR).
+        */
+       pL->readbuf = malloc(max_totlen);
+
+       /* turn the lcd back on. */
+       /* splash(); */
+
+#if 0
+       putLabeledWord("dir entries = ", pL->dir.listCount);
+       putLabeledWord("frag entries = ", pL->frag.listCount);
+       putLabeledWord("+4 increments = ", counter4);
+       putLabeledWord("+file_offset increments = ", counterF);
+
+#endif
+
+#ifdef DEBUG_DIRENTS
+       dump_dirents(pL);
+#endif
+
+#ifdef DEBUG_FRAGMENTS
+       dump_fragments(pL);
+#endif
+
+       /* give visual feedback that we are done scanning the flash */
+       led_blink(0x0, 0x0, 0x1, 0x1);  /* off, forever, on 100ms, off 100ms */
+       return 1;
+}
+
+
+static u32
+jffs2_1pass_fill_info(struct b_lists * pL, struct b_jffs2_info * piL)
+{
+       struct b_node *b;
+       struct jffs2_raw_inode ojNode;
+       struct jffs2_raw_inode *jNode;
+       int i;
+
+       for (i = 0; i < JFFS2_NUM_COMPR; i++) {
+               piL->compr_info[i].num_frags = 0;
+               piL->compr_info[i].compr_sum = 0;
+               piL->compr_info[i].decompr_sum = 0;
+       }
+
+       b = pL->frag.listHead;
+       while (b) {
+               jNode = (struct jffs2_raw_inode *) get_fl_mem(b->offset,
+                       sizeof(ojNode), &ojNode);
+               if (jNode->compr < JFFS2_NUM_COMPR) {
+                       piL->compr_info[jNode->compr].num_frags++;
+                       piL->compr_info[jNode->compr].compr_sum += jNode->csize;
+                       piL->compr_info[jNode->compr].decompr_sum += jNode->dsize;
+               }
+               b = b->next;
+       }
+       return 0;
+}
+
+
+static struct b_lists *
+jffs2_get_list(struct part_info * part, const char *who)
+{
+       /* copy requested part_info struct pointer to global location */
+       current_part = part;
+
+       if (jffs2_1pass_rescan_needed(part)) {
+               if (!jffs2_1pass_build_lists(part)) {
+                       printf("%s: Failed to scan JFFSv2 file structure\n", who);
+                       return NULL;
+               }
+       }
+       return (struct b_lists *)part->jffs2_priv;
+}
+
+
+/* Print directory / file contents */
+u32
+jffs2_1pass_ls(struct part_info * part, const char *fname)
+{
+       struct b_lists *pl;
+       long ret = 1;
+       u32 inode;
+
+       if (! (pl = jffs2_get_list(part, "ls")))
+               return 0;
+
+       if (! (inode = jffs2_1pass_search_list_inodes(pl, fname, 1))) {
+               putstr("ls: Failed to scan jffs2 file structure\r\n");
+               return 0;
+       }
+
+
+#if 0
+       putLabeledWord("found file at inode = ", inode);
+       putLabeledWord("read_inode returns = ", ret);
+#endif
+
+       return ret;
+}
+
+
+/* Load a file from flash into memory. fname can be a full path */
+u32
+jffs2_1pass_load(char *dest, struct part_info * part, const char *fname)
+{
+
+       struct b_lists *pl;
+       long ret = 1;
+       u32 inode;
+
+       if (! (pl  = jffs2_get_list(part, "load")))
+               return 0;
+
+       if (! (inode = jffs2_1pass_search_inode(pl, fname, 1))) {
+               putstr("load: Failed to find inode\r\n");
+               return 0;
+       }
+
+       /* Resolve symlinks */
+       if (! (inode = jffs2_1pass_resolve_inode(pl, inode))) {
+               putstr("load: Failed to resolve inode structure\r\n");
+               return 0;
+       }
+
+       if ((ret = jffs2_1pass_read_inode(pl, inode, dest)) < 0) {
+               putstr("load: Failed to read inode\r\n");
+               return 0;
+       }
+
+       DEBUGF ("load: loaded '%s' to 0x%lx (%ld bytes)\n", fname,
+                               (unsigned long) dest, ret);
+       return ret;
+}
+
+/* Return information about the fs on this partition */
+u32
+jffs2_1pass_info(struct part_info * part)
+{
+       struct b_jffs2_info info;
+       struct b_lists *pl;
+       int i;
+
+       if (! (pl  = jffs2_get_list(part, "info")))
+               return 0;
+
+       jffs2_1pass_fill_info(pl, &info);
+       for (i = 0; i < JFFS2_NUM_COMPR; i++) {
+               printf ("Compression: %s\n"
+                       "\tfrag count: %d\n"
+                       "\tcompressed sum: %d\n"
+                       "\tuncompressed sum: %d\n",
+                       compr_names[i],
+                       info.compr_info[i].num_frags,
+                       info.compr_info[i].compr_sum,
+                       info.compr_info[i].decompr_sum);
+       }
+       return 1;
+}
diff -Naur u-boot-2009.03_orig/fs/jffs2/mini_inflate.c u-boot-2009.03/fs/jffs2/mini_inflate.c
--- u-boot-2009.03_orig/fs/jffs2/mini_inflate.c 2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/fs/jffs2/mini_inflate.c      2009-03-31 14:55:58.033246400 -0700
@@ -1,391 +1,391 @@
-/*-------------------------------------------------------------------------
- * Filename:      mini_inflate.c
- * Version:       $Id: mini_inflate.c,v 1.3 2002/01/24 22:58:42 rfeany Exp $
- * Copyright:     Copyright (C) 2001, Russ Dill
- * Author:        Russ Dill <Russ.Dill@asu.edu>
- * Description:   Mini inflate implementation (RFC 1951)
- *-----------------------------------------------------------------------*/
-/*
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- */
-
-#include <config.h>
-#include <jffs2/mini_inflate.h>
-
-/* The order that the code lengths in section 3.2.7 are in */
-static unsigned char huffman_order[] = {16, 17, 18,  0,  8,  7,  9,  6, 10,  5,
-                                       11,  4, 12,  3, 13,  2, 14,  1, 15};
-
-inline void cramfs_memset(int *s, const int c, size n)
-{
-       n--;
-       for (;n > 0; n--) s[n] = c;
-       s[0] = c;
-}
-
-/* associate a stream with a block of data and reset the stream */
-static void init_stream(struct bitstream *stream, unsigned char *data,
-                       void *(*inflate_memcpy)(void *, const void *, size))
-{
-       stream->error = NO_ERROR;
-       stream->memcpy = inflate_memcpy;
-       stream->decoded = 0;
-       stream->data = data;
-       stream->bit = 0;        /* The first bit of the stream is the lsb of the
-                                * first byte */
-
-       /* really sorry about all this initialization, think of a better way,
-        * let me know and it will get cleaned up */
-       stream->codes.bits = 8;
-       stream->codes.num_symbols = 19;
-       stream->codes.lengths = stream->code_lengths;
-       stream->codes.symbols = stream->code_symbols;
-       stream->codes.count = stream->code_count;
-       stream->codes.first = stream->code_first;
-       stream->codes.pos = stream->code_pos;
-
-       stream->lengths.bits = 16;
-       stream->lengths.num_symbols = 288;
-       stream->lengths.lengths = stream->length_lengths;
-       stream->lengths.symbols = stream->length_symbols;
-       stream->lengths.count = stream->length_count;
-       stream->lengths.first = stream->length_first;
-       stream->lengths.pos = stream->length_pos;
-
-       stream->distance.bits = 16;
-       stream->distance.num_symbols = 32;
-       stream->distance.lengths = stream->distance_lengths;
-       stream->distance.symbols = stream->distance_symbols;
-       stream->distance.count = stream->distance_count;
-       stream->distance.first = stream->distance_first;
-       stream->distance.pos = stream->distance_pos;
-
-}
-
-/* pull 'bits' bits out of the stream. The last bit pulled it returned as the
- * msb. (section 3.1.1)
- */
-inline unsigned long pull_bits(struct bitstream *stream,
-                              const unsigned int bits)
-{
-       unsigned long ret;
-       int i;
-
-       ret = 0;
-       for (i = 0; i < bits; i++) {
-               ret += ((*(stream->data) >> stream->bit) & 1) << i;
-
-               /* if, before incrementing, we are on bit 7,
-                * go to the lsb of the next byte */
-               if (stream->bit++ == 7) {
-                       stream->bit = 0;
-                       stream->data++;
-               }
-       }
-       return ret;
-}
-
-inline int pull_bit(struct bitstream *stream)
-{
-       int ret = ((*(stream->data) >> stream->bit) & 1);
-       if (stream->bit++ == 7) {
-               stream->bit = 0;
-               stream->data++;
-       }
-       return ret;
-}
-
-/* discard bits up to the next whole byte */
-static void discard_bits(struct bitstream *stream)
-{
-       if (stream->bit != 0) {
-               stream->bit = 0;
-               stream->data++;
-       }
-}
-
-/* No decompression, the data is all literals (section 3.2.4) */
-static void decompress_none(struct bitstream *stream, unsigned char *dest)
-{
-       unsigned int length;
-
-       discard_bits(stream);
-       length = *(stream->data++);
-       length += *(stream->data++) << 8;
-       pull_bits(stream, 16);  /* throw away the inverse of the size */
-
-       stream->decoded += length;
-       stream->memcpy(dest, stream->data, length);
-       stream->data += length;
-}
-
-/* Read in a symbol from the stream (section 3.2.2) */
-static int read_symbol(struct bitstream *stream, struct huffman_set *set)
-{
-       int bits = 0;
-       int code = 0;
-       while (!(set->count[bits] && code < set->first[bits] +
-                                            set->count[bits])) {
-               code = (code << 1) + pull_bit(stream);
-               if (++bits > set->bits) {
-                       /* error decoding (corrupted data?) */
-                       stream->error = CODE_NOT_FOUND;
-                       return -1;
-               }
-       }
-       return set->symbols[set->pos[bits] + code - set->first[bits]];
-}
-
-/* decompress a stream of data encoded with the passed length and distance
- * huffman codes */
-static void decompress_huffman(struct bitstream *stream, unsigned char *dest)
-{
-       struct huffman_set *lengths = &(stream->lengths);
-       struct huffman_set *distance = &(stream->distance);
-
-       int symbol, length, dist, i;
-
-       do {
-               if ((symbol = read_symbol(stream, lengths)) < 0) return;
-               if (symbol < 256) {
-                       *(dest++) = symbol; /* symbol is a literal */
-                       stream->decoded++;
-               } else if (symbol > 256) {
-                       /* Determine the length of the repitition
-                        * (section 3.2.5) */
-                       if (symbol < 265) length = symbol - 254;
-                       else if (symbol == 285) length = 258;
-                       else {
-                               length = pull_bits(stream, (symbol - 261) >> 2);
-                               length += (4 << ((symbol - 261) >> 2)) + 3;
-                               length += ((symbol - 1) % 4) <<
-                                         ((symbol - 261) >> 2);
-                       }
-
-                       /* Determine how far back to go */
-                       if ((symbol = read_symbol(stream, distance)) < 0)
-                               return;
-                       if (symbol < 4) dist = symbol + 1;
-                       else {
-                               dist = pull_bits(stream, (symbol - 2) >> 1);
-                               dist += (2 << ((symbol - 2) >> 1)) + 1;
-                               dist += (symbol % 2) << ((symbol - 2) >> 1);
-                       }
-                       stream->decoded += length;
-                       for (i = 0; i < length; i++) {
-                               *dest = dest[-dist];
-                               dest++;
-                       }
-               }
-       } while (symbol != 256); /* 256 is the end of the data block */
-}
-
-/* Fill the lookup tables (section 3.2.2) */
-static void fill_code_tables(struct huffman_set *set)
-{
-       int code = 0, i, length;
-
-       /* fill in the first code of each bit length, and the pos pointer */
-       set->pos[0] = 0;
-       for (i = 1; i < set->bits; i++) {
-               code = (code + set->count[i - 1]) << 1;
-               set->first[i] = code;
-               set->pos[i] = set->pos[i - 1] + set->count[i - 1];
-       }
-
-       /* Fill in the table of symbols in order of their huffman code */
-       for (i = 0; i < set->num_symbols; i++) {
-               if ((length = set->lengths[i]))
-                       set->symbols[set->pos[length]++] = i;
-       }
-
-       /* reset the pos pointer */
-       for (i = 1; i < set->bits; i++) set->pos[i] -= set->count[i];
-}
-
-static void init_code_tables(struct huffman_set *set)
-{
-       cramfs_memset(set->lengths, 0, set->num_symbols);
-       cramfs_memset(set->count, 0, set->bits);
-       cramfs_memset(set->first, 0, set->bits);
-}
-
-/* read in the huffman codes for dynamic decoding (section 3.2.7) */
-static void decompress_dynamic(struct bitstream *stream, unsigned char *dest)
-{
-       /* I tried my best to minimize the memory footprint here, while still
-        * keeping up performance. I really dislike the _lengths[] tables, but
-        * I see no way of eliminating them without a sizable performance
-        * impact. The first struct table keeps track of stats on each bit
-        * length. The _length table keeps a record of the bit length of each
-        * symbol. The _symbols table is for looking up symbols by the huffman
-        * code (the pos element points to the first place in the symbol table
-        * where that bit length occurs). I also hate the initization of these
-        * structs, if someone knows how to compact these, lemme know. */
-
-       struct huffman_set *codes = &(stream->codes);
-       struct huffman_set *lengths = &(stream->lengths);
-       struct huffman_set *distance = &(stream->distance);
-
-       int hlit = pull_bits(stream, 5) + 257;
-       int hdist = pull_bits(stream, 5) + 1;
-       int hclen = pull_bits(stream, 4) + 4;
-       int length, curr_code, symbol, i, last_code;
-
-       last_code = 0;
-
-       init_code_tables(codes);
-       init_code_tables(lengths);
-       init_code_tables(distance);
-
-       /* fill in the count of each bit length' as well as the lengths
-        * table */
-       for (i = 0; i < hclen; i++) {
-               length = pull_bits(stream, 3);
-               codes->lengths[huffman_order[i]] = length;
-               if (length) codes->count[length]++;
-
-       }
-       fill_code_tables(codes);
-
-       /* Do the same for the length codes, being carefull of wrap through
-        * to the distance table */
-       curr_code = 0;
-       while (curr_code < hlit) {
-               if ((symbol = read_symbol(stream, codes)) < 0) return;
-               if (symbol == 0) {
-                       curr_code++;
-                       last_code = 0;
-               } else if (symbol < 16) { /* Literal length */
-                       lengths->lengths[curr_code] =  last_code = symbol;
-                       lengths->count[symbol]++;
-                       curr_code++;
-               } else if (symbol == 16) { /* repeat the last symbol 3 - 6
-                                           * times */
-                       length = 3 + pull_bits(stream, 2);
-                       for (;length; length--, curr_code++)
-                               if (curr_code < hlit) {
-                                       lengths->lengths[curr_code] =
-                                               last_code;
-                                       lengths->count[last_code]++;
-                               } else { /* wrap to the distance table */
-                                       distance->lengths[curr_code - hlit] =
-                                               last_code;
-                                       distance->count[last_code]++;
-                               }
-               } else if (symbol == 17) { /* repeat a bit length 0 */
-                       curr_code += 3 + pull_bits(stream, 3);
-                       last_code = 0;
-               } else { /* same, but more times */
-                       curr_code += 11 + pull_bits(stream, 7);
-                       last_code = 0;
-               }
-       }
-       fill_code_tables(lengths);
-
-       /* Fill the distance table, don't need to worry about wrapthrough
-        * here */
-       curr_code -= hlit;
-       while (curr_code < hdist) {
-               if ((symbol = read_symbol(stream, codes)) < 0) return;
-               if (symbol == 0) {
-                       curr_code++;
-                       last_code = 0;
-               } else if (symbol < 16) {
-                       distance->lengths[curr_code] = last_code = symbol;
-                       distance->count[symbol]++;
-                       curr_code++;
-               } else if (symbol == 16) {
-                       length = 3 + pull_bits(stream, 2);
-                       for (;length; length--, curr_code++) {
-                               distance->lengths[curr_code] =
-                                       last_code;
-                               distance->count[last_code]++;
-                       }
-               } else if (symbol == 17) {
-                       curr_code += 3 + pull_bits(stream, 3);
-                       last_code = 0;
-               } else {
-                       curr_code += 11 + pull_bits(stream, 7);
-                       last_code = 0;
-               }
-       }
-       fill_code_tables(distance);
-
-       decompress_huffman(stream, dest);
-}
-
-/* fill in the length and distance huffman codes for fixed encoding
- * (section 3.2.6) */
-static void decompress_fixed(struct bitstream *stream, unsigned char *dest)
-{
-       /* let gcc fill in the initial values */
-       struct huffman_set *lengths = &(stream->lengths);
-       struct huffman_set *distance = &(stream->distance);
-
-       cramfs_memset(lengths->count, 0, 16);
-       cramfs_memset(lengths->first, 0, 16);
-       cramfs_memset(lengths->lengths, 8, 144);
-       cramfs_memset(lengths->lengths + 144, 9, 112);
-       cramfs_memset(lengths->lengths + 256, 7, 24);
-       cramfs_memset(lengths->lengths + 280, 8, 8);
-       lengths->count[7] = 24;
-       lengths->count[8] = 152;
-       lengths->count[9] = 112;
-
-       cramfs_memset(distance->count, 0, 16);
-       cramfs_memset(distance->first, 0, 16);
-       cramfs_memset(distance->lengths, 5, 32);
-       distance->count[5] = 32;
-
-
-       fill_code_tables(lengths);
-       fill_code_tables(distance);
-
-
-       decompress_huffman(stream, dest);
-}
-
-/* returns the number of bytes decoded, < 0 if there was an error. Note that
- * this function assumes that the block starts on a byte boundry
- * (non-compliant, but I don't see where this would happen). section 3.2.3 */
-long decompress_block(unsigned char *dest, unsigned char *source,
-                     void *(*inflate_memcpy)(void *, const void *, size))
-{
-       int bfinal, btype;
-       struct bitstream stream;
-
-       init_stream(&stream, source, inflate_memcpy);
-       do {
-               bfinal = pull_bit(&stream);
-               btype = pull_bits(&stream, 2);
-               if (btype == NO_COMP) decompress_none(&stream, dest + stream.decoded);
-               else if (btype == DYNAMIC_COMP)
-                       decompress_dynamic(&stream, dest + stream.decoded);
-               else if (btype == FIXED_COMP) decompress_fixed(&stream, dest + stream.decoded);
-               else stream.error = COMP_UNKNOWN;
-       } while (!bfinal && !stream.error);
-
-#if 0
-       putstr("decompress_block start\r\n");
-       putLabeledWord("stream.error = ",stream.error);
-       putLabeledWord("stream.decoded = ",stream.decoded);
-       putLabeledWord("dest = ",dest);
-       putstr("decompress_block end\r\n");
-#endif
-       return stream.error ? -stream.error : stream.decoded;
-}
+/*-------------------------------------------------------------------------
+ * Filename:      mini_inflate.c
+ * Version:       $Id: mini_inflate.c,v 1.1.1.1 2009/03/25 22:22:12 kenagy Exp $
+ * Copyright:     Copyright (C) 2001, Russ Dill
+ * Author:        Russ Dill <Russ.Dill@asu.edu>
+ * Description:   Mini inflate implementation (RFC 1951)
+ *-----------------------------------------------------------------------*/
+/*
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ */
+
+#include <config.h>
+#include <jffs2/mini_inflate.h>
+
+/* The order that the code lengths in section 3.2.7 are in */
+static unsigned char huffman_order[] = {16, 17, 18,  0,  8,  7,  9,  6, 10,  5,
+                                       11,  4, 12,  3, 13,  2, 14,  1, 15};
+
+inline void cramfs_memset(int *s, const int c, size n)
+{
+       n--;
+       for (;n > 0; n--) s[n] = c;
+       s[0] = c;
+}
+
+/* associate a stream with a block of data and reset the stream */
+static void init_stream(struct bitstream *stream, unsigned char *data,
+                       void *(*inflate_memcpy)(void *, const void *, size))
+{
+       stream->error = NO_ERROR;
+       stream->memcpy = inflate_memcpy;
+       stream->decoded = 0;
+       stream->data = data;
+       stream->bit = 0;        /* The first bit of the stream is the lsb of the
+                                * first byte */
+
+       /* really sorry about all this initialization, think of a better way,
+        * let me know and it will get cleaned up */
+       stream->codes.bits = 8;
+       stream->codes.num_symbols = 19;
+       stream->codes.lengths = stream->code_lengths;
+       stream->codes.symbols = stream->code_symbols;
+       stream->codes.count = stream->code_count;
+       stream->codes.first = stream->code_first;
+       stream->codes.pos = stream->code_pos;
+
+       stream->lengths.bits = 16;
+       stream->lengths.num_symbols = 288;
+       stream->lengths.lengths = stream->length_lengths;
+       stream->lengths.symbols = stream->length_symbols;
+       stream->lengths.count = stream->length_count;
+       stream->lengths.first = stream->length_first;
+       stream->lengths.pos = stream->length_pos;
+
+       stream->distance.bits = 16;
+       stream->distance.num_symbols = 32;
+       stream->distance.lengths = stream->distance_lengths;
+       stream->distance.symbols = stream->distance_symbols;
+       stream->distance.count = stream->distance_count;
+       stream->distance.first = stream->distance_first;
+       stream->distance.pos = stream->distance_pos;
+
+}
+
+/* pull 'bits' bits out of the stream. The last bit pulled it returned as the
+ * msb. (section 3.1.1)
+ */
+inline unsigned long pull_bits(struct bitstream *stream,
+                              const unsigned int bits)
+{
+       unsigned long ret;
+       int i;
+
+       ret = 0;
+       for (i = 0; i < bits; i++) {
+               ret += ((*(stream->data) >> stream->bit) & 1) << i;
+
+               /* if, before incrementing, we are on bit 7,
+                * go to the lsb of the next byte */
+               if (stream->bit++ == 7) {
+                       stream->bit = 0;
+                       stream->data++;
+               }
+       }
+       return ret;
+}
+
+inline int pull_bit(struct bitstream *stream)
+{
+       int ret = ((*(stream->data) >> stream->bit) & 1);
+       if (stream->bit++ == 7) {
+               stream->bit = 0;
+               stream->data++;
+       }
+       return ret;
+}
+
+/* discard bits up to the next whole byte */
+static void discard_bits(struct bitstream *stream)
+{
+       if (stream->bit != 0) {
+               stream->bit = 0;
+               stream->data++;
+       }
+}
+
+/* No decompression, the data is all literals (section 3.2.4) */
+static void decompress_none(struct bitstream *stream, unsigned char *dest)
+{
+       unsigned int length;
+
+       discard_bits(stream);
+       length = *(stream->data++);
+       length += *(stream->data++) << 8;
+       pull_bits(stream, 16);  /* throw away the inverse of the size */
+
+       stream->decoded += length;
+       stream->memcpy(dest, stream->data, length);
+       stream->data += length;
+}
+
+/* Read in a symbol from the stream (section 3.2.2) */
+static int read_symbol(struct bitstream *stream, struct huffman_set *set)
+{
+       int bits = 0;
+       int code = 0;
+       while (!(set->count[bits] && code < set->first[bits] +
+                                            set->count[bits])) {
+               code = (code << 1) + pull_bit(stream);
+               if (++bits > set->bits) {
+                       /* error decoding (corrupted data?) */
+                       stream->error = CODE_NOT_FOUND;
+                       return -1;
+               }
+       }
+       return set->symbols[set->pos[bits] + code - set->first[bits]];
+}
+
+/* decompress a stream of data encoded with the passed length and distance
+ * huffman codes */
+static void decompress_huffman(struct bitstream *stream, unsigned char *dest)
+{
+       struct huffman_set *lengths = &(stream->lengths);
+       struct huffman_set *distance = &(stream->distance);
+
+       int symbol, length, dist, i;
+
+       do {
+               if ((symbol = read_symbol(stream, lengths)) < 0) return;
+               if (symbol < 256) {
+                       *(dest++) = symbol; /* symbol is a literal */
+                       stream->decoded++;
+               } else if (symbol > 256) {
+                       /* Determine the length of the repitition
+                        * (section 3.2.5) */
+                       if (symbol < 265) length = symbol - 254;
+                       else if (symbol == 285) length = 258;
+                       else {
+                               length = pull_bits(stream, (symbol - 261) >> 2);
+                               length += (4 << ((symbol - 261) >> 2)) + 3;
+                               length += ((symbol - 1) % 4) <<
+                                         ((symbol - 261) >> 2);
+                       }
+
+                       /* Determine how far back to go */
+                       if ((symbol = read_symbol(stream, distance)) < 0)
+                               return;
+                       if (symbol < 4) dist = symbol + 1;
+                       else {
+                               dist = pull_bits(stream, (symbol - 2) >> 1);
+                               dist += (2 << ((symbol - 2) >> 1)) + 1;
+                               dist += (symbol % 2) << ((symbol - 2) >> 1);
+                       }
+                       stream->decoded += length;
+                       for (i = 0; i < length; i++) {
+                               *dest = dest[-dist];
+                               dest++;
+                       }
+               }
+       } while (symbol != 256); /* 256 is the end of the data block */
+}
+
+/* Fill the lookup tables (section 3.2.2) */
+static void fill_code_tables(struct huffman_set *set)
+{
+       int code = 0, i, length;
+
+       /* fill in the first code of each bit length, and the pos pointer */
+       set->pos[0] = 0;
+       for (i = 1; i < set->bits; i++) {
+               code = (code + set->count[i - 1]) << 1;
+               set->first[i] = code;
+               set->pos[i] = set->pos[i - 1] + set->count[i - 1];
+       }
+
+       /* Fill in the table of symbols in order of their huffman code */
+       for (i = 0; i < set->num_symbols; i++) {
+               if ((length = set->lengths[i]))
+                       set->symbols[set->pos[length]++] = i;
+       }
+
+       /* reset the pos pointer */
+       for (i = 1; i < set->bits; i++) set->pos[i] -= set->count[i];
+}
+
+static void init_code_tables(struct huffman_set *set)
+{
+       cramfs_memset(set->lengths, 0, set->num_symbols);
+       cramfs_memset(set->count, 0, set->bits);
+       cramfs_memset(set->first, 0, set->bits);
+}
+
+/* read in the huffman codes for dynamic decoding (section 3.2.7) */
+static void decompress_dynamic(struct bitstream *stream, unsigned char *dest)
+{
+       /* I tried my best to minimize the memory footprint here, while still
+        * keeping up performance. I really dislike the _lengths[] tables, but
+        * I see no way of eliminating them without a sizable performance
+        * impact. The first struct table keeps track of stats on each bit
+        * length. The _length table keeps a record of the bit length of each
+        * symbol. The _symbols table is for looking up symbols by the huffman
+        * code (the pos element points to the first place in the symbol table
+        * where that bit length occurs). I also hate the initization of these
+        * structs, if someone knows how to compact these, lemme know. */
+
+       struct huffman_set *codes = &(stream->codes);
+       struct huffman_set *lengths = &(stream->lengths);
+       struct huffman_set *distance = &(stream->distance);
+
+       int hlit = pull_bits(stream, 5) + 257;
+       int hdist = pull_bits(stream, 5) + 1;
+       int hclen = pull_bits(stream, 4) + 4;
+       int length, curr_code, symbol, i, last_code;
+
+       last_code = 0;
+
+       init_code_tables(codes);
+       init_code_tables(lengths);
+       init_code_tables(distance);
+
+       /* fill in the count of each bit length' as well as the lengths
+        * table */
+       for (i = 0; i < hclen; i++) {
+               length = pull_bits(stream, 3);
+               codes->lengths[huffman_order[i]] = length;
+               if (length) codes->count[length]++;
+
+       }
+       fill_code_tables(codes);
+
+       /* Do the same for the length codes, being carefull of wrap through
+        * to the distance table */
+       curr_code = 0;
+       while (curr_code < hlit) {
+               if ((symbol = read_symbol(stream, codes)) < 0) return;
+               if (symbol == 0) {
+                       curr_code++;
+                       last_code = 0;
+               } else if (symbol < 16) { /* Literal length */
+                       lengths->lengths[curr_code] =  last_code = symbol;
+                       lengths->count[symbol]++;
+                       curr_code++;
+               } else if (symbol == 16) { /* repeat the last symbol 3 - 6
+                                           * times */
+                       length = 3 + pull_bits(stream, 2);
+                       for (;length; length--, curr_code++)
+                               if (curr_code < hlit) {
+                                       lengths->lengths[curr_code] =
+                                               last_code;
+                                       lengths->count[last_code]++;
+                               } else { /* wrap to the distance table */
+                                       distance->lengths[curr_code - hlit] =
+                                               last_code;
+                                       distance->count[last_code]++;
+                               }
+               } else if (symbol == 17) { /* repeat a bit length 0 */
+                       curr_code += 3 + pull_bits(stream, 3);
+                       last_code = 0;
+               } else { /* same, but more times */
+                       curr_code += 11 + pull_bits(stream, 7);
+                       last_code = 0;
+               }
+       }
+       fill_code_tables(lengths);
+
+       /* Fill the distance table, don't need to worry about wrapthrough
+        * here */
+       curr_code -= hlit;
+       while (curr_code < hdist) {
+               if ((symbol = read_symbol(stream, codes)) < 0) return;
+               if (symbol == 0) {
+                       curr_code++;
+                       last_code = 0;
+               } else if (symbol < 16) {
+                       distance->lengths[curr_code] = last_code = symbol;
+                       distance->count[symbol]++;
+                       curr_code++;
+               } else if (symbol == 16) {
+                       length = 3 + pull_bits(stream, 2);
+                       for (;length; length--, curr_code++) {
+                               distance->lengths[curr_code] =
+                                       last_code;
+                               distance->count[last_code]++;
+                       }
+               } else if (symbol == 17) {
+                       curr_code += 3 + pull_bits(stream, 3);
+                       last_code = 0;
+               } else {
+                       curr_code += 11 + pull_bits(stream, 7);
+                       last_code = 0;
+               }
+       }
+       fill_code_tables(distance);
+
+       decompress_huffman(stream, dest);
+}
+
+/* fill in the length and distance huffman codes for fixed encoding
+ * (section 3.2.6) */
+static void decompress_fixed(struct bitstream *stream, unsigned char *dest)
+{
+       /* let gcc fill in the initial values */
+       struct huffman_set *lengths = &(stream->lengths);
+       struct huffman_set *distance = &(stream->distance);
+
+       cramfs_memset(lengths->count, 0, 16);
+       cramfs_memset(lengths->first, 0, 16);
+       cramfs_memset(lengths->lengths, 8, 144);
+       cramfs_memset(lengths->lengths + 144, 9, 112);
+       cramfs_memset(lengths->lengths + 256, 7, 24);
+       cramfs_memset(lengths->lengths + 280, 8, 8);
+       lengths->count[7] = 24;
+       lengths->count[8] = 152;
+       lengths->count[9] = 112;
+
+       cramfs_memset(distance->count, 0, 16);
+       cramfs_memset(distance->first, 0, 16);
+       cramfs_memset(distance->lengths, 5, 32);
+       distance->count[5] = 32;
+
+
+       fill_code_tables(lengths);
+       fill_code_tables(distance);
+
+
+       decompress_huffman(stream, dest);
+}
+
+/* returns the number of bytes decoded, < 0 if there was an error. Note that
+ * this function assumes that the block starts on a byte boundry
+ * (non-compliant, but I don't see where this would happen). section 3.2.3 */
+long decompress_block(unsigned char *dest, unsigned char *source,
+                     void *(*inflate_memcpy)(void *, const void *, size))
+{
+       int bfinal, btype;
+       struct bitstream stream;
+
+       init_stream(&stream, source, inflate_memcpy);
+       do {
+               bfinal = pull_bit(&stream);
+               btype = pull_bits(&stream, 2);
+               if (btype == NO_COMP) decompress_none(&stream, dest + stream.decoded);
+               else if (btype == DYNAMIC_COMP)
+                       decompress_dynamic(&stream, dest + stream.decoded);
+               else if (btype == FIXED_COMP) decompress_fixed(&stream, dest + stream.decoded);
+               else stream.error = COMP_UNKNOWN;
+       } while (!bfinal && !stream.error);
+
+#if 0
+       putstr("decompress_block start\r\n");
+       putLabeledWord("stream.error = ",stream.error);
+       putLabeledWord("stream.decoded = ",stream.decoded);
+       putLabeledWord("dest = ",dest);
+       putstr("decompress_block end\r\n");
+#endif
+       return stream.error ? -stream.error : stream.decoded;
+}
diff -Naur u-boot-2009.03_orig/fs/reiserfs/CVS/Entries u-boot-2009.03/fs/reiserfs/CVS/Entries
--- u-boot-2009.03_orig/fs/reiserfs/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/fs/reiserfs/CVS/Entries      2009-03-25 15:58:04.871740000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dev.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mode_string.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/reiserfs.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/reiserfs_private.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/fs/reiserfs/CVS/Entries.Extra u-boot-2009.03/fs/reiserfs/CVS/Entries.Extra
--- u-boot-2009.03_orig/fs/reiserfs/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/fs/reiserfs/CVS/Entries.Extra        2009-03-25 15:58:04.871740000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019732/
+/dev.c///1238019732/
+/mode_string.c///1238019732/
+/reiserfs.c///1238019732/
+/reiserfs_private.h///1238019732/
diff -Naur u-boot-2009.03_orig/fs/reiserfs/CVS/Entries.Extra.Old u-boot-2009.03/fs/reiserfs/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/fs/reiserfs/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/fs/reiserfs/CVS/Entries.Extra.Old    2009-03-25 15:25:35.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019732/
+/dev.c///1238019732/
+/mode_string.c///1238019732/
+/reiserfs.c///1238019732/
+/reiserfs_private.h///1238019732/
diff -Naur u-boot-2009.03_orig/fs/reiserfs/CVS/Entries.Old u-boot-2009.03/fs/reiserfs/CVS/Entries.Old
--- u-boot-2009.03_orig/fs/reiserfs/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/fs/reiserfs/CVS/Entries.Old  2009-03-25 15:25:35.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:12 2009//
+/dev.c/1.1.1.1/Wed Mar 25 22:22:12 2009//
+/mode_string.c/1.1.1.1/Wed Mar 25 22:22:12 2009//
+/reiserfs.c/1.1.1.1/Wed Mar 25 22:22:12 2009//
+/reiserfs_private.h/1.1.1.1/Wed Mar 25 22:22:12 2009//
+D
diff -Naur u-boot-2009.03_orig/fs/reiserfs/CVS/Repository u-boot-2009.03/fs/reiserfs/CVS/Repository
--- u-boot-2009.03_orig/fs/reiserfs/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/fs/reiserfs/CVS/Repository   2009-03-25 15:25:35.243592700 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/fs/reiserfs
diff -Naur u-boot-2009.03_orig/fs/reiserfs/CVS/Root u-boot-2009.03/fs/reiserfs/CVS/Root
--- u-boot-2009.03_orig/fs/reiserfs/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/fs/reiserfs/CVS/Root 2009-03-25 15:25:35.243592700 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/fs/yaffs2/CVS/Entries u-boot-2009.03/fs/yaffs2/CVS/Entries
--- u-boot-2009.03_orig/fs/yaffs2/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/fs/yaffs2/CVS/Entries        2009-03-31 14:56:33.235920800 -0700
@@ -0,0 +1,37 @@
+/README-linux/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/devextras.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yaffs_checkptrw.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yaffs_ecc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yaffs_flashif.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yaffs_guts.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yaffs_malloc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yaffs_mtdif.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yaffs_mtdif2.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yaffs_nand.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yaffs_nandemul2k.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yaffs_packedtags1.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yaffs_packedtags1.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yaffs_packedtags2.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yaffs_packedtags2.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yaffs_qsort.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yaffs_qsort.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yaffs_ramdisk.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yaffs_tagscompat.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yaffs_tagscompat.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yaffs_tagsvalidity.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yaffs_tagsvalidity.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yaffscfg.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yaffscfg.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yaffsfs.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yaffsinterface.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ydirectenv.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yportenv.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yaffs_checkptrw.c/1.1.1.1/Tue Mar 31 21:56:32 2009//T1.1.1.1
+/yaffs_ecc.c/1.1.1.1/Tue Mar 31 21:56:33 2009//T1.1.1.1
+/yaffs_guts.c/1.1.1.1/Tue Mar 31 21:56:33 2009//T1.1.1.1
+/yaffs_mtdif.c/1.1.1.1/Tue Mar 31 21:56:33 2009//T1.1.1.1
+/yaffs_mtdif2.c/1.1.1.1/Tue Mar 31 21:56:33 2009//T1.1.1.1
+/yaffs_nand.c/1.1.1.1/Tue Mar 31 21:56:33 2009//T1.1.1.1
+/yaffsfs.c/1.1.1.1/Tue Mar 31 21:56:33 2009//T1.1.1.1
+/Makefile/1.1.1.1/Tue Mar 31 21:56:33 2009//T1.1.1.1
+D
diff -Naur u-boot-2009.03_orig/fs/yaffs2/CVS/Entries.Extra u-boot-2009.03/fs/yaffs2/CVS/Entries.Extra
--- u-boot-2009.03_orig/fs/yaffs2/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/fs/yaffs2/CVS/Entries.Extra  2009-03-31 14:56:33.251545600 -0700
@@ -0,0 +1,36 @@
+/README-linux///1238019732/
+/devextras.h///1238019732/
+/yaffs_checkptrw.h///1238019732/
+/yaffs_ecc.h///1238019732/
+/yaffs_flashif.h///1238019732/
+/yaffs_guts.h///1238019732/
+/yaffs_malloc.h///1238019732/
+/yaffs_mtdif.h///1238019732/
+/yaffs_mtdif2.h///1238019732/
+/yaffs_nand.h///1238019732/
+/yaffs_nandemul2k.h///1238019732/
+/yaffs_packedtags1.c///1238019732/
+/yaffs_packedtags1.h///1238019732/
+/yaffs_packedtags2.c///1238019732/
+/yaffs_packedtags2.h///1238019732/
+/yaffs_qsort.c///1238019732/
+/yaffs_qsort.h///1238019732/
+/yaffs_ramdisk.h///1238019732/
+/yaffs_tagscompat.c///1238019732/
+/yaffs_tagscompat.h///1238019732/
+/yaffs_tagsvalidity.c///1238019733/
+/yaffs_tagsvalidity.h///1238019733/
+/yaffscfg.c///1238019732/
+/yaffscfg.h///1238019732/
+/yaffsfs.h///1238019732/
+/yaffsinterface.h///1238019732/
+/ydirectenv.h///1238019733/
+/yportenv.h///1238019733/
+/yaffs_checkptrw.c///1238019732/
+/yaffs_ecc.c///1238019732/
+/yaffs_guts.c///1238019732/
+/yaffs_mtdif.c///1238019732/
+/yaffs_mtdif2.c///1238019732/
+/yaffs_nand.c///1238019732/
+/yaffsfs.c///1238019732/
+/Makefile///1238019732/
diff -Naur u-boot-2009.03_orig/fs/yaffs2/CVS/Entries.Extra.Old u-boot-2009.03/fs/yaffs2/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/fs/yaffs2/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/fs/yaffs2/CVS/Entries.Extra.Old      2009-03-25 17:51:48.000000000 -0700
@@ -0,0 +1,36 @@
+/README-linux///1238019732/
+/devextras.h///1238019732/
+/yaffs_checkptrw.h///1238019732/
+/yaffs_ecc.h///1238019732/
+/yaffs_flashif.h///1238019732/
+/yaffs_guts.h///1238019732/
+/yaffs_malloc.h///1238019732/
+/yaffs_mtdif.h///1238019732/
+/yaffs_mtdif2.h///1238019732/
+/yaffs_nand.h///1238019732/
+/yaffs_nandemul2k.h///1238019732/
+/yaffs_packedtags1.c///1238019732/
+/yaffs_packedtags1.h///1238019732/
+/yaffs_packedtags2.c///1238019732/
+/yaffs_packedtags2.h///1238019732/
+/yaffs_qsort.c///1238019732/
+/yaffs_qsort.h///1238019732/
+/yaffs_ramdisk.h///1238019732/
+/yaffs_tagscompat.c///1238019732/
+/yaffs_tagscompat.h///1238019732/
+/yaffs_tagsvalidity.c///1238019733/
+/yaffs_tagsvalidity.h///1238019733/
+/yaffscfg.c///1238019732/
+/yaffscfg.h///1238019732/
+/yaffsfs.h///1238019732/
+/yaffsinterface.h///1238019732/
+/ydirectenv.h///1238019733/
+/yportenv.h///1238019733/
+/Makefile///1238028708/
+/yaffs_checkptrw.c///1238028708/
+/yaffs_ecc.c///1238028708/
+/yaffs_guts.c///1238028708/
+/yaffs_mtdif.c///1238028708/
+/yaffs_mtdif2.c///1238028708/
+/yaffs_nand.c///1238028708/
+/yaffsfs.c///1238028708/
diff -Naur u-boot-2009.03_orig/fs/yaffs2/CVS/Entries.Old u-boot-2009.03/fs/yaffs2/CVS/Entries.Old
--- u-boot-2009.03_orig/fs/yaffs2/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/fs/yaffs2/CVS/Entries.Old    2009-03-25 17:51:48.000000000 -0700
@@ -0,0 +1,37 @@
+/README-linux/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/devextras.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yaffs_checkptrw.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yaffs_ecc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yaffs_flashif.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yaffs_guts.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yaffs_malloc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yaffs_mtdif.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yaffs_mtdif2.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yaffs_nand.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yaffs_nandemul2k.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yaffs_packedtags1.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yaffs_packedtags1.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yaffs_packedtags2.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yaffs_packedtags2.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yaffs_qsort.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yaffs_qsort.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yaffs_ramdisk.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yaffs_tagscompat.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yaffs_tagscompat.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yaffs_tagsvalidity.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yaffs_tagsvalidity.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yaffscfg.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yaffscfg.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yaffsfs.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yaffsinterface.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ydirectenv.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yportenv.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/Makefile/1.2/Thu Mar 26 00:51:48 2009//
+/yaffs_checkptrw.c/1.2/Thu Mar 26 00:51:48 2009//
+/yaffs_ecc.c/1.2/Thu Mar 26 00:51:48 2009//
+/yaffs_guts.c/1.2/Thu Mar 26 00:51:48 2009//
+/yaffs_mtdif.c/1.2/Thu Mar 26 00:51:48 2009//
+/yaffs_mtdif2.c/1.2/Thu Mar 26 00:51:48 2009//
+/yaffs_nand.c/1.2/Thu Mar 26 00:51:48 2009//
+/yaffsfs.c/1.2/Thu Mar 26 00:51:48 2009//
+D
diff -Naur u-boot-2009.03_orig/fs/yaffs2/CVS/Repository u-boot-2009.03/fs/yaffs2/CVS/Repository
--- u-boot-2009.03_orig/fs/yaffs2/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/fs/yaffs2/CVS/Repository     2009-03-25 15:25:35.352967000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/fs/yaffs2
diff -Naur u-boot-2009.03_orig/fs/yaffs2/CVS/Root u-boot-2009.03/fs/yaffs2/CVS/Root
--- u-boot-2009.03_orig/fs/yaffs2/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/fs/yaffs2/CVS/Root   2009-03-25 15:25:35.352967000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/fs/yaffs2/Makefile u-boot-2009.03/fs/yaffs2/Makefile
--- u-boot-2009.03_orig/fs/yaffs2/Makefile      2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/fs/yaffs2/Makefile   2009-03-31 14:56:33.220296000 -0700
@@ -1,55 +1,55 @@
-# Makefile for YAFFS direct test
-#
-#
-# YAFFS: Yet another Flash File System. A NAND-flash specific file system.
-#
-# Copyright (C) 2003 Aleph One Ltd.
-#
-#
-# Created by Charles Manning <charles@aleph1.co.uk>
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License version 2 as
-# published by the Free Software Foundation.
-#
-# NB Warning this Makefile does not include header dependencies.
-#
-# $Id: Makefile,v 1.15 2007/07/18 19:40:38 charles Exp $
-
-#EXTRA_COMPILE_FLAGS = -DYAFFS_IGNORE_TAGS_ECC
-include $(TOPDIR)/config.mk
-
-LIB = $(obj)libyaffs2.a
-
-COBJS-$(CONFIG_YAFFS2) := \
-       yaffscfg.o yaffs_ecc.o yaffsfs.o yaffs_guts.o yaffs_packedtags1.o \
-       yaffs_tagscompat.o yaffs_packedtags2.o yaffs_tagsvalidity.o \
-       yaffs_nand.o yaffs_checkptrw.o yaffs_qsort.o yaffs_mtdif.o \
-       yaffs_mtdif2.o
-
-SRCS    := $(COBJS-y:.o=.c)
-OBJS    := $(addprefix $(obj),$(COBJS-y))
-
-# -DCONFIG_YAFFS_NO_YAFFS1
-CFLAGS +=    -DCONFIG_YAFFS_DIRECT -DCONFIG_YAFFS_SHORT_NAMES_IN_RAM -DCONFIG_YAFFS_YAFFS2 -DNO_Y_INLINE -DLINUX_VERSION_CODE=0x20622
-
-all:  $(LIB)
-
-$(LIB): $(obj).depend $(OBJS)
-       $(AR) $(ARFLAGS) $@ $(OBJS)
-
-.PHONY: clean distclean
-clean:
-       rm -f $(OBJS)
-
-distclean:  clean
-       rm -f $(LIB) core *.bak .depend
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
+# Makefile for YAFFS direct test
+#
+#
+# YAFFS: Yet another Flash File System. A NAND-flash specific file system.
+#
+# Copyright (C) 2003 Aleph One Ltd.
+#
+#
+# Created by Charles Manning <charles@aleph1.co.uk>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# NB Warning this Makefile does not include header dependencies.
+#
+# $Id: Makefile,v 1.1.1.1 2009/03/25 22:22:12 kenagy Exp $
+
+#EXTRA_COMPILE_FLAGS = -DYAFFS_IGNORE_TAGS_ECC
+include $(TOPDIR)/config.mk
+
+LIB = $(obj)libyaffs2.a
+
+COBJS-$(CONFIG_YAFFS2) := \
+       yaffscfg.o yaffs_ecc.o yaffsfs.o yaffs_guts.o yaffs_packedtags1.o \
+       yaffs_tagscompat.o yaffs_packedtags2.o yaffs_tagsvalidity.o \
+       yaffs_nand.o yaffs_checkptrw.o yaffs_qsort.o yaffs_mtdif.o \
+       yaffs_mtdif2.o
+
+SRCS    := $(COBJS-y:.o=.c)
+OBJS    := $(addprefix $(obj),$(COBJS-y))
+
+# -DCONFIG_YAFFS_NO_YAFFS1
+CFLAGS +=    -DCONFIG_YAFFS_DIRECT -DCONFIG_YAFFS_SHORT_NAMES_IN_RAM -DCONFIG_YAFFS_YAFFS2 -DNO_Y_INLINE -DLINUX_VERSION_CODE=0x20622
+
+all:  $(LIB)
+
+$(LIB): $(obj).depend $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
+
+.PHONY: clean distclean
+clean:
+       rm -f $(OBJS)
+
+distclean:  clean
+       rm -f $(LIB) core *.bak .depend
+
+#########################################################################
+
+# defines $(obj).depend target
+include $(SRCTREE)/rules.mk
+
+sinclude $(obj).depend
+
+#########################################################################
diff -Naur u-boot-2009.03_orig/fs/yaffs2/yaffs_checkptrw.c u-boot-2009.03/fs/yaffs2/yaffs_checkptrw.c
--- u-boot-2009.03_orig/fs/yaffs2/yaffs_checkptrw.c     2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/fs/yaffs2/yaffs_checkptrw.c  2009-03-31 14:56:32.845300800 -0700
@@ -1,405 +1,405 @@
-/*
- * YAFFS: Yet Another Flash File System. A NAND-flash specific file system.
- *
- * Copyright (C) 2002-2007 Aleph One Ltd.
- *   for Toby Churchill Ltd and Brightstar Engineering
- *
- * Created by Charles Manning <charles@aleph1.co.uk>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-/* XXX U-BOOT XXX */
-#include <common.h>
-#include <malloc.h>
-
-const char *yaffs_checkptrw_c_version =
-    "$Id: yaffs_checkptrw.c,v 1.14 2007/05/15 20:07:40 charles Exp $";
-
-
-#include "yaffs_checkptrw.h"
-
-
-static int yaffs_CheckpointSpaceOk(yaffs_Device *dev)
-{
-
-       int blocksAvailable = dev->nErasedBlocks - dev->nReservedBlocks;
-
-       T(YAFFS_TRACE_CHECKPOINT,
-               (TSTR("checkpt blocks available = %d" TENDSTR),
-               blocksAvailable));
-
-
-       return (blocksAvailable <= 0) ? 0 : 1;
-}
-
-
-static int yaffs_CheckpointErase(yaffs_Device *dev)
-{
-
-       int i;
-
-
-       if(!dev->eraseBlockInNAND)
-               return 0;
-       T(YAFFS_TRACE_CHECKPOINT,(TSTR("checking blocks %d to %d"TENDSTR),
-               dev->internalStartBlock,dev->internalEndBlock));
-
-       for(i = dev->internalStartBlock; i <= dev->internalEndBlock; i++) {
-               yaffs_BlockInfo *bi = yaffs_GetBlockInfo(dev,i);
-               if(bi->blockState == YAFFS_BLOCK_STATE_CHECKPOINT){
-                       T(YAFFS_TRACE_CHECKPOINT,(TSTR("erasing checkpt block %d"TENDSTR),i));
-                       if(dev->eraseBlockInNAND(dev,i- dev->blockOffset /* realign */)){
-                               bi->blockState = YAFFS_BLOCK_STATE_EMPTY;
-                               dev->nErasedBlocks++;
-                               dev->nFreeChunks += dev->nChunksPerBlock;
-                       }
-                       else {
-                               dev->markNANDBlockBad(dev,i);
-                               bi->blockState = YAFFS_BLOCK_STATE_DEAD;
-                       }
-               }
-       }
-
-       dev->blocksInCheckpoint = 0;
-
-       return 1;
-}
-
-
-static void yaffs_CheckpointFindNextErasedBlock(yaffs_Device *dev)
-{
-       int  i;
-       int blocksAvailable = dev->nErasedBlocks - dev->nReservedBlocks;
-       T(YAFFS_TRACE_CHECKPOINT,
-               (TSTR("allocating checkpt block: erased %d reserved %d avail %d next %d "TENDSTR),
-               dev->nErasedBlocks,dev->nReservedBlocks,blocksAvailable,dev->checkpointNextBlock));
-
-       if(dev->checkpointNextBlock >= 0 &&
-          dev->checkpointNextBlock <= dev->internalEndBlock &&
-          blocksAvailable > 0){
-
-               for(i = dev->checkpointNextBlock; i <= dev->internalEndBlock; i++){
-                       yaffs_BlockInfo *bi = yaffs_GetBlockInfo(dev,i);
-                       if(bi->blockState == YAFFS_BLOCK_STATE_EMPTY){
-                               dev->checkpointNextBlock = i + 1;
-                               dev->checkpointCurrentBlock = i;
-                               T(YAFFS_TRACE_CHECKPOINT,(TSTR("allocating checkpt block %d"TENDSTR),i));
-                               return;
-                       }
-               }
-       }
-       T(YAFFS_TRACE_CHECKPOINT,(TSTR("out of checkpt blocks"TENDSTR)));
-
-       dev->checkpointNextBlock = -1;
-       dev->checkpointCurrentBlock = -1;
-}
-
-static void yaffs_CheckpointFindNextCheckpointBlock(yaffs_Device *dev)
-{
-       int  i;
-       yaffs_ExtendedTags tags;
-
-       T(YAFFS_TRACE_CHECKPOINT,(TSTR("find next checkpt block: start:  blocks %d next %d" TENDSTR),
-               dev->blocksInCheckpoint, dev->checkpointNextBlock));
-
-       if(dev->blocksInCheckpoint < dev->checkpointMaxBlocks)
-               for(i = dev->checkpointNextBlock; i <= dev->internalEndBlock; i++){
-                       int chunk = i * dev->nChunksPerBlock;
-                       int realignedChunk = chunk - dev->chunkOffset;
-
-                       dev->readChunkWithTagsFromNAND(dev,realignedChunk,NULL,&tags);
-                       T(YAFFS_TRACE_CHECKPOINT,(TSTR("find next checkpt block: search: block %d oid %d seq %d eccr %d" TENDSTR),
-                               i, tags.objectId,tags.sequenceNumber,tags.eccResult));
-
-                       if(tags.sequenceNumber == YAFFS_SEQUENCE_CHECKPOINT_DATA){
-                               /* Right kind of block */
-                               dev->checkpointNextBlock = tags.objectId;
-                               dev->checkpointCurrentBlock = i;
-                               dev->checkpointBlockList[dev->blocksInCheckpoint] = i;
-                               dev->blocksInCheckpoint++;
-                               T(YAFFS_TRACE_CHECKPOINT,(TSTR("found checkpt block %d"TENDSTR),i));
-                               return;
-                       }
-               }
-
-       T(YAFFS_TRACE_CHECKPOINT,(TSTR("found no more checkpt blocks"TENDSTR)));
-
-       dev->checkpointNextBlock = -1;
-       dev->checkpointCurrentBlock = -1;
-}
-
-
-int yaffs_CheckpointOpen(yaffs_Device *dev, int forWriting)
-{
-
-       /* Got the functions we need? */
-       if (!dev->writeChunkWithTagsToNAND ||
-           !dev->readChunkWithTagsFromNAND ||
-           !dev->eraseBlockInNAND ||
-           !dev->markNANDBlockBad)
-               return 0;
-
-       if(forWriting && !yaffs_CheckpointSpaceOk(dev))
-               return 0;
-
-       if(!dev->checkpointBuffer)
-               dev->checkpointBuffer = YMALLOC_DMA(dev->nDataBytesPerChunk);
-       if(!dev->checkpointBuffer)
-               return 0;
-
-
-       dev->checkpointPageSequence = 0;
-
-       dev->checkpointOpenForWrite = forWriting;
-
-       dev->checkpointByteCount = 0;
-       dev->checkpointSum = 0;
-       dev->checkpointXor = 0;
-       dev->checkpointCurrentBlock = -1;
-       dev->checkpointCurrentChunk = -1;
-       dev->checkpointNextBlock = dev->internalStartBlock;
-
-       /* Erase all the blocks in the checkpoint area */
-       if(forWriting){
-               memset(dev->checkpointBuffer,0,dev->nDataBytesPerChunk);
-               dev->checkpointByteOffset = 0;
-               return yaffs_CheckpointErase(dev);
-
-
-       } else {
-               int i;
-               /* Set to a value that will kick off a read */
-               dev->checkpointByteOffset = dev->nDataBytesPerChunk;
-               /* A checkpoint block list of 1 checkpoint block per 16 block is (hopefully)
-                * going to be way more than we need */
-               dev->blocksInCheckpoint = 0;
-               dev->checkpointMaxBlocks = (dev->internalEndBlock - dev->internalStartBlock)/16 + 2;
-               dev->checkpointBlockList = YMALLOC(sizeof(int) * dev->checkpointMaxBlocks);
-               for(i = 0; i < dev->checkpointMaxBlocks; i++)
-                       dev->checkpointBlockList[i] = -1;
-       }
-
-       return 1;
-}
-
-int yaffs_GetCheckpointSum(yaffs_Device *dev, __u32 *sum)
-{
-       __u32 compositeSum;
-       compositeSum =  (dev->checkpointSum << 8) | (dev->checkpointXor & 0xFF);
-       *sum = compositeSum;
-       return 1;
-}
-
-static int yaffs_CheckpointFlushBuffer(yaffs_Device *dev)
-{
-
-       int chunk;
-       int realignedChunk;
-
-       yaffs_ExtendedTags tags;
-
-       if(dev->checkpointCurrentBlock < 0){
-               yaffs_CheckpointFindNextErasedBlock(dev);
-               dev->checkpointCurrentChunk = 0;
-       }
-
-       if(dev->checkpointCurrentBlock < 0)
-               return 0;
-
-       tags.chunkDeleted = 0;
-       tags.objectId = dev->checkpointNextBlock; /* Hint to next place to look */
-       tags.chunkId = dev->checkpointPageSequence + 1;
-       tags.sequenceNumber =  YAFFS_SEQUENCE_CHECKPOINT_DATA;
-       tags.byteCount = dev->nDataBytesPerChunk;
-       if(dev->checkpointCurrentChunk == 0){
-               /* First chunk we write for the block? Set block state to
-                  checkpoint */
-               yaffs_BlockInfo *bi = yaffs_GetBlockInfo(dev,dev->checkpointCurrentBlock);
-               bi->blockState = YAFFS_BLOCK_STATE_CHECKPOINT;
-               dev->blocksInCheckpoint++;
-       }
-
-       chunk = dev->checkpointCurrentBlock * dev->nChunksPerBlock + dev->checkpointCurrentChunk;
-
-
-       T(YAFFS_TRACE_CHECKPOINT,(TSTR("checkpoint wite buffer nand %d(%d:%d) objid %d chId %d" TENDSTR),
-               chunk, dev->checkpointCurrentBlock, dev->checkpointCurrentChunk,tags.objectId,tags.chunkId));
-
-       realignedChunk = chunk - dev->chunkOffset;
-
-       dev->writeChunkWithTagsToNAND(dev,realignedChunk,dev->checkpointBuffer,&tags);
-       dev->checkpointByteOffset = 0;
-       dev->checkpointPageSequence++;
-       dev->checkpointCurrentChunk++;
-       if(dev->checkpointCurrentChunk >= dev->nChunksPerBlock){
-               dev->checkpointCurrentChunk = 0;
-               dev->checkpointCurrentBlock = -1;
-       }
-       memset(dev->checkpointBuffer,0,dev->nDataBytesPerChunk);
-
-       return 1;
-}
-
-
-int yaffs_CheckpointWrite(yaffs_Device *dev,const void *data, int nBytes)
-{
-       int i=0;
-       int ok = 1;
-
-
-       __u8 * dataBytes = (__u8 *)data;
-
-
-
-       if(!dev->checkpointBuffer)
-               return 0;
-
-       if(!dev->checkpointOpenForWrite)
-               return -1;
-
-       while(i < nBytes && ok) {
-
-
-
-               dev->checkpointBuffer[dev->checkpointByteOffset] = *dataBytes ;
-               dev->checkpointSum += *dataBytes;
-               dev->checkpointXor ^= *dataBytes;
-
-               dev->checkpointByteOffset++;
-               i++;
-               dataBytes++;
-               dev->checkpointByteCount++;
-
-
-               if(dev->checkpointByteOffset < 0 ||
-                  dev->checkpointByteOffset >= dev->nDataBytesPerChunk)
-                       ok = yaffs_CheckpointFlushBuffer(dev);
-
-       }
-
-       return  i;
-}
-
-int yaffs_CheckpointRead(yaffs_Device *dev, void *data, int nBytes)
-{
-       int i=0;
-       int ok = 1;
-       yaffs_ExtendedTags tags;
-
-
-       int chunk;
-       int realignedChunk;
-
-       __u8 *dataBytes = (__u8 *)data;
-
-       if(!dev->checkpointBuffer)
-               return 0;
-
-       if(dev->checkpointOpenForWrite)
-               return -1;
-
-       while(i < nBytes && ok) {
-
-
-               if(dev->checkpointByteOffset < 0 ||
-                  dev->checkpointByteOffset >= dev->nDataBytesPerChunk) {
-
-                       if(dev->checkpointCurrentBlock < 0){
-                               yaffs_CheckpointFindNextCheckpointBlock(dev);
-                               dev->checkpointCurrentChunk = 0;
-                       }
-
-                       if(dev->checkpointCurrentBlock < 0)
-                               ok = 0;
-                       else {
-
-                               chunk = dev->checkpointCurrentBlock * dev->nChunksPerBlock +
-                                         dev->checkpointCurrentChunk;
-
-                               realignedChunk = chunk - dev->chunkOffset;
-
-                               /* read in the next chunk */
-                               /* printf("read checkpoint page %d\n",dev->checkpointPage); */
-                               dev->readChunkWithTagsFromNAND(dev, realignedChunk,
-                                                              dev->checkpointBuffer,
-                                                             &tags);
-
-                               if(tags.chunkId != (dev->checkpointPageSequence + 1) ||
-                                  tags.sequenceNumber != YAFFS_SEQUENCE_CHECKPOINT_DATA)
-                                  ok = 0;
-
-                               dev->checkpointByteOffset = 0;
-                               dev->checkpointPageSequence++;
-                               dev->checkpointCurrentChunk++;
-
-                               if(dev->checkpointCurrentChunk >= dev->nChunksPerBlock)
-                                       dev->checkpointCurrentBlock = -1;
-                       }
-               }
-
-               if(ok){
-                       *dataBytes = dev->checkpointBuffer[dev->checkpointByteOffset];
-                       dev->checkpointSum += *dataBytes;
-                       dev->checkpointXor ^= *dataBytes;
-                       dev->checkpointByteOffset++;
-                       i++;
-                       dataBytes++;
-                       dev->checkpointByteCount++;
-               }
-       }
-
-       return  i;
-}
-
-int yaffs_CheckpointClose(yaffs_Device *dev)
-{
-
-       if(dev->checkpointOpenForWrite){
-               if(dev->checkpointByteOffset != 0)
-                       yaffs_CheckpointFlushBuffer(dev);
-       } else {
-               int i;
-               for(i = 0; i < dev->blocksInCheckpoint && dev->checkpointBlockList[i] >= 0; i++){
-                       yaffs_BlockInfo *bi = yaffs_GetBlockInfo(dev,dev->checkpointBlockList[i]);
-                       if(bi->blockState == YAFFS_BLOCK_STATE_EMPTY)
-                               bi->blockState = YAFFS_BLOCK_STATE_CHECKPOINT;
-                       else {
-                               // Todo this looks odd...
-                       }
-               }
-               YFREE(dev->checkpointBlockList);
-               dev->checkpointBlockList = NULL;
-       }
-
-       dev->nFreeChunks -= dev->blocksInCheckpoint * dev->nChunksPerBlock;
-       dev->nErasedBlocks -= dev->blocksInCheckpoint;
-
-
-       T(YAFFS_TRACE_CHECKPOINT,(TSTR("checkpoint byte count %d" TENDSTR),
-                       dev->checkpointByteCount));
-
-       if(dev->checkpointBuffer){
-               /* free the buffer */
-               YFREE(dev->checkpointBuffer);
-               dev->checkpointBuffer = NULL;
-               return 1;
-       }
-       else
-               return 0;
-
-}
-
-int yaffs_CheckpointInvalidateStream(yaffs_Device *dev)
-{
-       /* Erase the first checksum block */
-
-       T(YAFFS_TRACE_CHECKPOINT,(TSTR("checkpoint invalidate"TENDSTR)));
-
-       if(!yaffs_CheckpointSpaceOk(dev))
-               return 0;
-
-       return yaffs_CheckpointErase(dev);
-}
+/*
+ * YAFFS: Yet Another Flash File System. A NAND-flash specific file system.
+ *
+ * Copyright (C) 2002-2007 Aleph One Ltd.
+ *   for Toby Churchill Ltd and Brightstar Engineering
+ *
+ * Created by Charles Manning <charles@aleph1.co.uk>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+/* XXX U-BOOT XXX */
+#include <common.h>
+#include <malloc.h>
+
+const char *yaffs_checkptrw_c_version =
+    "$Id: yaffs_checkptrw.c,v 1.1.1.1 2009/03/25 22:22:12 kenagy Exp $";
+
+
+#include "yaffs_checkptrw.h"
+
+
+static int yaffs_CheckpointSpaceOk(yaffs_Device *dev)
+{
+
+       int blocksAvailable = dev->nErasedBlocks - dev->nReservedBlocks;
+
+       T(YAFFS_TRACE_CHECKPOINT,
+               (TSTR("checkpt blocks available = %d" TENDSTR),
+               blocksAvailable));
+
+
+       return (blocksAvailable <= 0) ? 0 : 1;
+}
+
+
+static int yaffs_CheckpointErase(yaffs_Device *dev)
+{
+
+       int i;
+
+
+       if(!dev->eraseBlockInNAND)
+               return 0;
+       T(YAFFS_TRACE_CHECKPOINT,(TSTR("checking blocks %d to %d"TENDSTR),
+               dev->internalStartBlock,dev->internalEndBlock));
+
+       for(i = dev->internalStartBlock; i <= dev->internalEndBlock; i++) {
+               yaffs_BlockInfo *bi = yaffs_GetBlockInfo(dev,i);
+               if(bi->blockState == YAFFS_BLOCK_STATE_CHECKPOINT){
+                       T(YAFFS_TRACE_CHECKPOINT,(TSTR("erasing checkpt block %d"TENDSTR),i));
+                       if(dev->eraseBlockInNAND(dev,i- dev->blockOffset /* realign */)){
+                               bi->blockState = YAFFS_BLOCK_STATE_EMPTY;
+                               dev->nErasedBlocks++;
+                               dev->nFreeChunks += dev->nChunksPerBlock;
+                       }
+                       else {
+                               dev->markNANDBlockBad(dev,i);
+                               bi->blockState = YAFFS_BLOCK_STATE_DEAD;
+                       }
+               }
+       }
+
+       dev->blocksInCheckpoint = 0;
+
+       return 1;
+}
+
+
+static void yaffs_CheckpointFindNextErasedBlock(yaffs_Device *dev)
+{
+       int  i;
+       int blocksAvailable = dev->nErasedBlocks - dev->nReservedBlocks;
+       T(YAFFS_TRACE_CHECKPOINT,
+               (TSTR("allocating checkpt block: erased %d reserved %d avail %d next %d "TENDSTR),
+               dev->nErasedBlocks,dev->nReservedBlocks,blocksAvailable,dev->checkpointNextBlock));
+
+       if(dev->checkpointNextBlock >= 0 &&
+          dev->checkpointNextBlock <= dev->internalEndBlock &&
+          blocksAvailable > 0){
+
+               for(i = dev->checkpointNextBlock; i <= dev->internalEndBlock; i++){
+                       yaffs_BlockInfo *bi = yaffs_GetBlockInfo(dev,i);
+                       if(bi->blockState == YAFFS_BLOCK_STATE_EMPTY){
+                               dev->checkpointNextBlock = i + 1;
+                               dev->checkpointCurrentBlock = i;
+                               T(YAFFS_TRACE_CHECKPOINT,(TSTR("allocating checkpt block %d"TENDSTR),i));
+                               return;
+                       }
+               }
+       }
+       T(YAFFS_TRACE_CHECKPOINT,(TSTR("out of checkpt blocks"TENDSTR)));
+
+       dev->checkpointNextBlock = -1;
+       dev->checkpointCurrentBlock = -1;
+}
+
+static void yaffs_CheckpointFindNextCheckpointBlock(yaffs_Device *dev)
+{
+       int  i;
+       yaffs_ExtendedTags tags;
+
+       T(YAFFS_TRACE_CHECKPOINT,(TSTR("find next checkpt block: start:  blocks %d next %d" TENDSTR),
+               dev->blocksInCheckpoint, dev->checkpointNextBlock));
+
+       if(dev->blocksInCheckpoint < dev->checkpointMaxBlocks)
+               for(i = dev->checkpointNextBlock; i <= dev->internalEndBlock; i++){
+                       int chunk = i * dev->nChunksPerBlock;
+                       int realignedChunk = chunk - dev->chunkOffset;
+
+                       dev->readChunkWithTagsFromNAND(dev,realignedChunk,NULL,&tags);
+                       T(YAFFS_TRACE_CHECKPOINT,(TSTR("find next checkpt block: search: block %d oid %d seq %d eccr %d" TENDSTR),
+                               i, tags.objectId,tags.sequenceNumber,tags.eccResult));
+
+                       if(tags.sequenceNumber == YAFFS_SEQUENCE_CHECKPOINT_DATA){
+                               /* Right kind of block */
+                               dev->checkpointNextBlock = tags.objectId;
+                               dev->checkpointCurrentBlock = i;
+                               dev->checkpointBlockList[dev->blocksInCheckpoint] = i;
+                               dev->blocksInCheckpoint++;
+                               T(YAFFS_TRACE_CHECKPOINT,(TSTR("found checkpt block %d"TENDSTR),i));
+                               return;
+                       }
+               }
+
+       T(YAFFS_TRACE_CHECKPOINT,(TSTR("found no more checkpt blocks"TENDSTR)));
+
+       dev->checkpointNextBlock = -1;
+       dev->checkpointCurrentBlock = -1;
+}
+
+
+int yaffs_CheckpointOpen(yaffs_Device *dev, int forWriting)
+{
+
+       /* Got the functions we need? */
+       if (!dev->writeChunkWithTagsToNAND ||
+           !dev->readChunkWithTagsFromNAND ||
+           !dev->eraseBlockInNAND ||
+           !dev->markNANDBlockBad)
+               return 0;
+
+       if(forWriting && !yaffs_CheckpointSpaceOk(dev))
+               return 0;
+
+       if(!dev->checkpointBuffer)
+               dev->checkpointBuffer = YMALLOC_DMA(dev->nDataBytesPerChunk);
+       if(!dev->checkpointBuffer)
+               return 0;
+
+
+       dev->checkpointPageSequence = 0;
+
+       dev->checkpointOpenForWrite = forWriting;
+
+       dev->checkpointByteCount = 0;
+       dev->checkpointSum = 0;
+       dev->checkpointXor = 0;
+       dev->checkpointCurrentBlock = -1;
+       dev->checkpointCurrentChunk = -1;
+       dev->checkpointNextBlock = dev->internalStartBlock;
+
+       /* Erase all the blocks in the checkpoint area */
+       if(forWriting){
+               memset(dev->checkpointBuffer,0,dev->nDataBytesPerChunk);
+               dev->checkpointByteOffset = 0;
+               return yaffs_CheckpointErase(dev);
+
+
+       } else {
+               int i;
+               /* Set to a value that will kick off a read */
+               dev->checkpointByteOffset = dev->nDataBytesPerChunk;
+               /* A checkpoint block list of 1 checkpoint block per 16 block is (hopefully)
+                * going to be way more than we need */
+               dev->blocksInCheckpoint = 0;
+               dev->checkpointMaxBlocks = (dev->internalEndBlock - dev->internalStartBlock)/16 + 2;
+               dev->checkpointBlockList = YMALLOC(sizeof(int) * dev->checkpointMaxBlocks);
+               for(i = 0; i < dev->checkpointMaxBlocks; i++)
+                       dev->checkpointBlockList[i] = -1;
+       }
+
+       return 1;
+}
+
+int yaffs_GetCheckpointSum(yaffs_Device *dev, __u32 *sum)
+{
+       __u32 compositeSum;
+       compositeSum =  (dev->checkpointSum << 8) | (dev->checkpointXor & 0xFF);
+       *sum = compositeSum;
+       return 1;
+}
+
+static int yaffs_CheckpointFlushBuffer(yaffs_Device *dev)
+{
+
+       int chunk;
+       int realignedChunk;
+
+       yaffs_ExtendedTags tags;
+
+       if(dev->checkpointCurrentBlock < 0){
+               yaffs_CheckpointFindNextErasedBlock(dev);
+               dev->checkpointCurrentChunk = 0;
+       }
+
+       if(dev->checkpointCurrentBlock < 0)
+               return 0;
+
+       tags.chunkDeleted = 0;
+       tags.objectId = dev->checkpointNextBlock; /* Hint to next place to look */
+       tags.chunkId = dev->checkpointPageSequence + 1;
+       tags.sequenceNumber =  YAFFS_SEQUENCE_CHECKPOINT_DATA;
+       tags.byteCount = dev->nDataBytesPerChunk;
+       if(dev->checkpointCurrentChunk == 0){
+               /* First chunk we write for the block? Set block state to
+                  checkpoint */
+               yaffs_BlockInfo *bi = yaffs_GetBlockInfo(dev,dev->checkpointCurrentBlock);
+               bi->blockState = YAFFS_BLOCK_STATE_CHECKPOINT;
+               dev->blocksInCheckpoint++;
+       }
+
+       chunk = dev->checkpointCurrentBlock * dev->nChunksPerBlock + dev->checkpointCurrentChunk;
+
+
+       T(YAFFS_TRACE_CHECKPOINT,(TSTR("checkpoint wite buffer nand %d(%d:%d) objid %d chId %d" TENDSTR),
+               chunk, dev->checkpointCurrentBlock, dev->checkpointCurrentChunk,tags.objectId,tags.chunkId));
+
+       realignedChunk = chunk - dev->chunkOffset;
+
+       dev->writeChunkWithTagsToNAND(dev,realignedChunk,dev->checkpointBuffer,&tags);
+       dev->checkpointByteOffset = 0;
+       dev->checkpointPageSequence++;
+       dev->checkpointCurrentChunk++;
+       if(dev->checkpointCurrentChunk >= dev->nChunksPerBlock){
+               dev->checkpointCurrentChunk = 0;
+               dev->checkpointCurrentBlock = -1;
+       }
+       memset(dev->checkpointBuffer,0,dev->nDataBytesPerChunk);
+
+       return 1;
+}
+
+
+int yaffs_CheckpointWrite(yaffs_Device *dev,const void *data, int nBytes)
+{
+       int i=0;
+       int ok = 1;
+
+
+       __u8 * dataBytes = (__u8 *)data;
+
+
+
+       if(!dev->checkpointBuffer)
+               return 0;
+
+       if(!dev->checkpointOpenForWrite)
+               return -1;
+
+       while(i < nBytes && ok) {
+
+
+
+               dev->checkpointBuffer[dev->checkpointByteOffset] = *dataBytes ;
+               dev->checkpointSum += *dataBytes;
+               dev->checkpointXor ^= *dataBytes;
+
+               dev->checkpointByteOffset++;
+               i++;
+               dataBytes++;
+               dev->checkpointByteCount++;
+
+
+               if(dev->checkpointByteOffset < 0 ||
+                  dev->checkpointByteOffset >= dev->nDataBytesPerChunk)
+                       ok = yaffs_CheckpointFlushBuffer(dev);
+
+       }
+
+       return  i;
+}
+
+int yaffs_CheckpointRead(yaffs_Device *dev, void *data, int nBytes)
+{
+       int i=0;
+       int ok = 1;
+       yaffs_ExtendedTags tags;
+
+
+       int chunk;
+       int realignedChunk;
+
+       __u8 *dataBytes = (__u8 *)data;
+
+       if(!dev->checkpointBuffer)
+               return 0;
+
+       if(dev->checkpointOpenForWrite)
+               return -1;
+
+       while(i < nBytes && ok) {
+
+
+               if(dev->checkpointByteOffset < 0 ||
+                  dev->checkpointByteOffset >= dev->nDataBytesPerChunk) {
+
+                       if(dev->checkpointCurrentBlock < 0){
+                               yaffs_CheckpointFindNextCheckpointBlock(dev);
+                               dev->checkpointCurrentChunk = 0;
+                       }
+
+                       if(dev->checkpointCurrentBlock < 0)
+                               ok = 0;
+                       else {
+
+                               chunk = dev->checkpointCurrentBlock * dev->nChunksPerBlock +
+                                         dev->checkpointCurrentChunk;
+
+                               realignedChunk = chunk - dev->chunkOffset;
+
+                               /* read in the next chunk */
+                               /* printf("read checkpoint page %d\n",dev->checkpointPage); */
+                               dev->readChunkWithTagsFromNAND(dev, realignedChunk,
+                                                              dev->checkpointBuffer,
+                                                             &tags);
+
+                               if(tags.chunkId != (dev->checkpointPageSequence + 1) ||
+                                  tags.sequenceNumber != YAFFS_SEQUENCE_CHECKPOINT_DATA)
+                                  ok = 0;
+
+                               dev->checkpointByteOffset = 0;
+                               dev->checkpointPageSequence++;
+                               dev->checkpointCurrentChunk++;
+
+                               if(dev->checkpointCurrentChunk >= dev->nChunksPerBlock)
+                                       dev->checkpointCurrentBlock = -1;
+                       }
+               }
+
+               if(ok){
+                       *dataBytes = dev->checkpointBuffer[dev->checkpointByteOffset];
+                       dev->checkpointSum += *dataBytes;
+                       dev->checkpointXor ^= *dataBytes;
+                       dev->checkpointByteOffset++;
+                       i++;
+                       dataBytes++;
+                       dev->checkpointByteCount++;
+               }
+       }
+
+       return  i;
+}
+
+int yaffs_CheckpointClose(yaffs_Device *dev)
+{
+
+       if(dev->checkpointOpenForWrite){
+               if(dev->checkpointByteOffset != 0)
+                       yaffs_CheckpointFlushBuffer(dev);
+       } else {
+               int i;
+               for(i = 0; i < dev->blocksInCheckpoint && dev->checkpointBlockList[i] >= 0; i++){
+                       yaffs_BlockInfo *bi = yaffs_GetBlockInfo(dev,dev->checkpointBlockList[i]);
+                       if(bi->blockState == YAFFS_BLOCK_STATE_EMPTY)
+                               bi->blockState = YAFFS_BLOCK_STATE_CHECKPOINT;
+                       else {
+                               // Todo this looks odd...
+                       }
+               }
+               YFREE(dev->checkpointBlockList);
+               dev->checkpointBlockList = NULL;
+       }
+
+       dev->nFreeChunks -= dev->blocksInCheckpoint * dev->nChunksPerBlock;
+       dev->nErasedBlocks -= dev->blocksInCheckpoint;
+
+
+       T(YAFFS_TRACE_CHECKPOINT,(TSTR("checkpoint byte count %d" TENDSTR),
+                       dev->checkpointByteCount));
+
+       if(dev->checkpointBuffer){
+               /* free the buffer */
+               YFREE(dev->checkpointBuffer);
+               dev->checkpointBuffer = NULL;
+               return 1;
+       }
+       else
+               return 0;
+
+}
+
+int yaffs_CheckpointInvalidateStream(yaffs_Device *dev)
+{
+       /* Erase the first checksum block */
+
+       T(YAFFS_TRACE_CHECKPOINT,(TSTR("checkpoint invalidate"TENDSTR)));
+
+       if(!yaffs_CheckpointSpaceOk(dev))
+               return 0;
+
+       return yaffs_CheckpointErase(dev);
+}
diff -Naur u-boot-2009.03_orig/fs/yaffs2/yaffs_ecc.c u-boot-2009.03/fs/yaffs2/yaffs_ecc.c
--- u-boot-2009.03_orig/fs/yaffs2/yaffs_ecc.c   2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/fs/yaffs2/yaffs_ecc.c        2009-03-31 14:56:33.017173600 -0700
@@ -1,333 +1,333 @@
-/*
- * YAFFS: Yet Another Flash File System. A NAND-flash specific file system.
- *
- * Copyright (C) 2002-2007 Aleph One Ltd.
- *   for Toby Churchill Ltd and Brightstar Engineering
- *
- * Created by Charles Manning <charles@aleph1.co.uk>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-/*
- * This code implements the ECC algorithm used in SmartMedia.
- *
- * The ECC comprises 22 bits of parity information and is stuffed into 3 bytes.
- * The two unused bit are set to 1.
- * The ECC can correct single bit errors in a 256-byte page of data. Thus, two such ECC
- * blocks are used on a 512-byte NAND page.
- *
- */
-
-/* Table generated by gen-ecc.c
- * Using a table means we do not have to calculate p1..p4 and p1'..p4'
- * for each byte of data. These are instead provided in a table in bits7..2.
- * Bit 0 of each entry indicates whether the entry has an odd or even parity, and therefore
- * this bytes influence on the line parity.
- */
-
-/* XXX U-BOOT XXX */
-#include <common.h>
-
-const char *yaffs_ecc_c_version =
-    "$Id: yaffs_ecc.c,v 1.9 2007/02/14 01:09:06 wookey Exp $";
-
-#include "yportenv.h"
-
-#include "yaffs_ecc.h"
-
-static const unsigned char column_parity_table[] = {
-       0x00, 0x55, 0x59, 0x0c, 0x65, 0x30, 0x3c, 0x69,
-       0x69, 0x3c, 0x30, 0x65, 0x0c, 0x59, 0x55, 0x00,
-       0x95, 0xc0, 0xcc, 0x99, 0xf0, 0xa5, 0xa9, 0xfc,
-       0xfc, 0xa9, 0xa5, 0xf0, 0x99, 0xcc, 0xc0, 0x95,
-       0x99, 0xcc, 0xc0, 0x95, 0xfc, 0xa9, 0xa5, 0xf0,
-       0xf0, 0xa5, 0xa9, 0xfc, 0x95, 0xc0, 0xcc, 0x99,
-       0x0c, 0x59, 0x55, 0x00, 0x69, 0x3c, 0x30, 0x65,
-       0x65, 0x30, 0x3c, 0x69, 0x00, 0x55, 0x59, 0x0c,
-       0xa5, 0xf0, 0xfc, 0xa9, 0xc0, 0x95, 0x99, 0xcc,
-       0xcc, 0x99, 0x95, 0xc0, 0xa9, 0xfc, 0xf0, 0xa5,
-       0x30, 0x65, 0x69, 0x3c, 0x55, 0x00, 0x0c, 0x59,
-       0x59, 0x0c, 0x00, 0x55, 0x3c, 0x69, 0x65, 0x30,
-       0x3c, 0x69, 0x65, 0x30, 0x59, 0x0c, 0x00, 0x55,
-       0x55, 0x00, 0x0c, 0x59, 0x30, 0x65, 0x69, 0x3c,
-       0xa9, 0xfc, 0xf0, 0xa5, 0xcc, 0x99, 0x95, 0xc0,
-       0xc0, 0x95, 0x99, 0xcc, 0xa5, 0xf0, 0xfc, 0xa9,
-       0xa9, 0xfc, 0xf0, 0xa5, 0xcc, 0x99, 0x95, 0xc0,
-       0xc0, 0x95, 0x99, 0xcc, 0xa5, 0xf0, 0xfc, 0xa9,
-       0x3c, 0x69, 0x65, 0x30, 0x59, 0x0c, 0x00, 0x55,
-       0x55, 0x00, 0x0c, 0x59, 0x30, 0x65, 0x69, 0x3c,
-       0x30, 0x65, 0x69, 0x3c, 0x55, 0x00, 0x0c, 0x59,
-       0x59, 0x0c, 0x00, 0x55, 0x3c, 0x69, 0x65, 0x30,
-       0xa5, 0xf0, 0xfc, 0xa9, 0xc0, 0x95, 0x99, 0xcc,
-       0xcc, 0x99, 0x95, 0xc0, 0xa9, 0xfc, 0xf0, 0xa5,
-       0x0c, 0x59, 0x55, 0x00, 0x69, 0x3c, 0x30, 0x65,
-       0x65, 0x30, 0x3c, 0x69, 0x00, 0x55, 0x59, 0x0c,
-       0x99, 0xcc, 0xc0, 0x95, 0xfc, 0xa9, 0xa5, 0xf0,
-       0xf0, 0xa5, 0xa9, 0xfc, 0x95, 0xc0, 0xcc, 0x99,
-       0x95, 0xc0, 0xcc, 0x99, 0xf0, 0xa5, 0xa9, 0xfc,
-       0xfc, 0xa9, 0xa5, 0xf0, 0x99, 0xcc, 0xc0, 0x95,
-       0x00, 0x55, 0x59, 0x0c, 0x65, 0x30, 0x3c, 0x69,
-       0x69, 0x3c, 0x30, 0x65, 0x0c, 0x59, 0x55, 0x00,
-};
-
-/* Count the bits in an unsigned char or a U32 */
-
-static int yaffs_CountBits(unsigned char x)
-{
-       int r = 0;
-       while (x) {
-               if (x & 1)
-                       r++;
-               x >>= 1;
-       }
-       return r;
-}
-
-static int yaffs_CountBits32(unsigned x)
-{
-       int r = 0;
-       while (x) {
-               if (x & 1)
-                       r++;
-               x >>= 1;
-       }
-       return r;
-}
-
-/* Calculate the ECC for a 256-byte block of data */
-void yaffs_ECCCalculate(const unsigned char *data, unsigned char *ecc)
-{
-       unsigned int i;
-
-       unsigned char col_parity = 0;
-       unsigned char line_parity = 0;
-       unsigned char line_parity_prime = 0;
-       unsigned char t;
-       unsigned char b;
-
-       for (i = 0; i < 256; i++) {
-               b = column_parity_table[*data++];
-               col_parity ^= b;
-
-               if (b & 0x01)   // odd number of bits in the byte
-               {
-                       line_parity ^= i;
-                       line_parity_prime ^= ~i;
-               }
-
-       }
-
-       ecc[2] = (~col_parity) | 0x03;
-
-       t = 0;
-       if (line_parity & 0x80)
-               t |= 0x80;
-       if (line_parity_prime & 0x80)
-               t |= 0x40;
-       if (line_parity & 0x40)
-               t |= 0x20;
-       if (line_parity_prime & 0x40)
-               t |= 0x10;
-       if (line_parity & 0x20)
-               t |= 0x08;
-       if (line_parity_prime & 0x20)
-               t |= 0x04;
-       if (line_parity & 0x10)
-               t |= 0x02;
-       if (line_parity_prime & 0x10)
-               t |= 0x01;
-       ecc[1] = ~t;
-
-       t = 0;
-       if (line_parity & 0x08)
-               t |= 0x80;
-       if (line_parity_prime & 0x08)
-               t |= 0x40;
-       if (line_parity & 0x04)
-               t |= 0x20;
-       if (line_parity_prime & 0x04)
-               t |= 0x10;
-       if (line_parity & 0x02)
-               t |= 0x08;
-       if (line_parity_prime & 0x02)
-               t |= 0x04;
-       if (line_parity & 0x01)
-               t |= 0x02;
-       if (line_parity_prime & 0x01)
-               t |= 0x01;
-       ecc[0] = ~t;
-
-#ifdef CONFIG_YAFFS_ECC_WRONG_ORDER
-       // Swap the bytes into the wrong order
-       t = ecc[0];
-       ecc[0] = ecc[1];
-       ecc[1] = t;
-#endif
-}
-
-
-/* Correct the ECC on a 256 byte block of data */
-
-int yaffs_ECCCorrect(unsigned char *data, unsigned char *read_ecc,
-                    const unsigned char *test_ecc)
-{
-       unsigned char d0, d1, d2;       /* deltas */
-
-       d0 = read_ecc[0] ^ test_ecc[0];
-       d1 = read_ecc[1] ^ test_ecc[1];
-       d2 = read_ecc[2] ^ test_ecc[2];
-
-       if ((d0 | d1 | d2) == 0)
-               return 0; /* no error */
-
-       if (((d0 ^ (d0 >> 1)) & 0x55) == 0x55 &&
-           ((d1 ^ (d1 >> 1)) & 0x55) == 0x55 &&
-           ((d2 ^ (d2 >> 1)) & 0x54) == 0x54) {
-               /* Single bit (recoverable) error in data */
-
-               unsigned byte;
-               unsigned bit;
-
-#ifdef CONFIG_YAFFS_ECC_WRONG_ORDER
-               // swap the bytes to correct for the wrong order
-               unsigned char t;
-
-               t = d0;
-               d0 = d1;
-               d1 = t;
-#endif
-
-               bit = byte = 0;
-
-               if (d1 & 0x80)
-                       byte |= 0x80;
-               if (d1 & 0x20)
-                       byte |= 0x40;
-               if (d1 & 0x08)
-                       byte |= 0x20;
-               if (d1 & 0x02)
-                       byte |= 0x10;
-               if (d0 & 0x80)
-                       byte |= 0x08;
-               if (d0 & 0x20)
-                       byte |= 0x04;
-               if (d0 & 0x08)
-                       byte |= 0x02;
-               if (d0 & 0x02)
-                       byte |= 0x01;
-
-               if (d2 & 0x80)
-                       bit |= 0x04;
-               if (d2 & 0x20)
-                       bit |= 0x02;
-               if (d2 & 0x08)
-                       bit |= 0x01;
-
-               data[byte] ^= (1 << bit);
-
-               return 1; /* Corrected the error */
-       }
-
-       if ((yaffs_CountBits(d0) +
-            yaffs_CountBits(d1) +
-            yaffs_CountBits(d2)) ==  1) {
-               /* Reccoverable error in ecc */
-
-               read_ecc[0] = test_ecc[0];
-               read_ecc[1] = test_ecc[1];
-               read_ecc[2] = test_ecc[2];
-
-               return 1; /* Corrected the error */
-       }
-
-       /* Unrecoverable error */
-
-       return -1;
-
-}
-
-
-/*
- * ECCxxxOther does ECC calcs on arbitrary n bytes of data
- */
-void yaffs_ECCCalculateOther(const unsigned char *data, unsigned nBytes,
-                            yaffs_ECCOther * eccOther)
-{
-       unsigned int i;
-
-       unsigned char col_parity = 0;
-       unsigned line_parity = 0;
-       unsigned line_parity_prime = 0;
-       unsigned char b;
-
-       for (i = 0; i < nBytes; i++) {
-               b = column_parity_table[*data++];
-               col_parity ^= b;
-
-               if (b & 0x01)    {
-                       /* odd number of bits in the byte */
-                       line_parity ^= i;
-                       line_parity_prime ^= ~i;
-               }
-
-       }
-
-       eccOther->colParity = (col_parity >> 2) & 0x3f;
-       eccOther->lineParity = line_parity;
-       eccOther->lineParityPrime = line_parity_prime;
-}
-
-int yaffs_ECCCorrectOther(unsigned char *data, unsigned nBytes,
-                         yaffs_ECCOther * read_ecc,
-                         const yaffs_ECCOther * test_ecc)
-{
-       unsigned char cDelta;   /* column parity delta */
-       unsigned lDelta;        /* line parity delta */
-       unsigned lDeltaPrime;   /* line parity delta */
-       unsigned bit;
-
-       cDelta = read_ecc->colParity ^ test_ecc->colParity;
-       lDelta = read_ecc->lineParity ^ test_ecc->lineParity;
-       lDeltaPrime = read_ecc->lineParityPrime ^ test_ecc->lineParityPrime;
-
-       if ((cDelta | lDelta | lDeltaPrime) == 0)
-               return 0; /* no error */
-
-       if (lDelta == ~lDeltaPrime &&
-           (((cDelta ^ (cDelta >> 1)) & 0x15) == 0x15))
-       {
-               /* Single bit (recoverable) error in data */
-
-               bit = 0;
-
-               if (cDelta & 0x20)
-                       bit |= 0x04;
-               if (cDelta & 0x08)
-                       bit |= 0x02;
-               if (cDelta & 0x02)
-                       bit |= 0x01;
-
-               if(lDelta >= nBytes)
-                       return -1;
-
-               data[lDelta] ^= (1 << bit);
-
-               return 1; /* corrected */
-       }
-
-       if ((yaffs_CountBits32(lDelta) + yaffs_CountBits32(lDeltaPrime) +
-            yaffs_CountBits(cDelta)) == 1) {
-               /* Reccoverable error in ecc */
-
-               *read_ecc = *test_ecc;
-               return 1; /* corrected */
-       }
-
-       /* Unrecoverable error */
-
-       return -1;
-
-}
+/*
+ * YAFFS: Yet Another Flash File System. A NAND-flash specific file system.
+ *
+ * Copyright (C) 2002-2007 Aleph One Ltd.
+ *   for Toby Churchill Ltd and Brightstar Engineering
+ *
+ * Created by Charles Manning <charles@aleph1.co.uk>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+/*
+ * This code implements the ECC algorithm used in SmartMedia.
+ *
+ * The ECC comprises 22 bits of parity information and is stuffed into 3 bytes.
+ * The two unused bit are set to 1.
+ * The ECC can correct single bit errors in a 256-byte page of data. Thus, two such ECC
+ * blocks are used on a 512-byte NAND page.
+ *
+ */
+
+/* Table generated by gen-ecc.c
+ * Using a table means we do not have to calculate p1..p4 and p1'..p4'
+ * for each byte of data. These are instead provided in a table in bits7..2.
+ * Bit 0 of each entry indicates whether the entry has an odd or even parity, and therefore
+ * this bytes influence on the line parity.
+ */
+
+/* XXX U-BOOT XXX */
+#include <common.h>
+
+const char *yaffs_ecc_c_version =
+    "$Id: yaffs_ecc.c,v 1.1.1.1 2009/03/25 22:22:12 kenagy Exp $";
+
+#include "yportenv.h"
+
+#include "yaffs_ecc.h"
+
+static const unsigned char column_parity_table[] = {
+       0x00, 0x55, 0x59, 0x0c, 0x65, 0x30, 0x3c, 0x69,
+       0x69, 0x3c, 0x30, 0x65, 0x0c, 0x59, 0x55, 0x00,
+       0x95, 0xc0, 0xcc, 0x99, 0xf0, 0xa5, 0xa9, 0xfc,
+       0xfc, 0xa9, 0xa5, 0xf0, 0x99, 0xcc, 0xc0, 0x95,
+       0x99, 0xcc, 0xc0, 0x95, 0xfc, 0xa9, 0xa5, 0xf0,
+       0xf0, 0xa5, 0xa9, 0xfc, 0x95, 0xc0, 0xcc, 0x99,
+       0x0c, 0x59, 0x55, 0x00, 0x69, 0x3c, 0x30, 0x65,
+       0x65, 0x30, 0x3c, 0x69, 0x00, 0x55, 0x59, 0x0c,
+       0xa5, 0xf0, 0xfc, 0xa9, 0xc0, 0x95, 0x99, 0xcc,
+       0xcc, 0x99, 0x95, 0xc0, 0xa9, 0xfc, 0xf0, 0xa5,
+       0x30, 0x65, 0x69, 0x3c, 0x55, 0x00, 0x0c, 0x59,
+       0x59, 0x0c, 0x00, 0x55, 0x3c, 0x69, 0x65, 0x30,
+       0x3c, 0x69, 0x65, 0x30, 0x59, 0x0c, 0x00, 0x55,
+       0x55, 0x00, 0x0c, 0x59, 0x30, 0x65, 0x69, 0x3c,
+       0xa9, 0xfc, 0xf0, 0xa5, 0xcc, 0x99, 0x95, 0xc0,
+       0xc0, 0x95, 0x99, 0xcc, 0xa5, 0xf0, 0xfc, 0xa9,
+       0xa9, 0xfc, 0xf0, 0xa5, 0xcc, 0x99, 0x95, 0xc0,
+       0xc0, 0x95, 0x99, 0xcc, 0xa5, 0xf0, 0xfc, 0xa9,
+       0x3c, 0x69, 0x65, 0x30, 0x59, 0x0c, 0x00, 0x55,
+       0x55, 0x00, 0x0c, 0x59, 0x30, 0x65, 0x69, 0x3c,
+       0x30, 0x65, 0x69, 0x3c, 0x55, 0x00, 0x0c, 0x59,
+       0x59, 0x0c, 0x00, 0x55, 0x3c, 0x69, 0x65, 0x30,
+       0xa5, 0xf0, 0xfc, 0xa9, 0xc0, 0x95, 0x99, 0xcc,
+       0xcc, 0x99, 0x95, 0xc0, 0xa9, 0xfc, 0xf0, 0xa5,
+       0x0c, 0x59, 0x55, 0x00, 0x69, 0x3c, 0x30, 0x65,
+       0x65, 0x30, 0x3c, 0x69, 0x00, 0x55, 0x59, 0x0c,
+       0x99, 0xcc, 0xc0, 0x95, 0xfc, 0xa9, 0xa5, 0xf0,
+       0xf0, 0xa5, 0xa9, 0xfc, 0x95, 0xc0, 0xcc, 0x99,
+       0x95, 0xc0, 0xcc, 0x99, 0xf0, 0xa5, 0xa9, 0xfc,
+       0xfc, 0xa9, 0xa5, 0xf0, 0x99, 0xcc, 0xc0, 0x95,
+       0x00, 0x55, 0x59, 0x0c, 0x65, 0x30, 0x3c, 0x69,
+       0x69, 0x3c, 0x30, 0x65, 0x0c, 0x59, 0x55, 0x00,
+};
+
+/* Count the bits in an unsigned char or a U32 */
+
+static int yaffs_CountBits(unsigned char x)
+{
+       int r = 0;
+       while (x) {
+               if (x & 1)
+                       r++;
+               x >>= 1;
+       }
+       return r;
+}
+
+static int yaffs_CountBits32(unsigned x)
+{
+       int r = 0;
+       while (x) {
+               if (x & 1)
+                       r++;
+               x >>= 1;
+       }
+       return r;
+}
+
+/* Calculate the ECC for a 256-byte block of data */
+void yaffs_ECCCalculate(const unsigned char *data, unsigned char *ecc)
+{
+       unsigned int i;
+
+       unsigned char col_parity = 0;
+       unsigned char line_parity = 0;
+       unsigned char line_parity_prime = 0;
+       unsigned char t;
+       unsigned char b;
+
+       for (i = 0; i < 256; i++) {
+               b = column_parity_table[*data++];
+               col_parity ^= b;
+
+               if (b & 0x01)   // odd number of bits in the byte
+               {
+                       line_parity ^= i;
+                       line_parity_prime ^= ~i;
+               }
+
+       }
+
+       ecc[2] = (~col_parity) | 0x03;
+
+       t = 0;
+       if (line_parity & 0x80)
+               t |= 0x80;
+       if (line_parity_prime & 0x80)
+               t |= 0x40;
+       if (line_parity & 0x40)
+               t |= 0x20;
+       if (line_parity_prime & 0x40)
+               t |= 0x10;
+       if (line_parity & 0x20)
+               t |= 0x08;
+       if (line_parity_prime & 0x20)
+               t |= 0x04;
+       if (line_parity & 0x10)
+               t |= 0x02;
+       if (line_parity_prime & 0x10)
+               t |= 0x01;
+       ecc[1] = ~t;
+
+       t = 0;
+       if (line_parity & 0x08)
+               t |= 0x80;
+       if (line_parity_prime & 0x08)
+               t |= 0x40;
+       if (line_parity & 0x04)
+               t |= 0x20;
+       if (line_parity_prime & 0x04)
+               t |= 0x10;
+       if (line_parity & 0x02)
+               t |= 0x08;
+       if (line_parity_prime & 0x02)
+               t |= 0x04;
+       if (line_parity & 0x01)
+               t |= 0x02;
+       if (line_parity_prime & 0x01)
+               t |= 0x01;
+       ecc[0] = ~t;
+
+#ifdef CONFIG_YAFFS_ECC_WRONG_ORDER
+       // Swap the bytes into the wrong order
+       t = ecc[0];
+       ecc[0] = ecc[1];
+       ecc[1] = t;
+#endif
+}
+
+
+/* Correct the ECC on a 256 byte block of data */
+
+int yaffs_ECCCorrect(unsigned char *data, unsigned char *read_ecc,
+                    const unsigned char *test_ecc)
+{
+       unsigned char d0, d1, d2;       /* deltas */
+
+       d0 = read_ecc[0] ^ test_ecc[0];
+       d1 = read_ecc[1] ^ test_ecc[1];
+       d2 = read_ecc[2] ^ test_ecc[2];
+
+       if ((d0 | d1 | d2) == 0)
+               return 0; /* no error */
+
+       if (((d0 ^ (d0 >> 1)) & 0x55) == 0x55 &&
+           ((d1 ^ (d1 >> 1)) & 0x55) == 0x55 &&
+           ((d2 ^ (d2 >> 1)) & 0x54) == 0x54) {
+               /* Single bit (recoverable) error in data */
+
+               unsigned byte;
+               unsigned bit;
+
+#ifdef CONFIG_YAFFS_ECC_WRONG_ORDER
+               // swap the bytes to correct for the wrong order
+               unsigned char t;
+
+               t = d0;
+               d0 = d1;
+               d1 = t;
+#endif
+
+               bit = byte = 0;
+
+               if (d1 & 0x80)
+                       byte |= 0x80;
+               if (d1 & 0x20)
+                       byte |= 0x40;
+               if (d1 & 0x08)
+                       byte |= 0x20;
+               if (d1 & 0x02)
+                       byte |= 0x10;
+               if (d0 & 0x80)
+                       byte |= 0x08;
+               if (d0 & 0x20)
+                       byte |= 0x04;
+               if (d0 & 0x08)
+                       byte |= 0x02;
+               if (d0 & 0x02)
+                       byte |= 0x01;
+
+               if (d2 & 0x80)
+                       bit |= 0x04;
+               if (d2 & 0x20)
+                       bit |= 0x02;
+               if (d2 & 0x08)
+                       bit |= 0x01;
+
+               data[byte] ^= (1 << bit);
+
+               return 1; /* Corrected the error */
+       }
+
+       if ((yaffs_CountBits(d0) +
+            yaffs_CountBits(d1) +
+            yaffs_CountBits(d2)) ==  1) {
+               /* Reccoverable error in ecc */
+
+               read_ecc[0] = test_ecc[0];
+               read_ecc[1] = test_ecc[1];
+               read_ecc[2] = test_ecc[2];
+
+               return 1; /* Corrected the error */
+       }
+
+       /* Unrecoverable error */
+
+       return -1;
+
+}
+
+
+/*
+ * ECCxxxOther does ECC calcs on arbitrary n bytes of data
+ */
+void yaffs_ECCCalculateOther(const unsigned char *data, unsigned nBytes,
+                            yaffs_ECCOther * eccOther)
+{
+       unsigned int i;
+
+       unsigned char col_parity = 0;
+       unsigned line_parity = 0;
+       unsigned line_parity_prime = 0;
+       unsigned char b;
+
+       for (i = 0; i < nBytes; i++) {
+               b = column_parity_table[*data++];
+               col_parity ^= b;
+
+               if (b & 0x01)    {
+                       /* odd number of bits in the byte */
+                       line_parity ^= i;
+                       line_parity_prime ^= ~i;
+               }
+
+       }
+
+       eccOther->colParity = (col_parity >> 2) & 0x3f;
+       eccOther->lineParity = line_parity;
+       eccOther->lineParityPrime = line_parity_prime;
+}
+
+int yaffs_ECCCorrectOther(unsigned char *data, unsigned nBytes,
+                         yaffs_ECCOther * read_ecc,
+                         const yaffs_ECCOther * test_ecc)
+{
+       unsigned char cDelta;   /* column parity delta */
+       unsigned lDelta;        /* line parity delta */
+       unsigned lDeltaPrime;   /* line parity delta */
+       unsigned bit;
+
+       cDelta = read_ecc->colParity ^ test_ecc->colParity;
+       lDelta = read_ecc->lineParity ^ test_ecc->lineParity;
+       lDeltaPrime = read_ecc->lineParityPrime ^ test_ecc->lineParityPrime;
+
+       if ((cDelta | lDelta | lDeltaPrime) == 0)
+               return 0; /* no error */
+
+       if (lDelta == ~lDeltaPrime &&
+           (((cDelta ^ (cDelta >> 1)) & 0x15) == 0x15))
+       {
+               /* Single bit (recoverable) error in data */
+
+               bit = 0;
+
+               if (cDelta & 0x20)
+                       bit |= 0x04;
+               if (cDelta & 0x08)
+                       bit |= 0x02;
+               if (cDelta & 0x02)
+                       bit |= 0x01;
+
+               if(lDelta >= nBytes)
+                       return -1;
+
+               data[lDelta] ^= (1 << bit);
+
+               return 1; /* corrected */
+       }
+
+       if ((yaffs_CountBits32(lDelta) + yaffs_CountBits32(lDeltaPrime) +
+            yaffs_CountBits(cDelta)) == 1) {
+               /* Reccoverable error in ecc */
+
+               *read_ecc = *test_ecc;
+               return 1; /* corrected */
+       }
+
+       /* Unrecoverable error */
+
+       return -1;
+
+}
diff -Naur u-boot-2009.03_orig/fs/yaffs2/yaffs_guts.c u-boot-2009.03/fs/yaffs2/yaffs_guts.c
--- u-boot-2009.03_orig/fs/yaffs2/yaffs_guts.c  2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/fs/yaffs2/yaffs_guts.c       2009-03-31 14:56:33.064048000 -0700
@@ -1,7491 +1,7491 @@
-/*
- * YAFFS: Yet Another Flash File System. A NAND-flash specific file system.
- *
- * Copyright (C) 2002-2007 Aleph One Ltd.
- *   for Toby Churchill Ltd and Brightstar Engineering
- *
- * Created by Charles Manning <charles@aleph1.co.uk>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-/* XXX U-BOOT XXX */
-#include <common.h>
-
-const char *yaffs_guts_c_version =
-    "$Id: yaffs_guts.c,v 1.52 2007/10/16 00:45:05 charles Exp $";
-
-#include "yportenv.h"
-#include "linux/stat.h"
-
-#include "yaffsinterface.h"
-#include "yaffsfs.h"
-#include "yaffs_guts.h"
-#include "yaffs_tagsvalidity.h"
-
-#include "yaffs_tagscompat.h"
-#ifndef  CONFIG_YAFFS_USE_OWN_SORT
-#include "yaffs_qsort.h"
-#endif
-#include "yaffs_nand.h"
-
-#include "yaffs_checkptrw.h"
-
-#include "yaffs_nand.h"
-#include "yaffs_packedtags2.h"
-
-#include "malloc.h"
-
-#ifdef CONFIG_YAFFS_WINCE
-void yfsd_LockYAFFS(BOOL fsLockOnly);
-void yfsd_UnlockYAFFS(BOOL fsLockOnly);
-#endif
-
-#define YAFFS_PASSIVE_GC_CHUNKS 2
-
-#include "yaffs_ecc.h"
-
-
-/* Robustification (if it ever comes about...) */
-static void yaffs_RetireBlock(yaffs_Device * dev, int blockInNAND);
-static void yaffs_HandleWriteChunkError(yaffs_Device * dev, int chunkInNAND, int erasedOk);
-static void yaffs_HandleWriteChunkOk(yaffs_Device * dev, int chunkInNAND,
-                                    const __u8 * data,
-                                    const yaffs_ExtendedTags * tags);
-static void yaffs_HandleUpdateChunk(yaffs_Device * dev, int chunkInNAND,
-                                   const yaffs_ExtendedTags * tags);
-
-/* Other local prototypes */
-static int yaffs_UnlinkObject( yaffs_Object *obj);
-static int yaffs_ObjectHasCachedWriteData(yaffs_Object *obj);
-
-static void yaffs_HardlinkFixup(yaffs_Device *dev, yaffs_Object *hardList);
-
-static int yaffs_WriteNewChunkWithTagsToNAND(yaffs_Device * dev,
-                                            const __u8 * buffer,
-                                            yaffs_ExtendedTags * tags,
-                                            int useReserve);
-static int yaffs_PutChunkIntoFile(yaffs_Object * in, int chunkInInode,
-                                 int chunkInNAND, int inScan);
-
-static yaffs_Object *yaffs_CreateNewObject(yaffs_Device * dev, int number,
-                                          yaffs_ObjectType type);
-static void yaffs_AddObjectToDirectory(yaffs_Object * directory,
-                                      yaffs_Object * obj);
-static int yaffs_UpdateObjectHeader(yaffs_Object * in, const YCHAR * name,
-                                   int force, int isShrink, int shadows);
-static void yaffs_RemoveObjectFromDirectory(yaffs_Object * obj);
-static int yaffs_CheckStructures(void);
-static int yaffs_DeleteWorker(yaffs_Object * in, yaffs_Tnode * tn, __u32 level,
-                             int chunkOffset, int *limit);
-static int yaffs_DoGenericObjectDeletion(yaffs_Object * in);
-
-static yaffs_BlockInfo *yaffs_GetBlockInfo(yaffs_Device * dev, int blockNo);
-
-static __u8 *yaffs_GetTempBuffer(yaffs_Device * dev, int lineNo);
-static void yaffs_ReleaseTempBuffer(yaffs_Device * dev, __u8 * buffer,
-                                   int lineNo);
-
-static int yaffs_CheckChunkErased(struct yaffs_DeviceStruct *dev,
-                                 int chunkInNAND);
-
-static int yaffs_UnlinkWorker(yaffs_Object * obj);
-static void yaffs_DestroyObject(yaffs_Object * obj);
-
-static int yaffs_TagsMatch(const yaffs_ExtendedTags * tags, int objectId,
-                          int chunkInObject);
-
-loff_t yaffs_GetFileSize(yaffs_Object * obj);
-
-static int yaffs_AllocateChunk(yaffs_Device * dev, int useReserve, yaffs_BlockInfo **blockUsedPtr);
-
-static void yaffs_VerifyFreeChunks(yaffs_Device * dev);
-
-static void yaffs_CheckObjectDetailsLoaded(yaffs_Object *in);
-
-#ifdef YAFFS_PARANOID
-static int yaffs_CheckFileSanity(yaffs_Object * in);
-#else
-#define yaffs_CheckFileSanity(in)
-#endif
-
-static void yaffs_InvalidateWholeChunkCache(yaffs_Object * in);
-static void yaffs_InvalidateChunkCache(yaffs_Object * object, int chunkId);
-
-static void yaffs_InvalidateCheckpoint(yaffs_Device *dev);
-
-static int yaffs_FindChunkInFile(yaffs_Object * in, int chunkInInode,
-                                yaffs_ExtendedTags * tags);
-
-static __u32 yaffs_GetChunkGroupBase(yaffs_Device *dev, yaffs_Tnode *tn, unsigned pos);
-static yaffs_Tnode *yaffs_FindLevel0Tnode(yaffs_Device * dev,
-                                         yaffs_FileStructure * fStruct,
-                                         __u32 chunkId);
-
-
-/* Function to calculate chunk and offset */
-
-static void yaffs_AddrToChunk(yaffs_Device *dev, loff_t addr, __u32 *chunk, __u32 *offset)
-{
-       if(dev->chunkShift){
-               /* Easy-peasy power of 2 case */
-               *chunk  = (__u32)(addr >> dev->chunkShift);
-               *offset = (__u32)(addr & dev->chunkMask);
-       }
-       else if(dev->crumbsPerChunk)
-       {
-               /* Case where we're using "crumbs" */
-               *offset = (__u32)(addr & dev->crumbMask);
-               addr >>= dev->crumbShift;
-               *chunk = ((__u32)addr)/dev->crumbsPerChunk;
-               *offset += ((addr - (*chunk * dev->crumbsPerChunk)) << dev->crumbShift);
-       }
-       else
-               YBUG();
-}
-
-/* Function to return the number of shifts for a power of 2 greater than or equal
- * to the given number
- * Note we don't try to cater for all possible numbers and this does not have to
- * be hellishly efficient.
- */
-
-static __u32 ShiftsGE(__u32 x)
-{
-       int extraBits;
-       int nShifts;
-
-       nShifts = extraBits = 0;
-
-       while(x>1){
-               if(x & 1) extraBits++;
-               x>>=1;
-               nShifts++;
-       }
-
-       if(extraBits)
-               nShifts++;
-
-       return nShifts;
-}
-
-/* Function to return the number of shifts to get a 1 in bit 0
- */
-
-static __u32 ShiftDiv(__u32 x)
-{
-       int nShifts;
-
-       nShifts =  0;
-
-       if(!x) return 0;
-
-       while( !(x&1)){
-               x>>=1;
-               nShifts++;
-       }
-
-       return nShifts;
-}
-
-
-
-/*
- * Temporary buffer manipulations.
- */
-
-static int yaffs_InitialiseTempBuffers(yaffs_Device *dev)
-{
-       int i;
-       __u8 *buf = (__u8 *)1;
-
-       memset(dev->tempBuffer,0,sizeof(dev->tempBuffer));
-
-       for (i = 0; buf && i < YAFFS_N_TEMP_BUFFERS; i++) {
-               dev->tempBuffer[i].line = 0;    /* not in use */
-               dev->tempBuffer[i].buffer = buf =
-                   YMALLOC_DMA(dev->nDataBytesPerChunk);
-       }
-
-       return buf ? YAFFS_OK : YAFFS_FAIL;
-
-}
-
-static __u8 *yaffs_GetTempBuffer(yaffs_Device * dev, int lineNo)
-{
-       int i, j;
-       for (i = 0; i < YAFFS_N_TEMP_BUFFERS; i++) {
-               if (dev->tempBuffer[i].line == 0) {
-                       dev->tempBuffer[i].line = lineNo;
-                       if ((i + 1) > dev->maxTemp) {
-                               dev->maxTemp = i + 1;
-                               for (j = 0; j <= i; j++)
-                                       dev->tempBuffer[j].maxLine =
-                                           dev->tempBuffer[j].line;
-                       }
-
-                       return dev->tempBuffer[i].buffer;
-               }
-       }
-
-       T(YAFFS_TRACE_BUFFERS,
-         (TSTR("Out of temp buffers at line %d, other held by lines:"),
-          lineNo));
-       for (i = 0; i < YAFFS_N_TEMP_BUFFERS; i++) {
-               T(YAFFS_TRACE_BUFFERS, (TSTR(" %d "), dev->tempBuffer[i].line));
-       }
-       T(YAFFS_TRACE_BUFFERS, (TSTR(" " TENDSTR)));
-
-       /*
-        * If we got here then we have to allocate an unmanaged one
-        * This is not good.
-        */
-
-       dev->unmanagedTempAllocations++;
-       return YMALLOC(dev->nDataBytesPerChunk);
-
-}
-
-static void yaffs_ReleaseTempBuffer(yaffs_Device * dev, __u8 * buffer,
-                                   int lineNo)
-{
-       int i;
-       for (i = 0; i < YAFFS_N_TEMP_BUFFERS; i++) {
-               if (dev->tempBuffer[i].buffer == buffer) {
-                       dev->tempBuffer[i].line = 0;
-                       return;
-               }
-       }
-
-       if (buffer) {
-               /* assume it is an unmanaged one. */
-               T(YAFFS_TRACE_BUFFERS,
-                 (TSTR("Releasing unmanaged temp buffer in line %d" TENDSTR),
-                  lineNo));
-               YFREE(buffer);
-               dev->unmanagedTempDeallocations++;
-       }
-
-}
-
-/*
- * Determine if we have a managed buffer.
- */
-int yaffs_IsManagedTempBuffer(yaffs_Device * dev, const __u8 * buffer)
-{
-       int i;
-       for (i = 0; i < YAFFS_N_TEMP_BUFFERS; i++) {
-               if (dev->tempBuffer[i].buffer == buffer)
-                       return 1;
-
-       }
-
-    for (i = 0; i < dev->nShortOpCaches; i++) {
-       if( dev->srCache[i].data == buffer )
-           return 1;
-
-    }
-
-    if (buffer == dev->checkpointBuffer)
-      return 1;
-
-    T(YAFFS_TRACE_ALWAYS,
-         (TSTR("yaffs: unmaged buffer detected.\n" TENDSTR)));
-    return 0;
-}
-
-
-
-/*
- * Chunk bitmap manipulations
- */
-
-static Y_INLINE __u8 *yaffs_BlockBits(yaffs_Device * dev, int blk)
-{
-       if (blk < dev->internalStartBlock || blk > dev->internalEndBlock) {
-               T(YAFFS_TRACE_ERROR,
-                 (TSTR("**>> yaffs: BlockBits block %d is not valid" TENDSTR),
-                  blk));
-               YBUG();
-       }
-       return dev->chunkBits +
-           (dev->chunkBitmapStride * (blk - dev->internalStartBlock));
-}
-
-static Y_INLINE void yaffs_VerifyChunkBitId(yaffs_Device *dev, int blk, int chunk)
-{
-       if(blk < dev->internalStartBlock || blk > dev->internalEndBlock ||
-          chunk < 0 || chunk >= dev->nChunksPerBlock) {
-          T(YAFFS_TRACE_ERROR,
-           (TSTR("**>> yaffs: Chunk Id (%d:%d) invalid"TENDSTR),blk,chunk));
-           YBUG();
-       }
-}
-
-static Y_INLINE void yaffs_ClearChunkBits(yaffs_Device * dev, int blk)
-{
-       __u8 *blkBits = yaffs_BlockBits(dev, blk);
-
-       memset(blkBits, 0, dev->chunkBitmapStride);
-}
-
-static Y_INLINE void yaffs_ClearChunkBit(yaffs_Device * dev, int blk, int chunk)
-{
-       __u8 *blkBits = yaffs_BlockBits(dev, blk);
-
-       yaffs_VerifyChunkBitId(dev,blk,chunk);
-
-       blkBits[chunk / 8] &= ~(1 << (chunk & 7));
-}
-
-static Y_INLINE void yaffs_SetChunkBit(yaffs_Device * dev, int blk, int chunk)
-{
-       __u8 *blkBits = yaffs_BlockBits(dev, blk);
-
-       yaffs_VerifyChunkBitId(dev,blk,chunk);
-
-       blkBits[chunk / 8] |= (1 << (chunk & 7));
-}
-
-static Y_INLINE int yaffs_CheckChunkBit(yaffs_Device * dev, int blk, int chunk)
-{
-       __u8 *blkBits = yaffs_BlockBits(dev, blk);
-       yaffs_VerifyChunkBitId(dev,blk,chunk);
-
-       return (blkBits[chunk / 8] & (1 << (chunk & 7))) ? 1 : 0;
-}
-
-static Y_INLINE int yaffs_StillSomeChunkBits(yaffs_Device * dev, int blk)
-{
-       __u8 *blkBits = yaffs_BlockBits(dev, blk);
-       int i;
-       for (i = 0; i < dev->chunkBitmapStride; i++) {
-               if (*blkBits)
-                       return 1;
-               blkBits++;
-       }
-       return 0;
-}
-
-static int yaffs_CountChunkBits(yaffs_Device * dev, int blk)
-{
-       __u8 *blkBits = yaffs_BlockBits(dev, blk);
-       int i;
-       int n = 0;
-       for (i = 0; i < dev->chunkBitmapStride; i++) {
-               __u8 x = *blkBits;
-               while(x){
-                       if(x & 1)
-                               n++;
-                       x >>=1;
-               }
-
-               blkBits++;
-       }
-       return n;
-}
-
-/*
- * Verification code
- */
-
-static int yaffs_SkipVerification(yaffs_Device *dev)
-{
-       return !(yaffs_traceMask & (YAFFS_TRACE_VERIFY | YAFFS_TRACE_VERIFY_FULL));
-}
-
-static int yaffs_SkipFullVerification(yaffs_Device *dev)
-{
-       return !(yaffs_traceMask & (YAFFS_TRACE_VERIFY_FULL));
-}
-
-static int yaffs_SkipNANDVerification(yaffs_Device *dev)
-{
-       return !(yaffs_traceMask & (YAFFS_TRACE_VERIFY_NAND));
-}
-
-static const char * blockStateName[] = {
-"Unknown",
-"Needs scanning",
-"Scanning",
-"Empty",
-"Allocating",
-"Full",
-"Dirty",
-"Checkpoint",
-"Collecting",
-"Dead"
-};
-
-static void yaffs_VerifyBlock(yaffs_Device *dev,yaffs_BlockInfo *bi,int n)
-{
-       int actuallyUsed;
-       int inUse;
-
-       if(yaffs_SkipVerification(dev))
-               return;
-
-       /* Report illegal runtime states */
-       if(bi->blockState <0 || bi->blockState >= YAFFS_NUMBER_OF_BLOCK_STATES)
-               T(YAFFS_TRACE_VERIFY,(TSTR("Block %d has undefined state %d"TENDSTR),n,bi->blockState));
-
-       switch(bi->blockState){
-        case YAFFS_BLOCK_STATE_UNKNOWN:
-        case YAFFS_BLOCK_STATE_SCANNING:
-        case YAFFS_BLOCK_STATE_NEEDS_SCANNING:
-               T(YAFFS_TRACE_VERIFY,(TSTR("Block %d has bad run-state %s"TENDSTR),
-               n,blockStateName[bi->blockState]));
-       }
-
-       /* Check pages in use and soft deletions are legal */
-
-       actuallyUsed = bi->pagesInUse - bi->softDeletions;
-
-       if(bi->pagesInUse < 0 || bi->pagesInUse > dev->nChunksPerBlock ||
-          bi->softDeletions < 0 || bi->softDeletions > dev->nChunksPerBlock ||
-          actuallyUsed < 0 || actuallyUsed > dev->nChunksPerBlock)
-               T(YAFFS_TRACE_VERIFY,(TSTR("Block %d has illegal values pagesInUsed %d softDeletions %d"TENDSTR),
-               n,bi->pagesInUse,bi->softDeletions));
-
-
-       /* Check chunk bitmap legal */
-       inUse = yaffs_CountChunkBits(dev,n);
-       if(inUse != bi->pagesInUse)
-               T(YAFFS_TRACE_VERIFY,(TSTR("Block %d has inconsistent values pagesInUse %d counted chunk bits %d"TENDSTR),
-                       n,bi->pagesInUse,inUse));
-
-       /* Check that the sequence number is valid.
-        * Ten million is legal, but is very unlikely
-        */
-       if(dev->isYaffs2 &&
-          (bi->blockState == YAFFS_BLOCK_STATE_ALLOCATING || bi->blockState == YAFFS_BLOCK_STATE_FULL) &&
-          (bi->sequenceNumber < YAFFS_LOWEST_SEQUENCE_NUMBER || bi->sequenceNumber > 10000000 ))
-               T(YAFFS_TRACE_VERIFY,(TSTR("Block %d has suspect sequence number of %d"TENDSTR),
-               n,bi->sequenceNumber));
-
-}
-
-static void yaffs_VerifyCollectedBlock(yaffs_Device *dev,yaffs_BlockInfo *bi,int n)
-{
-       yaffs_VerifyBlock(dev,bi,n);
-
-       /* After collection the block should be in the erased state */
-       /* TODO: This will need to change if we do partial gc */
-
-       if(bi->blockState != YAFFS_BLOCK_STATE_EMPTY){
-               T(YAFFS_TRACE_ERROR,(TSTR("Block %d is in state %d after gc, should be erased"TENDSTR),
-                       n,bi->blockState));
-       }
-}
-
-static void yaffs_VerifyBlocks(yaffs_Device *dev)
-{
-       int i;
-       int nBlocksPerState[YAFFS_NUMBER_OF_BLOCK_STATES];
-       int nIllegalBlockStates = 0;
-
-
-       if(yaffs_SkipVerification(dev))
-               return;
-
-       memset(nBlocksPerState,0,sizeof(nBlocksPerState));
-
-
-       for(i = dev->internalStartBlock; i <= dev->internalEndBlock; i++){
-               yaffs_BlockInfo *bi = yaffs_GetBlockInfo(dev,i);
-               yaffs_VerifyBlock(dev,bi,i);
-
-               if(bi->blockState >=0 && bi->blockState < YAFFS_NUMBER_OF_BLOCK_STATES)
-                       nBlocksPerState[bi->blockState]++;
-               else
-                       nIllegalBlockStates++;
-
-       }
-
-       T(YAFFS_TRACE_VERIFY,(TSTR(""TENDSTR)));
-       T(YAFFS_TRACE_VERIFY,(TSTR("Block summary"TENDSTR)));
-
-       T(YAFFS_TRACE_VERIFY,(TSTR("%d blocks have illegal states"TENDSTR),nIllegalBlockStates));
-       if(nBlocksPerState[YAFFS_BLOCK_STATE_ALLOCATING] > 1)
-               T(YAFFS_TRACE_VERIFY,(TSTR("Too many allocating blocks"TENDSTR)));
-
-       for(i = 0; i < YAFFS_NUMBER_OF_BLOCK_STATES; i++)
-               T(YAFFS_TRACE_VERIFY,
-                 (TSTR("%s %d blocks"TENDSTR),
-                 blockStateName[i],nBlocksPerState[i]));
-
-       if(dev->blocksInCheckpoint != nBlocksPerState[YAFFS_BLOCK_STATE_CHECKPOINT])
-               T(YAFFS_TRACE_VERIFY,
-                (TSTR("Checkpoint block count wrong dev %d count %d"TENDSTR),
-                dev->blocksInCheckpoint, nBlocksPerState[YAFFS_BLOCK_STATE_CHECKPOINT]));
-
-       if(dev->nErasedBlocks != nBlocksPerState[YAFFS_BLOCK_STATE_EMPTY])
-               T(YAFFS_TRACE_VERIFY,
-                (TSTR("Erased block count wrong dev %d count %d"TENDSTR),
-                dev->nErasedBlocks, nBlocksPerState[YAFFS_BLOCK_STATE_EMPTY]));
-
-       if(nBlocksPerState[YAFFS_BLOCK_STATE_COLLECTING] > 1)
-               T(YAFFS_TRACE_VERIFY,
-                (TSTR("Too many collecting blocks %d (max is 1)"TENDSTR),
-                nBlocksPerState[YAFFS_BLOCK_STATE_COLLECTING]));
-
-       T(YAFFS_TRACE_VERIFY,(TSTR(""TENDSTR)));
-
-}
-
-/*
- * Verify the object header. oh must be valid, but obj and tags may be NULL in which
- * case those tests will not be performed.
- */
-static void yaffs_VerifyObjectHeader(yaffs_Object *obj, yaffs_ObjectHeader *oh, yaffs_ExtendedTags *tags, int parentCheck)
-{
-       if(yaffs_SkipVerification(obj->myDev))
-               return;
-
-       if(!(tags && obj && oh)){
-               T(YAFFS_TRACE_VERIFY,
-                               (TSTR("Verifying object header tags %x obj %x oh %x"TENDSTR),
-                               (__u32)tags,(__u32)obj,(__u32)oh));
-               return;
-       }
-
-       if(oh->type <= YAFFS_OBJECT_TYPE_UNKNOWN ||
-          oh->type > YAFFS_OBJECT_TYPE_MAX)
-               T(YAFFS_TRACE_VERIFY,
-                (TSTR("Obj %d header type is illegal value 0x%x"TENDSTR),
-                tags->objectId, oh->type));
-
-       if(tags->objectId != obj->objectId)
-               T(YAFFS_TRACE_VERIFY,
-                (TSTR("Obj %d header mismatch objectId %d"TENDSTR),
-                tags->objectId, obj->objectId));
-
-
-       /*
-        * Check that the object's parent ids match if parentCheck requested.
-        *
-        * Tests do not apply to the root object.
-        */
-
-       if(parentCheck && tags->objectId > 1 && !obj->parent)
-               T(YAFFS_TRACE_VERIFY,
-                (TSTR("Obj %d header mismatch parentId %d obj->parent is NULL"TENDSTR),
-                tags->objectId, oh->parentObjectId));
-
-
-       if(parentCheck && obj->parent &&
-          oh->parentObjectId != obj->parent->objectId &&
-          (oh->parentObjectId != YAFFS_OBJECTID_UNLINKED ||
-           obj->parent->objectId != YAFFS_OBJECTID_DELETED))
-               T(YAFFS_TRACE_VERIFY,
-                (TSTR("Obj %d header mismatch parentId %d parentObjectId %d"TENDSTR),
-                tags->objectId, oh->parentObjectId, obj->parent->objectId));
-
-
-       if(tags->objectId > 1 && oh->name[0] == 0) /* Null name */
-               T(YAFFS_TRACE_VERIFY,
-               (TSTR("Obj %d header name is NULL"TENDSTR),
-                obj->objectId));
-
-       if(tags->objectId > 1 && ((__u8)(oh->name[0])) == 0xff) /* Trashed name */
-               T(YAFFS_TRACE_VERIFY,
-               (TSTR("Obj %d header name is 0xFF"TENDSTR),
-                obj->objectId));
-}
-
-
-
-static int yaffs_VerifyTnodeWorker(yaffs_Object * obj, yaffs_Tnode * tn,
-                                       __u32 level, int chunkOffset)
-{
-       int i;
-       yaffs_Device *dev = obj->myDev;
-       int ok = 1;
-
-       if (tn) {
-               if (level > 0) {
-
-                       for (i = 0; i < YAFFS_NTNODES_INTERNAL && ok; i++){
-                               if (tn->internal[i]) {
-                                       ok = yaffs_VerifyTnodeWorker(obj,
-                                                       tn->internal[i],
-                                                       level - 1,
-                                                       (chunkOffset<<YAFFS_TNODES_INTERNAL_BITS) + i);
-                               }
-                       }
-               } else if (level == 0) {
-                       int i;
-                       yaffs_ExtendedTags tags;
-                       __u32 objectId = obj->objectId;
-
-                       chunkOffset <<=  YAFFS_TNODES_LEVEL0_BITS;
-
-                       for(i = 0; i < YAFFS_NTNODES_LEVEL0; i++){
-                               __u32 theChunk = yaffs_GetChunkGroupBase(dev,tn,i);
-
-                               if(theChunk > 0){
-                                       /* T(~0,(TSTR("verifying (%d:%d) %d"TENDSTR),tags.objectId,tags.chunkId,theChunk)); */
-                                       yaffs_ReadChunkWithTagsFromNAND(dev,theChunk,NULL, &tags);
-                                       if(tags.objectId != objectId || tags.chunkId != chunkOffset){
-                                               T(~0,(TSTR("Object %d chunkId %d NAND mismatch chunk %d tags (%d:%d)"TENDSTR),
-                                                       objectId, chunkOffset, theChunk,
-                                                       tags.objectId, tags.chunkId));
-                                       }
-                               }
-                               chunkOffset++;
-                       }
-               }
-       }
-
-       return ok;
-
-}
-
-
-static void yaffs_VerifyFile(yaffs_Object *obj)
-{
-       int requiredTallness;
-       int actualTallness;
-       __u32 lastChunk;
-       __u32 x;
-       __u32 i;
-       yaffs_Device *dev;
-       yaffs_ExtendedTags tags;
-       yaffs_Tnode *tn;
-       __u32 objectId;
-
-       if(obj && yaffs_SkipVerification(obj->myDev))
-               return;
-
-       dev = obj->myDev;
-       objectId = obj->objectId;
-
-       /* Check file size is consistent with tnode depth */
-       lastChunk =  obj->variant.fileVariant.fileSize / dev->nDataBytesPerChunk + 1;
-       x = lastChunk >> YAFFS_TNODES_LEVEL0_BITS;
-       requiredTallness = 0;
-       while (x> 0) {
-               x >>= YAFFS_TNODES_INTERNAL_BITS;
-               requiredTallness++;
-       }
-
-       actualTallness = obj->variant.fileVariant.topLevel;
-
-       if(requiredTallness > actualTallness )
-               T(YAFFS_TRACE_VERIFY,
-               (TSTR("Obj %d had tnode tallness %d, needs to be %d"TENDSTR),
-                obj->objectId,actualTallness, requiredTallness));
-
-
-       /* Check that the chunks in the tnode tree are all correct.
-        * We do this by scanning through the tnode tree and
-        * checking the tags for every chunk match.
-        */
-
-       if(yaffs_SkipNANDVerification(dev))
-               return;
-
-       for(i = 1; i <= lastChunk; i++){
-               tn = yaffs_FindLevel0Tnode(dev, &obj->variant.fileVariant,i);
-
-               if (tn) {
-                       __u32 theChunk = yaffs_GetChunkGroupBase(dev,tn,i);
-                       if(theChunk > 0){
-                               /* T(~0,(TSTR("verifying (%d:%d) %d"TENDSTR),objectId,i,theChunk)); */
-                               yaffs_ReadChunkWithTagsFromNAND(dev,theChunk,NULL, &tags);
-                               if(tags.objectId != objectId || tags.chunkId != i){
-                                       T(~0,(TSTR("Object %d chunkId %d NAND mismatch chunk %d tags (%d:%d)"TENDSTR),
-                                               objectId, i, theChunk,
-                                               tags.objectId, tags.chunkId));
-                               }
-                       }
-               }
-
-       }
-
-}
-
-static void yaffs_VerifyDirectory(yaffs_Object *obj)
-{
-       if(obj && yaffs_SkipVerification(obj->myDev))
-               return;
-
-}
-
-static void yaffs_VerifyHardLink(yaffs_Object *obj)
-{
-       if(obj && yaffs_SkipVerification(obj->myDev))
-               return;
-
-       /* Verify sane equivalent object */
-}
-
-static void yaffs_VerifySymlink(yaffs_Object *obj)
-{
-       if(obj && yaffs_SkipVerification(obj->myDev))
-               return;
-
-       /* Verify symlink string */
-}
-
-static void yaffs_VerifySpecial(yaffs_Object *obj)
-{
-       if(obj && yaffs_SkipVerification(obj->myDev))
-               return;
-}
-
-static void yaffs_VerifyObject(yaffs_Object *obj)
-{
-       yaffs_Device *dev;
-
-       __u32 chunkMin;
-       __u32 chunkMax;
-
-       __u32 chunkIdOk;
-       __u32 chunkIsLive;
-
-       if(!obj)
-               return;
-
-       dev = obj->myDev;
-
-       if(yaffs_SkipVerification(dev))
-               return;
-
-       /* Check sane object header chunk */
-
-       chunkMin = dev->internalStartBlock * dev->nChunksPerBlock;
-       chunkMax = (dev->internalEndBlock+1) * dev->nChunksPerBlock - 1;
-
-       chunkIdOk = (obj->chunkId >= chunkMin && obj->chunkId <= chunkMax);
-       chunkIsLive = chunkIdOk &&
-                       yaffs_CheckChunkBit(dev,
-                                           obj->chunkId / dev->nChunksPerBlock,
-                                           obj->chunkId % dev->nChunksPerBlock);
-       if(!obj->fake &&
-           (!chunkIdOk || !chunkIsLive)) {
-          T(YAFFS_TRACE_VERIFY,
-          (TSTR("Obj %d has chunkId %d %s %s"TENDSTR),
-          obj->objectId,obj->chunkId,
-          chunkIdOk ? "" : ",out of range",
-          chunkIsLive || !chunkIdOk ? "" : ",marked as deleted"));
-       }
-
-       if(chunkIdOk && chunkIsLive &&!yaffs_SkipNANDVerification(dev)) {
-               yaffs_ExtendedTags tags;
-               yaffs_ObjectHeader *oh;
-               __u8 *buffer = yaffs_GetTempBuffer(dev,__LINE__);
-
-               oh = (yaffs_ObjectHeader *)buffer;
-
-               yaffs_ReadChunkWithTagsFromNAND(dev, obj->chunkId,buffer, &tags);
-
-               yaffs_VerifyObjectHeader(obj,oh,&tags,1);
-
-               yaffs_ReleaseTempBuffer(dev,buffer,__LINE__);
-       }
-
-       /* Verify it has a parent */
-       if(obj && !obj->fake &&
-          (!obj->parent || obj->parent->myDev != dev)){
-          T(YAFFS_TRACE_VERIFY,
-          (TSTR("Obj %d has parent pointer %p which does not look like an object"TENDSTR),
-          obj->objectId,obj->parent));
-       }
-
-       /* Verify parent is a directory */
-       if(obj->parent && obj->parent->variantType != YAFFS_OBJECT_TYPE_DIRECTORY){
-          T(YAFFS_TRACE_VERIFY,
-          (TSTR("Obj %d's parent is not a directory (type %d)"TENDSTR),
-          obj->objectId,obj->parent->variantType));
-       }
-
-       switch(obj->variantType){
-       case YAFFS_OBJECT_TYPE_FILE:
-               yaffs_VerifyFile(obj);
-               break;
-       case YAFFS_OBJECT_TYPE_SYMLINK:
-               yaffs_VerifySymlink(obj);
-               break;
-       case YAFFS_OBJECT_TYPE_DIRECTORY:
-               yaffs_VerifyDirectory(obj);
-               break;
-       case YAFFS_OBJECT_TYPE_HARDLINK:
-               yaffs_VerifyHardLink(obj);
-               break;
-       case YAFFS_OBJECT_TYPE_SPECIAL:
-               yaffs_VerifySpecial(obj);
-               break;
-       case YAFFS_OBJECT_TYPE_UNKNOWN:
-       default:
-               T(YAFFS_TRACE_VERIFY,
-               (TSTR("Obj %d has illegaltype %d"TENDSTR),
-               obj->objectId,obj->variantType));
-               break;
-       }
-
-
-}
-
-static void yaffs_VerifyObjects(yaffs_Device *dev)
-{
-       yaffs_Object *obj;
-       int i;
-       struct list_head *lh;
-
-       if(yaffs_SkipVerification(dev))
-               return;
-
-       /* Iterate through the objects in each hash entry */
-
-        for(i = 0; i <  YAFFS_NOBJECT_BUCKETS; i++){
-               list_for_each(lh, &dev->objectBucket[i].list) {
-                       if (lh) {
-                               obj = list_entry(lh, yaffs_Object, hashLink);
-                               yaffs_VerifyObject(obj);
-                       }
-               }
-        }
-
-}
-
-
-/*
- *  Simple hash function. Needs to have a reasonable spread
- */
-
-static Y_INLINE int yaffs_HashFunction(int n)
-{
-/* XXX U-BOOT XXX */
-       /*n = abs(n); */
-       if (n < 0)
-               n = -n;
-       return (n % YAFFS_NOBJECT_BUCKETS);
-}
-
-/*
- * Access functions to useful fake objects
- */
-
-yaffs_Object *yaffs_Root(yaffs_Device * dev)
-{
-       return dev->rootDir;
-}
-
-yaffs_Object *yaffs_LostNFound(yaffs_Device * dev)
-{
-       return dev->lostNFoundDir;
-}
-
-
-/*
- *  Erased NAND checking functions
- */
-
-int yaffs_CheckFF(__u8 * buffer, int nBytes)
-{
-       /* Horrible, slow implementation */
-       while (nBytes--) {
-               if (*buffer != 0xFF)
-                       return 0;
-               buffer++;
-       }
-       return 1;
-}
-
-static int yaffs_CheckChunkErased(struct yaffs_DeviceStruct *dev,
-                                 int chunkInNAND)
-{
-
-       int retval = YAFFS_OK;
-       __u8 *data = yaffs_GetTempBuffer(dev, __LINE__);
-       yaffs_ExtendedTags tags;
-       int result;
-
-       result = yaffs_ReadChunkWithTagsFromNAND(dev, chunkInNAND, data, &tags);
-
-       if(tags.eccResult > YAFFS_ECC_RESULT_NO_ERROR)
-               retval = YAFFS_FAIL;
-
-
-       if (!yaffs_CheckFF(data, dev->nDataBytesPerChunk) || tags.chunkUsed) {
-               T(YAFFS_TRACE_NANDACCESS,
-                 (TSTR("Chunk %d not erased" TENDSTR), chunkInNAND));
-               retval = YAFFS_FAIL;
-       }
-
-       yaffs_ReleaseTempBuffer(dev, data, __LINE__);
-
-       return retval;
-
-}
-
-static int yaffs_WriteNewChunkWithTagsToNAND(struct yaffs_DeviceStruct *dev,
-                                            const __u8 * data,
-                                            yaffs_ExtendedTags * tags,
-                                            int useReserve)
-{
-       int attempts = 0;
-       int writeOk = 0;
-       int chunk;
-
-       yaffs_InvalidateCheckpoint(dev);
-
-       do {
-               yaffs_BlockInfo *bi = 0;
-               int erasedOk = 0;
-
-               chunk = yaffs_AllocateChunk(dev, useReserve, &bi);
-               if (chunk < 0) {
-                       /* no space */
-                       break;
-               }
-
-               /* First check this chunk is erased, if it needs
-                * checking.  The checking policy (unless forced
-                * always on) is as follows:
-                *
-                * Check the first page we try to write in a block.
-                * If the check passes then we don't need to check any
-                * more.        If the check fails, we check again...
-                * If the block has been erased, we don't need to check.
-                *
-                * However, if the block has been prioritised for gc,
-                * then we think there might be something odd about
-                * this block and stop using it.
-                *
-                * Rationale: We should only ever see chunks that have
-                * not been erased if there was a partially written
-                * chunk due to power loss.  This checking policy should
-                * catch that case with very few checks and thus save a
-                * lot of checks that are most likely not needed.
-                */
-               if (bi->gcPrioritise) {
-                       yaffs_DeleteChunk(dev, chunk, 1, __LINE__);
-                       /* try another chunk */
-                       continue;
-               }
-
-               /* let's give it a try */
-               attempts++;
-
-#ifdef CONFIG_YAFFS_ALWAYS_CHECK_CHUNK_ERASED
-               bi->skipErasedCheck = 0;
-#endif
-               if (!bi->skipErasedCheck) {
-                       erasedOk = yaffs_CheckChunkErased(dev, chunk);
-                       if (erasedOk != YAFFS_OK) {
-                               T(YAFFS_TRACE_ERROR,
-                               (TSTR ("**>> yaffs chunk %d was not erased"
-                               TENDSTR), chunk));
-
-                               /* try another chunk */
-                               continue;
-                       }
-                       bi->skipErasedCheck = 1;
-               }
-
-               writeOk = yaffs_WriteChunkWithTagsToNAND(dev, chunk,
-                               data, tags);
-               if (writeOk != YAFFS_OK) {
-                       yaffs_HandleWriteChunkError(dev, chunk, erasedOk);
-                       /* try another chunk */
-                       continue;
-               }
-
-               /* Copy the data into the robustification buffer */
-               yaffs_HandleWriteChunkOk(dev, chunk, data, tags);
-
-       } while (writeOk != YAFFS_OK &&
-               (yaffs_wr_attempts <= 0 || attempts <= yaffs_wr_attempts));
-
-       if(!writeOk)
-               chunk = -1;
-
-       if (attempts > 1) {
-               T(YAFFS_TRACE_ERROR,
-                       (TSTR("**>> yaffs write required %d attempts" TENDSTR),
-                       attempts));
-
-               dev->nRetriedWrites += (attempts - 1);
-       }
-
-       return chunk;
-}
-
-/*
- * Block retiring for handling a broken block.
- */
-
-static void yaffs_RetireBlock(yaffs_Device * dev, int blockInNAND)
-{
-       yaffs_BlockInfo *bi = yaffs_GetBlockInfo(dev, blockInNAND);
-
-       yaffs_InvalidateCheckpoint(dev);
-
-       yaffs_MarkBlockBad(dev, blockInNAND);
-
-       bi->blockState = YAFFS_BLOCK_STATE_DEAD;
-       bi->gcPrioritise = 0;
-       bi->needsRetiring = 0;
-
-       dev->nRetiredBlocks++;
-}
-
-/*
- * Functions for robustisizing TODO
- *
- */
-
-static void yaffs_HandleWriteChunkOk(yaffs_Device * dev, int chunkInNAND,
-                                    const __u8 * data,
-                                    const yaffs_ExtendedTags * tags)
-{
-}
-
-static void yaffs_HandleUpdateChunk(yaffs_Device * dev, int chunkInNAND,
-                                   const yaffs_ExtendedTags * tags)
-{
-}
-
-void yaffs_HandleChunkError(yaffs_Device *dev, yaffs_BlockInfo *bi)
-{
-       if(!bi->gcPrioritise){
-               bi->gcPrioritise = 1;
-               dev->hasPendingPrioritisedGCs = 1;
-               bi->chunkErrorStrikes ++;
-
-               if(bi->chunkErrorStrikes > 3){
-                       bi->needsRetiring = 1; /* Too many stikes, so retire this */
-                       T(YAFFS_TRACE_ALWAYS, (TSTR("yaffs: Block struck out" TENDSTR)));
-
-               }
-
-       }
-}
-
-static void yaffs_HandleWriteChunkError(yaffs_Device * dev, int chunkInNAND, int erasedOk)
-{
-
-       int blockInNAND = chunkInNAND / dev->nChunksPerBlock;
-       yaffs_BlockInfo *bi = yaffs_GetBlockInfo(dev, blockInNAND);
-
-       yaffs_HandleChunkError(dev,bi);
-
-
-       if(erasedOk ) {
-               /* Was an actual write failure, so mark the block for retirement  */
-               bi->needsRetiring = 1;
-               T(YAFFS_TRACE_ERROR | YAFFS_TRACE_BAD_BLOCKS,
-                 (TSTR("**>> Block %d needs retiring" TENDSTR), blockInNAND));
-
-
-       }
-
-       /* Delete the chunk */
-       yaffs_DeleteChunk(dev, chunkInNAND, 1, __LINE__);
-}
-
-
-/*---------------- Name handling functions ------------*/
-
-static __u16 yaffs_CalcNameSum(const YCHAR * name)
-{
-       __u16 sum = 0;
-       __u16 i = 1;
-
-       YUCHAR *bname = (YUCHAR *) name;
-       if (bname) {
-               while ((*bname) && (i < (YAFFS_MAX_NAME_LENGTH/2))) {
-
-#ifdef CONFIG_YAFFS_CASE_INSENSITIVE
-                       sum += yaffs_toupper(*bname) * i;
-#else
-                       sum += (*bname) * i;
-#endif
-                       i++;
-                       bname++;
-               }
-       }
-       return sum;
-}
-
-static void yaffs_SetObjectName(yaffs_Object * obj, const YCHAR * name)
-{
-#ifdef CONFIG_YAFFS_SHORT_NAMES_IN_RAM
-       if (name && yaffs_strlen(name) <= YAFFS_SHORT_NAME_LENGTH) {
-               yaffs_strcpy(obj->shortName, name);
-       } else {
-               obj->shortName[0] = _Y('\0');
-       }
-#endif
-       obj->sum = yaffs_CalcNameSum(name);
-}
-
-/*-------------------- TNODES -------------------
-
- * List of spare tnodes
- * The list is hooked together using the first pointer
- * in the tnode.
- */
-
-/* yaffs_CreateTnodes creates a bunch more tnodes and
- * adds them to the tnode free list.
- * Don't use this function directly
- */
-
-static int yaffs_CreateTnodes(yaffs_Device * dev, int nTnodes)
-{
-       int i;
-       int tnodeSize;
-       yaffs_Tnode *newTnodes;
-       __u8 *mem;
-       yaffs_Tnode *curr;
-       yaffs_Tnode *next;
-       yaffs_TnodeList *tnl;
-
-       if (nTnodes < 1)
-               return YAFFS_OK;
-
-       /* Calculate the tnode size in bytes for variable width tnode support.
-        * Must be a multiple of 32-bits  */
-       tnodeSize = (dev->tnodeWidth * YAFFS_NTNODES_LEVEL0)/8;
-
-       /* make these things */
-
-       newTnodes = YMALLOC(nTnodes * tnodeSize);
-       mem = (__u8 *)newTnodes;
-
-       if (!newTnodes) {
-               T(YAFFS_TRACE_ERROR,
-                 (TSTR("yaffs: Could not allocate Tnodes" TENDSTR)));
-               return YAFFS_FAIL;
-       }
-
-       /* Hook them into the free list */
-#if 0
-       for (i = 0; i < nTnodes - 1; i++) {
-               newTnodes[i].internal[0] = &newTnodes[i + 1];
-#ifdef CONFIG_YAFFS_TNODE_LIST_DEBUG
-               newTnodes[i].internal[YAFFS_NTNODES_INTERNAL] = (void *)1;
-#endif
-       }
-
-       newTnodes[nTnodes - 1].internal[0] = dev->freeTnodes;
-#ifdef CONFIG_YAFFS_TNODE_LIST_DEBUG
-       newTnodes[nTnodes - 1].internal[YAFFS_NTNODES_INTERNAL] = (void *)1;
-#endif
-       dev->freeTnodes = newTnodes;
-#else
-       /* New hookup for wide tnodes */
-       for(i = 0; i < nTnodes -1; i++) {
-               curr = (yaffs_Tnode *) &mem[i * tnodeSize];
-               next = (yaffs_Tnode *) &mem[(i+1) * tnodeSize];
-               curr->internal[0] = next;
-       }
-
-       curr = (yaffs_Tnode *) &mem[(nTnodes - 1) * tnodeSize];
-       curr->internal[0] = dev->freeTnodes;
-       dev->freeTnodes = (yaffs_Tnode *)mem;
-
-#endif
-
-
-       dev->nFreeTnodes += nTnodes;
-       dev->nTnodesCreated += nTnodes;
-
-       /* Now add this bunch of tnodes to a list for freeing up.
-        * NB If we can't add this to the management list it isn't fatal
-        * but it just means we can't free this bunch of tnodes later.
-        */
-
-       tnl = YMALLOC(sizeof(yaffs_TnodeList));
-       if (!tnl) {
-               T(YAFFS_TRACE_ERROR,
-                 (TSTR
-                  ("yaffs: Could not add tnodes to management list" TENDSTR)));
-                  return YAFFS_FAIL;
-
-       } else {
-               tnl->tnodes = newTnodes;
-               tnl->next = dev->allocatedTnodeList;
-               dev->allocatedTnodeList = tnl;
-       }
-
-       T(YAFFS_TRACE_ALLOCATE, (TSTR("yaffs: Tnodes added" TENDSTR)));
-
-       return YAFFS_OK;
-}
-
-/* GetTnode gets us a clean tnode. Tries to make allocate more if we run out */
-
-static yaffs_Tnode *yaffs_GetTnodeRaw(yaffs_Device * dev)
-{
-       yaffs_Tnode *tn = NULL;
-
-       /* If there are none left make more */
-       if (!dev->freeTnodes) {
-               yaffs_CreateTnodes(dev, YAFFS_ALLOCATION_NTNODES);
-       }
-
-       if (dev->freeTnodes) {
-               tn = dev->freeTnodes;
-#ifdef CONFIG_YAFFS_TNODE_LIST_DEBUG
-               if (tn->internal[YAFFS_NTNODES_INTERNAL] != (void *)1) {
-                       /* Hoosterman, this thing looks like it isn't in the list */
-                       T(YAFFS_TRACE_ALWAYS,
-                         (TSTR("yaffs: Tnode list bug 1" TENDSTR)));
-               }
-#endif
-               dev->freeTnodes = dev->freeTnodes->internal[0];
-               dev->nFreeTnodes--;
-       }
-
-       return tn;
-}
-
-static yaffs_Tnode *yaffs_GetTnode(yaffs_Device * dev)
-{
-       yaffs_Tnode *tn = yaffs_GetTnodeRaw(dev);
-
-       if(tn)
-               memset(tn, 0, (dev->tnodeWidth * YAFFS_NTNODES_LEVEL0)/8);
-
-       return tn;
-}
-
-/* FreeTnode frees up a tnode and puts it back on the free list */
-static void yaffs_FreeTnode(yaffs_Device * dev, yaffs_Tnode * tn)
-{
-       if (tn) {
-#ifdef CONFIG_YAFFS_TNODE_LIST_DEBUG
-               if (tn->internal[YAFFS_NTNODES_INTERNAL] != 0) {
-                       /* Hoosterman, this thing looks like it is already in the list */
-                       T(YAFFS_TRACE_ALWAYS,
-                         (TSTR("yaffs: Tnode list bug 2" TENDSTR)));
-               }
-               tn->internal[YAFFS_NTNODES_INTERNAL] = (void *)1;
-#endif
-               tn->internal[0] = dev->freeTnodes;
-               dev->freeTnodes = tn;
-               dev->nFreeTnodes++;
-       }
-}
-
-static void yaffs_DeinitialiseTnodes(yaffs_Device * dev)
-{
-       /* Free the list of allocated tnodes */
-       yaffs_TnodeList *tmp;
-
-       while (dev->allocatedTnodeList) {
-               tmp = dev->allocatedTnodeList->next;
-
-               YFREE(dev->allocatedTnodeList->tnodes);
-               YFREE(dev->allocatedTnodeList);
-               dev->allocatedTnodeList = tmp;
-
-       }
-
-       dev->freeTnodes = NULL;
-       dev->nFreeTnodes = 0;
-}
-
-static void yaffs_InitialiseTnodes(yaffs_Device * dev)
-{
-       dev->allocatedTnodeList = NULL;
-       dev->freeTnodes = NULL;
-       dev->nFreeTnodes = 0;
-       dev->nTnodesCreated = 0;
-
-}
-
-
-void yaffs_PutLevel0Tnode(yaffs_Device *dev, yaffs_Tnode *tn, unsigned pos, unsigned val)
-{
-  __u32 *map = (__u32 *)tn;
-  __u32 bitInMap;
-  __u32 bitInWord;
-  __u32 wordInMap;
-  __u32 mask;
-
-  pos &= YAFFS_TNODES_LEVEL0_MASK;
-  val >>= dev->chunkGroupBits;
-
-  bitInMap = pos * dev->tnodeWidth;
-  wordInMap = bitInMap /32;
-  bitInWord = bitInMap & (32 -1);
-
-  mask = dev->tnodeMask << bitInWord;
-
-  map[wordInMap] &= ~mask;
-  map[wordInMap] |= (mask & (val << bitInWord));
-
-  if(dev->tnodeWidth > (32-bitInWord)) {
-    bitInWord = (32 - bitInWord);
-    wordInMap++;;
-    mask = dev->tnodeMask >> (/*dev->tnodeWidth -*/ bitInWord);
-    map[wordInMap] &= ~mask;
-    map[wordInMap] |= (mask & (val >> bitInWord));
-  }
-}
-
-static __u32 yaffs_GetChunkGroupBase(yaffs_Device *dev, yaffs_Tnode *tn, unsigned pos)
-{
-  __u32 *map = (__u32 *)tn;
-  __u32 bitInMap;
-  __u32 bitInWord;
-  __u32 wordInMap;
-  __u32 val;
-
-  pos &= YAFFS_TNODES_LEVEL0_MASK;
-
-  bitInMap = pos * dev->tnodeWidth;
-  wordInMap = bitInMap /32;
-  bitInWord = bitInMap & (32 -1);
-
-  val = map[wordInMap] >> bitInWord;
-
-  if(dev->tnodeWidth > (32-bitInWord)) {
-    bitInWord = (32 - bitInWord);
-    wordInMap++;;
-    val |= (map[wordInMap] << bitInWord);
-  }
-
-  val &= dev->tnodeMask;
-  val <<= dev->chunkGroupBits;
-
-  return val;
-}
-
-/* ------------------- End of individual tnode manipulation -----------------*/
-
-/* ---------Functions to manipulate the look-up tree (made up of tnodes) ------
- * The look up tree is represented by the top tnode and the number of topLevel
- * in the tree. 0 means only the level 0 tnode is in the tree.
- */
-
-/* FindLevel0Tnode finds the level 0 tnode, if one exists. */
-static yaffs_Tnode *yaffs_FindLevel0Tnode(yaffs_Device * dev,
-                                         yaffs_FileStructure * fStruct,
-                                         __u32 chunkId)
-{
-
-       yaffs_Tnode *tn = fStruct->top;
-       __u32 i;
-       int requiredTallness;
-       int level = fStruct->topLevel;
-
-       /* Check sane level and chunk Id */
-       if (level < 0 || level > YAFFS_TNODES_MAX_LEVEL) {
-               return NULL;
-       }
-
-       if (chunkId > YAFFS_MAX_CHUNK_ID) {
-               return NULL;
-       }
-
-       /* First check we're tall enough (ie enough topLevel) */
-
-       i = chunkId >> YAFFS_TNODES_LEVEL0_BITS;
-       requiredTallness = 0;
-       while (i) {
-               i >>= YAFFS_TNODES_INTERNAL_BITS;
-               requiredTallness++;
-       }
-
-       if (requiredTallness > fStruct->topLevel) {
-               /* Not tall enough, so we can't find it, return NULL. */
-               return NULL;
-       }
-
-       /* Traverse down to level 0 */
-       while (level > 0 && tn) {
-               tn = tn->
-                   internal[(chunkId >>
-                              ( YAFFS_TNODES_LEVEL0_BITS +
-                                (level - 1) *
-                                YAFFS_TNODES_INTERNAL_BITS)
-                             ) &
-                            YAFFS_TNODES_INTERNAL_MASK];
-               level--;
-
-       }
-
-       return tn;
-}
-
-/* AddOrFindLevel0Tnode finds the level 0 tnode if it exists, otherwise first expands the tree.
- * This happens in two steps:
- *  1. If the tree isn't tall enough, then make it taller.
- *  2. Scan down the tree towards the level 0 tnode adding tnodes if required.
- *
- * Used when modifying the tree.
- *
- *  If the tn argument is NULL, then a fresh tnode will be added otherwise the specified tn will
- *  be plugged into the ttree.
- */
-
-static yaffs_Tnode *yaffs_AddOrFindLevel0Tnode(yaffs_Device * dev,
-                                              yaffs_FileStructure * fStruct,
-                                              __u32 chunkId,
-                                              yaffs_Tnode *passedTn)
-{
-
-       int requiredTallness;
-       int i;
-       int l;
-       yaffs_Tnode *tn;
-
-       __u32 x;
-
-
-       /* Check sane level and page Id */
-       if (fStruct->topLevel < 0 || fStruct->topLevel > YAFFS_TNODES_MAX_LEVEL) {
-               return NULL;
-       }
-
-       if (chunkId > YAFFS_MAX_CHUNK_ID) {
-               return NULL;
-       }
-
-       /* First check we're tall enough (ie enough topLevel) */
-
-       x = chunkId >> YAFFS_TNODES_LEVEL0_BITS;
-       requiredTallness = 0;
-       while (x) {
-               x >>= YAFFS_TNODES_INTERNAL_BITS;
-               requiredTallness++;
-       }
-
-
-       if (requiredTallness > fStruct->topLevel) {
-               /* Not tall enough,gotta make the tree taller */
-               for (i = fStruct->topLevel; i < requiredTallness; i++) {
-
-                       tn = yaffs_GetTnode(dev);
-
-                       if (tn) {
-                               tn->internal[0] = fStruct->top;
-                               fStruct->top = tn;
-                       } else {
-                               T(YAFFS_TRACE_ERROR,
-                                 (TSTR("yaffs: no more tnodes" TENDSTR)));
-                       }
-               }
-
-               fStruct->topLevel = requiredTallness;
-       }
-
-       /* Traverse down to level 0, adding anything we need */
-
-       l = fStruct->topLevel;
-       tn = fStruct->top;
-
-       if(l > 0) {
-               while (l > 0 && tn) {
-                       x = (chunkId >>
-                            ( YAFFS_TNODES_LEVEL0_BITS +
-                             (l - 1) * YAFFS_TNODES_INTERNAL_BITS)) &
-                           YAFFS_TNODES_INTERNAL_MASK;
-
-
-                       if((l>1) && !tn->internal[x]){
-                               /* Add missing non-level-zero tnode */
-                               tn->internal[x] = yaffs_GetTnode(dev);
-
-                       } else if(l == 1) {
-                               /* Looking from level 1 at level 0 */
-                               if (passedTn) {
-                                       /* If we already have one, then release it.*/
-                                       if(tn->internal[x])
-                                               yaffs_FreeTnode(dev,tn->internal[x]);
-                                       tn->internal[x] = passedTn;
-
-                               } else if(!tn->internal[x]) {
-                                       /* Don't have one, none passed in */
-                                       tn->internal[x] = yaffs_GetTnode(dev);
-                               }
-                       }
-
-                       tn = tn->internal[x];
-                       l--;
-               }
-       } else {
-               /* top is level 0 */
-               if(passedTn) {
-                       memcpy(tn,passedTn,(dev->tnodeWidth * YAFFS_NTNODES_LEVEL0)/8);
-                       yaffs_FreeTnode(dev,passedTn);
-               }
-       }
-
-       return tn;
-}
-
-static int yaffs_FindChunkInGroup(yaffs_Device * dev, int theChunk,
-                                 yaffs_ExtendedTags * tags, int objectId,
-                                 int chunkInInode)
-{
-       int j;
-
-       for (j = 0; theChunk && j < dev->chunkGroupSize; j++) {
-               if (yaffs_CheckChunkBit
-                   (dev, theChunk / dev->nChunksPerBlock,
-                    theChunk % dev->nChunksPerBlock)) {
-                       yaffs_ReadChunkWithTagsFromNAND(dev, theChunk, NULL,
-                                                       tags);
-                       if (yaffs_TagsMatch(tags, objectId, chunkInInode)) {
-                               /* found it; */
-                               return theChunk;
-
-                       }
-               }
-               theChunk++;
-       }
-       return -1;
-}
-
-
-/* DeleteWorker scans backwards through the tnode tree and deletes all the
- * chunks and tnodes in the file
- * Returns 1 if the tree was deleted.
- * Returns 0 if it stopped early due to hitting the limit and the delete is incomplete.
- */
-
-static int yaffs_DeleteWorker(yaffs_Object * in, yaffs_Tnode * tn, __u32 level,
-                             int chunkOffset, int *limit)
-{
-       int i;
-       int chunkInInode;
-       int theChunk;
-       yaffs_ExtendedTags tags;
-       int foundChunk;
-       yaffs_Device *dev = in->myDev;
-
-       int allDone = 1;
-
-       if (tn) {
-               if (level > 0) {
-
-                       for (i = YAFFS_NTNODES_INTERNAL - 1; allDone && i >= 0;
-                            i--) {
-                               if (tn->internal[i]) {
-                                       if (limit && (*limit) < 0) {
-                                               allDone = 0;
-                                       } else {
-                                               allDone =
-                                                   yaffs_DeleteWorker(in,
-                                                                      tn->
-                                                                      internal
-                                                                      [i],
-                                                                      level -
-                                                                      1,
-                                                                      (chunkOffset
-                                                                       <<
-                                                                       YAFFS_TNODES_INTERNAL_BITS)
-                                                                      + i,
-                                                                      limit);
-                                       }
-                                       if (allDone) {
-                                               yaffs_FreeTnode(dev,
-                                                               tn->
-                                                               internal[i]);
-                                               tn->internal[i] = NULL;
-                                       }
-                               }
-
-                       }
-                       return (allDone) ? 1 : 0;
-               } else if (level == 0) {
-                       int hitLimit = 0;
-
-                       for (i = YAFFS_NTNODES_LEVEL0 - 1; i >= 0 && !hitLimit;
-                            i--) {
-                               theChunk = yaffs_GetChunkGroupBase(dev,tn,i);
-                               if (theChunk) {
-
-                                       chunkInInode =
-                                           (chunkOffset <<
-                                            YAFFS_TNODES_LEVEL0_BITS) + i;
-
-                                       foundChunk =
-                                           yaffs_FindChunkInGroup(dev,
-                                                                  theChunk,
-                                                                  &tags,
-                                                                  in->objectId,
-                                                                  chunkInInode);
-
-                                       if (foundChunk > 0) {
-                                               yaffs_DeleteChunk(dev,
-                                                                 foundChunk, 1,
-                                                                 __LINE__);
-                                               in->nDataChunks--;
-                                               if (limit) {
-                                                       *limit = *limit - 1;
-                                                       if (*limit <= 0) {
-                                                               hitLimit = 1;
-                                                       }
-                                               }
-
-                                       }
-
-                                       yaffs_PutLevel0Tnode(dev,tn,i,0);
-                               }
-
-                       }
-                       return (i < 0) ? 1 : 0;
-
-               }
-
-       }
-
-       return 1;
-
-}
-
-static void yaffs_SoftDeleteChunk(yaffs_Device * dev, int chunk)
-{
-
-       yaffs_BlockInfo *theBlock;
-
-       T(YAFFS_TRACE_DELETION, (TSTR("soft delete chunk %d" TENDSTR), chunk));
-
-       theBlock = yaffs_GetBlockInfo(dev, chunk / dev->nChunksPerBlock);
-       if (theBlock) {
-               theBlock->softDeletions++;
-               dev->nFreeChunks++;
-       }
-}
-
-/* SoftDeleteWorker scans backwards through the tnode tree and soft deletes all the chunks in the file.
- * All soft deleting does is increment the block's softdelete count and pulls the chunk out
- * of the tnode.
- * Thus, essentially this is the same as DeleteWorker except that the chunks are soft deleted.
- */
-
-static int yaffs_SoftDeleteWorker(yaffs_Object * in, yaffs_Tnode * tn,
-                                 __u32 level, int chunkOffset)
-{
-       int i;
-       int theChunk;
-       int allDone = 1;
-       yaffs_Device *dev = in->myDev;
-
-       if (tn) {
-               if (level > 0) {
-
-                       for (i = YAFFS_NTNODES_INTERNAL - 1; allDone && i >= 0;
-                            i--) {
-                               if (tn->internal[i]) {
-                                       allDone =
-                                           yaffs_SoftDeleteWorker(in,
-                                                                  tn->
-                                                                  internal[i],
-                                                                  level - 1,
-                                                                  (chunkOffset
-                                                                   <<
-                                                                   YAFFS_TNODES_INTERNAL_BITS)
-                                                                  + i);
-                                       if (allDone) {
-                                               yaffs_FreeTnode(dev,
-                                                               tn->
-                                                               internal[i]);
-                                               tn->internal[i] = NULL;
-                                       } else {
-                                               /* Hoosterman... how could this happen? */
-                                       }
-                               }
-                       }
-                       return (allDone) ? 1 : 0;
-               } else if (level == 0) {
-
-                       for (i = YAFFS_NTNODES_LEVEL0 - 1; i >= 0; i--) {
-                               theChunk = yaffs_GetChunkGroupBase(dev,tn,i);
-                               if (theChunk) {
-                                       /* Note this does not find the real chunk, only the chunk group.
-                                        * We make an assumption that a chunk group is not larger than
-                                        * a block.
-                                        */
-                                       yaffs_SoftDeleteChunk(dev, theChunk);
-                                       yaffs_PutLevel0Tnode(dev,tn,i,0);
-                               }
-
-                       }
-                       return 1;
-
-               }
-
-       }
-
-       return 1;
-
-}
-
-static void yaffs_SoftDeleteFile(yaffs_Object * obj)
-{
-       if (obj->deleted &&
-           obj->variantType == YAFFS_OBJECT_TYPE_FILE && !obj->softDeleted) {
-               if (obj->nDataChunks <= 0) {
-                       /* Empty file with no duplicate object headers, just delete it immediately */
-                       yaffs_FreeTnode(obj->myDev,
-                                       obj->variant.fileVariant.top);
-                       obj->variant.fileVariant.top = NULL;
-                       T(YAFFS_TRACE_TRACING,
-                         (TSTR("yaffs: Deleting empty file %d" TENDSTR),
-                          obj->objectId));
-                       yaffs_DoGenericObjectDeletion(obj);
-               } else {
-                       yaffs_SoftDeleteWorker(obj,
-                                              obj->variant.fileVariant.top,
-                                              obj->variant.fileVariant.
-                                              topLevel, 0);
-                       obj->softDeleted = 1;
-               }
-       }
-}
-
-/* Pruning removes any part of the file structure tree that is beyond the
- * bounds of the file (ie that does not point to chunks).
- *
- * A file should only get pruned when its size is reduced.
- *
- * Before pruning, the chunks must be pulled from the tree and the
- * level 0 tnode entries must be zeroed out.
- * Could also use this for file deletion, but that's probably better handled
- * by a special case.
- */
-
-static yaffs_Tnode *yaffs_PruneWorker(yaffs_Device * dev, yaffs_Tnode * tn,
-                                     __u32 level, int del0)
-{
-       int i;
-       int hasData;
-
-       if (tn) {
-               hasData = 0;
-
-               for (i = 0; i < YAFFS_NTNODES_INTERNAL; i++) {
-                       if (tn->internal[i] && level > 0) {
-                               tn->internal[i] =
-                                   yaffs_PruneWorker(dev, tn->internal[i],
-                                                     level - 1,
-                                                     (i == 0) ? del0 : 1);
-                       }
-
-                       if (tn->internal[i]) {
-                               hasData++;
-                       }
-               }
-
-               if (hasData == 0 && del0) {
-                       /* Free and return NULL */
-
-                       yaffs_FreeTnode(dev, tn);
-                       tn = NULL;
-               }
-
-       }
-
-       return tn;
-
-}
-
-static int yaffs_PruneFileStructure(yaffs_Device * dev,
-                                   yaffs_FileStructure * fStruct)
-{
-       int i;
-       int hasData;
-       int done = 0;
-       yaffs_Tnode *tn;
-
-       if (fStruct->topLevel > 0) {
-               fStruct->top =
-                   yaffs_PruneWorker(dev, fStruct->top, fStruct->topLevel, 0);
-
-               /* Now we have a tree with all the non-zero branches NULL but the height
-                * is the same as it was.
-                * Let's see if we can trim internal tnodes to shorten the tree.
-                * We can do this if only the 0th element in the tnode is in use
-                * (ie all the non-zero are NULL)
-                */
-
-               while (fStruct->topLevel && !done) {
-                       tn = fStruct->top;
-
-                       hasData = 0;
-                       for (i = 1; i < YAFFS_NTNODES_INTERNAL; i++) {
-                               if (tn->internal[i]) {
-                                       hasData++;
-                               }
-                       }
-
-                       if (!hasData) {
-                               fStruct->top = tn->internal[0];
-                               fStruct->topLevel--;
-                               yaffs_FreeTnode(dev, tn);
-                       } else {
-                               done = 1;
-                       }
-               }
-       }
-
-       return YAFFS_OK;
-}
-
-/*-------------------- End of File Structure functions.-------------------*/
-
-/* yaffs_CreateFreeObjects creates a bunch more objects and
- * adds them to the object free list.
- */
-static int yaffs_CreateFreeObjects(yaffs_Device * dev, int nObjects)
-{
-       int i;
-       yaffs_Object *newObjects;
-       yaffs_ObjectList *list;
-
-       if (nObjects < 1)
-               return YAFFS_OK;
-
-       /* make these things */
-       newObjects = YMALLOC(nObjects * sizeof(yaffs_Object));
-       list = YMALLOC(sizeof(yaffs_ObjectList));
-
-       if (!newObjects || !list) {
-               if(newObjects)
-                       YFREE(newObjects);
-               if(list)
-                       YFREE(list);
-               T(YAFFS_TRACE_ALLOCATE,
-                 (TSTR("yaffs: Could not allocate more objects" TENDSTR)));
-               return YAFFS_FAIL;
-       }
-
-       /* Hook them into the free list */
-       for (i = 0; i < nObjects - 1; i++) {
-               newObjects[i].siblings.next =
-                   (struct list_head *)(&newObjects[i + 1]);
-       }
-
-       newObjects[nObjects - 1].siblings.next = (void *)dev->freeObjects;
-       dev->freeObjects = newObjects;
-       dev->nFreeObjects += nObjects;
-       dev->nObjectsCreated += nObjects;
-
-       /* Now add this bunch of Objects to a list for freeing up. */
-
-       list->objects = newObjects;
-       list->next = dev->allocatedObjectList;
-       dev->allocatedObjectList = list;
-
-       return YAFFS_OK;
-}
-
-
-/* AllocateEmptyObject gets us a clean Object. Tries to make allocate more if we run out */
-static yaffs_Object *yaffs_AllocateEmptyObject(yaffs_Device * dev)
-{
-       yaffs_Object *tn = NULL;
-
-       /* If there are none left make more */
-       if (!dev->freeObjects) {
-               yaffs_CreateFreeObjects(dev, YAFFS_ALLOCATION_NOBJECTS);
-       }
-
-       if (dev->freeObjects) {
-               tn = dev->freeObjects;
-               dev->freeObjects =
-                   (yaffs_Object *) (dev->freeObjects->siblings.next);
-               dev->nFreeObjects--;
-
-               /* Now sweeten it up... */
-
-               memset(tn, 0, sizeof(yaffs_Object));
-               tn->myDev = dev;
-               tn->chunkId = -1;
-               tn->variantType = YAFFS_OBJECT_TYPE_UNKNOWN;
-               INIT_LIST_HEAD(&(tn->hardLinks));
-               INIT_LIST_HEAD(&(tn->hashLink));
-               INIT_LIST_HEAD(&tn->siblings);
-
-               /* Add it to the lost and found directory.
-                * NB Can't put root or lostNFound in lostNFound so
-                * check if lostNFound exists first
-                */
-               if (dev->lostNFoundDir) {
-                       yaffs_AddObjectToDirectory(dev->lostNFoundDir, tn);
-               }
-       }
-
-       return tn;
-}
-
-static yaffs_Object *yaffs_CreateFakeDirectory(yaffs_Device * dev, int number,
-                                              __u32 mode)
-{
-
-       yaffs_Object *obj =
-           yaffs_CreateNewObject(dev, number, YAFFS_OBJECT_TYPE_DIRECTORY);
-       if (obj) {
-               obj->fake = 1;          /* it is fake so it has no NAND presence... */
-               obj->renameAllowed = 0; /* ... and we're not allowed to rename it... */
-               obj->unlinkAllowed = 0; /* ... or unlink it */
-               obj->deleted = 0;
-               obj->unlinked = 0;
-               obj->yst_mode = mode;
-               obj->myDev = dev;
-               obj->chunkId = 0;       /* Not a valid chunk. */
-       }
-
-       return obj;
-
-}
-
-static void yaffs_UnhashObject(yaffs_Object * tn)
-{
-       int bucket;
-       yaffs_Device *dev = tn->myDev;
-
-       /* If it is still linked into the bucket list, free from the list */
-       if (!list_empty(&tn->hashLink)) {
-               list_del_init(&tn->hashLink);
-               bucket = yaffs_HashFunction(tn->objectId);
-               dev->objectBucket[bucket].count--;
-       }
-
-}
-
-/*  FreeObject frees up a Object and puts it back on the free list */
-static void yaffs_FreeObject(yaffs_Object * tn)
-{
-
-       yaffs_Device *dev = tn->myDev;
-
-/* XXX U-BOOT XXX */
-#if 0
-#ifdef  __KERNEL__
-       if (tn->myInode) {
-               /* We're still hooked up to a cached inode.
-                * Don't delete now, but mark for later deletion
-                */
-               tn->deferedFree = 1;
-               return;
-       }
-#endif
-#endif
-       yaffs_UnhashObject(tn);
-
-       /* Link into the free list. */
-       tn->siblings.next = (struct list_head *)(dev->freeObjects);
-       dev->freeObjects = tn;
-       dev->nFreeObjects++;
-}
-
-/* XXX U-BOOT XXX */
-#if 0
-#ifdef __KERNEL__
-
-void yaffs_HandleDeferedFree(yaffs_Object * obj)
-{
-       if (obj->deferedFree) {
-               yaffs_FreeObject(obj);
-       }
-}
-
-#endif
-#endif
-
-static void yaffs_DeinitialiseObjects(yaffs_Device * dev)
-{
-       /* Free the list of allocated Objects */
-
-       yaffs_ObjectList *tmp;
-
-       while (dev->allocatedObjectList) {
-               tmp = dev->allocatedObjectList->next;
-               YFREE(dev->allocatedObjectList->objects);
-               YFREE(dev->allocatedObjectList);
-
-               dev->allocatedObjectList = tmp;
-       }
-
-       dev->freeObjects = NULL;
-       dev->nFreeObjects = 0;
-}
-
-static void yaffs_InitialiseObjects(yaffs_Device * dev)
-{
-       int i;
-
-       dev->allocatedObjectList = NULL;
-       dev->freeObjects = NULL;
-       dev->nFreeObjects = 0;
-
-       for (i = 0; i < YAFFS_NOBJECT_BUCKETS; i++) {
-               INIT_LIST_HEAD(&dev->objectBucket[i].list);
-               dev->objectBucket[i].count = 0;
-       }
-
-}
-
-static int yaffs_FindNiceObjectBucket(yaffs_Device * dev)
-{
-       static int x = 0;
-       int i;
-       int l = 999;
-       int lowest = 999999;
-
-       /* First let's see if we can find one that's empty. */
-
-       for (i = 0; i < 10 && lowest > 0; i++) {
-               x++;
-               x %= YAFFS_NOBJECT_BUCKETS;
-               if (dev->objectBucket[x].count < lowest) {
-                       lowest = dev->objectBucket[x].count;
-                       l = x;
-               }
-
-       }
-
-       /* If we didn't find an empty list, then try
-        * looking a bit further for a short one
-        */
-
-       for (i = 0; i < 10 && lowest > 3; i++) {
-               x++;
-               x %= YAFFS_NOBJECT_BUCKETS;
-               if (dev->objectBucket[x].count < lowest) {
-                       lowest = dev->objectBucket[x].count;
-                       l = x;
-               }
-
-       }
-
-       return l;
-}
-
-static int yaffs_CreateNewObjectNumber(yaffs_Device * dev)
-{
-       int bucket = yaffs_FindNiceObjectBucket(dev);
-
-       /* Now find an object value that has not already been taken
-        * by scanning the list.
-        */
-
-       int found = 0;
-       struct list_head *i;
-
-       __u32 n = (__u32) bucket;
-
-       /* yaffs_CheckObjectHashSanity();  */
-
-       while (!found) {
-               found = 1;
-               n += YAFFS_NOBJECT_BUCKETS;
-               if (1 || dev->objectBucket[bucket].count > 0) {
-                       list_for_each(i, &dev->objectBucket[bucket].list) {
-                               /* If there is already one in the list */
-                               if (i
-                                   && list_entry(i, yaffs_Object,
-                                                 hashLink)->objectId == n) {
-                                       found = 0;
-                               }
-                       }
-               }
-       }
-
-
-       return n;
-}
-
-static void yaffs_HashObject(yaffs_Object * in)
-{
-       int bucket = yaffs_HashFunction(in->objectId);
-       yaffs_Device *dev = in->myDev;
-
-       list_add(&in->hashLink, &dev->objectBucket[bucket].list);
-       dev->objectBucket[bucket].count++;
-
-}
-
-yaffs_Object *yaffs_FindObjectByNumber(yaffs_Device * dev, __u32 number)
-{
-       int bucket = yaffs_HashFunction(number);
-       struct list_head *i;
-       yaffs_Object *in;
-
-       list_for_each(i, &dev->objectBucket[bucket].list) {
-               /* Look if it is in the list */
-               if (i) {
-                       in = list_entry(i, yaffs_Object, hashLink);
-                       if (in->objectId == number) {
-/* XXX U-BOOT XXX */
-#if 0
-#ifdef __KERNEL__
-                               /* Don't tell the VFS about this one if it is defered free */
-                               if (in->deferedFree)
-                                       return NULL;
-#endif
-#endif
-                               return in;
-                       }
-               }
-       }
-
-       return NULL;
-}
-
-yaffs_Object *yaffs_CreateNewObject(yaffs_Device * dev, int number,
-                                   yaffs_ObjectType type)
-{
-
-       yaffs_Object *theObject;
-       yaffs_Tnode *tn;
-
-       if (number < 0) {
-               number = yaffs_CreateNewObjectNumber(dev);
-       }
-
-       theObject = yaffs_AllocateEmptyObject(dev);
-       if(!theObject)
-               return NULL;
-
-       if(type == YAFFS_OBJECT_TYPE_FILE){
-               tn = yaffs_GetTnode(dev);
-               if(!tn){
-                       yaffs_FreeObject(theObject);
-                       return NULL;
-               }
-       }
-
-
-
-       if (theObject) {
-               theObject->fake = 0;
-               theObject->renameAllowed = 1;
-               theObject->unlinkAllowed = 1;
-               theObject->objectId = number;
-               yaffs_HashObject(theObject);
-               theObject->variantType = type;
-#ifdef CONFIG_YAFFS_WINCE
-               yfsd_WinFileTimeNow(theObject->win_atime);
-               theObject->win_ctime[0] = theObject->win_mtime[0] =
-                   theObject->win_atime[0];
-               theObject->win_ctime[1] = theObject->win_mtime[1] =
-                   theObject->win_atime[1];
-
-#else
-
-               theObject->yst_atime = theObject->yst_mtime =
-                   theObject->yst_ctime = Y_CURRENT_TIME;
-#endif
-               switch (type) {
-               case YAFFS_OBJECT_TYPE_FILE:
-                       theObject->variant.fileVariant.fileSize = 0;
-                       theObject->variant.fileVariant.scannedFileSize = 0;
-                       theObject->variant.fileVariant.shrinkSize = 0xFFFFFFFF; /* max __u32 */
-                       theObject->variant.fileVariant.topLevel = 0;
-                       theObject->variant.fileVariant.top = tn;
-                       break;
-               case YAFFS_OBJECT_TYPE_DIRECTORY:
-                       INIT_LIST_HEAD(&theObject->variant.directoryVariant.
-                                      children);
-                       break;
-               case YAFFS_OBJECT_TYPE_SYMLINK:
-               case YAFFS_OBJECT_TYPE_HARDLINK:
-               case YAFFS_OBJECT_TYPE_SPECIAL:
-                       /* No action required */
-                       break;
-               case YAFFS_OBJECT_TYPE_UNKNOWN:
-                       /* todo this should not happen */
-                       break;
-               }
-       }
-
-       return theObject;
-}
-
-static yaffs_Object *yaffs_FindOrCreateObjectByNumber(yaffs_Device * dev,
-                                                     int number,
-                                                     yaffs_ObjectType type)
-{
-       yaffs_Object *theObject = NULL;
-
-       if (number > 0) {
-               theObject = yaffs_FindObjectByNumber(dev, number);
-       }
-
-       if (!theObject) {
-               theObject = yaffs_CreateNewObject(dev, number, type);
-       }
-
-       return theObject;
-
-}
-
-
-static YCHAR *yaffs_CloneString(const YCHAR * str)
-{
-       YCHAR *newStr = NULL;
-
-       if (str && *str) {
-               newStr = YMALLOC((yaffs_strlen(str) + 1) * sizeof(YCHAR));
-               if(newStr)
-                       yaffs_strcpy(newStr, str);
-       }
-
-       return newStr;
-
-}
-
-/*
- * Mknod (create) a new object.
- * equivalentObject only has meaning for a hard link;
- * aliasString only has meaning for a sumlink.
- * rdev only has meaning for devices (a subset of special objects)
- */
-
-static yaffs_Object *yaffs_MknodObject(yaffs_ObjectType type,
-                                      yaffs_Object * parent,
-                                      const YCHAR * name,
-                                      __u32 mode,
-                                      __u32 uid,
-                                      __u32 gid,
-                                      yaffs_Object * equivalentObject,
-                                      const YCHAR * aliasString, __u32 rdev)
-{
-       yaffs_Object *in;
-       YCHAR *str;
-
-       yaffs_Device *dev = parent->myDev;
-
-       /* Check if the entry exists. If it does then fail the call since we don't want a dup.*/
-       if (yaffs_FindObjectByName(parent, name)) {
-               return NULL;
-       }
-
-       in = yaffs_CreateNewObject(dev, -1, type);
-
-       if(type == YAFFS_OBJECT_TYPE_SYMLINK){
-               str = yaffs_CloneString(aliasString);
-               if(!str){
-                       yaffs_FreeObject(in);
-                       return NULL;
-               }
-       }
-
-
-
-       if (in) {
-               in->chunkId = -1;
-               in->valid = 1;
-               in->variantType = type;
-
-               in->yst_mode = mode;
-
-#ifdef CONFIG_YAFFS_WINCE
-               yfsd_WinFileTimeNow(in->win_atime);
-               in->win_ctime[0] = in->win_mtime[0] = in->win_atime[0];
-               in->win_ctime[1] = in->win_mtime[1] = in->win_atime[1];
-
-#else
-               in->yst_atime = in->yst_mtime = in->yst_ctime = Y_CURRENT_TIME;
-
-               in->yst_rdev = rdev;
-               in->yst_uid = uid;
-               in->yst_gid = gid;
-#endif
-               in->nDataChunks = 0;
-
-               yaffs_SetObjectName(in, name);
-               in->dirty = 1;
-
-               yaffs_AddObjectToDirectory(parent, in);
-
-               in->myDev = parent->myDev;
-
-               switch (type) {
-               case YAFFS_OBJECT_TYPE_SYMLINK:
-                       in->variant.symLinkVariant.alias = str;
-                       break;
-               case YAFFS_OBJECT_TYPE_HARDLINK:
-                       in->variant.hardLinkVariant.equivalentObject =
-                           equivalentObject;
-                       in->variant.hardLinkVariant.equivalentObjectId =
-                           equivalentObject->objectId;
-                       list_add(&in->hardLinks, &equivalentObject->hardLinks);
-                       break;
-               case YAFFS_OBJECT_TYPE_FILE:
-               case YAFFS_OBJECT_TYPE_DIRECTORY:
-               case YAFFS_OBJECT_TYPE_SPECIAL:
-               case YAFFS_OBJECT_TYPE_UNKNOWN:
-                       /* do nothing */
-                       break;
-               }
-
-               if (yaffs_UpdateObjectHeader(in, name, 0, 0, 0) < 0) {
-                       /* Could not create the object header, fail the creation */
-                       yaffs_DestroyObject(in);
-                       in = NULL;
-               }
-
-       }
-
-       return in;
-}
-
-yaffs_Object *yaffs_MknodFile(yaffs_Object * parent, const YCHAR * name,
-                             __u32 mode, __u32 uid, __u32 gid)
-{
-       return yaffs_MknodObject(YAFFS_OBJECT_TYPE_FILE, parent, name, mode,
-                                uid, gid, NULL, NULL, 0);
-}
-
-yaffs_Object *yaffs_MknodDirectory(yaffs_Object * parent, const YCHAR * name,
-                                  __u32 mode, __u32 uid, __u32 gid)
-{
-       return yaffs_MknodObject(YAFFS_OBJECT_TYPE_DIRECTORY, parent, name,
-                                mode, uid, gid, NULL, NULL, 0);
-}
-
-yaffs_Object *yaffs_MknodSpecial(yaffs_Object * parent, const YCHAR * name,
-                                __u32 mode, __u32 uid, __u32 gid, __u32 rdev)
-{
-       return yaffs_MknodObject(YAFFS_OBJECT_TYPE_SPECIAL, parent, name, mode,
-                                uid, gid, NULL, NULL, rdev);
-}
-
-yaffs_Object *yaffs_MknodSymLink(yaffs_Object * parent, const YCHAR * name,
-                                __u32 mode, __u32 uid, __u32 gid,
-                                const YCHAR * alias)
-{
-       return yaffs_MknodObject(YAFFS_OBJECT_TYPE_SYMLINK, parent, name, mode,
-                                uid, gid, NULL, alias, 0);
-}
-
-/* yaffs_Link returns the object id of the equivalent object.*/
-yaffs_Object *yaffs_Link(yaffs_Object * parent, const YCHAR * name,
-                        yaffs_Object * equivalentObject)
-{
-       /* Get the real object in case we were fed a hard link as an equivalent object */
-       equivalentObject = yaffs_GetEquivalentObject(equivalentObject);
-
-       if (yaffs_MknodObject
-           (YAFFS_OBJECT_TYPE_HARDLINK, parent, name, 0, 0, 0,
-            equivalentObject, NULL, 0)) {
-               return equivalentObject;
-       } else {
-               return NULL;
-       }
-
-}
-
-static int yaffs_ChangeObjectName(yaffs_Object * obj, yaffs_Object * newDir,
-                                 const YCHAR * newName, int force, int shadows)
-{
-       int unlinkOp;
-       int deleteOp;
-
-       yaffs_Object *existingTarget;
-
-       if (newDir == NULL) {
-               newDir = obj->parent;   /* use the old directory */
-       }
-
-       if (newDir->variantType != YAFFS_OBJECT_TYPE_DIRECTORY) {
-               T(YAFFS_TRACE_ALWAYS,
-                 (TSTR
-                  ("tragendy: yaffs_ChangeObjectName: newDir is not a directory"
-                   TENDSTR)));
-               YBUG();
-       }
-
-       /* TODO: Do we need this different handling for YAFFS2 and YAFFS1?? */
-       if (obj->myDev->isYaffs2) {
-               unlinkOp = (newDir == obj->myDev->unlinkedDir);
-       } else {
-               unlinkOp = (newDir == obj->myDev->unlinkedDir
-                           && obj->variantType == YAFFS_OBJECT_TYPE_FILE);
-       }
-
-       deleteOp = (newDir == obj->myDev->deletedDir);
-
-       existingTarget = yaffs_FindObjectByName(newDir, newName);
-
-       /* If the object is a file going into the unlinked directory,
-        *   then it is OK to just stuff it in since duplicate names are allowed.
-        *   else only proceed if the new name does not exist and if we're putting
-        *   it into a directory.
-        */
-       if ((unlinkOp ||
-            deleteOp ||
-            force ||
-            (shadows > 0) ||
-            !existingTarget) &&
-           newDir->variantType == YAFFS_OBJECT_TYPE_DIRECTORY) {
-               yaffs_SetObjectName(obj, newName);
-               obj->dirty = 1;
-
-               yaffs_AddObjectToDirectory(newDir, obj);
-
-               if (unlinkOp)
-                       obj->unlinked = 1;
-
-               /* If it is a deletion then we mark it as a shrink for gc purposes. */
-               if (yaffs_UpdateObjectHeader(obj, newName, 0, deleteOp, shadows)>= 0)
-                       return YAFFS_OK;
-       }
-
-       return YAFFS_FAIL;
-}
-
-int yaffs_RenameObject(yaffs_Object * oldDir, const YCHAR * oldName,
-                      yaffs_Object * newDir, const YCHAR * newName)
-{
-       yaffs_Object *obj;
-       yaffs_Object *existingTarget;
-       int force = 0;
-
-#ifdef CONFIG_YAFFS_CASE_INSENSITIVE
-       /* Special case for case insemsitive systems (eg. WinCE).
-        * While look-up is case insensitive, the name isn't.
-        * Therefore we might want to change x.txt to X.txt
-       */
-       if (oldDir == newDir && yaffs_strcmp(oldName, newName) == 0) {
-               force = 1;
-       }
-#endif
-
-       obj = yaffs_FindObjectByName(oldDir, oldName);
-       /* Check new name to long. */
-       if (obj->variantType == YAFFS_OBJECT_TYPE_SYMLINK &&
-           yaffs_strlen(newName) > YAFFS_MAX_ALIAS_LENGTH)
-         /* ENAMETOOLONG */
-         return YAFFS_FAIL;
-       else if (obj->variantType != YAFFS_OBJECT_TYPE_SYMLINK &&
-                yaffs_strlen(newName) > YAFFS_MAX_NAME_LENGTH)
-         /* ENAMETOOLONG */
-         return YAFFS_FAIL;
-
-       if (obj && obj->renameAllowed) {
-
-               /* Now do the handling for an existing target, if there is one */
-
-               existingTarget = yaffs_FindObjectByName(newDir, newName);
-               if (existingTarget &&
-                   existingTarget->variantType == YAFFS_OBJECT_TYPE_DIRECTORY &&
-                   !list_empty(&existingTarget->variant.directoryVariant.children)) {
-                       /* There is a target that is a non-empty directory, so we fail */
-                       return YAFFS_FAIL;      /* EEXIST or ENOTEMPTY */
-               } else if (existingTarget && existingTarget != obj) {
-                       /* Nuke the target first, using shadowing,
-                        * but only if it isn't the same object
-                        */
-                       yaffs_ChangeObjectName(obj, newDir, newName, force,
-                                              existingTarget->objectId);
-                       yaffs_UnlinkObject(existingTarget);
-               }
-
-               return yaffs_ChangeObjectName(obj, newDir, newName, 1, 0);
-       }
-       return YAFFS_FAIL;
-}
-
-/*------------------------- Block Management and Page Allocation ----------------*/
-
-static int yaffs_InitialiseBlocks(yaffs_Device * dev)
-{
-       int nBlocks = dev->internalEndBlock - dev->internalStartBlock + 1;
-
-       dev->blockInfo = NULL;
-       dev->chunkBits = NULL;
-
-       dev->allocationBlock = -1;      /* force it to get a new one */
-
-       /* If the first allocation strategy fails, thry the alternate one */
-       dev->blockInfo = YMALLOC(nBlocks * sizeof(yaffs_BlockInfo));
-       if(!dev->blockInfo){
-               dev->blockInfo = YMALLOC_ALT(nBlocks * sizeof(yaffs_BlockInfo));
-               dev->blockInfoAlt = 1;
-       }
-       else
-               dev->blockInfoAlt = 0;
-
-       if(dev->blockInfo){
-
-               /* Set up dynamic blockinfo stuff. */
-               dev->chunkBitmapStride = (dev->nChunksPerBlock + 7) / 8; /* round up bytes */
-               dev->chunkBits = YMALLOC(dev->chunkBitmapStride * nBlocks);
-               if(!dev->chunkBits){
-                       dev->chunkBits = YMALLOC_ALT(dev->chunkBitmapStride * nBlocks);
-                       dev->chunkBitsAlt = 1;
-               }
-               else
-                       dev->chunkBitsAlt = 0;
-       }
-
-       if (dev->blockInfo && dev->chunkBits) {
-               memset(dev->blockInfo, 0, nBlocks * sizeof(yaffs_BlockInfo));
-               memset(dev->chunkBits, 0, dev->chunkBitmapStride * nBlocks);
-               return YAFFS_OK;
-       }
-
-       return YAFFS_FAIL;
-
-}
-
-static void yaffs_DeinitialiseBlocks(yaffs_Device * dev)
-{
-       if(dev->blockInfoAlt && dev->blockInfo)
-               YFREE_ALT(dev->blockInfo);
-       else if(dev->blockInfo)
-               YFREE(dev->blockInfo);
-
-       dev->blockInfoAlt = 0;
-
-       dev->blockInfo = NULL;
-
-       if(dev->chunkBitsAlt && dev->chunkBits)
-               YFREE_ALT(dev->chunkBits);
-       else if(dev->chunkBits)
-               YFREE(dev->chunkBits);
-       dev->chunkBitsAlt = 0;
-       dev->chunkBits = NULL;
-}
-
-static int yaffs_BlockNotDisqualifiedFromGC(yaffs_Device * dev,
-                                           yaffs_BlockInfo * bi)
-{
-       int i;
-       __u32 seq;
-       yaffs_BlockInfo *b;
-
-       if (!dev->isYaffs2)
-               return 1;       /* disqualification only applies to yaffs2. */
-
-       if (!bi->hasShrinkHeader)
-               return 1;       /* can gc */
-
-       /* Find the oldest dirty sequence number if we don't know it and save it
-        * so we don't have to keep recomputing it.
-        */
-       if (!dev->oldestDirtySequence) {
-               seq = dev->sequenceNumber;
-
-               for (i = dev->internalStartBlock; i <= dev->internalEndBlock;
-                    i++) {
-                       b = yaffs_GetBlockInfo(dev, i);
-                       if (b->blockState == YAFFS_BLOCK_STATE_FULL &&
-                           (b->pagesInUse - b->softDeletions) <
-                           dev->nChunksPerBlock && b->sequenceNumber < seq) {
-                               seq = b->sequenceNumber;
-                       }
-               }
-               dev->oldestDirtySequence = seq;
-       }
-
-       /* Can't do gc of this block if there are any blocks older than this one that have
-        * discarded pages.
-        */
-       return (bi->sequenceNumber <= dev->oldestDirtySequence);
-
-}
-
-/* FindDiretiestBlock is used to select the dirtiest block (or close enough)
- * for garbage collection.
- */
-
-static int yaffs_FindBlockForGarbageCollection(yaffs_Device * dev,
-                                              int aggressive)
-{
-
-       int b = dev->currentDirtyChecker;
-
-       int i;
-       int iterations;
-       int dirtiest = -1;
-       int pagesInUse = 0;
-       int prioritised=0;
-       yaffs_BlockInfo *bi;
-       int pendingPrioritisedExist = 0;
-
-       /* First let's see if we need to grab a prioritised block */
-       if(dev->hasPendingPrioritisedGCs){
-               for(i = dev->internalStartBlock; i < dev->internalEndBlock && !prioritised; i++){
-
-                       bi = yaffs_GetBlockInfo(dev, i);
-                       //yaffs_VerifyBlock(dev,bi,i);
-
-                       if(bi->gcPrioritise) {
-                               pendingPrioritisedExist = 1;
-                               if(bi->blockState == YAFFS_BLOCK_STATE_FULL &&
-                                  yaffs_BlockNotDisqualifiedFromGC(dev, bi)){
-                                       pagesInUse = (bi->pagesInUse - bi->softDeletions);
-                                       dirtiest = i;
-                                       prioritised = 1;
-                                       aggressive = 1; /* Fool the non-aggressive skip logiv below */
-                               }
-                       }
-               }
-
-               if(!pendingPrioritisedExist) /* None found, so we can clear this */
-                       dev->hasPendingPrioritisedGCs = 0;
-       }
-
-       /* If we're doing aggressive GC then we are happy to take a less-dirty block, and
-        * search harder.
-        * else (we're doing a leasurely gc), then we only bother to do this if the
-        * block has only a few pages in use.
-        */
-
-       dev->nonAggressiveSkip--;
-
-       if (!aggressive && (dev->nonAggressiveSkip > 0)) {
-               return -1;
-       }
-
-       if(!prioritised)
-               pagesInUse =
-                       (aggressive) ? dev->nChunksPerBlock : YAFFS_PASSIVE_GC_CHUNKS + 1;
-
-       if (aggressive) {
-               iterations =
-                   dev->internalEndBlock - dev->internalStartBlock + 1;
-       } else {
-               iterations =
-                   dev->internalEndBlock - dev->internalStartBlock + 1;
-               iterations = iterations / 16;
-               if (iterations > 200) {
-                       iterations = 200;
-               }
-       }
-
-       for (i = 0; i <= iterations && pagesInUse > 0 && !prioritised; i++) {
-               b++;
-               if (b < dev->internalStartBlock || b > dev->internalEndBlock) {
-                       b = dev->internalStartBlock;
-               }
-
-               if (b < dev->internalStartBlock || b > dev->internalEndBlock) {
-                       T(YAFFS_TRACE_ERROR,
-                         (TSTR("**>> Block %d is not valid" TENDSTR), b));
-                       YBUG();
-               }
-
-               bi = yaffs_GetBlockInfo(dev, b);
-
-#if 0
-               if (bi->blockState == YAFFS_BLOCK_STATE_CHECKPOINT) {
-                       dirtiest = b;
-                       pagesInUse = 0;
-               }
-               else
-#endif
-
-               if (bi->blockState == YAFFS_BLOCK_STATE_FULL &&
-                      (bi->pagesInUse - bi->softDeletions) < pagesInUse &&
-                       yaffs_BlockNotDisqualifiedFromGC(dev, bi)) {
-                       dirtiest = b;
-                       pagesInUse = (bi->pagesInUse - bi->softDeletions);
-               }
-       }
-
-       dev->currentDirtyChecker = b;
-
-       if (dirtiest > 0) {
-               T(YAFFS_TRACE_GC,
-                 (TSTR("GC Selected block %d with %d free, prioritised:%d" TENDSTR), dirtiest,
-                  dev->nChunksPerBlock - pagesInUse,prioritised));
-       }
-
-       dev->oldestDirtySequence = 0;
-
-       if (dirtiest > 0) {
-               dev->nonAggressiveSkip = 4;
-       }
-
-       return dirtiest;
-}
-
-static void yaffs_BlockBecameDirty(yaffs_Device * dev, int blockNo)
-{
-       yaffs_BlockInfo *bi = yaffs_GetBlockInfo(dev, blockNo);
-
-       int erasedOk = 0;
-
-       /* If the block is still healthy erase it and mark as clean.
-        * If the block has had a data failure, then retire it.
-        */
-
-       T(YAFFS_TRACE_GC | YAFFS_TRACE_ERASE,
-               (TSTR("yaffs_BlockBecameDirty block %d state %d %s"TENDSTR),
-               blockNo, bi->blockState, (bi->needsRetiring) ? "needs retiring" : ""));
-
-       bi->blockState = YAFFS_BLOCK_STATE_DIRTY;
-
-       if (!bi->needsRetiring) {
-               yaffs_InvalidateCheckpoint(dev);
-               erasedOk = yaffs_EraseBlockInNAND(dev, blockNo);
-               if (!erasedOk) {
-                       dev->nErasureFailures++;
-                       T(YAFFS_TRACE_ERROR | YAFFS_TRACE_BAD_BLOCKS,
-                         (TSTR("**>> Erasure failed %d" TENDSTR), blockNo));
-               }
-       }
-
-       if (erasedOk &&
-           ((yaffs_traceMask & YAFFS_TRACE_ERASE) || !yaffs_SkipVerification(dev))) {
-               int i;
-               for (i = 0; i < dev->nChunksPerBlock; i++) {
-                       if (!yaffs_CheckChunkErased
-                           (dev, blockNo * dev->nChunksPerBlock + i)) {
-                               T(YAFFS_TRACE_ERROR,
-                                 (TSTR
-                                  (">>Block %d erasure supposedly OK, but chunk %d not erased"
-                                   TENDSTR), blockNo, i));
-                       }
-               }
-       }
-
-       if (erasedOk) {
-               /* Clean it up... */
-               bi->blockState = YAFFS_BLOCK_STATE_EMPTY;
-               dev->nErasedBlocks++;
-               bi->pagesInUse = 0;
-               bi->softDeletions = 0;
-               bi->hasShrinkHeader = 0;
-               bi->skipErasedCheck = 1;  /* This is clean, so no need to check */
-               bi->gcPrioritise = 0;
-               yaffs_ClearChunkBits(dev, blockNo);
-
-               T(YAFFS_TRACE_ERASE,
-                 (TSTR("Erased block %d" TENDSTR), blockNo));
-       } else {
-               dev->nFreeChunks -= dev->nChunksPerBlock;       /* We lost a block of free space */
-
-               yaffs_RetireBlock(dev, blockNo);
-               T(YAFFS_TRACE_ERROR | YAFFS_TRACE_BAD_BLOCKS,
-                 (TSTR("**>> Block %d retired" TENDSTR), blockNo));
-       }
-}
-
-static int yaffs_FindBlockForAllocation(yaffs_Device * dev)
-{
-       int i;
-
-       yaffs_BlockInfo *bi;
-
-       if (dev->nErasedBlocks < 1) {
-               /* Hoosterman we've got a problem.
-                * Can't get space to gc
-                */
-               T(YAFFS_TRACE_ERROR,
-                 (TSTR("yaffs tragedy: no more eraased blocks" TENDSTR)));
-
-               return -1;
-       }
-
-       /* Find an empty block. */
-
-       for (i = dev->internalStartBlock; i <= dev->internalEndBlock; i++) {
-               dev->allocationBlockFinder++;
-               if (dev->allocationBlockFinder < dev->internalStartBlock
-                   || dev->allocationBlockFinder > dev->internalEndBlock) {
-                       dev->allocationBlockFinder = dev->internalStartBlock;
-               }
-
-               bi = yaffs_GetBlockInfo(dev, dev->allocationBlockFinder);
-
-               if (bi->blockState == YAFFS_BLOCK_STATE_EMPTY) {
-                       bi->blockState = YAFFS_BLOCK_STATE_ALLOCATING;
-                       dev->sequenceNumber++;
-                       bi->sequenceNumber = dev->sequenceNumber;
-                       dev->nErasedBlocks--;
-                       T(YAFFS_TRACE_ALLOCATE,
-                         (TSTR("Allocated block %d, seq  %d, %d left" TENDSTR),
-                          dev->allocationBlockFinder, dev->sequenceNumber,
-                          dev->nErasedBlocks));
-                       return dev->allocationBlockFinder;
-               }
-       }
-
-       T(YAFFS_TRACE_ALWAYS,
-         (TSTR
-          ("yaffs tragedy: no more eraased blocks, but there should have been %d"
-           TENDSTR), dev->nErasedBlocks));
-
-       return -1;
-}
-
-
-// Check if there's space to allocate...
-// Thinks.... do we need top make this ths same as yaffs_GetFreeChunks()?
-static int yaffs_CheckSpaceForAllocation(yaffs_Device * dev)
-{
-       int reservedChunks;
-       int reservedBlocks = dev->nReservedBlocks;
-       int checkpointBlocks;
-
-       checkpointBlocks =  dev->nCheckpointReservedBlocks - dev->blocksInCheckpoint;
-       if(checkpointBlocks < 0)
-               checkpointBlocks = 0;
-
-       reservedChunks = ((reservedBlocks + checkpointBlocks) * dev->nChunksPerBlock);
-
-       return (dev->nFreeChunks > reservedChunks);
-}
-
-static int yaffs_AllocateChunk(yaffs_Device * dev, int useReserve, yaffs_BlockInfo **blockUsedPtr)
-{
-       int retVal;
-       yaffs_BlockInfo *bi;
-
-       if (dev->allocationBlock < 0) {
-               /* Get next block to allocate off */
-               dev->allocationBlock = yaffs_FindBlockForAllocation(dev);
-               dev->allocationPage = 0;
-       }
-
-       if (!useReserve && !yaffs_CheckSpaceForAllocation(dev)) {
-               /* Not enough space to allocate unless we're allowed to use the reserve. */
-               return -1;
-       }
-
-       if (dev->nErasedBlocks < dev->nReservedBlocks
-           && dev->allocationPage == 0) {
-               T(YAFFS_TRACE_ALLOCATE, (TSTR("Allocating reserve" TENDSTR)));
-       }
-
-       /* Next page please.... */
-       if (dev->allocationBlock >= 0) {
-               bi = yaffs_GetBlockInfo(dev, dev->allocationBlock);
-
-               retVal = (dev->allocationBlock * dev->nChunksPerBlock) +
-                   dev->allocationPage;
-               bi->pagesInUse++;
-               yaffs_SetChunkBit(dev, dev->allocationBlock,
-                                 dev->allocationPage);
-
-               dev->allocationPage++;
-
-               dev->nFreeChunks--;
-
-               /* If the block is full set the state to full */
-               if (dev->allocationPage >= dev->nChunksPerBlock) {
-                       bi->blockState = YAFFS_BLOCK_STATE_FULL;
-                       dev->allocationBlock = -1;
-               }
-
-               if(blockUsedPtr)
-                       *blockUsedPtr = bi;
-
-               return retVal;
-       }
-
-       T(YAFFS_TRACE_ERROR,
-         (TSTR("!!!!!!!!! Allocator out !!!!!!!!!!!!!!!!!" TENDSTR)));
-
-       return -1;
-}
-
-static int yaffs_GetErasedChunks(yaffs_Device * dev)
-{
-       int n;
-
-       n = dev->nErasedBlocks * dev->nChunksPerBlock;
-
-       if (dev->allocationBlock > 0) {
-               n += (dev->nChunksPerBlock - dev->allocationPage);
-       }
-
-       return n;
-
-}
-
-static int yaffs_GarbageCollectBlock(yaffs_Device * dev, int block)
-{
-       int oldChunk;
-       int newChunk;
-       int chunkInBlock;
-       int markNAND;
-       int retVal = YAFFS_OK;
-       int cleanups = 0;
-       int i;
-       int isCheckpointBlock;
-       int matchingChunk;
-
-       int chunksBefore = yaffs_GetErasedChunks(dev);
-       int chunksAfter;
-
-       yaffs_ExtendedTags tags;
-
-       yaffs_BlockInfo *bi = yaffs_GetBlockInfo(dev, block);
-
-       yaffs_Object *object;
-
-       isCheckpointBlock = (bi->blockState == YAFFS_BLOCK_STATE_CHECKPOINT);
-
-       bi->blockState = YAFFS_BLOCK_STATE_COLLECTING;
-
-       T(YAFFS_TRACE_TRACING,
-         (TSTR("Collecting block %d, in use %d, shrink %d, " TENDSTR), block,
-          bi->pagesInUse, bi->hasShrinkHeader));
-
-       /*yaffs_VerifyFreeChunks(dev); */
-
-       bi->hasShrinkHeader = 0;        /* clear the flag so that the block can erase */
-
-       /* Take off the number of soft deleted entries because
-        * they're going to get really deleted during GC.
-        */
-       dev->nFreeChunks -= bi->softDeletions;
-
-       dev->isDoingGC = 1;
-
-       if (isCheckpointBlock ||
-           !yaffs_StillSomeChunkBits(dev, block)) {
-               T(YAFFS_TRACE_TRACING,
-                 (TSTR
-                  ("Collecting block %d that has no chunks in use" TENDSTR),
-                  block));
-               yaffs_BlockBecameDirty(dev, block);
-       } else {
-
-               __u8 *buffer = yaffs_GetTempBuffer(dev, __LINE__);
-
-               yaffs_VerifyBlock(dev,bi,block);
-
-               for (chunkInBlock = 0, oldChunk = block * dev->nChunksPerBlock;
-                    chunkInBlock < dev->nChunksPerBlock
-                    && yaffs_StillSomeChunkBits(dev, block);
-                    chunkInBlock++, oldChunk++) {
-                       if (yaffs_CheckChunkBit(dev, block, chunkInBlock)) {
-
-                               /* This page is in use and might need to be copied off */
-
-                               markNAND = 1;
-
-                               yaffs_InitialiseTags(&tags);
-
-                               yaffs_ReadChunkWithTagsFromNAND(dev, oldChunk,
-                                                               buffer, &tags);
-
-                               object =
-                                   yaffs_FindObjectByNumber(dev,
-                                                            tags.objectId);
-
-                               T(YAFFS_TRACE_GC_DETAIL,
-                                 (TSTR
-                                  ("Collecting page %d, %d %d %d " TENDSTR),
-                                  chunkInBlock, tags.objectId, tags.chunkId,
-                                  tags.byteCount));
-
-                               if(object && !yaffs_SkipVerification(dev)){
-                                       if(tags.chunkId == 0)
-                                               matchingChunk = object->chunkId;
-                                       else if(object->softDeleted)
-                                               matchingChunk = oldChunk; /* Defeat the test */
-                                       else
-                                               matchingChunk = yaffs_FindChunkInFile(object,tags.chunkId,NULL);
-
-                                       if(oldChunk != matchingChunk)
-                                               T(YAFFS_TRACE_ERROR,
-                                                 (TSTR("gc: page in gc mismatch: %d %d %d %d"TENDSTR),
-                                                 oldChunk,matchingChunk,tags.objectId, tags.chunkId));
-
-                               }
-
-                               if (!object) {
-                                       T(YAFFS_TRACE_ERROR,
-                                         (TSTR
-                                          ("page %d in gc has no object: %d %d %d "
-                                           TENDSTR), oldChunk,
-                                           tags.objectId, tags.chunkId, tags.byteCount));
-                               }
-
-                               if (object && object->deleted
-                                   && tags.chunkId != 0) {
-                                       /* Data chunk in a deleted file, throw it away
-                                        * It's a soft deleted data chunk,
-                                        * No need to copy this, just forget about it and
-                                        * fix up the object.
-                                        */
-
-                                       object->nDataChunks--;
-
-                                       if (object->nDataChunks <= 0) {
-                                               /* remeber to clean up the object */
-                                               dev->gcCleanupList[cleanups] =
-                                                   tags.objectId;
-                                               cleanups++;
-                                       }
-                                       markNAND = 0;
-                               } else if (0
-                                          /* Todo object && object->deleted && object->nDataChunks == 0 */
-                                          ) {
-                                       /* Deleted object header with no data chunks.
-                                        * Can be discarded and the file deleted.
-                                        */
-                                       object->chunkId = 0;
-                                       yaffs_FreeTnode(object->myDev,
-                                                       object->variant.
-                                                       fileVariant.top);
-                                       object->variant.fileVariant.top = NULL;
-                                       yaffs_DoGenericObjectDeletion(object);
-
-                               } else if (object) {
-                                       /* It's either a data chunk in a live file or
-                                        * an ObjectHeader, so we're interested in it.
-                                        * NB Need to keep the ObjectHeaders of deleted files
-                                        * until the whole file has been deleted off
-                                        */
-                                       tags.serialNumber++;
-
-                                       dev->nGCCopies++;
-
-                                       if (tags.chunkId == 0) {
-                                               /* It is an object Id,
-                                                * We need to nuke the shrinkheader flags first
-                                                * We no longer want the shrinkHeader flag since its work is done
-                                                * and if it is left in place it will mess up scanning.
-                                                * Also, clear out any shadowing stuff
-                                                */
-
-                                               yaffs_ObjectHeader *oh;
-                                               oh = (yaffs_ObjectHeader *)buffer;
-                                               oh->isShrink = 0;
-                                               oh->shadowsObject = -1;
-                                               tags.extraShadows = 0;
-                                               tags.extraIsShrinkHeader = 0;
-
-                                               yaffs_VerifyObjectHeader(object,oh,&tags,1);
-                                       }
-
-                                       newChunk =
-                                           yaffs_WriteNewChunkWithTagsToNAND(dev, buffer, &tags, 1);
-
-                                       if (newChunk < 0) {
-                                               retVal = YAFFS_FAIL;
-                                       } else {
-
-                                               /* Ok, now fix up the Tnodes etc. */
-
-                                               if (tags.chunkId == 0) {
-                                                       /* It's a header */
-                                                       object->chunkId =  newChunk;
-                                                       object->serial =   tags.serialNumber;
-                                               } else {
-                                                       /* It's a data chunk */
-                                                       yaffs_PutChunkIntoFile
-                                                           (object,
-                                                            tags.chunkId,
-                                                            newChunk, 0);
-                                               }
-                                       }
-                               }
-
-                               yaffs_DeleteChunk(dev, oldChunk, markNAND, __LINE__);
-
-                       }
-               }
-
-               yaffs_ReleaseTempBuffer(dev, buffer, __LINE__);
-
-
-               /* Do any required cleanups */
-               for (i = 0; i < cleanups; i++) {
-                       /* Time to delete the file too */
-                       object =
-                           yaffs_FindObjectByNumber(dev,
-                                                    dev->gcCleanupList[i]);
-                       if (object) {
-                               yaffs_FreeTnode(dev,
-                                               object->variant.fileVariant.
-                                               top);
-                               object->variant.fileVariant.top = NULL;
-                               T(YAFFS_TRACE_GC,
-                                 (TSTR
-                                  ("yaffs: About to finally delete object %d"
-                                   TENDSTR), object->objectId));
-                               yaffs_DoGenericObjectDeletion(object);
-                               object->myDev->nDeletedFiles--;
-                       }
-
-               }
-
-       }
-
-       yaffs_VerifyCollectedBlock(dev,bi,block);
-
-       if (chunksBefore >= (chunksAfter = yaffs_GetErasedChunks(dev))) {
-               T(YAFFS_TRACE_GC,
-                 (TSTR
-                  ("gc did not increase free chunks before %d after %d"
-                   TENDSTR), chunksBefore, chunksAfter));
-       }
-
-       dev->isDoingGC = 0;
-
-       return YAFFS_OK;
-}
-
-/* New garbage collector
- * If we're very low on erased blocks then we do aggressive garbage collection
- * otherwise we do "leasurely" garbage collection.
- * Aggressive gc looks further (whole array) and will accept less dirty blocks.
- * Passive gc only inspects smaller areas and will only accept more dirty blocks.
- *
- * The idea is to help clear out space in a more spread-out manner.
- * Dunno if it really does anything useful.
- */
-static int yaffs_CheckGarbageCollection(yaffs_Device * dev)
-{
-       int block;
-       int aggressive;
-       int gcOk = YAFFS_OK;
-       int maxTries = 0;
-
-       int checkpointBlockAdjust;
-
-       if (dev->isDoingGC) {
-               /* Bail out so we don't get recursive gc */
-               return YAFFS_OK;
-       }
-
-       /* This loop should pass the first time.
-        * We'll only see looping here if the erase of the collected block fails.
-        */
-
-       do {
-               maxTries++;
-
-               checkpointBlockAdjust = (dev->nCheckpointReservedBlocks - dev->blocksInCheckpoint);
-               if(checkpointBlockAdjust < 0)
-                       checkpointBlockAdjust = 0;
-
-               if (dev->nErasedBlocks < (dev->nReservedBlocks + checkpointBlockAdjust + 2)) {
-                       /* We need a block soon...*/
-                       aggressive = 1;
-               } else {
-                       /* We're in no hurry */
-                       aggressive = 0;
-               }
-
-               block = yaffs_FindBlockForGarbageCollection(dev, aggressive);
-
-               if (block > 0) {
-                       dev->garbageCollections++;
-                       if (!aggressive) {
-                               dev->passiveGarbageCollections++;
-                       }
-
-                       T(YAFFS_TRACE_GC,
-                         (TSTR
-                          ("yaffs: GC erasedBlocks %d aggressive %d" TENDSTR),
-                          dev->nErasedBlocks, aggressive));
-
-                       gcOk = yaffs_GarbageCollectBlock(dev, block);
-               }
-
-               if (dev->nErasedBlocks < (dev->nReservedBlocks) && block > 0) {
-                       T(YAFFS_TRACE_GC,
-                         (TSTR
-                          ("yaffs: GC !!!no reclaim!!! erasedBlocks %d after try %d block %d"
-                           TENDSTR), dev->nErasedBlocks, maxTries, block));
-               }
-       } while ((dev->nErasedBlocks < dev->nReservedBlocks) && (block > 0)
-                && (maxTries < 2));
-
-       return aggressive ? gcOk : YAFFS_OK;
-}
-
-/*-------------------------  TAGS --------------------------------*/
-
-static int yaffs_TagsMatch(const yaffs_ExtendedTags * tags, int objectId,
-                          int chunkInObject)
-{
-       return (tags->chunkId == chunkInObject &&
-               tags->objectId == objectId && !tags->chunkDeleted) ? 1 : 0;
-
-}
-
-
-/*-------------------- Data file manipulation -----------------*/
-
-static int yaffs_FindChunkInFile(yaffs_Object * in, int chunkInInode,
-                                yaffs_ExtendedTags * tags)
-{
-       /*Get the Tnode, then get the level 0 offset chunk offset */
-       yaffs_Tnode *tn;
-       int theChunk = -1;
-       yaffs_ExtendedTags localTags;
-       int retVal = -1;
-
-       yaffs_Device *dev = in->myDev;
-
-       if (!tags) {
-               /* Passed a NULL, so use our own tags space */
-               tags = &localTags;
-       }
-
-       tn = yaffs_FindLevel0Tnode(dev, &in->variant.fileVariant, chunkInInode);
-
-       if (tn) {
-               theChunk = yaffs_GetChunkGroupBase(dev,tn,chunkInInode);
-
-               retVal =
-                   yaffs_FindChunkInGroup(dev, theChunk, tags, in->objectId,
-                                          chunkInInode);
-       }
-       return retVal;
-}
-
-static int yaffs_FindAndDeleteChunkInFile(yaffs_Object * in, int chunkInInode,
-                                         yaffs_ExtendedTags * tags)
-{
-       /* Get the Tnode, then get the level 0 offset chunk offset */
-       yaffs_Tnode *tn;
-       int theChunk = -1;
-       yaffs_ExtendedTags localTags;
-
-       yaffs_Device *dev = in->myDev;
-       int retVal = -1;
-
-       if (!tags) {
-               /* Passed a NULL, so use our own tags space */
-               tags = &localTags;
-       }
-
-       tn = yaffs_FindLevel0Tnode(dev, &in->variant.fileVariant, chunkInInode);
-
-       if (tn) {
-
-               theChunk = yaffs_GetChunkGroupBase(dev,tn,chunkInInode);
-
-               retVal =
-                   yaffs_FindChunkInGroup(dev, theChunk, tags, in->objectId,
-                                          chunkInInode);
-
-               /* Delete the entry in the filestructure (if found) */
-               if (retVal != -1) {
-                       yaffs_PutLevel0Tnode(dev,tn,chunkInInode,0);
-               }
-       } else {
-               /*T(("No level 0 found for %d\n", chunkInInode)); */
-       }
-
-       if (retVal == -1) {
-               /* T(("Could not find %d to delete\n",chunkInInode)); */
-       }
-       return retVal;
-}
-
-#ifdef YAFFS_PARANOID
-
-static int yaffs_CheckFileSanity(yaffs_Object * in)
-{
-       int chunk;
-       int nChunks;
-       int fSize;
-       int failed = 0;
-       int objId;
-       yaffs_Tnode *tn;
-       yaffs_Tags localTags;
-       yaffs_Tags *tags = &localTags;
-       int theChunk;
-       int chunkDeleted;
-
-       if (in->variantType != YAFFS_OBJECT_TYPE_FILE) {
-               /* T(("Object not a file\n")); */
-               return YAFFS_FAIL;
-       }
-
-       objId = in->objectId;
-       fSize = in->variant.fileVariant.fileSize;
-       nChunks =
-           (fSize + in->myDev->nDataBytesPerChunk - 1) / in->myDev->nDataBytesPerChunk;
-
-       for (chunk = 1; chunk <= nChunks; chunk++) {
-               tn = yaffs_FindLevel0Tnode(in->myDev, &in->variant.fileVariant,
-                                          chunk);
-
-               if (tn) {
-
-                       theChunk = yaffs_GetChunkGroupBase(dev,tn,chunk);
-
-                       if (yaffs_CheckChunkBits
-                           (dev, theChunk / dev->nChunksPerBlock,
-                            theChunk % dev->nChunksPerBlock)) {
-
-                               yaffs_ReadChunkTagsFromNAND(in->myDev, theChunk,
-                                                           tags,
-                                                           &chunkDeleted);
-                               if (yaffs_TagsMatch
-                                   (tags, in->objectId, chunk, chunkDeleted)) {
-                                       /* found it; */
-
-                               }
-                       } else {
-
-                               failed = 1;
-                       }
-
-               } else {
-                       /* T(("No level 0 found for %d\n", chunk)); */
-               }
-       }
-
-       return failed ? YAFFS_FAIL : YAFFS_OK;
-}
-
-#endif
-
-static int yaffs_PutChunkIntoFile(yaffs_Object * in, int chunkInInode,
-                                 int chunkInNAND, int inScan)
-{
-       /* NB inScan is zero unless scanning.
-        * For forward scanning, inScan is > 0;
-        * for backward scanning inScan is < 0
-        */
-
-       yaffs_Tnode *tn;
-       yaffs_Device *dev = in->myDev;
-       int existingChunk;
-       yaffs_ExtendedTags existingTags;
-       yaffs_ExtendedTags newTags;
-       unsigned existingSerial, newSerial;
-
-       if (in->variantType != YAFFS_OBJECT_TYPE_FILE) {
-               /* Just ignore an attempt at putting a chunk into a non-file during scanning
-                * If it is not during Scanning then something went wrong!
-                */
-               if (!inScan) {
-                       T(YAFFS_TRACE_ERROR,
-                         (TSTR
-                          ("yaffs tragedy:attempt to put data chunk into a non-file"
-                           TENDSTR)));
-                       YBUG();
-               }
-
-               yaffs_DeleteChunk(dev, chunkInNAND, 1, __LINE__);
-               return YAFFS_OK;
-       }
-
-       tn = yaffs_AddOrFindLevel0Tnode(dev,
-                                       &in->variant.fileVariant,
-                                       chunkInInode,
-                                       NULL);
-       if (!tn) {
-               return YAFFS_FAIL;
-       }
-
-       existingChunk = yaffs_GetChunkGroupBase(dev,tn,chunkInInode);
-
-       if (inScan != 0) {
-               /* If we're scanning then we need to test for duplicates
-                * NB This does not need to be efficient since it should only ever
-                * happen when the power fails during a write, then only one
-                * chunk should ever be affected.
-                *
-                * Correction for YAFFS2: This could happen quite a lot and we need to think about efficiency! TODO
-                * Update: For backward scanning we don't need to re-read tags so this is quite cheap.
-                */
-
-               if (existingChunk != 0) {
-                       /* NB Right now existing chunk will not be real chunkId if the device >= 32MB
-                        *    thus we have to do a FindChunkInFile to get the real chunk id.
-                        *
-                        * We have a duplicate now we need to decide which one to use:
-                        *
-                        * Backwards scanning YAFFS2: The old one is what we use, dump the new one.
-                        * Forward scanning YAFFS2: The new one is what we use, dump the old one.
-                        * YAFFS1: Get both sets of tags and compare serial numbers.
-                        */
-
-                       if (inScan > 0) {
-                               /* Only do this for forward scanning */
-                               yaffs_ReadChunkWithTagsFromNAND(dev,
-                                                               chunkInNAND,
-                                                               NULL, &newTags);
-
-                               /* Do a proper find */
-                               existingChunk =
-                                   yaffs_FindChunkInFile(in, chunkInInode,
-                                                         &existingTags);
-                       }
-
-                       if (existingChunk <= 0) {
-                               /*Hoosterman - how did this happen? */
-
-                               T(YAFFS_TRACE_ERROR,
-                                 (TSTR
-                                  ("yaffs tragedy: existing chunk < 0 in scan"
-                                   TENDSTR)));
-
-                       }
-
-                       /* NB The deleted flags should be false, otherwise the chunks will
-                        * not be loaded during a scan
-                        */
-
-                       newSerial = newTags.serialNumber;
-                       existingSerial = existingTags.serialNumber;
-
-                       if ((inScan > 0) &&
-                           (in->myDev->isYaffs2 ||
-                            existingChunk <= 0 ||
-                            ((existingSerial + 1) & 3) == newSerial)) {
-                               /* Forward scanning.
-                                * Use new
-                                * Delete the old one and drop through to update the tnode
-                                */
-                               yaffs_DeleteChunk(dev, existingChunk, 1,
-                                                 __LINE__);
-                       } else {
-                               /* Backward scanning or we want to use the existing one
-                                * Use existing.
-                                * Delete the new one and return early so that the tnode isn't changed
-                                */
-                               yaffs_DeleteChunk(dev, chunkInNAND, 1,
-                                                 __LINE__);
-                               return YAFFS_OK;
-                       }
-               }
-
-       }
-
-       if (existingChunk == 0) {
-               in->nDataChunks++;
-       }
-
-       yaffs_PutLevel0Tnode(dev,tn,chunkInInode,chunkInNAND);
-
-       return YAFFS_OK;
-}
-
-static int yaffs_ReadChunkDataFromObject(yaffs_Object * in, int chunkInInode,
-                                        __u8 * buffer)
-{
-       int chunkInNAND = yaffs_FindChunkInFile(in, chunkInInode, NULL);
-
-       if (chunkInNAND >= 0) {
-               return yaffs_ReadChunkWithTagsFromNAND(in->myDev, chunkInNAND,
-                                                      buffer,NULL);
-       } else {
-               T(YAFFS_TRACE_NANDACCESS,
-                 (TSTR("Chunk %d not found zero instead" TENDSTR),
-                  chunkInNAND));
-               /* get sane (zero) data if you read a hole */
-               memset(buffer, 0, in->myDev->nDataBytesPerChunk);
-               return 0;
-       }
-
-}
-
-void yaffs_DeleteChunk(yaffs_Device * dev, int chunkId, int markNAND, int lyn)
-{
-       int block;
-       int page;
-       yaffs_ExtendedTags tags;
-       yaffs_BlockInfo *bi;
-
-       if (chunkId <= 0)
-               return;
-
-
-       dev->nDeletions++;
-       block = chunkId / dev->nChunksPerBlock;
-       page = chunkId % dev->nChunksPerBlock;
-
-
-       if(!yaffs_CheckChunkBit(dev,block,page))
-               T(YAFFS_TRACE_VERIFY,
-                       (TSTR("Deleting invalid chunk %d"TENDSTR),
-                        chunkId));
-
-       bi = yaffs_GetBlockInfo(dev, block);
-
-       T(YAFFS_TRACE_DELETION,
-         (TSTR("line %d delete of chunk %d" TENDSTR), lyn, chunkId));
-
-       if (markNAND &&
-           bi->blockState != YAFFS_BLOCK_STATE_COLLECTING && !dev->isYaffs2) {
-
-               yaffs_InitialiseTags(&tags);
-
-               tags.chunkDeleted = 1;
-
-               yaffs_WriteChunkWithTagsToNAND(dev, chunkId, NULL, &tags);
-               yaffs_HandleUpdateChunk(dev, chunkId, &tags);
-       } else {
-               dev->nUnmarkedDeletions++;
-       }
-
-       /* Pull out of the management area.
-        * If the whole block became dirty, this will kick off an erasure.
-        */
-       if (bi->blockState == YAFFS_BLOCK_STATE_ALLOCATING ||
-           bi->blockState == YAFFS_BLOCK_STATE_FULL ||
-           bi->blockState == YAFFS_BLOCK_STATE_NEEDS_SCANNING ||
-           bi->blockState == YAFFS_BLOCK_STATE_COLLECTING) {
-               dev->nFreeChunks++;
-
-               yaffs_ClearChunkBit(dev, block, page);
-
-               bi->pagesInUse--;
-
-               if (bi->pagesInUse == 0 &&
-                   !bi->hasShrinkHeader &&
-                   bi->blockState != YAFFS_BLOCK_STATE_ALLOCATING &&
-                   bi->blockState != YAFFS_BLOCK_STATE_NEEDS_SCANNING) {
-                       yaffs_BlockBecameDirty(dev, block);
-               }
-
-       } else {
-               /* T(("Bad news deleting chunk %d\n",chunkId)); */
-       }
-
-}
-
-static int yaffs_WriteChunkDataToObject(yaffs_Object * in, int chunkInInode,
-                                       const __u8 * buffer, int nBytes,
-                                       int useReserve)
-{
-       /* Find old chunk Need to do this to get serial number
-        * Write new one and patch into tree.
-        * Invalidate old tags.
-        */
-
-       int prevChunkId;
-       yaffs_ExtendedTags prevTags;
-
-       int newChunkId;
-       yaffs_ExtendedTags newTags;
-
-       yaffs_Device *dev = in->myDev;
-
-       yaffs_CheckGarbageCollection(dev);
-
-       /* Get the previous chunk at this location in the file if it exists */
-       prevChunkId = yaffs_FindChunkInFile(in, chunkInInode, &prevTags);
-
-       /* Set up new tags */
-       yaffs_InitialiseTags(&newTags);
-
-       newTags.chunkId = chunkInInode;
-       newTags.objectId = in->objectId;
-       newTags.serialNumber =
-           (prevChunkId >= 0) ? prevTags.serialNumber + 1 : 1;
-       newTags.byteCount = nBytes;
-
-       newChunkId =
-           yaffs_WriteNewChunkWithTagsToNAND(dev, buffer, &newTags,
-                                             useReserve);
-
-       if (newChunkId >= 0) {
-               yaffs_PutChunkIntoFile(in, chunkInInode, newChunkId, 0);
-
-               if (prevChunkId >= 0) {
-                       yaffs_DeleteChunk(dev, prevChunkId, 1, __LINE__);
-
-               }
-
-               yaffs_CheckFileSanity(in);
-       }
-       return newChunkId;
-
-}
-
-/* UpdateObjectHeader updates the header on NAND for an object.
- * If name is not NULL, then that new name is used.
- */
-int yaffs_UpdateObjectHeader(yaffs_Object * in, const YCHAR * name, int force,
-                            int isShrink, int shadows)
-{
-
-       yaffs_BlockInfo *bi;
-
-       yaffs_Device *dev = in->myDev;
-
-       int prevChunkId;
-       int retVal = 0;
-       int result = 0;
-
-       int newChunkId;
-       yaffs_ExtendedTags newTags;
-       yaffs_ExtendedTags oldTags;
-
-       __u8 *buffer = NULL;
-       YCHAR oldName[YAFFS_MAX_NAME_LENGTH + 1];
-
-       yaffs_ObjectHeader *oh = NULL;
-
-       yaffs_strcpy(oldName,"silly old name");
-
-       if (!in->fake || force) {
-
-               yaffs_CheckGarbageCollection(dev);
-               yaffs_CheckObjectDetailsLoaded(in);
-
-               buffer = yaffs_GetTempBuffer(in->myDev, __LINE__);
-               oh = (yaffs_ObjectHeader *) buffer;
-
-               prevChunkId = in->chunkId;
-
-               if (prevChunkId >= 0) {
-                       result = yaffs_ReadChunkWithTagsFromNAND(dev, prevChunkId,
-                                                       buffer, &oldTags);
-
-                       yaffs_VerifyObjectHeader(in,oh,&oldTags,0);
-
-                       memcpy(oldName, oh->name, sizeof(oh->name));
-               }
-
-               memset(buffer, 0xFF, dev->nDataBytesPerChunk);
-
-               oh->type = in->variantType;
-               oh->yst_mode = in->yst_mode;
-               oh->shadowsObject = shadows;
-
-#ifdef CONFIG_YAFFS_WINCE
-               oh->win_atime[0] = in->win_atime[0];
-               oh->win_ctime[0] = in->win_ctime[0];
-               oh->win_mtime[0] = in->win_mtime[0];
-               oh->win_atime[1] = in->win_atime[1];
-               oh->win_ctime[1] = in->win_ctime[1];
-               oh->win_mtime[1] = in->win_mtime[1];
-#else
-               oh->yst_uid = in->yst_uid;
-               oh->yst_gid = in->yst_gid;
-               oh->yst_atime = in->yst_atime;
-               oh->yst_mtime = in->yst_mtime;
-               oh->yst_ctime = in->yst_ctime;
-               oh->yst_rdev = in->yst_rdev;
-#endif
-               if (in->parent) {
-                       oh->parentObjectId = in->parent->objectId;
-               } else {
-                       oh->parentObjectId = 0;
-               }
-
-               if (name && *name) {
-                       memset(oh->name, 0, sizeof(oh->name));
-                       yaffs_strncpy(oh->name, name, YAFFS_MAX_NAME_LENGTH);
-               } else if (prevChunkId>=0) {
-                       memcpy(oh->name, oldName, sizeof(oh->name));
-               } else {
-                       memset(oh->name, 0, sizeof(oh->name));
-               }
-
-               oh->isShrink = isShrink;
-
-               switch (in->variantType) {
-               case YAFFS_OBJECT_TYPE_UNKNOWN:
-                       /* Should not happen */
-                       break;
-               case YAFFS_OBJECT_TYPE_FILE:
-                       oh->fileSize =
-                           (oh->parentObjectId == YAFFS_OBJECTID_DELETED
-                            || oh->parentObjectId ==
-                            YAFFS_OBJECTID_UNLINKED) ? 0 : in->variant.
-                           fileVariant.fileSize;
-                       break;
-               case YAFFS_OBJECT_TYPE_HARDLINK:
-                       oh->equivalentObjectId =
-                           in->variant.hardLinkVariant.equivalentObjectId;
-                       break;
-               case YAFFS_OBJECT_TYPE_SPECIAL:
-                       /* Do nothing */
-                       break;
-               case YAFFS_OBJECT_TYPE_DIRECTORY:
-                       /* Do nothing */
-                       break;
-               case YAFFS_OBJECT_TYPE_SYMLINK:
-                       yaffs_strncpy(oh->alias,
-                                     in->variant.symLinkVariant.alias,
-                                     YAFFS_MAX_ALIAS_LENGTH);
-                       oh->alias[YAFFS_MAX_ALIAS_LENGTH] = 0;
-                       break;
-               }
-
-               /* Tags */
-               yaffs_InitialiseTags(&newTags);
-               in->serial++;
-               newTags.chunkId = 0;
-               newTags.objectId = in->objectId;
-               newTags.serialNumber = in->serial;
-
-               /* Add extra info for file header */
-
-               newTags.extraHeaderInfoAvailable = 1;
-               newTags.extraParentObjectId = oh->parentObjectId;
-               newTags.extraFileLength = oh->fileSize;
-               newTags.extraIsShrinkHeader = oh->isShrink;
-               newTags.extraEquivalentObjectId = oh->equivalentObjectId;
-               newTags.extraShadows = (oh->shadowsObject > 0) ? 1 : 0;
-               newTags.extraObjectType = in->variantType;
-
-               yaffs_VerifyObjectHeader(in,oh,&newTags,1);
-
-               /* Create new chunk in NAND */
-               newChunkId =
-                   yaffs_WriteNewChunkWithTagsToNAND(dev, buffer, &newTags,
-                                                     (prevChunkId >= 0) ? 1 : 0);
-
-               if (newChunkId >= 0) {
-
-                       in->chunkId = newChunkId;
-
-                       if (prevChunkId >= 0) {
-                               yaffs_DeleteChunk(dev, prevChunkId, 1,
-                                                 __LINE__);
-                       }
-
-                       if(!yaffs_ObjectHasCachedWriteData(in))
-                               in->dirty = 0;
-
-                       /* If this was a shrink, then mark the block that the chunk lives on */
-                       if (isShrink) {
-                               bi = yaffs_GetBlockInfo(in->myDev,
-                                                       newChunkId /in->myDev-> nChunksPerBlock);
-                               bi->hasShrinkHeader = 1;
-                       }
-
-               }
-
-               retVal = newChunkId;
-
-       }
-
-       if (buffer)
-               yaffs_ReleaseTempBuffer(dev, buffer, __LINE__);
-
-       return retVal;
-}
-
-/*------------------------ Short Operations Cache ----------------------------------------
- *   In many situations where there is no high level buffering (eg WinCE) a lot of
- *   reads might be short sequential reads, and a lot of writes may be short
- *   sequential writes. eg. scanning/writing a jpeg file.
- *   In these cases, a short read/write cache can provide a huge perfomance benefit
- *   with dumb-as-a-rock code.
- *   In Linux, the page cache provides read buffering aand the short op cache provides write
- *   buffering.
- *
- *   There are a limited number (~10) of cache chunks per device so that we don't
- *   need a very intelligent search.
- */
-
-static int yaffs_ObjectHasCachedWriteData(yaffs_Object *obj)
-{
-       yaffs_Device *dev = obj->myDev;
-       int i;
-       yaffs_ChunkCache *cache;
-       int nCaches = obj->myDev->nShortOpCaches;
-
-       for(i = 0; i < nCaches; i++){
-               cache = &dev->srCache[i];
-               if (cache->object == obj &&
-                   cache->dirty)
-                       return 1;
-       }
-
-       return 0;
-}
-
-
-static void yaffs_FlushFilesChunkCache(yaffs_Object * obj)
-{
-       yaffs_Device *dev = obj->myDev;
-       int lowest = -99;       /* Stop compiler whining. */
-       int i;
-       yaffs_ChunkCache *cache;
-       int chunkWritten = 0;
-       int nCaches = obj->myDev->nShortOpCaches;
-
-       if (nCaches > 0) {
-               do {
-                       cache = NULL;
-
-                       /* Find the dirty cache for this object with the lowest chunk id. */
-                       for (i = 0; i < nCaches; i++) {
-                               if (dev->srCache[i].object == obj &&
-                                   dev->srCache[i].dirty) {
-                                       if (!cache
-                                           || dev->srCache[i].chunkId <
-                                           lowest) {
-                                               cache = &dev->srCache[i];
-                                               lowest = cache->chunkId;
-                                       }
-                               }
-                       }
-
-                       if (cache && !cache->locked) {
-                               /* Write it out and free it up */
-
-                               chunkWritten =
-                                   yaffs_WriteChunkDataToObject(cache->object,
-                                                                cache->chunkId,
-                                                                cache->data,
-                                                                cache->nBytes,
-                                                                1);
-                               cache->dirty = 0;
-                               cache->object = NULL;
-                       }
-
-               } while (cache && chunkWritten > 0);
-
-               if (cache) {
-                       /* Hoosterman, disk full while writing cache out. */
-                       T(YAFFS_TRACE_ERROR,
-                         (TSTR("yaffs tragedy: no space during cache write" TENDSTR)));
-
-               }
-       }
-
-}
-
-/*yaffs_FlushEntireDeviceCache(dev)
- *
- *
- */
-
-void yaffs_FlushEntireDeviceCache(yaffs_Device *dev)
-{
-       yaffs_Object *obj;
-       int nCaches = dev->nShortOpCaches;
-       int i;
-
-       /* Find a dirty object in the cache and flush it...
-        * until there are no further dirty objects.
-        */
-       do {
-               obj = NULL;
-               for( i = 0; i < nCaches && !obj; i++) {
-                       if (dev->srCache[i].object &&
-                           dev->srCache[i].dirty)
-                               obj = dev->srCache[i].object;
-
-               }
-               if(obj)
-                       yaffs_FlushFilesChunkCache(obj);
-
-       } while(obj);
-
-}
-
-
-/* Grab us a cache chunk for use.
- * First look for an empty one.
- * Then look for the least recently used non-dirty one.
- * Then look for the least recently used dirty one...., flush and look again.
- */
-static yaffs_ChunkCache *yaffs_GrabChunkCacheWorker(yaffs_Device * dev)
-{
-       int i;
-       int usage;
-       int theOne;
-
-       if (dev->nShortOpCaches > 0) {
-               for (i = 0; i < dev->nShortOpCaches; i++) {
-                       if (!dev->srCache[i].object)
-                               return &dev->srCache[i];
-               }
-
-               return NULL;
-
-               theOne = -1;
-               usage = 0;      /* just to stop the compiler grizzling */
-
-               for (i = 0; i < dev->nShortOpCaches; i++) {
-                       if (!dev->srCache[i].dirty &&
-                           ((dev->srCache[i].lastUse < usage && theOne >= 0) ||
-                            theOne < 0)) {
-                               usage = dev->srCache[i].lastUse;
-                               theOne = i;
-                       }
-               }
-
-
-               return theOne >= 0 ? &dev->srCache[theOne] : NULL;
-       } else {
-               return NULL;
-       }
-
-}
-
-static yaffs_ChunkCache *yaffs_GrabChunkCache(yaffs_Device * dev)
-{
-       yaffs_ChunkCache *cache;
-       yaffs_Object *theObj;
-       int usage;
-       int i;
-       int pushout;
-
-       if (dev->nShortOpCaches > 0) {
-               /* Try find a non-dirty one... */
-
-               cache = yaffs_GrabChunkCacheWorker(dev);
-
-               if (!cache) {
-                       /* They were all dirty, find the last recently used object and flush
-                        * its cache, then  find again.
-                        * NB what's here is not very accurate, we actually flush the object
-                        * the last recently used page.
-                        */
-
-                       /* With locking we can't assume we can use entry zero */
-
-                       theObj = NULL;
-                       usage = -1;
-                       cache = NULL;
-                       pushout = -1;
-
-                       for (i = 0; i < dev->nShortOpCaches; i++) {
-                               if (dev->srCache[i].object &&
-                                   !dev->srCache[i].locked &&
-                                   (dev->srCache[i].lastUse < usage || !cache))
-                               {
-                                       usage = dev->srCache[i].lastUse;
-                                       theObj = dev->srCache[i].object;
-                                       cache = &dev->srCache[i];
-                                       pushout = i;
-                               }
-                       }
-
-                       if (!cache || cache->dirty) {
-                               /* Flush and try again */
-                               yaffs_FlushFilesChunkCache(theObj);
-                               cache = yaffs_GrabChunkCacheWorker(dev);
-                       }
-
-               }
-               return cache;
-       } else
-               return NULL;
-
-}
-
-/* Find a cached chunk */
-static yaffs_ChunkCache *yaffs_FindChunkCache(const yaffs_Object * obj,
-                                             int chunkId)
-{
-       yaffs_Device *dev = obj->myDev;
-       int i;
-       if (dev->nShortOpCaches > 0) {
-               for (i = 0; i < dev->nShortOpCaches; i++) {
-                       if (dev->srCache[i].object == obj &&
-                           dev->srCache[i].chunkId == chunkId) {
-                               dev->cacheHits++;
-
-                               return &dev->srCache[i];
-                       }
-               }
-       }
-       return NULL;
-}
-
-/* Mark the chunk for the least recently used algorithym */
-static void yaffs_UseChunkCache(yaffs_Device * dev, yaffs_ChunkCache * cache,
-                               int isAWrite)
-{
-
-       if (dev->nShortOpCaches > 0) {
-               if (dev->srLastUse < 0 || dev->srLastUse > 100000000) {
-                       /* Reset the cache usages */
-                       int i;
-                       for (i = 1; i < dev->nShortOpCaches; i++) {
-                               dev->srCache[i].lastUse = 0;
-                       }
-                       dev->srLastUse = 0;
-               }
-
-               dev->srLastUse++;
-
-               cache->lastUse = dev->srLastUse;
-
-               if (isAWrite) {
-                       cache->dirty = 1;
-               }
-       }
-}
-
-/* Invalidate a single cache page.
- * Do this when a whole page gets written,
- * ie the short cache for this page is no longer valid.
- */
-static void yaffs_InvalidateChunkCache(yaffs_Object * object, int chunkId)
-{
-       if (object->myDev->nShortOpCaches > 0) {
-               yaffs_ChunkCache *cache = yaffs_FindChunkCache(object, chunkId);
-
-               if (cache) {
-                       cache->object = NULL;
-               }
-       }
-}
-
-/* Invalidate all the cache pages associated with this object
- * Do this whenever ther file is deleted or resized.
- */
-static void yaffs_InvalidateWholeChunkCache(yaffs_Object * in)
-{
-       int i;
-       yaffs_Device *dev = in->myDev;
-
-       if (dev->nShortOpCaches > 0) {
-               /* Invalidate it. */
-               for (i = 0; i < dev->nShortOpCaches; i++) {
-                       if (dev->srCache[i].object == in) {
-                               dev->srCache[i].object = NULL;
-                       }
-               }
-       }
-}
-
-/*--------------------- Checkpointing --------------------*/
-
-
-static int yaffs_WriteCheckpointValidityMarker(yaffs_Device *dev,int head)
-{
-       yaffs_CheckpointValidity cp;
-
-       memset(&cp,0,sizeof(cp));
-
-       cp.structType = sizeof(cp);
-       cp.magic = YAFFS_MAGIC;
-       cp.version = YAFFS_CHECKPOINT_VERSION;
-       cp.head = (head) ? 1 : 0;
-
-       return (yaffs_CheckpointWrite(dev,&cp,sizeof(cp)) == sizeof(cp))?
-               1 : 0;
-}
-
-static int yaffs_ReadCheckpointValidityMarker(yaffs_Device *dev, int head)
-{
-       yaffs_CheckpointValidity cp;
-       int ok;
-
-       ok = (yaffs_CheckpointRead(dev,&cp,sizeof(cp)) == sizeof(cp));
-
-       if(ok)
-               ok = (cp.structType == sizeof(cp)) &&
-                    (cp.magic == YAFFS_MAGIC) &&
-                    (cp.version == YAFFS_CHECKPOINT_VERSION) &&
-                    (cp.head == ((head) ? 1 : 0));
-       return ok ? 1 : 0;
-}
-
-static void yaffs_DeviceToCheckpointDevice(yaffs_CheckpointDevice *cp,
-                                          yaffs_Device *dev)
-{
-       cp->nErasedBlocks = dev->nErasedBlocks;
-       cp->allocationBlock = dev->allocationBlock;
-       cp->allocationPage = dev->allocationPage;
-       cp->nFreeChunks = dev->nFreeChunks;
-
-       cp->nDeletedFiles = dev->nDeletedFiles;
-       cp->nUnlinkedFiles = dev->nUnlinkedFiles;
-       cp->nBackgroundDeletions = dev->nBackgroundDeletions;
-       cp->sequenceNumber = dev->sequenceNumber;
-       cp->oldestDirtySequence = dev->oldestDirtySequence;
-
-}
-
-static void yaffs_CheckpointDeviceToDevice(yaffs_Device *dev,
-                                          yaffs_CheckpointDevice *cp)
-{
-       dev->nErasedBlocks = cp->nErasedBlocks;
-       dev->allocationBlock = cp->allocationBlock;
-       dev->allocationPage = cp->allocationPage;
-       dev->nFreeChunks = cp->nFreeChunks;
-
-       dev->nDeletedFiles = cp->nDeletedFiles;
-       dev->nUnlinkedFiles = cp->nUnlinkedFiles;
-       dev->nBackgroundDeletions = cp->nBackgroundDeletions;
-       dev->sequenceNumber = cp->sequenceNumber;
-       dev->oldestDirtySequence = cp->oldestDirtySequence;
-}
-
-
-static int yaffs_WriteCheckpointDevice(yaffs_Device *dev)
-{
-       yaffs_CheckpointDevice cp;
-       __u32 nBytes;
-       __u32 nBlocks = (dev->internalEndBlock - dev->internalStartBlock + 1);
-
-       int ok;
-
-       /* Write device runtime values*/
-       yaffs_DeviceToCheckpointDevice(&cp,dev);
-       cp.structType = sizeof(cp);
-
-       ok = (yaffs_CheckpointWrite(dev,&cp,sizeof(cp)) == sizeof(cp));
-
-       /* Write block info */
-       if(ok) {
-               nBytes = nBlocks * sizeof(yaffs_BlockInfo);
-               ok = (yaffs_CheckpointWrite(dev,dev->blockInfo,nBytes) == nBytes);
-       }
-
-       /* Write chunk bits */
-       if(ok) {
-               nBytes = nBlocks * dev->chunkBitmapStride;
-               ok = (yaffs_CheckpointWrite(dev,dev->chunkBits,nBytes) == nBytes);
-       }
-       return   ok ? 1 : 0;
-
-}
-
-static int yaffs_ReadCheckpointDevice(yaffs_Device *dev)
-{
-       yaffs_CheckpointDevice cp;
-       __u32 nBytes;
-       __u32 nBlocks = (dev->internalEndBlock - dev->internalStartBlock + 1);
-
-       int ok;
-
-       ok = (yaffs_CheckpointRead(dev,&cp,sizeof(cp)) == sizeof(cp));
-       if(!ok)
-               return 0;
-
-       if(cp.structType != sizeof(cp))
-               return 0;
-
-
-       yaffs_CheckpointDeviceToDevice(dev,&cp);
-
-       nBytes = nBlocks * sizeof(yaffs_BlockInfo);
-
-       ok = (yaffs_CheckpointRead(dev,dev->blockInfo,nBytes) == nBytes);
-
-       if(!ok)
-               return 0;
-       nBytes = nBlocks * dev->chunkBitmapStride;
-
-       ok = (yaffs_CheckpointRead(dev,dev->chunkBits,nBytes) == nBytes);
-
-       return ok ? 1 : 0;
-}
-
-static void yaffs_ObjectToCheckpointObject(yaffs_CheckpointObject *cp,
-                                          yaffs_Object *obj)
-{
-
-       cp->objectId = obj->objectId;
-       cp->parentId = (obj->parent) ? obj->parent->objectId : 0;
-       cp->chunkId = obj->chunkId;
-       cp->variantType = obj->variantType;
-       cp->deleted = obj->deleted;
-       cp->softDeleted = obj->softDeleted;
-       cp->unlinked = obj->unlinked;
-       cp->fake = obj->fake;
-       cp->renameAllowed = obj->renameAllowed;
-       cp->unlinkAllowed = obj->unlinkAllowed;
-       cp->serial = obj->serial;
-       cp->nDataChunks = obj->nDataChunks;
-
-       if(obj->variantType == YAFFS_OBJECT_TYPE_FILE)
-               cp->fileSizeOrEquivalentObjectId = obj->variant.fileVariant.fileSize;
-       else if(obj->variantType == YAFFS_OBJECT_TYPE_HARDLINK)
-               cp->fileSizeOrEquivalentObjectId = obj->variant.hardLinkVariant.equivalentObjectId;
-}
-
-static void yaffs_CheckpointObjectToObject( yaffs_Object *obj,yaffs_CheckpointObject *cp)
-{
-
-       yaffs_Object *parent;
-
-       obj->objectId = cp->objectId;
-
-       if(cp->parentId)
-               parent = yaffs_FindOrCreateObjectByNumber(
-                                       obj->myDev,
-                                       cp->parentId,
-                                       YAFFS_OBJECT_TYPE_DIRECTORY);
-       else
-               parent = NULL;
-
-       if(parent)
-               yaffs_AddObjectToDirectory(parent, obj);
-
-       obj->chunkId = cp->chunkId;
-       obj->variantType = cp->variantType;
-       obj->deleted = cp->deleted;
-       obj->softDeleted = cp->softDeleted;
-       obj->unlinked = cp->unlinked;
-       obj->fake = cp->fake;
-       obj->renameAllowed = cp->renameAllowed;
-       obj->unlinkAllowed = cp->unlinkAllowed;
-       obj->serial = cp->serial;
-       obj->nDataChunks = cp->nDataChunks;
-
-       if(obj->variantType == YAFFS_OBJECT_TYPE_FILE)
-               obj->variant.fileVariant.fileSize = cp->fileSizeOrEquivalentObjectId;
-       else if(obj->variantType == YAFFS_OBJECT_TYPE_HARDLINK)
-               obj->variant.hardLinkVariant.equivalentObjectId = cp->fileSizeOrEquivalentObjectId;
-
-       if(obj->objectId >= YAFFS_NOBJECT_BUCKETS)
-               obj->lazyLoaded = 1;
-}
-
-
-
-static int yaffs_CheckpointTnodeWorker(yaffs_Object * in, yaffs_Tnode * tn,
-                                       __u32 level, int chunkOffset)
-{
-       int i;
-       yaffs_Device *dev = in->myDev;
-       int ok = 1;
-       int nTnodeBytes = (dev->tnodeWidth * YAFFS_NTNODES_LEVEL0)/8;
-
-       if (tn) {
-               if (level > 0) {
-
-                       for (i = 0; i < YAFFS_NTNODES_INTERNAL && ok; i++){
-                               if (tn->internal[i]) {
-                                       ok = yaffs_CheckpointTnodeWorker(in,
-                                                       tn->internal[i],
-                                                       level - 1,
-                                                       (chunkOffset<<YAFFS_TNODES_INTERNAL_BITS) + i);
-                               }
-                       }
-               } else if (level == 0) {
-                       __u32 baseOffset = chunkOffset <<  YAFFS_TNODES_LEVEL0_BITS;
-                       /* printf("write tnode at %d\n",baseOffset); */
-                       ok = (yaffs_CheckpointWrite(dev,&baseOffset,sizeof(baseOffset)) == sizeof(baseOffset));
-                       if(ok)
-                               ok = (yaffs_CheckpointWrite(dev,tn,nTnodeBytes) == nTnodeBytes);
-               }
-       }
-
-       return ok;
-
-}
-
-static int yaffs_WriteCheckpointTnodes(yaffs_Object *obj)
-{
-       __u32 endMarker = ~0;
-       int ok = 1;
-
-       if(obj->variantType == YAFFS_OBJECT_TYPE_FILE){
-               ok = yaffs_CheckpointTnodeWorker(obj,
-                                           obj->variant.fileVariant.top,
-                                           obj->variant.fileVariant.topLevel,
-                                           0);
-               if(ok)
-                       ok = (yaffs_CheckpointWrite(obj->myDev,&endMarker,sizeof(endMarker)) ==
-                               sizeof(endMarker));
-       }
-
-       return ok ? 1 : 0;
-}
-
-static int yaffs_ReadCheckpointTnodes(yaffs_Object *obj)
-{
-       __u32 baseChunk;
-       int ok = 1;
-       yaffs_Device *dev = obj->myDev;
-       yaffs_FileStructure *fileStructPtr = &obj->variant.fileVariant;
-       yaffs_Tnode *tn;
-       int nread = 0;
-
-       ok = (yaffs_CheckpointRead(dev,&baseChunk,sizeof(baseChunk)) == sizeof(baseChunk));
-
-       while(ok && (~baseChunk)){
-               nread++;
-               /* Read level 0 tnode */
-
-
-               /* printf("read  tnode at %d\n",baseChunk); */
-               tn = yaffs_GetTnodeRaw(dev);
-               if(tn)
-                       ok = (yaffs_CheckpointRead(dev,tn,(dev->tnodeWidth * YAFFS_NTNODES_LEVEL0)/8) ==
-                             (dev->tnodeWidth * YAFFS_NTNODES_LEVEL0)/8);
-               else
-                       ok = 0;
-
-               if(tn && ok){
-                       ok = yaffs_AddOrFindLevel0Tnode(dev,
-                                                       fileStructPtr,
-                                                       baseChunk,
-                                                       tn) ? 1 : 0;
-
-               }
-
-               if(ok)
-                       ok = (yaffs_CheckpointRead(dev,&baseChunk,sizeof(baseChunk)) == sizeof(baseChunk));
-
-       }
-
-       T(YAFFS_TRACE_CHECKPOINT,(
-               TSTR("Checkpoint read tnodes %d records, last %d. ok %d" TENDSTR),
-               nread,baseChunk,ok));
-
-       return ok ? 1 : 0;
-}
-
-
-static int yaffs_WriteCheckpointObjects(yaffs_Device *dev)
-{
-       yaffs_Object *obj;
-       yaffs_CheckpointObject cp;
-       int i;
-       int ok = 1;
-       struct list_head *lh;
-
-
-       /* Iterate through the objects in each hash entry,
-        * dumping them to the checkpointing stream.
-        */
-
-        for(i = 0; ok &&  i <  YAFFS_NOBJECT_BUCKETS; i++){
-               list_for_each(lh, &dev->objectBucket[i].list) {
-                       if (lh) {
-                               obj = list_entry(lh, yaffs_Object, hashLink);
-                               if (!obj->deferedFree) {
-                                       yaffs_ObjectToCheckpointObject(&cp,obj);
-                                       cp.structType = sizeof(cp);
-
-                                       T(YAFFS_TRACE_CHECKPOINT,(
-                                               TSTR("Checkpoint write object %d parent %d type %d chunk %d obj addr %x" TENDSTR),
-                                               cp.objectId,cp.parentId,cp.variantType,cp.chunkId,(unsigned) obj));
-
-                                       ok = (yaffs_CheckpointWrite(dev,&cp,sizeof(cp)) == sizeof(cp));
-
-                                       if(ok && obj->variantType == YAFFS_OBJECT_TYPE_FILE){
-                                               ok = yaffs_WriteCheckpointTnodes(obj);
-                                       }
-                               }
-                       }
-               }
-        }
-
-        /* Dump end of list */
-       memset(&cp,0xFF,sizeof(yaffs_CheckpointObject));
-       cp.structType = sizeof(cp);
-
-       if(ok)
-               ok = (yaffs_CheckpointWrite(dev,&cp,sizeof(cp)) == sizeof(cp));
-
-       return ok ? 1 : 0;
-}
-
-static int yaffs_ReadCheckpointObjects(yaffs_Device *dev)
-{
-       yaffs_Object *obj;
-       yaffs_CheckpointObject cp;
-       int ok = 1;
-       int done = 0;
-       yaffs_Object *hardList = NULL;
-
-       while(ok && !done) {
-               ok = (yaffs_CheckpointRead(dev,&cp,sizeof(cp)) == sizeof(cp));
-               if(cp.structType != sizeof(cp)) {
-                       T(YAFFS_TRACE_CHECKPOINT,(TSTR("struct size %d instead of %d ok %d"TENDSTR),
-                               cp.structType,sizeof(cp),ok));
-                       ok = 0;
-               }
-
-               T(YAFFS_TRACE_CHECKPOINT,(TSTR("Checkpoint read object %d parent %d type %d chunk %d " TENDSTR),
-                       cp.objectId,cp.parentId,cp.variantType,cp.chunkId));
-
-               if(ok && cp.objectId == ~0)
-                       done = 1;
-               else if(ok){
-                       obj = yaffs_FindOrCreateObjectByNumber(dev,cp.objectId, cp.variantType);
-                       if(obj) {
-                               yaffs_CheckpointObjectToObject(obj,&cp);
-                               if(obj->variantType == YAFFS_OBJECT_TYPE_FILE) {
-                                       ok = yaffs_ReadCheckpointTnodes(obj);
-                               } else if(obj->variantType == YAFFS_OBJECT_TYPE_HARDLINK) {
-                                       obj->hardLinks.next =
-                                                   (struct list_head *)
-                                                   hardList;
-                                       hardList = obj;
-                               }
-
-                       }
-               }
-       }
-
-       if(ok)
-               yaffs_HardlinkFixup(dev,hardList);
-
-       return ok ? 1 : 0;
-}
-
-static int yaffs_WriteCheckpointSum(yaffs_Device *dev)
-{
-       __u32 checkpointSum;
-       int ok;
-
-       yaffs_GetCheckpointSum(dev,&checkpointSum);
-
-       ok = (yaffs_CheckpointWrite(dev,&checkpointSum,sizeof(checkpointSum)) == sizeof(checkpointSum));
-
-       if(!ok)
-               return 0;
-
-       return 1;
-}
-
-static int yaffs_ReadCheckpointSum(yaffs_Device *dev)
-{
-       __u32 checkpointSum0;
-       __u32 checkpointSum1;
-       int ok;
-
-       yaffs_GetCheckpointSum(dev,&checkpointSum0);
-
-       ok = (yaffs_CheckpointRead(dev,&checkpointSum1,sizeof(checkpointSum1)) == sizeof(checkpointSum1));
-
-       if(!ok)
-               return 0;
-
-       if(checkpointSum0 != checkpointSum1)
-               return 0;
-
-       return 1;
-}
-
-
-static int yaffs_WriteCheckpointData(yaffs_Device *dev)
-{
-
-       int ok = 1;
-
-       if(dev->skipCheckpointWrite || !dev->isYaffs2){
-               T(YAFFS_TRACE_CHECKPOINT,(TSTR("skipping checkpoint write" TENDSTR)));
-               ok = 0;
-       }
-
-       if(ok)
-               ok = yaffs_CheckpointOpen(dev,1);
-
-       if(ok){
-               T(YAFFS_TRACE_CHECKPOINT,(TSTR("write checkpoint validity" TENDSTR)));
-               ok = yaffs_WriteCheckpointValidityMarker(dev,1);
-       }
-       if(ok){
-               T(YAFFS_TRACE_CHECKPOINT,(TSTR("write checkpoint device" TENDSTR)));
-               ok = yaffs_WriteCheckpointDevice(dev);
-       }
-       if(ok){
-               T(YAFFS_TRACE_CHECKPOINT,(TSTR("write checkpoint objects" TENDSTR)));
-               ok = yaffs_WriteCheckpointObjects(dev);
-       }
-       if(ok){
-               T(YAFFS_TRACE_CHECKPOINT,(TSTR("write checkpoint validity" TENDSTR)));
-               ok = yaffs_WriteCheckpointValidityMarker(dev,0);
-       }
-
-       if(ok){
-               ok = yaffs_WriteCheckpointSum(dev);
-       }
-
-
-       if(!yaffs_CheckpointClose(dev))
-                ok = 0;
-
-       if(ok)
-               dev->isCheckpointed = 1;
-        else
-               dev->isCheckpointed = 0;
-
-       return dev->isCheckpointed;
-}
-
-static int yaffs_ReadCheckpointData(yaffs_Device *dev)
-{
-       int ok = 1;
-
-       if(dev->skipCheckpointRead || !dev->isYaffs2){
-               T(YAFFS_TRACE_CHECKPOINT,(TSTR("skipping checkpoint read" TENDSTR)));
-               ok = 0;
-       }
-
-       if(ok)
-               ok = yaffs_CheckpointOpen(dev,0); /* open for read */
-
-       if(ok){
-               T(YAFFS_TRACE_CHECKPOINT,(TSTR("read checkpoint validity" TENDSTR)));
-               ok = yaffs_ReadCheckpointValidityMarker(dev,1);
-       }
-       if(ok){
-               T(YAFFS_TRACE_CHECKPOINT,(TSTR("read checkpoint device" TENDSTR)));
-               ok = yaffs_ReadCheckpointDevice(dev);
-       }
-       if(ok){
-               T(YAFFS_TRACE_CHECKPOINT,(TSTR("read checkpoint objects" TENDSTR)));
-               ok = yaffs_ReadCheckpointObjects(dev);
-       }
-       if(ok){
-               T(YAFFS_TRACE_CHECKPOINT,(TSTR("read checkpoint validity" TENDSTR)));
-               ok = yaffs_ReadCheckpointValidityMarker(dev,0);
-       }
-
-       if(ok){
-               ok = yaffs_ReadCheckpointSum(dev);
-               T(YAFFS_TRACE_CHECKPOINT,(TSTR("read checkpoint checksum %d" TENDSTR),ok));
-       }
-
-       if(!yaffs_CheckpointClose(dev))
-               ok = 0;
-
-       if(ok)
-               dev->isCheckpointed = 1;
-        else
-               dev->isCheckpointed = 0;
-
-       return ok ? 1 : 0;
-
-}
-
-static void yaffs_InvalidateCheckpoint(yaffs_Device *dev)
-{
-       if(dev->isCheckpointed ||
-          dev->blocksInCheckpoint > 0){
-               dev->isCheckpointed = 0;
-               yaffs_CheckpointInvalidateStream(dev);
-               if(dev->superBlock && dev->markSuperBlockDirty)
-                       dev->markSuperBlockDirty(dev->superBlock);
-       }
-}
-
-
-int yaffs_CheckpointSave(yaffs_Device *dev)
-{
-
-       T(YAFFS_TRACE_CHECKPOINT,(TSTR("save entry: isCheckpointed %d"TENDSTR),dev->isCheckpointed));
-
-       yaffs_VerifyObjects(dev);
-       yaffs_VerifyBlocks(dev);
-       yaffs_VerifyFreeChunks(dev);
-
-       if(!dev->isCheckpointed) {
-               yaffs_InvalidateCheckpoint(dev);
-               yaffs_WriteCheckpointData(dev);
-       }
-
-       T(YAFFS_TRACE_ALWAYS,(TSTR("save exit: isCheckpointed %d"TENDSTR),dev->isCheckpointed));
-
-       return dev->isCheckpointed;
-}
-
-int yaffs_CheckpointRestore(yaffs_Device *dev)
-{
-       int retval;
-       T(YAFFS_TRACE_CHECKPOINT,(TSTR("restore entry: isCheckpointed %d"TENDSTR),dev->isCheckpointed));
-
-       retval = yaffs_ReadCheckpointData(dev);
-
-       if(dev->isCheckpointed){
-               yaffs_VerifyObjects(dev);
-               yaffs_VerifyBlocks(dev);
-               yaffs_VerifyFreeChunks(dev);
-       }
-
-       T(YAFFS_TRACE_CHECKPOINT,(TSTR("restore exit: isCheckpointed %d"TENDSTR),dev->isCheckpointed));
-
-       return retval;
-}
-
-/*--------------------- File read/write ------------------------
- * Read and write have very similar structures.
- * In general the read/write has three parts to it
- * An incomplete chunk to start with (if the read/write is not chunk-aligned)
- * Some complete chunks
- * An incomplete chunk to end off with
- *
- * Curve-balls: the first chunk might also be the last chunk.
- */
-
-int yaffs_ReadDataFromFile(yaffs_Object * in, __u8 * buffer, loff_t offset,
-                          int nBytes)
-{
-
-       int chunk;
-       int start;
-       int nToCopy;
-       int n = nBytes;
-       int nDone = 0;
-       yaffs_ChunkCache *cache;
-
-       yaffs_Device *dev;
-
-       dev = in->myDev;
-
-       while (n > 0) {
-               //chunk = offset / dev->nDataBytesPerChunk + 1;
-               //start = offset % dev->nDataBytesPerChunk;
-               yaffs_AddrToChunk(dev,offset,&chunk,&start);
-               chunk++;
-
-               /* OK now check for the curveball where the start and end are in
-                * the same chunk.
-                */
-               if ((start + n) < dev->nDataBytesPerChunk) {
-                       nToCopy = n;
-               } else {
-                       nToCopy = dev->nDataBytesPerChunk - start;
-               }
-
-               cache = yaffs_FindChunkCache(in, chunk);
-
-               /* If the chunk is already in the cache or it is less than a whole chunk
-                * then use the cache (if there is caching)
-                * else bypass the cache.
-                */
-               if (cache || nToCopy != dev->nDataBytesPerChunk) {
-                       if (dev->nShortOpCaches > 0) {
-
-                               /* If we can't find the data in the cache, then load it up. */
-
-                               if (!cache) {
-                                       cache = yaffs_GrabChunkCache(in->myDev);
-                                       cache->object = in;
-                                       cache->chunkId = chunk;
-                                       cache->dirty = 0;
-                                       cache->locked = 0;
-                                       yaffs_ReadChunkDataFromObject(in, chunk,
-                                                                     cache->
-                                                                     data);
-                                       cache->nBytes = 0;
-                               }
-
-                               yaffs_UseChunkCache(dev, cache, 0);
-
-                               cache->locked = 1;
-
-#ifdef CONFIG_YAFFS_WINCE
-                               yfsd_UnlockYAFFS(TRUE);
-#endif
-                               memcpy(buffer, &cache->data[start], nToCopy);
-
-#ifdef CONFIG_YAFFS_WINCE
-                               yfsd_LockYAFFS(TRUE);
-#endif
-                               cache->locked = 0;
-                       } else {
-                               /* Read into the local buffer then copy..*/
-
-                               __u8 *localBuffer =
-                                   yaffs_GetTempBuffer(dev, __LINE__);
-                               yaffs_ReadChunkDataFromObject(in, chunk,
-                                                             localBuffer);
-#ifdef CONFIG_YAFFS_WINCE
-                               yfsd_UnlockYAFFS(TRUE);
-#endif
-                               memcpy(buffer, &localBuffer[start], nToCopy);
-
-#ifdef CONFIG_YAFFS_WINCE
-                               yfsd_LockYAFFS(TRUE);
-#endif
-                               yaffs_ReleaseTempBuffer(dev, localBuffer,
-                                                       __LINE__);
-                       }
-
-               } else {
-#ifdef CONFIG_YAFFS_WINCE
-                       __u8 *localBuffer = yaffs_GetTempBuffer(dev, __LINE__);
-
-                       /* Under WinCE can't do direct transfer. Need to use a local buffer.
-                        * This is because we otherwise screw up WinCE's memory mapper
-                        */
-                       yaffs_ReadChunkDataFromObject(in, chunk, localBuffer);
-
-#ifdef CONFIG_YAFFS_WINCE
-                       yfsd_UnlockYAFFS(TRUE);
-#endif
-                       memcpy(buffer, localBuffer, dev->nDataBytesPerChunk);
-
-#ifdef CONFIG_YAFFS_WINCE
-                       yfsd_LockYAFFS(TRUE);
-                       yaffs_ReleaseTempBuffer(dev, localBuffer, __LINE__);
-#endif
-
-#else
-                       /* A full chunk. Read directly into the supplied buffer. */
-                       yaffs_ReadChunkDataFromObject(in, chunk, buffer);
-#endif
-               }
-
-               n -= nToCopy;
-               offset += nToCopy;
-               buffer += nToCopy;
-               nDone += nToCopy;
-
-       }
-
-       return nDone;
-}
-
-int yaffs_WriteDataToFile(yaffs_Object * in, const __u8 * buffer, loff_t offset,
-                         int nBytes, int writeThrough)
-{
-
-       int chunk;
-       int start;
-       int nToCopy;
-       int n = nBytes;
-       int nDone = 0;
-       int nToWriteBack;
-       int startOfWrite = offset;
-       int chunkWritten = 0;
-       int nBytesRead;
-
-       yaffs_Device *dev;
-
-       dev = in->myDev;
-
-       while (n > 0 && chunkWritten >= 0) {
-               //chunk = offset / dev->nDataBytesPerChunk + 1;
-               //start = offset % dev->nDataBytesPerChunk;
-               yaffs_AddrToChunk(dev,offset,&chunk,&start);
-               chunk++;
-
-               /* OK now check for the curveball where the start and end are in
-                * the same chunk.
-                */
-
-               if ((start + n) < dev->nDataBytesPerChunk) {
-                       nToCopy = n;
-
-                       /* Now folks, to calculate how many bytes to write back....
-                        * If we're overwriting and not writing to then end of file then
-                        * we need to write back as much as was there before.
-                        */
-
-                       nBytesRead =
-                           in->variant.fileVariant.fileSize -
-                           ((chunk - 1) * dev->nDataBytesPerChunk);
-
-                       if (nBytesRead > dev->nDataBytesPerChunk) {
-                               nBytesRead = dev->nDataBytesPerChunk;
-                       }
-
-                       nToWriteBack =
-                           (nBytesRead >
-                            (start + n)) ? nBytesRead : (start + n);
-
-               } else {
-                       nToCopy = dev->nDataBytesPerChunk - start;
-                       nToWriteBack = dev->nDataBytesPerChunk;
-               }
-
-               if (nToCopy != dev->nDataBytesPerChunk) {
-                       /* An incomplete start or end chunk (or maybe both start and end chunk) */
-                       if (dev->nShortOpCaches > 0) {
-                               yaffs_ChunkCache *cache;
-                               /* If we can't find the data in the cache, then load the cache */
-                               cache = yaffs_FindChunkCache(in, chunk);
-
-                               if (!cache
-                                   && yaffs_CheckSpaceForAllocation(in->
-                                                                    myDev)) {
-                                       cache = yaffs_GrabChunkCache(in->myDev);
-                                       cache->object = in;
-                                       cache->chunkId = chunk;
-                                       cache->dirty = 0;
-                                       cache->locked = 0;
-                                       yaffs_ReadChunkDataFromObject(in, chunk,
-                                                                     cache->
-                                                                     data);
-                               }
-                               else if(cache &&
-                                       !cache->dirty &&
-                                       !yaffs_CheckSpaceForAllocation(in->myDev)){
-                                       /* Drop the cache if it was a read cache item and
-                                        * no space check has been made for it.
-                                        */
-                                        cache = NULL;
-                               }
-
-                               if (cache) {
-                                       yaffs_UseChunkCache(dev, cache, 1);
-                                       cache->locked = 1;
-#ifdef CONFIG_YAFFS_WINCE
-                                       yfsd_UnlockYAFFS(TRUE);
-#endif
-
-                                       memcpy(&cache->data[start], buffer,
-                                              nToCopy);
-
-#ifdef CONFIG_YAFFS_WINCE
-                                       yfsd_LockYAFFS(TRUE);
-#endif
-                                       cache->locked = 0;
-                                       cache->nBytes = nToWriteBack;
-
-                                       if (writeThrough) {
-                                               chunkWritten =
-                                                   yaffs_WriteChunkDataToObject
-                                                   (cache->object,
-                                                    cache->chunkId,
-                                                    cache->data, cache->nBytes,
-                                                    1);
-                                               cache->dirty = 0;
-                                       }
-
-                               } else {
-                                       chunkWritten = -1;      /* fail the write */
-                               }
-                       } else {
-                               /* An incomplete start or end chunk (or maybe both start and end chunk)
-                                * Read into the local buffer then copy, then copy over and write back.
-                                */
-
-                               __u8 *localBuffer =
-                                   yaffs_GetTempBuffer(dev, __LINE__);
-
-                               yaffs_ReadChunkDataFromObject(in, chunk,
-                                                             localBuffer);
-
-#ifdef CONFIG_YAFFS_WINCE
-                               yfsd_UnlockYAFFS(TRUE);
-#endif
-
-                               memcpy(&localBuffer[start], buffer, nToCopy);
-
-#ifdef CONFIG_YAFFS_WINCE
-                               yfsd_LockYAFFS(TRUE);
-#endif
-                               chunkWritten =
-                                   yaffs_WriteChunkDataToObject(in, chunk,
-                                                                localBuffer,
-                                                                nToWriteBack,
-                                                                0);
-
-                               yaffs_ReleaseTempBuffer(dev, localBuffer,
-                                                       __LINE__);
-
-                       }
-
-               } else {
-
-#ifdef CONFIG_YAFFS_WINCE
-                       /* Under WinCE can't do direct transfer. Need to use a local buffer.
-                        * This is because we otherwise screw up WinCE's memory mapper
-                        */
-                       __u8 *localBuffer = yaffs_GetTempBuffer(dev, __LINE__);
-#ifdef CONFIG_YAFFS_WINCE
-                       yfsd_UnlockYAFFS(TRUE);
-#endif
-                       memcpy(localBuffer, buffer, dev->nDataBytesPerChunk);
-#ifdef CONFIG_YAFFS_WINCE
-                       yfsd_LockYAFFS(TRUE);
-#endif
-                       chunkWritten =
-                           yaffs_WriteChunkDataToObject(in, chunk, localBuffer,
-                                                        dev->nDataBytesPerChunk,
-                                                        0);
-                       yaffs_ReleaseTempBuffer(dev, localBuffer, __LINE__);
-#else
-                       /* A full chunk. Write directly from the supplied buffer. */
-                       chunkWritten =
-                           yaffs_WriteChunkDataToObject(in, chunk, buffer,
-                                                        dev->nDataBytesPerChunk,
-                                                        0);
-#endif
-                       /* Since we've overwritten the cached data, we better invalidate it. */
-                       yaffs_InvalidateChunkCache(in, chunk);
-               }
-
-               if (chunkWritten >= 0) {
-                       n -= nToCopy;
-                       offset += nToCopy;
-                       buffer += nToCopy;
-                       nDone += nToCopy;
-               }
-
-       }
-
-       /* Update file object */
-
-       if ((startOfWrite + nDone) > in->variant.fileVariant.fileSize) {
-               in->variant.fileVariant.fileSize = (startOfWrite + nDone);
-       }
-
-       in->dirty = 1;
-
-       return nDone;
-}
-
-
-/* ---------------------- File resizing stuff ------------------ */
-
-static void yaffs_PruneResizedChunks(yaffs_Object * in, int newSize)
-{
-
-       yaffs_Device *dev = in->myDev;
-       int oldFileSize = in->variant.fileVariant.fileSize;
-
-       int lastDel = 1 + (oldFileSize - 1) / dev->nDataBytesPerChunk;
-
-       int startDel = 1 + (newSize + dev->nDataBytesPerChunk - 1) /
-           dev->nDataBytesPerChunk;
-       int i;
-       int chunkId;
-
-       /* Delete backwards so that we don't end up with holes if
-        * power is lost part-way through the operation.
-        */
-       for (i = lastDel; i >= startDel; i--) {
-               /* NB this could be optimised somewhat,
-                * eg. could retrieve the tags and write them without
-                * using yaffs_DeleteChunk
-                */
-
-               chunkId = yaffs_FindAndDeleteChunkInFile(in, i, NULL);
-               if (chunkId > 0) {
-                       if (chunkId <
-                           (dev->internalStartBlock * dev->nChunksPerBlock)
-                           || chunkId >=
-                           ((dev->internalEndBlock +
-                             1) * dev->nChunksPerBlock)) {
-                               T(YAFFS_TRACE_ALWAYS,
-                                 (TSTR("Found daft chunkId %d for %d" TENDSTR),
-                                  chunkId, i));
-                       } else {
-                               in->nDataChunks--;
-                               yaffs_DeleteChunk(dev, chunkId, 1, __LINE__);
-                       }
-               }
-       }
-
-}
-
-int yaffs_ResizeFile(yaffs_Object * in, loff_t newSize)
-{
-
-       int oldFileSize = in->variant.fileVariant.fileSize;
-       int newSizeOfPartialChunk;
-       int newFullChunks;
-
-       yaffs_Device *dev = in->myDev;
-
-       yaffs_AddrToChunk(dev, newSize, &newFullChunks, &newSizeOfPartialChunk);
-
-       yaffs_FlushFilesChunkCache(in);
-       yaffs_InvalidateWholeChunkCache(in);
-
-       yaffs_CheckGarbageCollection(dev);
-
-       if (in->variantType != YAFFS_OBJECT_TYPE_FILE) {
-               return yaffs_GetFileSize(in);
-       }
-
-       if (newSize == oldFileSize) {
-               return oldFileSize;
-       }
-
-       if (newSize < oldFileSize) {
-
-               yaffs_PruneResizedChunks(in, newSize);
-
-               if (newSizeOfPartialChunk != 0) {
-                       int lastChunk = 1 + newFullChunks;
-
-                       __u8 *localBuffer = yaffs_GetTempBuffer(dev, __LINE__);
-
-                       /* Got to read and rewrite the last chunk with its new size and zero pad */
-                       yaffs_ReadChunkDataFromObject(in, lastChunk,
-                                                     localBuffer);
-
-                       memset(localBuffer + newSizeOfPartialChunk, 0,
-                              dev->nDataBytesPerChunk - newSizeOfPartialChunk);
-
-                       yaffs_WriteChunkDataToObject(in, lastChunk, localBuffer,
-                                                    newSizeOfPartialChunk, 1);
-
-                       yaffs_ReleaseTempBuffer(dev, localBuffer, __LINE__);
-               }
-
-               in->variant.fileVariant.fileSize = newSize;
-
-               yaffs_PruneFileStructure(dev, &in->variant.fileVariant);
-       } else {
-               /* newsSize > oldFileSize */
-               in->variant.fileVariant.fileSize = newSize;
-       }
-
-
-
-       /* Write a new object header.
-        * show we've shrunk the file, if need be
-        * Do this only if the file is not in the deleted directories.
-        */
-       if (in->parent->objectId != YAFFS_OBJECTID_UNLINKED &&
-           in->parent->objectId != YAFFS_OBJECTID_DELETED) {
-               yaffs_UpdateObjectHeader(in, NULL, 0,
-                                        (newSize < oldFileSize) ? 1 : 0, 0);
-       }
-
-       return YAFFS_OK;
-}
-
-loff_t yaffs_GetFileSize(yaffs_Object * obj)
-{
-       obj = yaffs_GetEquivalentObject(obj);
-
-       switch (obj->variantType) {
-       case YAFFS_OBJECT_TYPE_FILE:
-               return obj->variant.fileVariant.fileSize;
-       case YAFFS_OBJECT_TYPE_SYMLINK:
-               return yaffs_strlen(obj->variant.symLinkVariant.alias);
-       default:
-               return 0;
-       }
-}
-
-
-
-int yaffs_FlushFile(yaffs_Object * in, int updateTime)
-{
-       int retVal;
-       if (in->dirty) {
-               yaffs_FlushFilesChunkCache(in);
-               if (updateTime) {
-#ifdef CONFIG_YAFFS_WINCE
-                       yfsd_WinFileTimeNow(in->win_mtime);
-#else
-
-                       in->yst_mtime = Y_CURRENT_TIME;
-
-#endif
-               }
-
-               retVal =
-                   (yaffs_UpdateObjectHeader(in, NULL, 0, 0, 0) >=
-                    0) ? YAFFS_OK : YAFFS_FAIL;
-       } else {
-               retVal = YAFFS_OK;
-       }
-
-       return retVal;
-
-}
-
-static int yaffs_DoGenericObjectDeletion(yaffs_Object * in)
-{
-
-       /* First off, invalidate the file's data in the cache, without flushing. */
-       yaffs_InvalidateWholeChunkCache(in);
-
-       if (in->myDev->isYaffs2 && (in->parent != in->myDev->deletedDir)) {
-               /* Move to the unlinked directory so we have a record that it was deleted. */
-               yaffs_ChangeObjectName(in, in->myDev->deletedDir,"deleted", 0, 0);
-
-       }
-
-       yaffs_RemoveObjectFromDirectory(in);
-       yaffs_DeleteChunk(in->myDev, in->chunkId, 1, __LINE__);
-       in->chunkId = -1;
-
-       yaffs_FreeObject(in);
-       return YAFFS_OK;
-
-}
-
-/* yaffs_DeleteFile deletes the whole file data
- * and the inode associated with the file.
- * It does not delete the links associated with the file.
- */
-static int yaffs_UnlinkFile(yaffs_Object * in)
-{
-
-       int retVal;
-       int immediateDeletion = 0;
-
-       if (1) {
-/* XXX U-BOOT XXX */
-#if 0
-#ifdef __KERNEL__
-               if (!in->myInode) {
-                       immediateDeletion = 1;
-
-               }
-#endif
-#else
-               if (in->inUse <= 0) {
-                       immediateDeletion = 1;
-
-               }
-#endif
-               if (immediateDeletion) {
-                       retVal =
-                           yaffs_ChangeObjectName(in, in->myDev->deletedDir,
-                                                  "deleted", 0, 0);
-                       T(YAFFS_TRACE_TRACING,
-                         (TSTR("yaffs: immediate deletion of file %d" TENDSTR),
-                          in->objectId));
-                       in->deleted = 1;
-                       in->myDev->nDeletedFiles++;
-                       if (0 && in->myDev->isYaffs2) {
-                               yaffs_ResizeFile(in, 0);
-                       }
-                       yaffs_SoftDeleteFile(in);
-               } else {
-                       retVal =
-                           yaffs_ChangeObjectName(in, in->myDev->unlinkedDir,
-                                                  "unlinked", 0, 0);
-               }
-
-       }
-       return retVal;
-}
-
-int yaffs_DeleteFile(yaffs_Object * in)
-{
-       int retVal = YAFFS_OK;
-
-       if (in->nDataChunks > 0) {
-               /* Use soft deletion if there is data in the file */
-               if (!in->unlinked) {
-                       retVal = yaffs_UnlinkFile(in);
-               }
-               if (retVal == YAFFS_OK && in->unlinked && !in->deleted) {
-                       in->deleted = 1;
-                       in->myDev->nDeletedFiles++;
-                       yaffs_SoftDeleteFile(in);
-               }
-               return in->deleted ? YAFFS_OK : YAFFS_FAIL;
-       } else {
-               /* The file has no data chunks so we toss it immediately */
-               yaffs_FreeTnode(in->myDev, in->variant.fileVariant.top);
-               in->variant.fileVariant.top = NULL;
-               yaffs_DoGenericObjectDeletion(in);
-
-               return YAFFS_OK;
-       }
-}
-
-static int yaffs_DeleteDirectory(yaffs_Object * in)
-{
-       /* First check that the directory is empty. */
-       if (list_empty(&in->variant.directoryVariant.children)) {
-               return yaffs_DoGenericObjectDeletion(in);
-       }
-
-       return YAFFS_FAIL;
-
-}
-
-static int yaffs_DeleteSymLink(yaffs_Object * in)
-{
-       YFREE(in->variant.symLinkVariant.alias);
-
-       return yaffs_DoGenericObjectDeletion(in);
-}
-
-static int yaffs_DeleteHardLink(yaffs_Object * in)
-{
-       /* remove this hardlink from the list assocaited with the equivalent
-        * object
-        */
-       list_del(&in->hardLinks);
-       return yaffs_DoGenericObjectDeletion(in);
-}
-
-static void yaffs_DestroyObject(yaffs_Object * obj)
-{
-       switch (obj->variantType) {
-       case YAFFS_OBJECT_TYPE_FILE:
-               yaffs_DeleteFile(obj);
-               break;
-       case YAFFS_OBJECT_TYPE_DIRECTORY:
-               yaffs_DeleteDirectory(obj);
-               break;
-       case YAFFS_OBJECT_TYPE_SYMLINK:
-               yaffs_DeleteSymLink(obj);
-               break;
-       case YAFFS_OBJECT_TYPE_HARDLINK:
-               yaffs_DeleteHardLink(obj);
-               break;
-       case YAFFS_OBJECT_TYPE_SPECIAL:
-               yaffs_DoGenericObjectDeletion(obj);
-               break;
-       case YAFFS_OBJECT_TYPE_UNKNOWN:
-               break;          /* should not happen. */
-       }
-}
-
-static int yaffs_UnlinkWorker(yaffs_Object * obj)
-{
-
-       if (obj->variantType == YAFFS_OBJECT_TYPE_HARDLINK) {
-               return yaffs_DeleteHardLink(obj);
-       } else if (!list_empty(&obj->hardLinks)) {
-               /* Curve ball: We're unlinking an object that has a hardlink.
-                *
-                * This problem arises because we are not strictly following
-                * The Linux link/inode model.
-                *
-                * We can't really delete the object.
-                * Instead, we do the following:
-                * - Select a hardlink.
-                * - Unhook it from the hard links
-                * - Unhook it from its parent directory (so that the rename can work)
-                * - Rename the object to the hardlink's name.
-                * - Delete the hardlink
-                */
-
-               yaffs_Object *hl;
-               int retVal;
-               YCHAR name[YAFFS_MAX_NAME_LENGTH + 1];
-
-               hl = list_entry(obj->hardLinks.next, yaffs_Object, hardLinks);
-
-               list_del_init(&hl->hardLinks);
-               list_del_init(&hl->siblings);
-
-               yaffs_GetObjectName(hl, name, YAFFS_MAX_NAME_LENGTH + 1);
-
-               retVal = yaffs_ChangeObjectName(obj, hl->parent, name, 0, 0);
-
-               if (retVal == YAFFS_OK) {
-                       retVal = yaffs_DoGenericObjectDeletion(hl);
-               }
-               return retVal;
-
-       } else {
-               switch (obj->variantType) {
-               case YAFFS_OBJECT_TYPE_FILE:
-                       return yaffs_UnlinkFile(obj);
-                       break;
-               case YAFFS_OBJECT_TYPE_DIRECTORY:
-                       return yaffs_DeleteDirectory(obj);
-                       break;
-               case YAFFS_OBJECT_TYPE_SYMLINK:
-                       return yaffs_DeleteSymLink(obj);
-                       break;
-               case YAFFS_OBJECT_TYPE_SPECIAL:
-                       return yaffs_DoGenericObjectDeletion(obj);
-                       break;
-               case YAFFS_OBJECT_TYPE_HARDLINK:
-               case YAFFS_OBJECT_TYPE_UNKNOWN:
-               default:
-                       return YAFFS_FAIL;
-               }
-       }
-}
-
-
-static int yaffs_UnlinkObject( yaffs_Object *obj)
-{
-
-       if (obj && obj->unlinkAllowed) {
-               return yaffs_UnlinkWorker(obj);
-       }
-
-       return YAFFS_FAIL;
-
-}
-int yaffs_Unlink(yaffs_Object * dir, const YCHAR * name)
-{
-       yaffs_Object *obj;
-
-       obj = yaffs_FindObjectByName(dir, name);
-       return yaffs_UnlinkObject(obj);
-}
-
-/*----------------------- Initialisation Scanning ---------------------- */
-
-static void yaffs_HandleShadowedObject(yaffs_Device * dev, int objId,
-                                      int backwardScanning)
-{
-       yaffs_Object *obj;
-
-       if (!backwardScanning) {
-               /* Handle YAFFS1 forward scanning case
-                * For YAFFS1 we always do the deletion
-                */
-
-       } else {
-               /* Handle YAFFS2 case (backward scanning)
-                * If the shadowed object exists then ignore.
-                */
-               if (yaffs_FindObjectByNumber(dev, objId)) {
-                       return;
-               }
-       }
-
-       /* Let's create it (if it does not exist) assuming it is a file so that it can do shrinking etc.
-        * We put it in unlinked dir to be cleaned up after the scanning
-        */
-       obj =
-           yaffs_FindOrCreateObjectByNumber(dev, objId,
-                                            YAFFS_OBJECT_TYPE_FILE);
-       yaffs_AddObjectToDirectory(dev->unlinkedDir, obj);
-       obj->variant.fileVariant.shrinkSize = 0;
-       obj->valid = 1;         /* So that we don't read any other info for this file */
-
-}
-
-typedef struct {
-       int seq;
-       int block;
-} yaffs_BlockIndex;
-
-
-static void yaffs_HardlinkFixup(yaffs_Device *dev, yaffs_Object *hardList)
-{
-       yaffs_Object *hl;
-       yaffs_Object *in;
-
-       while (hardList) {
-               hl = hardList;
-               hardList = (yaffs_Object *) (hardList->hardLinks.next);
-
-               in = yaffs_FindObjectByNumber(dev,
-                                             hl->variant.hardLinkVariant.
-                                             equivalentObjectId);
-
-               if (in) {
-                       /* Add the hardlink pointers */
-                       hl->variant.hardLinkVariant.equivalentObject = in;
-                       list_add(&hl->hardLinks, &in->hardLinks);
-               } else {
-                       /* Todo Need to report/handle this better.
-                        * Got a problem... hardlink to a non-existant object
-                        */
-                       hl->variant.hardLinkVariant.equivalentObject = NULL;
-                       INIT_LIST_HEAD(&hl->hardLinks);
-
-               }
-
-       }
-
-}
-
-
-
-
-
-static int ybicmp(const void *a, const void *b){
-    register int aseq = ((yaffs_BlockIndex *)a)->seq;
-    register int bseq = ((yaffs_BlockIndex *)b)->seq;
-    register int ablock = ((yaffs_BlockIndex *)a)->block;
-    register int bblock = ((yaffs_BlockIndex *)b)->block;
-    if( aseq == bseq )
-       return ablock - bblock;
-    else
-       return aseq - bseq;
-
-}
-
-static int yaffs_Scan(yaffs_Device * dev)
-{
-       yaffs_ExtendedTags tags;
-       int blk;
-       int blockIterator;
-       int startIterator;
-       int endIterator;
-       int nBlocksToScan = 0;
-       int result;
-
-       int chunk;
-       int c;
-       int deleted;
-       yaffs_BlockState state;
-       yaffs_Object *hardList = NULL;
-       yaffs_BlockInfo *bi;
-       int sequenceNumber;
-       yaffs_ObjectHeader *oh;
-       yaffs_Object *in;
-       yaffs_Object *parent;
-       int nBlocks = dev->internalEndBlock - dev->internalStartBlock + 1;
-
-       int alloc_failed = 0;
-
-
-       __u8 *chunkData;
-
-       yaffs_BlockIndex *blockIndex = NULL;
-
-       if (dev->isYaffs2) {
-               T(YAFFS_TRACE_SCAN,
-                 (TSTR("yaffs_Scan is not for YAFFS2!" TENDSTR)));
-               return YAFFS_FAIL;
-       }
-
-       //TODO  Throw all the yaffs2 stuuf out of yaffs_Scan since it is only for yaffs1 format.
-
-       T(YAFFS_TRACE_SCAN,
-         (TSTR("yaffs_Scan starts  intstartblk %d intendblk %d..." TENDSTR),
-          dev->internalStartBlock, dev->internalEndBlock));
-
-       chunkData = yaffs_GetTempBuffer(dev, __LINE__);
-
-       dev->sequenceNumber = YAFFS_LOWEST_SEQUENCE_NUMBER;
-
-       if (dev->isYaffs2) {
-               blockIndex = YMALLOC(nBlocks * sizeof(yaffs_BlockIndex));
-               if(!blockIndex)
-                       return YAFFS_FAIL;
-       }
-
-       /* Scan all the blocks to determine their state */
-       for (blk = dev->internalStartBlock; blk <= dev->internalEndBlock; blk++) {
-               bi = yaffs_GetBlockInfo(dev, blk);
-               yaffs_ClearChunkBits(dev, blk);
-               bi->pagesInUse = 0;
-               bi->softDeletions = 0;
-
-               yaffs_QueryInitialBlockState(dev, blk, &state, &sequenceNumber);
-
-               bi->blockState = state;
-               bi->sequenceNumber = sequenceNumber;
-
-               T(YAFFS_TRACE_SCAN_DEBUG,
-                 (TSTR("Block scanning block %d state %d seq %d" TENDSTR), blk,
-                  state, sequenceNumber));
-
-               if (state == YAFFS_BLOCK_STATE_DEAD) {
-                       T(YAFFS_TRACE_BAD_BLOCKS,
-                         (TSTR("block %d is bad" TENDSTR), blk));
-               } else if (state == YAFFS_BLOCK_STATE_EMPTY) {
-                       T(YAFFS_TRACE_SCAN_DEBUG,
-                         (TSTR("Block empty " TENDSTR)));
-                       dev->nErasedBlocks++;
-                       dev->nFreeChunks += dev->nChunksPerBlock;
-               } else if (state == YAFFS_BLOCK_STATE_NEEDS_SCANNING) {
-
-                       /* Determine the highest sequence number */
-                       if (dev->isYaffs2 &&
-                           sequenceNumber >= YAFFS_LOWEST_SEQUENCE_NUMBER &&
-                           sequenceNumber < YAFFS_HIGHEST_SEQUENCE_NUMBER) {
-
-                               blockIndex[nBlocksToScan].seq = sequenceNumber;
-                               blockIndex[nBlocksToScan].block = blk;
-
-                               nBlocksToScan++;
-
-                               if (sequenceNumber >= dev->sequenceNumber) {
-                                       dev->sequenceNumber = sequenceNumber;
-                               }
-                       } else if (dev->isYaffs2) {
-                               /* TODO: Nasty sequence number! */
-                               T(YAFFS_TRACE_SCAN,
-                                 (TSTR
-                                  ("Block scanning block %d has bad sequence number %d"
-                                   TENDSTR), blk, sequenceNumber));
-
-                       }
-               }
-       }
-
-       /* Sort the blocks
-        * Dungy old bubble sort for now...
-        */
-       if (dev->isYaffs2) {
-               yaffs_BlockIndex temp;
-               int i;
-               int j;
-
-               for (i = 0; i < nBlocksToScan; i++)
-                       for (j = i + 1; j < nBlocksToScan; j++)
-                               if (blockIndex[i].seq > blockIndex[j].seq) {
-                                       temp = blockIndex[j];
-                                       blockIndex[j] = blockIndex[i];
-                                       blockIndex[i] = temp;
-                               }
-       }
-
-       /* Now scan the blocks looking at the data. */
-       if (dev->isYaffs2) {
-               startIterator = 0;
-               endIterator = nBlocksToScan - 1;
-               T(YAFFS_TRACE_SCAN_DEBUG,
-                 (TSTR("%d blocks to be scanned" TENDSTR), nBlocksToScan));
-       } else {
-               startIterator = dev->internalStartBlock;
-               endIterator = dev->internalEndBlock;
-       }
-
-       /* For each block.... */
-       for (blockIterator = startIterator; !alloc_failed && blockIterator <= endIterator;
-            blockIterator++) {
-
-               if (dev->isYaffs2) {
-                       /* get the block to scan in the correct order */
-                       blk = blockIndex[blockIterator].block;
-               } else {
-                       blk = blockIterator;
-               }
-
-               bi = yaffs_GetBlockInfo(dev, blk);
-               state = bi->blockState;
-
-               deleted = 0;
-
-               /* For each chunk in each block that needs scanning....*/
-               for (c = 0; !alloc_failed && c < dev->nChunksPerBlock &&
-                    state == YAFFS_BLOCK_STATE_NEEDS_SCANNING; c++) {
-                       /* Read the tags and decide what to do */
-                       chunk = blk * dev->nChunksPerBlock + c;
-
-                       result = yaffs_ReadChunkWithTagsFromNAND(dev, chunk, NULL,
-                                                       &tags);
-
-                       /* Let's have a good look at this chunk... */
-
-                       if (!dev->isYaffs2 && tags.chunkDeleted) {
-                               /* YAFFS1 only...
-                                * A deleted chunk
-                                */
-                               deleted++;
-                               dev->nFreeChunks++;
-                               /*T((" %d %d deleted\n",blk,c)); */
-                       } else if (!tags.chunkUsed) {
-                               /* An unassigned chunk in the block
-                                * This means that either the block is empty or
-                                * this is the one being allocated from
-                                */
-
-                               if (c == 0) {
-                                       /* We're looking at the first chunk in the block so the block is unused */
-                                       state = YAFFS_BLOCK_STATE_EMPTY;
-                                       dev->nErasedBlocks++;
-                               } else {
-                                       /* this is the block being allocated from */
-                                       T(YAFFS_TRACE_SCAN,
-                                         (TSTR
-                                          (" Allocating from %d %d" TENDSTR),
-                                          blk, c));
-                                       state = YAFFS_BLOCK_STATE_ALLOCATING;
-                                       dev->allocationBlock = blk;
-                                       dev->allocationPage = c;
-                                       dev->allocationBlockFinder = blk;
-                                       /* Set it to here to encourage the allocator to go forth from here. */
-
-                                       /* Yaffs2 sanity check:
-                                        * This should be the one with the highest sequence number
-                                        */
-                                       if (dev->isYaffs2
-                                           && (dev->sequenceNumber !=
-                                               bi->sequenceNumber)) {
-                                               T(YAFFS_TRACE_ALWAYS,
-                                                 (TSTR
-                                                  ("yaffs: Allocation block %d was not highest sequence id:"
-                                                   " block seq = %d, dev seq = %d"
-                                                   TENDSTR), blk,bi->sequenceNumber,dev->sequenceNumber));
-                                       }
-                               }
-
-                               dev->nFreeChunks += (dev->nChunksPerBlock - c);
-                       } else if (tags.chunkId > 0) {
-                               /* chunkId > 0 so it is a data chunk... */
-                               unsigned int endpos;
-
-                               yaffs_SetChunkBit(dev, blk, c);
-                               bi->pagesInUse++;
-
-                               in = yaffs_FindOrCreateObjectByNumber(dev,
-                                                                     tags.
-                                                                     objectId,
-                                                                     YAFFS_OBJECT_TYPE_FILE);
-                               /* PutChunkIntoFile checks for a clash (two data chunks with
-                                * the same chunkId).
-                                */
-
-                               if(!in)
-                                       alloc_failed = 1;
-
-                               if(in){
-                                       if(!yaffs_PutChunkIntoFile(in, tags.chunkId, chunk,1))
-                                               alloc_failed = 1;
-                               }
-
-                               endpos =
-                                   (tags.chunkId - 1) * dev->nDataBytesPerChunk +
-                                   tags.byteCount;
-                               if (in &&
-                                   in->variantType == YAFFS_OBJECT_TYPE_FILE
-                                   && in->variant.fileVariant.scannedFileSize <
-                                   endpos) {
-                                       in->variant.fileVariant.
-                                           scannedFileSize = endpos;
-                                       if (!dev->useHeaderFileSize) {
-                                               in->variant.fileVariant.
-                                                   fileSize =
-                                                   in->variant.fileVariant.
-                                                   scannedFileSize;
-                                       }
-
-                               }
-                               /* T((" %d %d data %d %d\n",blk,c,tags.objectId,tags.chunkId));   */
-                       } else {
-                               /* chunkId == 0, so it is an ObjectHeader.
-                                * Thus, we read in the object header and make the object
-                                */
-                               yaffs_SetChunkBit(dev, blk, c);
-                               bi->pagesInUse++;
-
-                               result = yaffs_ReadChunkWithTagsFromNAND(dev, chunk,
-                                                               chunkData,
-                                                               NULL);
-
-                               oh = (yaffs_ObjectHeader *) chunkData;
-
-                               in = yaffs_FindObjectByNumber(dev,
-                                                             tags.objectId);
-                               if (in && in->variantType != oh->type) {
-                                       /* This should not happen, but somehow
-                                        * Wev'e ended up with an objectId that has been reused but not yet
-                                        * deleted, and worse still it has changed type. Delete the old object.
-                                        */
-
-                                       yaffs_DestroyObject(in);
-
-                                       in = 0;
-                               }
-
-                               in = yaffs_FindOrCreateObjectByNumber(dev,
-                                                                     tags.
-                                                                     objectId,
-                                                                     oh->type);
-
-                               if(!in)
-                                       alloc_failed = 1;
-
-                               if (in && oh->shadowsObject > 0) {
-                                       yaffs_HandleShadowedObject(dev,
-                                                                  oh->
-                                                                  shadowsObject,
-                                                                  0);
-                               }
-
-                               if (in && in->valid) {
-                                       /* We have already filled this one. We have a duplicate and need to resolve it. */
-
-                                       unsigned existingSerial = in->serial;
-                                       unsigned newSerial = tags.serialNumber;
-
-                                       if (dev->isYaffs2 ||
-                                           ((existingSerial + 1) & 3) ==
-                                           newSerial) {
-                                               /* Use new one - destroy the exisiting one */
-                                               yaffs_DeleteChunk(dev,
-                                                                 in->chunkId,
-                                                                 1, __LINE__);
-                                               in->valid = 0;
-                                       } else {
-                                               /* Use existing - destroy this one. */
-                                               yaffs_DeleteChunk(dev, chunk, 1,
-                                                                 __LINE__);
-                                       }
-                               }
-
-                               if (in && !in->valid &&
-                                   (tags.objectId == YAFFS_OBJECTID_ROOT ||
-                                    tags.objectId == YAFFS_OBJECTID_LOSTNFOUND)) {
-                                       /* We only load some info, don't fiddle with directory structure */
-                                       in->valid = 1;
-                                       in->variantType = oh->type;
-
-                                       in->yst_mode = oh->yst_mode;
-#ifdef CONFIG_YAFFS_WINCE
-                                       in->win_atime[0] = oh->win_atime[0];
-                                       in->win_ctime[0] = oh->win_ctime[0];
-                                       in->win_mtime[0] = oh->win_mtime[0];
-                                       in->win_atime[1] = oh->win_atime[1];
-                                       in->win_ctime[1] = oh->win_ctime[1];
-                                       in->win_mtime[1] = oh->win_mtime[1];
-#else
-                                       in->yst_uid = oh->yst_uid;
-                                       in->yst_gid = oh->yst_gid;
-                                       in->yst_atime = oh->yst_atime;
-                                       in->yst_mtime = oh->yst_mtime;
-                                       in->yst_ctime = oh->yst_ctime;
-                                       in->yst_rdev = oh->yst_rdev;
-#endif
-                                       in->chunkId = chunk;
-
-                               } else if (in && !in->valid) {
-                                       /* we need to load this info */
-
-                                       in->valid = 1;
-                                       in->variantType = oh->type;
-
-                                       in->yst_mode = oh->yst_mode;
-#ifdef CONFIG_YAFFS_WINCE
-                                       in->win_atime[0] = oh->win_atime[0];
-                                       in->win_ctime[0] = oh->win_ctime[0];
-                                       in->win_mtime[0] = oh->win_mtime[0];
-                                       in->win_atime[1] = oh->win_atime[1];
-                                       in->win_ctime[1] = oh->win_ctime[1];
-                                       in->win_mtime[1] = oh->win_mtime[1];
-#else
-                                       in->yst_uid = oh->yst_uid;
-                                       in->yst_gid = oh->yst_gid;
-                                       in->yst_atime = oh->yst_atime;
-                                       in->yst_mtime = oh->yst_mtime;
-                                       in->yst_ctime = oh->yst_ctime;
-                                       in->yst_rdev = oh->yst_rdev;
-#endif
-                                       in->chunkId = chunk;
-
-                                       yaffs_SetObjectName(in, oh->name);
-                                       in->dirty = 0;
-
-                                       /* directory stuff...
-                                        * hook up to parent
-                                        */
-
-                                       parent =
-                                           yaffs_FindOrCreateObjectByNumber
-                                           (dev, oh->parentObjectId,
-                                            YAFFS_OBJECT_TYPE_DIRECTORY);
-                                       if (parent->variantType ==
-                                           YAFFS_OBJECT_TYPE_UNKNOWN) {
-                                               /* Set up as a directory */
-                                               parent->variantType =
-                                                   YAFFS_OBJECT_TYPE_DIRECTORY;
-                                               INIT_LIST_HEAD(&parent->variant.
-                                                              directoryVariant.
-                                                              children);
-                                       } else if (parent->variantType !=
-                                                  YAFFS_OBJECT_TYPE_DIRECTORY)
-                                       {
-                                               /* Hoosterman, another problem....
-                                                * We're trying to use a non-directory as a directory
-                                                */
-
-                                               T(YAFFS_TRACE_ERROR,
-                                                 (TSTR
-                                                  ("yaffs tragedy: attempting to use non-directory as"
-                                                   " a directory in scan. Put in lost+found."
-                                                   TENDSTR)));
-                                               parent = dev->lostNFoundDir;
-                                       }
-
-                                       yaffs_AddObjectToDirectory(parent, in);
-
-                                       if (0 && (parent == dev->deletedDir ||
-                                                 parent == dev->unlinkedDir)) {
-                                               in->deleted = 1;        /* If it is unlinked at start up then it wants deleting */
-                                               dev->nDeletedFiles++;
-                                       }
-                                       /* Note re hardlinks.
-                                        * Since we might scan a hardlink before its equivalent object is scanned
-                                        * we put them all in a list.
-                                        * After scanning is complete, we should have all the objects, so we run through this
-                                        * list and fix up all the chains.
-                                        */
-
-                                       switch (in->variantType) {
-                                       case YAFFS_OBJECT_TYPE_UNKNOWN:
-                                               /* Todo got a problem */
-                                               break;
-                                       case YAFFS_OBJECT_TYPE_FILE:
-                                               if (dev->isYaffs2
-                                                   && oh->isShrink) {
-                                                       /* Prune back the shrunken chunks */
-                                                       yaffs_PruneResizedChunks
-                                                           (in, oh->fileSize);
-                                                       /* Mark the block as having a shrinkHeader */
-                                                       bi->hasShrinkHeader = 1;
-                                               }
-
-                                               if (dev->useHeaderFileSize)
-
-                                                       in->variant.fileVariant.
-                                                           fileSize =
-                                                           oh->fileSize;
-
-                                               break;
-                                       case YAFFS_OBJECT_TYPE_HARDLINK:
-                                               in->variant.hardLinkVariant.
-                                                   equivalentObjectId =
-                                                   oh->equivalentObjectId;
-                                               in->hardLinks.next =
-                                                   (struct list_head *)
-                                                   hardList;
-                                               hardList = in;
-                                               break;
-                                       case YAFFS_OBJECT_TYPE_DIRECTORY:
-                                               /* Do nothing */
-                                               break;
-                                       case YAFFS_OBJECT_TYPE_SPECIAL:
-                                               /* Do nothing */
-                                               break;
-                                       case YAFFS_OBJECT_TYPE_SYMLINK:
-                                               in->variant.symLinkVariant.alias =
-                                                   yaffs_CloneString(oh->alias);
-                                               if(!in->variant.symLinkVariant.alias)
-                                                       alloc_failed = 1;
-                                               break;
-                                       }
-
-                                       if (parent == dev->deletedDir) {
-                                               yaffs_DestroyObject(in);
-                                               bi->hasShrinkHeader = 1;
-                                       }
-                               }
-                       }
-               }
-
-               if (state == YAFFS_BLOCK_STATE_NEEDS_SCANNING) {
-                       /* If we got this far while scanning, then the block is fully allocated.*/
-                       state = YAFFS_BLOCK_STATE_FULL;
-               }
-
-               bi->blockState = state;
-
-               /* Now let's see if it was dirty */
-               if (bi->pagesInUse == 0 &&
-                   !bi->hasShrinkHeader &&
-                   bi->blockState == YAFFS_BLOCK_STATE_FULL) {
-                       yaffs_BlockBecameDirty(dev, blk);
-               }
-
-       }
-
-       if (blockIndex) {
-               YFREE(blockIndex);
-       }
-
-
-       /* Ok, we've done all the scanning.
-        * Fix up the hard link chains.
-        * We should now have scanned all the objects, now it's time to add these
-        * hardlinks.
-        */
-
-       yaffs_HardlinkFixup(dev,hardList);
-
-       /* Handle the unlinked files. Since they were left in an unlinked state we should
-        * just delete them.
-        */
-       {
-               struct list_head *i;
-               struct list_head *n;
-
-               yaffs_Object *l;
-               /* Soft delete all the unlinked files */
-               list_for_each_safe(i, n,
-                                  &dev->unlinkedDir->variant.directoryVariant.
-                                  children) {
-                       if (i) {
-                               l = list_entry(i, yaffs_Object, siblings);
-                               yaffs_DestroyObject(l);
-                       }
-               }
-       }
-
-       yaffs_ReleaseTempBuffer(dev, chunkData, __LINE__);
-
-       if(alloc_failed){
-               return YAFFS_FAIL;
-       }
-
-       T(YAFFS_TRACE_SCAN, (TSTR("yaffs_Scan ends" TENDSTR)));
-
-
-       return YAFFS_OK;
-}
-
-static void yaffs_CheckObjectDetailsLoaded(yaffs_Object *in)
-{
-       __u8 *chunkData;
-       yaffs_ObjectHeader *oh;
-       yaffs_Device *dev = in->myDev;
-       yaffs_ExtendedTags tags;
-       int result;
-       int alloc_failed = 0;
-
-       if(!in)
-               return;
-
-#if 0
-       T(YAFFS_TRACE_SCAN,(TSTR("details for object %d %s loaded" TENDSTR),
-               in->objectId,
-               in->lazyLoaded ? "not yet" : "already"));
-#endif
-
-       if(in->lazyLoaded){
-               in->lazyLoaded = 0;
-               chunkData = yaffs_GetTempBuffer(dev, __LINE__);
-
-               result = yaffs_ReadChunkWithTagsFromNAND(dev,in->chunkId,chunkData,&tags);
-               oh = (yaffs_ObjectHeader *) chunkData;
-
-               in->yst_mode = oh->yst_mode;
-#ifdef CONFIG_YAFFS_WINCE
-               in->win_atime[0] = oh->win_atime[0];
-               in->win_ctime[0] = oh->win_ctime[0];
-               in->win_mtime[0] = oh->win_mtime[0];
-               in->win_atime[1] = oh->win_atime[1];
-               in->win_ctime[1] = oh->win_ctime[1];
-               in->win_mtime[1] = oh->win_mtime[1];
-#else
-               in->yst_uid = oh->yst_uid;
-               in->yst_gid = oh->yst_gid;
-               in->yst_atime = oh->yst_atime;
-               in->yst_mtime = oh->yst_mtime;
-               in->yst_ctime = oh->yst_ctime;
-               in->yst_rdev = oh->yst_rdev;
-
-#endif
-               yaffs_SetObjectName(in, oh->name);
-
-               if(in->variantType == YAFFS_OBJECT_TYPE_SYMLINK){
-                        in->variant.symLinkVariant.alias =
-                                                   yaffs_CloneString(oh->alias);
-                       if(!in->variant.symLinkVariant.alias)
-                               alloc_failed = 1; /* Not returned to caller */
-               }
-
-               yaffs_ReleaseTempBuffer(dev,chunkData, __LINE__);
-       }
-}
-
-static int yaffs_ScanBackwards(yaffs_Device * dev)
-{
-       yaffs_ExtendedTags tags;
-       int blk;
-       int blockIterator;
-       int startIterator;
-       int endIterator;
-       int nBlocksToScan = 0;
-
-       int chunk;
-       int result;
-       int c;
-       int deleted;
-       yaffs_BlockState state;
-       yaffs_Object *hardList = NULL;
-       yaffs_BlockInfo *bi;
-       int sequenceNumber;
-       yaffs_ObjectHeader *oh;
-       yaffs_Object *in;
-       yaffs_Object *parent;
-       int nBlocks = dev->internalEndBlock - dev->internalStartBlock + 1;
-       int itsUnlinked;
-       __u8 *chunkData;
-
-       int fileSize;
-       int isShrink;
-       int foundChunksInBlock;
-       int equivalentObjectId;
-       int alloc_failed = 0;
-
-
-       yaffs_BlockIndex *blockIndex = NULL;
-       int altBlockIndex = 0;
-
-       if (!dev->isYaffs2) {
-               T(YAFFS_TRACE_SCAN,
-                 (TSTR("yaffs_ScanBackwards is only for YAFFS2!" TENDSTR)));
-               return YAFFS_FAIL;
-       }
-
-       T(YAFFS_TRACE_SCAN,
-         (TSTR
-          ("yaffs_ScanBackwards starts  intstartblk %d intendblk %d..."
-           TENDSTR), dev->internalStartBlock, dev->internalEndBlock));
-
-
-       dev->sequenceNumber = YAFFS_LOWEST_SEQUENCE_NUMBER;
-
-       blockIndex = YMALLOC(nBlocks * sizeof(yaffs_BlockIndex));
-
-       if(!blockIndex) {
-               blockIndex = YMALLOC_ALT(nBlocks * sizeof(yaffs_BlockIndex));
-               altBlockIndex = 1;
-       }
-
-       if(!blockIndex) {
-               T(YAFFS_TRACE_SCAN,
-                 (TSTR("yaffs_Scan() could not allocate block index!" TENDSTR)));
-               return YAFFS_FAIL;
-       }
-
-       dev->blocksInCheckpoint = 0;
-
-       chunkData = yaffs_GetTempBuffer(dev, __LINE__);
-
-       /* Scan all the blocks to determine their state */
-       for (blk = dev->internalStartBlock; blk <= dev->internalEndBlock; blk++) {
-               bi = yaffs_GetBlockInfo(dev, blk);
-               yaffs_ClearChunkBits(dev, blk);
-               bi->pagesInUse = 0;
-               bi->softDeletions = 0;
-
-               yaffs_QueryInitialBlockState(dev, blk, &state, &sequenceNumber);
-
-               bi->blockState = state;
-               bi->sequenceNumber = sequenceNumber;
-
-               if(bi->sequenceNumber == YAFFS_SEQUENCE_CHECKPOINT_DATA)
-                       bi->blockState = state = YAFFS_BLOCK_STATE_CHECKPOINT;
-
-               T(YAFFS_TRACE_SCAN_DEBUG,
-                 (TSTR("Block scanning block %d state %d seq %d" TENDSTR), blk,
-                  state, sequenceNumber));
-
-
-               if(state == YAFFS_BLOCK_STATE_CHECKPOINT){
-                       dev->blocksInCheckpoint++;
-
-               } else if (state == YAFFS_BLOCK_STATE_DEAD) {
-                       T(YAFFS_TRACE_BAD_BLOCKS,
-                         (TSTR("block %d is bad" TENDSTR), blk));
-               } else if (state == YAFFS_BLOCK_STATE_EMPTY) {
-                       T(YAFFS_TRACE_SCAN_DEBUG,
-                         (TSTR("Block empty " TENDSTR)));
-                       dev->nErasedBlocks++;
-                       dev->nFreeChunks += dev->nChunksPerBlock;
-               } else if (state == YAFFS_BLOCK_STATE_NEEDS_SCANNING) {
-
-                       /* Determine the highest sequence number */
-                       if (dev->isYaffs2 &&
-                           sequenceNumber >= YAFFS_LOWEST_SEQUENCE_NUMBER &&
-                           sequenceNumber < YAFFS_HIGHEST_SEQUENCE_NUMBER) {
-
-                               blockIndex[nBlocksToScan].seq = sequenceNumber;
-                               blockIndex[nBlocksToScan].block = blk;
-
-                               nBlocksToScan++;
-
-                               if (sequenceNumber >= dev->sequenceNumber) {
-                                       dev->sequenceNumber = sequenceNumber;
-                               }
-                       } else if (dev->isYaffs2) {
-                               /* TODO: Nasty sequence number! */
-                               T(YAFFS_TRACE_SCAN,
-                                 (TSTR
-                                  ("Block scanning block %d has bad sequence number %d"
-                                   TENDSTR), blk, sequenceNumber));
-
-                       }
-               }
-       }
-
-       T(YAFFS_TRACE_SCAN,
-       (TSTR("%d blocks to be sorted..." TENDSTR), nBlocksToScan));
-
-
-
-       YYIELD();
-
-       /* Sort the blocks */
-#ifndef CONFIG_YAFFS_USE_OWN_SORT
-       {
-               /* Use qsort now. */
-               yaffs_qsort(blockIndex, nBlocksToScan, sizeof(yaffs_BlockIndex), ybicmp);
-       }
-#else
-       {
-               /* Dungy old bubble sort... */
-
-               yaffs_BlockIndex temp;
-               int i;
-               int j;
-
-               for (i = 0; i < nBlocksToScan; i++)
-                       for (j = i + 1; j < nBlocksToScan; j++)
-                               if (blockIndex[i].seq > blockIndex[j].seq) {
-                                       temp = blockIndex[j];
-                                       blockIndex[j] = blockIndex[i];
-                                       blockIndex[i] = temp;
-                               }
-       }
-#endif
-
-       YYIELD();
-
-       T(YAFFS_TRACE_SCAN, (TSTR("...done" TENDSTR)));
-
-       /* Now scan the blocks looking at the data. */
-       startIterator = 0;
-       endIterator = nBlocksToScan - 1;
-       T(YAFFS_TRACE_SCAN_DEBUG,
-         (TSTR("%d blocks to be scanned" TENDSTR), nBlocksToScan));
-
-       /* For each block.... backwards */
-       for (blockIterator = endIterator; !alloc_failed && blockIterator >= startIterator;
-            blockIterator--) {
-               /* Cooperative multitasking! This loop can run for so
-                  long that watchdog timers expire. */
-               YYIELD();
-
-               /* get the block to scan in the correct order */
-               blk = blockIndex[blockIterator].block;
-
-               bi = yaffs_GetBlockInfo(dev, blk);
-
-
-               state = bi->blockState;
-
-               deleted = 0;
-
-               /* For each chunk in each block that needs scanning.... */
-               foundChunksInBlock = 0;
-               for (c = dev->nChunksPerBlock - 1;
-                    !alloc_failed && c >= 0 &&
-                    (state == YAFFS_BLOCK_STATE_NEEDS_SCANNING ||
-                     state == YAFFS_BLOCK_STATE_ALLOCATING); c--) {
-                       /* Scan backwards...
-                        * Read the tags and decide what to do
-                        */
-
-                       chunk = blk * dev->nChunksPerBlock + c;
-
-                       result = yaffs_ReadChunkWithTagsFromNAND(dev, chunk, NULL,
-                                                       &tags);
-
-                       /* Let's have a good look at this chunk... */
-
-                       if (!tags.chunkUsed) {
-                               /* An unassigned chunk in the block.
-                                * If there are used chunks after this one, then
-                                * it is a chunk that was skipped due to failing the erased
-                                * check. Just skip it so that it can be deleted.
-                                * But, more typically, We get here when this is an unallocated
-                                * chunk and his means that either the block is empty or
-                                * this is the one being allocated from
-                                */
-
-                               if(foundChunksInBlock)
-                               {
-                                       /* This is a chunk that was skipped due to failing the erased check */
-
-                               } else if (c == 0) {
-                                       /* We're looking at the first chunk in the block so the block is unused */
-                                       state = YAFFS_BLOCK_STATE_EMPTY;
-                                       dev->nErasedBlocks++;
-                               } else {
-                                       if (state == YAFFS_BLOCK_STATE_NEEDS_SCANNING ||
-                                           state == YAFFS_BLOCK_STATE_ALLOCATING) {
-                                               if(dev->sequenceNumber == bi->sequenceNumber) {
-                                                       /* this is the block being allocated from */
-
-                                                       T(YAFFS_TRACE_SCAN,
-                                                         (TSTR
-                                                          (" Allocating from %d %d"
-                                                           TENDSTR), blk, c));
-
-                                                       state = YAFFS_BLOCK_STATE_ALLOCATING;
-                                                       dev->allocationBlock = blk;
-                                                       dev->allocationPage = c;
-                                                       dev->allocationBlockFinder = blk;
-                                               }
-                                               else {
-                                                       /* This is a partially written block that is not
-                                                        * the current allocation block. This block must have
-                                                        * had a write failure, so set up for retirement.
-                                                        */
-
-                                                        bi->needsRetiring = 1;
-                                                        bi->gcPrioritise = 1;
-
-                                                        T(YAFFS_TRACE_ALWAYS,
-                                                        (TSTR("Partially written block %d being set for retirement" TENDSTR),
-                                                        blk));
-                                               }
-
-                                       }
-
-                               }
-
-                               dev->nFreeChunks++;
-
-                       } else if (tags.chunkId > 0) {
-                               /* chunkId > 0 so it is a data chunk... */
-                               unsigned int endpos;
-                               __u32 chunkBase =
-                                   (tags.chunkId - 1) * dev->nDataBytesPerChunk;
-
-                               foundChunksInBlock = 1;
-
-
-                               yaffs_SetChunkBit(dev, blk, c);
-                               bi->pagesInUse++;
-
-                               in = yaffs_FindOrCreateObjectByNumber(dev,
-                                                                     tags.
-                                                                     objectId,
-                                                                     YAFFS_OBJECT_TYPE_FILE);
-                               if(!in){
-                                       /* Out of memory */
-                                       alloc_failed = 1;
-                               }
-
-                               if (in &&
-                                   in->variantType == YAFFS_OBJECT_TYPE_FILE
-                                   && chunkBase <
-                                   in->variant.fileVariant.shrinkSize) {
-                                       /* This has not been invalidated by a resize */
-                                       if(!yaffs_PutChunkIntoFile(in, tags.chunkId,
-                                                              chunk, -1)){
-                                               alloc_failed = 1;
-                                       }
-
-                                       /* File size is calculated by looking at the data chunks if we have not
-                                        * seen an object header yet. Stop this practice once we find an object header.
-                                        */
-                                       endpos =
-                                           (tags.chunkId -
-                                            1) * dev->nDataBytesPerChunk +
-                                           tags.byteCount;
-
-                                       if (!in->valid &&       /* have not got an object header yet */
-                                           in->variant.fileVariant.
-                                           scannedFileSize < endpos) {
-                                               in->variant.fileVariant.
-                                                   scannedFileSize = endpos;
-                                               in->variant.fileVariant.
-                                                   fileSize =
-                                                   in->variant.fileVariant.
-                                                   scannedFileSize;
-                                       }
-
-                               } else if(in) {
-                                       /* This chunk has been invalidated by a resize, so delete */
-                                       yaffs_DeleteChunk(dev, chunk, 1, __LINE__);
-
-                               }
-                       } else {
-                               /* chunkId == 0, so it is an ObjectHeader.
-                                * Thus, we read in the object header and make the object
-                                */
-                               foundChunksInBlock = 1;
-
-                               yaffs_SetChunkBit(dev, blk, c);
-                               bi->pagesInUse++;
-
-                               oh = NULL;
-                               in = NULL;
-
-                               if (tags.extraHeaderInfoAvailable) {
-                                       in = yaffs_FindOrCreateObjectByNumber
-                                           (dev, tags.objectId,
-                                            tags.extraObjectType);
-                               }
-
-                               if (!in ||
-#ifdef CONFIG_YAFFS_DISABLE_LAZY_LOAD
-                                   !in->valid ||
-#endif
-                                   tags.extraShadows ||
-                                   (!in->valid &&
-                                   (tags.objectId == YAFFS_OBJECTID_ROOT ||
-                                    tags.objectId == YAFFS_OBJECTID_LOSTNFOUND))
-                                   ) {
-
-                                       /* If we don't have  valid info then we need to read the chunk
-                                        * TODO In future we can probably defer reading the chunk and
-                                        * living with invalid data until needed.
-                                        */
-
-                                       result = yaffs_ReadChunkWithTagsFromNAND(dev,
-                                                                       chunk,
-                                                                       chunkData,
-                                                                       NULL);
-
-                                       oh = (yaffs_ObjectHeader *) chunkData;
-
-                                       if (!in)
-                                               in = yaffs_FindOrCreateObjectByNumber(dev, tags.objectId, oh->type);
-
-                               }
-
-                               if (!in) {
-                                       /* TODO Hoosterman we have a problem! */
-                                       T(YAFFS_TRACE_ERROR,
-                                         (TSTR
-                                          ("yaffs tragedy: Could not make object for object  %d  "
-                                           "at chunk %d during scan"
-                                           TENDSTR), tags.objectId, chunk));
-
-                               }
-
-                               if (in->valid) {
-                                       /* We have already filled this one.
-                                        * We have a duplicate that will be discarded, but
-                                        * we first have to suck out resize info if it is a file.
-                                        */
-
-                                       if ((in->variantType == YAFFS_OBJECT_TYPE_FILE) &&
-                                            ((oh &&
-                                              oh-> type == YAFFS_OBJECT_TYPE_FILE)||
-                                             (tags.extraHeaderInfoAvailable  &&
-                                              tags.extraObjectType == YAFFS_OBJECT_TYPE_FILE))
-                                           ) {
-                                               __u32 thisSize =
-                                                   (oh) ? oh->fileSize : tags.
-                                                   extraFileLength;
-                                               __u32 parentObjectId =
-                                                   (oh) ? oh->
-                                                   parentObjectId : tags.
-                                                   extraParentObjectId;
-                                               unsigned isShrink =
-                                                   (oh) ? oh->isShrink : tags.
-                                                   extraIsShrinkHeader;
-
-                                               /* If it is deleted (unlinked at start also means deleted)
-                                                * we treat the file size as being zeroed at this point.
-                                                */
-                                               if (parentObjectId ==
-                                                   YAFFS_OBJECTID_DELETED
-                                                   || parentObjectId ==
-                                                   YAFFS_OBJECTID_UNLINKED) {
-                                                       thisSize = 0;
-                                                       isShrink = 1;
-                                               }
-
-                                               if (isShrink &&
-                                                   in->variant.fileVariant.
-                                                   shrinkSize > thisSize) {
-                                                       in->variant.fileVariant.
-                                                           shrinkSize =
-                                                           thisSize;
-                                               }
-
-                                               if (isShrink) {
-                                                       bi->hasShrinkHeader = 1;
-                                               }
-
-                                       }
-                                       /* Use existing - destroy this one. */
-                                       yaffs_DeleteChunk(dev, chunk, 1, __LINE__);
-
-                               }
-
-                               if (!in->valid &&
-                                   (tags.objectId == YAFFS_OBJECTID_ROOT ||
-                                    tags.objectId ==
-                                    YAFFS_OBJECTID_LOSTNFOUND)) {
-                                       /* We only load some info, don't fiddle with directory structure */
-                                       in->valid = 1;
-
-                                       if(oh) {
-                                               in->variantType = oh->type;
-
-                                               in->yst_mode = oh->yst_mode;
-#ifdef CONFIG_YAFFS_WINCE
-                                               in->win_atime[0] = oh->win_atime[0];
-                                               in->win_ctime[0] = oh->win_ctime[0];
-                                               in->win_mtime[0] = oh->win_mtime[0];
-                                               in->win_atime[1] = oh->win_atime[1];
-                                               in->win_ctime[1] = oh->win_ctime[1];
-                                               in->win_mtime[1] = oh->win_mtime[1];
-#else
-                                               in->yst_uid = oh->yst_uid;
-                                               in->yst_gid = oh->yst_gid;
-                                               in->yst_atime = oh->yst_atime;
-                                               in->yst_mtime = oh->yst_mtime;
-                                               in->yst_ctime = oh->yst_ctime;
-                                               in->yst_rdev = oh->yst_rdev;
-
-#endif
-                                       } else {
-                                               in->variantType = tags.extraObjectType;
-                                               in->lazyLoaded = 1;
-                                       }
-
-                                       in->chunkId = chunk;
-
-                               } else if (!in->valid) {
-                                       /* we need to load this info */
-
-                                       in->valid = 1;
-                                       in->chunkId = chunk;
-
-                                       if(oh) {
-                                               in->variantType = oh->type;
-
-                                               in->yst_mode = oh->yst_mode;
-#ifdef CONFIG_YAFFS_WINCE
-                                               in->win_atime[0] = oh->win_atime[0];
-                                               in->win_ctime[0] = oh->win_ctime[0];
-                                               in->win_mtime[0] = oh->win_mtime[0];
-                                               in->win_atime[1] = oh->win_atime[1];
-                                               in->win_ctime[1] = oh->win_ctime[1];
-                                               in->win_mtime[1] = oh->win_mtime[1];
-#else
-                                               in->yst_uid = oh->yst_uid;
-                                               in->yst_gid = oh->yst_gid;
-                                               in->yst_atime = oh->yst_atime;
-                                               in->yst_mtime = oh->yst_mtime;
-                                               in->yst_ctime = oh->yst_ctime;
-                                               in->yst_rdev = oh->yst_rdev;
-#endif
-
-                                               if (oh->shadowsObject > 0)
-                                                       yaffs_HandleShadowedObject(dev,
-                                                                          oh->
-                                                                          shadowsObject,
-                                                                          1);
-
-
-                                               yaffs_SetObjectName(in, oh->name);
-                                               parent =
-                                                   yaffs_FindOrCreateObjectByNumber
-                                                       (dev, oh->parentObjectId,
-                                                        YAFFS_OBJECT_TYPE_DIRECTORY);
-
-                                                fileSize = oh->fileSize;
-                                                isShrink = oh->isShrink;
-                                                equivalentObjectId = oh->equivalentObjectId;
-
-                                       }
-                                       else {
-                                               in->variantType = tags.extraObjectType;
-                                               parent =
-                                                   yaffs_FindOrCreateObjectByNumber
-                                                       (dev, tags.extraParentObjectId,
-                                                        YAFFS_OBJECT_TYPE_DIRECTORY);
-                                                fileSize = tags.extraFileLength;
-                                                isShrink = tags.extraIsShrinkHeader;
-                                                equivalentObjectId = tags.extraEquivalentObjectId;
-                                               in->lazyLoaded = 1;
-
-                                       }
-                                       in->dirty = 0;
-
-                                       /* directory stuff...
-                                        * hook up to parent
-                                        */
-
-                                       if (parent->variantType ==
-                                           YAFFS_OBJECT_TYPE_UNKNOWN) {
-                                               /* Set up as a directory */
-                                               parent->variantType =
-                                                   YAFFS_OBJECT_TYPE_DIRECTORY;
-                                               INIT_LIST_HEAD(&parent->variant.
-                                                              directoryVariant.
-                                                              children);
-                                       } else if (parent->variantType !=
-                                                  YAFFS_OBJECT_TYPE_DIRECTORY)
-                                       {
-                                               /* Hoosterman, another problem....
-                                                * We're trying to use a non-directory as a directory
-                                                */
-
-                                               T(YAFFS_TRACE_ERROR,
-                                                 (TSTR
-                                                  ("yaffs tragedy: attempting to use non-directory as"
-                                                   " a directory in scan. Put in lost+found."
-                                                   TENDSTR)));
-                                               parent = dev->lostNFoundDir;
-                                       }
-
-                                       yaffs_AddObjectToDirectory(parent, in);
-
-                                       itsUnlinked = (parent == dev->deletedDir) ||
-                                                     (parent == dev->unlinkedDir);
-
-                                       if (isShrink) {
-                                               /* Mark the block as having a shrinkHeader */
-                                               bi->hasShrinkHeader = 1;
-                                       }
-
-                                       /* Note re hardlinks.
-                                        * Since we might scan a hardlink before its equivalent object is scanned
-                                        * we put them all in a list.
-                                        * After scanning is complete, we should have all the objects, so we run
-                                        * through this list and fix up all the chains.
-                                        */
-
-                                       switch (in->variantType) {
-                                       case YAFFS_OBJECT_TYPE_UNKNOWN:
-                                               /* Todo got a problem */
-                                               break;
-                                       case YAFFS_OBJECT_TYPE_FILE:
-
-                                               if (in->variant.fileVariant.
-                                                   scannedFileSize < fileSize) {
-                                                       /* This covers the case where the file size is greater
-                                                        * than where the data is
-                                                        * This will happen if the file is resized to be larger
-                                                        * than its current data extents.
-                                                        */
-                                                       in->variant.fileVariant.fileSize = fileSize;
-                                                       in->variant.fileVariant.scannedFileSize =
-                                                           in->variant.fileVariant.fileSize;
-                                               }
-
-                                               if (isShrink &&
-                                                   in->variant.fileVariant.shrinkSize > fileSize) {
-                                                       in->variant.fileVariant.shrinkSize = fileSize;
-                                               }
-
-                                               break;
-                                       case YAFFS_OBJECT_TYPE_HARDLINK:
-                                               if(!itsUnlinked) {
-                                                 in->variant.hardLinkVariant.equivalentObjectId =
-                                                   equivalentObjectId;
-                                                 in->hardLinks.next =
-                                                   (struct list_head *) hardList;
-                                                 hardList = in;
-                                               }
-                                               break;
-                                       case YAFFS_OBJECT_TYPE_DIRECTORY:
-                                               /* Do nothing */
-                                               break;
-                                       case YAFFS_OBJECT_TYPE_SPECIAL:
-                                               /* Do nothing */
-                                               break;
-                                       case YAFFS_OBJECT_TYPE_SYMLINK:
-                                               if(oh){
-                                                  in->variant.symLinkVariant.alias =
-                                                   yaffs_CloneString(oh->
-                                                                     alias);
-                                                  if(!in->variant.symLinkVariant.alias)
-                                                       alloc_failed = 1;
-                                               }
-                                               break;
-                                       }
-
-                               }
-
-                       }
-
-               } /* End of scanning for each chunk */
-
-               if (state == YAFFS_BLOCK_STATE_NEEDS_SCANNING) {
-                       /* If we got this far while scanning, then the block is fully allocated. */
-                       state = YAFFS_BLOCK_STATE_FULL;
-               }
-
-               bi->blockState = state;
-
-               /* Now let's see if it was dirty */
-               if (bi->pagesInUse == 0 &&
-                   !bi->hasShrinkHeader &&
-                   bi->blockState == YAFFS_BLOCK_STATE_FULL) {
-                       yaffs_BlockBecameDirty(dev, blk);
-               }
-
-       }
-
-       if (altBlockIndex)
-               YFREE_ALT(blockIndex);
-       else
-               YFREE(blockIndex);
-
-       /* Ok, we've done all the scanning.
-        * Fix up the hard link chains.
-        * We should now have scanned all the objects, now it's time to add these
-        * hardlinks.
-        */
-       yaffs_HardlinkFixup(dev,hardList);
-
-
-       /*
-       *  Sort out state of unlinked and deleted objects.
-       */
-       {
-               struct list_head *i;
-               struct list_head *n;
-
-               yaffs_Object *l;
-
-               /* Soft delete all the unlinked files */
-               list_for_each_safe(i, n,
-                                  &dev->unlinkedDir->variant.directoryVariant.
-                                  children) {
-                       if (i) {
-                               l = list_entry(i, yaffs_Object, siblings);
-                               yaffs_DestroyObject(l);
-                       }
-               }
-
-               /* Soft delete all the deletedDir files */
-               list_for_each_safe(i, n,
-                                  &dev->deletedDir->variant.directoryVariant.
-                                  children) {
-                       if (i) {
-                               l = list_entry(i, yaffs_Object, siblings);
-                               yaffs_DestroyObject(l);
-
-                       }
-               }
-       }
-
-       yaffs_ReleaseTempBuffer(dev, chunkData, __LINE__);
-
-       if(alloc_failed){
-               return YAFFS_FAIL;
-       }
-
-       T(YAFFS_TRACE_SCAN, (TSTR("yaffs_ScanBackwards ends" TENDSTR)));
-
-       return YAFFS_OK;
-}
-
-/*------------------------------  Directory Functions ----------------------------- */
-
-static void yaffs_RemoveObjectFromDirectory(yaffs_Object * obj)
-{
-       yaffs_Device *dev = obj->myDev;
-
-       if(dev && dev->removeObjectCallback)
-               dev->removeObjectCallback(obj);
-
-       list_del_init(&obj->siblings);
-       obj->parent = NULL;
-}
-
-
-static void yaffs_AddObjectToDirectory(yaffs_Object * directory,
-                                      yaffs_Object * obj)
-{
-
-       if (!directory) {
-               T(YAFFS_TRACE_ALWAYS,
-                 (TSTR
-                  ("tragedy: Trying to add an object to a null pointer directory"
-                   TENDSTR)));
-               YBUG();
-       }
-       if (directory->variantType != YAFFS_OBJECT_TYPE_DIRECTORY) {
-               T(YAFFS_TRACE_ALWAYS,
-                 (TSTR
-                  ("tragedy: Trying to add an object to a non-directory"
-                   TENDSTR)));
-               YBUG();
-       }
-
-       if (obj->siblings.prev == NULL) {
-               /* Not initialised */
-               INIT_LIST_HEAD(&obj->siblings);
-
-       } else if (!list_empty(&obj->siblings)) {
-               /* If it is holed up somewhere else, un hook it */
-               yaffs_RemoveObjectFromDirectory(obj);
-       }
-       /* Now add it */
-       list_add(&obj->siblings, &directory->variant.directoryVariant.children);
-       obj->parent = directory;
-
-       if (directory == obj->myDev->unlinkedDir
-           || directory == obj->myDev->deletedDir) {
-               obj->unlinked = 1;
-               obj->myDev->nUnlinkedFiles++;
-               obj->renameAllowed = 0;
-       }
-}
-
-yaffs_Object *yaffs_FindObjectByName(yaffs_Object * directory,
-                                    const YCHAR * name)
-{
-       int sum;
-
-       struct list_head *i;
-       YCHAR buffer[YAFFS_MAX_NAME_LENGTH + 1];
-
-       yaffs_Object *l;
-
-       if (!name) {
-               return NULL;
-       }
-
-       if (!directory) {
-               T(YAFFS_TRACE_ALWAYS,
-                 (TSTR
-                  ("tragedy: yaffs_FindObjectByName: null pointer directory"
-                   TENDSTR)));
-               YBUG();
-       }
-       if (directory->variantType != YAFFS_OBJECT_TYPE_DIRECTORY) {
-               T(YAFFS_TRACE_ALWAYS,
-                 (TSTR
-                  ("tragedy: yaffs_FindObjectByName: non-directory" TENDSTR)));
-               YBUG();
-       }
-
-       sum = yaffs_CalcNameSum(name);
-
-       list_for_each(i, &directory->variant.directoryVariant.children) {
-               if (i) {
-                       l = list_entry(i, yaffs_Object, siblings);
-
-                       yaffs_CheckObjectDetailsLoaded(l);
-
-                       /* Special case for lost-n-found */
-                       if (l->objectId == YAFFS_OBJECTID_LOSTNFOUND) {
-                               if (yaffs_strcmp(name, YAFFS_LOSTNFOUND_NAME) == 0) {
-                                       return l;
-                               }
-                       } else if (yaffs_SumCompare(l->sum, sum) || l->chunkId <= 0)
-                       {
-                               /* LostnFound cunk called Objxxx
-                                * Do a real check
-                                */
-                               yaffs_GetObjectName(l, buffer,
-                                                   YAFFS_MAX_NAME_LENGTH);
-                               if (yaffs_strncmp(name, buffer,YAFFS_MAX_NAME_LENGTH) == 0) {
-                                       return l;
-                               }
-
-                       }
-               }
-       }
-
-       return NULL;
-}
-
-
-#if 0
-int yaffs_ApplyToDirectoryChildren(yaffs_Object * theDir,
-                                  int (*fn) (yaffs_Object *))
-{
-       struct list_head *i;
-       yaffs_Object *l;
-
-       if (!theDir) {
-               T(YAFFS_TRACE_ALWAYS,
-                 (TSTR
-                  ("tragedy: yaffs_FindObjectByName: null pointer directory"
-                   TENDSTR)));
-               YBUG();
-       }
-       if (theDir->variantType != YAFFS_OBJECT_TYPE_DIRECTORY) {
-               T(YAFFS_TRACE_ALWAYS,
-                 (TSTR
-                  ("tragedy: yaffs_FindObjectByName: non-directory" TENDSTR)));
-               YBUG();
-       }
-
-       list_for_each(i, &theDir->variant.directoryVariant.children) {
-               if (i) {
-                       l = list_entry(i, yaffs_Object, siblings);
-                       if (l && !fn(l)) {
-                               return YAFFS_FAIL;
-                       }
-               }
-       }
-
-       return YAFFS_OK;
-
-}
-#endif
-
-/* GetEquivalentObject dereferences any hard links to get to the
- * actual object.
- */
-
-yaffs_Object *yaffs_GetEquivalentObject(yaffs_Object * obj)
-{
-       if (obj && obj->variantType == YAFFS_OBJECT_TYPE_HARDLINK) {
-               /* We want the object id of the equivalent object, not this one */
-               obj = obj->variant.hardLinkVariant.equivalentObject;
-               yaffs_CheckObjectDetailsLoaded(obj);
-       }
-       return obj;
-
-}
-
-int yaffs_GetObjectName(yaffs_Object * obj, YCHAR * name, int buffSize)
-{
-       memset(name, 0, buffSize * sizeof(YCHAR));
-
-       yaffs_CheckObjectDetailsLoaded(obj);
-
-       if (obj->objectId == YAFFS_OBJECTID_LOSTNFOUND) {
-               yaffs_strncpy(name, YAFFS_LOSTNFOUND_NAME, buffSize - 1);
-       } else if (obj->chunkId <= 0) {
-               YCHAR locName[20];
-               /* make up a name */
-               yaffs_sprintf(locName, _Y("%s%d"), YAFFS_LOSTNFOUND_PREFIX,
-                             obj->objectId);
-               yaffs_strncpy(name, locName, buffSize - 1);
-
-       }
-#ifdef CONFIG_YAFFS_SHORT_NAMES_IN_RAM
-       else if (obj->shortName[0]) {
-               yaffs_strcpy(name, obj->shortName);
-       }
-#endif
-       else {
-               int result;
-               __u8 *buffer = yaffs_GetTempBuffer(obj->myDev, __LINE__);
-
-               yaffs_ObjectHeader *oh = (yaffs_ObjectHeader *) buffer;
-
-               memset(buffer, 0, obj->myDev->nDataBytesPerChunk);
-
-               if (obj->chunkId >= 0) {
-                       result = yaffs_ReadChunkWithTagsFromNAND(obj->myDev,
-                                                       obj->chunkId, buffer,
-                                                       NULL);
-               }
-               yaffs_strncpy(name, oh->name, buffSize - 1);
-
-               yaffs_ReleaseTempBuffer(obj->myDev, buffer, __LINE__);
-       }
-
-       return yaffs_strlen(name);
-}
-
-int yaffs_GetObjectFileLength(yaffs_Object * obj)
-{
-
-       /* Dereference any hard linking */
-       obj = yaffs_GetEquivalentObject(obj);
-
-       if (obj->variantType == YAFFS_OBJECT_TYPE_FILE) {
-               return obj->variant.fileVariant.fileSize;
-       }
-       if (obj->variantType == YAFFS_OBJECT_TYPE_SYMLINK) {
-               return yaffs_strlen(obj->variant.symLinkVariant.alias);
-       } else {
-               /* Only a directory should drop through to here */
-               return obj->myDev->nDataBytesPerChunk;
-       }
-}
-
-int yaffs_GetObjectLinkCount(yaffs_Object * obj)
-{
-       int count = 0;
-       struct list_head *i;
-
-       if (!obj->unlinked) {
-               count++;        /* the object itself */
-       }
-       list_for_each(i, &obj->hardLinks) {
-               count++;        /* add the hard links; */
-       }
-       return count;
-
-}
-
-int yaffs_GetObjectInode(yaffs_Object * obj)
-{
-       obj = yaffs_GetEquivalentObject(obj);
-
-       return obj->objectId;
-}
-
-unsigned yaffs_GetObjectType(yaffs_Object * obj)
-{
-       obj = yaffs_GetEquivalentObject(obj);
-
-       switch (obj->variantType) {
-       case YAFFS_OBJECT_TYPE_FILE:
-               return DT_REG;
-               break;
-       case YAFFS_OBJECT_TYPE_DIRECTORY:
-               return DT_DIR;
-               break;
-       case YAFFS_OBJECT_TYPE_SYMLINK:
-               return DT_LNK;
-               break;
-       case YAFFS_OBJECT_TYPE_HARDLINK:
-               return DT_REG;
-               break;
-       case YAFFS_OBJECT_TYPE_SPECIAL:
-               if (S_ISFIFO(obj->yst_mode))
-                       return DT_FIFO;
-               if (S_ISCHR(obj->yst_mode))
-                       return DT_CHR;
-               if (S_ISBLK(obj->yst_mode))
-                       return DT_BLK;
-               if (S_ISSOCK(obj->yst_mode))
-                       return DT_SOCK;
-       default:
-               return DT_REG;
-               break;
-       }
-}
-
-YCHAR *yaffs_GetSymlinkAlias(yaffs_Object * obj)
-{
-       obj = yaffs_GetEquivalentObject(obj);
-       if (obj->variantType == YAFFS_OBJECT_TYPE_SYMLINK) {
-               return yaffs_CloneString(obj->variant.symLinkVariant.alias);
-       } else {
-               return yaffs_CloneString(_Y(""));
-       }
-}
-
-#ifndef CONFIG_YAFFS_WINCE
-
-int yaffs_SetAttributes(yaffs_Object * obj, struct iattr *attr)
-{
-       unsigned int valid = attr->ia_valid;
-
-       if (valid & ATTR_MODE)
-               obj->yst_mode = attr->ia_mode;
-       if (valid & ATTR_UID)
-               obj->yst_uid = attr->ia_uid;
-       if (valid & ATTR_GID)
-               obj->yst_gid = attr->ia_gid;
-
-       if (valid & ATTR_ATIME)
-               obj->yst_atime = Y_TIME_CONVERT(attr->ia_atime);
-       if (valid & ATTR_CTIME)
-               obj->yst_ctime = Y_TIME_CONVERT(attr->ia_ctime);
-       if (valid & ATTR_MTIME)
-               obj->yst_mtime = Y_TIME_CONVERT(attr->ia_mtime);
-
-       if (valid & ATTR_SIZE)
-               yaffs_ResizeFile(obj, attr->ia_size);
-
-       yaffs_UpdateObjectHeader(obj, NULL, 1, 0, 0);
-
-       return YAFFS_OK;
-
-}
-int yaffs_GetAttributes(yaffs_Object * obj, struct iattr *attr)
-{
-       unsigned int valid = 0;
-
-       attr->ia_mode = obj->yst_mode;
-       valid |= ATTR_MODE;
-       attr->ia_uid = obj->yst_uid;
-       valid |= ATTR_UID;
-       attr->ia_gid = obj->yst_gid;
-       valid |= ATTR_GID;
-
-       Y_TIME_CONVERT(attr->ia_atime) = obj->yst_atime;
-       valid |= ATTR_ATIME;
-       Y_TIME_CONVERT(attr->ia_ctime) = obj->yst_ctime;
-       valid |= ATTR_CTIME;
-       Y_TIME_CONVERT(attr->ia_mtime) = obj->yst_mtime;
-       valid |= ATTR_MTIME;
-
-       attr->ia_size = yaffs_GetFileSize(obj);
-       valid |= ATTR_SIZE;
-
-       attr->ia_valid = valid;
-
-       return YAFFS_OK;
-
-}
-
-#endif
-
-#if 0
-int yaffs_DumpObject(yaffs_Object * obj)
-{
-       YCHAR name[257];
-
-       yaffs_GetObjectName(obj, name, 256);
-
-       T(YAFFS_TRACE_ALWAYS,
-         (TSTR
-          ("Object %d, inode %d \"%s\"\n dirty %d valid %d serial %d sum %d"
-           " chunk %d type %d size %d\n"
-           TENDSTR), obj->objectId, yaffs_GetObjectInode(obj), name,
-          obj->dirty, obj->valid, obj->serial, obj->sum, obj->chunkId,
-          yaffs_GetObjectType(obj), yaffs_GetObjectFileLength(obj)));
-
-       return YAFFS_OK;
-}
-#endif
-
-/*---------------------------- Initialisation code -------------------------------------- */
-
-static int yaffs_CheckDevFunctions(const yaffs_Device * dev)
-{
-
-       /* Common functions, gotta have */
-       if (!dev->eraseBlockInNAND || !dev->initialiseNAND)
-               return 0;
-
-#ifdef CONFIG_YAFFS_YAFFS2
-
-       /* Can use the "with tags" style interface for yaffs1 or yaffs2 */
-       if (dev->writeChunkWithTagsToNAND &&
-           dev->readChunkWithTagsFromNAND &&
-           !dev->writeChunkToNAND &&
-           !dev->readChunkFromNAND &&
-           dev->markNANDBlockBad && dev->queryNANDBlock)
-               return 1;
-#endif
-
-       /* Can use the "spare" style interface for yaffs1 */
-       if (!dev->isYaffs2 &&
-           !dev->writeChunkWithTagsToNAND &&
-           !dev->readChunkWithTagsFromNAND &&
-           dev->writeChunkToNAND &&
-           dev->readChunkFromNAND &&
-           !dev->markNANDBlockBad && !dev->queryNANDBlock)
-               return 1;
-
-       return 0;               /* bad */
-}
-
-
-static int yaffs_CreateInitialDirectories(yaffs_Device *dev)
-{
-       /* Initialise the unlinked, deleted, root and lost and found directories */
-
-       dev->lostNFoundDir = dev->rootDir =  NULL;
-       dev->unlinkedDir = dev->deletedDir = NULL;
-
-       dev->unlinkedDir =
-           yaffs_CreateFakeDirectory(dev, YAFFS_OBJECTID_UNLINKED, S_IFDIR);
-
-       dev->deletedDir =
-           yaffs_CreateFakeDirectory(dev, YAFFS_OBJECTID_DELETED, S_IFDIR);
-
-       dev->rootDir =
-           yaffs_CreateFakeDirectory(dev, YAFFS_OBJECTID_ROOT,
-                                     YAFFS_ROOT_MODE | S_IFDIR);
-       dev->lostNFoundDir =
-           yaffs_CreateFakeDirectory(dev, YAFFS_OBJECTID_LOSTNFOUND,
-                                     YAFFS_LOSTNFOUND_MODE | S_IFDIR);
-
-       if(dev->lostNFoundDir && dev->rootDir && dev->unlinkedDir && dev->deletedDir){
-               yaffs_AddObjectToDirectory(dev->rootDir, dev->lostNFoundDir);
-               return YAFFS_OK;
-       }
-
-       return YAFFS_FAIL;
-}
-
-int yaffs_GutsInitialise(yaffs_Device * dev)
-{
-       int init_failed = 0;
-       unsigned x;
-       int bits;
-
-       T(YAFFS_TRACE_TRACING, (TSTR("yaffs: yaffs_GutsInitialise()" TENDSTR)));
-
-       /* Check stuff that must be set */
-
-       if (!dev) {
-               T(YAFFS_TRACE_ALWAYS, (TSTR("yaffs: Need a device" TENDSTR)));
-               return YAFFS_FAIL;
-       }
-
-       dev->internalStartBlock = dev->startBlock;
-       dev->internalEndBlock = dev->endBlock;
-       dev->blockOffset = 0;
-       dev->chunkOffset = 0;
-       dev->nFreeChunks = 0;
-
-       if (dev->startBlock == 0) {
-               dev->internalStartBlock = dev->startBlock + 1;
-               dev->internalEndBlock = dev->endBlock + 1;
-               dev->blockOffset = 1;
-               dev->chunkOffset = dev->nChunksPerBlock;
-       }
-
-       /* Check geometry parameters. */
-
-       if ((dev->isYaffs2 && dev->nDataBytesPerChunk < 1024) ||
-           (!dev->isYaffs2 && dev->nDataBytesPerChunk != 512) ||
-            dev->nChunksPerBlock < 2 ||
-            dev->nReservedBlocks < 2 ||
-            dev->internalStartBlock <= 0 ||
-            dev->internalEndBlock <= 0 ||
-            dev->internalEndBlock <= (dev->internalStartBlock + dev->nReservedBlocks + 2)      // otherwise it is too small
-           ) {
-               T(YAFFS_TRACE_ALWAYS,
-                 (TSTR
-                  ("yaffs: NAND geometry problems: chunk size %d, type is yaffs%s "
-                   TENDSTR), dev->nDataBytesPerChunk, dev->isYaffs2 ? "2" : ""));
-               return YAFFS_FAIL;
-       }
-
-       if (yaffs_InitialiseNAND(dev) != YAFFS_OK) {
-               T(YAFFS_TRACE_ALWAYS,
-                 (TSTR("yaffs: InitialiseNAND failed" TENDSTR)));
-               return YAFFS_FAIL;
-       }
-
-       /* Got the right mix of functions? */
-       if (!yaffs_CheckDevFunctions(dev)) {
-               /* Function missing */
-               T(YAFFS_TRACE_ALWAYS,
-                 (TSTR
-                  ("yaffs: device function(s) missing or wrong\n" TENDSTR)));
-
-               return YAFFS_FAIL;
-       }
-
-       /* This is really a compilation check. */
-       if (!yaffs_CheckStructures()) {
-               T(YAFFS_TRACE_ALWAYS,
-                 (TSTR("yaffs_CheckStructures failed\n" TENDSTR)));
-               return YAFFS_FAIL;
-       }
-
-       if (dev->isMounted) {
-               T(YAFFS_TRACE_ALWAYS,
-                 (TSTR("yaffs: device already mounted\n" TENDSTR)));
-               return YAFFS_FAIL;
-       }
-
-       /* Finished with most checks. One or two more checks happen later on too. */
-
-       dev->isMounted = 1;
-
-
-
-       /* OK now calculate a few things for the device */
-
-       /*
-        *  Calculate all the chunk size manipulation numbers:
-        */
-        /* Start off assuming it is a power of 2 */
-        dev->chunkShift = ShiftDiv(dev->nDataBytesPerChunk);
-        dev->chunkMask = (1<<dev->chunkShift) - 1;
-
-        if(dev->nDataBytesPerChunk == (dev->chunkMask + 1)){
-               /* Yes it is a power of 2, disable crumbs */
-               dev->crumbMask = 0;
-               dev->crumbShift = 0;
-               dev->crumbsPerChunk = 0;
-        } else {
-               /* Not a power of 2, use crumbs instead */
-               dev->crumbShift = ShiftDiv(sizeof(yaffs_PackedTags2TagsPart));
-               dev->crumbMask = (1<<dev->crumbShift)-1;
-               dev->crumbsPerChunk = dev->nDataBytesPerChunk/(1 << dev->crumbShift);
-               dev->chunkShift = 0;
-               dev->chunkMask = 0;
-       }
-
-
-       /*
-        * Calculate chunkGroupBits.
-        * We need to find the next power of 2 > than internalEndBlock
-        */
-
-       x = dev->nChunksPerBlock * (dev->internalEndBlock + 1);
-
-       bits = ShiftsGE(x);
-
-       /* Set up tnode width if wide tnodes are enabled. */
-       if(!dev->wideTnodesDisabled){
-               /* bits must be even so that we end up with 32-bit words */
-               if(bits & 1)
-                       bits++;
-               if(bits < 16)
-                       dev->tnodeWidth = 16;
-               else
-                       dev->tnodeWidth = bits;
-       }
-       else
-               dev->tnodeWidth = 16;
-
-       dev->tnodeMask = (1<<dev->tnodeWidth)-1;
-
-       /* Level0 Tnodes are 16 bits or wider (if wide tnodes are enabled),
-        * so if the bitwidth of the
-        * chunk range we're using is greater than 16 we need
-        * to figure out chunk shift and chunkGroupSize
-        */
-
-       if (bits <= dev->tnodeWidth)
-               dev->chunkGroupBits = 0;
-       else
-               dev->chunkGroupBits = bits - dev->tnodeWidth;
-
-
-       dev->chunkGroupSize = 1 << dev->chunkGroupBits;
-
-       if (dev->nChunksPerBlock < dev->chunkGroupSize) {
-               /* We have a problem because the soft delete won't work if
-                * the chunk group size > chunks per block.
-                * This can be remedied by using larger "virtual blocks".
-                */
-               T(YAFFS_TRACE_ALWAYS,
-                 (TSTR("yaffs: chunk group too large\n" TENDSTR)));
-
-               return YAFFS_FAIL;
-       }
-
-       /* OK, we've finished verifying the device, lets continue with initialisation */
-
-       /* More device initialisation */
-       dev->garbageCollections = 0;
-       dev->passiveGarbageCollections = 0;
-       dev->currentDirtyChecker = 0;
-       dev->bufferedBlock = -1;
-       dev->doingBufferedBlockRewrite = 0;
-       dev->nDeletedFiles = 0;
-       dev->nBackgroundDeletions = 0;
-       dev->nUnlinkedFiles = 0;
-       dev->eccFixed = 0;
-       dev->eccUnfixed = 0;
-       dev->tagsEccFixed = 0;
-       dev->tagsEccUnfixed = 0;
-       dev->nErasureFailures = 0;
-       dev->nErasedBlocks = 0;
-       dev->isDoingGC = 0;
-       dev->hasPendingPrioritisedGCs = 1; /* Assume the worst for now, will get fixed on first GC */
-
-       /* Initialise temporary buffers and caches. */
-       if(!yaffs_InitialiseTempBuffers(dev))
-               init_failed = 1;
-
-       dev->srCache = NULL;
-       dev->gcCleanupList = NULL;
-
-
-       if (!init_failed &&
-           dev->nShortOpCaches > 0) {
-               int i;
-               __u8 *buf;
-               int srCacheBytes = dev->nShortOpCaches * sizeof(yaffs_ChunkCache);
-
-               if (dev->nShortOpCaches > YAFFS_MAX_SHORT_OP_CACHES) {
-                       dev->nShortOpCaches = YAFFS_MAX_SHORT_OP_CACHES;
-               }
-
-               buf = dev->srCache =  YMALLOC(srCacheBytes);
-
-               if(dev->srCache)
-                       memset(dev->srCache,0,srCacheBytes);
-
-               for (i = 0; i < dev->nShortOpCaches && buf; i++) {
-                       dev->srCache[i].object = NULL;
-                       dev->srCache[i].lastUse = 0;
-                       dev->srCache[i].dirty = 0;
-                       dev->srCache[i].data = buf = YMALLOC_DMA(dev->nDataBytesPerChunk);
-               }
-               if(!buf)
-                       init_failed = 1;
-
-               dev->srLastUse = 0;
-       }
-
-       dev->cacheHits = 0;
-
-       if(!init_failed){
-               dev->gcCleanupList = YMALLOC(dev->nChunksPerBlock * sizeof(__u32));
-               if(!dev->gcCleanupList)
-                       init_failed = 1;
-       }
-
-       if (dev->isYaffs2) {
-               dev->useHeaderFileSize = 1;
-       }
-       if(!init_failed && !yaffs_InitialiseBlocks(dev))
-               init_failed = 1;
-
-       yaffs_InitialiseTnodes(dev);
-       yaffs_InitialiseObjects(dev);
-
-       if(!init_failed && !yaffs_CreateInitialDirectories(dev))
-               init_failed = 1;
-
-
-       if(!init_failed){
-               /* Now scan the flash. */
-               if (dev->isYaffs2) {
-                       if(yaffs_CheckpointRestore(dev)) {
-                               T(YAFFS_TRACE_ALWAYS,
-                                 (TSTR("yaffs: restored from checkpoint" TENDSTR)));
-                       } else {
-
-                               /* Clean up the mess caused by an aborted checkpoint load
-                                * and scan backwards.
-                                */
-                               yaffs_DeinitialiseBlocks(dev);
-                               yaffs_DeinitialiseTnodes(dev);
-                               yaffs_DeinitialiseObjects(dev);
-
-
-                               dev->nErasedBlocks = 0;
-                               dev->nFreeChunks = 0;
-                               dev->allocationBlock = -1;
-                               dev->allocationPage = -1;
-                               dev->nDeletedFiles = 0;
-                               dev->nUnlinkedFiles = 0;
-                               dev->nBackgroundDeletions = 0;
-                               dev->oldestDirtySequence = 0;
-
-                               if(!init_failed && !yaffs_InitialiseBlocks(dev))
-                                       init_failed = 1;
-
-                               yaffs_InitialiseTnodes(dev);
-                               yaffs_InitialiseObjects(dev);
-
-                               if(!init_failed && !yaffs_CreateInitialDirectories(dev))
-                                       init_failed = 1;
-
-                               if(!init_failed && !yaffs_ScanBackwards(dev))
-                                       init_failed = 1;
-                       }
-               }else
-                       if(!yaffs_Scan(dev))
-                               init_failed = 1;
-       }
-
-       if(init_failed){
-               /* Clean up the mess */
-               T(YAFFS_TRACE_TRACING,
-                 (TSTR("yaffs: yaffs_GutsInitialise() aborted.\n" TENDSTR)));
-
-               yaffs_Deinitialise(dev);
-               return YAFFS_FAIL;
-       }
-
-       /* Zero out stats */
-       dev->nPageReads = 0;
-       dev->nPageWrites = 0;
-       dev->nBlockErasures = 0;
-       dev->nGCCopies = 0;
-       dev->nRetriedWrites = 0;
-
-       dev->nRetiredBlocks = 0;
-
-       yaffs_VerifyFreeChunks(dev);
-       yaffs_VerifyBlocks(dev);
-
-
-       T(YAFFS_TRACE_TRACING,
-         (TSTR("yaffs: yaffs_GutsInitialise() done.\n" TENDSTR)));
-       return YAFFS_OK;
-
-}
-
-void yaffs_Deinitialise(yaffs_Device * dev)
-{
-       if (dev->isMounted) {
-               int i;
-
-               yaffs_DeinitialiseBlocks(dev);
-               yaffs_DeinitialiseTnodes(dev);
-               yaffs_DeinitialiseObjects(dev);
-               if (dev->nShortOpCaches > 0 &&
-                   dev->srCache) {
-
-                       for (i = 0; i < dev->nShortOpCaches; i++) {
-                               if(dev->srCache[i].data)
-                                       YFREE(dev->srCache[i].data);
-                               dev->srCache[i].data = NULL;
-                       }
-
-                       YFREE(dev->srCache);
-                       dev->srCache = NULL;
-               }
-
-               YFREE(dev->gcCleanupList);
-
-               for (i = 0; i < YAFFS_N_TEMP_BUFFERS; i++) {
-                       YFREE(dev->tempBuffer[i].buffer);
-               }
-
-               dev->isMounted = 0;
-       }
-
-}
-
-static int yaffs_CountFreeChunks(yaffs_Device * dev)
-{
-       int nFree;
-       int b;
-
-       yaffs_BlockInfo *blk;
-
-       for (nFree = 0, b = dev->internalStartBlock; b <= dev->internalEndBlock;
-            b++) {
-               blk = yaffs_GetBlockInfo(dev, b);
-
-               switch (blk->blockState) {
-               case YAFFS_BLOCK_STATE_EMPTY:
-               case YAFFS_BLOCK_STATE_ALLOCATING:
-               case YAFFS_BLOCK_STATE_COLLECTING:
-               case YAFFS_BLOCK_STATE_FULL:
-                       nFree +=
-                           (dev->nChunksPerBlock - blk->pagesInUse +
-                            blk->softDeletions);
-                       break;
-               default:
-                       break;
-               }
-
-       }
-
-       return nFree;
-}
-
-int yaffs_GetNumberOfFreeChunks(yaffs_Device * dev)
-{
-       /* This is what we report to the outside world */
-
-       int nFree;
-       int nDirtyCacheChunks;
-       int blocksForCheckpoint;
-
-#if 1
-       nFree = dev->nFreeChunks;
-#else
-       nFree = yaffs_CountFreeChunks(dev);
-#endif
-
-       nFree += dev->nDeletedFiles;
-
-       /* Now count the number of dirty chunks in the cache and subtract those */
-
-       {
-               int i;
-               for (nDirtyCacheChunks = 0, i = 0; i < dev->nShortOpCaches; i++) {
-                       if (dev->srCache[i].dirty)
-                               nDirtyCacheChunks++;
-               }
-       }
-
-       nFree -= nDirtyCacheChunks;
-
-       nFree -= ((dev->nReservedBlocks + 1) * dev->nChunksPerBlock);
-
-       /* Now we figure out how much to reserve for the checkpoint and report that... */
-       blocksForCheckpoint = dev->nCheckpointReservedBlocks - dev->blocksInCheckpoint;
-       if(blocksForCheckpoint < 0)
-               blocksForCheckpoint = 0;
-
-       nFree -= (blocksForCheckpoint * dev->nChunksPerBlock);
-
-       if (nFree < 0)
-               nFree = 0;
-
-       return nFree;
-
-}
-
-static int yaffs_freeVerificationFailures;
-
-static void yaffs_VerifyFreeChunks(yaffs_Device * dev)
-{
-       int counted;
-       int difference;
-
-       if(yaffs_SkipVerification(dev))
-               return;
-
-       counted = yaffs_CountFreeChunks(dev);
-
-       difference = dev->nFreeChunks - counted;
-
-       if (difference) {
-               T(YAFFS_TRACE_ALWAYS,
-                 (TSTR("Freechunks verification failure %d %d %d" TENDSTR),
-                  dev->nFreeChunks, counted, difference));
-               yaffs_freeVerificationFailures++;
-       }
-}
-
-/*---------------------------------------- YAFFS test code ----------------------*/
-
-#define yaffs_CheckStruct(structure,syze, name) \
-          if(sizeof(structure) != syze) \
-              { \
-                T(YAFFS_TRACE_ALWAYS,(TSTR("%s should be %d but is %d\n" TENDSTR),\
-                name,syze,sizeof(structure))); \
-                return YAFFS_FAIL; \
-               }
-
-static int yaffs_CheckStructures(void)
-{
-/*      yaffs_CheckStruct(yaffs_Tags,8,"yaffs_Tags") */
-/*      yaffs_CheckStruct(yaffs_TagsUnion,8,"yaffs_TagsUnion") */
-/*      yaffs_CheckStruct(yaffs_Spare,16,"yaffs_Spare") */
-#ifndef CONFIG_YAFFS_TNODE_LIST_DEBUG
-       yaffs_CheckStruct(yaffs_Tnode, 2 * YAFFS_NTNODES_LEVEL0, "yaffs_Tnode")
-#endif
-           yaffs_CheckStruct(yaffs_ObjectHeader, 512, "yaffs_ObjectHeader")
-
-           return YAFFS_OK;
-}
+/*
+ * YAFFS: Yet Another Flash File System. A NAND-flash specific file system.
+ *
+ * Copyright (C) 2002-2007 Aleph One Ltd.
+ *   for Toby Churchill Ltd and Brightstar Engineering
+ *
+ * Created by Charles Manning <charles@aleph1.co.uk>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+/* XXX U-BOOT XXX */
+#include <common.h>
+
+const char *yaffs_guts_c_version =
+    "$Id: yaffs_guts.c,v 1.1.1.1 2009/03/25 22:22:12 kenagy Exp $";
+
+#include "yportenv.h"
+#include "linux/stat.h"
+
+#include "yaffsinterface.h"
+#include "yaffsfs.h"
+#include "yaffs_guts.h"
+#include "yaffs_tagsvalidity.h"
+
+#include "yaffs_tagscompat.h"
+#ifndef  CONFIG_YAFFS_USE_OWN_SORT
+#include "yaffs_qsort.h"
+#endif
+#include "yaffs_nand.h"
+
+#include "yaffs_checkptrw.h"
+
+#include "yaffs_nand.h"
+#include "yaffs_packedtags2.h"
+
+#include "malloc.h"
+
+#ifdef CONFIG_YAFFS_WINCE
+void yfsd_LockYAFFS(BOOL fsLockOnly);
+void yfsd_UnlockYAFFS(BOOL fsLockOnly);
+#endif
+
+#define YAFFS_PASSIVE_GC_CHUNKS 2
+
+#include "yaffs_ecc.h"
+
+
+/* Robustification (if it ever comes about...) */
+static void yaffs_RetireBlock(yaffs_Device * dev, int blockInNAND);
+static void yaffs_HandleWriteChunkError(yaffs_Device * dev, int chunkInNAND, int erasedOk);
+static void yaffs_HandleWriteChunkOk(yaffs_Device * dev, int chunkInNAND,
+                                    const __u8 * data,
+                                    const yaffs_ExtendedTags * tags);
+static void yaffs_HandleUpdateChunk(yaffs_Device * dev, int chunkInNAND,
+                                   const yaffs_ExtendedTags * tags);
+
+/* Other local prototypes */
+static int yaffs_UnlinkObject( yaffs_Object *obj);
+static int yaffs_ObjectHasCachedWriteData(yaffs_Object *obj);
+
+static void yaffs_HardlinkFixup(yaffs_Device *dev, yaffs_Object *hardList);
+
+static int yaffs_WriteNewChunkWithTagsToNAND(yaffs_Device * dev,
+                                            const __u8 * buffer,
+                                            yaffs_ExtendedTags * tags,
+                                            int useReserve);
+static int yaffs_PutChunkIntoFile(yaffs_Object * in, int chunkInInode,
+                                 int chunkInNAND, int inScan);
+
+static yaffs_Object *yaffs_CreateNewObject(yaffs_Device * dev, int number,
+                                          yaffs_ObjectType type);
+static void yaffs_AddObjectToDirectory(yaffs_Object * directory,
+                                      yaffs_Object * obj);
+static int yaffs_UpdateObjectHeader(yaffs_Object * in, const YCHAR * name,
+                                   int force, int isShrink, int shadows);
+static void yaffs_RemoveObjectFromDirectory(yaffs_Object * obj);
+static int yaffs_CheckStructures(void);
+static int yaffs_DeleteWorker(yaffs_Object * in, yaffs_Tnode * tn, __u32 level,
+                             int chunkOffset, int *limit);
+static int yaffs_DoGenericObjectDeletion(yaffs_Object * in);
+
+static yaffs_BlockInfo *yaffs_GetBlockInfo(yaffs_Device * dev, int blockNo);
+
+static __u8 *yaffs_GetTempBuffer(yaffs_Device * dev, int lineNo);
+static void yaffs_ReleaseTempBuffer(yaffs_Device * dev, __u8 * buffer,
+                                   int lineNo);
+
+static int yaffs_CheckChunkErased(struct yaffs_DeviceStruct *dev,
+                                 int chunkInNAND);
+
+static int yaffs_UnlinkWorker(yaffs_Object * obj);
+static void yaffs_DestroyObject(yaffs_Object * obj);
+
+static int yaffs_TagsMatch(const yaffs_ExtendedTags * tags, int objectId,
+                          int chunkInObject);
+
+loff_t yaffs_GetFileSize(yaffs_Object * obj);
+
+static int yaffs_AllocateChunk(yaffs_Device * dev, int useReserve, yaffs_BlockInfo **blockUsedPtr);
+
+static void yaffs_VerifyFreeChunks(yaffs_Device * dev);
+
+static void yaffs_CheckObjectDetailsLoaded(yaffs_Object *in);
+
+#ifdef YAFFS_PARANOID
+static int yaffs_CheckFileSanity(yaffs_Object * in);
+#else
+#define yaffs_CheckFileSanity(in)
+#endif
+
+static void yaffs_InvalidateWholeChunkCache(yaffs_Object * in);
+static void yaffs_InvalidateChunkCache(yaffs_Object * object, int chunkId);
+
+static void yaffs_InvalidateCheckpoint(yaffs_Device *dev);
+
+static int yaffs_FindChunkInFile(yaffs_Object * in, int chunkInInode,
+                                yaffs_ExtendedTags * tags);
+
+static __u32 yaffs_GetChunkGroupBase(yaffs_Device *dev, yaffs_Tnode *tn, unsigned pos);
+static yaffs_Tnode *yaffs_FindLevel0Tnode(yaffs_Device * dev,
+                                         yaffs_FileStructure * fStruct,
+                                         __u32 chunkId);
+
+
+/* Function to calculate chunk and offset */
+
+static void yaffs_AddrToChunk(yaffs_Device *dev, loff_t addr, __u32 *chunk, __u32 *offset)
+{
+       if(dev->chunkShift){
+               /* Easy-peasy power of 2 case */
+               *chunk  = (__u32)(addr >> dev->chunkShift);
+               *offset = (__u32)(addr & dev->chunkMask);
+       }
+       else if(dev->crumbsPerChunk)
+       {
+               /* Case where we're using "crumbs" */
+               *offset = (__u32)(addr & dev->crumbMask);
+               addr >>= dev->crumbShift;
+               *chunk = ((__u32)addr)/dev->crumbsPerChunk;
+               *offset += ((addr - (*chunk * dev->crumbsPerChunk)) << dev->crumbShift);
+       }
+       else
+               YBUG();
+}
+
+/* Function to return the number of shifts for a power of 2 greater than or equal
+ * to the given number
+ * Note we don't try to cater for all possible numbers and this does not have to
+ * be hellishly efficient.
+ */
+
+static __u32 ShiftsGE(__u32 x)
+{
+       int extraBits;
+       int nShifts;
+
+       nShifts = extraBits = 0;
+
+       while(x>1){
+               if(x & 1) extraBits++;
+               x>>=1;
+               nShifts++;
+       }
+
+       if(extraBits)
+               nShifts++;
+
+       return nShifts;
+}
+
+/* Function to return the number of shifts to get a 1 in bit 0
+ */
+
+static __u32 ShiftDiv(__u32 x)
+{
+       int nShifts;
+
+       nShifts =  0;
+
+       if(!x) return 0;
+
+       while( !(x&1)){
+               x>>=1;
+               nShifts++;
+       }
+
+       return nShifts;
+}
+
+
+
+/*
+ * Temporary buffer manipulations.
+ */
+
+static int yaffs_InitialiseTempBuffers(yaffs_Device *dev)
+{
+       int i;
+       __u8 *buf = (__u8 *)1;
+
+       memset(dev->tempBuffer,0,sizeof(dev->tempBuffer));
+
+       for (i = 0; buf && i < YAFFS_N_TEMP_BUFFERS; i++) {
+               dev->tempBuffer[i].line = 0;    /* not in use */
+               dev->tempBuffer[i].buffer = buf =
+                   YMALLOC_DMA(dev->nDataBytesPerChunk);
+       }
+
+       return buf ? YAFFS_OK : YAFFS_FAIL;
+
+}
+
+static __u8 *yaffs_GetTempBuffer(yaffs_Device * dev, int lineNo)
+{
+       int i, j;
+       for (i = 0; i < YAFFS_N_TEMP_BUFFERS; i++) {
+               if (dev->tempBuffer[i].line == 0) {
+                       dev->tempBuffer[i].line = lineNo;
+                       if ((i + 1) > dev->maxTemp) {
+                               dev->maxTemp = i + 1;
+                               for (j = 0; j <= i; j++)
+                                       dev->tempBuffer[j].maxLine =
+                                           dev->tempBuffer[j].line;
+                       }
+
+                       return dev->tempBuffer[i].buffer;
+               }
+       }
+
+       T(YAFFS_TRACE_BUFFERS,
+         (TSTR("Out of temp buffers at line %d, other held by lines:"),
+          lineNo));
+       for (i = 0; i < YAFFS_N_TEMP_BUFFERS; i++) {
+               T(YAFFS_TRACE_BUFFERS, (TSTR(" %d "), dev->tempBuffer[i].line));
+       }
+       T(YAFFS_TRACE_BUFFERS, (TSTR(" " TENDSTR)));
+
+       /*
+        * If we got here then we have to allocate an unmanaged one
+        * This is not good.
+        */
+
+       dev->unmanagedTempAllocations++;
+       return YMALLOC(dev->nDataBytesPerChunk);
+
+}
+
+static void yaffs_ReleaseTempBuffer(yaffs_Device * dev, __u8 * buffer,
+                                   int lineNo)
+{
+       int i;
+       for (i = 0; i < YAFFS_N_TEMP_BUFFERS; i++) {
+               if (dev->tempBuffer[i].buffer == buffer) {
+                       dev->tempBuffer[i].line = 0;
+                       return;
+               }
+       }
+
+       if (buffer) {
+               /* assume it is an unmanaged one. */
+               T(YAFFS_TRACE_BUFFERS,
+                 (TSTR("Releasing unmanaged temp buffer in line %d" TENDSTR),
+                  lineNo));
+               YFREE(buffer);
+               dev->unmanagedTempDeallocations++;
+       }
+
+}
+
+/*
+ * Determine if we have a managed buffer.
+ */
+int yaffs_IsManagedTempBuffer(yaffs_Device * dev, const __u8 * buffer)
+{
+       int i;
+       for (i = 0; i < YAFFS_N_TEMP_BUFFERS; i++) {
+               if (dev->tempBuffer[i].buffer == buffer)
+                       return 1;
+
+       }
+
+    for (i = 0; i < dev->nShortOpCaches; i++) {
+       if( dev->srCache[i].data == buffer )
+           return 1;
+
+    }
+
+    if (buffer == dev->checkpointBuffer)
+      return 1;
+
+    T(YAFFS_TRACE_ALWAYS,
+         (TSTR("yaffs: unmaged buffer detected.\n" TENDSTR)));
+    return 0;
+}
+
+
+
+/*
+ * Chunk bitmap manipulations
+ */
+
+static Y_INLINE __u8 *yaffs_BlockBits(yaffs_Device * dev, int blk)
+{
+       if (blk < dev->internalStartBlock || blk > dev->internalEndBlock) {
+               T(YAFFS_TRACE_ERROR,
+                 (TSTR("**>> yaffs: BlockBits block %d is not valid" TENDSTR),
+                  blk));
+               YBUG();
+       }
+       return dev->chunkBits +
+           (dev->chunkBitmapStride * (blk - dev->internalStartBlock));
+}
+
+static Y_INLINE void yaffs_VerifyChunkBitId(yaffs_Device *dev, int blk, int chunk)
+{
+       if(blk < dev->internalStartBlock || blk > dev->internalEndBlock ||
+          chunk < 0 || chunk >= dev->nChunksPerBlock) {
+          T(YAFFS_TRACE_ERROR,
+           (TSTR("**>> yaffs: Chunk Id (%d:%d) invalid"TENDSTR),blk,chunk));
+           YBUG();
+       }
+}
+
+static Y_INLINE void yaffs_ClearChunkBits(yaffs_Device * dev, int blk)
+{
+       __u8 *blkBits = yaffs_BlockBits(dev, blk);
+
+       memset(blkBits, 0, dev->chunkBitmapStride);
+}
+
+static Y_INLINE void yaffs_ClearChunkBit(yaffs_Device * dev, int blk, int chunk)
+{
+       __u8 *blkBits = yaffs_BlockBits(dev, blk);
+
+       yaffs_VerifyChunkBitId(dev,blk,chunk);
+
+       blkBits[chunk / 8] &= ~(1 << (chunk & 7));
+}
+
+static Y_INLINE void yaffs_SetChunkBit(yaffs_Device * dev, int blk, int chunk)
+{
+       __u8 *blkBits = yaffs_BlockBits(dev, blk);
+
+       yaffs_VerifyChunkBitId(dev,blk,chunk);
+
+       blkBits[chunk / 8] |= (1 << (chunk & 7));
+}
+
+static Y_INLINE int yaffs_CheckChunkBit(yaffs_Device * dev, int blk, int chunk)
+{
+       __u8 *blkBits = yaffs_BlockBits(dev, blk);
+       yaffs_VerifyChunkBitId(dev,blk,chunk);
+
+       return (blkBits[chunk / 8] & (1 << (chunk & 7))) ? 1 : 0;
+}
+
+static Y_INLINE int yaffs_StillSomeChunkBits(yaffs_Device * dev, int blk)
+{
+       __u8 *blkBits = yaffs_BlockBits(dev, blk);
+       int i;
+       for (i = 0; i < dev->chunkBitmapStride; i++) {
+               if (*blkBits)
+                       return 1;
+               blkBits++;
+       }
+       return 0;
+}
+
+static int yaffs_CountChunkBits(yaffs_Device * dev, int blk)
+{
+       __u8 *blkBits = yaffs_BlockBits(dev, blk);
+       int i;
+       int n = 0;
+       for (i = 0; i < dev->chunkBitmapStride; i++) {
+               __u8 x = *blkBits;
+               while(x){
+                       if(x & 1)
+                               n++;
+                       x >>=1;
+               }
+
+               blkBits++;
+       }
+       return n;
+}
+
+/*
+ * Verification code
+ */
+
+static int yaffs_SkipVerification(yaffs_Device *dev)
+{
+       return !(yaffs_traceMask & (YAFFS_TRACE_VERIFY | YAFFS_TRACE_VERIFY_FULL));
+}
+
+static int yaffs_SkipFullVerification(yaffs_Device *dev)
+{
+       return !(yaffs_traceMask & (YAFFS_TRACE_VERIFY_FULL));
+}
+
+static int yaffs_SkipNANDVerification(yaffs_Device *dev)
+{
+       return !(yaffs_traceMask & (YAFFS_TRACE_VERIFY_NAND));
+}
+
+static const char * blockStateName[] = {
+"Unknown",
+"Needs scanning",
+"Scanning",
+"Empty",
+"Allocating",
+"Full",
+"Dirty",
+"Checkpoint",
+"Collecting",
+"Dead"
+};
+
+static void yaffs_VerifyBlock(yaffs_Device *dev,yaffs_BlockInfo *bi,int n)
+{
+       int actuallyUsed;
+       int inUse;
+
+       if(yaffs_SkipVerification(dev))
+               return;
+
+       /* Report illegal runtime states */
+       if(bi->blockState <0 || bi->blockState >= YAFFS_NUMBER_OF_BLOCK_STATES)
+               T(YAFFS_TRACE_VERIFY,(TSTR("Block %d has undefined state %d"TENDSTR),n,bi->blockState));
+
+       switch(bi->blockState){
+        case YAFFS_BLOCK_STATE_UNKNOWN:
+        case YAFFS_BLOCK_STATE_SCANNING:
+        case YAFFS_BLOCK_STATE_NEEDS_SCANNING:
+               T(YAFFS_TRACE_VERIFY,(TSTR("Block %d has bad run-state %s"TENDSTR),
+               n,blockStateName[bi->blockState]));
+       }
+
+       /* Check pages in use and soft deletions are legal */
+
+       actuallyUsed = bi->pagesInUse - bi->softDeletions;
+
+       if(bi->pagesInUse < 0 || bi->pagesInUse > dev->nChunksPerBlock ||
+          bi->softDeletions < 0 || bi->softDeletions > dev->nChunksPerBlock ||
+          actuallyUsed < 0 || actuallyUsed > dev->nChunksPerBlock)
+               T(YAFFS_TRACE_VERIFY,(TSTR("Block %d has illegal values pagesInUsed %d softDeletions %d"TENDSTR),
+               n,bi->pagesInUse,bi->softDeletions));
+
+
+       /* Check chunk bitmap legal */
+       inUse = yaffs_CountChunkBits(dev,n);
+       if(inUse != bi->pagesInUse)
+               T(YAFFS_TRACE_VERIFY,(TSTR("Block %d has inconsistent values pagesInUse %d counted chunk bits %d"TENDSTR),
+                       n,bi->pagesInUse,inUse));
+
+       /* Check that the sequence number is valid.
+        * Ten million is legal, but is very unlikely
+        */
+       if(dev->isYaffs2 &&
+          (bi->blockState == YAFFS_BLOCK_STATE_ALLOCATING || bi->blockState == YAFFS_BLOCK_STATE_FULL) &&
+          (bi->sequenceNumber < YAFFS_LOWEST_SEQUENCE_NUMBER || bi->sequenceNumber > 10000000 ))
+               T(YAFFS_TRACE_VERIFY,(TSTR("Block %d has suspect sequence number of %d"TENDSTR),
+               n,bi->sequenceNumber));
+
+}
+
+static void yaffs_VerifyCollectedBlock(yaffs_Device *dev,yaffs_BlockInfo *bi,int n)
+{
+       yaffs_VerifyBlock(dev,bi,n);
+
+       /* After collection the block should be in the erased state */
+       /* TODO: This will need to change if we do partial gc */
+
+       if(bi->blockState != YAFFS_BLOCK_STATE_EMPTY){
+               T(YAFFS_TRACE_ERROR,(TSTR("Block %d is in state %d after gc, should be erased"TENDSTR),
+                       n,bi->blockState));
+       }
+}
+
+static void yaffs_VerifyBlocks(yaffs_Device *dev)
+{
+       int i;
+       int nBlocksPerState[YAFFS_NUMBER_OF_BLOCK_STATES];
+       int nIllegalBlockStates = 0;
+
+
+       if(yaffs_SkipVerification(dev))
+               return;
+
+       memset(nBlocksPerState,0,sizeof(nBlocksPerState));
+
+
+       for(i = dev->internalStartBlock; i <= dev->internalEndBlock; i++){
+               yaffs_BlockInfo *bi = yaffs_GetBlockInfo(dev,i);
+               yaffs_VerifyBlock(dev,bi,i);
+
+               if(bi->blockState >=0 && bi->blockState < YAFFS_NUMBER_OF_BLOCK_STATES)
+                       nBlocksPerState[bi->blockState]++;
+               else
+                       nIllegalBlockStates++;
+
+       }
+
+       T(YAFFS_TRACE_VERIFY,(TSTR(""TENDSTR)));
+       T(YAFFS_TRACE_VERIFY,(TSTR("Block summary"TENDSTR)));
+
+       T(YAFFS_TRACE_VERIFY,(TSTR("%d blocks have illegal states"TENDSTR),nIllegalBlockStates));
+       if(nBlocksPerState[YAFFS_BLOCK_STATE_ALLOCATING] > 1)
+               T(YAFFS_TRACE_VERIFY,(TSTR("Too many allocating blocks"TENDSTR)));
+
+       for(i = 0; i < YAFFS_NUMBER_OF_BLOCK_STATES; i++)
+               T(YAFFS_TRACE_VERIFY,
+                 (TSTR("%s %d blocks"TENDSTR),
+                 blockStateName[i],nBlocksPerState[i]));
+
+       if(dev->blocksInCheckpoint != nBlocksPerState[YAFFS_BLOCK_STATE_CHECKPOINT])
+               T(YAFFS_TRACE_VERIFY,
+                (TSTR("Checkpoint block count wrong dev %d count %d"TENDSTR),
+                dev->blocksInCheckpoint, nBlocksPerState[YAFFS_BLOCK_STATE_CHECKPOINT]));
+
+       if(dev->nErasedBlocks != nBlocksPerState[YAFFS_BLOCK_STATE_EMPTY])
+               T(YAFFS_TRACE_VERIFY,
+                (TSTR("Erased block count wrong dev %d count %d"TENDSTR),
+                dev->nErasedBlocks, nBlocksPerState[YAFFS_BLOCK_STATE_EMPTY]));
+
+       if(nBlocksPerState[YAFFS_BLOCK_STATE_COLLECTING] > 1)
+               T(YAFFS_TRACE_VERIFY,
+                (TSTR("Too many collecting blocks %d (max is 1)"TENDSTR),
+                nBlocksPerState[YAFFS_BLOCK_STATE_COLLECTING]));
+
+       T(YAFFS_TRACE_VERIFY,(TSTR(""TENDSTR)));
+
+}
+
+/*
+ * Verify the object header. oh must be valid, but obj and tags may be NULL in which
+ * case those tests will not be performed.
+ */
+static void yaffs_VerifyObjectHeader(yaffs_Object *obj, yaffs_ObjectHeader *oh, yaffs_ExtendedTags *tags, int parentCheck)
+{
+       if(yaffs_SkipVerification(obj->myDev))
+               return;
+
+       if(!(tags && obj && oh)){
+               T(YAFFS_TRACE_VERIFY,
+                               (TSTR("Verifying object header tags %x obj %x oh %x"TENDSTR),
+                               (__u32)tags,(__u32)obj,(__u32)oh));
+               return;
+       }
+
+       if(oh->type <= YAFFS_OBJECT_TYPE_UNKNOWN ||
+          oh->type > YAFFS_OBJECT_TYPE_MAX)
+               T(YAFFS_TRACE_VERIFY,
+                (TSTR("Obj %d header type is illegal value 0x%x"TENDSTR),
+                tags->objectId, oh->type));
+
+       if(tags->objectId != obj->objectId)
+               T(YAFFS_TRACE_VERIFY,
+                (TSTR("Obj %d header mismatch objectId %d"TENDSTR),
+                tags->objectId, obj->objectId));
+
+
+       /*
+        * Check that the object's parent ids match if parentCheck requested.
+        *
+        * Tests do not apply to the root object.
+        */
+
+       if(parentCheck && tags->objectId > 1 && !obj->parent)
+               T(YAFFS_TRACE_VERIFY,
+                (TSTR("Obj %d header mismatch parentId %d obj->parent is NULL"TENDSTR),
+                tags->objectId, oh->parentObjectId));
+
+
+       if(parentCheck && obj->parent &&
+          oh->parentObjectId != obj->parent->objectId &&
+          (oh->parentObjectId != YAFFS_OBJECTID_UNLINKED ||
+           obj->parent->objectId != YAFFS_OBJECTID_DELETED))
+               T(YAFFS_TRACE_VERIFY,
+                (TSTR("Obj %d header mismatch parentId %d parentObjectId %d"TENDSTR),
+                tags->objectId, oh->parentObjectId, obj->parent->objectId));
+
+
+       if(tags->objectId > 1 && oh->name[0] == 0) /* Null name */
+               T(YAFFS_TRACE_VERIFY,
+               (TSTR("Obj %d header name is NULL"TENDSTR),
+                obj->objectId));
+
+       if(tags->objectId > 1 && ((__u8)(oh->name[0])) == 0xff) /* Trashed name */
+               T(YAFFS_TRACE_VERIFY,
+               (TSTR("Obj %d header name is 0xFF"TENDSTR),
+                obj->objectId));
+}
+
+
+
+static int yaffs_VerifyTnodeWorker(yaffs_Object * obj, yaffs_Tnode * tn,
+                                       __u32 level, int chunkOffset)
+{
+       int i;
+       yaffs_Device *dev = obj->myDev;
+       int ok = 1;
+
+       if (tn) {
+               if (level > 0) {
+
+                       for (i = 0; i < YAFFS_NTNODES_INTERNAL && ok; i++){
+                               if (tn->internal[i]) {
+                                       ok = yaffs_VerifyTnodeWorker(obj,
+                                                       tn->internal[i],
+                                                       level - 1,
+                                                       (chunkOffset<<YAFFS_TNODES_INTERNAL_BITS) + i);
+                               }
+                       }
+               } else if (level == 0) {
+                       int i;
+                       yaffs_ExtendedTags tags;
+                       __u32 objectId = obj->objectId;
+
+                       chunkOffset <<=  YAFFS_TNODES_LEVEL0_BITS;
+
+                       for(i = 0; i < YAFFS_NTNODES_LEVEL0; i++){
+                               __u32 theChunk = yaffs_GetChunkGroupBase(dev,tn,i);
+
+                               if(theChunk > 0){
+                                       /* T(~0,(TSTR("verifying (%d:%d) %d"TENDSTR),tags.objectId,tags.chunkId,theChunk)); */
+                                       yaffs_ReadChunkWithTagsFromNAND(dev,theChunk,NULL, &tags);
+                                       if(tags.objectId != objectId || tags.chunkId != chunkOffset){
+                                               T(~0,(TSTR("Object %d chunkId %d NAND mismatch chunk %d tags (%d:%d)"TENDSTR),
+                                                       objectId, chunkOffset, theChunk,
+                                                       tags.objectId, tags.chunkId));
+                                       }
+                               }
+                               chunkOffset++;
+                       }
+               }
+       }
+
+       return ok;
+
+}
+
+
+static void yaffs_VerifyFile(yaffs_Object *obj)
+{
+       int requiredTallness;
+       int actualTallness;
+       __u32 lastChunk;
+       __u32 x;
+       __u32 i;
+       yaffs_Device *dev;
+       yaffs_ExtendedTags tags;
+       yaffs_Tnode *tn;
+       __u32 objectId;
+
+       if(obj && yaffs_SkipVerification(obj->myDev))
+               return;
+
+       dev = obj->myDev;
+       objectId = obj->objectId;
+
+       /* Check file size is consistent with tnode depth */
+       lastChunk =  obj->variant.fileVariant.fileSize / dev->nDataBytesPerChunk + 1;
+       x = lastChunk >> YAFFS_TNODES_LEVEL0_BITS;
+       requiredTallness = 0;
+       while (x> 0) {
+               x >>= YAFFS_TNODES_INTERNAL_BITS;
+               requiredTallness++;
+       }
+
+       actualTallness = obj->variant.fileVariant.topLevel;
+
+       if(requiredTallness > actualTallness )
+               T(YAFFS_TRACE_VERIFY,
+               (TSTR("Obj %d had tnode tallness %d, needs to be %d"TENDSTR),
+                obj->objectId,actualTallness, requiredTallness));
+
+
+       /* Check that the chunks in the tnode tree are all correct.
+        * We do this by scanning through the tnode tree and
+        * checking the tags for every chunk match.
+        */
+
+       if(yaffs_SkipNANDVerification(dev))
+               return;
+
+       for(i = 1; i <= lastChunk; i++){
+               tn = yaffs_FindLevel0Tnode(dev, &obj->variant.fileVariant,i);
+
+               if (tn) {
+                       __u32 theChunk = yaffs_GetChunkGroupBase(dev,tn,i);
+                       if(theChunk > 0){
+                               /* T(~0,(TSTR("verifying (%d:%d) %d"TENDSTR),objectId,i,theChunk)); */
+                               yaffs_ReadChunkWithTagsFromNAND(dev,theChunk,NULL, &tags);
+                               if(tags.objectId != objectId || tags.chunkId != i){
+                                       T(~0,(TSTR("Object %d chunkId %d NAND mismatch chunk %d tags (%d:%d)"TENDSTR),
+                                               objectId, i, theChunk,
+                                               tags.objectId, tags.chunkId));
+                               }
+                       }
+               }
+
+       }
+
+}
+
+static void yaffs_VerifyDirectory(yaffs_Object *obj)
+{
+       if(obj && yaffs_SkipVerification(obj->myDev))
+               return;
+
+}
+
+static void yaffs_VerifyHardLink(yaffs_Object *obj)
+{
+       if(obj && yaffs_SkipVerification(obj->myDev))
+               return;
+
+       /* Verify sane equivalent object */
+}
+
+static void yaffs_VerifySymlink(yaffs_Object *obj)
+{
+       if(obj && yaffs_SkipVerification(obj->myDev))
+               return;
+
+       /* Verify symlink string */
+}
+
+static void yaffs_VerifySpecial(yaffs_Object *obj)
+{
+       if(obj && yaffs_SkipVerification(obj->myDev))
+               return;
+}
+
+static void yaffs_VerifyObject(yaffs_Object *obj)
+{
+       yaffs_Device *dev;
+
+       __u32 chunkMin;
+       __u32 chunkMax;
+
+       __u32 chunkIdOk;
+       __u32 chunkIsLive;
+
+       if(!obj)
+               return;
+
+       dev = obj->myDev;
+
+       if(yaffs_SkipVerification(dev))
+               return;
+
+       /* Check sane object header chunk */
+
+       chunkMin = dev->internalStartBlock * dev->nChunksPerBlock;
+       chunkMax = (dev->internalEndBlock+1) * dev->nChunksPerBlock - 1;
+
+       chunkIdOk = (obj->chunkId >= chunkMin && obj->chunkId <= chunkMax);
+       chunkIsLive = chunkIdOk &&
+                       yaffs_CheckChunkBit(dev,
+                                           obj->chunkId / dev->nChunksPerBlock,
+                                           obj->chunkId % dev->nChunksPerBlock);
+       if(!obj->fake &&
+           (!chunkIdOk || !chunkIsLive)) {
+          T(YAFFS_TRACE_VERIFY,
+          (TSTR("Obj %d has chunkId %d %s %s"TENDSTR),
+          obj->objectId,obj->chunkId,
+          chunkIdOk ? "" : ",out of range",
+          chunkIsLive || !chunkIdOk ? "" : ",marked as deleted"));
+       }
+
+       if(chunkIdOk && chunkIsLive &&!yaffs_SkipNANDVerification(dev)) {
+               yaffs_ExtendedTags tags;
+               yaffs_ObjectHeader *oh;
+               __u8 *buffer = yaffs_GetTempBuffer(dev,__LINE__);
+
+               oh = (yaffs_ObjectHeader *)buffer;
+
+               yaffs_ReadChunkWithTagsFromNAND(dev, obj->chunkId,buffer, &tags);
+
+               yaffs_VerifyObjectHeader(obj,oh,&tags,1);
+
+               yaffs_ReleaseTempBuffer(dev,buffer,__LINE__);
+       }
+
+       /* Verify it has a parent */
+       if(obj && !obj->fake &&
+          (!obj->parent || obj->parent->myDev != dev)){
+          T(YAFFS_TRACE_VERIFY,
+          (TSTR("Obj %d has parent pointer %p which does not look like an object"TENDSTR),
+          obj->objectId,obj->parent));
+       }
+
+       /* Verify parent is a directory */
+       if(obj->parent && obj->parent->variantType != YAFFS_OBJECT_TYPE_DIRECTORY){
+          T(YAFFS_TRACE_VERIFY,
+          (TSTR("Obj %d's parent is not a directory (type %d)"TENDSTR),
+          obj->objectId,obj->parent->variantType));
+       }
+
+       switch(obj->variantType){
+       case YAFFS_OBJECT_TYPE_FILE:
+               yaffs_VerifyFile(obj);
+               break;
+       case YAFFS_OBJECT_TYPE_SYMLINK:
+               yaffs_VerifySymlink(obj);
+               break;
+       case YAFFS_OBJECT_TYPE_DIRECTORY:
+               yaffs_VerifyDirectory(obj);
+               break;
+       case YAFFS_OBJECT_TYPE_HARDLINK:
+               yaffs_VerifyHardLink(obj);
+               break;
+       case YAFFS_OBJECT_TYPE_SPECIAL:
+               yaffs_VerifySpecial(obj);
+               break;
+       case YAFFS_OBJECT_TYPE_UNKNOWN:
+       default:
+               T(YAFFS_TRACE_VERIFY,
+               (TSTR("Obj %d has illegaltype %d"TENDSTR),
+               obj->objectId,obj->variantType));
+               break;
+       }
+
+
+}
+
+static void yaffs_VerifyObjects(yaffs_Device *dev)
+{
+       yaffs_Object *obj;
+       int i;
+       struct list_head *lh;
+
+       if(yaffs_SkipVerification(dev))
+               return;
+
+       /* Iterate through the objects in each hash entry */
+
+        for(i = 0; i <  YAFFS_NOBJECT_BUCKETS; i++){
+               list_for_each(lh, &dev->objectBucket[i].list) {
+                       if (lh) {
+                               obj = list_entry(lh, yaffs_Object, hashLink);
+                               yaffs_VerifyObject(obj);
+                       }
+               }
+        }
+
+}
+
+
+/*
+ *  Simple hash function. Needs to have a reasonable spread
+ */
+
+static Y_INLINE int yaffs_HashFunction(int n)
+{
+/* XXX U-BOOT XXX */
+       /*n = abs(n); */
+       if (n < 0)
+               n = -n;
+       return (n % YAFFS_NOBJECT_BUCKETS);
+}
+
+/*
+ * Access functions to useful fake objects
+ */
+
+yaffs_Object *yaffs_Root(yaffs_Device * dev)
+{
+       return dev->rootDir;
+}
+
+yaffs_Object *yaffs_LostNFound(yaffs_Device * dev)
+{
+       return dev->lostNFoundDir;
+}
+
+
+/*
+ *  Erased NAND checking functions
+ */
+
+int yaffs_CheckFF(__u8 * buffer, int nBytes)
+{
+       /* Horrible, slow implementation */
+       while (nBytes--) {
+               if (*buffer != 0xFF)
+                       return 0;
+               buffer++;
+       }
+       return 1;
+}
+
+static int yaffs_CheckChunkErased(struct yaffs_DeviceStruct *dev,
+                                 int chunkInNAND)
+{
+
+       int retval = YAFFS_OK;
+       __u8 *data = yaffs_GetTempBuffer(dev, __LINE__);
+       yaffs_ExtendedTags tags;
+       int result;
+
+       result = yaffs_ReadChunkWithTagsFromNAND(dev, chunkInNAND, data, &tags);
+
+       if(tags.eccResult > YAFFS_ECC_RESULT_NO_ERROR)
+               retval = YAFFS_FAIL;
+
+
+       if (!yaffs_CheckFF(data, dev->nDataBytesPerChunk) || tags.chunkUsed) {
+               T(YAFFS_TRACE_NANDACCESS,
+                 (TSTR("Chunk %d not erased" TENDSTR), chunkInNAND));
+               retval = YAFFS_FAIL;
+       }
+
+       yaffs_ReleaseTempBuffer(dev, data, __LINE__);
+
+       return retval;
+
+}
+
+static int yaffs_WriteNewChunkWithTagsToNAND(struct yaffs_DeviceStruct *dev,
+                                            const __u8 * data,
+                                            yaffs_ExtendedTags * tags,
+                                            int useReserve)
+{
+       int attempts = 0;
+       int writeOk = 0;
+       int chunk;
+
+       yaffs_InvalidateCheckpoint(dev);
+
+       do {
+               yaffs_BlockInfo *bi = 0;
+               int erasedOk = 0;
+
+               chunk = yaffs_AllocateChunk(dev, useReserve, &bi);
+               if (chunk < 0) {
+                       /* no space */
+                       break;
+               }
+
+               /* First check this chunk is erased, if it needs
+                * checking.  The checking policy (unless forced
+                * always on) is as follows:
+                *
+                * Check the first page we try to write in a block.
+                * If the check passes then we don't need to check any
+                * more.        If the check fails, we check again...
+                * If the block has been erased, we don't need to check.
+                *
+                * However, if the block has been prioritised for gc,
+                * then we think there might be something odd about
+                * this block and stop using it.
+                *
+                * Rationale: We should only ever see chunks that have
+                * not been erased if there was a partially written
+                * chunk due to power loss.  This checking policy should
+                * catch that case with very few checks and thus save a
+                * lot of checks that are most likely not needed.
+                */
+               if (bi->gcPrioritise) {
+                       yaffs_DeleteChunk(dev, chunk, 1, __LINE__);
+                       /* try another chunk */
+                       continue;
+               }
+
+               /* let's give it a try */
+               attempts++;
+
+#ifdef CONFIG_YAFFS_ALWAYS_CHECK_CHUNK_ERASED
+               bi->skipErasedCheck = 0;
+#endif
+               if (!bi->skipErasedCheck) {
+                       erasedOk = yaffs_CheckChunkErased(dev, chunk);
+                       if (erasedOk != YAFFS_OK) {
+                               T(YAFFS_TRACE_ERROR,
+                               (TSTR ("**>> yaffs chunk %d was not erased"
+                               TENDSTR), chunk));
+
+                               /* try another chunk */
+                               continue;
+                       }
+                       bi->skipErasedCheck = 1;
+               }
+
+               writeOk = yaffs_WriteChunkWithTagsToNAND(dev, chunk,
+                               data, tags);
+               if (writeOk != YAFFS_OK) {
+                       yaffs_HandleWriteChunkError(dev, chunk, erasedOk);
+                       /* try another chunk */
+                       continue;
+               }
+
+               /* Copy the data into the robustification buffer */
+               yaffs_HandleWriteChunkOk(dev, chunk, data, tags);
+
+       } while (writeOk != YAFFS_OK &&
+               (yaffs_wr_attempts <= 0 || attempts <= yaffs_wr_attempts));
+
+       if(!writeOk)
+               chunk = -1;
+
+       if (attempts > 1) {
+               T(YAFFS_TRACE_ERROR,
+                       (TSTR("**>> yaffs write required %d attempts" TENDSTR),
+                       attempts));
+
+               dev->nRetriedWrites += (attempts - 1);
+       }
+
+       return chunk;
+}
+
+/*
+ * Block retiring for handling a broken block.
+ */
+
+static void yaffs_RetireBlock(yaffs_Device * dev, int blockInNAND)
+{
+       yaffs_BlockInfo *bi = yaffs_GetBlockInfo(dev, blockInNAND);
+
+       yaffs_InvalidateCheckpoint(dev);
+
+       yaffs_MarkBlockBad(dev, blockInNAND);
+
+       bi->blockState = YAFFS_BLOCK_STATE_DEAD;
+       bi->gcPrioritise = 0;
+       bi->needsRetiring = 0;
+
+       dev->nRetiredBlocks++;
+}
+
+/*
+ * Functions for robustisizing TODO
+ *
+ */
+
+static void yaffs_HandleWriteChunkOk(yaffs_Device * dev, int chunkInNAND,
+                                    const __u8 * data,
+                                    const yaffs_ExtendedTags * tags)
+{
+}
+
+static void yaffs_HandleUpdateChunk(yaffs_Device * dev, int chunkInNAND,
+                                   const yaffs_ExtendedTags * tags)
+{
+}
+
+void yaffs_HandleChunkError(yaffs_Device *dev, yaffs_BlockInfo *bi)
+{
+       if(!bi->gcPrioritise){
+               bi->gcPrioritise = 1;
+               dev->hasPendingPrioritisedGCs = 1;
+               bi->chunkErrorStrikes ++;
+
+               if(bi->chunkErrorStrikes > 3){
+                       bi->needsRetiring = 1; /* Too many stikes, so retire this */
+                       T(YAFFS_TRACE_ALWAYS, (TSTR("yaffs: Block struck out" TENDSTR)));
+
+               }
+
+       }
+}
+
+static void yaffs_HandleWriteChunkError(yaffs_Device * dev, int chunkInNAND, int erasedOk)
+{
+
+       int blockInNAND = chunkInNAND / dev->nChunksPerBlock;
+       yaffs_BlockInfo *bi = yaffs_GetBlockInfo(dev, blockInNAND);
+
+       yaffs_HandleChunkError(dev,bi);
+
+
+       if(erasedOk ) {
+               /* Was an actual write failure, so mark the block for retirement  */
+               bi->needsRetiring = 1;
+               T(YAFFS_TRACE_ERROR | YAFFS_TRACE_BAD_BLOCKS,
+                 (TSTR("**>> Block %d needs retiring" TENDSTR), blockInNAND));
+
+
+       }
+
+       /* Delete the chunk */
+       yaffs_DeleteChunk(dev, chunkInNAND, 1, __LINE__);
+}
+
+
+/*---------------- Name handling functions ------------*/
+
+static __u16 yaffs_CalcNameSum(const YCHAR * name)
+{
+       __u16 sum = 0;
+       __u16 i = 1;
+
+       YUCHAR *bname = (YUCHAR *) name;
+       if (bname) {
+               while ((*bname) && (i < (YAFFS_MAX_NAME_LENGTH/2))) {
+
+#ifdef CONFIG_YAFFS_CASE_INSENSITIVE
+                       sum += yaffs_toupper(*bname) * i;
+#else
+                       sum += (*bname) * i;
+#endif
+                       i++;
+                       bname++;
+               }
+       }
+       return sum;
+}
+
+static void yaffs_SetObjectName(yaffs_Object * obj, const YCHAR * name)
+{
+#ifdef CONFIG_YAFFS_SHORT_NAMES_IN_RAM
+       if (name && yaffs_strlen(name) <= YAFFS_SHORT_NAME_LENGTH) {
+               yaffs_strcpy(obj->shortName, name);
+       } else {
+               obj->shortName[0] = _Y('\0');
+       }
+#endif
+       obj->sum = yaffs_CalcNameSum(name);
+}
+
+/*-------------------- TNODES -------------------
+
+ * List of spare tnodes
+ * The list is hooked together using the first pointer
+ * in the tnode.
+ */
+
+/* yaffs_CreateTnodes creates a bunch more tnodes and
+ * adds them to the tnode free list.
+ * Don't use this function directly
+ */
+
+static int yaffs_CreateTnodes(yaffs_Device * dev, int nTnodes)
+{
+       int i;
+       int tnodeSize;
+       yaffs_Tnode *newTnodes;
+       __u8 *mem;
+       yaffs_Tnode *curr;
+       yaffs_Tnode *next;
+       yaffs_TnodeList *tnl;
+
+       if (nTnodes < 1)
+               return YAFFS_OK;
+
+       /* Calculate the tnode size in bytes for variable width tnode support.
+        * Must be a multiple of 32-bits  */
+       tnodeSize = (dev->tnodeWidth * YAFFS_NTNODES_LEVEL0)/8;
+
+       /* make these things */
+
+       newTnodes = YMALLOC(nTnodes * tnodeSize);
+       mem = (__u8 *)newTnodes;
+
+       if (!newTnodes) {
+               T(YAFFS_TRACE_ERROR,
+                 (TSTR("yaffs: Could not allocate Tnodes" TENDSTR)));
+               return YAFFS_FAIL;
+       }
+
+       /* Hook them into the free list */
+#if 0
+       for (i = 0; i < nTnodes - 1; i++) {
+               newTnodes[i].internal[0] = &newTnodes[i + 1];
+#ifdef CONFIG_YAFFS_TNODE_LIST_DEBUG
+               newTnodes[i].internal[YAFFS_NTNODES_INTERNAL] = (void *)1;
+#endif
+       }
+
+       newTnodes[nTnodes - 1].internal[0] = dev->freeTnodes;
+#ifdef CONFIG_YAFFS_TNODE_LIST_DEBUG
+       newTnodes[nTnodes - 1].internal[YAFFS_NTNODES_INTERNAL] = (void *)1;
+#endif
+       dev->freeTnodes = newTnodes;
+#else
+       /* New hookup for wide tnodes */
+       for(i = 0; i < nTnodes -1; i++) {
+               curr = (yaffs_Tnode *) &mem[i * tnodeSize];
+               next = (yaffs_Tnode *) &mem[(i+1) * tnodeSize];
+               curr->internal[0] = next;
+       }
+
+       curr = (yaffs_Tnode *) &mem[(nTnodes - 1) * tnodeSize];
+       curr->internal[0] = dev->freeTnodes;
+       dev->freeTnodes = (yaffs_Tnode *)mem;
+
+#endif
+
+
+       dev->nFreeTnodes += nTnodes;
+       dev->nTnodesCreated += nTnodes;
+
+       /* Now add this bunch of tnodes to a list for freeing up.
+        * NB If we can't add this to the management list it isn't fatal
+        * but it just means we can't free this bunch of tnodes later.
+        */
+
+       tnl = YMALLOC(sizeof(yaffs_TnodeList));
+       if (!tnl) {
+               T(YAFFS_TRACE_ERROR,
+                 (TSTR
+                  ("yaffs: Could not add tnodes to management list" TENDSTR)));
+                  return YAFFS_FAIL;
+
+       } else {
+               tnl->tnodes = newTnodes;
+               tnl->next = dev->allocatedTnodeList;
+               dev->allocatedTnodeList = tnl;
+       }
+
+       T(YAFFS_TRACE_ALLOCATE, (TSTR("yaffs: Tnodes added" TENDSTR)));
+
+       return YAFFS_OK;
+}
+
+/* GetTnode gets us a clean tnode. Tries to make allocate more if we run out */
+
+static yaffs_Tnode *yaffs_GetTnodeRaw(yaffs_Device * dev)
+{
+       yaffs_Tnode *tn = NULL;
+
+       /* If there are none left make more */
+       if (!dev->freeTnodes) {
+               yaffs_CreateTnodes(dev, YAFFS_ALLOCATION_NTNODES);
+       }
+
+       if (dev->freeTnodes) {
+               tn = dev->freeTnodes;
+#ifdef CONFIG_YAFFS_TNODE_LIST_DEBUG
+               if (tn->internal[YAFFS_NTNODES_INTERNAL] != (void *)1) {
+                       /* Hoosterman, this thing looks like it isn't in the list */
+                       T(YAFFS_TRACE_ALWAYS,
+                         (TSTR("yaffs: Tnode list bug 1" TENDSTR)));
+               }
+#endif
+               dev->freeTnodes = dev->freeTnodes->internal[0];
+               dev->nFreeTnodes--;
+       }
+
+       return tn;
+}
+
+static yaffs_Tnode *yaffs_GetTnode(yaffs_Device * dev)
+{
+       yaffs_Tnode *tn = yaffs_GetTnodeRaw(dev);
+
+       if(tn)
+               memset(tn, 0, (dev->tnodeWidth * YAFFS_NTNODES_LEVEL0)/8);
+
+       return tn;
+}
+
+/* FreeTnode frees up a tnode and puts it back on the free list */
+static void yaffs_FreeTnode(yaffs_Device * dev, yaffs_Tnode * tn)
+{
+       if (tn) {
+#ifdef CONFIG_YAFFS_TNODE_LIST_DEBUG
+               if (tn->internal[YAFFS_NTNODES_INTERNAL] != 0) {
+                       /* Hoosterman, this thing looks like it is already in the list */
+                       T(YAFFS_TRACE_ALWAYS,
+                         (TSTR("yaffs: Tnode list bug 2" TENDSTR)));
+               }
+               tn->internal[YAFFS_NTNODES_INTERNAL] = (void *)1;
+#endif
+               tn->internal[0] = dev->freeTnodes;
+               dev->freeTnodes = tn;
+               dev->nFreeTnodes++;
+       }
+}
+
+static void yaffs_DeinitialiseTnodes(yaffs_Device * dev)
+{
+       /* Free the list of allocated tnodes */
+       yaffs_TnodeList *tmp;
+
+       while (dev->allocatedTnodeList) {
+               tmp = dev->allocatedTnodeList->next;
+
+               YFREE(dev->allocatedTnodeList->tnodes);
+               YFREE(dev->allocatedTnodeList);
+               dev->allocatedTnodeList = tmp;
+
+       }
+
+       dev->freeTnodes = NULL;
+       dev->nFreeTnodes = 0;
+}
+
+static void yaffs_InitialiseTnodes(yaffs_Device * dev)
+{
+       dev->allocatedTnodeList = NULL;
+       dev->freeTnodes = NULL;
+       dev->nFreeTnodes = 0;
+       dev->nTnodesCreated = 0;
+
+}
+
+
+void yaffs_PutLevel0Tnode(yaffs_Device *dev, yaffs_Tnode *tn, unsigned pos, unsigned val)
+{
+  __u32 *map = (__u32 *)tn;
+  __u32 bitInMap;
+  __u32 bitInWord;
+  __u32 wordInMap;
+  __u32 mask;
+
+  pos &= YAFFS_TNODES_LEVEL0_MASK;
+  val >>= dev->chunkGroupBits;
+
+  bitInMap = pos * dev->tnodeWidth;
+  wordInMap = bitInMap /32;
+  bitInWord = bitInMap & (32 -1);
+
+  mask = dev->tnodeMask << bitInWord;
+
+  map[wordInMap] &= ~mask;
+  map[wordInMap] |= (mask & (val << bitInWord));
+
+  if(dev->tnodeWidth > (32-bitInWord)) {
+    bitInWord = (32 - bitInWord);
+    wordInMap++;;
+    mask = dev->tnodeMask >> (/*dev->tnodeWidth -*/ bitInWord);
+    map[wordInMap] &= ~mask;
+    map[wordInMap] |= (mask & (val >> bitInWord));
+  }
+}
+
+static __u32 yaffs_GetChunkGroupBase(yaffs_Device *dev, yaffs_Tnode *tn, unsigned pos)
+{
+  __u32 *map = (__u32 *)tn;
+  __u32 bitInMap;
+  __u32 bitInWord;
+  __u32 wordInMap;
+  __u32 val;
+
+  pos &= YAFFS_TNODES_LEVEL0_MASK;
+
+  bitInMap = pos * dev->tnodeWidth;
+  wordInMap = bitInMap /32;
+  bitInWord = bitInMap & (32 -1);
+
+  val = map[wordInMap] >> bitInWord;
+
+  if(dev->tnodeWidth > (32-bitInWord)) {
+    bitInWord = (32 - bitInWord);
+    wordInMap++;;
+    val |= (map[wordInMap] << bitInWord);
+  }
+
+  val &= dev->tnodeMask;
+  val <<= dev->chunkGroupBits;
+
+  return val;
+}
+
+/* ------------------- End of individual tnode manipulation -----------------*/
+
+/* ---------Functions to manipulate the look-up tree (made up of tnodes) ------
+ * The look up tree is represented by the top tnode and the number of topLevel
+ * in the tree. 0 means only the level 0 tnode is in the tree.
+ */
+
+/* FindLevel0Tnode finds the level 0 tnode, if one exists. */
+static yaffs_Tnode *yaffs_FindLevel0Tnode(yaffs_Device * dev,
+                                         yaffs_FileStructure * fStruct,
+                                         __u32 chunkId)
+{
+
+       yaffs_Tnode *tn = fStruct->top;
+       __u32 i;
+       int requiredTallness;
+       int level = fStruct->topLevel;
+
+       /* Check sane level and chunk Id */
+       if (level < 0 || level > YAFFS_TNODES_MAX_LEVEL) {
+               return NULL;
+       }
+
+       if (chunkId > YAFFS_MAX_CHUNK_ID) {
+               return NULL;
+       }
+
+       /* First check we're tall enough (ie enough topLevel) */
+
+       i = chunkId >> YAFFS_TNODES_LEVEL0_BITS;
+       requiredTallness = 0;
+       while (i) {
+               i >>= YAFFS_TNODES_INTERNAL_BITS;
+               requiredTallness++;
+       }
+
+       if (requiredTallness > fStruct->topLevel) {
+               /* Not tall enough, so we can't find it, return NULL. */
+               return NULL;
+       }
+
+       /* Traverse down to level 0 */
+       while (level > 0 && tn) {
+               tn = tn->
+                   internal[(chunkId >>
+                              ( YAFFS_TNODES_LEVEL0_BITS +
+                                (level - 1) *
+                                YAFFS_TNODES_INTERNAL_BITS)
+                             ) &
+                            YAFFS_TNODES_INTERNAL_MASK];
+               level--;
+
+       }
+
+       return tn;
+}
+
+/* AddOrFindLevel0Tnode finds the level 0 tnode if it exists, otherwise first expands the tree.
+ * This happens in two steps:
+ *  1. If the tree isn't tall enough, then make it taller.
+ *  2. Scan down the tree towards the level 0 tnode adding tnodes if required.
+ *
+ * Used when modifying the tree.
+ *
+ *  If the tn argument is NULL, then a fresh tnode will be added otherwise the specified tn will
+ *  be plugged into the ttree.
+ */
+
+static yaffs_Tnode *yaffs_AddOrFindLevel0Tnode(yaffs_Device * dev,
+                                              yaffs_FileStructure * fStruct,
+                                              __u32 chunkId,
+                                              yaffs_Tnode *passedTn)
+{
+
+       int requiredTallness;
+       int i;
+       int l;
+       yaffs_Tnode *tn;
+
+       __u32 x;
+
+
+       /* Check sane level and page Id */
+       if (fStruct->topLevel < 0 || fStruct->topLevel > YAFFS_TNODES_MAX_LEVEL) {
+               return NULL;
+       }
+
+       if (chunkId > YAFFS_MAX_CHUNK_ID) {
+               return NULL;
+       }
+
+       /* First check we're tall enough (ie enough topLevel) */
+
+       x = chunkId >> YAFFS_TNODES_LEVEL0_BITS;
+       requiredTallness = 0;
+       while (x) {
+               x >>= YAFFS_TNODES_INTERNAL_BITS;
+               requiredTallness++;
+       }
+
+
+       if (requiredTallness > fStruct->topLevel) {
+               /* Not tall enough,gotta make the tree taller */
+               for (i = fStruct->topLevel; i < requiredTallness; i++) {
+
+                       tn = yaffs_GetTnode(dev);
+
+                       if (tn) {
+                               tn->internal[0] = fStruct->top;
+                               fStruct->top = tn;
+                       } else {
+                               T(YAFFS_TRACE_ERROR,
+                                 (TSTR("yaffs: no more tnodes" TENDSTR)));
+                       }
+               }
+
+               fStruct->topLevel = requiredTallness;
+       }
+
+       /* Traverse down to level 0, adding anything we need */
+
+       l = fStruct->topLevel;
+       tn = fStruct->top;
+
+       if(l > 0) {
+               while (l > 0 && tn) {
+                       x = (chunkId >>
+                            ( YAFFS_TNODES_LEVEL0_BITS +
+                             (l - 1) * YAFFS_TNODES_INTERNAL_BITS)) &
+                           YAFFS_TNODES_INTERNAL_MASK;
+
+
+                       if((l>1) && !tn->internal[x]){
+                               /* Add missing non-level-zero tnode */
+                               tn->internal[x] = yaffs_GetTnode(dev);
+
+                       } else if(l == 1) {
+                               /* Looking from level 1 at level 0 */
+                               if (passedTn) {
+                                       /* If we already have one, then release it.*/
+                                       if(tn->internal[x])
+                                               yaffs_FreeTnode(dev,tn->internal[x]);
+                                       tn->internal[x] = passedTn;
+
+                               } else if(!tn->internal[x]) {
+                                       /* Don't have one, none passed in */
+                                       tn->internal[x] = yaffs_GetTnode(dev);
+                               }
+                       }
+
+                       tn = tn->internal[x];
+                       l--;
+               }
+       } else {
+               /* top is level 0 */
+               if(passedTn) {
+                       memcpy(tn,passedTn,(dev->tnodeWidth * YAFFS_NTNODES_LEVEL0)/8);
+                       yaffs_FreeTnode(dev,passedTn);
+               }
+       }
+
+       return tn;
+}
+
+static int yaffs_FindChunkInGroup(yaffs_Device * dev, int theChunk,
+                                 yaffs_ExtendedTags * tags, int objectId,
+                                 int chunkInInode)
+{
+       int j;
+
+       for (j = 0; theChunk && j < dev->chunkGroupSize; j++) {
+               if (yaffs_CheckChunkBit
+                   (dev, theChunk / dev->nChunksPerBlock,
+                    theChunk % dev->nChunksPerBlock)) {
+                       yaffs_ReadChunkWithTagsFromNAND(dev, theChunk, NULL,
+                                                       tags);
+                       if (yaffs_TagsMatch(tags, objectId, chunkInInode)) {
+                               /* found it; */
+                               return theChunk;
+
+                       }
+               }
+               theChunk++;
+       }
+       return -1;
+}
+
+
+/* DeleteWorker scans backwards through the tnode tree and deletes all the
+ * chunks and tnodes in the file
+ * Returns 1 if the tree was deleted.
+ * Returns 0 if it stopped early due to hitting the limit and the delete is incomplete.
+ */
+
+static int yaffs_DeleteWorker(yaffs_Object * in, yaffs_Tnode * tn, __u32 level,
+                             int chunkOffset, int *limit)
+{
+       int i;
+       int chunkInInode;
+       int theChunk;
+       yaffs_ExtendedTags tags;
+       int foundChunk;
+       yaffs_Device *dev = in->myDev;
+
+       int allDone = 1;
+
+       if (tn) {
+               if (level > 0) {
+
+                       for (i = YAFFS_NTNODES_INTERNAL - 1; allDone && i >= 0;
+                            i--) {
+                               if (tn->internal[i]) {
+                                       if (limit && (*limit) < 0) {
+                                               allDone = 0;
+                                       } else {
+                                               allDone =
+                                                   yaffs_DeleteWorker(in,
+                                                                      tn->
+                                                                      internal
+                                                                      [i],
+                                                                      level -
+                                                                      1,
+                                                                      (chunkOffset
+                                                                       <<
+                                                                       YAFFS_TNODES_INTERNAL_BITS)
+                                                                      + i,
+                                                                      limit);
+                                       }
+                                       if (allDone) {
+                                               yaffs_FreeTnode(dev,
+                                                               tn->
+                                                               internal[i]);
+                                               tn->internal[i] = NULL;
+                                       }
+                               }
+
+                       }
+                       return (allDone) ? 1 : 0;
+               } else if (level == 0) {
+                       int hitLimit = 0;
+
+                       for (i = YAFFS_NTNODES_LEVEL0 - 1; i >= 0 && !hitLimit;
+                            i--) {
+                               theChunk = yaffs_GetChunkGroupBase(dev,tn,i);
+                               if (theChunk) {
+
+                                       chunkInInode =
+                                           (chunkOffset <<
+                                            YAFFS_TNODES_LEVEL0_BITS) + i;
+
+                                       foundChunk =
+                                           yaffs_FindChunkInGroup(dev,
+                                                                  theChunk,
+                                                                  &tags,
+                                                                  in->objectId,
+                                                                  chunkInInode);
+
+                                       if (foundChunk > 0) {
+                                               yaffs_DeleteChunk(dev,
+                                                                 foundChunk, 1,
+                                                                 __LINE__);
+                                               in->nDataChunks--;
+                                               if (limit) {
+                                                       *limit = *limit - 1;
+                                                       if (*limit <= 0) {
+                                                               hitLimit = 1;
+                                                       }
+                                               }
+
+                                       }
+
+                                       yaffs_PutLevel0Tnode(dev,tn,i,0);
+                               }
+
+                       }
+                       return (i < 0) ? 1 : 0;
+
+               }
+
+       }
+
+       return 1;
+
+}
+
+static void yaffs_SoftDeleteChunk(yaffs_Device * dev, int chunk)
+{
+
+       yaffs_BlockInfo *theBlock;
+
+       T(YAFFS_TRACE_DELETION, (TSTR("soft delete chunk %d" TENDSTR), chunk));
+
+       theBlock = yaffs_GetBlockInfo(dev, chunk / dev->nChunksPerBlock);
+       if (theBlock) {
+               theBlock->softDeletions++;
+               dev->nFreeChunks++;
+       }
+}
+
+/* SoftDeleteWorker scans backwards through the tnode tree and soft deletes all the chunks in the file.
+ * All soft deleting does is increment the block's softdelete count and pulls the chunk out
+ * of the tnode.
+ * Thus, essentially this is the same as DeleteWorker except that the chunks are soft deleted.
+ */
+
+static int yaffs_SoftDeleteWorker(yaffs_Object * in, yaffs_Tnode * tn,
+                                 __u32 level, int chunkOffset)
+{
+       int i;
+       int theChunk;
+       int allDone = 1;
+       yaffs_Device *dev = in->myDev;
+
+       if (tn) {
+               if (level > 0) {
+
+                       for (i = YAFFS_NTNODES_INTERNAL - 1; allDone && i >= 0;
+                            i--) {
+                               if (tn->internal[i]) {
+                                       allDone =
+                                           yaffs_SoftDeleteWorker(in,
+                                                                  tn->
+                                                                  internal[i],
+                                                                  level - 1,
+                                                                  (chunkOffset
+                                                                   <<
+                                                                   YAFFS_TNODES_INTERNAL_BITS)
+                                                                  + i);
+                                       if (allDone) {
+                                               yaffs_FreeTnode(dev,
+                                                               tn->
+                                                               internal[i]);
+                                               tn->internal[i] = NULL;
+                                       } else {
+                                               /* Hoosterman... how could this happen? */
+                                       }
+                               }
+                       }
+                       return (allDone) ? 1 : 0;
+               } else if (level == 0) {
+
+                       for (i = YAFFS_NTNODES_LEVEL0 - 1; i >= 0; i--) {
+                               theChunk = yaffs_GetChunkGroupBase(dev,tn,i);
+                               if (theChunk) {
+                                       /* Note this does not find the real chunk, only the chunk group.
+                                        * We make an assumption that a chunk group is not larger than
+                                        * a block.
+                                        */
+                                       yaffs_SoftDeleteChunk(dev, theChunk);
+                                       yaffs_PutLevel0Tnode(dev,tn,i,0);
+                               }
+
+                       }
+                       return 1;
+
+               }
+
+       }
+
+       return 1;
+
+}
+
+static void yaffs_SoftDeleteFile(yaffs_Object * obj)
+{
+       if (obj->deleted &&
+           obj->variantType == YAFFS_OBJECT_TYPE_FILE && !obj->softDeleted) {
+               if (obj->nDataChunks <= 0) {
+                       /* Empty file with no duplicate object headers, just delete it immediately */
+                       yaffs_FreeTnode(obj->myDev,
+                                       obj->variant.fileVariant.top);
+                       obj->variant.fileVariant.top = NULL;
+                       T(YAFFS_TRACE_TRACING,
+                         (TSTR("yaffs: Deleting empty file %d" TENDSTR),
+                          obj->objectId));
+                       yaffs_DoGenericObjectDeletion(obj);
+               } else {
+                       yaffs_SoftDeleteWorker(obj,
+                                              obj->variant.fileVariant.top,
+                                              obj->variant.fileVariant.
+                                              topLevel, 0);
+                       obj->softDeleted = 1;
+               }
+       }
+}
+
+/* Pruning removes any part of the file structure tree that is beyond the
+ * bounds of the file (ie that does not point to chunks).
+ *
+ * A file should only get pruned when its size is reduced.
+ *
+ * Before pruning, the chunks must be pulled from the tree and the
+ * level 0 tnode entries must be zeroed out.
+ * Could also use this for file deletion, but that's probably better handled
+ * by a special case.
+ */
+
+static yaffs_Tnode *yaffs_PruneWorker(yaffs_Device * dev, yaffs_Tnode * tn,
+                                     __u32 level, int del0)
+{
+       int i;
+       int hasData;
+
+       if (tn) {
+               hasData = 0;
+
+               for (i = 0; i < YAFFS_NTNODES_INTERNAL; i++) {
+                       if (tn->internal[i] && level > 0) {
+                               tn->internal[i] =
+                                   yaffs_PruneWorker(dev, tn->internal[i],
+                                                     level - 1,
+                                                     (i == 0) ? del0 : 1);
+                       }
+
+                       if (tn->internal[i]) {
+                               hasData++;
+                       }
+               }
+
+               if (hasData == 0 && del0) {
+                       /* Free and return NULL */
+
+                       yaffs_FreeTnode(dev, tn);
+                       tn = NULL;
+               }
+
+       }
+
+       return tn;
+
+}
+
+static int yaffs_PruneFileStructure(yaffs_Device * dev,
+                                   yaffs_FileStructure * fStruct)
+{
+       int i;
+       int hasData;
+       int done = 0;
+       yaffs_Tnode *tn;
+
+       if (fStruct->topLevel > 0) {
+               fStruct->top =
+                   yaffs_PruneWorker(dev, fStruct->top, fStruct->topLevel, 0);
+
+               /* Now we have a tree with all the non-zero branches NULL but the height
+                * is the same as it was.
+                * Let's see if we can trim internal tnodes to shorten the tree.
+                * We can do this if only the 0th element in the tnode is in use
+                * (ie all the non-zero are NULL)
+                */
+
+               while (fStruct->topLevel && !done) {
+                       tn = fStruct->top;
+
+                       hasData = 0;
+                       for (i = 1; i < YAFFS_NTNODES_INTERNAL; i++) {
+                               if (tn->internal[i]) {
+                                       hasData++;
+                               }
+                       }
+
+                       if (!hasData) {
+                               fStruct->top = tn->internal[0];
+                               fStruct->topLevel--;
+                               yaffs_FreeTnode(dev, tn);
+                       } else {
+                               done = 1;
+                       }
+               }
+       }
+
+       return YAFFS_OK;
+}
+
+/*-------------------- End of File Structure functions.-------------------*/
+
+/* yaffs_CreateFreeObjects creates a bunch more objects and
+ * adds them to the object free list.
+ */
+static int yaffs_CreateFreeObjects(yaffs_Device * dev, int nObjects)
+{
+       int i;
+       yaffs_Object *newObjects;
+       yaffs_ObjectList *list;
+
+       if (nObjects < 1)
+               return YAFFS_OK;
+
+       /* make these things */
+       newObjects = YMALLOC(nObjects * sizeof(yaffs_Object));
+       list = YMALLOC(sizeof(yaffs_ObjectList));
+
+       if (!newObjects || !list) {
+               if(newObjects)
+                       YFREE(newObjects);
+               if(list)
+                       YFREE(list);
+               T(YAFFS_TRACE_ALLOCATE,
+                 (TSTR("yaffs: Could not allocate more objects" TENDSTR)));
+               return YAFFS_FAIL;
+       }
+
+       /* Hook them into the free list */
+       for (i = 0; i < nObjects - 1; i++) {
+               newObjects[i].siblings.next =
+                   (struct list_head *)(&newObjects[i + 1]);
+       }
+
+       newObjects[nObjects - 1].siblings.next = (void *)dev->freeObjects;
+       dev->freeObjects = newObjects;
+       dev->nFreeObjects += nObjects;
+       dev->nObjectsCreated += nObjects;
+
+       /* Now add this bunch of Objects to a list for freeing up. */
+
+       list->objects = newObjects;
+       list->next = dev->allocatedObjectList;
+       dev->allocatedObjectList = list;
+
+       return YAFFS_OK;
+}
+
+
+/* AllocateEmptyObject gets us a clean Object. Tries to make allocate more if we run out */
+static yaffs_Object *yaffs_AllocateEmptyObject(yaffs_Device * dev)
+{
+       yaffs_Object *tn = NULL;
+
+       /* If there are none left make more */
+       if (!dev->freeObjects) {
+               yaffs_CreateFreeObjects(dev, YAFFS_ALLOCATION_NOBJECTS);
+       }
+
+       if (dev->freeObjects) {
+               tn = dev->freeObjects;
+               dev->freeObjects =
+                   (yaffs_Object *) (dev->freeObjects->siblings.next);
+               dev->nFreeObjects--;
+
+               /* Now sweeten it up... */
+
+               memset(tn, 0, sizeof(yaffs_Object));
+               tn->myDev = dev;
+               tn->chunkId = -1;
+               tn->variantType = YAFFS_OBJECT_TYPE_UNKNOWN;
+               INIT_LIST_HEAD(&(tn->hardLinks));
+               INIT_LIST_HEAD(&(tn->hashLink));
+               INIT_LIST_HEAD(&tn->siblings);
+
+               /* Add it to the lost and found directory.
+                * NB Can't put root or lostNFound in lostNFound so
+                * check if lostNFound exists first
+                */
+               if (dev->lostNFoundDir) {
+                       yaffs_AddObjectToDirectory(dev->lostNFoundDir, tn);
+               }
+       }
+
+       return tn;
+}
+
+static yaffs_Object *yaffs_CreateFakeDirectory(yaffs_Device * dev, int number,
+                                              __u32 mode)
+{
+
+       yaffs_Object *obj =
+           yaffs_CreateNewObject(dev, number, YAFFS_OBJECT_TYPE_DIRECTORY);
+       if (obj) {
+               obj->fake = 1;          /* it is fake so it has no NAND presence... */
+               obj->renameAllowed = 0; /* ... and we're not allowed to rename it... */
+               obj->unlinkAllowed = 0; /* ... or unlink it */
+               obj->deleted = 0;
+               obj->unlinked = 0;
+               obj->yst_mode = mode;
+               obj->myDev = dev;
+               obj->chunkId = 0;       /* Not a valid chunk. */
+       }
+
+       return obj;
+
+}
+
+static void yaffs_UnhashObject(yaffs_Object * tn)
+{
+       int bucket;
+       yaffs_Device *dev = tn->myDev;
+
+       /* If it is still linked into the bucket list, free from the list */
+       if (!list_empty(&tn->hashLink)) {
+               list_del_init(&tn->hashLink);
+               bucket = yaffs_HashFunction(tn->objectId);
+               dev->objectBucket[bucket].count--;
+       }
+
+}
+
+/*  FreeObject frees up a Object and puts it back on the free list */
+static void yaffs_FreeObject(yaffs_Object * tn)
+{
+
+       yaffs_Device *dev = tn->myDev;
+
+/* XXX U-BOOT XXX */
+#if 0
+#ifdef  __KERNEL__
+       if (tn->myInode) {
+               /* We're still hooked up to a cached inode.
+                * Don't delete now, but mark for later deletion
+                */
+               tn->deferedFree = 1;
+               return;
+       }
+#endif
+#endif
+       yaffs_UnhashObject(tn);
+
+       /* Link into the free list. */
+       tn->siblings.next = (struct list_head *)(dev->freeObjects);
+       dev->freeObjects = tn;
+       dev->nFreeObjects++;
+}
+
+/* XXX U-BOOT XXX */
+#if 0
+#ifdef __KERNEL__
+
+void yaffs_HandleDeferedFree(yaffs_Object * obj)
+{
+       if (obj->deferedFree) {
+               yaffs_FreeObject(obj);
+       }
+}
+
+#endif
+#endif
+
+static void yaffs_DeinitialiseObjects(yaffs_Device * dev)
+{
+       /* Free the list of allocated Objects */
+
+       yaffs_ObjectList *tmp;
+
+       while (dev->allocatedObjectList) {
+               tmp = dev->allocatedObjectList->next;
+               YFREE(dev->allocatedObjectList->objects);
+               YFREE(dev->allocatedObjectList);
+
+               dev->allocatedObjectList = tmp;
+       }
+
+       dev->freeObjects = NULL;
+       dev->nFreeObjects = 0;
+}
+
+static void yaffs_InitialiseObjects(yaffs_Device * dev)
+{
+       int i;
+
+       dev->allocatedObjectList = NULL;
+       dev->freeObjects = NULL;
+       dev->nFreeObjects = 0;
+
+       for (i = 0; i < YAFFS_NOBJECT_BUCKETS; i++) {
+               INIT_LIST_HEAD(&dev->objectBucket[i].list);
+               dev->objectBucket[i].count = 0;
+       }
+
+}
+
+static int yaffs_FindNiceObjectBucket(yaffs_Device * dev)
+{
+       static int x = 0;
+       int i;
+       int l = 999;
+       int lowest = 999999;
+
+       /* First let's see if we can find one that's empty. */
+
+       for (i = 0; i < 10 && lowest > 0; i++) {
+               x++;
+               x %= YAFFS_NOBJECT_BUCKETS;
+               if (dev->objectBucket[x].count < lowest) {
+                       lowest = dev->objectBucket[x].count;
+                       l = x;
+               }
+
+       }
+
+       /* If we didn't find an empty list, then try
+        * looking a bit further for a short one
+        */
+
+       for (i = 0; i < 10 && lowest > 3; i++) {
+               x++;
+               x %= YAFFS_NOBJECT_BUCKETS;
+               if (dev->objectBucket[x].count < lowest) {
+                       lowest = dev->objectBucket[x].count;
+                       l = x;
+               }
+
+       }
+
+       return l;
+}
+
+static int yaffs_CreateNewObjectNumber(yaffs_Device * dev)
+{
+       int bucket = yaffs_FindNiceObjectBucket(dev);
+
+       /* Now find an object value that has not already been taken
+        * by scanning the list.
+        */
+
+       int found = 0;
+       struct list_head *i;
+
+       __u32 n = (__u32) bucket;
+
+       /* yaffs_CheckObjectHashSanity();  */
+
+       while (!found) {
+               found = 1;
+               n += YAFFS_NOBJECT_BUCKETS;
+               if (1 || dev->objectBucket[bucket].count > 0) {
+                       list_for_each(i, &dev->objectBucket[bucket].list) {
+                               /* If there is already one in the list */
+                               if (i
+                                   && list_entry(i, yaffs_Object,
+                                                 hashLink)->objectId == n) {
+                                       found = 0;
+                               }
+                       }
+               }
+       }
+
+
+       return n;
+}
+
+static void yaffs_HashObject(yaffs_Object * in)
+{
+       int bucket = yaffs_HashFunction(in->objectId);
+       yaffs_Device *dev = in->myDev;
+
+       list_add(&in->hashLink, &dev->objectBucket[bucket].list);
+       dev->objectBucket[bucket].count++;
+
+}
+
+yaffs_Object *yaffs_FindObjectByNumber(yaffs_Device * dev, __u32 number)
+{
+       int bucket = yaffs_HashFunction(number);
+       struct list_head *i;
+       yaffs_Object *in;
+
+       list_for_each(i, &dev->objectBucket[bucket].list) {
+               /* Look if it is in the list */
+               if (i) {
+                       in = list_entry(i, yaffs_Object, hashLink);
+                       if (in->objectId == number) {
+/* XXX U-BOOT XXX */
+#if 0
+#ifdef __KERNEL__
+                               /* Don't tell the VFS about this one if it is defered free */
+                               if (in->deferedFree)
+                                       return NULL;
+#endif
+#endif
+                               return in;
+                       }
+               }
+       }
+
+       return NULL;
+}
+
+yaffs_Object *yaffs_CreateNewObject(yaffs_Device * dev, int number,
+                                   yaffs_ObjectType type)
+{
+
+       yaffs_Object *theObject;
+       yaffs_Tnode *tn;
+
+       if (number < 0) {
+               number = yaffs_CreateNewObjectNumber(dev);
+       }
+
+       theObject = yaffs_AllocateEmptyObject(dev);
+       if(!theObject)
+               return NULL;
+
+       if(type == YAFFS_OBJECT_TYPE_FILE){
+               tn = yaffs_GetTnode(dev);
+               if(!tn){
+                       yaffs_FreeObject(theObject);
+                       return NULL;
+               }
+       }
+
+
+
+       if (theObject) {
+               theObject->fake = 0;
+               theObject->renameAllowed = 1;
+               theObject->unlinkAllowed = 1;
+               theObject->objectId = number;
+               yaffs_HashObject(theObject);
+               theObject->variantType = type;
+#ifdef CONFIG_YAFFS_WINCE
+               yfsd_WinFileTimeNow(theObject->win_atime);
+               theObject->win_ctime[0] = theObject->win_mtime[0] =
+                   theObject->win_atime[0];
+               theObject->win_ctime[1] = theObject->win_mtime[1] =
+                   theObject->win_atime[1];
+
+#else
+
+               theObject->yst_atime = theObject->yst_mtime =
+                   theObject->yst_ctime = Y_CURRENT_TIME;
+#endif
+               switch (type) {
+               case YAFFS_OBJECT_TYPE_FILE:
+                       theObject->variant.fileVariant.fileSize = 0;
+                       theObject->variant.fileVariant.scannedFileSize = 0;
+                       theObject->variant.fileVariant.shrinkSize = 0xFFFFFFFF; /* max __u32 */
+                       theObject->variant.fileVariant.topLevel = 0;
+                       theObject->variant.fileVariant.top = tn;
+                       break;
+               case YAFFS_OBJECT_TYPE_DIRECTORY:
+                       INIT_LIST_HEAD(&theObject->variant.directoryVariant.
+                                      children);
+                       break;
+               case YAFFS_OBJECT_TYPE_SYMLINK:
+               case YAFFS_OBJECT_TYPE_HARDLINK:
+               case YAFFS_OBJECT_TYPE_SPECIAL:
+                       /* No action required */
+                       break;
+               case YAFFS_OBJECT_TYPE_UNKNOWN:
+                       /* todo this should not happen */
+                       break;
+               }
+       }
+
+       return theObject;
+}
+
+static yaffs_Object *yaffs_FindOrCreateObjectByNumber(yaffs_Device * dev,
+                                                     int number,
+                                                     yaffs_ObjectType type)
+{
+       yaffs_Object *theObject = NULL;
+
+       if (number > 0) {
+               theObject = yaffs_FindObjectByNumber(dev, number);
+       }
+
+       if (!theObject) {
+               theObject = yaffs_CreateNewObject(dev, number, type);
+       }
+
+       return theObject;
+
+}
+
+
+static YCHAR *yaffs_CloneString(const YCHAR * str)
+{
+       YCHAR *newStr = NULL;
+
+       if (str && *str) {
+               newStr = YMALLOC((yaffs_strlen(str) + 1) * sizeof(YCHAR));
+               if(newStr)
+                       yaffs_strcpy(newStr, str);
+       }
+
+       return newStr;
+
+}
+
+/*
+ * Mknod (create) a new object.
+ * equivalentObject only has meaning for a hard link;
+ * aliasString only has meaning for a sumlink.
+ * rdev only has meaning for devices (a subset of special objects)
+ */
+
+static yaffs_Object *yaffs_MknodObject(yaffs_ObjectType type,
+                                      yaffs_Object * parent,
+                                      const YCHAR * name,
+                                      __u32 mode,
+                                      __u32 uid,
+                                      __u32 gid,
+                                      yaffs_Object * equivalentObject,
+                                      const YCHAR * aliasString, __u32 rdev)
+{
+       yaffs_Object *in;
+       YCHAR *str;
+
+       yaffs_Device *dev = parent->myDev;
+
+       /* Check if the entry exists. If it does then fail the call since we don't want a dup.*/
+       if (yaffs_FindObjectByName(parent, name)) {
+               return NULL;
+       }
+
+       in = yaffs_CreateNewObject(dev, -1, type);
+
+       if(type == YAFFS_OBJECT_TYPE_SYMLINK){
+               str = yaffs_CloneString(aliasString);
+               if(!str){
+                       yaffs_FreeObject(in);
+                       return NULL;
+               }
+       }
+
+
+
+       if (in) {
+               in->chunkId = -1;
+               in->valid = 1;
+               in->variantType = type;
+
+               in->yst_mode = mode;
+
+#ifdef CONFIG_YAFFS_WINCE
+               yfsd_WinFileTimeNow(in->win_atime);
+               in->win_ctime[0] = in->win_mtime[0] = in->win_atime[0];
+               in->win_ctime[1] = in->win_mtime[1] = in->win_atime[1];
+
+#else
+               in->yst_atime = in->yst_mtime = in->yst_ctime = Y_CURRENT_TIME;
+
+               in->yst_rdev = rdev;
+               in->yst_uid = uid;
+               in->yst_gid = gid;
+#endif
+               in->nDataChunks = 0;
+
+               yaffs_SetObjectName(in, name);
+               in->dirty = 1;
+
+               yaffs_AddObjectToDirectory(parent, in);
+
+               in->myDev = parent->myDev;
+
+               switch (type) {
+               case YAFFS_OBJECT_TYPE_SYMLINK:
+                       in->variant.symLinkVariant.alias = str;
+                       break;
+               case YAFFS_OBJECT_TYPE_HARDLINK:
+                       in->variant.hardLinkVariant.equivalentObject =
+                           equivalentObject;
+                       in->variant.hardLinkVariant.equivalentObjectId =
+                           equivalentObject->objectId;
+                       list_add(&in->hardLinks, &equivalentObject->hardLinks);
+                       break;
+               case YAFFS_OBJECT_TYPE_FILE:
+               case YAFFS_OBJECT_TYPE_DIRECTORY:
+               case YAFFS_OBJECT_TYPE_SPECIAL:
+               case YAFFS_OBJECT_TYPE_UNKNOWN:
+                       /* do nothing */
+                       break;
+               }
+
+               if (yaffs_UpdateObjectHeader(in, name, 0, 0, 0) < 0) {
+                       /* Could not create the object header, fail the creation */
+                       yaffs_DestroyObject(in);
+                       in = NULL;
+               }
+
+       }
+
+       return in;
+}
+
+yaffs_Object *yaffs_MknodFile(yaffs_Object * parent, const YCHAR * name,
+                             __u32 mode, __u32 uid, __u32 gid)
+{
+       return yaffs_MknodObject(YAFFS_OBJECT_TYPE_FILE, parent, name, mode,
+                                uid, gid, NULL, NULL, 0);
+}
+
+yaffs_Object *yaffs_MknodDirectory(yaffs_Object * parent, const YCHAR * name,
+                                  __u32 mode, __u32 uid, __u32 gid)
+{
+       return yaffs_MknodObject(YAFFS_OBJECT_TYPE_DIRECTORY, parent, name,
+                                mode, uid, gid, NULL, NULL, 0);
+}
+
+yaffs_Object *yaffs_MknodSpecial(yaffs_Object * parent, const YCHAR * name,
+                                __u32 mode, __u32 uid, __u32 gid, __u32 rdev)
+{
+       return yaffs_MknodObject(YAFFS_OBJECT_TYPE_SPECIAL, parent, name, mode,
+                                uid, gid, NULL, NULL, rdev);
+}
+
+yaffs_Object *yaffs_MknodSymLink(yaffs_Object * parent, const YCHAR * name,
+                                __u32 mode, __u32 uid, __u32 gid,
+                                const YCHAR * alias)
+{
+       return yaffs_MknodObject(YAFFS_OBJECT_TYPE_SYMLINK, parent, name, mode,
+                                uid, gid, NULL, alias, 0);
+}
+
+/* yaffs_Link returns the object id of the equivalent object.*/
+yaffs_Object *yaffs_Link(yaffs_Object * parent, const YCHAR * name,
+                        yaffs_Object * equivalentObject)
+{
+       /* Get the real object in case we were fed a hard link as an equivalent object */
+       equivalentObject = yaffs_GetEquivalentObject(equivalentObject);
+
+       if (yaffs_MknodObject
+           (YAFFS_OBJECT_TYPE_HARDLINK, parent, name, 0, 0, 0,
+            equivalentObject, NULL, 0)) {
+               return equivalentObject;
+       } else {
+               return NULL;
+       }
+
+}
+
+static int yaffs_ChangeObjectName(yaffs_Object * obj, yaffs_Object * newDir,
+                                 const YCHAR * newName, int force, int shadows)
+{
+       int unlinkOp;
+       int deleteOp;
+
+       yaffs_Object *existingTarget;
+
+       if (newDir == NULL) {
+               newDir = obj->parent;   /* use the old directory */
+       }
+
+       if (newDir->variantType != YAFFS_OBJECT_TYPE_DIRECTORY) {
+               T(YAFFS_TRACE_ALWAYS,
+                 (TSTR
+                  ("tragendy: yaffs_ChangeObjectName: newDir is not a directory"
+                   TENDSTR)));
+               YBUG();
+       }
+
+       /* TODO: Do we need this different handling for YAFFS2 and YAFFS1?? */
+       if (obj->myDev->isYaffs2) {
+               unlinkOp = (newDir == obj->myDev->unlinkedDir);
+       } else {
+               unlinkOp = (newDir == obj->myDev->unlinkedDir
+                           && obj->variantType == YAFFS_OBJECT_TYPE_FILE);
+       }
+
+       deleteOp = (newDir == obj->myDev->deletedDir);
+
+       existingTarget = yaffs_FindObjectByName(newDir, newName);
+
+       /* If the object is a file going into the unlinked directory,
+        *   then it is OK to just stuff it in since duplicate names are allowed.
+        *   else only proceed if the new name does not exist and if we're putting
+        *   it into a directory.
+        */
+       if ((unlinkOp ||
+            deleteOp ||
+            force ||
+            (shadows > 0) ||
+            !existingTarget) &&
+           newDir->variantType == YAFFS_OBJECT_TYPE_DIRECTORY) {
+               yaffs_SetObjectName(obj, newName);
+               obj->dirty = 1;
+
+               yaffs_AddObjectToDirectory(newDir, obj);
+
+               if (unlinkOp)
+                       obj->unlinked = 1;
+
+               /* If it is a deletion then we mark it as a shrink for gc purposes. */
+               if (yaffs_UpdateObjectHeader(obj, newName, 0, deleteOp, shadows)>= 0)
+                       return YAFFS_OK;
+       }
+
+       return YAFFS_FAIL;
+}
+
+int yaffs_RenameObject(yaffs_Object * oldDir, const YCHAR * oldName,
+                      yaffs_Object * newDir, const YCHAR * newName)
+{
+       yaffs_Object *obj;
+       yaffs_Object *existingTarget;
+       int force = 0;
+
+#ifdef CONFIG_YAFFS_CASE_INSENSITIVE
+       /* Special case for case insemsitive systems (eg. WinCE).
+        * While look-up is case insensitive, the name isn't.
+        * Therefore we might want to change x.txt to X.txt
+       */
+       if (oldDir == newDir && yaffs_strcmp(oldName, newName) == 0) {
+               force = 1;
+       }
+#endif
+
+       obj = yaffs_FindObjectByName(oldDir, oldName);
+       /* Check new name to long. */
+       if (obj->variantType == YAFFS_OBJECT_TYPE_SYMLINK &&
+           yaffs_strlen(newName) > YAFFS_MAX_ALIAS_LENGTH)
+         /* ENAMETOOLONG */
+         return YAFFS_FAIL;
+       else if (obj->variantType != YAFFS_OBJECT_TYPE_SYMLINK &&
+                yaffs_strlen(newName) > YAFFS_MAX_NAME_LENGTH)
+         /* ENAMETOOLONG */
+         return YAFFS_FAIL;
+
+       if (obj && obj->renameAllowed) {
+
+               /* Now do the handling for an existing target, if there is one */
+
+               existingTarget = yaffs_FindObjectByName(newDir, newName);
+               if (existingTarget &&
+                   existingTarget->variantType == YAFFS_OBJECT_TYPE_DIRECTORY &&
+                   !list_empty(&existingTarget->variant.directoryVariant.children)) {
+                       /* There is a target that is a non-empty directory, so we fail */
+                       return YAFFS_FAIL;      /* EEXIST or ENOTEMPTY */
+               } else if (existingTarget && existingTarget != obj) {
+                       /* Nuke the target first, using shadowing,
+                        * but only if it isn't the same object
+                        */
+                       yaffs_ChangeObjectName(obj, newDir, newName, force,
+                                              existingTarget->objectId);
+                       yaffs_UnlinkObject(existingTarget);
+               }
+
+               return yaffs_ChangeObjectName(obj, newDir, newName, 1, 0);
+       }
+       return YAFFS_FAIL;
+}
+
+/*------------------------- Block Management and Page Allocation ----------------*/
+
+static int yaffs_InitialiseBlocks(yaffs_Device * dev)
+{
+       int nBlocks = dev->internalEndBlock - dev->internalStartBlock + 1;
+
+       dev->blockInfo = NULL;
+       dev->chunkBits = NULL;
+
+       dev->allocationBlock = -1;      /* force it to get a new one */
+
+       /* If the first allocation strategy fails, thry the alternate one */
+       dev->blockInfo = YMALLOC(nBlocks * sizeof(yaffs_BlockInfo));
+       if(!dev->blockInfo){
+               dev->blockInfo = YMALLOC_ALT(nBlocks * sizeof(yaffs_BlockInfo));
+               dev->blockInfoAlt = 1;
+       }
+       else
+               dev->blockInfoAlt = 0;
+
+       if(dev->blockInfo){
+
+               /* Set up dynamic blockinfo stuff. */
+               dev->chunkBitmapStride = (dev->nChunksPerBlock + 7) / 8; /* round up bytes */
+               dev->chunkBits = YMALLOC(dev->chunkBitmapStride * nBlocks);
+               if(!dev->chunkBits){
+                       dev->chunkBits = YMALLOC_ALT(dev->chunkBitmapStride * nBlocks);
+                       dev->chunkBitsAlt = 1;
+               }
+               else
+                       dev->chunkBitsAlt = 0;
+       }
+
+       if (dev->blockInfo && dev->chunkBits) {
+               memset(dev->blockInfo, 0, nBlocks * sizeof(yaffs_BlockInfo));
+               memset(dev->chunkBits, 0, dev->chunkBitmapStride * nBlocks);
+               return YAFFS_OK;
+       }
+
+       return YAFFS_FAIL;
+
+}
+
+static void yaffs_DeinitialiseBlocks(yaffs_Device * dev)
+{
+       if(dev->blockInfoAlt && dev->blockInfo)
+               YFREE_ALT(dev->blockInfo);
+       else if(dev->blockInfo)
+               YFREE(dev->blockInfo);
+
+       dev->blockInfoAlt = 0;
+
+       dev->blockInfo = NULL;
+
+       if(dev->chunkBitsAlt && dev->chunkBits)
+               YFREE_ALT(dev->chunkBits);
+       else if(dev->chunkBits)
+               YFREE(dev->chunkBits);
+       dev->chunkBitsAlt = 0;
+       dev->chunkBits = NULL;
+}
+
+static int yaffs_BlockNotDisqualifiedFromGC(yaffs_Device * dev,
+                                           yaffs_BlockInfo * bi)
+{
+       int i;
+       __u32 seq;
+       yaffs_BlockInfo *b;
+
+       if (!dev->isYaffs2)
+               return 1;       /* disqualification only applies to yaffs2. */
+
+       if (!bi->hasShrinkHeader)
+               return 1;       /* can gc */
+
+       /* Find the oldest dirty sequence number if we don't know it and save it
+        * so we don't have to keep recomputing it.
+        */
+       if (!dev->oldestDirtySequence) {
+               seq = dev->sequenceNumber;
+
+               for (i = dev->internalStartBlock; i <= dev->internalEndBlock;
+                    i++) {
+                       b = yaffs_GetBlockInfo(dev, i);
+                       if (b->blockState == YAFFS_BLOCK_STATE_FULL &&
+                           (b->pagesInUse - b->softDeletions) <
+                           dev->nChunksPerBlock && b->sequenceNumber < seq) {
+                               seq = b->sequenceNumber;
+                       }
+               }
+               dev->oldestDirtySequence = seq;
+       }
+
+       /* Can't do gc of this block if there are any blocks older than this one that have
+        * discarded pages.
+        */
+       return (bi->sequenceNumber <= dev->oldestDirtySequence);
+
+}
+
+/* FindDiretiestBlock is used to select the dirtiest block (or close enough)
+ * for garbage collection.
+ */
+
+static int yaffs_FindBlockForGarbageCollection(yaffs_Device * dev,
+                                              int aggressive)
+{
+
+       int b = dev->currentDirtyChecker;
+
+       int i;
+       int iterations;
+       int dirtiest = -1;
+       int pagesInUse = 0;
+       int prioritised=0;
+       yaffs_BlockInfo *bi;
+       int pendingPrioritisedExist = 0;
+
+       /* First let's see if we need to grab a prioritised block */
+       if(dev->hasPendingPrioritisedGCs){
+               for(i = dev->internalStartBlock; i < dev->internalEndBlock && !prioritised; i++){
+
+                       bi = yaffs_GetBlockInfo(dev, i);
+                       //yaffs_VerifyBlock(dev,bi,i);
+
+                       if(bi->gcPrioritise) {
+                               pendingPrioritisedExist = 1;
+                               if(bi->blockState == YAFFS_BLOCK_STATE_FULL &&
+                                  yaffs_BlockNotDisqualifiedFromGC(dev, bi)){
+                                       pagesInUse = (bi->pagesInUse - bi->softDeletions);
+                                       dirtiest = i;
+                                       prioritised = 1;
+                                       aggressive = 1; /* Fool the non-aggressive skip logiv below */
+                               }
+                       }
+               }
+
+               if(!pendingPrioritisedExist) /* None found, so we can clear this */
+                       dev->hasPendingPrioritisedGCs = 0;
+       }
+
+       /* If we're doing aggressive GC then we are happy to take a less-dirty block, and
+        * search harder.
+        * else (we're doing a leasurely gc), then we only bother to do this if the
+        * block has only a few pages in use.
+        */
+
+       dev->nonAggressiveSkip--;
+
+       if (!aggressive && (dev->nonAggressiveSkip > 0)) {
+               return -1;
+       }
+
+       if(!prioritised)
+               pagesInUse =
+                       (aggressive) ? dev->nChunksPerBlock : YAFFS_PASSIVE_GC_CHUNKS + 1;
+
+       if (aggressive) {
+               iterations =
+                   dev->internalEndBlock - dev->internalStartBlock + 1;
+       } else {
+               iterations =
+                   dev->internalEndBlock - dev->internalStartBlock + 1;
+               iterations = iterations / 16;
+               if (iterations > 200) {
+                       iterations = 200;
+               }
+       }
+
+       for (i = 0; i <= iterations && pagesInUse > 0 && !prioritised; i++) {
+               b++;
+               if (b < dev->internalStartBlock || b > dev->internalEndBlock) {
+                       b = dev->internalStartBlock;
+               }
+
+               if (b < dev->internalStartBlock || b > dev->internalEndBlock) {
+                       T(YAFFS_TRACE_ERROR,
+                         (TSTR("**>> Block %d is not valid" TENDSTR), b));
+                       YBUG();
+               }
+
+               bi = yaffs_GetBlockInfo(dev, b);
+
+#if 0
+               if (bi->blockState == YAFFS_BLOCK_STATE_CHECKPOINT) {
+                       dirtiest = b;
+                       pagesInUse = 0;
+               }
+               else
+#endif
+
+               if (bi->blockState == YAFFS_BLOCK_STATE_FULL &&
+                      (bi->pagesInUse - bi->softDeletions) < pagesInUse &&
+                       yaffs_BlockNotDisqualifiedFromGC(dev, bi)) {
+                       dirtiest = b;
+                       pagesInUse = (bi->pagesInUse - bi->softDeletions);
+               }
+       }
+
+       dev->currentDirtyChecker = b;
+
+       if (dirtiest > 0) {
+               T(YAFFS_TRACE_GC,
+                 (TSTR("GC Selected block %d with %d free, prioritised:%d" TENDSTR), dirtiest,
+                  dev->nChunksPerBlock - pagesInUse,prioritised));
+       }
+
+       dev->oldestDirtySequence = 0;
+
+       if (dirtiest > 0) {
+               dev->nonAggressiveSkip = 4;
+       }
+
+       return dirtiest;
+}
+
+static void yaffs_BlockBecameDirty(yaffs_Device * dev, int blockNo)
+{
+       yaffs_BlockInfo *bi = yaffs_GetBlockInfo(dev, blockNo);
+
+       int erasedOk = 0;
+
+       /* If the block is still healthy erase it and mark as clean.
+        * If the block has had a data failure, then retire it.
+        */
+
+       T(YAFFS_TRACE_GC | YAFFS_TRACE_ERASE,
+               (TSTR("yaffs_BlockBecameDirty block %d state %d %s"TENDSTR),
+               blockNo, bi->blockState, (bi->needsRetiring) ? "needs retiring" : ""));
+
+       bi->blockState = YAFFS_BLOCK_STATE_DIRTY;
+
+       if (!bi->needsRetiring) {
+               yaffs_InvalidateCheckpoint(dev);
+               erasedOk = yaffs_EraseBlockInNAND(dev, blockNo);
+               if (!erasedOk) {
+                       dev->nErasureFailures++;
+                       T(YAFFS_TRACE_ERROR | YAFFS_TRACE_BAD_BLOCKS,
+                         (TSTR("**>> Erasure failed %d" TENDSTR), blockNo));
+               }
+       }
+
+       if (erasedOk &&
+           ((yaffs_traceMask & YAFFS_TRACE_ERASE) || !yaffs_SkipVerification(dev))) {
+               int i;
+               for (i = 0; i < dev->nChunksPerBlock; i++) {
+                       if (!yaffs_CheckChunkErased
+                           (dev, blockNo * dev->nChunksPerBlock + i)) {
+                               T(YAFFS_TRACE_ERROR,
+                                 (TSTR
+                                  (">>Block %d erasure supposedly OK, but chunk %d not erased"
+                                   TENDSTR), blockNo, i));
+                       }
+               }
+       }
+
+       if (erasedOk) {
+               /* Clean it up... */
+               bi->blockState = YAFFS_BLOCK_STATE_EMPTY;
+               dev->nErasedBlocks++;
+               bi->pagesInUse = 0;
+               bi->softDeletions = 0;
+               bi->hasShrinkHeader = 0;
+               bi->skipErasedCheck = 1;  /* This is clean, so no need to check */
+               bi->gcPrioritise = 0;
+               yaffs_ClearChunkBits(dev, blockNo);
+
+               T(YAFFS_TRACE_ERASE,
+                 (TSTR("Erased block %d" TENDSTR), blockNo));
+       } else {
+               dev->nFreeChunks -= dev->nChunksPerBlock;       /* We lost a block of free space */
+
+               yaffs_RetireBlock(dev, blockNo);
+               T(YAFFS_TRACE_ERROR | YAFFS_TRACE_BAD_BLOCKS,
+                 (TSTR("**>> Block %d retired" TENDSTR), blockNo));
+       }
+}
+
+static int yaffs_FindBlockForAllocation(yaffs_Device * dev)
+{
+       int i;
+
+       yaffs_BlockInfo *bi;
+
+       if (dev->nErasedBlocks < 1) {
+               /* Hoosterman we've got a problem.
+                * Can't get space to gc
+                */
+               T(YAFFS_TRACE_ERROR,
+                 (TSTR("yaffs tragedy: no more eraased blocks" TENDSTR)));
+
+               return -1;
+       }
+
+       /* Find an empty block. */
+
+       for (i = dev->internalStartBlock; i <= dev->internalEndBlock; i++) {
+               dev->allocationBlockFinder++;
+               if (dev->allocationBlockFinder < dev->internalStartBlock
+                   || dev->allocationBlockFinder > dev->internalEndBlock) {
+                       dev->allocationBlockFinder = dev->internalStartBlock;
+               }
+
+               bi = yaffs_GetBlockInfo(dev, dev->allocationBlockFinder);
+
+               if (bi->blockState == YAFFS_BLOCK_STATE_EMPTY) {
+                       bi->blockState = YAFFS_BLOCK_STATE_ALLOCATING;
+                       dev->sequenceNumber++;
+                       bi->sequenceNumber = dev->sequenceNumber;
+                       dev->nErasedBlocks--;
+                       T(YAFFS_TRACE_ALLOCATE,
+                         (TSTR("Allocated block %d, seq  %d, %d left" TENDSTR),
+                          dev->allocationBlockFinder, dev->sequenceNumber,
+                          dev->nErasedBlocks));
+                       return dev->allocationBlockFinder;
+               }
+       }
+
+       T(YAFFS_TRACE_ALWAYS,
+         (TSTR
+          ("yaffs tragedy: no more eraased blocks, but there should have been %d"
+           TENDSTR), dev->nErasedBlocks));
+
+       return -1;
+}
+
+
+// Check if there's space to allocate...
+// Thinks.... do we need top make this ths same as yaffs_GetFreeChunks()?
+static int yaffs_CheckSpaceForAllocation(yaffs_Device * dev)
+{
+       int reservedChunks;
+       int reservedBlocks = dev->nReservedBlocks;
+       int checkpointBlocks;
+
+       checkpointBlocks =  dev->nCheckpointReservedBlocks - dev->blocksInCheckpoint;
+       if(checkpointBlocks < 0)
+               checkpointBlocks = 0;
+
+       reservedChunks = ((reservedBlocks + checkpointBlocks) * dev->nChunksPerBlock);
+
+       return (dev->nFreeChunks > reservedChunks);
+}
+
+static int yaffs_AllocateChunk(yaffs_Device * dev, int useReserve, yaffs_BlockInfo **blockUsedPtr)
+{
+       int retVal;
+       yaffs_BlockInfo *bi;
+
+       if (dev->allocationBlock < 0) {
+               /* Get next block to allocate off */
+               dev->allocationBlock = yaffs_FindBlockForAllocation(dev);
+               dev->allocationPage = 0;
+       }
+
+       if (!useReserve && !yaffs_CheckSpaceForAllocation(dev)) {
+               /* Not enough space to allocate unless we're allowed to use the reserve. */
+               return -1;
+       }
+
+       if (dev->nErasedBlocks < dev->nReservedBlocks
+           && dev->allocationPage == 0) {
+               T(YAFFS_TRACE_ALLOCATE, (TSTR("Allocating reserve" TENDSTR)));
+       }
+
+       /* Next page please.... */
+       if (dev->allocationBlock >= 0) {
+               bi = yaffs_GetBlockInfo(dev, dev->allocationBlock);
+
+               retVal = (dev->allocationBlock * dev->nChunksPerBlock) +
+                   dev->allocationPage;
+               bi->pagesInUse++;
+               yaffs_SetChunkBit(dev, dev->allocationBlock,
+                                 dev->allocationPage);
+
+               dev->allocationPage++;
+
+               dev->nFreeChunks--;
+
+               /* If the block is full set the state to full */
+               if (dev->allocationPage >= dev->nChunksPerBlock) {
+                       bi->blockState = YAFFS_BLOCK_STATE_FULL;
+                       dev->allocationBlock = -1;
+               }
+
+               if(blockUsedPtr)
+                       *blockUsedPtr = bi;
+
+               return retVal;
+       }
+
+       T(YAFFS_TRACE_ERROR,
+         (TSTR("!!!!!!!!! Allocator out !!!!!!!!!!!!!!!!!" TENDSTR)));
+
+       return -1;
+}
+
+static int yaffs_GetErasedChunks(yaffs_Device * dev)
+{
+       int n;
+
+       n = dev->nErasedBlocks * dev->nChunksPerBlock;
+
+       if (dev->allocationBlock > 0) {
+               n += (dev->nChunksPerBlock - dev->allocationPage);
+       }
+
+       return n;
+
+}
+
+static int yaffs_GarbageCollectBlock(yaffs_Device * dev, int block)
+{
+       int oldChunk;
+       int newChunk;
+       int chunkInBlock;
+       int markNAND;
+       int retVal = YAFFS_OK;
+       int cleanups = 0;
+       int i;
+       int isCheckpointBlock;
+       int matchingChunk;
+
+       int chunksBefore = yaffs_GetErasedChunks(dev);
+       int chunksAfter;
+
+       yaffs_ExtendedTags tags;
+
+       yaffs_BlockInfo *bi = yaffs_GetBlockInfo(dev, block);
+
+       yaffs_Object *object;
+
+       isCheckpointBlock = (bi->blockState == YAFFS_BLOCK_STATE_CHECKPOINT);
+
+       bi->blockState = YAFFS_BLOCK_STATE_COLLECTING;
+
+       T(YAFFS_TRACE_TRACING,
+         (TSTR("Collecting block %d, in use %d, shrink %d, " TENDSTR), block,
+          bi->pagesInUse, bi->hasShrinkHeader));
+
+       /*yaffs_VerifyFreeChunks(dev); */
+
+       bi->hasShrinkHeader = 0;        /* clear the flag so that the block can erase */
+
+       /* Take off the number of soft deleted entries because
+        * they're going to get really deleted during GC.
+        */
+       dev->nFreeChunks -= bi->softDeletions;
+
+       dev->isDoingGC = 1;
+
+       if (isCheckpointBlock ||
+           !yaffs_StillSomeChunkBits(dev, block)) {
+               T(YAFFS_TRACE_TRACING,
+                 (TSTR
+                  ("Collecting block %d that has no chunks in use" TENDSTR),
+                  block));
+               yaffs_BlockBecameDirty(dev, block);
+       } else {
+
+               __u8 *buffer = yaffs_GetTempBuffer(dev, __LINE__);
+
+               yaffs_VerifyBlock(dev,bi,block);
+
+               for (chunkInBlock = 0, oldChunk = block * dev->nChunksPerBlock;
+                    chunkInBlock < dev->nChunksPerBlock
+                    && yaffs_StillSomeChunkBits(dev, block);
+                    chunkInBlock++, oldChunk++) {
+                       if (yaffs_CheckChunkBit(dev, block, chunkInBlock)) {
+
+                               /* This page is in use and might need to be copied off */
+
+                               markNAND = 1;
+
+                               yaffs_InitialiseTags(&tags);
+
+                               yaffs_ReadChunkWithTagsFromNAND(dev, oldChunk,
+                                                               buffer, &tags);
+
+                               object =
+                                   yaffs_FindObjectByNumber(dev,
+                                                            tags.objectId);
+
+                               T(YAFFS_TRACE_GC_DETAIL,
+                                 (TSTR
+                                  ("Collecting page %d, %d %d %d " TENDSTR),
+                                  chunkInBlock, tags.objectId, tags.chunkId,
+                                  tags.byteCount));
+
+                               if(object && !yaffs_SkipVerification(dev)){
+                                       if(tags.chunkId == 0)
+                                               matchingChunk = object->chunkId;
+                                       else if(object->softDeleted)
+                                               matchingChunk = oldChunk; /* Defeat the test */
+                                       else
+                                               matchingChunk = yaffs_FindChunkInFile(object,tags.chunkId,NULL);
+
+                                       if(oldChunk != matchingChunk)
+                                               T(YAFFS_TRACE_ERROR,
+                                                 (TSTR("gc: page in gc mismatch: %d %d %d %d"TENDSTR),
+                                                 oldChunk,matchingChunk,tags.objectId, tags.chunkId));
+
+                               }
+
+                               if (!object) {
+                                       T(YAFFS_TRACE_ERROR,
+                                         (TSTR
+                                          ("page %d in gc has no object: %d %d %d "
+                                           TENDSTR), oldChunk,
+                                           tags.objectId, tags.chunkId, tags.byteCount));
+                               }
+
+                               if (object && object->deleted
+                                   && tags.chunkId != 0) {
+                                       /* Data chunk in a deleted file, throw it away
+                                        * It's a soft deleted data chunk,
+                                        * No need to copy this, just forget about it and
+                                        * fix up the object.
+                                        */
+
+                                       object->nDataChunks--;
+
+                                       if (object->nDataChunks <= 0) {
+                                               /* remeber to clean up the object */
+                                               dev->gcCleanupList[cleanups] =
+                                                   tags.objectId;
+                                               cleanups++;
+                                       }
+                                       markNAND = 0;
+                               } else if (0
+                                          /* Todo object && object->deleted && object->nDataChunks == 0 */
+                                          ) {
+                                       /* Deleted object header with no data chunks.
+                                        * Can be discarded and the file deleted.
+                                        */
+                                       object->chunkId = 0;
+                                       yaffs_FreeTnode(object->myDev,
+                                                       object->variant.
+                                                       fileVariant.top);
+                                       object->variant.fileVariant.top = NULL;
+                                       yaffs_DoGenericObjectDeletion(object);
+
+                               } else if (object) {
+                                       /* It's either a data chunk in a live file or
+                                        * an ObjectHeader, so we're interested in it.
+                                        * NB Need to keep the ObjectHeaders of deleted files
+                                        * until the whole file has been deleted off
+                                        */
+                                       tags.serialNumber++;
+
+                                       dev->nGCCopies++;
+
+                                       if (tags.chunkId == 0) {
+                                               /* It is an object Id,
+                                                * We need to nuke the shrinkheader flags first
+                                                * We no longer want the shrinkHeader flag since its work is done
+                                                * and if it is left in place it will mess up scanning.
+                                                * Also, clear out any shadowing stuff
+                                                */
+
+                                               yaffs_ObjectHeader *oh;
+                                               oh = (yaffs_ObjectHeader *)buffer;
+                                               oh->isShrink = 0;
+                                               oh->shadowsObject = -1;
+                                               tags.extraShadows = 0;
+                                               tags.extraIsShrinkHeader = 0;
+
+                                               yaffs_VerifyObjectHeader(object,oh,&tags,1);
+                                       }
+
+                                       newChunk =
+                                           yaffs_WriteNewChunkWithTagsToNAND(dev, buffer, &tags, 1);
+
+                                       if (newChunk < 0) {
+                                               retVal = YAFFS_FAIL;
+                                       } else {
+
+                                               /* Ok, now fix up the Tnodes etc. */
+
+                                               if (tags.chunkId == 0) {
+                                                       /* It's a header */
+                                                       object->chunkId =  newChunk;
+                                                       object->serial =   tags.serialNumber;
+                                               } else {
+                                                       /* It's a data chunk */
+                                                       yaffs_PutChunkIntoFile
+                                                           (object,
+                                                            tags.chunkId,
+                                                            newChunk, 0);
+                                               }
+                                       }
+                               }
+
+                               yaffs_DeleteChunk(dev, oldChunk, markNAND, __LINE__);
+
+                       }
+               }
+
+               yaffs_ReleaseTempBuffer(dev, buffer, __LINE__);
+
+
+               /* Do any required cleanups */
+               for (i = 0; i < cleanups; i++) {
+                       /* Time to delete the file too */
+                       object =
+                           yaffs_FindObjectByNumber(dev,
+                                                    dev->gcCleanupList[i]);
+                       if (object) {
+                               yaffs_FreeTnode(dev,
+                                               object->variant.fileVariant.
+                                               top);
+                               object->variant.fileVariant.top = NULL;
+                               T(YAFFS_TRACE_GC,
+                                 (TSTR
+                                  ("yaffs: About to finally delete object %d"
+                                   TENDSTR), object->objectId));
+                               yaffs_DoGenericObjectDeletion(object);
+                               object->myDev->nDeletedFiles--;
+                       }
+
+               }
+
+       }
+
+       yaffs_VerifyCollectedBlock(dev,bi,block);
+
+       if (chunksBefore >= (chunksAfter = yaffs_GetErasedChunks(dev))) {
+               T(YAFFS_TRACE_GC,
+                 (TSTR
+                  ("gc did not increase free chunks before %d after %d"
+                   TENDSTR), chunksBefore, chunksAfter));
+       }
+
+       dev->isDoingGC = 0;
+
+       return YAFFS_OK;
+}
+
+/* New garbage collector
+ * If we're very low on erased blocks then we do aggressive garbage collection
+ * otherwise we do "leasurely" garbage collection.
+ * Aggressive gc looks further (whole array) and will accept less dirty blocks.
+ * Passive gc only inspects smaller areas and will only accept more dirty blocks.
+ *
+ * The idea is to help clear out space in a more spread-out manner.
+ * Dunno if it really does anything useful.
+ */
+static int yaffs_CheckGarbageCollection(yaffs_Device * dev)
+{
+       int block;
+       int aggressive;
+       int gcOk = YAFFS_OK;
+       int maxTries = 0;
+
+       int checkpointBlockAdjust;
+
+       if (dev->isDoingGC) {
+               /* Bail out so we don't get recursive gc */
+               return YAFFS_OK;
+       }
+
+       /* This loop should pass the first time.
+        * We'll only see looping here if the erase of the collected block fails.
+        */
+
+       do {
+               maxTries++;
+
+               checkpointBlockAdjust = (dev->nCheckpointReservedBlocks - dev->blocksInCheckpoint);
+               if(checkpointBlockAdjust < 0)
+                       checkpointBlockAdjust = 0;
+
+               if (dev->nErasedBlocks < (dev->nReservedBlocks + checkpointBlockAdjust + 2)) {
+                       /* We need a block soon...*/
+                       aggressive = 1;
+               } else {
+                       /* We're in no hurry */
+                       aggressive = 0;
+               }
+
+               block = yaffs_FindBlockForGarbageCollection(dev, aggressive);
+
+               if (block > 0) {
+                       dev->garbageCollections++;
+                       if (!aggressive) {
+                               dev->passiveGarbageCollections++;
+                       }
+
+                       T(YAFFS_TRACE_GC,
+                         (TSTR
+                          ("yaffs: GC erasedBlocks %d aggressive %d" TENDSTR),
+                          dev->nErasedBlocks, aggressive));
+
+                       gcOk = yaffs_GarbageCollectBlock(dev, block);
+               }
+
+               if (dev->nErasedBlocks < (dev->nReservedBlocks) && block > 0) {
+                       T(YAFFS_TRACE_GC,
+                         (TSTR
+                          ("yaffs: GC !!!no reclaim!!! erasedBlocks %d after try %d block %d"
+                           TENDSTR), dev->nErasedBlocks, maxTries, block));
+               }
+       } while ((dev->nErasedBlocks < dev->nReservedBlocks) && (block > 0)
+                && (maxTries < 2));
+
+       return aggressive ? gcOk : YAFFS_OK;
+}
+
+/*-------------------------  TAGS --------------------------------*/
+
+static int yaffs_TagsMatch(const yaffs_ExtendedTags * tags, int objectId,
+                          int chunkInObject)
+{
+       return (tags->chunkId == chunkInObject &&
+               tags->objectId == objectId && !tags->chunkDeleted) ? 1 : 0;
+
+}
+
+
+/*-------------------- Data file manipulation -----------------*/
+
+static int yaffs_FindChunkInFile(yaffs_Object * in, int chunkInInode,
+                                yaffs_ExtendedTags * tags)
+{
+       /*Get the Tnode, then get the level 0 offset chunk offset */
+       yaffs_Tnode *tn;
+       int theChunk = -1;
+       yaffs_ExtendedTags localTags;
+       int retVal = -1;
+
+       yaffs_Device *dev = in->myDev;
+
+       if (!tags) {
+               /* Passed a NULL, so use our own tags space */
+               tags = &localTags;
+       }
+
+       tn = yaffs_FindLevel0Tnode(dev, &in->variant.fileVariant, chunkInInode);
+
+       if (tn) {
+               theChunk = yaffs_GetChunkGroupBase(dev,tn,chunkInInode);
+
+               retVal =
+                   yaffs_FindChunkInGroup(dev, theChunk, tags, in->objectId,
+                                          chunkInInode);
+       }
+       return retVal;
+}
+
+static int yaffs_FindAndDeleteChunkInFile(yaffs_Object * in, int chunkInInode,
+                                         yaffs_ExtendedTags * tags)
+{
+       /* Get the Tnode, then get the level 0 offset chunk offset */
+       yaffs_Tnode *tn;
+       int theChunk = -1;
+       yaffs_ExtendedTags localTags;
+
+       yaffs_Device *dev = in->myDev;
+       int retVal = -1;
+
+       if (!tags) {
+               /* Passed a NULL, so use our own tags space */
+               tags = &localTags;
+       }
+
+       tn = yaffs_FindLevel0Tnode(dev, &in->variant.fileVariant, chunkInInode);
+
+       if (tn) {
+
+               theChunk = yaffs_GetChunkGroupBase(dev,tn,chunkInInode);
+
+               retVal =
+                   yaffs_FindChunkInGroup(dev, theChunk, tags, in->objectId,
+                                          chunkInInode);
+
+               /* Delete the entry in the filestructure (if found) */
+               if (retVal != -1) {
+                       yaffs_PutLevel0Tnode(dev,tn,chunkInInode,0);
+               }
+       } else {
+               /*T(("No level 0 found for %d\n", chunkInInode)); */
+       }
+
+       if (retVal == -1) {
+               /* T(("Could not find %d to delete\n",chunkInInode)); */
+       }
+       return retVal;
+}
+
+#ifdef YAFFS_PARANOID
+
+static int yaffs_CheckFileSanity(yaffs_Object * in)
+{
+       int chunk;
+       int nChunks;
+       int fSize;
+       int failed = 0;
+       int objId;
+       yaffs_Tnode *tn;
+       yaffs_Tags localTags;
+       yaffs_Tags *tags = &localTags;
+       int theChunk;
+       int chunkDeleted;
+
+       if (in->variantType != YAFFS_OBJECT_TYPE_FILE) {
+               /* T(("Object not a file\n")); */
+               return YAFFS_FAIL;
+       }
+
+       objId = in->objectId;
+       fSize = in->variant.fileVariant.fileSize;
+       nChunks =
+           (fSize + in->myDev->nDataBytesPerChunk - 1) / in->myDev->nDataBytesPerChunk;
+
+       for (chunk = 1; chunk <= nChunks; chunk++) {
+               tn = yaffs_FindLevel0Tnode(in->myDev, &in->variant.fileVariant,
+                                          chunk);
+
+               if (tn) {
+
+                       theChunk = yaffs_GetChunkGroupBase(dev,tn,chunk);
+
+                       if (yaffs_CheckChunkBits
+                           (dev, theChunk / dev->nChunksPerBlock,
+                            theChunk % dev->nChunksPerBlock)) {
+
+                               yaffs_ReadChunkTagsFromNAND(in->myDev, theChunk,
+                                                           tags,
+                                                           &chunkDeleted);
+                               if (yaffs_TagsMatch
+                                   (tags, in->objectId, chunk, chunkDeleted)) {
+                                       /* found it; */
+
+                               }
+                       } else {
+
+                               failed = 1;
+                       }
+
+               } else {
+                       /* T(("No level 0 found for %d\n", chunk)); */
+               }
+       }
+
+       return failed ? YAFFS_FAIL : YAFFS_OK;
+}
+
+#endif
+
+static int yaffs_PutChunkIntoFile(yaffs_Object * in, int chunkInInode,
+                                 int chunkInNAND, int inScan)
+{
+       /* NB inScan is zero unless scanning.
+        * For forward scanning, inScan is > 0;
+        * for backward scanning inScan is < 0
+        */
+
+       yaffs_Tnode *tn;
+       yaffs_Device *dev = in->myDev;
+       int existingChunk;
+       yaffs_ExtendedTags existingTags;
+       yaffs_ExtendedTags newTags;
+       unsigned existingSerial, newSerial;
+
+       if (in->variantType != YAFFS_OBJECT_TYPE_FILE) {
+               /* Just ignore an attempt at putting a chunk into a non-file during scanning
+                * If it is not during Scanning then something went wrong!
+                */
+               if (!inScan) {
+                       T(YAFFS_TRACE_ERROR,
+                         (TSTR
+                          ("yaffs tragedy:attempt to put data chunk into a non-file"
+                           TENDSTR)));
+                       YBUG();
+               }
+
+               yaffs_DeleteChunk(dev, chunkInNAND, 1, __LINE__);
+               return YAFFS_OK;
+       }
+
+       tn = yaffs_AddOrFindLevel0Tnode(dev,
+                                       &in->variant.fileVariant,
+                                       chunkInInode,
+                                       NULL);
+       if (!tn) {
+               return YAFFS_FAIL;
+       }
+
+       existingChunk = yaffs_GetChunkGroupBase(dev,tn,chunkInInode);
+
+       if (inScan != 0) {
+               /* If we're scanning then we need to test for duplicates
+                * NB This does not need to be efficient since it should only ever
+                * happen when the power fails during a write, then only one
+                * chunk should ever be affected.
+                *
+                * Correction for YAFFS2: This could happen quite a lot and we need to think about efficiency! TODO
+                * Update: For backward scanning we don't need to re-read tags so this is quite cheap.
+                */
+
+               if (existingChunk != 0) {
+                       /* NB Right now existing chunk will not be real chunkId if the device >= 32MB
+                        *    thus we have to do a FindChunkInFile to get the real chunk id.
+                        *
+                        * We have a duplicate now we need to decide which one to use:
+                        *
+                        * Backwards scanning YAFFS2: The old one is what we use, dump the new one.
+                        * Forward scanning YAFFS2: The new one is what we use, dump the old one.
+                        * YAFFS1: Get both sets of tags and compare serial numbers.
+                        */
+
+                       if (inScan > 0) {
+                               /* Only do this for forward scanning */
+                               yaffs_ReadChunkWithTagsFromNAND(dev,
+                                                               chunkInNAND,
+                                                               NULL, &newTags);
+
+                               /* Do a proper find */
+                               existingChunk =
+                                   yaffs_FindChunkInFile(in, chunkInInode,
+                                                         &existingTags);
+                       }
+
+                       if (existingChunk <= 0) {
+                               /*Hoosterman - how did this happen? */
+
+                               T(YAFFS_TRACE_ERROR,
+                                 (TSTR
+                                  ("yaffs tragedy: existing chunk < 0 in scan"
+                                   TENDSTR)));
+
+                       }
+
+                       /* NB The deleted flags should be false, otherwise the chunks will
+                        * not be loaded during a scan
+                        */
+
+                       newSerial = newTags.serialNumber;
+                       existingSerial = existingTags.serialNumber;
+
+                       if ((inScan > 0) &&
+                           (in->myDev->isYaffs2 ||
+                            existingChunk <= 0 ||
+                            ((existingSerial + 1) & 3) == newSerial)) {
+                               /* Forward scanning.
+                                * Use new
+                                * Delete the old one and drop through to update the tnode
+                                */
+                               yaffs_DeleteChunk(dev, existingChunk, 1,
+                                                 __LINE__);
+                       } else {
+                               /* Backward scanning or we want to use the existing one
+                                * Use existing.
+                                * Delete the new one and return early so that the tnode isn't changed
+                                */
+                               yaffs_DeleteChunk(dev, chunkInNAND, 1,
+                                                 __LINE__);
+                               return YAFFS_OK;
+                       }
+               }
+
+       }
+
+       if (existingChunk == 0) {
+               in->nDataChunks++;
+       }
+
+       yaffs_PutLevel0Tnode(dev,tn,chunkInInode,chunkInNAND);
+
+       return YAFFS_OK;
+}
+
+static int yaffs_ReadChunkDataFromObject(yaffs_Object * in, int chunkInInode,
+                                        __u8 * buffer)
+{
+       int chunkInNAND = yaffs_FindChunkInFile(in, chunkInInode, NULL);
+
+       if (chunkInNAND >= 0) {
+               return yaffs_ReadChunkWithTagsFromNAND(in->myDev, chunkInNAND,
+                                                      buffer,NULL);
+       } else {
+               T(YAFFS_TRACE_NANDACCESS,
+                 (TSTR("Chunk %d not found zero instead" TENDSTR),
+                  chunkInNAND));
+               /* get sane (zero) data if you read a hole */
+               memset(buffer, 0, in->myDev->nDataBytesPerChunk);
+               return 0;
+       }
+
+}
+
+void yaffs_DeleteChunk(yaffs_Device * dev, int chunkId, int markNAND, int lyn)
+{
+       int block;
+       int page;
+       yaffs_ExtendedTags tags;
+       yaffs_BlockInfo *bi;
+
+       if (chunkId <= 0)
+               return;
+
+
+       dev->nDeletions++;
+       block = chunkId / dev->nChunksPerBlock;
+       page = chunkId % dev->nChunksPerBlock;
+
+
+       if(!yaffs_CheckChunkBit(dev,block,page))
+               T(YAFFS_TRACE_VERIFY,
+                       (TSTR("Deleting invalid chunk %d"TENDSTR),
+                        chunkId));
+
+       bi = yaffs_GetBlockInfo(dev, block);
+
+       T(YAFFS_TRACE_DELETION,
+         (TSTR("line %d delete of chunk %d" TENDSTR), lyn, chunkId));
+
+       if (markNAND &&
+           bi->blockState != YAFFS_BLOCK_STATE_COLLECTING && !dev->isYaffs2) {
+
+               yaffs_InitialiseTags(&tags);
+
+               tags.chunkDeleted = 1;
+
+               yaffs_WriteChunkWithTagsToNAND(dev, chunkId, NULL, &tags);
+               yaffs_HandleUpdateChunk(dev, chunkId, &tags);
+       } else {
+               dev->nUnmarkedDeletions++;
+       }
+
+       /* Pull out of the management area.
+        * If the whole block became dirty, this will kick off an erasure.
+        */
+       if (bi->blockState == YAFFS_BLOCK_STATE_ALLOCATING ||
+           bi->blockState == YAFFS_BLOCK_STATE_FULL ||
+           bi->blockState == YAFFS_BLOCK_STATE_NEEDS_SCANNING ||
+           bi->blockState == YAFFS_BLOCK_STATE_COLLECTING) {
+               dev->nFreeChunks++;
+
+               yaffs_ClearChunkBit(dev, block, page);
+
+               bi->pagesInUse--;
+
+               if (bi->pagesInUse == 0 &&
+                   !bi->hasShrinkHeader &&
+                   bi->blockState != YAFFS_BLOCK_STATE_ALLOCATING &&
+                   bi->blockState != YAFFS_BLOCK_STATE_NEEDS_SCANNING) {
+                       yaffs_BlockBecameDirty(dev, block);
+               }
+
+       } else {
+               /* T(("Bad news deleting chunk %d\n",chunkId)); */
+       }
+
+}
+
+static int yaffs_WriteChunkDataToObject(yaffs_Object * in, int chunkInInode,
+                                       const __u8 * buffer, int nBytes,
+                                       int useReserve)
+{
+       /* Find old chunk Need to do this to get serial number
+        * Write new one and patch into tree.
+        * Invalidate old tags.
+        */
+
+       int prevChunkId;
+       yaffs_ExtendedTags prevTags;
+
+       int newChunkId;
+       yaffs_ExtendedTags newTags;
+
+       yaffs_Device *dev = in->myDev;
+
+       yaffs_CheckGarbageCollection(dev);
+
+       /* Get the previous chunk at this location in the file if it exists */
+       prevChunkId = yaffs_FindChunkInFile(in, chunkInInode, &prevTags);
+
+       /* Set up new tags */
+       yaffs_InitialiseTags(&newTags);
+
+       newTags.chunkId = chunkInInode;
+       newTags.objectId = in->objectId;
+       newTags.serialNumber =
+           (prevChunkId >= 0) ? prevTags.serialNumber + 1 : 1;
+       newTags.byteCount = nBytes;
+
+       newChunkId =
+           yaffs_WriteNewChunkWithTagsToNAND(dev, buffer, &newTags,
+                                             useReserve);
+
+       if (newChunkId >= 0) {
+               yaffs_PutChunkIntoFile(in, chunkInInode, newChunkId, 0);
+
+               if (prevChunkId >= 0) {
+                       yaffs_DeleteChunk(dev, prevChunkId, 1, __LINE__);
+
+               }
+
+               yaffs_CheckFileSanity(in);
+       }
+       return newChunkId;
+
+}
+
+/* UpdateObjectHeader updates the header on NAND for an object.
+ * If name is not NULL, then that new name is used.
+ */
+int yaffs_UpdateObjectHeader(yaffs_Object * in, const YCHAR * name, int force,
+                            int isShrink, int shadows)
+{
+
+       yaffs_BlockInfo *bi;
+
+       yaffs_Device *dev = in->myDev;
+
+       int prevChunkId;
+       int retVal = 0;
+       int result = 0;
+
+       int newChunkId;
+       yaffs_ExtendedTags newTags;
+       yaffs_ExtendedTags oldTags;
+
+       __u8 *buffer = NULL;
+       YCHAR oldName[YAFFS_MAX_NAME_LENGTH + 1];
+
+       yaffs_ObjectHeader *oh = NULL;
+
+       yaffs_strcpy(oldName,"silly old name");
+
+       if (!in->fake || force) {
+
+               yaffs_CheckGarbageCollection(dev);
+               yaffs_CheckObjectDetailsLoaded(in);
+
+               buffer = yaffs_GetTempBuffer(in->myDev, __LINE__);
+               oh = (yaffs_ObjectHeader *) buffer;
+
+               prevChunkId = in->chunkId;
+
+               if (prevChunkId >= 0) {
+                       result = yaffs_ReadChunkWithTagsFromNAND(dev, prevChunkId,
+                                                       buffer, &oldTags);
+
+                       yaffs_VerifyObjectHeader(in,oh,&oldTags,0);
+
+                       memcpy(oldName, oh->name, sizeof(oh->name));
+               }
+
+               memset(buffer, 0xFF, dev->nDataBytesPerChunk);
+
+               oh->type = in->variantType;
+               oh->yst_mode = in->yst_mode;
+               oh->shadowsObject = shadows;
+
+#ifdef CONFIG_YAFFS_WINCE
+               oh->win_atime[0] = in->win_atime[0];
+               oh->win_ctime[0] = in->win_ctime[0];
+               oh->win_mtime[0] = in->win_mtime[0];
+               oh->win_atime[1] = in->win_atime[1];
+               oh->win_ctime[1] = in->win_ctime[1];
+               oh->win_mtime[1] = in->win_mtime[1];
+#else
+               oh->yst_uid = in->yst_uid;
+               oh->yst_gid = in->yst_gid;
+               oh->yst_atime = in->yst_atime;
+               oh->yst_mtime = in->yst_mtime;
+               oh->yst_ctime = in->yst_ctime;
+               oh->yst_rdev = in->yst_rdev;
+#endif
+               if (in->parent) {
+                       oh->parentObjectId = in->parent->objectId;
+               } else {
+                       oh->parentObjectId = 0;
+               }
+
+               if (name && *name) {
+                       memset(oh->name, 0, sizeof(oh->name));
+                       yaffs_strncpy(oh->name, name, YAFFS_MAX_NAME_LENGTH);
+               } else if (prevChunkId>=0) {
+                       memcpy(oh->name, oldName, sizeof(oh->name));
+               } else {
+                       memset(oh->name, 0, sizeof(oh->name));
+               }
+
+               oh->isShrink = isShrink;
+
+               switch (in->variantType) {
+               case YAFFS_OBJECT_TYPE_UNKNOWN:
+                       /* Should not happen */
+                       break;
+               case YAFFS_OBJECT_TYPE_FILE:
+                       oh->fileSize =
+                           (oh->parentObjectId == YAFFS_OBJECTID_DELETED
+                            || oh->parentObjectId ==
+                            YAFFS_OBJECTID_UNLINKED) ? 0 : in->variant.
+                           fileVariant.fileSize;
+                       break;
+               case YAFFS_OBJECT_TYPE_HARDLINK:
+                       oh->equivalentObjectId =
+                           in->variant.hardLinkVariant.equivalentObjectId;
+                       break;
+               case YAFFS_OBJECT_TYPE_SPECIAL:
+                       /* Do nothing */
+                       break;
+               case YAFFS_OBJECT_TYPE_DIRECTORY:
+                       /* Do nothing */
+                       break;
+               case YAFFS_OBJECT_TYPE_SYMLINK:
+                       yaffs_strncpy(oh->alias,
+                                     in->variant.symLinkVariant.alias,
+                                     YAFFS_MAX_ALIAS_LENGTH);
+                       oh->alias[YAFFS_MAX_ALIAS_LENGTH] = 0;
+                       break;
+               }
+
+               /* Tags */
+               yaffs_InitialiseTags(&newTags);
+               in->serial++;
+               newTags.chunkId = 0;
+               newTags.objectId = in->objectId;
+               newTags.serialNumber = in->serial;
+
+               /* Add extra info for file header */
+
+               newTags.extraHeaderInfoAvailable = 1;
+               newTags.extraParentObjectId = oh->parentObjectId;
+               newTags.extraFileLength = oh->fileSize;
+               newTags.extraIsShrinkHeader = oh->isShrink;
+               newTags.extraEquivalentObjectId = oh->equivalentObjectId;
+               newTags.extraShadows = (oh->shadowsObject > 0) ? 1 : 0;
+               newTags.extraObjectType = in->variantType;
+
+               yaffs_VerifyObjectHeader(in,oh,&newTags,1);
+
+               /* Create new chunk in NAND */
+               newChunkId =
+                   yaffs_WriteNewChunkWithTagsToNAND(dev, buffer, &newTags,
+                                                     (prevChunkId >= 0) ? 1 : 0);
+
+               if (newChunkId >= 0) {
+
+                       in->chunkId = newChunkId;
+
+                       if (prevChunkId >= 0) {
+                               yaffs_DeleteChunk(dev, prevChunkId, 1,
+                                                 __LINE__);
+                       }
+
+                       if(!yaffs_ObjectHasCachedWriteData(in))
+                               in->dirty = 0;
+
+                       /* If this was a shrink, then mark the block that the chunk lives on */
+                       if (isShrink) {
+                               bi = yaffs_GetBlockInfo(in->myDev,
+                                                       newChunkId /in->myDev-> nChunksPerBlock);
+                               bi->hasShrinkHeader = 1;
+                       }
+
+               }
+
+               retVal = newChunkId;
+
+       }
+
+       if (buffer)
+               yaffs_ReleaseTempBuffer(dev, buffer, __LINE__);
+
+       return retVal;
+}
+
+/*------------------------ Short Operations Cache ----------------------------------------
+ *   In many situations where there is no high level buffering (eg WinCE) a lot of
+ *   reads might be short sequential reads, and a lot of writes may be short
+ *   sequential writes. eg. scanning/writing a jpeg file.
+ *   In these cases, a short read/write cache can provide a huge perfomance benefit
+ *   with dumb-as-a-rock code.
+ *   In Linux, the page cache provides read buffering aand the short op cache provides write
+ *   buffering.
+ *
+ *   There are a limited number (~10) of cache chunks per device so that we don't
+ *   need a very intelligent search.
+ */
+
+static int yaffs_ObjectHasCachedWriteData(yaffs_Object *obj)
+{
+       yaffs_Device *dev = obj->myDev;
+       int i;
+       yaffs_ChunkCache *cache;
+       int nCaches = obj->myDev->nShortOpCaches;
+
+       for(i = 0; i < nCaches; i++){
+               cache = &dev->srCache[i];
+               if (cache->object == obj &&
+                   cache->dirty)
+                       return 1;
+       }
+
+       return 0;
+}
+
+
+static void yaffs_FlushFilesChunkCache(yaffs_Object * obj)
+{
+       yaffs_Device *dev = obj->myDev;
+       int lowest = -99;       /* Stop compiler whining. */
+       int i;
+       yaffs_ChunkCache *cache;
+       int chunkWritten = 0;
+       int nCaches = obj->myDev->nShortOpCaches;
+
+       if (nCaches > 0) {
+               do {
+                       cache = NULL;
+
+                       /* Find the dirty cache for this object with the lowest chunk id. */
+                       for (i = 0; i < nCaches; i++) {
+                               if (dev->srCache[i].object == obj &&
+                                   dev->srCache[i].dirty) {
+                                       if (!cache
+                                           || dev->srCache[i].chunkId <
+                                           lowest) {
+                                               cache = &dev->srCache[i];
+                                               lowest = cache->chunkId;
+                                       }
+                               }
+                       }
+
+                       if (cache && !cache->locked) {
+                               /* Write it out and free it up */
+
+                               chunkWritten =
+                                   yaffs_WriteChunkDataToObject(cache->object,
+                                                                cache->chunkId,
+                                                                cache->data,
+                                                                cache->nBytes,
+                                                                1);
+                               cache->dirty = 0;
+                               cache->object = NULL;
+                       }
+
+               } while (cache && chunkWritten > 0);
+
+               if (cache) {
+                       /* Hoosterman, disk full while writing cache out. */
+                       T(YAFFS_TRACE_ERROR,
+                         (TSTR("yaffs tragedy: no space during cache write" TENDSTR)));
+
+               }
+       }
+
+}
+
+/*yaffs_FlushEntireDeviceCache(dev)
+ *
+ *
+ */
+
+void yaffs_FlushEntireDeviceCache(yaffs_Device *dev)
+{
+       yaffs_Object *obj;
+       int nCaches = dev->nShortOpCaches;
+       int i;
+
+       /* Find a dirty object in the cache and flush it...
+        * until there are no further dirty objects.
+        */
+       do {
+               obj = NULL;
+               for( i = 0; i < nCaches && !obj; i++) {
+                       if (dev->srCache[i].object &&
+                           dev->srCache[i].dirty)
+                               obj = dev->srCache[i].object;
+
+               }
+               if(obj)
+                       yaffs_FlushFilesChunkCache(obj);
+
+       } while(obj);
+
+}
+
+
+/* Grab us a cache chunk for use.
+ * First look for an empty one.
+ * Then look for the least recently used non-dirty one.
+ * Then look for the least recently used dirty one...., flush and look again.
+ */
+static yaffs_ChunkCache *yaffs_GrabChunkCacheWorker(yaffs_Device * dev)
+{
+       int i;
+       int usage;
+       int theOne;
+
+       if (dev->nShortOpCaches > 0) {
+               for (i = 0; i < dev->nShortOpCaches; i++) {
+                       if (!dev->srCache[i].object)
+                               return &dev->srCache[i];
+               }
+
+               return NULL;
+
+               theOne = -1;
+               usage = 0;      /* just to stop the compiler grizzling */
+
+               for (i = 0; i < dev->nShortOpCaches; i++) {
+                       if (!dev->srCache[i].dirty &&
+                           ((dev->srCache[i].lastUse < usage && theOne >= 0) ||
+                            theOne < 0)) {
+                               usage = dev->srCache[i].lastUse;
+                               theOne = i;
+                       }
+               }
+
+
+               return theOne >= 0 ? &dev->srCache[theOne] : NULL;
+       } else {
+               return NULL;
+       }
+
+}
+
+static yaffs_ChunkCache *yaffs_GrabChunkCache(yaffs_Device * dev)
+{
+       yaffs_ChunkCache *cache;
+       yaffs_Object *theObj;
+       int usage;
+       int i;
+       int pushout;
+
+       if (dev->nShortOpCaches > 0) {
+               /* Try find a non-dirty one... */
+
+               cache = yaffs_GrabChunkCacheWorker(dev);
+
+               if (!cache) {
+                       /* They were all dirty, find the last recently used object and flush
+                        * its cache, then  find again.
+                        * NB what's here is not very accurate, we actually flush the object
+                        * the last recently used page.
+                        */
+
+                       /* With locking we can't assume we can use entry zero */
+
+                       theObj = NULL;
+                       usage = -1;
+                       cache = NULL;
+                       pushout = -1;
+
+                       for (i = 0; i < dev->nShortOpCaches; i++) {
+                               if (dev->srCache[i].object &&
+                                   !dev->srCache[i].locked &&
+                                   (dev->srCache[i].lastUse < usage || !cache))
+                               {
+                                       usage = dev->srCache[i].lastUse;
+                                       theObj = dev->srCache[i].object;
+                                       cache = &dev->srCache[i];
+                                       pushout = i;
+                               }
+                       }
+
+                       if (!cache || cache->dirty) {
+                               /* Flush and try again */
+                               yaffs_FlushFilesChunkCache(theObj);
+                               cache = yaffs_GrabChunkCacheWorker(dev);
+                       }
+
+               }
+               return cache;
+       } else
+               return NULL;
+
+}
+
+/* Find a cached chunk */
+static yaffs_ChunkCache *yaffs_FindChunkCache(const yaffs_Object * obj,
+                                             int chunkId)
+{
+       yaffs_Device *dev = obj->myDev;
+       int i;
+       if (dev->nShortOpCaches > 0) {
+               for (i = 0; i < dev->nShortOpCaches; i++) {
+                       if (dev->srCache[i].object == obj &&
+                           dev->srCache[i].chunkId == chunkId) {
+                               dev->cacheHits++;
+
+                               return &dev->srCache[i];
+                       }
+               }
+       }
+       return NULL;
+}
+
+/* Mark the chunk for the least recently used algorithym */
+static void yaffs_UseChunkCache(yaffs_Device * dev, yaffs_ChunkCache * cache,
+                               int isAWrite)
+{
+
+       if (dev->nShortOpCaches > 0) {
+               if (dev->srLastUse < 0 || dev->srLastUse > 100000000) {
+                       /* Reset the cache usages */
+                       int i;
+                       for (i = 1; i < dev->nShortOpCaches; i++) {
+                               dev->srCache[i].lastUse = 0;
+                       }
+                       dev->srLastUse = 0;
+               }
+
+               dev->srLastUse++;
+
+               cache->lastUse = dev->srLastUse;
+
+               if (isAWrite) {
+                       cache->dirty = 1;
+               }
+       }
+}
+
+/* Invalidate a single cache page.
+ * Do this when a whole page gets written,
+ * ie the short cache for this page is no longer valid.
+ */
+static void yaffs_InvalidateChunkCache(yaffs_Object * object, int chunkId)
+{
+       if (object->myDev->nShortOpCaches > 0) {
+               yaffs_ChunkCache *cache = yaffs_FindChunkCache(object, chunkId);
+
+               if (cache) {
+                       cache->object = NULL;
+               }
+       }
+}
+
+/* Invalidate all the cache pages associated with this object
+ * Do this whenever ther file is deleted or resized.
+ */
+static void yaffs_InvalidateWholeChunkCache(yaffs_Object * in)
+{
+       int i;
+       yaffs_Device *dev = in->myDev;
+
+       if (dev->nShortOpCaches > 0) {
+               /* Invalidate it. */
+               for (i = 0; i < dev->nShortOpCaches; i++) {
+                       if (dev->srCache[i].object == in) {
+                               dev->srCache[i].object = NULL;
+                       }
+               }
+       }
+}
+
+/*--------------------- Checkpointing --------------------*/
+
+
+static int yaffs_WriteCheckpointValidityMarker(yaffs_Device *dev,int head)
+{
+       yaffs_CheckpointValidity cp;
+
+       memset(&cp,0,sizeof(cp));
+
+       cp.structType = sizeof(cp);
+       cp.magic = YAFFS_MAGIC;
+       cp.version = YAFFS_CHECKPOINT_VERSION;
+       cp.head = (head) ? 1 : 0;
+
+       return (yaffs_CheckpointWrite(dev,&cp,sizeof(cp)) == sizeof(cp))?
+               1 : 0;
+}
+
+static int yaffs_ReadCheckpointValidityMarker(yaffs_Device *dev, int head)
+{
+       yaffs_CheckpointValidity cp;
+       int ok;
+
+       ok = (yaffs_CheckpointRead(dev,&cp,sizeof(cp)) == sizeof(cp));
+
+       if(ok)
+               ok = (cp.structType == sizeof(cp)) &&
+                    (cp.magic == YAFFS_MAGIC) &&
+                    (cp.version == YAFFS_CHECKPOINT_VERSION) &&
+                    (cp.head == ((head) ? 1 : 0));
+       return ok ? 1 : 0;
+}
+
+static void yaffs_DeviceToCheckpointDevice(yaffs_CheckpointDevice *cp,
+                                          yaffs_Device *dev)
+{
+       cp->nErasedBlocks = dev->nErasedBlocks;
+       cp->allocationBlock = dev->allocationBlock;
+       cp->allocationPage = dev->allocationPage;
+       cp->nFreeChunks = dev->nFreeChunks;
+
+       cp->nDeletedFiles = dev->nDeletedFiles;
+       cp->nUnlinkedFiles = dev->nUnlinkedFiles;
+       cp->nBackgroundDeletions = dev->nBackgroundDeletions;
+       cp->sequenceNumber = dev->sequenceNumber;
+       cp->oldestDirtySequence = dev->oldestDirtySequence;
+
+}
+
+static void yaffs_CheckpointDeviceToDevice(yaffs_Device *dev,
+                                          yaffs_CheckpointDevice *cp)
+{
+       dev->nErasedBlocks = cp->nErasedBlocks;
+       dev->allocationBlock = cp->allocationBlock;
+       dev->allocationPage = cp->allocationPage;
+       dev->nFreeChunks = cp->nFreeChunks;
+
+       dev->nDeletedFiles = cp->nDeletedFiles;
+       dev->nUnlinkedFiles = cp->nUnlinkedFiles;
+       dev->nBackgroundDeletions = cp->nBackgroundDeletions;
+       dev->sequenceNumber = cp->sequenceNumber;
+       dev->oldestDirtySequence = cp->oldestDirtySequence;
+}
+
+
+static int yaffs_WriteCheckpointDevice(yaffs_Device *dev)
+{
+       yaffs_CheckpointDevice cp;
+       __u32 nBytes;
+       __u32 nBlocks = (dev->internalEndBlock - dev->internalStartBlock + 1);
+
+       int ok;
+
+       /* Write device runtime values*/
+       yaffs_DeviceToCheckpointDevice(&cp,dev);
+       cp.structType = sizeof(cp);
+
+       ok = (yaffs_CheckpointWrite(dev,&cp,sizeof(cp)) == sizeof(cp));
+
+       /* Write block info */
+       if(ok) {
+               nBytes = nBlocks * sizeof(yaffs_BlockInfo);
+               ok = (yaffs_CheckpointWrite(dev,dev->blockInfo,nBytes) == nBytes);
+       }
+
+       /* Write chunk bits */
+       if(ok) {
+               nBytes = nBlocks * dev->chunkBitmapStride;
+               ok = (yaffs_CheckpointWrite(dev,dev->chunkBits,nBytes) == nBytes);
+       }
+       return   ok ? 1 : 0;
+
+}
+
+static int yaffs_ReadCheckpointDevice(yaffs_Device *dev)
+{
+       yaffs_CheckpointDevice cp;
+       __u32 nBytes;
+       __u32 nBlocks = (dev->internalEndBlock - dev->internalStartBlock + 1);
+
+       int ok;
+
+       ok = (yaffs_CheckpointRead(dev,&cp,sizeof(cp)) == sizeof(cp));
+       if(!ok)
+               return 0;
+
+       if(cp.structType != sizeof(cp))
+               return 0;
+
+
+       yaffs_CheckpointDeviceToDevice(dev,&cp);
+
+       nBytes = nBlocks * sizeof(yaffs_BlockInfo);
+
+       ok = (yaffs_CheckpointRead(dev,dev->blockInfo,nBytes) == nBytes);
+
+       if(!ok)
+               return 0;
+       nBytes = nBlocks * dev->chunkBitmapStride;
+
+       ok = (yaffs_CheckpointRead(dev,dev->chunkBits,nBytes) == nBytes);
+
+       return ok ? 1 : 0;
+}
+
+static void yaffs_ObjectToCheckpointObject(yaffs_CheckpointObject *cp,
+                                          yaffs_Object *obj)
+{
+
+       cp->objectId = obj->objectId;
+       cp->parentId = (obj->parent) ? obj->parent->objectId : 0;
+       cp->chunkId = obj->chunkId;
+       cp->variantType = obj->variantType;
+       cp->deleted = obj->deleted;
+       cp->softDeleted = obj->softDeleted;
+       cp->unlinked = obj->unlinked;
+       cp->fake = obj->fake;
+       cp->renameAllowed = obj->renameAllowed;
+       cp->unlinkAllowed = obj->unlinkAllowed;
+       cp->serial = obj->serial;
+       cp->nDataChunks = obj->nDataChunks;
+
+       if(obj->variantType == YAFFS_OBJECT_TYPE_FILE)
+               cp->fileSizeOrEquivalentObjectId = obj->variant.fileVariant.fileSize;
+       else if(obj->variantType == YAFFS_OBJECT_TYPE_HARDLINK)
+               cp->fileSizeOrEquivalentObjectId = obj->variant.hardLinkVariant.equivalentObjectId;
+}
+
+static void yaffs_CheckpointObjectToObject( yaffs_Object *obj,yaffs_CheckpointObject *cp)
+{
+
+       yaffs_Object *parent;
+
+       obj->objectId = cp->objectId;
+
+       if(cp->parentId)
+               parent = yaffs_FindOrCreateObjectByNumber(
+                                       obj->myDev,
+                                       cp->parentId,
+                                       YAFFS_OBJECT_TYPE_DIRECTORY);
+       else
+               parent = NULL;
+
+       if(parent)
+               yaffs_AddObjectToDirectory(parent, obj);
+
+       obj->chunkId = cp->chunkId;
+       obj->variantType = cp->variantType;
+       obj->deleted = cp->deleted;
+       obj->softDeleted = cp->softDeleted;
+       obj->unlinked = cp->unlinked;
+       obj->fake = cp->fake;
+       obj->renameAllowed = cp->renameAllowed;
+       obj->unlinkAllowed = cp->unlinkAllowed;
+       obj->serial = cp->serial;
+       obj->nDataChunks = cp->nDataChunks;
+
+       if(obj->variantType == YAFFS_OBJECT_TYPE_FILE)
+               obj->variant.fileVariant.fileSize = cp->fileSizeOrEquivalentObjectId;
+       else if(obj->variantType == YAFFS_OBJECT_TYPE_HARDLINK)
+               obj->variant.hardLinkVariant.equivalentObjectId = cp->fileSizeOrEquivalentObjectId;
+
+       if(obj->objectId >= YAFFS_NOBJECT_BUCKETS)
+               obj->lazyLoaded = 1;
+}
+
+
+
+static int yaffs_CheckpointTnodeWorker(yaffs_Object * in, yaffs_Tnode * tn,
+                                       __u32 level, int chunkOffset)
+{
+       int i;
+       yaffs_Device *dev = in->myDev;
+       int ok = 1;
+       int nTnodeBytes = (dev->tnodeWidth * YAFFS_NTNODES_LEVEL0)/8;
+
+       if (tn) {
+               if (level > 0) {
+
+                       for (i = 0; i < YAFFS_NTNODES_INTERNAL && ok; i++){
+                               if (tn->internal[i]) {
+                                       ok = yaffs_CheckpointTnodeWorker(in,
+                                                       tn->internal[i],
+                                                       level - 1,
+                                                       (chunkOffset<<YAFFS_TNODES_INTERNAL_BITS) + i);
+                               }
+                       }
+               } else if (level == 0) {
+                       __u32 baseOffset = chunkOffset <<  YAFFS_TNODES_LEVEL0_BITS;
+                       /* printf("write tnode at %d\n",baseOffset); */
+                       ok = (yaffs_CheckpointWrite(dev,&baseOffset,sizeof(baseOffset)) == sizeof(baseOffset));
+                       if(ok)
+                               ok = (yaffs_CheckpointWrite(dev,tn,nTnodeBytes) == nTnodeBytes);
+               }
+       }
+
+       return ok;
+
+}
+
+static int yaffs_WriteCheckpointTnodes(yaffs_Object *obj)
+{
+       __u32 endMarker = ~0;
+       int ok = 1;
+
+       if(obj->variantType == YAFFS_OBJECT_TYPE_FILE){
+               ok = yaffs_CheckpointTnodeWorker(obj,
+                                           obj->variant.fileVariant.top,
+                                           obj->variant.fileVariant.topLevel,
+                                           0);
+               if(ok)
+                       ok = (yaffs_CheckpointWrite(obj->myDev,&endMarker,sizeof(endMarker)) ==
+                               sizeof(endMarker));
+       }
+
+       return ok ? 1 : 0;
+}
+
+static int yaffs_ReadCheckpointTnodes(yaffs_Object *obj)
+{
+       __u32 baseChunk;
+       int ok = 1;
+       yaffs_Device *dev = obj->myDev;
+       yaffs_FileStructure *fileStructPtr = &obj->variant.fileVariant;
+       yaffs_Tnode *tn;
+       int nread = 0;
+
+       ok = (yaffs_CheckpointRead(dev,&baseChunk,sizeof(baseChunk)) == sizeof(baseChunk));
+
+       while(ok && (~baseChunk)){
+               nread++;
+               /* Read level 0 tnode */
+
+
+               /* printf("read  tnode at %d\n",baseChunk); */
+               tn = yaffs_GetTnodeRaw(dev);
+               if(tn)
+                       ok = (yaffs_CheckpointRead(dev,tn,(dev->tnodeWidth * YAFFS_NTNODES_LEVEL0)/8) ==
+                             (dev->tnodeWidth * YAFFS_NTNODES_LEVEL0)/8);
+               else
+                       ok = 0;
+
+               if(tn && ok){
+                       ok = yaffs_AddOrFindLevel0Tnode(dev,
+                                                       fileStructPtr,
+                                                       baseChunk,
+                                                       tn) ? 1 : 0;
+
+               }
+
+               if(ok)
+                       ok = (yaffs_CheckpointRead(dev,&baseChunk,sizeof(baseChunk)) == sizeof(baseChunk));
+
+       }
+
+       T(YAFFS_TRACE_CHECKPOINT,(
+               TSTR("Checkpoint read tnodes %d records, last %d. ok %d" TENDSTR),
+               nread,baseChunk,ok));
+
+       return ok ? 1 : 0;
+}
+
+
+static int yaffs_WriteCheckpointObjects(yaffs_Device *dev)
+{
+       yaffs_Object *obj;
+       yaffs_CheckpointObject cp;
+       int i;
+       int ok = 1;
+       struct list_head *lh;
+
+
+       /* Iterate through the objects in each hash entry,
+        * dumping them to the checkpointing stream.
+        */
+
+        for(i = 0; ok &&  i <  YAFFS_NOBJECT_BUCKETS; i++){
+               list_for_each(lh, &dev->objectBucket[i].list) {
+                       if (lh) {
+                               obj = list_entry(lh, yaffs_Object, hashLink);
+                               if (!obj->deferedFree) {
+                                       yaffs_ObjectToCheckpointObject(&cp,obj);
+                                       cp.structType = sizeof(cp);
+
+                                       T(YAFFS_TRACE_CHECKPOINT,(
+                                               TSTR("Checkpoint write object %d parent %d type %d chunk %d obj addr %x" TENDSTR),
+                                               cp.objectId,cp.parentId,cp.variantType,cp.chunkId,(unsigned) obj));
+
+                                       ok = (yaffs_CheckpointWrite(dev,&cp,sizeof(cp)) == sizeof(cp));
+
+                                       if(ok && obj->variantType == YAFFS_OBJECT_TYPE_FILE){
+                                               ok = yaffs_WriteCheckpointTnodes(obj);
+                                       }
+                               }
+                       }
+               }
+        }
+
+        /* Dump end of list */
+       memset(&cp,0xFF,sizeof(yaffs_CheckpointObject));
+       cp.structType = sizeof(cp);
+
+       if(ok)
+               ok = (yaffs_CheckpointWrite(dev,&cp,sizeof(cp)) == sizeof(cp));
+
+       return ok ? 1 : 0;
+}
+
+static int yaffs_ReadCheckpointObjects(yaffs_Device *dev)
+{
+       yaffs_Object *obj;
+       yaffs_CheckpointObject cp;
+       int ok = 1;
+       int done = 0;
+       yaffs_Object *hardList = NULL;
+
+       while(ok && !done) {
+               ok = (yaffs_CheckpointRead(dev,&cp,sizeof(cp)) == sizeof(cp));
+               if(cp.structType != sizeof(cp)) {
+                       T(YAFFS_TRACE_CHECKPOINT,(TSTR("struct size %d instead of %d ok %d"TENDSTR),
+                               cp.structType,sizeof(cp),ok));
+                       ok = 0;
+               }
+
+               T(YAFFS_TRACE_CHECKPOINT,(TSTR("Checkpoint read object %d parent %d type %d chunk %d " TENDSTR),
+                       cp.objectId,cp.parentId,cp.variantType,cp.chunkId));
+
+               if(ok && cp.objectId == ~0)
+                       done = 1;
+               else if(ok){
+                       obj = yaffs_FindOrCreateObjectByNumber(dev,cp.objectId, cp.variantType);
+                       if(obj) {
+                               yaffs_CheckpointObjectToObject(obj,&cp);
+                               if(obj->variantType == YAFFS_OBJECT_TYPE_FILE) {
+                                       ok = yaffs_ReadCheckpointTnodes(obj);
+                               } else if(obj->variantType == YAFFS_OBJECT_TYPE_HARDLINK) {
+                                       obj->hardLinks.next =
+                                                   (struct list_head *)
+                                                   hardList;
+                                       hardList = obj;
+                               }
+
+                       }
+               }
+       }
+
+       if(ok)
+               yaffs_HardlinkFixup(dev,hardList);
+
+       return ok ? 1 : 0;
+}
+
+static int yaffs_WriteCheckpointSum(yaffs_Device *dev)
+{
+       __u32 checkpointSum;
+       int ok;
+
+       yaffs_GetCheckpointSum(dev,&checkpointSum);
+
+       ok = (yaffs_CheckpointWrite(dev,&checkpointSum,sizeof(checkpointSum)) == sizeof(checkpointSum));
+
+       if(!ok)
+               return 0;
+
+       return 1;
+}
+
+static int yaffs_ReadCheckpointSum(yaffs_Device *dev)
+{
+       __u32 checkpointSum0;
+       __u32 checkpointSum1;
+       int ok;
+
+       yaffs_GetCheckpointSum(dev,&checkpointSum0);
+
+       ok = (yaffs_CheckpointRead(dev,&checkpointSum1,sizeof(checkpointSum1)) == sizeof(checkpointSum1));
+
+       if(!ok)
+               return 0;
+
+       if(checkpointSum0 != checkpointSum1)
+               return 0;
+
+       return 1;
+}
+
+
+static int yaffs_WriteCheckpointData(yaffs_Device *dev)
+{
+
+       int ok = 1;
+
+       if(dev->skipCheckpointWrite || !dev->isYaffs2){
+               T(YAFFS_TRACE_CHECKPOINT,(TSTR("skipping checkpoint write" TENDSTR)));
+               ok = 0;
+       }
+
+       if(ok)
+               ok = yaffs_CheckpointOpen(dev,1);
+
+       if(ok){
+               T(YAFFS_TRACE_CHECKPOINT,(TSTR("write checkpoint validity" TENDSTR)));
+               ok = yaffs_WriteCheckpointValidityMarker(dev,1);
+       }
+       if(ok){
+               T(YAFFS_TRACE_CHECKPOINT,(TSTR("write checkpoint device" TENDSTR)));
+               ok = yaffs_WriteCheckpointDevice(dev);
+       }
+       if(ok){
+               T(YAFFS_TRACE_CHECKPOINT,(TSTR("write checkpoint objects" TENDSTR)));
+               ok = yaffs_WriteCheckpointObjects(dev);
+       }
+       if(ok){
+               T(YAFFS_TRACE_CHECKPOINT,(TSTR("write checkpoint validity" TENDSTR)));
+               ok = yaffs_WriteCheckpointValidityMarker(dev,0);
+       }
+
+       if(ok){
+               ok = yaffs_WriteCheckpointSum(dev);
+       }
+
+
+       if(!yaffs_CheckpointClose(dev))
+                ok = 0;
+
+       if(ok)
+               dev->isCheckpointed = 1;
+        else
+               dev->isCheckpointed = 0;
+
+       return dev->isCheckpointed;
+}
+
+static int yaffs_ReadCheckpointData(yaffs_Device *dev)
+{
+       int ok = 1;
+
+       if(dev->skipCheckpointRead || !dev->isYaffs2){
+               T(YAFFS_TRACE_CHECKPOINT,(TSTR("skipping checkpoint read" TENDSTR)));
+               ok = 0;
+       }
+
+       if(ok)
+               ok = yaffs_CheckpointOpen(dev,0); /* open for read */
+
+       if(ok){
+               T(YAFFS_TRACE_CHECKPOINT,(TSTR("read checkpoint validity" TENDSTR)));
+               ok = yaffs_ReadCheckpointValidityMarker(dev,1);
+       }
+       if(ok){
+               T(YAFFS_TRACE_CHECKPOINT,(TSTR("read checkpoint device" TENDSTR)));
+               ok = yaffs_ReadCheckpointDevice(dev);
+       }
+       if(ok){
+               T(YAFFS_TRACE_CHECKPOINT,(TSTR("read checkpoint objects" TENDSTR)));
+               ok = yaffs_ReadCheckpointObjects(dev);
+       }
+       if(ok){
+               T(YAFFS_TRACE_CHECKPOINT,(TSTR("read checkpoint validity" TENDSTR)));
+               ok = yaffs_ReadCheckpointValidityMarker(dev,0);
+       }
+
+       if(ok){
+               ok = yaffs_ReadCheckpointSum(dev);
+               T(YAFFS_TRACE_CHECKPOINT,(TSTR("read checkpoint checksum %d" TENDSTR),ok));
+       }
+
+       if(!yaffs_CheckpointClose(dev))
+               ok = 0;
+
+       if(ok)
+               dev->isCheckpointed = 1;
+        else
+               dev->isCheckpointed = 0;
+
+       return ok ? 1 : 0;
+
+}
+
+static void yaffs_InvalidateCheckpoint(yaffs_Device *dev)
+{
+       if(dev->isCheckpointed ||
+          dev->blocksInCheckpoint > 0){
+               dev->isCheckpointed = 0;
+               yaffs_CheckpointInvalidateStream(dev);
+               if(dev->superBlock && dev->markSuperBlockDirty)
+                       dev->markSuperBlockDirty(dev->superBlock);
+       }
+}
+
+
+int yaffs_CheckpointSave(yaffs_Device *dev)
+{
+
+       T(YAFFS_TRACE_CHECKPOINT,(TSTR("save entry: isCheckpointed %d"TENDSTR),dev->isCheckpointed));
+
+       yaffs_VerifyObjects(dev);
+       yaffs_VerifyBlocks(dev);
+       yaffs_VerifyFreeChunks(dev);
+
+       if(!dev->isCheckpointed) {
+               yaffs_InvalidateCheckpoint(dev);
+               yaffs_WriteCheckpointData(dev);
+       }
+
+       T(YAFFS_TRACE_ALWAYS,(TSTR("save exit: isCheckpointed %d"TENDSTR),dev->isCheckpointed));
+
+       return dev->isCheckpointed;
+}
+
+int yaffs_CheckpointRestore(yaffs_Device *dev)
+{
+       int retval;
+       T(YAFFS_TRACE_CHECKPOINT,(TSTR("restore entry: isCheckpointed %d"TENDSTR),dev->isCheckpointed));
+
+       retval = yaffs_ReadCheckpointData(dev);
+
+       if(dev->isCheckpointed){
+               yaffs_VerifyObjects(dev);
+               yaffs_VerifyBlocks(dev);
+               yaffs_VerifyFreeChunks(dev);
+       }
+
+       T(YAFFS_TRACE_CHECKPOINT,(TSTR("restore exit: isCheckpointed %d"TENDSTR),dev->isCheckpointed));
+
+       return retval;
+}
+
+/*--------------------- File read/write ------------------------
+ * Read and write have very similar structures.
+ * In general the read/write has three parts to it
+ * An incomplete chunk to start with (if the read/write is not chunk-aligned)
+ * Some complete chunks
+ * An incomplete chunk to end off with
+ *
+ * Curve-balls: the first chunk might also be the last chunk.
+ */
+
+int yaffs_ReadDataFromFile(yaffs_Object * in, __u8 * buffer, loff_t offset,
+                          int nBytes)
+{
+
+       int chunk;
+       int start;
+       int nToCopy;
+       int n = nBytes;
+       int nDone = 0;
+       yaffs_ChunkCache *cache;
+
+       yaffs_Device *dev;
+
+       dev = in->myDev;
+
+       while (n > 0) {
+               //chunk = offset / dev->nDataBytesPerChunk + 1;
+               //start = offset % dev->nDataBytesPerChunk;
+               yaffs_AddrToChunk(dev,offset,&chunk,&start);
+               chunk++;
+
+               /* OK now check for the curveball where the start and end are in
+                * the same chunk.
+                */
+               if ((start + n) < dev->nDataBytesPerChunk) {
+                       nToCopy = n;
+               } else {
+                       nToCopy = dev->nDataBytesPerChunk - start;
+               }
+
+               cache = yaffs_FindChunkCache(in, chunk);
+
+               /* If the chunk is already in the cache or it is less than a whole chunk
+                * then use the cache (if there is caching)
+                * else bypass the cache.
+                */
+               if (cache || nToCopy != dev->nDataBytesPerChunk) {
+                       if (dev->nShortOpCaches > 0) {
+
+                               /* If we can't find the data in the cache, then load it up. */
+
+                               if (!cache) {
+                                       cache = yaffs_GrabChunkCache(in->myDev);
+                                       cache->object = in;
+                                       cache->chunkId = chunk;
+                                       cache->dirty = 0;
+                                       cache->locked = 0;
+                                       yaffs_ReadChunkDataFromObject(in, chunk,
+                                                                     cache->
+                                                                     data);
+                                       cache->nBytes = 0;
+                               }
+
+                               yaffs_UseChunkCache(dev, cache, 0);
+
+                               cache->locked = 1;
+
+#ifdef CONFIG_YAFFS_WINCE
+                               yfsd_UnlockYAFFS(TRUE);
+#endif
+                               memcpy(buffer, &cache->data[start], nToCopy);
+
+#ifdef CONFIG_YAFFS_WINCE
+                               yfsd_LockYAFFS(TRUE);
+#endif
+                               cache->locked = 0;
+                       } else {
+                               /* Read into the local buffer then copy..*/
+
+                               __u8 *localBuffer =
+                                   yaffs_GetTempBuffer(dev, __LINE__);
+                               yaffs_ReadChunkDataFromObject(in, chunk,
+                                                             localBuffer);
+#ifdef CONFIG_YAFFS_WINCE
+                               yfsd_UnlockYAFFS(TRUE);
+#endif
+                               memcpy(buffer, &localBuffer[start], nToCopy);
+
+#ifdef CONFIG_YAFFS_WINCE
+                               yfsd_LockYAFFS(TRUE);
+#endif
+                               yaffs_ReleaseTempBuffer(dev, localBuffer,
+                                                       __LINE__);
+                       }
+
+               } else {
+#ifdef CONFIG_YAFFS_WINCE
+                       __u8 *localBuffer = yaffs_GetTempBuffer(dev, __LINE__);
+
+                       /* Under WinCE can't do direct transfer. Need to use a local buffer.
+                        * This is because we otherwise screw up WinCE's memory mapper
+                        */
+                       yaffs_ReadChunkDataFromObject(in, chunk, localBuffer);
+
+#ifdef CONFIG_YAFFS_WINCE
+                       yfsd_UnlockYAFFS(TRUE);
+#endif
+                       memcpy(buffer, localBuffer, dev->nDataBytesPerChunk);
+
+#ifdef CONFIG_YAFFS_WINCE
+                       yfsd_LockYAFFS(TRUE);
+                       yaffs_ReleaseTempBuffer(dev, localBuffer, __LINE__);
+#endif
+
+#else
+                       /* A full chunk. Read directly into the supplied buffer. */
+                       yaffs_ReadChunkDataFromObject(in, chunk, buffer);
+#endif
+               }
+
+               n -= nToCopy;
+               offset += nToCopy;
+               buffer += nToCopy;
+               nDone += nToCopy;
+
+       }
+
+       return nDone;
+}
+
+int yaffs_WriteDataToFile(yaffs_Object * in, const __u8 * buffer, loff_t offset,
+                         int nBytes, int writeThrough)
+{
+
+       int chunk;
+       int start;
+       int nToCopy;
+       int n = nBytes;
+       int nDone = 0;
+       int nToWriteBack;
+       int startOfWrite = offset;
+       int chunkWritten = 0;
+       int nBytesRead;
+
+       yaffs_Device *dev;
+
+       dev = in->myDev;
+
+       while (n > 0 && chunkWritten >= 0) {
+               //chunk = offset / dev->nDataBytesPerChunk + 1;
+               //start = offset % dev->nDataBytesPerChunk;
+               yaffs_AddrToChunk(dev,offset,&chunk,&start);
+               chunk++;
+
+               /* OK now check for the curveball where the start and end are in
+                * the same chunk.
+                */
+
+               if ((start + n) < dev->nDataBytesPerChunk) {
+                       nToCopy = n;
+
+                       /* Now folks, to calculate how many bytes to write back....
+                        * If we're overwriting and not writing to then end of file then
+                        * we need to write back as much as was there before.
+                        */
+
+                       nBytesRead =
+                           in->variant.fileVariant.fileSize -
+                           ((chunk - 1) * dev->nDataBytesPerChunk);
+
+                       if (nBytesRead > dev->nDataBytesPerChunk) {
+                               nBytesRead = dev->nDataBytesPerChunk;
+                       }
+
+                       nToWriteBack =
+                           (nBytesRead >
+                            (start + n)) ? nBytesRead : (start + n);
+
+               } else {
+                       nToCopy = dev->nDataBytesPerChunk - start;
+                       nToWriteBack = dev->nDataBytesPerChunk;
+               }
+
+               if (nToCopy != dev->nDataBytesPerChunk) {
+                       /* An incomplete start or end chunk (or maybe both start and end chunk) */
+                       if (dev->nShortOpCaches > 0) {
+                               yaffs_ChunkCache *cache;
+                               /* If we can't find the data in the cache, then load the cache */
+                               cache = yaffs_FindChunkCache(in, chunk);
+
+                               if (!cache
+                                   && yaffs_CheckSpaceForAllocation(in->
+                                                                    myDev)) {
+                                       cache = yaffs_GrabChunkCache(in->myDev);
+                                       cache->object = in;
+                                       cache->chunkId = chunk;
+                                       cache->dirty = 0;
+                                       cache->locked = 0;
+                                       yaffs_ReadChunkDataFromObject(in, chunk,
+                                                                     cache->
+                                                                     data);
+                               }
+                               else if(cache &&
+                                       !cache->dirty &&
+                                       !yaffs_CheckSpaceForAllocation(in->myDev)){
+                                       /* Drop the cache if it was a read cache item and
+                                        * no space check has been made for it.
+                                        */
+                                        cache = NULL;
+                               }
+
+                               if (cache) {
+                                       yaffs_UseChunkCache(dev, cache, 1);
+                                       cache->locked = 1;
+#ifdef CONFIG_YAFFS_WINCE
+                                       yfsd_UnlockYAFFS(TRUE);
+#endif
+
+                                       memcpy(&cache->data[start], buffer,
+                                              nToCopy);
+
+#ifdef CONFIG_YAFFS_WINCE
+                                       yfsd_LockYAFFS(TRUE);
+#endif
+                                       cache->locked = 0;
+                                       cache->nBytes = nToWriteBack;
+
+                                       if (writeThrough) {
+                                               chunkWritten =
+                                                   yaffs_WriteChunkDataToObject
+                                                   (cache->object,
+                                                    cache->chunkId,
+                                                    cache->data, cache->nBytes,
+                                                    1);
+                                               cache->dirty = 0;
+                                       }
+
+                               } else {
+                                       chunkWritten = -1;      /* fail the write */
+                               }
+                       } else {
+                               /* An incomplete start or end chunk (or maybe both start and end chunk)
+                                * Read into the local buffer then copy, then copy over and write back.
+                                */
+
+                               __u8 *localBuffer =
+                                   yaffs_GetTempBuffer(dev, __LINE__);
+
+                               yaffs_ReadChunkDataFromObject(in, chunk,
+                                                             localBuffer);
+
+#ifdef CONFIG_YAFFS_WINCE
+                               yfsd_UnlockYAFFS(TRUE);
+#endif
+
+                               memcpy(&localBuffer[start], buffer, nToCopy);
+
+#ifdef CONFIG_YAFFS_WINCE
+                               yfsd_LockYAFFS(TRUE);
+#endif
+                               chunkWritten =
+                                   yaffs_WriteChunkDataToObject(in, chunk,
+                                                                localBuffer,
+                                                                nToWriteBack,
+                                                                0);
+
+                               yaffs_ReleaseTempBuffer(dev, localBuffer,
+                                                       __LINE__);
+
+                       }
+
+               } else {
+
+#ifdef CONFIG_YAFFS_WINCE
+                       /* Under WinCE can't do direct transfer. Need to use a local buffer.
+                        * This is because we otherwise screw up WinCE's memory mapper
+                        */
+                       __u8 *localBuffer = yaffs_GetTempBuffer(dev, __LINE__);
+#ifdef CONFIG_YAFFS_WINCE
+                       yfsd_UnlockYAFFS(TRUE);
+#endif
+                       memcpy(localBuffer, buffer, dev->nDataBytesPerChunk);
+#ifdef CONFIG_YAFFS_WINCE
+                       yfsd_LockYAFFS(TRUE);
+#endif
+                       chunkWritten =
+                           yaffs_WriteChunkDataToObject(in, chunk, localBuffer,
+                                                        dev->nDataBytesPerChunk,
+                                                        0);
+                       yaffs_ReleaseTempBuffer(dev, localBuffer, __LINE__);
+#else
+                       /* A full chunk. Write directly from the supplied buffer. */
+                       chunkWritten =
+                           yaffs_WriteChunkDataToObject(in, chunk, buffer,
+                                                        dev->nDataBytesPerChunk,
+                                                        0);
+#endif
+                       /* Since we've overwritten the cached data, we better invalidate it. */
+                       yaffs_InvalidateChunkCache(in, chunk);
+               }
+
+               if (chunkWritten >= 0) {
+                       n -= nToCopy;
+                       offset += nToCopy;
+                       buffer += nToCopy;
+                       nDone += nToCopy;
+               }
+
+       }
+
+       /* Update file object */
+
+       if ((startOfWrite + nDone) > in->variant.fileVariant.fileSize) {
+               in->variant.fileVariant.fileSize = (startOfWrite + nDone);
+       }
+
+       in->dirty = 1;
+
+       return nDone;
+}
+
+
+/* ---------------------- File resizing stuff ------------------ */
+
+static void yaffs_PruneResizedChunks(yaffs_Object * in, int newSize)
+{
+
+       yaffs_Device *dev = in->myDev;
+       int oldFileSize = in->variant.fileVariant.fileSize;
+
+       int lastDel = 1 + (oldFileSize - 1) / dev->nDataBytesPerChunk;
+
+       int startDel = 1 + (newSize + dev->nDataBytesPerChunk - 1) /
+           dev->nDataBytesPerChunk;
+       int i;
+       int chunkId;
+
+       /* Delete backwards so that we don't end up with holes if
+        * power is lost part-way through the operation.
+        */
+       for (i = lastDel; i >= startDel; i--) {
+               /* NB this could be optimised somewhat,
+                * eg. could retrieve the tags and write them without
+                * using yaffs_DeleteChunk
+                */
+
+               chunkId = yaffs_FindAndDeleteChunkInFile(in, i, NULL);
+               if (chunkId > 0) {
+                       if (chunkId <
+                           (dev->internalStartBlock * dev->nChunksPerBlock)
+                           || chunkId >=
+                           ((dev->internalEndBlock +
+                             1) * dev->nChunksPerBlock)) {
+                               T(YAFFS_TRACE_ALWAYS,
+                                 (TSTR("Found daft chunkId %d for %d" TENDSTR),
+                                  chunkId, i));
+                       } else {
+                               in->nDataChunks--;
+                               yaffs_DeleteChunk(dev, chunkId, 1, __LINE__);
+                       }
+               }
+       }
+
+}
+
+int yaffs_ResizeFile(yaffs_Object * in, loff_t newSize)
+{
+
+       int oldFileSize = in->variant.fileVariant.fileSize;
+       int newSizeOfPartialChunk;
+       int newFullChunks;
+
+       yaffs_Device *dev = in->myDev;
+
+       yaffs_AddrToChunk(dev, newSize, &newFullChunks, &newSizeOfPartialChunk);
+
+       yaffs_FlushFilesChunkCache(in);
+       yaffs_InvalidateWholeChunkCache(in);
+
+       yaffs_CheckGarbageCollection(dev);
+
+       if (in->variantType != YAFFS_OBJECT_TYPE_FILE) {
+               return yaffs_GetFileSize(in);
+       }
+
+       if (newSize == oldFileSize) {
+               return oldFileSize;
+       }
+
+       if (newSize < oldFileSize) {
+
+               yaffs_PruneResizedChunks(in, newSize);
+
+               if (newSizeOfPartialChunk != 0) {
+                       int lastChunk = 1 + newFullChunks;
+
+                       __u8 *localBuffer = yaffs_GetTempBuffer(dev, __LINE__);
+
+                       /* Got to read and rewrite the last chunk with its new size and zero pad */
+                       yaffs_ReadChunkDataFromObject(in, lastChunk,
+                                                     localBuffer);
+
+                       memset(localBuffer + newSizeOfPartialChunk, 0,
+                              dev->nDataBytesPerChunk - newSizeOfPartialChunk);
+
+                       yaffs_WriteChunkDataToObject(in, lastChunk, localBuffer,
+                                                    newSizeOfPartialChunk, 1);
+
+                       yaffs_ReleaseTempBuffer(dev, localBuffer, __LINE__);
+               }
+
+               in->variant.fileVariant.fileSize = newSize;
+
+               yaffs_PruneFileStructure(dev, &in->variant.fileVariant);
+       } else {
+               /* newsSize > oldFileSize */
+               in->variant.fileVariant.fileSize = newSize;
+       }
+
+
+
+       /* Write a new object header.
+        * show we've shrunk the file, if need be
+        * Do this only if the file is not in the deleted directories.
+        */
+       if (in->parent->objectId != YAFFS_OBJECTID_UNLINKED &&
+           in->parent->objectId != YAFFS_OBJECTID_DELETED) {
+               yaffs_UpdateObjectHeader(in, NULL, 0,
+                                        (newSize < oldFileSize) ? 1 : 0, 0);
+       }
+
+       return YAFFS_OK;
+}
+
+loff_t yaffs_GetFileSize(yaffs_Object * obj)
+{
+       obj = yaffs_GetEquivalentObject(obj);
+
+       switch (obj->variantType) {
+       case YAFFS_OBJECT_TYPE_FILE:
+               return obj->variant.fileVariant.fileSize;
+       case YAFFS_OBJECT_TYPE_SYMLINK:
+               return yaffs_strlen(obj->variant.symLinkVariant.alias);
+       default:
+               return 0;
+       }
+}
+
+
+
+int yaffs_FlushFile(yaffs_Object * in, int updateTime)
+{
+       int retVal;
+       if (in->dirty) {
+               yaffs_FlushFilesChunkCache(in);
+               if (updateTime) {
+#ifdef CONFIG_YAFFS_WINCE
+                       yfsd_WinFileTimeNow(in->win_mtime);
+#else
+
+                       in->yst_mtime = Y_CURRENT_TIME;
+
+#endif
+               }
+
+               retVal =
+                   (yaffs_UpdateObjectHeader(in, NULL, 0, 0, 0) >=
+                    0) ? YAFFS_OK : YAFFS_FAIL;
+       } else {
+               retVal = YAFFS_OK;
+       }
+
+       return retVal;
+
+}
+
+static int yaffs_DoGenericObjectDeletion(yaffs_Object * in)
+{
+
+       /* First off, invalidate the file's data in the cache, without flushing. */
+       yaffs_InvalidateWholeChunkCache(in);
+
+       if (in->myDev->isYaffs2 && (in->parent != in->myDev->deletedDir)) {
+               /* Move to the unlinked directory so we have a record that it was deleted. */
+               yaffs_ChangeObjectName(in, in->myDev->deletedDir,"deleted", 0, 0);
+
+       }
+
+       yaffs_RemoveObjectFromDirectory(in);
+       yaffs_DeleteChunk(in->myDev, in->chunkId, 1, __LINE__);
+       in->chunkId = -1;
+
+       yaffs_FreeObject(in);
+       return YAFFS_OK;
+
+}
+
+/* yaffs_DeleteFile deletes the whole file data
+ * and the inode associated with the file.
+ * It does not delete the links associated with the file.
+ */
+static int yaffs_UnlinkFile(yaffs_Object * in)
+{
+
+       int retVal;
+       int immediateDeletion = 0;
+
+       if (1) {
+/* XXX U-BOOT XXX */
+#if 0
+#ifdef __KERNEL__
+               if (!in->myInode) {
+                       immediateDeletion = 1;
+
+               }
+#endif
+#else
+               if (in->inUse <= 0) {
+                       immediateDeletion = 1;
+
+               }
+#endif
+               if (immediateDeletion) {
+                       retVal =
+                           yaffs_ChangeObjectName(in, in->myDev->deletedDir,
+                                                  "deleted", 0, 0);
+                       T(YAFFS_TRACE_TRACING,
+                         (TSTR("yaffs: immediate deletion of file %d" TENDSTR),
+                          in->objectId));
+                       in->deleted = 1;
+                       in->myDev->nDeletedFiles++;
+                       if (0 && in->myDev->isYaffs2) {
+                               yaffs_ResizeFile(in, 0);
+                       }
+                       yaffs_SoftDeleteFile(in);
+               } else {
+                       retVal =
+                           yaffs_ChangeObjectName(in, in->myDev->unlinkedDir,
+                                                  "unlinked", 0, 0);
+               }
+
+       }
+       return retVal;
+}
+
+int yaffs_DeleteFile(yaffs_Object * in)
+{
+       int retVal = YAFFS_OK;
+
+       if (in->nDataChunks > 0) {
+               /* Use soft deletion if there is data in the file */
+               if (!in->unlinked) {
+                       retVal = yaffs_UnlinkFile(in);
+               }
+               if (retVal == YAFFS_OK && in->unlinked && !in->deleted) {
+                       in->deleted = 1;
+                       in->myDev->nDeletedFiles++;
+                       yaffs_SoftDeleteFile(in);
+               }
+               return in->deleted ? YAFFS_OK : YAFFS_FAIL;
+       } else {
+               /* The file has no data chunks so we toss it immediately */
+               yaffs_FreeTnode(in->myDev, in->variant.fileVariant.top);
+               in->variant.fileVariant.top = NULL;
+               yaffs_DoGenericObjectDeletion(in);
+
+               return YAFFS_OK;
+       }
+}
+
+static int yaffs_DeleteDirectory(yaffs_Object * in)
+{
+       /* First check that the directory is empty. */
+       if (list_empty(&in->variant.directoryVariant.children)) {
+               return yaffs_DoGenericObjectDeletion(in);
+       }
+
+       return YAFFS_FAIL;
+
+}
+
+static int yaffs_DeleteSymLink(yaffs_Object * in)
+{
+       YFREE(in->variant.symLinkVariant.alias);
+
+       return yaffs_DoGenericObjectDeletion(in);
+}
+
+static int yaffs_DeleteHardLink(yaffs_Object * in)
+{
+       /* remove this hardlink from the list assocaited with the equivalent
+        * object
+        */
+       list_del(&in->hardLinks);
+       return yaffs_DoGenericObjectDeletion(in);
+}
+
+static void yaffs_DestroyObject(yaffs_Object * obj)
+{
+       switch (obj->variantType) {
+       case YAFFS_OBJECT_TYPE_FILE:
+               yaffs_DeleteFile(obj);
+               break;
+       case YAFFS_OBJECT_TYPE_DIRECTORY:
+               yaffs_DeleteDirectory(obj);
+               break;
+       case YAFFS_OBJECT_TYPE_SYMLINK:
+               yaffs_DeleteSymLink(obj);
+               break;
+       case YAFFS_OBJECT_TYPE_HARDLINK:
+               yaffs_DeleteHardLink(obj);
+               break;
+       case YAFFS_OBJECT_TYPE_SPECIAL:
+               yaffs_DoGenericObjectDeletion(obj);
+               break;
+       case YAFFS_OBJECT_TYPE_UNKNOWN:
+               break;          /* should not happen. */
+       }
+}
+
+static int yaffs_UnlinkWorker(yaffs_Object * obj)
+{
+
+       if (obj->variantType == YAFFS_OBJECT_TYPE_HARDLINK) {
+               return yaffs_DeleteHardLink(obj);
+       } else if (!list_empty(&obj->hardLinks)) {
+               /* Curve ball: We're unlinking an object that has a hardlink.
+                *
+                * This problem arises because we are not strictly following
+                * The Linux link/inode model.
+                *
+                * We can't really delete the object.
+                * Instead, we do the following:
+                * - Select a hardlink.
+                * - Unhook it from the hard links
+                * - Unhook it from its parent directory (so that the rename can work)
+                * - Rename the object to the hardlink's name.
+                * - Delete the hardlink
+                */
+
+               yaffs_Object *hl;
+               int retVal;
+               YCHAR name[YAFFS_MAX_NAME_LENGTH + 1];
+
+               hl = list_entry(obj->hardLinks.next, yaffs_Object, hardLinks);
+
+               list_del_init(&hl->hardLinks);
+               list_del_init(&hl->siblings);
+
+               yaffs_GetObjectName(hl, name, YAFFS_MAX_NAME_LENGTH + 1);
+
+               retVal = yaffs_ChangeObjectName(obj, hl->parent, name, 0, 0);
+
+               if (retVal == YAFFS_OK) {
+                       retVal = yaffs_DoGenericObjectDeletion(hl);
+               }
+               return retVal;
+
+       } else {
+               switch (obj->variantType) {
+               case YAFFS_OBJECT_TYPE_FILE:
+                       return yaffs_UnlinkFile(obj);
+                       break;
+               case YAFFS_OBJECT_TYPE_DIRECTORY:
+                       return yaffs_DeleteDirectory(obj);
+                       break;
+               case YAFFS_OBJECT_TYPE_SYMLINK:
+                       return yaffs_DeleteSymLink(obj);
+                       break;
+               case YAFFS_OBJECT_TYPE_SPECIAL:
+                       return yaffs_DoGenericObjectDeletion(obj);
+                       break;
+               case YAFFS_OBJECT_TYPE_HARDLINK:
+               case YAFFS_OBJECT_TYPE_UNKNOWN:
+               default:
+                       return YAFFS_FAIL;
+               }
+       }
+}
+
+
+static int yaffs_UnlinkObject( yaffs_Object *obj)
+{
+
+       if (obj && obj->unlinkAllowed) {
+               return yaffs_UnlinkWorker(obj);
+       }
+
+       return YAFFS_FAIL;
+
+}
+int yaffs_Unlink(yaffs_Object * dir, const YCHAR * name)
+{
+       yaffs_Object *obj;
+
+       obj = yaffs_FindObjectByName(dir, name);
+       return yaffs_UnlinkObject(obj);
+}
+
+/*----------------------- Initialisation Scanning ---------------------- */
+
+static void yaffs_HandleShadowedObject(yaffs_Device * dev, int objId,
+                                      int backwardScanning)
+{
+       yaffs_Object *obj;
+
+       if (!backwardScanning) {
+               /* Handle YAFFS1 forward scanning case
+                * For YAFFS1 we always do the deletion
+                */
+
+       } else {
+               /* Handle YAFFS2 case (backward scanning)
+                * If the shadowed object exists then ignore.
+                */
+               if (yaffs_FindObjectByNumber(dev, objId)) {
+                       return;
+               }
+       }
+
+       /* Let's create it (if it does not exist) assuming it is a file so that it can do shrinking etc.
+        * We put it in unlinked dir to be cleaned up after the scanning
+        */
+       obj =
+           yaffs_FindOrCreateObjectByNumber(dev, objId,
+                                            YAFFS_OBJECT_TYPE_FILE);
+       yaffs_AddObjectToDirectory(dev->unlinkedDir, obj);
+       obj->variant.fileVariant.shrinkSize = 0;
+       obj->valid = 1;         /* So that we don't read any other info for this file */
+
+}
+
+typedef struct {
+       int seq;
+       int block;
+} yaffs_BlockIndex;
+
+
+static void yaffs_HardlinkFixup(yaffs_Device *dev, yaffs_Object *hardList)
+{
+       yaffs_Object *hl;
+       yaffs_Object *in;
+
+       while (hardList) {
+               hl = hardList;
+               hardList = (yaffs_Object *) (hardList->hardLinks.next);
+
+               in = yaffs_FindObjectByNumber(dev,
+                                             hl->variant.hardLinkVariant.
+                                             equivalentObjectId);
+
+               if (in) {
+                       /* Add the hardlink pointers */
+                       hl->variant.hardLinkVariant.equivalentObject = in;
+                       list_add(&hl->hardLinks, &in->hardLinks);
+               } else {
+                       /* Todo Need to report/handle this better.
+                        * Got a problem... hardlink to a non-existant object
+                        */
+                       hl->variant.hardLinkVariant.equivalentObject = NULL;
+                       INIT_LIST_HEAD(&hl->hardLinks);
+
+               }
+
+       }
+
+}
+
+
+
+
+
+static int ybicmp(const void *a, const void *b){
+    register int aseq = ((yaffs_BlockIndex *)a)->seq;
+    register int bseq = ((yaffs_BlockIndex *)b)->seq;
+    register int ablock = ((yaffs_BlockIndex *)a)->block;
+    register int bblock = ((yaffs_BlockIndex *)b)->block;
+    if( aseq == bseq )
+       return ablock - bblock;
+    else
+       return aseq - bseq;
+
+}
+
+static int yaffs_Scan(yaffs_Device * dev)
+{
+       yaffs_ExtendedTags tags;
+       int blk;
+       int blockIterator;
+       int startIterator;
+       int endIterator;
+       int nBlocksToScan = 0;
+       int result;
+
+       int chunk;
+       int c;
+       int deleted;
+       yaffs_BlockState state;
+       yaffs_Object *hardList = NULL;
+       yaffs_BlockInfo *bi;
+       int sequenceNumber;
+       yaffs_ObjectHeader *oh;
+       yaffs_Object *in;
+       yaffs_Object *parent;
+       int nBlocks = dev->internalEndBlock - dev->internalStartBlock + 1;
+
+       int alloc_failed = 0;
+
+
+       __u8 *chunkData;
+
+       yaffs_BlockIndex *blockIndex = NULL;
+
+       if (dev->isYaffs2) {
+               T(YAFFS_TRACE_SCAN,
+                 (TSTR("yaffs_Scan is not for YAFFS2!" TENDSTR)));
+               return YAFFS_FAIL;
+       }
+
+       //TODO  Throw all the yaffs2 stuuf out of yaffs_Scan since it is only for yaffs1 format.
+
+       T(YAFFS_TRACE_SCAN,
+         (TSTR("yaffs_Scan starts  intstartblk %d intendblk %d..." TENDSTR),
+          dev->internalStartBlock, dev->internalEndBlock));
+
+       chunkData = yaffs_GetTempBuffer(dev, __LINE__);
+
+       dev->sequenceNumber = YAFFS_LOWEST_SEQUENCE_NUMBER;
+
+       if (dev->isYaffs2) {
+               blockIndex = YMALLOC(nBlocks * sizeof(yaffs_BlockIndex));
+               if(!blockIndex)
+                       return YAFFS_FAIL;
+       }
+
+       /* Scan all the blocks to determine their state */
+       for (blk = dev->internalStartBlock; blk <= dev->internalEndBlock; blk++) {
+               bi = yaffs_GetBlockInfo(dev, blk);
+               yaffs_ClearChunkBits(dev, blk);
+               bi->pagesInUse = 0;
+               bi->softDeletions = 0;
+
+               yaffs_QueryInitialBlockState(dev, blk, &state, &sequenceNumber);
+
+               bi->blockState = state;
+               bi->sequenceNumber = sequenceNumber;
+
+               T(YAFFS_TRACE_SCAN_DEBUG,
+                 (TSTR("Block scanning block %d state %d seq %d" TENDSTR), blk,
+                  state, sequenceNumber));
+
+               if (state == YAFFS_BLOCK_STATE_DEAD) {
+                       T(YAFFS_TRACE_BAD_BLOCKS,
+                         (TSTR("block %d is bad" TENDSTR), blk));
+               } else if (state == YAFFS_BLOCK_STATE_EMPTY) {
+                       T(YAFFS_TRACE_SCAN_DEBUG,
+                         (TSTR("Block empty " TENDSTR)));
+                       dev->nErasedBlocks++;
+                       dev->nFreeChunks += dev->nChunksPerBlock;
+               } else if (state == YAFFS_BLOCK_STATE_NEEDS_SCANNING) {
+
+                       /* Determine the highest sequence number */
+                       if (dev->isYaffs2 &&
+                           sequenceNumber >= YAFFS_LOWEST_SEQUENCE_NUMBER &&
+                           sequenceNumber < YAFFS_HIGHEST_SEQUENCE_NUMBER) {
+
+                               blockIndex[nBlocksToScan].seq = sequenceNumber;
+                               blockIndex[nBlocksToScan].block = blk;
+
+                               nBlocksToScan++;
+
+                               if (sequenceNumber >= dev->sequenceNumber) {
+                                       dev->sequenceNumber = sequenceNumber;
+                               }
+                       } else if (dev->isYaffs2) {
+                               /* TODO: Nasty sequence number! */
+                               T(YAFFS_TRACE_SCAN,
+                                 (TSTR
+                                  ("Block scanning block %d has bad sequence number %d"
+                                   TENDSTR), blk, sequenceNumber));
+
+                       }
+               }
+       }
+
+       /* Sort the blocks
+        * Dungy old bubble sort for now...
+        */
+       if (dev->isYaffs2) {
+               yaffs_BlockIndex temp;
+               int i;
+               int j;
+
+               for (i = 0; i < nBlocksToScan; i++)
+                       for (j = i + 1; j < nBlocksToScan; j++)
+                               if (blockIndex[i].seq > blockIndex[j].seq) {
+                                       temp = blockIndex[j];
+                                       blockIndex[j] = blockIndex[i];
+                                       blockIndex[i] = temp;
+                               }
+       }
+
+       /* Now scan the blocks looking at the data. */
+       if (dev->isYaffs2) {
+               startIterator = 0;
+               endIterator = nBlocksToScan - 1;
+               T(YAFFS_TRACE_SCAN_DEBUG,
+                 (TSTR("%d blocks to be scanned" TENDSTR), nBlocksToScan));
+       } else {
+               startIterator = dev->internalStartBlock;
+               endIterator = dev->internalEndBlock;
+       }
+
+       /* For each block.... */
+       for (blockIterator = startIterator; !alloc_failed && blockIterator <= endIterator;
+            blockIterator++) {
+
+               if (dev->isYaffs2) {
+                       /* get the block to scan in the correct order */
+                       blk = blockIndex[blockIterator].block;
+               } else {
+                       blk = blockIterator;
+               }
+
+               bi = yaffs_GetBlockInfo(dev, blk);
+               state = bi->blockState;
+
+               deleted = 0;
+
+               /* For each chunk in each block that needs scanning....*/
+               for (c = 0; !alloc_failed && c < dev->nChunksPerBlock &&
+                    state == YAFFS_BLOCK_STATE_NEEDS_SCANNING; c++) {
+                       /* Read the tags and decide what to do */
+                       chunk = blk * dev->nChunksPerBlock + c;
+
+                       result = yaffs_ReadChunkWithTagsFromNAND(dev, chunk, NULL,
+                                                       &tags);
+
+                       /* Let's have a good look at this chunk... */
+
+                       if (!dev->isYaffs2 && tags.chunkDeleted) {
+                               /* YAFFS1 only...
+                                * A deleted chunk
+                                */
+                               deleted++;
+                               dev->nFreeChunks++;
+                               /*T((" %d %d deleted\n",blk,c)); */
+                       } else if (!tags.chunkUsed) {
+                               /* An unassigned chunk in the block
+                                * This means that either the block is empty or
+                                * this is the one being allocated from
+                                */
+
+                               if (c == 0) {
+                                       /* We're looking at the first chunk in the block so the block is unused */
+                                       state = YAFFS_BLOCK_STATE_EMPTY;
+                                       dev->nErasedBlocks++;
+                               } else {
+                                       /* this is the block being allocated from */
+                                       T(YAFFS_TRACE_SCAN,
+                                         (TSTR
+                                          (" Allocating from %d %d" TENDSTR),
+                                          blk, c));
+                                       state = YAFFS_BLOCK_STATE_ALLOCATING;
+                                       dev->allocationBlock = blk;
+                                       dev->allocationPage = c;
+                                       dev->allocationBlockFinder = blk;
+                                       /* Set it to here to encourage the allocator to go forth from here. */
+
+                                       /* Yaffs2 sanity check:
+                                        * This should be the one with the highest sequence number
+                                        */
+                                       if (dev->isYaffs2
+                                           && (dev->sequenceNumber !=
+                                               bi->sequenceNumber)) {
+                                               T(YAFFS_TRACE_ALWAYS,
+                                                 (TSTR
+                                                  ("yaffs: Allocation block %d was not highest sequence id:"
+                                                   " block seq = %d, dev seq = %d"
+                                                   TENDSTR), blk,bi->sequenceNumber,dev->sequenceNumber));
+                                       }
+                               }
+
+                               dev->nFreeChunks += (dev->nChunksPerBlock - c);
+                       } else if (tags.chunkId > 0) {
+                               /* chunkId > 0 so it is a data chunk... */
+                               unsigned int endpos;
+
+                               yaffs_SetChunkBit(dev, blk, c);
+                               bi->pagesInUse++;
+
+                               in = yaffs_FindOrCreateObjectByNumber(dev,
+                                                                     tags.
+                                                                     objectId,
+                                                                     YAFFS_OBJECT_TYPE_FILE);
+                               /* PutChunkIntoFile checks for a clash (two data chunks with
+                                * the same chunkId).
+                                */
+
+                               if(!in)
+                                       alloc_failed = 1;
+
+                               if(in){
+                                       if(!yaffs_PutChunkIntoFile(in, tags.chunkId, chunk,1))
+                                               alloc_failed = 1;
+                               }
+
+                               endpos =
+                                   (tags.chunkId - 1) * dev->nDataBytesPerChunk +
+                                   tags.byteCount;
+                               if (in &&
+                                   in->variantType == YAFFS_OBJECT_TYPE_FILE
+                                   && in->variant.fileVariant.scannedFileSize <
+                                   endpos) {
+                                       in->variant.fileVariant.
+                                           scannedFileSize = endpos;
+                                       if (!dev->useHeaderFileSize) {
+                                               in->variant.fileVariant.
+                                                   fileSize =
+                                                   in->variant.fileVariant.
+                                                   scannedFileSize;
+                                       }
+
+                               }
+                               /* T((" %d %d data %d %d\n",blk,c,tags.objectId,tags.chunkId));   */
+                       } else {
+                               /* chunkId == 0, so it is an ObjectHeader.
+                                * Thus, we read in the object header and make the object
+                                */
+                               yaffs_SetChunkBit(dev, blk, c);
+                               bi->pagesInUse++;
+
+                               result = yaffs_ReadChunkWithTagsFromNAND(dev, chunk,
+                                                               chunkData,
+                                                               NULL);
+
+                               oh = (yaffs_ObjectHeader *) chunkData;
+
+                               in = yaffs_FindObjectByNumber(dev,
+                                                             tags.objectId);
+                               if (in && in->variantType != oh->type) {
+                                       /* This should not happen, but somehow
+                                        * Wev'e ended up with an objectId that has been reused but not yet
+                                        * deleted, and worse still it has changed type. Delete the old object.
+                                        */
+
+                                       yaffs_DestroyObject(in);
+
+                                       in = 0;
+                               }
+
+                               in = yaffs_FindOrCreateObjectByNumber(dev,
+                                                                     tags.
+                                                                     objectId,
+                                                                     oh->type);
+
+                               if(!in)
+                                       alloc_failed = 1;
+
+                               if (in && oh->shadowsObject > 0) {
+                                       yaffs_HandleShadowedObject(dev,
+                                                                  oh->
+                                                                  shadowsObject,
+                                                                  0);
+                               }
+
+                               if (in && in->valid) {
+                                       /* We have already filled this one. We have a duplicate and need to resolve it. */
+
+                                       unsigned existingSerial = in->serial;
+                                       unsigned newSerial = tags.serialNumber;
+
+                                       if (dev->isYaffs2 ||
+                                           ((existingSerial + 1) & 3) ==
+                                           newSerial) {
+                                               /* Use new one - destroy the exisiting one */
+                                               yaffs_DeleteChunk(dev,
+                                                                 in->chunkId,
+                                                                 1, __LINE__);
+                                               in->valid = 0;
+                                       } else {
+                                               /* Use existing - destroy this one. */
+                                               yaffs_DeleteChunk(dev, chunk, 1,
+                                                                 __LINE__);
+                                       }
+                               }
+
+                               if (in && !in->valid &&
+                                   (tags.objectId == YAFFS_OBJECTID_ROOT ||
+                                    tags.objectId == YAFFS_OBJECTID_LOSTNFOUND)) {
+                                       /* We only load some info, don't fiddle with directory structure */
+                                       in->valid = 1;
+                                       in->variantType = oh->type;
+
+                                       in->yst_mode = oh->yst_mode;
+#ifdef CONFIG_YAFFS_WINCE
+                                       in->win_atime[0] = oh->win_atime[0];
+                                       in->win_ctime[0] = oh->win_ctime[0];
+                                       in->win_mtime[0] = oh->win_mtime[0];
+                                       in->win_atime[1] = oh->win_atime[1];
+                                       in->win_ctime[1] = oh->win_ctime[1];
+                                       in->win_mtime[1] = oh->win_mtime[1];
+#else
+                                       in->yst_uid = oh->yst_uid;
+                                       in->yst_gid = oh->yst_gid;
+                                       in->yst_atime = oh->yst_atime;
+                                       in->yst_mtime = oh->yst_mtime;
+                                       in->yst_ctime = oh->yst_ctime;
+                                       in->yst_rdev = oh->yst_rdev;
+#endif
+                                       in->chunkId = chunk;
+
+                               } else if (in && !in->valid) {
+                                       /* we need to load this info */
+
+                                       in->valid = 1;
+                                       in->variantType = oh->type;
+
+                                       in->yst_mode = oh->yst_mode;
+#ifdef CONFIG_YAFFS_WINCE
+                                       in->win_atime[0] = oh->win_atime[0];
+                                       in->win_ctime[0] = oh->win_ctime[0];
+                                       in->win_mtime[0] = oh->win_mtime[0];
+                                       in->win_atime[1] = oh->win_atime[1];
+                                       in->win_ctime[1] = oh->win_ctime[1];
+                                       in->win_mtime[1] = oh->win_mtime[1];
+#else
+                                       in->yst_uid = oh->yst_uid;
+                                       in->yst_gid = oh->yst_gid;
+                                       in->yst_atime = oh->yst_atime;
+                                       in->yst_mtime = oh->yst_mtime;
+                                       in->yst_ctime = oh->yst_ctime;
+                                       in->yst_rdev = oh->yst_rdev;
+#endif
+                                       in->chunkId = chunk;
+
+                                       yaffs_SetObjectName(in, oh->name);
+                                       in->dirty = 0;
+
+                                       /* directory stuff...
+                                        * hook up to parent
+                                        */
+
+                                       parent =
+                                           yaffs_FindOrCreateObjectByNumber
+                                           (dev, oh->parentObjectId,
+                                            YAFFS_OBJECT_TYPE_DIRECTORY);
+                                       if (parent->variantType ==
+                                           YAFFS_OBJECT_TYPE_UNKNOWN) {
+                                               /* Set up as a directory */
+                                               parent->variantType =
+                                                   YAFFS_OBJECT_TYPE_DIRECTORY;
+                                               INIT_LIST_HEAD(&parent->variant.
+                                                              directoryVariant.
+                                                              children);
+                                       } else if (parent->variantType !=
+                                                  YAFFS_OBJECT_TYPE_DIRECTORY)
+                                       {
+                                               /* Hoosterman, another problem....
+                                                * We're trying to use a non-directory as a directory
+                                                */
+
+                                               T(YAFFS_TRACE_ERROR,
+                                                 (TSTR
+                                                  ("yaffs tragedy: attempting to use non-directory as"
+                                                   " a directory in scan. Put in lost+found."
+                                                   TENDSTR)));
+                                               parent = dev->lostNFoundDir;
+                                       }
+
+                                       yaffs_AddObjectToDirectory(parent, in);
+
+                                       if (0 && (parent == dev->deletedDir ||
+                                                 parent == dev->unlinkedDir)) {
+                                               in->deleted = 1;        /* If it is unlinked at start up then it wants deleting */
+                                               dev->nDeletedFiles++;
+                                       }
+                                       /* Note re hardlinks.
+                                        * Since we might scan a hardlink before its equivalent object is scanned
+                                        * we put them all in a list.
+                                        * After scanning is complete, we should have all the objects, so we run through this
+                                        * list and fix up all the chains.
+                                        */
+
+                                       switch (in->variantType) {
+                                       case YAFFS_OBJECT_TYPE_UNKNOWN:
+                                               /* Todo got a problem */
+                                               break;
+                                       case YAFFS_OBJECT_TYPE_FILE:
+                                               if (dev->isYaffs2
+                                                   && oh->isShrink) {
+                                                       /* Prune back the shrunken chunks */
+                                                       yaffs_PruneResizedChunks
+                                                           (in, oh->fileSize);
+                                                       /* Mark the block as having a shrinkHeader */
+                                                       bi->hasShrinkHeader = 1;
+                                               }
+
+                                               if (dev->useHeaderFileSize)
+
+                                                       in->variant.fileVariant.
+                                                           fileSize =
+                                                           oh->fileSize;
+
+                                               break;
+                                       case YAFFS_OBJECT_TYPE_HARDLINK:
+                                               in->variant.hardLinkVariant.
+                                                   equivalentObjectId =
+                                                   oh->equivalentObjectId;
+                                               in->hardLinks.next =
+                                                   (struct list_head *)
+                                                   hardList;
+                                               hardList = in;
+                                               break;
+                                       case YAFFS_OBJECT_TYPE_DIRECTORY:
+                                               /* Do nothing */
+                                               break;
+                                       case YAFFS_OBJECT_TYPE_SPECIAL:
+                                               /* Do nothing */
+                                               break;
+                                       case YAFFS_OBJECT_TYPE_SYMLINK:
+                                               in->variant.symLinkVariant.alias =
+                                                   yaffs_CloneString(oh->alias);
+                                               if(!in->variant.symLinkVariant.alias)
+                                                       alloc_failed = 1;
+                                               break;
+                                       }
+
+                                       if (parent == dev->deletedDir) {
+                                               yaffs_DestroyObject(in);
+                                               bi->hasShrinkHeader = 1;
+                                       }
+                               }
+                       }
+               }
+
+               if (state == YAFFS_BLOCK_STATE_NEEDS_SCANNING) {
+                       /* If we got this far while scanning, then the block is fully allocated.*/
+                       state = YAFFS_BLOCK_STATE_FULL;
+               }
+
+               bi->blockState = state;
+
+               /* Now let's see if it was dirty */
+               if (bi->pagesInUse == 0 &&
+                   !bi->hasShrinkHeader &&
+                   bi->blockState == YAFFS_BLOCK_STATE_FULL) {
+                       yaffs_BlockBecameDirty(dev, blk);
+               }
+
+       }
+
+       if (blockIndex) {
+               YFREE(blockIndex);
+       }
+
+
+       /* Ok, we've done all the scanning.
+        * Fix up the hard link chains.
+        * We should now have scanned all the objects, now it's time to add these
+        * hardlinks.
+        */
+
+       yaffs_HardlinkFixup(dev,hardList);
+
+       /* Handle the unlinked files. Since they were left in an unlinked state we should
+        * just delete them.
+        */
+       {
+               struct list_head *i;
+               struct list_head *n;
+
+               yaffs_Object *l;
+               /* Soft delete all the unlinked files */
+               list_for_each_safe(i, n,
+                                  &dev->unlinkedDir->variant.directoryVariant.
+                                  children) {
+                       if (i) {
+                               l = list_entry(i, yaffs_Object, siblings);
+                               yaffs_DestroyObject(l);
+                       }
+               }
+       }
+
+       yaffs_ReleaseTempBuffer(dev, chunkData, __LINE__);
+
+       if(alloc_failed){
+               return YAFFS_FAIL;
+       }
+
+       T(YAFFS_TRACE_SCAN, (TSTR("yaffs_Scan ends" TENDSTR)));
+
+
+       return YAFFS_OK;
+}
+
+static void yaffs_CheckObjectDetailsLoaded(yaffs_Object *in)
+{
+       __u8 *chunkData;
+       yaffs_ObjectHeader *oh;
+       yaffs_Device *dev = in->myDev;
+       yaffs_ExtendedTags tags;
+       int result;
+       int alloc_failed = 0;
+
+       if(!in)
+               return;
+
+#if 0
+       T(YAFFS_TRACE_SCAN,(TSTR("details for object %d %s loaded" TENDSTR),
+               in->objectId,
+               in->lazyLoaded ? "not yet" : "already"));
+#endif
+
+       if(in->lazyLoaded){
+               in->lazyLoaded = 0;
+               chunkData = yaffs_GetTempBuffer(dev, __LINE__);
+
+               result = yaffs_ReadChunkWithTagsFromNAND(dev,in->chunkId,chunkData,&tags);
+               oh = (yaffs_ObjectHeader *) chunkData;
+
+               in->yst_mode = oh->yst_mode;
+#ifdef CONFIG_YAFFS_WINCE
+               in->win_atime[0] = oh->win_atime[0];
+               in->win_ctime[0] = oh->win_ctime[0];
+               in->win_mtime[0] = oh->win_mtime[0];
+               in->win_atime[1] = oh->win_atime[1];
+               in->win_ctime[1] = oh->win_ctime[1];
+               in->win_mtime[1] = oh->win_mtime[1];
+#else
+               in->yst_uid = oh->yst_uid;
+               in->yst_gid = oh->yst_gid;
+               in->yst_atime = oh->yst_atime;
+               in->yst_mtime = oh->yst_mtime;
+               in->yst_ctime = oh->yst_ctime;
+               in->yst_rdev = oh->yst_rdev;
+
+#endif
+               yaffs_SetObjectName(in, oh->name);
+
+               if(in->variantType == YAFFS_OBJECT_TYPE_SYMLINK){
+                        in->variant.symLinkVariant.alias =
+                                                   yaffs_CloneString(oh->alias);
+                       if(!in->variant.symLinkVariant.alias)
+                               alloc_failed = 1; /* Not returned to caller */
+               }
+
+               yaffs_ReleaseTempBuffer(dev,chunkData, __LINE__);
+       }
+}
+
+static int yaffs_ScanBackwards(yaffs_Device * dev)
+{
+       yaffs_ExtendedTags tags;
+       int blk;
+       int blockIterator;
+       int startIterator;
+       int endIterator;
+       int nBlocksToScan = 0;
+
+       int chunk;
+       int result;
+       int c;
+       int deleted;
+       yaffs_BlockState state;
+       yaffs_Object *hardList = NULL;
+       yaffs_BlockInfo *bi;
+       int sequenceNumber;
+       yaffs_ObjectHeader *oh;
+       yaffs_Object *in;
+       yaffs_Object *parent;
+       int nBlocks = dev->internalEndBlock - dev->internalStartBlock + 1;
+       int itsUnlinked;
+       __u8 *chunkData;
+
+       int fileSize;
+       int isShrink;
+       int foundChunksInBlock;
+       int equivalentObjectId;
+       int alloc_failed = 0;
+
+
+       yaffs_BlockIndex *blockIndex = NULL;
+       int altBlockIndex = 0;
+
+       if (!dev->isYaffs2) {
+               T(YAFFS_TRACE_SCAN,
+                 (TSTR("yaffs_ScanBackwards is only for YAFFS2!" TENDSTR)));
+               return YAFFS_FAIL;
+       }
+
+       T(YAFFS_TRACE_SCAN,
+         (TSTR
+          ("yaffs_ScanBackwards starts  intstartblk %d intendblk %d..."
+           TENDSTR), dev->internalStartBlock, dev->internalEndBlock));
+
+
+       dev->sequenceNumber = YAFFS_LOWEST_SEQUENCE_NUMBER;
+
+       blockIndex = YMALLOC(nBlocks * sizeof(yaffs_BlockIndex));
+
+       if(!blockIndex) {
+               blockIndex = YMALLOC_ALT(nBlocks * sizeof(yaffs_BlockIndex));
+               altBlockIndex = 1;
+       }
+
+       if(!blockIndex) {
+               T(YAFFS_TRACE_SCAN,
+                 (TSTR("yaffs_Scan() could not allocate block index!" TENDSTR)));
+               return YAFFS_FAIL;
+       }
+
+       dev->blocksInCheckpoint = 0;
+
+       chunkData = yaffs_GetTempBuffer(dev, __LINE__);
+
+       /* Scan all the blocks to determine their state */
+       for (blk = dev->internalStartBlock; blk <= dev->internalEndBlock; blk++) {
+               bi = yaffs_GetBlockInfo(dev, blk);
+               yaffs_ClearChunkBits(dev, blk);
+               bi->pagesInUse = 0;
+               bi->softDeletions = 0;
+
+               yaffs_QueryInitialBlockState(dev, blk, &state, &sequenceNumber);
+
+               bi->blockState = state;
+               bi->sequenceNumber = sequenceNumber;
+
+               if(bi->sequenceNumber == YAFFS_SEQUENCE_CHECKPOINT_DATA)
+                       bi->blockState = state = YAFFS_BLOCK_STATE_CHECKPOINT;
+
+               T(YAFFS_TRACE_SCAN_DEBUG,
+                 (TSTR("Block scanning block %d state %d seq %d" TENDSTR), blk,
+                  state, sequenceNumber));
+
+
+               if(state == YAFFS_BLOCK_STATE_CHECKPOINT){
+                       dev->blocksInCheckpoint++;
+
+               } else if (state == YAFFS_BLOCK_STATE_DEAD) {
+                       T(YAFFS_TRACE_BAD_BLOCKS,
+                         (TSTR("block %d is bad" TENDSTR), blk));
+               } else if (state == YAFFS_BLOCK_STATE_EMPTY) {
+                       T(YAFFS_TRACE_SCAN_DEBUG,
+                         (TSTR("Block empty " TENDSTR)));
+                       dev->nErasedBlocks++;
+                       dev->nFreeChunks += dev->nChunksPerBlock;
+               } else if (state == YAFFS_BLOCK_STATE_NEEDS_SCANNING) {
+
+                       /* Determine the highest sequence number */
+                       if (dev->isYaffs2 &&
+                           sequenceNumber >= YAFFS_LOWEST_SEQUENCE_NUMBER &&
+                           sequenceNumber < YAFFS_HIGHEST_SEQUENCE_NUMBER) {
+
+                               blockIndex[nBlocksToScan].seq = sequenceNumber;
+                               blockIndex[nBlocksToScan].block = blk;
+
+                               nBlocksToScan++;
+
+                               if (sequenceNumber >= dev->sequenceNumber) {
+                                       dev->sequenceNumber = sequenceNumber;
+                               }
+                       } else if (dev->isYaffs2) {
+                               /* TODO: Nasty sequence number! */
+                               T(YAFFS_TRACE_SCAN,
+                                 (TSTR
+                                  ("Block scanning block %d has bad sequence number %d"
+                                   TENDSTR), blk, sequenceNumber));
+
+                       }
+               }
+       }
+
+       T(YAFFS_TRACE_SCAN,
+       (TSTR("%d blocks to be sorted..." TENDSTR), nBlocksToScan));
+
+
+
+       YYIELD();
+
+       /* Sort the blocks */
+#ifndef CONFIG_YAFFS_USE_OWN_SORT
+       {
+               /* Use qsort now. */
+               yaffs_qsort(blockIndex, nBlocksToScan, sizeof(yaffs_BlockIndex), ybicmp);
+       }
+#else
+       {
+               /* Dungy old bubble sort... */
+
+               yaffs_BlockIndex temp;
+               int i;
+               int j;
+
+               for (i = 0; i < nBlocksToScan; i++)
+                       for (j = i + 1; j < nBlocksToScan; j++)
+                               if (blockIndex[i].seq > blockIndex[j].seq) {
+                                       temp = blockIndex[j];
+                                       blockIndex[j] = blockIndex[i];
+                                       blockIndex[i] = temp;
+                               }
+       }
+#endif
+
+       YYIELD();
+
+       T(YAFFS_TRACE_SCAN, (TSTR("...done" TENDSTR)));
+
+       /* Now scan the blocks looking at the data. */
+       startIterator = 0;
+       endIterator = nBlocksToScan - 1;
+       T(YAFFS_TRACE_SCAN_DEBUG,
+         (TSTR("%d blocks to be scanned" TENDSTR), nBlocksToScan));
+
+       /* For each block.... backwards */
+       for (blockIterator = endIterator; !alloc_failed && blockIterator >= startIterator;
+            blockIterator--) {
+               /* Cooperative multitasking! This loop can run for so
+                  long that watchdog timers expire. */
+               YYIELD();
+
+               /* get the block to scan in the correct order */
+               blk = blockIndex[blockIterator].block;
+
+               bi = yaffs_GetBlockInfo(dev, blk);
+
+
+               state = bi->blockState;
+
+               deleted = 0;
+
+               /* For each chunk in each block that needs scanning.... */
+               foundChunksInBlock = 0;
+               for (c = dev->nChunksPerBlock - 1;
+                    !alloc_failed && c >= 0 &&
+                    (state == YAFFS_BLOCK_STATE_NEEDS_SCANNING ||
+                     state == YAFFS_BLOCK_STATE_ALLOCATING); c--) {
+                       /* Scan backwards...
+                        * Read the tags and decide what to do
+                        */
+
+                       chunk = blk * dev->nChunksPerBlock + c;
+
+                       result = yaffs_ReadChunkWithTagsFromNAND(dev, chunk, NULL,
+                                                       &tags);
+
+                       /* Let's have a good look at this chunk... */
+
+                       if (!tags.chunkUsed) {
+                               /* An unassigned chunk in the block.
+                                * If there are used chunks after this one, then
+                                * it is a chunk that was skipped due to failing the erased
+                                * check. Just skip it so that it can be deleted.
+                                * But, more typically, We get here when this is an unallocated
+                                * chunk and his means that either the block is empty or
+                                * this is the one being allocated from
+                                */
+
+                               if(foundChunksInBlock)
+                               {
+                                       /* This is a chunk that was skipped due to failing the erased check */
+
+                               } else if (c == 0) {
+                                       /* We're looking at the first chunk in the block so the block is unused */
+                                       state = YAFFS_BLOCK_STATE_EMPTY;
+                                       dev->nErasedBlocks++;
+                               } else {
+                                       if (state == YAFFS_BLOCK_STATE_NEEDS_SCANNING ||
+                                           state == YAFFS_BLOCK_STATE_ALLOCATING) {
+                                               if(dev->sequenceNumber == bi->sequenceNumber) {
+                                                       /* this is the block being allocated from */
+
+                                                       T(YAFFS_TRACE_SCAN,
+                                                         (TSTR
+                                                          (" Allocating from %d %d"
+                                                           TENDSTR), blk, c));
+
+                                                       state = YAFFS_BLOCK_STATE_ALLOCATING;
+                                                       dev->allocationBlock = blk;
+                                                       dev->allocationPage = c;
+                                                       dev->allocationBlockFinder = blk;
+                                               }
+                                               else {
+                                                       /* This is a partially written block that is not
+                                                        * the current allocation block. This block must have
+                                                        * had a write failure, so set up for retirement.
+                                                        */
+
+                                                        bi->needsRetiring = 1;
+                                                        bi->gcPrioritise = 1;
+
+                                                        T(YAFFS_TRACE_ALWAYS,
+                                                        (TSTR("Partially written block %d being set for retirement" TENDSTR),
+                                                        blk));
+                                               }
+
+                                       }
+
+                               }
+
+                               dev->nFreeChunks++;
+
+                       } else if (tags.chunkId > 0) {
+                               /* chunkId > 0 so it is a data chunk... */
+                               unsigned int endpos;
+                               __u32 chunkBase =
+                                   (tags.chunkId - 1) * dev->nDataBytesPerChunk;
+
+                               foundChunksInBlock = 1;
+
+
+                               yaffs_SetChunkBit(dev, blk, c);
+                               bi->pagesInUse++;
+
+                               in = yaffs_FindOrCreateObjectByNumber(dev,
+                                                                     tags.
+                                                                     objectId,
+                                                                     YAFFS_OBJECT_TYPE_FILE);
+                               if(!in){
+                                       /* Out of memory */
+                                       alloc_failed = 1;
+                               }
+
+                               if (in &&
+                                   in->variantType == YAFFS_OBJECT_TYPE_FILE
+                                   && chunkBase <
+                                   in->variant.fileVariant.shrinkSize) {
+                                       /* This has not been invalidated by a resize */
+                                       if(!yaffs_PutChunkIntoFile(in, tags.chunkId,
+                                                              chunk, -1)){
+                                               alloc_failed = 1;
+                                       }
+
+                                       /* File size is calculated by looking at the data chunks if we have not
+                                        * seen an object header yet. Stop this practice once we find an object header.
+                                        */
+                                       endpos =
+                                           (tags.chunkId -
+                                            1) * dev->nDataBytesPerChunk +
+                                           tags.byteCount;
+
+                                       if (!in->valid &&       /* have not got an object header yet */
+                                           in->variant.fileVariant.
+                                           scannedFileSize < endpos) {
+                                               in->variant.fileVariant.
+                                                   scannedFileSize = endpos;
+                                               in->variant.fileVariant.
+                                                   fileSize =
+                                                   in->variant.fileVariant.
+                                                   scannedFileSize;
+                                       }
+
+                               } else if(in) {
+                                       /* This chunk has been invalidated by a resize, so delete */
+                                       yaffs_DeleteChunk(dev, chunk, 1, __LINE__);
+
+                               }
+                       } else {
+                               /* chunkId == 0, so it is an ObjectHeader.
+                                * Thus, we read in the object header and make the object
+                                */
+                               foundChunksInBlock = 1;
+
+                               yaffs_SetChunkBit(dev, blk, c);
+                               bi->pagesInUse++;
+
+                               oh = NULL;
+                               in = NULL;
+
+                               if (tags.extraHeaderInfoAvailable) {
+                                       in = yaffs_FindOrCreateObjectByNumber
+                                           (dev, tags.objectId,
+                                            tags.extraObjectType);
+                               }
+
+                               if (!in ||
+#ifdef CONFIG_YAFFS_DISABLE_LAZY_LOAD
+                                   !in->valid ||
+#endif
+                                   tags.extraShadows ||
+                                   (!in->valid &&
+                                   (tags.objectId == YAFFS_OBJECTID_ROOT ||
+                                    tags.objectId == YAFFS_OBJECTID_LOSTNFOUND))
+                                   ) {
+
+                                       /* If we don't have  valid info then we need to read the chunk
+                                        * TODO In future we can probably defer reading the chunk and
+                                        * living with invalid data until needed.
+                                        */
+
+                                       result = yaffs_ReadChunkWithTagsFromNAND(dev,
+                                                                       chunk,
+                                                                       chunkData,
+                                                                       NULL);
+
+                                       oh = (yaffs_ObjectHeader *) chunkData;
+
+                                       if (!in)
+                                               in = yaffs_FindOrCreateObjectByNumber(dev, tags.objectId, oh->type);
+
+                               }
+
+                               if (!in) {
+                                       /* TODO Hoosterman we have a problem! */
+                                       T(YAFFS_TRACE_ERROR,
+                                         (TSTR
+                                          ("yaffs tragedy: Could not make object for object  %d  "
+                                           "at chunk %d during scan"
+                                           TENDSTR), tags.objectId, chunk));
+
+                               }
+
+                               if (in->valid) {
+                                       /* We have already filled this one.
+                                        * We have a duplicate that will be discarded, but
+                                        * we first have to suck out resize info if it is a file.
+                                        */
+
+                                       if ((in->variantType == YAFFS_OBJECT_TYPE_FILE) &&
+                                            ((oh &&
+                                              oh-> type == YAFFS_OBJECT_TYPE_FILE)||
+                                             (tags.extraHeaderInfoAvailable  &&
+                                              tags.extraObjectType == YAFFS_OBJECT_TYPE_FILE))
+                                           ) {
+                                               __u32 thisSize =
+                                                   (oh) ? oh->fileSize : tags.
+                                                   extraFileLength;
+                                               __u32 parentObjectId =
+                                                   (oh) ? oh->
+                                                   parentObjectId : tags.
+                                                   extraParentObjectId;
+                                               unsigned isShrink =
+                                                   (oh) ? oh->isShrink : tags.
+                                                   extraIsShrinkHeader;
+
+                                               /* If it is deleted (unlinked at start also means deleted)
+                                                * we treat the file size as being zeroed at this point.
+                                                */
+                                               if (parentObjectId ==
+                                                   YAFFS_OBJECTID_DELETED
+                                                   || parentObjectId ==
+                                                   YAFFS_OBJECTID_UNLINKED) {
+                                                       thisSize = 0;
+                                                       isShrink = 1;
+                                               }
+
+                                               if (isShrink &&
+                                                   in->variant.fileVariant.
+                                                   shrinkSize > thisSize) {
+                                                       in->variant.fileVariant.
+                                                           shrinkSize =
+                                                           thisSize;
+                                               }
+
+                                               if (isShrink) {
+                                                       bi->hasShrinkHeader = 1;
+                                               }
+
+                                       }
+                                       /* Use existing - destroy this one. */
+                                       yaffs_DeleteChunk(dev, chunk, 1, __LINE__);
+
+                               }
+
+                               if (!in->valid &&
+                                   (tags.objectId == YAFFS_OBJECTID_ROOT ||
+                                    tags.objectId ==
+                                    YAFFS_OBJECTID_LOSTNFOUND)) {
+                                       /* We only load some info, don't fiddle with directory structure */
+                                       in->valid = 1;
+
+                                       if(oh) {
+                                               in->variantType = oh->type;
+
+                                               in->yst_mode = oh->yst_mode;
+#ifdef CONFIG_YAFFS_WINCE
+                                               in->win_atime[0] = oh->win_atime[0];
+                                               in->win_ctime[0] = oh->win_ctime[0];
+                                               in->win_mtime[0] = oh->win_mtime[0];
+                                               in->win_atime[1] = oh->win_atime[1];
+                                               in->win_ctime[1] = oh->win_ctime[1];
+                                               in->win_mtime[1] = oh->win_mtime[1];
+#else
+                                               in->yst_uid = oh->yst_uid;
+                                               in->yst_gid = oh->yst_gid;
+                                               in->yst_atime = oh->yst_atime;
+                                               in->yst_mtime = oh->yst_mtime;
+                                               in->yst_ctime = oh->yst_ctime;
+                                               in->yst_rdev = oh->yst_rdev;
+
+#endif
+                                       } else {
+                                               in->variantType = tags.extraObjectType;
+                                               in->lazyLoaded = 1;
+                                       }
+
+                                       in->chunkId = chunk;
+
+                               } else if (!in->valid) {
+                                       /* we need to load this info */
+
+                                       in->valid = 1;
+                                       in->chunkId = chunk;
+
+                                       if(oh) {
+                                               in->variantType = oh->type;
+
+                                               in->yst_mode = oh->yst_mode;
+#ifdef CONFIG_YAFFS_WINCE
+                                               in->win_atime[0] = oh->win_atime[0];
+                                               in->win_ctime[0] = oh->win_ctime[0];
+                                               in->win_mtime[0] = oh->win_mtime[0];
+                                               in->win_atime[1] = oh->win_atime[1];
+                                               in->win_ctime[1] = oh->win_ctime[1];
+                                               in->win_mtime[1] = oh->win_mtime[1];
+#else
+                                               in->yst_uid = oh->yst_uid;
+                                               in->yst_gid = oh->yst_gid;
+                                               in->yst_atime = oh->yst_atime;
+                                               in->yst_mtime = oh->yst_mtime;
+                                               in->yst_ctime = oh->yst_ctime;
+                                               in->yst_rdev = oh->yst_rdev;
+#endif
+
+                                               if (oh->shadowsObject > 0)
+                                                       yaffs_HandleShadowedObject(dev,
+                                                                          oh->
+                                                                          shadowsObject,
+                                                                          1);
+
+
+                                               yaffs_SetObjectName(in, oh->name);
+                                               parent =
+                                                   yaffs_FindOrCreateObjectByNumber
+                                                       (dev, oh->parentObjectId,
+                                                        YAFFS_OBJECT_TYPE_DIRECTORY);
+
+                                                fileSize = oh->fileSize;
+                                                isShrink = oh->isShrink;
+                                                equivalentObjectId = oh->equivalentObjectId;
+
+                                       }
+                                       else {
+                                               in->variantType = tags.extraObjectType;
+                                               parent =
+                                                   yaffs_FindOrCreateObjectByNumber
+                                                       (dev, tags.extraParentObjectId,
+                                                        YAFFS_OBJECT_TYPE_DIRECTORY);
+                                                fileSize = tags.extraFileLength;
+                                                isShrink = tags.extraIsShrinkHeader;
+                                                equivalentObjectId = tags.extraEquivalentObjectId;
+                                               in->lazyLoaded = 1;
+
+                                       }
+                                       in->dirty = 0;
+
+                                       /* directory stuff...
+                                        * hook up to parent
+                                        */
+
+                                       if (parent->variantType ==
+                                           YAFFS_OBJECT_TYPE_UNKNOWN) {
+                                               /* Set up as a directory */
+                                               parent->variantType =
+                                                   YAFFS_OBJECT_TYPE_DIRECTORY;
+                                               INIT_LIST_HEAD(&parent->variant.
+                                                              directoryVariant.
+                                                              children);
+                                       } else if (parent->variantType !=
+                                                  YAFFS_OBJECT_TYPE_DIRECTORY)
+                                       {
+                                               /* Hoosterman, another problem....
+                                                * We're trying to use a non-directory as a directory
+                                                */
+
+                                               T(YAFFS_TRACE_ERROR,
+                                                 (TSTR
+                                                  ("yaffs tragedy: attempting to use non-directory as"
+                                                   " a directory in scan. Put in lost+found."
+                                                   TENDSTR)));
+                                               parent = dev->lostNFoundDir;
+                                       }
+
+                                       yaffs_AddObjectToDirectory(parent, in);
+
+                                       itsUnlinked = (parent == dev->deletedDir) ||
+                                                     (parent == dev->unlinkedDir);
+
+                                       if (isShrink) {
+                                               /* Mark the block as having a shrinkHeader */
+                                               bi->hasShrinkHeader = 1;
+                                       }
+
+                                       /* Note re hardlinks.
+                                        * Since we might scan a hardlink before its equivalent object is scanned
+                                        * we put them all in a list.
+                                        * After scanning is complete, we should have all the objects, so we run
+                                        * through this list and fix up all the chains.
+                                        */
+
+                                       switch (in->variantType) {
+                                       case YAFFS_OBJECT_TYPE_UNKNOWN:
+                                               /* Todo got a problem */
+                                               break;
+                                       case YAFFS_OBJECT_TYPE_FILE:
+
+                                               if (in->variant.fileVariant.
+                                                   scannedFileSize < fileSize) {
+                                                       /* This covers the case where the file size is greater
+                                                        * than where the data is
+                                                        * This will happen if the file is resized to be larger
+                                                        * than its current data extents.
+                                                        */
+                                                       in->variant.fileVariant.fileSize = fileSize;
+                                                       in->variant.fileVariant.scannedFileSize =
+                                                           in->variant.fileVariant.fileSize;
+                                               }
+
+                                               if (isShrink &&
+                                                   in->variant.fileVariant.shrinkSize > fileSize) {
+                                                       in->variant.fileVariant.shrinkSize = fileSize;
+                                               }
+
+                                               break;
+                                       case YAFFS_OBJECT_TYPE_HARDLINK:
+                                               if(!itsUnlinked) {
+                                                 in->variant.hardLinkVariant.equivalentObjectId =
+                                                   equivalentObjectId;
+                                                 in->hardLinks.next =
+                                                   (struct list_head *) hardList;
+                                                 hardList = in;
+                                               }
+                                               break;
+                                       case YAFFS_OBJECT_TYPE_DIRECTORY:
+                                               /* Do nothing */
+                                               break;
+                                       case YAFFS_OBJECT_TYPE_SPECIAL:
+                                               /* Do nothing */
+                                               break;
+                                       case YAFFS_OBJECT_TYPE_SYMLINK:
+                                               if(oh){
+                                                  in->variant.symLinkVariant.alias =
+                                                   yaffs_CloneString(oh->
+                                                                     alias);
+                                                  if(!in->variant.symLinkVariant.alias)
+                                                       alloc_failed = 1;
+                                               }
+                                               break;
+                                       }
+
+                               }
+
+                       }
+
+               } /* End of scanning for each chunk */
+
+               if (state == YAFFS_BLOCK_STATE_NEEDS_SCANNING) {
+                       /* If we got this far while scanning, then the block is fully allocated. */
+                       state = YAFFS_BLOCK_STATE_FULL;
+               }
+
+               bi->blockState = state;
+
+               /* Now let's see if it was dirty */
+               if (bi->pagesInUse == 0 &&
+                   !bi->hasShrinkHeader &&
+                   bi->blockState == YAFFS_BLOCK_STATE_FULL) {
+                       yaffs_BlockBecameDirty(dev, blk);
+               }
+
+       }
+
+       if (altBlockIndex)
+               YFREE_ALT(blockIndex);
+       else
+               YFREE(blockIndex);
+
+       /* Ok, we've done all the scanning.
+        * Fix up the hard link chains.
+        * We should now have scanned all the objects, now it's time to add these
+        * hardlinks.
+        */
+       yaffs_HardlinkFixup(dev,hardList);
+
+
+       /*
+       *  Sort out state of unlinked and deleted objects.
+       */
+       {
+               struct list_head *i;
+               struct list_head *n;
+
+               yaffs_Object *l;
+
+               /* Soft delete all the unlinked files */
+               list_for_each_safe(i, n,
+                                  &dev->unlinkedDir->variant.directoryVariant.
+                                  children) {
+                       if (i) {
+                               l = list_entry(i, yaffs_Object, siblings);
+                               yaffs_DestroyObject(l);
+                       }
+               }
+
+               /* Soft delete all the deletedDir files */
+               list_for_each_safe(i, n,
+                                  &dev->deletedDir->variant.directoryVariant.
+                                  children) {
+                       if (i) {
+                               l = list_entry(i, yaffs_Object, siblings);
+                               yaffs_DestroyObject(l);
+
+                       }
+               }
+       }
+
+       yaffs_ReleaseTempBuffer(dev, chunkData, __LINE__);
+
+       if(alloc_failed){
+               return YAFFS_FAIL;
+       }
+
+       T(YAFFS_TRACE_SCAN, (TSTR("yaffs_ScanBackwards ends" TENDSTR)));
+
+       return YAFFS_OK;
+}
+
+/*------------------------------  Directory Functions ----------------------------- */
+
+static void yaffs_RemoveObjectFromDirectory(yaffs_Object * obj)
+{
+       yaffs_Device *dev = obj->myDev;
+
+       if(dev && dev->removeObjectCallback)
+               dev->removeObjectCallback(obj);
+
+       list_del_init(&obj->siblings);
+       obj->parent = NULL;
+}
+
+
+static void yaffs_AddObjectToDirectory(yaffs_Object * directory,
+                                      yaffs_Object * obj)
+{
+
+       if (!directory) {
+               T(YAFFS_TRACE_ALWAYS,
+                 (TSTR
+                  ("tragedy: Trying to add an object to a null pointer directory"
+                   TENDSTR)));
+               YBUG();
+       }
+       if (directory->variantType != YAFFS_OBJECT_TYPE_DIRECTORY) {
+               T(YAFFS_TRACE_ALWAYS,
+                 (TSTR
+                  ("tragedy: Trying to add an object to a non-directory"
+                   TENDSTR)));
+               YBUG();
+       }
+
+       if (obj->siblings.prev == NULL) {
+               /* Not initialised */
+               INIT_LIST_HEAD(&obj->siblings);
+
+       } else if (!list_empty(&obj->siblings)) {
+               /* If it is holed up somewhere else, un hook it */
+               yaffs_RemoveObjectFromDirectory(obj);
+       }
+       /* Now add it */
+       list_add(&obj->siblings, &directory->variant.directoryVariant.children);
+       obj->parent = directory;
+
+       if (directory == obj->myDev->unlinkedDir
+           || directory == obj->myDev->deletedDir) {
+               obj->unlinked = 1;
+               obj->myDev->nUnlinkedFiles++;
+               obj->renameAllowed = 0;
+       }
+}
+
+yaffs_Object *yaffs_FindObjectByName(yaffs_Object * directory,
+                                    const YCHAR * name)
+{
+       int sum;
+
+       struct list_head *i;
+       YCHAR buffer[YAFFS_MAX_NAME_LENGTH + 1];
+
+       yaffs_Object *l;
+
+       if (!name) {
+               return NULL;
+       }
+
+       if (!directory) {
+               T(YAFFS_TRACE_ALWAYS,
+                 (TSTR
+                  ("tragedy: yaffs_FindObjectByName: null pointer directory"
+                   TENDSTR)));
+               YBUG();
+       }
+       if (directory->variantType != YAFFS_OBJECT_TYPE_DIRECTORY) {
+               T(YAFFS_TRACE_ALWAYS,
+                 (TSTR
+                  ("tragedy: yaffs_FindObjectByName: non-directory" TENDSTR)));
+               YBUG();
+       }
+
+       sum = yaffs_CalcNameSum(name);
+
+       list_for_each(i, &directory->variant.directoryVariant.children) {
+               if (i) {
+                       l = list_entry(i, yaffs_Object, siblings);
+
+                       yaffs_CheckObjectDetailsLoaded(l);
+
+                       /* Special case for lost-n-found */
+                       if (l->objectId == YAFFS_OBJECTID_LOSTNFOUND) {
+                               if (yaffs_strcmp(name, YAFFS_LOSTNFOUND_NAME) == 0) {
+                                       return l;
+                               }
+                       } else if (yaffs_SumCompare(l->sum, sum) || l->chunkId <= 0)
+                       {
+                               /* LostnFound cunk called Objxxx
+                                * Do a real check
+                                */
+                               yaffs_GetObjectName(l, buffer,
+                                                   YAFFS_MAX_NAME_LENGTH);
+                               if (yaffs_strncmp(name, buffer,YAFFS_MAX_NAME_LENGTH) == 0) {
+                                       return l;
+                               }
+
+                       }
+               }
+       }
+
+       return NULL;
+}
+
+
+#if 0
+int yaffs_ApplyToDirectoryChildren(yaffs_Object * theDir,
+                                  int (*fn) (yaffs_Object *))
+{
+       struct list_head *i;
+       yaffs_Object *l;
+
+       if (!theDir) {
+               T(YAFFS_TRACE_ALWAYS,
+                 (TSTR
+                  ("tragedy: yaffs_FindObjectByName: null pointer directory"
+                   TENDSTR)));
+               YBUG();
+       }
+       if (theDir->variantType != YAFFS_OBJECT_TYPE_DIRECTORY) {
+               T(YAFFS_TRACE_ALWAYS,
+                 (TSTR
+                  ("tragedy: yaffs_FindObjectByName: non-directory" TENDSTR)));
+               YBUG();
+       }
+
+       list_for_each(i, &theDir->variant.directoryVariant.children) {
+               if (i) {
+                       l = list_entry(i, yaffs_Object, siblings);
+                       if (l && !fn(l)) {
+                               return YAFFS_FAIL;
+                       }
+               }
+       }
+
+       return YAFFS_OK;
+
+}
+#endif
+
+/* GetEquivalentObject dereferences any hard links to get to the
+ * actual object.
+ */
+
+yaffs_Object *yaffs_GetEquivalentObject(yaffs_Object * obj)
+{
+       if (obj && obj->variantType == YAFFS_OBJECT_TYPE_HARDLINK) {
+               /* We want the object id of the equivalent object, not this one */
+               obj = obj->variant.hardLinkVariant.equivalentObject;
+               yaffs_CheckObjectDetailsLoaded(obj);
+       }
+       return obj;
+
+}
+
+int yaffs_GetObjectName(yaffs_Object * obj, YCHAR * name, int buffSize)
+{
+       memset(name, 0, buffSize * sizeof(YCHAR));
+
+       yaffs_CheckObjectDetailsLoaded(obj);
+
+       if (obj->objectId == YAFFS_OBJECTID_LOSTNFOUND) {
+               yaffs_strncpy(name, YAFFS_LOSTNFOUND_NAME, buffSize - 1);
+       } else if (obj->chunkId <= 0) {
+               YCHAR locName[20];
+               /* make up a name */
+               yaffs_sprintf(locName, _Y("%s%d"), YAFFS_LOSTNFOUND_PREFIX,
+                             obj->objectId);
+               yaffs_strncpy(name, locName, buffSize - 1);
+
+       }
+#ifdef CONFIG_YAFFS_SHORT_NAMES_IN_RAM
+       else if (obj->shortName[0]) {
+               yaffs_strcpy(name, obj->shortName);
+       }
+#endif
+       else {
+               int result;
+               __u8 *buffer = yaffs_GetTempBuffer(obj->myDev, __LINE__);
+
+               yaffs_ObjectHeader *oh = (yaffs_ObjectHeader *) buffer;
+
+               memset(buffer, 0, obj->myDev->nDataBytesPerChunk);
+
+               if (obj->chunkId >= 0) {
+                       result = yaffs_ReadChunkWithTagsFromNAND(obj->myDev,
+                                                       obj->chunkId, buffer,
+                                                       NULL);
+               }
+               yaffs_strncpy(name, oh->name, buffSize - 1);
+
+               yaffs_ReleaseTempBuffer(obj->myDev, buffer, __LINE__);
+       }
+
+       return yaffs_strlen(name);
+}
+
+int yaffs_GetObjectFileLength(yaffs_Object * obj)
+{
+
+       /* Dereference any hard linking */
+       obj = yaffs_GetEquivalentObject(obj);
+
+       if (obj->variantType == YAFFS_OBJECT_TYPE_FILE) {
+               return obj->variant.fileVariant.fileSize;
+       }
+       if (obj->variantType == YAFFS_OBJECT_TYPE_SYMLINK) {
+               return yaffs_strlen(obj->variant.symLinkVariant.alias);
+       } else {
+               /* Only a directory should drop through to here */
+               return obj->myDev->nDataBytesPerChunk;
+       }
+}
+
+int yaffs_GetObjectLinkCount(yaffs_Object * obj)
+{
+       int count = 0;
+       struct list_head *i;
+
+       if (!obj->unlinked) {
+               count++;        /* the object itself */
+       }
+       list_for_each(i, &obj->hardLinks) {
+               count++;        /* add the hard links; */
+       }
+       return count;
+
+}
+
+int yaffs_GetObjectInode(yaffs_Object * obj)
+{
+       obj = yaffs_GetEquivalentObject(obj);
+
+       return obj->objectId;
+}
+
+unsigned yaffs_GetObjectType(yaffs_Object * obj)
+{
+       obj = yaffs_GetEquivalentObject(obj);
+
+       switch (obj->variantType) {
+       case YAFFS_OBJECT_TYPE_FILE:
+               return DT_REG;
+               break;
+       case YAFFS_OBJECT_TYPE_DIRECTORY:
+               return DT_DIR;
+               break;
+       case YAFFS_OBJECT_TYPE_SYMLINK:
+               return DT_LNK;
+               break;
+       case YAFFS_OBJECT_TYPE_HARDLINK:
+               return DT_REG;
+               break;
+       case YAFFS_OBJECT_TYPE_SPECIAL:
+               if (S_ISFIFO(obj->yst_mode))
+                       return DT_FIFO;
+               if (S_ISCHR(obj->yst_mode))
+                       return DT_CHR;
+               if (S_ISBLK(obj->yst_mode))
+                       return DT_BLK;
+               if (S_ISSOCK(obj->yst_mode))
+                       return DT_SOCK;
+       default:
+               return DT_REG;
+               break;
+       }
+}
+
+YCHAR *yaffs_GetSymlinkAlias(yaffs_Object * obj)
+{
+       obj = yaffs_GetEquivalentObject(obj);
+       if (obj->variantType == YAFFS_OBJECT_TYPE_SYMLINK) {
+               return yaffs_CloneString(obj->variant.symLinkVariant.alias);
+       } else {
+               return yaffs_CloneString(_Y(""));
+       }
+}
+
+#ifndef CONFIG_YAFFS_WINCE
+
+int yaffs_SetAttributes(yaffs_Object * obj, struct iattr *attr)
+{
+       unsigned int valid = attr->ia_valid;
+
+       if (valid & ATTR_MODE)
+               obj->yst_mode = attr->ia_mode;
+       if (valid & ATTR_UID)
+               obj->yst_uid = attr->ia_uid;
+       if (valid & ATTR_GID)
+               obj->yst_gid = attr->ia_gid;
+
+       if (valid & ATTR_ATIME)
+               obj->yst_atime = Y_TIME_CONVERT(attr->ia_atime);
+       if (valid & ATTR_CTIME)
+               obj->yst_ctime = Y_TIME_CONVERT(attr->ia_ctime);
+       if (valid & ATTR_MTIME)
+               obj->yst_mtime = Y_TIME_CONVERT(attr->ia_mtime);
+
+       if (valid & ATTR_SIZE)
+               yaffs_ResizeFile(obj, attr->ia_size);
+
+       yaffs_UpdateObjectHeader(obj, NULL, 1, 0, 0);
+
+       return YAFFS_OK;
+
+}
+int yaffs_GetAttributes(yaffs_Object * obj, struct iattr *attr)
+{
+       unsigned int valid = 0;
+
+       attr->ia_mode = obj->yst_mode;
+       valid |= ATTR_MODE;
+       attr->ia_uid = obj->yst_uid;
+       valid |= ATTR_UID;
+       attr->ia_gid = obj->yst_gid;
+       valid |= ATTR_GID;
+
+       Y_TIME_CONVERT(attr->ia_atime) = obj->yst_atime;
+       valid |= ATTR_ATIME;
+       Y_TIME_CONVERT(attr->ia_ctime) = obj->yst_ctime;
+       valid |= ATTR_CTIME;
+       Y_TIME_CONVERT(attr->ia_mtime) = obj->yst_mtime;
+       valid |= ATTR_MTIME;
+
+       attr->ia_size = yaffs_GetFileSize(obj);
+       valid |= ATTR_SIZE;
+
+       attr->ia_valid = valid;
+
+       return YAFFS_OK;
+
+}
+
+#endif
+
+#if 0
+int yaffs_DumpObject(yaffs_Object * obj)
+{
+       YCHAR name[257];
+
+       yaffs_GetObjectName(obj, name, 256);
+
+       T(YAFFS_TRACE_ALWAYS,
+         (TSTR
+          ("Object %d, inode %d \"%s\"\n dirty %d valid %d serial %d sum %d"
+           " chunk %d type %d size %d\n"
+           TENDSTR), obj->objectId, yaffs_GetObjectInode(obj), name,
+          obj->dirty, obj->valid, obj->serial, obj->sum, obj->chunkId,
+          yaffs_GetObjectType(obj), yaffs_GetObjectFileLength(obj)));
+
+       return YAFFS_OK;
+}
+#endif
+
+/*---------------------------- Initialisation code -------------------------------------- */
+
+static int yaffs_CheckDevFunctions(const yaffs_Device * dev)
+{
+
+       /* Common functions, gotta have */
+       if (!dev->eraseBlockInNAND || !dev->initialiseNAND)
+               return 0;
+
+#ifdef CONFIG_YAFFS_YAFFS2
+
+       /* Can use the "with tags" style interface for yaffs1 or yaffs2 */
+       if (dev->writeChunkWithTagsToNAND &&
+           dev->readChunkWithTagsFromNAND &&
+           !dev->writeChunkToNAND &&
+           !dev->readChunkFromNAND &&
+           dev->markNANDBlockBad && dev->queryNANDBlock)
+               return 1;
+#endif
+
+       /* Can use the "spare" style interface for yaffs1 */
+       if (!dev->isYaffs2 &&
+           !dev->writeChunkWithTagsToNAND &&
+           !dev->readChunkWithTagsFromNAND &&
+           dev->writeChunkToNAND &&
+           dev->readChunkFromNAND &&
+           !dev->markNANDBlockBad && !dev->queryNANDBlock)
+               return 1;
+
+       return 0;               /* bad */
+}
+
+
+static int yaffs_CreateInitialDirectories(yaffs_Device *dev)
+{
+       /* Initialise the unlinked, deleted, root and lost and found directories */
+
+       dev->lostNFoundDir = dev->rootDir =  NULL;
+       dev->unlinkedDir = dev->deletedDir = NULL;
+
+       dev->unlinkedDir =
+           yaffs_CreateFakeDirectory(dev, YAFFS_OBJECTID_UNLINKED, S_IFDIR);
+
+       dev->deletedDir =
+           yaffs_CreateFakeDirectory(dev, YAFFS_OBJECTID_DELETED, S_IFDIR);
+
+       dev->rootDir =
+           yaffs_CreateFakeDirectory(dev, YAFFS_OBJECTID_ROOT,
+                                     YAFFS_ROOT_MODE | S_IFDIR);
+       dev->lostNFoundDir =
+           yaffs_CreateFakeDirectory(dev, YAFFS_OBJECTID_LOSTNFOUND,
+                                     YAFFS_LOSTNFOUND_MODE | S_IFDIR);
+
+       if(dev->lostNFoundDir && dev->rootDir && dev->unlinkedDir && dev->deletedDir){
+               yaffs_AddObjectToDirectory(dev->rootDir, dev->lostNFoundDir);
+               return YAFFS_OK;
+       }
+
+       return YAFFS_FAIL;
+}
+
+int yaffs_GutsInitialise(yaffs_Device * dev)
+{
+       int init_failed = 0;
+       unsigned x;
+       int bits;
+
+       T(YAFFS_TRACE_TRACING, (TSTR("yaffs: yaffs_GutsInitialise()" TENDSTR)));
+
+       /* Check stuff that must be set */
+
+       if (!dev) {
+               T(YAFFS_TRACE_ALWAYS, (TSTR("yaffs: Need a device" TENDSTR)));
+               return YAFFS_FAIL;
+       }
+
+       dev->internalStartBlock = dev->startBlock;
+       dev->internalEndBlock = dev->endBlock;
+       dev->blockOffset = 0;
+       dev->chunkOffset = 0;
+       dev->nFreeChunks = 0;
+
+       if (dev->startBlock == 0) {
+               dev->internalStartBlock = dev->startBlock + 1;
+               dev->internalEndBlock = dev->endBlock + 1;
+               dev->blockOffset = 1;
+               dev->chunkOffset = dev->nChunksPerBlock;
+       }
+
+       /* Check geometry parameters. */
+
+       if ((dev->isYaffs2 && dev->nDataBytesPerChunk < 1024) ||
+           (!dev->isYaffs2 && dev->nDataBytesPerChunk != 512) ||
+            dev->nChunksPerBlock < 2 ||
+            dev->nReservedBlocks < 2 ||
+            dev->internalStartBlock <= 0 ||
+            dev->internalEndBlock <= 0 ||
+            dev->internalEndBlock <= (dev->internalStartBlock + dev->nReservedBlocks + 2)      // otherwise it is too small
+           ) {
+               T(YAFFS_TRACE_ALWAYS,
+                 (TSTR
+                  ("yaffs: NAND geometry problems: chunk size %d, type is yaffs%s "
+                   TENDSTR), dev->nDataBytesPerChunk, dev->isYaffs2 ? "2" : ""));
+               return YAFFS_FAIL;
+       }
+
+       if (yaffs_InitialiseNAND(dev) != YAFFS_OK) {
+               T(YAFFS_TRACE_ALWAYS,
+                 (TSTR("yaffs: InitialiseNAND failed" TENDSTR)));
+               return YAFFS_FAIL;
+       }
+
+       /* Got the right mix of functions? */
+       if (!yaffs_CheckDevFunctions(dev)) {
+               /* Function missing */
+               T(YAFFS_TRACE_ALWAYS,
+                 (TSTR
+                  ("yaffs: device function(s) missing or wrong\n" TENDSTR)));
+
+               return YAFFS_FAIL;
+       }
+
+       /* This is really a compilation check. */
+       if (!yaffs_CheckStructures()) {
+               T(YAFFS_TRACE_ALWAYS,
+                 (TSTR("yaffs_CheckStructures failed\n" TENDSTR)));
+               return YAFFS_FAIL;
+       }
+
+       if (dev->isMounted) {
+               T(YAFFS_TRACE_ALWAYS,
+                 (TSTR("yaffs: device already mounted\n" TENDSTR)));
+               return YAFFS_FAIL;
+       }
+
+       /* Finished with most checks. One or two more checks happen later on too. */
+
+       dev->isMounted = 1;
+
+
+
+       /* OK now calculate a few things for the device */
+
+       /*
+        *  Calculate all the chunk size manipulation numbers:
+        */
+        /* Start off assuming it is a power of 2 */
+        dev->chunkShift = ShiftDiv(dev->nDataBytesPerChunk);
+        dev->chunkMask = (1<<dev->chunkShift) - 1;
+
+        if(dev->nDataBytesPerChunk == (dev->chunkMask + 1)){
+               /* Yes it is a power of 2, disable crumbs */
+               dev->crumbMask = 0;
+               dev->crumbShift = 0;
+               dev->crumbsPerChunk = 0;
+        } else {
+               /* Not a power of 2, use crumbs instead */
+               dev->crumbShift = ShiftDiv(sizeof(yaffs_PackedTags2TagsPart));
+               dev->crumbMask = (1<<dev->crumbShift)-1;
+               dev->crumbsPerChunk = dev->nDataBytesPerChunk/(1 << dev->crumbShift);
+               dev->chunkShift = 0;
+               dev->chunkMask = 0;
+       }
+
+
+       /*
+        * Calculate chunkGroupBits.
+        * We need to find the next power of 2 > than internalEndBlock
+        */
+
+       x = dev->nChunksPerBlock * (dev->internalEndBlock + 1);
+
+       bits = ShiftsGE(x);
+
+       /* Set up tnode width if wide tnodes are enabled. */
+       if(!dev->wideTnodesDisabled){
+               /* bits must be even so that we end up with 32-bit words */
+               if(bits & 1)
+                       bits++;
+               if(bits < 16)
+                       dev->tnodeWidth = 16;
+               else
+                       dev->tnodeWidth = bits;
+       }
+       else
+               dev->tnodeWidth = 16;
+
+       dev->tnodeMask = (1<<dev->tnodeWidth)-1;
+
+       /* Level0 Tnodes are 16 bits or wider (if wide tnodes are enabled),
+        * so if the bitwidth of the
+        * chunk range we're using is greater than 16 we need
+        * to figure out chunk shift and chunkGroupSize
+        */
+
+       if (bits <= dev->tnodeWidth)
+               dev->chunkGroupBits = 0;
+       else
+               dev->chunkGroupBits = bits - dev->tnodeWidth;
+
+
+       dev->chunkGroupSize = 1 << dev->chunkGroupBits;
+
+       if (dev->nChunksPerBlock < dev->chunkGroupSize) {
+               /* We have a problem because the soft delete won't work if
+                * the chunk group size > chunks per block.
+                * This can be remedied by using larger "virtual blocks".
+                */
+               T(YAFFS_TRACE_ALWAYS,
+                 (TSTR("yaffs: chunk group too large\n" TENDSTR)));
+
+               return YAFFS_FAIL;
+       }
+
+       /* OK, we've finished verifying the device, lets continue with initialisation */
+
+       /* More device initialisation */
+       dev->garbageCollections = 0;
+       dev->passiveGarbageCollections = 0;
+       dev->currentDirtyChecker = 0;
+       dev->bufferedBlock = -1;
+       dev->doingBufferedBlockRewrite = 0;
+       dev->nDeletedFiles = 0;
+       dev->nBackgroundDeletions = 0;
+       dev->nUnlinkedFiles = 0;
+       dev->eccFixed = 0;
+       dev->eccUnfixed = 0;
+       dev->tagsEccFixed = 0;
+       dev->tagsEccUnfixed = 0;
+       dev->nErasureFailures = 0;
+       dev->nErasedBlocks = 0;
+       dev->isDoingGC = 0;
+       dev->hasPendingPrioritisedGCs = 1; /* Assume the worst for now, will get fixed on first GC */
+
+       /* Initialise temporary buffers and caches. */
+       if(!yaffs_InitialiseTempBuffers(dev))
+               init_failed = 1;
+
+       dev->srCache = NULL;
+       dev->gcCleanupList = NULL;
+
+
+       if (!init_failed &&
+           dev->nShortOpCaches > 0) {
+               int i;
+               __u8 *buf;
+               int srCacheBytes = dev->nShortOpCaches * sizeof(yaffs_ChunkCache);
+
+               if (dev->nShortOpCaches > YAFFS_MAX_SHORT_OP_CACHES) {
+                       dev->nShortOpCaches = YAFFS_MAX_SHORT_OP_CACHES;
+               }
+
+               buf = dev->srCache =  YMALLOC(srCacheBytes);
+
+               if(dev->srCache)
+                       memset(dev->srCache,0,srCacheBytes);
+
+               for (i = 0; i < dev->nShortOpCaches && buf; i++) {
+                       dev->srCache[i].object = NULL;
+                       dev->srCache[i].lastUse = 0;
+                       dev->srCache[i].dirty = 0;
+                       dev->srCache[i].data = buf = YMALLOC_DMA(dev->nDataBytesPerChunk);
+               }
+               if(!buf)
+                       init_failed = 1;
+
+               dev->srLastUse = 0;
+       }
+
+       dev->cacheHits = 0;
+
+       if(!init_failed){
+               dev->gcCleanupList = YMALLOC(dev->nChunksPerBlock * sizeof(__u32));
+               if(!dev->gcCleanupList)
+                       init_failed = 1;
+       }
+
+       if (dev->isYaffs2) {
+               dev->useHeaderFileSize = 1;
+       }
+       if(!init_failed && !yaffs_InitialiseBlocks(dev))
+               init_failed = 1;
+
+       yaffs_InitialiseTnodes(dev);
+       yaffs_InitialiseObjects(dev);
+
+       if(!init_failed && !yaffs_CreateInitialDirectories(dev))
+               init_failed = 1;
+
+
+       if(!init_failed){
+               /* Now scan the flash. */
+               if (dev->isYaffs2) {
+                       if(yaffs_CheckpointRestore(dev)) {
+                               T(YAFFS_TRACE_ALWAYS,
+                                 (TSTR("yaffs: restored from checkpoint" TENDSTR)));
+                       } else {
+
+                               /* Clean up the mess caused by an aborted checkpoint load
+                                * and scan backwards.
+                                */
+                               yaffs_DeinitialiseBlocks(dev);
+                               yaffs_DeinitialiseTnodes(dev);
+                               yaffs_DeinitialiseObjects(dev);
+
+
+                               dev->nErasedBlocks = 0;
+                               dev->nFreeChunks = 0;
+                               dev->allocationBlock = -1;
+                               dev->allocationPage = -1;
+                               dev->nDeletedFiles = 0;
+                               dev->nUnlinkedFiles = 0;
+                               dev->nBackgroundDeletions = 0;
+                               dev->oldestDirtySequence = 0;
+
+                               if(!init_failed && !yaffs_InitialiseBlocks(dev))
+                                       init_failed = 1;
+
+                               yaffs_InitialiseTnodes(dev);
+                               yaffs_InitialiseObjects(dev);
+
+                               if(!init_failed && !yaffs_CreateInitialDirectories(dev))
+                                       init_failed = 1;
+
+                               if(!init_failed && !yaffs_ScanBackwards(dev))
+                                       init_failed = 1;
+                       }
+               }else
+                       if(!yaffs_Scan(dev))
+                               init_failed = 1;
+       }
+
+       if(init_failed){
+               /* Clean up the mess */
+               T(YAFFS_TRACE_TRACING,
+                 (TSTR("yaffs: yaffs_GutsInitialise() aborted.\n" TENDSTR)));
+
+               yaffs_Deinitialise(dev);
+               return YAFFS_FAIL;
+       }
+
+       /* Zero out stats */
+       dev->nPageReads = 0;
+       dev->nPageWrites = 0;
+       dev->nBlockErasures = 0;
+       dev->nGCCopies = 0;
+       dev->nRetriedWrites = 0;
+
+       dev->nRetiredBlocks = 0;
+
+       yaffs_VerifyFreeChunks(dev);
+       yaffs_VerifyBlocks(dev);
+
+
+       T(YAFFS_TRACE_TRACING,
+         (TSTR("yaffs: yaffs_GutsInitialise() done.\n" TENDSTR)));
+       return YAFFS_OK;
+
+}
+
+void yaffs_Deinitialise(yaffs_Device * dev)
+{
+       if (dev->isMounted) {
+               int i;
+
+               yaffs_DeinitialiseBlocks(dev);
+               yaffs_DeinitialiseTnodes(dev);
+               yaffs_DeinitialiseObjects(dev);
+               if (dev->nShortOpCaches > 0 &&
+                   dev->srCache) {
+
+                       for (i = 0; i < dev->nShortOpCaches; i++) {
+                               if(dev->srCache[i].data)
+                                       YFREE(dev->srCache[i].data);
+                               dev->srCache[i].data = NULL;
+                       }
+
+                       YFREE(dev->srCache);
+                       dev->srCache = NULL;
+               }
+
+               YFREE(dev->gcCleanupList);
+
+               for (i = 0; i < YAFFS_N_TEMP_BUFFERS; i++) {
+                       YFREE(dev->tempBuffer[i].buffer);
+               }
+
+               dev->isMounted = 0;
+       }
+
+}
+
+static int yaffs_CountFreeChunks(yaffs_Device * dev)
+{
+       int nFree;
+       int b;
+
+       yaffs_BlockInfo *blk;
+
+       for (nFree = 0, b = dev->internalStartBlock; b <= dev->internalEndBlock;
+            b++) {
+               blk = yaffs_GetBlockInfo(dev, b);
+
+               switch (blk->blockState) {
+               case YAFFS_BLOCK_STATE_EMPTY:
+               case YAFFS_BLOCK_STATE_ALLOCATING:
+               case YAFFS_BLOCK_STATE_COLLECTING:
+               case YAFFS_BLOCK_STATE_FULL:
+                       nFree +=
+                           (dev->nChunksPerBlock - blk->pagesInUse +
+                            blk->softDeletions);
+                       break;
+               default:
+                       break;
+               }
+
+       }
+
+       return nFree;
+}
+
+int yaffs_GetNumberOfFreeChunks(yaffs_Device * dev)
+{
+       /* This is what we report to the outside world */
+
+       int nFree;
+       int nDirtyCacheChunks;
+       int blocksForCheckpoint;
+
+#if 1
+       nFree = dev->nFreeChunks;
+#else
+       nFree = yaffs_CountFreeChunks(dev);
+#endif
+
+       nFree += dev->nDeletedFiles;
+
+       /* Now count the number of dirty chunks in the cache and subtract those */
+
+       {
+               int i;
+               for (nDirtyCacheChunks = 0, i = 0; i < dev->nShortOpCaches; i++) {
+                       if (dev->srCache[i].dirty)
+                               nDirtyCacheChunks++;
+               }
+       }
+
+       nFree -= nDirtyCacheChunks;
+
+       nFree -= ((dev->nReservedBlocks + 1) * dev->nChunksPerBlock);
+
+       /* Now we figure out how much to reserve for the checkpoint and report that... */
+       blocksForCheckpoint = dev->nCheckpointReservedBlocks - dev->blocksInCheckpoint;
+       if(blocksForCheckpoint < 0)
+               blocksForCheckpoint = 0;
+
+       nFree -= (blocksForCheckpoint * dev->nChunksPerBlock);
+
+       if (nFree < 0)
+               nFree = 0;
+
+       return nFree;
+
+}
+
+static int yaffs_freeVerificationFailures;
+
+static void yaffs_VerifyFreeChunks(yaffs_Device * dev)
+{
+       int counted;
+       int difference;
+
+       if(yaffs_SkipVerification(dev))
+               return;
+
+       counted = yaffs_CountFreeChunks(dev);
+
+       difference = dev->nFreeChunks - counted;
+
+       if (difference) {
+               T(YAFFS_TRACE_ALWAYS,
+                 (TSTR("Freechunks verification failure %d %d %d" TENDSTR),
+                  dev->nFreeChunks, counted, difference));
+               yaffs_freeVerificationFailures++;
+       }
+}
+
+/*---------------------------------------- YAFFS test code ----------------------*/
+
+#define yaffs_CheckStruct(structure,syze, name) \
+          if(sizeof(structure) != syze) \
+              { \
+                T(YAFFS_TRACE_ALWAYS,(TSTR("%s should be %d but is %d\n" TENDSTR),\
+                name,syze,sizeof(structure))); \
+                return YAFFS_FAIL; \
+               }
+
+static int yaffs_CheckStructures(void)
+{
+/*      yaffs_CheckStruct(yaffs_Tags,8,"yaffs_Tags") */
+/*      yaffs_CheckStruct(yaffs_TagsUnion,8,"yaffs_TagsUnion") */
+/*      yaffs_CheckStruct(yaffs_Spare,16,"yaffs_Spare") */
+#ifndef CONFIG_YAFFS_TNODE_LIST_DEBUG
+       yaffs_CheckStruct(yaffs_Tnode, 2 * YAFFS_NTNODES_LEVEL0, "yaffs_Tnode")
+#endif
+           yaffs_CheckStruct(yaffs_ObjectHeader, 512, "yaffs_ObjectHeader")
+
+           return YAFFS_OK;
+}
diff -Naur u-boot-2009.03_orig/fs/yaffs2/yaffs_mtdif.c u-boot-2009.03/fs/yaffs2/yaffs_mtdif.c
--- u-boot-2009.03_orig/fs/yaffs2/yaffs_mtdif.c 2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/fs/yaffs2/yaffs_mtdif.c      2009-03-31 14:56:33.095297600 -0700
@@ -1,246 +1,246 @@
-/*
- * YAFFS: Yet Another Flash File System. A NAND-flash specific file system.
- *
- * Copyright (C) 2002-2007 Aleph One Ltd.
- *   for Toby Churchill Ltd and Brightstar Engineering
- *
- * Created by Charles Manning <charles@aleph1.co.uk>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-/* XXX U-BOOT XXX */
-#include <common.h>
-
-const char *yaffs_mtdif_c_version =
-    "$Id: yaffs_mtdif.c,v 1.19 2007/02/14 01:09:06 wookey Exp $";
-
-#include "yportenv.h"
-
-
-#include "yaffs_mtdif.h"
-
-#include "linux/mtd/mtd.h"
-#include "linux/types.h"
-#include "linux/time.h"
-#include "linux/mtd/nand.h"
-
-#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18))
-static struct nand_oobinfo yaffs_oobinfo = {
-       .useecc = 1,
-       .eccbytes = 6,
-       .eccpos = {8, 9, 10, 13, 14, 15}
-};
-
-static struct nand_oobinfo yaffs_noeccinfo = {
-       .useecc = 0,
-};
-#endif
-
-#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17))
-static inline void translate_spare2oob(const yaffs_Spare *spare, __u8 *oob)
-{
-       oob[0] = spare->tagByte0;
-       oob[1] = spare->tagByte1;
-       oob[2] = spare->tagByte2;
-       oob[3] = spare->tagByte3;
-       oob[4] = spare->tagByte4;
-       oob[5] = spare->tagByte5 & 0x3f;
-       oob[5] |= spare->blockStatus == 'Y' ? 0: 0x80;
-       oob[5] |= spare->pageStatus == 0 ? 0: 0x40;
-       oob[6] = spare->tagByte6;
-       oob[7] = spare->tagByte7;
-}
-
-static inline void translate_oob2spare(yaffs_Spare *spare, __u8 *oob)
-{
-       struct yaffs_NANDSpare *nspare = (struct yaffs_NANDSpare *)spare;
-       spare->tagByte0 = oob[0];
-       spare->tagByte1 = oob[1];
-       spare->tagByte2 = oob[2];
-       spare->tagByte3 = oob[3];
-       spare->tagByte4 = oob[4];
-       spare->tagByte5 = oob[5] == 0xff ? 0xff : oob[5] & 0x3f;
-       spare->blockStatus = oob[5] & 0x80 ? 0xff : 'Y';
-       spare->pageStatus = oob[5] & 0x40 ? 0xff : 0;
-       spare->ecc1[0] = spare->ecc1[1] = spare->ecc1[2] = 0xff;
-       spare->tagByte6 = oob[6];
-       spare->tagByte7 = oob[7];
-       spare->ecc2[0] = spare->ecc2[1] = spare->ecc2[2] = 0xff;
-
-       nspare->eccres1 = nspare->eccres2 = 0; /* FIXME */
-}
-#endif
-
-int nandmtd_WriteChunkToNAND(yaffs_Device * dev, int chunkInNAND,
-                            const __u8 * data, const yaffs_Spare * spare)
-{
-       struct mtd_info *mtd = (struct mtd_info *)(dev->genericDevice);
-#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17))
-       struct mtd_oob_ops ops;
-#endif
-       size_t dummy;
-       int retval = 0;
-
-       loff_t addr = ((loff_t) chunkInNAND) * dev->nDataBytesPerChunk;
-#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17))
-       __u8 spareAsBytes[8]; /* OOB */
-
-       if (data && !spare)
-               retval = mtd->write(mtd, addr, dev->nDataBytesPerChunk,
-                               &dummy, data);
-       else if (spare) {
-               if (dev->useNANDECC) {
-                       translate_spare2oob(spare, spareAsBytes);
-                       ops.mode = MTD_OOB_AUTO;
-                       ops.ooblen = 8; /* temp hack */
-               } else {
-                       ops.mode = MTD_OOB_RAW;
-                       ops.ooblen = YAFFS_BYTES_PER_SPARE;
-               }
-               ops.len = data ? dev->nDataBytesPerChunk : ops.ooblen;
-               ops.datbuf = (u8 *)data;
-               ops.ooboffs = 0;
-               ops.oobbuf = spareAsBytes;
-               retval = mtd->write_oob(mtd, addr, &ops);
-       }
-#else
-       __u8 *spareAsBytes = (__u8 *) spare;
-
-       if (data && spare) {
-               if (dev->useNANDECC)
-                       retval =
-                           mtd->write_ecc(mtd, addr, dev->nDataBytesPerChunk,
-                                          &dummy, data, spareAsBytes,
-                                          &yaffs_oobinfo);
-               else
-                       retval =
-                           mtd->write_ecc(mtd, addr, dev->nDataBytesPerChunk,
-                                          &dummy, data, spareAsBytes,
-                                          &yaffs_noeccinfo);
-       } else {
-               if (data)
-                       retval =
-                           mtd->write(mtd, addr, dev->nDataBytesPerChunk, &dummy,
-                                      data);
-               if (spare)
-                       retval =
-                           mtd->write_oob(mtd, addr, YAFFS_BYTES_PER_SPARE,
-                                          &dummy, spareAsBytes);
-       }
-#endif
-
-       if (retval == 0)
-               return YAFFS_OK;
-       else
-               return YAFFS_FAIL;
-}
-
-int nandmtd_ReadChunkFromNAND(yaffs_Device * dev, int chunkInNAND, __u8 * data,
-                             yaffs_Spare * spare)
-{
-       struct mtd_info *mtd = (struct mtd_info *)(dev->genericDevice);
-#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17))
-       struct mtd_oob_ops ops;
-#endif
-       size_t dummy;
-       int retval = 0;
-
-       loff_t addr = ((loff_t) chunkInNAND) * dev->nDataBytesPerChunk;
-#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17))
-       __u8 spareAsBytes[8]; /* OOB */
-
-       if (data && !spare)
-               retval = mtd->read(mtd, addr, dev->nDataBytesPerChunk,
-                               &dummy, data);
-       else if (spare) {
-               if (dev->useNANDECC) {
-                       ops.mode = MTD_OOB_AUTO;
-                       ops.ooblen = 8; /* temp hack */
-               } else {
-                       ops.mode = MTD_OOB_RAW;
-                       ops.ooblen = YAFFS_BYTES_PER_SPARE;
-               }
-               ops.len = data ? dev->nDataBytesPerChunk : ops.ooblen;
-               ops.datbuf = data;
-               ops.ooboffs = 0;
-               ops.oobbuf = spareAsBytes;
-               retval = mtd->read_oob(mtd, addr, &ops);
-               if (dev->useNANDECC)
-                       translate_oob2spare(spare, spareAsBytes);
-       }
-#else
-       __u8 *spareAsBytes = (__u8 *) spare;
-
-       if (data && spare) {
-               if (dev->useNANDECC) {
-                       /* Careful, this call adds 2 ints */
-                       /* to the end of the spare data.  Calling function */
-                       /* should allocate enough memory for spare, */
-                       /* i.e. [YAFFS_BYTES_PER_SPARE+2*sizeof(int)]. */
-                       retval =
-                           mtd->read_ecc(mtd, addr, dev->nDataBytesPerChunk,
-                                         &dummy, data, spareAsBytes,
-                                         &yaffs_oobinfo);
-               } else {
-                       retval =
-                           mtd->read_ecc(mtd, addr, dev->nDataBytesPerChunk,
-                                         &dummy, data, spareAsBytes,
-                                         &yaffs_noeccinfo);
-               }
-       } else {
-               if (data)
-                       retval =
-                           mtd->read(mtd, addr, dev->nDataBytesPerChunk, &dummy,
-                                     data);
-               if (spare)
-                       retval =
-                           mtd->read_oob(mtd, addr, YAFFS_BYTES_PER_SPARE,
-                                         &dummy, spareAsBytes);
-       }
-#endif
-
-       if (retval == 0)
-               return YAFFS_OK;
-       else
-               return YAFFS_FAIL;
-}
-
-int nandmtd_EraseBlockInNAND(yaffs_Device * dev, int blockNumber)
-{
-       struct mtd_info *mtd = (struct mtd_info *)(dev->genericDevice);
-       __u32 addr =
-           ((loff_t) blockNumber) * dev->nDataBytesPerChunk
-               * dev->nChunksPerBlock;
-       struct erase_info ei;
-       int retval = 0;
-
-       ei.mtd = mtd;
-       ei.addr = addr;
-       ei.len = dev->nDataBytesPerChunk * dev->nChunksPerBlock;
-       ei.time = 1000;
-       ei.retries = 2;
-       ei.callback = NULL;
-       ei.priv = (u_long) dev;
-
-       /* Todo finish off the ei if required */
-
-/* XXX U-BOOT XXX */
-#if 0
-       sema_init(&dev->sem, 0);
-#endif
-
-       retval = mtd->erase(mtd, &ei);
-
-       if (retval == 0)
-               return YAFFS_OK;
-       else
-               return YAFFS_FAIL;
-}
-
-int nandmtd_InitialiseNAND(yaffs_Device * dev)
-{
-       return YAFFS_OK;
-}
+/*
+ * YAFFS: Yet Another Flash File System. A NAND-flash specific file system.
+ *
+ * Copyright (C) 2002-2007 Aleph One Ltd.
+ *   for Toby Churchill Ltd and Brightstar Engineering
+ *
+ * Created by Charles Manning <charles@aleph1.co.uk>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+/* XXX U-BOOT XXX */
+#include <common.h>
+
+const char *yaffs_mtdif_c_version =
+    "$Id: yaffs_mtdif.c,v 1.1.1.1 2009/03/25 22:22:12 kenagy Exp $";
+
+#include "yportenv.h"
+
+
+#include "yaffs_mtdif.h"
+
+#include "linux/mtd/mtd.h"
+#include "linux/types.h"
+#include "linux/time.h"
+#include "linux/mtd/nand.h"
+
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18))
+static struct nand_oobinfo yaffs_oobinfo = {
+       .useecc = 1,
+       .eccbytes = 6,
+       .eccpos = {8, 9, 10, 13, 14, 15}
+};
+
+static struct nand_oobinfo yaffs_noeccinfo = {
+       .useecc = 0,
+};
+#endif
+
+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17))
+static inline void translate_spare2oob(const yaffs_Spare *spare, __u8 *oob)
+{
+       oob[0] = spare->tagByte0;
+       oob[1] = spare->tagByte1;
+       oob[2] = spare->tagByte2;
+       oob[3] = spare->tagByte3;
+       oob[4] = spare->tagByte4;
+       oob[5] = spare->tagByte5 & 0x3f;
+       oob[5] |= spare->blockStatus == 'Y' ? 0: 0x80;
+       oob[5] |= spare->pageStatus == 0 ? 0: 0x40;
+       oob[6] = spare->tagByte6;
+       oob[7] = spare->tagByte7;
+}
+
+static inline void translate_oob2spare(yaffs_Spare *spare, __u8 *oob)
+{
+       struct yaffs_NANDSpare *nspare = (struct yaffs_NANDSpare *)spare;
+       spare->tagByte0 = oob[0];
+       spare->tagByte1 = oob[1];
+       spare->tagByte2 = oob[2];
+       spare->tagByte3 = oob[3];
+       spare->tagByte4 = oob[4];
+       spare->tagByte5 = oob[5] == 0xff ? 0xff : oob[5] & 0x3f;
+       spare->blockStatus = oob[5] & 0x80 ? 0xff : 'Y';
+       spare->pageStatus = oob[5] & 0x40 ? 0xff : 0;
+       spare->ecc1[0] = spare->ecc1[1] = spare->ecc1[2] = 0xff;
+       spare->tagByte6 = oob[6];
+       spare->tagByte7 = oob[7];
+       spare->ecc2[0] = spare->ecc2[1] = spare->ecc2[2] = 0xff;
+
+       nspare->eccres1 = nspare->eccres2 = 0; /* FIXME */
+}
+#endif
+
+int nandmtd_WriteChunkToNAND(yaffs_Device * dev, int chunkInNAND,
+                            const __u8 * data, const yaffs_Spare * spare)
+{
+       struct mtd_info *mtd = (struct mtd_info *)(dev->genericDevice);
+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17))
+       struct mtd_oob_ops ops;
+#endif
+       size_t dummy;
+       int retval = 0;
+
+       loff_t addr = ((loff_t) chunkInNAND) * dev->nDataBytesPerChunk;
+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17))
+       __u8 spareAsBytes[8]; /* OOB */
+
+       if (data && !spare)
+               retval = mtd->write(mtd, addr, dev->nDataBytesPerChunk,
+                               &dummy, data);
+       else if (spare) {
+               if (dev->useNANDECC) {
+                       translate_spare2oob(spare, spareAsBytes);
+                       ops.mode = MTD_OOB_AUTO;
+                       ops.ooblen = 8; /* temp hack */
+               } else {
+                       ops.mode = MTD_OOB_RAW;
+                       ops.ooblen = YAFFS_BYTES_PER_SPARE;
+               }
+               ops.len = data ? dev->nDataBytesPerChunk : ops.ooblen;
+               ops.datbuf = (u8 *)data;
+               ops.ooboffs = 0;
+               ops.oobbuf = spareAsBytes;
+               retval = mtd->write_oob(mtd, addr, &ops);
+       }
+#else
+       __u8 *spareAsBytes = (__u8 *) spare;
+
+       if (data && spare) {
+               if (dev->useNANDECC)
+                       retval =
+                           mtd->write_ecc(mtd, addr, dev->nDataBytesPerChunk,
+                                          &dummy, data, spareAsBytes,
+                                          &yaffs_oobinfo);
+               else
+                       retval =
+                           mtd->write_ecc(mtd, addr, dev->nDataBytesPerChunk,
+                                          &dummy, data, spareAsBytes,
+                                          &yaffs_noeccinfo);
+       } else {
+               if (data)
+                       retval =
+                           mtd->write(mtd, addr, dev->nDataBytesPerChunk, &dummy,
+                                      data);
+               if (spare)
+                       retval =
+                           mtd->write_oob(mtd, addr, YAFFS_BYTES_PER_SPARE,
+                                          &dummy, spareAsBytes);
+       }
+#endif
+
+       if (retval == 0)
+               return YAFFS_OK;
+       else
+               return YAFFS_FAIL;
+}
+
+int nandmtd_ReadChunkFromNAND(yaffs_Device * dev, int chunkInNAND, __u8 * data,
+                             yaffs_Spare * spare)
+{
+       struct mtd_info *mtd = (struct mtd_info *)(dev->genericDevice);
+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17))
+       struct mtd_oob_ops ops;
+#endif
+       size_t dummy;
+       int retval = 0;
+
+       loff_t addr = ((loff_t) chunkInNAND) * dev->nDataBytesPerChunk;
+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17))
+       __u8 spareAsBytes[8]; /* OOB */
+
+       if (data && !spare)
+               retval = mtd->read(mtd, addr, dev->nDataBytesPerChunk,
+                               &dummy, data);
+       else if (spare) {
+               if (dev->useNANDECC) {
+                       ops.mode = MTD_OOB_AUTO;
+                       ops.ooblen = 8; /* temp hack */
+               } else {
+                       ops.mode = MTD_OOB_RAW;
+                       ops.ooblen = YAFFS_BYTES_PER_SPARE;
+               }
+               ops.len = data ? dev->nDataBytesPerChunk : ops.ooblen;
+               ops.datbuf = data;
+               ops.ooboffs = 0;
+               ops.oobbuf = spareAsBytes;
+               retval = mtd->read_oob(mtd, addr, &ops);
+               if (dev->useNANDECC)
+                       translate_oob2spare(spare, spareAsBytes);
+       }
+#else
+       __u8 *spareAsBytes = (__u8 *) spare;
+
+       if (data && spare) {
+               if (dev->useNANDECC) {
+                       /* Careful, this call adds 2 ints */
+                       /* to the end of the spare data.  Calling function */
+                       /* should allocate enough memory for spare, */
+                       /* i.e. [YAFFS_BYTES_PER_SPARE+2*sizeof(int)]. */
+                       retval =
+                           mtd->read_ecc(mtd, addr, dev->nDataBytesPerChunk,
+                                         &dummy, data, spareAsBytes,
+                                         &yaffs_oobinfo);
+               } else {
+                       retval =
+                           mtd->read_ecc(mtd, addr, dev->nDataBytesPerChunk,
+                                         &dummy, data, spareAsBytes,
+                                         &yaffs_noeccinfo);
+               }
+       } else {
+               if (data)
+                       retval =
+                           mtd->read(mtd, addr, dev->nDataBytesPerChunk, &dummy,
+                                     data);
+               if (spare)
+                       retval =
+                           mtd->read_oob(mtd, addr, YAFFS_BYTES_PER_SPARE,
+                                         &dummy, spareAsBytes);
+       }
+#endif
+
+       if (retval == 0)
+               return YAFFS_OK;
+       else
+               return YAFFS_FAIL;
+}
+
+int nandmtd_EraseBlockInNAND(yaffs_Device * dev, int blockNumber)
+{
+       struct mtd_info *mtd = (struct mtd_info *)(dev->genericDevice);
+       __u32 addr =
+           ((loff_t) blockNumber) * dev->nDataBytesPerChunk
+               * dev->nChunksPerBlock;
+       struct erase_info ei;
+       int retval = 0;
+
+       ei.mtd = mtd;
+       ei.addr = addr;
+       ei.len = dev->nDataBytesPerChunk * dev->nChunksPerBlock;
+       ei.time = 1000;
+       ei.retries = 2;
+       ei.callback = NULL;
+       ei.priv = (u_long) dev;
+
+       /* Todo finish off the ei if required */
+
+/* XXX U-BOOT XXX */
+#if 0
+       sema_init(&dev->sem, 0);
+#endif
+
+       retval = mtd->erase(mtd, &ei);
+
+       if (retval == 0)
+               return YAFFS_OK;
+       else
+               return YAFFS_FAIL;
+}
+
+int nandmtd_InitialiseNAND(yaffs_Device * dev)
+{
+       return YAFFS_OK;
+}
diff -Naur u-boot-2009.03_orig/fs/yaffs2/yaffs_mtdif2.c u-boot-2009.03/fs/yaffs2/yaffs_mtdif2.c
--- u-boot-2009.03_orig/fs/yaffs2/yaffs_mtdif2.c        2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/fs/yaffs2/yaffs_mtdif2.c     2009-03-31 14:56:33.142172000 -0700
@@ -1,235 +1,235 @@
-/*
- * YAFFS: Yet Another Flash File System. A NAND-flash specific file system.
- *
- * Copyright (C) 2002-2007 Aleph One Ltd.
- *   for Toby Churchill Ltd and Brightstar Engineering
- *
- * Created by Charles Manning <charles@aleph1.co.uk>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-/* mtd interface for YAFFS2 */
-
-/* XXX U-BOOT XXX */
-#include <common.h>
-#include "asm/errno.h"
-
-const char *yaffs_mtdif2_c_version =
-    "$Id: yaffs_mtdif2.c,v 1.17 2007/02/14 01:09:06 wookey Exp $";
-
-#include "yportenv.h"
-
-
-#include "yaffs_mtdif2.h"
-
-#include "linux/mtd/mtd.h"
-#include "linux/types.h"
-#include "linux/time.h"
-
-#include "yaffs_packedtags2.h"
-
-int nandmtd2_WriteChunkWithTagsToNAND(yaffs_Device * dev, int chunkInNAND,
-                                     const __u8 * data,
-                                     const yaffs_ExtendedTags * tags)
-{
-       struct mtd_info *mtd = (struct mtd_info *)(dev->genericDevice);
-#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17))
-       struct mtd_oob_ops ops;
-#else
-       size_t dummy;
-#endif
-       int retval = 0;
-
-       loff_t addr = ((loff_t) chunkInNAND) * dev->nDataBytesPerChunk;
-
-       yaffs_PackedTags2 pt;
-
-       T(YAFFS_TRACE_MTD,
-         (TSTR
-          ("nandmtd2_WriteChunkWithTagsToNAND chunk %d data %p tags %p"
-           TENDSTR), chunkInNAND, data, tags));
-
-#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17))
-       if (tags)
-               yaffs_PackTags2(&pt, tags);
-       else
-               BUG(); /* both tags and data should always be present */
-
-       if (data) {
-               ops.mode = MTD_OOB_AUTO;
-               ops.ooblen = sizeof(pt);
-               ops.len = dev->nDataBytesPerChunk;
-               ops.ooboffs = 0;
-               ops.datbuf = (__u8 *)data;
-               ops.oobbuf = (void *)&pt;
-               retval = mtd->write_oob(mtd, addr, &ops);
-       } else
-               BUG(); /* both tags and data should always be present */
-#else
-       if (tags) {
-               yaffs_PackTags2(&pt, tags);
-       }
-
-       if (data && tags) {
-               if (dev->useNANDECC)
-                       retval =
-                           mtd->write_ecc(mtd, addr, dev->nDataBytesPerChunk,
-                                          &dummy, data, (__u8 *) & pt, NULL);
-               else
-                       retval =
-                           mtd->write_ecc(mtd, addr, dev->nDataBytesPerChunk,
-                                          &dummy, data, (__u8 *) & pt, NULL);
-       } else {
-               if (data)
-                       retval =
-                           mtd->write(mtd, addr, dev->nDataBytesPerChunk, &dummy,
-                                      data);
-               if (tags)
-                       retval =
-                           mtd->write_oob(mtd, addr, mtd->oobsize, &dummy,
-                                          (__u8 *) & pt);
-
-       }
-#endif
-
-       if (retval == 0)
-               return YAFFS_OK;
-       else
-               return YAFFS_FAIL;
-}
-
-int nandmtd2_ReadChunkWithTagsFromNAND(yaffs_Device * dev, int chunkInNAND,
-                                      __u8 * data, yaffs_ExtendedTags * tags)
-{
-       struct mtd_info *mtd = (struct mtd_info *)(dev->genericDevice);
-#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17))
-       struct mtd_oob_ops ops;
-#endif
-       size_t dummy;
-       int retval = 0;
-
-       loff_t addr = ((loff_t) chunkInNAND) * dev->nDataBytesPerChunk;
-
-       yaffs_PackedTags2 pt;
-
-       T(YAFFS_TRACE_MTD,
-         (TSTR
-          ("nandmtd2_ReadChunkWithTagsFromNAND chunk %d data %p tags %p"
-           TENDSTR), chunkInNAND, data, tags));
-
-#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17))
-       if (data && !tags)
-               retval = mtd->read(mtd, addr, dev->nDataBytesPerChunk,
-                               &dummy, data);
-       else if (tags) {
-               ops.mode = MTD_OOB_AUTO;
-               ops.ooblen = sizeof(pt);
-               ops.len = data ? dev->nDataBytesPerChunk : sizeof(pt);
-               ops.ooboffs = 0;
-               ops.datbuf = data;
-               ops.oobbuf = dev->spareBuffer;
-               retval = mtd->read_oob(mtd, addr, &ops);
-       }
-#else
-       if (data && tags) {
-               if (dev->useNANDECC) {
-                       retval =
-                           mtd->read_ecc(mtd, addr, dev->nDataBytesPerChunk,
-                                         &dummy, data, dev->spareBuffer,
-                                         NULL);
-               } else {
-                       retval =
-                           mtd->read_ecc(mtd, addr, dev->nDataBytesPerChunk,
-                                         &dummy, data, dev->spareBuffer,
-                                         NULL);
-               }
-       } else {
-               if (data)
-                       retval =
-                           mtd->read(mtd, addr, dev->nDataBytesPerChunk, &dummy,
-                                     data);
-               if (tags)
-                       retval =
-                           mtd->read_oob(mtd, addr, mtd->oobsize, &dummy,
-                                         dev->spareBuffer);
-       }
-#endif
-
-       memcpy(&pt, dev->spareBuffer, sizeof(pt));
-
-       if (tags)
-               yaffs_UnpackTags2(tags, &pt);
-
-       if(tags && retval == -EBADMSG && tags->eccResult == YAFFS_ECC_RESULT_NO_ERROR)
-               tags->eccResult = YAFFS_ECC_RESULT_UNFIXED;
-
-       if (retval == 0)
-               return YAFFS_OK;
-       else
-               return YAFFS_FAIL;
-}
-
-int nandmtd2_MarkNANDBlockBad(struct yaffs_DeviceStruct *dev, int blockNo)
-{
-       struct mtd_info *mtd = (struct mtd_info *)(dev->genericDevice);
-       int retval;
-       T(YAFFS_TRACE_MTD,
-         (TSTR("nandmtd2_MarkNANDBlockBad %d" TENDSTR), blockNo));
-
-       retval =
-           mtd->block_markbad(mtd,
-                              blockNo * dev->nChunksPerBlock *
-                              dev->nDataBytesPerChunk);
-
-       if (retval == 0)
-               return YAFFS_OK;
-       else
-               return YAFFS_FAIL;
-
-}
-
-int nandmtd2_QueryNANDBlock(struct yaffs_DeviceStruct *dev, int blockNo,
-                           yaffs_BlockState * state, int *sequenceNumber)
-{
-       struct mtd_info *mtd = (struct mtd_info *)(dev->genericDevice);
-       int retval;
-
-       T(YAFFS_TRACE_MTD,
-         (TSTR("nandmtd2_QueryNANDBlock %d" TENDSTR), blockNo));
-       retval =
-           mtd->block_isbad(mtd,
-                            blockNo * dev->nChunksPerBlock *
-                            dev->nDataBytesPerChunk);
-
-       if (retval) {
-               T(YAFFS_TRACE_MTD, (TSTR("block is bad" TENDSTR)));
-
-               *state = YAFFS_BLOCK_STATE_DEAD;
-               *sequenceNumber = 0;
-       } else {
-               yaffs_ExtendedTags t;
-               nandmtd2_ReadChunkWithTagsFromNAND(dev,
-                                                  blockNo *
-                                                  dev->nChunksPerBlock, NULL,
-                                                  &t);
-
-               if (t.chunkUsed) {
-                       *sequenceNumber = t.sequenceNumber;
-                       *state = YAFFS_BLOCK_STATE_NEEDS_SCANNING;
-               } else {
-                       *sequenceNumber = 0;
-                       *state = YAFFS_BLOCK_STATE_EMPTY;
-               }
-       }
-       T(YAFFS_TRACE_MTD,
-         (TSTR("block is bad seq %d state %d" TENDSTR), *sequenceNumber,
-          *state));
-
-       if (retval == 0)
-               return YAFFS_OK;
-       else
-               return YAFFS_FAIL;
-}
+/*
+ * YAFFS: Yet Another Flash File System. A NAND-flash specific file system.
+ *
+ * Copyright (C) 2002-2007 Aleph One Ltd.
+ *   for Toby Churchill Ltd and Brightstar Engineering
+ *
+ * Created by Charles Manning <charles@aleph1.co.uk>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+/* mtd interface for YAFFS2 */
+
+/* XXX U-BOOT XXX */
+#include <common.h>
+#include "asm/errno.h"
+
+const char *yaffs_mtdif2_c_version =
+    "$Id: yaffs_mtdif2.c,v 1.1.1.1 2009/03/25 22:22:12 kenagy Exp $";
+
+#include "yportenv.h"
+
+
+#include "yaffs_mtdif2.h"
+
+#include "linux/mtd/mtd.h"
+#include "linux/types.h"
+#include "linux/time.h"
+
+#include "yaffs_packedtags2.h"
+
+int nandmtd2_WriteChunkWithTagsToNAND(yaffs_Device * dev, int chunkInNAND,
+                                     const __u8 * data,
+                                     const yaffs_ExtendedTags * tags)
+{
+       struct mtd_info *mtd = (struct mtd_info *)(dev->genericDevice);
+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17))
+       struct mtd_oob_ops ops;
+#else
+       size_t dummy;
+#endif
+       int retval = 0;
+
+       loff_t addr = ((loff_t) chunkInNAND) * dev->nDataBytesPerChunk;
+
+       yaffs_PackedTags2 pt;
+
+       T(YAFFS_TRACE_MTD,
+         (TSTR
+          ("nandmtd2_WriteChunkWithTagsToNAND chunk %d data %p tags %p"
+           TENDSTR), chunkInNAND, data, tags));
+
+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17))
+       if (tags)
+               yaffs_PackTags2(&pt, tags);
+       else
+               BUG(); /* both tags and data should always be present */
+
+       if (data) {
+               ops.mode = MTD_OOB_AUTO;
+               ops.ooblen = sizeof(pt);
+               ops.len = dev->nDataBytesPerChunk;
+               ops.ooboffs = 0;
+               ops.datbuf = (__u8 *)data;
+               ops.oobbuf = (void *)&pt;
+               retval = mtd->write_oob(mtd, addr, &ops);
+       } else
+               BUG(); /* both tags and data should always be present */
+#else
+       if (tags) {
+               yaffs_PackTags2(&pt, tags);
+       }
+
+       if (data && tags) {
+               if (dev->useNANDECC)
+                       retval =
+                           mtd->write_ecc(mtd, addr, dev->nDataBytesPerChunk,
+                                          &dummy, data, (__u8 *) & pt, NULL);
+               else
+                       retval =
+                           mtd->write_ecc(mtd, addr, dev->nDataBytesPerChunk,
+                                          &dummy, data, (__u8 *) & pt, NULL);
+       } else {
+               if (data)
+                       retval =
+                           mtd->write(mtd, addr, dev->nDataBytesPerChunk, &dummy,
+                                      data);
+               if (tags)
+                       retval =
+                           mtd->write_oob(mtd, addr, mtd->oobsize, &dummy,
+                                          (__u8 *) & pt);
+
+       }
+#endif
+
+       if (retval == 0)
+               return YAFFS_OK;
+       else
+               return YAFFS_FAIL;
+}
+
+int nandmtd2_ReadChunkWithTagsFromNAND(yaffs_Device * dev, int chunkInNAND,
+                                      __u8 * data, yaffs_ExtendedTags * tags)
+{
+       struct mtd_info *mtd = (struct mtd_info *)(dev->genericDevice);
+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17))
+       struct mtd_oob_ops ops;
+#endif
+       size_t dummy;
+       int retval = 0;
+
+       loff_t addr = ((loff_t) chunkInNAND) * dev->nDataBytesPerChunk;
+
+       yaffs_PackedTags2 pt;
+
+       T(YAFFS_TRACE_MTD,
+         (TSTR
+          ("nandmtd2_ReadChunkWithTagsFromNAND chunk %d data %p tags %p"
+           TENDSTR), chunkInNAND, data, tags));
+
+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17))
+       if (data && !tags)
+               retval = mtd->read(mtd, addr, dev->nDataBytesPerChunk,
+                               &dummy, data);
+       else if (tags) {
+               ops.mode = MTD_OOB_AUTO;
+               ops.ooblen = sizeof(pt);
+               ops.len = data ? dev->nDataBytesPerChunk : sizeof(pt);
+               ops.ooboffs = 0;
+               ops.datbuf = data;
+               ops.oobbuf = dev->spareBuffer;
+               retval = mtd->read_oob(mtd, addr, &ops);
+       }
+#else
+       if (data && tags) {
+               if (dev->useNANDECC) {
+                       retval =
+                           mtd->read_ecc(mtd, addr, dev->nDataBytesPerChunk,
+                                         &dummy, data, dev->spareBuffer,
+                                         NULL);
+               } else {
+                       retval =
+                           mtd->read_ecc(mtd, addr, dev->nDataBytesPerChunk,
+                                         &dummy, data, dev->spareBuffer,
+                                         NULL);
+               }
+       } else {
+               if (data)
+                       retval =
+                           mtd->read(mtd, addr, dev->nDataBytesPerChunk, &dummy,
+                                     data);
+               if (tags)
+                       retval =
+                           mtd->read_oob(mtd, addr, mtd->oobsize, &dummy,
+                                         dev->spareBuffer);
+       }
+#endif
+
+       memcpy(&pt, dev->spareBuffer, sizeof(pt));
+
+       if (tags)
+               yaffs_UnpackTags2(tags, &pt);
+
+       if(tags && retval == -EBADMSG && tags->eccResult == YAFFS_ECC_RESULT_NO_ERROR)
+               tags->eccResult = YAFFS_ECC_RESULT_UNFIXED;
+
+       if (retval == 0)
+               return YAFFS_OK;
+       else
+               return YAFFS_FAIL;
+}
+
+int nandmtd2_MarkNANDBlockBad(struct yaffs_DeviceStruct *dev, int blockNo)
+{
+       struct mtd_info *mtd = (struct mtd_info *)(dev->genericDevice);
+       int retval;
+       T(YAFFS_TRACE_MTD,
+         (TSTR("nandmtd2_MarkNANDBlockBad %d" TENDSTR), blockNo));
+
+       retval =
+           mtd->block_markbad(mtd,
+                              blockNo * dev->nChunksPerBlock *
+                              dev->nDataBytesPerChunk);
+
+       if (retval == 0)
+               return YAFFS_OK;
+       else
+               return YAFFS_FAIL;
+
+}
+
+int nandmtd2_QueryNANDBlock(struct yaffs_DeviceStruct *dev, int blockNo,
+                           yaffs_BlockState * state, int *sequenceNumber)
+{
+       struct mtd_info *mtd = (struct mtd_info *)(dev->genericDevice);
+       int retval;
+
+       T(YAFFS_TRACE_MTD,
+         (TSTR("nandmtd2_QueryNANDBlock %d" TENDSTR), blockNo));
+       retval =
+           mtd->block_isbad(mtd,
+                            blockNo * dev->nChunksPerBlock *
+                            dev->nDataBytesPerChunk);
+
+       if (retval) {
+               T(YAFFS_TRACE_MTD, (TSTR("block is bad" TENDSTR)));
+
+               *state = YAFFS_BLOCK_STATE_DEAD;
+               *sequenceNumber = 0;
+       } else {
+               yaffs_ExtendedTags t;
+               nandmtd2_ReadChunkWithTagsFromNAND(dev,
+                                                  blockNo *
+                                                  dev->nChunksPerBlock, NULL,
+                                                  &t);
+
+               if (t.chunkUsed) {
+                       *sequenceNumber = t.sequenceNumber;
+                       *state = YAFFS_BLOCK_STATE_NEEDS_SCANNING;
+               } else {
+                       *sequenceNumber = 0;
+                       *state = YAFFS_BLOCK_STATE_EMPTY;
+               }
+       }
+       T(YAFFS_TRACE_MTD,
+         (TSTR("block is bad seq %d state %d" TENDSTR), *sequenceNumber,
+          *state));
+
+       if (retval == 0)
+               return YAFFS_OK;
+       else
+               return YAFFS_FAIL;
+}
diff -Naur u-boot-2009.03_orig/fs/yaffs2/yaffs_nand.c u-boot-2009.03/fs/yaffs2/yaffs_nand.c
--- u-boot-2009.03_orig/fs/yaffs2/yaffs_nand.c  2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/fs/yaffs2/yaffs_nand.c       2009-03-31 14:56:33.157796800 -0700
@@ -1,134 +1,134 @@
-/*
- * YAFFS: Yet Another Flash File System. A NAND-flash specific file system.
- *
- * Copyright (C) 2002-2007 Aleph One Ltd.
- *   for Toby Churchill Ltd and Brightstar Engineering
- *
- * Created by Charles Manning <charles@aleph1.co.uk>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-/* XXX U-BOOT XXX */
-#include <common.h>
-
-const char *yaffs_nand_c_version =
-    "$Id: yaffs_nand.c,v 1.7 2007/02/14 01:09:06 wookey Exp $";
-
-#include "yaffs_nand.h"
-#include "yaffs_tagscompat.h"
-#include "yaffs_tagsvalidity.h"
-
-
-int yaffs_ReadChunkWithTagsFromNAND(yaffs_Device * dev, int chunkInNAND,
-                                          __u8 * buffer,
-                                          yaffs_ExtendedTags * tags)
-{
-       int result;
-       yaffs_ExtendedTags localTags;
-
-       int realignedChunkInNAND = chunkInNAND - dev->chunkOffset;
-
-       /* If there are no tags provided, use local tags to get prioritised gc working */
-       if(!tags)
-               tags = &localTags;
-
-       if (dev->readChunkWithTagsFromNAND)
-               result = dev->readChunkWithTagsFromNAND(dev, realignedChunkInNAND, buffer,
-                                                     tags);
-       else
-               result = yaffs_TagsCompatabilityReadChunkWithTagsFromNAND(dev,
-                                                                       realignedChunkInNAND,
-                                                                       buffer,
-                                                                       tags);
-       if(tags &&
-          tags->eccResult > YAFFS_ECC_RESULT_NO_ERROR){
-
-               yaffs_BlockInfo *bi = yaffs_GetBlockInfo(dev, chunkInNAND/dev->nChunksPerBlock);
-               yaffs_HandleChunkError(dev,bi);
-       }
-
-       return result;
-}
-
-int yaffs_WriteChunkWithTagsToNAND(yaffs_Device * dev,
-                                                  int chunkInNAND,
-                                                  const __u8 * buffer,
-                                                  yaffs_ExtendedTags * tags)
-{
-       chunkInNAND -= dev->chunkOffset;
-
-
-       if (tags) {
-               tags->sequenceNumber = dev->sequenceNumber;
-               tags->chunkUsed = 1;
-               if (!yaffs_ValidateTags(tags)) {
-                       T(YAFFS_TRACE_ERROR,
-                         (TSTR("Writing uninitialised tags" TENDSTR)));
-                       YBUG();
-               }
-               T(YAFFS_TRACE_WRITE,
-                 (TSTR("Writing chunk %d tags %d %d" TENDSTR), chunkInNAND,
-                  tags->objectId, tags->chunkId));
-       } else {
-               T(YAFFS_TRACE_ERROR, (TSTR("Writing with no tags" TENDSTR)));
-               YBUG();
-       }
-
-       if (dev->writeChunkWithTagsToNAND)
-               return dev->writeChunkWithTagsToNAND(dev, chunkInNAND, buffer,
-                                                    tags);
-       else
-               return yaffs_TagsCompatabilityWriteChunkWithTagsToNAND(dev,
-                                                                      chunkInNAND,
-                                                                      buffer,
-                                                                      tags);
-}
-
-int yaffs_MarkBlockBad(yaffs_Device * dev, int blockNo)
-{
-       blockNo -= dev->blockOffset;
-
-;
-       if (dev->markNANDBlockBad)
-               return dev->markNANDBlockBad(dev, blockNo);
-       else
-               return yaffs_TagsCompatabilityMarkNANDBlockBad(dev, blockNo);
-}
-
-int yaffs_QueryInitialBlockState(yaffs_Device * dev,
-                                                int blockNo,
-                                                yaffs_BlockState * state,
-                                                unsigned *sequenceNumber)
-{
-       blockNo -= dev->blockOffset;
-
-       if (dev->queryNANDBlock)
-               return dev->queryNANDBlock(dev, blockNo, state, sequenceNumber);
-       else
-               return yaffs_TagsCompatabilityQueryNANDBlock(dev, blockNo,
-                                                            state,
-                                                            sequenceNumber);
-}
-
-
-int yaffs_EraseBlockInNAND(struct yaffs_DeviceStruct *dev,
-                                 int blockInNAND)
-{
-       int result;
-
-       blockInNAND -= dev->blockOffset;
-
-
-       dev->nBlockErasures++;
-       result = dev->eraseBlockInNAND(dev, blockInNAND);
-
-       return result;
-}
-
-int yaffs_InitialiseNAND(struct yaffs_DeviceStruct *dev)
-{
-       return dev->initialiseNAND(dev);
-}
+/*
+ * YAFFS: Yet Another Flash File System. A NAND-flash specific file system.
+ *
+ * Copyright (C) 2002-2007 Aleph One Ltd.
+ *   for Toby Churchill Ltd and Brightstar Engineering
+ *
+ * Created by Charles Manning <charles@aleph1.co.uk>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+/* XXX U-BOOT XXX */
+#include <common.h>
+
+const char *yaffs_nand_c_version =
+    "$Id: yaffs_nand.c,v 1.1.1.1 2009/03/25 22:22:12 kenagy Exp $";
+
+#include "yaffs_nand.h"
+#include "yaffs_tagscompat.h"
+#include "yaffs_tagsvalidity.h"
+
+
+int yaffs_ReadChunkWithTagsFromNAND(yaffs_Device * dev, int chunkInNAND,
+                                          __u8 * buffer,
+                                          yaffs_ExtendedTags * tags)
+{
+       int result;
+       yaffs_ExtendedTags localTags;
+
+       int realignedChunkInNAND = chunkInNAND - dev->chunkOffset;
+
+       /* If there are no tags provided, use local tags to get prioritised gc working */
+       if(!tags)
+               tags = &localTags;
+
+       if (dev->readChunkWithTagsFromNAND)
+               result = dev->readChunkWithTagsFromNAND(dev, realignedChunkInNAND, buffer,
+                                                     tags);
+       else
+               result = yaffs_TagsCompatabilityReadChunkWithTagsFromNAND(dev,
+                                                                       realignedChunkInNAND,
+                                                                       buffer,
+                                                                       tags);
+       if(tags &&
+          tags->eccResult > YAFFS_ECC_RESULT_NO_ERROR){
+
+               yaffs_BlockInfo *bi = yaffs_GetBlockInfo(dev, chunkInNAND/dev->nChunksPerBlock);
+               yaffs_HandleChunkError(dev,bi);
+       }
+
+       return result;
+}
+
+int yaffs_WriteChunkWithTagsToNAND(yaffs_Device * dev,
+                                                  int chunkInNAND,
+                                                  const __u8 * buffer,
+                                                  yaffs_ExtendedTags * tags)
+{
+       chunkInNAND -= dev->chunkOffset;
+
+
+       if (tags) {
+               tags->sequenceNumber = dev->sequenceNumber;
+               tags->chunkUsed = 1;
+               if (!yaffs_ValidateTags(tags)) {
+                       T(YAFFS_TRACE_ERROR,
+                         (TSTR("Writing uninitialised tags" TENDSTR)));
+                       YBUG();
+               }
+               T(YAFFS_TRACE_WRITE,
+                 (TSTR("Writing chunk %d tags %d %d" TENDSTR), chunkInNAND,
+                  tags->objectId, tags->chunkId));
+       } else {
+               T(YAFFS_TRACE_ERROR, (TSTR("Writing with no tags" TENDSTR)));
+               YBUG();
+       }
+
+       if (dev->writeChunkWithTagsToNAND)
+               return dev->writeChunkWithTagsToNAND(dev, chunkInNAND, buffer,
+                                                    tags);
+       else
+               return yaffs_TagsCompatabilityWriteChunkWithTagsToNAND(dev,
+                                                                      chunkInNAND,
+                                                                      buffer,
+                                                                      tags);
+}
+
+int yaffs_MarkBlockBad(yaffs_Device * dev, int blockNo)
+{
+       blockNo -= dev->blockOffset;
+
+;
+       if (dev->markNANDBlockBad)
+               return dev->markNANDBlockBad(dev, blockNo);
+       else
+               return yaffs_TagsCompatabilityMarkNANDBlockBad(dev, blockNo);
+}
+
+int yaffs_QueryInitialBlockState(yaffs_Device * dev,
+                                                int blockNo,
+                                                yaffs_BlockState * state,
+                                                unsigned *sequenceNumber)
+{
+       blockNo -= dev->blockOffset;
+
+       if (dev->queryNANDBlock)
+               return dev->queryNANDBlock(dev, blockNo, state, sequenceNumber);
+       else
+               return yaffs_TagsCompatabilityQueryNANDBlock(dev, blockNo,
+                                                            state,
+                                                            sequenceNumber);
+}
+
+
+int yaffs_EraseBlockInNAND(struct yaffs_DeviceStruct *dev,
+                                 int blockInNAND)
+{
+       int result;
+
+       blockInNAND -= dev->blockOffset;
+
+
+       dev->nBlockErasures++;
+       result = dev->eraseBlockInNAND(dev, blockInNAND);
+
+       return result;
+}
+
+int yaffs_InitialiseNAND(struct yaffs_DeviceStruct *dev)
+{
+       return dev->initialiseNAND(dev);
+}
diff -Naur u-boot-2009.03_orig/fs/yaffs2/yaffsfs.c u-boot-2009.03/fs/yaffs2/yaffsfs.c
--- u-boot-2009.03_orig/fs/yaffs2/yaffsfs.c     2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/fs/yaffs2/yaffsfs.c  2009-03-31 14:56:33.204671200 -0700
@@ -1,1510 +1,1510 @@
-/*
- * YAFFS: Yet Another Flash File System. A NAND-flash specific file system.
- *
- * Copyright (C) 2002-2007 Aleph One Ltd.
- *   for Toby Churchill Ltd and Brightstar Engineering
- *
- * Created by Charles Manning <charles@aleph1.co.uk>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-/* XXX U-BOOT XXX */
-#include <common.h>
-#include <malloc.h>
-
-#include "yaffsfs.h"
-#include "yaffs_guts.h"
-#include "yaffscfg.h"
-#include "yportenv.h"
-
-/* XXX U-BOOT XXX */
-#if 0
-#include <string.h> // for memset
-#endif
-
-#define YAFFSFS_MAX_SYMLINK_DEREFERENCES 5
-
-#ifndef NULL
-#define NULL ((void *)0)
-#endif
-
-
-const char *yaffsfs_c_version="$Id: yaffsfs.c,v 1.18 2007/07/18 19:40:38 charles Exp $";
-
-// configurationList is the list of devices that are supported
-static yaffsfs_DeviceConfiguration *yaffsfs_configurationList;
-
-
-/* Some forward references */
-static yaffs_Object *yaffsfs_FindObject(yaffs_Object *relativeDirectory, const char *path, int symDepth);
-static void yaffsfs_RemoveObjectCallback(yaffs_Object *obj);
-
-
-// Handle management.
-//
-
-
-unsigned int yaffs_wr_attempts;
-
-typedef struct
-{
-       __u8  inUse:1;          // this handle is in use
-       __u8  readOnly:1;       // this handle is read only
-       __u8  append:1;         // append only
-       __u8  exclusive:1;      // exclusive
-       __u32 position;         // current position in file
-       yaffs_Object *obj;      // the object
-}yaffsfs_Handle;
-
-
-static yaffsfs_Handle yaffsfs_handle[YAFFSFS_N_HANDLES];
-
-// yaffsfs_InitHandle
-/// Inilitalise handles on start-up.
-//
-static int yaffsfs_InitHandles(void)
-{
-       int i;
-       for(i = 0; i < YAFFSFS_N_HANDLES; i++)
-       {
-               yaffsfs_handle[i].inUse = 0;
-               yaffsfs_handle[i].obj = NULL;
-       }
-       return 0;
-}
-
-yaffsfs_Handle *yaffsfs_GetHandlePointer(int h)
-{
-       if(h < 0 || h >= YAFFSFS_N_HANDLES)
-       {
-               return NULL;
-       }
-
-       return &yaffsfs_handle[h];
-}
-
-yaffs_Object *yaffsfs_GetHandleObject(int handle)
-{
-       yaffsfs_Handle *h = yaffsfs_GetHandlePointer(handle);
-
-       if(h && h->inUse)
-       {
-               return h->obj;
-       }
-
-       return NULL;
-}
-
-
-//yaffsfs_GetHandle
-// Grab a handle (when opening a file)
-//
-
-static int yaffsfs_GetHandle(void)
-{
-       int i;
-       yaffsfs_Handle *h;
-
-       for(i = 0; i < YAFFSFS_N_HANDLES; i++)
-       {
-               h = yaffsfs_GetHandlePointer(i);
-               if(!h)
-               {
-                       // todo bug: should never happen
-               }
-               if(!h->inUse)
-               {
-                       memset(h,0,sizeof(yaffsfs_Handle));
-                       h->inUse=1;
-                       return i;
-               }
-       }
-       return -1;
-}
-
-// yaffs_PutHandle
-// Let go of a handle (when closing a file)
-//
-static int yaffsfs_PutHandle(int handle)
-{
-       yaffsfs_Handle *h = yaffsfs_GetHandlePointer(handle);
-
-       if(h)
-       {
-               h->inUse = 0;
-               h->obj = NULL;
-       }
-       return 0;
-}
-
-
-
-// Stuff to search for a directory from a path
-
-
-int yaffsfs_Match(char a, char b)
-{
-       // case sensitive
-       return (a == b);
-}
-
-// yaffsfs_FindDevice
-// yaffsfs_FindRoot
-// Scan the configuration list to find the root.
-// Curveballs: Should match paths that end in '/' too
-// Curveball2 Might have "/x/ and "/x/y". Need to return the longest match
-static yaffs_Device *yaffsfs_FindDevice(const char *path, char **restOfPath)
-{
-       yaffsfs_DeviceConfiguration *cfg = yaffsfs_configurationList;
-       const char *leftOver;
-       const char *p;
-       yaffs_Device *retval = NULL;
-       int thisMatchLength;
-       int longestMatch = -1;
-
-       // Check all configs, choose the one that:
-       // 1) Actually matches a prefix (ie /a amd /abc will not match
-       // 2) Matches the longest.
-       while(cfg && cfg->prefix && cfg->dev)
-       {
-               leftOver = path;
-               p = cfg->prefix;
-               thisMatchLength = 0;
-
-               while(*p &&  //unmatched part of prefix
-                     strcmp(p,"/") && // the rest of the prefix is not / (to catch / at end)
-                     *leftOver &&
-                     yaffsfs_Match(*p,*leftOver))
-               {
-                       p++;
-                       leftOver++;
-                       thisMatchLength++;
-               }
-               if((!*p || strcmp(p,"/") == 0) &&      // end of prefix
-                  (!*leftOver || *leftOver == '/') && // no more in this path name part
-                  (thisMatchLength > longestMatch))
-               {
-                       // Matched prefix
-                       *restOfPath = (char *)leftOver;
-                       retval = cfg->dev;
-                       longestMatch = thisMatchLength;
-               }
-               cfg++;
-       }
-       return retval;
-}
-
-static yaffs_Object *yaffsfs_FindRoot(const char *path, char **restOfPath)
-{
-
-       yaffs_Device *dev;
-
-       dev= yaffsfs_FindDevice(path,restOfPath);
-       if(dev && dev->isMounted)
-       {
-               return dev->rootDir;
-       }
-       return NULL;
-}
-
-static yaffs_Object *yaffsfs_FollowLink(yaffs_Object *obj,int symDepth)
-{
-
-       while(obj && obj->variantType == YAFFS_OBJECT_TYPE_SYMLINK)
-       {
-               char *alias = obj->variant.symLinkVariant.alias;
-
-               if(*alias == '/')
-               {
-                       // Starts with a /, need to scan from root up
-                       obj = yaffsfs_FindObject(NULL,alias,symDepth++);
-               }
-               else
-               {
-                       // Relative to here, so use the parent of the symlink as a start
-                       obj = yaffsfs_FindObject(obj->parent,alias,symDepth++);
-               }
-       }
-       return obj;
-}
-
-
-// yaffsfs_FindDirectory
-// Parse a path to determine the directory and the name within the directory.
-//
-// eg. "/data/xx/ff" --> puts name="ff" and returns the directory "/data/xx"
-static yaffs_Object *yaffsfs_DoFindDirectory(yaffs_Object *startDir,const char *path,char **name,int symDepth)
-{
-       yaffs_Object *dir;
-       char *restOfPath;
-       char str[YAFFS_MAX_NAME_LENGTH+1];
-       int i;
-
-       if(symDepth > YAFFSFS_MAX_SYMLINK_DEREFERENCES)
-       {
-               return NULL;
-       }
-
-       if(startDir)
-       {
-               dir = startDir;
-               restOfPath = (char *)path;
-       }
-       else
-       {
-               dir = yaffsfs_FindRoot(path,&restOfPath);
-       }
-
-       while(dir)
-       {
-               // parse off /.
-               // curve ball: also throw away surplus '/'
-               // eg. "/ram/x////ff" gets treated the same as "/ram/x/ff"
-               while(*restOfPath == '/')
-               {
-                       restOfPath++; // get rid of '/'
-               }
-
-               *name = restOfPath;
-               i = 0;
-
-               while(*restOfPath && *restOfPath != '/')
-               {
-                       if (i < YAFFS_MAX_NAME_LENGTH)
-                       {
-                               str[i] = *restOfPath;
-                               str[i+1] = '\0';
-                               i++;
-                       }
-                       restOfPath++;
-               }
-
-               if(!*restOfPath)
-               {
-                       // got to the end of the string
-                       return dir;
-               }
-               else
-               {
-                       if(strcmp(str,".") == 0)
-                       {
-                               // Do nothing
-                       }
-                       else if(strcmp(str,"..") == 0)
-                       {
-                               dir = dir->parent;
-                       }
-                       else
-                       {
-                               dir = yaffs_FindObjectByName(dir,str);
-
-                               while(dir && dir->variantType == YAFFS_OBJECT_TYPE_SYMLINK)
-                               {
-
-                                       dir = yaffsfs_FollowLink(dir,symDepth);
-
-                               }
-
-                               if(dir && dir->variantType != YAFFS_OBJECT_TYPE_DIRECTORY)
-                               {
-                                       dir = NULL;
-                               }
-                       }
-               }
-       }
-       // directory did not exist.
-       return NULL;
-}
-
-static yaffs_Object *yaffsfs_FindDirectory(yaffs_Object *relativeDirectory,const char *path,char **name,int symDepth)
-{
-       return yaffsfs_DoFindDirectory(relativeDirectory,path,name,symDepth);
-}
-
-// yaffsfs_FindObject turns a path for an existing object into the object
-//
-static yaffs_Object *yaffsfs_FindObject(yaffs_Object *relativeDirectory, const char *path,int symDepth)
-{
-       yaffs_Object *dir;
-       char *name;
-
-       dir = yaffsfs_FindDirectory(relativeDirectory,path,&name,symDepth);
-
-       if(dir && *name)
-       {
-               return yaffs_FindObjectByName(dir,name);
-       }
-
-       return dir;
-}
-
-
-
-int yaffs_open(const char *path, int oflag, int mode)
-{
-       yaffs_Object *obj = NULL;
-       yaffs_Object *dir = NULL;
-       char *name;
-       int handle = -1;
-       yaffsfs_Handle *h = NULL;
-       int alreadyOpen = 0;
-       int alreadyExclusive = 0;
-       int openDenied = 0;
-       int symDepth = 0;
-       int errorReported = 0;
-
-       int i;
-
-
-       // todo sanity check oflag (eg. can't have O_TRUNC without WRONLY or RDWR
-
-
-       yaffsfs_Lock();
-
-       handle = yaffsfs_GetHandle();
-
-       if(handle >= 0)
-       {
-
-               h = yaffsfs_GetHandlePointer(handle);
-
-
-               // try to find the exisiting object
-               obj = yaffsfs_FindObject(NULL,path,0);
-
-               if(obj && obj->variantType == YAFFS_OBJECT_TYPE_SYMLINK)
-               {
-
-                       obj = yaffsfs_FollowLink(obj,symDepth++);
-               }
-
-               if(obj)
-               {
-                       // Check if the object is already in use
-                       alreadyOpen = alreadyExclusive = 0;
-
-                       for(i = 0; i <= YAFFSFS_N_HANDLES; i++)
-                       {
-
-                               if(i != handle &&
-                                  yaffsfs_handle[i].inUse &&
-                                   obj == yaffsfs_handle[i].obj)
-                                {
-                                       alreadyOpen = 1;
-                                       if(yaffsfs_handle[i].exclusive)
-                                       {
-                                               alreadyExclusive = 1;
-                                       }
-                                }
-                       }
-
-                       if(((oflag & O_EXCL) && alreadyOpen) || alreadyExclusive)
-                       {
-                               openDenied = 1;
-                       }
-
-                       // Open should fail if O_CREAT and O_EXCL are specified
-                       if((oflag & O_EXCL) && (oflag & O_CREAT))
-                       {
-                               openDenied = 1;
-                               yaffsfs_SetError(-EEXIST);
-                               errorReported = 1;
-                       }
-
-                       // Check file permissions
-                       if( (oflag & (O_RDWR | O_WRONLY)) == 0 &&     // ie O_RDONLY
-                          !(obj->yst_mode & S_IREAD))
-                       {
-                               openDenied = 1;
-                       }
-
-                       if( (oflag & O_RDWR) &&
-                          !(obj->yst_mode & S_IREAD))
-                       {
-                               openDenied = 1;
-                       }
-
-                       if( (oflag & (O_RDWR | O_WRONLY)) &&
-                          !(obj->yst_mode & S_IWRITE))
-                       {
-                               openDenied = 1;
-                       }
-
-               }
-
-               else if((oflag & O_CREAT))
-               {
-                       // Let's see if we can create this file
-                       dir = yaffsfs_FindDirectory(NULL,path,&name,0);
-                       if(dir)
-                       {
-                               obj = yaffs_MknodFile(dir,name,mode,0,0);
-                       }
-                       else
-                       {
-                               yaffsfs_SetError(-ENOTDIR);
-                       }
-               }
-
-               if(obj && !openDenied)
-               {
-                       h->obj = obj;
-                       h->inUse = 1;
-               h->readOnly = (oflag & (O_WRONLY | O_RDWR)) ? 0 : 1;
-                       h->append =  (oflag & O_APPEND) ? 1 : 0;
-                       h->exclusive = (oflag & O_EXCL) ? 1 : 0;
-                       h->position = 0;
-
-                       obj->inUse++;
-                       if((oflag & O_TRUNC) && !h->readOnly)
-                       {
-                               //todo truncate
-                               yaffs_ResizeFile(obj,0);
-                       }
-
-               }
-               else
-               {
-                       yaffsfs_PutHandle(handle);
-                       if(!errorReported)
-                       {
-                               yaffsfs_SetError(-EACCESS);
-                               errorReported = 1;
-                       }
-                       handle = -1;
-               }
-
-       }
-
-       yaffsfs_Unlock();
-
-       return handle;
-}
-
-int yaffs_close(int fd)
-{
-       yaffsfs_Handle *h = NULL;
-       int retVal = 0;
-
-       yaffsfs_Lock();
-
-       h = yaffsfs_GetHandlePointer(fd);
-
-       if(h && h->inUse)
-       {
-               // clean up
-               yaffs_FlushFile(h->obj,1);
-               h->obj->inUse--;
-               if(h->obj->inUse <= 0 && h->obj->unlinked)
-               {
-                       yaffs_DeleteFile(h->obj);
-               }
-               yaffsfs_PutHandle(fd);
-               retVal = 0;
-       }
-       else
-       {
-               // bad handle
-               yaffsfs_SetError(-EBADF);
-               retVal = -1;
-       }
-
-       yaffsfs_Unlock();
-
-       return retVal;
-}
-
-int yaffs_read(int fd, void *buf, unsigned int nbyte)
-{
-       yaffsfs_Handle *h = NULL;
-       yaffs_Object *obj = NULL;
-       int pos = 0;
-       int nRead = -1;
-       int maxRead;
-
-       yaffsfs_Lock();
-       h = yaffsfs_GetHandlePointer(fd);
-       obj = yaffsfs_GetHandleObject(fd);
-
-       if(!h || !obj)
-       {
-               // bad handle
-               yaffsfs_SetError(-EBADF);
-       }
-       else if( h && obj)
-       {
-               pos=  h->position;
-               if(yaffs_GetObjectFileLength(obj) > pos)
-               {
-                       maxRead = yaffs_GetObjectFileLength(obj) - pos;
-               }
-               else
-               {
-                       maxRead = 0;
-               }
-
-               if(nbyte > maxRead)
-               {
-                       nbyte = maxRead;
-               }
-
-
-               if(nbyte > 0)
-               {
-                       nRead = yaffs_ReadDataFromFile(obj,buf,pos,nbyte);
-                       if(nRead >= 0)
-                       {
-                               h->position = pos + nRead;
-                       }
-                       else
-                       {
-                               //todo error
-                       }
-               }
-               else
-               {
-                       nRead = 0;
-               }
-
-       }
-
-       yaffsfs_Unlock();
-
-
-       return (nRead >= 0) ? nRead : -1;
-
-}
-
-int yaffs_write(int fd, const void *buf, unsigned int nbyte)
-{
-       yaffsfs_Handle *h = NULL;
-       yaffs_Object *obj = NULL;
-       int pos = 0;
-       int nWritten = -1;
-       int writeThrough = 0;
-
-       yaffsfs_Lock();
-       h = yaffsfs_GetHandlePointer(fd);
-       obj = yaffsfs_GetHandleObject(fd);
-
-       if(!h || !obj)
-       {
-               // bad handle
-               yaffsfs_SetError(-EBADF);
-       }
-       else if( h && obj && h->readOnly)
-       {
-               // todo error
-       }
-       else if( h && obj)
-       {
-               if(h->append)
-               {
-                       pos =  yaffs_GetObjectFileLength(obj);
-               }
-               else
-               {
-                       pos = h->position;
-               }
-
-               nWritten = yaffs_WriteDataToFile(obj,buf,pos,nbyte,writeThrough);
-
-               if(nWritten >= 0)
-               {
-                       h->position = pos + nWritten;
-               }
-               else
-               {
-                       //todo error
-               }
-
-       }
-
-       yaffsfs_Unlock();
-
-
-       return (nWritten >= 0) ? nWritten : -1;
-
-}
-
-int yaffs_truncate(int fd, off_t newSize)
-{
-       yaffsfs_Handle *h = NULL;
-       yaffs_Object *obj = NULL;
-       int result = 0;
-
-       yaffsfs_Lock();
-       h = yaffsfs_GetHandlePointer(fd);
-       obj = yaffsfs_GetHandleObject(fd);
-
-       if(!h || !obj)
-       {
-               // bad handle
-               yaffsfs_SetError(-EBADF);
-       }
-       else
-       {
-               // resize the file
-               result = yaffs_ResizeFile(obj,newSize);
-       }
-       yaffsfs_Unlock();
-
-
-       return (result) ? 0 : -1;
-
-}
-
-off_t yaffs_lseek(int fd, off_t offset, int whence)
-{
-       yaffsfs_Handle *h = NULL;
-       yaffs_Object *obj = NULL;
-       int pos = -1;
-       int fSize = -1;
-
-       yaffsfs_Lock();
-       h = yaffsfs_GetHandlePointer(fd);
-       obj = yaffsfs_GetHandleObject(fd);
-
-       if(!h || !obj)
-       {
-               // bad handle
-               yaffsfs_SetError(-EBADF);
-       }
-       else if(whence == SEEK_SET)
-       {
-               if(offset >= 0)
-               {
-                       pos = offset;
-               }
-       }
-       else if(whence == SEEK_CUR)
-       {
-               if( (h->position + offset) >= 0)
-               {
-                       pos = (h->position + offset);
-               }
-       }
-       else if(whence == SEEK_END)
-       {
-               fSize = yaffs_GetObjectFileLength(obj);
-               if(fSize >= 0 && (fSize + offset) >= 0)
-               {
-                       pos = fSize + offset;
-               }
-       }
-
-       if(pos >= 0)
-       {
-               h->position = pos;
-       }
-       else
-       {
-               // todo error
-       }
-
-
-       yaffsfs_Unlock();
-
-       return pos;
-}
-
-
-int yaffsfs_DoUnlink(const char *path,int isDirectory)
-{
-       yaffs_Object *dir = NULL;
-       yaffs_Object *obj = NULL;
-       char *name;
-       int result = YAFFS_FAIL;
-
-       yaffsfs_Lock();
-
-       obj = yaffsfs_FindObject(NULL,path,0);
-       dir = yaffsfs_FindDirectory(NULL,path,&name,0);
-       if(!dir)
-       {
-               yaffsfs_SetError(-ENOTDIR);
-       }
-       else if(!obj)
-       {
-               yaffsfs_SetError(-ENOENT);
-       }
-       else if(!isDirectory && obj->variantType == YAFFS_OBJECT_TYPE_DIRECTORY)
-       {
-               yaffsfs_SetError(-EISDIR);
-       }
-       else if(isDirectory && obj->variantType != YAFFS_OBJECT_TYPE_DIRECTORY)
-       {
-               yaffsfs_SetError(-ENOTDIR);
-       }
-       else
-       {
-               result = yaffs_Unlink(dir,name);
-
-               if(result == YAFFS_FAIL && isDirectory)
-               {
-                       yaffsfs_SetError(-ENOTEMPTY);
-               }
-       }
-
-       yaffsfs_Unlock();
-
-       // todo error
-
-       return (result == YAFFS_FAIL) ? -1 : 0;
-}
-int yaffs_rmdir(const char *path)
-{
-       return yaffsfs_DoUnlink(path,1);
-}
-
-int yaffs_unlink(const char *path)
-{
-       return yaffsfs_DoUnlink(path,0);
-}
-
-int yaffs_rename(const char *oldPath, const char *newPath)
-{
-       yaffs_Object *olddir = NULL;
-       yaffs_Object *newdir = NULL;
-       yaffs_Object *obj = NULL;
-       char *oldname;
-       char *newname;
-       int result= YAFFS_FAIL;
-       int renameAllowed = 1;
-
-       yaffsfs_Lock();
-
-       olddir = yaffsfs_FindDirectory(NULL,oldPath,&oldname,0);
-       newdir = yaffsfs_FindDirectory(NULL,newPath,&newname,0);
-       obj = yaffsfs_FindObject(NULL,oldPath,0);
-
-       if(!olddir || !newdir || !obj)
-       {
-               // bad file
-               yaffsfs_SetError(-EBADF);
-               renameAllowed = 0;
-       }
-       else if(olddir->myDev != newdir->myDev)
-       {
-               // oops must be on same device
-               // todo error
-               yaffsfs_SetError(-EXDEV);
-               renameAllowed = 0;
-       }
-       else if(obj && obj->variantType == YAFFS_OBJECT_TYPE_DIRECTORY)
-       {
-               // It is a directory, check that it is not being renamed to
-               // being its own decendent.
-               // Do this by tracing from the new directory back to the root, checking for obj
-
-               yaffs_Object *xx = newdir;
-
-               while( renameAllowed && xx)
-               {
-                       if(xx == obj)
-                       {
-                               renameAllowed = 0;
-                       }
-                       xx = xx->parent;
-               }
-               if(!renameAllowed) yaffsfs_SetError(-EACCESS);
-       }
-
-       if(renameAllowed)
-       {
-               result = yaffs_RenameObject(olddir,oldname,newdir,newname);
-       }
-
-       yaffsfs_Unlock();
-
-       return (result == YAFFS_FAIL) ? -1 : 0;
-}
-
-
-static int yaffsfs_DoStat(yaffs_Object *obj,struct yaffs_stat *buf)
-{
-       int retVal = -1;
-
-       if(obj)
-       {
-               obj = yaffs_GetEquivalentObject(obj);
-       }
-
-       if(obj && buf)
-       {
-       buf->st_dev = (int)obj->myDev->genericDevice;
-       buf->st_ino = obj->objectId;
-       buf->st_mode = obj->yst_mode & ~S_IFMT; // clear out file type bits
-
-               if(obj->variantType == YAFFS_OBJECT_TYPE_DIRECTORY)
-               {
-                       buf->st_mode |= S_IFDIR;
-               }
-               else if(obj->variantType == YAFFS_OBJECT_TYPE_SYMLINK)
-               {
-                       buf->st_mode |= S_IFLNK;
-               }
-               else if(obj->variantType == YAFFS_OBJECT_TYPE_FILE)
-               {
-                       buf->st_mode |= S_IFREG;
-               }
-
-       buf->st_nlink = yaffs_GetObjectLinkCount(obj);
-       buf->st_uid = 0;
-       buf->st_gid = 0;;
-       buf->st_rdev = obj->yst_rdev;
-       buf->st_size = yaffs_GetObjectFileLength(obj);
-               buf->st_blksize = obj->myDev->nDataBytesPerChunk;
-       buf->st_blocks = (buf->st_size + buf->st_blksize -1)/buf->st_blksize;
-       buf->yst_atime = obj->yst_atime;
-       buf->yst_ctime = obj->yst_ctime;
-       buf->yst_mtime = obj->yst_mtime;
-               retVal = 0;
-       }
-       return retVal;
-}
-
-static int yaffsfs_DoStatOrLStat(const char *path, struct yaffs_stat *buf,int doLStat)
-{
-       yaffs_Object *obj;
-
-       int retVal = -1;
-
-       yaffsfs_Lock();
-       obj = yaffsfs_FindObject(NULL,path,0);
-
-       if(!doLStat && obj)
-       {
-               obj = yaffsfs_FollowLink(obj,0);
-       }
-
-       if(obj)
-       {
-               retVal = yaffsfs_DoStat(obj,buf);
-       }
-       else
-       {
-               // todo error not found
-               yaffsfs_SetError(-ENOENT);
-       }
-
-       yaffsfs_Unlock();
-
-       return retVal;
-
-}
-
-int yaffs_stat(const char *path, struct yaffs_stat *buf)
-{
-       return yaffsfs_DoStatOrLStat(path,buf,0);
-}
-
-int yaffs_lstat(const char *path, struct yaffs_stat *buf)
-{
-       return yaffsfs_DoStatOrLStat(path,buf,1);
-}
-
-int yaffs_fstat(int fd, struct yaffs_stat *buf)
-{
-       yaffs_Object *obj;
-
-       int retVal = -1;
-
-       yaffsfs_Lock();
-       obj = yaffsfs_GetHandleObject(fd);
-
-       if(obj)
-       {
-               retVal = yaffsfs_DoStat(obj,buf);
-       }
-       else
-       {
-               // bad handle
-               yaffsfs_SetError(-EBADF);
-       }
-
-       yaffsfs_Unlock();
-
-       return retVal;
-}
-
-static int yaffsfs_DoChMod(yaffs_Object *obj,mode_t mode)
-{
-       int result = YAFFS_FAIL;
-
-       if(obj)
-       {
-               obj = yaffs_GetEquivalentObject(obj);
-       }
-
-       if(obj)
-       {
-               obj->yst_mode = mode;
-               obj->dirty = 1;
-               result = yaffs_FlushFile(obj,0);
-       }
-
-       return result == YAFFS_OK ? 0 : -1;
-}
-
-
-int yaffs_chmod(const char *path, mode_t mode)
-{
-       yaffs_Object *obj;
-
-       int retVal = -1;
-
-       yaffsfs_Lock();
-       obj = yaffsfs_FindObject(NULL,path,0);
-
-       if(obj)
-       {
-               retVal = yaffsfs_DoChMod(obj,mode);
-       }
-       else
-       {
-               // todo error not found
-               yaffsfs_SetError(-ENOENT);
-       }
-
-       yaffsfs_Unlock();
-
-       return retVal;
-
-}
-
-
-int yaffs_fchmod(int fd, mode_t mode)
-{
-       yaffs_Object *obj;
-
-       int retVal = -1;
-
-       yaffsfs_Lock();
-       obj = yaffsfs_GetHandleObject(fd);
-
-       if(obj)
-       {
-               retVal = yaffsfs_DoChMod(obj,mode);
-       }
-       else
-       {
-               // bad handle
-               yaffsfs_SetError(-EBADF);
-       }
-
-       yaffsfs_Unlock();
-
-       return retVal;
-}
-
-
-int yaffs_mkdir(const char *path, mode_t mode)
-{
-       yaffs_Object *parent = NULL;
-       yaffs_Object *dir = NULL;
-       char *name;
-       int retVal= -1;
-
-       yaffsfs_Lock();
-       parent = yaffsfs_FindDirectory(NULL,path,&name,0);
-       if(parent)
-               dir = yaffs_MknodDirectory(parent,name,mode,0,0);
-       if(dir)
-       {
-               retVal = 0;
-       }
-       else
-       {
-               yaffsfs_SetError(-ENOSPC); // just assume no space for now
-               retVal = -1;
-       }
-
-       yaffsfs_Unlock();
-
-       return retVal;
-}
-
-int yaffs_mount(const char *path)
-{
-       int retVal=-1;
-       int result=YAFFS_FAIL;
-       yaffs_Device *dev=NULL;
-       char *dummy;
-
-       T(YAFFS_TRACE_ALWAYS,("yaffs: Mounting %s\n",path));
-
-       yaffsfs_Lock();
-       dev = yaffsfs_FindDevice(path,&dummy);
-       if(dev)
-       {
-               if(!dev->isMounted)
-               {
-                       result = yaffs_GutsInitialise(dev);
-                       if(result == YAFFS_FAIL)
-                       {
-                               // todo error - mount failed
-                               yaffsfs_SetError(-ENOMEM);
-                       }
-                       retVal = result ? 0 : -1;
-
-               }
-               else
-               {
-                       //todo error - already mounted.
-                       yaffsfs_SetError(-EBUSY);
-               }
-       }
-       else
-       {
-               // todo error - no device
-               yaffsfs_SetError(-ENODEV);
-       }
-       yaffsfs_Unlock();
-       return retVal;
-
-}
-
-int yaffs_unmount(const char *path)
-{
-       int retVal=-1;
-       yaffs_Device *dev=NULL;
-       char *dummy;
-
-       yaffsfs_Lock();
-       dev = yaffsfs_FindDevice(path,&dummy);
-       if(dev)
-       {
-               if(dev->isMounted)
-               {
-                       int i;
-                       int inUse;
-
-                       yaffs_FlushEntireDeviceCache(dev);
-                       yaffs_CheckpointSave(dev);
-
-                       for(i = inUse = 0; i < YAFFSFS_N_HANDLES && !inUse; i++)
-                       {
-                               if(yaffsfs_handle[i].inUse && yaffsfs_handle[i].obj->myDev == dev)
-                               {
-                                       inUse = 1; // the device is in use, can't unmount
-                               }
-                       }
-
-                       if(!inUse)
-                       {
-                               yaffs_Deinitialise(dev);
-
-                               retVal = 0;
-                       }
-                       else
-                       {
-                               // todo error can't unmount as files are open
-                               yaffsfs_SetError(-EBUSY);
-                       }
-
-               }
-               else
-               {
-                       //todo error - not mounted.
-                       yaffsfs_SetError(-EINVAL);
-
-               }
-       }
-       else
-       {
-               // todo error - no device
-               yaffsfs_SetError(-ENODEV);
-       }
-       yaffsfs_Unlock();
-       return retVal;
-
-}
-
-loff_t yaffs_freespace(const char *path)
-{
-       loff_t retVal=-1;
-       yaffs_Device *dev=NULL;
-       char *dummy;
-
-       yaffsfs_Lock();
-       dev = yaffsfs_FindDevice(path,&dummy);
-       if(dev  && dev->isMounted)
-       {
-               retVal = yaffs_GetNumberOfFreeChunks(dev);
-               retVal *= dev->nDataBytesPerChunk;
-
-       }
-       else
-       {
-               yaffsfs_SetError(-EINVAL);
-       }
-
-       yaffsfs_Unlock();
-       return retVal;
-}
-
-
-
-void yaffs_initialise(yaffsfs_DeviceConfiguration *cfgList)
-{
-
-       yaffsfs_DeviceConfiguration *cfg;
-
-       yaffsfs_configurationList = cfgList;
-
-       yaffsfs_InitHandles();
-
-       cfg = yaffsfs_configurationList;
-
-       while(cfg && cfg->prefix && cfg->dev)
-       {
-               cfg->dev->isMounted = 0;
-               cfg->dev->removeObjectCallback = yaffsfs_RemoveObjectCallback;
-               cfg++;
-       }
-}
-
-
-//
-// Directory search stuff.
-
-//
-// Directory search context
-//
-// NB this is an opaque structure.
-
-
-typedef struct
-{
-       __u32 magic;
-       yaffs_dirent de;                /* directory entry being used by this dsc */
-       char name[NAME_MAX+1];          /* name of directory being searched */
-       yaffs_Object *dirObj;           /* ptr to directory being searched */
-       yaffs_Object *nextReturn;       /* obj to be returned by next readddir */
-       int offset;
-       struct list_head others;
-} yaffsfs_DirectorySearchContext;
-
-
-
-static struct list_head search_contexts;
-
-
-static void yaffsfs_SetDirRewound(yaffsfs_DirectorySearchContext *dsc)
-{
-       if(dsc &&
-          dsc->dirObj &&
-          dsc->dirObj->variantType == YAFFS_OBJECT_TYPE_DIRECTORY){
-
-          dsc->offset = 0;
-
-          if( list_empty(&dsc->dirObj->variant.directoryVariant.children)){
-               dsc->nextReturn = NULL;
-          } else {
-               dsc->nextReturn = list_entry(dsc->dirObj->variant.directoryVariant.children.next,
-                                               yaffs_Object,siblings);
-          }
-       } else {
-               /* Hey someone isn't playing nice! */
-       }
-}
-
-static void yaffsfs_DirAdvance(yaffsfs_DirectorySearchContext *dsc)
-{
-       if(dsc &&
-          dsc->dirObj &&
-          dsc->dirObj->variantType == YAFFS_OBJECT_TYPE_DIRECTORY){
-
-          if( dsc->nextReturn == NULL ||
-              list_empty(&dsc->dirObj->variant.directoryVariant.children)){
-               dsc->nextReturn = NULL;
-          } else {
-                  struct list_head *next = dsc->nextReturn->siblings.next;
-
-                  if( next == &dsc->dirObj->variant.directoryVariant.children)
-                       dsc->nextReturn = NULL; /* end of list */
-                  else
-                       dsc->nextReturn = list_entry(next,yaffs_Object,siblings);
-          }
-       } else {
-               /* Hey someone isn't playing nice! */
-       }
-}
-
-static void yaffsfs_RemoveObjectCallback(yaffs_Object *obj)
-{
-
-       struct list_head *i;
-       yaffsfs_DirectorySearchContext *dsc;
-
-       /* if search contexts not initilised then skip */
-       if(!search_contexts.next)
-               return;
-
-       /* Iteratethrough the directory search contexts.
-        * If any are the one being removed, then advance the dsc to
-        * the next one to prevent a hanging ptr.
-        */
-        list_for_each(i, &search_contexts) {
-               if (i) {
-                       dsc = list_entry(i, yaffsfs_DirectorySearchContext,others);
-                       if(dsc->nextReturn == obj)
-                               yaffsfs_DirAdvance(dsc);
-               }
-       }
-
-}
-
-yaffs_DIR *yaffs_opendir(const char *dirname)
-{
-       yaffs_DIR *dir = NULL;
-       yaffs_Object *obj = NULL;
-       yaffsfs_DirectorySearchContext *dsc = NULL;
-
-       yaffsfs_Lock();
-
-       obj = yaffsfs_FindObject(NULL,dirname,0);
-
-       if(obj && obj->variantType == YAFFS_OBJECT_TYPE_DIRECTORY)
-       {
-
-               dsc = YMALLOC(sizeof(yaffsfs_DirectorySearchContext));
-               dir = (yaffs_DIR *)dsc;
-               if(dsc)
-               {
-                       memset(dsc,0,sizeof(yaffsfs_DirectorySearchContext));
-                       dsc->magic = YAFFS_MAGIC;
-                       dsc->dirObj = obj;
-                       strncpy(dsc->name,dirname,NAME_MAX);
-                       INIT_LIST_HEAD(&dsc->others);
-
-                       if(!search_contexts.next)
-                               INIT_LIST_HEAD(&search_contexts);
-
-                       list_add(&dsc->others,&search_contexts);
-                       yaffsfs_SetDirRewound(dsc);             }
-
-       }
-
-       yaffsfs_Unlock();
-
-       return dir;
-}
-
-struct yaffs_dirent *yaffs_readdir(yaffs_DIR *dirp)
-{
-       yaffsfs_DirectorySearchContext *dsc = (yaffsfs_DirectorySearchContext *)dirp;
-       struct yaffs_dirent *retVal = NULL;
-
-       yaffsfs_Lock();
-
-       if(dsc && dsc->magic == YAFFS_MAGIC){
-               yaffsfs_SetError(0);
-               if(dsc->nextReturn){
-                       dsc->de.d_ino = yaffs_GetEquivalentObject(dsc->nextReturn)->objectId;
-                       dsc->de.d_dont_use = (unsigned)dsc->nextReturn;
-                       dsc->de.d_off = dsc->offset++;
-                       yaffs_GetObjectName(dsc->nextReturn,dsc->de.d_name,NAME_MAX);
-                       if(strlen(dsc->de.d_name) == 0)
-                       {
-                               // this should not happen!
-                               strcpy(dsc->de.d_name,"zz");
-                       }
-                       dsc->de.d_reclen = sizeof(struct yaffs_dirent);
-                       retVal = &dsc->de;
-                       yaffsfs_DirAdvance(dsc);
-               } else
-                       retVal = NULL;
-       }
-       else
-       {
-               yaffsfs_SetError(-EBADF);
-       }
-
-       yaffsfs_Unlock();
-
-       return retVal;
-
-}
-
-
-void yaffs_rewinddir(yaffs_DIR *dirp)
-{
-       yaffsfs_DirectorySearchContext *dsc = (yaffsfs_DirectorySearchContext *)dirp;
-
-       yaffsfs_Lock();
-
-       yaffsfs_SetDirRewound(dsc);
-
-       yaffsfs_Unlock();
-}
-
-
-int yaffs_closedir(yaffs_DIR *dirp)
-{
-       yaffsfs_DirectorySearchContext *dsc = (yaffsfs_DirectorySearchContext *)dirp;
-
-       yaffsfs_Lock();
-       dsc->magic = 0;
-       list_del(&dsc->others); /* unhook from list */
-       YFREE(dsc);
-       yaffsfs_Unlock();
-       return 0;
-}
-
-// end of directory stuff
-
-
-int yaffs_symlink(const char *oldpath, const char *newpath)
-{
-       yaffs_Object *parent = NULL;
-       yaffs_Object *obj;
-       char *name;
-       int retVal= -1;
-       int mode = 0; // ignore for now
-
-       yaffsfs_Lock();
-       parent = yaffsfs_FindDirectory(NULL,newpath,&name,0);
-       obj = yaffs_MknodSymLink(parent,name,mode,0,0,oldpath);
-       if(obj)
-       {
-               retVal = 0;
-       }
-       else
-       {
-               yaffsfs_SetError(-ENOSPC); // just assume no space for now
-               retVal = -1;
-       }
-
-       yaffsfs_Unlock();
-
-       return retVal;
-
-}
-
-int yaffs_readlink(const char *path, char *buf, int bufsiz)
-{
-       yaffs_Object *obj = NULL;
-       int retVal;
-
-
-       yaffsfs_Lock();
-
-       obj = yaffsfs_FindObject(NULL,path,0);
-
-       if(!obj)
-       {
-               yaffsfs_SetError(-ENOENT);
-               retVal = -1;
-       }
-       else if(obj->variantType != YAFFS_OBJECT_TYPE_SYMLINK)
-       {
-               yaffsfs_SetError(-EINVAL);
-               retVal = -1;
-       }
-       else
-       {
-               char *alias = obj->variant.symLinkVariant.alias;
-               memset(buf,0,bufsiz);
-               strncpy(buf,alias,bufsiz - 1);
-               retVal = 0;
-       }
-       yaffsfs_Unlock();
-       return retVal;
-}
-
-int yaffs_link(const char *oldpath, const char *newpath)
-{
-       // Creates a link called newpath to existing oldpath
-       yaffs_Object *obj = NULL;
-       yaffs_Object *target = NULL;
-       int retVal = 0;
-
-
-       yaffsfs_Lock();
-
-       obj = yaffsfs_FindObject(NULL,oldpath,0);
-       target = yaffsfs_FindObject(NULL,newpath,0);
-
-       if(!obj)
-       {
-               yaffsfs_SetError(-ENOENT);
-               retVal = -1;
-       }
-       else if(target)
-       {
-               yaffsfs_SetError(-EEXIST);
-               retVal = -1;
-       }
-       else
-       {
-               yaffs_Object *newdir = NULL;
-               yaffs_Object *link = NULL;
-
-               char *newname;
-
-               newdir = yaffsfs_FindDirectory(NULL,newpath,&newname,0);
-
-               if(!newdir)
-               {
-                       yaffsfs_SetError(-ENOTDIR);
-                       retVal = -1;
-               }
-               else if(newdir->myDev != obj->myDev)
-               {
-                       yaffsfs_SetError(-EXDEV);
-                       retVal = -1;
-               }
-               if(newdir && strlen(newname) > 0)
-               {
-                       link = yaffs_Link(newdir,newname,obj);
-                       if(link)
-                               retVal = 0;
-                       else
-                       {
-                               yaffsfs_SetError(-ENOSPC);
-                               retVal = -1;
-                       }
-
-               }
-       }
-       yaffsfs_Unlock();
-
-       return retVal;
-}
-
-int yaffs_mknod(const char *pathname, mode_t mode, dev_t dev);
-
-int yaffs_DumpDevStruct(const char *path)
-{
-       char *rest;
-
-       yaffs_Object *obj = yaffsfs_FindRoot(path,&rest);
-
-       if(obj)
-       {
-               yaffs_Device *dev = obj->myDev;
-
-               printf("\n"
-                          "nPageWrites.......... %d\n"
-                          "nPageReads........... %d\n"
-                          "nBlockErasures....... %d\n"
-                          "nGCCopies............ %d\n"
-                          "garbageCollections... %d\n"
-                          "passiveGarbageColl'ns %d\n"
-                          "\n",
-                               dev->nPageWrites,
-                               dev->nPageReads,
-                               dev->nBlockErasures,
-                               dev->nGCCopies,
-                               dev->garbageCollections,
-                               dev->passiveGarbageCollections
-               );
-
-       }
-       return 0;
-}
+/*
+ * YAFFS: Yet Another Flash File System. A NAND-flash specific file system.
+ *
+ * Copyright (C) 2002-2007 Aleph One Ltd.
+ *   for Toby Churchill Ltd and Brightstar Engineering
+ *
+ * Created by Charles Manning <charles@aleph1.co.uk>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+/* XXX U-BOOT XXX */
+#include <common.h>
+#include <malloc.h>
+
+#include "yaffsfs.h"
+#include "yaffs_guts.h"
+#include "yaffscfg.h"
+#include "yportenv.h"
+
+/* XXX U-BOOT XXX */
+#if 0
+#include <string.h> // for memset
+#endif
+
+#define YAFFSFS_MAX_SYMLINK_DEREFERENCES 5
+
+#ifndef NULL
+#define NULL ((void *)0)
+#endif
+
+
+const char *yaffsfs_c_version="$Id: yaffsfs.c,v 1.1.1.1 2009/03/25 22:22:12 kenagy Exp $";
+
+// configurationList is the list of devices that are supported
+static yaffsfs_DeviceConfiguration *yaffsfs_configurationList;
+
+
+/* Some forward references */
+static yaffs_Object *yaffsfs_FindObject(yaffs_Object *relativeDirectory, const char *path, int symDepth);
+static void yaffsfs_RemoveObjectCallback(yaffs_Object *obj);
+
+
+// Handle management.
+//
+
+
+unsigned int yaffs_wr_attempts;
+
+typedef struct
+{
+       __u8  inUse:1;          // this handle is in use
+       __u8  readOnly:1;       // this handle is read only
+       __u8  append:1;         // append only
+       __u8  exclusive:1;      // exclusive
+       __u32 position;         // current position in file
+       yaffs_Object *obj;      // the object
+}yaffsfs_Handle;
+
+
+static yaffsfs_Handle yaffsfs_handle[YAFFSFS_N_HANDLES];
+
+// yaffsfs_InitHandle
+/// Inilitalise handles on start-up.
+//
+static int yaffsfs_InitHandles(void)
+{
+       int i;
+       for(i = 0; i < YAFFSFS_N_HANDLES; i++)
+       {
+               yaffsfs_handle[i].inUse = 0;
+               yaffsfs_handle[i].obj = NULL;
+       }
+       return 0;
+}
+
+yaffsfs_Handle *yaffsfs_GetHandlePointer(int h)
+{
+       if(h < 0 || h >= YAFFSFS_N_HANDLES)
+       {
+               return NULL;
+       }
+
+       return &yaffsfs_handle[h];
+}
+
+yaffs_Object *yaffsfs_GetHandleObject(int handle)
+{
+       yaffsfs_Handle *h = yaffsfs_GetHandlePointer(handle);
+
+       if(h && h->inUse)
+       {
+               return h->obj;
+       }
+
+       return NULL;
+}
+
+
+//yaffsfs_GetHandle
+// Grab a handle (when opening a file)
+//
+
+static int yaffsfs_GetHandle(void)
+{
+       int i;
+       yaffsfs_Handle *h;
+
+       for(i = 0; i < YAFFSFS_N_HANDLES; i++)
+       {
+               h = yaffsfs_GetHandlePointer(i);
+               if(!h)
+               {
+                       // todo bug: should never happen
+               }
+               if(!h->inUse)
+               {
+                       memset(h,0,sizeof(yaffsfs_Handle));
+                       h->inUse=1;
+                       return i;
+               }
+       }
+       return -1;
+}
+
+// yaffs_PutHandle
+// Let go of a handle (when closing a file)
+//
+static int yaffsfs_PutHandle(int handle)
+{
+       yaffsfs_Handle *h = yaffsfs_GetHandlePointer(handle);
+
+       if(h)
+       {
+               h->inUse = 0;
+               h->obj = NULL;
+       }
+       return 0;
+}
+
+
+
+// Stuff to search for a directory from a path
+
+
+int yaffsfs_Match(char a, char b)
+{
+       // case sensitive
+       return (a == b);
+}
+
+// yaffsfs_FindDevice
+// yaffsfs_FindRoot
+// Scan the configuration list to find the root.
+// Curveballs: Should match paths that end in '/' too
+// Curveball2 Might have "/x/ and "/x/y". Need to return the longest match
+static yaffs_Device *yaffsfs_FindDevice(const char *path, char **restOfPath)
+{
+       yaffsfs_DeviceConfiguration *cfg = yaffsfs_configurationList;
+       const char *leftOver;
+       const char *p;
+       yaffs_Device *retval = NULL;
+       int thisMatchLength;
+       int longestMatch = -1;
+
+       // Check all configs, choose the one that:
+       // 1) Actually matches a prefix (ie /a amd /abc will not match
+       // 2) Matches the longest.
+       while(cfg && cfg->prefix && cfg->dev)
+       {
+               leftOver = path;
+               p = cfg->prefix;
+               thisMatchLength = 0;
+
+               while(*p &&  //unmatched part of prefix
+                     strcmp(p,"/") && // the rest of the prefix is not / (to catch / at end)
+                     *leftOver &&
+                     yaffsfs_Match(*p,*leftOver))
+               {
+                       p++;
+                       leftOver++;
+                       thisMatchLength++;
+               }
+               if((!*p || strcmp(p,"/") == 0) &&      // end of prefix
+                  (!*leftOver || *leftOver == '/') && // no more in this path name part
+                  (thisMatchLength > longestMatch))
+               {
+                       // Matched prefix
+                       *restOfPath = (char *)leftOver;
+                       retval = cfg->dev;
+                       longestMatch = thisMatchLength;
+               }
+               cfg++;
+       }
+       return retval;
+}
+
+static yaffs_Object *yaffsfs_FindRoot(const char *path, char **restOfPath)
+{
+
+       yaffs_Device *dev;
+
+       dev= yaffsfs_FindDevice(path,restOfPath);
+       if(dev && dev->isMounted)
+       {
+               return dev->rootDir;
+       }
+       return NULL;
+}
+
+static yaffs_Object *yaffsfs_FollowLink(yaffs_Object *obj,int symDepth)
+{
+
+       while(obj && obj->variantType == YAFFS_OBJECT_TYPE_SYMLINK)
+       {
+               char *alias = obj->variant.symLinkVariant.alias;
+
+               if(*alias == '/')
+               {
+                       // Starts with a /, need to scan from root up
+                       obj = yaffsfs_FindObject(NULL,alias,symDepth++);
+               }
+               else
+               {
+                       // Relative to here, so use the parent of the symlink as a start
+                       obj = yaffsfs_FindObject(obj->parent,alias,symDepth++);
+               }
+       }
+       return obj;
+}
+
+
+// yaffsfs_FindDirectory
+// Parse a path to determine the directory and the name within the directory.
+//
+// eg. "/data/xx/ff" --> puts name="ff" and returns the directory "/data/xx"
+static yaffs_Object *yaffsfs_DoFindDirectory(yaffs_Object *startDir,const char *path,char **name,int symDepth)
+{
+       yaffs_Object *dir;
+       char *restOfPath;
+       char str[YAFFS_MAX_NAME_LENGTH+1];
+       int i;
+
+       if(symDepth > YAFFSFS_MAX_SYMLINK_DEREFERENCES)
+       {
+               return NULL;
+       }
+
+       if(startDir)
+       {
+               dir = startDir;
+               restOfPath = (char *)path;
+       }
+       else
+       {
+               dir = yaffsfs_FindRoot(path,&restOfPath);
+       }
+
+       while(dir)
+       {
+               // parse off /.
+               // curve ball: also throw away surplus '/'
+               // eg. "/ram/x////ff" gets treated the same as "/ram/x/ff"
+               while(*restOfPath == '/')
+               {
+                       restOfPath++; // get rid of '/'
+               }
+
+               *name = restOfPath;
+               i = 0;
+
+               while(*restOfPath && *restOfPath != '/')
+               {
+                       if (i < YAFFS_MAX_NAME_LENGTH)
+                       {
+                               str[i] = *restOfPath;
+                               str[i+1] = '\0';
+                               i++;
+                       }
+                       restOfPath++;
+               }
+
+               if(!*restOfPath)
+               {
+                       // got to the end of the string
+                       return dir;
+               }
+               else
+               {
+                       if(strcmp(str,".") == 0)
+                       {
+                               // Do nothing
+                       }
+                       else if(strcmp(str,"..") == 0)
+                       {
+                               dir = dir->parent;
+                       }
+                       else
+                       {
+                               dir = yaffs_FindObjectByName(dir,str);
+
+                               while(dir && dir->variantType == YAFFS_OBJECT_TYPE_SYMLINK)
+                               {
+
+                                       dir = yaffsfs_FollowLink(dir,symDepth);
+
+                               }
+
+                               if(dir && dir->variantType != YAFFS_OBJECT_TYPE_DIRECTORY)
+                               {
+                                       dir = NULL;
+                               }
+                       }
+               }
+       }
+       // directory did not exist.
+       return NULL;
+}
+
+static yaffs_Object *yaffsfs_FindDirectory(yaffs_Object *relativeDirectory,const char *path,char **name,int symDepth)
+{
+       return yaffsfs_DoFindDirectory(relativeDirectory,path,name,symDepth);
+}
+
+// yaffsfs_FindObject turns a path for an existing object into the object
+//
+static yaffs_Object *yaffsfs_FindObject(yaffs_Object *relativeDirectory, const char *path,int symDepth)
+{
+       yaffs_Object *dir;
+       char *name;
+
+       dir = yaffsfs_FindDirectory(relativeDirectory,path,&name,symDepth);
+
+       if(dir && *name)
+       {
+               return yaffs_FindObjectByName(dir,name);
+       }
+
+       return dir;
+}
+
+
+
+int yaffs_open(const char *path, int oflag, int mode)
+{
+       yaffs_Object *obj = NULL;
+       yaffs_Object *dir = NULL;
+       char *name;
+       int handle = -1;
+       yaffsfs_Handle *h = NULL;
+       int alreadyOpen = 0;
+       int alreadyExclusive = 0;
+       int openDenied = 0;
+       int symDepth = 0;
+       int errorReported = 0;
+
+       int i;
+
+
+       // todo sanity check oflag (eg. can't have O_TRUNC without WRONLY or RDWR
+
+
+       yaffsfs_Lock();
+
+       handle = yaffsfs_GetHandle();
+
+       if(handle >= 0)
+       {
+
+               h = yaffsfs_GetHandlePointer(handle);
+
+
+               // try to find the exisiting object
+               obj = yaffsfs_FindObject(NULL,path,0);
+
+               if(obj && obj->variantType == YAFFS_OBJECT_TYPE_SYMLINK)
+               {
+
+                       obj = yaffsfs_FollowLink(obj,symDepth++);
+               }
+
+               if(obj)
+               {
+                       // Check if the object is already in use
+                       alreadyOpen = alreadyExclusive = 0;
+
+                       for(i = 0; i <= YAFFSFS_N_HANDLES; i++)
+                       {
+
+                               if(i != handle &&
+                                  yaffsfs_handle[i].inUse &&
+                                   obj == yaffsfs_handle[i].obj)
+                                {
+                                       alreadyOpen = 1;
+                                       if(yaffsfs_handle[i].exclusive)
+                                       {
+                                               alreadyExclusive = 1;
+                                       }
+                                }
+                       }
+
+                       if(((oflag & O_EXCL) && alreadyOpen) || alreadyExclusive)
+                       {
+                               openDenied = 1;
+                       }
+
+                       // Open should fail if O_CREAT and O_EXCL are specified
+                       if((oflag & O_EXCL) && (oflag & O_CREAT))
+                       {
+                               openDenied = 1;
+                               yaffsfs_SetError(-EEXIST);
+                               errorReported = 1;
+                       }
+
+                       // Check file permissions
+                       if( (oflag & (O_RDWR | O_WRONLY)) == 0 &&     // ie O_RDONLY
+                          !(obj->yst_mode & S_IREAD))
+                       {
+                               openDenied = 1;
+                       }
+
+                       if( (oflag & O_RDWR) &&
+                          !(obj->yst_mode & S_IREAD))
+                       {
+                               openDenied = 1;
+                       }
+
+                       if( (oflag & (O_RDWR | O_WRONLY)) &&
+                          !(obj->yst_mode & S_IWRITE))
+                       {
+                               openDenied = 1;
+                       }
+
+               }
+
+               else if((oflag & O_CREAT))
+               {
+                       // Let's see if we can create this file
+                       dir = yaffsfs_FindDirectory(NULL,path,&name,0);
+                       if(dir)
+                       {
+                               obj = yaffs_MknodFile(dir,name,mode,0,0);
+                       }
+                       else
+                       {
+                               yaffsfs_SetError(-ENOTDIR);
+                       }
+               }
+
+               if(obj && !openDenied)
+               {
+                       h->obj = obj;
+                       h->inUse = 1;
+               h->readOnly = (oflag & (O_WRONLY | O_RDWR)) ? 0 : 1;
+                       h->append =  (oflag & O_APPEND) ? 1 : 0;
+                       h->exclusive = (oflag & O_EXCL) ? 1 : 0;
+                       h->position = 0;
+
+                       obj->inUse++;
+                       if((oflag & O_TRUNC) && !h->readOnly)
+                       {
+                               //todo truncate
+                               yaffs_ResizeFile(obj,0);
+                       }
+
+               }
+               else
+               {
+                       yaffsfs_PutHandle(handle);
+                       if(!errorReported)
+                       {
+                               yaffsfs_SetError(-EACCESS);
+                               errorReported = 1;
+                       }
+                       handle = -1;
+               }
+
+       }
+
+       yaffsfs_Unlock();
+
+       return handle;
+}
+
+int yaffs_close(int fd)
+{
+       yaffsfs_Handle *h = NULL;
+       int retVal = 0;
+
+       yaffsfs_Lock();
+
+       h = yaffsfs_GetHandlePointer(fd);
+
+       if(h && h->inUse)
+       {
+               // clean up
+               yaffs_FlushFile(h->obj,1);
+               h->obj->inUse--;
+               if(h->obj->inUse <= 0 && h->obj->unlinked)
+               {
+                       yaffs_DeleteFile(h->obj);
+               }
+               yaffsfs_PutHandle(fd);
+               retVal = 0;
+       }
+       else
+       {
+               // bad handle
+               yaffsfs_SetError(-EBADF);
+               retVal = -1;
+       }
+
+       yaffsfs_Unlock();
+
+       return retVal;
+}
+
+int yaffs_read(int fd, void *buf, unsigned int nbyte)
+{
+       yaffsfs_Handle *h = NULL;
+       yaffs_Object *obj = NULL;
+       int pos = 0;
+       int nRead = -1;
+       int maxRead;
+
+       yaffsfs_Lock();
+       h = yaffsfs_GetHandlePointer(fd);
+       obj = yaffsfs_GetHandleObject(fd);
+
+       if(!h || !obj)
+       {
+               // bad handle
+               yaffsfs_SetError(-EBADF);
+       }
+       else if( h && obj)
+       {
+               pos=  h->position;
+               if(yaffs_GetObjectFileLength(obj) > pos)
+               {
+                       maxRead = yaffs_GetObjectFileLength(obj) - pos;
+               }
+               else
+               {
+                       maxRead = 0;
+               }
+
+               if(nbyte > maxRead)
+               {
+                       nbyte = maxRead;
+               }
+
+
+               if(nbyte > 0)
+               {
+                       nRead = yaffs_ReadDataFromFile(obj,buf,pos,nbyte);
+                       if(nRead >= 0)
+                       {
+                               h->position = pos + nRead;
+                       }
+                       else
+                       {
+                               //todo error
+                       }
+               }
+               else
+               {
+                       nRead = 0;
+               }
+
+       }
+
+       yaffsfs_Unlock();
+
+
+       return (nRead >= 0) ? nRead : -1;
+
+}
+
+int yaffs_write(int fd, const void *buf, unsigned int nbyte)
+{
+       yaffsfs_Handle *h = NULL;
+       yaffs_Object *obj = NULL;
+       int pos = 0;
+       int nWritten = -1;
+       int writeThrough = 0;
+
+       yaffsfs_Lock();
+       h = yaffsfs_GetHandlePointer(fd);
+       obj = yaffsfs_GetHandleObject(fd);
+
+       if(!h || !obj)
+       {
+               // bad handle
+               yaffsfs_SetError(-EBADF);
+       }
+       else if( h && obj && h->readOnly)
+       {
+               // todo error
+       }
+       else if( h && obj)
+       {
+               if(h->append)
+               {
+                       pos =  yaffs_GetObjectFileLength(obj);
+               }
+               else
+               {
+                       pos = h->position;
+               }
+
+               nWritten = yaffs_WriteDataToFile(obj,buf,pos,nbyte,writeThrough);
+
+               if(nWritten >= 0)
+               {
+                       h->position = pos + nWritten;
+               }
+               else
+               {
+                       //todo error
+               }
+
+       }
+
+       yaffsfs_Unlock();
+
+
+       return (nWritten >= 0) ? nWritten : -1;
+
+}
+
+int yaffs_truncate(int fd, off_t newSize)
+{
+       yaffsfs_Handle *h = NULL;
+       yaffs_Object *obj = NULL;
+       int result = 0;
+
+       yaffsfs_Lock();
+       h = yaffsfs_GetHandlePointer(fd);
+       obj = yaffsfs_GetHandleObject(fd);
+
+       if(!h || !obj)
+       {
+               // bad handle
+               yaffsfs_SetError(-EBADF);
+       }
+       else
+       {
+               // resize the file
+               result = yaffs_ResizeFile(obj,newSize);
+       }
+       yaffsfs_Unlock();
+
+
+       return (result) ? 0 : -1;
+
+}
+
+off_t yaffs_lseek(int fd, off_t offset, int whence)
+{
+       yaffsfs_Handle *h = NULL;
+       yaffs_Object *obj = NULL;
+       int pos = -1;
+       int fSize = -1;
+
+       yaffsfs_Lock();
+       h = yaffsfs_GetHandlePointer(fd);
+       obj = yaffsfs_GetHandleObject(fd);
+
+       if(!h || !obj)
+       {
+               // bad handle
+               yaffsfs_SetError(-EBADF);
+       }
+       else if(whence == SEEK_SET)
+       {
+               if(offset >= 0)
+               {
+                       pos = offset;
+               }
+       }
+       else if(whence == SEEK_CUR)
+       {
+               if( (h->position + offset) >= 0)
+               {
+                       pos = (h->position + offset);
+               }
+       }
+       else if(whence == SEEK_END)
+       {
+               fSize = yaffs_GetObjectFileLength(obj);
+               if(fSize >= 0 && (fSize + offset) >= 0)
+               {
+                       pos = fSize + offset;
+               }
+       }
+
+       if(pos >= 0)
+       {
+               h->position = pos;
+       }
+       else
+       {
+               // todo error
+       }
+
+
+       yaffsfs_Unlock();
+
+       return pos;
+}
+
+
+int yaffsfs_DoUnlink(const char *path,int isDirectory)
+{
+       yaffs_Object *dir = NULL;
+       yaffs_Object *obj = NULL;
+       char *name;
+       int result = YAFFS_FAIL;
+
+       yaffsfs_Lock();
+
+       obj = yaffsfs_FindObject(NULL,path,0);
+       dir = yaffsfs_FindDirectory(NULL,path,&name,0);
+       if(!dir)
+       {
+               yaffsfs_SetError(-ENOTDIR);
+       }
+       else if(!obj)
+       {
+               yaffsfs_SetError(-ENOENT);
+       }
+       else if(!isDirectory && obj->variantType == YAFFS_OBJECT_TYPE_DIRECTORY)
+       {
+               yaffsfs_SetError(-EISDIR);
+       }
+       else if(isDirectory && obj->variantType != YAFFS_OBJECT_TYPE_DIRECTORY)
+       {
+               yaffsfs_SetError(-ENOTDIR);
+       }
+       else
+       {
+               result = yaffs_Unlink(dir,name);
+
+               if(result == YAFFS_FAIL && isDirectory)
+               {
+                       yaffsfs_SetError(-ENOTEMPTY);
+               }
+       }
+
+       yaffsfs_Unlock();
+
+       // todo error
+
+       return (result == YAFFS_FAIL) ? -1 : 0;
+}
+int yaffs_rmdir(const char *path)
+{
+       return yaffsfs_DoUnlink(path,1);
+}
+
+int yaffs_unlink(const char *path)
+{
+       return yaffsfs_DoUnlink(path,0);
+}
+
+int yaffs_rename(const char *oldPath, const char *newPath)
+{
+       yaffs_Object *olddir = NULL;
+       yaffs_Object *newdir = NULL;
+       yaffs_Object *obj = NULL;
+       char *oldname;
+       char *newname;
+       int result= YAFFS_FAIL;
+       int renameAllowed = 1;
+
+       yaffsfs_Lock();
+
+       olddir = yaffsfs_FindDirectory(NULL,oldPath,&oldname,0);
+       newdir = yaffsfs_FindDirectory(NULL,newPath,&newname,0);
+       obj = yaffsfs_FindObject(NULL,oldPath,0);
+
+       if(!olddir || !newdir || !obj)
+       {
+               // bad file
+               yaffsfs_SetError(-EBADF);
+               renameAllowed = 0;
+       }
+       else if(olddir->myDev != newdir->myDev)
+       {
+               // oops must be on same device
+               // todo error
+               yaffsfs_SetError(-EXDEV);
+               renameAllowed = 0;
+       }
+       else if(obj && obj->variantType == YAFFS_OBJECT_TYPE_DIRECTORY)
+       {
+               // It is a directory, check that it is not being renamed to
+               // being its own decendent.
+               // Do this by tracing from the new directory back to the root, checking for obj
+
+               yaffs_Object *xx = newdir;
+
+               while( renameAllowed && xx)
+               {
+                       if(xx == obj)
+                       {
+                               renameAllowed = 0;
+                       }
+                       xx = xx->parent;
+               }
+               if(!renameAllowed) yaffsfs_SetError(-EACCESS);
+       }
+
+       if(renameAllowed)
+       {
+               result = yaffs_RenameObject(olddir,oldname,newdir,newname);
+       }
+
+       yaffsfs_Unlock();
+
+       return (result == YAFFS_FAIL) ? -1 : 0;
+}
+
+
+static int yaffsfs_DoStat(yaffs_Object *obj,struct yaffs_stat *buf)
+{
+       int retVal = -1;
+
+       if(obj)
+       {
+               obj = yaffs_GetEquivalentObject(obj);
+       }
+
+       if(obj && buf)
+       {
+       buf->st_dev = (int)obj->myDev->genericDevice;
+       buf->st_ino = obj->objectId;
+       buf->st_mode = obj->yst_mode & ~S_IFMT; // clear out file type bits
+
+               if(obj->variantType == YAFFS_OBJECT_TYPE_DIRECTORY)
+               {
+                       buf->st_mode |= S_IFDIR;
+               }
+               else if(obj->variantType == YAFFS_OBJECT_TYPE_SYMLINK)
+               {
+                       buf->st_mode |= S_IFLNK;
+               }
+               else if(obj->variantType == YAFFS_OBJECT_TYPE_FILE)
+               {
+                       buf->st_mode |= S_IFREG;
+               }
+
+       buf->st_nlink = yaffs_GetObjectLinkCount(obj);
+       buf->st_uid = 0;
+       buf->st_gid = 0;;
+       buf->st_rdev = obj->yst_rdev;
+       buf->st_size = yaffs_GetObjectFileLength(obj);
+               buf->st_blksize = obj->myDev->nDataBytesPerChunk;
+       buf->st_blocks = (buf->st_size + buf->st_blksize -1)/buf->st_blksize;
+       buf->yst_atime = obj->yst_atime;
+       buf->yst_ctime = obj->yst_ctime;
+       buf->yst_mtime = obj->yst_mtime;
+               retVal = 0;
+       }
+       return retVal;
+}
+
+static int yaffsfs_DoStatOrLStat(const char *path, struct yaffs_stat *buf,int doLStat)
+{
+       yaffs_Object *obj;
+
+       int retVal = -1;
+
+       yaffsfs_Lock();
+       obj = yaffsfs_FindObject(NULL,path,0);
+
+       if(!doLStat && obj)
+       {
+               obj = yaffsfs_FollowLink(obj,0);
+       }
+
+       if(obj)
+       {
+               retVal = yaffsfs_DoStat(obj,buf);
+       }
+       else
+       {
+               // todo error not found
+               yaffsfs_SetError(-ENOENT);
+       }
+
+       yaffsfs_Unlock();
+
+       return retVal;
+
+}
+
+int yaffs_stat(const char *path, struct yaffs_stat *buf)
+{
+       return yaffsfs_DoStatOrLStat(path,buf,0);
+}
+
+int yaffs_lstat(const char *path, struct yaffs_stat *buf)
+{
+       return yaffsfs_DoStatOrLStat(path,buf,1);
+}
+
+int yaffs_fstat(int fd, struct yaffs_stat *buf)
+{
+       yaffs_Object *obj;
+
+       int retVal = -1;
+
+       yaffsfs_Lock();
+       obj = yaffsfs_GetHandleObject(fd);
+
+       if(obj)
+       {
+               retVal = yaffsfs_DoStat(obj,buf);
+       }
+       else
+       {
+               // bad handle
+               yaffsfs_SetError(-EBADF);
+       }
+
+       yaffsfs_Unlock();
+
+       return retVal;
+}
+
+static int yaffsfs_DoChMod(yaffs_Object *obj,mode_t mode)
+{
+       int result = YAFFS_FAIL;
+
+       if(obj)
+       {
+               obj = yaffs_GetEquivalentObject(obj);
+       }
+
+       if(obj)
+       {
+               obj->yst_mode = mode;
+               obj->dirty = 1;
+               result = yaffs_FlushFile(obj,0);
+       }
+
+       return result == YAFFS_OK ? 0 : -1;
+}
+
+
+int yaffs_chmod(const char *path, mode_t mode)
+{
+       yaffs_Object *obj;
+
+       int retVal = -1;
+
+       yaffsfs_Lock();
+       obj = yaffsfs_FindObject(NULL,path,0);
+
+       if(obj)
+       {
+               retVal = yaffsfs_DoChMod(obj,mode);
+       }
+       else
+       {
+               // todo error not found
+               yaffsfs_SetError(-ENOENT);
+       }
+
+       yaffsfs_Unlock();
+
+       return retVal;
+
+}
+
+
+int yaffs_fchmod(int fd, mode_t mode)
+{
+       yaffs_Object *obj;
+
+       int retVal = -1;
+
+       yaffsfs_Lock();
+       obj = yaffsfs_GetHandleObject(fd);
+
+       if(obj)
+       {
+               retVal = yaffsfs_DoChMod(obj,mode);
+       }
+       else
+       {
+               // bad handle
+               yaffsfs_SetError(-EBADF);
+       }
+
+       yaffsfs_Unlock();
+
+       return retVal;
+}
+
+
+int yaffs_mkdir(const char *path, mode_t mode)
+{
+       yaffs_Object *parent = NULL;
+       yaffs_Object *dir = NULL;
+       char *name;
+       int retVal= -1;
+
+       yaffsfs_Lock();
+       parent = yaffsfs_FindDirectory(NULL,path,&name,0);
+       if(parent)
+               dir = yaffs_MknodDirectory(parent,name,mode,0,0);
+       if(dir)
+       {
+               retVal = 0;
+       }
+       else
+       {
+               yaffsfs_SetError(-ENOSPC); // just assume no space for now
+               retVal = -1;
+       }
+
+       yaffsfs_Unlock();
+
+       return retVal;
+}
+
+int yaffs_mount(const char *path)
+{
+       int retVal=-1;
+       int result=YAFFS_FAIL;
+       yaffs_Device *dev=NULL;
+       char *dummy;
+
+       T(YAFFS_TRACE_ALWAYS,("yaffs: Mounting %s\n",path));
+
+       yaffsfs_Lock();
+       dev = yaffsfs_FindDevice(path,&dummy);
+       if(dev)
+       {
+               if(!dev->isMounted)
+               {
+                       result = yaffs_GutsInitialise(dev);
+                       if(result == YAFFS_FAIL)
+                       {
+                               // todo error - mount failed
+                               yaffsfs_SetError(-ENOMEM);
+                       }
+                       retVal = result ? 0 : -1;
+
+               }
+               else
+               {
+                       //todo error - already mounted.
+                       yaffsfs_SetError(-EBUSY);
+               }
+       }
+       else
+       {
+               // todo error - no device
+               yaffsfs_SetError(-ENODEV);
+       }
+       yaffsfs_Unlock();
+       return retVal;
+
+}
+
+int yaffs_unmount(const char *path)
+{
+       int retVal=-1;
+       yaffs_Device *dev=NULL;
+       char *dummy;
+
+       yaffsfs_Lock();
+       dev = yaffsfs_FindDevice(path,&dummy);
+       if(dev)
+       {
+               if(dev->isMounted)
+               {
+                       int i;
+                       int inUse;
+
+                       yaffs_FlushEntireDeviceCache(dev);
+                       yaffs_CheckpointSave(dev);
+
+                       for(i = inUse = 0; i < YAFFSFS_N_HANDLES && !inUse; i++)
+                       {
+                               if(yaffsfs_handle[i].inUse && yaffsfs_handle[i].obj->myDev == dev)
+                               {
+                                       inUse = 1; // the device is in use, can't unmount
+                               }
+                       }
+
+                       if(!inUse)
+                       {
+                               yaffs_Deinitialise(dev);
+
+                               retVal = 0;
+                       }
+                       else
+                       {
+                               // todo error can't unmount as files are open
+                               yaffsfs_SetError(-EBUSY);
+                       }
+
+               }
+               else
+               {
+                       //todo error - not mounted.
+                       yaffsfs_SetError(-EINVAL);
+
+               }
+       }
+       else
+       {
+               // todo error - no device
+               yaffsfs_SetError(-ENODEV);
+       }
+       yaffsfs_Unlock();
+       return retVal;
+
+}
+
+loff_t yaffs_freespace(const char *path)
+{
+       loff_t retVal=-1;
+       yaffs_Device *dev=NULL;
+       char *dummy;
+
+       yaffsfs_Lock();
+       dev = yaffsfs_FindDevice(path,&dummy);
+       if(dev  && dev->isMounted)
+       {
+               retVal = yaffs_GetNumberOfFreeChunks(dev);
+               retVal *= dev->nDataBytesPerChunk;
+
+       }
+       else
+       {
+               yaffsfs_SetError(-EINVAL);
+       }
+
+       yaffsfs_Unlock();
+       return retVal;
+}
+
+
+
+void yaffs_initialise(yaffsfs_DeviceConfiguration *cfgList)
+{
+
+       yaffsfs_DeviceConfiguration *cfg;
+
+       yaffsfs_configurationList = cfgList;
+
+       yaffsfs_InitHandles();
+
+       cfg = yaffsfs_configurationList;
+
+       while(cfg && cfg->prefix && cfg->dev)
+       {
+               cfg->dev->isMounted = 0;
+               cfg->dev->removeObjectCallback = yaffsfs_RemoveObjectCallback;
+               cfg++;
+       }
+}
+
+
+//
+// Directory search stuff.
+
+//
+// Directory search context
+//
+// NB this is an opaque structure.
+
+
+typedef struct
+{
+       __u32 magic;
+       yaffs_dirent de;                /* directory entry being used by this dsc */
+       char name[NAME_MAX+1];          /* name of directory being searched */
+       yaffs_Object *dirObj;           /* ptr to directory being searched */
+       yaffs_Object *nextReturn;       /* obj to be returned by next readddir */
+       int offset;
+       struct list_head others;
+} yaffsfs_DirectorySearchContext;
+
+
+
+static struct list_head search_contexts;
+
+
+static void yaffsfs_SetDirRewound(yaffsfs_DirectorySearchContext *dsc)
+{
+       if(dsc &&
+          dsc->dirObj &&
+          dsc->dirObj->variantType == YAFFS_OBJECT_TYPE_DIRECTORY){
+
+          dsc->offset = 0;
+
+          if( list_empty(&dsc->dirObj->variant.directoryVariant.children)){
+               dsc->nextReturn = NULL;
+          } else {
+               dsc->nextReturn = list_entry(dsc->dirObj->variant.directoryVariant.children.next,
+                                               yaffs_Object,siblings);
+          }
+       } else {
+               /* Hey someone isn't playing nice! */
+       }
+}
+
+static void yaffsfs_DirAdvance(yaffsfs_DirectorySearchContext *dsc)
+{
+       if(dsc &&
+          dsc->dirObj &&
+          dsc->dirObj->variantType == YAFFS_OBJECT_TYPE_DIRECTORY){
+
+          if( dsc->nextReturn == NULL ||
+              list_empty(&dsc->dirObj->variant.directoryVariant.children)){
+               dsc->nextReturn = NULL;
+          } else {
+                  struct list_head *next = dsc->nextReturn->siblings.next;
+
+                  if( next == &dsc->dirObj->variant.directoryVariant.children)
+                       dsc->nextReturn = NULL; /* end of list */
+                  else
+                       dsc->nextReturn = list_entry(next,yaffs_Object,siblings);
+          }
+       } else {
+               /* Hey someone isn't playing nice! */
+       }
+}
+
+static void yaffsfs_RemoveObjectCallback(yaffs_Object *obj)
+{
+
+       struct list_head *i;
+       yaffsfs_DirectorySearchContext *dsc;
+
+       /* if search contexts not initilised then skip */
+       if(!search_contexts.next)
+               return;
+
+       /* Iteratethrough the directory search contexts.
+        * If any are the one being removed, then advance the dsc to
+        * the next one to prevent a hanging ptr.
+        */
+        list_for_each(i, &search_contexts) {
+               if (i) {
+                       dsc = list_entry(i, yaffsfs_DirectorySearchContext,others);
+                       if(dsc->nextReturn == obj)
+                               yaffsfs_DirAdvance(dsc);
+               }
+       }
+
+}
+
+yaffs_DIR *yaffs_opendir(const char *dirname)
+{
+       yaffs_DIR *dir = NULL;
+       yaffs_Object *obj = NULL;
+       yaffsfs_DirectorySearchContext *dsc = NULL;
+
+       yaffsfs_Lock();
+
+       obj = yaffsfs_FindObject(NULL,dirname,0);
+
+       if(obj && obj->variantType == YAFFS_OBJECT_TYPE_DIRECTORY)
+       {
+
+               dsc = YMALLOC(sizeof(yaffsfs_DirectorySearchContext));
+               dir = (yaffs_DIR *)dsc;
+               if(dsc)
+               {
+                       memset(dsc,0,sizeof(yaffsfs_DirectorySearchContext));
+                       dsc->magic = YAFFS_MAGIC;
+                       dsc->dirObj = obj;
+                       strncpy(dsc->name,dirname,NAME_MAX);
+                       INIT_LIST_HEAD(&dsc->others);
+
+                       if(!search_contexts.next)
+                               INIT_LIST_HEAD(&search_contexts);
+
+                       list_add(&dsc->others,&search_contexts);
+                       yaffsfs_SetDirRewound(dsc);             }
+
+       }
+
+       yaffsfs_Unlock();
+
+       return dir;
+}
+
+struct yaffs_dirent *yaffs_readdir(yaffs_DIR *dirp)
+{
+       yaffsfs_DirectorySearchContext *dsc = (yaffsfs_DirectorySearchContext *)dirp;
+       struct yaffs_dirent *retVal = NULL;
+
+       yaffsfs_Lock();
+
+       if(dsc && dsc->magic == YAFFS_MAGIC){
+               yaffsfs_SetError(0);
+               if(dsc->nextReturn){
+                       dsc->de.d_ino = yaffs_GetEquivalentObject(dsc->nextReturn)->objectId;
+                       dsc->de.d_dont_use = (unsigned)dsc->nextReturn;
+                       dsc->de.d_off = dsc->offset++;
+                       yaffs_GetObjectName(dsc->nextReturn,dsc->de.d_name,NAME_MAX);
+                       if(strlen(dsc->de.d_name) == 0)
+                       {
+                               // this should not happen!
+                               strcpy(dsc->de.d_name,"zz");
+                       }
+                       dsc->de.d_reclen = sizeof(struct yaffs_dirent);
+                       retVal = &dsc->de;
+                       yaffsfs_DirAdvance(dsc);
+               } else
+                       retVal = NULL;
+       }
+       else
+       {
+               yaffsfs_SetError(-EBADF);
+       }
+
+       yaffsfs_Unlock();
+
+       return retVal;
+
+}
+
+
+void yaffs_rewinddir(yaffs_DIR *dirp)
+{
+       yaffsfs_DirectorySearchContext *dsc = (yaffsfs_DirectorySearchContext *)dirp;
+
+       yaffsfs_Lock();
+
+       yaffsfs_SetDirRewound(dsc);
+
+       yaffsfs_Unlock();
+}
+
+
+int yaffs_closedir(yaffs_DIR *dirp)
+{
+       yaffsfs_DirectorySearchContext *dsc = (yaffsfs_DirectorySearchContext *)dirp;
+
+       yaffsfs_Lock();
+       dsc->magic = 0;
+       list_del(&dsc->others); /* unhook from list */
+       YFREE(dsc);
+       yaffsfs_Unlock();
+       return 0;
+}
+
+// end of directory stuff
+
+
+int yaffs_symlink(const char *oldpath, const char *newpath)
+{
+       yaffs_Object *parent = NULL;
+       yaffs_Object *obj;
+       char *name;
+       int retVal= -1;
+       int mode = 0; // ignore for now
+
+       yaffsfs_Lock();
+       parent = yaffsfs_FindDirectory(NULL,newpath,&name,0);
+       obj = yaffs_MknodSymLink(parent,name,mode,0,0,oldpath);
+       if(obj)
+       {
+               retVal = 0;
+       }
+       else
+       {
+               yaffsfs_SetError(-ENOSPC); // just assume no space for now
+               retVal = -1;
+       }
+
+       yaffsfs_Unlock();
+
+       return retVal;
+
+}
+
+int yaffs_readlink(const char *path, char *buf, int bufsiz)
+{
+       yaffs_Object *obj = NULL;
+       int retVal;
+
+
+       yaffsfs_Lock();
+
+       obj = yaffsfs_FindObject(NULL,path,0);
+
+       if(!obj)
+       {
+               yaffsfs_SetError(-ENOENT);
+               retVal = -1;
+       }
+       else if(obj->variantType != YAFFS_OBJECT_TYPE_SYMLINK)
+       {
+               yaffsfs_SetError(-EINVAL);
+               retVal = -1;
+       }
+       else
+       {
+               char *alias = obj->variant.symLinkVariant.alias;
+               memset(buf,0,bufsiz);
+               strncpy(buf,alias,bufsiz - 1);
+               retVal = 0;
+       }
+       yaffsfs_Unlock();
+       return retVal;
+}
+
+int yaffs_link(const char *oldpath, const char *newpath)
+{
+       // Creates a link called newpath to existing oldpath
+       yaffs_Object *obj = NULL;
+       yaffs_Object *target = NULL;
+       int retVal = 0;
+
+
+       yaffsfs_Lock();
+
+       obj = yaffsfs_FindObject(NULL,oldpath,0);
+       target = yaffsfs_FindObject(NULL,newpath,0);
+
+       if(!obj)
+       {
+               yaffsfs_SetError(-ENOENT);
+               retVal = -1;
+       }
+       else if(target)
+       {
+               yaffsfs_SetError(-EEXIST);
+               retVal = -1;
+       }
+       else
+       {
+               yaffs_Object *newdir = NULL;
+               yaffs_Object *link = NULL;
+
+               char *newname;
+
+               newdir = yaffsfs_FindDirectory(NULL,newpath,&newname,0);
+
+               if(!newdir)
+               {
+                       yaffsfs_SetError(-ENOTDIR);
+                       retVal = -1;
+               }
+               else if(newdir->myDev != obj->myDev)
+               {
+                       yaffsfs_SetError(-EXDEV);
+                       retVal = -1;
+               }
+               if(newdir && strlen(newname) > 0)
+               {
+                       link = yaffs_Link(newdir,newname,obj);
+                       if(link)
+                               retVal = 0;
+                       else
+                       {
+                               yaffsfs_SetError(-ENOSPC);
+                               retVal = -1;
+                       }
+
+               }
+       }
+       yaffsfs_Unlock();
+
+       return retVal;
+}
+
+int yaffs_mknod(const char *pathname, mode_t mode, dev_t dev);
+
+int yaffs_DumpDevStruct(const char *path)
+{
+       char *rest;
+
+       yaffs_Object *obj = yaffsfs_FindRoot(path,&rest);
+
+       if(obj)
+       {
+               yaffs_Device *dev = obj->myDev;
+
+               printf("\n"
+                          "nPageWrites.......... %d\n"
+                          "nPageReads........... %d\n"
+                          "nBlockErasures....... %d\n"
+                          "nGCCopies............ %d\n"
+                          "garbageCollections... %d\n"
+                          "passiveGarbageColl'ns %d\n"
+                          "\n",
+                               dev->nPageWrites,
+                               dev->nPageReads,
+                               dev->nBlockErasures,
+                               dev->nGCCopies,
+                               dev->garbageCollections,
+                               dev->passiveGarbageCollections
+               );
+
+       }
+       return 0;
+}
diff -Naur u-boot-2009.03_orig/include/CVS/Entries u-boot-2009.03/include/CVS/Entries
--- u-boot-2009.03_orig/include/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/CVS/Entries  2009-03-31 14:58:26.125100800 -0700
@@ -0,0 +1,220 @@
+D/asm-arm////
+D/asm-avr32////
+D/asm-blackfin////
+D/asm-i386////
+D/asm-m68k////
+D/asm-microblaze////
+D/asm-mips////
+D/asm-nios////
+D/asm-nios2////
+D/asm-ppc////
+D/asm-sh////
+D/asm-sparc////
+D/bedbug////
+D/configs////
+D/cramfs////
+D/galileo////
+D/jffs2////
+D/linux////
+D/lzma////
+D/mtd////
+D/pcmcia////
+D/u-boot////
+/.gitignore/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/405_dimm.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/405_mal.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/4xx_i2c.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/74xx_7xx.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ACEX1K.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MCD_dma.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MCD_progCheck.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MCD_tasksInit.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/SA-1100.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/_exports.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/addr_map.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ahci.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/altera.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ambapp.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/api_public.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/arm920t.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/arm925t.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/arm926ejs.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/arm946es.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/armcoremodule.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/at45.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/at91rm9200_i2c.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/at91rm9200_net.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ata.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/atmel_lcdc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bcd.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bcm5221.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bmp_layout.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bzlib.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/circbuf.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/clps7111.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/command.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/common.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/commproc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config_cmd_all.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config_cmd_default.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/console.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/crc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/da9030.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dataflash.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ddr_spd.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/devices.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/div64.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dm9161.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dp83848.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ds4510.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dtt.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/e500.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/elf.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/environment.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/exports.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ext2fs.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fat.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fdc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fdt.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fdt_support.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fis.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fpga.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fsl_esdhc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/hush.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/i2c.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/i8042.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ide.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/iomux.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ioports.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/keyboard.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/kgdb.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lcd.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lcdvideo.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lh7a400.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lh7a404.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lh7a40x.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/libata.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/libfdt.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/libfdt_env.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lmb.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/logbuff.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lpd7a400_cpld.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lynxkdi.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/malloc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mb862xx.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mii_phy.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/miiphy.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mk48t59.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mmc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc106.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc512x.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc5xx.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc5xxx.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc5xxx_sdma.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc8220.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc824x.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc8260.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc8260_irq.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc83xx.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc85xx.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc86xx.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc8xx.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc8xx_irq.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nand.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/net.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/netdev.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nios-io.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nios.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nios2-epcs.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nios2-io.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nios2.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nomadik.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ns16550.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ns87308.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/onenand_uboot.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/part.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pc_keyb.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pca953x.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci_ids.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pcmcia.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/post.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ppc405.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ppc440.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ppc4xx.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ppc4xx_enet.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ppc_asm.tmpl/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ppc_defs.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ps2mult.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/radeon.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/reiserfs.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/rtc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/s3c2400.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/s3c2410.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/s3c24x0.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/s3c6400.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/s3c64x0.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/s6e63d6.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/s_record.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sa1100.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sata.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/scsi.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sed13806.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sed156x.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sha1.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sha256.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sm501.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/smiLynxEM.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/spartan2.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/spartan3.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/spd.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/spd_sdram.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/spi.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/spi_flash.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/status_led.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/stratixII.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sym53c8xx.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/timestamp.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tsec.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tsi108.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ubi_uboot.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/universe.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usb.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usb_cdc_acm.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usb_defs.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usbdcore.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usbdcore_ep0.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usbdcore_mpc8xx.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usbdcore_omap1510.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usbdescriptors.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/version.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/vfd_logo.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/video.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/video_ad7176.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/video_ad7177.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/video_ad7179.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/video_easylogo.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/video_fb.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/video_font.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/video_logo.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/virtex2.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/vsc7385.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/vxworks.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/w83c553f.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/watchdog.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xilinx.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xyzModem.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/zlib.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D/asm-or1200////
+/image.h/1.2/Wed Mar 25 23:04:34 2009//
+/linux_logo.h/1.1.1.1/Tue Mar 31 21:57:41 2009//T1.1.1.1
+/lxt971a.h/1.1.1.1/Tue Mar 31 21:57:41 2009//T1.1.1.1
+/ns7520_eth.h/1.1.1.1/Tue Mar 31 21:58:01 2009//T1.1.1.1
+/ns9750_bbus.h/1.1.1.1/Tue Mar 31 21:58:02 2009//T1.1.1.1
+/ns9750_eth.h/1.1.1.1/Tue Mar 31 21:58:02 2009//T1.1.1.1
+/ns9750_mem.h/1.1.1.1/Tue Mar 31 21:58:02 2009//T1.1.1.1
+/ns9750_ser.h/1.1.1.1/Tue Mar 31 21:58:02 2009//T1.1.1.1
+/ns9750_sys.h/1.1.1.1/Tue Mar 31 21:58:02 2009//T1.1.1.1
+/systemace.h/1.1.1.1/Tue Mar 31 21:58:25 2009//T1.1.1.1
diff -Naur u-boot-2009.03_orig/include/CVS/Entries.Extra u-boot-2009.03/include/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/CVS/Entries.Extra    2009-03-31 14:58:26.125100800 -0700
@@ -0,0 +1,220 @@
+D/asm-arm////
+D/asm-avr32////
+D/asm-blackfin////
+D/asm-i386////
+D/asm-m68k////
+D/asm-microblaze////
+D/asm-mips////
+D/asm-nios////
+D/asm-nios2////
+D/asm-ppc////
+D/asm-sh////
+D/asm-sparc////
+D/bedbug////
+D/configs////
+D/cramfs////
+D/galileo////
+D/jffs2////
+D/linux////
+D/lzma////
+D/mtd////
+D/pcmcia////
+D/u-boot////
+/.gitignore///1238019733/
+/405_dimm.h///1238019733/
+/405_mal.h///1238019733/
+/4xx_i2c.h///1238019733/
+/74xx_7xx.h///1238019733/
+/ACEX1K.h///1238019733/
+/MCD_dma.h///1238019733/
+/MCD_progCheck.h///1238019733/
+/MCD_tasksInit.h///1238019733/
+/SA-1100.h///1238019734/
+/_exports.h///1238019734/
+/addr_map.h///1238019733/
+/ahci.h///1238019733/
+/altera.h///1238019733/
+/ambapp.h///1238019733/
+/api_public.h///1238019733/
+/arm920t.h///1238019733/
+/arm925t.h///1238019733/
+/arm926ejs.h///1238019733/
+/arm946es.h///1238019733/
+/armcoremodule.h///1238019733/
+/at45.h///1238019733/
+/at91rm9200_i2c.h///1238019733/
+/at91rm9200_net.h///1238019733/
+/ata.h///1238019733/
+/atmel_lcdc.h///1238019733/
+/bcd.h///1238019733/
+/bcm5221.h///1238019733/
+/bmp_layout.h///1238019733/
+/bzlib.h///1238019733/
+/circbuf.h///1238019733/
+/clps7111.h///1238019733/
+/command.h///1238019733/
+/common.h///1238019733/
+/commproc.h///1238019733/
+/config_cmd_all.h///1238019733/
+/config_cmd_default.h///1238019733/
+/console.h///1238019733/
+/crc.h///1238019733/
+/da9030.h///1238019733/
+/dataflash.h///1238019733/
+/ddr_spd.h///1238019733/
+/devices.h///1238019733/
+/div64.h///1238019733/
+/dm9161.h///1238019733/
+/dp83848.h///1238019733/
+/ds4510.h///1238019733/
+/dtt.h///1238019733/
+/e500.h///1238019733/
+/elf.h///1238019733/
+/environment.h///1238019733/
+/exports.h///1238019733/
+/ext2fs.h///1238019733/
+/fat.h///1238019733/
+/fdc.h///1238019733/
+/fdt.h///1238019733/
+/fdt_support.h///1238019733/
+/fis.h///1238019733/
+/flash.h///1238019733/
+/fpga.h///1238019733/
+/fsl_esdhc.h///1238019733/
+/hush.h///1238019733/
+/i2c.h///1238019733/
+/i8042.h///1238019733/
+/ide.h///1238019733/
+/iomux.h///1238019733/
+/ioports.h///1238019733/
+/keyboard.h///1238019733/
+/kgdb.h///1238019733/
+/lcd.h///1238019733/
+/lcdvideo.h///1238019733/
+/lh7a400.h///1238019733/
+/lh7a404.h///1238019733/
+/lh7a40x.h///1238019733/
+/libata.h///1238019733/
+/libfdt.h///1238019733/
+/libfdt_env.h///1238019733/
+/lmb.h///1238019733/
+/logbuff.h///1238019733/
+/lpd7a400_cpld.h///1238019733/
+/lynxkdi.h///1238019733/
+/malloc.h///1238019733/
+/mb862xx.h///1238019733/
+/mii_phy.h///1238019733/
+/miiphy.h///1238019733/
+/mk48t59.h///1238019733/
+/mmc.h///1238019733/
+/mpc106.h///1238019733/
+/mpc512x.h///1238019733/
+/mpc5xx.h///1238019733/
+/mpc5xxx.h///1238019733/
+/mpc5xxx_sdma.h///1238019733/
+/mpc8220.h///1238019733/
+/mpc824x.h///1238019733/
+/mpc8260.h///1238019733/
+/mpc8260_irq.h///1238019733/
+/mpc83xx.h///1238019733/
+/mpc85xx.h///1238019733/
+/mpc86xx.h///1238019733/
+/mpc8xx.h///1238019733/
+/mpc8xx_irq.h///1238019733/
+/nand.h///1238019733/
+/net.h///1238019733/
+/netdev.h///1238019733/
+/nios-io.h///1238019733/
+/nios.h///1238019733/
+/nios2-epcs.h///1238019733/
+/nios2-io.h///1238019733/
+/nios2.h///1238019733/
+/nomadik.h///1238019733/
+/ns16550.h///1238019733/
+/ns87308.h///1238019733/
+/onenand_uboot.h///1238019733/
+/part.h///1238019733/
+/pc_keyb.h///1238019734/
+/pca953x.h///1238019734/
+/pci.h///1238019734/
+/pci_ids.h///1238019734/
+/pcmcia.h///1238019734/
+/post.h///1238019734/
+/ppc405.h///1238019734/
+/ppc440.h///1238019734/
+/ppc4xx.h///1238019734/
+/ppc4xx_enet.h///1238019734/
+/ppc_asm.tmpl///1238019734/
+/ppc_defs.h///1238019734/
+/ps2mult.h///1238019734/
+/radeon.h///1238019734/
+/reiserfs.h///1238019734/
+/rtc.h///1238019734/
+/s3c2400.h///1238019734/
+/s3c2410.h///1238019734/
+/s3c24x0.h///1238019734/
+/s3c6400.h///1238019734/
+/s3c64x0.h///1238019734/
+/s6e63d6.h///1238019734/
+/s_record.h///1238019734/
+/sa1100.h///1238019734/
+/sata.h///1238019734/
+/scsi.h///1238019734/
+/sed13806.h///1238019734/
+/sed156x.h///1238019734/
+/serial.h///1238019734/
+/sha1.h///1238019734/
+/sha256.h///1238019734/
+/sm501.h///1238019734/
+/smiLynxEM.h///1238019734/
+/spartan2.h///1238019734/
+/spartan3.h///1238019734/
+/spd.h///1238019734/
+/spd_sdram.h///1238019734/
+/spi.h///1238019734/
+/spi_flash.h///1238019734/
+/status_led.h///1238019734/
+/stratixII.h///1238019734/
+/sym53c8xx.h///1238019734/
+/timestamp.h///1238019734/
+/tsec.h///1238019734/
+/tsi108.h///1238019734/
+/ubi_uboot.h///1238019734/
+/universe.h///1238019734/
+/usb.h///1238019734/
+/usb_cdc_acm.h///1238019734/
+/usb_defs.h///1238019734/
+/usbdcore.h///1238019734/
+/usbdcore_ep0.h///1238019734/
+/usbdcore_mpc8xx.h///1238019734/
+/usbdcore_omap1510.h///1238019734/
+/usbdescriptors.h///1238019734/
+/version.h///1238019734/
+/vfd_logo.h///1238019734/
+/video.h///1238019734/
+/video_ad7176.h///1238019734/
+/video_ad7177.h///1238019734/
+/video_ad7179.h///1238019734/
+/video_easylogo.h///1238019734/
+/video_fb.h///1238019734/
+/video_font.h///1238019734/
+/video_logo.h///1238019734/
+/virtex2.h///1238019734/
+/vsc7385.h///1238019734/
+/vxworks.h///1238019734/
+/w83c553f.h///1238019734/
+/watchdog.h///1238019734/
+/xilinx.h///1238019734/
+/xyzModem.h///1238019734/
+/zlib.h///1238019734/
+D/asm-or1200////
+/image.h///1238028708/
+/linux_logo.h///1238019733/
+/lxt971a.h///1238019733/
+/ns7520_eth.h///1238019733/
+/ns9750_bbus.h///1238019733/
+/ns9750_eth.h///1238019733/
+/ns9750_mem.h///1238019733/
+/ns9750_ser.h///1238019733/
+/ns9750_sys.h///1238019733/
+/systemace.h///1238019734/
diff -Naur u-boot-2009.03_orig/include/CVS/Entries.Extra.Old u-boot-2009.03/include/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/CVS/Entries.Extra.Old        2009-03-31 14:58:02.000000000 -0700
@@ -0,0 +1,220 @@
+D/asm-arm////
+D/asm-avr32////
+D/asm-blackfin////
+D/asm-i386////
+D/asm-m68k////
+D/asm-microblaze////
+D/asm-mips////
+D/asm-nios////
+D/asm-nios2////
+D/asm-ppc////
+D/asm-sh////
+D/asm-sparc////
+D/bedbug////
+D/configs////
+D/cramfs////
+D/galileo////
+D/jffs2////
+D/linux////
+D/lzma////
+D/mtd////
+D/pcmcia////
+D/u-boot////
+/.gitignore///1238019733/
+/405_dimm.h///1238019733/
+/405_mal.h///1238019733/
+/4xx_i2c.h///1238019733/
+/74xx_7xx.h///1238019733/
+/ACEX1K.h///1238019733/
+/MCD_dma.h///1238019733/
+/MCD_progCheck.h///1238019733/
+/MCD_tasksInit.h///1238019733/
+/SA-1100.h///1238019734/
+/_exports.h///1238019734/
+/addr_map.h///1238019733/
+/ahci.h///1238019733/
+/altera.h///1238019733/
+/ambapp.h///1238019733/
+/api_public.h///1238019733/
+/arm920t.h///1238019733/
+/arm925t.h///1238019733/
+/arm926ejs.h///1238019733/
+/arm946es.h///1238019733/
+/armcoremodule.h///1238019733/
+/at45.h///1238019733/
+/at91rm9200_i2c.h///1238019733/
+/at91rm9200_net.h///1238019733/
+/ata.h///1238019733/
+/atmel_lcdc.h///1238019733/
+/bcd.h///1238019733/
+/bcm5221.h///1238019733/
+/bmp_layout.h///1238019733/
+/bzlib.h///1238019733/
+/circbuf.h///1238019733/
+/clps7111.h///1238019733/
+/command.h///1238019733/
+/common.h///1238019733/
+/commproc.h///1238019733/
+/config_cmd_all.h///1238019733/
+/config_cmd_default.h///1238019733/
+/console.h///1238019733/
+/crc.h///1238019733/
+/da9030.h///1238019733/
+/dataflash.h///1238019733/
+/ddr_spd.h///1238019733/
+/devices.h///1238019733/
+/div64.h///1238019733/
+/dm9161.h///1238019733/
+/dp83848.h///1238019733/
+/ds4510.h///1238019733/
+/dtt.h///1238019733/
+/e500.h///1238019733/
+/elf.h///1238019733/
+/environment.h///1238019733/
+/exports.h///1238019733/
+/ext2fs.h///1238019733/
+/fat.h///1238019733/
+/fdc.h///1238019733/
+/fdt.h///1238019733/
+/fdt_support.h///1238019733/
+/fis.h///1238019733/
+/flash.h///1238019733/
+/fpga.h///1238019733/
+/fsl_esdhc.h///1238019733/
+/hush.h///1238019733/
+/i2c.h///1238019733/
+/i8042.h///1238019733/
+/ide.h///1238019733/
+/iomux.h///1238019733/
+/ioports.h///1238019733/
+/keyboard.h///1238019733/
+/kgdb.h///1238019733/
+/lcd.h///1238019733/
+/lcdvideo.h///1238019733/
+/lh7a400.h///1238019733/
+/lh7a404.h///1238019733/
+/lh7a40x.h///1238019733/
+/libata.h///1238019733/
+/libfdt.h///1238019733/
+/libfdt_env.h///1238019733/
+/lmb.h///1238019733/
+/logbuff.h///1238019733/
+/lpd7a400_cpld.h///1238019733/
+/lynxkdi.h///1238019733/
+/malloc.h///1238019733/
+/mb862xx.h///1238019733/
+/mii_phy.h///1238019733/
+/miiphy.h///1238019733/
+/mk48t59.h///1238019733/
+/mmc.h///1238019733/
+/mpc106.h///1238019733/
+/mpc512x.h///1238019733/
+/mpc5xx.h///1238019733/
+/mpc5xxx.h///1238019733/
+/mpc5xxx_sdma.h///1238019733/
+/mpc8220.h///1238019733/
+/mpc824x.h///1238019733/
+/mpc8260.h///1238019733/
+/mpc8260_irq.h///1238019733/
+/mpc83xx.h///1238019733/
+/mpc85xx.h///1238019733/
+/mpc86xx.h///1238019733/
+/mpc8xx.h///1238019733/
+/mpc8xx_irq.h///1238019733/
+/nand.h///1238019733/
+/net.h///1238019733/
+/netdev.h///1238019733/
+/nios-io.h///1238019733/
+/nios.h///1238019733/
+/nios2-epcs.h///1238019733/
+/nios2-io.h///1238019733/
+/nios2.h///1238019733/
+/nomadik.h///1238019733/
+/ns16550.h///1238019733/
+/ns87308.h///1238019733/
+/onenand_uboot.h///1238019733/
+/part.h///1238019733/
+/pc_keyb.h///1238019734/
+/pca953x.h///1238019734/
+/pci.h///1238019734/
+/pci_ids.h///1238019734/
+/pcmcia.h///1238019734/
+/post.h///1238019734/
+/ppc405.h///1238019734/
+/ppc440.h///1238019734/
+/ppc4xx.h///1238019734/
+/ppc4xx_enet.h///1238019734/
+/ppc_asm.tmpl///1238019734/
+/ppc_defs.h///1238019734/
+/ps2mult.h///1238019734/
+/radeon.h///1238019734/
+/reiserfs.h///1238019734/
+/rtc.h///1238019734/
+/s3c2400.h///1238019734/
+/s3c2410.h///1238019734/
+/s3c24x0.h///1238019734/
+/s3c6400.h///1238019734/
+/s3c64x0.h///1238019734/
+/s6e63d6.h///1238019734/
+/s_record.h///1238019734/
+/sa1100.h///1238019734/
+/sata.h///1238019734/
+/scsi.h///1238019734/
+/sed13806.h///1238019734/
+/sed156x.h///1238019734/
+/serial.h///1238019734/
+/sha1.h///1238019734/
+/sha256.h///1238019734/
+/sm501.h///1238019734/
+/smiLynxEM.h///1238019734/
+/spartan2.h///1238019734/
+/spartan3.h///1238019734/
+/spd.h///1238019734/
+/spd_sdram.h///1238019734/
+/spi.h///1238019734/
+/spi_flash.h///1238019734/
+/status_led.h///1238019734/
+/stratixII.h///1238019734/
+/sym53c8xx.h///1238019734/
+/timestamp.h///1238019734/
+/tsec.h///1238019734/
+/tsi108.h///1238019734/
+/ubi_uboot.h///1238019734/
+/universe.h///1238019734/
+/usb.h///1238019734/
+/usb_cdc_acm.h///1238019734/
+/usb_defs.h///1238019734/
+/usbdcore.h///1238019734/
+/usbdcore_ep0.h///1238019734/
+/usbdcore_mpc8xx.h///1238019734/
+/usbdcore_omap1510.h///1238019734/
+/usbdescriptors.h///1238019734/
+/version.h///1238019734/
+/vfd_logo.h///1238019734/
+/video.h///1238019734/
+/video_ad7176.h///1238019734/
+/video_ad7177.h///1238019734/
+/video_ad7179.h///1238019734/
+/video_easylogo.h///1238019734/
+/video_fb.h///1238019734/
+/video_font.h///1238019734/
+/video_logo.h///1238019734/
+/virtex2.h///1238019734/
+/vsc7385.h///1238019734/
+/vxworks.h///1238019734/
+/w83c553f.h///1238019734/
+/watchdog.h///1238019734/
+/xilinx.h///1238019734/
+/xyzModem.h///1238019734/
+/zlib.h///1238019734/
+D/asm-or1200////
+/image.h///1238028708/
+/systemace.h///1238028709/
+/linux_logo.h///1238019733/
+/lxt971a.h///1238019733/
+/ns7520_eth.h///1238019733/
+/ns9750_bbus.h///1238019733/
+/ns9750_eth.h///1238019733/
+/ns9750_mem.h///1238019733/
+/ns9750_ser.h///1238019733/
+/ns9750_sys.h///1238019733/
diff -Naur u-boot-2009.03_orig/include/CVS/Entries.Old u-boot-2009.03/include/CVS/Entries.Old
--- u-boot-2009.03_orig/include/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/CVS/Entries.Old      2009-03-31 14:58:02.000000000 -0700
@@ -0,0 +1,220 @@
+D/asm-arm////
+D/asm-avr32////
+D/asm-blackfin////
+D/asm-i386////
+D/asm-m68k////
+D/asm-microblaze////
+D/asm-mips////
+D/asm-nios////
+D/asm-nios2////
+D/asm-ppc////
+D/asm-sh////
+D/asm-sparc////
+D/bedbug////
+D/configs////
+D/cramfs////
+D/galileo////
+D/jffs2////
+D/linux////
+D/lzma////
+D/mtd////
+D/pcmcia////
+D/u-boot////
+/.gitignore/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/405_dimm.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/405_mal.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/4xx_i2c.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/74xx_7xx.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ACEX1K.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MCD_dma.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MCD_progCheck.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MCD_tasksInit.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/SA-1100.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/_exports.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/addr_map.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ahci.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/altera.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ambapp.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/api_public.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/arm920t.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/arm925t.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/arm926ejs.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/arm946es.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/armcoremodule.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/at45.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/at91rm9200_i2c.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/at91rm9200_net.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ata.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/atmel_lcdc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bcd.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bcm5221.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bmp_layout.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bzlib.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/circbuf.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/clps7111.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/command.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/common.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/commproc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config_cmd_all.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config_cmd_default.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/console.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/crc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/da9030.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dataflash.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ddr_spd.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/devices.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/div64.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dm9161.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dp83848.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ds4510.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dtt.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/e500.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/elf.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/environment.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/exports.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ext2fs.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fat.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fdc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fdt.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fdt_support.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fis.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fpga.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fsl_esdhc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/hush.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/i2c.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/i8042.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ide.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/iomux.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ioports.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/keyboard.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/kgdb.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lcd.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lcdvideo.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lh7a400.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lh7a404.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lh7a40x.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/libata.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/libfdt.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/libfdt_env.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lmb.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/logbuff.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lpd7a400_cpld.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lynxkdi.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/malloc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mb862xx.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mii_phy.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/miiphy.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mk48t59.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mmc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc106.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc512x.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc5xx.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc5xxx.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc5xxx_sdma.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc8220.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc824x.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc8260.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc8260_irq.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc83xx.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc85xx.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc86xx.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc8xx.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc8xx_irq.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nand.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/net.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/netdev.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nios-io.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nios.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nios2-epcs.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nios2-io.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nios2.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nomadik.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ns16550.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ns87308.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/onenand_uboot.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/part.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pc_keyb.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pca953x.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci_ids.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pcmcia.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/post.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ppc405.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ppc440.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ppc4xx.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ppc4xx_enet.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ppc_asm.tmpl/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ppc_defs.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ps2mult.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/radeon.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/reiserfs.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/rtc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/s3c2400.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/s3c2410.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/s3c24x0.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/s3c6400.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/s3c64x0.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/s6e63d6.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/s_record.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sa1100.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sata.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/scsi.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sed13806.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sed156x.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sha1.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sha256.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sm501.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/smiLynxEM.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/spartan2.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/spartan3.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/spd.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/spd_sdram.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/spi.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/spi_flash.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/status_led.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/stratixII.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sym53c8xx.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/timestamp.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tsec.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tsi108.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ubi_uboot.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/universe.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usb.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usb_cdc_acm.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usb_defs.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usbdcore.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usbdcore_ep0.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usbdcore_mpc8xx.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usbdcore_omap1510.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usbdescriptors.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/version.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/vfd_logo.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/video.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/video_ad7176.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/video_ad7177.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/video_ad7179.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/video_easylogo.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/video_fb.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/video_font.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/video_logo.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/virtex2.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/vsc7385.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/vxworks.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/w83c553f.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/watchdog.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xilinx.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xyzModem.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/zlib.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D/asm-or1200////
+/image.h/1.2/Wed Mar 25 23:04:34 2009//
+/systemace.h/1.2/Thu Mar 26 00:51:49 2009//
+/linux_logo.h/1.1.1.1/Tue Mar 31 21:57:41 2009//T1.1.1.1
+/lxt971a.h/1.1.1.1/Tue Mar 31 21:57:41 2009//T1.1.1.1
+/ns7520_eth.h/1.1.1.1/Tue Mar 31 21:58:01 2009//T1.1.1.1
+/ns9750_bbus.h/1.1.1.1/Tue Mar 31 21:58:02 2009//T1.1.1.1
+/ns9750_eth.h/1.1.1.1/Tue Mar 31 21:58:02 2009//T1.1.1.1
+/ns9750_mem.h/1.1.1.1/Tue Mar 31 21:58:02 2009//T1.1.1.1
+/ns9750_ser.h/1.1.1.1/Tue Mar 31 21:58:02 2009//T1.1.1.1
+/ns9750_sys.h/1.1.1.1/Tue Mar 31 21:58:02 2009//T1.1.1.1
diff -Naur u-boot-2009.03_orig/include/CVS/Repository u-boot-2009.03/include/CVS/Repository
--- u-boot-2009.03_orig/include/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/CVS/Repository       2009-03-25 15:25:35.899838500 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include
diff -Naur u-boot-2009.03_orig/include/CVS/Root u-boot-2009.03/include/CVS/Root
--- u-boot-2009.03_orig/include/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/CVS/Root     2009-03-25 15:25:35.899838500 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/asm-arm/CVS/Entries u-boot-2009.03/include/asm-arm/CVS/Entries
--- u-boot-2009.03_orig/include/asm-arm/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/CVS/Entries  2009-03-25 15:58:07.949845300 -0700
@@ -0,0 +1,40 @@
+D/arch-arm720t////
+D/arch-arm925t////
+D/arch-arm926ejs////
+D/arch-at91////
+D/arch-at91rm9200////
+D/arch-davinci////
+D/arch-imx////
+D/arch-ixp////
+D/arch-ks8695////
+D/arch-lpc2292////
+D/arch-mx31////
+D/arch-omap////
+D/arch-omap24xx////
+D/arch-omap3////
+D/arch-pxa////
+D/arch-s3c24x0////
+D/arch-s3c44b0////
+D/arch-s3c64xx////
+D/arch-sa1100////
+D/proc-armv////
+/atomic.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bitops.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/byteorder.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dma-mapping.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/errno.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/global_data.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/hardware.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/io.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mach-types.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/memory.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/posix_types.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/processor.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ptrace.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/setup.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sizes.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/string.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/types.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot-arm.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
diff -Naur u-boot-2009.03_orig/include/asm-arm/CVS/Entries.Extra u-boot-2009.03/include/asm-arm/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/asm-arm/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/CVS/Entries.Extra    2009-03-25 15:58:07.949845300 -0700
@@ -0,0 +1,40 @@
+D/arch-arm720t////
+D/arch-arm925t////
+D/arch-arm926ejs////
+D/arch-at91////
+D/arch-at91rm9200////
+D/arch-davinci////
+D/arch-imx////
+D/arch-ixp////
+D/arch-ks8695////
+D/arch-lpc2292////
+D/arch-mx31////
+D/arch-omap////
+D/arch-omap24xx////
+D/arch-omap3////
+D/arch-pxa////
+D/arch-s3c24x0////
+D/arch-s3c44b0////
+D/arch-s3c64xx////
+D/arch-sa1100////
+D/proc-armv////
+/atomic.h///1238019734/
+/bitops.h///1238019734/
+/byteorder.h///1238019734/
+/config.h///1238019734/
+/dma-mapping.h///1238019734/
+/errno.h///1238019734/
+/global_data.h///1238019734/
+/hardware.h///1238019734/
+/io.h///1238019734/
+/mach-types.h///1238019734/
+/memory.h///1238019735/
+/posix_types.h///1238019735/
+/processor.h///1238019735/
+/ptrace.h///1238019735/
+/setup.h///1238019735/
+/sizes.h///1238019735/
+/string.h///1238019735/
+/types.h///1238019735/
+/u-boot-arm.h///1238019735/
+/u-boot.h///1238019735/
diff -Naur u-boot-2009.03_orig/include/asm-arm/CVS/Entries.Extra.Old u-boot-2009.03/include/asm-arm/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/asm-arm/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/CVS/Entries.Extra.Old        2009-03-25 15:25:41.000000000 -0700
@@ -0,0 +1,40 @@
+/atomic.h///1238019734/
+/bitops.h///1238019734/
+/byteorder.h///1238019734/
+/config.h///1238019734/
+/dma-mapping.h///1238019734/
+/errno.h///1238019734/
+/global_data.h///1238019734/
+/hardware.h///1238019734/
+/io.h///1238019734/
+/mach-types.h///1238019734/
+/memory.h///1238019735/
+/posix_types.h///1238019735/
+/processor.h///1238019735/
+/ptrace.h///1238019735/
+/setup.h///1238019735/
+/sizes.h///1238019735/
+/string.h///1238019735/
+/types.h///1238019735/
+/u-boot-arm.h///1238019735/
+/u-boot.h///1238019735/
+D/arch-arm720t////
+D/arch-arm925t////
+D/arch-arm926ejs////
+D/arch-at91////
+D/arch-at91rm9200////
+D/arch-davinci////
+D/arch-imx////
+D/arch-ixp////
+D/arch-ks8695////
+D/arch-lpc2292////
+D/arch-mx31////
+D/arch-omap////
+D/arch-omap24xx////
+D/arch-omap3////
+D/arch-pxa////
+D/arch-s3c24x0////
+D/arch-s3c44b0////
+D/arch-s3c64xx////
+D/arch-sa1100////
+D/proc-armv////
diff -Naur u-boot-2009.03_orig/include/asm-arm/CVS/Entries.Old u-boot-2009.03/include/asm-arm/CVS/Entries.Old
--- u-boot-2009.03_orig/include/asm-arm/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/CVS/Entries.Old      2009-03-25 15:25:41.000000000 -0700
@@ -0,0 +1,40 @@
+/atomic.h/1.1.1.1/Wed Mar 25 22:22:14 2009//
+/bitops.h/1.1.1.1/Wed Mar 25 22:22:14 2009//
+/byteorder.h/1.1.1.1/Wed Mar 25 22:22:14 2009//
+/config.h/1.1.1.1/Wed Mar 25 22:22:14 2009//
+/dma-mapping.h/1.1.1.1/Wed Mar 25 22:22:14 2009//
+/errno.h/1.1.1.1/Wed Mar 25 22:22:14 2009//
+/global_data.h/1.1.1.1/Wed Mar 25 22:22:14 2009//
+/hardware.h/1.1.1.1/Wed Mar 25 22:22:14 2009//
+/io.h/1.1.1.1/Wed Mar 25 22:22:14 2009//
+/mach-types.h/1.1.1.1/Wed Mar 25 22:22:14 2009//
+/memory.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+/posix_types.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+/processor.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+/ptrace.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+/setup.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+/sizes.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+/string.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+/types.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+/u-boot-arm.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+/u-boot.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+D/arch-arm720t////
+D/arch-arm925t////
+D/arch-arm926ejs////
+D/arch-at91////
+D/arch-at91rm9200////
+D/arch-davinci////
+D/arch-imx////
+D/arch-ixp////
+D/arch-ks8695////
+D/arch-lpc2292////
+D/arch-mx31////
+D/arch-omap////
+D/arch-omap24xx////
+D/arch-omap3////
+D/arch-pxa////
+D/arch-s3c24x0////
+D/arch-s3c44b0////
+D/arch-s3c64xx////
+D/arch-sa1100////
+D/proc-armv////
diff -Naur u-boot-2009.03_orig/include/asm-arm/CVS/Repository u-boot-2009.03/include/asm-arm/CVS/Repository
--- u-boot-2009.03_orig/include/asm-arm/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/CVS/Repository       2009-03-25 15:25:37.852951000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/asm-arm
diff -Naur u-boot-2009.03_orig/include/asm-arm/CVS/Root u-boot-2009.03/include/asm-arm/CVS/Root
--- u-boot-2009.03_orig/include/asm-arm/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/CVS/Root     2009-03-25 15:25:37.852951000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-arm720t/CVS/Entries u-boot-2009.03/include/asm-arm/arch-arm720t/CVS/Entries
--- u-boot-2009.03_orig/include/asm-arm/arch-arm720t/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-arm720t/CVS/Entries     2009-03-25 15:58:06.481104700 -0700
@@ -0,0 +1,10 @@
+/hardware.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/netarm_dma_module.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/netarm_eni_module.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/netarm_eth_module.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/netarm_gen_module.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/netarm_mem_module.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/netarm_registers.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/netarm_ser_module.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/s3c4510b.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-arm720t/CVS/Entries.Extra u-boot-2009.03/include/asm-arm/arch-arm720t/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/asm-arm/arch-arm720t/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-arm720t/CVS/Entries.Extra       2009-03-25 15:58:06.496729600 -0700
@@ -0,0 +1,9 @@
+/hardware.h///1238019735/
+/netarm_dma_module.h///1238019735/
+/netarm_eni_module.h///1238019735/
+/netarm_eth_module.h///1238019735/
+/netarm_gen_module.h///1238019735/
+/netarm_mem_module.h///1238019735/
+/netarm_registers.h///1238019735/
+/netarm_ser_module.h///1238019735/
+/s3c4510b.h///1238019735/
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-arm720t/CVS/Entries.Extra.Old u-boot-2009.03/include/asm-arm/arch-arm720t/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/asm-arm/arch-arm720t/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-arm720t/CVS/Entries.Extra.Old   2009-03-25 15:25:38.000000000 -0700
@@ -0,0 +1,9 @@
+/hardware.h///1238019735/
+/netarm_dma_module.h///1238019735/
+/netarm_eni_module.h///1238019735/
+/netarm_eth_module.h///1238019735/
+/netarm_gen_module.h///1238019735/
+/netarm_mem_module.h///1238019735/
+/netarm_registers.h///1238019735/
+/netarm_ser_module.h///1238019735/
+/s3c4510b.h///1238019735/
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-arm720t/CVS/Entries.Old u-boot-2009.03/include/asm-arm/arch-arm720t/CVS/Entries.Old
--- u-boot-2009.03_orig/include/asm-arm/arch-arm720t/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-arm720t/CVS/Entries.Old 2009-03-25 15:25:38.000000000 -0700
@@ -0,0 +1,10 @@
+/hardware.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+/netarm_dma_module.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+/netarm_eni_module.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+/netarm_eth_module.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+/netarm_gen_module.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+/netarm_mem_module.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+/netarm_registers.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+/netarm_ser_module.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+/s3c4510b.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-arm720t/CVS/Repository u-boot-2009.03/include/asm-arm/arch-arm720t/CVS/Repository
--- u-boot-2009.03_orig/include/asm-arm/arch-arm720t/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-arm720t/CVS/Repository  2009-03-25 15:25:38.071699600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/asm-arm/arch-arm720t
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-arm720t/CVS/Root u-boot-2009.03/include/asm-arm/arch-arm720t/CVS/Root
--- u-boot-2009.03_orig/include/asm-arm/arch-arm720t/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-arm720t/CVS/Root        2009-03-25 15:25:38.071699600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-arm925t/CVS/Entries u-boot-2009.03/include/asm-arm/arch-arm925t/CVS/Entries
--- u-boot-2009.03_orig/include/asm-arm/arch-arm925t/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-arm925t/CVS/Entries     2009-03-25 15:58:06.559229200 -0700
@@ -0,0 +1,2 @@
+/sizes.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-arm925t/CVS/Entries.Extra u-boot-2009.03/include/asm-arm/arch-arm925t/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/asm-arm/arch-arm925t/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-arm925t/CVS/Entries.Extra       2009-03-25 15:58:06.574854100 -0700
@@ -0,0 +1 @@
+/sizes.h///1238019735/
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-arm925t/CVS/Entries.Extra.Old u-boot-2009.03/include/asm-arm/arch-arm925t/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/asm-arm/arch-arm925t/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-arm925t/CVS/Entries.Extra.Old   2009-03-25 15:25:38.000000000 -0700
@@ -0,0 +1 @@
+/sizes.h///1238019735/
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-arm925t/CVS/Entries.Old u-boot-2009.03/include/asm-arm/arch-arm925t/CVS/Entries.Old
--- u-boot-2009.03_orig/include/asm-arm/arch-arm925t/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-arm925t/CVS/Entries.Old 2009-03-25 15:25:38.000000000 -0700
@@ -0,0 +1,2 @@
+/sizes.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-arm925t/CVS/Repository u-boot-2009.03/include/asm-arm/arch-arm925t/CVS/Repository
--- u-boot-2009.03_orig/include/asm-arm/arch-arm925t/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-arm925t/CVS/Repository  2009-03-25 15:25:38.462322100 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/asm-arm/arch-arm925t
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-arm925t/CVS/Root u-boot-2009.03/include/asm-arm/arch-arm925t/CVS/Root
--- u-boot-2009.03_orig/include/asm-arm/arch-arm925t/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-arm925t/CVS/Root        2009-03-25 15:25:38.368572700 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-arm926ejs/CVS/Entries u-boot-2009.03/include/asm-arm/arch-arm926ejs/CVS/Entries
--- u-boot-2009.03_orig/include/asm-arm/arch-arm926ejs/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-arm926ejs/CVS/Entries   2009-03-25 15:58:06.621728800 -0700
@@ -0,0 +1,2 @@
+/sizes.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-arm926ejs/CVS/Entries.Extra u-boot-2009.03/include/asm-arm/arch-arm926ejs/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/asm-arm/arch-arm926ejs/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-arm926ejs/CVS/Entries.Extra     2009-03-25 15:58:06.637353700 -0700
@@ -0,0 +1 @@
+/sizes.h///1238019735/
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-arm926ejs/CVS/Entries.Extra.Old u-boot-2009.03/include/asm-arm/arch-arm926ejs/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/asm-arm/arch-arm926ejs/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-arm926ejs/CVS/Entries.Extra.Old 2009-03-25 15:25:38.000000000 -0700
@@ -0,0 +1 @@
+/sizes.h///1238019735/
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-arm926ejs/CVS/Entries.Old u-boot-2009.03/include/asm-arm/arch-arm926ejs/CVS/Entries.Old
--- u-boot-2009.03_orig/include/asm-arm/arch-arm926ejs/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-arm926ejs/CVS/Entries.Old       2009-03-25 15:25:38.000000000 -0700
@@ -0,0 +1,2 @@
+/sizes.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-arm926ejs/CVS/Repository u-boot-2009.03/include/asm-arm/arch-arm926ejs/CVS/Repository
--- u-boot-2009.03_orig/include/asm-arm/arch-arm926ejs/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-arm926ejs/CVS/Repository        2009-03-25 15:25:38.696695600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/asm-arm/arch-arm926ejs
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-arm926ejs/CVS/Root u-boot-2009.03/include/asm-arm/arch-arm926ejs/CVS/Root
--- u-boot-2009.03_orig/include/asm-arm/arch-arm926ejs/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-arm926ejs/CVS/Root      2009-03-25 15:25:38.696695600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-at91/CVS/Entries u-boot-2009.03/include/asm-arm/arch-at91/CVS/Entries
--- u-boot-2009.03_orig/include/asm-arm/arch-at91/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-at91/CVS/Entries        2009-03-25 15:58:06.762352900 -0700
@@ -0,0 +1,22 @@
+/at91_pio.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/at91_pit.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/at91_pmc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/at91_rstc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/at91_spi.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/at91cap9.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/at91cap9_matrix.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/at91sam9260.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/at91sam9260_matrix.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/at91sam9261.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/at91sam9261_matrix.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/at91sam9263.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/at91sam9263_matrix.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/at91sam9_smc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/at91sam9rl.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/at91sam9rl_matrix.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/clk.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/gpio.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/hardware.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/io.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/memory-map.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-at91/CVS/Entries.Extra u-boot-2009.03/include/asm-arm/arch-at91/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/asm-arm/arch-at91/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-at91/CVS/Entries.Extra  2009-03-25 15:58:06.762352900 -0700
@@ -0,0 +1,21 @@
+/at91_pio.h///1238019735/
+/at91_pit.h///1238019735/
+/at91_pmc.h///1238019735/
+/at91_rstc.h///1238019735/
+/at91_spi.h///1238019735/
+/at91cap9.h///1238019735/
+/at91cap9_matrix.h///1238019735/
+/at91sam9260.h///1238019735/
+/at91sam9260_matrix.h///1238019735/
+/at91sam9261.h///1238019735/
+/at91sam9261_matrix.h///1238019735/
+/at91sam9263.h///1238019735/
+/at91sam9263_matrix.h///1238019735/
+/at91sam9_smc.h///1238019735/
+/at91sam9rl.h///1238019735/
+/at91sam9rl_matrix.h///1238019735/
+/clk.h///1238019735/
+/gpio.h///1238019735/
+/hardware.h///1238019735/
+/io.h///1238019735/
+/memory-map.h///1238019735/
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-at91/CVS/Entries.Extra.Old u-boot-2009.03/include/asm-arm/arch-at91/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/asm-arm/arch-at91/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-at91/CVS/Entries.Extra.Old      2009-03-25 15:25:38.000000000 -0700
@@ -0,0 +1,21 @@
+/at91_pio.h///1238019735/
+/at91_pit.h///1238019735/
+/at91_pmc.h///1238019735/
+/at91_rstc.h///1238019735/
+/at91_spi.h///1238019735/
+/at91cap9.h///1238019735/
+/at91cap9_matrix.h///1238019735/
+/at91sam9260.h///1238019735/
+/at91sam9260_matrix.h///1238019735/
+/at91sam9261.h///1238019735/
+/at91sam9261_matrix.h///1238019735/
+/at91sam9263.h///1238019735/
+/at91sam9263_matrix.h///1238019735/
+/at91sam9_smc.h///1238019735/
+/at91sam9rl.h///1238019735/
+/at91sam9rl_matrix.h///1238019735/
+/clk.h///1238019735/
+/gpio.h///1238019735/
+/hardware.h///1238019735/
+/io.h///1238019735/
+/memory-map.h///1238019735/
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-at91/CVS/Entries.Old u-boot-2009.03/include/asm-arm/arch-at91/CVS/Entries.Old
--- u-boot-2009.03_orig/include/asm-arm/arch-at91/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-at91/CVS/Entries.Old    2009-03-25 15:25:38.000000000 -0700
@@ -0,0 +1,22 @@
+/at91_pio.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+/at91_pit.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+/at91_pmc.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+/at91_rstc.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+/at91_spi.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+/at91cap9.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+/at91cap9_matrix.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+/at91sam9260.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+/at91sam9260_matrix.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+/at91sam9261.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+/at91sam9261_matrix.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+/at91sam9263.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+/at91sam9263_matrix.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+/at91sam9_smc.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+/at91sam9rl.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+/at91sam9rl_matrix.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+/clk.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+/gpio.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+/hardware.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+/io.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+/memory-map.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-at91/CVS/Repository u-boot-2009.03/include/asm-arm/arch-at91/CVS/Repository
--- u-boot-2009.03_orig/include/asm-arm/arch-at91/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-at91/CVS/Repository     2009-03-25 15:25:38.774820100 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/asm-arm/arch-at91
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-at91/CVS/Root u-boot-2009.03/include/asm-arm/arch-at91/CVS/Root
--- u-boot-2009.03_orig/include/asm-arm/arch-at91/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-at91/CVS/Root   2009-03-25 15:25:38.774820100 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-at91rm9200/CVS/Entries u-boot-2009.03/include/asm-arm/arch-at91rm9200/CVS/Entries
--- u-boot-2009.03_orig/include/asm-arm/arch-at91rm9200/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-at91rm9200/CVS/Entries  2009-03-25 15:58:06.840477400 -0700
@@ -0,0 +1,3 @@
+/AT91RM9200.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/hardware.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-at91rm9200/CVS/Entries.Extra u-boot-2009.03/include/asm-arm/arch-at91rm9200/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/asm-arm/arch-at91rm9200/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-at91rm9200/CVS/Entries.Extra    2009-03-25 15:58:06.840477400 -0700
@@ -0,0 +1,2 @@
+/AT91RM9200.h///1238019735/
+/hardware.h///1238019735/
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-at91rm9200/CVS/Entries.Extra.Old u-boot-2009.03/include/asm-arm/arch-at91rm9200/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/asm-arm/arch-at91rm9200/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-at91rm9200/CVS/Entries.Extra.Old        2009-03-25 15:25:39.000000000 -0700
@@ -0,0 +1,2 @@
+/AT91RM9200.h///1238019735/
+/hardware.h///1238019735/
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-at91rm9200/CVS/Entries.Old u-boot-2009.03/include/asm-arm/arch-at91rm9200/CVS/Entries.Old
--- u-boot-2009.03_orig/include/asm-arm/arch-at91rm9200/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-at91rm9200/CVS/Entries.Old      2009-03-25 15:25:39.000000000 -0700
@@ -0,0 +1,3 @@
+/AT91RM9200.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+/hardware.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-at91rm9200/CVS/Repository u-boot-2009.03/include/asm-arm/arch-at91rm9200/CVS/Repository
--- u-boot-2009.03_orig/include/asm-arm/arch-at91rm9200/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-at91rm9200/CVS/Repository       2009-03-25 15:25:39.024818500 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/asm-arm/arch-at91rm9200
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-at91rm9200/CVS/Root u-boot-2009.03/include/asm-arm/arch-at91rm9200/CVS/Root
--- u-boot-2009.03_orig/include/asm-arm/arch-at91rm9200/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-at91rm9200/CVS/Root     2009-03-25 15:25:39.024818500 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-davinci/CVS/Entries u-boot-2009.03/include/asm-arm/arch-davinci/CVS/Entries
--- u-boot-2009.03_orig/include/asm-arm/arch-davinci/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-davinci/CVS/Entries     2009-03-25 15:58:06.902977000 -0700
@@ -0,0 +1,6 @@
+/emac_defs.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/emif_defs.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/hardware.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/i2c_defs.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nand_defs.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-davinci/CVS/Entries.Extra u-boot-2009.03/include/asm-arm/arch-davinci/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/asm-arm/arch-davinci/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-davinci/CVS/Entries.Extra       2009-03-25 15:58:06.902977000 -0700
@@ -0,0 +1,5 @@
+/emac_defs.h///1238019735/
+/emif_defs.h///1238019735/
+/hardware.h///1238019735/
+/i2c_defs.h///1238019735/
+/nand_defs.h///1238019735/
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-davinci/CVS/Entries.Extra.Old u-boot-2009.03/include/asm-arm/arch-davinci/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/asm-arm/arch-davinci/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-davinci/CVS/Entries.Extra.Old   2009-03-25 15:25:39.000000000 -0700
@@ -0,0 +1,5 @@
+/emac_defs.h///1238019735/
+/emif_defs.h///1238019735/
+/hardware.h///1238019735/
+/i2c_defs.h///1238019735/
+/nand_defs.h///1238019735/
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-davinci/CVS/Entries.Old u-boot-2009.03/include/asm-arm/arch-davinci/CVS/Entries.Old
--- u-boot-2009.03_orig/include/asm-arm/arch-davinci/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-davinci/CVS/Entries.Old 2009-03-25 15:25:39.000000000 -0700
@@ -0,0 +1,6 @@
+/emac_defs.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+/emif_defs.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+/hardware.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+/i2c_defs.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+/nand_defs.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-davinci/CVS/Repository u-boot-2009.03/include/asm-arm/arch-davinci/CVS/Repository
--- u-boot-2009.03_orig/include/asm-arm/arch-davinci/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-davinci/CVS/Repository  2009-03-25 15:25:39.102943000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/asm-arm/arch-davinci
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-davinci/CVS/Root u-boot-2009.03/include/asm-arm/arch-davinci/CVS/Root
--- u-boot-2009.03_orig/include/asm-arm/arch-davinci/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-davinci/CVS/Root        2009-03-25 15:25:39.102943000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-imx/CVS/Entries u-boot-2009.03/include/asm-arm/arch-imx/CVS/Entries
--- u-boot-2009.03_orig/include/asm-arm/arch-imx/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-imx/CVS/Entries 2009-03-25 15:58:06.965476600 -0700
@@ -0,0 +1,2 @@
+/imx-regs.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-imx/CVS/Entries.Extra u-boot-2009.03/include/asm-arm/arch-imx/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/asm-arm/arch-imx/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-imx/CVS/Entries.Extra   2009-03-25 15:58:06.965476600 -0700
@@ -0,0 +1 @@
+/imx-regs.h///1238019735/
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-imx/CVS/Entries.Extra.Old u-boot-2009.03/include/asm-arm/arch-imx/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/asm-arm/arch-imx/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-imx/CVS/Entries.Extra.Old       2009-03-25 15:25:39.000000000 -0700
@@ -0,0 +1 @@
+/imx-regs.h///1238019735/
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-imx/CVS/Entries.Old u-boot-2009.03/include/asm-arm/arch-imx/CVS/Entries.Old
--- u-boot-2009.03_orig/include/asm-arm/arch-imx/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-imx/CVS/Entries.Old     2009-03-25 15:25:39.000000000 -0700
@@ -0,0 +1,2 @@
+/imx-regs.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-imx/CVS/Repository u-boot-2009.03/include/asm-arm/arch-imx/CVS/Repository
--- u-boot-2009.03_orig/include/asm-arm/arch-imx/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-imx/CVS/Repository      2009-03-25 15:25:39.243567100 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/asm-arm/arch-imx
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-imx/CVS/Root u-boot-2009.03/include/asm-arm/arch-imx/CVS/Root
--- u-boot-2009.03_orig/include/asm-arm/arch-imx/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-imx/CVS/Root    2009-03-25 15:25:39.227942200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-ixp/CVS/Entries u-boot-2009.03/include/asm-arm/arch-ixp/CVS/Entries
--- u-boot-2009.03_orig/include/asm-arm/arch-ixp/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-ixp/CVS/Entries 2009-03-25 15:58:07.027976200 -0700
@@ -0,0 +1,3 @@
+/ixp425.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ixp425pci.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-ixp/CVS/Entries.Extra u-boot-2009.03/include/asm-arm/arch-ixp/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/asm-arm/arch-ixp/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-ixp/CVS/Entries.Extra   2009-03-25 15:58:07.027976200 -0700
@@ -0,0 +1,2 @@
+/ixp425.h///1238019735/
+/ixp425pci.h///1238019735/
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-ixp/CVS/Entries.Extra.Old u-boot-2009.03/include/asm-arm/arch-ixp/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/asm-arm/arch-ixp/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-ixp/CVS/Entries.Extra.Old       2009-03-25 15:25:39.000000000 -0700
@@ -0,0 +1,2 @@
+/ixp425.h///1238019735/
+/ixp425pci.h///1238019735/
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-ixp/CVS/Entries.Old u-boot-2009.03/include/asm-arm/arch-ixp/CVS/Entries.Old
--- u-boot-2009.03_orig/include/asm-arm/arch-ixp/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-ixp/CVS/Entries.Old     2009-03-25 15:25:39.000000000 -0700
@@ -0,0 +1,3 @@
+/ixp425.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+/ixp425pci.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-ixp/CVS/Repository u-boot-2009.03/include/asm-arm/arch-ixp/CVS/Repository
--- u-boot-2009.03_orig/include/asm-arm/arch-ixp/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-ixp/CVS/Repository      2009-03-25 15:25:39.306066700 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/asm-arm/arch-ixp
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-ixp/CVS/Root u-boot-2009.03/include/asm-arm/arch-ixp/CVS/Root
--- u-boot-2009.03_orig/include/asm-arm/arch-ixp/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-ixp/CVS/Root    2009-03-25 15:25:39.306066700 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-ks8695/CVS/Entries u-boot-2009.03/include/asm-arm/arch-ks8695/CVS/Entries
--- u-boot-2009.03_orig/include/asm-arm/arch-ks8695/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-ks8695/CVS/Entries      2009-03-25 15:58:07.168600300 -0700
@@ -0,0 +1,2 @@
+/platform.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-ks8695/CVS/Entries.Extra u-boot-2009.03/include/asm-arm/arch-ks8695/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/asm-arm/arch-ks8695/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-ks8695/CVS/Entries.Extra        2009-03-25 15:58:07.168600300 -0700
@@ -0,0 +1 @@
+/platform.h///1238019735/
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-ks8695/CVS/Entries.Extra.Old u-boot-2009.03/include/asm-arm/arch-ks8695/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/asm-arm/arch-ks8695/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-ks8695/CVS/Entries.Extra.Old    2009-03-25 15:25:39.000000000 -0700
@@ -0,0 +1 @@
+/platform.h///1238019735/
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-ks8695/CVS/Entries.Old u-boot-2009.03/include/asm-arm/arch-ks8695/CVS/Entries.Old
--- u-boot-2009.03_orig/include/asm-arm/arch-ks8695/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-ks8695/CVS/Entries.Old  2009-03-25 15:25:39.000000000 -0700
@@ -0,0 +1,2 @@
+/platform.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-ks8695/CVS/Repository u-boot-2009.03/include/asm-arm/arch-ks8695/CVS/Repository
--- u-boot-2009.03_orig/include/asm-arm/arch-ks8695/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-ks8695/CVS/Repository   2009-03-25 15:25:39.618564700 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/asm-arm/arch-ks8695
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-ks8695/CVS/Root u-boot-2009.03/include/asm-arm/arch-ks8695/CVS/Root
--- u-boot-2009.03_orig/include/asm-arm/arch-ks8695/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-ks8695/CVS/Root 2009-03-25 15:25:39.618564700 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-lpc2292/CVS/Entries u-boot-2009.03/include/asm-arm/arch-lpc2292/CVS/Entries
--- u-boot-2009.03_orig/include/asm-arm/arch-lpc2292/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-lpc2292/CVS/Entries     2009-03-25 15:58:07.231099900 -0700
@@ -0,0 +1,4 @@
+/hardware.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lpc2292_registers.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/spi.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-lpc2292/CVS/Entries.Extra u-boot-2009.03/include/asm-arm/arch-lpc2292/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/asm-arm/arch-lpc2292/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-lpc2292/CVS/Entries.Extra       2009-03-25 15:58:07.231099900 -0700
@@ -0,0 +1,3 @@
+/hardware.h///1238019735/
+/lpc2292_registers.h///1238019735/
+/spi.h///1238019735/
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-lpc2292/CVS/Entries.Extra.Old u-boot-2009.03/include/asm-arm/arch-lpc2292/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/asm-arm/arch-lpc2292/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-lpc2292/CVS/Entries.Extra.Old   2009-03-25 15:25:39.000000000 -0700
@@ -0,0 +1,3 @@
+/hardware.h///1238019735/
+/lpc2292_registers.h///1238019735/
+/spi.h///1238019735/
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-lpc2292/CVS/Entries.Old u-boot-2009.03/include/asm-arm/arch-lpc2292/CVS/Entries.Old
--- u-boot-2009.03_orig/include/asm-arm/arch-lpc2292/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-lpc2292/CVS/Entries.Old 2009-03-25 15:25:39.000000000 -0700
@@ -0,0 +1,4 @@
+/hardware.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+/lpc2292_registers.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+/spi.h/1.1.1.1/Wed Mar 25 22:22:15 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-lpc2292/CVS/Repository u-boot-2009.03/include/asm-arm/arch-lpc2292/CVS/Repository
--- u-boot-2009.03_orig/include/asm-arm/arch-lpc2292/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-lpc2292/CVS/Repository  2009-03-25 15:25:39.806063500 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/asm-arm/arch-lpc2292
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-lpc2292/CVS/Root u-boot-2009.03/include/asm-arm/arch-lpc2292/CVS/Root
--- u-boot-2009.03_orig/include/asm-arm/arch-lpc2292/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-lpc2292/CVS/Root        2009-03-25 15:25:39.806063500 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-mx31/CVS/Entries u-boot-2009.03/include/asm-arm/arch-mx31/CVS/Entries
--- u-boot-2009.03_orig/include/asm-arm/arch-mx31/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-mx31/CVS/Entries        2009-03-25 15:58:07.277974600 -0700
@@ -0,0 +1,3 @@
+/mx31-regs.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mx31.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-mx31/CVS/Entries.Extra u-boot-2009.03/include/asm-arm/arch-mx31/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/asm-arm/arch-mx31/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-mx31/CVS/Entries.Extra  2009-03-25 15:58:07.293599500 -0700
@@ -0,0 +1,2 @@
+/mx31-regs.h///1238019736/
+/mx31.h///1238019736/
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-mx31/CVS/Entries.Extra.Old u-boot-2009.03/include/asm-arm/arch-mx31/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/asm-arm/arch-mx31/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-mx31/CVS/Entries.Extra.Old      2009-03-25 15:25:39.000000000 -0700
@@ -0,0 +1,2 @@
+/mx31-regs.h///1238019736/
+/mx31.h///1238019736/
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-mx31/CVS/Entries.Old u-boot-2009.03/include/asm-arm/arch-mx31/CVS/Entries.Old
--- u-boot-2009.03_orig/include/asm-arm/arch-mx31/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-mx31/CVS/Entries.Old    2009-03-25 15:25:39.000000000 -0700
@@ -0,0 +1,3 @@
+/mx31-regs.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/mx31.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-mx31/CVS/Repository u-boot-2009.03/include/asm-arm/arch-mx31/CVS/Repository
--- u-boot-2009.03_orig/include/asm-arm/arch-mx31/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-mx31/CVS/Repository     2009-03-25 15:25:39.915437800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/asm-arm/arch-mx31
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-mx31/CVS/Root u-boot-2009.03/include/asm-arm/arch-mx31/CVS/Root
--- u-boot-2009.03_orig/include/asm-arm/arch-mx31/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-mx31/CVS/Root   2009-03-25 15:25:39.899812900 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-omap/CVS/Entries u-boot-2009.03/include/asm-arm/arch-omap/CVS/Entries
--- u-boot-2009.03_orig/include/asm-arm/arch-omap/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-omap/CVS/Entries        2009-03-25 15:58:07.340474200 -0700
@@ -0,0 +1,2 @@
+/sizes.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-omap/CVS/Entries.Extra u-boot-2009.03/include/asm-arm/arch-omap/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/asm-arm/arch-omap/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-omap/CVS/Entries.Extra  2009-03-25 15:58:07.340474200 -0700
@@ -0,0 +1 @@
+/sizes.h///1238019736/
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-omap/CVS/Entries.Extra.Old u-boot-2009.03/include/asm-arm/arch-omap/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/asm-arm/arch-omap/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-omap/CVS/Entries.Extra.Old      2009-03-25 15:25:40.000000000 -0700
@@ -0,0 +1 @@
+/sizes.h///1238019736/
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-omap/CVS/Entries.Old u-boot-2009.03/include/asm-arm/arch-omap/CVS/Entries.Old
--- u-boot-2009.03_orig/include/asm-arm/arch-omap/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-omap/CVS/Entries.Old    2009-03-25 15:25:40.000000000 -0700
@@ -0,0 +1,2 @@
+/sizes.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-omap/CVS/Repository u-boot-2009.03/include/asm-arm/arch-omap/CVS/Repository
--- u-boot-2009.03_orig/include/asm-arm/arch-omap/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-omap/CVS/Repository     2009-03-25 15:25:39.993562300 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/asm-arm/arch-omap
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-omap/CVS/Root u-boot-2009.03/include/asm-arm/arch-omap/CVS/Root
--- u-boot-2009.03_orig/include/asm-arm/arch-omap/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-omap/CVS/Root   2009-03-25 15:25:39.993562300 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-omap24xx/CVS/Entries u-boot-2009.03/include/asm-arm/arch-omap24xx/CVS/Entries
--- u-boot-2009.03_orig/include/asm-arm/arch-omap24xx/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-omap24xx/CVS/Entries    2009-03-25 15:58:07.418598700 -0700
@@ -0,0 +1,10 @@
+/bits.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/clocks.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/i2c.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mem.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mux.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/omap2420.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sizes.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sys_info.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sys_proto.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-omap24xx/CVS/Entries.Extra u-boot-2009.03/include/asm-arm/arch-omap24xx/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/asm-arm/arch-omap24xx/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-omap24xx/CVS/Entries.Extra      2009-03-25 15:58:07.418598700 -0700
@@ -0,0 +1,9 @@
+/bits.h///1238019736/
+/clocks.h///1238019736/
+/i2c.h///1238019736/
+/mem.h///1238019736/
+/mux.h///1238019736/
+/omap2420.h///1238019736/
+/sizes.h///1238019736/
+/sys_info.h///1238019736/
+/sys_proto.h///1238019736/
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-omap24xx/CVS/Entries.Extra.Old u-boot-2009.03/include/asm-arm/arch-omap24xx/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/asm-arm/arch-omap24xx/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-omap24xx/CVS/Entries.Extra.Old  2009-03-25 15:25:40.000000000 -0700
@@ -0,0 +1,9 @@
+/bits.h///1238019736/
+/clocks.h///1238019736/
+/i2c.h///1238019736/
+/mem.h///1238019736/
+/mux.h///1238019736/
+/omap2420.h///1238019736/
+/sizes.h///1238019736/
+/sys_info.h///1238019736/
+/sys_proto.h///1238019736/
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-omap24xx/CVS/Entries.Old u-boot-2009.03/include/asm-arm/arch-omap24xx/CVS/Entries.Old
--- u-boot-2009.03_orig/include/asm-arm/arch-omap24xx/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-omap24xx/CVS/Entries.Old        2009-03-25 15:25:40.000000000 -0700
@@ -0,0 +1,10 @@
+/bits.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/clocks.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/i2c.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/mem.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/mux.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/omap2420.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/sizes.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/sys_info.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/sys_proto.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-omap24xx/CVS/Repository u-boot-2009.03/include/asm-arm/arch-omap24xx/CVS/Repository
--- u-boot-2009.03_orig/include/asm-arm/arch-omap24xx/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-omap24xx/CVS/Repository 2009-03-25 15:25:40.056061900 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/asm-arm/arch-omap24xx
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-omap24xx/CVS/Root u-boot-2009.03/include/asm-arm/arch-omap24xx/CVS/Root
--- u-boot-2009.03_orig/include/asm-arm/arch-omap24xx/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-omap24xx/CVS/Root       2009-03-25 15:25:40.056061900 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-omap3/CVS/Entries u-boot-2009.03/include/asm-arm/arch-omap3/CVS/Entries
--- u-boot-2009.03_orig/include/asm-arm/arch-omap3/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-omap3/CVS/Entries       2009-03-25 15:58:07.512348100 -0700
@@ -0,0 +1,12 @@
+/clocks.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/clocks_omap3.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/i2c.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mem.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mmc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mmc_host_def.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mux.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/omap3.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/omap_gpmc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sys_proto.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-omap3/CVS/Entries.Extra u-boot-2009.03/include/asm-arm/arch-omap3/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/asm-arm/arch-omap3/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-omap3/CVS/Entries.Extra 2009-03-25 15:58:07.512348100 -0700
@@ -0,0 +1,11 @@
+/clocks.h///1238019736/
+/clocks_omap3.h///1238019736/
+/cpu.h///1238019736/
+/i2c.h///1238019736/
+/mem.h///1238019736/
+/mmc.h///1238019736/
+/mmc_host_def.h///1238019736/
+/mux.h///1238019736/
+/omap3.h///1238019736/
+/omap_gpmc.h///1238019736/
+/sys_proto.h///1238019736/
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-omap3/CVS/Entries.Extra.Old u-boot-2009.03/include/asm-arm/arch-omap3/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/asm-arm/arch-omap3/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-omap3/CVS/Entries.Extra.Old     2009-03-25 15:25:40.000000000 -0700
@@ -0,0 +1,11 @@
+/clocks.h///1238019736/
+/clocks_omap3.h///1238019736/
+/cpu.h///1238019736/
+/i2c.h///1238019736/
+/mem.h///1238019736/
+/mmc.h///1238019736/
+/mmc_host_def.h///1238019736/
+/mux.h///1238019736/
+/omap3.h///1238019736/
+/omap_gpmc.h///1238019736/
+/sys_proto.h///1238019736/
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-omap3/CVS/Entries.Old u-boot-2009.03/include/asm-arm/arch-omap3/CVS/Entries.Old
--- u-boot-2009.03_orig/include/asm-arm/arch-omap3/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-omap3/CVS/Entries.Old   2009-03-25 15:25:40.000000000 -0700
@@ -0,0 +1,12 @@
+/clocks.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/clocks_omap3.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/cpu.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/i2c.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/mem.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/mmc.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/mmc_host_def.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/mux.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/omap3.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/omap_gpmc.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/sys_proto.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-omap3/CVS/Repository u-boot-2009.03/include/asm-arm/arch-omap3/CVS/Repository
--- u-boot-2009.03_orig/include/asm-arm/arch-omap3/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-omap3/CVS/Repository    2009-03-25 15:25:40.212310900 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/asm-arm/arch-omap3
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-omap3/CVS/Root u-boot-2009.03/include/asm-arm/arch-omap3/CVS/Root
--- u-boot-2009.03_orig/include/asm-arm/arch-omap3/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-omap3/CVS/Root  2009-03-25 15:25:40.212310900 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-pxa/CVS/Entries u-boot-2009.03/include/asm-arm/arch-pxa/CVS/Entries
--- u-boot-2009.03_orig/include/asm-arm/arch-pxa/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-pxa/CVS/Entries 2009-03-25 15:58:07.590472600 -0700
@@ -0,0 +1,4 @@
+/bitfield.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/hardware.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pxa-regs.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-pxa/CVS/Entries.Extra u-boot-2009.03/include/asm-arm/arch-pxa/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/asm-arm/arch-pxa/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-pxa/CVS/Entries.Extra   2009-03-25 15:58:07.590472600 -0700
@@ -0,0 +1,3 @@
+/bitfield.h///1238019736/
+/hardware.h///1238019736/
+/pxa-regs.h///1238019736/
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-pxa/CVS/Entries.Extra.Old u-boot-2009.03/include/asm-arm/arch-pxa/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/asm-arm/arch-pxa/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-pxa/CVS/Entries.Extra.Old       2009-03-25 15:25:40.000000000 -0700
@@ -0,0 +1,3 @@
+/bitfield.h///1238019736/
+/hardware.h///1238019736/
+/pxa-regs.h///1238019736/
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-pxa/CVS/Entries.Old u-boot-2009.03/include/asm-arm/arch-pxa/CVS/Entries.Old
--- u-boot-2009.03_orig/include/asm-arm/arch-pxa/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-pxa/CVS/Entries.Old     2009-03-25 15:25:40.000000000 -0700
@@ -0,0 +1,4 @@
+/bitfield.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/hardware.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/pxa-regs.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-pxa/CVS/Repository u-boot-2009.03/include/asm-arm/arch-pxa/CVS/Repository
--- u-boot-2009.03_orig/include/asm-arm/arch-pxa/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-pxa/CVS/Repository      2009-03-25 15:25:40.602933400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/asm-arm/arch-pxa
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-pxa/CVS/Root u-boot-2009.03/include/asm-arm/arch-pxa/CVS/Root
--- u-boot-2009.03_orig/include/asm-arm/arch-pxa/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-pxa/CVS/Root    2009-03-25 15:25:40.571683600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-s3c24x0/CVS/Entries u-boot-2009.03/include/asm-arm/arch-s3c24x0/CVS/Entries
--- u-boot-2009.03_orig/include/asm-arm/arch-s3c24x0/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-s3c24x0/CVS/Entries     2009-03-25 15:58:07.652972200 -0700
@@ -0,0 +1,2 @@
+/memory.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-s3c24x0/CVS/Entries.Extra u-boot-2009.03/include/asm-arm/arch-s3c24x0/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/asm-arm/arch-s3c24x0/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-s3c24x0/CVS/Entries.Extra       2009-03-25 15:58:07.652972200 -0700
@@ -0,0 +1 @@
+/memory.h///1238019736/
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-s3c24x0/CVS/Entries.Extra.Old u-boot-2009.03/include/asm-arm/arch-s3c24x0/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/asm-arm/arch-s3c24x0/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-s3c24x0/CVS/Entries.Extra.Old   2009-03-25 15:25:40.000000000 -0700
@@ -0,0 +1 @@
+/memory.h///1238019736/
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-s3c24x0/CVS/Entries.Old u-boot-2009.03/include/asm-arm/arch-s3c24x0/CVS/Entries.Old
--- u-boot-2009.03_orig/include/asm-arm/arch-s3c24x0/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-s3c24x0/CVS/Entries.Old 2009-03-25 15:25:40.000000000 -0700
@@ -0,0 +1,2 @@
+/memory.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-s3c24x0/CVS/Repository u-boot-2009.03/include/asm-arm/arch-s3c24x0/CVS/Repository
--- u-boot-2009.03_orig/include/asm-arm/arch-s3c24x0/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-s3c24x0/CVS/Repository  2009-03-25 15:25:40.712307700 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/asm-arm/arch-s3c24x0
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-s3c24x0/CVS/Root u-boot-2009.03/include/asm-arm/arch-s3c24x0/CVS/Root
--- u-boot-2009.03_orig/include/asm-arm/arch-s3c24x0/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-s3c24x0/CVS/Root        2009-03-25 15:25:40.712307700 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-s3c44b0/CVS/Entries u-boot-2009.03/include/asm-arm/arch-s3c44b0/CVS/Entries
--- u-boot-2009.03_orig/include/asm-arm/arch-s3c44b0/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-s3c44b0/CVS/Entries     2009-03-25 15:58:07.715471800 -0700
@@ -0,0 +1,2 @@
+/hardware.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-s3c44b0/CVS/Entries.Extra u-boot-2009.03/include/asm-arm/arch-s3c44b0/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/asm-arm/arch-s3c44b0/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-s3c44b0/CVS/Entries.Extra       2009-03-25 15:58:07.715471800 -0700
@@ -0,0 +1 @@
+/hardware.h///1238019736/
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-s3c44b0/CVS/Entries.Extra.Old u-boot-2009.03/include/asm-arm/arch-s3c44b0/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/asm-arm/arch-s3c44b0/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-s3c44b0/CVS/Entries.Extra.Old   2009-03-25 15:25:40.000000000 -0700
@@ -0,0 +1 @@
+/hardware.h///1238019736/
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-s3c44b0/CVS/Entries.Old u-boot-2009.03/include/asm-arm/arch-s3c44b0/CVS/Entries.Old
--- u-boot-2009.03_orig/include/asm-arm/arch-s3c44b0/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-s3c44b0/CVS/Entries.Old 2009-03-25 15:25:40.000000000 -0700
@@ -0,0 +1,2 @@
+/hardware.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-s3c44b0/CVS/Repository u-boot-2009.03/include/asm-arm/arch-s3c44b0/CVS/Repository
--- u-boot-2009.03_orig/include/asm-arm/arch-s3c44b0/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-s3c44b0/CVS/Repository  2009-03-25 15:25:40.806057100 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/asm-arm/arch-s3c44b0
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-s3c44b0/CVS/Root u-boot-2009.03/include/asm-arm/arch-s3c44b0/CVS/Root
--- u-boot-2009.03_orig/include/asm-arm/arch-s3c44b0/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-s3c44b0/CVS/Root        2009-03-25 15:25:40.806057100 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-s3c64xx/CVS/Entries u-boot-2009.03/include/asm-arm/arch-s3c64xx/CVS/Entries
--- u-boot-2009.03_orig/include/asm-arm/arch-s3c64xx/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-s3c64xx/CVS/Entries     2009-03-25 15:58:07.777971400 -0700
@@ -0,0 +1,2 @@
+/hardware.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-s3c64xx/CVS/Entries.Extra u-boot-2009.03/include/asm-arm/arch-s3c64xx/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/asm-arm/arch-s3c64xx/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-s3c64xx/CVS/Entries.Extra       2009-03-25 15:58:07.777971400 -0700
@@ -0,0 +1 @@
+/hardware.h///1238019736/
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-s3c64xx/CVS/Entries.Extra.Old u-boot-2009.03/include/asm-arm/arch-s3c64xx/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/asm-arm/arch-s3c64xx/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-s3c64xx/CVS/Entries.Extra.Old   2009-03-25 15:25:40.000000000 -0700
@@ -0,0 +1 @@
+/hardware.h///1238019736/
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-s3c64xx/CVS/Entries.Old u-boot-2009.03/include/asm-arm/arch-s3c64xx/CVS/Entries.Old
--- u-boot-2009.03_orig/include/asm-arm/arch-s3c64xx/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-s3c64xx/CVS/Entries.Old 2009-03-25 15:25:40.000000000 -0700
@@ -0,0 +1,2 @@
+/hardware.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-s3c64xx/CVS/Repository u-boot-2009.03/include/asm-arm/arch-s3c64xx/CVS/Repository
--- u-boot-2009.03_orig/include/asm-arm/arch-s3c64xx/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-s3c64xx/CVS/Repository  2009-03-25 15:25:40.884181600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/asm-arm/arch-s3c64xx
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-s3c64xx/CVS/Root u-boot-2009.03/include/asm-arm/arch-s3c64xx/CVS/Root
--- u-boot-2009.03_orig/include/asm-arm/arch-s3c64xx/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-s3c64xx/CVS/Root        2009-03-25 15:25:40.884181600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-sa1100/CVS/Entries u-boot-2009.03/include/asm-arm/arch-sa1100/CVS/Entries
--- u-boot-2009.03_orig/include/asm-arm/arch-sa1100/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-sa1100/CVS/Entries      2009-03-25 15:58:07.840471000 -0700
@@ -0,0 +1,2 @@
+/bitfield.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-sa1100/CVS/Entries.Extra u-boot-2009.03/include/asm-arm/arch-sa1100/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/asm-arm/arch-sa1100/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-sa1100/CVS/Entries.Extra        2009-03-25 15:58:07.840471000 -0700
@@ -0,0 +1 @@
+/bitfield.h///1238019736/
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-sa1100/CVS/Entries.Extra.Old u-boot-2009.03/include/asm-arm/arch-sa1100/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/asm-arm/arch-sa1100/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-sa1100/CVS/Entries.Extra.Old    2009-03-25 15:25:40.000000000 -0700
@@ -0,0 +1 @@
+/bitfield.h///1238019736/
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-sa1100/CVS/Entries.Old u-boot-2009.03/include/asm-arm/arch-sa1100/CVS/Entries.Old
--- u-boot-2009.03_orig/include/asm-arm/arch-sa1100/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-sa1100/CVS/Entries.Old  2009-03-25 15:25:40.000000000 -0700
@@ -0,0 +1,2 @@
+/bitfield.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-sa1100/CVS/Repository u-boot-2009.03/include/asm-arm/arch-sa1100/CVS/Repository
--- u-boot-2009.03_orig/include/asm-arm/arch-sa1100/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-sa1100/CVS/Repository   2009-03-25 15:25:40.946681200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/asm-arm/arch-sa1100
diff -Naur u-boot-2009.03_orig/include/asm-arm/arch-sa1100/CVS/Root u-boot-2009.03/include/asm-arm/arch-sa1100/CVS/Root
--- u-boot-2009.03_orig/include/asm-arm/arch-sa1100/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/arch-sa1100/CVS/Root 2009-03-25 15:25:40.946681200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/asm-arm/proc-armv/CVS/Entries u-boot-2009.03/include/asm-arm/proc-armv/CVS/Entries
--- u-boot-2009.03_orig/include/asm-arm/proc-armv/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/proc-armv/CVS/Entries        2009-03-25 15:58:07.902970600 -0700
@@ -0,0 +1,5 @@
+/domain.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/processor.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ptrace.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/system.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-arm/proc-armv/CVS/Entries.Extra u-boot-2009.03/include/asm-arm/proc-armv/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/asm-arm/proc-armv/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/proc-armv/CVS/Entries.Extra  2009-03-25 15:58:07.918595500 -0700
@@ -0,0 +1,4 @@
+/domain.h///1238019736/
+/processor.h///1238019736/
+/ptrace.h///1238019736/
+/system.h///1238019736/
diff -Naur u-boot-2009.03_orig/include/asm-arm/proc-armv/CVS/Entries.Extra.Old u-boot-2009.03/include/asm-arm/proc-armv/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/asm-arm/proc-armv/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/proc-armv/CVS/Entries.Extra.Old      2009-03-25 15:25:41.000000000 -0700
@@ -0,0 +1,4 @@
+/domain.h///1238019736/
+/processor.h///1238019736/
+/ptrace.h///1238019736/
+/system.h///1238019736/
diff -Naur u-boot-2009.03_orig/include/asm-arm/proc-armv/CVS/Entries.Old u-boot-2009.03/include/asm-arm/proc-armv/CVS/Entries.Old
--- u-boot-2009.03_orig/include/asm-arm/proc-armv/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/proc-armv/CVS/Entries.Old    2009-03-25 15:25:41.000000000 -0700
@@ -0,0 +1,5 @@
+/domain.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/processor.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/ptrace.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/system.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-arm/proc-armv/CVS/Repository u-boot-2009.03/include/asm-arm/proc-armv/CVS/Repository
--- u-boot-2009.03_orig/include/asm-arm/proc-armv/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/proc-armv/CVS/Repository     2009-03-25 15:25:41.040430600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/asm-arm/proc-armv
diff -Naur u-boot-2009.03_orig/include/asm-arm/proc-armv/CVS/Root u-boot-2009.03/include/asm-arm/proc-armv/CVS/Root
--- u-boot-2009.03_orig/include/asm-arm/proc-armv/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-arm/proc-armv/CVS/Root   2009-03-25 15:25:41.040430600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/asm-avr32/CVS/Entries u-boot-2009.03/include/asm-avr32/CVS/Entries
--- u-boot-2009.03_orig/include/asm-avr32/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-avr32/CVS/Entries        2009-03-25 15:58:08.152969000 -0700
@@ -0,0 +1,22 @@
+D/arch-at32ap700x////
+/addrspace.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bitops.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/byteorder.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cacheflush.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dma-mapping.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/errno.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/global_data.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/hmatrix-common.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/initcalls.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/io.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/posix_types.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/processor.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ptrace.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sdram.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sections.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/setup.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/string.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sysreg.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/types.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
diff -Naur u-boot-2009.03_orig/include/asm-avr32/CVS/Entries.Extra u-boot-2009.03/include/asm-avr32/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/asm-avr32/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-avr32/CVS/Entries.Extra  2009-03-25 15:58:08.152969000 -0700
@@ -0,0 +1,22 @@
+D/arch-at32ap700x////
+/addrspace.h///1238019736/
+/bitops.h///1238019736/
+/byteorder.h///1238019736/
+/cacheflush.h///1238019736/
+/config.h///1238019736/
+/dma-mapping.h///1238019736/
+/errno.h///1238019736/
+/global_data.h///1238019736/
+/hmatrix-common.h///1238019736/
+/initcalls.h///1238019736/
+/io.h///1238019736/
+/posix_types.h///1238019736/
+/processor.h///1238019736/
+/ptrace.h///1238019736/
+/sdram.h///1238019736/
+/sections.h///1238019736/
+/setup.h///1238019736/
+/string.h///1238019736/
+/sysreg.h///1238019736/
+/types.h///1238019736/
+/u-boot.h///1238019736/
diff -Naur u-boot-2009.03_orig/include/asm-avr32/CVS/Entries.Extra.Old u-boot-2009.03/include/asm-avr32/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/asm-avr32/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-avr32/CVS/Entries.Extra.Old      2009-03-25 15:25:42.000000000 -0700
@@ -0,0 +1,22 @@
+/addrspace.h///1238019736/
+/bitops.h///1238019736/
+/byteorder.h///1238019736/
+/cacheflush.h///1238019736/
+/config.h///1238019736/
+/dma-mapping.h///1238019736/
+/errno.h///1238019736/
+/global_data.h///1238019736/
+/hmatrix-common.h///1238019736/
+/initcalls.h///1238019736/
+/io.h///1238019736/
+/posix_types.h///1238019736/
+/processor.h///1238019736/
+/ptrace.h///1238019736/
+/sdram.h///1238019736/
+/sections.h///1238019736/
+/setup.h///1238019736/
+/string.h///1238019736/
+/sysreg.h///1238019736/
+/types.h///1238019736/
+/u-boot.h///1238019736/
+D/arch-at32ap700x////
diff -Naur u-boot-2009.03_orig/include/asm-avr32/CVS/Entries.Old u-boot-2009.03/include/asm-avr32/CVS/Entries.Old
--- u-boot-2009.03_orig/include/asm-avr32/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-avr32/CVS/Entries.Old    2009-03-25 15:25:42.000000000 -0700
@@ -0,0 +1,22 @@
+/addrspace.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/bitops.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/byteorder.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/cacheflush.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/config.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/dma-mapping.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/errno.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/global_data.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/hmatrix-common.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/initcalls.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/io.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/posix_types.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/processor.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/ptrace.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/sdram.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/sections.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/setup.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/string.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/sysreg.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/types.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/u-boot.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+D/arch-at32ap700x////
diff -Naur u-boot-2009.03_orig/include/asm-avr32/CVS/Repository u-boot-2009.03/include/asm-avr32/CVS/Repository
--- u-boot-2009.03_orig/include/asm-avr32/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-avr32/CVS/Repository     2009-03-25 15:25:41.196679600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/asm-avr32
diff -Naur u-boot-2009.03_orig/include/asm-avr32/CVS/Root u-boot-2009.03/include/asm-avr32/CVS/Root
--- u-boot-2009.03_orig/include/asm-avr32/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-avr32/CVS/Root   2009-03-25 15:25:41.196679600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/asm-avr32/arch-at32ap700x/CVS/Entries u-boot-2009.03/include/asm-avr32/arch-at32ap700x/CVS/Entries
--- u-boot-2009.03_orig/include/asm-avr32/arch-at32ap700x/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-avr32/arch-at32ap700x/CVS/Entries        2009-03-25 15:58:08.106094300 -0700
@@ -0,0 +1,6 @@
+/chip-features.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/clk.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/gpio.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/hmatrix.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/memory-map.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-avr32/arch-at32ap700x/CVS/Entries.Extra u-boot-2009.03/include/asm-avr32/arch-at32ap700x/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/asm-avr32/arch-at32ap700x/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-avr32/arch-at32ap700x/CVS/Entries.Extra  2009-03-25 15:58:08.106094300 -0700
@@ -0,0 +1,5 @@
+/chip-features.h///1238019736/
+/clk.h///1238019736/
+/gpio.h///1238019736/
+/hmatrix.h///1238019736/
+/memory-map.h///1238019736/
diff -Naur u-boot-2009.03_orig/include/asm-avr32/arch-at32ap700x/CVS/Entries.Extra.Old u-boot-2009.03/include/asm-avr32/arch-at32ap700x/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/asm-avr32/arch-at32ap700x/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-avr32/arch-at32ap700x/CVS/Entries.Extra.Old      2009-03-25 15:25:42.000000000 -0700
@@ -0,0 +1,5 @@
+/chip-features.h///1238019736/
+/clk.h///1238019736/
+/gpio.h///1238019736/
+/hmatrix.h///1238019736/
+/memory-map.h///1238019736/
diff -Naur u-boot-2009.03_orig/include/asm-avr32/arch-at32ap700x/CVS/Entries.Old u-boot-2009.03/include/asm-avr32/arch-at32ap700x/CVS/Entries.Old
--- u-boot-2009.03_orig/include/asm-avr32/arch-at32ap700x/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-avr32/arch-at32ap700x/CVS/Entries.Old    2009-03-25 15:25:42.000000000 -0700
@@ -0,0 +1,6 @@
+/chip-features.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/clk.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/gpio.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/hmatrix.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/memory-map.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-avr32/arch-at32ap700x/CVS/Repository u-boot-2009.03/include/asm-avr32/arch-at32ap700x/CVS/Repository
--- u-boot-2009.03_orig/include/asm-avr32/arch-at32ap700x/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-avr32/arch-at32ap700x/CVS/Repository     2009-03-25 15:25:41.446678000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/asm-avr32/arch-at32ap700x
diff -Naur u-boot-2009.03_orig/include/asm-avr32/arch-at32ap700x/CVS/Root u-boot-2009.03/include/asm-avr32/arch-at32ap700x/CVS/Root
--- u-boot-2009.03_orig/include/asm-avr32/arch-at32ap700x/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-avr32/arch-at32ap700x/CVS/Root   2009-03-25 15:25:41.399803300 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/asm-blackfin/CVS/Entries u-boot-2009.03/include/asm-blackfin/CVS/Entries
--- u-boot-2009.03_orig/include/asm-blackfin/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-blackfin/CVS/Entries     2009-03-25 15:58:09.293586700 -0700
@@ -0,0 +1,33 @@
+D/mach-bf527////
+D/mach-bf533////
+D/mach-bf537////
+D/mach-bf548////
+D/mach-bf561////
+D/mach-common////
+/bfin_logo_230x230.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bitops.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/blackfin-config-post.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/blackfin-config-pre.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/blackfin.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/blackfin_cdef.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/blackfin_def.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/blackfin_local.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/byteorder.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cplb.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/delay.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/entry.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/errno.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/global_data.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/io.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/linkage.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mmc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/posix_types.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/processor.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ptrace.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/shared_resources.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/string.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/system.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/traps.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/types.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
diff -Naur u-boot-2009.03_orig/include/asm-blackfin/CVS/Entries.Extra u-boot-2009.03/include/asm-blackfin/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/asm-blackfin/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-blackfin/CVS/Entries.Extra       2009-03-25 15:58:09.293586700 -0700
@@ -0,0 +1,33 @@
+D/mach-bf527////
+D/mach-bf533////
+D/mach-bf537////
+D/mach-bf548////
+D/mach-bf561////
+D/mach-common////
+/bfin_logo_230x230.h///1238019736/
+/bitops.h///1238019736/
+/blackfin-config-post.h///1238019736/
+/blackfin-config-pre.h///1238019736/
+/blackfin.h///1238019736/
+/blackfin_cdef.h///1238019736/
+/blackfin_def.h///1238019736/
+/blackfin_local.h///1238019736/
+/byteorder.h///1238019736/
+/config.h///1238019736/
+/cplb.h///1238019736/
+/delay.h///1238019736/
+/entry.h///1238019736/
+/errno.h///1238019736/
+/global_data.h///1238019736/
+/io.h///1238019736/
+/linkage.h///1238019737/
+/mmc.h///1238019737/
+/posix_types.h///1238019737/
+/processor.h///1238019737/
+/ptrace.h///1238019737/
+/shared_resources.h///1238019737/
+/string.h///1238019737/
+/system.h///1238019737/
+/traps.h///1238019737/
+/types.h///1238019737/
+/u-boot.h///1238019737/
diff -Naur u-boot-2009.03_orig/include/asm-blackfin/CVS/Entries.Extra.Old u-boot-2009.03/include/asm-blackfin/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/asm-blackfin/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-blackfin/CVS/Entries.Extra.Old   2009-03-25 15:25:45.000000000 -0700
@@ -0,0 +1,33 @@
+/bfin_logo_230x230.h///1238019736/
+/bitops.h///1238019736/
+/blackfin-config-post.h///1238019736/
+/blackfin-config-pre.h///1238019736/
+/blackfin.h///1238019736/
+/blackfin_cdef.h///1238019736/
+/blackfin_def.h///1238019736/
+/blackfin_local.h///1238019736/
+/byteorder.h///1238019736/
+/config.h///1238019736/
+/cplb.h///1238019736/
+/delay.h///1238019736/
+/entry.h///1238019736/
+/errno.h///1238019736/
+/global_data.h///1238019736/
+/io.h///1238019736/
+/linkage.h///1238019737/
+/mmc.h///1238019737/
+/posix_types.h///1238019737/
+/processor.h///1238019737/
+/ptrace.h///1238019737/
+/shared_resources.h///1238019737/
+/string.h///1238019737/
+/system.h///1238019737/
+/traps.h///1238019737/
+/types.h///1238019737/
+/u-boot.h///1238019737/
+D/mach-bf527////
+D/mach-bf533////
+D/mach-bf537////
+D/mach-bf548////
+D/mach-bf561////
+D/mach-common////
diff -Naur u-boot-2009.03_orig/include/asm-blackfin/CVS/Entries.Old u-boot-2009.03/include/asm-blackfin/CVS/Entries.Old
--- u-boot-2009.03_orig/include/asm-blackfin/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-blackfin/CVS/Entries.Old 2009-03-25 15:25:45.000000000 -0700
@@ -0,0 +1,33 @@
+/bfin_logo_230x230.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/bitops.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/blackfin-config-post.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/blackfin-config-pre.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/blackfin.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/blackfin_cdef.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/blackfin_def.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/blackfin_local.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/byteorder.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/config.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/cplb.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/delay.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/entry.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/errno.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/global_data.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/io.h/1.1.1.1/Wed Mar 25 22:22:16 2009//
+/linkage.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+/mmc.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+/posix_types.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+/processor.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+/ptrace.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+/shared_resources.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+/string.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+/system.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+/traps.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+/types.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+/u-boot.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+D/mach-bf527////
+D/mach-bf533////
+D/mach-bf537////
+D/mach-bf548////
+D/mach-bf561////
+D/mach-common////
diff -Naur u-boot-2009.03_orig/include/asm-blackfin/CVS/Repository u-boot-2009.03/include/asm-blackfin/CVS/Repository
--- u-boot-2009.03_orig/include/asm-blackfin/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-blackfin/CVS/Repository  2009-03-25 15:25:42.790419400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/asm-blackfin
diff -Naur u-boot-2009.03_orig/include/asm-blackfin/CVS/Root u-boot-2009.03/include/asm-blackfin/CVS/Root
--- u-boot-2009.03_orig/include/asm-blackfin/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-blackfin/CVS/Root        2009-03-25 15:25:42.790419400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/asm-blackfin/mach-bf527/CVS/Entries u-boot-2009.03/include/asm-blackfin/mach-bf527/CVS/Entries
--- u-boot-2009.03_orig/include/asm-blackfin/mach-bf527/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-blackfin/mach-bf527/CVS/Entries  2009-03-25 15:58:08.371717600 -0700
@@ -0,0 +1,18 @@
+/ADSP-EDN-BF52x-extended_cdef.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ADSP-EDN-BF52x-extended_def.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/BF522_cdef.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/BF522_def.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/BF523_cdef.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/BF523_def.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/BF524_cdef.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/BF524_def.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/BF525_cdef.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/BF525_def.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/BF526_cdef.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/BF526_def.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/BF527_cdef.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/BF527_def.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/anomaly.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/def_local.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ports.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-blackfin/mach-bf527/CVS/Entries.Extra u-boot-2009.03/include/asm-blackfin/mach-bf527/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/asm-blackfin/mach-bf527/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-blackfin/mach-bf527/CVS/Entries.Extra    2009-03-25 15:58:08.371717600 -0700
@@ -0,0 +1,17 @@
+/ADSP-EDN-BF52x-extended_cdef.h///1238019737/
+/ADSP-EDN-BF52x-extended_def.h///1238019737/
+/BF522_cdef.h///1238019737/
+/BF522_def.h///1238019737/
+/BF523_cdef.h///1238019737/
+/BF523_def.h///1238019737/
+/BF524_cdef.h///1238019737/
+/BF524_def.h///1238019737/
+/BF525_cdef.h///1238019737/
+/BF525_def.h///1238019737/
+/BF526_cdef.h///1238019737/
+/BF526_def.h///1238019737/
+/BF527_cdef.h///1238019737/
+/BF527_def.h///1238019737/
+/anomaly.h///1238019737/
+/def_local.h///1238019737/
+/ports.h///1238019737/
diff -Naur u-boot-2009.03_orig/include/asm-blackfin/mach-bf527/CVS/Entries.Extra.Old u-boot-2009.03/include/asm-blackfin/mach-bf527/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/asm-blackfin/mach-bf527/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-blackfin/mach-bf527/CVS/Entries.Extra.Old        2009-03-25 15:25:43.000000000 -0700
@@ -0,0 +1,17 @@
+/ADSP-EDN-BF52x-extended_cdef.h///1238019737/
+/ADSP-EDN-BF52x-extended_def.h///1238019737/
+/BF522_cdef.h///1238019737/
+/BF522_def.h///1238019737/
+/BF523_cdef.h///1238019737/
+/BF523_def.h///1238019737/
+/BF524_cdef.h///1238019737/
+/BF524_def.h///1238019737/
+/BF525_cdef.h///1238019737/
+/BF525_def.h///1238019737/
+/BF526_cdef.h///1238019737/
+/BF526_def.h///1238019737/
+/BF527_cdef.h///1238019737/
+/BF527_def.h///1238019737/
+/anomaly.h///1238019737/
+/def_local.h///1238019737/
+/ports.h///1238019737/
diff -Naur u-boot-2009.03_orig/include/asm-blackfin/mach-bf527/CVS/Entries.Old u-boot-2009.03/include/asm-blackfin/mach-bf527/CVS/Entries.Old
--- u-boot-2009.03_orig/include/asm-blackfin/mach-bf527/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-blackfin/mach-bf527/CVS/Entries.Old      2009-03-25 15:25:43.000000000 -0700
@@ -0,0 +1,18 @@
+/ADSP-EDN-BF52x-extended_cdef.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+/ADSP-EDN-BF52x-extended_def.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+/BF522_cdef.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+/BF522_def.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+/BF523_cdef.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+/BF523_def.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+/BF524_cdef.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+/BF524_def.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+/BF525_cdef.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+/BF525_def.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+/BF526_cdef.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+/BF526_def.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+/BF527_cdef.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+/BF527_def.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+/anomaly.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+/def_local.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+/ports.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-blackfin/mach-bf527/CVS/Repository u-boot-2009.03/include/asm-blackfin/mach-bf527/CVS/Repository
--- u-boot-2009.03_orig/include/asm-blackfin/mach-bf527/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-blackfin/mach-bf527/CVS/Repository       2009-03-25 15:25:43.056042700 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/asm-blackfin/mach-bf527
diff -Naur u-boot-2009.03_orig/include/asm-blackfin/mach-bf527/CVS/Root u-boot-2009.03/include/asm-blackfin/mach-bf527/CVS/Root
--- u-boot-2009.03_orig/include/asm-blackfin/mach-bf527/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-blackfin/mach-bf527/CVS/Root     2009-03-25 15:25:43.040417800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/asm-blackfin/mach-bf533/CVS/Entries u-boot-2009.03/include/asm-blackfin/mach-bf533/CVS/Entries
--- u-boot-2009.03_orig/include/asm-blackfin/mach-bf533/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-blackfin/mach-bf533/CVS/Entries  2009-03-25 15:58:08.465467000 -0700
@@ -0,0 +1,10 @@
+/BF531_cdef.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/BF531_def.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/BF532_cdef.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/BF532_def.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/BF533_cdef.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/BF533_def.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/anomaly.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/def_local.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ports.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-blackfin/mach-bf533/CVS/Entries.Extra u-boot-2009.03/include/asm-blackfin/mach-bf533/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/asm-blackfin/mach-bf533/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-blackfin/mach-bf533/CVS/Entries.Extra    2009-03-25 15:58:08.465467000 -0700
@@ -0,0 +1,9 @@
+/BF531_cdef.h///1238019737/
+/BF531_def.h///1238019737/
+/BF532_cdef.h///1238019737/
+/BF532_def.h///1238019737/
+/BF533_cdef.h///1238019737/
+/BF533_def.h///1238019737/
+/anomaly.h///1238019737/
+/def_local.h///1238019737/
+/ports.h///1238019737/
diff -Naur u-boot-2009.03_orig/include/asm-blackfin/mach-bf533/CVS/Entries.Extra.Old u-boot-2009.03/include/asm-blackfin/mach-bf533/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/asm-blackfin/mach-bf533/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-blackfin/mach-bf533/CVS/Entries.Extra.Old        2009-03-25 15:25:43.000000000 -0700
@@ -0,0 +1,9 @@
+/BF531_cdef.h///1238019737/
+/BF531_def.h///1238019737/
+/BF532_cdef.h///1238019737/
+/BF532_def.h///1238019737/
+/BF533_cdef.h///1238019737/
+/BF533_def.h///1238019737/
+/anomaly.h///1238019737/
+/def_local.h///1238019737/
+/ports.h///1238019737/
diff -Naur u-boot-2009.03_orig/include/asm-blackfin/mach-bf533/CVS/Entries.Old u-boot-2009.03/include/asm-blackfin/mach-bf533/CVS/Entries.Old
--- u-boot-2009.03_orig/include/asm-blackfin/mach-bf533/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-blackfin/mach-bf533/CVS/Entries.Old      2009-03-25 15:25:43.000000000 -0700
@@ -0,0 +1,10 @@
+/BF531_cdef.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+/BF531_def.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+/BF532_cdef.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+/BF532_def.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+/BF533_cdef.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+/BF533_def.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+/anomaly.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+/def_local.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+/ports.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-blackfin/mach-bf533/CVS/Repository u-boot-2009.03/include/asm-blackfin/mach-bf533/CVS/Repository
--- u-boot-2009.03_orig/include/asm-blackfin/mach-bf533/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-blackfin/mach-bf533/CVS/Repository       2009-03-25 15:25:43.431040300 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/asm-blackfin/mach-bf533
diff -Naur u-boot-2009.03_orig/include/asm-blackfin/mach-bf533/CVS/Root u-boot-2009.03/include/asm-blackfin/mach-bf533/CVS/Root
--- u-boot-2009.03_orig/include/asm-blackfin/mach-bf533/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-blackfin/mach-bf533/CVS/Root     2009-03-25 15:25:43.431040300 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/asm-blackfin/mach-bf537/CVS/Entries u-boot-2009.03/include/asm-blackfin/mach-bf537/CVS/Entries
--- u-boot-2009.03_orig/include/asm-blackfin/mach-bf537/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-blackfin/mach-bf537/CVS/Entries  2009-03-25 15:58:08.574841300 -0700
@@ -0,0 +1,12 @@
+/ADSP-EDN-BF534-extended_cdef.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ADSP-EDN-BF534-extended_def.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/BF534_cdef.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/BF534_def.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/BF536_cdef.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/BF536_def.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/BF537_cdef.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/BF537_def.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/anomaly.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/def_local.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ports.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-blackfin/mach-bf537/CVS/Entries.Extra u-boot-2009.03/include/asm-blackfin/mach-bf537/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/asm-blackfin/mach-bf537/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-blackfin/mach-bf537/CVS/Entries.Extra    2009-03-25 15:58:08.574841300 -0700
@@ -0,0 +1,11 @@
+/ADSP-EDN-BF534-extended_cdef.h///1238019737/
+/ADSP-EDN-BF534-extended_def.h///1238019737/
+/BF534_cdef.h///1238019737/
+/BF534_def.h///1238019737/
+/BF536_cdef.h///1238019737/
+/BF536_def.h///1238019737/
+/BF537_cdef.h///1238019737/
+/BF537_def.h///1238019737/
+/anomaly.h///1238019737/
+/def_local.h///1238019737/
+/ports.h///1238019737/
diff -Naur u-boot-2009.03_orig/include/asm-blackfin/mach-bf537/CVS/Entries.Extra.Old u-boot-2009.03/include/asm-blackfin/mach-bf537/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/asm-blackfin/mach-bf537/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-blackfin/mach-bf537/CVS/Entries.Extra.Old        2009-03-25 15:25:43.000000000 -0700
@@ -0,0 +1,11 @@
+/ADSP-EDN-BF534-extended_cdef.h///1238019737/
+/ADSP-EDN-BF534-extended_def.h///1238019737/
+/BF534_cdef.h///1238019737/
+/BF534_def.h///1238019737/
+/BF536_cdef.h///1238019737/
+/BF536_def.h///1238019737/
+/BF537_cdef.h///1238019737/
+/BF537_def.h///1238019737/
+/anomaly.h///1238019737/
+/def_local.h///1238019737/
+/ports.h///1238019737/
diff -Naur u-boot-2009.03_orig/include/asm-blackfin/mach-bf537/CVS/Entries.Old u-boot-2009.03/include/asm-blackfin/mach-bf537/CVS/Entries.Old
--- u-boot-2009.03_orig/include/asm-blackfin/mach-bf537/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-blackfin/mach-bf537/CVS/Entries.Old      2009-03-25 15:25:43.000000000 -0700
@@ -0,0 +1,12 @@
+/ADSP-EDN-BF534-extended_cdef.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+/ADSP-EDN-BF534-extended_def.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+/BF534_cdef.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+/BF534_def.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+/BF536_cdef.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+/BF536_def.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+/BF537_cdef.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+/BF537_def.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+/anomaly.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+/def_local.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+/ports.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-blackfin/mach-bf537/CVS/Repository u-boot-2009.03/include/asm-blackfin/mach-bf537/CVS/Repository
--- u-boot-2009.03_orig/include/asm-blackfin/mach-bf537/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-blackfin/mach-bf537/CVS/Repository       2009-03-25 15:25:43.649788900 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/asm-blackfin/mach-bf537
diff -Naur u-boot-2009.03_orig/include/asm-blackfin/mach-bf537/CVS/Root u-boot-2009.03/include/asm-blackfin/mach-bf537/CVS/Root
--- u-boot-2009.03_orig/include/asm-blackfin/mach-bf537/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-blackfin/mach-bf537/CVS/Root     2009-03-25 15:25:43.634164000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/asm-blackfin/mach-bf548/CVS/Entries u-boot-2009.03/include/asm-blackfin/mach-bf548/CVS/Entries
--- u-boot-2009.03_orig/include/asm-blackfin/mach-bf548/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-blackfin/mach-bf548/CVS/Entries  2009-03-25 15:58:08.809214800 -0700
@@ -0,0 +1,26 @@
+/ADSP-EDN-BF542-extended_cdef.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ADSP-EDN-BF542-extended_def.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ADSP-EDN-BF544-extended_cdef.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ADSP-EDN-BF544-extended_def.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ADSP-EDN-BF547-extended_cdef.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ADSP-EDN-BF547-extended_def.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ADSP-EDN-BF548-extended_cdef.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ADSP-EDN-BF548-extended_def.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ADSP-EDN-BF549-extended_cdef.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ADSP-EDN-BF549-extended_def.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/BF541_cdef.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/BF541_def.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/BF542_cdef.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/BF542_def.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/BF544_cdef.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/BF544_def.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/BF547_cdef.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/BF547_def.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/BF548_cdef.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/BF548_def.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/BF549_cdef.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/BF549_def.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/anomaly.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/def_local.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ports.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-blackfin/mach-bf548/CVS/Entries.Extra u-boot-2009.03/include/asm-blackfin/mach-bf548/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/asm-blackfin/mach-bf548/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-blackfin/mach-bf548/CVS/Entries.Extra    2009-03-25 15:58:08.809214800 -0700
@@ -0,0 +1,25 @@
+/ADSP-EDN-BF542-extended_cdef.h///1238019737/
+/ADSP-EDN-BF542-extended_def.h///1238019737/
+/ADSP-EDN-BF544-extended_cdef.h///1238019737/
+/ADSP-EDN-BF544-extended_def.h///1238019737/
+/ADSP-EDN-BF547-extended_cdef.h///1238019737/
+/ADSP-EDN-BF547-extended_def.h///1238019737/
+/ADSP-EDN-BF548-extended_cdef.h///1238019737/
+/ADSP-EDN-BF548-extended_def.h///1238019738/
+/ADSP-EDN-BF549-extended_cdef.h///1238019738/
+/ADSP-EDN-BF549-extended_def.h///1238019738/
+/BF541_cdef.h///1238019738/
+/BF541_def.h///1238019738/
+/BF542_cdef.h///1238019738/
+/BF542_def.h///1238019738/
+/BF544_cdef.h///1238019738/
+/BF544_def.h///1238019738/
+/BF547_cdef.h///1238019738/
+/BF547_def.h///1238019738/
+/BF548_cdef.h///1238019738/
+/BF548_def.h///1238019738/
+/BF549_cdef.h///1238019738/
+/BF549_def.h///1238019738/
+/anomaly.h///1238019738/
+/def_local.h///1238019738/
+/ports.h///1238019738/
diff -Naur u-boot-2009.03_orig/include/asm-blackfin/mach-bf548/CVS/Entries.Extra.Old u-boot-2009.03/include/asm-blackfin/mach-bf548/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/asm-blackfin/mach-bf548/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-blackfin/mach-bf548/CVS/Entries.Extra.Old        2009-03-25 15:25:44.000000000 -0700
@@ -0,0 +1,25 @@
+/ADSP-EDN-BF542-extended_cdef.h///1238019737/
+/ADSP-EDN-BF542-extended_def.h///1238019737/
+/ADSP-EDN-BF544-extended_cdef.h///1238019737/
+/ADSP-EDN-BF544-extended_def.h///1238019737/
+/ADSP-EDN-BF547-extended_cdef.h///1238019737/
+/ADSP-EDN-BF547-extended_def.h///1238019737/
+/ADSP-EDN-BF548-extended_cdef.h///1238019737/
+/ADSP-EDN-BF548-extended_def.h///1238019738/
+/ADSP-EDN-BF549-extended_cdef.h///1238019738/
+/ADSP-EDN-BF549-extended_def.h///1238019738/
+/BF541_cdef.h///1238019738/
+/BF541_def.h///1238019738/
+/BF542_cdef.h///1238019738/
+/BF542_def.h///1238019738/
+/BF544_cdef.h///1238019738/
+/BF544_def.h///1238019738/
+/BF547_cdef.h///1238019738/
+/BF547_def.h///1238019738/
+/BF548_cdef.h///1238019738/
+/BF548_def.h///1238019738/
+/BF549_cdef.h///1238019738/
+/BF549_def.h///1238019738/
+/anomaly.h///1238019738/
+/def_local.h///1238019738/
+/ports.h///1238019738/
diff -Naur u-boot-2009.03_orig/include/asm-blackfin/mach-bf548/CVS/Entries.Old u-boot-2009.03/include/asm-blackfin/mach-bf548/CVS/Entries.Old
--- u-boot-2009.03_orig/include/asm-blackfin/mach-bf548/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-blackfin/mach-bf548/CVS/Entries.Old      2009-03-25 15:25:44.000000000 -0700
@@ -0,0 +1,26 @@
+/ADSP-EDN-BF542-extended_cdef.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+/ADSP-EDN-BF542-extended_def.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+/ADSP-EDN-BF544-extended_cdef.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+/ADSP-EDN-BF544-extended_def.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+/ADSP-EDN-BF547-extended_cdef.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+/ADSP-EDN-BF547-extended_def.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+/ADSP-EDN-BF548-extended_cdef.h/1.1.1.1/Wed Mar 25 22:22:17 2009//
+/ADSP-EDN-BF548-extended_def.h/1.1.1.1/Wed Mar 25 22:22:18 2009//
+/ADSP-EDN-BF549-extended_cdef.h/1.1.1.1/Wed Mar 25 22:22:18 2009//
+/ADSP-EDN-BF549-extended_def.h/1.1.1.1/Wed Mar 25 22:22:18 2009//
+/BF541_cdef.h/1.1.1.1/Wed Mar 25 22:22:18 2009//
+/BF541_def.h/1.1.1.1/Wed Mar 25 22:22:18 2009//
+/BF542_cdef.h/1.1.1.1/Wed Mar 25 22:22:18 2009//
+/BF542_def.h/1.1.1.1/Wed Mar 25 22:22:18 2009//
+/BF544_cdef.h/1.1.1.1/Wed Mar 25 22:22:18 2009//
+/BF544_def.h/1.1.1.1/Wed Mar 25 22:22:18 2009//
+/BF547_cdef.h/1.1.1.1/Wed Mar 25 22:22:18 2009//
+/BF547_def.h/1.1.1.1/Wed Mar 25 22:22:18 2009//
+/BF548_cdef.h/1.1.1.1/Wed Mar 25 22:22:18 2009//
+/BF548_def.h/1.1.1.1/Wed Mar 25 22:22:18 2009//
+/BF549_cdef.h/1.1.1.1/Wed Mar 25 22:22:18 2009//
+/BF549_def.h/1.1.1.1/Wed Mar 25 22:22:18 2009//
+/anomaly.h/1.1.1.1/Wed Mar 25 22:22:18 2009//
+/def_local.h/1.1.1.1/Wed Mar 25 22:22:18 2009//
+/ports.h/1.1.1.1/Wed Mar 25 22:22:18 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-blackfin/mach-bf548/CVS/Repository u-boot-2009.03/include/asm-blackfin/mach-bf548/CVS/Repository
--- u-boot-2009.03_orig/include/asm-blackfin/mach-bf548/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-blackfin/mach-bf548/CVS/Repository       2009-03-25 15:25:43.993536700 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/asm-blackfin/mach-bf548
diff -Naur u-boot-2009.03_orig/include/asm-blackfin/mach-bf548/CVS/Root u-boot-2009.03/include/asm-blackfin/mach-bf548/CVS/Root
--- u-boot-2009.03_orig/include/asm-blackfin/mach-bf548/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-blackfin/mach-bf548/CVS/Root     2009-03-25 15:25:43.993536700 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/asm-blackfin/mach-bf561/CVS/Entries u-boot-2009.03/include/asm-blackfin/mach-bf561/CVS/Entries
--- u-boot-2009.03_orig/include/asm-blackfin/mach-bf561/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-blackfin/mach-bf561/CVS/Entries  2009-03-25 15:58:08.887339300 -0700
@@ -0,0 +1,5 @@
+/BF561_cdef.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/BF561_def.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/anomaly.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/def_local.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-blackfin/mach-bf561/CVS/Entries.Extra u-boot-2009.03/include/asm-blackfin/mach-bf561/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/asm-blackfin/mach-bf561/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-blackfin/mach-bf561/CVS/Entries.Extra    2009-03-25 15:58:08.887339300 -0700
@@ -0,0 +1,4 @@
+/BF561_cdef.h///1238019738/
+/BF561_def.h///1238019738/
+/anomaly.h///1238019738/
+/def_local.h///1238019738/
diff -Naur u-boot-2009.03_orig/include/asm-blackfin/mach-bf561/CVS/Entries.Extra.Old u-boot-2009.03/include/asm-blackfin/mach-bf561/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/asm-blackfin/mach-bf561/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-blackfin/mach-bf561/CVS/Entries.Extra.Old        2009-03-25 15:25:44.000000000 -0700
@@ -0,0 +1,4 @@
+/BF561_cdef.h///1238019738/
+/BF561_def.h///1238019738/
+/anomaly.h///1238019738/
+/def_local.h///1238019738/
diff -Naur u-boot-2009.03_orig/include/asm-blackfin/mach-bf561/CVS/Entries.Old u-boot-2009.03/include/asm-blackfin/mach-bf561/CVS/Entries.Old
--- u-boot-2009.03_orig/include/asm-blackfin/mach-bf561/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-blackfin/mach-bf561/CVS/Entries.Old      2009-03-25 15:25:44.000000000 -0700
@@ -0,0 +1,5 @@
+/BF561_cdef.h/1.1.1.1/Wed Mar 25 22:22:18 2009//
+/BF561_def.h/1.1.1.1/Wed Mar 25 22:22:18 2009//
+/anomaly.h/1.1.1.1/Wed Mar 25 22:22:18 2009//
+/def_local.h/1.1.1.1/Wed Mar 25 22:22:18 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-blackfin/mach-bf561/CVS/Repository u-boot-2009.03/include/asm-blackfin/mach-bf561/CVS/Repository
--- u-boot-2009.03_orig/include/asm-blackfin/mach-bf561/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-blackfin/mach-bf561/CVS/Repository       2009-03-25 15:25:44.415409000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/asm-blackfin/mach-bf561
diff -Naur u-boot-2009.03_orig/include/asm-blackfin/mach-bf561/CVS/Root u-boot-2009.03/include/asm-blackfin/mach-bf561/CVS/Root
--- u-boot-2009.03_orig/include/asm-blackfin/mach-bf561/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-blackfin/mach-bf561/CVS/Root     2009-03-25 15:25:44.415409000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/asm-blackfin/mach-common/CVS/Entries u-boot-2009.03/include/asm-blackfin/mach-common/CVS/Entries
--- u-boot-2009.03_orig/include/asm-blackfin/mach-common/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-blackfin/mach-common/CVS/Entries 2009-03-25 15:58:09.215462200 -0700
@@ -0,0 +1,7 @@
+D/bits////
+/ADSP-EDN-DUAL-CORE-extended_cdef.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ADSP-EDN-DUAL-CORE-extended_def.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ADSP-EDN-core_cdef.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ADSP-EDN-core_def.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ADSP-EDN-extended_cdef.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ADSP-EDN-extended_def.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
diff -Naur u-boot-2009.03_orig/include/asm-blackfin/mach-common/CVS/Entries.Extra u-boot-2009.03/include/asm-blackfin/mach-common/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/asm-blackfin/mach-common/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-blackfin/mach-common/CVS/Entries.Extra   2009-03-25 15:58:09.215462200 -0700
@@ -0,0 +1,7 @@
+D/bits////
+/ADSP-EDN-DUAL-CORE-extended_cdef.h///1238019738/
+/ADSP-EDN-DUAL-CORE-extended_def.h///1238019738/
+/ADSP-EDN-core_cdef.h///1238019738/
+/ADSP-EDN-core_def.h///1238019738/
+/ADSP-EDN-extended_cdef.h///1238019738/
+/ADSP-EDN-extended_def.h///1238019738/
diff -Naur u-boot-2009.03_orig/include/asm-blackfin/mach-common/CVS/Entries.Extra.Old u-boot-2009.03/include/asm-blackfin/mach-common/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/asm-blackfin/mach-common/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-blackfin/mach-common/CVS/Entries.Extra.Old       2009-03-25 15:25:45.000000000 -0700
@@ -0,0 +1,7 @@
+/ADSP-EDN-DUAL-CORE-extended_cdef.h///1238019738/
+/ADSP-EDN-DUAL-CORE-extended_def.h///1238019738/
+/ADSP-EDN-core_cdef.h///1238019738/
+/ADSP-EDN-core_def.h///1238019738/
+/ADSP-EDN-extended_cdef.h///1238019738/
+/ADSP-EDN-extended_def.h///1238019738/
+D/bits////
diff -Naur u-boot-2009.03_orig/include/asm-blackfin/mach-common/CVS/Entries.Old u-boot-2009.03/include/asm-blackfin/mach-common/CVS/Entries.Old
--- u-boot-2009.03_orig/include/asm-blackfin/mach-common/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-blackfin/mach-common/CVS/Entries.Old     2009-03-25 15:25:45.000000000 -0700
@@ -0,0 +1,7 @@
+/ADSP-EDN-DUAL-CORE-extended_cdef.h/1.1.1.1/Wed Mar 25 22:22:18 2009//
+/ADSP-EDN-DUAL-CORE-extended_def.h/1.1.1.1/Wed Mar 25 22:22:18 2009//
+/ADSP-EDN-core_cdef.h/1.1.1.1/Wed Mar 25 22:22:18 2009//
+/ADSP-EDN-core_def.h/1.1.1.1/Wed Mar 25 22:22:18 2009//
+/ADSP-EDN-extended_cdef.h/1.1.1.1/Wed Mar 25 22:22:18 2009//
+/ADSP-EDN-extended_def.h/1.1.1.1/Wed Mar 25 22:22:18 2009//
+D/bits////
diff -Naur u-boot-2009.03_orig/include/asm-blackfin/mach-common/CVS/Repository u-boot-2009.03/include/asm-blackfin/mach-common/CVS/Repository
--- u-boot-2009.03_orig/include/asm-blackfin/mach-common/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-blackfin/mach-common/CVS/Repository      2009-03-25 15:25:44.524783300 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/asm-blackfin/mach-common
diff -Naur u-boot-2009.03_orig/include/asm-blackfin/mach-common/CVS/Root u-boot-2009.03/include/asm-blackfin/mach-common/CVS/Root
--- u-boot-2009.03_orig/include/asm-blackfin/mach-common/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-blackfin/mach-common/CVS/Root    2009-03-25 15:25:44.524783300 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/asm-blackfin/mach-common/bits/CVS/Entries u-boot-2009.03/include/asm-blackfin/mach-common/bits/CVS/Entries
--- u-boot-2009.03_orig/include/asm-blackfin/mach-common/bits/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-blackfin/mach-common/bits/CVS/Entries    2009-03-25 15:58:09.059213200 -0700
@@ -0,0 +1,22 @@
+/bootrom.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/core.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dma.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ebiu.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/emac.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/eppi.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lockbox.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpu.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/otp.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pata.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pll.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ppi.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/rtc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sdh.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/spi.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sport.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/timer.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/trace.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/twi.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/uart.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/watchdog.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-blackfin/mach-common/bits/CVS/Entries.Extra u-boot-2009.03/include/asm-blackfin/mach-common/bits/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/asm-blackfin/mach-common/bits/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-blackfin/mach-common/bits/CVS/Entries.Extra      2009-03-25 15:58:09.059213200 -0700
@@ -0,0 +1,21 @@
+/bootrom.h///1238019738/
+/core.h///1238019738/
+/dma.h///1238019738/
+/ebiu.h///1238019738/
+/emac.h///1238019738/
+/eppi.h///1238019738/
+/lockbox.h///1238019738/
+/mpu.h///1238019738/
+/otp.h///1238019738/
+/pata.h///1238019738/
+/pll.h///1238019738/
+/ppi.h///1238019738/
+/rtc.h///1238019738/
+/sdh.h///1238019738/
+/spi.h///1238019739/
+/sport.h///1238019739/
+/timer.h///1238019739/
+/trace.h///1238019739/
+/twi.h///1238019739/
+/uart.h///1238019739/
+/watchdog.h///1238019739/
diff -Naur u-boot-2009.03_orig/include/asm-blackfin/mach-common/bits/CVS/Entries.Extra.Old u-boot-2009.03/include/asm-blackfin/mach-common/bits/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/asm-blackfin/mach-common/bits/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-blackfin/mach-common/bits/CVS/Entries.Extra.Old  2009-03-25 15:25:44.000000000 -0700
@@ -0,0 +1,21 @@
+/bootrom.h///1238019738/
+/core.h///1238019738/
+/dma.h///1238019738/
+/ebiu.h///1238019738/
+/emac.h///1238019738/
+/eppi.h///1238019738/
+/lockbox.h///1238019738/
+/mpu.h///1238019738/
+/otp.h///1238019738/
+/pata.h///1238019738/
+/pll.h///1238019738/
+/ppi.h///1238019738/
+/rtc.h///1238019738/
+/sdh.h///1238019738/
+/spi.h///1238019739/
+/sport.h///1238019739/
+/timer.h///1238019739/
+/trace.h///1238019739/
+/twi.h///1238019739/
+/uart.h///1238019739/
+/watchdog.h///1238019739/
diff -Naur u-boot-2009.03_orig/include/asm-blackfin/mach-common/bits/CVS/Entries.Old u-boot-2009.03/include/asm-blackfin/mach-common/bits/CVS/Entries.Old
--- u-boot-2009.03_orig/include/asm-blackfin/mach-common/bits/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-blackfin/mach-common/bits/CVS/Entries.Old        2009-03-25 15:25:44.000000000 -0700
@@ -0,0 +1,22 @@
+/bootrom.h/1.1.1.1/Wed Mar 25 22:22:18 2009//
+/core.h/1.1.1.1/Wed Mar 25 22:22:18 2009//
+/dma.h/1.1.1.1/Wed Mar 25 22:22:18 2009//
+/ebiu.h/1.1.1.1/Wed Mar 25 22:22:18 2009//
+/emac.h/1.1.1.1/Wed Mar 25 22:22:18 2009//
+/eppi.h/1.1.1.1/Wed Mar 25 22:22:18 2009//
+/lockbox.h/1.1.1.1/Wed Mar 25 22:22:18 2009//
+/mpu.h/1.1.1.1/Wed Mar 25 22:22:18 2009//
+/otp.h/1.1.1.1/Wed Mar 25 22:22:18 2009//
+/pata.h/1.1.1.1/Wed Mar 25 22:22:18 2009//
+/pll.h/1.1.1.1/Wed Mar 25 22:22:18 2009//
+/ppi.h/1.1.1.1/Wed Mar 25 22:22:18 2009//
+/rtc.h/1.1.1.1/Wed Mar 25 22:22:18 2009//
+/sdh.h/1.1.1.1/Wed Mar 25 22:22:18 2009//
+/spi.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/sport.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/timer.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/trace.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/twi.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/uart.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/watchdog.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-blackfin/mach-common/bits/CVS/Repository u-boot-2009.03/include/asm-blackfin/mach-common/bits/CVS/Repository
--- u-boot-2009.03_orig/include/asm-blackfin/mach-common/bits/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-blackfin/mach-common/bits/CVS/Repository 2009-03-25 15:25:44.618532700 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/asm-blackfin/mach-common/bits
diff -Naur u-boot-2009.03_orig/include/asm-blackfin/mach-common/bits/CVS/Root u-boot-2009.03/include/asm-blackfin/mach-common/bits/CVS/Root
--- u-boot-2009.03_orig/include/asm-blackfin/mach-common/bits/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-blackfin/mach-common/bits/CVS/Root       2009-03-25 15:25:44.618532700 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/asm-i386/CVS/Entries u-boot-2009.03/include/asm-i386/CVS/Entries
--- u-boot-2009.03_orig/include/asm-i386/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-i386/CVS/Entries 2009-03-25 15:58:09.481085500 -0700
@@ -0,0 +1,20 @@
+D/ic////
+/bitops.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/byteorder.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/global_data.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/i8254.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/i8259.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ibmpc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupt.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/io.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/posix_types.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/processor.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ptrace.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/realmode.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/string.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/types.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot-i386.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/zimage.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
diff -Naur u-boot-2009.03_orig/include/asm-i386/CVS/Entries.Extra u-boot-2009.03/include/asm-i386/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/asm-i386/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-i386/CVS/Entries.Extra   2009-03-25 15:58:09.481085500 -0700
@@ -0,0 +1,20 @@
+D/ic////
+/bitops.h///1238019739/
+/byteorder.h///1238019739/
+/config.h///1238019739/
+/global_data.h///1238019739/
+/i8254.h///1238019739/
+/i8259.h///1238019739/
+/ibmpc.h///1238019739/
+/interrupt.h///1238019739/
+/io.h///1238019739/
+/pci.h///1238019739/
+/posix_types.h///1238019739/
+/processor.h///1238019739/
+/ptrace.h///1238019739/
+/realmode.h///1238019739/
+/string.h///1238019739/
+/types.h///1238019739/
+/u-boot-i386.h///1238019739/
+/u-boot.h///1238019739/
+/zimage.h///1238019739/
diff -Naur u-boot-2009.03_orig/include/asm-i386/CVS/Entries.Extra.Old u-boot-2009.03/include/asm-i386/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/asm-i386/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-i386/CVS/Entries.Extra.Old       2009-03-25 15:25:45.000000000 -0700
@@ -0,0 +1,20 @@
+/bitops.h///1238019739/
+/byteorder.h///1238019739/
+/config.h///1238019739/
+/global_data.h///1238019739/
+/i8254.h///1238019739/
+/i8259.h///1238019739/
+/ibmpc.h///1238019739/
+/interrupt.h///1238019739/
+/io.h///1238019739/
+/pci.h///1238019739/
+/posix_types.h///1238019739/
+/processor.h///1238019739/
+/ptrace.h///1238019739/
+/realmode.h///1238019739/
+/string.h///1238019739/
+/types.h///1238019739/
+/u-boot-i386.h///1238019739/
+/u-boot.h///1238019739/
+/zimage.h///1238019739/
+D/ic////
diff -Naur u-boot-2009.03_orig/include/asm-i386/CVS/Entries.Old u-boot-2009.03/include/asm-i386/CVS/Entries.Old
--- u-boot-2009.03_orig/include/asm-i386/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-i386/CVS/Entries.Old     2009-03-25 15:25:45.000000000 -0700
@@ -0,0 +1,20 @@
+/bitops.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/byteorder.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/config.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/global_data.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/i8254.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/i8259.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/ibmpc.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/interrupt.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/io.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/pci.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/posix_types.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/processor.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/ptrace.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/realmode.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/string.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/types.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/u-boot-i386.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/u-boot.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/zimage.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+D/ic////
diff -Naur u-boot-2009.03_orig/include/asm-i386/CVS/Repository u-boot-2009.03/include/asm-i386/CVS/Repository
--- u-boot-2009.03_orig/include/asm-i386/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-i386/CVS/Repository      2009-03-25 15:25:45.102904600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/asm-i386
diff -Naur u-boot-2009.03_orig/include/asm-i386/CVS/Root u-boot-2009.03/include/asm-i386/CVS/Root
--- u-boot-2009.03_orig/include/asm-i386/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-i386/CVS/Root    2009-03-25 15:25:45.102904600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/asm-i386/ic/CVS/Entries u-boot-2009.03/include/asm-i386/ic/CVS/Entries
--- u-boot-2009.03_orig/include/asm-i386/ic/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-i386/ic/CVS/Entries      2009-03-25 15:58:09.434210800 -0700
@@ -0,0 +1,5 @@
+/ali512x.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sc520.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ssi.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-i386/ic/CVS/Entries.Extra u-boot-2009.03/include/asm-i386/ic/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/asm-i386/ic/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-i386/ic/CVS/Entries.Extra        2009-03-25 15:58:09.434210800 -0700
@@ -0,0 +1,4 @@
+/ali512x.h///1238019739/
+/pci.h///1238019739/
+/sc520.h///1238019739/
+/ssi.h///1238019739/
diff -Naur u-boot-2009.03_orig/include/asm-i386/ic/CVS/Entries.Extra.Old u-boot-2009.03/include/asm-i386/ic/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/asm-i386/ic/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-i386/ic/CVS/Entries.Extra.Old    2009-03-25 15:25:45.000000000 -0700
@@ -0,0 +1,4 @@
+/ali512x.h///1238019739/
+/pci.h///1238019739/
+/sc520.h///1238019739/
+/ssi.h///1238019739/
diff -Naur u-boot-2009.03_orig/include/asm-i386/ic/CVS/Entries.Old u-boot-2009.03/include/asm-i386/ic/CVS/Entries.Old
--- u-boot-2009.03_orig/include/asm-i386/ic/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-i386/ic/CVS/Entries.Old  2009-03-25 15:25:45.000000000 -0700
@@ -0,0 +1,5 @@
+/ali512x.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/pci.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/sc520.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/ssi.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-i386/ic/CVS/Repository u-boot-2009.03/include/asm-i386/ic/CVS/Repository
--- u-boot-2009.03_orig/include/asm-i386/ic/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-i386/ic/CVS/Repository   2009-03-25 15:25:45.274778500 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/asm-i386/ic
diff -Naur u-boot-2009.03_orig/include/asm-i386/ic/CVS/Root u-boot-2009.03/include/asm-i386/ic/CVS/Root
--- u-boot-2009.03_orig/include/asm-i386/ic/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-i386/ic/CVS/Root 2009-03-25 15:25:45.274778500 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/asm-m68k/CVS/Entries u-boot-2009.03/include/asm-m68k/CVS/Entries
--- u-boot-2009.03_orig/include/asm-m68k/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-m68k/CVS/Entries 2009-03-25 15:58:09.856083100 -0700
@@ -0,0 +1,44 @@
+D/coldfire////
+/bitops.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/byteorder.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/errno.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fec.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fsl_i2c.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fsl_mcdmafec.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/global_data.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/immap.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/immap_5227x.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/immap_5235.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/immap_5249.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/immap_5253.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/immap_5271.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/immap_5272.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/immap_5275.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/immap_5282.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/immap_5301x.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/immap_5329.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/immap_5445x.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/immap_547x_8x.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/io.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/m5227x.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/m5235.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/m5249.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/m5253.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/m5271.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/m5272.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/m5275.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/m5282.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/m5301x.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/m5329.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/m5445x.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/m547x_8x.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/posix_types.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/processor.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ptrace.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/rtc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/string.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/timer.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/types.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/uart.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
diff -Naur u-boot-2009.03_orig/include/asm-m68k/CVS/Entries.Extra u-boot-2009.03/include/asm-m68k/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/asm-m68k/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-m68k/CVS/Entries.Extra   2009-03-25 15:58:09.856083100 -0700
@@ -0,0 +1,44 @@
+D/coldfire////
+/bitops.h///1238019739/
+/byteorder.h///1238019739/
+/config.h///1238019739/
+/errno.h///1238019739/
+/fec.h///1238019739/
+/fsl_i2c.h///1238019739/
+/fsl_mcdmafec.h///1238019739/
+/global_data.h///1238019739/
+/immap.h///1238019739/
+/immap_5227x.h///1238019739/
+/immap_5235.h///1238019739/
+/immap_5249.h///1238019739/
+/immap_5253.h///1238019739/
+/immap_5271.h///1238019739/
+/immap_5272.h///1238019739/
+/immap_5275.h///1238019739/
+/immap_5282.h///1238019739/
+/immap_5301x.h///1238019739/
+/immap_5329.h///1238019739/
+/immap_5445x.h///1238019739/
+/immap_547x_8x.h///1238019739/
+/io.h///1238019739/
+/m5227x.h///1238019739/
+/m5235.h///1238019739/
+/m5249.h///1238019739/
+/m5253.h///1238019739/
+/m5271.h///1238019739/
+/m5272.h///1238019739/
+/m5275.h///1238019739/
+/m5282.h///1238019739/
+/m5301x.h///1238019739/
+/m5329.h///1238019739/
+/m5445x.h///1238019739/
+/m547x_8x.h///1238019739/
+/posix_types.h///1238019739/
+/processor.h///1238019739/
+/ptrace.h///1238019739/
+/rtc.h///1238019739/
+/string.h///1238019739/
+/timer.h///1238019739/
+/types.h///1238019739/
+/u-boot.h///1238019739/
+/uart.h///1238019739/
diff -Naur u-boot-2009.03_orig/include/asm-m68k/CVS/Entries.Extra.Old u-boot-2009.03/include/asm-m68k/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/asm-m68k/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-m68k/CVS/Entries.Extra.Old       2009-03-25 15:25:46.000000000 -0700
@@ -0,0 +1,44 @@
+/bitops.h///1238019739/
+/byteorder.h///1238019739/
+/config.h///1238019739/
+/errno.h///1238019739/
+/fec.h///1238019739/
+/fsl_i2c.h///1238019739/
+/fsl_mcdmafec.h///1238019739/
+/global_data.h///1238019739/
+/immap.h///1238019739/
+/immap_5227x.h///1238019739/
+/immap_5235.h///1238019739/
+/immap_5249.h///1238019739/
+/immap_5253.h///1238019739/
+/immap_5271.h///1238019739/
+/immap_5272.h///1238019739/
+/immap_5275.h///1238019739/
+/immap_5282.h///1238019739/
+/immap_5301x.h///1238019739/
+/immap_5329.h///1238019739/
+/immap_5445x.h///1238019739/
+/immap_547x_8x.h///1238019739/
+/io.h///1238019739/
+/m5227x.h///1238019739/
+/m5235.h///1238019739/
+/m5249.h///1238019739/
+/m5253.h///1238019739/
+/m5271.h///1238019739/
+/m5272.h///1238019739/
+/m5275.h///1238019739/
+/m5282.h///1238019739/
+/m5301x.h///1238019739/
+/m5329.h///1238019739/
+/m5445x.h///1238019739/
+/m547x_8x.h///1238019739/
+/posix_types.h///1238019739/
+/processor.h///1238019739/
+/ptrace.h///1238019739/
+/rtc.h///1238019739/
+/string.h///1238019739/
+/timer.h///1238019739/
+/types.h///1238019739/
+/u-boot.h///1238019739/
+/uart.h///1238019739/
+D/coldfire////
diff -Naur u-boot-2009.03_orig/include/asm-m68k/CVS/Entries.Old u-boot-2009.03/include/asm-m68k/CVS/Entries.Old
--- u-boot-2009.03_orig/include/asm-m68k/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-m68k/CVS/Entries.Old     2009-03-25 15:25:46.000000000 -0700
@@ -0,0 +1,44 @@
+/bitops.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/byteorder.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/config.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/errno.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/fec.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/fsl_i2c.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/fsl_mcdmafec.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/global_data.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/immap.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/immap_5227x.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/immap_5235.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/immap_5249.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/immap_5253.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/immap_5271.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/immap_5272.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/immap_5275.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/immap_5282.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/immap_5301x.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/immap_5329.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/immap_5445x.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/immap_547x_8x.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/io.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/m5227x.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/m5235.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/m5249.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/m5253.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/m5271.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/m5272.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/m5275.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/m5282.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/m5301x.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/m5329.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/m5445x.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/m547x_8x.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/posix_types.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/processor.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/ptrace.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/rtc.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/string.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/timer.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/types.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/u-boot.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/uart.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+D/coldfire////
diff -Naur u-boot-2009.03_orig/include/asm-m68k/CVS/Repository u-boot-2009.03/include/asm-m68k/CVS/Repository
--- u-boot-2009.03_orig/include/asm-m68k/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-m68k/CVS/Repository      2009-03-25 15:25:45.431027500 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/asm-m68k
diff -Naur u-boot-2009.03_orig/include/asm-m68k/CVS/Root u-boot-2009.03/include/asm-m68k/CVS/Root
--- u-boot-2009.03_orig/include/asm-m68k/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-m68k/CVS/Root    2009-03-25 15:25:45.431027500 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/asm-m68k/coldfire/CVS/Entries u-boot-2009.03/include/asm-m68k/coldfire/CVS/Entries
--- u-boot-2009.03_orig/include/asm-m68k/coldfire/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-m68k/coldfire/CVS/Entries        2009-03-25 15:58:09.793583500 -0700
@@ -0,0 +1,16 @@
+/ata.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/crossbar.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dspi.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/edma.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/eport.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flexbus.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flexcan.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/intctrl.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lcd.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mdha.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pwm.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/qspi.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/rng.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/skha.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ssi.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-m68k/coldfire/CVS/Entries.Extra u-boot-2009.03/include/asm-m68k/coldfire/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/asm-m68k/coldfire/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-m68k/coldfire/CVS/Entries.Extra  2009-03-25 15:58:09.793583500 -0700
@@ -0,0 +1,15 @@
+/ata.h///1238019739/
+/crossbar.h///1238019739/
+/dspi.h///1238019739/
+/edma.h///1238019739/
+/eport.h///1238019739/
+/flexbus.h///1238019739/
+/flexcan.h///1238019739/
+/intctrl.h///1238019739/
+/lcd.h///1238019739/
+/mdha.h///1238019739/
+/pwm.h///1238019739/
+/qspi.h///1238019739/
+/rng.h///1238019739/
+/skha.h///1238019739/
+/ssi.h///1238019739/
diff -Naur u-boot-2009.03_orig/include/asm-m68k/coldfire/CVS/Entries.Extra.Old u-boot-2009.03/include/asm-m68k/coldfire/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/asm-m68k/coldfire/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-m68k/coldfire/CVS/Entries.Extra.Old      2009-03-25 15:25:46.000000000 -0700
@@ -0,0 +1,15 @@
+/ata.h///1238019739/
+/crossbar.h///1238019739/
+/dspi.h///1238019739/
+/edma.h///1238019739/
+/eport.h///1238019739/
+/flexbus.h///1238019739/
+/flexcan.h///1238019739/
+/intctrl.h///1238019739/
+/lcd.h///1238019739/
+/mdha.h///1238019739/
+/pwm.h///1238019739/
+/qspi.h///1238019739/
+/rng.h///1238019739/
+/skha.h///1238019739/
+/ssi.h///1238019739/
diff -Naur u-boot-2009.03_orig/include/asm-m68k/coldfire/CVS/Entries.Old u-boot-2009.03/include/asm-m68k/coldfire/CVS/Entries.Old
--- u-boot-2009.03_orig/include/asm-m68k/coldfire/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-m68k/coldfire/CVS/Entries.Old    2009-03-25 15:25:46.000000000 -0700
@@ -0,0 +1,16 @@
+/ata.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/crossbar.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/dspi.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/edma.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/eport.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/flexbus.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/flexcan.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/intctrl.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/lcd.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/mdha.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/pwm.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/qspi.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/rng.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/skha.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/ssi.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-m68k/coldfire/CVS/Repository u-boot-2009.03/include/asm-m68k/coldfire/CVS/Repository
--- u-boot-2009.03_orig/include/asm-m68k/coldfire/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-m68k/coldfire/CVS/Repository     2009-03-25 15:25:45.915399400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/asm-m68k/coldfire
diff -Naur u-boot-2009.03_orig/include/asm-m68k/coldfire/CVS/Root u-boot-2009.03/include/asm-m68k/coldfire/CVS/Root
--- u-boot-2009.03_orig/include/asm-m68k/coldfire/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-m68k/coldfire/CVS/Root   2009-03-25 15:25:45.915399400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/asm-microblaze/CVS/Entries u-boot-2009.03/include/asm-microblaze/CVS/Entries
--- u-boot-2009.03_orig/include/asm-microblaze/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-microblaze/CVS/Entries   2009-03-25 15:58:09.965457400 -0700
@@ -0,0 +1,16 @@
+/asm.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bitops.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/byteorder.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/global_data.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/io.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/microblaze_intc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/microblaze_timer.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/posix_types.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/processor.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ptrace.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/string.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/system.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/types.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-microblaze/CVS/Entries.Extra u-boot-2009.03/include/asm-microblaze/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/asm-microblaze/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-microblaze/CVS/Entries.Extra     2009-03-25 15:58:09.965457400 -0700
@@ -0,0 +1,15 @@
+/asm.h///1238019739/
+/bitops.h///1238019739/
+/byteorder.h///1238019739/
+/config.h///1238019740/
+/global_data.h///1238019740/
+/io.h///1238019740/
+/microblaze_intc.h///1238019740/
+/microblaze_timer.h///1238019740/
+/posix_types.h///1238019740/
+/processor.h///1238019740/
+/ptrace.h///1238019740/
+/string.h///1238019740/
+/system.h///1238019740/
+/types.h///1238019740/
+/u-boot.h///1238019740/
diff -Naur u-boot-2009.03_orig/include/asm-microblaze/CVS/Entries.Extra.Old u-boot-2009.03/include/asm-microblaze/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/asm-microblaze/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-microblaze/CVS/Entries.Extra.Old 2009-03-25 15:25:46.000000000 -0700
@@ -0,0 +1,15 @@
+/asm.h///1238019739/
+/bitops.h///1238019739/
+/byteorder.h///1238019739/
+/config.h///1238019740/
+/global_data.h///1238019740/
+/io.h///1238019740/
+/microblaze_intc.h///1238019740/
+/microblaze_timer.h///1238019740/
+/posix_types.h///1238019740/
+/processor.h///1238019740/
+/ptrace.h///1238019740/
+/string.h///1238019740/
+/system.h///1238019740/
+/types.h///1238019740/
+/u-boot.h///1238019740/
diff -Naur u-boot-2009.03_orig/include/asm-microblaze/CVS/Entries.Old u-boot-2009.03/include/asm-microblaze/CVS/Entries.Old
--- u-boot-2009.03_orig/include/asm-microblaze/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-microblaze/CVS/Entries.Old       2009-03-25 15:25:46.000000000 -0700
@@ -0,0 +1,16 @@
+/asm.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/bitops.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/byteorder.h/1.1.1.1/Wed Mar 25 22:22:19 2009//
+/config.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/global_data.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/io.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/microblaze_intc.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/microblaze_timer.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/posix_types.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/processor.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/ptrace.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/string.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/system.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/types.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/u-boot.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-microblaze/CVS/Repository u-boot-2009.03/include/asm-microblaze/CVS/Repository
--- u-boot-2009.03_orig/include/asm-microblaze/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-microblaze/CVS/Repository        2009-03-25 15:25:46.181022700 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/asm-microblaze
diff -Naur u-boot-2009.03_orig/include/asm-microblaze/CVS/Root u-boot-2009.03/include/asm-microblaze/CVS/Root
--- u-boot-2009.03_orig/include/asm-microblaze/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-microblaze/CVS/Root      2009-03-25 15:25:46.181022700 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/asm-mips/CVS/Entries u-boot-2009.03/include/asm-mips/CVS/Entries
--- u-boot-2009.03_orig/include/asm-mips/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-mips/CVS/Entries 2009-03-31 14:58:46.843585600 -0700
@@ -0,0 +1,26 @@
+/addrspace.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/asm.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/au1x00.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bitops.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/byteorder.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cachectl.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cacheops.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/errno.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/global_data.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/inca-ip.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/io.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/isadep.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mipsregs.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/processor.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ptrace.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/reboot.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/reg.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/regdef.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sgidefs.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/string.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/system.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/types.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/posix_types.h/1.1.1.1/Tue Mar 31 21:58:46 2009//T1.1.1.1
+D
diff -Naur u-boot-2009.03_orig/include/asm-mips/CVS/Entries.Extra u-boot-2009.03/include/asm-mips/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/asm-mips/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-mips/CVS/Entries.Extra   2009-03-31 14:58:46.843585600 -0700
@@ -0,0 +1,25 @@
+/addrspace.h///1238019740/
+/asm.h///1238019740/
+/au1x00.h///1238019740/
+/bitops.h///1238019740/
+/byteorder.h///1238019740/
+/cachectl.h///1238019740/
+/cacheops.h///1238019740/
+/config.h///1238019740/
+/errno.h///1238019740/
+/global_data.h///1238019740/
+/inca-ip.h///1238019740/
+/io.h///1238019740/
+/isadep.h///1238019740/
+/mipsregs.h///1238019740/
+/processor.h///1238019740/
+/ptrace.h///1238019740/
+/reboot.h///1238019740/
+/reg.h///1238019740/
+/regdef.h///1238019740/
+/sgidefs.h///1238019740/
+/string.h///1238019740/
+/system.h///1238019740/
+/types.h///1238019740/
+/u-boot.h///1238019740/
+/posix_types.h///1238019740/
diff -Naur u-boot-2009.03_orig/include/asm-mips/CVS/Entries.Extra.Old u-boot-2009.03/include/asm-mips/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/asm-mips/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-mips/CVS/Entries.Extra.Old       2009-03-25 17:51:49.000000000 -0700
@@ -0,0 +1,25 @@
+/addrspace.h///1238019740/
+/asm.h///1238019740/
+/au1x00.h///1238019740/
+/bitops.h///1238019740/
+/byteorder.h///1238019740/
+/cachectl.h///1238019740/
+/cacheops.h///1238019740/
+/config.h///1238019740/
+/errno.h///1238019740/
+/global_data.h///1238019740/
+/inca-ip.h///1238019740/
+/io.h///1238019740/
+/isadep.h///1238019740/
+/mipsregs.h///1238019740/
+/processor.h///1238019740/
+/ptrace.h///1238019740/
+/reboot.h///1238019740/
+/reg.h///1238019740/
+/regdef.h///1238019740/
+/sgidefs.h///1238019740/
+/string.h///1238019740/
+/system.h///1238019740/
+/types.h///1238019740/
+/u-boot.h///1238019740/
+/posix_types.h///1238028709/
diff -Naur u-boot-2009.03_orig/include/asm-mips/CVS/Entries.Old u-boot-2009.03/include/asm-mips/CVS/Entries.Old
--- u-boot-2009.03_orig/include/asm-mips/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-mips/CVS/Entries.Old     2009-03-25 17:51:49.000000000 -0700
@@ -0,0 +1,26 @@
+/addrspace.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/asm.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/au1x00.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bitops.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/byteorder.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cachectl.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cacheops.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/errno.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/global_data.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/inca-ip.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/io.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/isadep.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mipsregs.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/processor.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ptrace.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/reboot.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/reg.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/regdef.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sgidefs.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/string.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/system.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/types.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/posix_types.h/1.2/Thu Mar 26 00:51:49 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-mips/CVS/Repository u-boot-2009.03/include/asm-mips/CVS/Repository
--- u-boot-2009.03_orig/include/asm-mips/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-mips/CVS/Repository      2009-03-25 15:25:46.384146400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/asm-mips
diff -Naur u-boot-2009.03_orig/include/asm-mips/CVS/Root u-boot-2009.03/include/asm-mips/CVS/Root
--- u-boot-2009.03_orig/include/asm-mips/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-mips/CVS/Root    2009-03-25 15:25:46.384146400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/asm-mips/posix_types.h u-boot-2009.03/include/asm-mips/posix_types.h
--- u-boot-2009.03_orig/include/asm-mips/posix_types.h  2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/include/asm-mips/posix_types.h       2009-03-31 14:58:46.687337600 -0700
@@ -1,123 +1,123 @@
-/* $Id: posix_types.h,v 1.6 2000/02/04 23:32:54 ralf Exp $
- *
- * This file is subject to the terms and conditions of the GNU General Public
- * License.  See the file "COPYING" in the main directory of this archive
- * for more details.
- *
- * Copyright (C) 1996, 1997, 1998, 2000 by Ralf Baechle
- */
-#ifndef _ASM_POSIX_TYPES_H
-#define _ASM_POSIX_TYPES_H
-
-/*
- * This file is generally used by user-level software, so you need to
- * be a little careful about namespace pollution etc.  Also, we cannot
- * assume GCC is being used.
- */
-
-typedef unsigned int   __kernel_dev_t;
-typedef unsigned long  __kernel_ino_t;
-typedef unsigned int   __kernel_mode_t;
-typedef int            __kernel_nlink_t;
-typedef long           __kernel_off_t;
-typedef int            __kernel_pid_t;
-typedef int            __kernel_ipc_pid_t;
-typedef int            __kernel_uid_t;
-typedef int            __kernel_gid_t;
-typedef unsigned int   __kernel_size_t;
-typedef int            __kernel_ssize_t;
-typedef int            __kernel_ptrdiff_t;
-typedef long           __kernel_time_t;
-typedef long           __kernel_suseconds_t;
-typedef long           __kernel_clock_t;
-typedef long           __kernel_daddr_t;
-typedef char *         __kernel_caddr_t;
-
-typedef unsigned short __kernel_uid16_t;
-typedef unsigned short __kernel_gid16_t;
-typedef int            __kernel_uid32_t;
-typedef int            __kernel_gid32_t;
-typedef __kernel_uid_t __kernel_old_uid_t;
-typedef __kernel_gid_t __kernel_old_gid_t;
-
-#ifdef __GNUC__
-typedef long long      __kernel_loff_t;
-#endif
-
-typedef struct {
-       long    val[2];
-} __kernel_fsid_t;
-
-#if defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2)
-
-#undef __FD_SET
-static __inline__ void __FD_SET(unsigned long __fd, __kernel_fd_set *__fdsetp)
-{
-       unsigned long __tmp = __fd / __NFDBITS;
-       unsigned long __rem = __fd % __NFDBITS;
-       __fdsetp->fds_bits[__tmp] |= (1UL<<__rem);
-}
-
-#undef __FD_CLR
-static __inline__ void __FD_CLR(unsigned long __fd, __kernel_fd_set *__fdsetp)
-{
-       unsigned long __tmp = __fd / __NFDBITS;
-       unsigned long __rem = __fd % __NFDBITS;
-       __fdsetp->fds_bits[__tmp] &= ~(1UL<<__rem);
-}
-
-#undef __FD_ISSET
-static __inline__ int __FD_ISSET(unsigned long __fd, const __kernel_fd_set *__p)
-{
-       unsigned long __tmp = __fd / __NFDBITS;
-       unsigned long __rem = __fd % __NFDBITS;
-       return (__p->fds_bits[__tmp] & (1UL<<__rem)) != 0;
-}
-
-/*
- * This will unroll the loop for the normal constant case (8 ints,
- * for a 256-bit fd_set)
- */
-#undef __FD_ZERO
-static __inline__ void __FD_ZERO(__kernel_fd_set *__p)
-{
-       unsigned long *__tmp = __p->fds_bits;
-       int __i;
-
-       if (__builtin_constant_p(__FDSET_LONGS)) {
-               switch (__FDSET_LONGS) {
-               case 16:
-                       __tmp[ 0] = 0; __tmp[ 1] = 0;
-                       __tmp[ 2] = 0; __tmp[ 3] = 0;
-                       __tmp[ 4] = 0; __tmp[ 5] = 0;
-                       __tmp[ 6] = 0; __tmp[ 7] = 0;
-                       __tmp[ 8] = 0; __tmp[ 9] = 0;
-                       __tmp[10] = 0; __tmp[11] = 0;
-                       __tmp[12] = 0; __tmp[13] = 0;
-                       __tmp[14] = 0; __tmp[15] = 0;
-                       return;
-
-               case 8:
-                       __tmp[ 0] = 0; __tmp[ 1] = 0;
-                       __tmp[ 2] = 0; __tmp[ 3] = 0;
-                       __tmp[ 4] = 0; __tmp[ 5] = 0;
-                       __tmp[ 6] = 0; __tmp[ 7] = 0;
-                       return;
-
-               case 4:
-                       __tmp[ 0] = 0; __tmp[ 1] = 0;
-                       __tmp[ 2] = 0; __tmp[ 3] = 0;
-                       return;
-               }
-       }
-       __i = __FDSET_LONGS;
-       while (__i) {
-               __i--;
-               *__tmp = 0;
-               __tmp++;
-       }
-}
-
-#endif /* defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2) */
-
-#endif /* _ASM_POSIX_TYPES_H */
+/* $Id: posix_types.h,v 1.1.1.1 2009/03/25 22:22:20 kenagy Exp $
+ *
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License.  See the file "COPYING" in the main directory of this archive
+ * for more details.
+ *
+ * Copyright (C) 1996, 1997, 1998, 2000 by Ralf Baechle
+ */
+#ifndef _ASM_POSIX_TYPES_H
+#define _ASM_POSIX_TYPES_H
+
+/*
+ * This file is generally used by user-level software, so you need to
+ * be a little careful about namespace pollution etc.  Also, we cannot
+ * assume GCC is being used.
+ */
+
+typedef unsigned int   __kernel_dev_t;
+typedef unsigned long  __kernel_ino_t;
+typedef unsigned int   __kernel_mode_t;
+typedef int            __kernel_nlink_t;
+typedef long           __kernel_off_t;
+typedef int            __kernel_pid_t;
+typedef int            __kernel_ipc_pid_t;
+typedef int            __kernel_uid_t;
+typedef int            __kernel_gid_t;
+typedef unsigned int   __kernel_size_t;
+typedef int            __kernel_ssize_t;
+typedef int            __kernel_ptrdiff_t;
+typedef long           __kernel_time_t;
+typedef long           __kernel_suseconds_t;
+typedef long           __kernel_clock_t;
+typedef long           __kernel_daddr_t;
+typedef char *         __kernel_caddr_t;
+
+typedef unsigned short __kernel_uid16_t;
+typedef unsigned short __kernel_gid16_t;
+typedef int            __kernel_uid32_t;
+typedef int            __kernel_gid32_t;
+typedef __kernel_uid_t __kernel_old_uid_t;
+typedef __kernel_gid_t __kernel_old_gid_t;
+
+#ifdef __GNUC__
+typedef long long      __kernel_loff_t;
+#endif
+
+typedef struct {
+       long    val[2];
+} __kernel_fsid_t;
+
+#if defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2)
+
+#undef __FD_SET
+static __inline__ void __FD_SET(unsigned long __fd, __kernel_fd_set *__fdsetp)
+{
+       unsigned long __tmp = __fd / __NFDBITS;
+       unsigned long __rem = __fd % __NFDBITS;
+       __fdsetp->fds_bits[__tmp] |= (1UL<<__rem);
+}
+
+#undef __FD_CLR
+static __inline__ void __FD_CLR(unsigned long __fd, __kernel_fd_set *__fdsetp)
+{
+       unsigned long __tmp = __fd / __NFDBITS;
+       unsigned long __rem = __fd % __NFDBITS;
+       __fdsetp->fds_bits[__tmp] &= ~(1UL<<__rem);
+}
+
+#undef __FD_ISSET
+static __inline__ int __FD_ISSET(unsigned long __fd, const __kernel_fd_set *__p)
+{
+       unsigned long __tmp = __fd / __NFDBITS;
+       unsigned long __rem = __fd % __NFDBITS;
+       return (__p->fds_bits[__tmp] & (1UL<<__rem)) != 0;
+}
+
+/*
+ * This will unroll the loop for the normal constant case (8 ints,
+ * for a 256-bit fd_set)
+ */
+#undef __FD_ZERO
+static __inline__ void __FD_ZERO(__kernel_fd_set *__p)
+{
+       unsigned long *__tmp = __p->fds_bits;
+       int __i;
+
+       if (__builtin_constant_p(__FDSET_LONGS)) {
+               switch (__FDSET_LONGS) {
+               case 16:
+                       __tmp[ 0] = 0; __tmp[ 1] = 0;
+                       __tmp[ 2] = 0; __tmp[ 3] = 0;
+                       __tmp[ 4] = 0; __tmp[ 5] = 0;
+                       __tmp[ 6] = 0; __tmp[ 7] = 0;
+                       __tmp[ 8] = 0; __tmp[ 9] = 0;
+                       __tmp[10] = 0; __tmp[11] = 0;
+                       __tmp[12] = 0; __tmp[13] = 0;
+                       __tmp[14] = 0; __tmp[15] = 0;
+                       return;
+
+               case 8:
+                       __tmp[ 0] = 0; __tmp[ 1] = 0;
+                       __tmp[ 2] = 0; __tmp[ 3] = 0;
+                       __tmp[ 4] = 0; __tmp[ 5] = 0;
+                       __tmp[ 6] = 0; __tmp[ 7] = 0;
+                       return;
+
+               case 4:
+                       __tmp[ 0] = 0; __tmp[ 1] = 0;
+                       __tmp[ 2] = 0; __tmp[ 3] = 0;
+                       return;
+               }
+       }
+       __i = __FDSET_LONGS;
+       while (__i) {
+               __i--;
+               *__tmp = 0;
+               __tmp++;
+       }
+}
+
+#endif /* defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2) */
+
+#endif /* _ASM_POSIX_TYPES_H */
diff -Naur u-boot-2009.03_orig/include/asm-nios/CVS/Entries u-boot-2009.03/include/asm-nios/CVS/Entries
--- u-boot-2009.03_orig/include/asm-nios/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-nios/CVS/Entries 2009-03-25 15:58:10.262330500 -0700
@@ -0,0 +1,16 @@
+/bitops.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/byteorder.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cache.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/global_data.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/io.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/posix_types.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/processor.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/psr.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ptrace.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/status_led.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/string.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/system.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/types.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-nios/CVS/Entries.Extra u-boot-2009.03/include/asm-nios/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/asm-nios/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-nios/CVS/Entries.Extra   2009-03-25 15:58:10.262330500 -0700
@@ -0,0 +1,15 @@
+/bitops.h///1238019740/
+/byteorder.h///1238019740/
+/cache.h///1238019740/
+/config.h///1238019740/
+/global_data.h///1238019740/
+/io.h///1238019740/
+/posix_types.h///1238019740/
+/processor.h///1238019740/
+/psr.h///1238019740/
+/ptrace.h///1238019740/
+/status_led.h///1238019740/
+/string.h///1238019740/
+/system.h///1238019740/
+/types.h///1238019740/
+/u-boot.h///1238019740/
diff -Naur u-boot-2009.03_orig/include/asm-nios/CVS/Entries.Extra.Old u-boot-2009.03/include/asm-nios/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/asm-nios/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-nios/CVS/Entries.Extra.Old       2009-03-25 15:25:46.000000000 -0700
@@ -0,0 +1,15 @@
+/bitops.h///1238019740/
+/byteorder.h///1238019740/
+/cache.h///1238019740/
+/config.h///1238019740/
+/global_data.h///1238019740/
+/io.h///1238019740/
+/posix_types.h///1238019740/
+/processor.h///1238019740/
+/psr.h///1238019740/
+/ptrace.h///1238019740/
+/status_led.h///1238019740/
+/string.h///1238019740/
+/system.h///1238019740/
+/types.h///1238019740/
+/u-boot.h///1238019740/
diff -Naur u-boot-2009.03_orig/include/asm-nios/CVS/Entries.Old u-boot-2009.03/include/asm-nios/CVS/Entries.Old
--- u-boot-2009.03_orig/include/asm-nios/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-nios/CVS/Entries.Old     2009-03-25 15:25:46.000000000 -0700
@@ -0,0 +1,16 @@
+/bitops.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/byteorder.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/cache.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/config.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/global_data.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/io.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/posix_types.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/processor.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/psr.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/ptrace.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/status_led.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/string.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/system.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/types.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/u-boot.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-nios/CVS/Repository u-boot-2009.03/include/asm-nios/CVS/Repository
--- u-boot-2009.03_orig/include/asm-nios/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-nios/CVS/Repository      2009-03-25 15:25:46.821643600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/asm-nios
diff -Naur u-boot-2009.03_orig/include/asm-nios/CVS/Root u-boot-2009.03/include/asm-nios/CVS/Root
--- u-boot-2009.03_orig/include/asm-nios/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-nios/CVS/Root    2009-03-25 15:25:46.821643600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/asm-nios2/CVS/Entries u-boot-2009.03/include/asm-nios2/CVS/Entries
--- u-boot-2009.03_orig/include/asm-nios2/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-nios2/CVS/Entries        2009-03-25 15:58:10.371704800 -0700
@@ -0,0 +1,17 @@
+/bitops.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/byteorder.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cache.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/global_data.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/io.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/opcodes.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/posix_types.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/processor.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/psr.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ptrace.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/status_led.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/string.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/system.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/types.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-nios2/CVS/Entries.Extra u-boot-2009.03/include/asm-nios2/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/asm-nios2/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-nios2/CVS/Entries.Extra  2009-03-25 15:58:10.371704800 -0700
@@ -0,0 +1,16 @@
+/bitops.h///1238019740/
+/byteorder.h///1238019740/
+/cache.h///1238019740/
+/config.h///1238019740/
+/global_data.h///1238019740/
+/io.h///1238019740/
+/opcodes.h///1238019740/
+/posix_types.h///1238019740/
+/processor.h///1238019740/
+/psr.h///1238019740/
+/ptrace.h///1238019740/
+/status_led.h///1238019740/
+/string.h///1238019740/
+/system.h///1238019740/
+/types.h///1238019740/
+/u-boot.h///1238019740/
diff -Naur u-boot-2009.03_orig/include/asm-nios2/CVS/Entries.Extra.Old u-boot-2009.03/include/asm-nios2/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/asm-nios2/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-nios2/CVS/Entries.Extra.Old      2009-03-25 15:25:47.000000000 -0700
@@ -0,0 +1,16 @@
+/bitops.h///1238019740/
+/byteorder.h///1238019740/
+/cache.h///1238019740/
+/config.h///1238019740/
+/global_data.h///1238019740/
+/io.h///1238019740/
+/opcodes.h///1238019740/
+/posix_types.h///1238019740/
+/processor.h///1238019740/
+/psr.h///1238019740/
+/ptrace.h///1238019740/
+/status_led.h///1238019740/
+/string.h///1238019740/
+/system.h///1238019740/
+/types.h///1238019740/
+/u-boot.h///1238019740/
diff -Naur u-boot-2009.03_orig/include/asm-nios2/CVS/Entries.Old u-boot-2009.03/include/asm-nios2/CVS/Entries.Old
--- u-boot-2009.03_orig/include/asm-nios2/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-nios2/CVS/Entries.Old    2009-03-25 15:25:47.000000000 -0700
@@ -0,0 +1,17 @@
+/bitops.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/byteorder.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/cache.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/config.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/global_data.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/io.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/opcodes.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/posix_types.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/processor.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/psr.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/ptrace.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/status_led.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/string.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/system.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/types.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/u-boot.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-nios2/CVS/Repository u-boot-2009.03/include/asm-nios2/CVS/Repository
--- u-boot-2009.03_orig/include/asm-nios2/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-nios2/CVS/Repository     2009-03-25 15:25:47.024767300 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/asm-nios2
diff -Naur u-boot-2009.03_orig/include/asm-nios2/CVS/Root u-boot-2009.03/include/asm-nios2/CVS/Root
--- u-boot-2009.03_orig/include/asm-nios2/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-nios2/CVS/Root   2009-03-25 15:25:47.024767300 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/asm-or1200/CVS/Entries u-boot-2009.03/include/asm-or1200/CVS/Entries
--- u-boot-2009.03_orig/include/asm-or1200/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-or1200/CVS/Entries       2009-03-25 17:51:50.873273200 -0700
@@ -0,0 +1,15 @@
+/bitops.h/1.1/Wed Aug 27 01:13:42 2008//
+/byteorder.h/1.1/Wed Jul  2 16:36:01 2008//
+/config.h/1.1/Wed Mar 25 22:52:40 2009//
+/global_data.h/1.1/Fri Sep  5 16:56:50 2008//
+/io.h/1.1/Wed Jul  2 16:36:02 2008//
+/page.h/1.1/Wed Jul  2 16:36:02 2008//
+/posix_types.h/1.1/Wed Aug 27 01:22:31 2008//
+/processor.h/1.1/Wed Jul  2 16:36:02 2008//
+/ptrace.h/1.1/Wed Jul  2 16:36:02 2008//
+/spr_defs.h/1.1/Wed Jul  2 16:36:02 2008//
+/string.h/1.1/Wed Jul  2 16:36:02 2008//
+/system.h/1.1/Wed Jul  2 16:36:02 2008//
+/types.h/1.1/Wed Aug 27 01:29:36 2008//
+/u-boot.h/1.1/Fri Sep  5 16:57:00 2008//
+D
diff -Naur u-boot-2009.03_orig/include/asm-or1200/CVS/Entries.Extra u-boot-2009.03/include/asm-or1200/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/asm-or1200/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-or1200/CVS/Entries.Extra 2009-03-25 17:51:50.873273200 -0700
@@ -0,0 +1,14 @@
+/bitops.h///1238028709/
+/byteorder.h///1238028710/
+/config.h///1238028710/
+/global_data.h///1238028710/
+/io.h///1238028710/
+/page.h///1238028710/
+/posix_types.h///1238028710/
+/processor.h///1238028710/
+/ptrace.h///1238028710/
+/spr_defs.h///1238028710/
+/string.h///1238028710/
+/system.h///1238028710/
+/types.h///1238028710/
+/u-boot.h///1238028710/
diff -Naur u-boot-2009.03_orig/include/asm-or1200/CVS/Entries.Extra.Old u-boot-2009.03/include/asm-or1200/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/asm-or1200/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-or1200/CVS/Entries.Extra.Old     2009-03-25 17:51:32.000000000 -0700
@@ -0,0 +1,14 @@
+/bitops.h////
+/byteorder.h////
+/config.h////
+/global_data.h////
+/io.h////
+/page.h////
+/posix_types.h////
+/processor.h////
+/ptrace.h////
+/spr_defs.h////
+/string.h////
+/system.h////
+/types.h////
+/u-boot.h////
diff -Naur u-boot-2009.03_orig/include/asm-or1200/CVS/Entries.Old u-boot-2009.03/include/asm-or1200/CVS/Entries.Old
--- u-boot-2009.03_orig/include/asm-or1200/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-or1200/CVS/Entries.Old   2009-03-25 17:51:32.000000000 -0700
@@ -0,0 +1,15 @@
+/bitops.h/0/Initial bitops.h//
+/byteorder.h/0/Initial byteorder.h//
+/config.h/0/Initial config.h//
+/global_data.h/0/Initial global_data.h//
+/io.h/0/Initial io.h//
+/page.h/0/Initial page.h//
+/posix_types.h/0/Initial posix_types.h//
+/processor.h/0/Initial processor.h//
+/ptrace.h/0/Initial ptrace.h//
+/spr_defs.h/0/Initial spr_defs.h//
+/string.h/0/Initial string.h//
+/system.h/0/Initial system.h//
+/types.h/0/Initial types.h//
+/u-boot.h/0/Initial u-boot.h//
+D
diff -Naur u-boot-2009.03_orig/include/asm-or1200/CVS/Repository u-boot-2009.03/include/asm-or1200/CVS/Repository
--- u-boot-2009.03_orig/include/asm-or1200/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-or1200/CVS/Repository    2009-03-25 17:50:12.327028900 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/asm-or1200
diff -Naur u-boot-2009.03_orig/include/asm-or1200/CVS/Root u-boot-2009.03/include/asm-or1200/CVS/Root
--- u-boot-2009.03_orig/include/asm-or1200/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-or1200/CVS/Root  2009-03-25 17:50:12.327028900 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/asm-or1200/bitops.h u-boot-2009.03/include/asm-or1200/bitops.h
--- u-boot-2009.03_orig/include/asm-or1200/bitops.h     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-or1200/bitops.h  2008-08-26 18:13:42.783673400 -0700
@@ -0,0 +1,554 @@
+/* asm/bitops.h for Linux/or32
+ *
+ * __PHX__ TODO: asm versions
+ *
+ */
+
+#ifdef __KERNEL__
+#ifndef _OR32_BITOPS_H
+#define _OR32_BITOPS_H
+
+#include <asm/system.h>
+#include <asm/byteorder.h>
+// #include <linux/compiler.h>
+
+
+static __inline__ int set_bit(int nr, volatile void * a)
+{
+       int     * addr = (void *)a;
+       int     mask, retval;
+       unsigned long flags;
+
+       addr += nr >> 5;
+       mask = 1 << (nr & 0x1f);
+       local_irq_save(flags);
+       retval = (mask & *addr) != 0;
+       *addr |= mask;
+       local_irq_restore(flags);
+       return retval;
+}
+
+/*
+ * non-atomic version
+ */
+static __inline__ void __set_bit(int nr, volatile unsigned long *addr)
+{
+       unsigned long mask = 1 << (nr & 0x1f);
+       unsigned long *p = ((unsigned long *)addr) + (nr >> 5);
+
+       *p |= mask;
+}
+
+static __inline__ int clear_bit(int nr, volatile void * a)
+{
+       int     * addr = (void *)a;
+       int     mask, retval;
+       unsigned long flags;
+
+       addr += nr >> 5;
+       mask = 1 << (nr & 0x1f);
+       local_irq_save(flags);
+       retval = (mask & *addr) != 0;
+       *addr &= ~mask;
+       local_irq_restore(flags);
+       return retval;
+}
+
+/*
+ * non-atomic version
+ */
+static __inline__ void __clear_bit(int nr, volatile unsigned long *addr)
+{
+       unsigned long mask = 1 << (nr & 0x1f);
+       unsigned long *p = ((unsigned long *)addr) + (nr >> 5);
+
+       *p &= ~mask;
+}
+
+static __inline__ unsigned long change_bit(unsigned long nr,  void *addr)
+{
+       int mask;
+  unsigned long flags;
+       unsigned long *ADDR = (unsigned long *) addr;
+       unsigned long oldbit;
+
+       ADDR += nr >> 5;
+       mask = 1 << (nr & 31);
+       local_irq_save(flags);
+       oldbit = (mask & *ADDR);
+       *ADDR ^= mask;
+       local_irq_restore(flags);
+       return oldbit != 0;
+}
+
+/*
+ * non-atomic version
+ */
+static __inline__ void __change_bit(int nr, volatile unsigned long *addr)
+{
+       unsigned long mask = 1 << (nr & 0x1f);
+       unsigned long *p = ((unsigned long *)addr) + (nr >> 5);
+
+       *p ^= mask;
+}
+
+static __inline__ int test_bit(int nr, const void *a)
+{
+       unsigned int mask;
+        unsigned int *adr = (unsigned int *)a;
+         
+        adr += nr >> 5;
+        mask = 1 << (nr & 0x1f);
+        return ((mask & *adr) != 0);
+}
+
+static __inline__ int test_and_set_bit(int nr, void *addr)
+{
+       unsigned int mask, retval;
+       unsigned long flags;
+       unsigned int *adr = (unsigned int *)addr;
+       
+       adr += nr >> 5;
+       mask = 1 << (nr & 0x1f);
+       local_irq_save(flags);
+       retval = (mask & *adr) != 0;
+       *adr |= mask;
+       local_irq_restore(flags);
+       return retval;
+}
+
+/*
+ * non-atomic version
+ */
+static __inline__ int __test_and_set_bit(int nr, volatile unsigned long *addr)
+{
+       unsigned long mask = 1 << (nr & 0x1f);
+       unsigned long *p = ((unsigned long *)addr) + (nr >> 5);
+       unsigned long old = *p;
+
+       *p = old | mask;
+       return (old & mask) != 0;
+}
+
+
+static __inline__ int test_and_clear_bit(int nr, void *addr)
+{
+       unsigned int mask, retval;
+       unsigned long flags;
+       unsigned int *adr = (unsigned int *)addr;
+       
+       adr += nr >> 5;
+       mask = 1 << (nr & 0x1f);
+       local_irq_save(flags);
+       retval = (mask & *adr) != 0;
+       *adr &= ~mask;
+       local_irq_restore(flags);
+       return retval;
+}
+
+/*
+ * non-atomic version
+ */
+static __inline__ int __test_and_clear_bit(int nr, volatile unsigned long *addr)
+{
+       unsigned long mask = 1 << (nr & 0x1f);
+       unsigned long *p = ((unsigned long *)addr) + (nr >> 5);
+       unsigned long old = *p;
+
+       *p = old & ~mask;
+       return (old & mask) != 0;
+}
+
+static __inline__ int test_and_change_bit(int nr, void *addr)
+{
+       unsigned int mask, retval;
+       unsigned long flags;
+       unsigned int *adr = (unsigned int *)addr;
+       adr += nr >> 5;
+       mask = 1 << (nr & 0x1f);
+       local_irq_save(flags);
+       retval = (mask & *adr) != 0;
+       *adr ^= mask;
+       local_irq_restore(flags);
+       return retval;
+}
+
+/*
+ * non-atomic version
+ */
+static __inline__ int __test_and_change_bit(int nr, volatile unsigned long *addr)
+{
+       unsigned long mask = 1 << (nr & 0x1f);
+       unsigned long *p = ((unsigned long *)addr) + (nr >> 5);
+       unsigned long old = *p;
+
+       *p = old ^ mask;
+       return (old & mask) != 0;
+}
+
+#define __change_bit(nr, addr) (void)__test_and_change_bit(nr, addr)
+
+/*
+ * Find-bit routines..
+ */
+
+/*
+ * fls: find last bit set.
+ */
+
+#define fls(x) generic_fls(x)
+
+/* The easy/cheese version for now. */
+static __inline__ unsigned long ffz(unsigned long word)
+{
+       unsigned long result = 0;
+
+       while(word & 1) {
+               result++;
+               word >>= 1;
+       }
+       return result;
+}
+
+/*
+ * ffs: find first bit set. This is defined the same way as
+ * the libc and compiler builtin ffs routines, therefore
+ * differs in spirit from the above ffz (man ffs).
+ */
+
+#define ffs(x) generic_ffs(x)
+
+/*
+ * hweightN - returns the hamming weight of a N-bit word
+ * @x: the word to weigh
+ *
+ * The Hamming Weight of a number is the total number of bits set in it.
+ */
+#if 0 /*RGD*/
+#define hweight32(x) generic_hweight32(x)
+#define hweight16(x) generic_hweight16(x)
+#define hweight8(x) generic_hweight8(x)
+#endif
+/**
+ * __ffs - find first bit in word.
+ * @word: The word to search
+ *
+ * Undefined if no bit exists, so code should check against 0 first.
+ */
+static __inline__ int __ffs(unsigned long word)
+{
+       int num = 0;
+
+       if ((word & 0xffff) == 0) {
+               num += 16;
+               word >>= 16;
+       }
+       if ((word & 0xff) == 0) {
+               num += 8;
+               word >>= 8;
+       }
+       if ((word & 0xf) == 0) {
+               num += 4;
+               word >>= 4;
+       }
+       if ((word & 0x3) == 0) {
+               num += 2;
+               word >>= 2;
+       }
+       if ((word & 0x1) == 0)
+               num += 1;
+       return num;
+}
+
+// /*
+//  * Every architecture must define this function. It's the fastest
+//  * way of searching a 140-bit bitmap where the first 100 bits are
+//  * unlikely to be set. It's guaranteed that at least one of the 140
+//  * bits is cleared.
+//  */
+// static __inline__ int sched_find_first_bit(unsigned long *b)
+// {
+
+//     if (unlikely(b[0]))
+//             return __ffs(b[0]);
+//     if (unlikely(b[1]))
+//             return __ffs(b[1]) + 32;
+//     if (unlikely(b[2]))
+//             return __ffs(b[2]) + 64;
+//     if (b[3])
+//             return __ffs(b[3]) + 96;
+//     return __ffs(b[4]) + 128;
+// }
+
+/**
+ *  * find_next_bit - find the next set bit in a memory region
+ *  * @addr: The address to base the search on
+ *  * @offset: The bitnumber to start searching at
+ *  * @size: The maximum size to search
+ *  */
+static __inline__ unsigned long find_next_bit(const unsigned long *addr,
+                                                     unsigned long size, unsigned long offset)
+{
+       unsigned int *p = ((unsigned int *) addr) + (offset >> 5);
+       unsigned int result = offset & ~31UL;
+       unsigned int tmp;
+       
+       if (offset >= size)
+         return size;
+       size -= result;
+       offset &= 31UL;
+       if (offset) {
+               tmp = *p++;
+               tmp &= ~0UL << offset;
+               if (size < 32)
+                 goto found_first;
+               if (tmp)
+                 goto found_middle;
+               size -= 32;
+               result += 32;
+       }
+       while (size >= 32) {
+               if ((tmp = *p++) != 0)
+                 goto found_middle;
+               result += 32;
+               size -= 32;
+       }
+       if (!size)
+         return result;
+       tmp = *p;
+       
+       found_first:
+       tmp &= ~0UL >> (32 - size);
+       if (tmp == 0UL)        /* Are any bits set? */
+         return result + size; /* Nope. */
+       found_middle:
+       return result + __ffs(tmp);
+}
+
+
+/* find_next_zero_bit() finds the first zero bit in a bit string of length
+ * 'size' bits, starting the search at bit 'offset'. This is largely based
+ * on Linus's ALPHA routines, which are pretty portable BTW.
+ */
+
+static __inline__ unsigned long find_next_zero_bit(const unsigned long *addr,
+                                                  unsigned long size, 
+                                                  unsigned long offset)
+{
+       unsigned long *p = ((unsigned long *) addr) + (offset >> 5);
+       unsigned long result = offset & ~31UL;
+       unsigned long tmp;
+
+       if (offset >= size)
+               return size;
+       size -= result;
+       offset &= 31UL;
+       if (offset) {
+               tmp = *(p++);
+               tmp |= ~0UL >> (32-offset);
+               if (size < 32)
+                       goto found_first;
+               if (~tmp)
+                       goto found_middle;
+               size -= 32;
+               result += 32;
+       }
+       while (size & ~31UL) {
+               if (~(tmp = *(p++)))
+                       goto found_middle;
+               result += 32;
+               size -= 32;
+       }
+       if (!size)
+               return result;
+       tmp = *p;
+
+found_first:
+       tmp |= ~0UL >> size;
+found_middle:
+       return result + ffz(tmp);
+}
+
+/**
+ * find_first_bit - find the first set bit in a memory region
+ * @addr: The address to start the search at
+ * @size: The maximum size to search
+ *
+ * Returns the bit-number of the first set bit, not the number of the byte
+ * containing a bit.
+ */
+#define find_first_bit(addr, size) \
+        find_next_bit((addr), (size), 0)
+               
+
+/* Linus sez that gcc can optimize the following correctly, we'll see if this
+ * holds on the Sparc as it does for the ALPHA.
+ */
+
+#define find_first_zero_bit(addr, size) \
+        find_next_zero_bit((addr), (size), 0)
+
+/* Now for the ext2 filesystem bit operations and helper routines. */
+
+static __inline__ int ext2_set_bit(int nr,void * addr)
+{
+       int             mask, retval;
+  unsigned long flags;
+       unsigned char   *ADDR = (unsigned char *) addr;
+
+       ADDR += nr >> 3;
+       mask = 1 << (nr & 0x07);
+       local_irq_save(flags);
+       retval = (mask & *ADDR) != 0;
+       *ADDR |= mask;
+       local_irq_restore(flags);
+       return retval;
+}
+
+static __inline__ int ext2_clear_bit(int nr, void * addr)
+{
+       int             mask, retval;
+  unsigned long flags;
+       unsigned char   *ADDR = (unsigned char *) addr;
+
+       ADDR += nr >> 3;
+       mask = 1 << (nr & 0x07);
+       local_irq_save(flags);
+       retval = (mask & *ADDR) != 0;
+       *ADDR &= ~mask;
+       local_irq_restore(flags);
+       return retval;
+}
+
+static __inline__ int ext2_test_bit(int nr, const void * addr)
+{
+       int                     mask;
+       const unsigned char     *ADDR = (const unsigned char *) addr;
+
+       ADDR += nr >> 3;
+       mask = 1 << (nr & 0x07);
+       return ((mask & *ADDR) != 0);
+}
+
+#define ext2_find_first_zero_bit(addr, size) \
+        ext2_find_next_zero_bit((addr), (size), 0)
+
+static __inline__ unsigned long ext2_find_next_zero_bit(void *addr, unsigned long size, unsigned long offset)
+{
+       unsigned long *p = ((unsigned long *) addr) + (offset >> 5);
+       unsigned long result = offset & ~31UL;
+       unsigned long tmp;
+
+       if (offset >= size)
+               return size;
+       size -= result;
+       offset &= 31UL;
+       if(offset) {
+               tmp = *(p++);
+               tmp |= ~0UL << (32-offset);
+               if(size < 32)
+                       goto found_first;
+               if(~tmp)
+                       goto found_middle;
+               size -= 32;
+               result += 32;
+       }
+       while(size & ~31UL) {
+               if(~(tmp = *(p++)))
+                       goto found_middle;
+               result += 32;
+               size -= 32;
+       }
+       if(!size)
+               return result;
+       tmp = *p;
+
+found_first:
+       tmp |= ~0UL << size;
+found_middle:
+       tmp = ((tmp>>24) | ((tmp>>8)&0xff00) | ((tmp<<8)&0xff0000) | (tmp<<24));
+       return result + ffz(tmp);
+}
+
+#define __ext2_set_bit ext2_set_bit
+#define __ext2_clear_bit ext2_clear_bit
+
+static __inline__ int __ext2_test_bit(int nr, __const__ void * addr)
+{
+       int                     mask;
+       __const__ unsigned char *ADDR = (__const__ unsigned char *) addr;
+
+       ADDR += nr >> 3;
+       mask = 1 << (nr & 0x07);
+       return ((mask & *ADDR) != 0);
+}
+
+#define __ext2_find_first_zero_bit(addr, size) \
+        __ext2_find_next_zero_bit((addr), (size), 0)
+
+static __inline__ unsigned long __ext2_find_next_zero_bit(void *addr, unsigned long size, unsigned long offset)
+{
+       unsigned long *p = ((unsigned long *) addr) + (offset >> 5);
+       unsigned long result = offset & ~31UL;
+       unsigned long tmp;
+
+       if (offset >= size)
+               return size;
+       size -= result;
+       offset &= 31UL;
+       if(offset) {
+               tmp = *(p++);
+               tmp |= __swab32(~0UL >> (32-offset));
+               if(size < 32)
+                       goto found_first;
+               if(~tmp)
+                       goto found_middle;
+               size -= 32;
+               result += 32;
+       }
+       while(size & ~31UL) {
+               if(~(tmp = *(p++)))
+                       goto found_middle;
+               result += 32;
+               size -= 32;
+       }
+       if(!size)
+               return result;
+       tmp = *p;
+
+found_first:
+       return result + ffz(__swab32(tmp) | (~0UL << size));
+found_middle:
+       return result + ffz(__swab32(tmp));
+}
+
+#define ext2_set_bit_atomic(lock, nr, addr)             \
+        ({                                              \
+                int ret;                                \
+                spin_lock(lock);                        \
+                ret = ext2_set_bit((nr), (unsigned long *)(addr)); \
+                spin_unlock(lock);                      \
+                ret;                                    \
+        })
+ 
+#define ext2_clear_bit_atomic(lock, nr, addr)           \
+        ({                                              \
+                int ret;                                \
+                spin_lock(lock);                        \
+                ret = ext2_clear_bit((nr), (unsigned long *)(addr)); \
+                spin_unlock(lock);                      \
+                ret;                                    \
+        })
+
+/*
+ * clear_bit() doesn't provide any barrier for the compiler.
+ */
+
+#define smp_mb__before_clear_bit()      barrier()
+#define smp_mb__after_clear_bit()       barrier()
+// #include <asm-generic/bitops/ffs.h>
+// #include <asm-generic/bitops/fls.h>
+// #include <asm-generic/bitops/hweight.h>
+// #include <asm-generic/bitops/fls64.h>
+#endif /* _OR32_BITOPS_H */
+#endif /* __KERNEL__ */
diff -Naur u-boot-2009.03_orig/include/asm-or1200/byteorder.h u-boot-2009.03/include/asm-or1200/byteorder.h
--- u-boot-2009.03_orig/include/asm-or1200/byteorder.h  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-or1200/byteorder.h       2008-07-02 09:36:01.937500000 -0700
@@ -0,0 +1,13 @@
+#ifndef _OR32_BYTEORDER_H
+#define _OR32_BYTEORDER_H
+
+#include <asm/types.h>
+
+#if defined(__GNUC__) && !defined(__STRICT_ANSI__) || defined(__KERNEL__)
+#  define __BYTEORDER_HAS_U64__
+#  define __SWAB_64_THRU_32__
+#endif
+
+#include <linux/byteorder/big_endian.h>
+
+#endif /* _OR32_BYTEORDER_H */
diff -Naur u-boot-2009.03_orig/include/asm-or1200/config.h u-boot-2009.03/include/asm-or1200/config.h
--- u-boot-2009.03_orig/include/asm-or1200/config.h     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-or1200/config.h  2009-03-25 15:52:40.248817600 -0700
@@ -0,0 +1,5 @@
+/*
+
+*/
+
+
diff -Naur u-boot-2009.03_orig/include/asm-or1200/global_data.h u-boot-2009.03/include/asm-or1200/global_data.h
--- u-boot-2009.03_orig/include/asm-or1200/global_data.h        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-or1200/global_data.h     2008-09-05 09:56:50.625000000 -0700
@@ -0,0 +1,58 @@
+/*
+ * (C) Copyright 2004 Atmark Techno, Inc.
+ *
+ * Yasushi SHOJI <yashi@atmark-techno.com>
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#ifndef        __ASM_GBL_DATA_H
+#define __ASM_GBL_DATA_H
+/*
+ * The following data structure is placed in some memory wich is
+ * available very early after boot (like DPRAM on MPC8xx/MPC82xx, or
+ * some locked parts of the data cache) to allow for a minimum set of
+ * global variables during system initialization (until we have set
+ * up the memory controller so that we can use RAM).
+ *
+ * Keep it *SMALL* and remember to set CFG_GBL_DATA_SIZE > sizeof(gd_t)
+ */
+
+typedef        struct  global_data {
+       bd_t            *bd;
+       unsigned long   flags;
+       unsigned long   baudrate;
+       unsigned long   have_console;   /* serial_init() was called */
+       unsigned long   reloc_off;      /* Relocation Offset */
+       unsigned long   env_addr;       /* Address  of Environment struct */
+       unsigned long   env_valid;      /* Checksum of Environment valid? */
+       unsigned long   fb_base;        /* base address of frame buffer */
+       void            **jt;           /* jump table */
+} gd_t;
+
+/*
+ * Global Data Flags
+ */
+#define        GD_FLG_RELOC    0x00001         /* Code was relocated to RAM            */
+#define        GD_FLG_DEVINIT  0x00002         /* Devices have been initialized        */
+#define        GD_FLG_SILENT   0x00004         /* Silent mode                          */
+
+#define DECLARE_GLOBAL_DATA_PTR     register volatile gd_t *gd asm ("r30")
+
+#endif /* __ASM_GBL_DATA_H */
diff -Naur u-boot-2009.03_orig/include/asm-or1200/io.h u-boot-2009.03/include/asm-or1200/io.h
--- u-boot-2009.03_orig/include/asm-or1200/io.h 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-or1200/io.h      2008-07-02 09:36:02.031250000 -0700
@@ -0,0 +1,90 @@
+#ifndef _OR32_IO_H
+#define _OR32_IO_H
+
+#include <asm/page.h>   /* for __va, __pa */
+
+
+/*
+ * Change virtual addresses to physical addresses and vv.
+ */
+
+static inline unsigned long virt_to_phys(volatile void * address)
+{
+       return __pa(address);
+}
+
+static inline void * phys_to_virt(unsigned long address)
+{
+       return __va(address);
+}
+
+extern void * __ioremap(unsigned long offset, unsigned long size, unsigned long flags);
+
+extern inline void * ioremap(unsigned long offset, unsigned long size)
+{
+       return __ioremap(offset, size, 0);
+}
+
+/* #define _PAGE_CI       0x002 */
+extern inline void * ioremap_nocache(unsigned long offset, unsigned long size)
+{
+       return __ioremap(offset, size, 0x002);
+}
+
+extern void iounmap(void *addr);
+
+#define page_to_phys(page)     ((page - mem_map) << PAGE_SHIFT)
+
+/*
+ * IO bus memory addresses are also 1:1 with the physical address
+ */
+#define virt_to_bus virt_to_phys
+#define bus_to_virt phys_to_virt
+
+/*
+ * readX/writeX() are used to access memory mapped devices. On some
+ * architectures the memory mapped IO stuff needs to be accessed
+ * differently. On the or32 architecture, we just read/write the
+ * memory location directly.
+ */
+#define readb(addr) (*(volatile unsigned char *) (addr))
+#define readw(addr) (*(volatile unsigned short *) (addr))
+#define readl(addr) (*(volatile unsigned int *) (addr))
+
+#define writeb(b,addr) ((*(volatile unsigned char *) (addr)) = (b))
+#define writew(b,addr) ((*(volatile unsigned short *) (addr)) = (b))
+#define writel(b,addr) ((*(volatile unsigned int *) (addr)) = (b))
+#define __raw_writel writel /*RGD*/
+
+#define memset_io(a,b,c)       memset((void *)(a),(b),(c))
+#define memcpy_fromio(a,b,c)   memcpy((a),(void *)(b),(c))
+#define memcpy_toio(a,b,c)     memcpy((void *)(a),(b),(c))
+
+/*
+ * Again, or32 does not require mem IO specific function.
+ */
+
+#define eth_io_copy_and_sum(a,b,c,d)   eth_copy_and_sum((a),(void *)(b),(c),(d))
+
+#define IO_BASE                        0x0
+#define IO_SPACE_LIMIT                 0xffffffff
+
+#define inb(port)              (*(volatile unsigned char *) (port+IO_BASE))
+#define outb(value,port)       ((*(volatile unsigned char *) (port+IO_BASE)) = (value))        
+
+#define inb_p(port)             inb((port))
+#define outb_p(val, port)       outb((val), (port))
+
+/*
+ * Convert a physical pointer to a virtual kernel pointer for /dev/mem
+ * access
+ */
+#define xlate_dev_mem_ptr(p)   __va(p)
+
+/*
+ * Convert a virtual cached pointer to an uncached pointer
+ */
+#define xlate_dev_kmem_ptr(p)  p
+
+
+#endif
diff -Naur u-boot-2009.03_orig/include/asm-or1200/page.h u-boot-2009.03/include/asm-or1200/page.h
--- u-boot-2009.03_orig/include/asm-or1200/page.h       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-or1200/page.h    2008-07-02 09:36:02.140625000 -0700
@@ -0,0 +1,107 @@
+#ifndef _OR32_PAGE_H
+#define _OR32_PAGE_H
+
+
+/* PAGE_SHIFT determines the page size */
+#define PAGE_SHIFT             13
+#define PAGE_SIZE              (1UL << PAGE_SHIFT)
+#define PAGE_MASK              (~(PAGE_SIZE-1))
+#define PAGE_ALIGN(addr)       (((addr)+PAGE_SIZE-1)&PAGE_MASK)
+
+#define PAGE_OFFSET            0xc0000000      
+#define KERNELBASE             PAGE_OFFSET
+
+#ifdef __KERNEL__
+
+#ifndef __ASSEMBLY__
+#define clear_page(page)        memset((void *)(page), 0, PAGE_SIZE)
+#define copy_page(to,from)      memcpy((void *)(to), (void *)(from), PAGE_SIZE)
+
+#define clear_user_page(page, vaddr, pg)    clear_page(page)
+#define copy_user_page(to, from, vaddr, pg) copy_page(to, from)
+
+#define STRICT_MM_TYPECHECKS
+#ifdef  STRICT_MM_TYPECHECKS
+/*
+ * These are used to make use of C type-checking..
+ */
+typedef struct { unsigned long pte; } pte_t;
+typedef struct { unsigned long pmd; } pmd_t;
+typedef struct { unsigned long pgd; } pgd_t;
+typedef struct { unsigned long pgprot; } pgprot_t;
+
+#define pte_val(x)     ((x).pte)
+#define pmd_val(x)     ((x).pmd)
+#define pgd_val(x)     ((x).pgd)
+#define pgprot_val(x)  ((x).pgprot)
+
+#define __pte(x)       ((pte_t) { (x) } )
+#define __pmd(x)       ((pmd_t) { (x) } )
+#define __pgd(x)       ((pgd_t) { (x) } )
+#define __pgprot(x)    ((pgprot_t) { (x) } )
+
+#else /* STRICT_MM_TYPECHECKS */
+/*
+ * .. while these make it easier on the compiler
+ */
+typedef unsigned long pte_t;
+typedef unsigned long pmd_t;
+typedef unsigned long pgd_t;
+typedef unsigned long pgprot_t;
+
+#define pte_val(x)     (x)
+#define pmd_val(x)     (x)
+#define pgd_val(x)     (x)
+#define pgprot_val(x)  (x)
+
+#define __pte(x)       (x)
+#define __pmd(x)       (x)
+#define __pgd(x)       (x)
+#define __pgprot(x)    (x)
+
+#endif /* STRICT_MM_TYPECHECKS */
+
+
+/* Pure 2^n version of get_order */
+static __inline__ int get_order(unsigned long size)
+{
+       int order;
+
+       size = (size-1) >> (PAGE_SHIFT-1);
+       order = -1;
+       do {
+               size >>= 1;
+               order++;
+       } while (size);
+       return order;
+}
+
+
+/* macros to convert between really physical and virtual addresses
+ */
+
+#define __pa(x)                 ((unsigned long)(x) - PAGE_OFFSET)
+#define __va(x)                 ((void *)((unsigned long)(x) + PAGE_OFFSET))
+
+#define pfn_to_page(pfn)       (mem_map + (pfn))
+#define page_to_pfn(page)      ((unsigned long)((page) - mem_map))
+
+#define virt_to_page(kaddr)    pfn_to_page(__pa(kaddr) >> PAGE_SHIFT)
+#define page_to_virt(page)     __va(page_to_pfn(page) << PAGE_SHIFT)
+
+#define pfn_valid(pfn)         ((pfn) < max_mapnr)
+#define virt_addr_valid(kaddr) pfn_valid(__pa(kaddr) >> PAGE_SHIFT)
+
+/* from linker script */
+
+extern unsigned long dram_start, dram_end;
+
+#endif /* __ASSEMBLY__ */
+
+#define VM_DATA_DEFAULT_FLAGS  (VM_READ | VM_WRITE | VM_EXEC | \
+                                VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)
+
+#endif /* __KERNEL__ */
+
+#endif /* _OR32_PAGE_H */
+
diff -Naur u-boot-2009.03_orig/include/asm-or1200/posix_types.h u-boot-2009.03/include/asm-or1200/posix_types.h
--- u-boot-2009.03_orig/include/asm-or1200/posix_types.h        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-or1200/posix_types.h     2008-08-26 18:22:31.441162400 -0700
@@ -0,0 +1,142 @@
+#ifndef _OR32_POSIX_TYPES_H
+#define _OR32_POSIX_TYPES_H
+
+/*
+ * This file is generally used by user-level software, so you need to
+ * be a little careful about namespace pollution etc.  Also, we cannot
+ * assume GCC is being used.
+ */
+
+typedef unsigned int __kernel_dev_t;
+
+typedef unsigned int    __kernel_ino_t;
+typedef unsigned int    __kernel_mode_t;
+typedef unsigned short  __kernel_nlink_t;
+typedef long            __kernel_off_t;
+typedef int             __kernel_pid_t;
+typedef unsigned int    __kernel_uid_t;
+typedef unsigned int    __kernel_gid_t;
+typedef unsigned int    __kernel_size_t;
+typedef int             __kernel_ssize_t;
+typedef long            __kernel_ptrdiff_t;
+typedef long            __kernel_time_t;
+typedef long            __kernel_suseconds_t;
+typedef long            __kernel_clock_t;
+typedef int             __kernel_timer_t;
+typedef int             __kernel_clockid_t;
+typedef int             __kernel_daddr_t;
+typedef char *          __kernel_caddr_t;
+typedef short           __kernel_ipc_pid_t;
+typedef unsigned short  __kernel_uid16_t;
+typedef unsigned short  __kernel_gid16_t;
+typedef unsigned int    __kernel_uid32_t;
+typedef unsigned int    __kernel_gid32_t;
+
+typedef unsigned int    __kernel_old_uid_t;
+typedef unsigned int    __kernel_old_gid_t;
+typedef unsigned short  __kernel_old_dev_t;
+
+/* i386, cris version
+typedef unsigned long  __kernel_ino_t;
+typedef unsigned short __kernel_mode_t;
+typedef unsigned short __kernel_nlink_t;
+typedef long           __kernel_off_t;
+typedef int            __kernel_pid_t;
+typedef unsigned short  __kernel_ipc_pid_t;
+typedef unsigned short __kernel_uid_t;
+typedef unsigned short __kernel_gid_t;
+typedef unsigned int   __kernel_size_t;
+typedef long           __kernel_ssize_t;
+typedef int            __kernel_ptrdiff_t;
+typedef long           __kernel_time_t;
+typedef long            __kernel_suseconds_t;
+typedef long           __kernel_clock_t;
+typedef int            __kernel_timer_t;
+typedef int            __kernel_clockid_t;
+typedef int            __kernel_daddr_t;
+typedef char *         __kernel_caddr_t;
+typedef unsigned short  __kernel_uid16_t;
+typedef unsigned short  __kernel_gid16_t;
+typedef unsigned int    __kernel_uid32_t;
+typedef unsigned int    __kernel_gid32_t;
+
+typedef unsigned short  __kernel_old_uid_t;
+typedef unsigned short  __kernel_old_gid_t;
+typedef unsigned short __kernel_old_dev_t;
+*/
+
+#ifdef __GNUC__
+typedef long long      __kernel_loff_t;
+#endif
+
+typedef struct {
+       int     val[2];
+} __kernel_fsid_t;
+
+#ifndef __GNUC__
+
+#define        __FD_SET(d, set)        ((set)->fds_bits[__FDELT(d)] |= __FDMASK(d))
+#define        __FD_CLR(d, set)        ((set)->fds_bits[__FDELT(d)] &= ~__FDMASK(d))
+#define        __FD_ISSET(d, set)      ((set)->fds_bits[__FDELT(d)] & __FDMASK(d))
+#define        __FD_ZERO(set)  \
+  ((void) memset ((__ptr_t) (set), 0, sizeof (__kernel_fd_set)))
+
+#else /* __GNUC__ */
+
+#if defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2) \
+    || (__GLIBC__ == 2 && __GLIBC_MINOR__ == 0)
+/* With GNU C, use inline functions instead so args are evaluated only once: */
+
+#undef __FD_SET
+static __inline__ void __FD_SET(unsigned long fd, __kernel_fd_set *fdsetp)
+{
+       unsigned long _tmp = fd / __NFDBITS;
+       unsigned long _rem = fd % __NFDBITS;
+       fdsetp->fds_bits[_tmp] |= (1UL<<_rem);
+}
+
+#undef __FD_CLR
+static __inline__ void __FD_CLR(unsigned long fd, __kernel_fd_set *fdsetp)
+{
+       unsigned long _tmp = fd / __NFDBITS;
+       unsigned long _rem = fd % __NFDBITS;
+       fdsetp->fds_bits[_tmp] &= ~(1UL<<_rem);
+}
+
+#undef __FD_ISSET
+static __inline__ int __FD_ISSET(unsigned long fd, __kernel_fd_set *p)
+{ 
+       unsigned long _tmp = fd / __NFDBITS;
+       unsigned long _rem = fd % __NFDBITS;
+       return (p->fds_bits[_tmp] & (1UL<<_rem)) != 0;
+}
+
+/*
+ * This will unroll the loop for the normal constant case (8 ints,
+ * for a 256-bit fd_set)
+ */
+#undef __FD_ZERO
+static __inline__ void __FD_ZERO(__kernel_fd_set *p)
+{
+       unsigned int *tmp = (unsigned int *)p->fds_bits;
+       int i;
+
+       if (__builtin_constant_p(__FDSET_LONGS)) {
+               switch (__FDSET_LONGS) {
+                       case 8:
+                               tmp[0] = 0; tmp[1] = 0; tmp[2] = 0; tmp[3] = 0;
+                               tmp[4] = 0; tmp[5] = 0; tmp[6] = 0; tmp[7] = 0;
+                               return;
+               }
+       }
+       i = __FDSET_LONGS;
+       while (i) {
+               i--;
+               *tmp = 0;
+               tmp++;
+       }
+}
+
+#endif /* defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2) */
+#endif /* __GNUC__ */
+#endif /* _OR32_POSIX_TYPES_H */
diff -Naur u-boot-2009.03_orig/include/asm-or1200/processor.h u-boot-2009.03/include/asm-or1200/processor.h
--- u-boot-2009.03_orig/include/asm-or1200/processor.h  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-or1200/processor.h       2008-07-02 09:36:02.187500000 -0700
@@ -0,0 +1,119 @@
+/*
+ * include/asm-or32/processor.h
+ *
+ * Based on:
+ * include/asm-cris/processor.h
+ * Copyright (C) 2000, 2001, 2002 Axis Communications AB
+ *
+ */
+
+#ifndef _OR32_PROCESSOR_H
+#define _OR32_PROCESSOR_H
+
+#include <asm/spr_defs.h>
+#include <asm/page.h>
+#include <asm/ptrace.h>
+
+/* Kernel and user SR register setting */
+#define KERNEL_SR (SPR_SR_DME | SPR_SR_IME | SPR_SR_ICE | SPR_SR_DCE | SPR_SR_SM)
+#define USER_SR   (SPR_SR_DME | SPR_SR_IME | SPR_SR_ICE | SPR_SR_DCE | SPR_SR_IEE | SPR_SR_TEE)
+/*
+ * Default implementation of macro that returns current
+ * instruction pointer ("program counter").
+ */
+#define current_text_addr() ({ __label__ _l; _l: &&_l;})
+
+/* or32has no problems with write protection */
+
+#define wp_works_ok 1
+
+/*
+ * User space process size. This is hardcoded into a few places,
+ * so don't change it unless you know what you are doing.
+ */
+
+#define TASK_SIZE       (0x80000000UL)
+
+/* This decides where the kernel will search for a free chunk of vm
+ * space during mmap's.
+ */
+#define TASK_UNMAPPED_BASE      (TASK_SIZE / 8 * 3)
+
+/* THREAD_SIZE is the size of the task_struct/kernel_stack combo.
+ * normally, the stack is found by doing something like p + THREAD_SIZE
+ * in or32, a page is 8192 bytes, which seems like a sane size
+ */
+
+#define THREAD_SIZE       PAGE_SIZE
+
+#ifndef __ASSEMBLY__
+
+struct task_struct;
+
+typedef struct {
+        unsigned long seg;
+} mm_segment_t;
+
+struct thread_struct {
+       unsigned long  usp;     /* user space pointer */
+       unsigned long  ksp;     /* kernel stack pointer */
+       struct pt_regs *regs;   /* pointer to saved register state */
+        mm_segment_t   fs;      /* for get_fs() validation */
+       signed long    last_syscall;
+};
+
+/*
+ * At user->kernel entry, the pt_regs struct is stacked on the top of the kernel-stack.
+ * This macro allows us to find those regs for a task.
+ * Notice that subsequent pt_regs stackings, like recursive interrupts occuring while
+ * we're in the kernel, won't affect this - only the first user->kernel transition
+ * registers are reached by this.
+ */
+#define user_regs(thread_info) (((struct pt_regs *)((unsigned long)(thread_info) + THREAD_SIZE)) - 1)
+
+/*
+ * Dito but for the currently running task
+ */
+
+#define current_regs() user_regs(current->thread_info)
+
+extern inline void prepare_to_copy(struct task_struct *tsk)
+{
+}
+
+#define INIT_SP         (sizeof(init_stack) + (unsigned long) &init_stack)
+
+#define INIT_THREAD  { \
+   0, INIT_SP, NULL, KERNEL_DS, 0 }
+
+
+#define KSTK_EIP(tsk)   ((tsk)->thread.regs? (tsk)->thread.regs->pc: 0)
+#define KSTK_ESP(tsk)   ((tsk)->thread.regs? (tsk)->thread.regs->sp: 0)
+
+
+extern int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags);
+
+void start_thread(struct pt_regs *regs, unsigned long nip, unsigned long sp);
+void release_thread(struct task_struct *);
+unsigned long get_wchan(struct task_struct *p);
+
+/*
+ * Free current thread data structures etc..
+ */
+ 
+extern inline void exit_thread(void)
+{
+         /* Nothing needs to be done.  */
+}
+
+/*
+ * Return saved PC of a blocked thread. For now, this is the "user" PC
+ */
+extern unsigned long thread_saved_pc(struct task_struct *t);
+
+#define init_stack      (init_thread_union.stack)
+
+#define cpu_relax()     do { } while (0)
+
+#endif /* __ASSEMBLY__ */
+#endif /* _OR32_PROCESSOR_H */
diff -Naur u-boot-2009.03_orig/include/asm-or1200/ptrace.h u-boot-2009.03/include/asm-or1200/ptrace.h
--- u-boot-2009.03_orig/include/asm-or1200/ptrace.h     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-or1200/ptrace.h  2008-07-02 09:36:02.187500000 -0700
@@ -0,0 +1,86 @@
+#ifndef _OR32_PTRACE_H
+#define _OR32_PTRACE_H
+
+#include <asm/spr_defs.h>
+/*
+ * This struct defines the way the registers are stored on the
+ * kernel stack during a system call or other kernel entry.
+ *
+ * this should only contain volatile regs
+ * since we can keep non-volatile in the thread_struct
+ * should set this up when only volatiles are saved
+ * by intr code.
+ *
+ * Since this is going on the stack, *CARE MUST BE TAKEN* to insure
+ * that the overall structure is a multiple of 16 bytes in length.
+ *
+ * Note that the offsets of the fields in this struct correspond with
+ * the values below.
+ */
+
+#ifndef __ASSEMBLY__
+
+struct pt_regs {
+       long  pc;
+       long  sr;
+       long  sp;
+       long  gprs[30];
+       long  orig_gpr3;  /* Used for restarting system calls */
+       long  result;     /* Result of a system call */
+       long  syscallno;  /* Syscall no. (used by strace) */
+};
+#endif /* __ASSEMBLY__ */
+
+#ifdef __KERNEL__
+#define STACK_FRAME_OVERHEAD  0  /* size of minimum stack frame */
+
+/* Size of stack frame allocated when calling signal handler. */
+#define __SIGNAL_FRAMESIZE  64
+
+#define instruction_pointer(regs) ((regs)->pc)
+#define user_mode(regs) (((regs)->sr & SPR_SR_SM) == 0)
+#define profile_pc(regs) instruction_pointer(regs)
+
+#endif /* __KERNEL__ */
+
+/*
+ * Offsets used by 'ptrace' system call interface.
+ */
+#define PC        0
+#define SR        4
+#define SP        8
+#define GPR2      12
+#define GPR3      16
+#define GPR4      20
+#define GPR5      24
+#define GPR6      28
+#define GPR7      32
+#define GPR8      36
+#define GPR9      40
+#define GPR10     44
+#define GPR11     48
+#define GPR12     52
+#define GPR13     56
+#define GPR14     60
+#define GPR15     64
+#define GPR16     68
+#define GPR17     72
+#define GPR18     76
+#define GPR19     80
+#define GPR20     84
+#define GPR21     88
+#define GPR22     92
+#define GPR23     96
+#define GPR24     100
+#define GPR25     104
+#define GPR26     108
+#define GPR27     112
+#define GPR28     116
+#define GPR29     120
+#define GPR30     124
+#define GPR31     128
+#define ORIG_GPR3 132
+#define RESULT    136
+#define SYSCALLNO 140
+
+#endif /* _OR32_PTRACE_H */
diff -Naur u-boot-2009.03_orig/include/asm-or1200/spr_defs.h u-boot-2009.03/include/asm-or1200/spr_defs.h
--- u-boot-2009.03_orig/include/asm-or1200/spr_defs.h   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-or1200/spr_defs.h        2008-07-02 09:36:02.296875000 -0700
@@ -0,0 +1,438 @@
+/* spr_defs.h -- Defines OR1K architecture specific special-purpose registers
+   Copyright (C) 1999 Damjan Lampret, lampret@opencores.org
+
+    For more information about OpenRISC processors, licensing and
+    design services you may contact Beyond Semiconductor at
+    sales@bsemi.com or visit website http://www.bsemi.com.
+   
+This file is part of OpenRISC 1000 Architectural Simulator.
+
+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., 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+/* This file is also used by microkernel test bench. Among
+others it is also used in assembly file(s). */
+
+/* Definition of special-purpose registers (SPRs) */
+
+#ifndef _SPR_DEFS_H
+#define _SPR_DEFS_H
+
+#define MAX_GRPS (32)
+#define MAX_SPRS_PER_GRP_BITS (11)
+#define MAX_SPRS_PER_GRP (1 << MAX_SPRS_PER_GRP_BITS)
+#define MAX_SPRS (0x10000)
+ 
+/* Base addresses for the groups */
+#define SPRGROUP_SYS    (0<< MAX_SPRS_PER_GRP_BITS)
+#define SPRGROUP_DMMU   (1<< MAX_SPRS_PER_GRP_BITS)
+#define SPRGROUP_IMMU   (2<< MAX_SPRS_PER_GRP_BITS)
+#define SPRGROUP_DC     (3<< MAX_SPRS_PER_GRP_BITS)
+#define SPRGROUP_IC     (4<< MAX_SPRS_PER_GRP_BITS)
+#define SPRGROUP_MAC    (5<< MAX_SPRS_PER_GRP_BITS)
+#define SPRGROUP_D      (6<< MAX_SPRS_PER_GRP_BITS)
+#define SPRGROUP_PC     (7<< MAX_SPRS_PER_GRP_BITS)
+#define SPRGROUP_PM     (8<< MAX_SPRS_PER_GRP_BITS)
+#define SPRGROUP_PIC    (9<< MAX_SPRS_PER_GRP_BITS)
+#define SPRGROUP_TT     (10<< MAX_SPRS_PER_GRP_BITS)
+
+/* System control and status group */
+#define SPR_VR          (SPRGROUP_SYS + 0)
+#define SPR_UPR         (SPRGROUP_SYS + 1)
+#define SPR_PC          (SPRGROUP_SYS + 16)  /* CZ 21/06/01 */
+#define SPR_SR          (SPRGROUP_SYS + 17)  /* CZ 21/06/01 */
+#define SPR_EPCR_BASE   (SPRGROUP_SYS + 32)  /* CZ 21/06/01 */
+#define SPR_EPCR_LAST   (SPRGROUP_SYS + 47)  /* CZ 21/06/01 */
+#define SPR_EEAR_BASE   (SPRGROUP_SYS + 48)
+#define SPR_EEAR_LAST   (SPRGROUP_SYS + 63)
+#define SPR_ESR_BASE    (SPRGROUP_SYS + 64)
+#define SPR_ESR_LAST    (SPRGROUP_SYS + 79)
+
+#if 0
+/* Data MMU group */
+#define SPR_DMMUCR      (SPRGROUP_DMMU + 0)
+#define SPR_DTLBMR_BASE(WAY)    (SPRGROUP_DMMU + 0x200 + (WAY) * 0x200)
+#define SPR_DTLBMR_LAST(WAY)    (SPRGROUP_DMMU + 0x2ff + (WAY) * 0x200)
+#define SPR_DTLBTR_BASE(WAY)    (SPRGROUP_DMMU + 0x300 + (WAY) * 0x200)
+#define SPR_DTLBTR_LAST(WAY)    (SPRGROUP_DMMU + 0x3ff + (WAY) * 0x200)
+
+/* Instruction MMU group */
+#define SPR_IMMUCR      (SPRGROUP_IMMU + 0)
+#define SPR_ITLBMR_BASE(WAY)    (SPRGROUP_IMMU + 0x200 + (WAY) * 0x200)
+#define SPR_ITLBMR_LAST(WAY)    (SPRGROUP_IMMU + 0x2ff + (WAY) * 0x200)
+#define SPR_ITLBTR_BASE(WAY)    (SPRGROUP_IMMU + 0x300 + (WAY) * 0x200)
+#define SPR_ITLBTR_LAST(WAY)    (SPRGROUP_IMMU + 0x3ff + (WAY) * 0x200)
+#else
+/* Data MMU group */
+#define SPR_DMMUCR      (SPRGROUP_DMMU + 0)
+#define SPR_DTLBMR_BASE(WAY)    (SPRGROUP_DMMU + 0x200 + (WAY) * 0x100)
+#define SPR_DTLBMR_LAST(WAY)    (SPRGROUP_DMMU + 0x27f + (WAY) * 0x100)
+#define SPR_DTLBTR_BASE(WAY)    (SPRGROUP_DMMU + 0x280 + (WAY) * 0x100)
+#define SPR_DTLBTR_LAST(WAY)    (SPRGROUP_DMMU + 0x2ff + (WAY) * 0x100)
+
+/* Instruction MMU group */
+#define SPR_IMMUCR      (SPRGROUP_IMMU + 0)
+#define SPR_ITLBMR_BASE(WAY)    (SPRGROUP_IMMU + 0x200 + (WAY) * 0x100)
+#define SPR_ITLBMR_LAST(WAY)    (SPRGROUP_IMMU + 0x27f + (WAY) * 0x100)
+#define SPR_ITLBTR_BASE(WAY)    (SPRGROUP_IMMU + 0x280 + (WAY) * 0x100)
+#define SPR_ITLBTR_LAST(WAY)    (SPRGROUP_IMMU + 0x2ff + (WAY) * 0x100)
+#endif
+
+/* Data cache group */
+#define SPR_DCCR        (SPRGROUP_DC + 0)
+#define SPR_DCBPR       (SPRGROUP_DC + 1)
+#define SPR_DCBFR       (SPRGROUP_DC + 2)
+#define SPR_DCBIR       (SPRGROUP_DC + 3)
+#define SPR_DCBWR       (SPRGROUP_DC + 4)
+#define SPR_DCBLR       (SPRGROUP_DC + 5)
+#define SPR_DCR_BASE(WAY)       (SPRGROUP_DC + 0x200 + (WAY) * 0x200)
+#define SPR_DCR_LAST(WAY)       (SPRGROUP_DC + 0x3ff + (WAY) * 0x200)
+
+/* Instruction cache group */
+#define SPR_ICCR        (SPRGROUP_IC + 0)
+#define SPR_ICBPR       (SPRGROUP_IC + 1)
+#define SPR_ICBIR       (SPRGROUP_IC + 2)
+#define SPR_ICBLR       (SPRGROUP_IC + 3)
+#define SPR_ICR_BASE(WAY)       (SPRGROUP_IC + 0x200 + (WAY) * 0x200)
+#define SPR_ICR_LAST(WAY)       (SPRGROUP_IC + 0x3ff + (WAY) * 0x200)
+
+/* MAC group */
+#define SPR_MACLO       (SPRGROUP_MAC + 1)
+#define SPR_MACHI       (SPRGROUP_MAC + 2)
+
+/* Debug group */
+#define SPR_DVR(N)      (SPRGROUP_D + (N))
+#define SPR_DCR(N)      (SPRGROUP_D + 8 + (N))
+#define SPR_DMR1        (SPRGROUP_D + 16)
+#define SPR_DMR2        (SPRGROUP_D + 17)
+#define SPR_DWCR0       (SPRGROUP_D + 18)
+#define SPR_DWCR1       (SPRGROUP_D + 19)
+#define SPR_DSR         (SPRGROUP_D + 20)
+#define SPR_DRR         (SPRGROUP_D + 21)
+#define SPR_DIR         (SPRGROUP_D + 22)
+
+/* Performance counters group */
+#define SPR_PCCR(N)     (SPRGROUP_PC + (N))
+#define SPR_PCMR(N)     (SPRGROUP_PC + 8 + (N))
+
+/* Power management group */
+#define SPR_PMR (SPRGROUP_PM + 0)
+
+/* PIC group */
+#define SPR_PICMR (SPRGROUP_PIC + 0)
+#define SPR_PICPR (SPRGROUP_PIC + 1)
+#define SPR_PICSR (SPRGROUP_PIC + 2)
+
+/* Tick Timer group */
+#define SPR_TTMR (SPRGROUP_TT + 0)
+#define SPR_TTCR (SPRGROUP_TT + 1)
+
+/*
+ * Bit definitions for the Version Register
+ *
+ */
+#define SPR_VR_VER      0xffff0000  /* Processor version */
+#define SPR_VR_REV      0x0000003f  /* Processor revision */
+
+/*
+ * Bit definitions for the Unit Present Register
+ *
+ */
+#define SPR_UPR_UP      0x00000001  /* UPR present */
+#define SPR_UPR_DCP     0x00000002  /* Data cache present */
+#define SPR_UPR_ICP     0x00000004  /* Instruction cache present */
+#define SPR_UPR_DMP     0x00000008  /* Data MMU present */
+#define SPR_UPR_IMP     0x00000010  /* Instruction MMU present */
+#define SPR_UPR_OB32P   0x00000020  /* ORBIS32 present */
+#define SPR_UPR_OB64P   0x00000040  /* ORBIS64 present */
+#define SPR_UPR_OF32P   0x00000080  /* ORFPX32 present */
+#define SPR_UPR_OF64P   0x00000100  /* ORFPX64 present */
+#define SPR_UPR_OV32P   0x00000200  /* ORVDX32 present */
+#define SPR_UPR_OV64P   0x00000400  /* ORVDX64 present */
+#define SPR_UPR_DUP     0x00000800  /* Debug unit present */
+#define SPR_UPR_PCUP    0x00001000  /* Performance counters unit present */
+#define SPR_UPR_PMP     0x00002000  /* Power management present */
+#define SPR_UPR_PICP    0x00004000  /* PIC present */
+#define SPR_UPR_TTP     0x00008000  /* Tick timer present */
+#define SPR_UPR_SRP     0x00010000  /* Shadow registers present */
+#define SPR_UPR_RES     0x00fe0000  /* ORVDX32 present */
+#define SPR_UPR_CUST    0xff000000  /* Custom units */
+
+/*
+ * Bit definitions for the Supervision Register
+ *
+ */
+#define SPR_SR_CID      0xf0000000  /* Context ID */
+#define SPR_SR_FO       0x00008000  /* Fixed one */
+#define SPR_SR_EPH      0x00004000  /* Exception Prefixi High */
+#define SPR_SR_DSX      0x00002000  /* Delay Slot Exception */
+#define SPR_SR_OVE      0x00001000  /* Overflow flag Exception */
+#define SPR_SR_OV       0x00000800  /* Overflow flag */
+#define SPR_SR_CY       0x00000400  /* Carry flag */
+#define SPR_SR_F        0x00000200  /* Condition Flag */
+#define SPR_SR_CE       0x00000100  /* CID Enable */
+#define SPR_SR_LEE      0x00000080  /* Little Endian Enable */
+#define SPR_SR_IME      0x00000040  /* Instruction MMU Enable */
+#define SPR_SR_DME      0x00000020  /* Data MMU Enable */
+#define SPR_SR_ICE      0x00000010  /* Instruction Cache Enable */
+#define SPR_SR_DCE      0x00000008  /* Data Cache Enable */
+#define SPR_SR_IEE      0x00000004  /* Interrupt Exception Enable */
+#define SPR_SR_TEE      0x00000002  /* Tick timer Exception Enable */
+#define SPR_SR_SM       0x00000001  /* Supervisor Mode */
+#define SPR_SR_FO_BIT    15
+#define SPR_SR_EPH_BIT   14
+#define SPR_SR_DSX_BIT   13
+#define SPR_SR_OVE_BIT   12
+#define SPR_SR_OV_BIT    11
+#define SPR_SR_CY_BIT    10
+#define SPR_SR_F_BIT     9
+#define SPR_SR_CE_BIT    8
+#define SPR_SR_LEE_BIT   7
+#define SPR_SR_IME_BIT   6
+#define SPR_SR_DME_BIT   5
+#define SPR_SR_ICE_BIT   4
+#define SPR_SR_DCE_BIT   3
+#define SPR_SR_IEE_BIT   2
+#define SPR_SR_TEE_BIT   1
+#define SPR_SR_SM_BIT    0
+
+
+/*
+ * Bit definitions for the Data MMU Control Register
+ *
+ */
+#define SPR_DMMUCR_P2S  0x0000003e  /* Level 2 Page Size */
+#define SPR_DMMUCR_P1S  0x000007c0  /* Level 1 Page Size */
+#define SPR_DMMUCR_VADDR_WIDTH  0x0000f800  /* Virtual ADDR Width */
+#define SPR_DMMUCR_PADDR_WIDTH  0x000f0000  /* Physical ADDR Width */
+
+/*
+ * Bit definitions for the Instruction MMU Control Register
+ *
+ */
+#define SPR_IMMUCR_P2S  0x0000003e  /* Level 2 Page Size */
+#define SPR_IMMUCR_P1S  0x000007c0  /* Level 1 Page Size */
+#define SPR_IMMUCR_VADDR_WIDTH  0x0000f800  /* Virtual ADDR Width */
+#define SPR_IMMUCR_PADDR_WIDTH  0x000f0000  /* Physical ADDR Width */
+
+/*
+ * Bit definitions for the Data TLB Match Register
+ *
+ */
+#define SPR_DTLBMR_V    0x00000001  /* Valid */
+#define SPR_DTLBMR_PL1  0x00000002  /* Page Level 1 (if 0 then PL2) */
+#define SPR_DTLBMR_CID  0x0000003c  /* Context ID */
+#define SPR_DTLBMR_LRU  0x000000c0  /* Least Recently Used */
+#define SPR_DTLBMR_VPN  0xfffff000  /* Virtual Page Number */
+
+/*
+ * Bit definitions for the Data TLB Translate Register
+ *
+ */
+#define SPR_DTLBTR_CC   0x00000001  /* Cache Coherency */
+#define SPR_DTLBTR_CI   0x00000002  /* Cache Inhibit */
+#define SPR_DTLBTR_WBC  0x00000004  /* Write-Back Cache */
+#define SPR_DTLBTR_WOM  0x00000008  /* Weakly-Ordered Memory */
+#define SPR_DTLBTR_A    0x00000010  /* Accessed */
+#define SPR_DTLBTR_D    0x00000020  /* Dirty */
+#define SPR_DTLBTR_URE  0x00000040  /* User Read Enable */
+#define SPR_DTLBTR_UWE  0x00000080  /* User Write Enable */
+#define SPR_DTLBTR_SRE  0x00000100  /* Supervisor Read Enable */
+#define SPR_DTLBTR_SWE  0x00000200  /* Supervisor Write Enable */
+#define SPR_DTLBTR_PPN  0xfffff000  /* Physical Page Number */
+#define DTLBTR_NO_LIMIT ( SPR_DTLBTR_URE |  \
+                          SPR_DTLBTR_UWE |  \
+                          SPR_DTLBTR_SRE |  \
+                          SPR_DTLBTR_SWE )
+
+/*
+ * Bit definitions for the Instruction TLB Match Register
+ *
+ */
+#define SPR_ITLBMR_V    0x00000001  /* Valid */
+#define SPR_ITLBMR_PL1  0x00000002  /* Page Level 1 (if 0 then PL2) */
+#define SPR_ITLBMR_CID  0x0000003c  /* Context ID */
+#define SPR_ITLBMR_LRU  0x000000c0  /* Least Recently Used */
+#define SPR_ITLBMR_VPN  0xfffff000  /* Virtual Page Number */
+
+/*
+ * Bit definitions for the Instruction TLB Translate Register
+ *
+ */
+#define SPR_ITLBTR_CC   0x00000001  /* Cache Coherency */
+#define SPR_ITLBTR_CI   0x00000002  /* Cache Inhibit */
+#define SPR_ITLBTR_WBC  0x00000004  /* Write-Back Cache */
+#define SPR_ITLBTR_WOM  0x00000008  /* Weakly-Ordered Memory */
+#define SPR_ITLBTR_A    0x00000010  /* Accessed */
+#define SPR_ITLBTR_D    0x00000020  /* Dirty */
+#define SPR_ITLBTR_SXE  0x00000040  /* User Read Enable */
+#define SPR_ITLBTR_UXE  0x00000080  /* User Write Enable */
+#define SPR_ITLBTR_PPN  0xfffff000  /* Physical Page Number */
+#define ITLBTR_NO_LIMIT (SPR_ITLBTR_SXE | SPR_ITLBTR_UXE)
+
+/*
+ * Bit definitions for Data Cache Control register
+ *
+ */
+#define SPR_DCCR_EW     0x000000ff  /* Enable ways */
+
+/*
+ * Bit definitions for Insn Cache Control register
+ *
+ */
+#define SPR_ICCR_EW     0x000000ff  /* Enable ways */
+
+/*
+ * Bit definitions for Debug Control registers
+ *
+ */
+#define SPR_DCR_DP      0x00000001  /* DVR/DCR present */
+#define SPR_DCR_CC      0x0000000e  /* Compare condition */
+#define SPR_DCR_SC      0x00000010  /* Signed compare */
+#define SPR_DCR_CT      0x000000e0  /* Compare to */
+
+/*
+ * Bit definitions for Debug Mode 1 register
+ *
+ */
+#define SPR_DMR1_CW0    0x00000003  /* Chain watchpoint 0 */
+#define SPR_DMR1_CW1    0x0000000c  /* Chain watchpoint 1 */
+#define SPR_DMR1_CW2    0x00000030  /* Chain watchpoint 2 */
+#define SPR_DMR1_CW3    0x000000c0  /* Chain watchpoint 3 */
+#define SPR_DMR1_CW4    0x00000300  /* Chain watchpoint 4 */
+#define SPR_DMR1_CW5    0x00000c00  /* Chain watchpoint 5 */
+#define SPR_DMR1_CW6    0x00003000  /* Chain watchpoint 6 */
+#define SPR_DMR1_CW7    0x0000c000  /* Chain watchpoint 7 */
+#define SPR_DMR1_CW8    0x00030000  /* Chain watchpoint 8 */
+#define SPR_DMR1_CW9    0x000c0000  /* Chain watchpoint 9 */
+#define SPR_DMR1_CW10   0x00300000  /* Chain watchpoint 10 */
+#define SPR_DMR1_ST     0x00400000  /* Single-step trace*/
+#define SPR_DMR1_BT     0x00800000  /* Branch trace */
+#define SPR_DMR1_DXFW   0x01000000  /* Disable external force watchpoint */
+
+/*
+ * Bit definitions for Debug Mode 2 register
+ *
+ */
+#define SPR_DMR2_WCE0   0x00000001  /* Watchpoint counter 0 enable */
+#define SPR_DMR2_WCE1   0x00000002  /* Watchpoint counter 0 enable */
+#define SPR_DMR2_AWTC   0x00001ffc  /* Assign watchpoints to counters */
+#define SPR_DMR2_WGB    0x00ffe000  /* Watchpoints generating breakpoint */
+
+/*
+ * Bit definitions for Debug watchpoint counter registers
+ *
+ */
+#define SPR_DWCR_COUNT  0x0000ffff  /* Count */
+#define SPR_DWCR_MATCH  0xffff0000  /* Match */
+
+/*
+ * Bit definitions for Debug stop register
+ *
+ */
+#define SPR_DSR_RSTE    0x00000001  /* Reset exception */
+#define SPR_DSR_BUSEE   0x00000002  /* Bus error exception */
+#define SPR_DSR_DPFE    0x00000004  /* Data Page Fault exception */
+#define SPR_DSR_IPFE    0x00000008  /* Insn Page Fault exception */
+#define SPR_DSR_LPINTE  0x00000010  /* Low priority interrupt exception */
+#define SPR_DSR_AE      0x00000020  /* Alignment exception */
+#define SPR_DSR_IIE     0x00000040  /* Illegal Instruction exception */
+#define SPR_DSR_HPINTE  0x00000080  /* High priority interrupt exception */
+#define SPR_DSR_DME     0x00000100  /* DTLB miss exception */
+#define SPR_DSR_IME     0x00000200  /* ITLB miss exception */
+#define SPR_DSR_RE      0x00000400  /* Range exception */
+#define SPR_DSR_SCE     0x00000800  /* System call exception */
+#define SPR_DSR_BE      0x00001000  /* Breakpoint exception */
+
+/*
+ * Bit definitions for Debug reason register
+ *
+ */
+#define SPR_DRR_RSTE    0x00000001  /* Reset exception */
+#define SPR_DRR_BUSEE   0x00000002  /* Bus error exception */
+#define SPR_DRR_DPFE    0x00000004  /* Data Page Fault exception */
+#define SPR_DRR_IPFE    0x00000008  /* Insn Page Fault exception */
+#define SPR_DRR_LPINTE  0x00000010  /* Low priority interrupt exception */
+#define SPR_DRR_AE      0x00000020  /* Alignment exception */
+#define SPR_DRR_IIE     0x00000040  /* Illegal Instruction exception */
+#define SPR_DRR_HPINTE  0x00000080  /* High priority interrupt exception */
+#define SPR_DRR_DME     0x00000100  /* DTLB miss exception */
+#define SPR_DRR_IME     0x00000200  /* ITLB miss exception */
+#define SPR_DRR_RE      0x00000400  /* Range exception */
+#define SPR_DRR_SCE     0x00000800  /* System call exception */
+#define SPR_DRR_BE      0x00001000  /* Breakpoint exception */
+
+/*
+ * Bit definitions for Performance counters mode registers
+ *
+ */
+#define SPR_PCMR_CP     0x00000001  /* Counter present */
+#define SPR_PCMR_UMRA   0x00000002  /* User mode read access */
+#define SPR_PCMR_CISM   0x00000004  /* Count in supervisor mode */
+#define SPR_PCMR_CIUM   0x00000008  /* Count in user mode */
+#define SPR_PCMR_LA     0x00000010  /* Load access event */
+#define SPR_PCMR_SA     0x00000020  /* Store access event */
+#define SPR_PCMR_IF     0x00000040  /* Instruction fetch event*/
+#define SPR_PCMR_DCM    0x00000080  /* Data cache miss event */
+#define SPR_PCMR_ICM    0x00000100  /* Insn cache miss event */
+#define SPR_PCMR_IFS    0x00000200  /* Insn fetch stall event */
+#define SPR_PCMR_LSUS   0x00000400  /* LSU stall event */
+#define SPR_PCMR_BS     0x00000800  /* Branch stall event */
+#define SPR_PCMR_DTLBM  0x00001000  /* DTLB miss event */
+#define SPR_PCMR_ITLBM  0x00002000  /* ITLB miss event */
+#define SPR_PCMR_DDS    0x00004000  /* Data dependency stall event */
+#define SPR_PCMR_WPE    0x03ff8000  /* Watchpoint events */
+
+/* 
+ * Bit definitions for the Power management register
+ *
+ */
+#define SPR_PMR_SDF     0x00000001  /* Slow down factor */
+#define SPR_PMR_DME     0x00000002  /* Doze mode enable */
+#define SPR_PMR_SME     0x00000004  /* Sleep mode enable */
+#define SPR_PMR_DCGE    0x00000008  /* Dynamic clock gating enable */
+#define SPR_PMR_SUME    0x00000010  /* Suspend mode enable */
+
+/*
+ * Bit definitions for PICMR
+ *
+ */
+#define SPR_PICMR_IUM   0xfffffffc  /* Interrupt unmask */
+
+/*
+ * Bit definitions for PICPR
+ *
+ */
+#define SPR_PICPR_IPRIO 0xfffffffc  /* Interrupt priority */
+
+/*
+ * Bit definitions for PICSR
+ *
+ */
+#define SPR_PICSR_IS    0xffffffff  /* Interrupt status */
+
+/*
+ * Bit definitions for Tick Timer Control Register
+ *
+ */
+#define SPR_TTCR_PERIOD 0x0fffffff  /* Time Period */
+#define SPR_TTMR_PERIOD SPR_TTCR_PERIOD
+#define SPR_TTMR_IP 0x10000000  /* Interrupt Pending */
+#define SPR_TTMR_IE 0x20000000  /* Interrupt Enable */
+#define SPR_TTMR_RT 0x40000000  /* Restart tick */
+#define SPR_TTMR_SR     0x80000000  /* Single run */
+#define SPR_TTMR_CR     0xc0000000  /* Continuous run */
+#define SPR_TTMR_M      0xc0000000  /* Tick mode */
+
+#endif
diff -Naur u-boot-2009.03_orig/include/asm-or1200/string.h u-boot-2009.03/include/asm-or1200/string.h
--- u-boot-2009.03_orig/include/asm-or1200/string.h     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-or1200/string.h  2008-07-02 09:36:02.312500000 -0700
@@ -0,0 +1,18 @@
+#ifndef _OR32_STRING_H
+#define _OR32_STRING_H
+
+
+/* __PHX_TODO__: these are optimizations, will do later */
+#if 0
+
+#define __HAVE_ARCH_MEMCPY
+extern void *memcpy(void *, const void *, size_t);
+
+/* New and improved.  In arch/cris/lib/memset.c */
+
+#define __HAVE_ARCH_MEMSET
+extern void *memset(void *, int, size_t);
+
+#endif
+
+#endif
diff -Naur u-boot-2009.03_orig/include/asm-or1200/system.h u-boot-2009.03/include/asm-or1200/system.h
--- u-boot-2009.03_orig/include/asm-or1200/system.h     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-or1200/system.h  2008-07-02 09:36:02.312500000 -0700
@@ -0,0 +1,124 @@
+/*
+ * Based on:
+ * include/asm-ppc/system.h
+ * Copyright (C) 1999 Cort Dougan <cort@cs.nmt.edu>
+ */
+#ifndef __OR32_SYSTEM_H
+#define __OR32_SYSTEM_H
+
+#include <asm/processor.h>
+
+/* Memory bariers */
+#define barrier() __asm__ __volatile__("": : :"memory")
+#define mb() barrier()
+#define rmb() mb()
+#define wmb() mb()
+#define read_barrier_depends() do { } while(0)
+#define set_mb(var, value)  do { var = value; mb(); } while (0)
+#define set_wmb(var, value) do { var = value; wmb(); } while (0)
+
+#ifdef CONFIG_SMP
+#define smp_mb()        mb()
+#define smp_rmb()       rmb()
+#define smp_wmb()       wmb()
+#define smp_read_barrier_depends()     read_barrier_depends()
+#else
+#define smp_mb()        barrier()
+#define smp_rmb()       barrier()
+#define smp_wmb()       barrier()
+#define smp_read_barrier_depends()     do { } while(0)
+#endif
+
+#define nop() __asm__ __volatile__ ("l.nop"::)
+
+#ifdef __KERNEL__
+
+struct task_struct;
+extern unsigned int rtas_data;
+struct pt_regs;
+
+extern void show_regs(struct pt_regs * regs);
+
+extern void __save_flags(unsigned long *flags);
+extern void __restore_flags(unsigned long flags);
+extern void __save_and_cli(unsigned long *flags);
+extern void __sti(void);
+extern void __cli(void);
+
+
+#define local_irq_disable()            __cli()
+#define local_irq_enable()             __sti()
+#define local_irq_save(flags)          __save_and_cli(&(flags))
+#define local_irq_restore(flags)       __restore_flags(flags)
+#define local_save_flags(flags)         __save_flags(&(flags))
+
+#define prepare_to_switch()    do { } while(0)
+#define switch_to(prev,next,last) _switch_to((prev),(next),&(last))
+
+extern void _switch_to(struct task_struct *, struct task_struct *,
+                      struct task_struct **);
+
+struct __xchg_dummy { unsigned long a[100]; };
+#define __xg(x) ((volatile struct __xchg_dummy *)(x))
+#define xchg(ptr,x) ((__typeof__(*(ptr)))__xchg((unsigned long)(x),(ptr),sizeof(*(ptr))))
+#define tas(ptr) (xchg((ptr),1))
+
+static inline unsigned long __xchg(unsigned long x, volatile void * ptr, int size)
+{
+  unsigned long tmp, flags;
+
+  local_irq_save(flags);
+
+  switch (size) {
+  case 1:
+    __asm__ __volatile__
+    ("l.lbz %0,%2\n\t"
+     "l.sb %2,%1"
+    : "=&r" (tmp) : "r" (x), "m" (*__xg(ptr)) : "memory");
+    break;
+  case 2:
+    __asm__ __volatile__
+    ("l.lhz %0,%2\n\t"
+     "l.sh %2,%1"
+    : "=&r" (tmp) : "r" (x), "m" (*__xg(ptr)) : "memory");
+    break;
+  case 4:
+    __asm__ __volatile__
+    ("l.lwz %0,%2\n\t"
+     "l.sw %2,%1"
+    : "=&r" (tmp) : "r" (x), "m" (*__xg(ptr)) : "memory");
+    break;
+  }
+
+  local_irq_restore(flags);
+  return tmp;
+}
+
+extern inline void * xchg_ptr(void * m, void * val)
+{
+       return (void *) __xchg((unsigned long)m, val, sizeof(unsigned long));
+}
+
+static inline void mtspr(unsigned long add, unsigned long val)
+{
+       __asm__ __volatile__ ("l.mtspr %0,%1,0" :: "r" (add), "r" (val));
+}
+
+static inline unsigned long mfspr(unsigned long add)
+{
+       unsigned long ret;
+       __asm__ __volatile__ ("l.mfspr %0,%1,0" : "=r" (ret) : "r" (add));
+       return ret;
+}
+
+#define irqs_disabled() ((mfspr(SPR_SR) & (SPR_SR_IEE | SPR_SR_TEE)) == 0)
+
+#define arch_align_stack(x) (x)
+
+/*
+ * debugging aid
+ */
+extern void __print(const char *fmt, ...);
+
+#endif /* __KERNEL__ */
+#endif /* __OR32_SYSTEM_H */
diff -Naur u-boot-2009.03_orig/include/asm-or1200/types.h u-boot-2009.03/include/asm-or1200/types.h
--- u-boot-2009.03_orig/include/asm-or1200/types.h      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-or1200/types.h   2008-08-26 18:29:36.849449500 -0700
@@ -0,0 +1,62 @@
+#ifndef _ETRAX_TYPES_H
+#define _ETRAX_TYPES_H
+
+#ifndef __ASSEMBLY__
+
+typedef unsigned short umode_t;
+
+/*
+ * __xx is ok: it doesn't pollute the POSIX namespace. Use these in the
+ * header files exported to user space
+ */
+/*typedef unsigned atomic_long_t;RGD I don't get this now using generic*/
+typedef __signed__ char __s8;
+typedef unsigned char __u8;
+
+typedef __signed__ short __s16;
+typedef unsigned short __u16;
+
+typedef __signed__ int __s32;
+typedef unsigned int __u32;
+
+#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+typedef __signed__ long long __s64;
+typedef unsigned long long __u64;
+#endif
+
+#endif /* __ASSEMBLY__ */
+
+/*
+ * These aren't exported outside the kernel to avoid name space clashes
+ */
+#ifdef __KERNEL__
+
+#define BITS_PER_LONG 32
+
+#ifndef __ASSEMBLY__
+
+typedef signed char s8;
+typedef unsigned char u8;
+
+typedef signed short s16;
+typedef unsigned short u16;
+
+typedef signed int s32;
+typedef unsigned int u32;
+
+typedef signed long long s64;
+typedef unsigned long long u64;
+
+/* Dma addresses are 32-bits wide, just like our other addresses.  */
+ 
+typedef u32 dma_addr_t;
+typedef u32 dma64_addr_t;
+
+typedef unsigned long phys_addr_t;
+typedef unsigned long phys_size_t;
+
+#endif /* __ASSEMBLY__ */
+
+#endif /* __KERNEL__ */
+
+#endif
diff -Naur u-boot-2009.03_orig/include/asm-or1200/u-boot.h u-boot-2009.03/include/asm-or1200/u-boot.h
--- u-boot-2009.03_orig/include/asm-or1200/u-boot.h     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-or1200/u-boot.h  2008-09-05 09:57:00.265625000 -0700
@@ -0,0 +1,53 @@
+/*
+ * (C) Copyright 2004 Atmark Techno, Inc.
+ *
+ * Yasushi SHOJI <yashi@atmark-techno.com>
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ ********************************************************************
+ * NOTE: This header file defines an interface to U-Boot. Including
+ * this (unmodified) header file in another file is considered normal
+ * use of U-Boot, and does *not* fall under the heading of "derived
+ * work".
+ ********************************************************************
+ */
+
+#ifndef _U_BOOT_H_
+#define _U_BOOT_H_
+
+typedef struct bd_info {
+       unsigned long   bi_boot_params; /* start of DRAM memory */
+       unsigned long   bi_memstart;    /* start of DRAM memory */
+       unsigned long   bi_memsize;     /* size  of DRAM memory in bytes */
+       unsigned long   bi_flashstart;  /* start of FLASH memory */
+       unsigned long   bi_flashsize;   /* size  of FLASH memory */
+       unsigned long   bi_flashoffset; /* reserved area for startup monitor */
+       unsigned long   bi_sramstart;   /* start of SRAM memory */
+       unsigned long   bi_sramsize;    /* size  of SRAM memory */
+       unsigned long   bi_ip_addr;     /* IP Address */
+       unsigned char   bi_enetaddr[6]; /* Ethernet adress */
+       unsigned long   bi_baudrate;    /* Console Baudrate */
+       unsigned long   post_code;      
+} bd_t;
+
+
+#endif /* _U_BOOT_H_ */
+
+
diff -Naur u-boot-2009.03_orig/include/asm-ppc/CVS/Entries u-boot-2009.03/include/asm-ppc/CVS/Entries
--- u-boot-2009.03_orig/include/asm-ppc/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-ppc/CVS/Entries  2009-03-25 15:58:10.637328100 -0700
@@ -0,0 +1,57 @@
+/4xx_pci.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/4xx_pcie.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/5xx_immap.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/8xx_immap.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/atomic.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bitops.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/byteorder.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cache.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpm_8260.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpm_85xx.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/e300.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/errno.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fsl_ddr_dimm_params.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fsl_ddr_sdram.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fsl_i2c.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fsl_law.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fsl_lbc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fsl_serdes.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/global_data.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/gpio.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/immap_512x.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/immap_8220.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/immap_8260.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/immap_83xx.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/immap_85xx.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/immap_86xx.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/immap_fsl_pci.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/immap_qe.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupt.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/io.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/iopin_8260.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/iopin_85xx.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/iopin_8xx.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/m8260_pci.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mc146818rtc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mmu.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc8349_pci.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc8xxx_spi.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci_io.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pnp.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/posix_types.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ppc4xx-ebc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ppc4xx-isram.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ppc4xx-sdram.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ppc4xx-uic.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/processor.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ptrace.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/residual.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sigcontext.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/signal.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/status_led.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/string.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/types.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xilinx_irq.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-ppc/CVS/Entries.Extra u-boot-2009.03/include/asm-ppc/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/asm-ppc/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-ppc/CVS/Entries.Extra    2009-03-25 15:58:10.637328100 -0700
@@ -0,0 +1,56 @@
+/4xx_pci.h///1238019740/
+/4xx_pcie.h///1238019740/
+/5xx_immap.h///1238019740/
+/8xx_immap.h///1238019740/
+/atomic.h///1238019740/
+/bitops.h///1238019740/
+/byteorder.h///1238019740/
+/cache.h///1238019740/
+/config.h///1238019740/
+/cpm_8260.h///1238019740/
+/cpm_85xx.h///1238019740/
+/e300.h///1238019740/
+/errno.h///1238019740/
+/fsl_ddr_dimm_params.h///1238019740/
+/fsl_ddr_sdram.h///1238019740/
+/fsl_i2c.h///1238019740/
+/fsl_law.h///1238019740/
+/fsl_lbc.h///1238019740/
+/fsl_serdes.h///1238019740/
+/global_data.h///1238019740/
+/gpio.h///1238019740/
+/immap_512x.h///1238019740/
+/immap_8220.h///1238019740/
+/immap_8260.h///1238019740/
+/immap_83xx.h///1238019740/
+/immap_85xx.h///1238019740/
+/immap_86xx.h///1238019740/
+/immap_fsl_pci.h///1238019740/
+/immap_qe.h///1238019740/
+/interrupt.h///1238019740/
+/io.h///1238019740/
+/iopin_8260.h///1238019740/
+/iopin_85xx.h///1238019740/
+/iopin_8xx.h///1238019740/
+/m8260_pci.h///1238019740/
+/mc146818rtc.h///1238019740/
+/mmu.h///1238019740/
+/mpc8349_pci.h///1238019740/
+/mpc8xxx_spi.h///1238019740/
+/pci_io.h///1238019740/
+/pnp.h///1238019740/
+/posix_types.h///1238019740/
+/ppc4xx-ebc.h///1238019740/
+/ppc4xx-isram.h///1238019740/
+/ppc4xx-sdram.h///1238019740/
+/ppc4xx-uic.h///1238019740/
+/processor.h///1238019740/
+/ptrace.h///1238019740/
+/residual.h///1238019741/
+/sigcontext.h///1238019741/
+/signal.h///1238019741/
+/status_led.h///1238019741/
+/string.h///1238019741/
+/types.h///1238019741/
+/u-boot.h///1238019741/
+/xilinx_irq.h///1238019741/
diff -Naur u-boot-2009.03_orig/include/asm-ppc/CVS/Entries.Extra.Old u-boot-2009.03/include/asm-ppc/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/asm-ppc/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-ppc/CVS/Entries.Extra.Old        2009-03-25 15:25:47.000000000 -0700
@@ -0,0 +1,56 @@
+/4xx_pci.h///1238019740/
+/4xx_pcie.h///1238019740/
+/5xx_immap.h///1238019740/
+/8xx_immap.h///1238019740/
+/atomic.h///1238019740/
+/bitops.h///1238019740/
+/byteorder.h///1238019740/
+/cache.h///1238019740/
+/config.h///1238019740/
+/cpm_8260.h///1238019740/
+/cpm_85xx.h///1238019740/
+/e300.h///1238019740/
+/errno.h///1238019740/
+/fsl_ddr_dimm_params.h///1238019740/
+/fsl_ddr_sdram.h///1238019740/
+/fsl_i2c.h///1238019740/
+/fsl_law.h///1238019740/
+/fsl_lbc.h///1238019740/
+/fsl_serdes.h///1238019740/
+/global_data.h///1238019740/
+/gpio.h///1238019740/
+/immap_512x.h///1238019740/
+/immap_8220.h///1238019740/
+/immap_8260.h///1238019740/
+/immap_83xx.h///1238019740/
+/immap_85xx.h///1238019740/
+/immap_86xx.h///1238019740/
+/immap_fsl_pci.h///1238019740/
+/immap_qe.h///1238019740/
+/interrupt.h///1238019740/
+/io.h///1238019740/
+/iopin_8260.h///1238019740/
+/iopin_85xx.h///1238019740/
+/iopin_8xx.h///1238019740/
+/m8260_pci.h///1238019740/
+/mc146818rtc.h///1238019740/
+/mmu.h///1238019740/
+/mpc8349_pci.h///1238019740/
+/mpc8xxx_spi.h///1238019740/
+/pci_io.h///1238019740/
+/pnp.h///1238019740/
+/posix_types.h///1238019740/
+/ppc4xx-ebc.h///1238019740/
+/ppc4xx-isram.h///1238019740/
+/ppc4xx-sdram.h///1238019740/
+/ppc4xx-uic.h///1238019740/
+/processor.h///1238019740/
+/ptrace.h///1238019740/
+/residual.h///1238019741/
+/sigcontext.h///1238019741/
+/signal.h///1238019741/
+/status_led.h///1238019741/
+/string.h///1238019741/
+/types.h///1238019741/
+/u-boot.h///1238019741/
+/xilinx_irq.h///1238019741/
diff -Naur u-boot-2009.03_orig/include/asm-ppc/CVS/Entries.Old u-boot-2009.03/include/asm-ppc/CVS/Entries.Old
--- u-boot-2009.03_orig/include/asm-ppc/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-ppc/CVS/Entries.Old      2009-03-25 15:25:47.000000000 -0700
@@ -0,0 +1,57 @@
+/4xx_pci.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/4xx_pcie.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/5xx_immap.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/8xx_immap.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/atomic.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/bitops.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/byteorder.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/cache.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/config.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/cpm_8260.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/cpm_85xx.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/e300.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/errno.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/fsl_ddr_dimm_params.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/fsl_ddr_sdram.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/fsl_i2c.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/fsl_law.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/fsl_lbc.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/fsl_serdes.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/global_data.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/gpio.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/immap_512x.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/immap_8220.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/immap_8260.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/immap_83xx.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/immap_85xx.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/immap_86xx.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/immap_fsl_pci.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/immap_qe.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/interrupt.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/io.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/iopin_8260.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/iopin_85xx.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/iopin_8xx.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/m8260_pci.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/mc146818rtc.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/mmu.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/mpc8349_pci.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/mpc8xxx_spi.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/pci_io.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/pnp.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/posix_types.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/ppc4xx-ebc.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/ppc4xx-isram.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/ppc4xx-sdram.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/ppc4xx-uic.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/processor.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/ptrace.h/1.1.1.1/Wed Mar 25 22:22:20 2009//
+/residual.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/sigcontext.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/signal.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/status_led.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/string.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/types.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/u-boot.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/xilinx_irq.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-ppc/CVS/Repository u-boot-2009.03/include/asm-ppc/CVS/Repository
--- u-boot-2009.03_orig/include/asm-ppc/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-ppc/CVS/Repository       2009-03-25 15:25:47.212266100 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/asm-ppc
diff -Naur u-boot-2009.03_orig/include/asm-ppc/CVS/Root u-boot-2009.03/include/asm-ppc/CVS/Root
--- u-boot-2009.03_orig/include/asm-ppc/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-ppc/CVS/Root     2009-03-25 15:25:47.212266100 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/asm-sh/CVS/Entries u-boot-2009.03/include/asm-sh/CVS/Entries
--- u-boot-2009.03_orig/include/asm-sh/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-sh/CVS/Entries   2009-03-25 15:58:10.809202000 -0700
@@ -0,0 +1,30 @@
+/bitops.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/byteorder.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cache.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu_sh2.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu_sh3.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu_sh4.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu_sh7203.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu_sh7710.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu_sh7720.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu_sh7722.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu_sh7723.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu_sh7750.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu_sh7763.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu_sh7780.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu_sh7785.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/errno.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/global_data.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/io.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/irqflags.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/macro.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/posix_types.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/processor.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ptrace.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/string.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/system.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/types.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-sh/CVS/Entries.Extra u-boot-2009.03/include/asm-sh/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/asm-sh/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-sh/CVS/Entries.Extra     2009-03-25 15:58:10.809202000 -0700
@@ -0,0 +1,29 @@
+/bitops.h///1238019741/
+/byteorder.h///1238019741/
+/cache.h///1238019741/
+/config.h///1238019741/
+/cpu_sh2.h///1238019741/
+/cpu_sh3.h///1238019741/
+/cpu_sh4.h///1238019741/
+/cpu_sh7203.h///1238019741/
+/cpu_sh7710.h///1238019741/
+/cpu_sh7720.h///1238019741/
+/cpu_sh7722.h///1238019741/
+/cpu_sh7723.h///1238019741/
+/cpu_sh7750.h///1238019741/
+/cpu_sh7763.h///1238019741/
+/cpu_sh7780.h///1238019741/
+/cpu_sh7785.h///1238019741/
+/errno.h///1238019741/
+/global_data.h///1238019741/
+/io.h///1238019741/
+/irqflags.h///1238019741/
+/macro.h///1238019741/
+/pci.h///1238019741/
+/posix_types.h///1238019741/
+/processor.h///1238019741/
+/ptrace.h///1238019741/
+/string.h///1238019741/
+/system.h///1238019741/
+/types.h///1238019741/
+/u-boot.h///1238019741/
diff -Naur u-boot-2009.03_orig/include/asm-sh/CVS/Entries.Extra.Old u-boot-2009.03/include/asm-sh/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/asm-sh/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-sh/CVS/Entries.Extra.Old 2009-03-25 15:25:48.000000000 -0700
@@ -0,0 +1,29 @@
+/bitops.h///1238019741/
+/byteorder.h///1238019741/
+/cache.h///1238019741/
+/config.h///1238019741/
+/cpu_sh2.h///1238019741/
+/cpu_sh3.h///1238019741/
+/cpu_sh4.h///1238019741/
+/cpu_sh7203.h///1238019741/
+/cpu_sh7710.h///1238019741/
+/cpu_sh7720.h///1238019741/
+/cpu_sh7722.h///1238019741/
+/cpu_sh7723.h///1238019741/
+/cpu_sh7750.h///1238019741/
+/cpu_sh7763.h///1238019741/
+/cpu_sh7780.h///1238019741/
+/cpu_sh7785.h///1238019741/
+/errno.h///1238019741/
+/global_data.h///1238019741/
+/io.h///1238019741/
+/irqflags.h///1238019741/
+/macro.h///1238019741/
+/pci.h///1238019741/
+/posix_types.h///1238019741/
+/processor.h///1238019741/
+/ptrace.h///1238019741/
+/string.h///1238019741/
+/system.h///1238019741/
+/types.h///1238019741/
+/u-boot.h///1238019741/
diff -Naur u-boot-2009.03_orig/include/asm-sh/CVS/Entries.Old u-boot-2009.03/include/asm-sh/CVS/Entries.Old
--- u-boot-2009.03_orig/include/asm-sh/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-sh/CVS/Entries.Old       2009-03-25 15:25:48.000000000 -0700
@@ -0,0 +1,30 @@
+/bitops.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/byteorder.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/cache.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/config.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/cpu_sh2.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/cpu_sh3.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/cpu_sh4.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/cpu_sh7203.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/cpu_sh7710.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/cpu_sh7720.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/cpu_sh7722.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/cpu_sh7723.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/cpu_sh7750.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/cpu_sh7763.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/cpu_sh7780.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/cpu_sh7785.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/errno.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/global_data.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/io.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/irqflags.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/macro.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/pci.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/posix_types.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/processor.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/ptrace.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/string.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/system.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/types.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/u-boot.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-sh/CVS/Repository u-boot-2009.03/include/asm-sh/CVS/Repository
--- u-boot-2009.03_orig/include/asm-sh/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-sh/CVS/Repository        2009-03-25 15:25:48.196634800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/asm-sh
diff -Naur u-boot-2009.03_orig/include/asm-sh/CVS/Root u-boot-2009.03/include/asm-sh/CVS/Root
--- u-boot-2009.03_orig/include/asm-sh/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-sh/CVS/Root      2009-03-25 15:25:48.181009900 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/asm-sparc/CVS/Entries u-boot-2009.03/include/asm-sparc/CVS/Entries
--- u-boot-2009.03_orig/include/asm-sparc/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-sparc/CVS/Entries        2009-03-25 15:58:11.215449400 -0700
@@ -0,0 +1,29 @@
+D/arch-leon2////
+D/arch-leon3////
+/asi.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/asmmacro.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/atomic.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bitops.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/byteorder.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cache.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/errno.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/global_data.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/io.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/irq.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/leon.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/leon2.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/leon3.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/machines.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/page.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/posix_types.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/processor.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/prom.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/psr.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ptrace.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/srmmu.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/stack.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/string.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/types.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/winmacro.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
diff -Naur u-boot-2009.03_orig/include/asm-sparc/CVS/Entries.Extra u-boot-2009.03/include/asm-sparc/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/asm-sparc/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-sparc/CVS/Entries.Extra  2009-03-25 15:58:11.215449400 -0700
@@ -0,0 +1,29 @@
+D/arch-leon2////
+D/arch-leon3////
+/asi.h///1238019741/
+/asmmacro.h///1238019741/
+/atomic.h///1238019741/
+/bitops.h///1238019741/
+/byteorder.h///1238019741/
+/cache.h///1238019741/
+/config.h///1238019741/
+/errno.h///1238019741/
+/global_data.h///1238019741/
+/io.h///1238019741/
+/irq.h///1238019741/
+/leon.h///1238019741/
+/leon2.h///1238019741/
+/leon3.h///1238019741/
+/machines.h///1238019741/
+/page.h///1238019741/
+/posix_types.h///1238019741/
+/processor.h///1238019741/
+/prom.h///1238019741/
+/psr.h///1238019741/
+/ptrace.h///1238019741/
+/srmmu.h///1238019741/
+/stack.h///1238019741/
+/string.h///1238019741/
+/types.h///1238019741/
+/u-boot.h///1238019741/
+/winmacro.h///1238019741/
diff -Naur u-boot-2009.03_orig/include/asm-sparc/CVS/Entries.Extra.Old u-boot-2009.03/include/asm-sparc/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/asm-sparc/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-sparc/CVS/Entries.Extra.Old      2009-03-25 15:25:49.000000000 -0700
@@ -0,0 +1,29 @@
+/asi.h///1238019741/
+/asmmacro.h///1238019741/
+/atomic.h///1238019741/
+/bitops.h///1238019741/
+/byteorder.h///1238019741/
+/cache.h///1238019741/
+/config.h///1238019741/
+/errno.h///1238019741/
+/global_data.h///1238019741/
+/io.h///1238019741/
+/irq.h///1238019741/
+/leon.h///1238019741/
+/leon2.h///1238019741/
+/leon3.h///1238019741/
+/machines.h///1238019741/
+/page.h///1238019741/
+/posix_types.h///1238019741/
+/processor.h///1238019741/
+/prom.h///1238019741/
+/psr.h///1238019741/
+/ptrace.h///1238019741/
+/srmmu.h///1238019741/
+/stack.h///1238019741/
+/string.h///1238019741/
+/types.h///1238019741/
+/u-boot.h///1238019741/
+/winmacro.h///1238019741/
+D/arch-leon2////
+D/arch-leon3////
diff -Naur u-boot-2009.03_orig/include/asm-sparc/CVS/Entries.Old u-boot-2009.03/include/asm-sparc/CVS/Entries.Old
--- u-boot-2009.03_orig/include/asm-sparc/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-sparc/CVS/Entries.Old    2009-03-25 15:25:49.000000000 -0700
@@ -0,0 +1,29 @@
+/asi.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/asmmacro.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/atomic.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/bitops.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/byteorder.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/cache.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/config.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/errno.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/global_data.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/io.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/irq.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/leon.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/leon2.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/leon3.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/machines.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/page.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/posix_types.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/processor.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/prom.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/psr.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/ptrace.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/srmmu.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/stack.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/string.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/types.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/u-boot.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+/winmacro.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+D/arch-leon2////
+D/arch-leon3////
diff -Naur u-boot-2009.03_orig/include/asm-sparc/CVS/Repository u-boot-2009.03/include/asm-sparc/CVS/Repository
--- u-boot-2009.03_orig/include/asm-sparc/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-sparc/CVS/Repository     2009-03-25 15:25:48.618507100 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/asm-sparc
diff -Naur u-boot-2009.03_orig/include/asm-sparc/CVS/Root u-boot-2009.03/include/asm-sparc/CVS/Root
--- u-boot-2009.03_orig/include/asm-sparc/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-sparc/CVS/Root   2009-03-25 15:25:48.618507100 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/asm-sparc/arch-leon2/CVS/Entries u-boot-2009.03/include/asm-sparc/arch-leon2/CVS/Entries
--- u-boot-2009.03_orig/include/asm-sparc/arch-leon2/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-sparc/arch-leon2/CVS/Entries     2009-03-25 15:58:10.981075900 -0700
@@ -0,0 +1,2 @@
+/asi.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-sparc/arch-leon2/CVS/Entries.Extra u-boot-2009.03/include/asm-sparc/arch-leon2/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/asm-sparc/arch-leon2/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-sparc/arch-leon2/CVS/Entries.Extra       2009-03-25 15:58:10.981075900 -0700
@@ -0,0 +1 @@
+/asi.h///1238019741/
diff -Naur u-boot-2009.03_orig/include/asm-sparc/arch-leon2/CVS/Entries.Extra.Old u-boot-2009.03/include/asm-sparc/arch-leon2/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/asm-sparc/arch-leon2/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-sparc/arch-leon2/CVS/Entries.Extra.Old   2009-03-25 15:25:49.000000000 -0700
@@ -0,0 +1 @@
+/asi.h///1238019741/
diff -Naur u-boot-2009.03_orig/include/asm-sparc/arch-leon2/CVS/Entries.Old u-boot-2009.03/include/asm-sparc/arch-leon2/CVS/Entries.Old
--- u-boot-2009.03_orig/include/asm-sparc/arch-leon2/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-sparc/arch-leon2/CVS/Entries.Old 2009-03-25 15:25:49.000000000 -0700
@@ -0,0 +1,2 @@
+/asi.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-sparc/arch-leon2/CVS/Repository u-boot-2009.03/include/asm-sparc/arch-leon2/CVS/Repository
--- u-boot-2009.03_orig/include/asm-sparc/arch-leon2/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-sparc/arch-leon2/CVS/Repository  2009-03-25 15:25:48.977879800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/asm-sparc/arch-leon2
diff -Naur u-boot-2009.03_orig/include/asm-sparc/arch-leon2/CVS/Root u-boot-2009.03/include/asm-sparc/arch-leon2/CVS/Root
--- u-boot-2009.03_orig/include/asm-sparc/arch-leon2/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-sparc/arch-leon2/CVS/Root        2009-03-25 15:25:48.977879800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/asm-sparc/arch-leon3/CVS/Entries u-boot-2009.03/include/asm-sparc/arch-leon3/CVS/Entries
--- u-boot-2009.03_orig/include/asm-sparc/arch-leon3/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-sparc/arch-leon3/CVS/Entries     2009-03-25 15:58:11.027950600 -0700
@@ -0,0 +1,2 @@
+/asi.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-sparc/arch-leon3/CVS/Entries.Extra u-boot-2009.03/include/asm-sparc/arch-leon3/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/asm-sparc/arch-leon3/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-sparc/arch-leon3/CVS/Entries.Extra       2009-03-25 15:58:11.027950600 -0700
@@ -0,0 +1 @@
+/asi.h///1238019741/
diff -Naur u-boot-2009.03_orig/include/asm-sparc/arch-leon3/CVS/Entries.Extra.Old u-boot-2009.03/include/asm-sparc/arch-leon3/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/asm-sparc/arch-leon3/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-sparc/arch-leon3/CVS/Entries.Extra.Old   2009-03-25 15:25:49.000000000 -0700
@@ -0,0 +1 @@
+/asi.h///1238019741/
diff -Naur u-boot-2009.03_orig/include/asm-sparc/arch-leon3/CVS/Entries.Old u-boot-2009.03/include/asm-sparc/arch-leon3/CVS/Entries.Old
--- u-boot-2009.03_orig/include/asm-sparc/arch-leon3/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-sparc/arch-leon3/CVS/Entries.Old 2009-03-25 15:25:49.000000000 -0700
@@ -0,0 +1,2 @@
+/asi.h/1.1.1.1/Wed Mar 25 22:22:21 2009//
+D
diff -Naur u-boot-2009.03_orig/include/asm-sparc/arch-leon3/CVS/Repository u-boot-2009.03/include/asm-sparc/arch-leon3/CVS/Repository
--- u-boot-2009.03_orig/include/asm-sparc/arch-leon3/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-sparc/arch-leon3/CVS/Repository  2009-03-25 15:25:49.056004300 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/asm-sparc/arch-leon3
diff -Naur u-boot-2009.03_orig/include/asm-sparc/arch-leon3/CVS/Root u-boot-2009.03/include/asm-sparc/arch-leon3/CVS/Root
--- u-boot-2009.03_orig/include/asm-sparc/arch-leon3/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/asm-sparc/arch-leon3/CVS/Root        2009-03-25 15:25:49.056004300 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/bedbug/CVS/Entries u-boot-2009.03/include/bedbug/CVS/Entries
--- u-boot-2009.03_orig/include/bedbug/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/bedbug/CVS/Entries   2009-03-31 15:00:04.748838400 -0700
@@ -0,0 +1,6 @@
+/type.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bedbug.h/1.1.1.1/Tue Mar 31 22:00:04 2009//T1.1.1.1
+/ppc.h/1.1.1.1/Tue Mar 31 22:00:04 2009//T1.1.1.1
+/regs.h/1.1.1.1/Tue Mar 31 22:00:04 2009//T1.1.1.1
+/tables.h/1.1.1.1/Tue Mar 31 22:00:04 2009//T1.1.1.1
+D
diff -Naur u-boot-2009.03_orig/include/bedbug/CVS/Entries.Extra u-boot-2009.03/include/bedbug/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/bedbug/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/bedbug/CVS/Entries.Extra     2009-03-31 15:00:04.748838400 -0700
@@ -0,0 +1,5 @@
+/type.h///1238019741/
+/bedbug.h///1238019741/
+/ppc.h///1238019741/
+/regs.h///1238019741/
+/tables.h///1238019741/
diff -Naur u-boot-2009.03_orig/include/bedbug/CVS/Entries.Extra.Old u-boot-2009.03/include/bedbug/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/bedbug/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/bedbug/CVS/Entries.Extra.Old 2009-03-25 17:51:51.000000000 -0700
@@ -0,0 +1,5 @@
+/type.h///1238019741/
+/bedbug.h///1238028711/
+/ppc.h///1238028711/
+/regs.h///1238028711/
+/tables.h///1238028711/
diff -Naur u-boot-2009.03_orig/include/bedbug/CVS/Entries.Old u-boot-2009.03/include/bedbug/CVS/Entries.Old
--- u-boot-2009.03_orig/include/bedbug/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/bedbug/CVS/Entries.Old       2009-03-25 17:51:51.000000000 -0700
@@ -0,0 +1,6 @@
+/type.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bedbug.h/1.2/Thu Mar 26 00:51:51 2009//
+/ppc.h/1.2/Thu Mar 26 00:51:51 2009//
+/regs.h/1.2/Thu Mar 26 00:51:51 2009//
+/tables.h/1.2/Thu Mar 26 00:51:51 2009//
+D
diff -Naur u-boot-2009.03_orig/include/bedbug/CVS/Repository u-boot-2009.03/include/bedbug/CVS/Repository
--- u-boot-2009.03_orig/include/bedbug/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/bedbug/CVS/Repository        2009-03-25 15:25:49.196628400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/bedbug
diff -Naur u-boot-2009.03_orig/include/bedbug/CVS/Root u-boot-2009.03/include/bedbug/CVS/Root
--- u-boot-2009.03_orig/include/bedbug/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/bedbug/CVS/Root      2009-03-25 15:25:49.181003500 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/bedbug/bedbug.h u-boot-2009.03/include/bedbug/bedbug.h
--- u-boot-2009.03_orig/include/bedbug/bedbug.h 2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/include/bedbug/bedbug.h      2009-03-31 15:00:04.498841600 -0700
@@ -1,42 +1,42 @@
-/* $Id$ */
-
-#ifndef _BEDBUG_H
-#define _BEDBUG_H
-
-#ifndef NULL
-#define NULL   0
-#endif
-
-#define _USE_PROTOTYPES
-
-#ifndef isblank
-#define isblank(c) isspace((int)(c))
-#endif
-
-#ifndef __P
-#if defined(_USE_PROTOTYPES) && (defined(__STDC__) || defined(__cplusplus))
-#define __P(protos)    protos          /* full-blown ANSI C */
-#else
-#define __P(protos)    ()              /* traditional C preprocessor */
-#endif
-#endif
-
-#define assert( condition ) if( (condition) ) _exit(0)
-
-#endif /* _BEDBUG_H */
-
-
-/*
- * Copyright (c) 2001 William L. Pitts
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are freely
- * permitted provided that the above copyright notice and this
- * paragraph and the following disclaimer are duplicated in all
- * such forms.
- *
- * This software is provided "AS IS" and without any express or
- * implied warranties, including, without limitation, the implied
- * warranties of merchantability and fitness for a particular
- * purpose.
- */
+/* $Id: bedbug.h,v 1.1.1.1 2009/03/25 22:22:21 kenagy Exp $ */
+
+#ifndef _BEDBUG_H
+#define _BEDBUG_H
+
+#ifndef NULL
+#define NULL   0
+#endif
+
+#define _USE_PROTOTYPES
+
+#ifndef isblank
+#define isblank(c) isspace((int)(c))
+#endif
+
+#ifndef __P
+#if defined(_USE_PROTOTYPES) && (defined(__STDC__) || defined(__cplusplus))
+#define __P(protos)    protos          /* full-blown ANSI C */
+#else
+#define __P(protos)    ()              /* traditional C preprocessor */
+#endif
+#endif
+
+#define assert( condition ) if( (condition) ) _exit(0)
+
+#endif /* _BEDBUG_H */
+
+
+/*
+ * Copyright (c) 2001 William L. Pitts
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms are freely
+ * permitted provided that the above copyright notice and this
+ * paragraph and the following disclaimer are duplicated in all
+ * such forms.
+ *
+ * This software is provided "AS IS" and without any express or
+ * implied warranties, including, without limitation, the implied
+ * warranties of merchantability and fitness for a particular
+ * purpose.
+ */
diff -Naur u-boot-2009.03_orig/include/bedbug/ppc.h u-boot-2009.03/include/bedbug/ppc.h
--- u-boot-2009.03_orig/include/bedbug/ppc.h    2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/include/bedbug/ppc.h 2009-03-31 15:00:04.655089600 -0700
@@ -1,413 +1,413 @@
-/* $Id$ */
-
-#ifndef _PPC_H
-#define _PPC_H
-
-/*======================================================================
- *
- *  OPERANDS
- *
- *======================================================================*/
-
-enum OP_FIELD {
-  O_AA = 1, O_BD, O_BI, O_BO, O_crbD, O_crbA, O_crbB, O_CRM, O_d, O_frC, O_frD,
-  O_frS, O_IMM, O_LI, O_LK, O_MB, O_ME, O_NB, O_OE, O_rA, O_rB, O_Rc, O_rD,
-  O_rS, O_SH, O_SIMM, O_SR, O_TO, O_UIMM, O_crfD, O_crfS, O_L, O_spr, O_tbr,
-  O_cr2 };
-
-struct operand {
-  enum OP_FIELD        field;          /* The operand identifier from the
-                                  enum above */
-
-  char *       name;           /* Symbolic name of this operand */
-
-  unsigned int bits;           /* The number of bits used by this
-                                  operand */
-
-  unsigned int shift;          /* How far to the right the operand
-                                  should be shifted so that it is
-                                  aligned at the beginning of the
-                                  word */
-
-  unsigned int hint;           /* A bitwise-inclusive-OR of the
-                                  values shown below.  These are used
-                                  tell the disassembler how to print
-                                  this operand */
-};
-
-/* Values for operand hint */
-#define OH_SILENT      0x01    /* dont print this operand */
-#define OH_ADDR                0x02    /* this operand is an address */
-#define OH_REG         0x04    /* this operand is a register */
-#define OH_SPR         0x08    /* this operand is an SPR */
-#define OH_TBR         0x10    /* this operand is a TBR */
-#define OH_OFFSET      0x20    /* this operand is an offset */
-#define OH_LITERAL      0x40    /* a literal string */
-
-
-/*======================================================================
- *
- *  OPCODES
- *
- *======================================================================*/
-
-/* From the MPCxxx instruction set documentation, all instructions are
- * 32 bits long and word aligned.  Bits 0-5 always specify the primary
- * opcode.  Many instructions also have an extended opcode.
- */
-
-#define GET_OPCD(i) (((unsigned long)(i) >> 26) & 0x3f)
-#define MAKE_OPCODE(i) ((((unsigned long)(i)) & 0x3f) << 26)
-
-/* The MPC860 User's Manual, Appendix D.4 contains the definitions of the
- * instruction forms
- */
-
-
-/*-------------------------------------------------
- *              I-Form Instructions:
- * bX
- *-------------------------------------------------
- * OPCD |           LI                       |AA|LK
- *-------------------------------------------------*/
-
-#define I_OPCODE(i,aa,lk) (MAKE_OPCODE(i) | (((aa) & 0x1) << 1) | ((lk) & 0x1))
-#define I_MASK I_OPCODE(0x3f,0x1,0x1)
-
-
-/*-------------------------------------------------
- *              B-Form Instructions:
- * bcX
- *-------------------------------------------------
- * OPCD |    BO   |  BI  |   BD              |AA|LK
- *-------------------------------------------------*/
-
-#define B_OPCODE(i,aa,lk) (MAKE_OPCODE(i) | (((aa) & 0x1) << 1) | ((lk) & 0x1))
-#define B_MASK B_OPCODE(0x3f,0x1,0x1)
-
-
-/*-------------------------------------------------
- *             SC-Form Instructions:
- * sc
- *-------------------------------------------------
- * OPCD | 00000 | 00000 | 00000000000000       |1|0
- *-------------------------------------------------*/
-
-#define SC_OPCODE(i) (MAKE_OPCODE(i) | 0x2)
-#define SC_MASK SC_OPCODE(0x3f)
-
-
-/*-------------------------------------------------
- *             D-Form Instructions:
- * addi addic addic. addis andi. andis. cmpi cmpli
- * lbz lbzu lha lhau lhz lhzu lmw lwz lwzu mulli
- * ori oris stb stbu sth sthu stmw stw stwu subfic
- * twi xori xoris
- *-------------------------------------------------
- * OPCD |   D    |   A   |            d
- * OPCD |   D    |   A   |           SIMM
- * OPCD |   S    |   A   |            d
- * OPCD |   S    |   A   |           UIMM
- * OPCD |crfD|0|L|   A   |           SIMM
- * OPCD |crfD|0|L|   A   |           UIMM
- * OPCD |   TO   |   A   |           SIMM
- *-------------------------------------------------*/
-
-#define D_OPCODE(i) MAKE_OPCODE(i)
-#define D_MASK MAKE_OPCODE(0x3f)
-
-
-/*-------------------------------------------------
- *            DS-Form Instructions:
- * (none supported by MPC860)
- *-------------------------------------------------
- * OPCD |   D    |   A   |          ds          |XO
- * OPCD |   S    |   A   |          ds          |XO
- *-------------------------------------------------*/
-
-#define DS_OPCODE(i,xo) (MAKE_OPCODE(i) | ((xo) & 0x3))
-#define DS_MASK DS_OPCODE(0x3f,0x1)
-
-
-/*---------------------------------------------------
- *            X-Form Instructions:
- * andX andcX cmp cmpl cntlzwX dcbf dcbi dcbst dcbt
- * dcbtst dcbz eciwx ecowx eieio eqvX extsbX extshX
- * icbi lbzux lbxz lhaux lhax lhbrx lhzux lhxz lswi
- * lswx lwarx lwbrx lwzux lwxz mcrfs mcrxr mfcr
- * mfmsr mfsr mfsrin mtmsr mtsr mtsrin nandX norX
- * orX orcX slwX srawX srawiX srwX stbux stbx
- * sthbrx sthuxsthx stswi stswx stwbrx stwcx. stwux
- * stwx sync tlbie tlbld tlbli tlbsync tw xorX
- *---------------------------------------------------
- * OPCD |   D    |    A   |    B   |      XO      |0
- * OPCD |   D    |    A   |   NB   |      XO      |0
- * OPCD |   D    |  00000 |    B   |      XO      |0
- * OPCD |   D    |  00000 |  00000 |      XO      |0
- * OPCD |   D    |0|  SR  |  00000 |      XO      |0
- * OPCD |   S    |    A   |    B   |      XO      |Rc
- * OPCD |   S    |    A   |    B   |      XO      |1
- * OPCD |   S    |    A   |    B   |      XO      |0
- * OPCD |   S    |    A   |   NB   |      XO      |0
- * OPCD |   S    |    A   |  00000 |      XO      |Rc
- * OPCD |   S    |  00000 |    B   |      XO      |0
- * OPCD |   S    |  00000 |  00000 |      XO      |0
- * OPCD |   S    |0|  SR  |  00000 |      XO      |0
- * OPCD |   S    |    A   |   SH   |      XO      |Rc
- * OPCD |crfD|0|L|    A   |   SH   |      XO      |0
- * OPCD |crfD |00|    A   |    B   |      XO      |0
- * OPCD |crfD |00|crfS |00|  00000 |      XO      |0
- * OPCD |crfD |00|  00000 |  00000 |      XO      |0
- * OPCD |crfD |00|  00000 | IMM  |0|      XO      |Rc
- * OPCD |   TO   |    A   |    B   |      XO      |0
- * OPCD |   D    |  00000 |    B   |      XO      |Rc
- * OPCD |   D    |  00000 |  00000 |      XO      |Rc
- * OPCD |  crbD  |  00000 |  00000 |      XO      |Rc
- * OPCD |  00000 |    A   |    B   |      XO      |0
- * OPCD |  00000 |  00000 |    B   |      XO      |0
- * OPCD |  00000 |  00000 |  00000 |      XO      |0
- *---------------------------------------------------*/
-
-#define X_OPCODE(i,xo,rc) (MAKE_OPCODE(i) | (((xo) & 0x3ff) << 1) | \
-                          ((rc) & 0x1))
-#define X_MASK X_OPCODE(0x3f,0x3ff,0x1)
-
-
-/*---------------------------------------------------
- *            XL-Form Instructions:
- * bcctrX bclrX crand crandc creqv crnand crnor cror
- * croc crxorisync mcrf rfi
- *---------------------------------------------------
- * OPCD |   BO   |  BI    |  00000 |      XO      |LK
- * OPCD |  crbD  | crbA   |  crbB  |      XO      |0
- * OPCD |crfD |00|crfS |00|  00000 |      XO      |0
- * OPCD |  00000 |  00000 |  00000 |      XO      |0
- *---------------------------------------------------*/
-
-#define XL_OPCODE(i,xo,lk) (MAKE_OPCODE(i) | (((xo) & 0x3ff) << 1) | \
-                           ((lk) & 0x1))
-#define XL_MASK XL_OPCODE(0x3f,0x3ff,0x1)
-
-
-/*---------------------------------------------------
- *            XFX-Form Instructions:
- * mfspr mftb mtcrf mtspr
- *---------------------------------------------------
- * OPCD |   D    |      spr        |      XO       |0
- * OPCD |   D    |0|    CRM      |0|      XO       |0
- * OPCD |   S    |      spr        |      XO       |0
- * OPCD |   D    |      tbr        |      XO       |0
- *---------------------------------------------------*/
-
-#define XFX_OPCODE(i,xo,rc) (MAKE_OPCODE(i) | (((xo) & 0x3ff) << 1) | \
-                            ((rc) & 0x1))
-#define XFX_MASK XFX_OPCODE(0x3f,0x3ff,0x1)
-
-
-/*---------------------------------------------------
- *            XFL-Form Instructions:
- * (none supported by MPC860)
- *---------------------------------------------------
- * OPCD |0|      FM     |0|   B    |      XO       |0
- *---------------------------------------------------*/
-
-#define XFL_OPCODE(i,xo,rc) (MAKE_OPCODE(i) | (((xo) & 0x3ff) << 1) | \
-                            ((rc) & 0x1))
-#define XFL_MASK XFL_OPCODE(0x3f,0x3ff,0x1)
-
-
-/*---------------------------------------------------
- *            XS-Form Instructions:
- * (none supported by MPC860)
- *---------------------------------------------------
- * OPCD |    S   |   A    |   sh   |      XO   |sh|LK
- *---------------------------------------------------*/
-
-#define XS_OPCODE(i,xo,rc) (MAKE_OPCODE(i) | (((xo) & 0x1ff) << 2) | \
-                            ((rc) & 0x1))
-#define XS_MASK XS_OPCODE(0x3f,0x1ff,0x1)
-
-
-/*---------------------------------------------------
- *            XO-Form Instructions:
- * addX addcXaddeX addmeX addzeX divwX divwuX mulhwX
- * mulhwuX mullwX negX subfX subfcX subfeX subfmeX
- * subfzeX
- *---------------------------------------------------
- * OPCD |    D   |   A    |    B   |OE|     XO    |Rc
- * OPCD |    D   |   A    |    B   |0 |     XO    |Rc
- * OPCD |    D   |   A    |  00000 |OE|     XO    |Rc
- *---------------------------------------------------*/
-
-#define XO_OPCODE(i,xo,oe,rc) (MAKE_OPCODE(i) | (((oe) & 0x1) << 10) | \
-                              (((xo) & 0x1ff) << 1) | ((rc) & 0x1))
-#define XO_MASK XO_OPCODE(0x3f,0x1ff,0x1,0x1)
-
-
-/*---------------------------------------------------
- *            A-Form Instructions:
- * (none supported by MPC860)
- *---------------------------------------------------
- * OPCD |    D   |   A    |    B   |00000|  XO    |Rc
- * OPCD |    D   |   A    |    B   |  C  |  XO    |Rc
- * OPCD |    D   |   A    |  00000 |  C  |  XO    |Rc
- * OPCD |    D   |  00000 |    B   |00000|  XO    |Rc
- *---------------------------------------------------*/
-
-#define A_OPCODE(i,xo,rc) (MAKE_OPCODE(i) | (((xo) & 0x1f) << 1) | \
-                          ((rc) & 0x1))
-#define A_MASK A_OPCODE(0x3f,0x1f,0x1)
-
-
-/*---------------------------------------------------
- *            M-Form Instructions:
- * rlwimiX rlwinmX rlwnmX
- *---------------------------------------------------
- * OPCD |    S   |   A    |    SH   |  MB |  ME   |Rc
- * OPCD |    S   |   A    |     B   |  MB |  ME   |Rc
- *---------------------------------------------------*/
-
-#define M_OPCODE(i,rc) (MAKE_OPCODE(i) | ((rc) & 0x1))
-#define M_MASK M_OPCODE(0x3f,0x1)
-
-
-/*---------------------------------------------------
- *            MD-Form Instructions:
- * (none supported by MPC860)
- *---------------------------------------------------
- * OPCD |    S   |   A    |    sh   |  mb | XO |sh|Rc
- * OPCD |    S   |   A    |    sh   |  me | XO |sh|Rc
- *---------------------------------------------------*/
-
-#define MD_OPCODE(i,xo,rc) (MAKE_OPCODE(i) | (((xo) & 0x7) << 2) | \
-                          ((rc) & 0x1))
-#define MD_MASK MD_OPCODE(0x3f,0x7,0x1)
-
-
-/*---------------------------------------------------
- *            MDS-Form Instructions:
- * (none supported by MPC860)
- *---------------------------------------------------
- * OPCD |    S   |   A    |    B    |  mb | XO    |Rc
- * OPCD |    S   |   A    |    B    |  me | XO    |Rc
- *---------------------------------------------------*/
-
-#define MDS_OPCODE(i,xo,rc) (MAKE_OPCODE(i) | (((xo) & 0xf) << 1) | \
-                          ((rc) & 0x1))
-#define MDS_MASK MDS_OPCODE(0x3f,0xf,0x1)
-
-#ifndef FALSE
-#define FALSE 0
-#define TRUE (!FALSE)
-#endif
-
-#define INSTRUCTION( memaddr ) ntohl(*(unsigned long *)(memaddr))
-
-#define MAX_OPERANDS  8
-
-struct ppc_ctx;
-
-struct opcode {
-  unsigned long        opcode;         /* The complete opcode as produced by
-                                  one of the XXX_OPCODE macros above */
-
-  unsigned long        mask;           /* The mask to use on an instruction
-                                  before comparing with the opcode
-                                  field to see if it matches */
-
-  enum OP_FIELD        fields[MAX_OPERANDS];
-                               /* An array defining the operands for
-                                  this opcode.  The values of the
-                                  array are the operand identifiers */
-
-  int (*hfunc)(struct ppc_ctx *);
-                               /* Address of a function to handle the given
-                                  mnemonic */
-
-  char *       name;           /* The symbolic name of this opcode */
-
-  unsigned int hint;           /* A bitwise-inclusive-OR of the
-                                  values shown below.  These are used
-                                  tell the disassembler how to print
-                                  some operands for this opcode */
-};
-
-/* values for opcode hints */
-#define H_RELATIVE     0x1     /* The address operand is relative */
-#define H_IMM_HIGH     0x2     /* [U|S]IMM field shifted high */
-#define H_RA0_IS_0     0x4     /* If rA = 0 then treat as literal 0 */
-
-struct ppc_ctx {
-  struct opcode *      op;
-  unsigned long                instr;
-  unsigned int         flags;
-  int                  datalen;
-  char                 data[ 256 ];
-  char                 radix_fmt[ 8 ];
-  unsigned char *      virtual;
-};
-
-
-/*======================================================================
- *
- *  FUNCTIONS
- *
- *======================================================================*/
-
-/* Values for flags as passed to various ppc routines */
-#define F_RADOCTAL     0x1     /* output radix = unsigned octal */
-#define F_RADUDECIMAL  0x2     /* output radix = unsigned decimal */
-#define F_RADSDECIMAL  0x4     /* output radix = signed decimal */
-#define F_RADHEX       0x8     /* output radix = unsigned hex */
-#define F_SIMPLE       0x10    /* use simplified mnemonics */
-#define F_SYMBOL       0x20    /* use symbol lookups for addresses */
-#define F_INSTR                0x40    /* output the raw instruction */
-#define F_LOCALMEM     0x80    /* retrieve opcodes from local memory
-                                  rather than from the HMI */
-#define F_LINENO       0x100   /* show line number info if available */
-#define F_VALIDONLY    0x200   /* cache: valid entries only */
-
-/* Values for assembler error codes */
-#define E_ASM_BAD_OPCODE       1
-#define E_ASM_NUM_OPERANDS     2
-#define E_ASM_BAD_REGISTER     3
-#define E_ASM_BAD_SPR          4
-#define E_ASM_BAD_TBR          5
-
-extern int disppc __P((unsigned char *,unsigned char *,int,
-                      int (*)(const char *), unsigned long));
-extern int print_source_line __P((char *,char *,int,
-                                 int (*pfunc)(const char *)));
-extern int find_next_address __P((unsigned char *,int,struct pt_regs *));
-extern int handle_bc __P((struct ppc_ctx *));
-extern unsigned long asmppc __P((unsigned long,char*,int*));
-extern char *asm_error_str __P((int));
-
-/*======================================================================
- *
- *  GLOBAL VARIABLES
- *
- *======================================================================*/
-
-extern struct operand operands[];
-extern const unsigned int n_operands;
-extern struct opcode opcodes[];
-extern const unsigned int n_opcodes;
-
-#endif /* _PPC_H */
-
-
-/*
- * Copyright (c) 2000 William L. Pitts and W. Gerald Hicks
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are freely
- * permitted provided that the above copyright notice and this
- * paragraph and the following disclaimer are duplicated in all
- * such forms.
- *
- * This software is provided "AS IS" and without any express or
- * implied warranties, including, without limitation, the implied
- * warranties of merchantability and fitness for a particular
- * purpose.
- */
+/* $Id: ppc.h,v 1.1.1.1 2009/03/25 22:22:21 kenagy Exp $ */
+
+#ifndef _PPC_H
+#define _PPC_H
+
+/*======================================================================
+ *
+ *  OPERANDS
+ *
+ *======================================================================*/
+
+enum OP_FIELD {
+  O_AA = 1, O_BD, O_BI, O_BO, O_crbD, O_crbA, O_crbB, O_CRM, O_d, O_frC, O_frD,
+  O_frS, O_IMM, O_LI, O_LK, O_MB, O_ME, O_NB, O_OE, O_rA, O_rB, O_Rc, O_rD,
+  O_rS, O_SH, O_SIMM, O_SR, O_TO, O_UIMM, O_crfD, O_crfS, O_L, O_spr, O_tbr,
+  O_cr2 };
+
+struct operand {
+  enum OP_FIELD        field;          /* The operand identifier from the
+                                  enum above */
+
+  char *       name;           /* Symbolic name of this operand */
+
+  unsigned int bits;           /* The number of bits used by this
+                                  operand */
+
+  unsigned int shift;          /* How far to the right the operand
+                                  should be shifted so that it is
+                                  aligned at the beginning of the
+                                  word */
+
+  unsigned int hint;           /* A bitwise-inclusive-OR of the
+                                  values shown below.  These are used
+                                  tell the disassembler how to print
+                                  this operand */
+};
+
+/* Values for operand hint */
+#define OH_SILENT      0x01    /* dont print this operand */
+#define OH_ADDR                0x02    /* this operand is an address */
+#define OH_REG         0x04    /* this operand is a register */
+#define OH_SPR         0x08    /* this operand is an SPR */
+#define OH_TBR         0x10    /* this operand is a TBR */
+#define OH_OFFSET      0x20    /* this operand is an offset */
+#define OH_LITERAL      0x40    /* a literal string */
+
+
+/*======================================================================
+ *
+ *  OPCODES
+ *
+ *======================================================================*/
+
+/* From the MPCxxx instruction set documentation, all instructions are
+ * 32 bits long and word aligned.  Bits 0-5 always specify the primary
+ * opcode.  Many instructions also have an extended opcode.
+ */
+
+#define GET_OPCD(i) (((unsigned long)(i) >> 26) & 0x3f)
+#define MAKE_OPCODE(i) ((((unsigned long)(i)) & 0x3f) << 26)
+
+/* The MPC860 User's Manual, Appendix D.4 contains the definitions of the
+ * instruction forms
+ */
+
+
+/*-------------------------------------------------
+ *              I-Form Instructions:
+ * bX
+ *-------------------------------------------------
+ * OPCD |           LI                       |AA|LK
+ *-------------------------------------------------*/
+
+#define I_OPCODE(i,aa,lk) (MAKE_OPCODE(i) | (((aa) & 0x1) << 1) | ((lk) & 0x1))
+#define I_MASK I_OPCODE(0x3f,0x1,0x1)
+
+
+/*-------------------------------------------------
+ *              B-Form Instructions:
+ * bcX
+ *-------------------------------------------------
+ * OPCD |    BO   |  BI  |   BD              |AA|LK
+ *-------------------------------------------------*/
+
+#define B_OPCODE(i,aa,lk) (MAKE_OPCODE(i) | (((aa) & 0x1) << 1) | ((lk) & 0x1))
+#define B_MASK B_OPCODE(0x3f,0x1,0x1)
+
+
+/*-------------------------------------------------
+ *             SC-Form Instructions:
+ * sc
+ *-------------------------------------------------
+ * OPCD | 00000 | 00000 | 00000000000000       |1|0
+ *-------------------------------------------------*/
+
+#define SC_OPCODE(i) (MAKE_OPCODE(i) | 0x2)
+#define SC_MASK SC_OPCODE(0x3f)
+
+
+/*-------------------------------------------------
+ *             D-Form Instructions:
+ * addi addic addic. addis andi. andis. cmpi cmpli
+ * lbz lbzu lha lhau lhz lhzu lmw lwz lwzu mulli
+ * ori oris stb stbu sth sthu stmw stw stwu subfic
+ * twi xori xoris
+ *-------------------------------------------------
+ * OPCD |   D    |   A   |            d
+ * OPCD |   D    |   A   |           SIMM
+ * OPCD |   S    |   A   |            d
+ * OPCD |   S    |   A   |           UIMM
+ * OPCD |crfD|0|L|   A   |           SIMM
+ * OPCD |crfD|0|L|   A   |           UIMM
+ * OPCD |   TO   |   A   |           SIMM
+ *-------------------------------------------------*/
+
+#define D_OPCODE(i) MAKE_OPCODE(i)
+#define D_MASK MAKE_OPCODE(0x3f)
+
+
+/*-------------------------------------------------
+ *            DS-Form Instructions:
+ * (none supported by MPC860)
+ *-------------------------------------------------
+ * OPCD |   D    |   A   |          ds          |XO
+ * OPCD |   S    |   A   |          ds          |XO
+ *-------------------------------------------------*/
+
+#define DS_OPCODE(i,xo) (MAKE_OPCODE(i) | ((xo) & 0x3))
+#define DS_MASK DS_OPCODE(0x3f,0x1)
+
+
+/*---------------------------------------------------
+ *            X-Form Instructions:
+ * andX andcX cmp cmpl cntlzwX dcbf dcbi dcbst dcbt
+ * dcbtst dcbz eciwx ecowx eieio eqvX extsbX extshX
+ * icbi lbzux lbxz lhaux lhax lhbrx lhzux lhxz lswi
+ * lswx lwarx lwbrx lwzux lwxz mcrfs mcrxr mfcr
+ * mfmsr mfsr mfsrin mtmsr mtsr mtsrin nandX norX
+ * orX orcX slwX srawX srawiX srwX stbux stbx
+ * sthbrx sthuxsthx stswi stswx stwbrx stwcx. stwux
+ * stwx sync tlbie tlbld tlbli tlbsync tw xorX
+ *---------------------------------------------------
+ * OPCD |   D    |    A   |    B   |      XO      |0
+ * OPCD |   D    |    A   |   NB   |      XO      |0
+ * OPCD |   D    |  00000 |    B   |      XO      |0
+ * OPCD |   D    |  00000 |  00000 |      XO      |0
+ * OPCD |   D    |0|  SR  |  00000 |      XO      |0
+ * OPCD |   S    |    A   |    B   |      XO      |Rc
+ * OPCD |   S    |    A   |    B   |      XO      |1
+ * OPCD |   S    |    A   |    B   |      XO      |0
+ * OPCD |   S    |    A   |   NB   |      XO      |0
+ * OPCD |   S    |    A   |  00000 |      XO      |Rc
+ * OPCD |   S    |  00000 |    B   |      XO      |0
+ * OPCD |   S    |  00000 |  00000 |      XO      |0
+ * OPCD |   S    |0|  SR  |  00000 |      XO      |0
+ * OPCD |   S    |    A   |   SH   |      XO      |Rc
+ * OPCD |crfD|0|L|    A   |   SH   |      XO      |0
+ * OPCD |crfD |00|    A   |    B   |      XO      |0
+ * OPCD |crfD |00|crfS |00|  00000 |      XO      |0
+ * OPCD |crfD |00|  00000 |  00000 |      XO      |0
+ * OPCD |crfD |00|  00000 | IMM  |0|      XO      |Rc
+ * OPCD |   TO   |    A   |    B   |      XO      |0
+ * OPCD |   D    |  00000 |    B   |      XO      |Rc
+ * OPCD |   D    |  00000 |  00000 |      XO      |Rc
+ * OPCD |  crbD  |  00000 |  00000 |      XO      |Rc
+ * OPCD |  00000 |    A   |    B   |      XO      |0
+ * OPCD |  00000 |  00000 |    B   |      XO      |0
+ * OPCD |  00000 |  00000 |  00000 |      XO      |0
+ *---------------------------------------------------*/
+
+#define X_OPCODE(i,xo,rc) (MAKE_OPCODE(i) | (((xo) & 0x3ff) << 1) | \
+                          ((rc) & 0x1))
+#define X_MASK X_OPCODE(0x3f,0x3ff,0x1)
+
+
+/*---------------------------------------------------
+ *            XL-Form Instructions:
+ * bcctrX bclrX crand crandc creqv crnand crnor cror
+ * croc crxorisync mcrf rfi
+ *---------------------------------------------------
+ * OPCD |   BO   |  BI    |  00000 |      XO      |LK
+ * OPCD |  crbD  | crbA   |  crbB  |      XO      |0
+ * OPCD |crfD |00|crfS |00|  00000 |      XO      |0
+ * OPCD |  00000 |  00000 |  00000 |      XO      |0
+ *---------------------------------------------------*/
+
+#define XL_OPCODE(i,xo,lk) (MAKE_OPCODE(i) | (((xo) & 0x3ff) << 1) | \
+                           ((lk) & 0x1))
+#define XL_MASK XL_OPCODE(0x3f,0x3ff,0x1)
+
+
+/*---------------------------------------------------
+ *            XFX-Form Instructions:
+ * mfspr mftb mtcrf mtspr
+ *---------------------------------------------------
+ * OPCD |   D    |      spr        |      XO       |0
+ * OPCD |   D    |0|    CRM      |0|      XO       |0
+ * OPCD |   S    |      spr        |      XO       |0
+ * OPCD |   D    |      tbr        |      XO       |0
+ *---------------------------------------------------*/
+
+#define XFX_OPCODE(i,xo,rc) (MAKE_OPCODE(i) | (((xo) & 0x3ff) << 1) | \
+                            ((rc) & 0x1))
+#define XFX_MASK XFX_OPCODE(0x3f,0x3ff,0x1)
+
+
+/*---------------------------------------------------
+ *            XFL-Form Instructions:
+ * (none supported by MPC860)
+ *---------------------------------------------------
+ * OPCD |0|      FM     |0|   B    |      XO       |0
+ *---------------------------------------------------*/
+
+#define XFL_OPCODE(i,xo,rc) (MAKE_OPCODE(i) | (((xo) & 0x3ff) << 1) | \
+                            ((rc) & 0x1))
+#define XFL_MASK XFL_OPCODE(0x3f,0x3ff,0x1)
+
+
+/*---------------------------------------------------
+ *            XS-Form Instructions:
+ * (none supported by MPC860)
+ *---------------------------------------------------
+ * OPCD |    S   |   A    |   sh   |      XO   |sh|LK
+ *---------------------------------------------------*/
+
+#define XS_OPCODE(i,xo,rc) (MAKE_OPCODE(i) | (((xo) & 0x1ff) << 2) | \
+                            ((rc) & 0x1))
+#define XS_MASK XS_OPCODE(0x3f,0x1ff,0x1)
+
+
+/*---------------------------------------------------
+ *            XO-Form Instructions:
+ * addX addcXaddeX addmeX addzeX divwX divwuX mulhwX
+ * mulhwuX mullwX negX subfX subfcX subfeX subfmeX
+ * subfzeX
+ *---------------------------------------------------
+ * OPCD |    D   |   A    |    B   |OE|     XO    |Rc
+ * OPCD |    D   |   A    |    B   |0 |     XO    |Rc
+ * OPCD |    D   |   A    |  00000 |OE|     XO    |Rc
+ *---------------------------------------------------*/
+
+#define XO_OPCODE(i,xo,oe,rc) (MAKE_OPCODE(i) | (((oe) & 0x1) << 10) | \
+                              (((xo) & 0x1ff) << 1) | ((rc) & 0x1))
+#define XO_MASK XO_OPCODE(0x3f,0x1ff,0x1,0x1)
+
+
+/*---------------------------------------------------
+ *            A-Form Instructions:
+ * (none supported by MPC860)
+ *---------------------------------------------------
+ * OPCD |    D   |   A    |    B   |00000|  XO    |Rc
+ * OPCD |    D   |   A    |    B   |  C  |  XO    |Rc
+ * OPCD |    D   |   A    |  00000 |  C  |  XO    |Rc
+ * OPCD |    D   |  00000 |    B   |00000|  XO    |Rc
+ *---------------------------------------------------*/
+
+#define A_OPCODE(i,xo,rc) (MAKE_OPCODE(i) | (((xo) & 0x1f) << 1) | \
+                          ((rc) & 0x1))
+#define A_MASK A_OPCODE(0x3f,0x1f,0x1)
+
+
+/*---------------------------------------------------
+ *            M-Form Instructions:
+ * rlwimiX rlwinmX rlwnmX
+ *---------------------------------------------------
+ * OPCD |    S   |   A    |    SH   |  MB |  ME   |Rc
+ * OPCD |    S   |   A    |     B   |  MB |  ME   |Rc
+ *---------------------------------------------------*/
+
+#define M_OPCODE(i,rc) (MAKE_OPCODE(i) | ((rc) & 0x1))
+#define M_MASK M_OPCODE(0x3f,0x1)
+
+
+/*---------------------------------------------------
+ *            MD-Form Instructions:
+ * (none supported by MPC860)
+ *---------------------------------------------------
+ * OPCD |    S   |   A    |    sh   |  mb | XO |sh|Rc
+ * OPCD |    S   |   A    |    sh   |  me | XO |sh|Rc
+ *---------------------------------------------------*/
+
+#define MD_OPCODE(i,xo,rc) (MAKE_OPCODE(i) | (((xo) & 0x7) << 2) | \
+                          ((rc) & 0x1))
+#define MD_MASK MD_OPCODE(0x3f,0x7,0x1)
+
+
+/*---------------------------------------------------
+ *            MDS-Form Instructions:
+ * (none supported by MPC860)
+ *---------------------------------------------------
+ * OPCD |    S   |   A    |    B    |  mb | XO    |Rc
+ * OPCD |    S   |   A    |    B    |  me | XO    |Rc
+ *---------------------------------------------------*/
+
+#define MDS_OPCODE(i,xo,rc) (MAKE_OPCODE(i) | (((xo) & 0xf) << 1) | \
+                          ((rc) & 0x1))
+#define MDS_MASK MDS_OPCODE(0x3f,0xf,0x1)
+
+#ifndef FALSE
+#define FALSE 0
+#define TRUE (!FALSE)
+#endif
+
+#define INSTRUCTION( memaddr ) ntohl(*(unsigned long *)(memaddr))
+
+#define MAX_OPERANDS  8
+
+struct ppc_ctx;
+
+struct opcode {
+  unsigned long        opcode;         /* The complete opcode as produced by
+                                  one of the XXX_OPCODE macros above */
+
+  unsigned long        mask;           /* The mask to use on an instruction
+                                  before comparing with the opcode
+                                  field to see if it matches */
+
+  enum OP_FIELD        fields[MAX_OPERANDS];
+                               /* An array defining the operands for
+                                  this opcode.  The values of the
+                                  array are the operand identifiers */
+
+  int (*hfunc)(struct ppc_ctx *);
+                               /* Address of a function to handle the given
+                                  mnemonic */
+
+  char *       name;           /* The symbolic name of this opcode */
+
+  unsigned int hint;           /* A bitwise-inclusive-OR of the
+                                  values shown below.  These are used
+                                  tell the disassembler how to print
+                                  some operands for this opcode */
+};
+
+/* values for opcode hints */
+#define H_RELATIVE     0x1     /* The address operand is relative */
+#define H_IMM_HIGH     0x2     /* [U|S]IMM field shifted high */
+#define H_RA0_IS_0     0x4     /* If rA = 0 then treat as literal 0 */
+
+struct ppc_ctx {
+  struct opcode *      op;
+  unsigned long                instr;
+  unsigned int         flags;
+  int                  datalen;
+  char                 data[ 256 ];
+  char                 radix_fmt[ 8 ];
+  unsigned char *      virtual;
+};
+
+
+/*======================================================================
+ *
+ *  FUNCTIONS
+ *
+ *======================================================================*/
+
+/* Values for flags as passed to various ppc routines */
+#define F_RADOCTAL     0x1     /* output radix = unsigned octal */
+#define F_RADUDECIMAL  0x2     /* output radix = unsigned decimal */
+#define F_RADSDECIMAL  0x4     /* output radix = signed decimal */
+#define F_RADHEX       0x8     /* output radix = unsigned hex */
+#define F_SIMPLE       0x10    /* use simplified mnemonics */
+#define F_SYMBOL       0x20    /* use symbol lookups for addresses */
+#define F_INSTR                0x40    /* output the raw instruction */
+#define F_LOCALMEM     0x80    /* retrieve opcodes from local memory
+                                  rather than from the HMI */
+#define F_LINENO       0x100   /* show line number info if available */
+#define F_VALIDONLY    0x200   /* cache: valid entries only */
+
+/* Values for assembler error codes */
+#define E_ASM_BAD_OPCODE       1
+#define E_ASM_NUM_OPERANDS     2
+#define E_ASM_BAD_REGISTER     3
+#define E_ASM_BAD_SPR          4
+#define E_ASM_BAD_TBR          5
+
+extern int disppc __P((unsigned char *,unsigned char *,int,
+                      int (*)(const char *), unsigned long));
+extern int print_source_line __P((char *,char *,int,
+                                 int (*pfunc)(const char *)));
+extern int find_next_address __P((unsigned char *,int,struct pt_regs *));
+extern int handle_bc __P((struct ppc_ctx *));
+extern unsigned long asmppc __P((unsigned long,char*,int*));
+extern char *asm_error_str __P((int));
+
+/*======================================================================
+ *
+ *  GLOBAL VARIABLES
+ *
+ *======================================================================*/
+
+extern struct operand operands[];
+extern const unsigned int n_operands;
+extern struct opcode opcodes[];
+extern const unsigned int n_opcodes;
+
+#endif /* _PPC_H */
+
+
+/*
+ * Copyright (c) 2000 William L. Pitts and W. Gerald Hicks
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms are freely
+ * permitted provided that the above copyright notice and this
+ * paragraph and the following disclaimer are duplicated in all
+ * such forms.
+ *
+ * This software is provided "AS IS" and without any express or
+ * implied warranties, including, without limitation, the implied
+ * warranties of merchantability and fitness for a particular
+ * purpose.
+ */
diff -Naur u-boot-2009.03_orig/include/bedbug/regs.h u-boot-2009.03/include/bedbug/regs.h
--- u-boot-2009.03_orig/include/bedbug/regs.h   2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/include/bedbug/regs.h        2009-03-31 15:00:04.701964000 -0700
@@ -1,403 +1,403 @@
-/* $Id$ */
-
-#ifndef _REGS_H
-#define _REGS_H
-
-/* Special Purpose Registers */
-
-#define SPR_CR         -1
-#define SPR_MSR                -2
-
-#define SPR_XER                1
-#define SPR_LR         8
-#define SPR_CTR                9
-#define SPR_DSISR      18
-#define SPR_DAR                19
-#define SPR_DEC                22
-#define SPR_SRR0       26
-#define SPR_SRR1       27
-#define SPR_EIE                80
-#define SPR_EID                81
-#define SPR_CMPA       144
-#define SPR_CMPB       145
-#define SPR_CMPC       146
-#define SPR_CMPD       147
-#define SPR_ICR                148
-#define SPR_DER                149
-#define SPR_COUNTA     150
-#define SPR_COUNTB     151
-#define SPR_CMPE       152
-#define SPR_CMPF       153
-#define SPR_CMPG       154
-#define SPR_CMPH       155
-#define SPR_LCTRL1     156
-#define SPR_LCTRL2     157
-#define SPR_ICTRL      158
-#define SPR_BAR                159
-#define SPR_USPRG0      256
-#define SPR_SPRG4_RO    260
-#define SPR_SPRG5_RO    261
-#define SPR_SPRG6_RO    262
-#define SPR_SPRG7_RO    263
-#define SPR_SPRG0      272
-#define SPR_SPRG1      273
-#define SPR_SPRG2      274
-#define SPR_SPRG3      275
-#define SPR_SPRG4       276
-#define SPR_SPRG5       277
-#define SPR_SPRG6       278
-#define SPR_SPRG7       279
-#define SPR_EAR         282    /* MPC603e core */
-#define SPR_TBL         284
-#define SPR_TBU         285
-#define SPR_PVR                287
-#define SPR_IC_CST     560
-#define SPR_IC_ADR     561
-#define SPR_IC_DAT     562
-#define SPR_DC_CST     568
-#define SPR_DC_ADR     569
-#define SPR_DC_DAT     570
-#define SPR_DPDR       630
-#define SPR_IMMR       638
-#define SPR_MI_CTR     784
-#define SPR_MI_AP      786
-#define SPR_MI_EPN     787
-#define SPR_MI_TWC     789
-#define SPR_MI_RPN     790
-#define SPR_MD_CTR     792
-#define SPR_M_CASID    793
-#define SPR_MD_AP      794
-#define SPR_MD_EPN     795
-#define SPR_M_TWB      796
-#define SPR_MD_TWC     797
-#define SPR_MD_RPN     798
-#define SPR_M_TW       799
-#define SPR_MI_DBCAM   816
-#define SPR_MI_DBRAM0  817
-#define SPR_MI_DBRAM1  818
-#define SPR_MD_DBCAM   824
-#define SPR_MD_DBRAM0  825
-#define SPR_MD_DBRAM1  826
-#define SPR_ZPR         944
-#define SPR_PID         945
-#define SPR_CCR0        947
-#define SPR_IAC3        948
-#define SPR_IAC4        949
-#define SPR_DVC1        950
-#define SPR_DVC2        951
-#define SPR_SGR         953
-#define SPR_DCWR        954
-#define SPR_SLER        955
-#define SPR_SU0R        956
-#define SPR_DBCR1       957
-#define SPR_ICDBDR      979
-#define SPR_ESR         980
-#define SPR_DEAR        981
-#define SPR_EVPR        982
-#define SPR_TSR         984
-#define SPR_TCR         986
-#define SPR_PIT         987
-#define SPR_SRR2        990
-#define SPR_SRR3        991
-#define SPR_DBSR        1008
-#define SPR_DBCR0       1010
-#define SPR_IABR        1010   /* MPC603e core */
-#define SPR_IAC1        1012
-#define SPR_IAC2        1013
-#define SPR_DAC1        1014
-#define SPR_DAC2        1015
-#define SPR_DCCR        1018
-#define SPR_ICCR        1019
-
-/* Bits for the DBCR0 register */
-#define DBCR0_EDM      0x80000000
-#define DBCR0_IDM      0x40000000
-#define DBCR0_RST      0x30000000
-#define DBCR0_IC       0x08000000
-#define DBCR0_BT       0x04000000
-#define DBCR0_EDE      0x02000000
-#define DBCR0_TDE      0x01000000
-#define DBCR0_IA1      0x00800000
-#define DBCR0_IA2      0x00400000
-#define DBCR0_IA12     0x00200000
-#define DBCR0_IA12X    0x00100000
-#define DBCR0_IA3      0x00080000
-#define DBCR0_IA4      0x00040000
-#define DBCR0_IA34     0x00020000
-#define DBCR0_IA34X    0x00010000
-#define DBCR0_IA12T    0x00008000
-#define DBCR0_IA34T    0x00004000
-#define DBCR0_FT       0x00000001
-
-/* Bits for the DBCR1 register */
-#define DBCR1_D1R      0x80000000
-#define DBCR1_D2R      0x40000000
-#define DBCR1_D1W      0x20000000
-#define DBCR1_D2W      0x10000000
-#define DBCR1_D1S      0x0C000000
-#define DBCR1_D2S      0x03000000
-#define DBCR1_DA12     0x00800000
-#define DBCR1_DA12X    0x00400000
-#define DBCR1_DV1M     0x000C0000
-#define DBCR1_DV2M     0x00030000
-#define DBCR1_DV1BE    0x0000F000
-#define DBCR1_DV2BE    0x00000F00
-
-/* Bits for the DBSR register */
-#define DBSR_IC                0x80000000
-#define DBSR_BT                0x40000000
-#define DBSR_EDE       0x20000000
-#define DBSR_TIE       0x10000000
-#define DBSR_UDE       0x08000000
-#define DBSR_IA1       0x04000000
-#define DBSR_IA2       0x02000000
-#define DBSR_DR1       0x01000000
-#define DBSR_DW1       0x00800000
-#define DBSR_DR2       0x00400000
-#define DBSR_DW2       0x00200000
-#define DBSR_IDE       0x00100000
-#define DBSR_IA3       0x00080000
-#define DBSR_IA4       0x00040000
-#define DBSR_MRR       0x00000300
-
-struct spr_info {
-  int  spr_val;
-  char spr_name[ 10 ];
-};
-
-extern struct spr_info spr_map[];
-extern const unsigned int n_sprs;
-
-
-#define SET_REGISTER( str, val ) \
-({ unsigned long __value = (val); \
-  asm volatile( str : : "r" (__value)); \
-  __value; })
-
-#define        GET_REGISTER( str ) \
-({ unsigned long __value; \
-  asm volatile( str : "=r" (__value) : ); \
-  __value; })
-
-#define         GET_CR()            GET_REGISTER( "mfcr %0" )
-#define         SET_CR(val)         SET_REGISTER( "mtcr %0", val )
-#define         GET_MSR()           GET_REGISTER( "mfmsr %0" )
-#define         SET_MSR(val)        SET_REGISTER( "mtmsr %0", val )
-#define         GET_XER()           GET_REGISTER( "mfspr %0,1" )
-#define         SET_XER(val)        SET_REGISTER( "mtspr 1,%0", val )
-#define         GET_LR()            GET_REGISTER( "mfspr %0,8" )
-#define         SET_LR(val)         SET_REGISTER( "mtspr 8,%0", val )
-#define         GET_CTR()           GET_REGISTER( "mfspr %0,9" )
-#define         SET_CTR(val)        SET_REGISTER( "mtspr 9,%0", val )
-#define         GET_DSISR()         GET_REGISTER( "mfspr %0,18" )
-#define         SET_DSISR(val)      SET_REGISTER( "mtspr 18,%0", val )
-#define         GET_DAR()           GET_REGISTER( "mfspr %0,19" )
-#define         SET_DAR(val)        SET_REGISTER( "mtspr 19,%0", val )
-#define         GET_DEC()           GET_REGISTER( "mfspr %0,22" )
-#define         SET_DEC(val)        SET_REGISTER( "mtspr 22,%0", val )
-#define         GET_SRR0()          GET_REGISTER( "mfspr %0,26" )
-#define         SET_SRR0(val)       SET_REGISTER( "mtspr 26,%0", val )
-#define         GET_SRR1()          GET_REGISTER( "mfspr %0,27" )
-#define         SET_SRR1(val)       SET_REGISTER( "mtspr 27,%0", val )
-#define         GET_EIE()           GET_REGISTER( "mfspr %0,80" )
-#define         SET_EIE(val)        SET_REGISTER( "mtspr 80,%0", val )
-#define         GET_EID()           GET_REGISTER( "mfspr %0,81" )
-#define         SET_EID(val)        SET_REGISTER( "mtspr 81,%0", val )
-#define         GET_CMPA()          GET_REGISTER( "mfspr %0,144" )
-#define         SET_CMPA(val)       SET_REGISTER( "mtspr 144,%0", val )
-#define         GET_CMPB()          GET_REGISTER( "mfspr %0,145" )
-#define         SET_CMPB(val)       SET_REGISTER( "mtspr 145,%0", val )
-#define         GET_CMPC()          GET_REGISTER( "mfspr %0,146" )
-#define         SET_CMPC(val)       SET_REGISTER( "mtspr 146,%0", val )
-#define         GET_CMPD()          GET_REGISTER( "mfspr %0,147" )
-#define         SET_CMPD(val)       SET_REGISTER( "mtspr 147,%0", val )
-#define         GET_ICR()           GET_REGISTER( "mfspr %0,148" )
-#define         SET_ICR(val)        SET_REGISTER( "mtspr 148,%0", val )
-#define         GET_DER()           GET_REGISTER( "mfspr %0,149" )
-#define         SET_DER(val)        SET_REGISTER( "mtspr 149,%0", val )
-#define         GET_COUNTA()        GET_REGISTER( "mfspr %0,150" )
-#define         SET_COUNTA(val)     SET_REGISTER( "mtspr 150,%0", val )
-#define         GET_COUNTB()        GET_REGISTER( "mfspr %0,151" )
-#define         SET_COUNTB(val)     SET_REGISTER( "mtspr 151,%0", val )
-#define         GET_CMPE()          GET_REGISTER( "mfspr %0,152" )
-#define         SET_CMPE(val)       SET_REGISTER( "mtspr 152,%0", val )
-#define         GET_CMPF()          GET_REGISTER( "mfspr %0,153" )
-#define         SET_CMPF(val)       SET_REGISTER( "mtspr 153,%0", val )
-#define         GET_CMPG()          GET_REGISTER( "mfspr %0,154" )
-#define         SET_CMPG(val)       SET_REGISTER( "mtspr 154,%0", val )
-#define         GET_CMPH()          GET_REGISTER( "mfspr %0,155" )
-#define         SET_CMPH(val)       SET_REGISTER( "mtspr 155,%0", val )
-#define  GET_LCTRL1()       GET_REGISTER( "mfspr %0,156" )
-#define         SET_LCTRL1(val)     SET_REGISTER( "mtspr 156,%0", val )
-#define  GET_LCTRL2()       GET_REGISTER( "mfspr %0,157" )
-#define         SET_LCTRL2(val)     SET_REGISTER( "mtspr 157,%0", val )
-#define  GET_ICTRL()        GET_REGISTER( "mfspr %0,158" )
-#define         SET_ICTRL(val)      SET_REGISTER( "mtspr 158,%0", val )
-#define  GET_BAR()          GET_REGISTER( "mfspr %0,159" )
-#define         SET_BAR(val)        SET_REGISTER( "mtspr 159,%0", val )
-#define  GET_USPRG0()       GET_REGISTER( "mfspr %0,256" )
-#define         SET_USPRG0(val)     SET_REGISTER( "mtspr 256,%0", val )
-#define  GET_SPRG4_RO()             GET_REGISTER( "mfspr %0,260" )
-#define         SET_SPRG4_RO(val)   SET_REGISTER( "mtspr 260,%0", val )
-#define  GET_SPRG5_RO()             GET_REGISTER( "mfspr %0,261" )
-#define         SET_SPRG5_RO(val)   SET_REGISTER( "mtspr 261,%0", val )
-#define  GET_SPRG6_RO()             GET_REGISTER( "mfspr %0,262" )
-#define         SET_SPRG6_RO(val)   SET_REGISTER( "mtspr 262,%0", val )
-#define  GET_SPRG7_RO()             GET_REGISTER( "mfspr %0,263" )
-#define         SET_SPRG7_RO(val)   SET_REGISTER( "mtspr 263,%0", val )
-#define  GET_SPRG0()        GET_REGISTER( "mfspr %0,272" )
-#define         SET_SPRG0(val)      SET_REGISTER( "mtspr 272,%0", val )
-#define  GET_SPRG1()        GET_REGISTER( "mfspr %0,273" )
-#define         SET_SPRG1(val)      SET_REGISTER( "mtspr 273,%0", val )
-#define  GET_SPRG2()        GET_REGISTER( "mfspr %0,274" )
-#define         SET_SPRG2(val)      SET_REGISTER( "mtspr 274,%0", val )
-#define  GET_SPRG3()        GET_REGISTER( "mfspr %0,275" )
-#define         SET_SPRG3(val)      SET_REGISTER( "mtspr 275,%0", val )
-#define  GET_SPRG4()        GET_REGISTER( "mfspr %0,276" )
-#define         SET_SPRG4(val)      SET_REGISTER( "mtspr 276,%0", val )
-#define  GET_SPRG5()        GET_REGISTER( "mfspr %0,277" )
-#define         SET_SPRG5(val)      SET_REGISTER( "mtspr 277,%0", val )
-#define  GET_SPRG6()        GET_REGISTER( "mfspr %0,278" )
-#define         SET_SPRG6(val)      SET_REGISTER( "mtspr 278,%0", val )
-#define  GET_SPRG7()        GET_REGISTER( "mfspr %0,279" )
-#define         SET_SPRG7(val)      SET_REGISTER( "mtspr 279,%0", val )
-#define  GET_EAR()          GET_REGISTER( "mfspr %0,282" )
-#define         SET_EAR(val)        SET_REGISTER( "mtspr 282,%0", val )
-#define  GET_TBL()          GET_REGISTER( "mfspr %0,284" )
-#define         SET_TBL(val)        SET_REGISTER( "mtspr 284,%0", val )
-#define  GET_TBU()          GET_REGISTER( "mfspr %0,285" )
-#define         SET_TBU(val)        SET_REGISTER( "mtspr 285,%0", val )
-#define  GET_PVR()          GET_REGISTER( "mfspr %0,287" )
-#define         SET_PVR(val)        SET_REGISTER( "mtspr 287,%0", val )
-#define  GET_IC_CST()       GET_REGISTER( "mfspr %0,560" )
-#define         SET_IC_CST(val)     SET_REGISTER( "mtspr 560,%0", val )
-#define  GET_IC_ADR()       GET_REGISTER( "mfspr %0,561" )
-#define         SET_IC_ADR(val)     SET_REGISTER( "mtspr 561,%0", val )
-#define  GET_IC_DAT()       GET_REGISTER( "mfspr %0,562" )
-#define         SET_IC_DAT(val)     SET_REGISTER( "mtspr 562,%0", val )
-#define  GET_DC_CST()       GET_REGISTER( "mfspr %0,568" )
-#define         SET_DC_CST(val)     SET_REGISTER( "mtspr 568,%0", val )
-#define  GET_DC_ADR()       GET_REGISTER( "mfspr %0,569" )
-#define         SET_DC_ADR(val)     SET_REGISTER( "mtspr 569,%0", val )
-#define  GET_DC_DAT()       GET_REGISTER( "mfspr %0,570" )
-#define         SET_DC_DAT(val)     SET_REGISTER( "mtspr 570,%0", val )
-#define  GET_DPDR()         GET_REGISTER( "mfspr %0,630" )
-#define         SET_DPDR(val)       SET_REGISTER( "mtspr 630,%0", val )
-#define  GET_IMMR()         GET_REGISTER( "mfspr %0,638" )
-#define         SET_IMMR(val)       SET_REGISTER( "mtspr 638,%0", val )
-#define  GET_MI_CTR()       GET_REGISTER( "mfspr %0,784" )
-#define         SET_MI_CTR(val)     SET_REGISTER( "mtspr 784,%0", val )
-#define  GET_MI_AP()        GET_REGISTER( "mfspr %0,786" )
-#define         SET_MI_AP(val)      SET_REGISTER( "mtspr 786,%0", val )
-#define  GET_MI_EPN()       GET_REGISTER( "mfspr %0,787" )
-#define         SET_MI_EPN(val)     SET_REGISTER( "mtspr 787,%0", val )
-#define  GET_MI_TWC()       GET_REGISTER( "mfspr %0,789" )
-#define         SET_MI_TWC(val)     SET_REGISTER( "mtspr 789,%0", val )
-#define  GET_MI_RPN()       GET_REGISTER( "mfspr %0,790" )
-#define         SET_MI_RPN(val)     SET_REGISTER( "mtspr 790,%0", val )
-#define  GET_MD_CTR()       GET_REGISTER( "mfspr %0,792" )
-#define         SET_MD_CTR(val)     SET_REGISTER( "mtspr 792,%0", val )
-#define  GET_M_CASID()      GET_REGISTER( "mfspr %0,793" )
-#define         SET_M_CASID(val)    SET_REGISTER( "mtspr 793,%0", val )
-#define  GET_MD_AP()        GET_REGISTER( "mfspr %0,794" )
-#define         SET_MD_AP(val)      SET_REGISTER( "mtspr ,794%0", val )
-#define  GET_MD_EPN()       GET_REGISTER( "mfspr %0,795" )
-#define         SET_MD_EPN(val)     SET_REGISTER( "mtspr 795,%0", val )
-#define  GET_M_TWB()        GET_REGISTER( "mfspr %0,796" )
-#define         SET_M_TWB(val)      SET_REGISTER( "mtspr 796,%0", val )
-#define  GET_MD_TWC()       GET_REGISTER( "mfspr %0,797" )
-#define         SET_MD_TWC(val)     SET_REGISTER( "mtspr 797,%0", val )
-#define  GET_MD_RPN()       GET_REGISTER( "mfspr %0,798" )
-#define         SET_MD_RPN(val)     SET_REGISTER( "mtspr 798,%0", val )
-#define  GET_M_TW()         GET_REGISTER( "mfspr %0,799" )
-#define         SET_M_TW(val)       SET_REGISTER( "mtspr 799,%0", val )
-#define  GET_MI_DBCAM()      GET_REGISTER( "mfspr %0,816" )
-#define         SET_MI_DBCAM(val)   SET_REGISTER( "mtspr 816,%0", val )
-#define  GET_MI_DBRAM0()     GET_REGISTER( "mfspr %0,817" )
-#define         SET_MI_DBRAM0(val)  SET_REGISTER( "mtspr 817,%0", val )
-#define  GET_MI_DBRAM1()     GET_REGISTER( "mfspr %0,818" )
-#define         SET_MI_DBRAM1(val)  SET_REGISTER( "mtspr 818,%0", val )
-#define  GET_MD_DBCAM()      GET_REGISTER( "mfspr %0,824" )
-#define         SET_MD_DBCA(val)    SET_REGISTER( "mtspr 824,%0", val )
-#define  GET_MD_DBRAM0()     GET_REGISTER( "mfspr %0,825" )
-#define         SET_MD_DBRAM0(val)  SET_REGISTER( "mtspr 825,%0", val )
-#define  GET_MD_DBRAM1()     GET_REGISTER( "mfspr %0,826" )
-#define         SET_MD_DBRAM1(val)  SET_REGISTER( "mtspr 826,%0", val )
-#define  GET_ZPR()           GET_REGISTER( "mfspr %0,944" )
-#define         SET_ZPR(val)        SET_REGISTER( "mtspr 944,%0", val )
-#define  GET_PID()          GET_REGISTER( "mfspr %0,945" )
-#define         SET_PID(val)        SET_REGISTER( "mtspr 945,%0", val )
-#define  GET_CCR0()         GET_REGISTER( "mfspr %0,947" )
-#define         SET_CCR0(val)       SET_REGISTER( "mtspr 947,%0", val )
-#define         GET_IAC3()          GET_REGISTER( "mfspr %0,948" )
-#define         SET_IAC3(val)       SET_REGISTER( "mtspr 948,%0", val )
-#define         GET_IAC4()          GET_REGISTER( "mfspr %0,949" )
-#define         SET_IAC4(val)       SET_REGISTER( "mtspr 949,%0", val )
-#define         GET_DVC1()          GET_REGISTER( "mfspr %0,950" )
-#define         SET_DVC1(val)       SET_REGISTER( "mtspr 950,%0", val )
-#define         GET_DVC2()          GET_REGISTER( "mfspr %0,951" )
-#define         SET_DVC2(val)       SET_REGISTER( "mtspr 951,%0", val )
-#define         GET_SGR()           GET_REGISTER( "mfspr %0,953" )
-#define         SET_SGR(val)        SET_REGISTER( "mtspr 953,%0", val )
-#define         GET_DCWR()          GET_REGISTER( "mfspr %0,954" )
-#define         SET_DCWR(val)       SET_REGISTER( "mtspr 954,%0", val )
-#define         GET_SLER()          GET_REGISTER( "mfspr %0,955" )
-#define         SET_SLER(val)       SET_REGISTER( "mtspr 955,%0", val )
-#define         GET_SU0R()          GET_REGISTER( "mfspr %0,956" )
-#define         SET_SU0R(val)       SET_REGISTER( "mtspr 956,%0", val )
-#define         GET_DBCR1()         GET_REGISTER( "mfspr %0,957" )
-#define         SET_DBCR1(val)      SET_REGISTER( "mtspr 957,%0", val )
-#define         GET_ICDBDR()        GET_REGISTER( "mfspr %0,979" )
-#define         SET_ICDBDR(val)     SET_REGISTER( "mtspr 979,%0", val )
-#define         GET_ESR()           GET_REGISTER( "mfspr %0,980" )
-#define         SET_ESR(val)        SET_REGISTER( "mtspr 980,%0", val )
-#define         GET_DEAR()          GET_REGISTER( "mfspr %0,981" )
-#define         SET_DEAR(val)       SET_REGISTER( "mtspr 981,%0", val )
-#define         GET_EVPR()          GET_REGISTER( "mfspr %0,982" )
-#define         SET_EVPR(val)       SET_REGISTER( "mtspr 982,%0", val )
-#define         GET_TSR()           GET_REGISTER( "mfspr %0,984" )
-#define         SET_TSR(val)        SET_REGISTER( "mtspr 984,%0", val )
-#define         GET_TCR()           GET_REGISTER( "mfspr %0,986" )
-#define         SET_TCR(val)        SET_REGISTER( "mtspr 986,%0", val )
-#define         GET_PIT()           GET_REGISTER( "mfspr %0,987" )
-#define         SET_PIT(val)        SET_REGISTER( "mtspr 987,%0", val )
-#define         GET_SRR2()          GET_REGISTER( "mfspr %0,990" )
-#define         SET_SRR2(val)       SET_REGISTER( "mtspr 990,%0", val )
-#define         GET_SRR3()          GET_REGISTER( "mfspr %0,991" )
-#define         SET_SRR3(val)       SET_REGISTER( "mtspr 991,%0", val )
-#define         GET_DBSR()          GET_REGISTER( "mfspr %0,1008" )
-#define         SET_DBSR(val)       SET_REGISTER( "mtspr 1008,%0", val )
-#define         GET_DBCR0()         GET_REGISTER( "mfspr %0,1010" )
-#define         SET_DBCR0(val)      SET_REGISTER( "mtspr 1010,%0", val )
-#define         GET_IABR()          GET_REGISTER( "mfspr %0,1010" )
-#define         SET_IABR(val)       SET_REGISTER( "mtspr 1010,%0", val )
-#define         GET_IAC1()          GET_REGISTER( "mfspr %0,1012" )
-#define         SET_IAC1(val)       SET_REGISTER( "mtspr 1012,%0", val )
-#define         GET_IAC2()          GET_REGISTER( "mfspr %0,1013" )
-#define         SET_IAC2(val)       SET_REGISTER( "mtspr 1013,%0", val )
-#define         GET_DAC1()          GET_REGISTER( "mfspr %0,1014" )
-#define         SET_DAC1(val)       SET_REGISTER( "mtspr 1014,%0", val )
-#define         GET_DAC2()          GET_REGISTER( "mfspr %0,1015" )
-#define         SET_DAC2(val)       SET_REGISTER( "mtspr 1015,%0", val )
-#define         GET_DCCR()          GET_REGISTER( "mfspr %0,1018" )
-#define         SET_DCCR(val)       SET_REGISTER( "mtspr 1018,%0", val )
-#define         GET_ICCR()          GET_REGISTER( "mfspr %0,1019" )
-#define         SET_ICCR(val)       SET_REGISTER( "mtspr 1019,%0", val )
-
-#endif /* _REGS_H */
-
-
-/*
- * Copyright (c) 2000 William L. Pitts and W. Gerald Hicks
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are freely
- * permitted provided that the above copyright notice and this
- * paragraph and the following disclaimer are duplicated in all
- * such forms.
- *
- * This software is provided "AS IS" and without any express or
- * implied warranties, including, without limitation, the implied
- * warranties of merchantability and fitness for a particular
- * purpose.
- */
+/* $Id: regs.h,v 1.1.1.1 2009/03/25 22:22:21 kenagy Exp $ */
+
+#ifndef _REGS_H
+#define _REGS_H
+
+/* Special Purpose Registers */
+
+#define SPR_CR         -1
+#define SPR_MSR                -2
+
+#define SPR_XER                1
+#define SPR_LR         8
+#define SPR_CTR                9
+#define SPR_DSISR      18
+#define SPR_DAR                19
+#define SPR_DEC                22
+#define SPR_SRR0       26
+#define SPR_SRR1       27
+#define SPR_EIE                80
+#define SPR_EID                81
+#define SPR_CMPA       144
+#define SPR_CMPB       145
+#define SPR_CMPC       146
+#define SPR_CMPD       147
+#define SPR_ICR                148
+#define SPR_DER                149
+#define SPR_COUNTA     150
+#define SPR_COUNTB     151
+#define SPR_CMPE       152
+#define SPR_CMPF       153
+#define SPR_CMPG       154
+#define SPR_CMPH       155
+#define SPR_LCTRL1     156
+#define SPR_LCTRL2     157
+#define SPR_ICTRL      158
+#define SPR_BAR                159
+#define SPR_USPRG0      256
+#define SPR_SPRG4_RO    260
+#define SPR_SPRG5_RO    261
+#define SPR_SPRG6_RO    262
+#define SPR_SPRG7_RO    263
+#define SPR_SPRG0      272
+#define SPR_SPRG1      273
+#define SPR_SPRG2      274
+#define SPR_SPRG3      275
+#define SPR_SPRG4       276
+#define SPR_SPRG5       277
+#define SPR_SPRG6       278
+#define SPR_SPRG7       279
+#define SPR_EAR         282    /* MPC603e core */
+#define SPR_TBL         284
+#define SPR_TBU         285
+#define SPR_PVR                287
+#define SPR_IC_CST     560
+#define SPR_IC_ADR     561
+#define SPR_IC_DAT     562
+#define SPR_DC_CST     568
+#define SPR_DC_ADR     569
+#define SPR_DC_DAT     570
+#define SPR_DPDR       630
+#define SPR_IMMR       638
+#define SPR_MI_CTR     784
+#define SPR_MI_AP      786
+#define SPR_MI_EPN     787
+#define SPR_MI_TWC     789
+#define SPR_MI_RPN     790
+#define SPR_MD_CTR     792
+#define SPR_M_CASID    793
+#define SPR_MD_AP      794
+#define SPR_MD_EPN     795
+#define SPR_M_TWB      796
+#define SPR_MD_TWC     797
+#define SPR_MD_RPN     798
+#define SPR_M_TW       799
+#define SPR_MI_DBCAM   816
+#define SPR_MI_DBRAM0  817
+#define SPR_MI_DBRAM1  818
+#define SPR_MD_DBCAM   824
+#define SPR_MD_DBRAM0  825
+#define SPR_MD_DBRAM1  826
+#define SPR_ZPR         944
+#define SPR_PID         945
+#define SPR_CCR0        947
+#define SPR_IAC3        948
+#define SPR_IAC4        949
+#define SPR_DVC1        950
+#define SPR_DVC2        951
+#define SPR_SGR         953
+#define SPR_DCWR        954
+#define SPR_SLER        955
+#define SPR_SU0R        956
+#define SPR_DBCR1       957
+#define SPR_ICDBDR      979
+#define SPR_ESR         980
+#define SPR_DEAR        981
+#define SPR_EVPR        982
+#define SPR_TSR         984
+#define SPR_TCR         986
+#define SPR_PIT         987
+#define SPR_SRR2        990
+#define SPR_SRR3        991
+#define SPR_DBSR        1008
+#define SPR_DBCR0       1010
+#define SPR_IABR        1010   /* MPC603e core */
+#define SPR_IAC1        1012
+#define SPR_IAC2        1013
+#define SPR_DAC1        1014
+#define SPR_DAC2        1015
+#define SPR_DCCR        1018
+#define SPR_ICCR        1019
+
+/* Bits for the DBCR0 register */
+#define DBCR0_EDM      0x80000000
+#define DBCR0_IDM      0x40000000
+#define DBCR0_RST      0x30000000
+#define DBCR0_IC       0x08000000
+#define DBCR0_BT       0x04000000
+#define DBCR0_EDE      0x02000000
+#define DBCR0_TDE      0x01000000
+#define DBCR0_IA1      0x00800000
+#define DBCR0_IA2      0x00400000
+#define DBCR0_IA12     0x00200000
+#define DBCR0_IA12X    0x00100000
+#define DBCR0_IA3      0x00080000
+#define DBCR0_IA4      0x00040000
+#define DBCR0_IA34     0x00020000
+#define DBCR0_IA34X    0x00010000
+#define DBCR0_IA12T    0x00008000
+#define DBCR0_IA34T    0x00004000
+#define DBCR0_FT       0x00000001
+
+/* Bits for the DBCR1 register */
+#define DBCR1_D1R      0x80000000
+#define DBCR1_D2R      0x40000000
+#define DBCR1_D1W      0x20000000
+#define DBCR1_D2W      0x10000000
+#define DBCR1_D1S      0x0C000000
+#define DBCR1_D2S      0x03000000
+#define DBCR1_DA12     0x00800000
+#define DBCR1_DA12X    0x00400000
+#define DBCR1_DV1M     0x000C0000
+#define DBCR1_DV2M     0x00030000
+#define DBCR1_DV1BE    0x0000F000
+#define DBCR1_DV2BE    0x00000F00
+
+/* Bits for the DBSR register */
+#define DBSR_IC                0x80000000
+#define DBSR_BT                0x40000000
+#define DBSR_EDE       0x20000000
+#define DBSR_TIE       0x10000000
+#define DBSR_UDE       0x08000000
+#define DBSR_IA1       0x04000000
+#define DBSR_IA2       0x02000000
+#define DBSR_DR1       0x01000000
+#define DBSR_DW1       0x00800000
+#define DBSR_DR2       0x00400000
+#define DBSR_DW2       0x00200000
+#define DBSR_IDE       0x00100000
+#define DBSR_IA3       0x00080000
+#define DBSR_IA4       0x00040000
+#define DBSR_MRR       0x00000300
+
+struct spr_info {
+  int  spr_val;
+  char spr_name[ 10 ];
+};
+
+extern struct spr_info spr_map[];
+extern const unsigned int n_sprs;
+
+
+#define SET_REGISTER( str, val ) \
+({ unsigned long __value = (val); \
+  asm volatile( str : : "r" (__value)); \
+  __value; })
+
+#define        GET_REGISTER( str ) \
+({ unsigned long __value; \
+  asm volatile( str : "=r" (__value) : ); \
+  __value; })
+
+#define         GET_CR()            GET_REGISTER( "mfcr %0" )
+#define         SET_CR(val)         SET_REGISTER( "mtcr %0", val )
+#define         GET_MSR()           GET_REGISTER( "mfmsr %0" )
+#define         SET_MSR(val)        SET_REGISTER( "mtmsr %0", val )
+#define         GET_XER()           GET_REGISTER( "mfspr %0,1" )
+#define         SET_XER(val)        SET_REGISTER( "mtspr 1,%0", val )
+#define         GET_LR()            GET_REGISTER( "mfspr %0,8" )
+#define         SET_LR(val)         SET_REGISTER( "mtspr 8,%0", val )
+#define         GET_CTR()           GET_REGISTER( "mfspr %0,9" )
+#define         SET_CTR(val)        SET_REGISTER( "mtspr 9,%0", val )
+#define         GET_DSISR()         GET_REGISTER( "mfspr %0,18" )
+#define         SET_DSISR(val)      SET_REGISTER( "mtspr 18,%0", val )
+#define         GET_DAR()           GET_REGISTER( "mfspr %0,19" )
+#define         SET_DAR(val)        SET_REGISTER( "mtspr 19,%0", val )
+#define         GET_DEC()           GET_REGISTER( "mfspr %0,22" )
+#define         SET_DEC(val)        SET_REGISTER( "mtspr 22,%0", val )
+#define         GET_SRR0()          GET_REGISTER( "mfspr %0,26" )
+#define         SET_SRR0(val)       SET_REGISTER( "mtspr 26,%0", val )
+#define         GET_SRR1()          GET_REGISTER( "mfspr %0,27" )
+#define         SET_SRR1(val)       SET_REGISTER( "mtspr 27,%0", val )
+#define         GET_EIE()           GET_REGISTER( "mfspr %0,80" )
+#define         SET_EIE(val)        SET_REGISTER( "mtspr 80,%0", val )
+#define         GET_EID()           GET_REGISTER( "mfspr %0,81" )
+#define         SET_EID(val)        SET_REGISTER( "mtspr 81,%0", val )
+#define         GET_CMPA()          GET_REGISTER( "mfspr %0,144" )
+#define         SET_CMPA(val)       SET_REGISTER( "mtspr 144,%0", val )
+#define         GET_CMPB()          GET_REGISTER( "mfspr %0,145" )
+#define         SET_CMPB(val)       SET_REGISTER( "mtspr 145,%0", val )
+#define         GET_CMPC()          GET_REGISTER( "mfspr %0,146" )
+#define         SET_CMPC(val)       SET_REGISTER( "mtspr 146,%0", val )
+#define         GET_CMPD()          GET_REGISTER( "mfspr %0,147" )
+#define         SET_CMPD(val)       SET_REGISTER( "mtspr 147,%0", val )
+#define         GET_ICR()           GET_REGISTER( "mfspr %0,148" )
+#define         SET_ICR(val)        SET_REGISTER( "mtspr 148,%0", val )
+#define         GET_DER()           GET_REGISTER( "mfspr %0,149" )
+#define         SET_DER(val)        SET_REGISTER( "mtspr 149,%0", val )
+#define         GET_COUNTA()        GET_REGISTER( "mfspr %0,150" )
+#define         SET_COUNTA(val)     SET_REGISTER( "mtspr 150,%0", val )
+#define         GET_COUNTB()        GET_REGISTER( "mfspr %0,151" )
+#define         SET_COUNTB(val)     SET_REGISTER( "mtspr 151,%0", val )
+#define         GET_CMPE()          GET_REGISTER( "mfspr %0,152" )
+#define         SET_CMPE(val)       SET_REGISTER( "mtspr 152,%0", val )
+#define         GET_CMPF()          GET_REGISTER( "mfspr %0,153" )
+#define         SET_CMPF(val)       SET_REGISTER( "mtspr 153,%0", val )
+#define         GET_CMPG()          GET_REGISTER( "mfspr %0,154" )
+#define         SET_CMPG(val)       SET_REGISTER( "mtspr 154,%0", val )
+#define         GET_CMPH()          GET_REGISTER( "mfspr %0,155" )
+#define         SET_CMPH(val)       SET_REGISTER( "mtspr 155,%0", val )
+#define  GET_LCTRL1()       GET_REGISTER( "mfspr %0,156" )
+#define         SET_LCTRL1(val)     SET_REGISTER( "mtspr 156,%0", val )
+#define  GET_LCTRL2()       GET_REGISTER( "mfspr %0,157" )
+#define         SET_LCTRL2(val)     SET_REGISTER( "mtspr 157,%0", val )
+#define  GET_ICTRL()        GET_REGISTER( "mfspr %0,158" )
+#define         SET_ICTRL(val)      SET_REGISTER( "mtspr 158,%0", val )
+#define  GET_BAR()          GET_REGISTER( "mfspr %0,159" )
+#define         SET_BAR(val)        SET_REGISTER( "mtspr 159,%0", val )
+#define  GET_USPRG0()       GET_REGISTER( "mfspr %0,256" )
+#define         SET_USPRG0(val)     SET_REGISTER( "mtspr 256,%0", val )
+#define  GET_SPRG4_RO()             GET_REGISTER( "mfspr %0,260" )
+#define         SET_SPRG4_RO(val)   SET_REGISTER( "mtspr 260,%0", val )
+#define  GET_SPRG5_RO()             GET_REGISTER( "mfspr %0,261" )
+#define         SET_SPRG5_RO(val)   SET_REGISTER( "mtspr 261,%0", val )
+#define  GET_SPRG6_RO()             GET_REGISTER( "mfspr %0,262" )
+#define         SET_SPRG6_RO(val)   SET_REGISTER( "mtspr 262,%0", val )
+#define  GET_SPRG7_RO()             GET_REGISTER( "mfspr %0,263" )
+#define         SET_SPRG7_RO(val)   SET_REGISTER( "mtspr 263,%0", val )
+#define  GET_SPRG0()        GET_REGISTER( "mfspr %0,272" )
+#define         SET_SPRG0(val)      SET_REGISTER( "mtspr 272,%0", val )
+#define  GET_SPRG1()        GET_REGISTER( "mfspr %0,273" )
+#define         SET_SPRG1(val)      SET_REGISTER( "mtspr 273,%0", val )
+#define  GET_SPRG2()        GET_REGISTER( "mfspr %0,274" )
+#define         SET_SPRG2(val)      SET_REGISTER( "mtspr 274,%0", val )
+#define  GET_SPRG3()        GET_REGISTER( "mfspr %0,275" )
+#define         SET_SPRG3(val)      SET_REGISTER( "mtspr 275,%0", val )
+#define  GET_SPRG4()        GET_REGISTER( "mfspr %0,276" )
+#define         SET_SPRG4(val)      SET_REGISTER( "mtspr 276,%0", val )
+#define  GET_SPRG5()        GET_REGISTER( "mfspr %0,277" )
+#define         SET_SPRG5(val)      SET_REGISTER( "mtspr 277,%0", val )
+#define  GET_SPRG6()        GET_REGISTER( "mfspr %0,278" )
+#define         SET_SPRG6(val)      SET_REGISTER( "mtspr 278,%0", val )
+#define  GET_SPRG7()        GET_REGISTER( "mfspr %0,279" )
+#define         SET_SPRG7(val)      SET_REGISTER( "mtspr 279,%0", val )
+#define  GET_EAR()          GET_REGISTER( "mfspr %0,282" )
+#define         SET_EAR(val)        SET_REGISTER( "mtspr 282,%0", val )
+#define  GET_TBL()          GET_REGISTER( "mfspr %0,284" )
+#define         SET_TBL(val)        SET_REGISTER( "mtspr 284,%0", val )
+#define  GET_TBU()          GET_REGISTER( "mfspr %0,285" )
+#define         SET_TBU(val)        SET_REGISTER( "mtspr 285,%0", val )
+#define  GET_PVR()          GET_REGISTER( "mfspr %0,287" )
+#define         SET_PVR(val)        SET_REGISTER( "mtspr 287,%0", val )
+#define  GET_IC_CST()       GET_REGISTER( "mfspr %0,560" )
+#define         SET_IC_CST(val)     SET_REGISTER( "mtspr 560,%0", val )
+#define  GET_IC_ADR()       GET_REGISTER( "mfspr %0,561" )
+#define         SET_IC_ADR(val)     SET_REGISTER( "mtspr 561,%0", val )
+#define  GET_IC_DAT()       GET_REGISTER( "mfspr %0,562" )
+#define         SET_IC_DAT(val)     SET_REGISTER( "mtspr 562,%0", val )
+#define  GET_DC_CST()       GET_REGISTER( "mfspr %0,568" )
+#define         SET_DC_CST(val)     SET_REGISTER( "mtspr 568,%0", val )
+#define  GET_DC_ADR()       GET_REGISTER( "mfspr %0,569" )
+#define         SET_DC_ADR(val)     SET_REGISTER( "mtspr 569,%0", val )
+#define  GET_DC_DAT()       GET_REGISTER( "mfspr %0,570" )
+#define         SET_DC_DAT(val)     SET_REGISTER( "mtspr 570,%0", val )
+#define  GET_DPDR()         GET_REGISTER( "mfspr %0,630" )
+#define         SET_DPDR(val)       SET_REGISTER( "mtspr 630,%0", val )
+#define  GET_IMMR()         GET_REGISTER( "mfspr %0,638" )
+#define         SET_IMMR(val)       SET_REGISTER( "mtspr 638,%0", val )
+#define  GET_MI_CTR()       GET_REGISTER( "mfspr %0,784" )
+#define         SET_MI_CTR(val)     SET_REGISTER( "mtspr 784,%0", val )
+#define  GET_MI_AP()        GET_REGISTER( "mfspr %0,786" )
+#define         SET_MI_AP(val)      SET_REGISTER( "mtspr 786,%0", val )
+#define  GET_MI_EPN()       GET_REGISTER( "mfspr %0,787" )
+#define         SET_MI_EPN(val)     SET_REGISTER( "mtspr 787,%0", val )
+#define  GET_MI_TWC()       GET_REGISTER( "mfspr %0,789" )
+#define         SET_MI_TWC(val)     SET_REGISTER( "mtspr 789,%0", val )
+#define  GET_MI_RPN()       GET_REGISTER( "mfspr %0,790" )
+#define         SET_MI_RPN(val)     SET_REGISTER( "mtspr 790,%0", val )
+#define  GET_MD_CTR()       GET_REGISTER( "mfspr %0,792" )
+#define         SET_MD_CTR(val)     SET_REGISTER( "mtspr 792,%0", val )
+#define  GET_M_CASID()      GET_REGISTER( "mfspr %0,793" )
+#define         SET_M_CASID(val)    SET_REGISTER( "mtspr 793,%0", val )
+#define  GET_MD_AP()        GET_REGISTER( "mfspr %0,794" )
+#define         SET_MD_AP(val)      SET_REGISTER( "mtspr ,794%0", val )
+#define  GET_MD_EPN()       GET_REGISTER( "mfspr %0,795" )
+#define         SET_MD_EPN(val)     SET_REGISTER( "mtspr 795,%0", val )
+#define  GET_M_TWB()        GET_REGISTER( "mfspr %0,796" )
+#define         SET_M_TWB(val)      SET_REGISTER( "mtspr 796,%0", val )
+#define  GET_MD_TWC()       GET_REGISTER( "mfspr %0,797" )
+#define         SET_MD_TWC(val)     SET_REGISTER( "mtspr 797,%0", val )
+#define  GET_MD_RPN()       GET_REGISTER( "mfspr %0,798" )
+#define         SET_MD_RPN(val)     SET_REGISTER( "mtspr 798,%0", val )
+#define  GET_M_TW()         GET_REGISTER( "mfspr %0,799" )
+#define         SET_M_TW(val)       SET_REGISTER( "mtspr 799,%0", val )
+#define  GET_MI_DBCAM()      GET_REGISTER( "mfspr %0,816" )
+#define         SET_MI_DBCAM(val)   SET_REGISTER( "mtspr 816,%0", val )
+#define  GET_MI_DBRAM0()     GET_REGISTER( "mfspr %0,817" )
+#define         SET_MI_DBRAM0(val)  SET_REGISTER( "mtspr 817,%0", val )
+#define  GET_MI_DBRAM1()     GET_REGISTER( "mfspr %0,818" )
+#define         SET_MI_DBRAM1(val)  SET_REGISTER( "mtspr 818,%0", val )
+#define  GET_MD_DBCAM()      GET_REGISTER( "mfspr %0,824" )
+#define         SET_MD_DBCA(val)    SET_REGISTER( "mtspr 824,%0", val )
+#define  GET_MD_DBRAM0()     GET_REGISTER( "mfspr %0,825" )
+#define         SET_MD_DBRAM0(val)  SET_REGISTER( "mtspr 825,%0", val )
+#define  GET_MD_DBRAM1()     GET_REGISTER( "mfspr %0,826" )
+#define         SET_MD_DBRAM1(val)  SET_REGISTER( "mtspr 826,%0", val )
+#define  GET_ZPR()           GET_REGISTER( "mfspr %0,944" )
+#define         SET_ZPR(val)        SET_REGISTER( "mtspr 944,%0", val )
+#define  GET_PID()          GET_REGISTER( "mfspr %0,945" )
+#define         SET_PID(val)        SET_REGISTER( "mtspr 945,%0", val )
+#define  GET_CCR0()         GET_REGISTER( "mfspr %0,947" )
+#define         SET_CCR0(val)       SET_REGISTER( "mtspr 947,%0", val )
+#define         GET_IAC3()          GET_REGISTER( "mfspr %0,948" )
+#define         SET_IAC3(val)       SET_REGISTER( "mtspr 948,%0", val )
+#define         GET_IAC4()          GET_REGISTER( "mfspr %0,949" )
+#define         SET_IAC4(val)       SET_REGISTER( "mtspr 949,%0", val )
+#define         GET_DVC1()          GET_REGISTER( "mfspr %0,950" )
+#define         SET_DVC1(val)       SET_REGISTER( "mtspr 950,%0", val )
+#define         GET_DVC2()          GET_REGISTER( "mfspr %0,951" )
+#define         SET_DVC2(val)       SET_REGISTER( "mtspr 951,%0", val )
+#define         GET_SGR()           GET_REGISTER( "mfspr %0,953" )
+#define         SET_SGR(val)        SET_REGISTER( "mtspr 953,%0", val )
+#define         GET_DCWR()          GET_REGISTER( "mfspr %0,954" )
+#define         SET_DCWR(val)       SET_REGISTER( "mtspr 954,%0", val )
+#define         GET_SLER()          GET_REGISTER( "mfspr %0,955" )
+#define         SET_SLER(val)       SET_REGISTER( "mtspr 955,%0", val )
+#define         GET_SU0R()          GET_REGISTER( "mfspr %0,956" )
+#define         SET_SU0R(val)       SET_REGISTER( "mtspr 956,%0", val )
+#define         GET_DBCR1()         GET_REGISTER( "mfspr %0,957" )
+#define         SET_DBCR1(val)      SET_REGISTER( "mtspr 957,%0", val )
+#define         GET_ICDBDR()        GET_REGISTER( "mfspr %0,979" )
+#define         SET_ICDBDR(val)     SET_REGISTER( "mtspr 979,%0", val )
+#define         GET_ESR()           GET_REGISTER( "mfspr %0,980" )
+#define         SET_ESR(val)        SET_REGISTER( "mtspr 980,%0", val )
+#define         GET_DEAR()          GET_REGISTER( "mfspr %0,981" )
+#define         SET_DEAR(val)       SET_REGISTER( "mtspr 981,%0", val )
+#define         GET_EVPR()          GET_REGISTER( "mfspr %0,982" )
+#define         SET_EVPR(val)       SET_REGISTER( "mtspr 982,%0", val )
+#define         GET_TSR()           GET_REGISTER( "mfspr %0,984" )
+#define         SET_TSR(val)        SET_REGISTER( "mtspr 984,%0", val )
+#define         GET_TCR()           GET_REGISTER( "mfspr %0,986" )
+#define         SET_TCR(val)        SET_REGISTER( "mtspr 986,%0", val )
+#define         GET_PIT()           GET_REGISTER( "mfspr %0,987" )
+#define         SET_PIT(val)        SET_REGISTER( "mtspr 987,%0", val )
+#define         GET_SRR2()          GET_REGISTER( "mfspr %0,990" )
+#define         SET_SRR2(val)       SET_REGISTER( "mtspr 990,%0", val )
+#define         GET_SRR3()          GET_REGISTER( "mfspr %0,991" )
+#define         SET_SRR3(val)       SET_REGISTER( "mtspr 991,%0", val )
+#define         GET_DBSR()          GET_REGISTER( "mfspr %0,1008" )
+#define         SET_DBSR(val)       SET_REGISTER( "mtspr 1008,%0", val )
+#define         GET_DBCR0()         GET_REGISTER( "mfspr %0,1010" )
+#define         SET_DBCR0(val)      SET_REGISTER( "mtspr 1010,%0", val )
+#define         GET_IABR()          GET_REGISTER( "mfspr %0,1010" )
+#define         SET_IABR(val)       SET_REGISTER( "mtspr 1010,%0", val )
+#define         GET_IAC1()          GET_REGISTER( "mfspr %0,1012" )
+#define         SET_IAC1(val)       SET_REGISTER( "mtspr 1012,%0", val )
+#define         GET_IAC2()          GET_REGISTER( "mfspr %0,1013" )
+#define         SET_IAC2(val)       SET_REGISTER( "mtspr 1013,%0", val )
+#define         GET_DAC1()          GET_REGISTER( "mfspr %0,1014" )
+#define         SET_DAC1(val)       SET_REGISTER( "mtspr 1014,%0", val )
+#define         GET_DAC2()          GET_REGISTER( "mfspr %0,1015" )
+#define         SET_DAC2(val)       SET_REGISTER( "mtspr 1015,%0", val )
+#define         GET_DCCR()          GET_REGISTER( "mfspr %0,1018" )
+#define         SET_DCCR(val)       SET_REGISTER( "mtspr 1018,%0", val )
+#define         GET_ICCR()          GET_REGISTER( "mfspr %0,1019" )
+#define         SET_ICCR(val)       SET_REGISTER( "mtspr 1019,%0", val )
+
+#endif /* _REGS_H */
+
+
+/*
+ * Copyright (c) 2000 William L. Pitts and W. Gerald Hicks
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms are freely
+ * permitted provided that the above copyright notice and this
+ * paragraph and the following disclaimer are duplicated in all
+ * such forms.
+ *
+ * This software is provided "AS IS" and without any express or
+ * implied warranties, including, without limitation, the implied
+ * warranties of merchantability and fitness for a particular
+ * purpose.
+ */
diff -Naur u-boot-2009.03_orig/include/bedbug/tables.h u-boot-2009.03/include/bedbug/tables.h
--- u-boot-2009.03_orig/include/bedbug/tables.h 2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/include/bedbug/tables.h      2009-03-31 15:00:04.733213600 -0700
@@ -1,601 +1,601 @@
-/* $Id$ */
-
-#ifndef TABLES_H
-#define TABLES_H
-
-/* This is only included by common/bedbug.c, and depends on the following
- * files to already be included
- *   common.h
- *   bedbug/bedbug.h
- *   bedbug/ppc.h
- *   bedbug/regs.h
- */
-
-struct operand operands[] = {
-  /*Field    Name     Bits  Shift  Hint                           Position     */
-  /*-----    ------   ----- -----  ----                           ------------ */
-  { O_AA,    "O_AA",   1,     1,  OH_SILENT },         /*   30         */
-  { O_BD,    "O_BD",   14,     2,  OH_ADDR },          /* 16-29        */
-  { O_BI,    "O_BI",   5,    16,  0 },                 /* 11-15        */
-  { O_BO,    "O_BO",   5,    21,  0 },                 /*  6-10        */
-  { O_crbD,  "O_crbD", 5,    21,  0 },                 /*  6-10        */
-  { O_crbA,  "O_crbA", 5,    16,  0 },                 /* 11-15        */
-  { O_crbB,  "O_crbB", 5,    11,  0 },                 /* 16-20        */
-  { O_CRM,   "O_CRM",  8,    12,  0 },                 /* 12-19        */
-  { O_d,     "O_d",    15,     0,  OH_OFFSET },                /* 16-31        */
-  { O_frC,   "O_frC",  5,     6,  0 },                 /* 21-25        */
-  { O_frD,   "O_frD",  5,    21,  0 },                 /*  6-10        */
-  { O_frS,   "O_frS",  5,    21,  0 },                 /*  6-10        */
-  { O_IMM,   "O_IMM",  4,    12,  0 },                 /* 16-19        */
-  { O_LI,    "O_LI",   24,     2,  OH_ADDR },          /*  6-29        */
-  { O_LK,    "O_LK",   1,     0,  OH_SILENT },         /*   31         */
-  { O_MB,    "O_MB",   5,     6,  0 },                 /* 21-25        */
-  { O_ME,    "O_ME",   5,     1,  0 },                 /* 26-30        */
-  { O_NB,    "O_NB",   5,    11,  0 },                 /* 16-20        */
-  { O_OE,    "O_OE",   1,    10,  OH_SILENT },         /*   21         */
-  { O_rA,    "O_rA",   5,    16,  OH_REG },            /* 11-15        */
-  { O_rB,    "O_rB",   5,    11,  OH_REG },            /* 16-20        */
-  { O_Rc,    "O_Rc",   1,     0,  OH_SILENT },         /*   31         */
-  { O_rD,    "O_rD",   5,    21,  OH_REG },            /*  6-10        */
-  { O_rS,    "O_rS",   5,    21,  OH_REG },            /*  6-10        */
-  { O_SH,    "O_SH",   5,    11,  0 },                 /* 16-20        */
-  { O_SIMM,  "O_SIMM", 16,     0,  0 },                        /* 16-31        */
-  { O_SR,    "O_SR",   4,    16,  0 },                 /* 12-15        */
-  { O_TO,    "O_TO",   5,    21,  0 },                 /*  6-10        */
-  { O_UIMM,  "O_UIMM", 16,     0,  0 },                        /* 16-31        */
-  { O_crfD,  "O_crfD", 3,    23,  0 },                 /*  6- 8        */
-  { O_crfS,  "O_crfS", 3,    18,  0 },                 /* 11-13        */
-  { O_L,     "O_L",    1,    21,  0 },                 /*   10         */
-  { O_spr,   "O_spr",  10,    11,  OH_SPR },           /* 11-20        */
-  { O_tbr,   "O_tbr",  10,    11,  OH_TBR },           /* 11-20        */
-  { O_cr2,   "O_cr2",  0,     0,  OH_LITERAL },        /* "cr2"        */
-};
-
-const unsigned int n_operands = sizeof(operands) / sizeof(operands[0]);
-
-/* A note about the fields array in the opcodes structure:
-   The operands are listed in the order they appear in the output.
-
-   This table is arranged in numeric order of the opcode.  Note that some
-   opcodes have defined bits in odd places so not all forms of a command
-   will be in the same place.  This is done so that a binary search can be
-   done to find the opcodes.  Note that table D.2 in the MPC860 User's
-   Manual "Instructions Sorted by Opcode" does not account for these
-   bit locations */
-
-struct opcode opcodes[] = {
-  { D_OPCODE(3),          D_MASK,   {O_TO, O_rA, O_SIMM, 0},
-    0,              "twi",          0 },
-  { D_OPCODE(7),          D_MASK,   {O_rD, O_rA, O_SIMM, 0},
-    0,              "mulli",        0 },
-  { D_OPCODE(8),          D_MASK,   {O_rD, O_rA, O_SIMM, 0},
-    0,              "subfic",       0 },
-  { D_OPCODE(10),         D_MASK,   {O_crfD, O_L, O_rA, O_UIMM, 0},
-    0,              "cmpli",        0 },
-  { D_OPCODE(11),         D_MASK,   {O_crfD, O_L, O_rA, O_SIMM, 0},
-    0,              "cmpi",         0 },
-  { D_OPCODE(12),         D_MASK,   {O_rD, O_rA, O_SIMM, 0},
-    0,              "addic",        0 },
-  { D_OPCODE(13),         D_MASK,   {O_rD, O_rA, O_SIMM, 0},
-    0,              "addic.",       0 },
-  { D_OPCODE(14),         D_MASK,   {O_rD, O_rA, O_SIMM, 0},
-    0,              "addi",         H_RA0_IS_0 },
-  { D_OPCODE(15),         D_MASK,   {O_rD, O_rA, O_SIMM, 0},
-    0,              "addis",        H_RA0_IS_0|H_IMM_HIGH },
-  { B_OPCODE(16,0,0),     B_MASK,   {O_BO, O_BI, O_BD, O_AA, O_LK, 0},
-    handle_bc,      "bc",           H_RELATIVE },
-  { B_OPCODE(16,0,1),     B_MASK,   {O_BO, O_BI, O_BD, O_AA, O_LK, 0},
-    0,              "bcl",          H_RELATIVE },
-  { B_OPCODE(16,1,0),     B_MASK,   {O_BO, O_BI, O_BD, O_AA, O_LK, 0},
-    0,              "bca",          0 },
-  { B_OPCODE(16,1,1),     B_MASK,   {O_BO, O_BI, O_BD, O_AA, O_LK, 0},
-    0,              "bcla",         0 },
-  { SC_OPCODE(17),        SC_MASK,  {0},
-    0,              "sc",           0 },
-  { I_OPCODE(18,0,0),     I_MASK,   {O_LI, O_AA, O_LK, 0},
-    0,              "b",            H_RELATIVE },
-  { I_OPCODE(18,0,1),     I_MASK,   {O_LI, O_AA, O_LK, 0},
-    0,              "bl",           H_RELATIVE },
-  { I_OPCODE(18,1,0),     I_MASK,   {O_LI, O_AA, O_LK, 0},
-    0,              "ba",           0 },
-  { I_OPCODE(18,1,1),     I_MASK,   {O_LI, O_AA, O_LK, 0},
-    0,              "bla",          0 },
-  { XL_OPCODE(19,0,0),    XL_MASK,  {O_crfD, O_crfS},
-    0,              "mcrf",         0 },
-  { XL_OPCODE(19,16,0),    XL_MASK,  {O_BO, O_BI, O_LK, 0},
-    0,              "bclr",         0 },
-  { XL_OPCODE(19,16,1),    XL_MASK,  {O_BO, O_BI, O_LK, 0},
-    0,              "bclrl",        0 },
-  { XL_OPCODE(19,33,0),    XL_MASK,  {O_crbD, O_crbA, O_crbB, 0},
-    0,              "crnor",        0 },
-  { XL_OPCODE(19,50,0),    XL_MASK,  {0},
-    0,              "rfi",          0 },
-  { XL_OPCODE(19,129,0),   XL_MASK,  {O_crbD, O_crbA, O_crbB, 0},
-    0,              "crandc",       0 },
-  { XL_OPCODE(19,150,0),   XL_MASK,  {0},
-    0,              "isync",        0 },
-  { XL_OPCODE(19,193,0),   XL_MASK,  {O_crbD, O_crbA, O_crbB, 0},
-    0,              "crxor",        0 },
-  { XL_OPCODE(19,225,0),   XL_MASK,  {O_crbD, O_crbA, O_crbB, 0},
-    0,              "crnand",       0 },
-  { XL_OPCODE(19,257,0),   XL_MASK,  {O_crbD, O_crbA, O_crbB, 0},
-    0,              "crand",        0 },
-  { XL_OPCODE(19,289,0),   XL_MASK,  {O_crbD, O_crbA, O_crbB, 0},
-    0,              "creqv",        0 },
-  { XL_OPCODE(19,417,0),   XL_MASK,  {O_crbD, O_crbA, O_crbB, 0},
-    0,              "crorc",        0 },
-  { XL_OPCODE(19,449,0),   XL_MASK,  {O_crbD, O_crbA, O_crbB, 0},
-    0,              "cror",         0 },
-  { XL_OPCODE(19,528,0),   XL_MASK,  {O_BO, O_BI, O_LK, 0},
-    0,              "bcctr",        0 },
-  { XL_OPCODE(19,528,1),   XL_MASK,  {O_BO, O_BI, O_LK, 0},
-    0,              "bcctrl",       0 },
-  { M_OPCODE(20,0),       M_MASK,   {O_rA, O_rS, O_SH, O_MB, O_ME, O_Rc, 0},
-    0,              "rlwimi",       0 },
-  { M_OPCODE(20,1),       M_MASK,   {O_rA, O_rS, O_SH, O_MB, O_ME, O_Rc, 0},
-    0,              "rlwimi.",      0 },
-  { M_OPCODE(21,0),       M_MASK,   {O_rA, O_rS, O_SH, O_MB, O_ME, O_Rc, 0},
-    0,              "rlwinm",       0 },
-  { M_OPCODE(21,1),       M_MASK,   {O_rA, O_rS, O_SH, O_MB, O_ME, O_Rc, 0},
-    0,              "rlwinm.",      0 },
-  { M_OPCODE(23,0),       M_MASK,   {O_rA, O_rS, O_rB, O_MB, O_ME, O_Rc, 0},
-    0,              "rlwnm",        0 },
-  { M_OPCODE(23,1),       M_MASK,   {O_rA, O_rS, O_rB, O_MB, O_ME, O_Rc, 0},
-    0,              "rlwnm.",       0 },
-  { D_OPCODE(24),         D_MASK,   {O_rA, O_rS, O_UIMM, 0},
-    0,              "ori",          0 },
-  { D_OPCODE(25),         D_MASK,   {O_rA, O_rS, O_UIMM, 0},
-    0,              "oris",         H_IMM_HIGH },
-  { D_OPCODE(26),         D_MASK,   {O_rA, O_rS, O_UIMM, 0},
-    0,              "xori",         0 },
-  { D_OPCODE(27),         D_MASK,   {O_rA, O_rS, O_UIMM, 0},
-    0,              "xoris",        H_IMM_HIGH },
-  { D_OPCODE(28),         D_MASK,   {O_rA, O_rS, O_UIMM, 0},
-    0,              "andi.",        0 },
-  { D_OPCODE(29),         D_MASK,   {O_rA, O_rS, O_UIMM, 0},
-    0,              "andis.",       H_IMM_HIGH },
-  { X_OPCODE(31,0,0),     X_MASK,   {O_crfD, O_L, O_rA, O_rB, 0},
-    0,              "cmp",          0 },
-  { X_OPCODE(31,4,0),     X_MASK,   {O_TO, O_rA, O_rB, 0},
-    0,              "tw",           0 },
-  { XO_OPCODE(31,8,0,0),   XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
-    0,              "subfc",        0 },
-  { XO_OPCODE(31,8,0,1),   XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
-    0,              "subfc.",       0 },
-  { XO_OPCODE(31,10,0,0),  XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
-    0,              "addc",         0 },
-  { XO_OPCODE(31,10,0,1),  XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
-    0,              "addc.",        0 },
-  { XO_OPCODE(31,11,0,0),  XO_MASK,  {O_rD, O_rA, O_rB, O_Rc, 0},
-    0,              "mulhwu",       0 },
-  { XO_OPCODE(31,11,0,1),  XO_MASK,  {O_rD, O_rA, O_rB, O_Rc, 0},
-    0,              "mulhwu.",      0 },
-  { X_OPCODE(31,19,0),    X_MASK,   {O_rD, 0},
-    0,              "mfcr",         0 },
-  { X_OPCODE(31,20,0),    X_MASK,   {O_rD, O_rA, O_rB, 0},
-    0,              "lwarx",        H_RA0_IS_0 },
-  { X_OPCODE(31,23,0),    X_MASK,   {O_rD, O_rA, O_rB, 0},
-    0,              "lwzx",         H_RA0_IS_0 },
-  { X_OPCODE(31,24,0),    X_MASK,   {O_rA, O_rS, O_rB, O_Rc, 0},
-    0,              "slw",          0 },
-  { X_OPCODE(31,24,1),    X_MASK,   {O_rA, O_rS, O_rB, O_Rc, 0},
-    0,              "slw.",         0 },
-  { X_OPCODE(31,26,0),    X_MASK,   {O_rA, O_rS, O_Rc, 0 },
-    0,              "cntlzw",       0 },
-  { X_OPCODE(31,26,1),    X_MASK,   {O_rA, O_rS, O_Rc, 0},
-    0,              "cntlzw.",      0 },
-  { X_OPCODE(31,28,0),    X_MASK,   {O_rA, O_rS, O_rB, O_Rc, 0},
-    0,              "and",          0 },
-  { X_OPCODE(31,28,1),    X_MASK,   {O_rA, O_rS, O_rB, O_Rc, 0},
-    0,              "and.",         0 },
-  { X_OPCODE(31,32,0),    X_MASK,   {O_crfD, O_L, O_rA, O_rB, 0},
-    0,              "cmpl",         0 },
-  { XO_OPCODE(31,40,0,0),  XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
-    0,              "subf",         0 },
-  { XO_OPCODE(31,40,0,1),  XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
-    0,              "subf.",        0 },
-  { X_OPCODE(31,54,0),    X_MASK,   {O_rA, O_rB, 0},
-    0,              "dcbst",        H_RA0_IS_0 },
-  { X_OPCODE(31,55,0),    X_MASK,   {O_rD, O_rA, O_rB, 0},
-    0,              "lwzux",        0 },
-  { X_OPCODE(31,60,0),    X_MASK,   {O_rA, O_rS, O_rB, O_Rc, 0},
-    0,              "andc",         0 },
-  { X_OPCODE(31,60,1),    X_MASK,   {O_rA, O_rS, O_rB, O_Rc, 0},
-    0,              "andc.",        0 },
-  { XO_OPCODE(31,75,0,0),  XO_MASK,  {O_rD, O_rA, O_rB, O_Rc, 0},
-    0,              "mulhw",        0 },
-  { XO_OPCODE(31,75,0,1),  XO_MASK,  {O_rD, O_rA, O_rB, O_Rc, 0},
-    0,              "mulhw.",       0 },
-  { X_OPCODE(31,83,0),    X_MASK,   {O_rD, 0},
-    0,              "mfmsr",        0 },
-  { X_OPCODE(31,86,0),    X_MASK,   {O_rA, O_rB, 0},
-    0,              "dcbf",         H_RA0_IS_0 },
-  { X_OPCODE(31,87,0),    X_MASK,   {O_rD, O_rA, O_rB, 0},
-    0,              "lbzx",         H_RA0_IS_0 },
-  { XO_OPCODE(31,104,0,0), XO_MASK,  {O_rD, O_rA, O_OE, O_Rc, 0},
-    0,              "neg",          0 },
-  { XO_OPCODE(31,104,0,1), XO_MASK,  {O_rD, O_rA, O_OE, O_Rc, 0},
-    0,              "neg.",         0 },
-  { X_OPCODE(31,119,0),    X_MASK,   {O_rD, O_rA, O_rB, 0},
-    0,              "lbzux",        0 },
-  { X_OPCODE(31,124,0),    X_MASK,   {O_rA, O_rS, O_rB, O_Rc, 0},
-    0,              "nor",          0 },
-  { X_OPCODE(31,124,1),    X_MASK,   {O_rA, O_rS, O_rB, O_Rc, 0},
-    0,              "nor.",         0 },
-  { XO_OPCODE(31,136,0,0), XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
-    0,              "subfe",        0 },
-  { XO_OPCODE(31,136,0,1), XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
-    0,              "subfe.",       0 },
-  { XO_OPCODE(31,138,0,0), XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
-    0,              "adde",         0 },
-  { XO_OPCODE(31,138,0,1), XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
-    0,              "adde.",        0 },
-  { XFX_OPCODE(31,144,0),  XFX_MASK, {O_CRM, O_rS, 0},
-    0,              "mtcrf",        0 },
-  { X_OPCODE(31,146,0),    X_MASK,   {O_rS, 0},
-    0,              "mtmsr",        0 },
-  { X_OPCODE(31,150,1),    X_MASK,   {O_rS, O_rA, O_rB, 0},
-    0,              "stwcx.",       0 },
-  { X_OPCODE(31,151,0),    X_MASK,   {O_rS, O_rA, O_rB, 0},
-    0,              "stwx",         0 },
-  { X_OPCODE(31,183,0),    X_MASK,   {O_rS, O_rA, O_rB, 0},
-    0,              "stwux",        0 },
-  { XO_OPCODE(31,200,0,0), XO_MASK,  {O_rD, O_rA, O_OE, O_Rc, 0},
-    0,              "subfze",       0 },
-  { XO_OPCODE(31,200,0,1), XO_MASK,  {O_rD, O_rA, O_OE, O_Rc, 0},
-    0,              "subfze.",      0 },
-  { XO_OPCODE(31,202,0,0), XO_MASK,  {O_rD, O_rA, O_OE, O_Rc, 0},
-    0,              "addze",        0 },
-  { XO_OPCODE(31,202,0,1), XO_MASK,  {O_rD, O_rA, O_OE, O_Rc, 0},
-    0,              "addze.",       0 },
-  { X_OPCODE(31,210,0),    X_MASK,   {O_SR, O_rS, 0},
-    0,              "mtsr",         0 },
-  { X_OPCODE(31,215,0),    X_MASK,   {O_rS, O_rA, O_rB, 0},
-    0,              "stbx",         H_RA0_IS_0 },
-  { XO_OPCODE(31,232,0,0), XO_MASK,  {O_rD, O_rA, O_OE, O_Rc, 0},
-    0,              "subfme",       0 },
-  { XO_OPCODE(31,232,0,1), XO_MASK,  {O_rD, O_rA, O_OE, O_Rc, 0},
-    0,              "subfme.",      0 },
-  { XO_OPCODE(31,234,0,0), XO_MASK,  {O_rD, O_rA, O_OE, O_Rc, 0},
-    0,              "addme",        0 },
-  { XO_OPCODE(31,234,0,1), XO_MASK,  {O_rD, O_rA, O_OE, O_Rc, 0},
-    0,              "addme.",       0 },
-  { XO_OPCODE(31,235,0,0), XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
-    0,              "mullw",        0 },
-  { XO_OPCODE(31,235,0,1), XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
-    0,              "mullw.",       0 },
-  { X_OPCODE(31,242,0),    X_MASK,   {O_rS, O_rB, 0},
-    0,              "mtsrin",       0 },
-  { X_OPCODE(31,246,0),    X_MASK,   {O_rA, O_rB, 0},
-    0,              "dcbtst",       H_RA0_IS_0 },
-  { X_OPCODE(31,247,0),    X_MASK,   {O_rS, O_rA, O_rB, 0},
-    0,              "stbux",        0 },
-  { XO_OPCODE(31,266,0,0), XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
-    0,              "add",          0 },
-  { XO_OPCODE(31,266,0,1), XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
-    0,              "add.",         0 },
-  { X_OPCODE(31,278,0),    X_MASK,   {O_rA, O_rB, 0},
-    0,              "dcbt",         H_RA0_IS_0 },
-  { X_OPCODE(31,279,0),    X_MASK,   {O_rD, O_rA, O_rB, 0},
-    0,              "lhzx",         H_RA0_IS_0 },
-  { X_OPCODE(31,284,0),    X_MASK,   {O_rA, O_rS, O_rB, O_Rc, 0},
-    0,              "eqv",          0 },
-  { X_OPCODE(31,284,1),    X_MASK,   {O_rA, O_rS, O_rB, O_Rc, 0},
-    0,              "eqv.",         0 },
-  { X_OPCODE(31,306,0),    X_MASK,   {O_rB, 0},
-    0,              "tlbie",        0 },
-  { X_OPCODE(31,310,0),    X_MASK,   {O_rD, O_rA, O_rB, 0},
-    0,              "eciwx",        H_RA0_IS_0 },
-  { X_OPCODE(31,311,0),    X_MASK,   {O_rD, O_rA, O_rB, 0},
-    0,              "lhzux",        0 },
-  { X_OPCODE(31,316,0),    X_MASK,   {O_rA, O_rS, O_rB, O_Rc, 0},
-    0,              "xor",          0 },
-  { X_OPCODE(31,316,1),    X_MASK,   {O_rA, O_rS, O_rB, O_Rc, 0},
-    0,              "xor.",         0 },
-  { XFX_OPCODE(31,339,0),  XFX_MASK, {O_rD, O_spr, 0},
-    0,              "mfspr",        0 },
-  { X_OPCODE(31,343,0),    X_MASK,   {O_rD, O_rA, O_rB, 0},
-    0,              "lhax",         H_RA0_IS_0 },
-  { X_OPCODE(31,370,0),    X_MASK,   {0},
-    0,              "tlbia",        0 },
-  { XFX_OPCODE(31,371,0),  XFX_MASK, {O_rD, O_tbr, 0},
-    0,              "mftb",         0 },
-  { X_OPCODE(31,375,0),    X_MASK,   {O_rD, O_rA, O_rB, 0},
-    0,              "lhaux",        0 },
-  { X_OPCODE(31,407,0),    X_MASK,   {O_rS, O_rA, O_rB, 0},
-    0,              "sthx",         H_RA0_IS_0 },
-  { X_OPCODE(31,412,0),    X_MASK,   {O_rA, O_rS, O_rB, O_Rc, 0},
-    0,              "orc",          0 },
-  { X_OPCODE(31,412,1),    X_MASK,   {O_rA, O_rS, O_rB, O_Rc, 0},
-    0,              "orc.",         0 },
-  { X_OPCODE(31,438,0),    X_MASK,   {O_rS, O_rA, O_rB, 0},
-    0,              "ecowx",        H_RA0_IS_0 },
-  { X_OPCODE(31,439,0),    X_MASK,   {O_rS, O_rA, O_rB, 0},
-    0,              "sthux",        0 },
-  { X_OPCODE(31,444,0),    X_MASK,   {O_rA, O_rS, O_rB, O_Rc, 0},
-    0,              "or",           0 },
-  { X_OPCODE(31,444,1),    X_MASK,   {O_rA, O_rS, O_rB, O_Rc, 0},
-    0,              "or.",          0 },
-  { XO_OPCODE(31,459,0,0), XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
-    0,              "divwu",        0 },
-  { XO_OPCODE(31,459,0,1), XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
-    0,              "divwu.",       0 },
-  { XFX_OPCODE(31,467,0),  XFX_MASK, {O_spr, O_rS, 0},
-    0,              "mtspr",        0 },
-  { X_OPCODE(31,470,0),    X_MASK,   {O_rA, O_rB, 0},
-    0,              "dcbi",         H_RA0_IS_0 },
-  { X_OPCODE(31,476,0),    X_MASK,   {O_rA, O_rS, O_rB, O_Rc, 0},
-    0,              "nand",         0 },
-  { X_OPCODE(31,476,1),    X_MASK,   {O_rA, O_rS, O_rB, O_Rc,0},
-    0,              "nand.",        0 },
-  { XO_OPCODE(31,491,0,0), XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
-    0,              "divw",         0 },
-  { XO_OPCODE(31,491,0,1), XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
-    0,              "divw.",        0 },
-  { X_OPCODE(31,512,0),    X_MASK,   {O_crfD, 0},
-    0,              "mcrxr",        0 },
-  { XO_OPCODE(31,8,1,0),   XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
-    0,              "subfco",       0 },
-  { XO_OPCODE(31,8,1,1),   XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
-    0,              "subfco.",      0 },
-  { XO_OPCODE(31,10,1,0),  XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
-    0,              "addco",        0 },
-  { XO_OPCODE(31,10,1,1),  XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
-    0,              "addco.",       0 },
-  { X_OPCODE(31,533,0),    X_MASK,   {O_rD, O_rA, O_rB, 0},
-    0,              "lswx",         H_RA0_IS_0 },
-  { X_OPCODE(31,534,0),    X_MASK,   {O_rD, O_rA, O_rB, 0},
-    0,              "lwbrx",        H_RA0_IS_0 },
-  { X_OPCODE(31,536,0),    X_MASK,   {O_rA, O_rS, O_rB, O_Rc, 0},
-    0,              "srw",          0 },
-  { X_OPCODE(31,536,1),    X_MASK,   {O_rA, O_rS, O_rB, O_Rc, 0},
-    0,              "srw.",         0 },
-  { XO_OPCODE(31,40,1,0),  XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
-    0,              "subfo",        0 },
-  { XO_OPCODE(31,40,1,1),  XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
-    0,              "subfo.",       0 },
-  { X_OPCODE(31,566,0),    X_MASK,   {0},
-    0,              "tlbsync",      0 },
-  { X_OPCODE(31,595,0),    X_MASK,   {O_rD, O_SR, 0},
-    0,              "mfsr",         0 },
-  { X_OPCODE(31,597,0),    X_MASK,   {O_rD, O_rA, O_NB, 0},
-    0,              "lswi",         H_RA0_IS_0 },
-  { X_OPCODE(31,598,0),    X_MASK,   {0},
-    0,              "sync",         0 },
-  { XO_OPCODE(31,104,1,0), XO_MASK,  {O_rD, O_rA, O_OE, O_Rc, 0},
-    0,              "nego",         0 },
-  { XO_OPCODE(31,104,1,1), XO_MASK,  {O_rD, O_rA, O_OE, O_Rc, 0},
-    0,              "nego.",        0 },
-  { XO_OPCODE(31,136,1,0), XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
-    0,              "subfeo",       0 },
-  { XO_OPCODE(31,136,1,1), XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
-    0,              "subfeo.",      0 },
-  { XO_OPCODE(31,138,1,0), XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
-    0,              "addeo",        0 },
-  { XO_OPCODE(31,138,1,1), XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
-    0,              "addeo.",       0 },
-  { X_OPCODE(31,659,0),    X_MASK,   {O_rD, O_rB, 0},
-    0,              "mfsrin",       0 },
-  { X_OPCODE(31,661,0),    X_MASK,   {O_rS, O_rA, O_rB, 0},
-    0,              "stswx",        H_RA0_IS_0 },
-  { X_OPCODE(31,662,0),    X_MASK,   {O_rS, O_rA, O_rB, 0},
-    0,              "stwbrx",       H_RA0_IS_0 },
-  { XO_OPCODE(31,200,1,0), XO_MASK,  {O_rD, O_rA, O_OE, O_Rc, 0},
-    0,              "subfzeo",      0 },
-  { XO_OPCODE(31,200,1,1), XO_MASK,  {O_rD, O_rA, O_OE, O_Rc, 0},
-    0,              "subfzeo.",     0 },
-  { XO_OPCODE(31,202,1,0), XO_MASK,  {O_rD, O_rA, O_OE, O_Rc, 0},
-    0,              "addzeo",       0 },
-  { XO_OPCODE(31,202,1,1), XO_MASK,  {O_rD, O_rA, O_OE, O_Rc, 0},
-    0,              "addzeo.",      0 },
-  { X_OPCODE(31,725,0),    X_MASK,   {O_rS, O_rA, O_NB, 0},
-    0,              "stswi",        H_RA0_IS_0 },
-  { XO_OPCODE(31,232,1,0), XO_MASK,  {O_rD, O_rA, O_OE, O_Rc, 0},
-    0,              "subfmeo",      0 },
-  { XO_OPCODE(31,232,1,1), XO_MASK,  {O_rD, O_rA, O_OE, O_Rc, 0},
-    0,              "subfmeo.",     0 },
-  { XO_OPCODE(31,234,1,0), XO_MASK,  {O_rD, O_rA, O_OE, O_Rc, 0},
-    0,              "addmeo",       0 },
-  { XO_OPCODE(31,234,1,1), XO_MASK,  {O_rD, O_rA, O_OE, O_Rc, 0},
-    0,              "addmeo.",      0 },
-  { XO_OPCODE(31,235,1,0), XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
-    0,              "mullwo",       0 },
-  { XO_OPCODE(31,235,1,1), XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
-    0,              "mullwo.",      0 },
-  { XO_OPCODE(31,266,1,0), XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
-    0,              "addo",         0 },
-  { XO_OPCODE(31,266,1,1), XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
-    0,              "addo.",        0 },
-  { X_OPCODE(31,790,0),    X_MASK,   {O_rD, O_rA, O_rB, 0},
-    0,              "lhbrx",        H_RA0_IS_0 },
-  { X_OPCODE(31,792,0),    X_MASK,   {O_rA, O_rS, O_rB, O_Rc, 0},
-    0,              "sraw",         0 },
-  { X_OPCODE(31,792,1),    X_MASK,   {O_rA, O_rS, O_rB, O_Rc, 0},
-    0,              "sraw.",        0 },
-  { X_OPCODE(31,824,0),    X_MASK,   {O_rA, O_rS, O_SH, O_Rc, 0},
-    0,              "srawi",        0 },
-  { X_OPCODE(31,824,1),    X_MASK,   {O_rA, O_rS, O_SH, O_Rc, 0},
-    0,              "srawi.",       0 },
-  { X_OPCODE(31,854,0),    X_MASK,   {0},
-    0,              "eieio",        0 },
-  { X_OPCODE(31,918,0),    X_MASK,   {O_rS, O_rA, O_rB, 0},
-    0,              "sthbrx",       H_RA0_IS_0 },
-  { X_OPCODE(31,922,0),    X_MASK,   {O_rA, O_rS, O_Rc, 0},
-    0,              "extsh",        0 },
-  { X_OPCODE(31,922,1),    X_MASK,   {O_rA, O_rS, O_Rc, 0},
-    0,              "extsh.",       0 },
-  { X_OPCODE(31,954,0),    X_MASK,   {O_rA, O_rS, O_Rc, 0},
-    0,              "extsb",        0 },
-  { X_OPCODE(31,954,1),    X_MASK,   {O_rA, O_rS, O_Rc, 0},
-    0,              "extsb.",       0 },
-  { XO_OPCODE(31,459,1,0), XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
-    0,              "divwuo",       0 },
-  { XO_OPCODE(31,459,1,1), XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
-    0,              "divwuo.",      0 },
-  { X_OPCODE(31,978,0),    X_MASK,   {O_rB, 0},
-    0,              "tlbld",        0 },
-  { X_OPCODE(31,982,0),    X_MASK,   {O_rA, O_rB, 0},
-    0,              "icbi",         H_RA0_IS_0 },
-  { XO_OPCODE(31,491,1,0), XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
-    0,              "divwo",        0 },
-  { XO_OPCODE(31,491,1,1), XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
-    0,              "divwo.",       0 },
-  { X_OPCODE(31,1010,0),   X_MASK,   {O_rB, 0},
-    0,              "tlbli",        0 },
-  { X_OPCODE(31,1014,0),   X_MASK,   {O_rA, O_rB, 0},
-    0,              "dcbz",         H_RA0_IS_0 },
-  { D_OPCODE(32),         D_MASK,   {O_rD, O_d, O_rA, 0},
-    0,              "lwz",          H_RA0_IS_0 },
-  { D_OPCODE(33),         D_MASK,   {O_rD, O_d, O_rA, 0},
-    0,              "lwzu",         0 },
-  { D_OPCODE(34),         D_MASK,   {O_rD, O_d, O_rA, 0},
-    0,              "lbz",          H_RA0_IS_0 },
-  { D_OPCODE(35),         D_MASK,   {O_rD, O_d, O_rA, 0},
-    0,              "lbzu",         0 },
-  { D_OPCODE(36),         D_MASK,   {O_rS, O_d, O_rA, 0},
-    0,              "stw",          H_RA0_IS_0 },
-  { D_OPCODE(37),         D_MASK,   {O_rS, O_d, O_rA, 0},
-    0,              "stwu",         0 },
-  { D_OPCODE(38),         D_MASK,   {O_rS, O_d, O_rA, 0},
-    0,              "stb",          H_RA0_IS_0 },
-  { D_OPCODE(39),         D_MASK,   {O_rS, O_d, O_rA, 0},
-    0,              "stbu",         0 },
-  { D_OPCODE(40),         D_MASK,   {O_rD, O_d, O_rA, 0},
-    0,              "lhz",          H_RA0_IS_0 },
-  { D_OPCODE(41),         D_MASK,   {O_rD, O_d, O_rA, 0},
-    0,              "lhzu",         0 },
-  { D_OPCODE(42),         D_MASK,   {O_rD, O_d, O_rA, 0},
-    0,              "lha",          H_RA0_IS_0 },
-  { D_OPCODE(43),         D_MASK,   {O_rD, O_d, O_rA, 0},
-    0,              "lhau",         0 },
-  { D_OPCODE(44),         D_MASK,   {O_rS, O_d, O_rA, 0},
-    0,              "sth",          H_RA0_IS_0 },
-  { D_OPCODE(45),         D_MASK,   {O_rS, O_d, O_rA, 0},
-    0,              "sthu",         0 },
-  { D_OPCODE(46),         D_MASK,   {O_rD, O_d, O_rA, 0},
-    0,              "lmw",          H_RA0_IS_0 },
-  { D_OPCODE(47),         D_MASK,   {O_rS, O_d, O_rA, 0},
-    0,              "stmw",         H_RA0_IS_0 },
-};
-
-const unsigned int n_opcodes = sizeof(opcodes) / sizeof(opcodes[0]);
-
-struct spr_info spr_map[] = {
-  { SPR_XER,   "XER" },
-  { SPR_LR,    "LR" },
-  { SPR_CTR,   "CTR" },
-  { SPR_DSISR, "DSISR" },
-  { SPR_DAR,   "DAR" },
-  { SPR_DEC,   "DEC" },
-  { SPR_SRR0,  "SRR0" },
-  { SPR_SRR1,  "SRR1" },
-  { SPR_EIE,   "EIE" },
-  { SPR_EID,   "EID" },
-  { SPR_CMPA,  "CMPA" },
-  { SPR_CMPB,  "CMPB" },
-  { SPR_CMPC,  "CMPC" },
-  { SPR_CMPD,  "CMPD" },
-  { SPR_ICR,   "ICR" },
-  { SPR_DER,   "DER" },
-  { SPR_COUNTA,        "COUNTA" },
-  { SPR_COUNTB,        "COUNTB" },
-  { SPR_CMPE,  "CMPE" },
-  { SPR_CMPF,  "CMPF" },
-  { SPR_CMPG,  "CMPG" },
-  { SPR_CMPH,  "CMPH" },
-  { SPR_LCTRL1,        "LCTRL1" },
-  { SPR_LCTRL2,        "LCTRL2" },
-  { SPR_ICTRL, "ICTRL" },
-  { SPR_BAR,   "BAR" },
-  { SPR_USPRG0,        "USPRG0" },
-  { SPR_SPRG4_RO,      "SPRG4_RO" },
-  { SPR_SPRG5_RO,      "SPRG5_RO" },
-  { SPR_SPRG6_RO,      "SPRG6_RO" },
-  { SPR_SPRG7_RO,      "SPRG7_RO" },
-  { SPR_SPRG0, "SPRG0" },
-  { SPR_SPRG1, "SPRG1" },
-  { SPR_SPRG2, "SPRG2" },
-  { SPR_SPRG3, "SPRG3" },
-  { SPR_SPRG4, "SPRG4" },
-  { SPR_SPRG5, "SPRG5" },
-  { SPR_SPRG6, "SPRG6" },
-  { SPR_SPRG7, "SPRG7" },
-  { SPR_EAR,   "EAR" },
-  { SPR_TBL,   "TBL" },
-  { SPR_TBU,   "TBU" },
-  { SPR_IC_CST,        "IC_CST" },
-  { SPR_IC_ADR,        "IC_ADR" },
-  { SPR_IC_DAT,        "IC_DAT" },
-  { SPR_DC_CST,        "DC_CST" },
-  { SPR_DC_ADR,        "DC_ADR" },
-  { SPR_DC_DAT,        "DC_DAT" },
-  { SPR_DPDR,  "DPDR" },
-  { SPR_IMMR,  "IMMR" },
-  { SPR_MI_CTR,        "MI_CTR" },
-  { SPR_MI_AP, "MI_AP" },
-  { SPR_MI_EPN,        "MI_EPN" },
-  { SPR_MI_TWC,        "MI_TWC" },
-  { SPR_MI_RPN,        "MI_RPN" },
-  { SPR_MD_CTR,        "MD_CTR" },
-  { SPR_M_CASID,       "M_CASID" },
-  { SPR_MD_AP, "MD_AP" },
-  { SPR_MD_EPN,        "MD_EPN" },
-  { SPR_M_TWB, "M_TWB" },
-  { SPR_MD_TWC,        "MD_TWC" },
-  { SPR_MD_RPN,        "MD_RPN" },
-  { SPR_M_TW,  "M_TW" },
-  { SPR_MI_DBCAM,      "MI_DBCAM" },
-  { SPR_MI_DBRAM0,     "MI_DBRAM0" },
-  { SPR_MI_DBRAM1,     "MI_DBRAM1" },
-  { SPR_MD_DBCAM,      "MD_DBCAM" },
-  { SPR_MD_DBRAM0,     "MD_DBRAM0" },
-  { SPR_MD_DBRAM1,     "MD_DBRAM1" },
-  { SPR_ZPR,   "ZPR" },
-  { SPR_PID,   "PID" },
-  { SPR_CCR0,  "CCR0" },
-  { SPR_IAC3,  "IAC3" },
-  { SPR_IAC4,  "IAC4" },
-  { SPR_DVC1,  "DVC1" },
-  { SPR_DVC2,  "DVC2" },
-  { SPR_SGR,   "SGR" },
-  { SPR_DCWR,  "DCWR" },
-  { SPR_SLER,  "SLER" },
-  { SPR_SU0R,  "SU0R" },
-  { SPR_DBCR1, "DBCR1" },
-  { SPR_ICDBDR,        "ICDBDR" },
-  { SPR_ESR,   "ESR" },
-  { SPR_DEAR,  "DEAR" },
-  { SPR_EVPR,  "EVPR" },
-  { SPR_TSR,   "TSR" },
-  { SPR_TCR,   "TCR" },
-  { SPR_PIT,   "PIT" },
-  { SPR_SRR2,  "SRR2" },
-  { SPR_SRR3,  "SRR3" },
-  { SPR_DBSR,  "DBSR" },
-  { SPR_DBCR0, "DBCR0" },
-  { SPR_IAC1,  "IAC1" },
-  { SPR_IAC2,  "IAC2" },
-  { SPR_DAC1,  "DAC1" },
-  { SPR_DAC2,  "DAC2" },
-  { SPR_DCCR,  "DCCR" },
-  { SPR_ICCR,  "ICCR" },
-};
-
-const unsigned int n_sprs = sizeof(spr_map) / sizeof(spr_map[0]);
-
-#endif
-
-/*
- * Copyright (c) 2000 William L. Pitts and W. Gerald Hicks
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are freely
- * permitted provided that the above copyright notice and this
- * paragraph and the following disclaimer are duplicated in all
- * such forms.
- *
- * This software is provided "AS IS" and without any express or
- * implied warranties, including, without limitation, the implied
- * warranties of merchantability and fitness for a particular
- * purpose.
- */
+/* $Id: tables.h,v 1.1.1.1 2009/03/25 22:22:21 kenagy Exp $ */
+
+#ifndef TABLES_H
+#define TABLES_H
+
+/* This is only included by common/bedbug.c, and depends on the following
+ * files to already be included
+ *   common.h
+ *   bedbug/bedbug.h
+ *   bedbug/ppc.h
+ *   bedbug/regs.h
+ */
+
+struct operand operands[] = {
+  /*Field    Name     Bits  Shift  Hint                           Position     */
+  /*-----    ------   ----- -----  ----                           ------------ */
+  { O_AA,    "O_AA",   1,     1,  OH_SILENT },         /*   30         */
+  { O_BD,    "O_BD",   14,     2,  OH_ADDR },          /* 16-29        */
+  { O_BI,    "O_BI",   5,    16,  0 },                 /* 11-15        */
+  { O_BO,    "O_BO",   5,    21,  0 },                 /*  6-10        */
+  { O_crbD,  "O_crbD", 5,    21,  0 },                 /*  6-10        */
+  { O_crbA,  "O_crbA", 5,    16,  0 },                 /* 11-15        */
+  { O_crbB,  "O_crbB", 5,    11,  0 },                 /* 16-20        */
+  { O_CRM,   "O_CRM",  8,    12,  0 },                 /* 12-19        */
+  { O_d,     "O_d",    15,     0,  OH_OFFSET },                /* 16-31        */
+  { O_frC,   "O_frC",  5,     6,  0 },                 /* 21-25        */
+  { O_frD,   "O_frD",  5,    21,  0 },                 /*  6-10        */
+  { O_frS,   "O_frS",  5,    21,  0 },                 /*  6-10        */
+  { O_IMM,   "O_IMM",  4,    12,  0 },                 /* 16-19        */
+  { O_LI,    "O_LI",   24,     2,  OH_ADDR },          /*  6-29        */
+  { O_LK,    "O_LK",   1,     0,  OH_SILENT },         /*   31         */
+  { O_MB,    "O_MB",   5,     6,  0 },                 /* 21-25        */
+  { O_ME,    "O_ME",   5,     1,  0 },                 /* 26-30        */
+  { O_NB,    "O_NB",   5,    11,  0 },                 /* 16-20        */
+  { O_OE,    "O_OE",   1,    10,  OH_SILENT },         /*   21         */
+  { O_rA,    "O_rA",   5,    16,  OH_REG },            /* 11-15        */
+  { O_rB,    "O_rB",   5,    11,  OH_REG },            /* 16-20        */
+  { O_Rc,    "O_Rc",   1,     0,  OH_SILENT },         /*   31         */
+  { O_rD,    "O_rD",   5,    21,  OH_REG },            /*  6-10        */
+  { O_rS,    "O_rS",   5,    21,  OH_REG },            /*  6-10        */
+  { O_SH,    "O_SH",   5,    11,  0 },                 /* 16-20        */
+  { O_SIMM,  "O_SIMM", 16,     0,  0 },                        /* 16-31        */
+  { O_SR,    "O_SR",   4,    16,  0 },                 /* 12-15        */
+  { O_TO,    "O_TO",   5,    21,  0 },                 /*  6-10        */
+  { O_UIMM,  "O_UIMM", 16,     0,  0 },                        /* 16-31        */
+  { O_crfD,  "O_crfD", 3,    23,  0 },                 /*  6- 8        */
+  { O_crfS,  "O_crfS", 3,    18,  0 },                 /* 11-13        */
+  { O_L,     "O_L",    1,    21,  0 },                 /*   10         */
+  { O_spr,   "O_spr",  10,    11,  OH_SPR },           /* 11-20        */
+  { O_tbr,   "O_tbr",  10,    11,  OH_TBR },           /* 11-20        */
+  { O_cr2,   "O_cr2",  0,     0,  OH_LITERAL },        /* "cr2"        */
+};
+
+const unsigned int n_operands = sizeof(operands) / sizeof(operands[0]);
+
+/* A note about the fields array in the opcodes structure:
+   The operands are listed in the order they appear in the output.
+
+   This table is arranged in numeric order of the opcode.  Note that some
+   opcodes have defined bits in odd places so not all forms of a command
+   will be in the same place.  This is done so that a binary search can be
+   done to find the opcodes.  Note that table D.2 in the MPC860 User's
+   Manual "Instructions Sorted by Opcode" does not account for these
+   bit locations */
+
+struct opcode opcodes[] = {
+  { D_OPCODE(3),          D_MASK,   {O_TO, O_rA, O_SIMM, 0},
+    0,              "twi",          0 },
+  { D_OPCODE(7),          D_MASK,   {O_rD, O_rA, O_SIMM, 0},
+    0,              "mulli",        0 },
+  { D_OPCODE(8),          D_MASK,   {O_rD, O_rA, O_SIMM, 0},
+    0,              "subfic",       0 },
+  { D_OPCODE(10),         D_MASK,   {O_crfD, O_L, O_rA, O_UIMM, 0},
+    0,              "cmpli",        0 },
+  { D_OPCODE(11),         D_MASK,   {O_crfD, O_L, O_rA, O_SIMM, 0},
+    0,              "cmpi",         0 },
+  { D_OPCODE(12),         D_MASK,   {O_rD, O_rA, O_SIMM, 0},
+    0,              "addic",        0 },
+  { D_OPCODE(13),         D_MASK,   {O_rD, O_rA, O_SIMM, 0},
+    0,              "addic.",       0 },
+  { D_OPCODE(14),         D_MASK,   {O_rD, O_rA, O_SIMM, 0},
+    0,              "addi",         H_RA0_IS_0 },
+  { D_OPCODE(15),         D_MASK,   {O_rD, O_rA, O_SIMM, 0},
+    0,              "addis",        H_RA0_IS_0|H_IMM_HIGH },
+  { B_OPCODE(16,0,0),     B_MASK,   {O_BO, O_BI, O_BD, O_AA, O_LK, 0},
+    handle_bc,      "bc",           H_RELATIVE },
+  { B_OPCODE(16,0,1),     B_MASK,   {O_BO, O_BI, O_BD, O_AA, O_LK, 0},
+    0,              "bcl",          H_RELATIVE },
+  { B_OPCODE(16,1,0),     B_MASK,   {O_BO, O_BI, O_BD, O_AA, O_LK, 0},
+    0,              "bca",          0 },
+  { B_OPCODE(16,1,1),     B_MASK,   {O_BO, O_BI, O_BD, O_AA, O_LK, 0},
+    0,              "bcla",         0 },
+  { SC_OPCODE(17),        SC_MASK,  {0},
+    0,              "sc",           0 },
+  { I_OPCODE(18,0,0),     I_MASK,   {O_LI, O_AA, O_LK, 0},
+    0,              "b",            H_RELATIVE },
+  { I_OPCODE(18,0,1),     I_MASK,   {O_LI, O_AA, O_LK, 0},
+    0,              "bl",           H_RELATIVE },
+  { I_OPCODE(18,1,0),     I_MASK,   {O_LI, O_AA, O_LK, 0},
+    0,              "ba",           0 },
+  { I_OPCODE(18,1,1),     I_MASK,   {O_LI, O_AA, O_LK, 0},
+    0,              "bla",          0 },
+  { XL_OPCODE(19,0,0),    XL_MASK,  {O_crfD, O_crfS},
+    0,              "mcrf",         0 },
+  { XL_OPCODE(19,16,0),    XL_MASK,  {O_BO, O_BI, O_LK, 0},
+    0,              "bclr",         0 },
+  { XL_OPCODE(19,16,1),    XL_MASK,  {O_BO, O_BI, O_LK, 0},
+    0,              "bclrl",        0 },
+  { XL_OPCODE(19,33,0),    XL_MASK,  {O_crbD, O_crbA, O_crbB, 0},
+    0,              "crnor",        0 },
+  { XL_OPCODE(19,50,0),    XL_MASK,  {0},
+    0,              "rfi",          0 },
+  { XL_OPCODE(19,129,0),   XL_MASK,  {O_crbD, O_crbA, O_crbB, 0},
+    0,              "crandc",       0 },
+  { XL_OPCODE(19,150,0),   XL_MASK,  {0},
+    0,              "isync",        0 },
+  { XL_OPCODE(19,193,0),   XL_MASK,  {O_crbD, O_crbA, O_crbB, 0},
+    0,              "crxor",        0 },
+  { XL_OPCODE(19,225,0),   XL_MASK,  {O_crbD, O_crbA, O_crbB, 0},
+    0,              "crnand",       0 },
+  { XL_OPCODE(19,257,0),   XL_MASK,  {O_crbD, O_crbA, O_crbB, 0},
+    0,              "crand",        0 },
+  { XL_OPCODE(19,289,0),   XL_MASK,  {O_crbD, O_crbA, O_crbB, 0},
+    0,              "creqv",        0 },
+  { XL_OPCODE(19,417,0),   XL_MASK,  {O_crbD, O_crbA, O_crbB, 0},
+    0,              "crorc",        0 },
+  { XL_OPCODE(19,449,0),   XL_MASK,  {O_crbD, O_crbA, O_crbB, 0},
+    0,              "cror",         0 },
+  { XL_OPCODE(19,528,0),   XL_MASK,  {O_BO, O_BI, O_LK, 0},
+    0,              "bcctr",        0 },
+  { XL_OPCODE(19,528,1),   XL_MASK,  {O_BO, O_BI, O_LK, 0},
+    0,              "bcctrl",       0 },
+  { M_OPCODE(20,0),       M_MASK,   {O_rA, O_rS, O_SH, O_MB, O_ME, O_Rc, 0},
+    0,              "rlwimi",       0 },
+  { M_OPCODE(20,1),       M_MASK,   {O_rA, O_rS, O_SH, O_MB, O_ME, O_Rc, 0},
+    0,              "rlwimi.",      0 },
+  { M_OPCODE(21,0),       M_MASK,   {O_rA, O_rS, O_SH, O_MB, O_ME, O_Rc, 0},
+    0,              "rlwinm",       0 },
+  { M_OPCODE(21,1),       M_MASK,   {O_rA, O_rS, O_SH, O_MB, O_ME, O_Rc, 0},
+    0,              "rlwinm.",      0 },
+  { M_OPCODE(23,0),       M_MASK,   {O_rA, O_rS, O_rB, O_MB, O_ME, O_Rc, 0},
+    0,              "rlwnm",        0 },
+  { M_OPCODE(23,1),       M_MASK,   {O_rA, O_rS, O_rB, O_MB, O_ME, O_Rc, 0},
+    0,              "rlwnm.",       0 },
+  { D_OPCODE(24),         D_MASK,   {O_rA, O_rS, O_UIMM, 0},
+    0,              "ori",          0 },
+  { D_OPCODE(25),         D_MASK,   {O_rA, O_rS, O_UIMM, 0},
+    0,              "oris",         H_IMM_HIGH },
+  { D_OPCODE(26),         D_MASK,   {O_rA, O_rS, O_UIMM, 0},
+    0,              "xori",         0 },
+  { D_OPCODE(27),         D_MASK,   {O_rA, O_rS, O_UIMM, 0},
+    0,              "xoris",        H_IMM_HIGH },
+  { D_OPCODE(28),         D_MASK,   {O_rA, O_rS, O_UIMM, 0},
+    0,              "andi.",        0 },
+  { D_OPCODE(29),         D_MASK,   {O_rA, O_rS, O_UIMM, 0},
+    0,              "andis.",       H_IMM_HIGH },
+  { X_OPCODE(31,0,0),     X_MASK,   {O_crfD, O_L, O_rA, O_rB, 0},
+    0,              "cmp",          0 },
+  { X_OPCODE(31,4,0),     X_MASK,   {O_TO, O_rA, O_rB, 0},
+    0,              "tw",           0 },
+  { XO_OPCODE(31,8,0,0),   XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
+    0,              "subfc",        0 },
+  { XO_OPCODE(31,8,0,1),   XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
+    0,              "subfc.",       0 },
+  { XO_OPCODE(31,10,0,0),  XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
+    0,              "addc",         0 },
+  { XO_OPCODE(31,10,0,1),  XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
+    0,              "addc.",        0 },
+  { XO_OPCODE(31,11,0,0),  XO_MASK,  {O_rD, O_rA, O_rB, O_Rc, 0},
+    0,              "mulhwu",       0 },
+  { XO_OPCODE(31,11,0,1),  XO_MASK,  {O_rD, O_rA, O_rB, O_Rc, 0},
+    0,              "mulhwu.",      0 },
+  { X_OPCODE(31,19,0),    X_MASK,   {O_rD, 0},
+    0,              "mfcr",         0 },
+  { X_OPCODE(31,20,0),    X_MASK,   {O_rD, O_rA, O_rB, 0},
+    0,              "lwarx",        H_RA0_IS_0 },
+  { X_OPCODE(31,23,0),    X_MASK,   {O_rD, O_rA, O_rB, 0},
+    0,              "lwzx",         H_RA0_IS_0 },
+  { X_OPCODE(31,24,0),    X_MASK,   {O_rA, O_rS, O_rB, O_Rc, 0},
+    0,              "slw",          0 },
+  { X_OPCODE(31,24,1),    X_MASK,   {O_rA, O_rS, O_rB, O_Rc, 0},
+    0,              "slw.",         0 },
+  { X_OPCODE(31,26,0),    X_MASK,   {O_rA, O_rS, O_Rc, 0 },
+    0,              "cntlzw",       0 },
+  { X_OPCODE(31,26,1),    X_MASK,   {O_rA, O_rS, O_Rc, 0},
+    0,              "cntlzw.",      0 },
+  { X_OPCODE(31,28,0),    X_MASK,   {O_rA, O_rS, O_rB, O_Rc, 0},
+    0,              "and",          0 },
+  { X_OPCODE(31,28,1),    X_MASK,   {O_rA, O_rS, O_rB, O_Rc, 0},
+    0,              "and.",         0 },
+  { X_OPCODE(31,32,0),    X_MASK,   {O_crfD, O_L, O_rA, O_rB, 0},
+    0,              "cmpl",         0 },
+  { XO_OPCODE(31,40,0,0),  XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
+    0,              "subf",         0 },
+  { XO_OPCODE(31,40,0,1),  XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
+    0,              "subf.",        0 },
+  { X_OPCODE(31,54,0),    X_MASK,   {O_rA, O_rB, 0},
+    0,              "dcbst",        H_RA0_IS_0 },
+  { X_OPCODE(31,55,0),    X_MASK,   {O_rD, O_rA, O_rB, 0},
+    0,              "lwzux",        0 },
+  { X_OPCODE(31,60,0),    X_MASK,   {O_rA, O_rS, O_rB, O_Rc, 0},
+    0,              "andc",         0 },
+  { X_OPCODE(31,60,1),    X_MASK,   {O_rA, O_rS, O_rB, O_Rc, 0},
+    0,              "andc.",        0 },
+  { XO_OPCODE(31,75,0,0),  XO_MASK,  {O_rD, O_rA, O_rB, O_Rc, 0},
+    0,              "mulhw",        0 },
+  { XO_OPCODE(31,75,0,1),  XO_MASK,  {O_rD, O_rA, O_rB, O_Rc, 0},
+    0,              "mulhw.",       0 },
+  { X_OPCODE(31,83,0),    X_MASK,   {O_rD, 0},
+    0,              "mfmsr",        0 },
+  { X_OPCODE(31,86,0),    X_MASK,   {O_rA, O_rB, 0},
+    0,              "dcbf",         H_RA0_IS_0 },
+  { X_OPCODE(31,87,0),    X_MASK,   {O_rD, O_rA, O_rB, 0},
+    0,              "lbzx",         H_RA0_IS_0 },
+  { XO_OPCODE(31,104,0,0), XO_MASK,  {O_rD, O_rA, O_OE, O_Rc, 0},
+    0,              "neg",          0 },
+  { XO_OPCODE(31,104,0,1), XO_MASK,  {O_rD, O_rA, O_OE, O_Rc, 0},
+    0,              "neg.",         0 },
+  { X_OPCODE(31,119,0),    X_MASK,   {O_rD, O_rA, O_rB, 0},
+    0,              "lbzux",        0 },
+  { X_OPCODE(31,124,0),    X_MASK,   {O_rA, O_rS, O_rB, O_Rc, 0},
+    0,              "nor",          0 },
+  { X_OPCODE(31,124,1),    X_MASK,   {O_rA, O_rS, O_rB, O_Rc, 0},
+    0,              "nor.",         0 },
+  { XO_OPCODE(31,136,0,0), XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
+    0,              "subfe",        0 },
+  { XO_OPCODE(31,136,0,1), XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
+    0,              "subfe.",       0 },
+  { XO_OPCODE(31,138,0,0), XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
+    0,              "adde",         0 },
+  { XO_OPCODE(31,138,0,1), XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
+    0,              "adde.",        0 },
+  { XFX_OPCODE(31,144,0),  XFX_MASK, {O_CRM, O_rS, 0},
+    0,              "mtcrf",        0 },
+  { X_OPCODE(31,146,0),    X_MASK,   {O_rS, 0},
+    0,              "mtmsr",        0 },
+  { X_OPCODE(31,150,1),    X_MASK,   {O_rS, O_rA, O_rB, 0},
+    0,              "stwcx.",       0 },
+  { X_OPCODE(31,151,0),    X_MASK,   {O_rS, O_rA, O_rB, 0},
+    0,              "stwx",         0 },
+  { X_OPCODE(31,183,0),    X_MASK,   {O_rS, O_rA, O_rB, 0},
+    0,              "stwux",        0 },
+  { XO_OPCODE(31,200,0,0), XO_MASK,  {O_rD, O_rA, O_OE, O_Rc, 0},
+    0,              "subfze",       0 },
+  { XO_OPCODE(31,200,0,1), XO_MASK,  {O_rD, O_rA, O_OE, O_Rc, 0},
+    0,              "subfze.",      0 },
+  { XO_OPCODE(31,202,0,0), XO_MASK,  {O_rD, O_rA, O_OE, O_Rc, 0},
+    0,              "addze",        0 },
+  { XO_OPCODE(31,202,0,1), XO_MASK,  {O_rD, O_rA, O_OE, O_Rc, 0},
+    0,              "addze.",       0 },
+  { X_OPCODE(31,210,0),    X_MASK,   {O_SR, O_rS, 0},
+    0,              "mtsr",         0 },
+  { X_OPCODE(31,215,0),    X_MASK,   {O_rS, O_rA, O_rB, 0},
+    0,              "stbx",         H_RA0_IS_0 },
+  { XO_OPCODE(31,232,0,0), XO_MASK,  {O_rD, O_rA, O_OE, O_Rc, 0},
+    0,              "subfme",       0 },
+  { XO_OPCODE(31,232,0,1), XO_MASK,  {O_rD, O_rA, O_OE, O_Rc, 0},
+    0,              "subfme.",      0 },
+  { XO_OPCODE(31,234,0,0), XO_MASK,  {O_rD, O_rA, O_OE, O_Rc, 0},
+    0,              "addme",        0 },
+  { XO_OPCODE(31,234,0,1), XO_MASK,  {O_rD, O_rA, O_OE, O_Rc, 0},
+    0,              "addme.",       0 },
+  { XO_OPCODE(31,235,0,0), XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
+    0,              "mullw",        0 },
+  { XO_OPCODE(31,235,0,1), XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
+    0,              "mullw.",       0 },
+  { X_OPCODE(31,242,0),    X_MASK,   {O_rS, O_rB, 0},
+    0,              "mtsrin",       0 },
+  { X_OPCODE(31,246,0),    X_MASK,   {O_rA, O_rB, 0},
+    0,              "dcbtst",       H_RA0_IS_0 },
+  { X_OPCODE(31,247,0),    X_MASK,   {O_rS, O_rA, O_rB, 0},
+    0,              "stbux",        0 },
+  { XO_OPCODE(31,266,0,0), XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
+    0,              "add",          0 },
+  { XO_OPCODE(31,266,0,1), XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
+    0,              "add.",         0 },
+  { X_OPCODE(31,278,0),    X_MASK,   {O_rA, O_rB, 0},
+    0,              "dcbt",         H_RA0_IS_0 },
+  { X_OPCODE(31,279,0),    X_MASK,   {O_rD, O_rA, O_rB, 0},
+    0,              "lhzx",         H_RA0_IS_0 },
+  { X_OPCODE(31,284,0),    X_MASK,   {O_rA, O_rS, O_rB, O_Rc, 0},
+    0,              "eqv",          0 },
+  { X_OPCODE(31,284,1),    X_MASK,   {O_rA, O_rS, O_rB, O_Rc, 0},
+    0,              "eqv.",         0 },
+  { X_OPCODE(31,306,0),    X_MASK,   {O_rB, 0},
+    0,              "tlbie",        0 },
+  { X_OPCODE(31,310,0),    X_MASK,   {O_rD, O_rA, O_rB, 0},
+    0,              "eciwx",        H_RA0_IS_0 },
+  { X_OPCODE(31,311,0),    X_MASK,   {O_rD, O_rA, O_rB, 0},
+    0,              "lhzux",        0 },
+  { X_OPCODE(31,316,0),    X_MASK,   {O_rA, O_rS, O_rB, O_Rc, 0},
+    0,              "xor",          0 },
+  { X_OPCODE(31,316,1),    X_MASK,   {O_rA, O_rS, O_rB, O_Rc, 0},
+    0,              "xor.",         0 },
+  { XFX_OPCODE(31,339,0),  XFX_MASK, {O_rD, O_spr, 0},
+    0,              "mfspr",        0 },
+  { X_OPCODE(31,343,0),    X_MASK,   {O_rD, O_rA, O_rB, 0},
+    0,              "lhax",         H_RA0_IS_0 },
+  { X_OPCODE(31,370,0),    X_MASK,   {0},
+    0,              "tlbia",        0 },
+  { XFX_OPCODE(31,371,0),  XFX_MASK, {O_rD, O_tbr, 0},
+    0,              "mftb",         0 },
+  { X_OPCODE(31,375,0),    X_MASK,   {O_rD, O_rA, O_rB, 0},
+    0,              "lhaux",        0 },
+  { X_OPCODE(31,407,0),    X_MASK,   {O_rS, O_rA, O_rB, 0},
+    0,              "sthx",         H_RA0_IS_0 },
+  { X_OPCODE(31,412,0),    X_MASK,   {O_rA, O_rS, O_rB, O_Rc, 0},
+    0,              "orc",          0 },
+  { X_OPCODE(31,412,1),    X_MASK,   {O_rA, O_rS, O_rB, O_Rc, 0},
+    0,              "orc.",         0 },
+  { X_OPCODE(31,438,0),    X_MASK,   {O_rS, O_rA, O_rB, 0},
+    0,              "ecowx",        H_RA0_IS_0 },
+  { X_OPCODE(31,439,0),    X_MASK,   {O_rS, O_rA, O_rB, 0},
+    0,              "sthux",        0 },
+  { X_OPCODE(31,444,0),    X_MASK,   {O_rA, O_rS, O_rB, O_Rc, 0},
+    0,              "or",           0 },
+  { X_OPCODE(31,444,1),    X_MASK,   {O_rA, O_rS, O_rB, O_Rc, 0},
+    0,              "or.",          0 },
+  { XO_OPCODE(31,459,0,0), XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
+    0,              "divwu",        0 },
+  { XO_OPCODE(31,459,0,1), XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
+    0,              "divwu.",       0 },
+  { XFX_OPCODE(31,467,0),  XFX_MASK, {O_spr, O_rS, 0},
+    0,              "mtspr",        0 },
+  { X_OPCODE(31,470,0),    X_MASK,   {O_rA, O_rB, 0},
+    0,              "dcbi",         H_RA0_IS_0 },
+  { X_OPCODE(31,476,0),    X_MASK,   {O_rA, O_rS, O_rB, O_Rc, 0},
+    0,              "nand",         0 },
+  { X_OPCODE(31,476,1),    X_MASK,   {O_rA, O_rS, O_rB, O_Rc,0},
+    0,              "nand.",        0 },
+  { XO_OPCODE(31,491,0,0), XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
+    0,              "divw",         0 },
+  { XO_OPCODE(31,491,0,1), XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
+    0,              "divw.",        0 },
+  { X_OPCODE(31,512,0),    X_MASK,   {O_crfD, 0},
+    0,              "mcrxr",        0 },
+  { XO_OPCODE(31,8,1,0),   XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
+    0,              "subfco",       0 },
+  { XO_OPCODE(31,8,1,1),   XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
+    0,              "subfco.",      0 },
+  { XO_OPCODE(31,10,1,0),  XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
+    0,              "addco",        0 },
+  { XO_OPCODE(31,10,1,1),  XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
+    0,              "addco.",       0 },
+  { X_OPCODE(31,533,0),    X_MASK,   {O_rD, O_rA, O_rB, 0},
+    0,              "lswx",         H_RA0_IS_0 },
+  { X_OPCODE(31,534,0),    X_MASK,   {O_rD, O_rA, O_rB, 0},
+    0,              "lwbrx",        H_RA0_IS_0 },
+  { X_OPCODE(31,536,0),    X_MASK,   {O_rA, O_rS, O_rB, O_Rc, 0},
+    0,              "srw",          0 },
+  { X_OPCODE(31,536,1),    X_MASK,   {O_rA, O_rS, O_rB, O_Rc, 0},
+    0,              "srw.",         0 },
+  { XO_OPCODE(31,40,1,0),  XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
+    0,              "subfo",        0 },
+  { XO_OPCODE(31,40,1,1),  XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
+    0,              "subfo.",       0 },
+  { X_OPCODE(31,566,0),    X_MASK,   {0},
+    0,              "tlbsync",      0 },
+  { X_OPCODE(31,595,0),    X_MASK,   {O_rD, O_SR, 0},
+    0,              "mfsr",         0 },
+  { X_OPCODE(31,597,0),    X_MASK,   {O_rD, O_rA, O_NB, 0},
+    0,              "lswi",         H_RA0_IS_0 },
+  { X_OPCODE(31,598,0),    X_MASK,   {0},
+    0,              "sync",         0 },
+  { XO_OPCODE(31,104,1,0), XO_MASK,  {O_rD, O_rA, O_OE, O_Rc, 0},
+    0,              "nego",         0 },
+  { XO_OPCODE(31,104,1,1), XO_MASK,  {O_rD, O_rA, O_OE, O_Rc, 0},
+    0,              "nego.",        0 },
+  { XO_OPCODE(31,136,1,0), XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
+    0,              "subfeo",       0 },
+  { XO_OPCODE(31,136,1,1), XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
+    0,              "subfeo.",      0 },
+  { XO_OPCODE(31,138,1,0), XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
+    0,              "addeo",        0 },
+  { XO_OPCODE(31,138,1,1), XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
+    0,              "addeo.",       0 },
+  { X_OPCODE(31,659,0),    X_MASK,   {O_rD, O_rB, 0},
+    0,              "mfsrin",       0 },
+  { X_OPCODE(31,661,0),    X_MASK,   {O_rS, O_rA, O_rB, 0},
+    0,              "stswx",        H_RA0_IS_0 },
+  { X_OPCODE(31,662,0),    X_MASK,   {O_rS, O_rA, O_rB, 0},
+    0,              "stwbrx",       H_RA0_IS_0 },
+  { XO_OPCODE(31,200,1,0), XO_MASK,  {O_rD, O_rA, O_OE, O_Rc, 0},
+    0,              "subfzeo",      0 },
+  { XO_OPCODE(31,200,1,1), XO_MASK,  {O_rD, O_rA, O_OE, O_Rc, 0},
+    0,              "subfzeo.",     0 },
+  { XO_OPCODE(31,202,1,0), XO_MASK,  {O_rD, O_rA, O_OE, O_Rc, 0},
+    0,              "addzeo",       0 },
+  { XO_OPCODE(31,202,1,1), XO_MASK,  {O_rD, O_rA, O_OE, O_Rc, 0},
+    0,              "addzeo.",      0 },
+  { X_OPCODE(31,725,0),    X_MASK,   {O_rS, O_rA, O_NB, 0},
+    0,              "stswi",        H_RA0_IS_0 },
+  { XO_OPCODE(31,232,1,0), XO_MASK,  {O_rD, O_rA, O_OE, O_Rc, 0},
+    0,              "subfmeo",      0 },
+  { XO_OPCODE(31,232,1,1), XO_MASK,  {O_rD, O_rA, O_OE, O_Rc, 0},
+    0,              "subfmeo.",     0 },
+  { XO_OPCODE(31,234,1,0), XO_MASK,  {O_rD, O_rA, O_OE, O_Rc, 0},
+    0,              "addmeo",       0 },
+  { XO_OPCODE(31,234,1,1), XO_MASK,  {O_rD, O_rA, O_OE, O_Rc, 0},
+    0,              "addmeo.",      0 },
+  { XO_OPCODE(31,235,1,0), XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
+    0,              "mullwo",       0 },
+  { XO_OPCODE(31,235,1,1), XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
+    0,              "mullwo.",      0 },
+  { XO_OPCODE(31,266,1,0), XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
+    0,              "addo",         0 },
+  { XO_OPCODE(31,266,1,1), XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
+    0,              "addo.",        0 },
+  { X_OPCODE(31,790,0),    X_MASK,   {O_rD, O_rA, O_rB, 0},
+    0,              "lhbrx",        H_RA0_IS_0 },
+  { X_OPCODE(31,792,0),    X_MASK,   {O_rA, O_rS, O_rB, O_Rc, 0},
+    0,              "sraw",         0 },
+  { X_OPCODE(31,792,1),    X_MASK,   {O_rA, O_rS, O_rB, O_Rc, 0},
+    0,              "sraw.",        0 },
+  { X_OPCODE(31,824,0),    X_MASK,   {O_rA, O_rS, O_SH, O_Rc, 0},
+    0,              "srawi",        0 },
+  { X_OPCODE(31,824,1),    X_MASK,   {O_rA, O_rS, O_SH, O_Rc, 0},
+    0,              "srawi.",       0 },
+  { X_OPCODE(31,854,0),    X_MASK,   {0},
+    0,              "eieio",        0 },
+  { X_OPCODE(31,918,0),    X_MASK,   {O_rS, O_rA, O_rB, 0},
+    0,              "sthbrx",       H_RA0_IS_0 },
+  { X_OPCODE(31,922,0),    X_MASK,   {O_rA, O_rS, O_Rc, 0},
+    0,              "extsh",        0 },
+  { X_OPCODE(31,922,1),    X_MASK,   {O_rA, O_rS, O_Rc, 0},
+    0,              "extsh.",       0 },
+  { X_OPCODE(31,954,0),    X_MASK,   {O_rA, O_rS, O_Rc, 0},
+    0,              "extsb",        0 },
+  { X_OPCODE(31,954,1),    X_MASK,   {O_rA, O_rS, O_Rc, 0},
+    0,              "extsb.",       0 },
+  { XO_OPCODE(31,459,1,0), XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
+    0,              "divwuo",       0 },
+  { XO_OPCODE(31,459,1,1), XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
+    0,              "divwuo.",      0 },
+  { X_OPCODE(31,978,0),    X_MASK,   {O_rB, 0},
+    0,              "tlbld",        0 },
+  { X_OPCODE(31,982,0),    X_MASK,   {O_rA, O_rB, 0},
+    0,              "icbi",         H_RA0_IS_0 },
+  { XO_OPCODE(31,491,1,0), XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
+    0,              "divwo",        0 },
+  { XO_OPCODE(31,491,1,1), XO_MASK,  {O_rD, O_rA, O_rB, O_OE, O_Rc, 0},
+    0,              "divwo.",       0 },
+  { X_OPCODE(31,1010,0),   X_MASK,   {O_rB, 0},
+    0,              "tlbli",        0 },
+  { X_OPCODE(31,1014,0),   X_MASK,   {O_rA, O_rB, 0},
+    0,              "dcbz",         H_RA0_IS_0 },
+  { D_OPCODE(32),         D_MASK,   {O_rD, O_d, O_rA, 0},
+    0,              "lwz",          H_RA0_IS_0 },
+  { D_OPCODE(33),         D_MASK,   {O_rD, O_d, O_rA, 0},
+    0,              "lwzu",         0 },
+  { D_OPCODE(34),         D_MASK,   {O_rD, O_d, O_rA, 0},
+    0,              "lbz",          H_RA0_IS_0 },
+  { D_OPCODE(35),         D_MASK,   {O_rD, O_d, O_rA, 0},
+    0,              "lbzu",         0 },
+  { D_OPCODE(36),         D_MASK,   {O_rS, O_d, O_rA, 0},
+    0,              "stw",          H_RA0_IS_0 },
+  { D_OPCODE(37),         D_MASK,   {O_rS, O_d, O_rA, 0},
+    0,              "stwu",         0 },
+  { D_OPCODE(38),         D_MASK,   {O_rS, O_d, O_rA, 0},
+    0,              "stb",          H_RA0_IS_0 },
+  { D_OPCODE(39),         D_MASK,   {O_rS, O_d, O_rA, 0},
+    0,              "stbu",         0 },
+  { D_OPCODE(40),         D_MASK,   {O_rD, O_d, O_rA, 0},
+    0,              "lhz",          H_RA0_IS_0 },
+  { D_OPCODE(41),         D_MASK,   {O_rD, O_d, O_rA, 0},
+    0,              "lhzu",         0 },
+  { D_OPCODE(42),         D_MASK,   {O_rD, O_d, O_rA, 0},
+    0,              "lha",          H_RA0_IS_0 },
+  { D_OPCODE(43),         D_MASK,   {O_rD, O_d, O_rA, 0},
+    0,              "lhau",         0 },
+  { D_OPCODE(44),         D_MASK,   {O_rS, O_d, O_rA, 0},
+    0,              "sth",          H_RA0_IS_0 },
+  { D_OPCODE(45),         D_MASK,   {O_rS, O_d, O_rA, 0},
+    0,              "sthu",         0 },
+  { D_OPCODE(46),         D_MASK,   {O_rD, O_d, O_rA, 0},
+    0,              "lmw",          H_RA0_IS_0 },
+  { D_OPCODE(47),         D_MASK,   {O_rS, O_d, O_rA, 0},
+    0,              "stmw",         H_RA0_IS_0 },
+};
+
+const unsigned int n_opcodes = sizeof(opcodes) / sizeof(opcodes[0]);
+
+struct spr_info spr_map[] = {
+  { SPR_XER,   "XER" },
+  { SPR_LR,    "LR" },
+  { SPR_CTR,   "CTR" },
+  { SPR_DSISR, "DSISR" },
+  { SPR_DAR,   "DAR" },
+  { SPR_DEC,   "DEC" },
+  { SPR_SRR0,  "SRR0" },
+  { SPR_SRR1,  "SRR1" },
+  { SPR_EIE,   "EIE" },
+  { SPR_EID,   "EID" },
+  { SPR_CMPA,  "CMPA" },
+  { SPR_CMPB,  "CMPB" },
+  { SPR_CMPC,  "CMPC" },
+  { SPR_CMPD,  "CMPD" },
+  { SPR_ICR,   "ICR" },
+  { SPR_DER,   "DER" },
+  { SPR_COUNTA,        "COUNTA" },
+  { SPR_COUNTB,        "COUNTB" },
+  { SPR_CMPE,  "CMPE" },
+  { SPR_CMPF,  "CMPF" },
+  { SPR_CMPG,  "CMPG" },
+  { SPR_CMPH,  "CMPH" },
+  { SPR_LCTRL1,        "LCTRL1" },
+  { SPR_LCTRL2,        "LCTRL2" },
+  { SPR_ICTRL, "ICTRL" },
+  { SPR_BAR,   "BAR" },
+  { SPR_USPRG0,        "USPRG0" },
+  { SPR_SPRG4_RO,      "SPRG4_RO" },
+  { SPR_SPRG5_RO,      "SPRG5_RO" },
+  { SPR_SPRG6_RO,      "SPRG6_RO" },
+  { SPR_SPRG7_RO,      "SPRG7_RO" },
+  { SPR_SPRG0, "SPRG0" },
+  { SPR_SPRG1, "SPRG1" },
+  { SPR_SPRG2, "SPRG2" },
+  { SPR_SPRG3, "SPRG3" },
+  { SPR_SPRG4, "SPRG4" },
+  { SPR_SPRG5, "SPRG5" },
+  { SPR_SPRG6, "SPRG6" },
+  { SPR_SPRG7, "SPRG7" },
+  { SPR_EAR,   "EAR" },
+  { SPR_TBL,   "TBL" },
+  { SPR_TBU,   "TBU" },
+  { SPR_IC_CST,        "IC_CST" },
+  { SPR_IC_ADR,        "IC_ADR" },
+  { SPR_IC_DAT,        "IC_DAT" },
+  { SPR_DC_CST,        "DC_CST" },
+  { SPR_DC_ADR,        "DC_ADR" },
+  { SPR_DC_DAT,        "DC_DAT" },
+  { SPR_DPDR,  "DPDR" },
+  { SPR_IMMR,  "IMMR" },
+  { SPR_MI_CTR,        "MI_CTR" },
+  { SPR_MI_AP, "MI_AP" },
+  { SPR_MI_EPN,        "MI_EPN" },
+  { SPR_MI_TWC,        "MI_TWC" },
+  { SPR_MI_RPN,        "MI_RPN" },
+  { SPR_MD_CTR,        "MD_CTR" },
+  { SPR_M_CASID,       "M_CASID" },
+  { SPR_MD_AP, "MD_AP" },
+  { SPR_MD_EPN,        "MD_EPN" },
+  { SPR_M_TWB, "M_TWB" },
+  { SPR_MD_TWC,        "MD_TWC" },
+  { SPR_MD_RPN,        "MD_RPN" },
+  { SPR_M_TW,  "M_TW" },
+  { SPR_MI_DBCAM,      "MI_DBCAM" },
+  { SPR_MI_DBRAM0,     "MI_DBRAM0" },
+  { SPR_MI_DBRAM1,     "MI_DBRAM1" },
+  { SPR_MD_DBCAM,      "MD_DBCAM" },
+  { SPR_MD_DBRAM0,     "MD_DBRAM0" },
+  { SPR_MD_DBRAM1,     "MD_DBRAM1" },
+  { SPR_ZPR,   "ZPR" },
+  { SPR_PID,   "PID" },
+  { SPR_CCR0,  "CCR0" },
+  { SPR_IAC3,  "IAC3" },
+  { SPR_IAC4,  "IAC4" },
+  { SPR_DVC1,  "DVC1" },
+  { SPR_DVC2,  "DVC2" },
+  { SPR_SGR,   "SGR" },
+  { SPR_DCWR,  "DCWR" },
+  { SPR_SLER,  "SLER" },
+  { SPR_SU0R,  "SU0R" },
+  { SPR_DBCR1, "DBCR1" },
+  { SPR_ICDBDR,        "ICDBDR" },
+  { SPR_ESR,   "ESR" },
+  { SPR_DEAR,  "DEAR" },
+  { SPR_EVPR,  "EVPR" },
+  { SPR_TSR,   "TSR" },
+  { SPR_TCR,   "TCR" },
+  { SPR_PIT,   "PIT" },
+  { SPR_SRR2,  "SRR2" },
+  { SPR_SRR3,  "SRR3" },
+  { SPR_DBSR,  "DBSR" },
+  { SPR_DBCR0, "DBCR0" },
+  { SPR_IAC1,  "IAC1" },
+  { SPR_IAC2,  "IAC2" },
+  { SPR_DAC1,  "DAC1" },
+  { SPR_DAC2,  "DAC2" },
+  { SPR_DCCR,  "DCCR" },
+  { SPR_ICCR,  "ICCR" },
+};
+
+const unsigned int n_sprs = sizeof(spr_map) / sizeof(spr_map[0]);
+
+#endif
+
+/*
+ * Copyright (c) 2000 William L. Pitts and W. Gerald Hicks
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms are freely
+ * permitted provided that the above copyright notice and this
+ * paragraph and the following disclaimer are duplicated in all
+ * such forms.
+ *
+ * This software is provided "AS IS" and without any express or
+ * implied warranties, including, without limitation, the implied
+ * warranties of merchantability and fitness for a particular
+ * purpose.
+ */
diff -Naur u-boot-2009.03_orig/include/configs/CVS/Entries u-boot-2009.03/include/configs/CVS/Entries
--- u-boot-2009.03_orig/include/configs/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/configs/CVS/Entries  2009-03-31 15:00:55.623187200 -0700
@@ -0,0 +1,477 @@
+/A3000.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ADCIOP.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ADNPESC1.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ADNPESC1_base_32.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ADS860.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/AMX860.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/AP1000.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/APC405.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/AR405.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ASH405.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ATUM8548.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/Adder.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/AdderUSB.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/Alaska8220.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/AmigaOneG3SE.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/B2.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/BAB7xx.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/BC3450.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/BMW.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/CANBT.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/CATcenter.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/CCM.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/CMS700.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/CPC45.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/CPCI2DP.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/CPCI405.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/CPCI4052.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/CPCI405AB.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/CPCI405DT.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/CPCI750.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/CPCIISER4.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/CPU86.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/CPU87.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/CRAYL1.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/CU824.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/DASA_SIM.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/DB64460.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/DK1C20.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/DK1C20_safe_32.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/DK1C20_standard_32.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/DK1S10.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/DK1S10_mtx_ldk_20.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/DK1S10_safe_32.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/DK1S10_standard_32.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/DP405.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/DU405.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/DU440.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/EB+MCF-EV123.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ELPPC.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ELPT860.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/EP1C20.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/EP1S10.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/EP1S40.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/EP88x.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ERIC.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ESTEEM192E.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ETX094.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/EVB64260.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/EXBITGEN.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/FADS823.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/FADS850SAR.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/FADS860T.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/FLAGADM.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/FPS850L.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/FPS860L.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/G2000.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/GEN860T.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/GENIETV.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/GTH.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/HH405.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/HIDDEN_DRAGON.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/HMI10.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/HUB405.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IAD210.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ICU862.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IDS8247.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IP860.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IPHASE4539.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ISPAN.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IVML24.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IVMS8.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IceCube.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/JSE.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/KUP4K.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/KUP4X.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/LANTEC.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/M52277EVB.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/M5235EVB.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/M5249EVB.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/M5253DEMO.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/M5253EVBE.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/M5271EVB.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/M5272C3.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/M5275EVB.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/M5282EVB.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/M53017EVB.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/M5329EVB.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/M5373EVB.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/M54451EVB.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/M54455EVB.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/M5475EVB.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/M5485EVB.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MBX.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MBX860T.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MHPC.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MIP405.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ML2.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MOUSSE.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MPC8260ADS.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MPC8266ADS.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MPC8313ERDB.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MPC8315ERDB.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MPC8323ERDB.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MPC832XEMDS.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MPC8349EMDS.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MPC8349ITX.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MPC8360EMDS.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MPC8360ERDK.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MPC837XEMDS.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MPC837XERDB.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MPC8536DS.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MPC8540ADS.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MPC8540EVAL.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MPC8541CDS.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MPC8544DS.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MPC8548CDS.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MPC8555CDS.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MPC8560ADS.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MPC8568MDS.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MPC8572DS.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MPC8610HPCD.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MPC8641HPCN.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MPC86xADS.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MPC885ADS.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MUSENKI.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MVBC_P.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MVBLM7.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MVBLUE.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MVS1.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MigoR.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/NC650.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/NETPHONE.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/NETTA.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/NETTA2.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/NETVIA.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/NSCU.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/NX823.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/OCRTC.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ORSG.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/OXC.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/P3G4.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/PATI.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/PCI405.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/PCI5441.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/PCIPPC2.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/PCIPPC6.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/PIP405.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/PK1C20.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/PLU405.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/PM520.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/PM826.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/PM828.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/PM854.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/PM856.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/PMC405.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/PMC440.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/PN62.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/PPChameleonEVB.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/QS823.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/QS850.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/QS860T.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/R360MPI.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/RBC823.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/RPXClassic.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/RPXlite.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/RPXlite_DW.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/RPXsuper.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/RRvision.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/Rattler.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/SBC8540.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/SCM.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/SIMPC8313.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/SL8245.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/SM850.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/SMN42.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/SPD823TS.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/SX1.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/SXNI855T.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/Sandpoint8240.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/Sandpoint8245.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/TASREG.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/TB5200.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/TK885D.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/TOP5200.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/TOP860.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/TQM5200.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/TQM823L.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/TQM823M.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/TQM8260.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/TQM8272.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/TQM834x.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/TQM850L.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/TQM850M.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/TQM855L.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/TQM855M.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/TQM85xx.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/TQM860L.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/TQM860M.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/TQM862L.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/TQM862M.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/TQM866M.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/TQM885D.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/Total5200.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/VCMA9.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/VOH405.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/VOM405.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/VoVPN-GW.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/W7OLMC.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/W7OLMG.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/WUH405.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/XPEDITE1K.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/XPEDITE5200.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/XPEDITE5370.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/Yukon8220.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ZPC1900.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ZUMA.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/acadia.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/actux1.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/actux2.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/actux3.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/actux4.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ads5121.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/aev.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/afeb9260.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/alpr.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/amcc-common.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ap325rxa.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/apollon.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/armadillo.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/assabet.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/at91cap9adk.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/at91rm9200dk.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/at91sam9260ek.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/at91sam9261ek.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/at91sam9263ek.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/at91sam9rlek.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/atc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/atngw100.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/atstk1002.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/atstk1003.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/atstk1004.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/atstk1006.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bamboo.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bf533-ezkit.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bf533-stamp.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bf537-stamp.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bf561-ezkit.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bubinga.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/c2mon.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/canmb.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/canyonlands.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cerf250.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cm4008.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cm41xx.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cm5200.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmc_pu2.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmi_mpc5xx.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cobra5272.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cogent_common.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cogent_mpc8260.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cogent_mpc8xx.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpci5200.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cradle.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/csb226.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/csb272.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/csb472.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/csb637.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/davinci_dvevm.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/davinci_schmoogie.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/davinci_sffsdr.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/davinci_sonata.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dbau1x00.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/debris.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/delta.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dnp1110.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/eNET.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/eXalion.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ebony.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ep7312.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ep8248.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ep8260.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ep82xxm.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/evb4510.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/favr-32-ezkit.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fx12mm.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/gcplus.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/gdppc440etx.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/gr_cpci_ax2000.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/gr_ep2s60.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/gr_xc3s_1500.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/grsim.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/grsim_leon2.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/gth2.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/gw8260.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/h2_p2_dbg_board.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/hammerhead.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/hcu4.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/hcu5.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/hermes.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/hmi1001.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/hymod.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/idmr.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/impa7.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/imx31_litekit.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/imx31_phycore.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/incaip.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/inka4x0.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/innokom.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/integratorap.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/integratorcp.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ixdp425.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ixdpg425.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/jupiter.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/katmai.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/kb9202.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/keymile-common.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/kilauea.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/km8xx.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/kmeter1.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/kmsupx4.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/korat.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/kvme080.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lart.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/linkstation.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/logodl.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lpc2292sodimm.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lpd7a400-10.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lpd7a400.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lpd7a404-10.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lpd7a404.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/luan.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lubbock.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lwmon.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lwmon5.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/m501sk.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/makalu.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mcc200.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mcu25.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mecp5200.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mgcoge.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mgsuvd.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/microblaze-generic.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mimc200.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ml300.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ml507.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/modnet50.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/motionpro.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mp2usb.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc7448hpc2.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpr2.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ms7720se.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ms7722se.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ms7750se.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/muas3001.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mucmc52.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/munices.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mx1ads.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mx1fs2.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mx31ads.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/neo.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/netstal-common.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/netstar.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nmdk8815.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ns9750dev.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/o2dnt.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ocotea.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/omap1510.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/omap1510inn.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/omap1610h2.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/omap1610inn.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/omap2420h4.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/omap3_beagle.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/omap3_evm.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/omap3_overo.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/omap3_pandora.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/omap3_zoom1.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/omap5912osk.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/omap730.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/omap730p2.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/p3mx.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/p3p440.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pb1x00.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pcs440ep.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pcu_e.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pdnb3.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pf5200.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pleb2.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ppmc7xx.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ppmc8260.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/purple.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pxa255_idp.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/qemu-mips.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/qong.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/quad100hd.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/quantum.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/r2dplus.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/r7780mp.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/redwood.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/rmu.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/rsdproto.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/rsk7203.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sacsng.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sbc2410x.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sbc405.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sbc8240.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sbc8260.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sbc8349.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sbc8548.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sbc8560.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sbc8641d.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sc3.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sc520_cdp.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sc520_spunk.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sc520_spunk_rel.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/scb9328.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sequoia.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sh7763rdp.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sh7785lcr.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/shannon.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/smdk2400.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/smdk2410.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/smdk6400.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/smmaco4.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/socrates.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sorcery.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/spc1920.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/spieval.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/stxgp3.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/stxssa.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/stxxtc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/suzaku.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/svm_sc8xx.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/taihu.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/taishan.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tb0229.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/trab.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/trizepsiv.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/uc100.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/uc101.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/utx8245.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/v37.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/v38b.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/v5fx30teval.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/vct.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/versatile.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/virtlab2.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/voiceblue.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/walnut.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/wepep250.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xaeniax.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xilinx-ppc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xilinx-ppc405-generic.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xilinx-ppc405.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xilinx-ppc440-generic.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xilinx-ppc440.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xm250.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xsengine.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yosemite.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yucca.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/zeus.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/zylonite.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/barco.h/1.1.1.1/Thu Mar 26 00:37:22 2009//
+/DB64360.h/1.1.1.1/Thu Mar 26 00:37:43 2009//
+/de1_or1k.h/1.2/Thu Mar 26 00:39:02 2009//
+/KAREF.h/1.1.1.1/Tue Mar 31 22:00:45 2009//T1.1.1.1
+/METROBOX.h/1.1.1.1/Tue Mar 31 22:00:55 2009//T1.1.1.1
+D
diff -Naur u-boot-2009.03_orig/include/configs/CVS/Entries.Extra u-boot-2009.03/include/configs/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/configs/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/configs/CVS/Entries.Extra    2009-03-31 15:00:55.623187200 -0700
@@ -0,0 +1,476 @@
+/A3000.h///1238019741/
+/ADCIOP.h///1238019741/
+/ADNPESC1.h///1238019741/
+/ADNPESC1_base_32.h///1238019741/
+/ADS860.h///1238019741/
+/AMX860.h///1238019741/
+/AP1000.h///1238019741/
+/APC405.h///1238019741/
+/AR405.h///1238019741/
+/ASH405.h///1238019741/
+/ATUM8548.h///1238019741/
+/Adder.h///1238019741/
+/AdderUSB.h///1238019741/
+/Alaska8220.h///1238019741/
+/AmigaOneG3SE.h///1238019741/
+/B2.h///1238019741/
+/BAB7xx.h///1238019741/
+/BC3450.h///1238019742/
+/BMW.h///1238019742/
+/CANBT.h///1238019742/
+/CATcenter.h///1238019742/
+/CCM.h///1238019742/
+/CMS700.h///1238019742/
+/CPC45.h///1238019742/
+/CPCI2DP.h///1238019742/
+/CPCI405.h///1238019742/
+/CPCI4052.h///1238019742/
+/CPCI405AB.h///1238019742/
+/CPCI405DT.h///1238019742/
+/CPCI750.h///1238019744/
+/CPCIISER4.h///1238019744/
+/CPU86.h///1238019744/
+/CPU87.h///1238019744/
+/CRAYL1.h///1238019744/
+/CU824.h///1238019744/
+/DASA_SIM.h///1238019744/
+/DB64460.h///1238019744/
+/DK1C20.h///1238019744/
+/DK1C20_safe_32.h///1238019744/
+/DK1C20_standard_32.h///1238019744/
+/DK1S10.h///1238019744/
+/DK1S10_mtx_ldk_20.h///1238019744/
+/DK1S10_safe_32.h///1238019744/
+/DK1S10_standard_32.h///1238019744/
+/DP405.h///1238019744/
+/DU405.h///1238019744/
+/DU440.h///1238019744/
+/EB+MCF-EV123.h///1238019744/
+/ELPPC.h///1238019744/
+/ELPT860.h///1238019744/
+/EP1C20.h///1238019744/
+/EP1S10.h///1238019744/
+/EP1S40.h///1238019744/
+/EP88x.h///1238019744/
+/ERIC.h///1238019744/
+/ESTEEM192E.h///1238019744/
+/ETX094.h///1238019744/
+/EVB64260.h///1238019744/
+/EXBITGEN.h///1238019744/
+/FADS823.h///1238019744/
+/FADS850SAR.h///1238019744/
+/FADS860T.h///1238019744/
+/FLAGADM.h///1238019744/
+/FPS850L.h///1238019744/
+/FPS860L.h///1238019744/
+/G2000.h///1238019744/
+/GEN860T.h///1238019744/
+/GENIETV.h///1238019744/
+/GTH.h///1238019744/
+/HH405.h///1238019744/
+/HIDDEN_DRAGON.h///1238019744/
+/HMI10.h///1238019744/
+/HUB405.h///1238019744/
+/IAD210.h///1238019744/
+/ICU862.h///1238019744/
+/IDS8247.h///1238019745/
+/IP860.h///1238019745/
+/IPHASE4539.h///1238019745/
+/ISPAN.h///1238019745/
+/IVML24.h///1238019745/
+/IVMS8.h///1238019745/
+/IceCube.h///1238019744/
+/JSE.h///1238019745/
+/KUP4K.h///1238019745/
+/KUP4X.h///1238019745/
+/LANTEC.h///1238019745/
+/M52277EVB.h///1238019745/
+/M5235EVB.h///1238019745/
+/M5249EVB.h///1238019745/
+/M5253DEMO.h///1238019745/
+/M5253EVBE.h///1238019745/
+/M5271EVB.h///1238019745/
+/M5272C3.h///1238019745/
+/M5275EVB.h///1238019745/
+/M5282EVB.h///1238019745/
+/M53017EVB.h///1238019745/
+/M5329EVB.h///1238019745/
+/M5373EVB.h///1238019745/
+/M54451EVB.h///1238019745/
+/M54455EVB.h///1238019745/
+/M5475EVB.h///1238019745/
+/M5485EVB.h///1238019745/
+/MBX.h///1238019745/
+/MBX860T.h///1238019745/
+/MHPC.h///1238019745/
+/MIP405.h///1238019745/
+/ML2.h///1238019745/
+/MOUSSE.h///1238019745/
+/MPC8260ADS.h///1238019745/
+/MPC8266ADS.h///1238019745/
+/MPC8313ERDB.h///1238019745/
+/MPC8315ERDB.h///1238019745/
+/MPC8323ERDB.h///1238019745/
+/MPC832XEMDS.h///1238019745/
+/MPC8349EMDS.h///1238019745/
+/MPC8349ITX.h///1238019745/
+/MPC8360EMDS.h///1238019745/
+/MPC8360ERDK.h///1238019745/
+/MPC837XEMDS.h///1238019745/
+/MPC837XERDB.h///1238019745/
+/MPC8536DS.h///1238019745/
+/MPC8540ADS.h///1238019745/
+/MPC8540EVAL.h///1238019745/
+/MPC8541CDS.h///1238019745/
+/MPC8544DS.h///1238019745/
+/MPC8548CDS.h///1238019746/
+/MPC8555CDS.h///1238019746/
+/MPC8560ADS.h///1238019746/
+/MPC8568MDS.h///1238019746/
+/MPC8572DS.h///1238019746/
+/MPC8610HPCD.h///1238019746/
+/MPC8641HPCN.h///1238019746/
+/MPC86xADS.h///1238019746/
+/MPC885ADS.h///1238019746/
+/MUSENKI.h///1238019746/
+/MVBC_P.h///1238019746/
+/MVBLM7.h///1238019746/
+/MVBLUE.h///1238019746/
+/MVS1.h///1238019746/
+/MigoR.h///1238019745/
+/NC650.h///1238019746/
+/NETPHONE.h///1238019746/
+/NETTA.h///1238019746/
+/NETTA2.h///1238019746/
+/NETVIA.h///1238019746/
+/NSCU.h///1238019746/
+/NX823.h///1238019746/
+/OCRTC.h///1238019746/
+/ORSG.h///1238019746/
+/OXC.h///1238019746/
+/P3G4.h///1238019746/
+/PATI.h///1238019746/
+/PCI405.h///1238019747/
+/PCI5441.h///1238019747/
+/PCIPPC2.h///1238019747/
+/PCIPPC6.h///1238019747/
+/PIP405.h///1238019747/
+/PK1C20.h///1238019747/
+/PLU405.h///1238019747/
+/PM520.h///1238019747/
+/PM826.h///1238019747/
+/PM828.h///1238019747/
+/PM854.h///1238019747/
+/PM856.h///1238019747/
+/PMC405.h///1238019747/
+/PMC440.h///1238019747/
+/PN62.h///1238019747/
+/PPChameleonEVB.h///1238019747/
+/QS823.h///1238019747/
+/QS850.h///1238019747/
+/QS860T.h///1238019747/
+/R360MPI.h///1238019747/
+/RBC823.h///1238019747/
+/RPXClassic.h///1238019747/
+/RPXlite.h///1238019747/
+/RPXlite_DW.h///1238019747/
+/RPXsuper.h///1238019747/
+/RRvision.h///1238019747/
+/Rattler.h///1238019747/
+/SBC8540.h///1238019747/
+/SCM.h///1238019747/
+/SIMPC8313.h///1238019747/
+/SL8245.h///1238019747/
+/SM850.h///1238019747/
+/SMN42.h///1238019747/
+/SPD823TS.h///1238019747/
+/SX1.h///1238019748/
+/SXNI855T.h///1238019748/
+/Sandpoint8240.h///1238019747/
+/Sandpoint8245.h///1238019747/
+/TASREG.h///1238019748/
+/TB5200.h///1238019748/
+/TK885D.h///1238019748/
+/TOP5200.h///1238019748/
+/TOP860.h///1238019748/
+/TQM5200.h///1238019748/
+/TQM823L.h///1238019748/
+/TQM823M.h///1238019748/
+/TQM8260.h///1238019748/
+/TQM8272.h///1238019748/
+/TQM834x.h///1238019748/
+/TQM850L.h///1238019748/
+/TQM850M.h///1238019748/
+/TQM855L.h///1238019748/
+/TQM855M.h///1238019748/
+/TQM85xx.h///1238019748/
+/TQM860L.h///1238019748/
+/TQM860M.h///1238019748/
+/TQM862L.h///1238019748/
+/TQM862M.h///1238019748/
+/TQM866M.h///1238019748/
+/TQM885D.h///1238019748/
+/Total5200.h///1238019748/
+/VCMA9.h///1238019748/
+/VOH405.h///1238019748/
+/VOM405.h///1238019748/
+/VoVPN-GW.h///1238019748/
+/W7OLMC.h///1238019748/
+/W7OLMG.h///1238019748/
+/WUH405.h///1238019748/
+/XPEDITE1K.h///1238019748/
+/XPEDITE5200.h///1238019748/
+/XPEDITE5370.h///1238019748/
+/Yukon8220.h///1238019748/
+/ZPC1900.h///1238019748/
+/ZUMA.h///1238019748/
+/acadia.h///1238019741/
+/actux1.h///1238019741/
+/actux2.h///1238019741/
+/actux3.h///1238019741/
+/actux4.h///1238019741/
+/ads5121.h///1238019741/
+/aev.h///1238019741/
+/afeb9260.h///1238019741/
+/alpr.h///1238019741/
+/amcc-common.h///1238019741/
+/ap325rxa.h///1238019741/
+/apollon.h///1238019741/
+/armadillo.h///1238019741/
+/assabet.h///1238019741/
+/at91cap9adk.h///1238019741/
+/at91rm9200dk.h///1238019741/
+/at91sam9260ek.h///1238019741/
+/at91sam9261ek.h///1238019741/
+/at91sam9263ek.h///1238019741/
+/at91sam9rlek.h///1238019741/
+/atc.h///1238019741/
+/atngw100.h///1238019741/
+/atstk1002.h///1238019741/
+/atstk1003.h///1238019741/
+/atstk1004.h///1238019741/
+/atstk1006.h///1238019741/
+/bamboo.h///1238019741/
+/bf533-ezkit.h///1238019742/
+/bf533-stamp.h///1238019742/
+/bf537-stamp.h///1238019742/
+/bf561-ezkit.h///1238019742/
+/bubinga.h///1238019742/
+/c2mon.h///1238019742/
+/canmb.h///1238019742/
+/canyonlands.h///1238019742/
+/cerf250.h///1238019742/
+/cm4008.h///1238019742/
+/cm41xx.h///1238019742/
+/cm5200.h///1238019742/
+/cmc_pu2.h///1238019742/
+/cmi_mpc5xx.h///1238019742/
+/cobra5272.h///1238019742/
+/cogent_common.h///1238019742/
+/cogent_mpc8260.h///1238019742/
+/cogent_mpc8xx.h///1238019742/
+/cpci5200.h///1238019742/
+/cradle.h///1238019744/
+/csb226.h///1238019744/
+/csb272.h///1238019744/
+/csb472.h///1238019744/
+/csb637.h///1238019744/
+/davinci_dvevm.h///1238019744/
+/davinci_schmoogie.h///1238019744/
+/davinci_sffsdr.h///1238019744/
+/davinci_sonata.h///1238019744/
+/dbau1x00.h///1238019744/
+/debris.h///1238019744/
+/delta.h///1238019744/
+/dnp1110.h///1238019744/
+/eNET.h///1238019744/
+/eXalion.h///1238019744/
+/ebony.h///1238019744/
+/ep7312.h///1238019744/
+/ep8248.h///1238019744/
+/ep8260.h///1238019744/
+/ep82xxm.h///1238019744/
+/evb4510.h///1238019744/
+/favr-32-ezkit.h///1238019744/
+/fx12mm.h///1238019744/
+/gcplus.h///1238019744/
+/gdppc440etx.h///1238019744/
+/gr_cpci_ax2000.h///1238019744/
+/gr_ep2s60.h///1238019744/
+/gr_xc3s_1500.h///1238019744/
+/grsim.h///1238019744/
+/grsim_leon2.h///1238019744/
+/gth2.h///1238019744/
+/gw8260.h///1238019744/
+/h2_p2_dbg_board.h///1238019744/
+/hammerhead.h///1238019744/
+/hcu4.h///1238019744/
+/hcu5.h///1238019744/
+/hermes.h///1238019744/
+/hmi1001.h///1238019744/
+/hymod.h///1238019744/
+/idmr.h///1238019745/
+/impa7.h///1238019745/
+/imx31_litekit.h///1238019745/
+/imx31_phycore.h///1238019745/
+/incaip.h///1238019745/
+/inka4x0.h///1238019745/
+/innokom.h///1238019745/
+/integratorap.h///1238019745/
+/integratorcp.h///1238019745/
+/ixdp425.h///1238019745/
+/ixdpg425.h///1238019745/
+/jupiter.h///1238019745/
+/katmai.h///1238019745/
+/kb9202.h///1238019745/
+/keymile-common.h///1238019745/
+/kilauea.h///1238019745/
+/km8xx.h///1238019745/
+/kmeter1.h///1238019745/
+/kmsupx4.h///1238019745/
+/korat.h///1238019745/
+/kvme080.h///1238019745/
+/lart.h///1238019745/
+/linkstation.h///1238019745/
+/logodl.h///1238019745/
+/lpc2292sodimm.h///1238019745/
+/lpd7a400-10.h///1238019745/
+/lpd7a400.h///1238019745/
+/lpd7a404-10.h///1238019745/
+/lpd7a404.h///1238019745/
+/luan.h///1238019745/
+/lubbock.h///1238019745/
+/lwmon.h///1238019745/
+/lwmon5.h///1238019745/
+/m501sk.h///1238019745/
+/makalu.h///1238019745/
+/mcc200.h///1238019745/
+/mcu25.h///1238019745/
+/mecp5200.h///1238019745/
+/mgcoge.h///1238019745/
+/mgsuvd.h///1238019745/
+/microblaze-generic.h///1238019745/
+/mimc200.h///1238019745/
+/ml300.h///1238019745/
+/ml507.h///1238019745/
+/modnet50.h///1238019745/
+/motionpro.h///1238019745/
+/mp2usb.h///1238019745/
+/mpc7448hpc2.h///1238019745/
+/mpr2.h///1238019746/
+/ms7720se.h///1238019746/
+/ms7722se.h///1238019746/
+/ms7750se.h///1238019746/
+/muas3001.h///1238019746/
+/mucmc52.h///1238019746/
+/munices.h///1238019746/
+/mx1ads.h///1238019746/
+/mx1fs2.h///1238019746/
+/mx31ads.h///1238019746/
+/neo.h///1238019746/
+/netstal-common.h///1238019746/
+/netstar.h///1238019746/
+/nmdk8815.h///1238019746/
+/ns9750dev.h///1238019746/
+/o2dnt.h///1238019746/
+/ocotea.h///1238019746/
+/omap1510.h///1238019746/
+/omap1510inn.h///1238019746/
+/omap1610h2.h///1238019746/
+/omap1610inn.h///1238019746/
+/omap2420h4.h///1238019746/
+/omap3_beagle.h///1238019746/
+/omap3_evm.h///1238019746/
+/omap3_overo.h///1238019746/
+/omap3_pandora.h///1238019746/
+/omap3_zoom1.h///1238019746/
+/omap5912osk.h///1238019746/
+/omap730.h///1238019746/
+/omap730p2.h///1238019746/
+/p3mx.h///1238019746/
+/p3p440.h///1238019746/
+/pb1x00.h///1238019747/
+/pcs440ep.h///1238019747/
+/pcu_e.h///1238019747/
+/pdnb3.h///1238019747/
+/pf5200.h///1238019747/
+/pleb2.h///1238019747/
+/ppmc7xx.h///1238019747/
+/ppmc8260.h///1238019747/
+/purple.h///1238019747/
+/pxa255_idp.h///1238019747/
+/qemu-mips.h///1238019747/
+/qong.h///1238019747/
+/quad100hd.h///1238019747/
+/quantum.h///1238019747/
+/r2dplus.h///1238019747/
+/r7780mp.h///1238019747/
+/redwood.h///1238019747/
+/rmu.h///1238019747/
+/rsdproto.h///1238019747/
+/rsk7203.h///1238019747/
+/sacsng.h///1238019747/
+/sbc2410x.h///1238019747/
+/sbc405.h///1238019747/
+/sbc8240.h///1238019747/
+/sbc8260.h///1238019747/
+/sbc8349.h///1238019747/
+/sbc8548.h///1238019747/
+/sbc8560.h///1238019747/
+/sbc8641d.h///1238019747/
+/sc3.h///1238019747/
+/sc520_cdp.h///1238019747/
+/sc520_spunk.h///1238019747/
+/sc520_spunk_rel.h///1238019747/
+/scb9328.h///1238019747/
+/sequoia.h///1238019747/
+/sh7763rdp.h///1238019747/
+/sh7785lcr.h///1238019747/
+/shannon.h///1238019747/
+/smdk2400.h///1238019747/
+/smdk2410.h///1238019747/
+/smdk6400.h///1238019747/
+/smmaco4.h///1238019747/
+/socrates.h///1238019747/
+/sorcery.h///1238019747/
+/spc1920.h///1238019747/
+/spieval.h///1238019747/
+/stxgp3.h///1238019747/
+/stxssa.h///1238019747/
+/stxxtc.h///1238019747/
+/suzaku.h///1238019747/
+/svm_sc8xx.h///1238019747/
+/taihu.h///1238019748/
+/taishan.h///1238019748/
+/tb0229.h///1238019748/
+/trab.h///1238019748/
+/trizepsiv.h///1238019748/
+/uc100.h///1238019748/
+/uc101.h///1238019748/
+/utx8245.h///1238019748/
+/v37.h///1238019748/
+/v38b.h///1238019748/
+/v5fx30teval.h///1238019748/
+/vct.h///1238019748/
+/versatile.h///1238019748/
+/virtlab2.h///1238019748/
+/voiceblue.h///1238019748/
+/walnut.h///1238019748/
+/wepep250.h///1238019748/
+/xaeniax.h///1238019748/
+/xilinx-ppc.h///1238019748/
+/xilinx-ppc405-generic.h///1238019748/
+/xilinx-ppc405.h///1238019748/
+/xilinx-ppc440-generic.h///1238019748/
+/xilinx-ppc440.h///1238019748/
+/xm250.h///1238019748/
+/xsengine.h///1238019748/
+/yosemite.h///1238019748/
+/yucca.h///1238019748/
+/zeus.h///1238019748/
+/zylonite.h///1238019748/
+/barco.h///1238019742/
+/DB64360.h///1238019744/
+/de1_or1k.h///1238028711/
+/KAREF.h///1238019745/
+/METROBOX.h///1238019745/
diff -Naur u-boot-2009.03_orig/include/configs/CVS/Entries.Extra.Old u-boot-2009.03/include/configs/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/configs/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/configs/CVS/Entries.Extra.Old        2009-03-31 15:00:45.000000000 -0700
@@ -0,0 +1,476 @@
+/A3000.h///1238019741/
+/ADCIOP.h///1238019741/
+/ADNPESC1.h///1238019741/
+/ADNPESC1_base_32.h///1238019741/
+/ADS860.h///1238019741/
+/AMX860.h///1238019741/
+/AP1000.h///1238019741/
+/APC405.h///1238019741/
+/AR405.h///1238019741/
+/ASH405.h///1238019741/
+/ATUM8548.h///1238019741/
+/Adder.h///1238019741/
+/AdderUSB.h///1238019741/
+/Alaska8220.h///1238019741/
+/AmigaOneG3SE.h///1238019741/
+/B2.h///1238019741/
+/BAB7xx.h///1238019741/
+/BC3450.h///1238019742/
+/BMW.h///1238019742/
+/CANBT.h///1238019742/
+/CATcenter.h///1238019742/
+/CCM.h///1238019742/
+/CMS700.h///1238019742/
+/CPC45.h///1238019742/
+/CPCI2DP.h///1238019742/
+/CPCI405.h///1238019742/
+/CPCI4052.h///1238019742/
+/CPCI405AB.h///1238019742/
+/CPCI405DT.h///1238019742/
+/CPCI750.h///1238019744/
+/CPCIISER4.h///1238019744/
+/CPU86.h///1238019744/
+/CPU87.h///1238019744/
+/CRAYL1.h///1238019744/
+/CU824.h///1238019744/
+/DASA_SIM.h///1238019744/
+/DB64460.h///1238019744/
+/DK1C20.h///1238019744/
+/DK1C20_safe_32.h///1238019744/
+/DK1C20_standard_32.h///1238019744/
+/DK1S10.h///1238019744/
+/DK1S10_mtx_ldk_20.h///1238019744/
+/DK1S10_safe_32.h///1238019744/
+/DK1S10_standard_32.h///1238019744/
+/DP405.h///1238019744/
+/DU405.h///1238019744/
+/DU440.h///1238019744/
+/EB+MCF-EV123.h///1238019744/
+/ELPPC.h///1238019744/
+/ELPT860.h///1238019744/
+/EP1C20.h///1238019744/
+/EP1S10.h///1238019744/
+/EP1S40.h///1238019744/
+/EP88x.h///1238019744/
+/ERIC.h///1238019744/
+/ESTEEM192E.h///1238019744/
+/ETX094.h///1238019744/
+/EVB64260.h///1238019744/
+/EXBITGEN.h///1238019744/
+/FADS823.h///1238019744/
+/FADS850SAR.h///1238019744/
+/FADS860T.h///1238019744/
+/FLAGADM.h///1238019744/
+/FPS850L.h///1238019744/
+/FPS860L.h///1238019744/
+/G2000.h///1238019744/
+/GEN860T.h///1238019744/
+/GENIETV.h///1238019744/
+/GTH.h///1238019744/
+/HH405.h///1238019744/
+/HIDDEN_DRAGON.h///1238019744/
+/HMI10.h///1238019744/
+/HUB405.h///1238019744/
+/IAD210.h///1238019744/
+/ICU862.h///1238019744/
+/IDS8247.h///1238019745/
+/IP860.h///1238019745/
+/IPHASE4539.h///1238019745/
+/ISPAN.h///1238019745/
+/IVML24.h///1238019745/
+/IVMS8.h///1238019745/
+/IceCube.h///1238019744/
+/JSE.h///1238019745/
+/KUP4K.h///1238019745/
+/KUP4X.h///1238019745/
+/LANTEC.h///1238019745/
+/M52277EVB.h///1238019745/
+/M5235EVB.h///1238019745/
+/M5249EVB.h///1238019745/
+/M5253DEMO.h///1238019745/
+/M5253EVBE.h///1238019745/
+/M5271EVB.h///1238019745/
+/M5272C3.h///1238019745/
+/M5275EVB.h///1238019745/
+/M5282EVB.h///1238019745/
+/M53017EVB.h///1238019745/
+/M5329EVB.h///1238019745/
+/M5373EVB.h///1238019745/
+/M54451EVB.h///1238019745/
+/M54455EVB.h///1238019745/
+/M5475EVB.h///1238019745/
+/M5485EVB.h///1238019745/
+/MBX.h///1238019745/
+/MBX860T.h///1238019745/
+/MHPC.h///1238019745/
+/MIP405.h///1238019745/
+/ML2.h///1238019745/
+/MOUSSE.h///1238019745/
+/MPC8260ADS.h///1238019745/
+/MPC8266ADS.h///1238019745/
+/MPC8313ERDB.h///1238019745/
+/MPC8315ERDB.h///1238019745/
+/MPC8323ERDB.h///1238019745/
+/MPC832XEMDS.h///1238019745/
+/MPC8349EMDS.h///1238019745/
+/MPC8349ITX.h///1238019745/
+/MPC8360EMDS.h///1238019745/
+/MPC8360ERDK.h///1238019745/
+/MPC837XEMDS.h///1238019745/
+/MPC837XERDB.h///1238019745/
+/MPC8536DS.h///1238019745/
+/MPC8540ADS.h///1238019745/
+/MPC8540EVAL.h///1238019745/
+/MPC8541CDS.h///1238019745/
+/MPC8544DS.h///1238019745/
+/MPC8548CDS.h///1238019746/
+/MPC8555CDS.h///1238019746/
+/MPC8560ADS.h///1238019746/
+/MPC8568MDS.h///1238019746/
+/MPC8572DS.h///1238019746/
+/MPC8610HPCD.h///1238019746/
+/MPC8641HPCN.h///1238019746/
+/MPC86xADS.h///1238019746/
+/MPC885ADS.h///1238019746/
+/MUSENKI.h///1238019746/
+/MVBC_P.h///1238019746/
+/MVBLM7.h///1238019746/
+/MVBLUE.h///1238019746/
+/MVS1.h///1238019746/
+/MigoR.h///1238019745/
+/NC650.h///1238019746/
+/NETPHONE.h///1238019746/
+/NETTA.h///1238019746/
+/NETTA2.h///1238019746/
+/NETVIA.h///1238019746/
+/NSCU.h///1238019746/
+/NX823.h///1238019746/
+/OCRTC.h///1238019746/
+/ORSG.h///1238019746/
+/OXC.h///1238019746/
+/P3G4.h///1238019746/
+/PATI.h///1238019746/
+/PCI405.h///1238019747/
+/PCI5441.h///1238019747/
+/PCIPPC2.h///1238019747/
+/PCIPPC6.h///1238019747/
+/PIP405.h///1238019747/
+/PK1C20.h///1238019747/
+/PLU405.h///1238019747/
+/PM520.h///1238019747/
+/PM826.h///1238019747/
+/PM828.h///1238019747/
+/PM854.h///1238019747/
+/PM856.h///1238019747/
+/PMC405.h///1238019747/
+/PMC440.h///1238019747/
+/PN62.h///1238019747/
+/PPChameleonEVB.h///1238019747/
+/QS823.h///1238019747/
+/QS850.h///1238019747/
+/QS860T.h///1238019747/
+/R360MPI.h///1238019747/
+/RBC823.h///1238019747/
+/RPXClassic.h///1238019747/
+/RPXlite.h///1238019747/
+/RPXlite_DW.h///1238019747/
+/RPXsuper.h///1238019747/
+/RRvision.h///1238019747/
+/Rattler.h///1238019747/
+/SBC8540.h///1238019747/
+/SCM.h///1238019747/
+/SIMPC8313.h///1238019747/
+/SL8245.h///1238019747/
+/SM850.h///1238019747/
+/SMN42.h///1238019747/
+/SPD823TS.h///1238019747/
+/SX1.h///1238019748/
+/SXNI855T.h///1238019748/
+/Sandpoint8240.h///1238019747/
+/Sandpoint8245.h///1238019747/
+/TASREG.h///1238019748/
+/TB5200.h///1238019748/
+/TK885D.h///1238019748/
+/TOP5200.h///1238019748/
+/TOP860.h///1238019748/
+/TQM5200.h///1238019748/
+/TQM823L.h///1238019748/
+/TQM823M.h///1238019748/
+/TQM8260.h///1238019748/
+/TQM8272.h///1238019748/
+/TQM834x.h///1238019748/
+/TQM850L.h///1238019748/
+/TQM850M.h///1238019748/
+/TQM855L.h///1238019748/
+/TQM855M.h///1238019748/
+/TQM85xx.h///1238019748/
+/TQM860L.h///1238019748/
+/TQM860M.h///1238019748/
+/TQM862L.h///1238019748/
+/TQM862M.h///1238019748/
+/TQM866M.h///1238019748/
+/TQM885D.h///1238019748/
+/Total5200.h///1238019748/
+/VCMA9.h///1238019748/
+/VOH405.h///1238019748/
+/VOM405.h///1238019748/
+/VoVPN-GW.h///1238019748/
+/W7OLMC.h///1238019748/
+/W7OLMG.h///1238019748/
+/WUH405.h///1238019748/
+/XPEDITE1K.h///1238019748/
+/XPEDITE5200.h///1238019748/
+/XPEDITE5370.h///1238019748/
+/Yukon8220.h///1238019748/
+/ZPC1900.h///1238019748/
+/ZUMA.h///1238019748/
+/acadia.h///1238019741/
+/actux1.h///1238019741/
+/actux2.h///1238019741/
+/actux3.h///1238019741/
+/actux4.h///1238019741/
+/ads5121.h///1238019741/
+/aev.h///1238019741/
+/afeb9260.h///1238019741/
+/alpr.h///1238019741/
+/amcc-common.h///1238019741/
+/ap325rxa.h///1238019741/
+/apollon.h///1238019741/
+/armadillo.h///1238019741/
+/assabet.h///1238019741/
+/at91cap9adk.h///1238019741/
+/at91rm9200dk.h///1238019741/
+/at91sam9260ek.h///1238019741/
+/at91sam9261ek.h///1238019741/
+/at91sam9263ek.h///1238019741/
+/at91sam9rlek.h///1238019741/
+/atc.h///1238019741/
+/atngw100.h///1238019741/
+/atstk1002.h///1238019741/
+/atstk1003.h///1238019741/
+/atstk1004.h///1238019741/
+/atstk1006.h///1238019741/
+/bamboo.h///1238019741/
+/bf533-ezkit.h///1238019742/
+/bf533-stamp.h///1238019742/
+/bf537-stamp.h///1238019742/
+/bf561-ezkit.h///1238019742/
+/bubinga.h///1238019742/
+/c2mon.h///1238019742/
+/canmb.h///1238019742/
+/canyonlands.h///1238019742/
+/cerf250.h///1238019742/
+/cm4008.h///1238019742/
+/cm41xx.h///1238019742/
+/cm5200.h///1238019742/
+/cmc_pu2.h///1238019742/
+/cmi_mpc5xx.h///1238019742/
+/cobra5272.h///1238019742/
+/cogent_common.h///1238019742/
+/cogent_mpc8260.h///1238019742/
+/cogent_mpc8xx.h///1238019742/
+/cpci5200.h///1238019742/
+/cradle.h///1238019744/
+/csb226.h///1238019744/
+/csb272.h///1238019744/
+/csb472.h///1238019744/
+/csb637.h///1238019744/
+/davinci_dvevm.h///1238019744/
+/davinci_schmoogie.h///1238019744/
+/davinci_sffsdr.h///1238019744/
+/davinci_sonata.h///1238019744/
+/dbau1x00.h///1238019744/
+/debris.h///1238019744/
+/delta.h///1238019744/
+/dnp1110.h///1238019744/
+/eNET.h///1238019744/
+/eXalion.h///1238019744/
+/ebony.h///1238019744/
+/ep7312.h///1238019744/
+/ep8248.h///1238019744/
+/ep8260.h///1238019744/
+/ep82xxm.h///1238019744/
+/evb4510.h///1238019744/
+/favr-32-ezkit.h///1238019744/
+/fx12mm.h///1238019744/
+/gcplus.h///1238019744/
+/gdppc440etx.h///1238019744/
+/gr_cpci_ax2000.h///1238019744/
+/gr_ep2s60.h///1238019744/
+/gr_xc3s_1500.h///1238019744/
+/grsim.h///1238019744/
+/grsim_leon2.h///1238019744/
+/gth2.h///1238019744/
+/gw8260.h///1238019744/
+/h2_p2_dbg_board.h///1238019744/
+/hammerhead.h///1238019744/
+/hcu4.h///1238019744/
+/hcu5.h///1238019744/
+/hermes.h///1238019744/
+/hmi1001.h///1238019744/
+/hymod.h///1238019744/
+/idmr.h///1238019745/
+/impa7.h///1238019745/
+/imx31_litekit.h///1238019745/
+/imx31_phycore.h///1238019745/
+/incaip.h///1238019745/
+/inka4x0.h///1238019745/
+/innokom.h///1238019745/
+/integratorap.h///1238019745/
+/integratorcp.h///1238019745/
+/ixdp425.h///1238019745/
+/ixdpg425.h///1238019745/
+/jupiter.h///1238019745/
+/katmai.h///1238019745/
+/kb9202.h///1238019745/
+/keymile-common.h///1238019745/
+/kilauea.h///1238019745/
+/km8xx.h///1238019745/
+/kmeter1.h///1238019745/
+/kmsupx4.h///1238019745/
+/korat.h///1238019745/
+/kvme080.h///1238019745/
+/lart.h///1238019745/
+/linkstation.h///1238019745/
+/logodl.h///1238019745/
+/lpc2292sodimm.h///1238019745/
+/lpd7a400-10.h///1238019745/
+/lpd7a400.h///1238019745/
+/lpd7a404-10.h///1238019745/
+/lpd7a404.h///1238019745/
+/luan.h///1238019745/
+/lubbock.h///1238019745/
+/lwmon.h///1238019745/
+/lwmon5.h///1238019745/
+/m501sk.h///1238019745/
+/makalu.h///1238019745/
+/mcc200.h///1238019745/
+/mcu25.h///1238019745/
+/mecp5200.h///1238019745/
+/mgcoge.h///1238019745/
+/mgsuvd.h///1238019745/
+/microblaze-generic.h///1238019745/
+/mimc200.h///1238019745/
+/ml300.h///1238019745/
+/ml507.h///1238019745/
+/modnet50.h///1238019745/
+/motionpro.h///1238019745/
+/mp2usb.h///1238019745/
+/mpc7448hpc2.h///1238019745/
+/mpr2.h///1238019746/
+/ms7720se.h///1238019746/
+/ms7722se.h///1238019746/
+/ms7750se.h///1238019746/
+/muas3001.h///1238019746/
+/mucmc52.h///1238019746/
+/munices.h///1238019746/
+/mx1ads.h///1238019746/
+/mx1fs2.h///1238019746/
+/mx31ads.h///1238019746/
+/neo.h///1238019746/
+/netstal-common.h///1238019746/
+/netstar.h///1238019746/
+/nmdk8815.h///1238019746/
+/ns9750dev.h///1238019746/
+/o2dnt.h///1238019746/
+/ocotea.h///1238019746/
+/omap1510.h///1238019746/
+/omap1510inn.h///1238019746/
+/omap1610h2.h///1238019746/
+/omap1610inn.h///1238019746/
+/omap2420h4.h///1238019746/
+/omap3_beagle.h///1238019746/
+/omap3_evm.h///1238019746/
+/omap3_overo.h///1238019746/
+/omap3_pandora.h///1238019746/
+/omap3_zoom1.h///1238019746/
+/omap5912osk.h///1238019746/
+/omap730.h///1238019746/
+/omap730p2.h///1238019746/
+/p3mx.h///1238019746/
+/p3p440.h///1238019746/
+/pb1x00.h///1238019747/
+/pcs440ep.h///1238019747/
+/pcu_e.h///1238019747/
+/pdnb3.h///1238019747/
+/pf5200.h///1238019747/
+/pleb2.h///1238019747/
+/ppmc7xx.h///1238019747/
+/ppmc8260.h///1238019747/
+/purple.h///1238019747/
+/pxa255_idp.h///1238019747/
+/qemu-mips.h///1238019747/
+/qong.h///1238019747/
+/quad100hd.h///1238019747/
+/quantum.h///1238019747/
+/r2dplus.h///1238019747/
+/r7780mp.h///1238019747/
+/redwood.h///1238019747/
+/rmu.h///1238019747/
+/rsdproto.h///1238019747/
+/rsk7203.h///1238019747/
+/sacsng.h///1238019747/
+/sbc2410x.h///1238019747/
+/sbc405.h///1238019747/
+/sbc8240.h///1238019747/
+/sbc8260.h///1238019747/
+/sbc8349.h///1238019747/
+/sbc8548.h///1238019747/
+/sbc8560.h///1238019747/
+/sbc8641d.h///1238019747/
+/sc3.h///1238019747/
+/sc520_cdp.h///1238019747/
+/sc520_spunk.h///1238019747/
+/sc520_spunk_rel.h///1238019747/
+/scb9328.h///1238019747/
+/sequoia.h///1238019747/
+/sh7763rdp.h///1238019747/
+/sh7785lcr.h///1238019747/
+/shannon.h///1238019747/
+/smdk2400.h///1238019747/
+/smdk2410.h///1238019747/
+/smdk6400.h///1238019747/
+/smmaco4.h///1238019747/
+/socrates.h///1238019747/
+/sorcery.h///1238019747/
+/spc1920.h///1238019747/
+/spieval.h///1238019747/
+/stxgp3.h///1238019747/
+/stxssa.h///1238019747/
+/stxxtc.h///1238019747/
+/suzaku.h///1238019747/
+/svm_sc8xx.h///1238019747/
+/taihu.h///1238019748/
+/taishan.h///1238019748/
+/tb0229.h///1238019748/
+/trab.h///1238019748/
+/trizepsiv.h///1238019748/
+/uc100.h///1238019748/
+/uc101.h///1238019748/
+/utx8245.h///1238019748/
+/v37.h///1238019748/
+/v38b.h///1238019748/
+/v5fx30teval.h///1238019748/
+/vct.h///1238019748/
+/versatile.h///1238019748/
+/virtlab2.h///1238019748/
+/voiceblue.h///1238019748/
+/walnut.h///1238019748/
+/wepep250.h///1238019748/
+/xaeniax.h///1238019748/
+/xilinx-ppc.h///1238019748/
+/xilinx-ppc405-generic.h///1238019748/
+/xilinx-ppc405.h///1238019748/
+/xilinx-ppc440-generic.h///1238019748/
+/xilinx-ppc440.h///1238019748/
+/xm250.h///1238019748/
+/xsengine.h///1238019748/
+/yosemite.h///1238019748/
+/yucca.h///1238019748/
+/zeus.h///1238019748/
+/zylonite.h///1238019748/
+/barco.h///1238019742/
+/DB64360.h///1238019744/
+/METROBOX.h///1238028711/
+/de1_or1k.h///1238028711/
+/KAREF.h///1238019745/
diff -Naur u-boot-2009.03_orig/include/configs/CVS/Entries.Old u-boot-2009.03/include/configs/CVS/Entries.Old
--- u-boot-2009.03_orig/include/configs/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/configs/CVS/Entries.Old      2009-03-31 15:00:45.000000000 -0700
@@ -0,0 +1,477 @@
+/A3000.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ADCIOP.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ADNPESC1.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ADNPESC1_base_32.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ADS860.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/AMX860.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/AP1000.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/APC405.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/AR405.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ASH405.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ATUM8548.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/Adder.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/AdderUSB.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/Alaska8220.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/AmigaOneG3SE.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/B2.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/BAB7xx.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/BC3450.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/BMW.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/CANBT.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/CATcenter.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/CCM.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/CMS700.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/CPC45.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/CPCI2DP.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/CPCI405.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/CPCI4052.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/CPCI405AB.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/CPCI405DT.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/CPCI750.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/CPCIISER4.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/CPU86.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/CPU87.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/CRAYL1.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/CU824.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/DASA_SIM.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/DB64460.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/DK1C20.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/DK1C20_safe_32.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/DK1C20_standard_32.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/DK1S10.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/DK1S10_mtx_ldk_20.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/DK1S10_safe_32.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/DK1S10_standard_32.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/DP405.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/DU405.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/DU440.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/EB+MCF-EV123.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ELPPC.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ELPT860.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/EP1C20.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/EP1S10.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/EP1S40.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/EP88x.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ERIC.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ESTEEM192E.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ETX094.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/EVB64260.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/EXBITGEN.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/FADS823.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/FADS850SAR.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/FADS860T.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/FLAGADM.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/FPS850L.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/FPS860L.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/G2000.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/GEN860T.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/GENIETV.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/GTH.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/HH405.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/HIDDEN_DRAGON.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/HMI10.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/HUB405.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IAD210.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ICU862.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IDS8247.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IP860.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IPHASE4539.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ISPAN.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IVML24.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IVMS8.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/IceCube.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/JSE.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/KUP4K.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/KUP4X.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/LANTEC.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/M52277EVB.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/M5235EVB.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/M5249EVB.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/M5253DEMO.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/M5253EVBE.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/M5271EVB.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/M5272C3.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/M5275EVB.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/M5282EVB.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/M53017EVB.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/M5329EVB.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/M5373EVB.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/M54451EVB.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/M54455EVB.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/M5475EVB.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/M5485EVB.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MBX.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MBX860T.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MHPC.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MIP405.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ML2.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MOUSSE.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MPC8260ADS.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MPC8266ADS.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MPC8313ERDB.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MPC8315ERDB.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MPC8323ERDB.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MPC832XEMDS.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MPC8349EMDS.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MPC8349ITX.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MPC8360EMDS.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MPC8360ERDK.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MPC837XEMDS.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MPC837XERDB.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MPC8536DS.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MPC8540ADS.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MPC8540EVAL.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MPC8541CDS.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MPC8544DS.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MPC8548CDS.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MPC8555CDS.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MPC8560ADS.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MPC8568MDS.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MPC8572DS.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MPC8610HPCD.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MPC8641HPCN.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MPC86xADS.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MPC885ADS.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MUSENKI.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MVBC_P.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MVBLM7.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MVBLUE.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MVS1.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/MigoR.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/NC650.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/NETPHONE.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/NETTA.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/NETTA2.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/NETVIA.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/NSCU.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/NX823.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/OCRTC.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ORSG.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/OXC.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/P3G4.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/PATI.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/PCI405.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/PCI5441.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/PCIPPC2.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/PCIPPC6.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/PIP405.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/PK1C20.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/PLU405.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/PM520.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/PM826.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/PM828.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/PM854.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/PM856.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/PMC405.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/PMC440.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/PN62.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/PPChameleonEVB.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/QS823.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/QS850.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/QS860T.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/R360MPI.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/RBC823.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/RPXClassic.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/RPXlite.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/RPXlite_DW.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/RPXsuper.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/RRvision.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/Rattler.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/SBC8540.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/SCM.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/SIMPC8313.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/SL8245.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/SM850.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/SMN42.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/SPD823TS.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/SX1.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/SXNI855T.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/Sandpoint8240.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/Sandpoint8245.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/TASREG.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/TB5200.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/TK885D.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/TOP5200.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/TOP860.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/TQM5200.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/TQM823L.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/TQM823M.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/TQM8260.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/TQM8272.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/TQM834x.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/TQM850L.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/TQM850M.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/TQM855L.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/TQM855M.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/TQM85xx.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/TQM860L.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/TQM860M.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/TQM862L.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/TQM862M.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/TQM866M.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/TQM885D.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/Total5200.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/VCMA9.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/VOH405.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/VOM405.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/VoVPN-GW.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/W7OLMC.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/W7OLMG.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/WUH405.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/XPEDITE1K.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/XPEDITE5200.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/XPEDITE5370.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/Yukon8220.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ZPC1900.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ZUMA.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/acadia.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/actux1.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/actux2.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/actux3.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/actux4.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ads5121.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/aev.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/afeb9260.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/alpr.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/amcc-common.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ap325rxa.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/apollon.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/armadillo.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/assabet.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/at91cap9adk.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/at91rm9200dk.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/at91sam9260ek.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/at91sam9261ek.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/at91sam9263ek.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/at91sam9rlek.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/atc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/atngw100.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/atstk1002.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/atstk1003.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/atstk1004.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/atstk1006.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bamboo.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bf533-ezkit.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bf533-stamp.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bf537-stamp.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bf561-ezkit.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bubinga.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/c2mon.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/canmb.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/canyonlands.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cerf250.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cm4008.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cm41xx.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cm5200.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmc_pu2.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmi_mpc5xx.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cobra5272.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cogent_common.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cogent_mpc8260.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cogent_mpc8xx.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpci5200.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cradle.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/csb226.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/csb272.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/csb472.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/csb637.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/davinci_dvevm.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/davinci_schmoogie.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/davinci_sffsdr.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/davinci_sonata.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dbau1x00.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/debris.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/delta.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dnp1110.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/eNET.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/eXalion.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ebony.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ep7312.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ep8248.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ep8260.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ep82xxm.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/evb4510.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/favr-32-ezkit.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fx12mm.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/gcplus.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/gdppc440etx.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/gr_cpci_ax2000.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/gr_ep2s60.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/gr_xc3s_1500.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/grsim.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/grsim_leon2.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/gth2.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/gw8260.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/h2_p2_dbg_board.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/hammerhead.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/hcu4.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/hcu5.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/hermes.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/hmi1001.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/hymod.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/idmr.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/impa7.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/imx31_litekit.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/imx31_phycore.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/incaip.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/inka4x0.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/innokom.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/integratorap.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/integratorcp.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ixdp425.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ixdpg425.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/jupiter.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/katmai.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/kb9202.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/keymile-common.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/kilauea.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/km8xx.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/kmeter1.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/kmsupx4.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/korat.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/kvme080.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lart.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/linkstation.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/logodl.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lpc2292sodimm.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lpd7a400-10.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lpd7a400.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lpd7a404-10.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lpd7a404.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/luan.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lubbock.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lwmon.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lwmon5.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/m501sk.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/makalu.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mcc200.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mcu25.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mecp5200.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mgcoge.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mgsuvd.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/microblaze-generic.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mimc200.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ml300.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ml507.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/modnet50.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/motionpro.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mp2usb.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc7448hpc2.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpr2.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ms7720se.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ms7722se.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ms7750se.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/muas3001.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mucmc52.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/munices.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mx1ads.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mx1fs2.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mx31ads.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/neo.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/netstal-common.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/netstar.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nmdk8815.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ns9750dev.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/o2dnt.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ocotea.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/omap1510.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/omap1510inn.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/omap1610h2.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/omap1610inn.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/omap2420h4.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/omap3_beagle.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/omap3_evm.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/omap3_overo.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/omap3_pandora.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/omap3_zoom1.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/omap5912osk.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/omap730.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/omap730p2.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/p3mx.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/p3p440.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pb1x00.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pcs440ep.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pcu_e.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pdnb3.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pf5200.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pleb2.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ppmc7xx.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ppmc8260.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/purple.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pxa255_idp.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/qemu-mips.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/qong.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/quad100hd.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/quantum.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/r2dplus.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/r7780mp.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/redwood.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/rmu.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/rsdproto.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/rsk7203.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sacsng.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sbc2410x.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sbc405.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sbc8240.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sbc8260.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sbc8349.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sbc8548.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sbc8560.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sbc8641d.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sc3.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sc520_cdp.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sc520_spunk.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sc520_spunk_rel.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/scb9328.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sequoia.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sh7763rdp.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sh7785lcr.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/shannon.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/smdk2400.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/smdk2410.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/smdk6400.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/smmaco4.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/socrates.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sorcery.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/spc1920.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/spieval.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/stxgp3.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/stxssa.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/stxxtc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/suzaku.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/svm_sc8xx.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/taihu.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/taishan.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tb0229.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/trab.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/trizepsiv.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/uc100.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/uc101.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/utx8245.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/v37.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/v38b.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/v5fx30teval.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/vct.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/versatile.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/virtlab2.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/voiceblue.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/walnut.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/wepep250.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xaeniax.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xilinx-ppc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xilinx-ppc405-generic.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xilinx-ppc405.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xilinx-ppc440-generic.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xilinx-ppc440.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xm250.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/xsengine.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yosemite.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yucca.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/zeus.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/zylonite.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/barco.h/1.1.1.1/Thu Mar 26 00:37:22 2009//
+/DB64360.h/1.1.1.1/Thu Mar 26 00:37:43 2009//
+/METROBOX.h/1.2/Thu Mar 26 00:51:51 2009//
+/de1_or1k.h/1.2/Thu Mar 26 00:39:02 2009//
+/KAREF.h/1.1.1.1/Tue Mar 31 22:00:45 2009//T1.1.1.1
+D
diff -Naur u-boot-2009.03_orig/include/configs/CVS/Repository u-boot-2009.03/include/configs/CVS/Repository
--- u-boot-2009.03_orig/include/configs/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/configs/CVS/Repository       2009-03-25 15:25:49.321627600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/configs
diff -Naur u-boot-2009.03_orig/include/configs/CVS/Root u-boot-2009.03/include/configs/CVS/Root
--- u-boot-2009.03_orig/include/configs/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/configs/CVS/Root     2009-03-25 15:25:49.306002700 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/configs/DB64360.h u-boot-2009.03/include/configs/DB64360.h
--- u-boot-2009.03_orig/include/configs/DB64360.h       2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/include/configs/DB64360.h    2009-03-25 17:37:43.255222400 -0700
@@ -1,607 +1,610 @@
-/*
- * (C) Copyright 2001
- * Josh Huber <huber@mclx.com>, Mission Critical Linux, Inc.
- *
- * 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
- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-/*************************************************************************
- * (c) 2002 Datentechnik AG - Project: Dino
- *
- *
- * $Id: DB64360.h,v 1.3 2003/04/26 04:58:13 brad Exp $
- *
-  ************************************************************************/
-
-/*************************************************************************
- *
- * History:
- *
- *     $Log: DB64360.h,v $
- *     Revision 1.3  2003/04/26 04:58:13  brad
- *     Cosmetic changes and compiler warning cleanups
- *
- *     Revision 1.2  2003/04/23 15:48:15  ingo
- *     mem. map output added
- *
- *     Revision 1.1  2003/04/17 09:31:42  ias
- *     keymile changes 17_04_2003
- *
- *     Revision 1.10  2003/03/06 12:25:04  ias
- *     750 FX CPU HID settings updated
- *
- *     Revision 1.9  2003/03/03 16:14:36  ias
- *     cleanup compiler warnings of printf fuctions
- *
- *     Revision 1.8  2003/03/03 15:11:44  ias
- *     Marvell MPSC-UART is working
- *
- *     Revision 1.7  2003/02/26 12:15:45  ssu
- *     adapted default parameters to new board flash address
- *
- *     Revision 1.6  2003/02/25 14:55:42  ssu
- *     changed default environment parameters
- *
- *     Revision 1.5  2003/02/21 17:14:23  ias
- *     added extended SPD handling
- *
- *     Revision 1.4  2003/01/14 09:16:08  ias
- *     PPCBoot for Marvel Beta 0.9
- *
- *     Revision 1.3  2002/12/03 13:56:26  ias
- *     Environment in flash support added
- *
- *     Revision 1.2  2002/11/29 16:53:29  ias
- *     Flash support for STM added
- *
- *     Revision 1.1  2002/11/29 13:36:31  ias
- *     Revision 0.1 of PPCBOOT (1.1.5) for Marvell DB64360 IBM750FX Board
- *     - working DDRRAM (only 32MByte of 128MB Modul)
- *     - working I2C Driver for SPD EEPROM read
- *     - working DUART 16650 for Serial Console
- *     - working "console"
- *
- *
- *
- ************************************************************************/
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/* This define must be before the core.h include */
-#define CONFIG_DB64360         1       /* this is an DB64360 board     */
-
-#ifndef __ASSEMBLY__
-#include "../board/Marvell/include/core.h"
-#endif
-
-/*-----------------------------------------------------*/
-/*    #include "../board/db64360/local.h"            */
-#ifndef __LOCAL_H
-#define __LOCAL_H
-
-/* first ethernet */
-#define CONFIG_ETHADDR         64:36:00:00:00:01
-                                                                                            /* next two ethernet hwaddrs */
-#define CONFIG_HAS_ETH1
-#define CONFIG_ETH1ADDR                64:36:00:00:00:02
-/* in the atlantis 64360 we have only 2 ETH port on the board,
-if we use PCI it has its own MAC addr */
-
-#define CONFIG_ENV_OVERWRITE
-#endif /* __CONFIG_H */
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_74xx                    /* we have a 750FX (override local.h) */
-
-#define CONFIG_DB64360         1       /* this is an DB64360 board     */
-
-#define CONFIG_BAUDRATE                115200  /* console baudrate = 115000    */
-/*ronen - we don't use the global CONFIG_ECC, since in the global ecc we initialize the
-       DRAM for ECC in the phase we are relocating to it, which isn't so sufficient.
-       so we will define our ECC CONFIG and initilize the DRAM for ECC in the DRAM initialization phase,
-       see sdram_init.c   */
-#undef CONFIG_ECC       /* enable ECC support */
-#define CONFIG_MV64360_ECC
-
-/* which initialization functions to call for this board */
-#define CONFIG_MISC_INIT_R     /* initialize the icache L1 */
-#define CONFIG_BOARD_EARLY_INIT_F
-
-#define CONFIG_SYS_BOARD_NAME          "DB64360"
-#define CONFIG_IDENT_STRING    "Marvell DB64360 (1.1)"
-
-/*#define CONFIG_SYS_HUSH_PARSER */
-#undef CONFIG_SYS_HUSH_PARSER
-
-#define CONFIG_SYS_PROMPT_HUSH_PS2     "> "
-
-/*
- * The following defines let you select what serial you want to use
- * for your console driver.
- *
- * what to do:
- * to use the DUART, undef CONFIG_MPSC.         If you have hacked a serial
- * cable onto the second DUART channel, change the CONFIG_SYS_DUART port from 1
- * to 0 below.
- *
- * to use the MPSC, #define CONFIG_MPSC.  If you have wired up another
- * mpsc channel, change CONFIG_MPSC_PORT to the desired value.
- */
-
-#define CONFIG_MPSC_PORT       0
-
-/* to change the default ethernet port, use this define (options: 0, 1, 2) */
-#define CONFIG_NET_MULTI
-#define MV_ETH_DEVS 2
-
-/* #undef CONFIG_ETHER_PORT_MII         */
-#if 0
-#define CONFIG_BOOTDELAY       -1      /* autoboot disabled            */
-#else
-#define CONFIG_BOOTDELAY       3       /* autoboot after 5 seconds     */
-#endif
-#define CONFIG_ZERO_BOOTDELAY_CHECK
-
-
-#undef CONFIG_BOOTARGS
-/*#define CONFIG_PREBOOT       "echo;echo Type \\\"run flash_nfs\\\" to mount root filesystem over NFS;echo" */
-
-/* ronen - autoboot using tftp */
-#if (CONFIG_BOOTDELAY >= 0)
-#define CONFIG_BOOTCOMMAND     "tftpboot 0x400000 uImage;\
- setenv bootargs ${bootargs} ${bootargs_root} nfsroot=${serverip}:${rootpath} \
- ip=${ipaddr}:${serverip}${bootargs_end};  bootm 0x400000; "
-
-#define CONFIG_BOOTARGS "console=ttyS0,115200"
-
-#endif
-
-/* ronen - the u-boot.bin should be ~0x30000 bytes */
-#define CONFIG_EXTRA_ENV_SETTINGS \
-     "burn_uboot_sep= tftp 100000 u-boot.bin;protect off all;era FFF00000 FFF4ffff; \
-cp.b 100000 FFF00000 0x40000;protect on 1:0-4;\0" \
-      "burn_uboot_dep= tftp 100000 u-boot.bin;protect off all;era FFF00000 FFF7ffff; \
-cp.b 100000 FFF00000 0x40000;protect on 1:0-7;\0" \
-      "bootargs_root=root=/dev/nfs rw\0" \
-      "bootargs_end=:::DB64360:eth0:none \0"\
-      "ethprime=mv_enet0\0"\
-      "standalone=fsload 0x400000 uImage;setenv bootargs ${bootargs} root=/dev/mtdblock/0 rw \
-ip=${ipaddr}:${serverip}${bootargs_end}; bootm 0x400000;\0"
-
-/* --------------------------------------------------------------------------------------------------------------- */
-/* New bootcommands for Marvell DB64360 c 2002 Ingo Assmus */
-
-#define CONFIG_IPADDR          10.2.40.90
-
-#define CONFIG_SERIAL          "No. 1"
-#define CONFIG_SERVERIP                10.2.1.126
-#define CONFIG_ROOTPATH /mnt/yellow_dog_mini
-
-
-#define CONFIG_TESTDRAMDATA    y
-#define CONFIG_TESTDRAMADDRESS n
-#define CONFIG_TESETDRAMWALK   n
-
-/* --------------------------------------------------------------------------------------------------------------- */
-
-#define CONFIG_LOADS_ECHO      0        /* echo off for serial download */
-#define CONFIG_SYS_LOADS_BAUD_CHANGE           /* allow baudrate changes       */
-
-#undef CONFIG_WATCHDOG                 /* watchdog disabled            */
-#undef CONFIG_ALTIVEC                  /* undef to disable             */
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_SUBNETMASK
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_BOOTFILESIZE
-
-
-/*
- * JFFS2 partitions
- *
- */
-/* No command line, one static partition, whole device */
-#undef CONFIG_JFFS2_CMDLINE
-#define CONFIG_JFFS2_DEV               "nor1"
-#define CONFIG_JFFS2_PART_SIZE         0xFFFFFFFF
-#define CONFIG_JFFS2_PART_OFFSET       0x00000000
-
-/* mtdparts command line support */
-
-/* Use first bank for JFFS2, second bank contains U-Boot.
- *
- * Note: fake mtd_id's used, no linux mtd map file.
- */
-/*
-#define CONFIG_JFFS2_CMDLINE
-#define MTDIDS_DEFAULT         "nor1=db64360-1"
-#define MTDPARTS_DEFAULT       "mtdparts=db64360-1:-(jffs2)"
-*/
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_ASKENV
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_EEPROM
-#define CONFIG_CMD_CACHE
-#define CONFIG_CMD_JFFS2
-#define CONFIG_CMD_PCI
-#define CONFIG_CMD_NET
-
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1
-#define CONFIG_SYS_I2C_MULTI_EEPROMS
-#define CONFIG_SYS_I2C_SPEED   40000           /* I2C speed default */
-
-/* #define CONFIG_SYS_GT_DUAL_CPU       also for JTAG even with one cpu */
-#define CONFIG_SYS_LONGHELP                    /* undef to save memory         */
-#define CONFIG_SYS_PROMPT      "=> "           /* Monitor Command Prompt       */
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CBSIZE      1024            /* Console I/O Buffer Size      */
-#else
-#define CONFIG_SYS_CBSIZE      256             /* Console I/O Buffer Size      */
-#endif
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define CONFIG_SYS_MAXARGS     16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-
-/*#define CONFIG_SYS_MEMTEST_START     0x00400000       memtest works on       */
-/*#define CONFIG_SYS_MEMTEST_END               0x00C00000       4 ... 12 MB in DRAM    */
-/*#define CONFIG_SYS_MEMTEST_END               0x07c00000       4 ... 124 MB in DRAM   */
-
-/*
-#define CONFIG_SYS_DRAM_TEST
- * DRAM tests
- *   CONFIG_SYS_DRAM_TEST - enables the following tests.
- *
- *   CONFIG_SYS_DRAM_TEST_DATA - Enables test for shorted or open data lines
- *                       Environment variable 'test_dram_data' must be
- *                       set to 'y'.
- *   CONFIG_SYS_DRAM_TEST_DATA - Enables test to verify that each word is uniquely
- *                       addressable. Environment variable
- *                       'test_dram_address' must be set to 'y'.
- *   CONFIG_SYS_DRAM_TEST_WALK - Enables test a 64-bit walking ones pattern test.
- *                       This test takes about 6 minutes to test 64 MB.
- *                       Environment variable 'test_dram_walk' must be
- *                       set to 'y'.
- */
-#define CONFIG_SYS_DRAM_TEST
-#if defined(CONFIG_SYS_DRAM_TEST)
-#define CONFIG_SYS_MEMTEST_START               0x00400000      /* memtest works on     */
-/* #define CONFIG_SYS_MEMTEST_END              0x00C00000       4 ... 12 MB in DRAM    */
-#define CONFIG_SYS_MEMTEST_END         0x07c00000      /* 4 ... 124 MB in DRAM */
-#define CONFIG_SYS_DRAM_TEST_DATA
-#define CONFIG_SYS_DRAM_TEST_ADDRESS
-#define CONFIG_SYS_DRAM_TEST_WALK
-#endif /* CONFIG_SYS_DRAM_TEST */
-
-#undef CONFIG_DISPLAY_MEMMAP           /* at the end of the bootprocess show the memory map */
-#undef CONFIG_SYS_DISPLAY_DIMM_SPD_CONTENT     /* show SPD content during boot */
-
-#define CONFIG_SYS_LOAD_ADDR           0x00400000      /* default load address */
-
-#define CONFIG_SYS_HZ                  1000            /* decr freq: 1ms ticks */
-/*ronen - this the Sys clock (cpu bus,internal dram and SDRAM) */
-#define CONFIG_SYS_BUS_HZ              133000000       /* 133 MHz (CPU = 5*Bus = 666MHz)               */
-#define CONFIG_SYS_BUS_CLK             CONFIG_SYS_BUS_HZ
-
-#define CONFIG_SYS_DDR_SDRAM_CYCLE_COUNT_LOP 7 /* define the SDRAM cycle count */
-#define CONFIG_SYS_DDR_SDRAM_CYCLE_COUNT_ROP 50 /* for 400MHZ -> 5.0 ns, for 133MHZ -> 7.50 ns */
-
-/*ronen - this is the Tclk (MV64360 core) */
-#define CONFIG_SYS_TCLK                133000000
-
-
-#define CONFIG_SYS_BAUDRATE_TABLE      { 9600, 19200, 38400, 57600, 115200, 230400 }
-
-#define CONFIG_SYS_750FX_HID0          0x8000c084
-#define CONFIG_SYS_750FX_HID1          0x54800000
-#define CONFIG_SYS_750FX_HID2          0x00000000
-
-/*
- * Low Level Configuration Settings
- * (address mappings, register initial values, etc.)
- * You should know what you are doing if you make changes here.
- */
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area
- */
-
-/*
- * When locking data in cache you should point the CONFIG_SYS_INIT_RAM_ADDRESS
- * To an unused memory region. The stack will remain in cache until RAM
- * is initialized
-*/
-#define CONFIG_SYS_INIT_RAM_LOCK
-#define CONFIG_SYS_INIT_RAM_ADDR       0x40000000 /* unused memory region */
-#define CONFIG_SYS_INIT_RAM_END        0x1000
-#define CONFIG_SYS_GBL_DATA_SIZE       128  /* size in bytes reserved for init data */
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE)
-
-#define RELOCATE_INTERNAL_RAM_ADDR
-#ifdef RELOCATE_INTERNAL_RAM_ADDR
-       #define CONFIG_SYS_INTERNAL_RAM_ADDR    0xf8000000
-#endif
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define CONFIG_SYS_SDRAM_BASE          0x00000000
-/* Dummies for BAT 4-7 */
-#define CONFIG_SYS_SDRAM1_BASE         0x10000000      /* each 256 MByte */
-#define CONFIG_SYS_SDRAM2_BASE         0x20000000
-#define CONFIG_SYS_SDRAM3_BASE         0x30000000
-#define CONFIG_SYS_SDRAM4_BASE         0x40000000
-#define CONFIG_SYS_FLASH_BASE                  0xfff00000
-
-#define CONFIG_SYS_DFL_BOOTCS_BASE     0xff800000
-#define CONFIG_VERY_BIG_RAM            /* we will use up to 256M memory for cause we are short of BATS*/
-
-#define BRIDGE_REG_BASE_BOOTM 0xfbe00000 /* this paramaters are used when booting the linux kernel */
-#define UART_BASE_BOOTM              0xfbb00000 /* in order to be sync with the kernel parameters. */
-#define PCI0_IO_BASE_BOOTM    0xfd000000
-
-#define CONFIG_SYS_RESET_ADDRESS               0xfff00100
-#define CONFIG_SYS_MONITOR_LEN         (256 << 10)     /* Reserve 256 kB for Monitor */
-#define CONFIG_SYS_MONITOR_BASE                CONFIG_SYS_FLASH_BASE
-#define CONFIG_SYS_MALLOC_LEN          (256 << 10)     /* Reserve 256 kB for malloc */
-
-/* areas to map different things with the GT in physical space */
-#define CONFIG_SYS_DRAM_BANKS          4
-
-/* What to put in the bats. */
-#define CONFIG_SYS_MISC_REGION_BASE    0xf0000000
-
-/* Peripheral Device section */
-
-/*******************************************************/
-/* We have on the db64360 Board :                 */
-/* GT-Chipset Register Area                            */
-/* GT-Chipset internal SRAM 256k                   */
-/* SRAM on external device module                 */
-/* Real time clock on external device module     */
-/* dobble UART on external device module        */
-/* Data flash on external device module                    */
-/* Boot flash on external device module                    */
-/*******************************************************/
-#define CONFIG_SYS_DFL_GT_REGS         0x14000000                              /* boot time GT_REGS */
-#define         CONFIG_SYS_DB64360_RESET_ADDR 0x14000000                               /* After power on Reset the DB64360 is here */
-
-/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
-#define CONFIG_SYS_GT_REGS             0xf1000000                              /* GT Registers will be mapped here */
-#define CONFIG_SYS_DEV_BASE            0xfc000000                              /* GT Devices CS start here */
-
-#define CONFIG_SYS_DEV0_SPACE          CONFIG_SYS_DEV_BASE                             /* DEV_CS0 device modul sram */
-#define CONFIG_SYS_DEV1_SPACE          (CONFIG_SYS_DEV0_SPACE + CONFIG_SYS_DEV0_SIZE)  /* DEV_CS1 device modul real time clock (rtc) */
-#define CONFIG_SYS_DEV2_SPACE          (CONFIG_SYS_DEV1_SPACE + CONFIG_SYS_DEV1_SIZE)  /* DEV_CS2 device modul doubel uart (duart) */
-#define CONFIG_SYS_DEV3_SPACE          (CONFIG_SYS_DEV2_SPACE + CONFIG_SYS_DEV2_SIZE)  /* DEV_CS3 device modul large flash */
-
-#define CONFIG_SYS_DEV0_SIZE            _8M                                    /* db64360 sram  @ 0xfc00.0000 */
-#define CONFIG_SYS_DEV1_SIZE            _8M                                    /* db64360 rtc   @ 0xfc80.0000 */
-#define CONFIG_SYS_DEV2_SIZE           _16M                                    /* db64360 duart @ 0xfd00.0000 */
-#define CONFIG_SYS_DEV3_SIZE           _16M                                    /* db64360 flash @ 0xfe00.0000 */
-/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
-
-/* Reset values for Port behavior (8bit/ 32bit, etc.) only corrected by device width */
-#define CONFIG_SYS_DEV0_PAR            0x8FEFFFFF                              /* 32Bit  sram */
-#define CONFIG_SYS_DEV1_PAR            0x8FCFFFFF                              /* 8Bit  rtc */
-#define CONFIG_SYS_DEV2_PAR            0x8FCFFFFF                              /* 8Bit duart */
-#define CONFIG_SYS_8BIT_BOOT_PAR       0x8FCFFFFF                              /* 8Bit flash */
-#define CONFIG_SYS_32BIT_BOOT_PAR      0x8FEFFFFF                              /* 32Bit flash */
-
-       /*   c    4    a      8     2     4    1      c         */
-       /* 33 22|2222|22 22|111 1|11 11|1 1  |    |             */
-       /* 10 98|7654|32 10|987 6|54 32|1 098|7 654|3 210       */
-       /* 11|00|0100|10 10|100|0 00|10 0|100 0|001 1|100       */
-       /*  3| 0|.... ..| 2| 4 |  0 |  4 |  8  |  3  | 4        */
-
-
-/* ronen - update MPP Control MV64360*/
-#define CONFIG_SYS_MPP_CONTROL_0       0x02222222
-#define CONFIG_SYS_MPP_CONTROL_1       0x11333011
-#define CONFIG_SYS_MPP_CONTROL_2       0x40431111
-#define CONFIG_SYS_MPP_CONTROL_3       0x00000044
-
-/*# define CONFIG_SYS_SERIAL_PORT_MUX  0x00000102       0=hiZ  1=MPSC0 2=ETH 0 and 2 RMII */
-
-
-# define CONFIG_SYS_GPP_LEVEL_CONTROL  0x2c600000      /* 1111 1001 0000 1111 1100 0000 0000 0000*/
-                                                       /* gpp[31]              gpp[30]         gpp[29]         gpp[28] */
-                               /* gpp[27]                      gpp[24]*/
-                                                       /* gpp[19:14] */
-
-/* setup new config_value for MV64360 DDR-RAM !! */
-# define CONFIG_SYS_SDRAM_CONFIG       0x58200400      /* 0x1400  copied from Dink32 bzw. VxWorks*/
-
-#define CONFIG_SYS_DUART_IO            CONFIG_SYS_DEV2_SPACE
-#define CONFIG_SYS_DUART_CHAN          1               /* channel to use for console */
-#define CONFIG_SYS_INIT_CHAN1
-#define CONFIG_SYS_INIT_CHAN2
-
-#define SRAM_BASE              CONFIG_SYS_DEV0_SPACE
-#define SRAM_SIZE              0x00100000              /* 1 MB of sram */
-
-
-/*-----------------------------------------------------------------------
- * PCI stuff
- *-----------------------------------------------------------------------
- */
-
-#define PCI_HOST_ADAPTER 0             /* configure ar pci adapter     */
-#define PCI_HOST_FORCE 1               /* configure as pci host        */
-#define PCI_HOST_AUTO  2               /* detected via arbiter enable  */
-
-#define CONFIG_PCI                     /* include pci support          */
-#define CONFIG_PCI_HOST PCI_HOST_FORCE /* select pci host function     */
-#define CONFIG_PCI_PNP                 /* do pci plug-and-play         */
-#define CONFIG_EEPRO100                        /* ronen - Support for Intel 82557/82559/82559ER chips */
-
-/* PCI MEMORY MAP section */
-#define CONFIG_SYS_PCI0_MEM_BASE       0x80000000
-#define CONFIG_SYS_PCI0_MEM_SIZE       _128M
-#define CONFIG_SYS_PCI1_MEM_BASE       0x88000000
-#define CONFIG_SYS_PCI1_MEM_SIZE       _128M
-
-#define CONFIG_SYS_PCI0_0_MEM_SPACE    (CONFIG_SYS_PCI0_MEM_BASE)
-#define CONFIG_SYS_PCI1_0_MEM_SPACE    (CONFIG_SYS_PCI1_MEM_BASE)
-
-/* PCI I/O MAP section */
-#define CONFIG_SYS_PCI0_IO_BASE        0xfa000000
-#define CONFIG_SYS_PCI0_IO_SIZE        _16M
-#define CONFIG_SYS_PCI1_IO_BASE        0xfb000000
-#define CONFIG_SYS_PCI1_IO_SIZE        _16M
-
-#define CONFIG_SYS_PCI0_IO_SPACE       (CONFIG_SYS_PCI0_IO_BASE)
-#define CONFIG_SYS_PCI0_IO_SPACE_PCI   (CONFIG_SYS_PCI0_IO_BASE) /* ronen we want phy=bus 0x00000000 */
-#define CONFIG_SYS_PCI1_IO_SPACE       (CONFIG_SYS_PCI1_IO_BASE)
-#define CONFIG_SYS_PCI1_IO_SPACE_PCI   (CONFIG_SYS_PCI1_IO_BASE) /* ronen we want phy=bus 0x00000000 */
-
-#if defined (CONFIG_750CX)
-#define CONFIG_SYS_PCI_IDSEL 0x0
-#else
-#define CONFIG_SYS_PCI_IDSEL 0x30
-#endif
-/*----------------------------------------------------------------------
- * Initial BAT mappings
- */
-
-/* NOTES:
- * 1) GUARDED and WRITE_THRU not allowed in IBATS
- * 2) CACHEINHIBIT and WRITETHROUGH not allowed together in same BAT
- */
-
-/* SDRAM */
-#define CONFIG_SYS_IBAT0L (CONFIG_SYS_SDRAM_BASE | BATL_PP_RW | BATL_CACHEINHIBIT)
-#define CONFIG_SYS_IBAT0U (CONFIG_SYS_SDRAM_BASE | BATU_BL_256M | BATU_VS | BATU_VP)
-#define CONFIG_SYS_DBAT0L (CONFIG_SYS_SDRAM_BASE | BATL_PP_RW | BATL_CACHEINHIBIT | BATL_GUARDEDSTORAGE)
-#define CONFIG_SYS_DBAT0U CONFIG_SYS_IBAT0U
-
-/* init ram */
-#define CONFIG_SYS_IBAT1L  (CONFIG_SYS_INIT_RAM_ADDR | BATL_PP_RW | BATL_MEMCOHERENCE)
-#define CONFIG_SYS_IBAT1U  (CONFIG_SYS_INIT_RAM_ADDR | BATU_BL_256K | BATU_VS | BATU_VP)
-#define CONFIG_SYS_DBAT1L  CONFIG_SYS_IBAT1L
-#define CONFIG_SYS_DBAT1U  CONFIG_SYS_IBAT1U
-
-/* PCI0, PCI1 in one BAT */
-#define CONFIG_SYS_IBAT2L BATL_NO_ACCESS
-#define CONFIG_SYS_IBAT2U CONFIG_SYS_DBAT2U
-#define CONFIG_SYS_DBAT2L (CONFIG_SYS_PCI0_MEM_BASE | BATL_CACHEINHIBIT | BATL_PP_RW | BATL_GUARDEDSTORAGE)
-#define CONFIG_SYS_DBAT2U (CONFIG_SYS_PCI0_MEM_BASE | BATU_BL_256M | BATU_VS | BATU_VP)
-
-/* GT regs, bootrom, all the devices, PCI I/O */
-#define CONFIG_SYS_IBAT3L (CONFIG_SYS_MISC_REGION_BASE | BATL_CACHEINHIBIT | BATL_PP_RW)
-#define CONFIG_SYS_IBAT3U (CONFIG_SYS_MISC_REGION_BASE | BATU_VS | BATU_VP | BATU_BL_256M)
-#define CONFIG_SYS_DBAT3L (CONFIG_SYS_MISC_REGION_BASE | BATL_CACHEINHIBIT | BATL_PP_RW | BATL_GUARDEDSTORAGE)
-#define CONFIG_SYS_DBAT3U CONFIG_SYS_IBAT3U
-
-/* I2C addresses for the two DIMM SPD chips */
-#define DIMM0_I2C_ADDR 0x56
-#define DIMM1_I2C_ADDR 0x54
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ           (8<<20) /* Initial Memory map for Linux */
-
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-#define CONFIG_SYS_MAX_FLASH_BANKS     2       /* max number of memory banks   */
-#define CONFIG_SYS_MAX_FLASH_SECT      67      /* max number of sectors on one chip */
-
-#define CONFIG_SYS_EXTRA_FLASH_DEVICE  DEVICE3 /* extra flash at device 3 */
-#define CONFIG_SYS_EXTRA_FLASH_WIDTH   4       /* 32 bit */
-#define CONFIG_SYS_BOOT_FLASH_WIDTH    1       /* 8 bit */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    120000  /* Timeout for Flash Erase (in ms) */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Timeout for Flash Write (in ms) */
-#define CONFIG_SYS_FLASH_LOCK_TOUT     500     /* Timeout for Flash Lock (in ms) */
-#define CONFIG_SYS_FLASH_CFI           1
-
-#define CONFIG_ENV_IS_IN_FLASH 1
-#define CONFIG_ENV_SIZE                0x1000  /* Total Size of Environment Sector */
-#define CONFIG_ENV_SECT_SIZE   0x10000
-#define CONFIG_ENV_ADDR              0xFFF78000 /* Marvell 8-Bit Bootflash last sector */
-/* #define CONFIG_ENV_ADDR        (CONFIG_SYS_FLASH_BASE+CONFIG_SYS_MONITOR_LEN-CONFIG_ENV_SECT_SIZE) */
-
-/*-----------------------------------------------------------------------
- * Cache Configuration
- */
-#define CONFIG_SYS_CACHELINE_SIZE      32      /* For all MPC74xx CPUs          */
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CACHELINE_SHIFT     5       /* log base 2 of the above value */
-#endif
-
-/*-----------------------------------------------------------------------
- * L2CR setup -- make sure this is right for your board!
- * look in include/mpc74xx.h for the defines used here
- */
-
-#define CONFIG_SYS_L2
-
-
-#if defined (CONFIG_750CX) || defined (CONFIG_750FX)
-#define L2_INIT 0
-#else
-
-#define L2_INIT                0
-/*
-#define L2_INIT                (L2CR_L2SIZ_2M | L2CR_L2CLK_3 | L2CR_L2RAM_BURST | \
-                       L2CR_L2OH_5 | L2CR_L2CTL | L2CR_L2WT)
-*/
-#endif
-
-#define L2_ENABLE      (L2_INIT | L2CR_L2E)
-
-/*
- * Internal Definitions
- *
- * Boot Flags
- */
-#define BOOTFLAG_COLD  0x01            /* Normal Power-On: Boot from FLASH */
-#define BOOTFLAG_WARM  0x02            /* Software reboot                  */
-
-#define CONFIG_SYS_BOARD_ASM_INIT      1
-
-#endif /* __CONFIG_H */
+/*
+ * (C) Copyright 2001
+ * Josh Huber <huber@mclx.com>, Mission Critical Linux, Inc.
+ *
+ * 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
+ */
+
+/*
+ * board/config.h - configuration options, board specific
+ */
+
+/*************************************************************************
+ * (c) 2002 Datentechnik AG - Project: Dino
+ *
+ *
+ * $Id: DB64360.h,v 1.1.1.1 2009/03/25 22:22:24 kenagy Exp $
+ *
+  ************************************************************************/
+
+/*************************************************************************
+ *
+ * History:
+ *
+ *     $Log: DB64360.h,v $
+ *     Revision 1.1.1.1  2009/03/25 22:22:24  kenagy
+ *     no message
+ *     
+ *     Revision 1.3  2003/04/26 04:58:13  brad
+ *     Cosmetic changes and compiler warning cleanups
+ *
+ *     Revision 1.2  2003/04/23 15:48:15  ingo
+ *     mem. map output added
+ *
+ *     Revision 1.1  2003/04/17 09:31:42  ias
+ *     keymile changes 17_04_2003
+ *
+ *     Revision 1.10  2003/03/06 12:25:04  ias
+ *     750 FX CPU HID settings updated
+ *
+ *     Revision 1.9  2003/03/03 16:14:36  ias
+ *     cleanup compiler warnings of printf fuctions
+ *
+ *     Revision 1.8  2003/03/03 15:11:44  ias
+ *     Marvell MPSC-UART is working
+ *
+ *     Revision 1.7  2003/02/26 12:15:45  ssu
+ *     adapted default parameters to new board flash address
+ *
+ *     Revision 1.6  2003/02/25 14:55:42  ssu
+ *     changed default environment parameters
+ *
+ *     Revision 1.5  2003/02/21 17:14:23  ias
+ *     added extended SPD handling
+ *
+ *     Revision 1.4  2003/01/14 09:16:08  ias
+ *     PPCBoot for Marvel Beta 0.9
+ *
+ *     Revision 1.3  2002/12/03 13:56:26  ias
+ *     Environment in flash support added
+ *
+ *     Revision 1.2  2002/11/29 16:53:29  ias
+ *     Flash support for STM added
+ *
+ *     Revision 1.1  2002/11/29 13:36:31  ias
+ *     Revision 0.1 of PPCBOOT (1.1.5) for Marvell DB64360 IBM750FX Board
+ *     - working DDRRAM (only 32MByte of 128MB Modul)
+ *     - working I2C Driver for SPD EEPROM read
+ *     - working DUART 16650 for Serial Console
+ *     - working "console"
+ *
+ *
+ *
+ ************************************************************************/
+
+#ifndef __CONFIG_H
+#define __CONFIG_H
+
+/* This define must be before the core.h include */
+#define CONFIG_DB64360         1       /* this is an DB64360 board     */
+
+#ifndef __ASSEMBLY__
+#include "../board/Marvell/include/core.h"
+#endif
+
+/*-----------------------------------------------------*/
+/*    #include "../board/db64360/local.h"            */
+#ifndef __LOCAL_H
+#define __LOCAL_H
+
+/* first ethernet */
+#define CONFIG_ETHADDR         64:36:00:00:00:01
+                                                                                            /* next two ethernet hwaddrs */
+#define CONFIG_HAS_ETH1
+#define CONFIG_ETH1ADDR                64:36:00:00:00:02
+/* in the atlantis 64360 we have only 2 ETH port on the board,
+if we use PCI it has its own MAC addr */
+
+#define CONFIG_ENV_OVERWRITE
+#endif /* __CONFIG_H */
+
+/*
+ * High Level Configuration Options
+ * (easy to change)
+ */
+
+#define CONFIG_74xx                    /* we have a 750FX (override local.h) */
+
+#define CONFIG_DB64360         1       /* this is an DB64360 board     */
+
+#define CONFIG_BAUDRATE                115200  /* console baudrate = 115000    */
+/*ronen - we don't use the global CONFIG_ECC, since in the global ecc we initialize the
+       DRAM for ECC in the phase we are relocating to it, which isn't so sufficient.
+       so we will define our ECC CONFIG and initilize the DRAM for ECC in the DRAM initialization phase,
+       see sdram_init.c   */
+#undef CONFIG_ECC       /* enable ECC support */
+#define CONFIG_MV64360_ECC
+
+/* which initialization functions to call for this board */
+#define CONFIG_MISC_INIT_R     /* initialize the icache L1 */
+#define CONFIG_BOARD_EARLY_INIT_F
+
+#define CONFIG_SYS_BOARD_NAME          "DB64360"
+#define CONFIG_IDENT_STRING    "Marvell DB64360 (1.1)"
+
+/*#define CONFIG_SYS_HUSH_PARSER */
+#undef CONFIG_SYS_HUSH_PARSER
+
+#define CONFIG_SYS_PROMPT_HUSH_PS2     "> "
+
+/*
+ * The following defines let you select what serial you want to use
+ * for your console driver.
+ *
+ * what to do:
+ * to use the DUART, undef CONFIG_MPSC.         If you have hacked a serial
+ * cable onto the second DUART channel, change the CONFIG_SYS_DUART port from 1
+ * to 0 below.
+ *
+ * to use the MPSC, #define CONFIG_MPSC.  If you have wired up another
+ * mpsc channel, change CONFIG_MPSC_PORT to the desired value.
+ */
+
+#define CONFIG_MPSC_PORT       0
+
+/* to change the default ethernet port, use this define (options: 0, 1, 2) */
+#define CONFIG_NET_MULTI
+#define MV_ETH_DEVS 2
+
+/* #undef CONFIG_ETHER_PORT_MII         */
+#if 0
+#define CONFIG_BOOTDELAY       -1      /* autoboot disabled            */
+#else
+#define CONFIG_BOOTDELAY       3       /* autoboot after 5 seconds     */
+#endif
+#define CONFIG_ZERO_BOOTDELAY_CHECK
+
+
+#undef CONFIG_BOOTARGS
+/*#define CONFIG_PREBOOT       "echo;echo Type \\\"run flash_nfs\\\" to mount root filesystem over NFS;echo" */
+
+/* ronen - autoboot using tftp */
+#if (CONFIG_BOOTDELAY >= 0)
+#define CONFIG_BOOTCOMMAND     "tftpboot 0x400000 uImage;\
+ setenv bootargs ${bootargs} ${bootargs_root} nfsroot=${serverip}:${rootpath} \
+ ip=${ipaddr}:${serverip}${bootargs_end};  bootm 0x400000; "
+
+#define CONFIG_BOOTARGS "console=ttyS0,115200"
+
+#endif
+
+/* ronen - the u-boot.bin should be ~0x30000 bytes */
+#define CONFIG_EXTRA_ENV_SETTINGS \
+     "burn_uboot_sep= tftp 100000 u-boot.bin;protect off all;era FFF00000 FFF4ffff; \
+cp.b 100000 FFF00000 0x40000;protect on 1:0-4;\0" \
+      "burn_uboot_dep= tftp 100000 u-boot.bin;protect off all;era FFF00000 FFF7ffff; \
+cp.b 100000 FFF00000 0x40000;protect on 1:0-7;\0" \
+      "bootargs_root=root=/dev/nfs rw\0" \
+      "bootargs_end=:::DB64360:eth0:none \0"\
+      "ethprime=mv_enet0\0"\
+      "standalone=fsload 0x400000 uImage;setenv bootargs ${bootargs} root=/dev/mtdblock/0 rw \
+ip=${ipaddr}:${serverip}${bootargs_end}; bootm 0x400000;\0"
+
+/* --------------------------------------------------------------------------------------------------------------- */
+/* New bootcommands for Marvell DB64360 c 2002 Ingo Assmus */
+
+#define CONFIG_IPADDR          10.2.40.90
+
+#define CONFIG_SERIAL          "No. 1"
+#define CONFIG_SERVERIP                10.2.1.126
+#define CONFIG_ROOTPATH /mnt/yellow_dog_mini
+
+
+#define CONFIG_TESTDRAMDATA    y
+#define CONFIG_TESTDRAMADDRESS n
+#define CONFIG_TESETDRAMWALK   n
+
+/* --------------------------------------------------------------------------------------------------------------- */
+
+#define CONFIG_LOADS_ECHO      0        /* echo off for serial download */
+#define CONFIG_SYS_LOADS_BAUD_CHANGE           /* allow baudrate changes       */
+
+#undef CONFIG_WATCHDOG                 /* watchdog disabled            */
+#undef CONFIG_ALTIVEC                  /* undef to disable             */
+
+/*
+ * BOOTP options
+ */
+#define CONFIG_BOOTP_SUBNETMASK
+#define CONFIG_BOOTP_GATEWAY
+#define CONFIG_BOOTP_HOSTNAME
+#define CONFIG_BOOTP_BOOTPATH
+#define CONFIG_BOOTP_BOOTFILESIZE
+
+
+/*
+ * JFFS2 partitions
+ *
+ */
+/* No command line, one static partition, whole device */
+#undef CONFIG_JFFS2_CMDLINE
+#define CONFIG_JFFS2_DEV               "nor1"
+#define CONFIG_JFFS2_PART_SIZE         0xFFFFFFFF
+#define CONFIG_JFFS2_PART_OFFSET       0x00000000
+
+/* mtdparts command line support */
+
+/* Use first bank for JFFS2, second bank contains U-Boot.
+ *
+ * Note: fake mtd_id's used, no linux mtd map file.
+ */
+/*
+#define CONFIG_JFFS2_CMDLINE
+#define MTDIDS_DEFAULT         "nor1=db64360-1"
+#define MTDPARTS_DEFAULT       "mtdparts=db64360-1:-(jffs2)"
+*/
+
+
+/*
+ * Command line configuration.
+ */
+#include <config_cmd_default.h>
+
+#define CONFIG_CMD_ASKENV
+#define CONFIG_CMD_I2C
+#define CONFIG_CMD_EEPROM
+#define CONFIG_CMD_CACHE
+#define CONFIG_CMD_JFFS2
+#define CONFIG_CMD_PCI
+#define CONFIG_CMD_NET
+
+
+/*
+ * Miscellaneous configurable options
+ */
+#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1
+#define CONFIG_SYS_I2C_MULTI_EEPROMS
+#define CONFIG_SYS_I2C_SPEED   40000           /* I2C speed default */
+
+/* #define CONFIG_SYS_GT_DUAL_CPU       also for JTAG even with one cpu */
+#define CONFIG_SYS_LONGHELP                    /* undef to save memory         */
+#define CONFIG_SYS_PROMPT      "=> "           /* Monitor Command Prompt       */
+#if defined(CONFIG_CMD_KGDB)
+#define CONFIG_SYS_CBSIZE      1024            /* Console I/O Buffer Size      */
+#else
+#define CONFIG_SYS_CBSIZE      256             /* Console I/O Buffer Size      */
+#endif
+#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
+#define CONFIG_SYS_MAXARGS     16              /* max number of command args   */
+#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
+
+/*#define CONFIG_SYS_MEMTEST_START     0x00400000       memtest works on       */
+/*#define CONFIG_SYS_MEMTEST_END               0x00C00000       4 ... 12 MB in DRAM    */
+/*#define CONFIG_SYS_MEMTEST_END               0x07c00000       4 ... 124 MB in DRAM   */
+
+/*
+#define CONFIG_SYS_DRAM_TEST
+ * DRAM tests
+ *   CONFIG_SYS_DRAM_TEST - enables the following tests.
+ *
+ *   CONFIG_SYS_DRAM_TEST_DATA - Enables test for shorted or open data lines
+ *                       Environment variable 'test_dram_data' must be
+ *                       set to 'y'.
+ *   CONFIG_SYS_DRAM_TEST_DATA - Enables test to verify that each word is uniquely
+ *                       addressable. Environment variable
+ *                       'test_dram_address' must be set to 'y'.
+ *   CONFIG_SYS_DRAM_TEST_WALK - Enables test a 64-bit walking ones pattern test.
+ *                       This test takes about 6 minutes to test 64 MB.
+ *                       Environment variable 'test_dram_walk' must be
+ *                       set to 'y'.
+ */
+#define CONFIG_SYS_DRAM_TEST
+#if defined(CONFIG_SYS_DRAM_TEST)
+#define CONFIG_SYS_MEMTEST_START               0x00400000      /* memtest works on     */
+/* #define CONFIG_SYS_MEMTEST_END              0x00C00000       4 ... 12 MB in DRAM    */
+#define CONFIG_SYS_MEMTEST_END         0x07c00000      /* 4 ... 124 MB in DRAM */
+#define CONFIG_SYS_DRAM_TEST_DATA
+#define CONFIG_SYS_DRAM_TEST_ADDRESS
+#define CONFIG_SYS_DRAM_TEST_WALK
+#endif /* CONFIG_SYS_DRAM_TEST */
+
+#undef CONFIG_DISPLAY_MEMMAP           /* at the end of the bootprocess show the memory map */
+#undef CONFIG_SYS_DISPLAY_DIMM_SPD_CONTENT     /* show SPD content during boot */
+
+#define CONFIG_SYS_LOAD_ADDR           0x00400000      /* default load address */
+
+#define CONFIG_SYS_HZ                  1000            /* decr freq: 1ms ticks */
+/*ronen - this the Sys clock (cpu bus,internal dram and SDRAM) */
+#define CONFIG_SYS_BUS_HZ              133000000       /* 133 MHz (CPU = 5*Bus = 666MHz)               */
+#define CONFIG_SYS_BUS_CLK             CONFIG_SYS_BUS_HZ
+
+#define CONFIG_SYS_DDR_SDRAM_CYCLE_COUNT_LOP 7 /* define the SDRAM cycle count */
+#define CONFIG_SYS_DDR_SDRAM_CYCLE_COUNT_ROP 50 /* for 400MHZ -> 5.0 ns, for 133MHZ -> 7.50 ns */
+
+/*ronen - this is the Tclk (MV64360 core) */
+#define CONFIG_SYS_TCLK                133000000
+
+
+#define CONFIG_SYS_BAUDRATE_TABLE      { 9600, 19200, 38400, 57600, 115200, 230400 }
+
+#define CONFIG_SYS_750FX_HID0          0x8000c084
+#define CONFIG_SYS_750FX_HID1          0x54800000
+#define CONFIG_SYS_750FX_HID2          0x00000000
+
+/*
+ * Low Level Configuration Settings
+ * (address mappings, register initial values, etc.)
+ * You should know what you are doing if you make changes here.
+ */
+
+/*-----------------------------------------------------------------------
+ * Definitions for initial stack pointer and data area
+ */
+
+/*
+ * When locking data in cache you should point the CONFIG_SYS_INIT_RAM_ADDRESS
+ * To an unused memory region. The stack will remain in cache until RAM
+ * is initialized
+*/
+#define CONFIG_SYS_INIT_RAM_LOCK
+#define CONFIG_SYS_INIT_RAM_ADDR       0x40000000 /* unused memory region */
+#define CONFIG_SYS_INIT_RAM_END        0x1000
+#define CONFIG_SYS_GBL_DATA_SIZE       128  /* size in bytes reserved for init data */
+#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE)
+
+#define RELOCATE_INTERNAL_RAM_ADDR
+#ifdef RELOCATE_INTERNAL_RAM_ADDR
+       #define CONFIG_SYS_INTERNAL_RAM_ADDR    0xf8000000
+#endif
+
+/*-----------------------------------------------------------------------
+ * Start addresses for the final memory configuration
+ * (Set up by the startup code)
+ * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
+ */
+#define CONFIG_SYS_SDRAM_BASE          0x00000000
+/* Dummies for BAT 4-7 */
+#define CONFIG_SYS_SDRAM1_BASE         0x10000000      /* each 256 MByte */
+#define CONFIG_SYS_SDRAM2_BASE         0x20000000
+#define CONFIG_SYS_SDRAM3_BASE         0x30000000
+#define CONFIG_SYS_SDRAM4_BASE         0x40000000
+#define CONFIG_SYS_FLASH_BASE                  0xfff00000
+
+#define CONFIG_SYS_DFL_BOOTCS_BASE     0xff800000
+#define CONFIG_VERY_BIG_RAM            /* we will use up to 256M memory for cause we are short of BATS*/
+
+#define BRIDGE_REG_BASE_BOOTM 0xfbe00000 /* this paramaters are used when booting the linux kernel */
+#define UART_BASE_BOOTM              0xfbb00000 /* in order to be sync with the kernel parameters. */
+#define PCI0_IO_BASE_BOOTM    0xfd000000
+
+#define CONFIG_SYS_RESET_ADDRESS               0xfff00100
+#define CONFIG_SYS_MONITOR_LEN         (256 << 10)     /* Reserve 256 kB for Monitor */
+#define CONFIG_SYS_MONITOR_BASE                CONFIG_SYS_FLASH_BASE
+#define CONFIG_SYS_MALLOC_LEN          (256 << 10)     /* Reserve 256 kB for malloc */
+
+/* areas to map different things with the GT in physical space */
+#define CONFIG_SYS_DRAM_BANKS          4
+
+/* What to put in the bats. */
+#define CONFIG_SYS_MISC_REGION_BASE    0xf0000000
+
+/* Peripheral Device section */
+
+/*******************************************************/
+/* We have on the db64360 Board :                 */
+/* GT-Chipset Register Area                            */
+/* GT-Chipset internal SRAM 256k                   */
+/* SRAM on external device module                 */
+/* Real time clock on external device module     */
+/* dobble UART on external device module        */
+/* Data flash on external device module                    */
+/* Boot flash on external device module                    */
+/*******************************************************/
+#define CONFIG_SYS_DFL_GT_REGS         0x14000000                              /* boot time GT_REGS */
+#define         CONFIG_SYS_DB64360_RESET_ADDR 0x14000000                               /* After power on Reset the DB64360 is here */
+
+/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
+#define CONFIG_SYS_GT_REGS             0xf1000000                              /* GT Registers will be mapped here */
+#define CONFIG_SYS_DEV_BASE            0xfc000000                              /* GT Devices CS start here */
+
+#define CONFIG_SYS_DEV0_SPACE          CONFIG_SYS_DEV_BASE                             /* DEV_CS0 device modul sram */
+#define CONFIG_SYS_DEV1_SPACE          (CONFIG_SYS_DEV0_SPACE + CONFIG_SYS_DEV0_SIZE)  /* DEV_CS1 device modul real time clock (rtc) */
+#define CONFIG_SYS_DEV2_SPACE          (CONFIG_SYS_DEV1_SPACE + CONFIG_SYS_DEV1_SIZE)  /* DEV_CS2 device modul doubel uart (duart) */
+#define CONFIG_SYS_DEV3_SPACE          (CONFIG_SYS_DEV2_SPACE + CONFIG_SYS_DEV2_SIZE)  /* DEV_CS3 device modul large flash */
+
+#define CONFIG_SYS_DEV0_SIZE            _8M                                    /* db64360 sram  @ 0xfc00.0000 */
+#define CONFIG_SYS_DEV1_SIZE            _8M                                    /* db64360 rtc   @ 0xfc80.0000 */
+#define CONFIG_SYS_DEV2_SIZE           _16M                                    /* db64360 duart @ 0xfd00.0000 */
+#define CONFIG_SYS_DEV3_SIZE           _16M                                    /* db64360 flash @ 0xfe00.0000 */
+/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
+
+/* Reset values for Port behavior (8bit/ 32bit, etc.) only corrected by device width */
+#define CONFIG_SYS_DEV0_PAR            0x8FEFFFFF                              /* 32Bit  sram */
+#define CONFIG_SYS_DEV1_PAR            0x8FCFFFFF                              /* 8Bit  rtc */
+#define CONFIG_SYS_DEV2_PAR            0x8FCFFFFF                              /* 8Bit duart */
+#define CONFIG_SYS_8BIT_BOOT_PAR       0x8FCFFFFF                              /* 8Bit flash */
+#define CONFIG_SYS_32BIT_BOOT_PAR      0x8FEFFFFF                              /* 32Bit flash */
+
+       /*   c    4    a      8     2     4    1      c         */
+       /* 33 22|2222|22 22|111 1|11 11|1 1  |    |             */
+       /* 10 98|7654|32 10|987 6|54 32|1 098|7 654|3 210       */
+       /* 11|00|0100|10 10|100|0 00|10 0|100 0|001 1|100       */
+       /*  3| 0|.... ..| 2| 4 |  0 |  4 |  8  |  3  | 4        */
+
+
+/* ronen - update MPP Control MV64360*/
+#define CONFIG_SYS_MPP_CONTROL_0       0x02222222
+#define CONFIG_SYS_MPP_CONTROL_1       0x11333011
+#define CONFIG_SYS_MPP_CONTROL_2       0x40431111
+#define CONFIG_SYS_MPP_CONTROL_3       0x00000044
+
+/*# define CONFIG_SYS_SERIAL_PORT_MUX  0x00000102       0=hiZ  1=MPSC0 2=ETH 0 and 2 RMII */
+
+
+# define CONFIG_SYS_GPP_LEVEL_CONTROL  0x2c600000      /* 1111 1001 0000 1111 1100 0000 0000 0000*/
+                                                       /* gpp[31]              gpp[30]         gpp[29]         gpp[28] */
+                               /* gpp[27]                      gpp[24]*/
+                                                       /* gpp[19:14] */
+
+/* setup new config_value for MV64360 DDR-RAM !! */
+# define CONFIG_SYS_SDRAM_CONFIG       0x58200400      /* 0x1400  copied from Dink32 bzw. VxWorks*/
+
+#define CONFIG_SYS_DUART_IO            CONFIG_SYS_DEV2_SPACE
+#define CONFIG_SYS_DUART_CHAN          1               /* channel to use for console */
+#define CONFIG_SYS_INIT_CHAN1
+#define CONFIG_SYS_INIT_CHAN2
+
+#define SRAM_BASE              CONFIG_SYS_DEV0_SPACE
+#define SRAM_SIZE              0x00100000              /* 1 MB of sram */
+
+
+/*-----------------------------------------------------------------------
+ * PCI stuff
+ *-----------------------------------------------------------------------
+ */
+
+#define PCI_HOST_ADAPTER 0             /* configure ar pci adapter     */
+#define PCI_HOST_FORCE 1               /* configure as pci host        */
+#define PCI_HOST_AUTO  2               /* detected via arbiter enable  */
+
+#define CONFIG_PCI                     /* include pci support          */
+#define CONFIG_PCI_HOST PCI_HOST_FORCE /* select pci host function     */
+#define CONFIG_PCI_PNP                 /* do pci plug-and-play         */
+#define CONFIG_EEPRO100                        /* ronen - Support for Intel 82557/82559/82559ER chips */
+
+/* PCI MEMORY MAP section */
+#define CONFIG_SYS_PCI0_MEM_BASE       0x80000000
+#define CONFIG_SYS_PCI0_MEM_SIZE       _128M
+#define CONFIG_SYS_PCI1_MEM_BASE       0x88000000
+#define CONFIG_SYS_PCI1_MEM_SIZE       _128M
+
+#define CONFIG_SYS_PCI0_0_MEM_SPACE    (CONFIG_SYS_PCI0_MEM_BASE)
+#define CONFIG_SYS_PCI1_0_MEM_SPACE    (CONFIG_SYS_PCI1_MEM_BASE)
+
+/* PCI I/O MAP section */
+#define CONFIG_SYS_PCI0_IO_BASE        0xfa000000
+#define CONFIG_SYS_PCI0_IO_SIZE        _16M
+#define CONFIG_SYS_PCI1_IO_BASE        0xfb000000
+#define CONFIG_SYS_PCI1_IO_SIZE        _16M
+
+#define CONFIG_SYS_PCI0_IO_SPACE       (CONFIG_SYS_PCI0_IO_BASE)
+#define CONFIG_SYS_PCI0_IO_SPACE_PCI   (CONFIG_SYS_PCI0_IO_BASE) /* ronen we want phy=bus 0x00000000 */
+#define CONFIG_SYS_PCI1_IO_SPACE       (CONFIG_SYS_PCI1_IO_BASE)
+#define CONFIG_SYS_PCI1_IO_SPACE_PCI   (CONFIG_SYS_PCI1_IO_BASE) /* ronen we want phy=bus 0x00000000 */
+
+#if defined (CONFIG_750CX)
+#define CONFIG_SYS_PCI_IDSEL 0x0
+#else
+#define CONFIG_SYS_PCI_IDSEL 0x30
+#endif
+/*----------------------------------------------------------------------
+ * Initial BAT mappings
+ */
+
+/* NOTES:
+ * 1) GUARDED and WRITE_THRU not allowed in IBATS
+ * 2) CACHEINHIBIT and WRITETHROUGH not allowed together in same BAT
+ */
+
+/* SDRAM */
+#define CONFIG_SYS_IBAT0L (CONFIG_SYS_SDRAM_BASE | BATL_PP_RW | BATL_CACHEINHIBIT)
+#define CONFIG_SYS_IBAT0U (CONFIG_SYS_SDRAM_BASE | BATU_BL_256M | BATU_VS | BATU_VP)
+#define CONFIG_SYS_DBAT0L (CONFIG_SYS_SDRAM_BASE | BATL_PP_RW | BATL_CACHEINHIBIT | BATL_GUARDEDSTORAGE)
+#define CONFIG_SYS_DBAT0U CONFIG_SYS_IBAT0U
+
+/* init ram */
+#define CONFIG_SYS_IBAT1L  (CONFIG_SYS_INIT_RAM_ADDR | BATL_PP_RW | BATL_MEMCOHERENCE)
+#define CONFIG_SYS_IBAT1U  (CONFIG_SYS_INIT_RAM_ADDR | BATU_BL_256K | BATU_VS | BATU_VP)
+#define CONFIG_SYS_DBAT1L  CONFIG_SYS_IBAT1L
+#define CONFIG_SYS_DBAT1U  CONFIG_SYS_IBAT1U
+
+/* PCI0, PCI1 in one BAT */
+#define CONFIG_SYS_IBAT2L BATL_NO_ACCESS
+#define CONFIG_SYS_IBAT2U CONFIG_SYS_DBAT2U
+#define CONFIG_SYS_DBAT2L (CONFIG_SYS_PCI0_MEM_BASE | BATL_CACHEINHIBIT | BATL_PP_RW | BATL_GUARDEDSTORAGE)
+#define CONFIG_SYS_DBAT2U (CONFIG_SYS_PCI0_MEM_BASE | BATU_BL_256M | BATU_VS | BATU_VP)
+
+/* GT regs, bootrom, all the devices, PCI I/O */
+#define CONFIG_SYS_IBAT3L (CONFIG_SYS_MISC_REGION_BASE | BATL_CACHEINHIBIT | BATL_PP_RW)
+#define CONFIG_SYS_IBAT3U (CONFIG_SYS_MISC_REGION_BASE | BATU_VS | BATU_VP | BATU_BL_256M)
+#define CONFIG_SYS_DBAT3L (CONFIG_SYS_MISC_REGION_BASE | BATL_CACHEINHIBIT | BATL_PP_RW | BATL_GUARDEDSTORAGE)
+#define CONFIG_SYS_DBAT3U CONFIG_SYS_IBAT3U
+
+/* I2C addresses for the two DIMM SPD chips */
+#define DIMM0_I2C_ADDR 0x56
+#define DIMM1_I2C_ADDR 0x54
+
+/*
+ * For booting Linux, the board info and command line data
+ * have to be in the first 8 MB of memory, since this is
+ * the maximum mapped by the Linux kernel during initialization.
+ */
+#define CONFIG_SYS_BOOTMAPSZ           (8<<20) /* Initial Memory map for Linux */
+
+/*-----------------------------------------------------------------------
+ * FLASH organization
+ */
+#define CONFIG_SYS_MAX_FLASH_BANKS     2       /* max number of memory banks   */
+#define CONFIG_SYS_MAX_FLASH_SECT      67      /* max number of sectors on one chip */
+
+#define CONFIG_SYS_EXTRA_FLASH_DEVICE  DEVICE3 /* extra flash at device 3 */
+#define CONFIG_SYS_EXTRA_FLASH_WIDTH   4       /* 32 bit */
+#define CONFIG_SYS_BOOT_FLASH_WIDTH    1       /* 8 bit */
+
+#define CONFIG_SYS_FLASH_ERASE_TOUT    120000  /* Timeout for Flash Erase (in ms) */
+#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Timeout for Flash Write (in ms) */
+#define CONFIG_SYS_FLASH_LOCK_TOUT     500     /* Timeout for Flash Lock (in ms) */
+#define CONFIG_SYS_FLASH_CFI           1
+
+#define CONFIG_ENV_IS_IN_FLASH 1
+#define CONFIG_ENV_SIZE                0x1000  /* Total Size of Environment Sector */
+#define CONFIG_ENV_SECT_SIZE   0x10000
+#define CONFIG_ENV_ADDR              0xFFF78000 /* Marvell 8-Bit Bootflash last sector */
+/* #define CONFIG_ENV_ADDR        (CONFIG_SYS_FLASH_BASE+CONFIG_SYS_MONITOR_LEN-CONFIG_ENV_SECT_SIZE) */
+
+/*-----------------------------------------------------------------------
+ * Cache Configuration
+ */
+#define CONFIG_SYS_CACHELINE_SIZE      32      /* For all MPC74xx CPUs          */
+#if defined(CONFIG_CMD_KGDB)
+#define CONFIG_SYS_CACHELINE_SHIFT     5       /* log base 2 of the above value */
+#endif
+
+/*-----------------------------------------------------------------------
+ * L2CR setup -- make sure this is right for your board!
+ * look in include/mpc74xx.h for the defines used here
+ */
+
+#define CONFIG_SYS_L2
+
+
+#if defined (CONFIG_750CX) || defined (CONFIG_750FX)
+#define L2_INIT 0
+#else
+
+#define L2_INIT                0
+/*
+#define L2_INIT                (L2CR_L2SIZ_2M | L2CR_L2CLK_3 | L2CR_L2RAM_BURST | \
+                       L2CR_L2OH_5 | L2CR_L2CTL | L2CR_L2WT)
+*/
+#endif
+
+#define L2_ENABLE      (L2_INIT | L2CR_L2E)
+
+/*
+ * Internal Definitions
+ *
+ * Boot Flags
+ */
+#define BOOTFLAG_COLD  0x01            /* Normal Power-On: Boot from FLASH */
+#define BOOTFLAG_WARM  0x02            /* Software reboot                  */
+
+#define CONFIG_SYS_BOARD_ASM_INIT      1
+
+#endif /* __CONFIG_H */
diff -Naur u-boot-2009.03_orig/include/configs/KAREF.h u-boot-2009.03/include/configs/KAREF.h
--- u-boot-2009.03_orig/include/configs/KAREF.h 2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/include/configs/KAREF.h      2009-03-31 15:00:45.123321600 -0700
@@ -1,309 +1,309 @@
-/*
- * (C) Copyright 2004 Sandburst Corporation
- *
- * 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
- */
-
-/************************************************************************
- * KAMINOREFDES.h - configuration for the Sandburst Kamino Reference
- *                 design.
- ***********************************************************************/
-
-/*
- * $Id: KAREF.h,v 1.6 2005/06/03 15:05:25 tsawyer Exp $
- *
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*-----------------------------------------------------------------------
- * High Level Configuration Options
- *----------------------------------------------------------------------*/
-#define CONFIG_KAREF        1          /* Board is Kamino Ref Variant */
-#define CONFIG_440GX             1          /* Specifc GX support      */
-#define CONFIG_440               1          /* ... PPC440 family       */
-#define CONFIG_4xx               1          /* ... PPC4xx family       */
-#define CONFIG_BOARD_EARLY_INIT_F 1         /* Call board_pre_init     */
-#define CONFIG_MISC_INIT_F       1          /* Call board misc_init_f  */
-#define CONFIG_MISC_INIT_R       1          /* Call board misc_init_r  */
-#undef CONFIG_SYS_DRAM_TEST                         /* Disable-takes long time!*/
-#define CONFIG_SYS_CLK_FREQ      66666666   /* external freq to pll    */
-
-#define CONFIG_VERY_BIG_RAM 1
-#define CONFIG_VERSION_VARIABLE
-
-#define CONFIG_IDENT_STRING " Sandburst Kamino Reference Design"
-
-/*-----------------------------------------------------------------------
- * Base addresses -- Note these are effective addresses where the
- * actual resources get mapped (not physical addresses)
- *----------------------------------------------------------------------*/
-#define CONFIG_SYS_SDRAM_BASE         0x00000000    /* _must_ be 0             */
-#define CONFIG_SYS_FLASH_BASE         0xfff80000    /* start of FLASH          */
-#define CONFIG_SYS_MONITOR_BASE       0xfff80000    /* start of monitor        */
-#define CONFIG_SYS_PCI_MEMBASE        0x80000000    /* mapped pci memory       */
-#define CONFIG_SYS_PERIPHERAL_BASE    0xe0000000    /* internal peripherals    */
-#define CONFIG_SYS_ISRAM_BASE         0xc0000000    /* internal SRAM           */
-#define CONFIG_SYS_PCI_BASE           0xd0000000    /* internal PCI regs       */
-
-#define CONFIG_SYS_NVRAM_BASE_ADDR   (CONFIG_SYS_PERIPHERAL_BASE + 0x08000000)
-#define CONFIG_SYS_KAREF_FPGA_BASE   (CONFIG_SYS_PERIPHERAL_BASE + 0x08200000)
-#define CONFIG_SYS_OFEM_FPGA_BASE    (CONFIG_SYS_PERIPHERAL_BASE + 0x08400000)
-#define CONFIG_SYS_BME32_BASE        (CONFIG_SYS_PERIPHERAL_BASE + 0x08500000)
-#define CONFIG_SYS_GPIO_BASE         (CONFIG_SYS_PERIPHERAL_BASE + 0x00000700)
-
-/* Here for completeness */
-#define CONFIG_SYS_OFEMAC_BASE       (CONFIG_SYS_PERIPHERAL_BASE + 0x08600000)
-
-/*-----------------------------------------------------------------------
- * Initial RAM & stack pointer (placed in internal SRAM)
- *----------------------------------------------------------------------*/
-#define CONFIG_SYS_TEMP_STACK_OCM    1
-#define CONFIG_SYS_OCM_DATA_ADDR     CONFIG_SYS_ISRAM_BASE
-#define CONFIG_SYS_INIT_RAM_ADDR     CONFIG_SYS_ISRAM_BASE /* Initial RAM address      */
-#define CONFIG_SYS_INIT_RAM_END      0x2000         /* End of used area in RAM */
-#define CONFIG_SYS_GBL_DATA_SIZE     128            /* num bytes initial data  */
-
-#define CONFIG_SYS_GBL_DATA_OFFSET   (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE)
-#define CONFIG_SYS_POST_WORD_ADDR    (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
-#define CONFIG_SYS_INIT_SP_OFFSET    CONFIG_SYS_POST_WORD_ADDR
-
-#define CONFIG_SYS_MONITOR_LEN       (256 * 1024)   /* Rsrv 256kB for Mon      */
-#define CONFIG_SYS_MALLOC_LEN        (128 * 1024)   /* Rsrv 128kB for malloc   */
-
-/*-----------------------------------------------------------------------
- * Serial Port
- *----------------------------------------------------------------------*/
-#undef CONFIG_SERIAL_SOFTWARE_FIFO
-#define CONFIG_SERIAL_MULTI   1
-#define CONFIG_BAUDRATE              9600
-
-#define CONFIG_SYS_BAUDRATE_TABLE  \
-    {300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200}
-
-/*-----------------------------------------------------------------------
- * NVRAM/RTC
- *
- * NOTE: Upper 8 bytes of NVRAM is where the RTC registers are located.
- * The DS1743 code assumes this condition (i.e. -- it assumes the base
- * address for the RTC registers is:
- *
- *     CONFIG_SYS_NVRAM_BASE_ADDR + CONFIG_SYS_NVRAM_SIZE
- *
- *----------------------------------------------------------------------*/
-#define CONFIG_SYS_NVRAM_SIZE        (0x2000 - 8)   /* NVRAM size(8k)- RTC regs*/
-#define CONFIG_RTC_DS174x     1                     /* DS1743 RTC              */
-
-/*-----------------------------------------------------------------------
- * FLASH related
- *----------------------------------------------------------------------*/
-#define CONFIG_SYS_MAX_FLASH_BANKS   1              /* number of banks         */
-#define CONFIG_SYS_MAX_FLASH_SECT    8              /* sectors per device      */
-
-#undef CONFIG_SYS_FLASH_CHECKSUM
-#define CONFIG_SYS_FLASH_ERASE_TOUT  120000         /* Flash Erase TO (in ms)   */
-#define CONFIG_SYS_FLASH_WRITE_TOUT  500            /* Flash Write TO(in ms)    */
-
-/*-----------------------------------------------------------------------
- * DDR SDRAM
- *----------------------------------------------------------------------*/
-#define CONFIG_SPD_EEPROM     1                     /* Use SPD EEPROM for setup*/
-#define SPD_EEPROM_ADDRESS    {0x53}        /* SPD i2c spd addresses   */
-
-/*-----------------------------------------------------------------------
- * I2C
- *----------------------------------------------------------------------*/
-#define CONFIG_HARD_I2C              1              /* I2C hardware support    */
-#undef CONFIG_SOFT_I2C                      /* I2C !bit-banged         */
-#define CONFIG_SYS_I2C_SPEED         400000         /* I2C speed 400kHz        */
-#define CONFIG_SYS_I2C_SLAVE         0x7F           /* I2C slave address       */
-#define CONFIG_SYS_I2C_NOPROBES      {0x69}         /* Don't probe these addrs */
-#define CONFIG_I2C_BUS1              1              /* Include i2c bus 1 supp  */
-
-
-/*-----------------------------------------------------------------------
- * Environment
- *----------------------------------------------------------------------*/
-#define CONFIG_ENV_IS_IN_NVRAM   1                  /* Environment uses NVRAM  */
-#undef CONFIG_ENV_IS_IN_FLASH               /* ... not in flash        */
-#undef CONFIG_ENV_IS_IN_EEPROM              /* ... not in EEPROM       */
-#define CONFIG_ENV_OVERWRITE  1                     /* allow env overwrite     */
-
-#define CONFIG_ENV_SIZE              0x1000         /* Size of Env vars        */
-#define CONFIG_ENV_ADDR              (CONFIG_SYS_NVRAM_BASE_ADDR)
-
-#define CONFIG_BOOTDELAY      5                    /* 5 second autoboot */
-
-#define CONFIG_LOADS_ECHO     1                     /* echo on for serial dnld */
-#define CONFIG_SYS_LOADS_BAUD_CHANGE 1              /* allow baudrate change   */
-
-/*-----------------------------------------------------------------------
- * Networking
- *----------------------------------------------------------------------*/
-#define CONFIG_PPC4xx_EMAC
-#define CONFIG_MII           1              /* MII PHY management      */
-#define CONFIG_NET_MULTI      1
-#define CONFIG_PHY_ADDR              0xff           /* no phy on EMAC0         */
-#define CONFIG_PHY1_ADDR      0xff          /* no phy on EMAC1         */
-#define CONFIG_PHY2_ADDR      0x08          /* PHY addr, MGMT, EMAC2   */
-#define CONFIG_PHY3_ADDR      0x18          /* PHY addr, LCL, EMAC3    */
-#define CONFIG_HAS_ETH0
-#define CONFIG_HAS_ETH1
-#define CONFIG_HAS_ETH2
-#define CONFIG_HAS_ETH3
-#define CONFIG_PHY_RESET      1              /* reset phy upon startup  */
-#define CONFIG_CIS8201_PHY    1                     /* RGMII mode for Cicada   */
-#define CONFIG_CIS8201_SHORT_ETCH 1         /* Use short etch mode     */
-#define CONFIG_PHY_GIGE              1              /* GbE speed/duplex detect */
-#define CONFIG_PHY_RESET_DELAY 1000
-#define CONFIG_NETMASK       255.255.0.0
-#define CONFIG_ETHADDR       00:00:00:00:00:00 /* No EMAC 0 support    */
-#define CONFIG_ETH1ADDR              00:00:00:00:00:00 /* No EMAC 1 support    */
-#define CONFIG_SYS_RX_ETH_BUFFER     32             /* #eth rx buff & descrs   */
-
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_PCI
-#define CONFIG_CMD_IRQ
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_DATE
-#define CONFIG_CMD_BEDBUG
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_DIAG
-#define CONFIG_CMD_MII
-#define CONFIG_CMD_NET
-#define CONFIG_CMD_ELF
-#define CONFIG_CMD_IDE
-#define CONFIG_CMD_FAT
-
-
-/* Include NetConsole support */
-#define CONFIG_NETCONSOLE
-
-/* Include auto complete with tabs */
-#define CONFIG_AUTO_COMPLETE 1
-#define CONFIG_SYS_ALT_MEMTEST      1       /* use real memory test     */
-
-#define CONFIG_SYS_LONGHELP                         /* undef to save memory    */
-#define CONFIG_SYS_PROMPT            "KaRefDes=> "  /* Monitor Command Prompt  */
-
-#define CONFIG_SYS_HUSH_PARSER        1             /* HUSH for ext'd cli      */
-#define CONFIG_SYS_PROMPT_HUSH_PS2    "> "
-
-
-/*-----------------------------------------------------------------------
- * Console Buffer
- *----------------------------------------------------------------------*/
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CBSIZE            1024           /* Console I/O Buffer Size */
-#else
-#define CONFIG_SYS_CBSIZE            256            /* Console I/O Buffer Size */
-#endif
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16)
-                                            /* Print Buffer Size       */
-#define CONFIG_SYS_MAXARGS           16             /* max number of cmd args  */
-#define CONFIG_SYS_BARGSIZE          CONFIG_SYS_CBSIZE     /* Boot Arg Buffer Size     */
-
-/*-----------------------------------------------------------------------
- * Memory Test
- *----------------------------------------------------------------------*/
-#define CONFIG_SYS_MEMTEST_START     0x0400000      /* memtest works on        */
-#define CONFIG_SYS_MEMTEST_END       0x0C00000      /* 4 ... 12 MB in DRAM     */
-
-/*-----------------------------------------------------------------------
- * Compact Flash (in true IDE mode)
- *----------------------------------------------------------------------*/
-#undef CONFIG_IDE_8xx_DIRECT           /* no pcmcia interface required */
-#undef CONFIG_IDE_LED                  /* no led for ide supported     */
-
-#define CONFIG_IDE_RESET               /* reset for ide supported      */
-#define CONFIG_SYS_IDE_MAXBUS          1       /* max. 1 IDE busses    */
-#define CONFIG_SYS_IDE_MAXDEVICE       (CONFIG_SYS_IDE_MAXBUS*1) /* max. 1 drives per IDE bus */
-
-#define CONFIG_SYS_ATA_BASE_ADDR       0xF0000000
-#define CONFIG_SYS_ATA_IDE0_OFFSET     0x0000
-#define CONFIG_SYS_ATA_DATA_OFFSET     0x0000   /* Offset for data I/O */
-#define CONFIG_SYS_ATA_REG_OFFSET      0x0000   /* Offset for normal register accesses*/
-#define CONFIG_SYS_ATA_ALT_OFFSET      0x100000 /* Offset for alternate registers */
-
-#define CONFIG_SYS_ATA_STRIDE          2        /* Directly connected CF, needs a stride
-                                           to get to the correct offset */
-#define CONFIG_DOS_PARTITION  1                     /* Include dos partition   */
-
-/*-----------------------------------------------------------------------
- * PCI
- *----------------------------------------------------------------------*/
-/* General PCI */
-#define CONFIG_PCI                          /* include pci support     */
-#define CONFIG_PCI_PNP                      /* do pci plug-and-play    */
-#define CONFIG_PCI_SCAN_SHOW                /* show pci devices        */
-#define CONFIG_SYS_PCI_TARGBASE      (CONFIG_SYS_PCI_MEMBASE)
-
-/* Board-specific PCI */
-#define CONFIG_SYS_PCI_TARGET_INIT                  /* let board init pci target*/
-
-#define CONFIG_SYS_PCI_SUBSYS_VENDORID 0x17BA       /* Sandburst */
-#define CONFIG_SYS_PCI_SUBSYS_DEVICEID 0xcafe       /* Whatever */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ           (8 << 20) /* Initial Memory map for Linux */
-
-/*
- * Internal Definitions
- *
- * Boot Flags
- */
-#define BOOTFLAG_COLD        0x01           /* Normal PowerOn: Boot from FLASH */
-#define BOOTFLAG_WARM        0x02           /* Software reboot */
-
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_KGDB_BAUDRATE  230400        /* kgdb serial port baud   */
-#define CONFIG_KGDB_SER_INDEX 2                     /* kgdb serial port        */
-#endif
-
-/*-----------------------------------------------------------------------
- * Miscellaneous configurable options
- *----------------------------------------------------------------------*/
-#undef CONFIG_WATCHDOG                      /* watchdog disabled       */
-#define CONFIG_SYS_LOAD_ADDR         0x8000000      /* default load address    */
-#define CONFIG_SYS_EXTBDINFO         1              /* use extended board_info */
-
-#define CONFIG_SYS_HZ                100            /* decr freq: 1 ms ticks   */
-
-
-#endif /* __CONFIG_H */
+/*
+ * (C) Copyright 2004 Sandburst Corporation
+ *
+ * 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
+ */
+
+/************************************************************************
+ * KAMINOREFDES.h - configuration for the Sandburst Kamino Reference
+ *                 design.
+ ***********************************************************************/
+
+/*
+ * $Id: KAREF.h,v 1.1.1.1 2009/03/25 22:22:25 kenagy Exp $
+ *
+ */
+
+#ifndef __CONFIG_H
+#define __CONFIG_H
+
+/*-----------------------------------------------------------------------
+ * High Level Configuration Options
+ *----------------------------------------------------------------------*/
+#define CONFIG_KAREF        1          /* Board is Kamino Ref Variant */
+#define CONFIG_440GX             1          /* Specifc GX support      */
+#define CONFIG_440               1          /* ... PPC440 family       */
+#define CONFIG_4xx               1          /* ... PPC4xx family       */
+#define CONFIG_BOARD_EARLY_INIT_F 1         /* Call board_pre_init     */
+#define CONFIG_MISC_INIT_F       1          /* Call board misc_init_f  */
+#define CONFIG_MISC_INIT_R       1          /* Call board misc_init_r  */
+#undef CONFIG_SYS_DRAM_TEST                         /* Disable-takes long time!*/
+#define CONFIG_SYS_CLK_FREQ      66666666   /* external freq to pll    */
+
+#define CONFIG_VERY_BIG_RAM 1
+#define CONFIG_VERSION_VARIABLE
+
+#define CONFIG_IDENT_STRING " Sandburst Kamino Reference Design"
+
+/*-----------------------------------------------------------------------
+ * Base addresses -- Note these are effective addresses where the
+ * actual resources get mapped (not physical addresses)
+ *----------------------------------------------------------------------*/
+#define CONFIG_SYS_SDRAM_BASE         0x00000000    /* _must_ be 0             */
+#define CONFIG_SYS_FLASH_BASE         0xfff80000    /* start of FLASH          */
+#define CONFIG_SYS_MONITOR_BASE       0xfff80000    /* start of monitor        */
+#define CONFIG_SYS_PCI_MEMBASE        0x80000000    /* mapped pci memory       */
+#define CONFIG_SYS_PERIPHERAL_BASE    0xe0000000    /* internal peripherals    */
+#define CONFIG_SYS_ISRAM_BASE         0xc0000000    /* internal SRAM           */
+#define CONFIG_SYS_PCI_BASE           0xd0000000    /* internal PCI regs       */
+
+#define CONFIG_SYS_NVRAM_BASE_ADDR   (CONFIG_SYS_PERIPHERAL_BASE + 0x08000000)
+#define CONFIG_SYS_KAREF_FPGA_BASE   (CONFIG_SYS_PERIPHERAL_BASE + 0x08200000)
+#define CONFIG_SYS_OFEM_FPGA_BASE    (CONFIG_SYS_PERIPHERAL_BASE + 0x08400000)
+#define CONFIG_SYS_BME32_BASE        (CONFIG_SYS_PERIPHERAL_BASE + 0x08500000)
+#define CONFIG_SYS_GPIO_BASE         (CONFIG_SYS_PERIPHERAL_BASE + 0x00000700)
+
+/* Here for completeness */
+#define CONFIG_SYS_OFEMAC_BASE       (CONFIG_SYS_PERIPHERAL_BASE + 0x08600000)
+
+/*-----------------------------------------------------------------------
+ * Initial RAM & stack pointer (placed in internal SRAM)
+ *----------------------------------------------------------------------*/
+#define CONFIG_SYS_TEMP_STACK_OCM    1
+#define CONFIG_SYS_OCM_DATA_ADDR     CONFIG_SYS_ISRAM_BASE
+#define CONFIG_SYS_INIT_RAM_ADDR     CONFIG_SYS_ISRAM_BASE /* Initial RAM address      */
+#define CONFIG_SYS_INIT_RAM_END      0x2000         /* End of used area in RAM */
+#define CONFIG_SYS_GBL_DATA_SIZE     128            /* num bytes initial data  */
+
+#define CONFIG_SYS_GBL_DATA_OFFSET   (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE)
+#define CONFIG_SYS_POST_WORD_ADDR    (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
+#define CONFIG_SYS_INIT_SP_OFFSET    CONFIG_SYS_POST_WORD_ADDR
+
+#define CONFIG_SYS_MONITOR_LEN       (256 * 1024)   /* Rsrv 256kB for Mon      */
+#define CONFIG_SYS_MALLOC_LEN        (128 * 1024)   /* Rsrv 128kB for malloc   */
+
+/*-----------------------------------------------------------------------
+ * Serial Port
+ *----------------------------------------------------------------------*/
+#undef CONFIG_SERIAL_SOFTWARE_FIFO
+#define CONFIG_SERIAL_MULTI   1
+#define CONFIG_BAUDRATE              9600
+
+#define CONFIG_SYS_BAUDRATE_TABLE  \
+    {300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200}
+
+/*-----------------------------------------------------------------------
+ * NVRAM/RTC
+ *
+ * NOTE: Upper 8 bytes of NVRAM is where the RTC registers are located.
+ * The DS1743 code assumes this condition (i.e. -- it assumes the base
+ * address for the RTC registers is:
+ *
+ *     CONFIG_SYS_NVRAM_BASE_ADDR + CONFIG_SYS_NVRAM_SIZE
+ *
+ *----------------------------------------------------------------------*/
+#define CONFIG_SYS_NVRAM_SIZE        (0x2000 - 8)   /* NVRAM size(8k)- RTC regs*/
+#define CONFIG_RTC_DS174x     1                     /* DS1743 RTC              */
+
+/*-----------------------------------------------------------------------
+ * FLASH related
+ *----------------------------------------------------------------------*/
+#define CONFIG_SYS_MAX_FLASH_BANKS   1              /* number of banks         */
+#define CONFIG_SYS_MAX_FLASH_SECT    8              /* sectors per device      */
+
+#undef CONFIG_SYS_FLASH_CHECKSUM
+#define CONFIG_SYS_FLASH_ERASE_TOUT  120000         /* Flash Erase TO (in ms)   */
+#define CONFIG_SYS_FLASH_WRITE_TOUT  500            /* Flash Write TO(in ms)    */
+
+/*-----------------------------------------------------------------------
+ * DDR SDRAM
+ *----------------------------------------------------------------------*/
+#define CONFIG_SPD_EEPROM     1                     /* Use SPD EEPROM for setup*/
+#define SPD_EEPROM_ADDRESS    {0x53}        /* SPD i2c spd addresses   */
+
+/*-----------------------------------------------------------------------
+ * I2C
+ *----------------------------------------------------------------------*/
+#define CONFIG_HARD_I2C              1              /* I2C hardware support    */
+#undef CONFIG_SOFT_I2C                      /* I2C !bit-banged         */
+#define CONFIG_SYS_I2C_SPEED         400000         /* I2C speed 400kHz        */
+#define CONFIG_SYS_I2C_SLAVE         0x7F           /* I2C slave address       */
+#define CONFIG_SYS_I2C_NOPROBES      {0x69}         /* Don't probe these addrs */
+#define CONFIG_I2C_BUS1              1              /* Include i2c bus 1 supp  */
+
+
+/*-----------------------------------------------------------------------
+ * Environment
+ *----------------------------------------------------------------------*/
+#define CONFIG_ENV_IS_IN_NVRAM   1                  /* Environment uses NVRAM  */
+#undef CONFIG_ENV_IS_IN_FLASH               /* ... not in flash        */
+#undef CONFIG_ENV_IS_IN_EEPROM              /* ... not in EEPROM       */
+#define CONFIG_ENV_OVERWRITE  1                     /* allow env overwrite     */
+
+#define CONFIG_ENV_SIZE              0x1000         /* Size of Env vars        */
+#define CONFIG_ENV_ADDR              (CONFIG_SYS_NVRAM_BASE_ADDR)
+
+#define CONFIG_BOOTDELAY      5                    /* 5 second autoboot */
+
+#define CONFIG_LOADS_ECHO     1                     /* echo on for serial dnld */
+#define CONFIG_SYS_LOADS_BAUD_CHANGE 1              /* allow baudrate change   */
+
+/*-----------------------------------------------------------------------
+ * Networking
+ *----------------------------------------------------------------------*/
+#define CONFIG_PPC4xx_EMAC
+#define CONFIG_MII           1              /* MII PHY management      */
+#define CONFIG_NET_MULTI      1
+#define CONFIG_PHY_ADDR              0xff           /* no phy on EMAC0         */
+#define CONFIG_PHY1_ADDR      0xff          /* no phy on EMAC1         */
+#define CONFIG_PHY2_ADDR      0x08          /* PHY addr, MGMT, EMAC2   */
+#define CONFIG_PHY3_ADDR      0x18          /* PHY addr, LCL, EMAC3    */
+#define CONFIG_HAS_ETH0
+#define CONFIG_HAS_ETH1
+#define CONFIG_HAS_ETH2
+#define CONFIG_HAS_ETH3
+#define CONFIG_PHY_RESET      1              /* reset phy upon startup  */
+#define CONFIG_CIS8201_PHY    1                     /* RGMII mode for Cicada   */
+#define CONFIG_CIS8201_SHORT_ETCH 1         /* Use short etch mode     */
+#define CONFIG_PHY_GIGE              1              /* GbE speed/duplex detect */
+#define CONFIG_PHY_RESET_DELAY 1000
+#define CONFIG_NETMASK       255.255.0.0
+#define CONFIG_ETHADDR       00:00:00:00:00:00 /* No EMAC 0 support    */
+#define CONFIG_ETH1ADDR              00:00:00:00:00:00 /* No EMAC 1 support    */
+#define CONFIG_SYS_RX_ETH_BUFFER     32             /* #eth rx buff & descrs   */
+
+
+/*
+ * BOOTP options
+ */
+#define CONFIG_BOOTP_BOOTFILESIZE
+#define CONFIG_BOOTP_BOOTPATH
+#define CONFIG_BOOTP_GATEWAY
+#define CONFIG_BOOTP_HOSTNAME
+
+
+/*
+ * Command line configuration.
+ */
+#include <config_cmd_default.h>
+
+#define CONFIG_CMD_PCI
+#define CONFIG_CMD_IRQ
+#define CONFIG_CMD_I2C
+#define CONFIG_CMD_DHCP
+#define CONFIG_CMD_DATE
+#define CONFIG_CMD_BEDBUG
+#define CONFIG_CMD_PING
+#define CONFIG_CMD_DIAG
+#define CONFIG_CMD_MII
+#define CONFIG_CMD_NET
+#define CONFIG_CMD_ELF
+#define CONFIG_CMD_IDE
+#define CONFIG_CMD_FAT
+
+
+/* Include NetConsole support */
+#define CONFIG_NETCONSOLE
+
+/* Include auto complete with tabs */
+#define CONFIG_AUTO_COMPLETE 1
+#define CONFIG_SYS_ALT_MEMTEST      1       /* use real memory test     */
+
+#define CONFIG_SYS_LONGHELP                         /* undef to save memory    */
+#define CONFIG_SYS_PROMPT            "KaRefDes=> "  /* Monitor Command Prompt  */
+
+#define CONFIG_SYS_HUSH_PARSER        1             /* HUSH for ext'd cli      */
+#define CONFIG_SYS_PROMPT_HUSH_PS2    "> "
+
+
+/*-----------------------------------------------------------------------
+ * Console Buffer
+ *----------------------------------------------------------------------*/
+#if defined(CONFIG_CMD_KGDB)
+#define CONFIG_SYS_CBSIZE            1024           /* Console I/O Buffer Size */
+#else
+#define CONFIG_SYS_CBSIZE            256            /* Console I/O Buffer Size */
+#endif
+#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16)
+                                            /* Print Buffer Size       */
+#define CONFIG_SYS_MAXARGS           16             /* max number of cmd args  */
+#define CONFIG_SYS_BARGSIZE          CONFIG_SYS_CBSIZE     /* Boot Arg Buffer Size     */
+
+/*-----------------------------------------------------------------------
+ * Memory Test
+ *----------------------------------------------------------------------*/
+#define CONFIG_SYS_MEMTEST_START     0x0400000      /* memtest works on        */
+#define CONFIG_SYS_MEMTEST_END       0x0C00000      /* 4 ... 12 MB in DRAM     */
+
+/*-----------------------------------------------------------------------
+ * Compact Flash (in true IDE mode)
+ *----------------------------------------------------------------------*/
+#undef CONFIG_IDE_8xx_DIRECT           /* no pcmcia interface required */
+#undef CONFIG_IDE_LED                  /* no led for ide supported     */
+
+#define CONFIG_IDE_RESET               /* reset for ide supported      */
+#define CONFIG_SYS_IDE_MAXBUS          1       /* max. 1 IDE busses    */
+#define CONFIG_SYS_IDE_MAXDEVICE       (CONFIG_SYS_IDE_MAXBUS*1) /* max. 1 drives per IDE bus */
+
+#define CONFIG_SYS_ATA_BASE_ADDR       0xF0000000
+#define CONFIG_SYS_ATA_IDE0_OFFSET     0x0000
+#define CONFIG_SYS_ATA_DATA_OFFSET     0x0000   /* Offset for data I/O */
+#define CONFIG_SYS_ATA_REG_OFFSET      0x0000   /* Offset for normal register accesses*/
+#define CONFIG_SYS_ATA_ALT_OFFSET      0x100000 /* Offset for alternate registers */
+
+#define CONFIG_SYS_ATA_STRIDE          2        /* Directly connected CF, needs a stride
+                                           to get to the correct offset */
+#define CONFIG_DOS_PARTITION  1                     /* Include dos partition   */
+
+/*-----------------------------------------------------------------------
+ * PCI
+ *----------------------------------------------------------------------*/
+/* General PCI */
+#define CONFIG_PCI                          /* include pci support     */
+#define CONFIG_PCI_PNP                      /* do pci plug-and-play    */
+#define CONFIG_PCI_SCAN_SHOW                /* show pci devices        */
+#define CONFIG_SYS_PCI_TARGBASE      (CONFIG_SYS_PCI_MEMBASE)
+
+/* Board-specific PCI */
+#define CONFIG_SYS_PCI_TARGET_INIT                  /* let board init pci target*/
+
+#define CONFIG_SYS_PCI_SUBSYS_VENDORID 0x17BA       /* Sandburst */
+#define CONFIG_SYS_PCI_SUBSYS_DEVICEID 0xcafe       /* Whatever */
+
+/*
+ * For booting Linux, the board info and command line data
+ * have to be in the first 8 MB of memory, since this is
+ * the maximum mapped by the Linux kernel during initialization.
+ */
+#define CONFIG_SYS_BOOTMAPSZ           (8 << 20) /* Initial Memory map for Linux */
+
+/*
+ * Internal Definitions
+ *
+ * Boot Flags
+ */
+#define BOOTFLAG_COLD        0x01           /* Normal PowerOn: Boot from FLASH */
+#define BOOTFLAG_WARM        0x02           /* Software reboot */
+
+#if defined(CONFIG_CMD_KGDB)
+#define CONFIG_KGDB_BAUDRATE  230400        /* kgdb serial port baud   */
+#define CONFIG_KGDB_SER_INDEX 2                     /* kgdb serial port        */
+#endif
+
+/*-----------------------------------------------------------------------
+ * Miscellaneous configurable options
+ *----------------------------------------------------------------------*/
+#undef CONFIG_WATCHDOG                      /* watchdog disabled       */
+#define CONFIG_SYS_LOAD_ADDR         0x8000000      /* default load address    */
+#define CONFIG_SYS_EXTBDINFO         1              /* use extended board_info */
+
+#define CONFIG_SYS_HZ                100            /* decr freq: 1 ms ticks   */
+
+
+#endif /* __CONFIG_H */
diff -Naur u-boot-2009.03_orig/include/configs/METROBOX.h u-boot-2009.03/include/configs/METROBOX.h
--- u-boot-2009.03_orig/include/configs/METROBOX.h      2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/include/configs/METROBOX.h   2009-03-31 15:00:55.482564000 -0700
@@ -1,374 +1,377 @@
-/*
- * (C) Copyright 2004 Sandburst Corporation
- *
- * 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
- */
-
-/************************************************************************
- * METROBOX.h - configuration Sandburst MetroBox
- ***********************************************************************/
-
-/*
- * $Id: METROBOX.h,v 1.21 2005/06/03 15:05:25 tsawyer Exp $
- *
- *
- * $Log: METROBOX.h,v $
- * Revision 1.21  2005/06/03 15:05:25  tsawyer
- * MB rev 2.0.3 KA rev 0.0.7.  Add CONFIG_VERSION_VARIABLE, Add fakeled to MB
- *
- * Revision 1.20  2005/04/11 20:51:11  tsawyer
- * fix ethernet
- *
- * Revision 1.19  2005/04/06 15:13:36  tsawyer
- * Update appropriate files to coincide with u-boot 1.1.3
- *
- * Revision 1.18  2005/03/10 14:16:02  tsawyer
- * add def'n for cis8201 short etch option.
- *
- * Revision 1.17  2005/03/09 19:49:51  tsawyer
- * Remove KGDB to allow use of 2nd serial port
- *
- * Revision 1.16  2004/12/02 19:00:23  tsawyer
- * Add misc_init_f to turn on i2c-1 and all four fans before sdram init
- *
- * Revision 1.15  2004/09/15 18:04:12  tsawyer
- * add multiple serial port support
- *
- * Revision 1.14  2004/09/03 15:27:51  tsawyer
- * All metrobox boards are at 66.66 sys clock
- *
- * Revision 1.13  2004/08/05 20:27:46  tsawyer
- * Remove system ace definitions, add net console support
- *
- * Revision 1.12  2004/07/29 20:00:13  tsawyer
- * Add i2c bus 1
- *
- * Revision 1.11  2004/07/21 13:44:18  tsawyer
- * SystemACE is out, CF direct to local bus is in
- *
- * Revision 1.10  2004/06/29 19:08:55  tsawyer
- * Add CONFIG_MISC_INIT_R
- *
- * Revision 1.9         2004/06/28 21:30:53  tsawyer
- * Fix default BOOTARGS
- *
- * Revision 1.8         2004/06/17 15:51:08  tsawyer
- * auto complete
- *
- * Revision 1.7         2004/06/17 15:08:49  tsawyer
- * Add autocomplete
- *
- * Revision 1.6         2004/06/15 12:33:57  tsawyer
- * debugging checkpoint
- *
- * Revision 1.5         2004/06/12 19:48:28  tsawyer
- * Debugging checkpoint
- *
- * Revision 1.4         2004/06/02 13:03:06  tsawyer
- * Fix eth addrs
- *
- * Revision 1.3         2004/05/18 19:56:10  tsawyer
- * Change default bootcommand to pImage.metrobox
- *
- * Revision 1.2         2004/05/18 14:13:44  tsawyer
- * Add bringup values for bootargs and bootcommand.
- * Remove definition of ipaddress and serverip addresses.
- *
- * Revision 1.1         2004/04/16 15:08:54  tsawyer
- * Initial Revision
- *
- *
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*-----------------------------------------------------------------------
- * High Level Configuration Options
- *----------------------------------------------------------------------*/
-#define CONFIG_METROBOX                  1          /* Board is Metrobox       */
-#define CONFIG_440GX             1          /* Specifc GX support      */
-#define CONFIG_440               1          /* ... PPC440 family       */
-#define CONFIG_4xx               1          /* ... PPC4xx family       */
-#define CONFIG_BOARD_EARLY_INIT_F 1         /* Call board_pre_init     */
-#define CONFIG_MISC_INIT_F       1          /* Call board misc_init_f  */
-#define CONFIG_MISC_INIT_R       1          /* Call board misc_init_r  */
-#undef CONFIG_SYS_DRAM_TEST                         /* Disable-takes long time!*/
-#define CONFIG_SYS_CLK_FREQ      66666666   /* external freq to pll    */
-
-#define CONFIG_VERY_BIG_RAM 1
-#define CONFIG_VERSION_VARIABLE
-
-#define CONFIG_IDENT_STRING " Sandburst Metrobox"
-
-/*-----------------------------------------------------------------------
- * Base addresses -- Note these are effective addresses where the
- * actual resources get mapped (not physical addresses)
- *----------------------------------------------------------------------*/
-#define CONFIG_SYS_SDRAM_BASE         0x00000000    /* _must_ be 0             */
-#define CONFIG_SYS_FLASH_BASE         0xfff80000    /* start of FLASH          */
-#define CONFIG_SYS_MONITOR_BASE       0xfff80000    /* start of monitor        */
-#define CONFIG_SYS_PCI_MEMBASE        0x80000000    /* mapped pci memory       */
-#define CONFIG_SYS_PERIPHERAL_BASE    0xe0000000    /* internal peripherals    */
-#define CONFIG_SYS_ISRAM_BASE         0xc0000000    /* internal SRAM           */
-#define CONFIG_SYS_PCI_BASE           0xd0000000    /* internal PCI regs       */
-
-#define CONFIG_SYS_NVRAM_BASE_ADDR   (CONFIG_SYS_PERIPHERAL_BASE + 0x08000000)
-#define CONFIG_SYS_FPGA_BASE         (CONFIG_SYS_PERIPHERAL_BASE + 0x08200000)
-#define CONFIG_SYS_BME32_BASE        (CONFIG_SYS_PERIPHERAL_BASE + 0x08500000)
-#define CONFIG_SYS_GPIO_BASE         (CONFIG_SYS_PERIPHERAL_BASE + 0x00000700)
-
-/*-----------------------------------------------------------------------
- * Initial RAM & stack pointer (placed in internal SRAM)
- *----------------------------------------------------------------------*/
-#define CONFIG_SYS_TEMP_STACK_OCM    1
-#define CONFIG_SYS_OCM_DATA_ADDR     CONFIG_SYS_ISRAM_BASE
-#define CONFIG_SYS_INIT_RAM_ADDR     CONFIG_SYS_ISRAM_BASE /* Initial RAM address      */
-#define CONFIG_SYS_INIT_RAM_END      0x2000         /* End of used area in RAM */
-#define CONFIG_SYS_GBL_DATA_SIZE     128            /* num bytes initial data  */
-
-#define CONFIG_SYS_GBL_DATA_OFFSET   (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE)
-#define CONFIG_SYS_POST_WORD_ADDR    (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
-#define CONFIG_SYS_INIT_SP_OFFSET    CONFIG_SYS_POST_WORD_ADDR
-
-#define CONFIG_SYS_MONITOR_LEN       (256 * 1024)   /* Rsrv 256kB for Mon      */
-#define CONFIG_SYS_MALLOC_LEN        (128 * 1024)   /* Rsrv 128kB for malloc   */
-
-/*-----------------------------------------------------------------------
- * Serial Port
- *----------------------------------------------------------------------*/
-#undef CONFIG_SERIAL_SOFTWARE_FIFO
-#define CONFIG_SERIAL_MULTI   1
-#define CONFIG_BAUDRATE              9600
-
-#define CONFIG_SYS_BAUDRATE_TABLE  \
-    {300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200}
-
-/*-----------------------------------------------------------------------
- * NVRAM/RTC
- *
- * NOTE: Upper 8 bytes of NVRAM is where the RTC registers are located.
- * The DS1743 code assumes this condition (i.e. -- it assumes the base
- * address for the RTC registers is:
- *
- *     CONFIG_SYS_NVRAM_BASE_ADDR + CONFIG_SYS_NVRAM_SIZE
- *
- *----------------------------------------------------------------------*/
-#define CONFIG_SYS_NVRAM_SIZE        (0x2000 - 8)   /* NVRAM size(8k)- RTC regs*/
-#define CONFIG_RTC_DS174x     1                     /* DS1743 RTC              */
-
-/*-----------------------------------------------------------------------
- * FLASH related
- *----------------------------------------------------------------------*/
-#define CONFIG_SYS_MAX_FLASH_BANKS   1              /* number of banks         */
-#define CONFIG_SYS_MAX_FLASH_SECT    8              /* sectors per device      */
-
-#undef CONFIG_SYS_FLASH_CHECKSUM
-#define CONFIG_SYS_FLASH_ERASE_TOUT  120000         /* Flash Erase TO (in ms)   */
-#define CONFIG_SYS_FLASH_WRITE_TOUT  500            /* Flash Write TO(in ms)    */
-
-/*-----------------------------------------------------------------------
- * DDR SDRAM
- *----------------------------------------------------------------------*/
-#define CONFIG_SPD_EEPROM     1                     /* Use SPD EEPROM for setup*/
-#define SPD_EEPROM_ADDRESS    {0x53}        /* SPD i2c spd addresses   */
-
-/*-----------------------------------------------------------------------
- * I2C
- *----------------------------------------------------------------------*/
-#define CONFIG_HARD_I2C              1              /* I2C hardware support    */
-#undef CONFIG_SOFT_I2C                      /* I2C !bit-banged         */
-#define CONFIG_SYS_I2C_SPEED         400000         /* I2C speed 400kHz        */
-#define CONFIG_SYS_I2C_SLAVE         0x7F           /* I2C slave address       */
-#define CONFIG_SYS_I2C_NOPROBES      {0x69}         /* Don't probe these addrs */
-#define CONFIG_I2C_BUS1              1              /* Include i2c bus 1 supp  */
-
-
-/*-----------------------------------------------------------------------
- * Environment
- *----------------------------------------------------------------------*/
-#define CONFIG_ENV_IS_IN_NVRAM   1                  /* Environment uses NVRAM  */
-#undef CONFIG_ENV_IS_IN_FLASH               /* ... not in flash        */
-#undef CONFIG_ENV_IS_IN_EEPROM              /* ... not in EEPROM       */
-#define CONFIG_ENV_OVERWRITE  1                     /* allow env overwrite     */
-
-#define CONFIG_ENV_SIZE              0x1000         /* Size of Env vars        */
-#define CONFIG_ENV_ADDR              (CONFIG_SYS_NVRAM_BASE_ADDR)
-
-#define CONFIG_BOOTARGS              "console=ttyS0,9600 root=/dev/nfs rw nfsroot=$serverip:/home/metrobox0 nfsaddrs=$ipaddr:::::eth0:none "
-#define CONFIG_BOOTCOMMAND    "tftp 8000000 pImage.metrobox;bootm 8000000"
-#define CONFIG_BOOTDELAY      5                    /* disable autoboot */
-
-#define CONFIG_LOADS_ECHO     1                     /* echo on for serial dnld */
-#define CONFIG_SYS_LOADS_BAUD_CHANGE 1              /* allow baudrate change   */
-
-/*-----------------------------------------------------------------------
- * Networking
- *----------------------------------------------------------------------*/
-#define CONFIG_PPC4xx_EMAC
-#define CONFIG_MII           1              /* MII PHY management      */
-#define CONFIG_NET_MULTI      1
-#define CONFIG_PHY_ADDR              0xff           /* no phy on EMAC0         */
-#define CONFIG_PHY1_ADDR      0xff          /* no phy on EMAC1         */
-#define CONFIG_PHY2_ADDR      0x08          /* PHY addr, MGMT, EMAC2   */
-#define CONFIG_PHY3_ADDR      0x18          /* PHY addr, LCL, EMAC3    */
-#define CONFIG_HAS_ETH0
-#define CONFIG_HAS_ETH1
-#define CONFIG_HAS_ETH2
-#define CONFIG_HAS_ETH3
-#define CONFIG_PHY_RESET      1              /* reset phy upon startup  */
-#define CONFIG_CIS8201_PHY    1                     /* RGMII mode for Cicada   */
-#define CONFIG_CIS8201_SHORT_ETCH 1         /* Use short etch mode     */
-#define CONFIG_PHY_GIGE              1              /* GbE speed/duplex detect */
-#define CONFIG_PHY_RESET_DELAY 1000
-#define CONFIG_NETMASK       255.255.0.0
-#define CONFIG_ETHADDR       00:00:00:00:00:00 /* No EMAC 0 support    */
-#define CONFIG_ETH1ADDR              00:00:00:00:00:00 /* No EMAC 1 support    */
-#define CONFIG_SYS_RX_ETH_BUFFER     32             /* #eth rx buff & descrs   */
-
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_PCI
-#define CONFIG_CMD_IRQ
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_DATE
-#define CONFIG_CMD_BEDBUG
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_DIAG
-#define CONFIG_CMD_MII
-#define CONFIG_CMD_NET
-#define CONFIG_CMD_ELF
-#define CONFIG_CMD_IDE
-#define CONFIG_CMD_FAT
-
-
-/* Include NetConsole support */
-#define CONFIG_NETCONSOLE
-
-/* Include auto complete with tabs */
-#define CONFIG_AUTO_COMPLETE 1
-#define CONFIG_AUTO_COMPLETE 1
-#define CONFIG_SYS_ALT_MEMTEST      1       /* use real memory test     */
-
-#define CONFIG_SYS_LONGHELP                         /* undef to save memory    */
-#define CONFIG_SYS_PROMPT            "MetroBox=> "  /* Monitor Command Prompt  */
-
-#define CONFIG_SYS_HUSH_PARSER        1             /* HUSH for ext'd cli      */
-#define CONFIG_SYS_PROMPT_HUSH_PS2    "> "
-
-
-/*-----------------------------------------------------------------------
- * Console Buffer
- *----------------------------------------------------------------------*/
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CBSIZE            1024           /* Console I/O Buffer Size */
-#else
-#define CONFIG_SYS_CBSIZE            256            /* Console I/O Buffer Size */
-#endif
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16)
-                                            /* Print Buffer Size       */
-#define CONFIG_SYS_MAXARGS           16             /* max number of cmd args  */
-#define CONFIG_SYS_BARGSIZE          CONFIG_SYS_CBSIZE     /* Boot Arg Buffer Size     */
-
-/*-----------------------------------------------------------------------
- * Memory Test
- *----------------------------------------------------------------------*/
-#define CONFIG_SYS_MEMTEST_START     0x0400000      /* memtest works on        */
-#define CONFIG_SYS_MEMTEST_END       0x0C00000      /* 4 ... 12 MB in DRAM     */
-
-/*-----------------------------------------------------------------------
- * Compact Flash (in true IDE mode)
- *----------------------------------------------------------------------*/
-#undef CONFIG_IDE_8xx_DIRECT           /* no pcmcia interface required */
-#undef CONFIG_IDE_LED                  /* no led for ide supported     */
-
-#define CONFIG_IDE_RESET               /* reset for ide supported      */
-#define CONFIG_SYS_IDE_MAXBUS          1       /* max. 1 IDE busses    */
-#define CONFIG_SYS_IDE_MAXDEVICE       (CONFIG_SYS_IDE_MAXBUS*1) /* max. 1 drives per IDE bus */
-
-#define CONFIG_SYS_ATA_BASE_ADDR       0xF0000000
-#define CONFIG_SYS_ATA_IDE0_OFFSET     0x0000
-#define CONFIG_SYS_ATA_DATA_OFFSET     0x0000   /* Offset for data I/O */
-#define CONFIG_SYS_ATA_REG_OFFSET      0x0000   /* Offset for normal register accesses*/
-#define CONFIG_SYS_ATA_ALT_OFFSET      0x100000 /* Offset for alternate registers */
-
-#define CONFIG_SYS_ATA_STRIDE          2        /* Directly connected CF, needs a stride
-                                           to get to the correct offset */
-#define CONFIG_DOS_PARTITION  1                     /* Include dos partition   */
-
-/*-----------------------------------------------------------------------
- * PCI
- *----------------------------------------------------------------------*/
-/* General PCI */
-#define CONFIG_PCI                          /* include pci support     */
-#define CONFIG_PCI_PNP                      /* do pci plug-and-play    */
-#define CONFIG_PCI_SCAN_SHOW                /* show pci devices        */
-#define CONFIG_SYS_PCI_TARGBASE      (CONFIG_SYS_PCI_MEMBASE)
-
-/* Board-specific PCI */
-#define CONFIG_SYS_PCI_TARGET_INIT                  /* let board init pci target*/
-
-#define CONFIG_SYS_PCI_SUBSYS_VENDORID 0x17BA       /* Sandburst */
-#define CONFIG_SYS_PCI_SUBSYS_DEVICEID 0xcafe       /* Whatever */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ           (8 << 20) /* Initial Memory map for Linux */
-
-/*
- * Internal Definitions
- *
- * Boot Flags
- */
-#define BOOTFLAG_COLD        0x01           /* Normal PowerOn: Boot from FLASH */
-#define BOOTFLAG_WARM        0x02           /* Software reboot */
-
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_KGDB_BAUDRATE  230400        /* kgdb serial port baud   */
-#define CONFIG_KGDB_SER_INDEX 2                     /* kgdb serial port        */
-#endif
-
-/*-----------------------------------------------------------------------
- * Miscellaneous configurable options
- *----------------------------------------------------------------------*/
-#undef CONFIG_WATCHDOG                      /* watchdog disabled       */
-#define CONFIG_SYS_LOAD_ADDR         0x8000000      /* default load address    */
-#define CONFIG_SYS_EXTBDINFO         1              /* use extended board_info */
-
-#define CONFIG_SYS_HZ                100            /* decr freq: 1 ms ticks   */
-
-
-#endif /* __CONFIG_H */
+/*
+ * (C) Copyright 2004 Sandburst Corporation
+ *
+ * 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
+ */
+
+/************************************************************************
+ * METROBOX.h - configuration Sandburst MetroBox
+ ***********************************************************************/
+
+/*
+ * $Id: METROBOX.h,v 1.1.1.1 2009/03/25 22:22:25 kenagy Exp $
+ *
+ *
+ * $Log: METROBOX.h,v $
+ * Revision 1.1.1.1  2009/03/25 22:22:25  kenagy
+ * no message
+ *
+ * Revision 1.21  2005/06/03 15:05:25  tsawyer
+ * MB rev 2.0.3 KA rev 0.0.7.  Add CONFIG_VERSION_VARIABLE, Add fakeled to MB
+ *
+ * Revision 1.20  2005/04/11 20:51:11  tsawyer
+ * fix ethernet
+ *
+ * Revision 1.19  2005/04/06 15:13:36  tsawyer
+ * Update appropriate files to coincide with u-boot 1.1.3
+ *
+ * Revision 1.18  2005/03/10 14:16:02  tsawyer
+ * add def'n for cis8201 short etch option.
+ *
+ * Revision 1.17  2005/03/09 19:49:51  tsawyer
+ * Remove KGDB to allow use of 2nd serial port
+ *
+ * Revision 1.16  2004/12/02 19:00:23  tsawyer
+ * Add misc_init_f to turn on i2c-1 and all four fans before sdram init
+ *
+ * Revision 1.15  2004/09/15 18:04:12  tsawyer
+ * add multiple serial port support
+ *
+ * Revision 1.14  2004/09/03 15:27:51  tsawyer
+ * All metrobox boards are at 66.66 sys clock
+ *
+ * Revision 1.13  2004/08/05 20:27:46  tsawyer
+ * Remove system ace definitions, add net console support
+ *
+ * Revision 1.12  2004/07/29 20:00:13  tsawyer
+ * Add i2c bus 1
+ *
+ * Revision 1.11  2004/07/21 13:44:18  tsawyer
+ * SystemACE is out, CF direct to local bus is in
+ *
+ * Revision 1.10  2004/06/29 19:08:55  tsawyer
+ * Add CONFIG_MISC_INIT_R
+ *
+ * Revision 1.9         2004/06/28 21:30:53  tsawyer
+ * Fix default BOOTARGS
+ *
+ * Revision 1.8         2004/06/17 15:51:08  tsawyer
+ * auto complete
+ *
+ * Revision 1.7         2004/06/17 15:08:49  tsawyer
+ * Add autocomplete
+ *
+ * Revision 1.6         2004/06/15 12:33:57  tsawyer
+ * debugging checkpoint
+ *
+ * Revision 1.5         2004/06/12 19:48:28  tsawyer
+ * Debugging checkpoint
+ *
+ * Revision 1.4         2004/06/02 13:03:06  tsawyer
+ * Fix eth addrs
+ *
+ * Revision 1.3         2004/05/18 19:56:10  tsawyer
+ * Change default bootcommand to pImage.metrobox
+ *
+ * Revision 1.2         2004/05/18 14:13:44  tsawyer
+ * Add bringup values for bootargs and bootcommand.
+ * Remove definition of ipaddress and serverip addresses.
+ *
+ * Revision 1.1         2004/04/16 15:08:54  tsawyer
+ * Initial Revision
+ *
+ *
+ */
+
+#ifndef __CONFIG_H
+#define __CONFIG_H
+
+/*-----------------------------------------------------------------------
+ * High Level Configuration Options
+ *----------------------------------------------------------------------*/
+#define CONFIG_METROBOX                  1          /* Board is Metrobox       */
+#define CONFIG_440GX             1          /* Specifc GX support      */
+#define CONFIG_440               1          /* ... PPC440 family       */
+#define CONFIG_4xx               1          /* ... PPC4xx family       */
+#define CONFIG_BOARD_EARLY_INIT_F 1         /* Call board_pre_init     */
+#define CONFIG_MISC_INIT_F       1          /* Call board misc_init_f  */
+#define CONFIG_MISC_INIT_R       1          /* Call board misc_init_r  */
+#undef CONFIG_SYS_DRAM_TEST                         /* Disable-takes long time!*/
+#define CONFIG_SYS_CLK_FREQ      66666666   /* external freq to pll    */
+
+#define CONFIG_VERY_BIG_RAM 1
+#define CONFIG_VERSION_VARIABLE
+
+#define CONFIG_IDENT_STRING " Sandburst Metrobox"
+
+/*-----------------------------------------------------------------------
+ * Base addresses -- Note these are effective addresses where the
+ * actual resources get mapped (not physical addresses)
+ *----------------------------------------------------------------------*/
+#define CONFIG_SYS_SDRAM_BASE         0x00000000    /* _must_ be 0             */
+#define CONFIG_SYS_FLASH_BASE         0xfff80000    /* start of FLASH          */
+#define CONFIG_SYS_MONITOR_BASE       0xfff80000    /* start of monitor        */
+#define CONFIG_SYS_PCI_MEMBASE        0x80000000    /* mapped pci memory       */
+#define CONFIG_SYS_PERIPHERAL_BASE    0xe0000000    /* internal peripherals    */
+#define CONFIG_SYS_ISRAM_BASE         0xc0000000    /* internal SRAM           */
+#define CONFIG_SYS_PCI_BASE           0xd0000000    /* internal PCI regs       */
+
+#define CONFIG_SYS_NVRAM_BASE_ADDR   (CONFIG_SYS_PERIPHERAL_BASE + 0x08000000)
+#define CONFIG_SYS_FPGA_BASE         (CONFIG_SYS_PERIPHERAL_BASE + 0x08200000)
+#define CONFIG_SYS_BME32_BASE        (CONFIG_SYS_PERIPHERAL_BASE + 0x08500000)
+#define CONFIG_SYS_GPIO_BASE         (CONFIG_SYS_PERIPHERAL_BASE + 0x00000700)
+
+/*-----------------------------------------------------------------------
+ * Initial RAM & stack pointer (placed in internal SRAM)
+ *----------------------------------------------------------------------*/
+#define CONFIG_SYS_TEMP_STACK_OCM    1
+#define CONFIG_SYS_OCM_DATA_ADDR     CONFIG_SYS_ISRAM_BASE
+#define CONFIG_SYS_INIT_RAM_ADDR     CONFIG_SYS_ISRAM_BASE /* Initial RAM address      */
+#define CONFIG_SYS_INIT_RAM_END      0x2000         /* End of used area in RAM */
+#define CONFIG_SYS_GBL_DATA_SIZE     128            /* num bytes initial data  */
+
+#define CONFIG_SYS_GBL_DATA_OFFSET   (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE)
+#define CONFIG_SYS_POST_WORD_ADDR    (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
+#define CONFIG_SYS_INIT_SP_OFFSET    CONFIG_SYS_POST_WORD_ADDR
+
+#define CONFIG_SYS_MONITOR_LEN       (256 * 1024)   /* Rsrv 256kB for Mon      */
+#define CONFIG_SYS_MALLOC_LEN        (128 * 1024)   /* Rsrv 128kB for malloc   */
+
+/*-----------------------------------------------------------------------
+ * Serial Port
+ *----------------------------------------------------------------------*/
+#undef CONFIG_SERIAL_SOFTWARE_FIFO
+#define CONFIG_SERIAL_MULTI   1
+#define CONFIG_BAUDRATE              9600
+
+#define CONFIG_SYS_BAUDRATE_TABLE  \
+    {300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200}
+
+/*-----------------------------------------------------------------------
+ * NVRAM/RTC
+ *
+ * NOTE: Upper 8 bytes of NVRAM is where the RTC registers are located.
+ * The DS1743 code assumes this condition (i.e. -- it assumes the base
+ * address for the RTC registers is:
+ *
+ *     CONFIG_SYS_NVRAM_BASE_ADDR + CONFIG_SYS_NVRAM_SIZE
+ *
+ *----------------------------------------------------------------------*/
+#define CONFIG_SYS_NVRAM_SIZE        (0x2000 - 8)   /* NVRAM size(8k)- RTC regs*/
+#define CONFIG_RTC_DS174x     1                     /* DS1743 RTC              */
+
+/*-----------------------------------------------------------------------
+ * FLASH related
+ *----------------------------------------------------------------------*/
+#define CONFIG_SYS_MAX_FLASH_BANKS   1              /* number of banks         */
+#define CONFIG_SYS_MAX_FLASH_SECT    8              /* sectors per device      */
+
+#undef CONFIG_SYS_FLASH_CHECKSUM
+#define CONFIG_SYS_FLASH_ERASE_TOUT  120000         /* Flash Erase TO (in ms)   */
+#define CONFIG_SYS_FLASH_WRITE_TOUT  500            /* Flash Write TO(in ms)    */
+
+/*-----------------------------------------------------------------------
+ * DDR SDRAM
+ *----------------------------------------------------------------------*/
+#define CONFIG_SPD_EEPROM     1                     /* Use SPD EEPROM for setup*/
+#define SPD_EEPROM_ADDRESS    {0x53}        /* SPD i2c spd addresses   */
+
+/*-----------------------------------------------------------------------
+ * I2C
+ *----------------------------------------------------------------------*/
+#define CONFIG_HARD_I2C              1              /* I2C hardware support    */
+#undef CONFIG_SOFT_I2C                      /* I2C !bit-banged         */
+#define CONFIG_SYS_I2C_SPEED         400000         /* I2C speed 400kHz        */
+#define CONFIG_SYS_I2C_SLAVE         0x7F           /* I2C slave address       */
+#define CONFIG_SYS_I2C_NOPROBES      {0x69}         /* Don't probe these addrs */
+#define CONFIG_I2C_BUS1              1              /* Include i2c bus 1 supp  */
+
+
+/*-----------------------------------------------------------------------
+ * Environment
+ *----------------------------------------------------------------------*/
+#define CONFIG_ENV_IS_IN_NVRAM   1                  /* Environment uses NVRAM  */
+#undef CONFIG_ENV_IS_IN_FLASH               /* ... not in flash        */
+#undef CONFIG_ENV_IS_IN_EEPROM              /* ... not in EEPROM       */
+#define CONFIG_ENV_OVERWRITE  1                     /* allow env overwrite     */
+
+#define CONFIG_ENV_SIZE              0x1000         /* Size of Env vars        */
+#define CONFIG_ENV_ADDR              (CONFIG_SYS_NVRAM_BASE_ADDR)
+
+#define CONFIG_BOOTARGS              "console=ttyS0,9600 root=/dev/nfs rw nfsroot=$serverip:/home/metrobox0 nfsaddrs=$ipaddr:::::eth0:none "
+#define CONFIG_BOOTCOMMAND    "tftp 8000000 pImage.metrobox;bootm 8000000"
+#define CONFIG_BOOTDELAY      5                    /* disable autoboot */
+
+#define CONFIG_LOADS_ECHO     1                     /* echo on for serial dnld */
+#define CONFIG_SYS_LOADS_BAUD_CHANGE 1              /* allow baudrate change   */
+
+/*-----------------------------------------------------------------------
+ * Networking
+ *----------------------------------------------------------------------*/
+#define CONFIG_PPC4xx_EMAC
+#define CONFIG_MII           1              /* MII PHY management      */
+#define CONFIG_NET_MULTI      1
+#define CONFIG_PHY_ADDR              0xff           /* no phy on EMAC0         */
+#define CONFIG_PHY1_ADDR      0xff          /* no phy on EMAC1         */
+#define CONFIG_PHY2_ADDR      0x08          /* PHY addr, MGMT, EMAC2   */
+#define CONFIG_PHY3_ADDR      0x18          /* PHY addr, LCL, EMAC3    */
+#define CONFIG_HAS_ETH0
+#define CONFIG_HAS_ETH1
+#define CONFIG_HAS_ETH2
+#define CONFIG_HAS_ETH3
+#define CONFIG_PHY_RESET      1              /* reset phy upon startup  */
+#define CONFIG_CIS8201_PHY    1                     /* RGMII mode for Cicada   */
+#define CONFIG_CIS8201_SHORT_ETCH 1         /* Use short etch mode     */
+#define CONFIG_PHY_GIGE              1              /* GbE speed/duplex detect */
+#define CONFIG_PHY_RESET_DELAY 1000
+#define CONFIG_NETMASK       255.255.0.0
+#define CONFIG_ETHADDR       00:00:00:00:00:00 /* No EMAC 0 support    */
+#define CONFIG_ETH1ADDR              00:00:00:00:00:00 /* No EMAC 1 support    */
+#define CONFIG_SYS_RX_ETH_BUFFER     32             /* #eth rx buff & descrs   */
+
+
+/*
+ * BOOTP options
+ */
+#define CONFIG_BOOTP_BOOTFILESIZE
+#define CONFIG_BOOTP_BOOTPATH
+#define CONFIG_BOOTP_GATEWAY
+#define CONFIG_BOOTP_HOSTNAME
+
+
+/*
+ * Command line configuration.
+ */
+#include <config_cmd_default.h>
+
+#define CONFIG_CMD_PCI
+#define CONFIG_CMD_IRQ
+#define CONFIG_CMD_I2C
+#define CONFIG_CMD_DHCP
+#define CONFIG_CMD_DATE
+#define CONFIG_CMD_BEDBUG
+#define CONFIG_CMD_PING
+#define CONFIG_CMD_DIAG
+#define CONFIG_CMD_MII
+#define CONFIG_CMD_NET
+#define CONFIG_CMD_ELF
+#define CONFIG_CMD_IDE
+#define CONFIG_CMD_FAT
+
+
+/* Include NetConsole support */
+#define CONFIG_NETCONSOLE
+
+/* Include auto complete with tabs */
+#define CONFIG_AUTO_COMPLETE 1
+#define CONFIG_AUTO_COMPLETE 1
+#define CONFIG_SYS_ALT_MEMTEST      1       /* use real memory test     */
+
+#define CONFIG_SYS_LONGHELP                         /* undef to save memory    */
+#define CONFIG_SYS_PROMPT            "MetroBox=> "  /* Monitor Command Prompt  */
+
+#define CONFIG_SYS_HUSH_PARSER        1             /* HUSH for ext'd cli      */
+#define CONFIG_SYS_PROMPT_HUSH_PS2    "> "
+
+
+/*-----------------------------------------------------------------------
+ * Console Buffer
+ *----------------------------------------------------------------------*/
+#if defined(CONFIG_CMD_KGDB)
+#define CONFIG_SYS_CBSIZE            1024           /* Console I/O Buffer Size */
+#else
+#define CONFIG_SYS_CBSIZE            256            /* Console I/O Buffer Size */
+#endif
+#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16)
+                                            /* Print Buffer Size       */
+#define CONFIG_SYS_MAXARGS           16             /* max number of cmd args  */
+#define CONFIG_SYS_BARGSIZE          CONFIG_SYS_CBSIZE     /* Boot Arg Buffer Size     */
+
+/*-----------------------------------------------------------------------
+ * Memory Test
+ *----------------------------------------------------------------------*/
+#define CONFIG_SYS_MEMTEST_START     0x0400000      /* memtest works on        */
+#define CONFIG_SYS_MEMTEST_END       0x0C00000      /* 4 ... 12 MB in DRAM     */
+
+/*-----------------------------------------------------------------------
+ * Compact Flash (in true IDE mode)
+ *----------------------------------------------------------------------*/
+#undef CONFIG_IDE_8xx_DIRECT           /* no pcmcia interface required */
+#undef CONFIG_IDE_LED                  /* no led for ide supported     */
+
+#define CONFIG_IDE_RESET               /* reset for ide supported      */
+#define CONFIG_SYS_IDE_MAXBUS          1       /* max. 1 IDE busses    */
+#define CONFIG_SYS_IDE_MAXDEVICE       (CONFIG_SYS_IDE_MAXBUS*1) /* max. 1 drives per IDE bus */
+
+#define CONFIG_SYS_ATA_BASE_ADDR       0xF0000000
+#define CONFIG_SYS_ATA_IDE0_OFFSET     0x0000
+#define CONFIG_SYS_ATA_DATA_OFFSET     0x0000   /* Offset for data I/O */
+#define CONFIG_SYS_ATA_REG_OFFSET      0x0000   /* Offset for normal register accesses*/
+#define CONFIG_SYS_ATA_ALT_OFFSET      0x100000 /* Offset for alternate registers */
+
+#define CONFIG_SYS_ATA_STRIDE          2        /* Directly connected CF, needs a stride
+                                           to get to the correct offset */
+#define CONFIG_DOS_PARTITION  1                     /* Include dos partition   */
+
+/*-----------------------------------------------------------------------
+ * PCI
+ *----------------------------------------------------------------------*/
+/* General PCI */
+#define CONFIG_PCI                          /* include pci support     */
+#define CONFIG_PCI_PNP                      /* do pci plug-and-play    */
+#define CONFIG_PCI_SCAN_SHOW                /* show pci devices        */
+#define CONFIG_SYS_PCI_TARGBASE      (CONFIG_SYS_PCI_MEMBASE)
+
+/* Board-specific PCI */
+#define CONFIG_SYS_PCI_TARGET_INIT                  /* let board init pci target*/
+
+#define CONFIG_SYS_PCI_SUBSYS_VENDORID 0x17BA       /* Sandburst */
+#define CONFIG_SYS_PCI_SUBSYS_DEVICEID 0xcafe       /* Whatever */
+
+/*
+ * For booting Linux, the board info and command line data
+ * have to be in the first 8 MB of memory, since this is
+ * the maximum mapped by the Linux kernel during initialization.
+ */
+#define CONFIG_SYS_BOOTMAPSZ           (8 << 20) /* Initial Memory map for Linux */
+
+/*
+ * Internal Definitions
+ *
+ * Boot Flags
+ */
+#define BOOTFLAG_COLD        0x01           /* Normal PowerOn: Boot from FLASH */
+#define BOOTFLAG_WARM        0x02           /* Software reboot */
+
+#if defined(CONFIG_CMD_KGDB)
+#define CONFIG_KGDB_BAUDRATE  230400        /* kgdb serial port baud   */
+#define CONFIG_KGDB_SER_INDEX 2                     /* kgdb serial port        */
+#endif
+
+/*-----------------------------------------------------------------------
+ * Miscellaneous configurable options
+ *----------------------------------------------------------------------*/
+#undef CONFIG_WATCHDOG                      /* watchdog disabled       */
+#define CONFIG_SYS_LOAD_ADDR         0x8000000      /* default load address    */
+#define CONFIG_SYS_EXTBDINFO         1              /* use extended board_info */
+
+#define CONFIG_SYS_HZ                100            /* decr freq: 1 ms ticks   */
+
+
+#endif /* __CONFIG_H */
diff -Naur u-boot-2009.03_orig/include/configs/barco.h u-boot-2009.03/include/configs/barco.h
--- u-boot-2009.03_orig/include/configs/barco.h 2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/include/configs/barco.h      2009-03-25 17:37:22.739860000 -0700
@@ -1,371 +1,374 @@
-/********************************************************************
- *
- * Unless otherwise specified, Copyright (C) 2004-2005 Barco Control Rooms
- *
- * $Source: /home/services/cvs/firmware/ppc/u-boot-1.1.2/include/configs/barco.h,v $
- * $Revision: 1.2 $
- * $Author: mleeman $
- * $Date: 2005/02/21 12:48:58 $
- *
- * Last ChangeLog Entry
- * $Log: barco.h,v $
- * Revision 1.2  2005/02/21 12:48:58  mleeman
- * update of copyright years (feedback wd)
- *
- * Revision 1.1  2005/02/14 09:29:25  mleeman
- * moved barcohydra.h to barco.h
- *
- * Revision 1.4  2005/02/09 12:56:23  mleeman
- * add generic header to track changes in sources
- *
- *
- *******************************************************************/
-
-/*
- * (C) Copyright 2001, 2002
- * 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
- */
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_MPC824X         1
-#define CONFIG_MPC8245         1
-#define CONFIG_BARCOBCD_STREAMING      1
-
-#undef USE_DINK32
-
-#define CONFIG_CONS_INDEX     3               /* set to '3' for on-chip DUART */
-#define CONFIG_BAUDRATE                9600
-#define CONFIG_DRAM_SPEED      100             /* MHz                          */
-
-#define CONFIG_BOOTARGS "mem=32M"
-
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_SUBNETMASK
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_DNS
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_ELF
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_EEPROM
-#define CONFIG_CMD_PCI
-
-#undef CONFIG_CMD_NET
-
-
-#define CONFIG_HUSH_PARSER     1 /* use "hush" command parser */
-#define CONFIG_BOOTDELAY       1
-#define CONFIG_BOOTCOMMAND     "boot_default"
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_LONGHELP            1               /* undef to save memory         */
-#define CONFIG_SYS_PROMPT              "=> "           /* Monitor Command Prompt       */
-#define CONFIG_SYS_CBSIZE              256             /* Console I/O Buffer Size      */
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16)     /* Print Buffer Size    */
-#define CONFIG_SYS_MAXARGS             16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE            CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-#define CONFIG_SYS_LOAD_ADDR           0x00100000      /* default load address         */
-#define CONFIG_SYS_HZ                  1000            /* decrementer freq: 1 ms ticks */
-
-
-/*-----------------------------------------------------------------------
- * PCI stuff
- *-----------------------------------------------------------------------
- */
-#define CONFIG_PCI                             /* include pci support          */
-#undef CONFIG_PCI_PNP
-
-#define PCI_ENET0_IOADDR       0x80000000
-#define PCI_ENET0_MEMADDR      0x80000000
-#define        PCI_ENET1_IOADDR        0x81000000
-#define        PCI_ENET1_MEMADDR       0x81000000
-
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define CONFIG_SYS_SDRAM_BASE          0x00000000
-#define CONFIG_SYS_MAX_RAM_SIZE        0x02000000
-
-#define CONFIG_LOGBUFFER
-#ifdef CONFIG_LOGBUFFER
-#define CONFIG_SYS_STDOUT_ADDR         0x1FFC000
-#else
-#define CONFIG_SYS_STDOUT_ADDR         0x2B9000
-#endif
-
-#define CONFIG_SYS_RESET_ADDRESS       0xFFF00100
-
-#if defined (USE_DINK32)
-#define CONFIG_SYS_MONITOR_LEN         0x00030000
-#define CONFIG_SYS_MONITOR_BASE        0x00090000
-#define CONFIG_SYS_RAMBOOT             1
-#define CONFIG_SYS_INIT_RAM_ADDR       (CONFIG_SYS_MONITOR_BASE + CONFIG_SYS_MONITOR_LEN)
-#define CONFIG_SYS_INIT_RAM_END        0x10000
-#define CONFIG_SYS_GBL_DATA_SIZE       256  /* size in bytes reserved for initial data */
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
-#else
-#undef CONFIG_SYS_RAMBOOT
-#define CONFIG_SYS_MONITOR_LEN         0x00030000
-#define CONFIG_SYS_MONITOR_BASE        TEXT_BASE
-
-#define CONFIG_SYS_GBL_DATA_SIZE       128
-
-#define CONFIG_SYS_INIT_RAM_ADDR       0x40000000
-#define CONFIG_SYS_INIT_RAM_END        0x1000
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE)
-
-#endif
-
-#define CONFIG_SYS_FLASH_BASE          0xFFF00000
-#define CONFIG_SYS_FLASH_SIZE          (8 * 1024 * 1024)       /* Unity has onboard 1MByte flash */
-#define CONFIG_ENV_IS_IN_FLASH 1
-#define CONFIG_ENV_OFFSET              0x000047A4      /* Offset of Environment Sector */
-#define CONFIG_ENV_SIZE                0x00002000      /* Total Size of Environment Sector */
-/* #define ENV_CRC             0x8BF6F24B      XXX - FIXME: gets defined automatically */
-
-#define CONFIG_SYS_MALLOC_LEN          (512 << 10)     /* Reserve 512 kB for malloc()  */
-
-#define CONFIG_SYS_MEMTEST_START       0x00000000      /* memtest works on             */
-#define CONFIG_SYS_MEMTEST_END         0x04000000      /* 0 ... 32 MB in DRAM          */
-
-#define CONFIG_SYS_EUMB_ADDR           0xFDF00000
-
-#define CONFIG_SYS_FLASH_RANGE_BASE    0xFFC00000      /* flash memory address range   */
-#define CONFIG_SYS_FLASH_RANGE_SIZE    0x00400000
-#define FLASH_BASE0_PRELIM     0xFFF00000      /* sandpoint flash              */
-#define FLASH_BASE1_PRELIM     0xFF000000      /* PMC onboard flash            */
-
-/*
- * select i2c support configuration
- *
- * Supported configurations are {none, software, hardware} drivers.
- * If the software driver is chosen, there are some additional
- * configuration items that the driver uses to drive the port pins.
- */
-#define CONFIG_HARD_I2C                1               /* To enable I2C support        */
-#undef  CONFIG_SOFT_I2C                                /* I2C bit-banged               */
-#define CONFIG_SYS_I2C_SPEED           400000          /* I2C speed and slave address  */
-#define CONFIG_SYS_I2C_SLAVE           0x7F
-
-#ifdef CONFIG_SOFT_I2C
-#error "Soft I2C is not configured properly.  Please review!"
-#define I2C_PORT               3               /* Port A=0, B=1, C=2, D=3 */
-#define I2C_ACTIVE             (iop->pdir |=  0x00010000)
-#define I2C_TRISTATE           (iop->pdir &= ~0x00010000)
-#define I2C_READ               ((iop->pdat & 0x00010000) != 0)
-#define I2C_SDA(bit)           if(bit) iop->pdat |=  0x00010000; \
-                               else    iop->pdat &= ~0x00010000
-#define I2C_SCL(bit)           if(bit) iop->pdat |=  0x00020000; \
-                               else    iop->pdat &= ~0x00020000
-#define I2C_DELAY              udelay(5)       /* 1/4 I2C clock duration */
-#endif /* CONFIG_SOFT_I2C */
-
-#define CONFIG_SYS_I2C_EEPROM_ADDR     0x57            /* EEPROM IS24C02               */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1               /* Bytes of address             */
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS      3
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS  10      /* and takes up to 10 msec */
-
-#define CONFIG_SYS_BAUDRATE_TABLE      { 9600, 19200, 38400, 57600, 115200 }
-#define CONFIG_SYS_FLASH_BANKS         { FLASH_BASE0_PRELIM , FLASH_BASE1_PRELIM }
-#define CONFIG_SYS_DBUS_SIZE2          1
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in DPRAM)
- */
-
-
- /*
- * NS16550 Configuration (internal DUART)
- */
- /*
- * Low Level Configuration Settings
- * (address mappings, register initial values, etc.)
- * You should know what you are doing if you make changes here.
- */
-
-#define CONFIG_SYS_CLK_FREQ  33333333  /* external frequency to pll */
-
-#define CONFIG_SYS_ROMNAL              0x0F    /*rom/flash next access time            */
-#define CONFIG_SYS_ROMFAL              0x1E    /*rom/flash access time                 */
-
-#define CONFIG_SYS_REFINT      0x8F    /* no of clock cycles between CBR refresh cycles */
-
-/* the following are for SDRAM only*/
-#define CONFIG_SYS_BSTOPRE     0x25C   /* Burst To Precharge, sets open page interval */
-#define CONFIG_SYS_REFREC              8       /* Refresh to activate interval         */
-#define CONFIG_SYS_RDLAT               4       /* data latency from read command       */
-#define CONFIG_SYS_PRETOACT            3       /* Precharge to activate interval       */
-#define CONFIG_SYS_ACTTOPRE            5       /* Activate to Precharge interval       */
-#define CONFIG_SYS_ACTORW              2       /* Activate to R/W                      */
-#define CONFIG_SYS_SDMODE_CAS_LAT      3       /* SDMODE CAS latency                   */
-#define CONFIG_SYS_SDMODE_WRAP         0        /* SDMODE wrap type                     */
-
-#define CONFIG_SYS_REGISTERD_TYPE_BUFFER   1
-#define CONFIG_SYS_EXTROM 0
-#define CONFIG_SYS_REGDIMM 0
-
-
-/* memory bank settings*/
-/*
- * only bits 20-29 are actually used from these vales to set the
- * start/end address the upper two bits will be 0, and the lower 20
- * bits will be set to 0x00000 for a start address, or 0xfffff for an
- * end address
- */
-#define CONFIG_SYS_BANK0_START         0x00000000
-#define CONFIG_SYS_BANK0_END           0x01FFFFFF
-#define CONFIG_SYS_BANK0_ENABLE        1
-#define CONFIG_SYS_BANK1_START         0x02000000
-#define CONFIG_SYS_BANK1_END           0x02ffffff
-#define CONFIG_SYS_BANK1_ENABLE        0
-#define CONFIG_SYS_BANK2_START         0x03f00000
-#define CONFIG_SYS_BANK2_END           0x03ffffff
-#define CONFIG_SYS_BANK2_ENABLE        0
-#define CONFIG_SYS_BANK3_START         0x04000000
-#define CONFIG_SYS_BANK3_END           0x04ffffff
-#define CONFIG_SYS_BANK3_ENABLE        0
-#define CONFIG_SYS_BANK4_START         0x05000000
-#define CONFIG_SYS_BANK4_END           0x05FFFFFF
-#define CONFIG_SYS_BANK4_ENABLE        0
-#define CONFIG_SYS_BANK5_START         0x06000000
-#define CONFIG_SYS_BANK5_END           0x06FFFFFF
-#define CONFIG_SYS_BANK5_ENABLE        0
-#define CONFIG_SYS_BANK6_START         0x07000000
-#define CONFIG_SYS_BANK6_END           0x07FFFFFF
-#define CONFIG_SYS_BANK6_ENABLE        0
-#define CONFIG_SYS_BANK7_START         0x08000000
-#define CONFIG_SYS_BANK7_END           0x08FFFFFF
-#define CONFIG_SYS_BANK7_ENABLE        0
-/*
- * Memory bank enable bitmask, specifying which of the banks defined above
- are actually present. MSB is for bank #7, LSB is for bank #0.
- */
-#define CONFIG_SYS_BANK_ENABLE         0x01
-
-#define CONFIG_SYS_ODCR                0xff    /* configures line driver impedances,   */
-                                       /* see 8240 book for bit definitions    */
-#define CONFIG_SYS_PGMAX               0x32    /* how long the 8240 retains the        */
-                                       /* currently accessed page in memory    */
-                                       /* see 8240 book for details            */
-
-/* SDRAM 0 - 256MB */
-#define CONFIG_SYS_IBAT0L      (CONFIG_SYS_SDRAM_BASE | BATL_PP_10 | BATL_MEMCOHERENCE)
-#define CONFIG_SYS_IBAT0U      (CONFIG_SYS_SDRAM_BASE | BATU_BL_256M | BATU_VS | BATU_VP)
-
-/* stack in DCACHE @ 1GB (no backing mem) */
-#if defined(USE_DINK32)
-#define CONFIG_SYS_IBAT1L      (0x40000000 | BATL_PP_00 )
-#define CONFIG_SYS_IBAT1U      (0x40000000 | BATU_BL_128K )
-#else
-#define CONFIG_SYS_IBAT1L      (CONFIG_SYS_INIT_RAM_ADDR | BATL_PP_10 | BATL_MEMCOHERENCE)
-#define CONFIG_SYS_IBAT1U      (CONFIG_SYS_INIT_RAM_ADDR | BATU_BL_128K | BATU_VS | BATU_VP)
-#endif
-
-/* PCI memory */
-#define CONFIG_SYS_IBAT2L      (0x80000000 | BATL_PP_10 | BATL_CACHEINHIBIT)
-#define CONFIG_SYS_IBAT2U      (0x80000000 | BATU_BL_256M | BATU_VS | BATU_VP)
-
-/* Flash, config addrs, etc */
-#define CONFIG_SYS_IBAT3L      (0xF0000000 | BATL_PP_10 | BATL_CACHEINHIBIT)
-#define CONFIG_SYS_IBAT3U      (0xF0000000 | BATU_BL_256M | BATU_VS | BATU_VP)
-
-#define CONFIG_SYS_DBAT0L      CONFIG_SYS_IBAT0L
-#define CONFIG_SYS_DBAT0U      CONFIG_SYS_IBAT0U
-#define CONFIG_SYS_DBAT1L      CONFIG_SYS_IBAT1L
-#define CONFIG_SYS_DBAT1U      CONFIG_SYS_IBAT1U
-#define CONFIG_SYS_DBAT2L      CONFIG_SYS_IBAT2L
-#define CONFIG_SYS_DBAT2U      CONFIG_SYS_IBAT2U
-#define CONFIG_SYS_DBAT3L      CONFIG_SYS_IBAT3L
-#define CONFIG_SYS_DBAT3U      CONFIG_SYS_IBAT3U
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ           (8 << 20)       /* Initial Memory map for Linux */
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-#define CONFIG_SYS_MAX_FLASH_BANKS     1       /* max number of memory banks           */
-#define CONFIG_SYS_MAX_FLASH_SECT      20      /* max number of sectors on one chip    */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    120000  /* Timeout for Flash Erase (in ms)      */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Timeout for Flash Write (in ms)      */
-
-#define CONFIG_SYS_FLASH_CHECKSUM
-
-/*-----------------------------------------------------------------------
- * Cache Configuration
- */
-#define CONFIG_SYS_CACHELINE_SIZE      32      /* For MPC8240 CPU                      */
-#if defined(CONFIG_CMD_KGDB)
-#  define CONFIG_SYS_CACHELINE_SHIFT   5       /* log base 2 of the above value */
-#endif
-
-
-/*
- * Internal Definitions
- *
- * Boot Flags
- */
-#define BOOTFLAG_COLD          0x01    /* Normal Power-On: Boot from FLASH     */
-#define BOOTFLAG_WARM          0x02    /* Software reboot                      */
-
-/* values according to the manual */
-
-#define CONFIG_DRAM_50MHZ      1
-#define CONFIG_SDRAM_50MHZ
-
-#define CONFIG_DISK_SPINUP_TIME 1000000
-
-
-#endif /* __CONFIG_H */
+/********************************************************************
+ *
+ * Unless otherwise specified, Copyright (C) 2004-2005 Barco Control Rooms
+ *
+ * $Source: C:/qaz/__CVS_ROOT/units/or1200_soc/sw/u-boot-2009.03/include/configs/barco.h,v $
+ * $Revision: 1.1.1.1 $
+ * $Author: kenagy $
+ * $Date: 2009/03/25 22:22:22 $
+ *
+ * Last ChangeLog Entry
+ * $Log: barco.h,v $
+ * Revision 1.1.1.1  2009/03/25 22:22:22  kenagy
+ * no message
+ *
+ * Revision 1.2  2005/02/21 12:48:58  mleeman
+ * update of copyright years (feedback wd)
+ *
+ * Revision 1.1  2005/02/14 09:29:25  mleeman
+ * moved barcohydra.h to barco.h
+ *
+ * Revision 1.4  2005/02/09 12:56:23  mleeman
+ * add generic header to track changes in sources
+ *
+ *
+ *******************************************************************/
+
+/*
+ * (C) Copyright 2001, 2002
+ * 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
+ */
+
+/* ------------------------------------------------------------------------- */
+
+/*
+ * board/config.h - configuration options, board specific
+ */
+
+#ifndef __CONFIG_H
+#define __CONFIG_H
+
+/*
+ * High Level Configuration Options
+ * (easy to change)
+ */
+
+#define CONFIG_MPC824X         1
+#define CONFIG_MPC8245         1
+#define CONFIG_BARCOBCD_STREAMING      1
+
+#undef USE_DINK32
+
+#define CONFIG_CONS_INDEX     3               /* set to '3' for on-chip DUART */
+#define CONFIG_BAUDRATE                9600
+#define CONFIG_DRAM_SPEED      100             /* MHz                          */
+
+#define CONFIG_BOOTARGS "mem=32M"
+
+
+/*
+ * BOOTP options
+ */
+#define CONFIG_BOOTP_SUBNETMASK
+#define CONFIG_BOOTP_GATEWAY
+#define CONFIG_BOOTP_HOSTNAME
+#define CONFIG_BOOTP_BOOTPATH
+#define CONFIG_BOOTP_BOOTFILESIZE
+#define CONFIG_BOOTP_DNS
+
+
+/*
+ * Command line configuration.
+ */
+#include <config_cmd_default.h>
+
+#define CONFIG_CMD_ELF
+#define CONFIG_CMD_I2C
+#define CONFIG_CMD_EEPROM
+#define CONFIG_CMD_PCI
+
+#undef CONFIG_CMD_NET
+
+
+#define CONFIG_HUSH_PARSER     1 /* use "hush" command parser */
+#define CONFIG_BOOTDELAY       1
+#define CONFIG_BOOTCOMMAND     "boot_default"
+
+/*
+ * Miscellaneous configurable options
+ */
+#define CONFIG_SYS_LONGHELP            1               /* undef to save memory         */
+#define CONFIG_SYS_PROMPT              "=> "           /* Monitor Command Prompt       */
+#define CONFIG_SYS_CBSIZE              256             /* Console I/O Buffer Size      */
+#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16)     /* Print Buffer Size    */
+#define CONFIG_SYS_MAXARGS             16              /* max number of command args   */
+#define CONFIG_SYS_BARGSIZE            CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
+#define CONFIG_SYS_LOAD_ADDR           0x00100000      /* default load address         */
+#define CONFIG_SYS_HZ                  1000            /* decrementer freq: 1 ms ticks */
+
+
+/*-----------------------------------------------------------------------
+ * PCI stuff
+ *-----------------------------------------------------------------------
+ */
+#define CONFIG_PCI                             /* include pci support          */
+#undef CONFIG_PCI_PNP
+
+#define PCI_ENET0_IOADDR       0x80000000
+#define PCI_ENET0_MEMADDR      0x80000000
+#define        PCI_ENET1_IOADDR        0x81000000
+#define        PCI_ENET1_MEMADDR       0x81000000
+
+
+/*-----------------------------------------------------------------------
+ * Start addresses for the final memory configuration
+ * (Set up by the startup code)
+ * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
+ */
+#define CONFIG_SYS_SDRAM_BASE          0x00000000
+#define CONFIG_SYS_MAX_RAM_SIZE        0x02000000
+
+#define CONFIG_LOGBUFFER
+#ifdef CONFIG_LOGBUFFER
+#define CONFIG_SYS_STDOUT_ADDR         0x1FFC000
+#else
+#define CONFIG_SYS_STDOUT_ADDR         0x2B9000
+#endif
+
+#define CONFIG_SYS_RESET_ADDRESS       0xFFF00100
+
+#if defined (USE_DINK32)
+#define CONFIG_SYS_MONITOR_LEN         0x00030000
+#define CONFIG_SYS_MONITOR_BASE        0x00090000
+#define CONFIG_SYS_RAMBOOT             1
+#define CONFIG_SYS_INIT_RAM_ADDR       (CONFIG_SYS_MONITOR_BASE + CONFIG_SYS_MONITOR_LEN)
+#define CONFIG_SYS_INIT_RAM_END        0x10000
+#define CONFIG_SYS_GBL_DATA_SIZE       256  /* size in bytes reserved for initial data */
+#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE)
+#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
+#else
+#undef CONFIG_SYS_RAMBOOT
+#define CONFIG_SYS_MONITOR_LEN         0x00030000
+#define CONFIG_SYS_MONITOR_BASE        TEXT_BASE
+
+#define CONFIG_SYS_GBL_DATA_SIZE       128
+
+#define CONFIG_SYS_INIT_RAM_ADDR       0x40000000
+#define CONFIG_SYS_INIT_RAM_END        0x1000
+#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE)
+
+#endif
+
+#define CONFIG_SYS_FLASH_BASE          0xFFF00000
+#define CONFIG_SYS_FLASH_SIZE          (8 * 1024 * 1024)       /* Unity has onboard 1MByte flash */
+#define CONFIG_ENV_IS_IN_FLASH 1
+#define CONFIG_ENV_OFFSET              0x000047A4      /* Offset of Environment Sector */
+#define CONFIG_ENV_SIZE                0x00002000      /* Total Size of Environment Sector */
+/* #define ENV_CRC             0x8BF6F24B      XXX - FIXME: gets defined automatically */
+
+#define CONFIG_SYS_MALLOC_LEN          (512 << 10)     /* Reserve 512 kB for malloc()  */
+
+#define CONFIG_SYS_MEMTEST_START       0x00000000      /* memtest works on             */
+#define CONFIG_SYS_MEMTEST_END         0x04000000      /* 0 ... 32 MB in DRAM          */
+
+#define CONFIG_SYS_EUMB_ADDR           0xFDF00000
+
+#define CONFIG_SYS_FLASH_RANGE_BASE    0xFFC00000      /* flash memory address range   */
+#define CONFIG_SYS_FLASH_RANGE_SIZE    0x00400000
+#define FLASH_BASE0_PRELIM     0xFFF00000      /* sandpoint flash              */
+#define FLASH_BASE1_PRELIM     0xFF000000      /* PMC onboard flash            */
+
+/*
+ * select i2c support configuration
+ *
+ * Supported configurations are {none, software, hardware} drivers.
+ * If the software driver is chosen, there are some additional
+ * configuration items that the driver uses to drive the port pins.
+ */
+#define CONFIG_HARD_I2C                1               /* To enable I2C support        */
+#undef  CONFIG_SOFT_I2C                                /* I2C bit-banged               */
+#define CONFIG_SYS_I2C_SPEED           400000          /* I2C speed and slave address  */
+#define CONFIG_SYS_I2C_SLAVE           0x7F
+
+#ifdef CONFIG_SOFT_I2C
+#error "Soft I2C is not configured properly.  Please review!"
+#define I2C_PORT               3               /* Port A=0, B=1, C=2, D=3 */
+#define I2C_ACTIVE             (iop->pdir |=  0x00010000)
+#define I2C_TRISTATE           (iop->pdir &= ~0x00010000)
+#define I2C_READ               ((iop->pdat & 0x00010000) != 0)
+#define I2C_SDA(bit)           if(bit) iop->pdat |=  0x00010000; \
+                               else    iop->pdat &= ~0x00010000
+#define I2C_SCL(bit)           if(bit) iop->pdat |=  0x00020000; \
+                               else    iop->pdat &= ~0x00020000
+#define I2C_DELAY              udelay(5)       /* 1/4 I2C clock duration */
+#endif /* CONFIG_SOFT_I2C */
+
+#define CONFIG_SYS_I2C_EEPROM_ADDR     0x57            /* EEPROM IS24C02               */
+#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1               /* Bytes of address             */
+#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS      3
+#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS  10      /* and takes up to 10 msec */
+
+#define CONFIG_SYS_BAUDRATE_TABLE      { 9600, 19200, 38400, 57600, 115200 }
+#define CONFIG_SYS_FLASH_BANKS         { FLASH_BASE0_PRELIM , FLASH_BASE1_PRELIM }
+#define CONFIG_SYS_DBUS_SIZE2          1
+
+/*-----------------------------------------------------------------------
+ * Definitions for initial stack pointer and data area (in DPRAM)
+ */
+
+
+ /*
+ * NS16550 Configuration (internal DUART)
+ */
+ /*
+ * Low Level Configuration Settings
+ * (address mappings, register initial values, etc.)
+ * You should know what you are doing if you make changes here.
+ */
+
+#define CONFIG_SYS_CLK_FREQ  33333333  /* external frequency to pll */
+
+#define CONFIG_SYS_ROMNAL              0x0F    /*rom/flash next access time            */
+#define CONFIG_SYS_ROMFAL              0x1E    /*rom/flash access time                 */
+
+#define CONFIG_SYS_REFINT      0x8F    /* no of clock cycles between CBR refresh cycles */
+
+/* the following are for SDRAM only*/
+#define CONFIG_SYS_BSTOPRE     0x25C   /* Burst To Precharge, sets open page interval */
+#define CONFIG_SYS_REFREC              8       /* Refresh to activate interval         */
+#define CONFIG_SYS_RDLAT               4       /* data latency from read command       */
+#define CONFIG_SYS_PRETOACT            3       /* Precharge to activate interval       */
+#define CONFIG_SYS_ACTTOPRE            5       /* Activate to Precharge interval       */
+#define CONFIG_SYS_ACTORW              2       /* Activate to R/W                      */
+#define CONFIG_SYS_SDMODE_CAS_LAT      3       /* SDMODE CAS latency                   */
+#define CONFIG_SYS_SDMODE_WRAP         0        /* SDMODE wrap type                     */
+
+#define CONFIG_SYS_REGISTERD_TYPE_BUFFER   1
+#define CONFIG_SYS_EXTROM 0
+#define CONFIG_SYS_REGDIMM 0
+
+
+/* memory bank settings*/
+/*
+ * only bits 20-29 are actually used from these vales to set the
+ * start/end address the upper two bits will be 0, and the lower 20
+ * bits will be set to 0x00000 for a start address, or 0xfffff for an
+ * end address
+ */
+#define CONFIG_SYS_BANK0_START         0x00000000
+#define CONFIG_SYS_BANK0_END           0x01FFFFFF
+#define CONFIG_SYS_BANK0_ENABLE        1
+#define CONFIG_SYS_BANK1_START         0x02000000
+#define CONFIG_SYS_BANK1_END           0x02ffffff
+#define CONFIG_SYS_BANK1_ENABLE        0
+#define CONFIG_SYS_BANK2_START         0x03f00000
+#define CONFIG_SYS_BANK2_END           0x03ffffff
+#define CONFIG_SYS_BANK2_ENABLE        0
+#define CONFIG_SYS_BANK3_START         0x04000000
+#define CONFIG_SYS_BANK3_END           0x04ffffff
+#define CONFIG_SYS_BANK3_ENABLE        0
+#define CONFIG_SYS_BANK4_START         0x05000000
+#define CONFIG_SYS_BANK4_END           0x05FFFFFF
+#define CONFIG_SYS_BANK4_ENABLE        0
+#define CONFIG_SYS_BANK5_START         0x06000000
+#define CONFIG_SYS_BANK5_END           0x06FFFFFF
+#define CONFIG_SYS_BANK5_ENABLE        0
+#define CONFIG_SYS_BANK6_START         0x07000000
+#define CONFIG_SYS_BANK6_END           0x07FFFFFF
+#define CONFIG_SYS_BANK6_ENABLE        0
+#define CONFIG_SYS_BANK7_START         0x08000000
+#define CONFIG_SYS_BANK7_END           0x08FFFFFF
+#define CONFIG_SYS_BANK7_ENABLE        0
+/*
+ * Memory bank enable bitmask, specifying which of the banks defined above
+ are actually present. MSB is for bank #7, LSB is for bank #0.
+ */
+#define CONFIG_SYS_BANK_ENABLE         0x01
+
+#define CONFIG_SYS_ODCR                0xff    /* configures line driver impedances,   */
+                                       /* see 8240 book for bit definitions    */
+#define CONFIG_SYS_PGMAX               0x32    /* how long the 8240 retains the        */
+                                       /* currently accessed page in memory    */
+                                       /* see 8240 book for details            */
+
+/* SDRAM 0 - 256MB */
+#define CONFIG_SYS_IBAT0L      (CONFIG_SYS_SDRAM_BASE | BATL_PP_10 | BATL_MEMCOHERENCE)
+#define CONFIG_SYS_IBAT0U      (CONFIG_SYS_SDRAM_BASE | BATU_BL_256M | BATU_VS | BATU_VP)
+
+/* stack in DCACHE @ 1GB (no backing mem) */
+#if defined(USE_DINK32)
+#define CONFIG_SYS_IBAT1L      (0x40000000 | BATL_PP_00 )
+#define CONFIG_SYS_IBAT1U      (0x40000000 | BATU_BL_128K )
+#else
+#define CONFIG_SYS_IBAT1L      (CONFIG_SYS_INIT_RAM_ADDR | BATL_PP_10 | BATL_MEMCOHERENCE)
+#define CONFIG_SYS_IBAT1U      (CONFIG_SYS_INIT_RAM_ADDR | BATU_BL_128K | BATU_VS | BATU_VP)
+#endif
+
+/* PCI memory */
+#define CONFIG_SYS_IBAT2L      (0x80000000 | BATL_PP_10 | BATL_CACHEINHIBIT)
+#define CONFIG_SYS_IBAT2U      (0x80000000 | BATU_BL_256M | BATU_VS | BATU_VP)
+
+/* Flash, config addrs, etc */
+#define CONFIG_SYS_IBAT3L      (0xF0000000 | BATL_PP_10 | BATL_CACHEINHIBIT)
+#define CONFIG_SYS_IBAT3U      (0xF0000000 | BATU_BL_256M | BATU_VS | BATU_VP)
+
+#define CONFIG_SYS_DBAT0L      CONFIG_SYS_IBAT0L
+#define CONFIG_SYS_DBAT0U      CONFIG_SYS_IBAT0U
+#define CONFIG_SYS_DBAT1L      CONFIG_SYS_IBAT1L
+#define CONFIG_SYS_DBAT1U      CONFIG_SYS_IBAT1U
+#define CONFIG_SYS_DBAT2L      CONFIG_SYS_IBAT2L
+#define CONFIG_SYS_DBAT2U      CONFIG_SYS_IBAT2U
+#define CONFIG_SYS_DBAT3L      CONFIG_SYS_IBAT3L
+#define CONFIG_SYS_DBAT3U      CONFIG_SYS_IBAT3U
+
+/*
+ * For booting Linux, the board info and command line data
+ * have to be in the first 8 MB of memory, since this is
+ * the maximum mapped by the Linux kernel during initialization.
+ */
+#define CONFIG_SYS_BOOTMAPSZ           (8 << 20)       /* Initial Memory map for Linux */
+/*-----------------------------------------------------------------------
+ * FLASH organization
+ */
+#define CONFIG_SYS_MAX_FLASH_BANKS     1       /* max number of memory banks           */
+#define CONFIG_SYS_MAX_FLASH_SECT      20      /* max number of sectors on one chip    */
+
+#define CONFIG_SYS_FLASH_ERASE_TOUT    120000  /* Timeout for Flash Erase (in ms)      */
+#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Timeout for Flash Write (in ms)      */
+
+#define CONFIG_SYS_FLASH_CHECKSUM
+
+/*-----------------------------------------------------------------------
+ * Cache Configuration
+ */
+#define CONFIG_SYS_CACHELINE_SIZE      32      /* For MPC8240 CPU                      */
+#if defined(CONFIG_CMD_KGDB)
+#  define CONFIG_SYS_CACHELINE_SHIFT   5       /* log base 2 of the above value */
+#endif
+
+
+/*
+ * Internal Definitions
+ *
+ * Boot Flags
+ */
+#define BOOTFLAG_COLD          0x01    /* Normal Power-On: Boot from FLASH     */
+#define BOOTFLAG_WARM          0x02    /* Software reboot                      */
+
+/* values according to the manual */
+
+#define CONFIG_DRAM_50MHZ      1
+#define CONFIG_SDRAM_50MHZ
+
+#define CONFIG_DISK_SPINUP_TIME 1000000
+
+
+#endif /* __CONFIG_H */
diff -Naur u-boot-2009.03_orig/include/configs/de1_or1k.h u-boot-2009.03/include/configs/de1_or1k.h
--- u-boot-2009.03_orig/include/configs/de1_or1k.h      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/configs/de1_or1k.h   2009-03-25 17:39:02.660456000 -0700
@@ -0,0 +1,154 @@
+/*
+ * (C) Copyright 2003
+ * 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
+ */
+
+/*
+ * 
+ */
+
+#ifndef __CONFIG_H
+#define __CONFIG_H
+
+
+/*-----------------------------------------------------------------------
+ * misc configuration.
+ */
+
+#undef  CONFIG_BZIP2
+
+#undef  CONFIG_WATCHDOG
+
+#define CONFIG_CLOCKS_IN_MHZ 24
+#define CONFIG_HZ  (CONFIG_CLOCKS_IN_MHZ * 1000000)
+
+/*-----------------------------------------------------------------------
+ * Command line configuration.
+ */
+#include <config_cmd_default.h>
+
+#undef CONFIG_CMD_AUTOSCRIPT   /* Autoscript Support           */
+#undef CONFIG_CMD_BDI          /* bdinfo                       */
+#undef CONFIG_CMD_BOOTD        /* bootd                        */
+// #undef CONFIG_CMD_CONSOLE   /* coninfo                      */
+#undef CONFIG_CMD_ECHO         /* echo arguments               */
+#undef CONFIG_CMD_SAVEENV      /* saveenv                      */
+#undef CONFIG_CMD_FLASH        /* flinfo, erase, protect       */
+#undef CONFIG_CMD_FPGA         /* FPGA configuration Support   */
+#undef CONFIG_CMD_IMI          /* iminfo                       */
+#undef CONFIG_CMD_IMLS         /* List all found images        */
+#undef CONFIG_CMD_ITEST        /* Integer (and string) test    */
+#undef CONFIG_CMD_LOADB        /* loadb                        */
+#undef CONFIG_CMD_LOADS        /* loads                        */
+// #undef CONFIG_CMD_MEMORY    /* md mm nm mw cp cmp crc base loop mtest */
+#undef CONFIG_CMD_MISC         /* Misc functions like sleep etc*/
+#undef CONFIG_CMD_NET          /* bootp, tftpboot, rarpboot    */
+#undef CONFIG_CMD_NFS          /* NFS support                  */
+#undef CONFIG_CMD_RUN          /* run command in env variable  */
+#undef CONFIG_CMD_SETGETDCR    /* DCR support on 4xx           */
+#undef CONFIG_CMD_XIMG         /* Load part of Multi Image     */
+
+
+/*-----------------------------------------------------------------------
+ * environment data configuration.
+ */
+
+#define        CONFIG_ENV_IS_NOWHERE   
+#define CONFIG_ENV_SIZE 1024
+#define CONFIG_SYS_MAX_FLASH_SECT 1
+#define CONFIG_SYS_NO_FLASH
+
+ 
+/*-----------------------------------------------------------------------
+ * boot configuration.
+ */
+#undef CONFIG_BOOTARGS
+
+#define CONFIG_BOOTDELAY       10      /* autoboot after 10 seconds    */
+#define        CONFIG_TIMESTAMP                /* Print image info with timestamp */
+#define CONFIG_SYS_LOAD_ADDR 0x81000000
+
+
+/*-----------------------------------------------------------------------
+ * Console configuration.
+ */
+#define CONFIG_SYS_PROMPT              "de1_or1k # "   /* Monitor Command Prompt    */
+
+#define CONFIG_AUTO_COMPLETE
+#define CONFIG_CMDLINE_EDITING
+
+#define CONFIG_SYS_CBSIZE              256             /* Console I/O Buffer Size      */
+#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
+#define CONFIG_SYS_MAXARGS 16
+
+
+/*-----------------------------------------------------------------------
+ * Start addresses for the final memory configuration
+ * (Set up by the startup code)
+ * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
+ */
+#define CONFIG_SYS_SDRAM_BASE          0x30000000
+#define CONFIG_SYS_SDRAM_SIZE          0x00020000
+#define CONFIG_SYS_FLASH_BASE          0x20000000
+#define CONFIG_SYS_FLASH_SIZE          0x00400000
+
+#define CONFIG_SYS_MEMTEST_START       CONFIG_SYS_SDRAM_BASE
+#define CONFIG_SYS_MEMTEST_END         (CONFIG_SYS_SDRAM_BASE + CONFIG_SYS_SDRAM_SIZE)
+
+#define        CONFIG_SYS_MALLOC_BASE 0x30010000
+#define CONFIG_SYS_MALLOC_LEN          32*1024
+
+
+/*-----------------------------------------------------------------------
+ * Definitions for initial stack pointer and data area
+ */
+
+#define CONFIG_SYS_INIT_RAM_ADDR       0x30000000      /* inside of SDRAM */
+#define CONFIG_SYS_INIT_RAM_END        (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_SDRAM_SIZE)              /* End of used area in RAM */
+#define CONFIG_SYS_INIT_DATA_SIZE      128             /* size in bytes reserved for initial data */
+#define CONFIG_SYS_GBL_DATA_OFFSET    (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_INIT_DATA_SIZE)
+#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
+
+
+/*-----------------------------------------------------------------------
+ * serial port configuration.
+ */
+
+#define CONFIG_BAUDRATE 57600
+#define CONFIG_SYS_BAUDRATE_TABLE { 9600 , 19200 , 38400 , 57600, 115200 }
+
+#define CONFIG_CONS_INDEX      1
+#define CONFIG_SYS_NS16550_SERIAL
+#define CONFIG_SYS_NS16550
+#define CONFIG_SYS_NS16550_REG_SIZE 1
+#define CONFIG_SYS_NS16550_COM1        (0x50000000)
+#define CONFIG_SYS_NS16550_CLK CONFIG_HZ
+
+
+/*-----------------------------------------------------------------------
+ * qaz debug
+ */
+
+
+ 
+#endif /* __CONFIG_H */
+
+
diff -Naur u-boot-2009.03_orig/include/cramfs/CVS/Entries u-boot-2009.03/include/cramfs/CVS/Entries
--- u-boot-2009.03_orig/include/cramfs/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/cramfs/CVS/Entries   2009-03-25 15:58:14.387304100 -0700
@@ -0,0 +1,3 @@
+/cramfs_fs.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cramfs_fs_sb.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/include/cramfs/CVS/Entries.Extra u-boot-2009.03/include/cramfs/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/cramfs/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/cramfs/CVS/Entries.Extra     2009-03-25 15:58:14.402929000 -0700
@@ -0,0 +1,2 @@
+/cramfs_fs.h///1238019748/
+/cramfs_fs_sb.h///1238019748/
diff -Naur u-boot-2009.03_orig/include/cramfs/CVS/Entries.Extra.Old u-boot-2009.03/include/cramfs/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/cramfs/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/cramfs/CVS/Entries.Extra.Old 2009-03-25 15:25:55.000000000 -0700
@@ -0,0 +1,2 @@
+/cramfs_fs.h///1238019748/
+/cramfs_fs_sb.h///1238019748/
diff -Naur u-boot-2009.03_orig/include/cramfs/CVS/Entries.Old u-boot-2009.03/include/cramfs/CVS/Entries.Old
--- u-boot-2009.03_orig/include/cramfs/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/cramfs/CVS/Entries.Old       2009-03-25 15:25:55.000000000 -0700
@@ -0,0 +1,3 @@
+/cramfs_fs.h/1.1.1.1/Wed Mar 25 22:22:28 2009//
+/cramfs_fs_sb.h/1.1.1.1/Wed Mar 25 22:22:28 2009//
+D
diff -Naur u-boot-2009.03_orig/include/cramfs/CVS/Repository u-boot-2009.03/include/cramfs/CVS/Repository
--- u-boot-2009.03_orig/include/cramfs/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/cramfs/CVS/Repository        2009-03-25 15:25:55.290339400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/cramfs
diff -Naur u-boot-2009.03_orig/include/cramfs/CVS/Root u-boot-2009.03/include/cramfs/CVS/Root
--- u-boot-2009.03_orig/include/cramfs/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/cramfs/CVS/Root      2009-03-25 15:25:55.290339400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/galileo/CVS/Entries u-boot-2009.03/include/galileo/CVS/Entries
--- u-boot-2009.03_orig/include/galileo/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/galileo/CVS/Entries  2009-03-25 15:58:14.481053500 -0700
@@ -0,0 +1,5 @@
+/core.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/gt64260R.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/memory.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/include/galileo/CVS/Entries.Extra u-boot-2009.03/include/galileo/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/galileo/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/galileo/CVS/Entries.Extra    2009-03-25 15:58:14.481053500 -0700
@@ -0,0 +1,4 @@
+/core.h///1238019748/
+/gt64260R.h///1238019748/
+/memory.h///1238019748/
+/pci.h///1238019748/
diff -Naur u-boot-2009.03_orig/include/galileo/CVS/Entries.Extra.Old u-boot-2009.03/include/galileo/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/galileo/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/galileo/CVS/Entries.Extra.Old        2009-03-25 15:25:55.000000000 -0700
@@ -0,0 +1,4 @@
+/core.h///1238019748/
+/gt64260R.h///1238019748/
+/memory.h///1238019748/
+/pci.h///1238019748/
diff -Naur u-boot-2009.03_orig/include/galileo/CVS/Entries.Old u-boot-2009.03/include/galileo/CVS/Entries.Old
--- u-boot-2009.03_orig/include/galileo/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/galileo/CVS/Entries.Old      2009-03-25 15:25:55.000000000 -0700
@@ -0,0 +1,5 @@
+/core.h/1.1.1.1/Wed Mar 25 22:22:28 2009//
+/gt64260R.h/1.1.1.1/Wed Mar 25 22:22:28 2009//
+/memory.h/1.1.1.1/Wed Mar 25 22:22:28 2009//
+/pci.h/1.1.1.1/Wed Mar 25 22:22:28 2009//
+D
diff -Naur u-boot-2009.03_orig/include/galileo/CVS/Repository u-boot-2009.03/include/galileo/CVS/Repository
--- u-boot-2009.03_orig/include/galileo/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/galileo/CVS/Repository       2009-03-25 15:25:55.384088800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/galileo
diff -Naur u-boot-2009.03_orig/include/galileo/CVS/Root u-boot-2009.03/include/galileo/CVS/Root
--- u-boot-2009.03_orig/include/galileo/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/galileo/CVS/Root     2009-03-25 15:25:55.368463900 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/image.h u-boot-2009.03/include/image.h
--- u-boot-2009.03_orig/include/image.h 2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/include/image.h      2009-03-25 16:04:34.525496200 -0700
@@ -478,6 +478,8 @@
        if (!image_check_arch (hdr, IH_ARCH_SH))
 #elif defined(__sparc__)
        if (!image_check_arch (hdr, IH_ARCH_SPARC))
+#elif defined(__or1200__)
+       if (!image_check_arch (hdr, IH_ARCH_INVALID))
 #else
 # error Unknown CPU type
 #endif
diff -Naur u-boot-2009.03_orig/include/jffs2/CVS/Entries u-boot-2009.03/include/jffs2/CVS/Entries
--- u-boot-2009.03_orig/include/jffs2/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/jffs2/CVS/Entries    2009-03-31 15:01:30.060246400 -0700
@@ -0,0 +1,6 @@
+/jffs2_1pass.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/compr_rubin.h/1.1.1.1/Tue Mar 31 22:01:29 2009//T1.1.1.1
+/jffs2.h/1.1.1.1/Tue Mar 31 22:01:29 2009//T1.1.1.1
+/load_kernel.h/1.1.1.1/Tue Mar 31 22:01:30 2009//T1.1.1.1
+/mini_inflate.h/1.1.1.1/Tue Mar 31 22:01:30 2009//T1.1.1.1
+D
diff -Naur u-boot-2009.03_orig/include/jffs2/CVS/Entries.Extra u-boot-2009.03/include/jffs2/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/jffs2/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/jffs2/CVS/Entries.Extra      2009-03-31 15:01:30.060246400 -0700
@@ -0,0 +1,5 @@
+/jffs2_1pass.h///1238019748/
+/compr_rubin.h///1238019748/
+/jffs2.h///1238019748/
+/load_kernel.h///1238019748/
+/mini_inflate.h///1238019748/
diff -Naur u-boot-2009.03_orig/include/jffs2/CVS/Entries.Extra.Old u-boot-2009.03/include/jffs2/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/jffs2/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/jffs2/CVS/Entries.Extra.Old  2009-03-25 17:51:52.000000000 -0700
@@ -0,0 +1,5 @@
+/jffs2_1pass.h///1238019748/
+/compr_rubin.h///1238028712/
+/jffs2.h///1238028712/
+/load_kernel.h///1238028712/
+/mini_inflate.h///1238028712/
diff -Naur u-boot-2009.03_orig/include/jffs2/CVS/Entries.Old u-boot-2009.03/include/jffs2/CVS/Entries.Old
--- u-boot-2009.03_orig/include/jffs2/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/jffs2/CVS/Entries.Old        2009-03-25 17:51:52.000000000 -0700
@@ -0,0 +1,6 @@
+/jffs2_1pass.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/compr_rubin.h/1.2/Thu Mar 26 00:51:52 2009//
+/jffs2.h/1.2/Thu Mar 26 00:51:52 2009//
+/load_kernel.h/1.2/Thu Mar 26 00:51:52 2009//
+/mini_inflate.h/1.2/Thu Mar 26 00:51:52 2009//
+D
diff -Naur u-boot-2009.03_orig/include/jffs2/CVS/Repository u-boot-2009.03/include/jffs2/CVS/Repository
--- u-boot-2009.03_orig/include/jffs2/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/jffs2/CVS/Repository 2009-03-25 15:25:55.477838200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/jffs2
diff -Naur u-boot-2009.03_orig/include/jffs2/CVS/Root u-boot-2009.03/include/jffs2/CVS/Root
--- u-boot-2009.03_orig/include/jffs2/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/jffs2/CVS/Root       2009-03-25 15:25:55.477838200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/jffs2/compr_rubin.h u-boot-2009.03/include/jffs2/compr_rubin.h
--- u-boot-2009.03_orig/include/jffs2/compr_rubin.h     2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/include/jffs2/compr_rubin.h  2009-03-31 15:01:29.810249600 -0700
@@ -1,11 +1,11 @@
-/* Rubin encoder/decoder header       */
-/* work started at   : aug   3, 1994  */
-/* last modification : aug  15, 1994  */
-/* $Id: compr_rubin.h,v 1.1 2002/01/16 23:34:32 nyet Exp $ */
-
-#define RUBIN_REG_SIZE   16
-#define UPPER_BIT_RUBIN    (((long) 1)<<(RUBIN_REG_SIZE-1))
-#define LOWER_BITS_RUBIN   ((((long) 1)<<(RUBIN_REG_SIZE-1))-1)
-
-void dynrubin_decompress(unsigned char *data_in, unsigned char *cpage_out,
-                  unsigned long sourcelen, unsigned long dstlen);
+/* Rubin encoder/decoder header       */
+/* work started at   : aug   3, 1994  */
+/* last modification : aug  15, 1994  */
+/* $Id: compr_rubin.h,v 1.1.1.1 2009/03/25 22:22:28 kenagy Exp $ */
+
+#define RUBIN_REG_SIZE   16
+#define UPPER_BIT_RUBIN    (((long) 1)<<(RUBIN_REG_SIZE-1))
+#define LOWER_BITS_RUBIN   ((((long) 1)<<(RUBIN_REG_SIZE-1))-1)
+
+void dynrubin_decompress(unsigned char *data_in, unsigned char *cpage_out,
+                  unsigned long sourcelen, unsigned long dstlen);
diff -Naur u-boot-2009.03_orig/include/jffs2/jffs2.h u-boot-2009.03/include/jffs2/jffs2.h
--- u-boot-2009.03_orig/include/jffs2/jffs2.h   2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/include/jffs2/jffs2.h        2009-03-31 15:01:29.966497600 -0700
@@ -1,237 +1,237 @@
-/*
- * JFFS2 -- Journalling Flash File System, Version 2.
- *
- * Copyright (C) 2001 Red Hat, Inc.
- *
- * Created by David Woodhouse <dwmw2@cambridge.redhat.com>
- *
- * The original JFFS, from which the design for JFFS2 was derived,
- * was designed and implemented by Axis Communications AB.
- *
- * The contents of this file are subject to the Red Hat eCos Public
- * License Version 1.1 (the "Licence"); you may not use this file
- * except in compliance with the Licence.  You may obtain a copy of
- * the Licence at http://www.redhat.com/
- *
- * Software distributed under the Licence is distributed on an "AS IS"
- * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.
- * See the Licence for the specific language governing rights and
- * limitations under the Licence.
- *
- * The Original Code is JFFS2 - Journalling Flash File System, version 2
- *
- * Alternatively, the contents of this file may be used under the
- * terms of the GNU General Public License version 2 (the "GPL"), in
- * which case the provisions of the GPL are applicable instead of the
- * above.  If you wish to allow the use of your version of this file
- * only under the terms of the GPL and not to allow others to use your
- * version of this file under the RHEPL, indicate your decision by
- * deleting the provisions above and replace them with the notice and
- * other provisions required by the GPL.  If you do not delete the
- * provisions above, a recipient may use your version of this file
- * under either the RHEPL or the GPL.
- *
- * $Id: jffs2.h,v 1.2 2002/01/17 00:53:20 nyet Exp $
- *
- */
-
-#ifndef __LINUX_JFFS2_H__
-#define __LINUX_JFFS2_H__
-
-#include <asm/types.h>
-#include <jffs2/load_kernel.h>
-
-#define JFFS2_SUPER_MAGIC 0x72b6
-
-/* Values we may expect to find in the 'magic' field */
-#define JFFS2_OLD_MAGIC_BITMASK 0x1984
-#define JFFS2_MAGIC_BITMASK 0x1985
-#define KSAMTIB_CIGAM_2SFFJ 0x5981 /* For detecting wrong-endian fs */
-#define JFFS2_EMPTY_BITMASK 0xffff
-#define JFFS2_DIRTY_BITMASK 0x0000
-
-/* Summary node MAGIC marker */
-#define JFFS2_SUM_MAGIC        0x02851885
-
-/* We only allow a single char for length, and 0xFF is empty flash so
-   we don't want it confused with a real length. Hence max 254.
-*/
-#define JFFS2_MAX_NAME_LEN 254
-
-/* How small can we sensibly write nodes? */
-#define JFFS2_MIN_DATA_LEN 128
-
-#define JFFS2_COMPR_NONE       0x00
-#define JFFS2_COMPR_ZERO       0x01
-#define JFFS2_COMPR_RTIME      0x02
-#define JFFS2_COMPR_RUBINMIPS  0x03
-#define JFFS2_COMPR_COPY       0x04
-#define JFFS2_COMPR_DYNRUBIN   0x05
-#define JFFS2_COMPR_ZLIB       0x06
-#if defined(CONFIG_JFFS2_LZO_LZARI)
-#define JFFS2_COMPR_LZO                0x07
-#define JFFS2_COMPR_LZARI      0x08
-#define JFFS2_NUM_COMPR                9
-#else
-#define JFFS2_NUM_COMPR                7
-#endif
-
-/* Compatibility flags. */
-#define JFFS2_COMPAT_MASK 0xc000      /* What do to if an unknown nodetype is found */
-#define JFFS2_NODE_ACCURATE 0x2000
-/* INCOMPAT: Fail to mount the filesystem */
-#define JFFS2_FEATURE_INCOMPAT 0xc000
-/* ROCOMPAT: Mount read-only */
-#define JFFS2_FEATURE_ROCOMPAT 0x8000
-/* RWCOMPAT_COPY: Mount read/write, and copy the node when it's GC'd */
-#define JFFS2_FEATURE_RWCOMPAT_COPY 0x4000
-/* RWCOMPAT_DELETE: Mount read/write, and delete the node when it's GC'd */
-#define JFFS2_FEATURE_RWCOMPAT_DELETE 0x0000
-
-#define JFFS2_NODETYPE_DIRENT (JFFS2_FEATURE_INCOMPAT | JFFS2_NODE_ACCURATE | 1)
-#define JFFS2_NODETYPE_INODE (JFFS2_FEATURE_INCOMPAT | JFFS2_NODE_ACCURATE | 2)
-#define JFFS2_NODETYPE_CLEANMARKER (JFFS2_FEATURE_RWCOMPAT_DELETE | JFFS2_NODE_ACCURATE | 3)
-#define JFFS2_NODETYPE_PADDING (JFFS2_FEATURE_RWCOMPAT_DELETE | JFFS2_NODE_ACCURATE | 4)
-#define JFFS2_NODETYPE_SUMMARY (JFFS2_FEATURE_RWCOMPAT_DELETE | JFFS2_NODE_ACCURATE | 6)
-
-/* Maybe later... */
-/*#define JFFS2_NODETYPE_CHECKPOINT (JFFS2_FEATURE_RWCOMPAT_DELETE | JFFS2_NODE_ACCURATE | 3) */
-/*#define JFFS2_NODETYPE_OPTIONS (JFFS2_FEATURE_RWCOMPAT_COPY | JFFS2_NODE_ACCURATE | 4) */
-
-/* Same as the non_ECC versions, but with extra space for real
- * ECC instead of just the checksum. For use on NAND flash
- */
-/*#define JFFS2_NODETYPE_DIRENT_ECC (JFFS2_FEATURE_INCOMPAT | JFFS2_NODE_ACCURATE | 5) */
-/*#define JFFS2_NODETYPE_INODE_ECC (JFFS2_FEATURE_INCOMPAT | JFFS2_NODE_ACCURATE | 6) */
-
-#define JFFS2_INO_FLAG_PREREAD   1     /* Do read_inode() for this one at
-                                          mount time, don't wait for it to
-                                          happen later */
-#define JFFS2_INO_FLAG_USERCOMPR  2    /* User has requested a specific
-                                          compression type */
-
-
-struct jffs2_unknown_node
-{
-       /* All start like this */
-       __u16 magic;
-       __u16 nodetype;
-       __u32 totlen; /* So we can skip over nodes we don't grok */
-       __u32 hdr_crc;
-} __attribute__((packed));
-
-struct jffs2_raw_dirent
-{
-       __u16 magic;
-       __u16 nodetype; /* == JFFS_NODETYPE_DIRENT */
-       __u32 totlen;
-       __u32 hdr_crc;
-       __u32 pino;
-       __u32 version;
-       __u32 ino; /* == zero for unlink */
-       __u32 mctime;
-       __u8 nsize;
-       __u8 type;
-       __u8 unused[2];
-       __u32 node_crc;
-       __u32 name_crc;
-       __u8 name[0];
-} __attribute__((packed));
-
-/* The JFFS2 raw inode structure: Used for storage on physical media.  */
-/* The uid, gid, atime, mtime and ctime members could be longer, but
-   are left like this for space efficiency. If and when people decide
-   they really need them extended, it's simple enough to add support for
-   a new type of raw node.
-*/
-struct jffs2_raw_inode
-{
-       __u16 magic;      /* A constant magic number.  */
-       __u16 nodetype;   /* == JFFS_NODETYPE_INODE */
-       __u32 totlen;     /* Total length of this node (inc data, etc.) */
-       __u32 hdr_crc;
-       __u32 ino;        /* Inode number.  */
-       __u32 version;    /* Version number.  */
-       __u32 mode;       /* The file's type or mode.  */
-       __u16 uid;        /* The file's owner.  */
-       __u16 gid;        /* The file's group.  */
-       __u32 isize;      /* Total resultant size of this inode (used for truncations)  */
-       __u32 atime;      /* Last access time.  */
-       __u32 mtime;      /* Last modification time.  */
-       __u32 ctime;      /* Change time.  */
-       __u32 offset;     /* Where to begin to write.  */
-       __u32 csize;      /* (Compressed) data size */
-       __u32 dsize;      /* Size of the node's data. (after decompression) */
-       __u8 compr;       /* Compression algorithm used */
-       __u8 usercompr;   /* Compression algorithm requested by the user */
-       __u16 flags;      /* See JFFS2_INO_FLAG_* */
-       __u32 data_crc;   /* CRC for the (compressed) data.  */
-       __u32 node_crc;   /* CRC for the raw inode (excluding data)  */
-/*     __u8 data[dsize]; */
-} __attribute__((packed));
-
-struct jffs2_raw_summary
-{
-       __u16 magic;
-       __u16 nodetype;         /* = JFFS2_NODETYPE_SUMMARY */
-       __u32 totlen;
-       __u32 hdr_crc;
-       __u32 sum_num;  /* number of sum entries*/
-       __u32 cln_mkr;  /* clean marker size, 0 = no cleanmarker */
-       __u32 padded;   /* sum of the size of padding nodes */
-       __u32 sum_crc;  /* summary information crc */
-       __u32 node_crc;         /* node crc */
-       __u32 sum[0];   /* inode summary info */
-};
-
-union jffs2_node_union {
-       struct jffs2_raw_inode i;
-       struct jffs2_raw_dirent d;
-       struct jffs2_raw_summary s;
-       struct jffs2_unknown_node u;
-} __attribute__((packed));
-
-enum
-  {
-    DT_UNKNOWN = 0,
-# define DT_UNKNOWN     DT_UNKNOWN
-    DT_FIFO = 1,
-# define DT_FIFO        DT_FIFO
-    DT_CHR = 2,
-# define DT_CHR         DT_CHR
-    DT_DIR = 4,
-# define DT_DIR         DT_DIR
-    DT_BLK = 6,
-# define DT_BLK         DT_BLK
-    DT_REG = 8,
-# define DT_REG         DT_REG
-    DT_LNK = 10,
-# define DT_LNK         DT_LNK
-    DT_SOCK = 12,
-# define DT_SOCK        DT_SOCK
-    DT_WHT = 14
-# define DT_WHT         DT_WHT
-  };
-
-
-u32 jffs2_1pass_ls(struct part_info *part,const char *fname);
-u32 jffs2_1pass_load(char *dest, struct part_info *part,const char *fname);
-u32 jffs2_1pass_info(struct part_info *part);
-
-void rtime_decompress(unsigned char *data_in, unsigned char *cpage_out,
-               u32 srclen, u32 destlen);
-void rubin_do_decompress(unsigned char *bits, unsigned char *in,
-               unsigned char *page_out, __u32 destlen);
-void dynrubin_decompress(unsigned char *data_in, unsigned char *cpage_out,
-               unsigned long sourcelen, unsigned long dstlen);
-long zlib_decompress(unsigned char *data_in, unsigned char *cpage_out,
-               __u32 srclen, __u32 destlen);
-#if defined(CONFIG_JFFS2_LZO_LZARI)
-int lzo_decompress(unsigned char *data_in, unsigned char *cpage_out,
-               u32 srclen, u32 destlen);
-int lzari_decompress(unsigned char *data_in, unsigned char *cpage_out,
-               u32 srclen, u32 destlen);
-#endif
-
-char *mkmodestr(unsigned long mode, char *str);
-#endif /* __LINUX_JFFS2_H__ */
+/*
+ * JFFS2 -- Journalling Flash File System, Version 2.
+ *
+ * Copyright (C) 2001 Red Hat, Inc.
+ *
+ * Created by David Woodhouse <dwmw2@cambridge.redhat.com>
+ *
+ * The original JFFS, from which the design for JFFS2 was derived,
+ * was designed and implemented by Axis Communications AB.
+ *
+ * The contents of this file are subject to the Red Hat eCos Public
+ * License Version 1.1 (the "Licence"); you may not use this file
+ * except in compliance with the Licence.  You may obtain a copy of
+ * the Licence at http://www.redhat.com/
+ *
+ * Software distributed under the Licence is distributed on an "AS IS"
+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.
+ * See the Licence for the specific language governing rights and
+ * limitations under the Licence.
+ *
+ * The Original Code is JFFS2 - Journalling Flash File System, version 2
+ *
+ * Alternatively, the contents of this file may be used under the
+ * terms of the GNU General Public License version 2 (the "GPL"), in
+ * which case the provisions of the GPL are applicable instead of the
+ * above.  If you wish to allow the use of your version of this file
+ * only under the terms of the GPL and not to allow others to use your
+ * version of this file under the RHEPL, indicate your decision by
+ * deleting the provisions above and replace them with the notice and
+ * other provisions required by the GPL.  If you do not delete the
+ * provisions above, a recipient may use your version of this file
+ * under either the RHEPL or the GPL.
+ *
+ * $Id: jffs2.h,v 1.1.1.1 2009/03/25 22:22:28 kenagy Exp $
+ *
+ */
+
+#ifndef __LINUX_JFFS2_H__
+#define __LINUX_JFFS2_H__
+
+#include <asm/types.h>
+#include <jffs2/load_kernel.h>
+
+#define JFFS2_SUPER_MAGIC 0x72b6
+
+/* Values we may expect to find in the 'magic' field */
+#define JFFS2_OLD_MAGIC_BITMASK 0x1984
+#define JFFS2_MAGIC_BITMASK 0x1985
+#define KSAMTIB_CIGAM_2SFFJ 0x5981 /* For detecting wrong-endian fs */
+#define JFFS2_EMPTY_BITMASK 0xffff
+#define JFFS2_DIRTY_BITMASK 0x0000
+
+/* Summary node MAGIC marker */
+#define JFFS2_SUM_MAGIC        0x02851885
+
+/* We only allow a single char for length, and 0xFF is empty flash so
+   we don't want it confused with a real length. Hence max 254.
+*/
+#define JFFS2_MAX_NAME_LEN 254
+
+/* How small can we sensibly write nodes? */
+#define JFFS2_MIN_DATA_LEN 128
+
+#define JFFS2_COMPR_NONE       0x00
+#define JFFS2_COMPR_ZERO       0x01
+#define JFFS2_COMPR_RTIME      0x02
+#define JFFS2_COMPR_RUBINMIPS  0x03
+#define JFFS2_COMPR_COPY       0x04
+#define JFFS2_COMPR_DYNRUBIN   0x05
+#define JFFS2_COMPR_ZLIB       0x06
+#if defined(CONFIG_JFFS2_LZO_LZARI)
+#define JFFS2_COMPR_LZO                0x07
+#define JFFS2_COMPR_LZARI      0x08
+#define JFFS2_NUM_COMPR                9
+#else
+#define JFFS2_NUM_COMPR                7
+#endif
+
+/* Compatibility flags. */
+#define JFFS2_COMPAT_MASK 0xc000      /* What do to if an unknown nodetype is found */
+#define JFFS2_NODE_ACCURATE 0x2000
+/* INCOMPAT: Fail to mount the filesystem */
+#define JFFS2_FEATURE_INCOMPAT 0xc000
+/* ROCOMPAT: Mount read-only */
+#define JFFS2_FEATURE_ROCOMPAT 0x8000
+/* RWCOMPAT_COPY: Mount read/write, and copy the node when it's GC'd */
+#define JFFS2_FEATURE_RWCOMPAT_COPY 0x4000
+/* RWCOMPAT_DELETE: Mount read/write, and delete the node when it's GC'd */
+#define JFFS2_FEATURE_RWCOMPAT_DELETE 0x0000
+
+#define JFFS2_NODETYPE_DIRENT (JFFS2_FEATURE_INCOMPAT | JFFS2_NODE_ACCURATE | 1)
+#define JFFS2_NODETYPE_INODE (JFFS2_FEATURE_INCOMPAT | JFFS2_NODE_ACCURATE | 2)
+#define JFFS2_NODETYPE_CLEANMARKER (JFFS2_FEATURE_RWCOMPAT_DELETE | JFFS2_NODE_ACCURATE | 3)
+#define JFFS2_NODETYPE_PADDING (JFFS2_FEATURE_RWCOMPAT_DELETE | JFFS2_NODE_ACCURATE | 4)
+#define JFFS2_NODETYPE_SUMMARY (JFFS2_FEATURE_RWCOMPAT_DELETE | JFFS2_NODE_ACCURATE | 6)
+
+/* Maybe later... */
+/*#define JFFS2_NODETYPE_CHECKPOINT (JFFS2_FEATURE_RWCOMPAT_DELETE | JFFS2_NODE_ACCURATE | 3) */
+/*#define JFFS2_NODETYPE_OPTIONS (JFFS2_FEATURE_RWCOMPAT_COPY | JFFS2_NODE_ACCURATE | 4) */
+
+/* Same as the non_ECC versions, but with extra space for real
+ * ECC instead of just the checksum. For use on NAND flash
+ */
+/*#define JFFS2_NODETYPE_DIRENT_ECC (JFFS2_FEATURE_INCOMPAT | JFFS2_NODE_ACCURATE | 5) */
+/*#define JFFS2_NODETYPE_INODE_ECC (JFFS2_FEATURE_INCOMPAT | JFFS2_NODE_ACCURATE | 6) */
+
+#define JFFS2_INO_FLAG_PREREAD   1     /* Do read_inode() for this one at
+                                          mount time, don't wait for it to
+                                          happen later */
+#define JFFS2_INO_FLAG_USERCOMPR  2    /* User has requested a specific
+                                          compression type */
+
+
+struct jffs2_unknown_node
+{
+       /* All start like this */
+       __u16 magic;
+       __u16 nodetype;
+       __u32 totlen; /* So we can skip over nodes we don't grok */
+       __u32 hdr_crc;
+} __attribute__((packed));
+
+struct jffs2_raw_dirent
+{
+       __u16 magic;
+       __u16 nodetype; /* == JFFS_NODETYPE_DIRENT */
+       __u32 totlen;
+       __u32 hdr_crc;
+       __u32 pino;
+       __u32 version;
+       __u32 ino; /* == zero for unlink */
+       __u32 mctime;
+       __u8 nsize;
+       __u8 type;
+       __u8 unused[2];
+       __u32 node_crc;
+       __u32 name_crc;
+       __u8 name[0];
+} __attribute__((packed));
+
+/* The JFFS2 raw inode structure: Used for storage on physical media.  */
+/* The uid, gid, atime, mtime and ctime members could be longer, but
+   are left like this for space efficiency. If and when people decide
+   they really need them extended, it's simple enough to add support for
+   a new type of raw node.
+*/
+struct jffs2_raw_inode
+{
+       __u16 magic;      /* A constant magic number.  */
+       __u16 nodetype;   /* == JFFS_NODETYPE_INODE */
+       __u32 totlen;     /* Total length of this node (inc data, etc.) */
+       __u32 hdr_crc;
+       __u32 ino;        /* Inode number.  */
+       __u32 version;    /* Version number.  */
+       __u32 mode;       /* The file's type or mode.  */
+       __u16 uid;        /* The file's owner.  */
+       __u16 gid;        /* The file's group.  */
+       __u32 isize;      /* Total resultant size of this inode (used for truncations)  */
+       __u32 atime;      /* Last access time.  */
+       __u32 mtime;      /* Last modification time.  */
+       __u32 ctime;      /* Change time.  */
+       __u32 offset;     /* Where to begin to write.  */
+       __u32 csize;      /* (Compressed) data size */
+       __u32 dsize;      /* Size of the node's data. (after decompression) */
+       __u8 compr;       /* Compression algorithm used */
+       __u8 usercompr;   /* Compression algorithm requested by the user */
+       __u16 flags;      /* See JFFS2_INO_FLAG_* */
+       __u32 data_crc;   /* CRC for the (compressed) data.  */
+       __u32 node_crc;   /* CRC for the raw inode (excluding data)  */
+/*     __u8 data[dsize]; */
+} __attribute__((packed));
+
+struct jffs2_raw_summary
+{
+       __u16 magic;
+       __u16 nodetype;         /* = JFFS2_NODETYPE_SUMMARY */
+       __u32 totlen;
+       __u32 hdr_crc;
+       __u32 sum_num;  /* number of sum entries*/
+       __u32 cln_mkr;  /* clean marker size, 0 = no cleanmarker */
+       __u32 padded;   /* sum of the size of padding nodes */
+       __u32 sum_crc;  /* summary information crc */
+       __u32 node_crc;         /* node crc */
+       __u32 sum[0];   /* inode summary info */
+};
+
+union jffs2_node_union {
+       struct jffs2_raw_inode i;
+       struct jffs2_raw_dirent d;
+       struct jffs2_raw_summary s;
+       struct jffs2_unknown_node u;
+} __attribute__((packed));
+
+enum
+  {
+    DT_UNKNOWN = 0,
+# define DT_UNKNOWN     DT_UNKNOWN
+    DT_FIFO = 1,
+# define DT_FIFO        DT_FIFO
+    DT_CHR = 2,
+# define DT_CHR         DT_CHR
+    DT_DIR = 4,
+# define DT_DIR         DT_DIR
+    DT_BLK = 6,
+# define DT_BLK         DT_BLK
+    DT_REG = 8,
+# define DT_REG         DT_REG
+    DT_LNK = 10,
+# define DT_LNK         DT_LNK
+    DT_SOCK = 12,
+# define DT_SOCK        DT_SOCK
+    DT_WHT = 14
+# define DT_WHT         DT_WHT
+  };
+
+
+u32 jffs2_1pass_ls(struct part_info *part,const char *fname);
+u32 jffs2_1pass_load(char *dest, struct part_info *part,const char *fname);
+u32 jffs2_1pass_info(struct part_info *part);
+
+void rtime_decompress(unsigned char *data_in, unsigned char *cpage_out,
+               u32 srclen, u32 destlen);
+void rubin_do_decompress(unsigned char *bits, unsigned char *in,
+               unsigned char *page_out, __u32 destlen);
+void dynrubin_decompress(unsigned char *data_in, unsigned char *cpage_out,
+               unsigned long sourcelen, unsigned long dstlen);
+long zlib_decompress(unsigned char *data_in, unsigned char *cpage_out,
+               __u32 srclen, __u32 destlen);
+#if defined(CONFIG_JFFS2_LZO_LZARI)
+int lzo_decompress(unsigned char *data_in, unsigned char *cpage_out,
+               u32 srclen, u32 destlen);
+int lzari_decompress(unsigned char *data_in, unsigned char *cpage_out,
+               u32 srclen, u32 destlen);
+#endif
+
+char *mkmodestr(unsigned long mode, char *str);
+#endif /* __LINUX_JFFS2_H__ */
diff -Naur u-boot-2009.03_orig/include/jffs2/load_kernel.h u-boot-2009.03/include/jffs2/load_kernel.h
--- u-boot-2009.03_orig/include/jffs2/load_kernel.h     2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/include/jffs2/load_kernel.h  2009-03-31 15:01:30.013372000 -0700
@@ -1,82 +1,82 @@
-#ifndef load_kernel_h
-#define load_kernel_h
-/*-------------------------------------------------------------------------
- * Filename:      load_kernel.h
- * Version:       $Id: load_kernel.h,v 1.3 2002/01/25 01:34:11 nyet Exp $
- * Copyright:     Copyright (C) 2001, Russ Dill
- * Author:        Russ Dill <Russ.Dill@asu.edu>
- * Description:   header for load kernel modules
- *-----------------------------------------------------------------------*/
-/*
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- */
-
-#include <linux/list.h>
-
-/* mtd device types */
-#define MTD_DEV_TYPE_NOR       0x0001
-#define MTD_DEV_TYPE_NAND      0x0002
-#define MTD_DEV_TYPE_ONENAND   0x0004
-
-#define MTD_DEV_TYPE(type) ((type == MTD_DEV_TYPE_NAND) ? "nand" :     \
-                       (type == MTD_DEV_TYPE_ONENAND) ? "onenand" : "nor")
-
-struct mtd_device {
-       struct list_head link;
-       struct mtdids *id;              /* parent mtd id entry */
-       u16 num_parts;                  /* number of partitions on this device */
-       struct list_head parts;         /* partitions */
-};
-
-struct part_info {
-       struct list_head link;
-       char *name;                     /* partition name */
-       u8 auto_name;                   /* set to 1 for generated name */
-       u32 size;                       /* total size of the partition */
-       u32 offset;                     /* offset within device */
-       void *jffs2_priv;               /* used internaly by jffs2 */
-       u32 mask_flags;                 /* kernel MTD mask flags */
-       u32 sector_size;                /* size of sector */
-       struct mtd_device *dev;         /* parent device */
-};
-
-struct mtdids {
-       struct list_head link;
-       u8 type;                        /* device type */
-       u8 num;                         /* device number */
-       u32 size;                       /* device size */
-       char *mtd_id;                   /* linux kernel device id */
-};
-
-#define ldr_strlen     strlen
-#define ldr_strncmp    strncmp
-#define ldr_memcpy     memcpy
-#define putstr(x)      printf("%s", x)
-#define mmalloc                malloc
-#define UDEBUG         printf
-
-#define putnstr(str, size)     printf("%*.*s", size, size, str)
-#define ldr_output_string(x)   puts(x)
-#define putLabeledWord(x, y)   printf("%s %08x\n", x, (unsigned int)y)
-#define led_blink(x, y, z, a)
-
-/* common/cmd_jffs2.c */
-extern int mtdparts_init(void);
-extern int find_dev_and_part(const char *id, struct mtd_device **dev,
-                               u8 *part_num, struct part_info **part);
-
-#endif /* load_kernel_h */
+#ifndef load_kernel_h
+#define load_kernel_h
+/*-------------------------------------------------------------------------
+ * Filename:      load_kernel.h
+ * Version:       $Id: load_kernel.h,v 1.1.1.1 2009/03/25 22:22:28 kenagy Exp $
+ * Copyright:     Copyright (C) 2001, Russ Dill
+ * Author:        Russ Dill <Russ.Dill@asu.edu>
+ * Description:   header for load kernel modules
+ *-----------------------------------------------------------------------*/
+/*
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ */
+
+#include <linux/list.h>
+
+/* mtd device types */
+#define MTD_DEV_TYPE_NOR       0x0001
+#define MTD_DEV_TYPE_NAND      0x0002
+#define MTD_DEV_TYPE_ONENAND   0x0004
+
+#define MTD_DEV_TYPE(type) ((type == MTD_DEV_TYPE_NAND) ? "nand" :     \
+                       (type == MTD_DEV_TYPE_ONENAND) ? "onenand" : "nor")
+
+struct mtd_device {
+       struct list_head link;
+       struct mtdids *id;              /* parent mtd id entry */
+       u16 num_parts;                  /* number of partitions on this device */
+       struct list_head parts;         /* partitions */
+};
+
+struct part_info {
+       struct list_head link;
+       char *name;                     /* partition name */
+       u8 auto_name;                   /* set to 1 for generated name */
+       u32 size;                       /* total size of the partition */
+       u32 offset;                     /* offset within device */
+       void *jffs2_priv;               /* used internaly by jffs2 */
+       u32 mask_flags;                 /* kernel MTD mask flags */
+       u32 sector_size;                /* size of sector */
+       struct mtd_device *dev;         /* parent device */
+};
+
+struct mtdids {
+       struct list_head link;
+       u8 type;                        /* device type */
+       u8 num;                         /* device number */
+       u32 size;                       /* device size */
+       char *mtd_id;                   /* linux kernel device id */
+};
+
+#define ldr_strlen     strlen
+#define ldr_strncmp    strncmp
+#define ldr_memcpy     memcpy
+#define putstr(x)      printf("%s", x)
+#define mmalloc                malloc
+#define UDEBUG         printf
+
+#define putnstr(str, size)     printf("%*.*s", size, size, str)
+#define ldr_output_string(x)   puts(x)
+#define putLabeledWord(x, y)   printf("%s %08x\n", x, (unsigned int)y)
+#define led_blink(x, y, z, a)
+
+/* common/cmd_jffs2.c */
+extern int mtdparts_init(void);
+extern int find_dev_and_part(const char *id, struct mtd_device **dev,
+                               u8 *part_num, struct part_info **part);
+
+#endif /* load_kernel_h */
diff -Naur u-boot-2009.03_orig/include/jffs2/mini_inflate.h u-boot-2009.03/include/jffs2/mini_inflate.h
--- u-boot-2009.03_orig/include/jffs2/mini_inflate.h    2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/include/jffs2/mini_inflate.h 2009-03-31 15:01:30.028996800 -0700
@@ -1,82 +1,82 @@
-/*-------------------------------------------------------------------------
- * Filename:      mini_inflate.h
- * Version:       $Id: mini_inflate.h,v 1.2 2002/01/17 00:53:20 nyet Exp $
- * Copyright:     Copyright (C) 2001, Russ Dill
- * Author:        Russ Dill <Russ.Dill@asu.edu>
- * Description:   Mini deflate implementation
- *-----------------------------------------------------------------------*/
-/*
- *
- * 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
- *
- */
-
-typedef __SIZE_TYPE__ size;
-
-#define NO_ERROR 0
-#define COMP_UNKNOWN 1  /* The specififed bytype is invalid */
-#define CODE_NOT_FOUND 2 /* a huffman code in the stream could not be decoded */
-#define TOO_MANY_BITS 3         /* pull_bits was passed an argument that is too
-                         * large */
-
-/* This struct represents an entire huffman code set. It has various lookup
- * tables to speed decoding */
-struct huffman_set {
-       int bits;        /* maximum bit length */
-       int num_symbols; /* Number of symbols this code can represent */
-       int *lengths;    /* The bit length of symbols */
-       int *symbols;    /* All of the symbols, sorted by the huffman code */
-       int *count;      /* the number of codes of this bit length */
-       int *first;      /* the first code of this bit length */
-       int *pos;        /* the symbol that first represents (in the symbols
-                         * array) */
-};
-
-struct bitstream {
-       unsigned char *data; /* increments as we move from byte to byte */
-       unsigned char bit;   /* 0 to 7 */
-       void *(*memcpy)(void *, const void *, size);
-       unsigned long decoded; /* The number of bytes decoded */
-       int error;
-
-       int  distance_count[16];
-       int  distance_first[16];
-       int  distance_pos[16];
-       int  distance_lengths[32];
-       int  distance_symbols[32];
-
-       int  code_count[8];
-       int  code_first[8];
-       int  code_pos[8];
-       int  code_lengths[19];
-       int  code_symbols[19];
-
-       int  length_count[16];
-       int  length_first[16];
-       int  length_pos[16];
-       int  length_lengths[288];
-       int  length_symbols[288];
-
-       struct huffman_set codes;
-       struct huffman_set lengths;
-       struct huffman_set distance;
-};
-
-#define NO_COMP 0
-#define FIXED_COMP 1
-#define DYNAMIC_COMP 2
-
-long decompress_block(unsigned char *dest, unsigned char *source,
-                     void *(*inflate_memcpy)(void *dest, const void *src, size n));
+/*-------------------------------------------------------------------------
+ * Filename:      mini_inflate.h
+ * Version:       $Id: mini_inflate.h,v 1.1.1.1 2009/03/25 22:22:28 kenagy Exp $
+ * Copyright:     Copyright (C) 2001, Russ Dill
+ * Author:        Russ Dill <Russ.Dill@asu.edu>
+ * Description:   Mini deflate implementation
+ *-----------------------------------------------------------------------*/
+/*
+ *
+ * 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
+ *
+ */
+
+typedef __SIZE_TYPE__ size;
+
+#define NO_ERROR 0
+#define COMP_UNKNOWN 1  /* The specififed bytype is invalid */
+#define CODE_NOT_FOUND 2 /* a huffman code in the stream could not be decoded */
+#define TOO_MANY_BITS 3         /* pull_bits was passed an argument that is too
+                         * large */
+
+/* This struct represents an entire huffman code set. It has various lookup
+ * tables to speed decoding */
+struct huffman_set {
+       int bits;        /* maximum bit length */
+       int num_symbols; /* Number of symbols this code can represent */
+       int *lengths;    /* The bit length of symbols */
+       int *symbols;    /* All of the symbols, sorted by the huffman code */
+       int *count;      /* the number of codes of this bit length */
+       int *first;      /* the first code of this bit length */
+       int *pos;        /* the symbol that first represents (in the symbols
+                         * array) */
+};
+
+struct bitstream {
+       unsigned char *data; /* increments as we move from byte to byte */
+       unsigned char bit;   /* 0 to 7 */
+       void *(*memcpy)(void *, const void *, size);
+       unsigned long decoded; /* The number of bytes decoded */
+       int error;
+
+       int  distance_count[16];
+       int  distance_first[16];
+       int  distance_pos[16];
+       int  distance_lengths[32];
+       int  distance_symbols[32];
+
+       int  code_count[8];
+       int  code_first[8];
+       int  code_pos[8];
+       int  code_lengths[19];
+       int  code_symbols[19];
+
+       int  length_count[16];
+       int  length_first[16];
+       int  length_pos[16];
+       int  length_lengths[288];
+       int  length_symbols[288];
+
+       struct huffman_set codes;
+       struct huffman_set lengths;
+       struct huffman_set distance;
+};
+
+#define NO_COMP 0
+#define FIXED_COMP 1
+#define DYNAMIC_COMP 2
+
+long decompress_block(unsigned char *dest, unsigned char *source,
+                     void *(*inflate_memcpy)(void *dest, const void *src, size n));
diff -Naur u-boot-2009.03_orig/include/linux/CVS/Entries u-boot-2009.03/include/linux/CVS/Entries
--- u-boot-2009.03_orig/include/linux/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/linux/CVS/Entries    2009-03-25 15:58:14.949800500 -0700
@@ -0,0 +1,18 @@
+D/byteorder////
+D/mtd////
+/bitops.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/crc32.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ctype.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/err.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/list.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mc146818rtc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mii.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/poison.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/posix_types.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/rbtree.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/stat.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/stddef.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/string.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/time.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/types.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
diff -Naur u-boot-2009.03_orig/include/linux/CVS/Entries.Extra u-boot-2009.03/include/linux/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/linux/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/linux/CVS/Entries.Extra      2009-03-25 15:58:14.949800500 -0700
@@ -0,0 +1,18 @@
+D/byteorder////
+D/mtd////
+/bitops.h///1238019748/
+/config.h///1238019748/
+/crc32.h///1238019748/
+/ctype.h///1238019748/
+/err.h///1238019748/
+/list.h///1238019748/
+/mc146818rtc.h///1238019748/
+/mii.h///1238019748/
+/poison.h///1238019748/
+/posix_types.h///1238019748/
+/rbtree.h///1238019748/
+/stat.h///1238019748/
+/stddef.h///1238019748/
+/string.h///1238019748/
+/time.h///1238019748/
+/types.h///1238019748/
diff -Naur u-boot-2009.03_orig/include/linux/CVS/Entries.Extra.Old u-boot-2009.03/include/linux/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/linux/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/linux/CVS/Entries.Extra.Old  2009-03-25 15:25:56.000000000 -0700
@@ -0,0 +1,18 @@
+/bitops.h///1238019748/
+/config.h///1238019748/
+/crc32.h///1238019748/
+/ctype.h///1238019748/
+/err.h///1238019748/
+/list.h///1238019748/
+/mc146818rtc.h///1238019748/
+/mii.h///1238019748/
+/poison.h///1238019748/
+/posix_types.h///1238019748/
+/rbtree.h///1238019748/
+/stat.h///1238019748/
+/stddef.h///1238019748/
+/string.h///1238019748/
+/time.h///1238019748/
+/types.h///1238019748/
+D/byteorder////
+D/mtd////
diff -Naur u-boot-2009.03_orig/include/linux/CVS/Entries.Old u-boot-2009.03/include/linux/CVS/Entries.Old
--- u-boot-2009.03_orig/include/linux/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/linux/CVS/Entries.Old        2009-03-25 15:25:56.000000000 -0700
@@ -0,0 +1,18 @@
+/bitops.h/1.1.1.1/Wed Mar 25 22:22:28 2009//
+/config.h/1.1.1.1/Wed Mar 25 22:22:28 2009//
+/crc32.h/1.1.1.1/Wed Mar 25 22:22:28 2009//
+/ctype.h/1.1.1.1/Wed Mar 25 22:22:28 2009//
+/err.h/1.1.1.1/Wed Mar 25 22:22:28 2009//
+/list.h/1.1.1.1/Wed Mar 25 22:22:28 2009//
+/mc146818rtc.h/1.1.1.1/Wed Mar 25 22:22:28 2009//
+/mii.h/1.1.1.1/Wed Mar 25 22:22:28 2009//
+/poison.h/1.1.1.1/Wed Mar 25 22:22:28 2009//
+/posix_types.h/1.1.1.1/Wed Mar 25 22:22:28 2009//
+/rbtree.h/1.1.1.1/Wed Mar 25 22:22:28 2009//
+/stat.h/1.1.1.1/Wed Mar 25 22:22:28 2009//
+/stddef.h/1.1.1.1/Wed Mar 25 22:22:28 2009//
+/string.h/1.1.1.1/Wed Mar 25 22:22:28 2009//
+/time.h/1.1.1.1/Wed Mar 25 22:22:28 2009//
+/types.h/1.1.1.1/Wed Mar 25 22:22:28 2009//
+D/byteorder////
+D/mtd////
diff -Naur u-boot-2009.03_orig/include/linux/CVS/Repository u-boot-2009.03/include/linux/CVS/Repository
--- u-boot-2009.03_orig/include/linux/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/linux/CVS/Repository 2009-03-25 15:25:55.587212500 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/linux
diff -Naur u-boot-2009.03_orig/include/linux/CVS/Root u-boot-2009.03/include/linux/CVS/Root
--- u-boot-2009.03_orig/include/linux/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/linux/CVS/Root       2009-03-25 15:25:55.587212500 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/linux/byteorder/CVS/Entries u-boot-2009.03/include/linux/byteorder/CVS/Entries
--- u-boot-2009.03_orig/include/linux/byteorder/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/linux/byteorder/CVS/Entries  2009-03-25 15:58:14.731051900 -0700
@@ -0,0 +1,5 @@
+/big_endian.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/generic.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/little_endian.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/swab.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/include/linux/byteorder/CVS/Entries.Extra u-boot-2009.03/include/linux/byteorder/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/linux/byteorder/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/linux/byteorder/CVS/Entries.Extra    2009-03-25 15:58:14.731051900 -0700
@@ -0,0 +1,4 @@
+/big_endian.h///1238019748/
+/generic.h///1238019748/
+/little_endian.h///1238019748/
+/swab.h///1238019749/
diff -Naur u-boot-2009.03_orig/include/linux/byteorder/CVS/Entries.Extra.Old u-boot-2009.03/include/linux/byteorder/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/linux/byteorder/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/linux/byteorder/CVS/Entries.Extra.Old        2009-03-25 15:25:55.000000000 -0700
@@ -0,0 +1,4 @@
+/big_endian.h///1238019748/
+/generic.h///1238019748/
+/little_endian.h///1238019748/
+/swab.h///1238019749/
diff -Naur u-boot-2009.03_orig/include/linux/byteorder/CVS/Entries.Old u-boot-2009.03/include/linux/byteorder/CVS/Entries.Old
--- u-boot-2009.03_orig/include/linux/byteorder/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/linux/byteorder/CVS/Entries.Old      2009-03-25 15:25:55.000000000 -0700
@@ -0,0 +1,5 @@
+/big_endian.h/1.1.1.1/Wed Mar 25 22:22:28 2009//
+/generic.h/1.1.1.1/Wed Mar 25 22:22:28 2009//
+/little_endian.h/1.1.1.1/Wed Mar 25 22:22:28 2009//
+/swab.h/1.1.1.1/Wed Mar 25 22:22:29 2009//
+D
diff -Naur u-boot-2009.03_orig/include/linux/byteorder/CVS/Repository u-boot-2009.03/include/linux/byteorder/CVS/Repository
--- u-boot-2009.03_orig/include/linux/byteorder/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/linux/byteorder/CVS/Repository       2009-03-25 15:25:55.837210900 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/linux/byteorder
diff -Naur u-boot-2009.03_orig/include/linux/byteorder/CVS/Root u-boot-2009.03/include/linux/byteorder/CVS/Root
--- u-boot-2009.03_orig/include/linux/byteorder/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/linux/byteorder/CVS/Root     2009-03-25 15:25:55.837210900 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/linux/mtd/CVS/Entries u-boot-2009.03/include/linux/mtd/CVS/Entries
--- u-boot-2009.03_orig/include/linux/mtd/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/linux/mtd/CVS/Entries        2009-03-31 15:01:56.528657600 -0700
@@ -0,0 +1,21 @@
+/bbm.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/blktrans.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/compat.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/doc2000.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fsl_upm.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mtd.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nand.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nand_ecc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ndfc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nftl.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/onenand.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/onenand_regs.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ubi.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/inftl-user.h/1.1.1.1/Tue Mar 31 22:01:56 2009//T1.1.1.1
+/jffs2-user.h/1.1.1.1/Tue Mar 31 22:01:56 2009//T1.1.1.1
+/mtd-abi.h/1.1.1.1/Tue Mar 31 22:01:56 2009//T1.1.1.1
+/nand_ids.h/1.1.1.1/Tue Mar 31 22:01:56 2009//T1.1.1.1
+/nand_legacy.h/1.1.1.1/Tue Mar 31 22:01:56 2009//T1.1.1.1
+/nftl-user.h/1.1.1.1/Tue Mar 31 22:01:56 2009//T1.1.1.1
+/partitions.h/1.1.1.1/Tue Mar 31 22:01:56 2009//T1.1.1.1
+D
diff -Naur u-boot-2009.03_orig/include/linux/mtd/CVS/Entries.Extra u-boot-2009.03/include/linux/mtd/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/linux/mtd/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/linux/mtd/CVS/Entries.Extra  2009-03-31 15:01:56.528657600 -0700
@@ -0,0 +1,20 @@
+/bbm.h///1238019749/
+/blktrans.h///1238019749/
+/compat.h///1238019749/
+/doc2000.h///1238019749/
+/fsl_upm.h///1238019749/
+/mtd.h///1238019749/
+/nand.h///1238019749/
+/nand_ecc.h///1238019749/
+/ndfc.h///1238019749/
+/nftl.h///1238019749/
+/onenand.h///1238019749/
+/onenand_regs.h///1238019749/
+/ubi.h///1238019749/
+/inftl-user.h///1238019749/
+/jffs2-user.h///1238019749/
+/mtd-abi.h///1238019749/
+/nand_ids.h///1238019749/
+/nand_legacy.h///1238019749/
+/nftl-user.h///1238019749/
+/partitions.h///1238019749/
diff -Naur u-boot-2009.03_orig/include/linux/mtd/CVS/Entries.Extra.Old u-boot-2009.03/include/linux/mtd/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/linux/mtd/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/linux/mtd/CVS/Entries.Extra.Old      2009-03-25 17:51:53.000000000 -0700
@@ -0,0 +1,20 @@
+/bbm.h///1238019749/
+/blktrans.h///1238019749/
+/compat.h///1238019749/
+/doc2000.h///1238019749/
+/fsl_upm.h///1238019749/
+/mtd.h///1238019749/
+/nand.h///1238019749/
+/nand_ecc.h///1238019749/
+/ndfc.h///1238019749/
+/nftl.h///1238019749/
+/onenand.h///1238019749/
+/onenand_regs.h///1238019749/
+/ubi.h///1238019749/
+/inftl-user.h///1238028712/
+/jffs2-user.h///1238028712/
+/mtd-abi.h///1238028712/
+/nand_ids.h///1238028712/
+/nand_legacy.h///1238028713/
+/nftl-user.h///1238028713/
+/partitions.h///1238028713/
diff -Naur u-boot-2009.03_orig/include/linux/mtd/CVS/Entries.Old u-boot-2009.03/include/linux/mtd/CVS/Entries.Old
--- u-boot-2009.03_orig/include/linux/mtd/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/linux/mtd/CVS/Entries.Old    2009-03-25 17:51:53.000000000 -0700
@@ -0,0 +1,21 @@
+/bbm.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/blktrans.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/compat.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/doc2000.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fsl_upm.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mtd.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nand.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nand_ecc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ndfc.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nftl.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/onenand.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/onenand_regs.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ubi.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/inftl-user.h/1.2/Thu Mar 26 00:51:52 2009//
+/jffs2-user.h/1.2/Thu Mar 26 00:51:52 2009//
+/mtd-abi.h/1.2/Thu Mar 26 00:51:52 2009//
+/nand_ids.h/1.2/Thu Mar 26 00:51:52 2009//
+/nand_legacy.h/1.2/Thu Mar 26 00:51:53 2009//
+/nftl-user.h/1.2/Thu Mar 26 00:51:53 2009//
+/partitions.h/1.2/Thu Mar 26 00:51:53 2009//
+D
diff -Naur u-boot-2009.03_orig/include/linux/mtd/CVS/Repository u-boot-2009.03/include/linux/mtd/CVS/Repository
--- u-boot-2009.03_orig/include/linux/mtd/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/linux/mtd/CVS/Repository     2009-03-25 15:25:55.962210100 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/linux/mtd
diff -Naur u-boot-2009.03_orig/include/linux/mtd/CVS/Root u-boot-2009.03/include/linux/mtd/CVS/Root
--- u-boot-2009.03_orig/include/linux/mtd/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/linux/mtd/CVS/Root   2009-03-25 15:25:55.962210100 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/linux/mtd/inftl-user.h u-boot-2009.03/include/linux/mtd/inftl-user.h
--- u-boot-2009.03_orig/include/linux/mtd/inftl-user.h  2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/include/linux/mtd/inftl-user.h       2009-03-31 15:01:56.216161600 -0700
@@ -1,89 +1,89 @@
-/*
- * $Id: inftl-user.h,v 1.2 2005/11/07 11:14:56 gleixner Exp $
- *
- * Parts of INFTL headers shared with userspace
- *
- */
-
-#ifndef __MTD_INFTL_USER_H__
-#define __MTD_INFTL_USER_H__
-
-#define        OSAK_VERSION    0x5120
-#define        PERCENTUSED     98
-
-#define        SECTORSIZE      512
-
-/* Block Control Information */
-
-struct inftl_bci {
-       uint8_t ECCsig[6];
-       uint8_t Status;
-       uint8_t Status1;
-} __attribute__((packed));
-
-struct inftl_unithead1 {
-       uint16_t virtualUnitNo;
-       uint16_t prevUnitNo;
-       uint8_t ANAC;
-       uint8_t NACs;
-       uint8_t parityPerField;
-       uint8_t discarded;
-} __attribute__((packed));
-
-struct inftl_unithead2 {
-       uint8_t parityPerField;
-       uint8_t ANAC;
-       uint16_t prevUnitNo;
-       uint16_t virtualUnitNo;
-       uint8_t NACs;
-       uint8_t discarded;
-} __attribute__((packed));
-
-struct inftl_unittail {
-       uint8_t Reserved[4];
-       uint16_t EraseMark;
-       uint16_t EraseMark1;
-} __attribute__((packed));
-
-union inftl_uci {
-       struct inftl_unithead1 a;
-       struct inftl_unithead2 b;
-       struct inftl_unittail c;
-};
-
-struct inftl_oob {
-       struct inftl_bci b;
-       union inftl_uci u;
-};
-
-
-/* INFTL Media Header */
-
-struct INFTLPartition {
-       __u32 virtualUnits;
-       __u32 firstUnit;
-       __u32 lastUnit;
-       __u32 flags;
-       __u32 spareUnits;
-       __u32 Reserved0;
-       __u32 Reserved1;
-} __attribute__((packed));
-
-struct INFTLMediaHeader {
-       char bootRecordID[8];
-       __u32 NoOfBootImageBlocks;
-       __u32 NoOfBinaryPartitions;
-       __u32 NoOfBDTLPartitions;
-       __u32 BlockMultiplierBits;
-       __u32 FormatFlags;
-       __u32 OsakVersion;
-       __u32 PercentUsed;
-       struct INFTLPartition Partitions[4];
-} __attribute__((packed));
-
-/* Partition flag types */
-#define        INFTL_BINARY    0x20000000
-#define        INFTL_BDTL      0x40000000
-#define        INFTL_LAST      0x80000000
-
-#endif /* __MTD_INFTL_USER_H__ */
+/*
+ * $Id: inftl-user.h,v 1.1.1.1 2009/03/25 22:22:29 kenagy Exp $
+ *
+ * Parts of INFTL headers shared with userspace
+ *
+ */
+
+#ifndef __MTD_INFTL_USER_H__
+#define __MTD_INFTL_USER_H__
+
+#define        OSAK_VERSION    0x5120
+#define        PERCENTUSED     98
+
+#define        SECTORSIZE      512
+
+/* Block Control Information */
+
+struct inftl_bci {
+       uint8_t ECCsig[6];
+       uint8_t Status;
+       uint8_t Status1;
+} __attribute__((packed));
+
+struct inftl_unithead1 {
+       uint16_t virtualUnitNo;
+       uint16_t prevUnitNo;
+       uint8_t ANAC;
+       uint8_t NACs;
+       uint8_t parityPerField;
+       uint8_t discarded;
+} __attribute__((packed));
+
+struct inftl_unithead2 {
+       uint8_t parityPerField;
+       uint8_t ANAC;
+       uint16_t prevUnitNo;
+       uint16_t virtualUnitNo;
+       uint8_t NACs;
+       uint8_t discarded;
+} __attribute__((packed));
+
+struct inftl_unittail {
+       uint8_t Reserved[4];
+       uint16_t EraseMark;
+       uint16_t EraseMark1;
+} __attribute__((packed));
+
+union inftl_uci {
+       struct inftl_unithead1 a;
+       struct inftl_unithead2 b;
+       struct inftl_unittail c;
+};
+
+struct inftl_oob {
+       struct inftl_bci b;
+       union inftl_uci u;
+};
+
+
+/* INFTL Media Header */
+
+struct INFTLPartition {
+       __u32 virtualUnits;
+       __u32 firstUnit;
+       __u32 lastUnit;
+       __u32 flags;
+       __u32 spareUnits;
+       __u32 Reserved0;
+       __u32 Reserved1;
+} __attribute__((packed));
+
+struct INFTLMediaHeader {
+       char bootRecordID[8];
+       __u32 NoOfBootImageBlocks;
+       __u32 NoOfBinaryPartitions;
+       __u32 NoOfBDTLPartitions;
+       __u32 BlockMultiplierBits;
+       __u32 FormatFlags;
+       __u32 OsakVersion;
+       __u32 PercentUsed;
+       struct INFTLPartition Partitions[4];
+} __attribute__((packed));
+
+/* Partition flag types */
+#define        INFTL_BINARY    0x20000000
+#define        INFTL_BDTL      0x40000000
+#define        INFTL_LAST      0x80000000
+
+#endif /* __MTD_INFTL_USER_H__ */
diff -Naur u-boot-2009.03_orig/include/linux/mtd/jffs2-user.h u-boot-2009.03/include/linux/mtd/jffs2-user.h
--- u-boot-2009.03_orig/include/linux/mtd/jffs2-user.h  2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/include/linux/mtd/jffs2-user.h       2009-03-31 15:01:56.372409600 -0700
@@ -1,35 +1,35 @@
-/*
- * $Id: jffs2-user.h,v 1.1 2004/05/05 11:57:54 dwmw2 Exp $
- *
- * JFFS2 definitions for use in user space only
- */
-
-#ifndef __JFFS2_USER_H__
-#define __JFFS2_USER_H__
-
-/* This file is blessed for inclusion by userspace */
-#include <linux/jffs2.h>
-#include <endian.h>
-#include <byteswap.h>
-
-#undef cpu_to_je16
-#undef cpu_to_je32
-#undef cpu_to_jemode
-#undef je16_to_cpu
-#undef je32_to_cpu
-#undef jemode_to_cpu
-
-extern int target_endian;
-
-#define t16(x) ({ uint16_t __b = (x); (target_endian==__BYTE_ORDER)?__b:bswap_16(__b); })
-#define t32(x) ({ uint32_t __b = (x); (target_endian==__BYTE_ORDER)?__b:bswap_32(__b); })
-
-#define cpu_to_je16(x) ((jint16_t){t16(x)})
-#define cpu_to_je32(x) ((jint32_t){t32(x)})
-#define cpu_to_jemode(x) ((jmode_t){t32(x)})
-
-#define je16_to_cpu(x) (t16((x).v16))
-#define je32_to_cpu(x) (t32((x).v32))
-#define jemode_to_cpu(x) (t32((x).m))
-
-#endif /* __JFFS2_USER_H__ */
+/*
+ * $Id: jffs2-user.h,v 1.1.1.1 2009/03/25 22:22:29 kenagy Exp $
+ *
+ * JFFS2 definitions for use in user space only
+ */
+
+#ifndef __JFFS2_USER_H__
+#define __JFFS2_USER_H__
+
+/* This file is blessed for inclusion by userspace */
+#include <linux/jffs2.h>
+#include <endian.h>
+#include <byteswap.h>
+
+#undef cpu_to_je16
+#undef cpu_to_je32
+#undef cpu_to_jemode
+#undef je16_to_cpu
+#undef je32_to_cpu
+#undef jemode_to_cpu
+
+extern int target_endian;
+
+#define t16(x) ({ uint16_t __b = (x); (target_endian==__BYTE_ORDER)?__b:bswap_16(__b); })
+#define t32(x) ({ uint32_t __b = (x); (target_endian==__BYTE_ORDER)?__b:bswap_32(__b); })
+
+#define cpu_to_je16(x) ((jint16_t){t16(x)})
+#define cpu_to_je32(x) ((jint32_t){t32(x)})
+#define cpu_to_jemode(x) ((jmode_t){t32(x)})
+
+#define je16_to_cpu(x) (t16((x).v16))
+#define je32_to_cpu(x) (t32((x).v32))
+#define jemode_to_cpu(x) (t32((x).m))
+
+#endif /* __JFFS2_USER_H__ */
diff -Naur u-boot-2009.03_orig/include/linux/mtd/mtd-abi.h u-boot-2009.03/include/linux/mtd/mtd-abi.h
--- u-boot-2009.03_orig/include/linux/mtd/mtd-abi.h     2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/include/linux/mtd/mtd-abi.h  2009-03-31 15:01:56.403659200 -0700
@@ -1,156 +1,156 @@
-/*
- * $Id: mtd-abi.h,v 1.13 2005/11/07 11:14:56 gleixner Exp $
- *
- * Portions of MTD ABI definition which are shared by kernel and user space
- */
-
-#ifndef __MTD_ABI_H__
-#define __MTD_ABI_H__
-
-#if 1
-#include <linux/mtd/compat.h>
-#endif
-
-struct erase_info_user {
-       uint32_t start;
-       uint32_t length;
-};
-
-struct mtd_oob_buf {
-       uint32_t start;
-       uint32_t length;
-       unsigned char __user *ptr;
-};
-
-#define MTD_ABSENT             0
-#define MTD_RAM                        1
-#define MTD_ROM                        2
-#define MTD_NORFLASH           3
-#define MTD_NANDFLASH          4
-#define MTD_DATAFLASH          6
-#define MTD_UBIVOLUME          7
-
-#define MTD_WRITEABLE          0x400   /* Device is writeable */
-#define MTD_BIT_WRITEABLE      0x800   /* Single bits can be flipped */
-#define MTD_NO_ERASE           0x1000  /* No erase necessary */
-#define MTD_STUPID_LOCK                0x2000  /* Always locked after reset */
-
-/* Some common devices / combinations of capabilities */
-#define MTD_CAP_ROM            0
-#define MTD_CAP_RAM            (MTD_WRITEABLE | MTD_BIT_WRITEABLE | MTD_NO_ERASE)
-#define MTD_CAP_NORFLASH       (MTD_WRITEABLE | MTD_BIT_WRITEABLE)
-#define MTD_CAP_NANDFLASH      (MTD_WRITEABLE)
-
-/* ECC byte placement */
-#define MTD_NANDECC_OFF                0        /* Switch off ECC (Not recommended) */
-#define MTD_NANDECC_PLACE      1       /* Use the given placement in the structure (YAFFS1 legacy mode) */
-#define MTD_NANDECC_AUTOPLACE  2       /* Use the default placement scheme */
-#define MTD_NANDECC_PLACEONLY  3       /* Use the given placement in the structure (Do not store ecc result on read) */
-#define MTD_NANDECC_AUTOPL_USR 4       /* Use the given autoplacement scheme rather than using the default */
-
-/* OTP mode selection */
-#define MTD_OTP_OFF            0
-#define MTD_OTP_FACTORY                1
-#define MTD_OTP_USER           2
-
-struct mtd_info_user {
-       uint8_t type;
-       uint32_t flags;
-       uint32_t size;                  /* Total size of the MTD */
-       uint32_t erasesize;
-       uint32_t writesize;
-       uint32_t oobsize;               /* Amount of OOB data per block (e.g. 16) */
-       /* The below two fields are obsolete and broken, do not use them
-        * (TODO: remove at some point) */
-       uint32_t ecctype;
-       uint32_t eccsize;
-};
-
-struct region_info_user {
-       uint32_t offset;                /* At which this region starts,
-                                        * from the beginning of the MTD */
-       uint32_t erasesize;             /* For this region */
-       uint32_t numblocks;             /* Number of blocks in this region */
-       uint32_t regionindex;
-};
-
-struct otp_info {
-       uint32_t start;
-       uint32_t length;
-       uint32_t locked;
-};
-
-#define MEMGETINFO             _IOR('M', 1, struct mtd_info_user)
-#define MEMERASE               _IOW('M', 2, struct erase_info_user)
-#define MEMWRITEOOB            _IOWR('M', 3, struct mtd_oob_buf)
-#define MEMREADOOB             _IOWR('M', 4, struct mtd_oob_buf)
-#define MEMLOCK                        _IOW('M', 5, struct erase_info_user)
-#define MEMUNLOCK              _IOW('M', 6, struct erase_info_user)
-#define MEMGETREGIONCOUNT      _IOR('M', 7, int)
-#define MEMGETREGIONINFO       _IOWR('M', 8, struct region_info_user)
-#define MEMSETOOBSEL           _IOW('M', 9, struct nand_oobinfo)
-#define MEMGETOOBSEL           _IOR('M', 10, struct nand_oobinfo)
-#define MEMGETBADBLOCK         _IOW('M', 11, loff_t)
-#define MEMSETBADBLOCK         _IOW('M', 12, loff_t)
-#define OTPSELECT              _IOR('M', 13, int)
-#define OTPGETREGIONCOUNT      _IOW('M', 14, int)
-#define OTPGETREGIONINFO       _IOW('M', 15, struct otp_info)
-#define OTPLOCK                        _IOR('M', 16, struct otp_info)
-#define ECCGETLAYOUT           _IOR('M', 17, struct nand_ecclayout)
-#define ECCGETSTATS            _IOR('M', 18, struct mtd_ecc_stats)
-#define MTDFILEMODE            _IO('M', 19)
-
-/*
- * Obsolete legacy interface. Keep it in order not to break userspace
- * interfaces
- */
-struct nand_oobinfo {
-       uint32_t useecc;
-       uint32_t eccbytes;
-       uint32_t oobfree[8][2];
-       uint32_t eccpos[48];
-};
-
-struct nand_oobfree {
-       uint32_t offset;
-       uint32_t length;
-};
-
-#define MTD_MAX_OOBFREE_ENTRIES        8
-/*
- * ECC layout control structure. Exported to userspace for
- * diagnosis and to allow creation of raw images
- */
-struct nand_ecclayout {
-       uint32_t eccbytes;
-       uint32_t eccpos[64];
-       uint32_t oobavail;
-       struct nand_oobfree oobfree[MTD_MAX_OOBFREE_ENTRIES];
-};
-
-/**
- * struct mtd_ecc_stats - error correction stats
- *
- * @corrected: number of corrected bits
- * @failed:    number of uncorrectable errors
- * @badblocks: number of bad blocks in this partition
- * @bbtblocks: number of blocks reserved for bad block tables
- */
-struct mtd_ecc_stats {
-       uint32_t corrected;
-       uint32_t failed;
-       uint32_t badblocks;
-       uint32_t bbtblocks;
-};
-
-/*
- * Read/write file modes for access to MTD
- */
-enum mtd_file_modes {
-       MTD_MODE_NORMAL = MTD_OTP_OFF,
-       MTD_MODE_OTP_FACTORY = MTD_OTP_FACTORY,
-       MTD_MODE_OTP_USER = MTD_OTP_USER,
-       MTD_MODE_RAW,
-};
-
-#endif /* __MTD_ABI_H__ */
+/*
+ * $Id: mtd-abi.h,v 1.1.1.1 2009/03/25 22:22:29 kenagy Exp $
+ *
+ * Portions of MTD ABI definition which are shared by kernel and user space
+ */
+
+#ifndef __MTD_ABI_H__
+#define __MTD_ABI_H__
+
+#if 1
+#include <linux/mtd/compat.h>
+#endif
+
+struct erase_info_user {
+       uint32_t start;
+       uint32_t length;
+};
+
+struct mtd_oob_buf {
+       uint32_t start;
+       uint32_t length;
+       unsigned char __user *ptr;
+};
+
+#define MTD_ABSENT             0
+#define MTD_RAM                        1
+#define MTD_ROM                        2
+#define MTD_NORFLASH           3
+#define MTD_NANDFLASH          4
+#define MTD_DATAFLASH          6
+#define MTD_UBIVOLUME          7
+
+#define MTD_WRITEABLE          0x400   /* Device is writeable */
+#define MTD_BIT_WRITEABLE      0x800   /* Single bits can be flipped */
+#define MTD_NO_ERASE           0x1000  /* No erase necessary */
+#define MTD_STUPID_LOCK                0x2000  /* Always locked after reset */
+
+/* Some common devices / combinations of capabilities */
+#define MTD_CAP_ROM            0
+#define MTD_CAP_RAM            (MTD_WRITEABLE | MTD_BIT_WRITEABLE | MTD_NO_ERASE)
+#define MTD_CAP_NORFLASH       (MTD_WRITEABLE | MTD_BIT_WRITEABLE)
+#define MTD_CAP_NANDFLASH      (MTD_WRITEABLE)
+
+/* ECC byte placement */
+#define MTD_NANDECC_OFF                0        /* Switch off ECC (Not recommended) */
+#define MTD_NANDECC_PLACE      1       /* Use the given placement in the structure (YAFFS1 legacy mode) */
+#define MTD_NANDECC_AUTOPLACE  2       /* Use the default placement scheme */
+#define MTD_NANDECC_PLACEONLY  3       /* Use the given placement in the structure (Do not store ecc result on read) */
+#define MTD_NANDECC_AUTOPL_USR 4       /* Use the given autoplacement scheme rather than using the default */
+
+/* OTP mode selection */
+#define MTD_OTP_OFF            0
+#define MTD_OTP_FACTORY                1
+#define MTD_OTP_USER           2
+
+struct mtd_info_user {
+       uint8_t type;
+       uint32_t flags;
+       uint32_t size;                  /* Total size of the MTD */
+       uint32_t erasesize;
+       uint32_t writesize;
+       uint32_t oobsize;               /* Amount of OOB data per block (e.g. 16) */
+       /* The below two fields are obsolete and broken, do not use them
+        * (TODO: remove at some point) */
+       uint32_t ecctype;
+       uint32_t eccsize;
+};
+
+struct region_info_user {
+       uint32_t offset;                /* At which this region starts,
+                                        * from the beginning of the MTD */
+       uint32_t erasesize;             /* For this region */
+       uint32_t numblocks;             /* Number of blocks in this region */
+       uint32_t regionindex;
+};
+
+struct otp_info {
+       uint32_t start;
+       uint32_t length;
+       uint32_t locked;
+};
+
+#define MEMGETINFO             _IOR('M', 1, struct mtd_info_user)
+#define MEMERASE               _IOW('M', 2, struct erase_info_user)
+#define MEMWRITEOOB            _IOWR('M', 3, struct mtd_oob_buf)
+#define MEMREADOOB             _IOWR('M', 4, struct mtd_oob_buf)
+#define MEMLOCK                        _IOW('M', 5, struct erase_info_user)
+#define MEMUNLOCK              _IOW('M', 6, struct erase_info_user)
+#define MEMGETREGIONCOUNT      _IOR('M', 7, int)
+#define MEMGETREGIONINFO       _IOWR('M', 8, struct region_info_user)
+#define MEMSETOOBSEL           _IOW('M', 9, struct nand_oobinfo)
+#define MEMGETOOBSEL           _IOR('M', 10, struct nand_oobinfo)
+#define MEMGETBADBLOCK         _IOW('M', 11, loff_t)
+#define MEMSETBADBLOCK         _IOW('M', 12, loff_t)
+#define OTPSELECT              _IOR('M', 13, int)
+#define OTPGETREGIONCOUNT      _IOW('M', 14, int)
+#define OTPGETREGIONINFO       _IOW('M', 15, struct otp_info)
+#define OTPLOCK                        _IOR('M', 16, struct otp_info)
+#define ECCGETLAYOUT           _IOR('M', 17, struct nand_ecclayout)
+#define ECCGETSTATS            _IOR('M', 18, struct mtd_ecc_stats)
+#define MTDFILEMODE            _IO('M', 19)
+
+/*
+ * Obsolete legacy interface. Keep it in order not to break userspace
+ * interfaces
+ */
+struct nand_oobinfo {
+       uint32_t useecc;
+       uint32_t eccbytes;
+       uint32_t oobfree[8][2];
+       uint32_t eccpos[48];
+};
+
+struct nand_oobfree {
+       uint32_t offset;
+       uint32_t length;
+};
+
+#define MTD_MAX_OOBFREE_ENTRIES        8
+/*
+ * ECC layout control structure. Exported to userspace for
+ * diagnosis and to allow creation of raw images
+ */
+struct nand_ecclayout {
+       uint32_t eccbytes;
+       uint32_t eccpos[64];
+       uint32_t oobavail;
+       struct nand_oobfree oobfree[MTD_MAX_OOBFREE_ENTRIES];
+};
+
+/**
+ * struct mtd_ecc_stats - error correction stats
+ *
+ * @corrected: number of corrected bits
+ * @failed:    number of uncorrectable errors
+ * @badblocks: number of bad blocks in this partition
+ * @bbtblocks: number of blocks reserved for bad block tables
+ */
+struct mtd_ecc_stats {
+       uint32_t corrected;
+       uint32_t failed;
+       uint32_t badblocks;
+       uint32_t bbtblocks;
+};
+
+/*
+ * Read/write file modes for access to MTD
+ */
+enum mtd_file_modes {
+       MTD_MODE_NORMAL = MTD_OTP_OFF,
+       MTD_MODE_OTP_FACTORY = MTD_OTP_FACTORY,
+       MTD_MODE_OTP_USER = MTD_OTP_USER,
+       MTD_MODE_RAW,
+};
+
+#endif /* __MTD_ABI_H__ */
diff -Naur u-boot-2009.03_orig/include/linux/mtd/nand_ids.h u-boot-2009.03/include/linux/mtd/nand_ids.h
--- u-boot-2009.03_orig/include/linux/mtd/nand_ids.h    2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/include/linux/mtd/nand_ids.h 2009-03-31 15:01:56.434908800 -0700
@@ -1,60 +1,60 @@
-/*
- *  u-boot/include/linux/mtd/nand_ids.h
- *
- *  Copyright (c) 2000 David Woodhouse <dwmw2@mvhi.com>
- *                     Steven J. Hill <sjhill@cotw.com>
- *
- * $Id: nand_ids.h,v 1.1 2000/10/13 16:16:26 mdeans Exp $
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- *  Info:
- *   Contains standard defines and IDs for NAND flash devices
- *
- *  Changelog:
- *   01-31-2000 DMW     Created
- *   09-18-2000 SJH     Moved structure out of the Disk-On-Chip drivers
- *                     so it can be used by other NAND flash device
- *                     drivers. I also changed the copyright since none
- *                     of the original contents of this file are specific
- *                     to DoC devices. David can whack me with a baseball
- *                     bat later if I did something naughty.
- *   10-11-2000 SJH     Added private NAND flash structure for driver
- *   2000-10-13 BE      Moved out of 'nand.h' - avoids duplication.
- */
-
-#ifndef __LINUX_MTD_NAND_IDS_H
-#define __LINUX_MTD_NAND_IDS_H
-
-#ifndef CONFIG_NAND_LEGACY
-#error This module is for the legacy NAND support
-#endif
-
-static struct nand_flash_dev nand_flash_ids[] = {
-       {"Toshiba TC5816BDC",     NAND_MFR_TOSHIBA, 0x64, 21, 1, 2, 0x1000, 0},
-       {"Toshiba TC5832DC",      NAND_MFR_TOSHIBA, 0x6b, 22, 0, 2, 0x2000, 0},
-       {"Toshiba TH58V128DC",    NAND_MFR_TOSHIBA, 0x73, 24, 0, 2, 0x4000, 0},
-       {"Toshiba TC58256FT/DC",  NAND_MFR_TOSHIBA, 0x75, 25, 0, 2, 0x4000, 0},
-       {"Toshiba TH58512FT",     NAND_MFR_TOSHIBA, 0x76, 26, 0, 3, 0x4000, 0},
-       {"Toshiba TC58V32DC",     NAND_MFR_TOSHIBA, 0xe5, 22, 0, 2, 0x2000, 0},
-       {"Toshiba TC58V64AFT/DC", NAND_MFR_TOSHIBA, 0xe6, 23, 0, 2, 0x2000, 0},
-       {"Toshiba TC58V16BDC",    NAND_MFR_TOSHIBA, 0xea, 21, 1, 2, 0x1000, 0},
-       {"Toshiba TH58100FT",     NAND_MFR_TOSHIBA, 0x79, 27, 0, 3, 0x4000, 0},
-       {"Samsung KM29N16000",    NAND_MFR_SAMSUNG, 0x64, 21, 1, 2, 0x1000, 0},
-       {"Samsung unknown 4Mb",   NAND_MFR_SAMSUNG, 0x6b, 22, 0, 2, 0x2000, 0},
-       {"Samsung KM29U128T",     NAND_MFR_SAMSUNG, 0x73, 24, 0, 2, 0x4000, 0},
-       {"Samsung KM29U256T",     NAND_MFR_SAMSUNG, 0x75, 25, 0, 2, 0x4000, 0},
-       {"Samsung unknown 64Mb",  NAND_MFR_SAMSUNG, 0x76, 26, 0, 3, 0x4000, 0},
-       {"Samsung KM29W32000",    NAND_MFR_SAMSUNG, 0xe3, 22, 0, 2, 0x2000, 0},
-       {"Samsung unknown 4Mb",   NAND_MFR_SAMSUNG, 0xe5, 22, 0, 2, 0x2000, 0},
-       {"Samsung KM29U64000",    NAND_MFR_SAMSUNG, 0xe6, 23, 0, 2, 0x2000, 0},
-       {"Samsung KM29W16000",    NAND_MFR_SAMSUNG, 0xea, 21, 1, 2, 0x1000, 0},
-       {"Samsung K9F5616Q0C",    NAND_MFR_SAMSUNG, 0x45, 25, 0, 2, 0x4000, 1},
-       {"Samsung K9K1216Q0C",    NAND_MFR_SAMSUNG, 0x46, 26, 0, 3, 0x4000, 1},
-       {"Samsung K9F1G08U0M",    NAND_MFR_SAMSUNG, 0xf1, 27, 0, 2, 0, 0},
-       {NULL,}
-};
-
-#endif /* __LINUX_MTD_NAND_IDS_H */
+/*
+ *  u-boot/include/linux/mtd/nand_ids.h
+ *
+ *  Copyright (c) 2000 David Woodhouse <dwmw2@mvhi.com>
+ *                     Steven J. Hill <sjhill@cotw.com>
+ *
+ * $Id: nand_ids.h,v 1.1.1.1 2009/03/25 22:22:29 kenagy Exp $
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ *  Info:
+ *   Contains standard defines and IDs for NAND flash devices
+ *
+ *  Changelog:
+ *   01-31-2000 DMW     Created
+ *   09-18-2000 SJH     Moved structure out of the Disk-On-Chip drivers
+ *                     so it can be used by other NAND flash device
+ *                     drivers. I also changed the copyright since none
+ *                     of the original contents of this file are specific
+ *                     to DoC devices. David can whack me with a baseball
+ *                     bat later if I did something naughty.
+ *   10-11-2000 SJH     Added private NAND flash structure for driver
+ *   2000-10-13 BE      Moved out of 'nand.h' - avoids duplication.
+ */
+
+#ifndef __LINUX_MTD_NAND_IDS_H
+#define __LINUX_MTD_NAND_IDS_H
+
+#ifndef CONFIG_NAND_LEGACY
+#error This module is for the legacy NAND support
+#endif
+
+static struct nand_flash_dev nand_flash_ids[] = {
+       {"Toshiba TC5816BDC",     NAND_MFR_TOSHIBA, 0x64, 21, 1, 2, 0x1000, 0},
+       {"Toshiba TC5832DC",      NAND_MFR_TOSHIBA, 0x6b, 22, 0, 2, 0x2000, 0},
+       {"Toshiba TH58V128DC",    NAND_MFR_TOSHIBA, 0x73, 24, 0, 2, 0x4000, 0},
+       {"Toshiba TC58256FT/DC",  NAND_MFR_TOSHIBA, 0x75, 25, 0, 2, 0x4000, 0},
+       {"Toshiba TH58512FT",     NAND_MFR_TOSHIBA, 0x76, 26, 0, 3, 0x4000, 0},
+       {"Toshiba TC58V32DC",     NAND_MFR_TOSHIBA, 0xe5, 22, 0, 2, 0x2000, 0},
+       {"Toshiba TC58V64AFT/DC", NAND_MFR_TOSHIBA, 0xe6, 23, 0, 2, 0x2000, 0},
+       {"Toshiba TC58V16BDC",    NAND_MFR_TOSHIBA, 0xea, 21, 1, 2, 0x1000, 0},
+       {"Toshiba TH58100FT",     NAND_MFR_TOSHIBA, 0x79, 27, 0, 3, 0x4000, 0},
+       {"Samsung KM29N16000",    NAND_MFR_SAMSUNG, 0x64, 21, 1, 2, 0x1000, 0},
+       {"Samsung unknown 4Mb",   NAND_MFR_SAMSUNG, 0x6b, 22, 0, 2, 0x2000, 0},
+       {"Samsung KM29U128T",     NAND_MFR_SAMSUNG, 0x73, 24, 0, 2, 0x4000, 0},
+       {"Samsung KM29U256T",     NAND_MFR_SAMSUNG, 0x75, 25, 0, 2, 0x4000, 0},
+       {"Samsung unknown 64Mb",  NAND_MFR_SAMSUNG, 0x76, 26, 0, 3, 0x4000, 0},
+       {"Samsung KM29W32000",    NAND_MFR_SAMSUNG, 0xe3, 22, 0, 2, 0x2000, 0},
+       {"Samsung unknown 4Mb",   NAND_MFR_SAMSUNG, 0xe5, 22, 0, 2, 0x2000, 0},
+       {"Samsung KM29U64000",    NAND_MFR_SAMSUNG, 0xe6, 23, 0, 2, 0x2000, 0},
+       {"Samsung KM29W16000",    NAND_MFR_SAMSUNG, 0xea, 21, 1, 2, 0x1000, 0},
+       {"Samsung K9F5616Q0C",    NAND_MFR_SAMSUNG, 0x45, 25, 0, 2, 0x4000, 1},
+       {"Samsung K9K1216Q0C",    NAND_MFR_SAMSUNG, 0x46, 26, 0, 3, 0x4000, 1},
+       {"Samsung K9F1G08U0M",    NAND_MFR_SAMSUNG, 0xf1, 27, 0, 2, 0, 0},
+       {NULL,}
+};
+
+#endif /* __LINUX_MTD_NAND_IDS_H */
diff -Naur u-boot-2009.03_orig/include/linux/mtd/nand_legacy.h u-boot-2009.03/include/linux/mtd/nand_legacy.h
--- u-boot-2009.03_orig/include/linux/mtd/nand_legacy.h 2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/include/linux/mtd/nand_legacy.h      2009-03-31 15:01:56.466158400 -0700
@@ -1,196 +1,196 @@
-/*
- *  linux/include/linux/mtd/nand.h
- *
- *  Copyright (c) 2000 David Woodhouse <dwmw2@mvhi.com>
- *                     Steven J. Hill <sjhill@cotw.com>
- *                    Thomas Gleixner <gleixner@autronix.de>
- *
- * $Id: nand.h,v 1.7 2003/07/24 23:30:46 a0384864 Exp $
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- *  Info:
- *   Contains standard defines and IDs for NAND flash devices
- *
- *  Changelog:
- *   01-31-2000 DMW     Created
- *   09-18-2000 SJH     Moved structure out of the Disk-On-Chip drivers
- *                     so it can be used by other NAND flash device
- *                     drivers. I also changed the copyright since none
- *                     of the original contents of this file are specific
- *                     to DoC devices. David can whack me with a baseball
- *                     bat later if I did something naughty.
- *   10-11-2000 SJH     Added private NAND flash structure for driver
- *   10-24-2000 SJH     Added prototype for 'nand_scan' function
- *   10-29-2001 TG     changed nand_chip structure to support
- *                     hardwarespecific function for accessing control lines
- *   02-21-2002 TG     added support for different read/write adress and
- *                     ready/busy line access function
- *   02-26-2002 TG     added chip_delay to nand_chip structure to optimize
- *                     command delay times for different chips
- *   04-28-2002 TG     OOB config defines moved from nand.c to avoid duplicate
- *                     defines in jffs2/wbuf.c
- */
-#ifndef __LINUX_MTD_NAND_LEGACY_H
-#define __LINUX_MTD_NAND_LEGACY_H
-
-#ifndef CONFIG_NAND_LEGACY
-#error This module is for the legacy NAND support
-#endif
-
-/* The maximum number of NAND chips in an array */
-#ifndef CONFIG_SYS_NAND_MAX_CHIPS
-#define CONFIG_SYS_NAND_MAX_CHIPS      1
-#endif
-
-/*
- * Standard NAND flash commands
- */
-#define NAND_CMD_READ0         0
-#define NAND_CMD_READ1         1
-#define NAND_CMD_PAGEPROG      0x10
-#define NAND_CMD_READOOB       0x50
-#define NAND_CMD_ERASE1                0x60
-#define NAND_CMD_STATUS                0x70
-#define NAND_CMD_SEQIN         0x80
-#define NAND_CMD_READID                0x90
-#define NAND_CMD_ERASE2                0xd0
-#define NAND_CMD_RESET         0xff
-
-/*
- * NAND Private Flash Chip Data
- *
- * Structure overview:
- *
- *  IO_ADDR - address to access the 8 I/O lines of the flash device
- *
- *  hwcontrol - hardwarespecific function for accesing control-lines
- *
- *  dev_ready - hardwarespecific function for accesing device ready/busy line
- *
- *  chip_lock - spinlock used to protect access to this structure
- *
- *  wq - wait queue to sleep on if a NAND operation is in progress
- *
- *  state - give the current state of the NAND device
- *
- *  page_shift - number of address bits in a page (column address bits)
- *
- *  data_buf - data buffer passed to/from MTD user modules
- *
- *  data_cache - data cache for redundant page access and shadow for
- *              ECC failure
- *
- *  ecc_code_buf - used only for holding calculated or read ECCs for
- *                 a page read or written when ECC is in use
- *
- *  reserved - padding to make structure fall on word boundary if
- *             when ECC is in use
- */
-struct Nand {
-       char floor, chip;
-       unsigned long curadr;
-       unsigned char curmode;
-       /* Also some erase/write/pipeline info when we get that far */
-};
-
-struct nand_chip {
-       int             page_shift;
-       u_char          *data_buf;
-       u_char          *data_cache;
-       int             cache_page;
-       u_char          ecc_code_buf[6];
-       u_char          reserved[2];
-       char ChipID; /* Type of DiskOnChip */
-       struct Nand *chips;
-       int chipshift;
-       char* chips_name;
-       unsigned long erasesize;
-       unsigned long mfr; /* Flash IDs - only one type of flash per device */
-       unsigned long id;
-       char* name;
-       int numchips;
-       char page256;
-       char pageadrlen;
-       unsigned long IO_ADDR;  /* address to access the 8 I/O lines to the flash device */
-       unsigned long totlen;
-       uint oobblock;  /* Size of OOB blocks (e.g. 512) */
-       uint oobsize;   /* Amount of OOB data per block (e.g. 16) */
-       uint eccsize;
-       int bus16;
-};
-
-/*
- * NAND Flash Manufacturer ID Codes
- */
-#define NAND_MFR_TOSHIBA       0x98
-#define NAND_MFR_SAMSUNG       0xec
-
-/*
- * NAND Flash Device ID Structure
- *
- * Structure overview:
- *
- *  name - Complete name of device
- *
- *  manufacture_id - manufacturer ID code of device.
- *
- *  model_id - model ID code of device.
- *
- *  chipshift - total number of address bits for the device which
- *              is used to calculate address offsets and the total
- *              number of bytes the device is capable of.
- *
- *  page256 - denotes if flash device has 256 byte pages or not.
- *
- *  pageadrlen - number of bytes minus one needed to hold the
- *               complete address into the flash array. Keep in
- *               mind that when a read or write is done to a
- *               specific address, the address is input serially
- *               8 bits at a time. This structure member is used
- *               by the read/write routines as a loop index for
- *               shifting the address out 8 bits at a time.
- *
- *  erasesize - size of an erase block in the flash device.
- */
-struct nand_flash_dev {
-       char * name;
-       int manufacture_id;
-       int model_id;
-       int chipshift;
-       char page256;
-       char pageadrlen;
-       unsigned long erasesize;
-       int bus16;
-};
-
-/*
-* Constants for oob configuration
-*/
-#define NAND_NOOB_ECCPOS0              0
-#define NAND_NOOB_ECCPOS1              1
-#define NAND_NOOB_ECCPOS2              2
-#define NAND_NOOB_ECCPOS3              3
-#define NAND_NOOB_ECCPOS4              6
-#define NAND_NOOB_ECCPOS5              7
-#define NAND_NOOB_BADBPOS              -1
-#define NAND_NOOB_ECCVPOS              -1
-
-#define NAND_JFFS2_OOB_ECCPOS0         0
-#define NAND_JFFS2_OOB_ECCPOS1         1
-#define NAND_JFFS2_OOB_ECCPOS2         2
-#define NAND_JFFS2_OOB_ECCPOS3         3
-#define NAND_JFFS2_OOB_ECCPOS4         6
-#define NAND_JFFS2_OOB_ECCPOS5         7
-#define NAND_JFFS2_OOB_BADBPOS         5
-#define NAND_JFFS2_OOB_ECCVPOS         4
-
-#define NAND_JFFS2_OOB8_FSDAPOS                6
-#define NAND_JFFS2_OOB16_FSDAPOS       8
-#define NAND_JFFS2_OOB8_FSDALEN                2
-#define NAND_JFFS2_OOB16_FSDALEN       8
-
-unsigned long nand_probe(unsigned long physadr);
-#endif /* __LINUX_MTD_NAND_LEGACY_H */
+/*
+ *  linux/include/linux/mtd/nand.h
+ *
+ *  Copyright (c) 2000 David Woodhouse <dwmw2@mvhi.com>
+ *                     Steven J. Hill <sjhill@cotw.com>
+ *                    Thomas Gleixner <gleixner@autronix.de>
+ *
+ * $Id: nand_legacy.h,v 1.1.1.1 2009/03/25 22:22:29 kenagy Exp $
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ *  Info:
+ *   Contains standard defines and IDs for NAND flash devices
+ *
+ *  Changelog:
+ *   01-31-2000 DMW     Created
+ *   09-18-2000 SJH     Moved structure out of the Disk-On-Chip drivers
+ *                     so it can be used by other NAND flash device
+ *                     drivers. I also changed the copyright since none
+ *                     of the original contents of this file are specific
+ *                     to DoC devices. David can whack me with a baseball
+ *                     bat later if I did something naughty.
+ *   10-11-2000 SJH     Added private NAND flash structure for driver
+ *   10-24-2000 SJH     Added prototype for 'nand_scan' function
+ *   10-29-2001 TG     changed nand_chip structure to support
+ *                     hardwarespecific function for accessing control lines
+ *   02-21-2002 TG     added support for different read/write adress and
+ *                     ready/busy line access function
+ *   02-26-2002 TG     added chip_delay to nand_chip structure to optimize
+ *                     command delay times for different chips
+ *   04-28-2002 TG     OOB config defines moved from nand.c to avoid duplicate
+ *                     defines in jffs2/wbuf.c
+ */
+#ifndef __LINUX_MTD_NAND_LEGACY_H
+#define __LINUX_MTD_NAND_LEGACY_H
+
+#ifndef CONFIG_NAND_LEGACY
+#error This module is for the legacy NAND support
+#endif
+
+/* The maximum number of NAND chips in an array */
+#ifndef CONFIG_SYS_NAND_MAX_CHIPS
+#define CONFIG_SYS_NAND_MAX_CHIPS      1
+#endif
+
+/*
+ * Standard NAND flash commands
+ */
+#define NAND_CMD_READ0         0
+#define NAND_CMD_READ1         1
+#define NAND_CMD_PAGEPROG      0x10
+#define NAND_CMD_READOOB       0x50
+#define NAND_CMD_ERASE1                0x60
+#define NAND_CMD_STATUS                0x70
+#define NAND_CMD_SEQIN         0x80
+#define NAND_CMD_READID                0x90
+#define NAND_CMD_ERASE2                0xd0
+#define NAND_CMD_RESET         0xff
+
+/*
+ * NAND Private Flash Chip Data
+ *
+ * Structure overview:
+ *
+ *  IO_ADDR - address to access the 8 I/O lines of the flash device
+ *
+ *  hwcontrol - hardwarespecific function for accesing control-lines
+ *
+ *  dev_ready - hardwarespecific function for accesing device ready/busy line
+ *
+ *  chip_lock - spinlock used to protect access to this structure
+ *
+ *  wq - wait queue to sleep on if a NAND operation is in progress
+ *
+ *  state - give the current state of the NAND device
+ *
+ *  page_shift - number of address bits in a page (column address bits)
+ *
+ *  data_buf - data buffer passed to/from MTD user modules
+ *
+ *  data_cache - data cache for redundant page access and shadow for
+ *              ECC failure
+ *
+ *  ecc_code_buf - used only for holding calculated or read ECCs for
+ *                 a page read or written when ECC is in use
+ *
+ *  reserved - padding to make structure fall on word boundary if
+ *             when ECC is in use
+ */
+struct Nand {
+       char floor, chip;
+       unsigned long curadr;
+       unsigned char curmode;
+       /* Also some erase/write/pipeline info when we get that far */
+};
+
+struct nand_chip {
+       int             page_shift;
+       u_char          *data_buf;
+       u_char          *data_cache;
+       int             cache_page;
+       u_char          ecc_code_buf[6];
+       u_char          reserved[2];
+       char ChipID; /* Type of DiskOnChip */
+       struct Nand *chips;
+       int chipshift;
+       char* chips_name;
+       unsigned long erasesize;
+       unsigned long mfr; /* Flash IDs - only one type of flash per device */
+       unsigned long id;
+       char* name;
+       int numchips;
+       char page256;
+       char pageadrlen;
+       unsigned long IO_ADDR;  /* address to access the 8 I/O lines to the flash device */
+       unsigned long totlen;
+       uint oobblock;  /* Size of OOB blocks (e.g. 512) */
+       uint oobsize;   /* Amount of OOB data per block (e.g. 16) */
+       uint eccsize;
+       int bus16;
+};
+
+/*
+ * NAND Flash Manufacturer ID Codes
+ */
+#define NAND_MFR_TOSHIBA       0x98
+#define NAND_MFR_SAMSUNG       0xec
+
+/*
+ * NAND Flash Device ID Structure
+ *
+ * Structure overview:
+ *
+ *  name - Complete name of device
+ *
+ *  manufacture_id - manufacturer ID code of device.
+ *
+ *  model_id - model ID code of device.
+ *
+ *  chipshift - total number of address bits for the device which
+ *              is used to calculate address offsets and the total
+ *              number of bytes the device is capable of.
+ *
+ *  page256 - denotes if flash device has 256 byte pages or not.
+ *
+ *  pageadrlen - number of bytes minus one needed to hold the
+ *               complete address into the flash array. Keep in
+ *               mind that when a read or write is done to a
+ *               specific address, the address is input serially
+ *               8 bits at a time. This structure member is used
+ *               by the read/write routines as a loop index for
+ *               shifting the address out 8 bits at a time.
+ *
+ *  erasesize - size of an erase block in the flash device.
+ */
+struct nand_flash_dev {
+       char * name;
+       int manufacture_id;
+       int model_id;
+       int chipshift;
+       char page256;
+       char pageadrlen;
+       unsigned long erasesize;
+       int bus16;
+};
+
+/*
+* Constants for oob configuration
+*/
+#define NAND_NOOB_ECCPOS0              0
+#define NAND_NOOB_ECCPOS1              1
+#define NAND_NOOB_ECCPOS2              2
+#define NAND_NOOB_ECCPOS3              3
+#define NAND_NOOB_ECCPOS4              6
+#define NAND_NOOB_ECCPOS5              7
+#define NAND_NOOB_BADBPOS              -1
+#define NAND_NOOB_ECCVPOS              -1
+
+#define NAND_JFFS2_OOB_ECCPOS0         0
+#define NAND_JFFS2_OOB_ECCPOS1         1
+#define NAND_JFFS2_OOB_ECCPOS2         2
+#define NAND_JFFS2_OOB_ECCPOS3         3
+#define NAND_JFFS2_OOB_ECCPOS4         6
+#define NAND_JFFS2_OOB_ECCPOS5         7
+#define NAND_JFFS2_OOB_BADBPOS         5
+#define NAND_JFFS2_OOB_ECCVPOS         4
+
+#define NAND_JFFS2_OOB8_FSDAPOS                6
+#define NAND_JFFS2_OOB16_FSDAPOS       8
+#define NAND_JFFS2_OOB8_FSDALEN                2
+#define NAND_JFFS2_OOB16_FSDALEN       8
+
+unsigned long nand_probe(unsigned long physadr);
+#endif /* __LINUX_MTD_NAND_LEGACY_H */
diff -Naur u-boot-2009.03_orig/include/linux/mtd/nftl-user.h u-boot-2009.03/include/linux/mtd/nftl-user.h
--- u-boot-2009.03_orig/include/linux/mtd/nftl-user.h   2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/include/linux/mtd/nftl-user.h        2009-03-31 15:01:56.497408000 -0700
@@ -1,76 +1,76 @@
-/*
- * $Id: nftl-user.h,v 1.2 2005/11/07 11:14:56 gleixner Exp $
- *
- * Parts of NFTL headers shared with userspace
- *
- */
-
-#ifndef __MTD_NFTL_USER_H__
-#define __MTD_NFTL_USER_H__
-
-/* Block Control Information */
-
-struct nftl_bci {
-       unsigned char ECCSig[6];
-       uint8_t Status;
-       uint8_t Status1;
-}__attribute__((packed));
-
-/* Unit Control Information */
-
-struct nftl_uci0 {
-       uint16_t VirtUnitNum;
-       uint16_t ReplUnitNum;
-       uint16_t SpareVirtUnitNum;
-       uint16_t SpareReplUnitNum;
-} __attribute__((packed));
-
-struct nftl_uci1 {
-       uint32_t WearInfo;
-       uint16_t EraseMark;
-       uint16_t EraseMark1;
-} __attribute__((packed));
-
-struct nftl_uci2 {
-       uint16_t FoldMark;
-       uint16_t FoldMark1;
-       uint32_t unused;
-} __attribute__((packed));
-
-union nftl_uci {
-       struct nftl_uci0 a;
-       struct nftl_uci1 b;
-       struct nftl_uci2 c;
-};
-
-struct nftl_oob {
-       struct nftl_bci b;
-       union nftl_uci u;
-};
-
-/* NFTL Media Header */
-
-struct NFTLMediaHeader {
-       char DataOrgID[6];
-       uint16_t NumEraseUnits;
-       uint16_t FirstPhysicalEUN;
-       uint32_t FormattedSize;
-       unsigned char UnitSizeFactor;
-} __attribute__((packed));
-
-#define MAX_ERASE_ZONES (8192 - 512)
-
-#define ERASE_MARK 0x3c69
-#define SECTOR_FREE 0xff
-#define SECTOR_USED 0x55
-#define SECTOR_IGNORE 0x11
-#define SECTOR_DELETED 0x00
-
-#define FOLD_MARK_IN_PROGRESS 0x5555
-
-#define ZONE_GOOD 0xff
-#define ZONE_BAD_ORIGINAL 0
-#define ZONE_BAD_MARKED 7
-
-
-#endif /* __MTD_NFTL_USER_H__ */
+/*
+ * $Id: nftl-user.h,v 1.1.1.1 2009/03/25 22:22:29 kenagy Exp $
+ *
+ * Parts of NFTL headers shared with userspace
+ *
+ */
+
+#ifndef __MTD_NFTL_USER_H__
+#define __MTD_NFTL_USER_H__
+
+/* Block Control Information */
+
+struct nftl_bci {
+       unsigned char ECCSig[6];
+       uint8_t Status;
+       uint8_t Status1;
+}__attribute__((packed));
+
+/* Unit Control Information */
+
+struct nftl_uci0 {
+       uint16_t VirtUnitNum;
+       uint16_t ReplUnitNum;
+       uint16_t SpareVirtUnitNum;
+       uint16_t SpareReplUnitNum;
+} __attribute__((packed));
+
+struct nftl_uci1 {
+       uint32_t WearInfo;
+       uint16_t EraseMark;
+       uint16_t EraseMark1;
+} __attribute__((packed));
+
+struct nftl_uci2 {
+       uint16_t FoldMark;
+       uint16_t FoldMark1;
+       uint32_t unused;
+} __attribute__((packed));
+
+union nftl_uci {
+       struct nftl_uci0 a;
+       struct nftl_uci1 b;
+       struct nftl_uci2 c;
+};
+
+struct nftl_oob {
+       struct nftl_bci b;
+       union nftl_uci u;
+};
+
+/* NFTL Media Header */
+
+struct NFTLMediaHeader {
+       char DataOrgID[6];
+       uint16_t NumEraseUnits;
+       uint16_t FirstPhysicalEUN;
+       uint32_t FormattedSize;
+       unsigned char UnitSizeFactor;
+} __attribute__((packed));
+
+#define MAX_ERASE_ZONES (8192 - 512)
+
+#define ERASE_MARK 0x3c69
+#define SECTOR_FREE 0xff
+#define SECTOR_USED 0x55
+#define SECTOR_IGNORE 0x11
+#define SECTOR_DELETED 0x00
+
+#define FOLD_MARK_IN_PROGRESS 0x5555
+
+#define ZONE_GOOD 0xff
+#define ZONE_BAD_ORIGINAL 0
+#define ZONE_BAD_MARKED 7
+
+
+#endif /* __MTD_NFTL_USER_H__ */
diff -Naur u-boot-2009.03_orig/include/linux/mtd/partitions.h u-boot-2009.03/include/linux/mtd/partitions.h
--- u-boot-2009.03_orig/include/linux/mtd/partitions.h  2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/include/linux/mtd/partitions.h       2009-03-31 15:01:56.528657600 -0700
@@ -1,84 +1,84 @@
-/*
- * MTD partitioning layer definitions
- *
- * (C) 2000 Nicolas Pitre <nico@cam.org>
- *
- * This code is GPL
- *
- * $Id: partitions.h,v 1.17 2005/11/07 11:14:55 gleixner Exp $
- */
-
-#ifndef MTD_PARTITIONS_H
-#define MTD_PARTITIONS_H
-
-#include <linux/types.h>
-
-
-/*
- * Partition definition structure:
- *
- * An array of struct partition is passed along with a MTD object to
- * add_mtd_partitions() to create them.
- *
- * For each partition, these fields are available:
- * name: string that will be used to label the partition's MTD device.
- * size: the partition size; if defined as MTDPART_SIZ_FULL, the partition
- *     will extend to the end of the master MTD device.
- * offset: absolute starting position within the master MTD device; if
- *     defined as MTDPART_OFS_APPEND, the partition will start where the
- *     previous one ended; if MTDPART_OFS_NXTBLK, at the next erase block.
- * mask_flags: contains flags that have to be masked (removed) from the
- *     master MTD flag set for the corresponding MTD partition.
- *     For example, to force a read-only partition, simply adding
- *     MTD_WRITEABLE to the mask_flags will do the trick.
- *
- * Note: writeable partitions require their size and offset be
- * erasesize aligned (e.g. use MTDPART_OFS_NEXTBLK).
- */
-
-struct mtd_partition {
-       char *name;                     /* identifier string */
-       u_int32_t size;                 /* partition size */
-       u_int32_t offset;               /* offset within the master MTD space */
-       u_int32_t mask_flags;           /* master MTD flags to mask out for this partition */
-       struct nand_ecclayout *ecclayout;       /* out of band layout for this partition (NAND only)*/
-       struct mtd_info **mtdp;         /* pointer to store the MTD object */
-};
-
-#define MTDPART_OFS_NXTBLK     (-2)
-#define MTDPART_OFS_APPEND     (-1)
-#define MTDPART_SIZ_FULL       (0)
-
-
-int add_mtd_partitions(struct mtd_info *, const struct mtd_partition *, int);
-int del_mtd_partitions(struct mtd_info *);
-
-#if 0
-/*
- * Functions dealing with the various ways of partitioning the space
- */
-
-struct mtd_part_parser {
-       struct list_head list;
-       struct module *owner;
-       const char *name;
-       int (*parse_fn)(struct mtd_info *, struct mtd_partition **, unsigned long);
-};
-
-extern int register_mtd_parser(struct mtd_part_parser *parser);
-extern int deregister_mtd_parser(struct mtd_part_parser *parser);
-extern int parse_mtd_partitions(struct mtd_info *master, const char **types,
-                               struct mtd_partition **pparts, unsigned long origin);
-
-#define put_partition_parser(p) do { module_put((p)->owner); } while(0)
-
-struct device;
-struct device_node;
-
-int __devinit of_mtd_parse_partitions(struct device *dev,
-                                     struct mtd_info *mtd,
-                                     struct device_node *node,
-                                     struct mtd_partition **pparts);
-#endif
-
-#endif
+/*
+ * MTD partitioning layer definitions
+ *
+ * (C) 2000 Nicolas Pitre <nico@cam.org>
+ *
+ * This code is GPL
+ *
+ * $Id: partitions.h,v 1.1.1.1 2009/03/25 22:22:29 kenagy Exp $
+ */
+
+#ifndef MTD_PARTITIONS_H
+#define MTD_PARTITIONS_H
+
+#include <linux/types.h>
+
+
+/*
+ * Partition definition structure:
+ *
+ * An array of struct partition is passed along with a MTD object to
+ * add_mtd_partitions() to create them.
+ *
+ * For each partition, these fields are available:
+ * name: string that will be used to label the partition's MTD device.
+ * size: the partition size; if defined as MTDPART_SIZ_FULL, the partition
+ *     will extend to the end of the master MTD device.
+ * offset: absolute starting position within the master MTD device; if
+ *     defined as MTDPART_OFS_APPEND, the partition will start where the
+ *     previous one ended; if MTDPART_OFS_NXTBLK, at the next erase block.
+ * mask_flags: contains flags that have to be masked (removed) from the
+ *     master MTD flag set for the corresponding MTD partition.
+ *     For example, to force a read-only partition, simply adding
+ *     MTD_WRITEABLE to the mask_flags will do the trick.
+ *
+ * Note: writeable partitions require their size and offset be
+ * erasesize aligned (e.g. use MTDPART_OFS_NEXTBLK).
+ */
+
+struct mtd_partition {
+       char *name;                     /* identifier string */
+       u_int32_t size;                 /* partition size */
+       u_int32_t offset;               /* offset within the master MTD space */
+       u_int32_t mask_flags;           /* master MTD flags to mask out for this partition */
+       struct nand_ecclayout *ecclayout;       /* out of band layout for this partition (NAND only)*/
+       struct mtd_info **mtdp;         /* pointer to store the MTD object */
+};
+
+#define MTDPART_OFS_NXTBLK     (-2)
+#define MTDPART_OFS_APPEND     (-1)
+#define MTDPART_SIZ_FULL       (0)
+
+
+int add_mtd_partitions(struct mtd_info *, const struct mtd_partition *, int);
+int del_mtd_partitions(struct mtd_info *);
+
+#if 0
+/*
+ * Functions dealing with the various ways of partitioning the space
+ */
+
+struct mtd_part_parser {
+       struct list_head list;
+       struct module *owner;
+       const char *name;
+       int (*parse_fn)(struct mtd_info *, struct mtd_partition **, unsigned long);
+};
+
+extern int register_mtd_parser(struct mtd_part_parser *parser);
+extern int deregister_mtd_parser(struct mtd_part_parser *parser);
+extern int parse_mtd_partitions(struct mtd_info *master, const char **types,
+                               struct mtd_partition **pparts, unsigned long origin);
+
+#define put_partition_parser(p) do { module_put((p)->owner); } while(0)
+
+struct device;
+struct device_node;
+
+int __devinit of_mtd_parse_partitions(struct device *dev,
+                                     struct mtd_info *mtd,
+                                     struct device_node *node,
+                                     struct mtd_partition **pparts);
+#endif
+
+#endif
diff -Naur u-boot-2009.03_orig/include/linux_logo.h u-boot-2009.03/include/linux_logo.h
--- u-boot-2009.03_orig/include/linux_logo.h    2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/include/linux_logo.h 2009-03-31 14:57:41.500672000 -0700
@@ -1,1445 +1,1445 @@
-/* $Id: linux_logo.h,v 1.5 1998/07/30 16:30:58 jj Exp $
- * include/linux/linux_logo.h: This is a linux logo
- *                             to be displayed on boot.
- *
- * Copyright (C) 1996 Larry Ewing (lewing@isc.tamu.edu)
- * Copyright (C) 1996,1998 Jakub Jelinek (jj@sunsite.mff.cuni.cz)
- *
- * You can put anything here, but:
- * LINUX_LOGO_COLORS has to be less than 224
- * image size has to be 80x80
- * values have to start from 0x20
- * (i.e. RGB(linux_logo_red[0],
- *           linux_logo_green[0],
- *           linux_logo_blue[0]) is color 0x20)
- * BW image has to be 80x80 as well, with MS bit
- * on the left
- * Serial_console ascii image can be any size,
- * but should contain %s to display the version
- */
-
-#if LINUX_LOGO_COLORS == 214
-
-unsigned char linux_logo_red[] __initdata = {
-  0x02, 0x9E, 0xE9, 0xC4, 0x50, 0xC9, 0xC4, 0xE9,
-  0x65, 0xE3, 0xC2, 0x25, 0xA4, 0xEC, 0x90, 0xA6,
-  0xC4, 0x6A, 0xD1, 0xF3, 0x12, 0xED, 0xA0, 0xC2,
-  0xB8, 0xD5, 0xDB, 0xD2, 0x3E, 0x16, 0xEB, 0x54,
-  0xA9, 0xCD, 0xF5, 0x0A, 0xBA, 0xB3, 0xDC, 0x74,
-  0xCE, 0xF6, 0xD3, 0xC5, 0xEA, 0xB8, 0xED, 0x5E,
-  0xE5, 0x26, 0xF4, 0xA9, 0x82, 0x94, 0xE6, 0x38,
-  0xF2, 0x0F, 0x7F, 0x49, 0xE5, 0xF4, 0xD3, 0xC3,
-  0xC2, 0x1E, 0xD5, 0xC6, 0xA4, 0xFA, 0x0A, 0xBA,
-  0xD4, 0xEB, 0xEA, 0xEC, 0xA8, 0xBC, 0xB4, 0xDC,
-  0x84, 0xE4, 0xCE, 0xEC, 0x92, 0xCD, 0xDC, 0x8B,
-  0xCC, 0x1E, 0xF6, 0xB2, 0x60, 0x2A, 0x96, 0x52,
-  0x0F, 0xBD, 0xFA, 0xCC, 0xB8, 0x7A, 0x4C, 0xD2,
-  0x06, 0xEF, 0x44, 0x64, 0xF4, 0xBA, 0xCE, 0xE6,
-  0x8A, 0x6F, 0x3C, 0x70, 0x7C, 0x9C, 0xBA, 0xDF,
-  0x2C, 0x4D, 0x3B, 0xCA, 0xDE, 0xCE, 0xEE, 0x46,
-  0x6A, 0xAC, 0x96, 0xE5, 0x96, 0x7A, 0xBA, 0xB6,
-  0xE2, 0x7E, 0xAA, 0xC5, 0x96, 0x9E, 0xC2, 0xAA,
-  0xDA, 0x35, 0xB6, 0x82, 0x88, 0xBE, 0xC2, 0x9E,
-  0xB4, 0xD5, 0xDA, 0x9C, 0xA0, 0xD0, 0xA8, 0xC7,
-  0x72, 0xF2, 0xDB, 0x76, 0xDC, 0xBE, 0xAA, 0xF4,
-  0x87, 0x2F, 0x53, 0x8E, 0x36, 0xCE, 0xE6, 0xCA,
-  0xCB, 0xE4, 0xD6, 0xAA, 0x42, 0x5D, 0xB4, 0x59,
-  0x1C, 0xC8, 0x96, 0x6C, 0xDA, 0xCE, 0xE6, 0xCB,
-  0x96, 0x16, 0xFA, 0xBE, 0xAE, 0xFE, 0x6E, 0xD6,
-  0xCE, 0xB6, 0xE5, 0xED, 0xDB, 0xDC, 0xF4, 0x72,
-  0x1F, 0xAE, 0xE6, 0xC2, 0xCA, 0xC4
-};
-
-unsigned char linux_logo_green[] __initdata = {
-  0x02, 0x88, 0xC4, 0x85, 0x44, 0xA2, 0xA8, 0xE5,
-  0x65, 0xA6, 0xC2, 0x24, 0xA4, 0xB4, 0x62, 0x86,
-  0x94, 0x44, 0xD2, 0xB6, 0x12, 0xD4, 0x73, 0x96,
-  0x92, 0x95, 0xB2, 0xC2, 0x36, 0x0E, 0xBC, 0x54,
-  0x75, 0xA5, 0xF5, 0x0A, 0xB2, 0x83, 0xC2, 0x74,
-  0x9B, 0xBD, 0xA2, 0xCA, 0xDA, 0x8C, 0xCB, 0x42,
-  0xAC, 0x12, 0xDA, 0x7B, 0x54, 0x94, 0xD2, 0x24,
-  0xBE, 0x06, 0x65, 0x33, 0xBB, 0xBC, 0xAB, 0x8C,
-  0x92, 0x1E, 0x9B, 0xB6, 0x6E, 0xFB, 0x04, 0xA2,
-  0xC8, 0xBD, 0xAD, 0xEC, 0x92, 0xBC, 0x7B, 0x9D,
-  0x84, 0xC4, 0xC4, 0xB4, 0x6C, 0x93, 0xA3, 0x5E,
-  0x8D, 0x13, 0xD6, 0x82, 0x4C, 0x2A, 0x7A, 0x5A,
-  0x0D, 0x82, 0xBB, 0xCC, 0x8B, 0x6A, 0x3C, 0xBE,
-  0x06, 0xC4, 0x44, 0x45, 0xDB, 0x96, 0xB6, 0xDE,
-  0x8A, 0x4D, 0x3C, 0x5A, 0x7C, 0x9C, 0xAA, 0xCB,
-  0x1C, 0x4D, 0x2E, 0xB2, 0xBE, 0xAA, 0xDE, 0x3E,
-  0x6A, 0xAC, 0x82, 0xE5, 0x72, 0x62, 0x92, 0x9E,
-  0xCA, 0x4A, 0x8E, 0xBE, 0x86, 0x6B, 0xAA, 0x9A,
-  0xBE, 0x34, 0xAB, 0x76, 0x6E, 0x9A, 0x9E, 0x62,
-  0x76, 0xCE, 0xD3, 0x92, 0x7C, 0xB8, 0x7E, 0xC6,
-  0x5E, 0xE2, 0xC3, 0x54, 0xAA, 0x9E, 0x8A, 0xCA,
-  0x63, 0x2D, 0x3B, 0x8E, 0x1A, 0x9E, 0xC2, 0xA6,
-  0xCB, 0xDC, 0xD6, 0x8E, 0x26, 0x5C, 0xB4, 0x45,
-  0x1C, 0xB8, 0x6E, 0x4C, 0xBC, 0xAE, 0xD6, 0x92,
-  0x63, 0x16, 0xF6, 0x8C, 0x7A, 0xFE, 0x6E, 0xBA,
-  0xC6, 0x86, 0xAA, 0xAE, 0xDB, 0xA4, 0xD4, 0x56,
-  0x0E, 0x6E, 0xB6, 0xB2, 0xBE, 0xBE
-};
-
-unsigned char linux_logo_blue[] __initdata = {
-  0x04, 0x28, 0x10, 0x0B, 0x14, 0x14, 0x74, 0xC7,
-  0x64, 0x0E, 0xC3, 0x24, 0xA4, 0x0C, 0x10, 0x20,
-  0x0D, 0x04, 0xD1, 0x0D, 0x13, 0x22, 0x0A, 0x40,
-  0x14, 0x0C, 0x11, 0x94, 0x0C, 0x08, 0x0B, 0x56,
-  0x09, 0x47, 0xF4, 0x0B, 0x9C, 0x07, 0x54, 0x74,
-  0x0F, 0x0C, 0x0F, 0xC7, 0x6C, 0x14, 0x14, 0x11,
-  0x0B, 0x04, 0x12, 0x0C, 0x05, 0x94, 0x94, 0x0A,
-  0x34, 0x09, 0x14, 0x08, 0x2F, 0x15, 0x19, 0x11,
-  0x28, 0x0C, 0x0B, 0x94, 0x08, 0xFA, 0x08, 0x7C,
-  0xBC, 0x15, 0x0A, 0xEC, 0x64, 0xBB, 0x0A, 0x0C,
-  0x84, 0x2C, 0xA0, 0x15, 0x10, 0x0D, 0x0B, 0x0E,
-  0x0A, 0x07, 0x10, 0x3C, 0x24, 0x2C, 0x28, 0x5C,
-  0x0A, 0x0D, 0x0A, 0xC1, 0x22, 0x4C, 0x10, 0x94,
-  0x04, 0x0F, 0x45, 0x08, 0x31, 0x54, 0x3C, 0xBC,
-  0x8C, 0x09, 0x3C, 0x18, 0x7C, 0x9C, 0x7C, 0x91,
-  0x0C, 0x4D, 0x17, 0x74, 0x0C, 0x48, 0x9C, 0x3C,
-  0x6A, 0xAC, 0x5C, 0xE3, 0x29, 0x3C, 0x2C, 0x7C,
-  0x6C, 0x04, 0x14, 0xA9, 0x74, 0x07, 0x2C, 0x74,
-  0x4C, 0x34, 0x97, 0x5C, 0x38, 0x0C, 0x5C, 0x04,
-  0x0C, 0xBA, 0xBC, 0x78, 0x18, 0x88, 0x24, 0xC2,
-  0x3C, 0xB4, 0x87, 0x0C, 0x14, 0x4C, 0x3C, 0x10,
-  0x17, 0x2C, 0x0A, 0x8C, 0x04, 0x1C, 0x44, 0x2C,
-  0xCD, 0xD8, 0xD4, 0x34, 0x0C, 0x5B, 0xB4, 0x1E,
-  0x1D, 0xAC, 0x24, 0x18, 0x20, 0x5C, 0xB4, 0x1C,
-  0x09, 0x14, 0xFC, 0x0C, 0x10, 0xFC, 0x6C, 0x7C,
-  0xB4, 0x1C, 0x15, 0x17, 0xDB, 0x18, 0x21, 0x24,
-  0x04, 0x04, 0x44, 0x8C, 0x8C, 0xB7
-};
-
-unsigned char linux_logo[] __initdata = {
-  0xBF, 0x95, 0x90, 0xCB, 0x95, 0xA1, 0x2C, 0x2C,
-  0x95, 0x55, 0xCB, 0x90, 0xCB, 0x95, 0x2C, 0x95,
-  0xCB, 0x47, 0x94, 0x95, 0xA1, 0xD6, 0xD6, 0x2C,
-  0x90, 0x47, 0x70, 0x2C, 0x6D, 0x2A, 0x6D, 0xD6,
-  0xA1, 0x2C, 0x55, 0x95, 0x2C, 0x2C, 0x55, 0x55,
-  0x95, 0xA1, 0xA1, 0xA1, 0x6D, 0xBF, 0x2A, 0x2A,
-  0xBF, 0x83, 0xBF, 0x95, 0x90, 0xCB, 0x95, 0xA1,
-  0x2C, 0x2C, 0x95, 0x55, 0xCB, 0x90, 0xCB, 0x95,
-  0x2C, 0x95, 0xCB, 0x47, 0x94, 0x95, 0xA1, 0xD6,
-  0xD6, 0x2C, 0x90, 0x47, 0x70, 0x2C, 0x6D, 0x2A,
-  0x95, 0x47, 0x47, 0x90, 0x2C, 0x2C, 0x2C, 0x95,
-  0x55, 0x55, 0xCB, 0x90, 0xCB, 0x55, 0x55, 0xCB,
-  0x47, 0xE6, 0x70, 0x95, 0xD6, 0xD6, 0xA1, 0x2C,
-  0x55, 0x55, 0x95, 0xD6, 0x6D, 0xD6, 0xA1, 0x2C,
-  0x2C, 0x95, 0x55, 0x95, 0x95, 0x95, 0x2C, 0x2C,
-  0xA1, 0xA1, 0x2C, 0x2C, 0xA1, 0xD6, 0xD6, 0xD6,
-  0xD6, 0xD6, 0x95, 0x47, 0x47, 0x90, 0x2C, 0x2C,
-  0x2C, 0x95, 0x55, 0x55, 0xCB, 0x90, 0xCB, 0x55,
-  0x55, 0xCB, 0x47, 0xE6, 0x70, 0x95, 0xD6, 0xD6,
-  0xA1, 0x2C, 0x55, 0x55, 0x95, 0xD6, 0x6D, 0xD6,
-  0x90, 0x47, 0x47, 0x70, 0x2C, 0xA1, 0x2C, 0x95,
-  0x55, 0x55, 0x90, 0xCB, 0x55, 0x55, 0x55, 0x70,
-  0x94, 0x70, 0x95, 0xA1, 0xD6, 0xD6, 0xA1, 0x2C,
-  0x95, 0x95, 0x2C, 0xA1, 0xD6, 0xA1, 0x2C, 0x2C,
-  0x95, 0x55, 0xCB, 0x95, 0xD6, 0xA1, 0x2C, 0x95,
-  0xA1, 0xD6, 0xD6, 0xA1, 0xA1, 0xD6, 0xA1, 0xA1,
-  0xA1, 0x2C, 0x90, 0x47, 0x47, 0x70, 0x2C, 0xA1,
-  0x2C, 0x95, 0x55, 0x55, 0x90, 0xCB, 0x55, 0x55,
-  0x55, 0x70, 0x94, 0x70, 0x95, 0xA1, 0xD6, 0xD6,
-  0xA1, 0x2C, 0x95, 0x95, 0x2C, 0xD6, 0xD6, 0xA1,
-  0x94, 0xA0, 0x47, 0x55, 0x2C, 0xD6, 0xA1, 0x95,
-  0x55, 0x55, 0xCB, 0xCB, 0x55, 0x55, 0xCB, 0xCB,
-  0x55, 0x95, 0x2C, 0xA1, 0xD6, 0xD6, 0xA1, 0x2C,
-  0x95, 0x95, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x95,
-  0x55, 0x55, 0x2C, 0x3F, 0x80, 0x20, 0x88, 0x88,
-  0x88, 0x20, 0x88, 0xB1, 0x2C, 0xA1, 0x2C, 0x2C,
-  0x95, 0xCB, 0x94, 0xA0, 0x47, 0x55, 0x2C, 0xD6,
-  0xA1, 0x95, 0x55, 0x55, 0xCB, 0xCB, 0x55, 0x55,
-  0xCB, 0xCB, 0x55, 0x95, 0x2C, 0xA1, 0xD6, 0xD6,
-  0xA1, 0x2C, 0x95, 0x95, 0x2C, 0x2C, 0x2C, 0x2C,
-  0x94, 0x94, 0x70, 0x2C, 0xA1, 0xD6, 0xA1, 0x2C,
-  0x55, 0x55, 0xCB, 0x55, 0x55, 0x55, 0x55, 0x55,
-  0x95, 0x2C, 0xD6, 0xD6, 0xD6, 0xA1, 0x2C, 0x95,
-  0x55, 0x55, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95,
-  0x2C, 0x94, 0x80, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x88, 0x92, 0xA1, 0x95,
-  0x55, 0x90, 0x94, 0x94, 0x70, 0x2C, 0xA1, 0xD6,
-  0xA1, 0x2C, 0x55, 0x55, 0xCB, 0x55, 0x55, 0x55,
-  0x55, 0x55, 0x95, 0x2C, 0xD6, 0xD6, 0xD6, 0xA1,
-  0x2C, 0x95, 0x55, 0x55, 0x55, 0x95, 0x95, 0x95,
-  0x70, 0x70, 0x55, 0x2C, 0xD6, 0xD6, 0xA1, 0x95,
-  0x55, 0x90, 0xCB, 0xCB, 0x55, 0x55, 0x2C, 0x2C,
-  0xA1, 0xD6, 0xA1, 0xA1, 0x2C, 0x2C, 0x95, 0x55,
-  0x55, 0x55, 0x95, 0x95, 0x2C, 0x95, 0x95, 0xD6,
-  0xB1, 0x88, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x80, 0x34, 0x88, 0x43, 0x47,
-  0x95, 0xCB, 0x70, 0x70, 0x55, 0x2C, 0xD6, 0xD6,
-  0xA1, 0x95, 0x55, 0x90, 0xCB, 0xCB, 0x55, 0x55,
-  0x2C, 0x2C, 0xA1, 0xD6, 0xA1, 0xA1, 0xA1, 0x2C,
-  0x55, 0x55, 0x55, 0x55, 0x2C, 0x95, 0x2C, 0x2C,
-  0x55, 0x55, 0x95, 0x2C, 0xA1, 0xA1, 0x2C, 0x55,
-  0x90, 0x70, 0x90, 0x55, 0x95, 0x95, 0xA1, 0xA1,
-  0xA1, 0xA1, 0xA1, 0xA1, 0x2C, 0x95, 0x95, 0x95,
-  0x95, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0xD5,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x88, 0x7D, 0x3F, 0xB1, 0x80, 0x20,
-  0x99, 0x2C, 0x55, 0x55, 0x95, 0x2C, 0xA1, 0xA1,
-  0x2C, 0x55, 0x90, 0x70, 0x90, 0x55, 0x95, 0x95,
-  0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0x2C, 0x2C, 0x2C,
-  0x95, 0x55, 0x95, 0x95, 0x2C, 0x2C, 0x2C, 0x2C,
-  0x95, 0x90, 0x55, 0x2C, 0xA1, 0xA1, 0x95, 0xCB,
-  0x70, 0x94, 0x90, 0x55, 0x95, 0xA1, 0xA1, 0xA1,
-  0x2C, 0x2C, 0x2C, 0x2C, 0x95, 0x95, 0x95, 0x95,
-  0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0xA1, 0x88,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0xB1, 0x47, 0xD5, 0x7D, 0x43,
-  0x20, 0x70, 0x95, 0x90, 0x55, 0x2C, 0xA1, 0xA1,
-  0x95, 0xCB, 0x70, 0x94, 0x90, 0x55, 0x95, 0xA1,
-  0xA1, 0xA1, 0x2C, 0x95, 0x2C, 0x2C, 0x95, 0x95,
-  0x95, 0x95, 0x95, 0x2C, 0x95, 0x95, 0x95, 0x95,
-  0x95, 0x90, 0x55, 0x2C, 0xD6, 0xD6, 0x2C, 0x90,
-  0x94, 0x70, 0x55, 0x95, 0x2C, 0xD6, 0xD6, 0xA1,
-  0x95, 0x95, 0x95, 0x2C, 0x2C, 0x95, 0x55, 0x55,
-  0xCB, 0xCB, 0xCB, 0x55, 0xCB, 0x55, 0x47, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x88, 0xB1, 0x3F, 0x92, 0x2B, 0x80,
-  0x20, 0x80, 0xD6, 0x70, 0x55, 0x2C, 0xD6, 0xD6,
-  0x2C, 0x90, 0x94, 0x70, 0x55, 0x95, 0x2C, 0xD6,
-  0xD6, 0xA1, 0x2C, 0x95, 0x95, 0x2C, 0x2C, 0x95,
-  0x95, 0x55, 0x90, 0xCB, 0xCB, 0xCB, 0xCB, 0x55,
-  0xD6, 0x55, 0x95, 0xA1, 0xD6, 0xA1, 0x55, 0x70,
-  0x94, 0x55, 0x95, 0xA1, 0xA1, 0xA1, 0xA1, 0x95,
-  0x55, 0x55, 0x55, 0x95, 0x55, 0x55, 0xCB, 0x90,
-  0x70, 0x90, 0xCB, 0x55, 0x55, 0xA1, 0xD8, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x88, 0xD8, 0xE1, 0x88, 0x20, 0x20,
-  0x88, 0x88, 0xE6, 0x55, 0x2C, 0xA1, 0xD6, 0xA1,
-  0x55, 0x70, 0x94, 0x55, 0x95, 0xA1, 0xA1, 0xA1,
-  0xA1, 0x95, 0x55, 0x55, 0x95, 0x95, 0x55, 0x55,
-  0x90, 0x90, 0x90, 0x90, 0xCB, 0x55, 0x55, 0x55,
-  0xD6, 0x2C, 0xA1, 0xD6, 0xD6, 0xA1, 0xCB, 0x70,
-  0x70, 0x95, 0x2C, 0xA1, 0xA1, 0x2C, 0x2C, 0x55,
-  0xCB, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-  0x55, 0x95, 0x2C, 0x95, 0x2C, 0xD6, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x80, 0xD6, 0xA1, 0xD6, 0xD6, 0xA1,
-  0xCB, 0x70, 0x70, 0x95, 0x2C, 0xA1, 0xA1, 0x2C,
-  0x2C, 0x55, 0xCB, 0xCB, 0x55, 0x55, 0x55, 0x55,
-  0x55, 0x55, 0x55, 0x95, 0x2C, 0x2C, 0x2C, 0x2C,
-  0xD6, 0xA1, 0xA1, 0xA1, 0xA1, 0x55, 0x70, 0x94,
-  0xCB, 0x95, 0xA1, 0xA1, 0x2C, 0x95, 0xCB, 0x55,
-  0x90, 0xCB, 0x55, 0x55, 0x55, 0x55, 0x95, 0xA1,
-  0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0x95, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x88, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x88, 0x95, 0xA1, 0xA1, 0xA1, 0x55,
-  0x70, 0x94, 0xCB, 0x95, 0xA1, 0xA1, 0x2C, 0x95,
-  0xCB, 0xCB, 0x90, 0xCB, 0x55, 0x55, 0x55, 0x55,
-  0x95, 0x2C, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1,
-  0x2C, 0x2C, 0x2C, 0x95, 0x95, 0xCB, 0x70, 0x70,
-  0x95, 0x2C, 0x2C, 0x95, 0xCB, 0x70, 0x90, 0xCB,
-  0xCB, 0x55, 0x55, 0xCB, 0x55, 0x55, 0x2C, 0xD6,
-  0xD6, 0xD6, 0xD6, 0xA1, 0x2C, 0x70, 0x20, 0x20,
-  0x88, 0x43, 0xD8, 0x43, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x88, 0x88, 0x43, 0x2B, 0xD8, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x3F, 0x2C, 0x95, 0x95, 0xCB,
-  0x70, 0x70, 0x95, 0x2C, 0x2C, 0x95, 0xCB, 0x90,
-  0x90, 0xCB, 0x55, 0xCB, 0x55, 0xCB, 0x55, 0x95,
-  0x2C, 0xD6, 0xD6, 0xD6, 0xD6, 0xA1, 0x2C, 0x2C,
-  0xA1, 0x95, 0x95, 0x55, 0xCB, 0x70, 0x90, 0x55,
-  0x2C, 0x2C, 0x2C, 0x55, 0x70, 0x70, 0x55, 0x95,
-  0x95, 0xCB, 0x90, 0x90, 0x90, 0x95, 0x2C, 0xA1,
-  0xD6, 0xD6, 0x2C, 0x2C, 0x95, 0x70, 0x20, 0x20,
-  0x80, 0x2B, 0x34, 0x2B, 0x88, 0x20, 0x20, 0x20,
-  0x88, 0xB1, 0x28, 0x28, 0x2B, 0x7D, 0x80, 0x20,
-  0x20, 0x20, 0x20, 0x92, 0x95, 0x55, 0xCB, 0x70,
-  0x90, 0x55, 0x2C, 0x2C, 0x2C, 0x55, 0x70, 0x70,
-  0x55, 0x95, 0x55, 0x55, 0x90, 0x90, 0x90, 0x55,
-  0x2C, 0xA1, 0xD6, 0xA1, 0x2C, 0x2C, 0x95, 0x95,
-  0xA1, 0x95, 0x55, 0xCB, 0x90, 0x70, 0xCB, 0x95,
-  0xA1, 0x95, 0x95, 0xCB, 0x90, 0xCB, 0x95, 0x2C,
-  0x95, 0x70, 0x70, 0x90, 0x55, 0x2C, 0xA1, 0xA1,
-  0x2C, 0x2C, 0x55, 0xCB, 0x55, 0x90, 0x20, 0x34,
-  0x90, 0x6D, 0x70, 0xD8, 0x43, 0x20, 0x20, 0x88,
-  0x3F, 0x55, 0xA1, 0x2A, 0xD6, 0x7D, 0x43, 0x20,
-  0x20, 0x20, 0x88, 0x7D, 0x55, 0xCB, 0x90, 0x70,
-  0xCB, 0x95, 0xA1, 0x95, 0x95, 0xCB, 0x70, 0xCB,
-  0x95, 0xA1, 0x95, 0x70, 0x70, 0xCB, 0x55, 0x2C,
-  0xA1, 0xA1, 0xA1, 0x95, 0x55, 0x55, 0x55, 0x95,
-  0x2C, 0x55, 0x90, 0x70, 0x94, 0x90, 0x95, 0x2C,
-  0x2C, 0x95, 0xCB, 0x90, 0x55, 0x95, 0xA1, 0xA1,
-  0x95, 0x90, 0x90, 0x95, 0xA1, 0xD6, 0xD6, 0x6D,
-  0xA1, 0x95, 0x55, 0xCB, 0x55, 0xCB, 0x20, 0x99,
-  0xBF, 0xA3, 0xA3, 0x90, 0x20, 0x20, 0x20, 0x92,
-  0x83, 0x6B, 0x6B, 0x6B, 0xA3, 0x70, 0x88, 0x20,
-  0x20, 0x20, 0x20, 0x2B, 0x90, 0x70, 0x94, 0x90,
-  0x95, 0x2C, 0x2C, 0x95, 0xCB, 0x90, 0x55, 0x95,
-  0xA1, 0x2C, 0x55, 0x90, 0x90, 0x95, 0xA1, 0xD6,
-  0xD6, 0x6D, 0xA1, 0x95, 0x55, 0xCB, 0x55, 0x55,
-  0x2C, 0x55, 0x70, 0x70, 0x94, 0x90, 0x95, 0x2C,
-  0x2C, 0x55, 0xCB, 0xCB, 0x95, 0x2C, 0x2C, 0x2C,
-  0x55, 0x55, 0x95, 0xA1, 0x6D, 0xBF, 0x6D, 0xD6,
-  0x95, 0x55, 0x90, 0xCB, 0x55, 0x95, 0x88, 0x95,
-  0x2C, 0x3F, 0x6D, 0x6B, 0x34, 0x20, 0x20, 0x47,
-  0x65, 0xD6, 0xE1, 0x3F, 0x2A, 0x6B, 0x2B, 0x20,
-  0x20, 0x20, 0x20, 0x43, 0x70, 0x70, 0x94, 0x90,
-  0x95, 0x2C, 0x2C, 0x55, 0x55, 0x55, 0x95, 0x2C,
-  0xA1, 0x2C, 0x55, 0xCB, 0x95, 0xA1, 0x6D, 0xBF,
-  0x6D, 0xD6, 0x2C, 0x55, 0x90, 0xCB, 0x95, 0x95,
-  0x95, 0x55, 0x70, 0x94, 0x70, 0x55, 0x2C, 0xA1,
-  0x2C, 0x55, 0xCB, 0x55, 0x2C, 0x95, 0x2C, 0x95,
-  0x95, 0x95, 0xA1, 0x6D, 0xBF, 0x2A, 0xD6, 0x95,
-  0x70, 0x94, 0x94, 0x70, 0x55, 0x55, 0x20, 0xBF,
-  0xC9, 0xB1, 0x99, 0x42, 0xB1, 0x61, 0x7D, 0x94,
-  0x65, 0xB1, 0x88, 0x99, 0xD5, 0xE5, 0x7F, 0x20,
-  0x20, 0x20, 0x20, 0x43, 0x70, 0x94, 0x70, 0x55,
-  0x2C, 0xA1, 0x2C, 0x55, 0x90, 0x55, 0x2C, 0x95,
-  0x2C, 0x95, 0x95, 0x2C, 0xA1, 0x6D, 0xBF, 0xBF,
-  0xD6, 0x55, 0x70, 0x94, 0x94, 0x70, 0xCB, 0x55,
-  0x55, 0xCB, 0x70, 0x94, 0x70, 0x95, 0xA1, 0xA1,
-  0x95, 0x55, 0x55, 0x95, 0x2C, 0x95, 0x95, 0x95,
-  0x95, 0xA1, 0x6D, 0x2A, 0x2A, 0xD6, 0x55, 0x94,
-  0xE6, 0xE6, 0x47, 0x70, 0x55, 0x95, 0x20, 0x2A,
-  0xD8, 0x43, 0xC9, 0x83, 0x98, 0x79, 0x34, 0x9F,
-  0x6B, 0x43, 0x20, 0x88, 0x2B, 0x65, 0xA0, 0x20,
-  0x20, 0x20, 0x20, 0xE1, 0x70, 0x94, 0x70, 0x95,
-  0xA1, 0xA1, 0x95, 0x55, 0x55, 0x95, 0x2C, 0x95,
-  0x95, 0x95, 0x95, 0xA1, 0x6D, 0xBF, 0x2A, 0xD6,
-  0x55, 0x94, 0xE6, 0xE6, 0x47, 0x70, 0x55, 0x55,
-  0x94, 0x70, 0x94, 0x47, 0x70, 0x95, 0x2C, 0x2C,
-  0x95, 0xCB, 0x95, 0x2C, 0x2C, 0xA1, 0x2C, 0x2C,
-  0xA1, 0xD6, 0x6D, 0x6D, 0xA1, 0xCB, 0x47, 0x28,
-  0xE6, 0x47, 0x70, 0x55, 0x95, 0xA1, 0x20, 0x2C,
-  0x7F, 0x88, 0xF0, 0xC6, 0x25, 0x5E, 0xCF, 0x2F,
-  0xE7, 0x9A, 0x20, 0x88, 0x99, 0x65, 0x3F, 0x20,
-  0x20, 0x20, 0x20, 0x34, 0x94, 0x47, 0x70, 0x95,
-  0xA1, 0x2C, 0x55, 0xCB, 0x95, 0x2C, 0x2C, 0xA1,
-  0x2C, 0x2C, 0xA1, 0xD6, 0x6D, 0x6D, 0xA1, 0xCB,
-  0x94, 0x28, 0xA0, 0x47, 0x70, 0x55, 0x95, 0x95,
-  0x47, 0x70, 0x90, 0x94, 0x70, 0x95, 0xA1, 0x2C,
-  0x55, 0x55, 0x2C, 0xA1, 0xA1, 0xA1, 0xA1, 0x2C,
-  0xA1, 0x6D, 0x2A, 0xD6, 0x55, 0x47, 0x28, 0x28,
-  0x47, 0x70, 0x55, 0x95, 0x2C, 0xA1, 0x20, 0x28,
-  0xEC, 0x86, 0xBE, 0x48, 0x3E, 0x3E, 0x3A, 0x25,
-  0x4E, 0xAE, 0x93, 0xD7, 0xEC, 0xD1, 0x34, 0x20,
-  0x20, 0x20, 0x20, 0x43, 0x55, 0x94, 0x70, 0x95,
-  0xA1, 0xA1, 0x55, 0xCB, 0x2C, 0xA1, 0xA1, 0xA1,
-  0xA1, 0x2C, 0xA1, 0x6D, 0x6D, 0xD6, 0x55, 0x47,
-  0x28, 0x28, 0x47, 0x70, 0x55, 0x95, 0x2C, 0x2C,
-  0x95, 0x95, 0x55, 0x90, 0xCB, 0x2C, 0xA1, 0xA1,
-  0x55, 0x55, 0x2C, 0xD6, 0xD6, 0xA1, 0xA1, 0x2C,
-  0xD6, 0x6D, 0x6D, 0xA1, 0x70, 0x28, 0xD5, 0xE6,
-  0x70, 0x55, 0x95, 0x2C, 0xA1, 0xD6, 0x20, 0xE1,
-  0x26, 0x84, 0x76, 0x73, 0x9C, 0x22, 0x4E, 0x35,
-  0x8C, 0x7A, 0x4E, 0xDC, 0x8E, 0x7E, 0x3D, 0x88,
-  0x20, 0x20, 0x20, 0x88, 0x2C, 0x90, 0x90, 0x95,
-  0xA1, 0x2C, 0x55, 0x55, 0x2C, 0xD6, 0xD6, 0xD6,
-  0x2C, 0x2C, 0xD6, 0x2A, 0x6D, 0x2C, 0x70, 0x28,
-  0xD5, 0xE6, 0x70, 0x55, 0x95, 0xA1, 0x2C, 0xA1,
-  0xBF, 0xA1, 0x95, 0xCB, 0xCB, 0x2C, 0xA1, 0xA1,
-  0x95, 0x95, 0xA1, 0xD6, 0xD6, 0xA1, 0x2C, 0x95,
-  0xD6, 0x6D, 0xD6, 0x95, 0x94, 0x28, 0xE6, 0x70,
-  0x55, 0x95, 0xA1, 0xA1, 0xA1, 0xD6, 0x20, 0x57,
-  0xE4, 0xDF, 0x50, 0x3E, 0x22, 0x4E, 0x35, 0x8C,
-  0x8C, 0x52, 0x52, 0x7A, 0x4E, 0x58, 0xD7, 0x20,
-  0x20, 0x20, 0x20, 0x88, 0x2C, 0xCB, 0x55, 0x2C,
-  0xA1, 0xA1, 0x95, 0x95, 0xA1, 0xD6, 0xD6, 0xA1,
-  0x2C, 0x95, 0xA1, 0x6D, 0x6D, 0x95, 0x47, 0xA0,
-  0xE6, 0x70, 0x55, 0x95, 0x2C, 0xA1, 0xA1, 0xA1,
-  0xD2, 0x95, 0x55, 0x90, 0x55, 0x2C, 0xD6, 0xA1,
-  0x95, 0x95, 0xA1, 0xD6, 0xD6, 0x2C, 0x95, 0x2C,
-  0xA1, 0x6D, 0xA1, 0x55, 0x94, 0x47, 0x94, 0xCB,
-  0x55, 0x95, 0x2C, 0xA1, 0xD6, 0xD6, 0x59, 0xC8,
-  0xE3, 0x76, 0x2D, 0x3E, 0x22, 0x4E, 0x8C, 0x35,
-  0x52, 0x52, 0xEE, 0x3A, 0x4D, 0xED, 0x24, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x28, 0xCB, 0x55, 0x2C,
-  0xD6, 0xA1, 0x95, 0x95, 0xA1, 0xD6, 0xA1, 0x2C,
-  0x95, 0x2C, 0xD6, 0x6D, 0xA1, 0x55, 0x94, 0xE6,
-  0x70, 0xCB, 0x55, 0x95, 0xA1, 0xD6, 0xD6, 0xA1,
-  0xD0, 0x94, 0x94, 0x90, 0x55, 0x2C, 0xA1, 0xA1,
-  0x55, 0x95, 0xA1, 0xA1, 0xA1, 0x2C, 0x95, 0x2C,
-  0xA1, 0xD6, 0x2C, 0x70, 0x94, 0x94, 0x94, 0x94,
-  0x70, 0x55, 0xA1, 0xD6, 0xA1, 0xD6, 0x88, 0x77,
-  0x38, 0xC4, 0x3E, 0x69, 0x4E, 0x35, 0x8C, 0xEE,
-  0x35, 0x89, 0x30, 0x30, 0x4A, 0x48, 0x3C, 0x20,
-  0x20, 0x88, 0x20, 0x20, 0xD8, 0x2C, 0x55, 0x2C,
-  0xD6, 0xA1, 0x95, 0x95, 0x2C, 0xD6, 0xA1, 0x2C,
-  0x95, 0x2C, 0xA1, 0xD6, 0x2C, 0x90, 0x94, 0x47,
-  0x94, 0x94, 0x70, 0x55, 0x2C, 0xD6, 0xA1, 0x95,
-  0x95, 0x28, 0x47, 0x90, 0x95, 0x2C, 0xA1, 0x2C,
-  0x95, 0x55, 0x95, 0xA1, 0xD6, 0xA1, 0x2C, 0x2C,
-  0xA1, 0xA1, 0x55, 0x70, 0x94, 0x47, 0x94, 0x94,
-  0x70, 0x2C, 0xD6, 0xD6, 0x2C, 0xA1, 0x43, 0x98,
-  0x54, 0x48, 0x3E, 0x22, 0x35, 0xEE, 0xEE, 0x9C,
-  0x4D, 0x45, 0x75, 0x4A, 0xDF, 0x7B, 0x3D, 0x20,
-  0xD8, 0x28, 0x2B, 0x88, 0x20, 0x95, 0x95, 0x2C,
-  0xA1, 0x2C, 0x55, 0x55, 0x2C, 0xA1, 0xD6, 0xA1,
-  0x2C, 0x95, 0xA1, 0x2C, 0x55, 0x70, 0x94, 0x94,
-  0x94, 0x94, 0x70, 0x95, 0xD6, 0xD6, 0x2C, 0x95,
-  0x70, 0x28, 0x47, 0x55, 0x95, 0x2C, 0x2C, 0x2C,
-  0x95, 0x95, 0x95, 0xA1, 0xA1, 0xA1, 0x95, 0x55,
-  0x95, 0x95, 0x55, 0x70, 0x70, 0x70, 0x94, 0x70,
-  0x55, 0xD6, 0x6D, 0xD6, 0x95, 0x2C, 0x20, 0x43,
-  0xBB, 0xC8, 0x36, 0x30, 0x30, 0x38, 0x45, 0x6E,
-  0xE3, 0x75, 0x78, 0x37, 0xBD, 0xD9, 0x3F, 0x20,
-  0x88, 0xD5, 0x70, 0xB1, 0x88, 0xA0, 0x95, 0x2C,
-  0x2C, 0xA1, 0x95, 0x55, 0x95, 0xA1, 0xA1, 0xA1,
-  0x2C, 0x55, 0x95, 0x2C, 0x55, 0x70, 0x70, 0x70,
-  0x94, 0x70, 0x55, 0xD6, 0x6D, 0x6D, 0x95, 0x55,
-  0x94, 0x47, 0x70, 0x95, 0x2C, 0x2C, 0x2C, 0xA1,
-  0x2C, 0x95, 0x2C, 0xA1, 0xD6, 0xA1, 0x2C, 0x55,
-  0x55, 0x95, 0x95, 0x55, 0x55, 0x55, 0x55, 0x95,
-  0xA1, 0x6D, 0x4B, 0xD6, 0x55, 0xD6, 0x20, 0xD8,
-  0xD6, 0x67, 0xDA, 0x4D, 0xED, 0x62, 0x78, 0x78,
-  0x23, 0x84, 0x67, 0xF5, 0x4B, 0xBF, 0x90, 0x88,
-  0x88, 0x2B, 0x47, 0x99, 0x20, 0x43, 0xD6, 0x2C,
-  0x2C, 0xA1, 0x2C, 0x95, 0x2C, 0xA1, 0xD6, 0xA1,
-  0x95, 0x95, 0x55, 0x95, 0x55, 0x55, 0x55, 0x55,
-  0x55, 0x95, 0xD6, 0x6D, 0xBF, 0xD6, 0x55, 0xCB,
-  0x55, 0x55, 0x55, 0x2C, 0x2C, 0x2C, 0x2C, 0xA1,
-  0x2C, 0x2C, 0x2C, 0xA1, 0xA1, 0x2C, 0x2C, 0x95,
-  0x55, 0x95, 0x95, 0x2C, 0x2C, 0x2C, 0x2C, 0xA1,
-  0x6D, 0x2A, 0x2A, 0xA1, 0x55, 0x55, 0x20, 0xD8,
-  0x6D, 0xAB, 0x96, 0x7E, 0x64, 0x53, 0x36, 0x36,
-  0xC6, 0x63, 0x6D, 0xD0, 0x6B, 0xE5, 0xA3, 0x7D,
-  0x20, 0x88, 0x80, 0x88, 0x20, 0x20, 0xC9, 0xA1,
-  0x2C, 0xA1, 0xA1, 0x2C, 0x2C, 0xA1, 0xA1, 0xA1,
-  0x95, 0x95, 0x55, 0x95, 0x95, 0x2C, 0x2C, 0x2C,
-  0x2C, 0xA1, 0x6D, 0xBF, 0x6D, 0xA1, 0x55, 0x55,
-  0x95, 0x95, 0x95, 0x95, 0x2C, 0x2C, 0x2C, 0xA1,
-  0xA1, 0x95, 0x95, 0x2C, 0x2C, 0x2C, 0x2C, 0x95,
-  0x55, 0x55, 0x2C, 0x2C, 0xA1, 0xA1, 0xD6, 0xD6,
-  0x6D, 0x6D, 0xA1, 0x55, 0x2C, 0xD8, 0x20, 0xB1,
-  0xA3, 0x4B, 0x6D, 0xD9, 0xA7, 0x6C, 0xAF, 0xB2,
-  0x6D, 0x2A, 0x83, 0x42, 0xE5, 0xE5, 0x65, 0x2C,
-  0x20, 0x20, 0x88, 0x20, 0x20, 0x20, 0x88, 0x95,
-  0x2C, 0xA1, 0x2C, 0x95, 0x95, 0x2C, 0x2C, 0x2C,
-  0x2C, 0x95, 0x55, 0x55, 0x2C, 0x2C, 0xA1, 0xA1,
-  0xD6, 0xD6, 0x6D, 0x6D, 0xA1, 0x55, 0xCB, 0x55,
-  0x95, 0x55, 0x95, 0x95, 0x2C, 0x2C, 0x95, 0x2C,
-  0x2C, 0x95, 0x95, 0x95, 0x95, 0x95, 0x2C, 0x95,
-  0x55, 0x95, 0x2C, 0x2C, 0xA1, 0xA1, 0xD6, 0xA1,
-  0xA1, 0x2C, 0x55, 0x55, 0x28, 0x88, 0x43, 0x2A,
-  0xE5, 0xA3, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D,
-  0xBF, 0xA3, 0x42, 0xE5, 0xE5, 0xE5, 0xE5, 0x65,
-  0xB1, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xD8,
-  0xD6, 0x2C, 0x2C, 0x95, 0x95, 0x95, 0x95, 0x2C,
-  0x95, 0x95, 0x55, 0x95, 0x2C, 0x2C, 0xA1, 0xA1,
-  0xA1, 0xA1, 0xA1, 0x2C, 0x95, 0x90, 0x90, 0x55,
-  0x90, 0xCB, 0x55, 0x95, 0x95, 0x95, 0x95, 0x95,
-  0x2C, 0x2C, 0x95, 0x55, 0x95, 0x95, 0x95, 0x55,
-  0x55, 0xCB, 0x55, 0x2C, 0x95, 0x95, 0x95, 0x95,
-  0x55, 0x90, 0x90, 0x90, 0xE1, 0x43, 0x28, 0xE5,
-  0xE5, 0x65, 0xD0, 0x6D, 0x6D, 0x6D, 0x2A, 0xD2,
-  0x42, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xD6, 0x20, 0x20, 0x20, 0x20, 0x20, 0x88, 0x88,
-  0xD5, 0x2C, 0x2C, 0x2C, 0x95, 0x55, 0x95, 0x95,
-  0x95, 0x55, 0x55, 0xCB, 0x55, 0x95, 0x2C, 0x95,
-  0x95, 0x95, 0x55, 0x90, 0x70, 0x70, 0x70, 0x90,
-  0x70, 0x70, 0xCB, 0x55, 0x55, 0x95, 0x95, 0x95,
-  0x2C, 0x95, 0x95, 0x55, 0x55, 0x55, 0x55, 0xCB,
-  0x70, 0x70, 0x70, 0xCB, 0x90, 0x90, 0x70, 0x94,
-  0x94, 0x94, 0x2C, 0x80, 0x20, 0xE1, 0xA3, 0xE5,
-  0xE5, 0xE5, 0x42, 0xEC, 0xD0, 0x83, 0xA3, 0x65,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0x65, 0x7D, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x88, 0x2C, 0x95, 0x95, 0x95, 0x55, 0x55, 0x55,
-  0x55, 0xCB, 0x70, 0x70, 0x90, 0x90, 0x90, 0x90,
-  0x70, 0x94, 0x94, 0x94, 0x70, 0x70, 0x70, 0x70,
-  0x70, 0x55, 0x55, 0x55, 0x95, 0x95, 0x95, 0x95,
-  0x2C, 0x2C, 0x95, 0x55, 0x55, 0x55, 0x55, 0x55,
-  0x90, 0x70, 0x90, 0x55, 0x55, 0xCB, 0x70, 0x94,
-  0x94, 0x95, 0xD8, 0x20, 0x88, 0x70, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0x65, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0x47, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0xE1, 0x6D, 0x2C, 0x95, 0x55, 0x55, 0x55,
-  0x55, 0x55, 0x90, 0x70, 0x70, 0x55, 0x55, 0xCB,
-  0x70, 0x94, 0x94, 0x94, 0x70, 0x90, 0x70, 0x94,
-  0x55, 0x2C, 0x2C, 0x2C, 0x95, 0x2C, 0x95, 0x95,
-  0x2C, 0x2C, 0x2C, 0x55, 0x55, 0x55, 0x55, 0x55,
-  0xCB, 0xCB, 0x95, 0x2C, 0x2C, 0x95, 0x55, 0x90,
-  0x55, 0x99, 0x20, 0x20, 0xE1, 0xA3, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xD6, 0x88, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x2B, 0x6D, 0x95, 0x95, 0x55, 0x55,
-  0x55, 0x55, 0xCB, 0x55, 0x95, 0x2C, 0x2C, 0x95,
-  0x55, 0x90, 0xCB, 0xCB, 0xCB, 0xCB, 0x90, 0x70,
-  0x2C, 0xD6, 0xD6, 0x2C, 0x2C, 0x95, 0x95, 0x95,
-  0x95, 0x95, 0x95, 0x2C, 0x95, 0x95, 0x95, 0x95,
-  0x95, 0x95, 0x2C, 0xA1, 0x2C, 0x95, 0x55, 0x95,
-  0xE6, 0x88, 0x20, 0x20, 0x3F, 0xA3, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0x42, 0xA3, 0x88, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x88, 0x2B, 0xD6, 0x95, 0x95, 0x95,
-  0x95, 0x95, 0x95, 0x95, 0x2C, 0xA1, 0x2C, 0x95,
-  0x55, 0x55, 0x95, 0x95, 0x95, 0x55, 0x55, 0x55,
-  0xA1, 0xD6, 0xD6, 0xA1, 0x2C, 0x2C, 0x95, 0x2C,
-  0x2C, 0x2C, 0x95, 0x2C, 0x95, 0x95, 0x55, 0x95,
-  0x95, 0x2C, 0x2C, 0x2C, 0x95, 0xCB, 0xCB, 0x94,
-  0x20, 0x20, 0x20, 0x20, 0xE6, 0x83, 0x65, 0xE5,
-  0xE5, 0xE5, 0xE5, 0x42, 0x6B, 0x6B, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0x42, 0x6B, 0x6B, 0xA3, 0xD2,
-  0xD2, 0x6B, 0xC9, 0x20, 0x20, 0x88, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x88, 0x8A, 0xA1, 0x95, 0x95,
-  0x95, 0x55, 0x95, 0x2C, 0xA1, 0x2C, 0x95, 0xCB,
-  0xCB, 0x55, 0x95, 0x95, 0x95, 0x55, 0x55, 0x95,
-  0x6D, 0x6D, 0x6D, 0xD6, 0xA1, 0x2C, 0x2C, 0x95,
-  0x2C, 0x95, 0x2C, 0x95, 0x95, 0x95, 0x95, 0x95,
-  0x95, 0x95, 0x95, 0x55, 0x70, 0x70, 0x2C, 0x80,
-  0x88, 0x20, 0x20, 0x80, 0x94, 0xD6, 0x32, 0x6B,
-  0xE5, 0xE5, 0xE5, 0x42, 0x6B, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xA3, 0xD2, 0xD0, 0xBF, 0x2A,
-  0x2A, 0xD0, 0x6D, 0x34, 0x20, 0xE1, 0x88, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x88, 0xA1, 0x95, 0x95,
-  0x95, 0x95, 0x95, 0x95, 0x95, 0x55, 0x70, 0x70,
-  0x70, 0x90, 0xCB, 0xCB, 0xCB, 0x95, 0x95, 0x2C,
-  0xD0, 0x6D, 0xD6, 0xD6, 0xA1, 0xA1, 0xA1, 0x2C,
-  0x2C, 0x2C, 0x2C, 0x95, 0x55, 0x55, 0x55, 0x95,
-  0x95, 0x2C, 0x95, 0x55, 0xCB, 0xCB, 0x95, 0x88,
-  0x20, 0x20, 0x88, 0xD8, 0x2C, 0xD1, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0x65, 0x65, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0x42, 0x6B, 0xEC,
-  0xBF, 0x2A, 0xEC, 0x95, 0x20, 0x34, 0x2B, 0xE1,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x99, 0x95, 0x55,
-  0x55, 0x55, 0x95, 0x95, 0x95, 0x55, 0xCB, 0xCB,
-  0x55, 0x55, 0xCB, 0xCB, 0xCB, 0x55, 0x95, 0x95,
-  0x32, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0x2C, 0x2C,
-  0xA1, 0x95, 0x95, 0x95, 0x55, 0xCB, 0xCB, 0x55,
-  0x95, 0x95, 0x95, 0x95, 0x95, 0x55, 0x99, 0x20,
-  0xE1, 0xE1, 0x43, 0x47, 0x6B, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0x42, 0xEC, 0xBF, 0xA3, 0x8A, 0x20, 0x88, 0xD8,
-  0x2B, 0x20, 0x20, 0x20, 0x88, 0x88, 0x2C, 0xCB,
-  0xCB, 0x95, 0x95, 0x2C, 0x95, 0x95, 0x55, 0x95,
-  0x55, 0x55, 0x55, 0x55, 0x55, 0x95, 0x55, 0x95,
-  0x6D, 0x55, 0x55, 0x55, 0x95, 0x95, 0x2C, 0x95,
-  0x2C, 0x95, 0x95, 0x55, 0x55, 0x55, 0x55, 0x95,
-  0x95, 0x95, 0x95, 0x95, 0x95, 0xA1, 0x34, 0x20,
-  0xC9, 0x20, 0xE1, 0xA3, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xA3, 0x83, 0x6D, 0x20, 0x88, 0x88,
-  0x2B, 0x34, 0x20, 0x20, 0x20, 0x88, 0xD5, 0x55,
-  0x55, 0x55, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95,
-  0x95, 0x95, 0x95, 0x95, 0x55, 0x55, 0x95, 0x95,
-  0x2C, 0x55, 0xCB, 0x55, 0xCB, 0x55, 0x55, 0x95,
-  0x95, 0x95, 0x95, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C,
-  0x2C, 0x95, 0x95, 0x55, 0x95, 0x2C, 0x20, 0xD8,
-  0xE1, 0x20, 0x70, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0x65, 0xA3, 0x92, 0x43, 0x7D,
-  0xD8, 0xC9, 0x88, 0x20, 0x20, 0x20, 0x43, 0xD6,
-  0x2C, 0x2C, 0x95, 0x95, 0x95, 0x55, 0x95, 0x2C,
-  0x95, 0x95, 0x95, 0x95, 0x95, 0x2C, 0x95, 0x2C,
-  0xA1, 0x55, 0x55, 0x55, 0x55, 0x95, 0x95, 0x55,
-  0x55, 0x55, 0x95, 0x95, 0x2C, 0x2C, 0xA1, 0x2C,
-  0xA1, 0x2C, 0x2C, 0x95, 0x2C, 0x99, 0x88, 0xB1,
-  0x20, 0xD8, 0x42, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xCB, 0x34, 0x8A,
-  0xC9, 0x34, 0x2B, 0x20, 0x20, 0x20, 0x20, 0x90,
-  0xA1, 0xA1, 0xA1, 0x2C, 0x2C, 0x95, 0x95, 0x2C,
-  0x2C, 0x95, 0x95, 0x95, 0x95, 0x2C, 0x2C, 0x2C,
-  0xD6, 0x2C, 0x55, 0x55, 0x95, 0x2C, 0x2C, 0x2C,
-  0x55, 0xCB, 0x55, 0x2C, 0x2C, 0xA1, 0x2C, 0xA1,
-  0xA1, 0xA1, 0x2C, 0x2C, 0x6D, 0x43, 0xD8, 0x80,
-  0x88, 0xCB, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0x32, 0x80, 0xE1,
-  0x80, 0x20, 0xB1, 0x20, 0x20, 0x20, 0x20, 0xC9,
-  0xD6, 0xA1, 0xA1, 0xA1, 0x2C, 0xA1, 0x2C, 0x2C,
-  0x2C, 0x55, 0x55, 0x55, 0x95, 0x95, 0x95, 0x55,
-  0xD6, 0x95, 0x95, 0x95, 0x2C, 0xA1, 0x2C, 0x2C,
-  0x95, 0x95, 0x95, 0x95, 0x95, 0x2C, 0x95, 0x2C,
-  0x2C, 0x2C, 0x2C, 0x95, 0xCB, 0x20, 0xC9, 0x20,
-  0xE1, 0xA3, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0x42, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xD8, 0x20,
-  0x20, 0x20, 0x2B, 0x43, 0x20, 0x20, 0x20, 0x88,
-  0xD6, 0x2C, 0x2C, 0x2C, 0x95, 0x95, 0x95, 0x55,
-  0x95, 0x55, 0x55, 0xCB, 0x55, 0xCB, 0xCB, 0x55,
-  0x2C, 0x55, 0x55, 0x95, 0x2C, 0x2C, 0xA1, 0x95,
-  0x55, 0x95, 0x55, 0x95, 0x95, 0x95, 0x95, 0x95,
-  0x55, 0xCB, 0x70, 0xCB, 0xC9, 0x80, 0x2B, 0x20,
-  0xA0, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0x42, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0x92, 0x20,
-  0x20, 0x20, 0xE1, 0xD8, 0x20, 0x20, 0x20, 0x20,
-  0x95, 0x95, 0x55, 0xCB, 0x90, 0x90, 0x70, 0x90,
-  0x90, 0x90, 0xCB, 0xCB, 0xCB, 0xCB, 0x55, 0x95,
-  0x95, 0x55, 0x55, 0x95, 0x95, 0x2C, 0x2C, 0x2C,
-  0x95, 0x95, 0x55, 0x55, 0x55, 0x95, 0x95, 0x55,
-  0x90, 0x47, 0xA0, 0x55, 0x20, 0x2B, 0x43, 0x88,
-  0x6D, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0x6B, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0x28, 0x20,
-  0x20, 0x20, 0xE1, 0xE1, 0x20, 0x20, 0x20, 0x20,
-  0x28, 0x55, 0x90, 0x47, 0xA0, 0x47, 0x94, 0x70,
-  0x55, 0x95, 0x95, 0x55, 0xCB, 0x55, 0x55, 0x2C,
-  0x2C, 0x2C, 0x95, 0x95, 0x95, 0x2C, 0x2C, 0x2C,
-  0x95, 0x2C, 0x95, 0x95, 0x95, 0x95, 0x95, 0x55,
-  0x94, 0xE6, 0x70, 0x2B, 0x88, 0x2B, 0x88, 0xE1,
-  0x65, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0x6B, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0x47, 0x20,
-  0x20, 0x20, 0xE1, 0x34, 0x20, 0x20, 0x20, 0x20,
-  0xB1, 0x95, 0x94, 0xE6, 0xA0, 0x47, 0x70, 0x55,
-  0x2C, 0xA1, 0x2C, 0x55, 0x90, 0xCB, 0x2C, 0xD6,
-  0x6D, 0xA1, 0x2C, 0x95, 0x95, 0xA1, 0x2C, 0xA1,
-  0x2C, 0x2C, 0x95, 0x95, 0x95, 0x95, 0x95, 0x55,
-  0x70, 0xE6, 0x70, 0x20, 0x20, 0x7D, 0x20, 0x8A,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0x65, 0xA3, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0x94, 0x20,
-  0x20, 0x20, 0xD8, 0x88, 0x20, 0x20, 0x20, 0x20,
-  0xD8, 0x2C, 0x94, 0x47, 0x47, 0x90, 0x95, 0x95,
-  0xA1, 0x6D, 0xA1, 0x90, 0x94, 0x55, 0x2C, 0xD6,
-  0xD0, 0xA1, 0x95, 0x95, 0x2C, 0x2C, 0xA1, 0x2C,
-  0x95, 0x95, 0x55, 0x55, 0x55, 0x95, 0x2C, 0x2C,
-  0xCB, 0x95, 0xD8, 0x20, 0x20, 0xB1, 0x88, 0x28,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE2, 0xA3, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xCB, 0x20,
-  0x20, 0x20, 0x2B, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x88, 0xD6, 0x55, 0x47, 0x94, 0x55, 0x2C, 0xA1,
-  0xA1, 0xD6, 0x95, 0x94, 0x94, 0x55, 0xD6, 0x6D,
-  0xBF, 0x95, 0x90, 0xCB, 0x2C, 0x2C, 0x2C, 0x2C,
-  0x55, 0x95, 0xCB, 0x90, 0x90, 0x95, 0x2C, 0x95,
-  0x90, 0x70, 0x20, 0x20, 0x34, 0x8A, 0x20, 0x94,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0x65, 0x6B, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xCB, 0x20,
-  0x20, 0x88, 0x2B, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x88, 0xD6, 0xCB, 0x47, 0x94, 0x55, 0xA1, 0xD6,
-  0xD6, 0x2C, 0xCB, 0x47, 0x70, 0xA1, 0x6D, 0x2A,
-  0x95, 0x47, 0x47, 0x70, 0x95, 0xA1, 0x2C, 0x95,
-  0x55, 0x55, 0x90, 0x90, 0x55, 0x55, 0x55, 0x90,
-  0x47, 0xD5, 0x20, 0x20, 0x80, 0xD5, 0x43, 0xCB,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0x42, 0x6B, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xCB, 0x20,
-  0x20, 0x80, 0x34, 0x20, 0x20, 0x20, 0x88, 0x20,
-  0x20, 0x2C, 0x47, 0xE6, 0x70, 0x2C, 0xD6, 0xD6,
-  0xA1, 0x2C, 0x55, 0xCB, 0x95, 0xA1, 0x6D, 0xD6,
-  0x90, 0x47, 0x47, 0x90, 0x2C, 0xA1, 0x2C, 0x95,
-  0x55, 0x55, 0x90, 0x90, 0x55, 0x55, 0x55, 0x70,
-  0x94, 0x8A, 0x20, 0x88, 0x88, 0xE1, 0xD8, 0x95,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE2, 0x42, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0x47, 0x20,
-  0x43, 0x7D, 0x43, 0x80, 0x88, 0x20, 0x20, 0x20,
-  0x88, 0xCB, 0x94, 0x70, 0x55, 0xA1, 0xD6, 0xD6,
-  0xA1, 0x2C, 0x2C, 0x95, 0xA1, 0xA1, 0xD6, 0xA1,
-  0x94, 0xE6, 0x47, 0x55, 0x2C, 0xD6, 0xA1, 0x95,
-  0x55, 0x55, 0xCB, 0xCB, 0x55, 0x55, 0xCB, 0xCB,
-  0x55, 0xA0, 0x43, 0x86, 0x86, 0x43, 0xD8, 0xCB,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0x65, 0x6B, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0x3F, 0x80,
-  0xD8, 0x80, 0x88, 0x34, 0xD8, 0x2B, 0xD8, 0x20,
-  0x99, 0x90, 0x55, 0x95, 0x2C, 0xA1, 0xD6, 0xD6,
-  0xA1, 0x95, 0x95, 0x95, 0x2C, 0x2C, 0x2C, 0x2C,
-  0x94, 0x94, 0x70, 0x2C, 0xA1, 0xD6, 0xA1, 0x2C,
-  0x55, 0x55, 0xCB, 0x55, 0x55, 0x55, 0x55, 0x55,
-  0x95, 0x44, 0xBC, 0x3E, 0x5D, 0xD3, 0x79, 0x92,
-  0xA3, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0x65, 0x42, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0x65, 0x9A, 0x34,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x43, 0x99, 0xE1,
-  0x70, 0x55, 0x95, 0xA1, 0xD6, 0xD6, 0xD6, 0xA1,
-  0x2C, 0x95, 0x55, 0x55, 0x95, 0x95, 0x95, 0x95,
-  0x70, 0x70, 0x55, 0x2C, 0xD6, 0xD6, 0xA1, 0x95,
-  0x55, 0x90, 0xCB, 0xCB, 0x55, 0x55, 0x2C, 0x2C,
-  0x32, 0x9D, 0xEB, 0x5D, 0x69, 0x49, 0x84, 0xF0,
-  0xB1, 0xEC, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0x42, 0x6B, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xC1, 0x4E, 0x21, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x34, 0xC9, 0xD8,
-  0xBB, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0x2C, 0x2C,
-  0x95, 0x55, 0x55, 0x55, 0x95, 0x95, 0x2C, 0x2C,
-  0x55, 0xCB, 0x95, 0x2C, 0xA1, 0xA1, 0x2C, 0x55,
-  0x90, 0x70, 0x90, 0x55, 0x95, 0x95, 0x6D, 0xD0,
-  0xC2, 0x48, 0x6A, 0x49, 0x69, 0x82, 0x5D, 0x2F,
-  0x59, 0x7D, 0xBF, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0x65, 0x6B, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xEA, 0xC7, 0x7E, 0x66,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x34, 0x43, 0x5A,
-  0x46, 0x27, 0xA1, 0xA1, 0xA1, 0xA1, 0x2C, 0x95,
-  0x95, 0x55, 0x95, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C,
-  0x95, 0x90, 0x55, 0x2C, 0xA1, 0xA1, 0x95, 0x55,
-  0x94, 0x94, 0x2C, 0x2A, 0x72, 0x3B, 0x56, 0xDD,
-  0xDF, 0x29, 0x5D, 0x49, 0x89, 0x5D, 0x3E, 0x69,
-  0x93, 0x66, 0x34, 0xA1, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0x65, 0x42, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xEA, 0x3E, 0x5A, 0x66,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x5B, 0x73,
-  0x89, 0x4C, 0xBF, 0x2C, 0x95, 0x2C, 0x2C, 0x95,
-  0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95,
-  0x2C, 0x70, 0x55, 0x2C, 0xD6, 0xD6, 0x2C, 0xCB,
-  0x70, 0x55, 0xE7, 0x60, 0x4A, 0x48, 0xCD, 0x4A,
-  0x29, 0x73, 0x5D, 0x82, 0x49, 0x49, 0x49, 0x49,
-  0x3A, 0x57, 0x88, 0x88, 0x70, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0x42, 0x73, 0x50, 0xBE, 0x79,
-  0x20, 0x20, 0x20, 0x20, 0x66, 0xCC, 0x37, 0x9C,
-  0x3E, 0xCE, 0xBF, 0x95, 0x95, 0x95, 0x2C, 0x95,
-  0x95, 0x55, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0x55,
-  0xA1, 0x55, 0x95, 0xA1, 0xD6, 0xA1, 0x55, 0x94,
-  0x94, 0xE8, 0x60, 0xC4, 0x3E, 0x2D, 0x2D, 0x2D,
-  0x33, 0x5D, 0x82, 0x49, 0x49, 0x49, 0x49, 0x49,
-  0x89, 0xAA, 0x59, 0x20, 0x20, 0x28, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xEC, 0x4A, 0x2D, 0x50, 0x78, 0x2E,
-  0x57, 0x51, 0xF0, 0x57, 0x31, 0x4D, 0x50, 0x2D,
-  0x5D, 0xF2, 0xA1, 0x2C, 0x95, 0x95, 0x55, 0x55,
-  0x90, 0x90, 0x70, 0x90, 0xCB, 0x55, 0x55, 0x55,
-  0x6D, 0x2C, 0xA1, 0xD6, 0xD6, 0xA1, 0x55, 0x94,
-  0x70, 0xB9, 0x75, 0x50, 0x3E, 0x49, 0x49, 0x49,
-  0x5D, 0x82, 0x49, 0x49, 0x82, 0x49, 0x49, 0x49,
-  0x89, 0x69, 0x4F, 0x20, 0x20, 0x20, 0x8A, 0x42,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0x83, 0x4A, 0x3A, 0x50, 0x62, 0x23,
-  0x81, 0xB8, 0xB8, 0xE9, 0x5F, 0x29, 0x33, 0x5D,
-  0x5D, 0x73, 0xE8, 0xCB, 0x55, 0x55, 0x55, 0x55,
-  0x55, 0x55, 0x95, 0x95, 0x2C, 0x2C, 0x2C, 0x2C,
-  0xD6, 0xA1, 0xA1, 0xA1, 0xA1, 0x55, 0x70, 0x70,
-  0xCB, 0x68, 0x75, 0x50, 0x82, 0x49, 0x49, 0x49,
-  0x5D, 0x49, 0x49, 0x5D, 0x49, 0x49, 0x5D, 0x82,
-  0x69, 0x5D, 0x25, 0xF0, 0x20, 0x20, 0x20, 0xE1,
-  0x2A, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0x4B, 0xF4, 0xDF, 0x50, 0x73, 0x76, 0x48,
-  0x75, 0xDF, 0x75, 0x62, 0xC4, 0x33, 0x82, 0x49,
-  0x5D, 0x5D, 0xA8, 0xF5, 0x55, 0x55, 0x55, 0x55,
-  0x2C, 0x2C, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1,
-  0x2C, 0x2C, 0x2C, 0x95, 0x95, 0xCB, 0x70, 0x70,
-  0x95, 0x83, 0x5F, 0xEA, 0x2D, 0x49, 0x49, 0x49,
-  0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
-  0x5D, 0x49, 0x22, 0x5A, 0x79, 0x20, 0x20, 0x20,
-  0x80, 0xD2, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0x65, 0xD0, 0x63, 0x5F, 0x29, 0x2D, 0x2D, 0xEA,
-  0x29, 0x29, 0x76, 0x50, 0x2D, 0x82, 0x49, 0x49,
-  0x3E, 0x49, 0x5C, 0xB0, 0xBA, 0x95, 0x55, 0x55,
-  0x2C, 0xA1, 0xD6, 0xD6, 0xD6, 0xA1, 0x2C, 0x2C,
-  0xA1, 0x95, 0x95, 0x55, 0xCB, 0x70, 0x70, 0x55,
-  0x2C, 0x83, 0x60, 0x76, 0x5D, 0x49, 0x49, 0x49,
-  0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
-  0x49, 0x5D, 0x89, 0xDC, 0x8B, 0x20, 0x20, 0x20,
-  0x20, 0x95, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE2, 0x32, 0x85, 0xE3, 0x29, 0x2D, 0x33, 0x2D,
-  0x2D, 0x2D, 0x6A, 0x2D, 0x33, 0x5D, 0x49, 0x82,
-  0x49, 0x49, 0x82, 0x73, 0x5C, 0x9E, 0x2C, 0x55,
-  0x2C, 0xA1, 0xD6, 0xA1, 0x2C, 0x2C, 0x95, 0x95,
-  0x2C, 0x95, 0x55, 0xCB, 0x90, 0x90, 0xCB, 0x95,
-  0x2C, 0x6D, 0x41, 0x6F, 0x3E, 0x49, 0x49, 0x49,
-  0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
-  0x49, 0x82, 0x3E, 0x4E, 0x38, 0xCA, 0x20, 0x20,
-  0x20, 0x55, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0x65,
-  0x42, 0xA0, 0xD4, 0xE3, 0x29, 0x2D, 0x82, 0x5D,
-  0x5D, 0x82, 0x82, 0x49, 0x49, 0x49, 0x49, 0x49,
-  0x49, 0x3E, 0x49, 0x49, 0x49, 0x5C, 0x56, 0xD6,
-  0xA1, 0xA1, 0xA1, 0x95, 0x55, 0x55, 0x55, 0x95,
-  0xA1, 0x55, 0x90, 0x70, 0x94, 0x70, 0x95, 0x2C,
-  0x2C, 0xD6, 0xDD, 0x6F, 0x33, 0x49, 0x49, 0x49,
-  0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
-  0x5D, 0x5D, 0x82, 0x69, 0x22, 0x62, 0x80, 0x34,
-  0x94, 0x6B, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0x65, 0xE5, 0x65, 0x6B,
-  0xD5, 0x88, 0x5B, 0xE3, 0x29, 0x5D, 0x5D, 0x5D,
-  0x5D, 0x5D, 0x5D, 0x5D, 0x49, 0x49, 0x49, 0x82,
-  0x49, 0x49, 0x89, 0x49, 0x82, 0x49, 0x71, 0xBA,
-  0x6D, 0x6D, 0xA1, 0x95, 0x55, 0xCB, 0x55, 0x55,
-  0x2C, 0x55, 0x70, 0x70, 0x70, 0x90, 0x95, 0xA1,
-  0x2C, 0xA1, 0x41, 0x76, 0x5D, 0x5D, 0x49, 0x49,
-  0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
-  0x49, 0x5D, 0x82, 0x5D, 0x89, 0x5E, 0x96, 0x65,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0xE5, 0xE5, 0xE5, 0xE5, 0x65, 0x65, 0xEC, 0xB1,
-  0x20, 0x20, 0xCA, 0x23, 0x29, 0x33, 0x49, 0x5D,
-  0x49, 0x82, 0x49, 0x49, 0x49, 0x49, 0x49, 0x82,
-  0x49, 0x82, 0x5D, 0x5D, 0x5D, 0x2D, 0x5C, 0x8F,
-  0x6D, 0xD6, 0x2C, 0x55, 0x90, 0xCB, 0x95, 0x95,
-  0x95, 0x55, 0x70, 0x94, 0x70, 0x55, 0x2C, 0xA1,
-  0x95, 0xE8, 0x5F, 0x76, 0x33, 0x5D, 0x49, 0x49,
-  0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
-  0x49, 0x49, 0x49, 0x49, 0x3E, 0x9C, 0x2F, 0x68,
-  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
-  0x65, 0xE5, 0x65, 0xE5, 0x6B, 0x90, 0x80, 0x20,
-  0x20, 0x20, 0x4F, 0x81, 0x50, 0x3E, 0x49, 0x49,
-  0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
-  0x69, 0x69, 0x49, 0x5D, 0x2D, 0xC4, 0x46, 0xA3,
-  0xD6, 0x55, 0x70, 0x94, 0x94, 0x70, 0xCB, 0x55,
-  0x55, 0xCB, 0x70, 0x47, 0x70, 0x95, 0xA1, 0xA1,
-  0x95, 0xBD, 0x75, 0x2D, 0x33, 0x49, 0x49, 0x49,
-  0x49, 0x49, 0x5D, 0x49, 0x49, 0x49, 0x49, 0x49,
-  0x49, 0x49, 0x49, 0x49, 0x5D, 0x2D, 0xB5, 0xDB,
-  0xD6, 0x65, 0xE5, 0x65, 0xE5, 0xE5, 0x65, 0xE5,
-  0x65, 0x65, 0x6B, 0x95, 0x2B, 0x88, 0x20, 0x20,
-  0x20, 0x20, 0x8B, 0x81, 0x29, 0x33, 0x49, 0x49,
-  0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
-  0x49, 0x3E, 0x3E, 0x5E, 0x41, 0x97, 0x27, 0xD6,
-  0x55, 0x94, 0xE6, 0xE6, 0x47, 0x70, 0x55, 0x55,
-  0x94, 0x70, 0x94, 0x94, 0x70, 0x55, 0xA1, 0x2C,
-  0x6D, 0xC5, 0x39, 0x6A, 0x5D, 0x5D, 0x49, 0x49,
-  0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
-  0x49, 0x49, 0x49, 0x49, 0x3E, 0xEA, 0x30, 0x77,
-  0xE1, 0xC9, 0x94, 0x2C, 0xD6, 0xD6, 0xA1, 0x55,
-  0x47, 0x9F, 0x43, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x80, 0x91, 0x81, 0x6A, 0x2D, 0x49, 0x49,
-  0x49, 0x5D, 0x5D, 0x49, 0x49, 0x5D, 0x5D, 0x82,
-  0xEB, 0x4A, 0x41, 0xC2, 0x8F, 0xF5, 0xA1, 0x55,
-  0x94, 0x28, 0xA0, 0x47, 0x70, 0x55, 0x95, 0x95,
-  0x47, 0x70, 0x70, 0x94, 0x90, 0x95, 0xA1, 0x2C,
-  0xE8, 0xA6, 0x39, 0x76, 0x50, 0x50, 0x2D, 0x2D,
-  0x3E, 0x3E, 0x5D, 0x3E, 0x5D, 0x5D, 0x49, 0x82,
-  0x49, 0x49, 0x49, 0x82, 0x82, 0x50, 0x75, 0xE0,
-  0x57, 0x20, 0x88, 0x88, 0x20, 0x20, 0x88, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x79, 0x91, 0x81, 0x76, 0x33, 0x49, 0x49,
-  0x5D, 0x82, 0x49, 0x49, 0x3E, 0x6A, 0xEA, 0x29,
-  0xDF, 0x97, 0xBF, 0x6D, 0x6D, 0xD6, 0x55, 0x47,
-  0x28, 0x28, 0x47, 0x70, 0x55, 0x95, 0x2C, 0x2C,
-  0x95, 0x95, 0x55, 0x90, 0x90, 0x95, 0xA1, 0xA1,
-  0xD6, 0x26, 0x45, 0x81, 0x5F, 0x30, 0x48, 0x6F,
-  0x6F, 0x29, 0x29, 0x6A, 0x2D, 0x2D, 0x5D, 0x49,
-  0x49, 0x49, 0x49, 0x49, 0x2D, 0x76, 0x6E, 0x77,
-  0x5B, 0x66, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x79, 0xA9, 0xB8, 0x39, 0x50, 0x5D, 0x5D,
-  0x5D, 0x5D, 0x3E, 0x2D, 0x29, 0x76, 0xCD, 0x37,
-  0xB9, 0xA1, 0xA1, 0x6D, 0x6D, 0x2C, 0x94, 0x28,
-  0xD5, 0xE6, 0x70, 0x55, 0x95, 0xA1, 0x2C, 0xA1,
-  0xBF, 0xA1, 0x95, 0xCB, 0x55, 0x95, 0xA1, 0x2C,
-  0x95, 0x83, 0xDE, 0x87, 0xB6, 0xBE, 0x40, 0x6E,
-  0x81, 0x81, 0x78, 0x78, 0x39, 0x6F, 0xEA, 0x2D,
-  0x2D, 0x33, 0x33, 0x33, 0x76, 0x30, 0x64, 0x54,
-  0x5B, 0x66, 0x20, 0x20, 0x66, 0x20, 0x88, 0x20,
-  0x20, 0x20, 0x88, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x88, 0x34, 0x8B, 0xF1, 0x23, 0x6F, 0x50, 0x2D,
-  0x2D, 0x6A, 0x29, 0x6F, 0x78, 0x84, 0x9B, 0xD2,
-  0x2C, 0x2C, 0xD6, 0x6D, 0x6D, 0x2C, 0x47, 0xA0,
-  0xE6, 0x70, 0x55, 0x95, 0x2C, 0xA1, 0xA1, 0xA1,
-  0xD2, 0x95, 0x55, 0xCB, 0x55, 0x2C, 0xD6, 0xA1,
-  0x95, 0x95, 0xA1, 0xD6, 0x6D, 0x6D, 0xBA, 0xF3,
-  0x8D, 0x36, 0x74, 0x36, 0xF1, 0xB8, 0x23, 0x78,
-  0x62, 0x4A, 0x29, 0x62, 0x23, 0xF1, 0x54, 0x31,
-  0x57, 0x2B, 0x90, 0x95, 0x2C, 0x2C, 0x2C, 0x2C,
-  0xA1, 0xA1, 0xA1, 0xA1, 0x2C, 0x2C, 0x2C, 0xCB,
-  0xE6, 0x7D, 0xCA, 0xB7, 0xB8, 0x75, 0x6F, 0x6F,
-  0x76, 0x6F, 0x78, 0x81, 0x53, 0xBD, 0x6D, 0x2C,
-  0x95, 0x95, 0xA1, 0x6D, 0xA1, 0x55, 0x94, 0xE6,
-  0x70, 0xCB, 0x55, 0x95, 0xA1, 0xD6, 0xD6, 0xA1,
-  0xD0, 0x94, 0x94, 0x90, 0x95, 0x2C, 0xD6, 0xA1,
-  0x95, 0x55, 0x2C, 0xA1, 0xD6, 0xA1, 0x95, 0x2C,
-  0xD6, 0x68, 0xAB, 0x6C, 0xA4, 0x77, 0x77, 0xAD,
-  0x40, 0x53, 0x6E, 0x40, 0xB7, 0x54, 0x31, 0xD7,
-  0xAC, 0xD6, 0x55, 0x55, 0x95, 0x95, 0x95, 0x55,
-  0x95, 0x2C, 0x2C, 0xA1, 0x95, 0x95, 0x2C, 0xA1,
-  0x6D, 0xD2, 0x7C, 0x54, 0xAD, 0x40, 0x6E, 0x81,
-  0x81, 0x6E, 0x36, 0xDA, 0xE8, 0xD6, 0xD6, 0x2C,
-  0x2C, 0x2C, 0xA1, 0xD6, 0x95, 0x90, 0x94, 0x47,
-  0x94, 0x94, 0x70, 0x55, 0x2C, 0xD6, 0xA1, 0x95,
-  0x95, 0x28, 0x47, 0x90, 0x95, 0x2C, 0xA1, 0x2C,
-  0x55, 0x95, 0x2C, 0xA1, 0xA1, 0x2C, 0x2C, 0x2C,
-  0x2C, 0xA1, 0x55, 0x70, 0x95, 0x2C, 0xB2, 0xB4,
-  0xC3, 0xC3, 0x54, 0x54, 0xA9, 0x31, 0xCA, 0x2A,
-  0x95, 0x90, 0x55, 0x95, 0x2C, 0xA1, 0x2C, 0x95,
-  0x95, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0xD6,
-  0x6D, 0x2A, 0xB2, 0x4F, 0x31, 0x2E, 0xE0, 0xAD,
-  0xB7, 0xC8, 0xB4, 0xF5, 0x2C, 0xA1, 0xA1, 0xA1,
-  0x95, 0x2C, 0xA1, 0x2C, 0x95, 0x70, 0x94, 0x94,
-  0x94, 0x94, 0x70, 0x95, 0xD6, 0xD6, 0x2C, 0x95,
-  0x94, 0x28, 0x47, 0xCB, 0x95, 0x2C, 0xA1, 0xA1,
-  0x95, 0x55, 0x2C, 0xA1, 0xD6, 0xA1, 0x95, 0x95,
-  0x95, 0x2C, 0x55, 0x70, 0x70, 0x70, 0x94, 0x2C,
-  0x63, 0xBB, 0xA5, 0xD7, 0xCA, 0xB3, 0x6D, 0x2C,
-  0x55, 0x55, 0x95, 0x2C, 0x2C, 0x2C, 0x95, 0x95,
-  0x95, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0xA1,
-  0xD6, 0x2C, 0x70, 0x95, 0xAC, 0xC0, 0xDB, 0xEF,
-  0xEF, 0xA2, 0xE8, 0x95, 0x95, 0xA1, 0xD6, 0xA1,
-  0x95, 0x55, 0x2C, 0x95, 0x55, 0x70, 0x70, 0x70,
-  0x94, 0x70, 0x55, 0xD6, 0x6D, 0x6D, 0x95, 0x55,
-  0x70, 0x47, 0x70, 0x95, 0x2C, 0x2C, 0x2C, 0xA1,
-  0x2C, 0x95, 0x2C, 0xA1, 0xD6, 0xA1, 0x95, 0x55,
-  0x55, 0x95, 0x55, 0x55, 0x55, 0x55, 0x55, 0x95,
-  0xA1, 0xF5, 0xBF, 0xBF, 0xA1, 0x95, 0x95, 0x95,
-  0x95, 0x55, 0x2C, 0x2C, 0x95, 0x55, 0x55, 0x95,
-  0x95, 0x95, 0xA1, 0xA1, 0xA1, 0xA1, 0x2C, 0xA1,
-  0x2C, 0x55, 0x70, 0x94, 0x90, 0x2C, 0x6D, 0x6D,
-  0x6D, 0xA1, 0x2C, 0x95, 0x2C, 0xA1, 0xD6, 0xA1,
-  0x2C, 0x55, 0x55, 0x95, 0x55, 0x55, 0x55, 0x55,
-  0x55, 0x95, 0xD6, 0x6D, 0xBF, 0xD6, 0x55, 0xCB,
-  0x55, 0x55, 0x55, 0x2C, 0x2C, 0x2C, 0x2C, 0xA1,
-  0xA1, 0x95, 0x2C, 0xA1, 0xA1, 0xA1, 0x2C, 0x95,
-  0x55, 0x95, 0x95, 0x2C, 0x2C, 0x2C, 0x2C, 0xA1,
-  0x6D, 0xBF, 0x6D, 0x2C, 0x55, 0x55, 0x95, 0x95,
-  0xCB, 0xCB, 0x55, 0x55, 0xCB, 0x55, 0x55, 0x95,
-  0x95, 0x2C, 0x2C, 0xA1, 0xA1, 0xA1, 0x2C, 0x2C,
-  0xA1, 0x95, 0xCB, 0xCB, 0x95, 0x95, 0x2C, 0x2C,
-  0x2C, 0xA1, 0x2C, 0x2C, 0x2C, 0xA1, 0xA1, 0x2C,
-  0x2C, 0x95, 0x55, 0x95, 0x95, 0x2C, 0x2C, 0x2C,
-  0x2C, 0xA1, 0x6D, 0xBF, 0x6D, 0xA1, 0x55, 0x55,
-  0x95, 0x95, 0x95, 0x95, 0x2C, 0x2C, 0x2C, 0x2C,
-  0x2C, 0x95, 0x95, 0x95, 0x2C, 0x2C, 0x2C, 0x95,
-  0x55, 0x95, 0x2C, 0x2C, 0xA1, 0xA1, 0xD6, 0xD6,
-  0x6D, 0x6D, 0xA1, 0x95, 0xCB, 0x55, 0x95, 0x55,
-  0x90, 0x70, 0xCB, 0xCB, 0x90, 0xCB, 0x95, 0x95,
-  0x2C, 0x2C, 0xA1, 0xD6, 0xA1, 0xA1, 0xA1, 0xA1,
-  0xA1, 0xA1, 0x2C, 0x95, 0x95, 0x2C, 0x2C, 0x2C,
-  0x2C, 0xA1, 0x2C, 0x95, 0x95, 0x95, 0x2C, 0x2C,
-  0x2C, 0x95, 0x55, 0x55, 0x2C, 0x2C, 0xA1, 0xA1,
-  0xD6, 0xD6, 0x6D, 0x6D, 0xA1, 0x55, 0xCB, 0x55
-};
-
-#endif
-
-#ifdef INCLUDE_LINUX_LOGOBW
-
-unsigned char linux_logo_bw[] __initdata = {
-  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x3F,
-  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F,
-  0xFE, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-  0xFE, 0x3F, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF,
-  0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xC7, 0xFF, 0xFF,
-  0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xC3,
-  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF,
-  0xFB, 0xE3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-  0xFD, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xFF, 0xFF,
-  0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xF1, 0xFF, 0xFF,
-  0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xF1,
-  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0xFF,
-  0xFF, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-  0xF9, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF,
-  0xFF, 0xFF, 0xF9, 0xCF, 0xC3, 0xF8, 0xFF, 0xFF,
-  0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0x87, 0x81, 0xF9,
-  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0xA7,
-  0x99, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-  0xF9, 0xF3, 0xBC, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF,
-  0xFF, 0xFF, 0xF9, 0xE3, 0xBC, 0xF9, 0xFF, 0xFF,
-  0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0xB0, 0x3C, 0xF9,
-  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0xB0,
-  0x19, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-  0xF9, 0xC0, 0x03, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF,
-  0xFF, 0xFF, 0xF9, 0x80, 0x01, 0xF8, 0xFF, 0xFF,
-  0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0x80, 0x01, 0xF8,
-  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0x80,
-  0x01, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-  0xF9, 0xC0, 0x21, 0xD8, 0xFF, 0xFF, 0xFF, 0xFF,
-  0xFF, 0xFF, 0xF9, 0xB1, 0x80, 0xEC, 0xC0, 0x1F,
-  0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0x90, 0x00, 0xE4,
-  0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0x8C,
-  0xC0, 0x7C, 0x04, 0x81, 0xFF, 0xFF, 0xFF, 0xFF,
-  0xE3, 0x80, 0x00, 0x7C, 0x40, 0x11, 0xFF, 0xFF,
-  0xFF, 0xFF, 0xE3, 0x80, 0x00, 0x7F, 0xD2, 0x29,
-  0xFF, 0xFF, 0xFF, 0xFF, 0x87, 0x00, 0x00, 0x3F,
-  0x80, 0x19, 0xFF, 0xFF, 0xFF, 0xFF, 0x0E, 0x00,
-  0x00, 0x3F, 0x80, 0x19, 0xFF, 0xFF, 0xFF, 0xFF,
-  0x1E, 0x00, 0x00, 0x1F, 0x80, 0x19, 0xFF, 0xFF,
-  0xFF, 0xFE, 0x1C, 0x00, 0x00, 0x1E, 0x80, 0x19,
-  0xFF, 0xFF, 0xFF, 0xFE, 0x3C, 0x00, 0x00, 0x1E,
-  0x80, 0x11, 0xFF, 0xFF, 0xFF, 0xFC, 0x7C, 0x00,
-  0x00, 0x0F, 0x80, 0x11, 0xFF, 0xFF, 0xFF, 0xFC,
-  0xF8, 0x00, 0x00, 0x0E, 0x80, 0x11, 0xFF, 0xFF,
-  0xFF, 0xFC, 0xF8, 0x00, 0x00, 0x06, 0x00, 0x11,
-  0xFF, 0xFF, 0xFF, 0xF8, 0xF8, 0x00, 0x00, 0x06,
-  0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xF9, 0xF0, 0x00,
-  0x00, 0x02, 0x00, 0x09, 0xFF, 0xFF, 0xFF, 0xF1,
-  0xF0, 0x00, 0x00, 0x02, 0x80, 0x10, 0xFF, 0xFF,
-  0xFF, 0xF1, 0xE0, 0x00, 0x00, 0x00, 0x97, 0x10,
-  0xFF, 0xFF, 0xFF, 0xE3, 0xE0, 0x00, 0x00, 0x00,
-  0xDF, 0xF0, 0xFF, 0xFF, 0xFF, 0xE3, 0xC0, 0x00,
-  0x00, 0x00, 0xFF, 0xF8, 0xFF, 0xFF, 0xFF, 0xC7,
-  0xC0, 0x00, 0x00, 0x01, 0xFF, 0xF8, 0xFF, 0xFF,
-  0xFF, 0xC7, 0x80, 0x00, 0x00, 0x01, 0xFF, 0xF8,
-  0xFF, 0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x00, 0x01,
-  0xFF, 0xF8, 0xFF, 0xFF, 0xFF, 0x8F, 0x80, 0x00,
-  0x00, 0x01, 0xFF, 0xF8, 0xFF, 0xFF, 0xFF, 0x9F,
-  0x80, 0x00, 0x00, 0x01, 0xFF, 0xF8, 0xFF, 0xFF,
-  0xFF, 0x9F, 0x80, 0x00, 0x00, 0x01, 0x80, 0x18,
-  0xFF, 0xFF, 0xFF, 0x9E, 0x80, 0x00, 0x00, 0x03,
-  0xA8, 0x11, 0xFF, 0xFF, 0xFF, 0x9F, 0x80, 0x00,
-  0x00, 0x02, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0x99,
-  0x80, 0x00, 0x00, 0x00, 0x00, 0x09, 0xFF, 0xFF,
-  0xFF, 0x00, 0x80, 0x00, 0x00, 0x01, 0xC0, 0x01,
-  0xFF, 0xFF, 0xFE, 0x20, 0x60, 0x00, 0x00, 0x00,
-  0xFF, 0xC3, 0xFF, 0xFF, 0xF8, 0x00, 0x30, 0x00,
-  0x00, 0x00, 0xFF, 0x0F, 0xFF, 0xFF, 0xC0, 0x40,
-  0x38, 0x00, 0x00, 0x00, 0xFE, 0x47, 0xFF, 0xFF,
-  0x81, 0x00, 0x1C, 0x00, 0x00, 0x00, 0xFC, 0x23,
-  0xFF, 0xFF, 0x90, 0x00, 0x1E, 0x00, 0x00, 0x00,
-  0x78, 0x11, 0xFF, 0xFF, 0x80, 0x00, 0x0F, 0x80,
-  0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x00,
-  0x07, 0xC0, 0x00, 0x00, 0x00, 0x08, 0xFF, 0xFF,
-  0xC0, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x00, 0x04,
-  0x7F, 0xFF, 0x80, 0x00, 0x03, 0xC0, 0x00, 0x10,
-  0x00, 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x01, 0x80,
-  0x00, 0x30, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x00,
-  0x00, 0x00, 0x00, 0x70, 0x00, 0x01, 0x4F, 0xFF,
-  0x80, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00,
-  0x0F, 0xFF, 0xC0, 0x00, 0x00, 0x80, 0x03, 0xF0,
-  0x00, 0x00, 0x8F, 0xFF, 0x80, 0x00, 0x00, 0x40,
-  0x0F, 0xF0, 0x00, 0x04, 0x1F, 0xFF, 0x80, 0x00,
-  0x00, 0x7F, 0xFF, 0xF0, 0x00, 0x10, 0x1F, 0xFF,
-  0xC0, 0x00, 0x00, 0x7F, 0xFF, 0xF0, 0x00, 0x40,
-  0xFF, 0xFF, 0x98, 0x00, 0x00, 0xFF, 0xFF, 0xF0,
-  0x00, 0x83, 0xFF, 0xFF, 0x81, 0xE0, 0x01, 0xFF,
-  0xFF, 0xF8, 0x02, 0x07, 0xFF, 0xFF, 0x80, 0x3F,
-  0x07, 0xE0, 0x00, 0x1C, 0x0C, 0x1F, 0xFF, 0xFF,
-  0xF8, 0x03, 0xFF, 0x80, 0x00, 0x1F, 0x78, 0x1F,
-  0xFF, 0xFF, 0xFF, 0x80, 0x7F, 0x00, 0x07, 0x0F,
-  0xF0, 0x7F, 0xFF, 0xFF, 0xFF, 0xFE, 0x0C, 0x07,
-  0xFF, 0x83, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-  0x00, 0x1F, 0xFF, 0xC0, 0x03, 0xFF, 0xFF, 0xFF,
-  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x07, 0xFF,
-  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-};
-
-#endif
-
-#ifdef INCLUDE_LINUX_LOGO16
-
-unsigned char linux_logo16_red[] __initdata = {
-    0x00, 0x90, 0xb0, 0x9c, 0xf7, 0x35, 0x83, 0xa5,
-    0x65, 0x8f, 0x98, 0xc9, 0xdb, 0xe1, 0xe7, 0xf8
-};
-
-unsigned char linux_logo16_green[] __initdata = {
-    0x00, 0x90, 0xb0, 0x9c, 0xf7, 0x2e, 0x83, 0xa5,
-    0x65, 0x6e, 0x98, 0x89, 0xbf, 0xac, 0xda, 0xf8
-};
-
-unsigned char linux_logo16_blue[] __initdata = {
-    0x00, 0x90, 0xaf, 0x9c, 0xf7, 0x2b, 0x82, 0xa5,
-    0x65, 0x41, 0x97, 0x1e, 0x60, 0x29, 0xa5, 0xf8
-};
-
-unsigned char linux_logo16[] __initdata = {
-    0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-    0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xa1, 0x11, 0x11,
-    0x61, 0x16, 0x66, 0x66, 0x11, 0x11, 0x11, 0x11,
-    0x11, 0x11, 0x1a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-    0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-    0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-    0xaa, 0xaa, 0xaa, 0xaa, 0x33, 0xa8, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x87, 0x77, 0x77, 0x77, 0x77,
-    0x77, 0x77, 0x73, 0x33, 0x33, 0x3a, 0xaa, 0xaa,
-    0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-    0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-    0xaa, 0xaa, 0xa3, 0x33, 0x33, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x77, 0x77, 0x77, 0x77,
-    0x77, 0x27, 0x77, 0x77, 0x77, 0x33, 0x3a, 0xaa,
-    0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-    0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-    0xaa, 0xa3, 0x33, 0x33, 0x30, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x55, 0x50, 0x08, 0x33, 0x77, 0x77,
-    0x77, 0x72, 0x72, 0x27, 0x77, 0x77, 0x33, 0x33,
-    0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-    0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-    0xa3, 0x33, 0x33, 0x77, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x58, 0x85, 0x00, 0x11, 0x11, 0xaa,
-    0xa3, 0x37, 0x77, 0x72, 0x22, 0x22, 0x77, 0x73,
-    0x33, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-    0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xa3,
-    0x33, 0x37, 0x77, 0x33, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x56, 0x85, 0x00, 0x06, 0x66, 0x11,
-    0x11, 0x1a, 0xa3, 0x37, 0x77, 0x72, 0x22, 0x77,
-    0x73, 0x33, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-    0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x33,
-    0x33, 0x33, 0x33, 0x30, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x55, 0x00, 0x00, 0x06, 0x66, 0x66,
-    0x66, 0x66, 0x11, 0x1a, 0xa3, 0x77, 0x72, 0x22,
-    0x77, 0x73, 0x3a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-    0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x33, 0x33,
-    0x33, 0x33, 0x33, 0xa0, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11,
-    0x66, 0x66, 0x66, 0x66, 0x11, 0xa3, 0x77, 0x22,
-    0x22, 0x77, 0x33, 0x33, 0xaa, 0xaa, 0xaa, 0xaa,
-    0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x33, 0x33, 0x33,
-    0x33, 0x3a, 0xa1, 0x10, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x33,
-    0xaa, 0x11, 0x16, 0x66, 0x66, 0x61, 0x1a, 0x37,
-    0x22, 0x22, 0x77, 0x33, 0x3a, 0xaa, 0xaa, 0xaa,
-    0xaa, 0xaa, 0xaa, 0xaa, 0xa3, 0x33, 0x33, 0x33,
-    0x3a, 0xa1, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x02, 0x22,
-    0x22, 0x77, 0x3a, 0x11, 0x66, 0x66, 0x66, 0x1a,
-    0x37, 0x22, 0x22, 0x77, 0x33, 0x3a, 0xaa, 0xaa,
-    0xaa, 0xaa, 0xaa, 0xaa, 0x33, 0x33, 0x33, 0x3a,
-    0xa1, 0x11, 0x11, 0x10, 0x00, 0x00, 0x50, 0x00,
-    0x00, 0x05, 0x80, 0x50, 0x00, 0x00, 0x07, 0x72,
-    0x22, 0x22, 0x22, 0x73, 0xa1, 0x66, 0x66, 0x61,
-    0x1a, 0x77, 0x22, 0x27, 0x73, 0x33, 0xaa, 0xaa,
-    0xaa, 0xaa, 0xaa, 0xaa, 0x33, 0x33, 0x3a, 0xaa,
-    0x11, 0x11, 0x1a, 0xa0, 0x08, 0x71, 0x05, 0x00,
-    0x00, 0x12, 0x22, 0x50, 0x00, 0x00, 0x07, 0x77,
-    0x77, 0x72, 0x22, 0x22, 0x27, 0x31, 0x16, 0x66,
-    0x61, 0x13, 0x77, 0x22, 0x77, 0x33, 0x3a, 0xaa,
-    0xaa, 0xaa, 0xaa, 0xa3, 0x33, 0x33, 0xaa, 0xa1,
-    0x11, 0x1a, 0x33, 0x70, 0x07, 0x2e, 0x70, 0x00,
-    0x01, 0x44, 0x42, 0x60, 0x00, 0x00, 0x02, 0x22,
-    0x22, 0x22, 0x22, 0x22, 0x22, 0x27, 0x31, 0x66,
-    0x66, 0x61, 0xa3, 0x72, 0x22, 0x77, 0x33, 0xaa,
-    0xaa, 0xaa, 0xa3, 0x33, 0x33, 0xaa, 0xaa, 0x11,
-    0x1a, 0x33, 0x77, 0x30, 0x04, 0x82, 0x40, 0x00,
-    0x54, 0x48, 0x54, 0x40, 0x00, 0x00, 0x01, 0xaa,
-    0x32, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x31,
-    0x66, 0x66, 0x11, 0x37, 0x22, 0x27, 0x73, 0x3a,
-    0xaa, 0xaa, 0xa3, 0x33, 0x3a, 0xaa, 0xaa, 0xaa,
-    0xa3, 0x77, 0xaa, 0x10, 0x50, 0x08, 0x46, 0x05,
-    0x54, 0x80, 0x50, 0x42, 0x00, 0x00, 0x08, 0x66,
-    0x66, 0x1a, 0x32, 0x22, 0x22, 0x22, 0x22, 0x27,
-    0x31, 0x66, 0x66, 0x13, 0x72, 0x22, 0x77, 0x33,
-    0xaa, 0xaa, 0xaa, 0x33, 0xaa, 0xa1, 0xaa, 0xa3,
-    0x37, 0xa1, 0x1a, 0x30, 0x50, 0x06, 0x26, 0x00,
-    0x54, 0x00, 0x00, 0x44, 0x00, 0x00, 0x08, 0xe2,
-    0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0x22, 0x22,
-    0x27, 0xa6, 0x66, 0x61, 0xa7, 0x72, 0x27, 0x73,
-    0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x33,
-    0x31, 0x11, 0x37, 0x70, 0x02, 0x00, 0xab, 0xbb,
-    0xb6, 0x00, 0x00, 0xf4, 0x00, 0x00, 0xee, 0xee,
-    0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0x22,
-    0x22, 0x23, 0x16, 0x66, 0x1a, 0x37, 0x22, 0x77,
-    0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xa3, 0x3a,
-    0x11, 0xa7, 0x33, 0x10, 0x04, 0x09, 0xbd, 0xdd,
-    0xbd, 0xd0, 0x04, 0x45, 0x00, 0x0e, 0xee, 0xee,
-    0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0x22,
-    0x22, 0x22, 0x71, 0x66, 0x66, 0x13, 0x72, 0x27,
-    0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x33, 0x11,
-    0xa3, 0x73, 0xa1, 0x60, 0x08, 0xbd, 0xdd, 0xdd,
-    0xdd, 0xdd, 0xdb, 0x90, 0x00, 0x02, 0xec, 0xee,
-    0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xce, 0x22,
-    0x22, 0x22, 0x27, 0xa6, 0x66, 0x61, 0x37, 0x27,
-    0x1a, 0xaa, 0xaa, 0xaa, 0xaa, 0xa3, 0xa1, 0x1a,
-    0x33, 0xa1, 0x16, 0x60, 0x0b, 0xbd, 0xdd, 0xdd,
-    0xcd, 0xdd, 0xdd, 0xd9, 0x00, 0x00, 0xec, 0xcc,
-    0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xce, 0xa2,
-    0x22, 0x22, 0x22, 0x7a, 0x66, 0x66, 0x13, 0x77,
-    0x1a, 0xaa, 0xaa, 0xaa, 0xaa, 0x3a, 0x11, 0x33,
-    0xaa, 0x11, 0x66, 0x60, 0x9b, 0xdd, 0xdd, 0xdd,
-    0xcd, 0xdd, 0xdb, 0xb9, 0x00, 0x00, 0xec, 0xcc,
-    0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xee, 0x61,
-    0x72, 0x22, 0x22, 0x22, 0xa1, 0x66, 0x61, 0x37,
-    0x1a, 0xaa, 0xaa, 0xaa, 0xa3, 0xa1, 0x13, 0x3a,
-    0x11, 0x11, 0x11, 0x10, 0x5b, 0xdd, 0xdd, 0xdc,
-    0xdd, 0xdd, 0xbd, 0xd9, 0x00, 0x00, 0xec, 0xcc,
-    0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xee, 0x86,
-    0x17, 0x22, 0x22, 0x22, 0x23, 0x16, 0x66, 0xaa,
-    0xaa, 0xa3, 0x3a, 0xaa, 0xaa, 0x1a, 0x3a, 0xa1,
-    0x11, 0x11, 0x1a, 0x70, 0x05, 0xbd, 0xdd, 0xdd,
-    0xdb, 0x5b, 0xdd, 0xb0, 0x00, 0x60, 0x2e, 0xcc,
-    0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xe6, 0x88,
-    0x66, 0x32, 0x22, 0x22, 0x22, 0x36, 0x66, 0x11,
-    0x33, 0x33, 0x3a, 0xaa, 0x11, 0xaa, 0xaa, 0xa1,
-    0x11, 0x1a, 0x3a, 0x60, 0x02, 0x99, 0xbb, 0xb9,
-    0x9b, 0xbb, 0xbc, 0x22, 0x00, 0x86, 0x5e, 0xcc,
-    0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xe1, 0x68,
-    0x86, 0x63, 0x22, 0x22, 0x22, 0x2a, 0x66, 0x66,
-    0x33, 0x33, 0xaa, 0xaa, 0x1a, 0xaa, 0xaa, 0x11,
-    0x1a, 0xa7, 0x68, 0x80, 0x02, 0x2b, 0xbd, 0xbb,
-    0xbb, 0xb9, 0x22, 0x22, 0x00, 0x06, 0x6e, 0xcc,
-    0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xc7, 0xa6,
-    0x88, 0x86, 0x32, 0x22, 0x22, 0x27, 0xa6, 0x66,
-    0x33, 0x3a, 0xaa, 0xa1, 0xaa, 0xaa, 0xa1, 0x11,
-    0xa3, 0xa6, 0x88, 0x80, 0x02, 0x22, 0x9b, 0xbb,
-    0xbb, 0x22, 0x24, 0xf4, 0x60, 0x00, 0x0c, 0xcc,
-    0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xc2, 0x21,
-    0x68, 0x88, 0x63, 0x22, 0x22, 0x22, 0x71, 0x66,
-    0x33, 0x3a, 0x11, 0x11, 0xaa, 0xaa, 0x11, 0xaa,
-    0x71, 0x88, 0x88, 0x00, 0x02, 0xe2, 0x26, 0x99,
-    0x22, 0x22, 0x4f, 0xf4, 0x40, 0x00, 0x0c, 0xcc,
-    0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x22, 0x22,
-    0x16, 0x88, 0x86, 0xa2, 0x22, 0x22, 0x27, 0x11,
-    0x33, 0xa1, 0x11, 0x11, 0xaa, 0x31, 0x1a, 0xa3,
-    0x68, 0x88, 0x81, 0x00, 0x54, 0x42, 0x22, 0x22,
-    0x22, 0x44, 0xff, 0xff, 0x48, 0x00, 0x00, 0x99,
-    0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0x99, 0x22, 0x22,
-    0x21, 0x88, 0x88, 0x6a, 0x22, 0x22, 0x22, 0x31,
-    0x3a, 0xa1, 0x11, 0x1a, 0xa3, 0x11, 0x33, 0x36,
-    0x88, 0x86, 0x30, 0x00, 0x4f, 0x44, 0x22, 0x22,
-    0x24, 0xff, 0xff, 0xff, 0x44, 0x00, 0x00, 0x99,
-    0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0x95, 0x22, 0x72,
-    0x22, 0x18, 0x88, 0x86, 0x32, 0x22, 0x22, 0x27,
-    0xaa, 0x11, 0x11, 0x1a, 0x31, 0x13, 0x33, 0x68,
-    0x88, 0x6a, 0x00, 0x02, 0x4f, 0x4f, 0x42, 0x24,
-    0x4f, 0xff, 0xff, 0xff, 0xf4, 0x50, 0x00, 0x99,
-    0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0x99, 0x22, 0x73,
-    0x72, 0x26, 0x88, 0x88, 0x63, 0x22, 0x22, 0x22,
-    0x11, 0x11, 0x11, 0xa3, 0xa1, 0x73, 0xa6, 0x88,
-    0x81, 0xa5, 0x00, 0x04, 0x4f, 0x4f, 0x44, 0x4f,
-    0xff, 0xff, 0xff, 0xff, 0xf4, 0x40, 0x00, 0x99,
-    0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0x99, 0x12, 0x27,
-    0xaa, 0x22, 0x68, 0x55, 0x86, 0x72, 0x22, 0x22,
-    0x11, 0x11, 0x1a, 0x33, 0x13, 0x3a, 0x18, 0x88,
-    0x1a, 0x10, 0x00, 0x44, 0x4f, 0x4f, 0xff, 0x4f,
-    0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x99,
-    0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0x99, 0x61, 0x22,
-    0x3a, 0xa2, 0x26, 0x85, 0x58, 0x67, 0x22, 0x22,
-    0x61, 0x61, 0x1a, 0x7a, 0x37, 0x31, 0x88, 0x81,
-    0x11, 0x00, 0x05, 0xe4, 0x44, 0xff, 0xff, 0xff,
-    0x4f, 0xf4, 0x44, 0xff, 0xff, 0xf5, 0x00, 0x99,
-    0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0x99, 0x88, 0x12,
-    0x2a, 0xaa, 0x72, 0x68, 0x55, 0x81, 0x22, 0x22,
-    0x66, 0x61, 0xa3, 0x33, 0x73, 0x16, 0x88, 0x11,
-    0x10, 0x00, 0x08, 0x74, 0x44, 0x4f, 0x44, 0x44,
-    0xf4, 0xf4, 0x44, 0x44, 0xe2, 0x44, 0x00, 0x99,
-    0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0x99, 0x88, 0x81,
-    0x22, 0xaa, 0xa7, 0x26, 0x85, 0x88, 0x12, 0x22,
-    0x66, 0x61, 0x37, 0xa7, 0x3a, 0x66, 0x66, 0x11,
-    0x80, 0x00, 0x0a, 0x72, 0x44, 0x4f, 0x44, 0x4f,
-    0xff, 0x44, 0x44, 0x22, 0x22, 0x24, 0x00, 0x99,
-    0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0x99, 0x85, 0x88,
-    0x12, 0x2a, 0xaa, 0x22, 0x68, 0x58, 0x63, 0x22,
-    0x66, 0x1a, 0x73, 0x77, 0x31, 0x66, 0x61, 0x11,
-    0x00, 0x00, 0x07, 0x44, 0xff, 0x4f, 0xf4, 0x4f,
-    0xff, 0x4f, 0x44, 0xf4, 0x42, 0x22, 0x40, 0x9b,
-    0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xb9, 0x85, 0x55,
-    0x81, 0x27, 0xaa, 0xa2, 0x78, 0x88, 0x86, 0x72,
-    0x66, 0x13, 0x77, 0x73, 0x11, 0x66, 0x61, 0x76,
-    0x00, 0x50, 0x84, 0xf4, 0xff, 0x4f, 0xf4, 0xff,
-    0xff, 0x4f, 0x44, 0xff, 0x4f, 0x42, 0x40, 0x9b,
-    0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xb9, 0x68, 0x55,
-    0x58, 0x12, 0x3a, 0xaa, 0x23, 0x88, 0x88, 0xa7,
-    0x66, 0xa7, 0x77, 0x7a, 0x16, 0x66, 0x1a, 0x15,
-    0x05, 0x00, 0x4f, 0xf4, 0xff, 0x4f, 0xf4, 0xff,
-    0xff, 0x4f, 0x44, 0xff, 0x4f, 0x44, 0x24, 0x9b,
-    0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xb9, 0x26, 0x55,
-    0x55, 0x81, 0x23, 0xaa, 0x32, 0x18, 0x88, 0x6a,
-    0x61, 0x37, 0x77, 0x31, 0x66, 0x66, 0x17, 0x60,
-    0x05, 0x08, 0x4f, 0xf4, 0xff, 0x4f, 0xf4, 0xff,
-    0xff, 0x4f, 0x44, 0xff, 0x4f, 0x4f, 0x4e, 0x99,
-    0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0x99, 0xa2, 0x65,
-    0x55, 0x58, 0xa2, 0x7a, 0xa2, 0x26, 0x88, 0x61,
-    0x61, 0x32, 0x27, 0xa1, 0x66, 0x61, 0x31, 0x60,
-    0x00, 0x04, 0x4f, 0xf4, 0xff, 0x44, 0x44, 0xff,
-    0xff, 0x4f, 0x44, 0xff, 0x4f, 0x44, 0xf4, 0x99,
-    0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0x9b, 0xaa, 0x26,
-    0x55, 0x55, 0x87, 0x27, 0x33, 0x27, 0x68, 0x61,
-    0x1a, 0x72, 0x27, 0xa6, 0x66, 0x6a, 0x71, 0x00,
-    0x80, 0x84, 0xff, 0xf4, 0xff, 0x44, 0x44, 0xff,
-    0xff, 0x4f, 0x44, 0xff, 0x4f, 0x44, 0xf4, 0x99,
-    0x9b, 0x9b, 0x99, 0xb9, 0xb9, 0x99, 0xaa, 0xa2,
-    0x85, 0x55, 0x56, 0x22, 0x27, 0x22, 0x36, 0x66,
-    0x13, 0x22, 0x23, 0x16, 0x86, 0x63, 0x73, 0x00,
-    0x00, 0x44, 0xf4, 0xf4, 0xff, 0x44, 0x44, 0xff,
-    0xff, 0x4f, 0x44, 0xff, 0x4f, 0x4f, 0x4f, 0x99,
-    0x9b, 0x99, 0x99, 0x99, 0xb9, 0x99, 0xaa, 0xaa,
-    0x28, 0x55, 0x58, 0x12, 0x22, 0x22, 0x21, 0x11,
-    0xa3, 0x27, 0x7a, 0x66, 0x86, 0x17, 0x75, 0x05,
-    0x05, 0xff, 0xf4, 0xf4, 0xff, 0x44, 0x44, 0xff,
-    0xff, 0x4f, 0x44, 0x4f, 0x4f, 0x44, 0x4f, 0x99,
-    0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x3a, 0xaa,
-    0xa2, 0x85, 0x58, 0x67, 0x72, 0x22, 0x27, 0xa1,
-    0x37, 0x27, 0x7a, 0x68, 0x86, 0xa2, 0x70, 0x00,
-    0x02, 0xff, 0xf4, 0xf4, 0xff, 0x44, 0x44, 0x4f,
-    0xff, 0x4f, 0x44, 0xf4, 0xf4, 0xf4, 0xf4, 0x99,
-    0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x23, 0xaa,
-    0xa7, 0x78, 0x88, 0x81, 0x77, 0x22, 0x27, 0x3a,
-    0x72, 0x73, 0x71, 0x68, 0x66, 0x32, 0x50, 0x00,
-    0x04, 0x4f, 0xf4, 0xf4, 0xff, 0x44, 0x44, 0x4f,
-    0xff, 0x4f, 0x44, 0xf4, 0xf4, 0xf4, 0x44, 0x95,
-    0x99, 0x99, 0x99, 0x99, 0x99, 0x55, 0x12, 0x3a,
-    0xaa, 0x21, 0x88, 0x81, 0x77, 0x27, 0x73, 0x73,
-    0x72, 0x33, 0x36, 0x86, 0x61, 0x72, 0x00, 0x00,
-    0x04, 0x44, 0xf4, 0xf4, 0xf4, 0x44, 0x44, 0x4f,
-    0xff, 0x4f, 0x44, 0xff, 0x4f, 0x4f, 0x44, 0x55,
-    0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x8a, 0x27,
-    0xaa, 0x77, 0x68, 0x61, 0x23, 0x71, 0x11, 0x3a,
-    0x27, 0xa3, 0x36, 0x86, 0x61, 0x20, 0x00, 0x00,
-    0x04, 0xf4, 0xf4, 0xf4, 0xf4, 0x44, 0x44, 0x4f,
-    0xff, 0x4f, 0x44, 0xff, 0x4f, 0x4f, 0x41, 0x59,
-    0x99, 0x99, 0x99, 0x99, 0x99, 0x95, 0x58, 0x77,
-    0x27, 0x32, 0x36, 0x63, 0x23, 0x71, 0x66, 0x11,
-    0x27, 0x13, 0xa6, 0x86, 0x6a, 0x20, 0x00, 0x50,
-    0x04, 0x4f, 0x4f, 0x4f, 0x4f, 0x44, 0x44, 0x4f,
-    0xff, 0x4f, 0x44, 0xff, 0x4f, 0x4f, 0x41, 0x99,
-    0x9b, 0xbb, 0xbb, 0xbb, 0xb9, 0x99, 0x68, 0x13,
-    0x32, 0x22, 0x73, 0xa7, 0x2a, 0x31, 0x88, 0x66,
-    0x7a, 0x13, 0x18, 0x66, 0x63, 0x20, 0x00, 0x06,
-    0x0f, 0x4f, 0x4f, 0x4f, 0x4f, 0x44, 0x44, 0x4f,
-    0xff, 0x4f, 0x44, 0xff, 0x4f, 0x4f, 0x49, 0x95,
-    0xa9, 0xa9, 0x99, 0x97, 0x92, 0x99, 0x65, 0x6a,
-    0x17, 0x22, 0x23, 0x72, 0x27, 0xaa, 0x88, 0x88,
-    0xa1, 0x17, 0x68, 0x66, 0x67, 0x70, 0x00, 0x05,
-    0x0f, 0x4f, 0x4f, 0x4f, 0x4f, 0x44, 0x44, 0x4f,
-    0xff, 0x4f, 0x44, 0xff, 0xf4, 0xf4, 0x49, 0x9c,
-    0x2e, 0xee, 0xee, 0xee, 0xee, 0xa9, 0x65, 0x8a,
-    0x1a, 0xaa, 0x37, 0x72, 0x27, 0x37, 0x88, 0x88,
-    0x11, 0x17, 0x68, 0x66, 0x67, 0x10, 0x9d, 0xd0,
-    0x84, 0x44, 0xff, 0x4f, 0x4f, 0x44, 0xf4, 0x4f,
-    0xff, 0x4f, 0x44, 0xff, 0xf4, 0xf4, 0x4f, 0x69,
-    0xcc, 0xee, 0xee, 0xee, 0xec, 0x99, 0x88, 0x63,
-    0x61, 0x68, 0x61, 0x72, 0x22, 0x7a, 0x68, 0x88,
-    0x11, 0x17, 0x88, 0x66, 0x12, 0x1b, 0xdd, 0xdd,
-    0x02, 0x44, 0x4f, 0x4f, 0x4f, 0x44, 0x44, 0x4f,
-    0xff, 0x4f, 0x44, 0xff, 0xff, 0x4f, 0x4c, 0xc5,
-    0x0c, 0xc1, 0x11, 0x1c, 0xc0, 0x26, 0x66, 0x17,
-    0x66, 0x88, 0x88, 0x12, 0x22, 0x23, 0xa8, 0x88,
-    0x11, 0x13, 0x88, 0x66, 0x17, 0xbb, 0xdd, 0xdd,
-    0xd0, 0x8f, 0xff, 0xf4, 0xf4, 0x44, 0xf4, 0x4f,
-    0xff, 0x4f, 0x44, 0xf4, 0x4f, 0x44, 0xdd, 0xdd,
-    0x00, 0x00, 0x00, 0x05, 0x9d, 0x21, 0x66, 0x27,
-    0xa6, 0x65, 0x58, 0x67, 0x22, 0x27, 0x28, 0x88,
-    0x11, 0xaa, 0x86, 0x68, 0x1a, 0xbb, 0xdd, 0xdd,
-    0xdb, 0x05, 0xf4, 0xf4, 0xf4, 0xf4, 0x44, 0x4f,
-    0xff, 0x4f, 0x44, 0xf4, 0xf4, 0xf4, 0xdd, 0xdb,
-    0x00, 0x00, 0x00, 0x00, 0xdd, 0xda, 0x66, 0x22,
-    0x71, 0x15, 0x55, 0x81, 0x22, 0x22, 0x76, 0x88,
-    0x11, 0x31, 0x88, 0x88, 0xab, 0xbd, 0xdd, 0xdd,
-    0xdd, 0x00, 0x04, 0x44, 0xff, 0xff, 0x4f, 0x4f,
-    0xff, 0x4f, 0x44, 0xf4, 0xf4, 0x44, 0xdd, 0xdb,
-    0x00, 0x00, 0x00, 0x0b, 0xdd, 0xda, 0x11, 0x22,
-    0x23, 0x68, 0x55, 0x86, 0x22, 0x22, 0x7a, 0x88,
-    0x1a, 0x71, 0x88, 0x89, 0xbb, 0xdd, 0xdd, 0xdd,
-    0xdd, 0xd0, 0x00, 0x4f, 0x44, 0xff, 0x4f, 0x4f,
-    0xff, 0x4f, 0x44, 0xf4, 0xff, 0xe2, 0xdd, 0xdb,
-    0x90, 0x00, 0x05, 0xbd, 0xdd, 0xb8, 0x63, 0x22,
-    0x27, 0xa6, 0x55, 0x88, 0x77, 0x22, 0x22, 0x88,
-    0x1a, 0x28, 0xbd, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd,
-    0xdd, 0xdb, 0x00, 0x07, 0x44, 0x4f, 0x4f, 0x4f,
-    0xff, 0x4f, 0x44, 0x4f, 0x4f, 0x22, 0xdd, 0xdb,
-    0xbb, 0x9b, 0xbb, 0xbd, 0xdd, 0xd5, 0x86, 0x22,
-    0x22, 0x77, 0x85, 0x88, 0x17, 0x22, 0x22, 0x88,
-    0xaa, 0x2b, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
-    0xdd, 0xdd, 0x00, 0x00, 0x54, 0x4f, 0x4f, 0x4f,
-    0xff, 0x4f, 0x44, 0xf4, 0x44, 0x22, 0xbd, 0xdd,
-    0xbb, 0xbb, 0xbb, 0xdd, 0xdd, 0xdd, 0x88, 0x72,
-    0x27, 0x22, 0x88, 0x88, 0x67, 0x72, 0x22, 0x18,
-    0x33, 0x2d, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
-    0xdd, 0xdd, 0xd0, 0x00, 0x05, 0x4f, 0x4f, 0x4f,
-    0xff, 0x4f, 0x44, 0x44, 0x4f, 0x22, 0xbd, 0xdd,
-    0xdb, 0xbb, 0xdd, 0xdd, 0xdd, 0xdd, 0x88, 0x17,
-    0x27, 0x72, 0x68, 0x88, 0x87, 0x32, 0x22, 0x36,
-    0x37, 0x2d, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
-    0xdd, 0xdd, 0xd5, 0x00, 0x00, 0x4f, 0x4f, 0x4f,
-    0xff, 0xf4, 0xf4, 0xf4, 0xf4, 0x22, 0xbb, 0xdd,
-    0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xd8, 0x67,
-    0x72, 0x77, 0x38, 0x88, 0x83, 0x37, 0x22, 0x26,
-    0x72, 0x2b, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
-    0xdd, 0xdd, 0xdd, 0x00, 0x00, 0x4f, 0x4f, 0x4f,
-    0xff, 0xf4, 0xf4, 0xf4, 0x44, 0x25, 0xbb, 0xdd,
-    0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xd3,
-    0x32, 0x73, 0x76, 0x88, 0x81, 0x33, 0x22, 0x2a,
-    0x22, 0x2b, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
-    0xdd, 0xdd, 0xdd, 0xb0, 0x54, 0x4f, 0x4f, 0x4f,
-    0xff, 0xf4, 0xf4, 0xff, 0x44, 0x00, 0xbb, 0xdd,
-    0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
-    0xa7, 0x73, 0x26, 0x88, 0x86, 0x7a, 0x72, 0x27,
-    0x22, 0x2b, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
-    0xdd, 0xdd, 0xdd, 0xdb, 0x44, 0xff, 0x4f, 0x4f,
-    0xff, 0xf4, 0xf4, 0x44, 0x40, 0x05, 0xbb, 0xdd,
-    0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
-    0x13, 0x23, 0x21, 0x68, 0x86, 0x17, 0x72, 0x22,
-    0x22, 0x2b, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
-    0xdd, 0xdd, 0xdd, 0xdb, 0x44, 0x4f, 0x4f, 0x4f,
-    0xff, 0xff, 0x44, 0x42, 0x00, 0x05, 0xbd, 0xdd,
-    0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
-    0x87, 0x27, 0x27, 0x16, 0x66, 0x67, 0x22, 0x22,
-    0x72, 0x7b, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
-    0xdd, 0xdd, 0xdd, 0xdd, 0x94, 0x44, 0x44, 0x44,
-    0x44, 0x44, 0x44, 0x00, 0x00, 0x05, 0xbb, 0xdd,
-    0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xb8,
-    0x86, 0x22, 0x22, 0x7a, 0x68, 0x81, 0x22, 0x22,
-    0x37, 0x7b, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
-    0xdd, 0xdd, 0xdd, 0xdb, 0xb5, 0x44, 0x44, 0x44,
-    0x44, 0x47, 0x00, 0x00, 0x00, 0x05, 0xbd, 0xdd,
-    0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xd8, 0x68,
-    0x58, 0x72, 0x22, 0x27, 0x18, 0x86, 0x72, 0x22,
-    0x1a, 0xbb, 0xbd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
-    0xdd, 0xdd, 0xdd, 0xdb, 0xb5, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xbb, 0xdd,
-    0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xb9, 0x18, 0x85,
-    0x58, 0x12, 0x22, 0x36, 0x18, 0x88, 0x32, 0x22,
-    0x61, 0x3b, 0xbb, 0xbb, 0xbd, 0xdd, 0xdd, 0xdd,
-    0xdd, 0xdd, 0xdd, 0xdb, 0xb9, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xbb, 0xdd,
-    0xdd, 0xdd, 0xdd, 0xdd, 0xb9, 0x7a, 0x68, 0x85,
-    0x88, 0x62, 0x27, 0x16, 0x18, 0x88, 0x12, 0x27,
-    0x86, 0x18, 0x9b, 0xbb, 0xbb, 0xbb, 0xbb, 0xbd,
-    0xdd, 0xdd, 0xdd, 0xbb, 0xb5, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xbb, 0xbd,
-    0xdd, 0xdd, 0xdb, 0xbb, 0x87, 0x31, 0x68, 0x65,
-    0x88, 0x82, 0x23, 0x16, 0x18, 0x88, 0x12, 0x23,
-    0x88, 0x67, 0x27, 0xa8, 0x9b, 0xbb, 0xbb, 0xbb,
-    0xbd, 0xdd, 0xbb, 0xbb, 0x95, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x9b, 0xbb,
-    0xbb, 0xbb, 0xbb, 0x96, 0x87, 0x16, 0x68, 0x18,
-    0x88, 0x62, 0x31, 0x66, 0x18, 0x88, 0x62, 0x73,
-    0x88, 0x63, 0x27, 0x33, 0x65, 0x55, 0x99, 0x9b,
-    0xbb, 0xbb, 0xbb, 0x99, 0x55, 0x0a, 0xa1, 0x86,
-    0x81, 0x68, 0x88, 0x55, 0x58, 0x85, 0x9b, 0xbb,
-    0xbb, 0xbb, 0x95, 0x88, 0x83, 0x66, 0x66, 0x18,
-    0x66, 0x82, 0xa1, 0x66, 0x18, 0x88, 0x62, 0x33,
-    0x88, 0x81, 0x27, 0x7a, 0x18, 0x58, 0x86, 0x85,
-    0x99, 0x99, 0x99, 0x95, 0x53, 0x2a, 0xaa, 0x88,
-    0x67, 0x31, 0x68, 0x55, 0x58, 0x85, 0x59, 0xbb,
-    0xbb, 0xb9, 0x58, 0x68, 0x83, 0x66, 0x61, 0x16,
-    0x66, 0x62, 0x16, 0x66, 0x68, 0x88, 0x62, 0xaa,
-    0x88, 0x86, 0x27, 0x77, 0x78, 0x55, 0x88, 0x22,
-    0x25, 0x55, 0x95, 0x55, 0x6a, 0xa2, 0x2a, 0x88,
-    0x62, 0x27, 0x37, 0x38, 0x88, 0x87, 0x55, 0x59,
-    0x95, 0x58, 0x16, 0x88, 0x8a, 0x66, 0x63, 0x68,
-    0x86, 0x67, 0x66, 0x66, 0x68, 0x88, 0x12, 0x11,
-    0x88, 0x88, 0x72, 0x77, 0x78, 0x85, 0x58, 0x17,
-    0x23, 0x32, 0x55, 0x55, 0x81, 0x13, 0x73, 0x66,
-    0x62, 0x7a, 0xaa, 0x38, 0x88, 0x58, 0x27, 0x55,
-    0x58, 0x32, 0x38, 0x88, 0x81, 0x66, 0xa2, 0x88,
-    0x86, 0x61, 0x66, 0x61, 0x66, 0x68, 0x13, 0x11,
-    0x88, 0x88, 0x12, 0x22, 0x71, 0x85, 0x58, 0x62,
-    0x23, 0xa2, 0x68, 0x88, 0x81, 0x66, 0x88, 0x88,
-    0x63, 0x2a, 0xaa, 0x28, 0x88, 0x55, 0x86, 0x61,
-    0x66, 0x66, 0x68, 0x88, 0x66, 0x66, 0x77, 0x88,
-    0x68, 0x16, 0x66, 0x62, 0x66, 0x68, 0xa1, 0x61,
-    0x88, 0x88, 0x62, 0x22, 0x22, 0x85, 0x55, 0x83,
-    0x72, 0x37, 0xa8, 0x88, 0x61, 0x66, 0x85, 0x55,
-    0x86, 0x23, 0xaa, 0x71, 0x88, 0x85, 0x88, 0x66,
-    0x88, 0x86, 0x88, 0x88, 0x16, 0x61, 0x21, 0x88,
-    0x66, 0xa6, 0x86, 0x17, 0x66, 0x66, 0x31, 0x61,
-    0x88, 0x88, 0x87, 0x72, 0x22, 0x68, 0x55, 0x86,
-    0x77, 0x77, 0x36, 0x88, 0x13, 0x68, 0x85, 0x55,
-    0x58, 0x12, 0x73, 0x72, 0x76, 0x88, 0x88, 0x68,
-    0x88, 0x88, 0x88, 0x66, 0x36, 0x63, 0x26, 0x86,
-    0x86, 0x36, 0x86, 0x11, 0x66, 0x66, 0x76, 0x61,
-    0x88, 0x88, 0x81, 0x22, 0x22, 0x38, 0x85, 0x58,
-    0x37, 0x22, 0x21, 0x68, 0xa2, 0x31, 0x68, 0x55,
-    0x55, 0x81, 0x22, 0x22, 0xa8, 0x88, 0x88, 0x68,
-    0x86, 0x88, 0x68, 0x81, 0x36, 0x17, 0x21, 0x68,
-    0x86, 0x16, 0x66, 0x26, 0x66, 0x61, 0x36, 0x66,
-    0x68, 0x88, 0x86, 0x27, 0x22, 0x28, 0x88, 0x88,
-    0x17, 0x72, 0x2a, 0x66, 0xa2, 0x22, 0x36, 0x55,
-    0x55, 0x58, 0x37, 0x3a, 0x16, 0x66, 0x66, 0x66,
-    0x66, 0x18, 0x88, 0x67, 0x16, 0x12, 0x71, 0x68,
-    0x81, 0x68, 0x61, 0x76, 0x66, 0x6a, 0x16, 0x66,
-    0x88, 0x88, 0x86, 0x77, 0x22, 0x26, 0x88, 0x88,
-    0x13, 0x37, 0x71, 0x66, 0xa2, 0x33, 0x2a, 0x85,
-    0x55, 0x55, 0x17, 0x73, 0x16, 0x66, 0x66, 0x68,
-    0x63, 0x88, 0x88, 0xa2, 0x66, 0xa2, 0xa6, 0x88,
-    0x61, 0x68, 0x6a, 0x76, 0x66, 0x6a, 0x66, 0x6a
-};
-
-#endif
+/* $Id: linux_logo.h,v 1.1.1.1 2009/03/25 22:22:13 kenagy Exp $
+ * include/linux/linux_logo.h: This is a linux logo
+ *                             to be displayed on boot.
+ *
+ * Copyright (C) 1996 Larry Ewing (lewing@isc.tamu.edu)
+ * Copyright (C) 1996,1998 Jakub Jelinek (jj@sunsite.mff.cuni.cz)
+ *
+ * You can put anything here, but:
+ * LINUX_LOGO_COLORS has to be less than 224
+ * image size has to be 80x80
+ * values have to start from 0x20
+ * (i.e. RGB(linux_logo_red[0],
+ *           linux_logo_green[0],
+ *           linux_logo_blue[0]) is color 0x20)
+ * BW image has to be 80x80 as well, with MS bit
+ * on the left
+ * Serial_console ascii image can be any size,
+ * but should contain %s to display the version
+ */
+
+#if LINUX_LOGO_COLORS == 214
+
+unsigned char linux_logo_red[] __initdata = {
+  0x02, 0x9E, 0xE9, 0xC4, 0x50, 0xC9, 0xC4, 0xE9,
+  0x65, 0xE3, 0xC2, 0x25, 0xA4, 0xEC, 0x90, 0xA6,
+  0xC4, 0x6A, 0xD1, 0xF3, 0x12, 0xED, 0xA0, 0xC2,
+  0xB8, 0xD5, 0xDB, 0xD2, 0x3E, 0x16, 0xEB, 0x54,
+  0xA9, 0xCD, 0xF5, 0x0A, 0xBA, 0xB3, 0xDC, 0x74,
+  0xCE, 0xF6, 0xD3, 0xC5, 0xEA, 0xB8, 0xED, 0x5E,
+  0xE5, 0x26, 0xF4, 0xA9, 0x82, 0x94, 0xE6, 0x38,
+  0xF2, 0x0F, 0x7F, 0x49, 0xE5, 0xF4, 0xD3, 0xC3,
+  0xC2, 0x1E, 0xD5, 0xC6, 0xA4, 0xFA, 0x0A, 0xBA,
+  0xD4, 0xEB, 0xEA, 0xEC, 0xA8, 0xBC, 0xB4, 0xDC,
+  0x84, 0xE4, 0xCE, 0xEC, 0x92, 0xCD, 0xDC, 0x8B,
+  0xCC, 0x1E, 0xF6, 0xB2, 0x60, 0x2A, 0x96, 0x52,
+  0x0F, 0xBD, 0xFA, 0xCC, 0xB8, 0x7A, 0x4C, 0xD2,
+  0x06, 0xEF, 0x44, 0x64, 0xF4, 0xBA, 0xCE, 0xE6,
+  0x8A, 0x6F, 0x3C, 0x70, 0x7C, 0x9C, 0xBA, 0xDF,
+  0x2C, 0x4D, 0x3B, 0xCA, 0xDE, 0xCE, 0xEE, 0x46,
+  0x6A, 0xAC, 0x96, 0xE5, 0x96, 0x7A, 0xBA, 0xB6,
+  0xE2, 0x7E, 0xAA, 0xC5, 0x96, 0x9E, 0xC2, 0xAA,
+  0xDA, 0x35, 0xB6, 0x82, 0x88, 0xBE, 0xC2, 0x9E,
+  0xB4, 0xD5, 0xDA, 0x9C, 0xA0, 0xD0, 0xA8, 0xC7,
+  0x72, 0xF2, 0xDB, 0x76, 0xDC, 0xBE, 0xAA, 0xF4,
+  0x87, 0x2F, 0x53, 0x8E, 0x36, 0xCE, 0xE6, 0xCA,
+  0xCB, 0xE4, 0xD6, 0xAA, 0x42, 0x5D, 0xB4, 0x59,
+  0x1C, 0xC8, 0x96, 0x6C, 0xDA, 0xCE, 0xE6, 0xCB,
+  0x96, 0x16, 0xFA, 0xBE, 0xAE, 0xFE, 0x6E, 0xD6,
+  0xCE, 0xB6, 0xE5, 0xED, 0xDB, 0xDC, 0xF4, 0x72,
+  0x1F, 0xAE, 0xE6, 0xC2, 0xCA, 0xC4
+};
+
+unsigned char linux_logo_green[] __initdata = {
+  0x02, 0x88, 0xC4, 0x85, 0x44, 0xA2, 0xA8, 0xE5,
+  0x65, 0xA6, 0xC2, 0x24, 0xA4, 0xB4, 0x62, 0x86,
+  0x94, 0x44, 0xD2, 0xB6, 0x12, 0xD4, 0x73, 0x96,
+  0x92, 0x95, 0xB2, 0xC2, 0x36, 0x0E, 0xBC, 0x54,
+  0x75, 0xA5, 0xF5, 0x0A, 0xB2, 0x83, 0xC2, 0x74,
+  0x9B, 0xBD, 0xA2, 0xCA, 0xDA, 0x8C, 0xCB, 0x42,
+  0xAC, 0x12, 0xDA, 0x7B, 0x54, 0x94, 0xD2, 0x24,
+  0xBE, 0x06, 0x65, 0x33, 0xBB, 0xBC, 0xAB, 0x8C,
+  0x92, 0x1E, 0x9B, 0xB6, 0x6E, 0xFB, 0x04, 0xA2,
+  0xC8, 0xBD, 0xAD, 0xEC, 0x92, 0xBC, 0x7B, 0x9D,
+  0x84, 0xC4, 0xC4, 0xB4, 0x6C, 0x93, 0xA3, 0x5E,
+  0x8D, 0x13, 0xD6, 0x82, 0x4C, 0x2A, 0x7A, 0x5A,
+  0x0D, 0x82, 0xBB, 0xCC, 0x8B, 0x6A, 0x3C, 0xBE,
+  0x06, 0xC4, 0x44, 0x45, 0xDB, 0x96, 0xB6, 0xDE,
+  0x8A, 0x4D, 0x3C, 0x5A, 0x7C, 0x9C, 0xAA, 0xCB,
+  0x1C, 0x4D, 0x2E, 0xB2, 0xBE, 0xAA, 0xDE, 0x3E,
+  0x6A, 0xAC, 0x82, 0xE5, 0x72, 0x62, 0x92, 0x9E,
+  0xCA, 0x4A, 0x8E, 0xBE, 0x86, 0x6B, 0xAA, 0x9A,
+  0xBE, 0x34, 0xAB, 0x76, 0x6E, 0x9A, 0x9E, 0x62,
+  0x76, 0xCE, 0xD3, 0x92, 0x7C, 0xB8, 0x7E, 0xC6,
+  0x5E, 0xE2, 0xC3, 0x54, 0xAA, 0x9E, 0x8A, 0xCA,
+  0x63, 0x2D, 0x3B, 0x8E, 0x1A, 0x9E, 0xC2, 0xA6,
+  0xCB, 0xDC, 0xD6, 0x8E, 0x26, 0x5C, 0xB4, 0x45,
+  0x1C, 0xB8, 0x6E, 0x4C, 0xBC, 0xAE, 0xD6, 0x92,
+  0x63, 0x16, 0xF6, 0x8C, 0x7A, 0xFE, 0x6E, 0xBA,
+  0xC6, 0x86, 0xAA, 0xAE, 0xDB, 0xA4, 0xD4, 0x56,
+  0x0E, 0x6E, 0xB6, 0xB2, 0xBE, 0xBE
+};
+
+unsigned char linux_logo_blue[] __initdata = {
+  0x04, 0x28, 0x10, 0x0B, 0x14, 0x14, 0x74, 0xC7,
+  0x64, 0x0E, 0xC3, 0x24, 0xA4, 0x0C, 0x10, 0x20,
+  0x0D, 0x04, 0xD1, 0x0D, 0x13, 0x22, 0x0A, 0x40,
+  0x14, 0x0C, 0x11, 0x94, 0x0C, 0x08, 0x0B, 0x56,
+  0x09, 0x47, 0xF4, 0x0B, 0x9C, 0x07, 0x54, 0x74,
+  0x0F, 0x0C, 0x0F, 0xC7, 0x6C, 0x14, 0x14, 0x11,
+  0x0B, 0x04, 0x12, 0x0C, 0x05, 0x94, 0x94, 0x0A,
+  0x34, 0x09, 0x14, 0x08, 0x2F, 0x15, 0x19, 0x11,
+  0x28, 0x0C, 0x0B, 0x94, 0x08, 0xFA, 0x08, 0x7C,
+  0xBC, 0x15, 0x0A, 0xEC, 0x64, 0xBB, 0x0A, 0x0C,
+  0x84, 0x2C, 0xA0, 0x15, 0x10, 0x0D, 0x0B, 0x0E,
+  0x0A, 0x07, 0x10, 0x3C, 0x24, 0x2C, 0x28, 0x5C,
+  0x0A, 0x0D, 0x0A, 0xC1, 0x22, 0x4C, 0x10, 0x94,
+  0x04, 0x0F, 0x45, 0x08, 0x31, 0x54, 0x3C, 0xBC,
+  0x8C, 0x09, 0x3C, 0x18, 0x7C, 0x9C, 0x7C, 0x91,
+  0x0C, 0x4D, 0x17, 0x74, 0x0C, 0x48, 0x9C, 0x3C,
+  0x6A, 0xAC, 0x5C, 0xE3, 0x29, 0x3C, 0x2C, 0x7C,
+  0x6C, 0x04, 0x14, 0xA9, 0x74, 0x07, 0x2C, 0x74,
+  0x4C, 0x34, 0x97, 0x5C, 0x38, 0x0C, 0x5C, 0x04,
+  0x0C, 0xBA, 0xBC, 0x78, 0x18, 0x88, 0x24, 0xC2,
+  0x3C, 0xB4, 0x87, 0x0C, 0x14, 0x4C, 0x3C, 0x10,
+  0x17, 0x2C, 0x0A, 0x8C, 0x04, 0x1C, 0x44, 0x2C,
+  0xCD, 0xD8, 0xD4, 0x34, 0x0C, 0x5B, 0xB4, 0x1E,
+  0x1D, 0xAC, 0x24, 0x18, 0x20, 0x5C, 0xB4, 0x1C,
+  0x09, 0x14, 0xFC, 0x0C, 0x10, 0xFC, 0x6C, 0x7C,
+  0xB4, 0x1C, 0x15, 0x17, 0xDB, 0x18, 0x21, 0x24,
+  0x04, 0x04, 0x44, 0x8C, 0x8C, 0xB7
+};
+
+unsigned char linux_logo[] __initdata = {
+  0xBF, 0x95, 0x90, 0xCB, 0x95, 0xA1, 0x2C, 0x2C,
+  0x95, 0x55, 0xCB, 0x90, 0xCB, 0x95, 0x2C, 0x95,
+  0xCB, 0x47, 0x94, 0x95, 0xA1, 0xD6, 0xD6, 0x2C,
+  0x90, 0x47, 0x70, 0x2C, 0x6D, 0x2A, 0x6D, 0xD6,
+  0xA1, 0x2C, 0x55, 0x95, 0x2C, 0x2C, 0x55, 0x55,
+  0x95, 0xA1, 0xA1, 0xA1, 0x6D, 0xBF, 0x2A, 0x2A,
+  0xBF, 0x83, 0xBF, 0x95, 0x90, 0xCB, 0x95, 0xA1,
+  0x2C, 0x2C, 0x95, 0x55, 0xCB, 0x90, 0xCB, 0x95,
+  0x2C, 0x95, 0xCB, 0x47, 0x94, 0x95, 0xA1, 0xD6,
+  0xD6, 0x2C, 0x90, 0x47, 0x70, 0x2C, 0x6D, 0x2A,
+  0x95, 0x47, 0x47, 0x90, 0x2C, 0x2C, 0x2C, 0x95,
+  0x55, 0x55, 0xCB, 0x90, 0xCB, 0x55, 0x55, 0xCB,
+  0x47, 0xE6, 0x70, 0x95, 0xD6, 0xD6, 0xA1, 0x2C,
+  0x55, 0x55, 0x95, 0xD6, 0x6D, 0xD6, 0xA1, 0x2C,
+  0x2C, 0x95, 0x55, 0x95, 0x95, 0x95, 0x2C, 0x2C,
+  0xA1, 0xA1, 0x2C, 0x2C, 0xA1, 0xD6, 0xD6, 0xD6,
+  0xD6, 0xD6, 0x95, 0x47, 0x47, 0x90, 0x2C, 0x2C,
+  0x2C, 0x95, 0x55, 0x55, 0xCB, 0x90, 0xCB, 0x55,
+  0x55, 0xCB, 0x47, 0xE6, 0x70, 0x95, 0xD6, 0xD6,
+  0xA1, 0x2C, 0x55, 0x55, 0x95, 0xD6, 0x6D, 0xD6,
+  0x90, 0x47, 0x47, 0x70, 0x2C, 0xA1, 0x2C, 0x95,
+  0x55, 0x55, 0x90, 0xCB, 0x55, 0x55, 0x55, 0x70,
+  0x94, 0x70, 0x95, 0xA1, 0xD6, 0xD6, 0xA1, 0x2C,
+  0x95, 0x95, 0x2C, 0xA1, 0xD6, 0xA1, 0x2C, 0x2C,
+  0x95, 0x55, 0xCB, 0x95, 0xD6, 0xA1, 0x2C, 0x95,
+  0xA1, 0xD6, 0xD6, 0xA1, 0xA1, 0xD6, 0xA1, 0xA1,
+  0xA1, 0x2C, 0x90, 0x47, 0x47, 0x70, 0x2C, 0xA1,
+  0x2C, 0x95, 0x55, 0x55, 0x90, 0xCB, 0x55, 0x55,
+  0x55, 0x70, 0x94, 0x70, 0x95, 0xA1, 0xD6, 0xD6,
+  0xA1, 0x2C, 0x95, 0x95, 0x2C, 0xD6, 0xD6, 0xA1,
+  0x94, 0xA0, 0x47, 0x55, 0x2C, 0xD6, 0xA1, 0x95,
+  0x55, 0x55, 0xCB, 0xCB, 0x55, 0x55, 0xCB, 0xCB,
+  0x55, 0x95, 0x2C, 0xA1, 0xD6, 0xD6, 0xA1, 0x2C,
+  0x95, 0x95, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x95,
+  0x55, 0x55, 0x2C, 0x3F, 0x80, 0x20, 0x88, 0x88,
+  0x88, 0x20, 0x88, 0xB1, 0x2C, 0xA1, 0x2C, 0x2C,
+  0x95, 0xCB, 0x94, 0xA0, 0x47, 0x55, 0x2C, 0xD6,
+  0xA1, 0x95, 0x55, 0x55, 0xCB, 0xCB, 0x55, 0x55,
+  0xCB, 0xCB, 0x55, 0x95, 0x2C, 0xA1, 0xD6, 0xD6,
+  0xA1, 0x2C, 0x95, 0x95, 0x2C, 0x2C, 0x2C, 0x2C,
+  0x94, 0x94, 0x70, 0x2C, 0xA1, 0xD6, 0xA1, 0x2C,
+  0x55, 0x55, 0xCB, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x95, 0x2C, 0xD6, 0xD6, 0xD6, 0xA1, 0x2C, 0x95,
+  0x55, 0x55, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95,
+  0x2C, 0x94, 0x80, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x88, 0x92, 0xA1, 0x95,
+  0x55, 0x90, 0x94, 0x94, 0x70, 0x2C, 0xA1, 0xD6,
+  0xA1, 0x2C, 0x55, 0x55, 0xCB, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x95, 0x2C, 0xD6, 0xD6, 0xD6, 0xA1,
+  0x2C, 0x95, 0x55, 0x55, 0x55, 0x95, 0x95, 0x95,
+  0x70, 0x70, 0x55, 0x2C, 0xD6, 0xD6, 0xA1, 0x95,
+  0x55, 0x90, 0xCB, 0xCB, 0x55, 0x55, 0x2C, 0x2C,
+  0xA1, 0xD6, 0xA1, 0xA1, 0x2C, 0x2C, 0x95, 0x55,
+  0x55, 0x55, 0x95, 0x95, 0x2C, 0x95, 0x95, 0xD6,
+  0xB1, 0x88, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x80, 0x34, 0x88, 0x43, 0x47,
+  0x95, 0xCB, 0x70, 0x70, 0x55, 0x2C, 0xD6, 0xD6,
+  0xA1, 0x95, 0x55, 0x90, 0xCB, 0xCB, 0x55, 0x55,
+  0x2C, 0x2C, 0xA1, 0xD6, 0xA1, 0xA1, 0xA1, 0x2C,
+  0x55, 0x55, 0x55, 0x55, 0x2C, 0x95, 0x2C, 0x2C,
+  0x55, 0x55, 0x95, 0x2C, 0xA1, 0xA1, 0x2C, 0x55,
+  0x90, 0x70, 0x90, 0x55, 0x95, 0x95, 0xA1, 0xA1,
+  0xA1, 0xA1, 0xA1, 0xA1, 0x2C, 0x95, 0x95, 0x95,
+  0x95, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0xD5,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x88, 0x7D, 0x3F, 0xB1, 0x80, 0x20,
+  0x99, 0x2C, 0x55, 0x55, 0x95, 0x2C, 0xA1, 0xA1,
+  0x2C, 0x55, 0x90, 0x70, 0x90, 0x55, 0x95, 0x95,
+  0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0x2C, 0x2C, 0x2C,
+  0x95, 0x55, 0x95, 0x95, 0x2C, 0x2C, 0x2C, 0x2C,
+  0x95, 0x90, 0x55, 0x2C, 0xA1, 0xA1, 0x95, 0xCB,
+  0x70, 0x94, 0x90, 0x55, 0x95, 0xA1, 0xA1, 0xA1,
+  0x2C, 0x2C, 0x2C, 0x2C, 0x95, 0x95, 0x95, 0x95,
+  0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0xA1, 0x88,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0xB1, 0x47, 0xD5, 0x7D, 0x43,
+  0x20, 0x70, 0x95, 0x90, 0x55, 0x2C, 0xA1, 0xA1,
+  0x95, 0xCB, 0x70, 0x94, 0x90, 0x55, 0x95, 0xA1,
+  0xA1, 0xA1, 0x2C, 0x95, 0x2C, 0x2C, 0x95, 0x95,
+  0x95, 0x95, 0x95, 0x2C, 0x95, 0x95, 0x95, 0x95,
+  0x95, 0x90, 0x55, 0x2C, 0xD6, 0xD6, 0x2C, 0x90,
+  0x94, 0x70, 0x55, 0x95, 0x2C, 0xD6, 0xD6, 0xA1,
+  0x95, 0x95, 0x95, 0x2C, 0x2C, 0x95, 0x55, 0x55,
+  0xCB, 0xCB, 0xCB, 0x55, 0xCB, 0x55, 0x47, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x88, 0xB1, 0x3F, 0x92, 0x2B, 0x80,
+  0x20, 0x80, 0xD6, 0x70, 0x55, 0x2C, 0xD6, 0xD6,
+  0x2C, 0x90, 0x94, 0x70, 0x55, 0x95, 0x2C, 0xD6,
+  0xD6, 0xA1, 0x2C, 0x95, 0x95, 0x2C, 0x2C, 0x95,
+  0x95, 0x55, 0x90, 0xCB, 0xCB, 0xCB, 0xCB, 0x55,
+  0xD6, 0x55, 0x95, 0xA1, 0xD6, 0xA1, 0x55, 0x70,
+  0x94, 0x55, 0x95, 0xA1, 0xA1, 0xA1, 0xA1, 0x95,
+  0x55, 0x55, 0x55, 0x95, 0x55, 0x55, 0xCB, 0x90,
+  0x70, 0x90, 0xCB, 0x55, 0x55, 0xA1, 0xD8, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x88, 0xD8, 0xE1, 0x88, 0x20, 0x20,
+  0x88, 0x88, 0xE6, 0x55, 0x2C, 0xA1, 0xD6, 0xA1,
+  0x55, 0x70, 0x94, 0x55, 0x95, 0xA1, 0xA1, 0xA1,
+  0xA1, 0x95, 0x55, 0x55, 0x95, 0x95, 0x55, 0x55,
+  0x90, 0x90, 0x90, 0x90, 0xCB, 0x55, 0x55, 0x55,
+  0xD6, 0x2C, 0xA1, 0xD6, 0xD6, 0xA1, 0xCB, 0x70,
+  0x70, 0x95, 0x2C, 0xA1, 0xA1, 0x2C, 0x2C, 0x55,
+  0xCB, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x95, 0x2C, 0x95, 0x2C, 0xD6, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x80, 0xD6, 0xA1, 0xD6, 0xD6, 0xA1,
+  0xCB, 0x70, 0x70, 0x95, 0x2C, 0xA1, 0xA1, 0x2C,
+  0x2C, 0x55, 0xCB, 0xCB, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x55, 0x95, 0x2C, 0x2C, 0x2C, 0x2C,
+  0xD6, 0xA1, 0xA1, 0xA1, 0xA1, 0x55, 0x70, 0x94,
+  0xCB, 0x95, 0xA1, 0xA1, 0x2C, 0x95, 0xCB, 0x55,
+  0x90, 0xCB, 0x55, 0x55, 0x55, 0x55, 0x95, 0xA1,
+  0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0x95, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x88, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x88, 0x95, 0xA1, 0xA1, 0xA1, 0x55,
+  0x70, 0x94, 0xCB, 0x95, 0xA1, 0xA1, 0x2C, 0x95,
+  0xCB, 0xCB, 0x90, 0xCB, 0x55, 0x55, 0x55, 0x55,
+  0x95, 0x2C, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1,
+  0x2C, 0x2C, 0x2C, 0x95, 0x95, 0xCB, 0x70, 0x70,
+  0x95, 0x2C, 0x2C, 0x95, 0xCB, 0x70, 0x90, 0xCB,
+  0xCB, 0x55, 0x55, 0xCB, 0x55, 0x55, 0x2C, 0xD6,
+  0xD6, 0xD6, 0xD6, 0xA1, 0x2C, 0x70, 0x20, 0x20,
+  0x88, 0x43, 0xD8, 0x43, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x88, 0x88, 0x43, 0x2B, 0xD8, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x3F, 0x2C, 0x95, 0x95, 0xCB,
+  0x70, 0x70, 0x95, 0x2C, 0x2C, 0x95, 0xCB, 0x90,
+  0x90, 0xCB, 0x55, 0xCB, 0x55, 0xCB, 0x55, 0x95,
+  0x2C, 0xD6, 0xD6, 0xD6, 0xD6, 0xA1, 0x2C, 0x2C,
+  0xA1, 0x95, 0x95, 0x55, 0xCB, 0x70, 0x90, 0x55,
+  0x2C, 0x2C, 0x2C, 0x55, 0x70, 0x70, 0x55, 0x95,
+  0x95, 0xCB, 0x90, 0x90, 0x90, 0x95, 0x2C, 0xA1,
+  0xD6, 0xD6, 0x2C, 0x2C, 0x95, 0x70, 0x20, 0x20,
+  0x80, 0x2B, 0x34, 0x2B, 0x88, 0x20, 0x20, 0x20,
+  0x88, 0xB1, 0x28, 0x28, 0x2B, 0x7D, 0x80, 0x20,
+  0x20, 0x20, 0x20, 0x92, 0x95, 0x55, 0xCB, 0x70,
+  0x90, 0x55, 0x2C, 0x2C, 0x2C, 0x55, 0x70, 0x70,
+  0x55, 0x95, 0x55, 0x55, 0x90, 0x90, 0x90, 0x55,
+  0x2C, 0xA1, 0xD6, 0xA1, 0x2C, 0x2C, 0x95, 0x95,
+  0xA1, 0x95, 0x55, 0xCB, 0x90, 0x70, 0xCB, 0x95,
+  0xA1, 0x95, 0x95, 0xCB, 0x90, 0xCB, 0x95, 0x2C,
+  0x95, 0x70, 0x70, 0x90, 0x55, 0x2C, 0xA1, 0xA1,
+  0x2C, 0x2C, 0x55, 0xCB, 0x55, 0x90, 0x20, 0x34,
+  0x90, 0x6D, 0x70, 0xD8, 0x43, 0x20, 0x20, 0x88,
+  0x3F, 0x55, 0xA1, 0x2A, 0xD6, 0x7D, 0x43, 0x20,
+  0x20, 0x20, 0x88, 0x7D, 0x55, 0xCB, 0x90, 0x70,
+  0xCB, 0x95, 0xA1, 0x95, 0x95, 0xCB, 0x70, 0xCB,
+  0x95, 0xA1, 0x95, 0x70, 0x70, 0xCB, 0x55, 0x2C,
+  0xA1, 0xA1, 0xA1, 0x95, 0x55, 0x55, 0x55, 0x95,
+  0x2C, 0x55, 0x90, 0x70, 0x94, 0x90, 0x95, 0x2C,
+  0x2C, 0x95, 0xCB, 0x90, 0x55, 0x95, 0xA1, 0xA1,
+  0x95, 0x90, 0x90, 0x95, 0xA1, 0xD6, 0xD6, 0x6D,
+  0xA1, 0x95, 0x55, 0xCB, 0x55, 0xCB, 0x20, 0x99,
+  0xBF, 0xA3, 0xA3, 0x90, 0x20, 0x20, 0x20, 0x92,
+  0x83, 0x6B, 0x6B, 0x6B, 0xA3, 0x70, 0x88, 0x20,
+  0x20, 0x20, 0x20, 0x2B, 0x90, 0x70, 0x94, 0x90,
+  0x95, 0x2C, 0x2C, 0x95, 0xCB, 0x90, 0x55, 0x95,
+  0xA1, 0x2C, 0x55, 0x90, 0x90, 0x95, 0xA1, 0xD6,
+  0xD6, 0x6D, 0xA1, 0x95, 0x55, 0xCB, 0x55, 0x55,
+  0x2C, 0x55, 0x70, 0x70, 0x94, 0x90, 0x95, 0x2C,
+  0x2C, 0x55, 0xCB, 0xCB, 0x95, 0x2C, 0x2C, 0x2C,
+  0x55, 0x55, 0x95, 0xA1, 0x6D, 0xBF, 0x6D, 0xD6,
+  0x95, 0x55, 0x90, 0xCB, 0x55, 0x95, 0x88, 0x95,
+  0x2C, 0x3F, 0x6D, 0x6B, 0x34, 0x20, 0x20, 0x47,
+  0x65, 0xD6, 0xE1, 0x3F, 0x2A, 0x6B, 0x2B, 0x20,
+  0x20, 0x20, 0x20, 0x43, 0x70, 0x70, 0x94, 0x90,
+  0x95, 0x2C, 0x2C, 0x55, 0x55, 0x55, 0x95, 0x2C,
+  0xA1, 0x2C, 0x55, 0xCB, 0x95, 0xA1, 0x6D, 0xBF,
+  0x6D, 0xD6, 0x2C, 0x55, 0x90, 0xCB, 0x95, 0x95,
+  0x95, 0x55, 0x70, 0x94, 0x70, 0x55, 0x2C, 0xA1,
+  0x2C, 0x55, 0xCB, 0x55, 0x2C, 0x95, 0x2C, 0x95,
+  0x95, 0x95, 0xA1, 0x6D, 0xBF, 0x2A, 0xD6, 0x95,
+  0x70, 0x94, 0x94, 0x70, 0x55, 0x55, 0x20, 0xBF,
+  0xC9, 0xB1, 0x99, 0x42, 0xB1, 0x61, 0x7D, 0x94,
+  0x65, 0xB1, 0x88, 0x99, 0xD5, 0xE5, 0x7F, 0x20,
+  0x20, 0x20, 0x20, 0x43, 0x70, 0x94, 0x70, 0x55,
+  0x2C, 0xA1, 0x2C, 0x55, 0x90, 0x55, 0x2C, 0x95,
+  0x2C, 0x95, 0x95, 0x2C, 0xA1, 0x6D, 0xBF, 0xBF,
+  0xD6, 0x55, 0x70, 0x94, 0x94, 0x70, 0xCB, 0x55,
+  0x55, 0xCB, 0x70, 0x94, 0x70, 0x95, 0xA1, 0xA1,
+  0x95, 0x55, 0x55, 0x95, 0x2C, 0x95, 0x95, 0x95,
+  0x95, 0xA1, 0x6D, 0x2A, 0x2A, 0xD6, 0x55, 0x94,
+  0xE6, 0xE6, 0x47, 0x70, 0x55, 0x95, 0x20, 0x2A,
+  0xD8, 0x43, 0xC9, 0x83, 0x98, 0x79, 0x34, 0x9F,
+  0x6B, 0x43, 0x20, 0x88, 0x2B, 0x65, 0xA0, 0x20,
+  0x20, 0x20, 0x20, 0xE1, 0x70, 0x94, 0x70, 0x95,
+  0xA1, 0xA1, 0x95, 0x55, 0x55, 0x95, 0x2C, 0x95,
+  0x95, 0x95, 0x95, 0xA1, 0x6D, 0xBF, 0x2A, 0xD6,
+  0x55, 0x94, 0xE6, 0xE6, 0x47, 0x70, 0x55, 0x55,
+  0x94, 0x70, 0x94, 0x47, 0x70, 0x95, 0x2C, 0x2C,
+  0x95, 0xCB, 0x95, 0x2C, 0x2C, 0xA1, 0x2C, 0x2C,
+  0xA1, 0xD6, 0x6D, 0x6D, 0xA1, 0xCB, 0x47, 0x28,
+  0xE6, 0x47, 0x70, 0x55, 0x95, 0xA1, 0x20, 0x2C,
+  0x7F, 0x88, 0xF0, 0xC6, 0x25, 0x5E, 0xCF, 0x2F,
+  0xE7, 0x9A, 0x20, 0x88, 0x99, 0x65, 0x3F, 0x20,
+  0x20, 0x20, 0x20, 0x34, 0x94, 0x47, 0x70, 0x95,
+  0xA1, 0x2C, 0x55, 0xCB, 0x95, 0x2C, 0x2C, 0xA1,
+  0x2C, 0x2C, 0xA1, 0xD6, 0x6D, 0x6D, 0xA1, 0xCB,
+  0x94, 0x28, 0xA0, 0x47, 0x70, 0x55, 0x95, 0x95,
+  0x47, 0x70, 0x90, 0x94, 0x70, 0x95, 0xA1, 0x2C,
+  0x55, 0x55, 0x2C, 0xA1, 0xA1, 0xA1, 0xA1, 0x2C,
+  0xA1, 0x6D, 0x2A, 0xD6, 0x55, 0x47, 0x28, 0x28,
+  0x47, 0x70, 0x55, 0x95, 0x2C, 0xA1, 0x20, 0x28,
+  0xEC, 0x86, 0xBE, 0x48, 0x3E, 0x3E, 0x3A, 0x25,
+  0x4E, 0xAE, 0x93, 0xD7, 0xEC, 0xD1, 0x34, 0x20,
+  0x20, 0x20, 0x20, 0x43, 0x55, 0x94, 0x70, 0x95,
+  0xA1, 0xA1, 0x55, 0xCB, 0x2C, 0xA1, 0xA1, 0xA1,
+  0xA1, 0x2C, 0xA1, 0x6D, 0x6D, 0xD6, 0x55, 0x47,
+  0x28, 0x28, 0x47, 0x70, 0x55, 0x95, 0x2C, 0x2C,
+  0x95, 0x95, 0x55, 0x90, 0xCB, 0x2C, 0xA1, 0xA1,
+  0x55, 0x55, 0x2C, 0xD6, 0xD6, 0xA1, 0xA1, 0x2C,
+  0xD6, 0x6D, 0x6D, 0xA1, 0x70, 0x28, 0xD5, 0xE6,
+  0x70, 0x55, 0x95, 0x2C, 0xA1, 0xD6, 0x20, 0xE1,
+  0x26, 0x84, 0x76, 0x73, 0x9C, 0x22, 0x4E, 0x35,
+  0x8C, 0x7A, 0x4E, 0xDC, 0x8E, 0x7E, 0x3D, 0x88,
+  0x20, 0x20, 0x20, 0x88, 0x2C, 0x90, 0x90, 0x95,
+  0xA1, 0x2C, 0x55, 0x55, 0x2C, 0xD6, 0xD6, 0xD6,
+  0x2C, 0x2C, 0xD6, 0x2A, 0x6D, 0x2C, 0x70, 0x28,
+  0xD5, 0xE6, 0x70, 0x55, 0x95, 0xA1, 0x2C, 0xA1,
+  0xBF, 0xA1, 0x95, 0xCB, 0xCB, 0x2C, 0xA1, 0xA1,
+  0x95, 0x95, 0xA1, 0xD6, 0xD6, 0xA1, 0x2C, 0x95,
+  0xD6, 0x6D, 0xD6, 0x95, 0x94, 0x28, 0xE6, 0x70,
+  0x55, 0x95, 0xA1, 0xA1, 0xA1, 0xD6, 0x20, 0x57,
+  0xE4, 0xDF, 0x50, 0x3E, 0x22, 0x4E, 0x35, 0x8C,
+  0x8C, 0x52, 0x52, 0x7A, 0x4E, 0x58, 0xD7, 0x20,
+  0x20, 0x20, 0x20, 0x88, 0x2C, 0xCB, 0x55, 0x2C,
+  0xA1, 0xA1, 0x95, 0x95, 0xA1, 0xD6, 0xD6, 0xA1,
+  0x2C, 0x95, 0xA1, 0x6D, 0x6D, 0x95, 0x47, 0xA0,
+  0xE6, 0x70, 0x55, 0x95, 0x2C, 0xA1, 0xA1, 0xA1,
+  0xD2, 0x95, 0x55, 0x90, 0x55, 0x2C, 0xD6, 0xA1,
+  0x95, 0x95, 0xA1, 0xD6, 0xD6, 0x2C, 0x95, 0x2C,
+  0xA1, 0x6D, 0xA1, 0x55, 0x94, 0x47, 0x94, 0xCB,
+  0x55, 0x95, 0x2C, 0xA1, 0xD6, 0xD6, 0x59, 0xC8,
+  0xE3, 0x76, 0x2D, 0x3E, 0x22, 0x4E, 0x8C, 0x35,
+  0x52, 0x52, 0xEE, 0x3A, 0x4D, 0xED, 0x24, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x28, 0xCB, 0x55, 0x2C,
+  0xD6, 0xA1, 0x95, 0x95, 0xA1, 0xD6, 0xA1, 0x2C,
+  0x95, 0x2C, 0xD6, 0x6D, 0xA1, 0x55, 0x94, 0xE6,
+  0x70, 0xCB, 0x55, 0x95, 0xA1, 0xD6, 0xD6, 0xA1,
+  0xD0, 0x94, 0x94, 0x90, 0x55, 0x2C, 0xA1, 0xA1,
+  0x55, 0x95, 0xA1, 0xA1, 0xA1, 0x2C, 0x95, 0x2C,
+  0xA1, 0xD6, 0x2C, 0x70, 0x94, 0x94, 0x94, 0x94,
+  0x70, 0x55, 0xA1, 0xD6, 0xA1, 0xD6, 0x88, 0x77,
+  0x38, 0xC4, 0x3E, 0x69, 0x4E, 0x35, 0x8C, 0xEE,
+  0x35, 0x89, 0x30, 0x30, 0x4A, 0x48, 0x3C, 0x20,
+  0x20, 0x88, 0x20, 0x20, 0xD8, 0x2C, 0x55, 0x2C,
+  0xD6, 0xA1, 0x95, 0x95, 0x2C, 0xD6, 0xA1, 0x2C,
+  0x95, 0x2C, 0xA1, 0xD6, 0x2C, 0x90, 0x94, 0x47,
+  0x94, 0x94, 0x70, 0x55, 0x2C, 0xD6, 0xA1, 0x95,
+  0x95, 0x28, 0x47, 0x90, 0x95, 0x2C, 0xA1, 0x2C,
+  0x95, 0x55, 0x95, 0xA1, 0xD6, 0xA1, 0x2C, 0x2C,
+  0xA1, 0xA1, 0x55, 0x70, 0x94, 0x47, 0x94, 0x94,
+  0x70, 0x2C, 0xD6, 0xD6, 0x2C, 0xA1, 0x43, 0x98,
+  0x54, 0x48, 0x3E, 0x22, 0x35, 0xEE, 0xEE, 0x9C,
+  0x4D, 0x45, 0x75, 0x4A, 0xDF, 0x7B, 0x3D, 0x20,
+  0xD8, 0x28, 0x2B, 0x88, 0x20, 0x95, 0x95, 0x2C,
+  0xA1, 0x2C, 0x55, 0x55, 0x2C, 0xA1, 0xD6, 0xA1,
+  0x2C, 0x95, 0xA1, 0x2C, 0x55, 0x70, 0x94, 0x94,
+  0x94, 0x94, 0x70, 0x95, 0xD6, 0xD6, 0x2C, 0x95,
+  0x70, 0x28, 0x47, 0x55, 0x95, 0x2C, 0x2C, 0x2C,
+  0x95, 0x95, 0x95, 0xA1, 0xA1, 0xA1, 0x95, 0x55,
+  0x95, 0x95, 0x55, 0x70, 0x70, 0x70, 0x94, 0x70,
+  0x55, 0xD6, 0x6D, 0xD6, 0x95, 0x2C, 0x20, 0x43,
+  0xBB, 0xC8, 0x36, 0x30, 0x30, 0x38, 0x45, 0x6E,
+  0xE3, 0x75, 0x78, 0x37, 0xBD, 0xD9, 0x3F, 0x20,
+  0x88, 0xD5, 0x70, 0xB1, 0x88, 0xA0, 0x95, 0x2C,
+  0x2C, 0xA1, 0x95, 0x55, 0x95, 0xA1, 0xA1, 0xA1,
+  0x2C, 0x55, 0x95, 0x2C, 0x55, 0x70, 0x70, 0x70,
+  0x94, 0x70, 0x55, 0xD6, 0x6D, 0x6D, 0x95, 0x55,
+  0x94, 0x47, 0x70, 0x95, 0x2C, 0x2C, 0x2C, 0xA1,
+  0x2C, 0x95, 0x2C, 0xA1, 0xD6, 0xA1, 0x2C, 0x55,
+  0x55, 0x95, 0x95, 0x55, 0x55, 0x55, 0x55, 0x95,
+  0xA1, 0x6D, 0x4B, 0xD6, 0x55, 0xD6, 0x20, 0xD8,
+  0xD6, 0x67, 0xDA, 0x4D, 0xED, 0x62, 0x78, 0x78,
+  0x23, 0x84, 0x67, 0xF5, 0x4B, 0xBF, 0x90, 0x88,
+  0x88, 0x2B, 0x47, 0x99, 0x20, 0x43, 0xD6, 0x2C,
+  0x2C, 0xA1, 0x2C, 0x95, 0x2C, 0xA1, 0xD6, 0xA1,
+  0x95, 0x95, 0x55, 0x95, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x95, 0xD6, 0x6D, 0xBF, 0xD6, 0x55, 0xCB,
+  0x55, 0x55, 0x55, 0x2C, 0x2C, 0x2C, 0x2C, 0xA1,
+  0x2C, 0x2C, 0x2C, 0xA1, 0xA1, 0x2C, 0x2C, 0x95,
+  0x55, 0x95, 0x95, 0x2C, 0x2C, 0x2C, 0x2C, 0xA1,
+  0x6D, 0x2A, 0x2A, 0xA1, 0x55, 0x55, 0x20, 0xD8,
+  0x6D, 0xAB, 0x96, 0x7E, 0x64, 0x53, 0x36, 0x36,
+  0xC6, 0x63, 0x6D, 0xD0, 0x6B, 0xE5, 0xA3, 0x7D,
+  0x20, 0x88, 0x80, 0x88, 0x20, 0x20, 0xC9, 0xA1,
+  0x2C, 0xA1, 0xA1, 0x2C, 0x2C, 0xA1, 0xA1, 0xA1,
+  0x95, 0x95, 0x55, 0x95, 0x95, 0x2C, 0x2C, 0x2C,
+  0x2C, 0xA1, 0x6D, 0xBF, 0x6D, 0xA1, 0x55, 0x55,
+  0x95, 0x95, 0x95, 0x95, 0x2C, 0x2C, 0x2C, 0xA1,
+  0xA1, 0x95, 0x95, 0x2C, 0x2C, 0x2C, 0x2C, 0x95,
+  0x55, 0x55, 0x2C, 0x2C, 0xA1, 0xA1, 0xD6, 0xD6,
+  0x6D, 0x6D, 0xA1, 0x55, 0x2C, 0xD8, 0x20, 0xB1,
+  0xA3, 0x4B, 0x6D, 0xD9, 0xA7, 0x6C, 0xAF, 0xB2,
+  0x6D, 0x2A, 0x83, 0x42, 0xE5, 0xE5, 0x65, 0x2C,
+  0x20, 0x20, 0x88, 0x20, 0x20, 0x20, 0x88, 0x95,
+  0x2C, 0xA1, 0x2C, 0x95, 0x95, 0x2C, 0x2C, 0x2C,
+  0x2C, 0x95, 0x55, 0x55, 0x2C, 0x2C, 0xA1, 0xA1,
+  0xD6, 0xD6, 0x6D, 0x6D, 0xA1, 0x55, 0xCB, 0x55,
+  0x95, 0x55, 0x95, 0x95, 0x2C, 0x2C, 0x95, 0x2C,
+  0x2C, 0x95, 0x95, 0x95, 0x95, 0x95, 0x2C, 0x95,
+  0x55, 0x95, 0x2C, 0x2C, 0xA1, 0xA1, 0xD6, 0xA1,
+  0xA1, 0x2C, 0x55, 0x55, 0x28, 0x88, 0x43, 0x2A,
+  0xE5, 0xA3, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D,
+  0xBF, 0xA3, 0x42, 0xE5, 0xE5, 0xE5, 0xE5, 0x65,
+  0xB1, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xD8,
+  0xD6, 0x2C, 0x2C, 0x95, 0x95, 0x95, 0x95, 0x2C,
+  0x95, 0x95, 0x55, 0x95, 0x2C, 0x2C, 0xA1, 0xA1,
+  0xA1, 0xA1, 0xA1, 0x2C, 0x95, 0x90, 0x90, 0x55,
+  0x90, 0xCB, 0x55, 0x95, 0x95, 0x95, 0x95, 0x95,
+  0x2C, 0x2C, 0x95, 0x55, 0x95, 0x95, 0x95, 0x55,
+  0x55, 0xCB, 0x55, 0x2C, 0x95, 0x95, 0x95, 0x95,
+  0x55, 0x90, 0x90, 0x90, 0xE1, 0x43, 0x28, 0xE5,
+  0xE5, 0x65, 0xD0, 0x6D, 0x6D, 0x6D, 0x2A, 0xD2,
+  0x42, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xD6, 0x20, 0x20, 0x20, 0x20, 0x20, 0x88, 0x88,
+  0xD5, 0x2C, 0x2C, 0x2C, 0x95, 0x55, 0x95, 0x95,
+  0x95, 0x55, 0x55, 0xCB, 0x55, 0x95, 0x2C, 0x95,
+  0x95, 0x95, 0x55, 0x90, 0x70, 0x70, 0x70, 0x90,
+  0x70, 0x70, 0xCB, 0x55, 0x55, 0x95, 0x95, 0x95,
+  0x2C, 0x95, 0x95, 0x55, 0x55, 0x55, 0x55, 0xCB,
+  0x70, 0x70, 0x70, 0xCB, 0x90, 0x90, 0x70, 0x94,
+  0x94, 0x94, 0x2C, 0x80, 0x20, 0xE1, 0xA3, 0xE5,
+  0xE5, 0xE5, 0x42, 0xEC, 0xD0, 0x83, 0xA3, 0x65,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0x65, 0x7D, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x88, 0x2C, 0x95, 0x95, 0x95, 0x55, 0x55, 0x55,
+  0x55, 0xCB, 0x70, 0x70, 0x90, 0x90, 0x90, 0x90,
+  0x70, 0x94, 0x94, 0x94, 0x70, 0x70, 0x70, 0x70,
+  0x70, 0x55, 0x55, 0x55, 0x95, 0x95, 0x95, 0x95,
+  0x2C, 0x2C, 0x95, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x90, 0x70, 0x90, 0x55, 0x55, 0xCB, 0x70, 0x94,
+  0x94, 0x95, 0xD8, 0x20, 0x88, 0x70, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0x65, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0x47, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0xE1, 0x6D, 0x2C, 0x95, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x90, 0x70, 0x70, 0x55, 0x55, 0xCB,
+  0x70, 0x94, 0x94, 0x94, 0x70, 0x90, 0x70, 0x94,
+  0x55, 0x2C, 0x2C, 0x2C, 0x95, 0x2C, 0x95, 0x95,
+  0x2C, 0x2C, 0x2C, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0xCB, 0xCB, 0x95, 0x2C, 0x2C, 0x95, 0x55, 0x90,
+  0x55, 0x99, 0x20, 0x20, 0xE1, 0xA3, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xD6, 0x88, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x2B, 0x6D, 0x95, 0x95, 0x55, 0x55,
+  0x55, 0x55, 0xCB, 0x55, 0x95, 0x2C, 0x2C, 0x95,
+  0x55, 0x90, 0xCB, 0xCB, 0xCB, 0xCB, 0x90, 0x70,
+  0x2C, 0xD6, 0xD6, 0x2C, 0x2C, 0x95, 0x95, 0x95,
+  0x95, 0x95, 0x95, 0x2C, 0x95, 0x95, 0x95, 0x95,
+  0x95, 0x95, 0x2C, 0xA1, 0x2C, 0x95, 0x55, 0x95,
+  0xE6, 0x88, 0x20, 0x20, 0x3F, 0xA3, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0x42, 0xA3, 0x88, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x88, 0x2B, 0xD6, 0x95, 0x95, 0x95,
+  0x95, 0x95, 0x95, 0x95, 0x2C, 0xA1, 0x2C, 0x95,
+  0x55, 0x55, 0x95, 0x95, 0x95, 0x55, 0x55, 0x55,
+  0xA1, 0xD6, 0xD6, 0xA1, 0x2C, 0x2C, 0x95, 0x2C,
+  0x2C, 0x2C, 0x95, 0x2C, 0x95, 0x95, 0x55, 0x95,
+  0x95, 0x2C, 0x2C, 0x2C, 0x95, 0xCB, 0xCB, 0x94,
+  0x20, 0x20, 0x20, 0x20, 0xE6, 0x83, 0x65, 0xE5,
+  0xE5, 0xE5, 0xE5, 0x42, 0x6B, 0x6B, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0x42, 0x6B, 0x6B, 0xA3, 0xD2,
+  0xD2, 0x6B, 0xC9, 0x20, 0x20, 0x88, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x88, 0x8A, 0xA1, 0x95, 0x95,
+  0x95, 0x55, 0x95, 0x2C, 0xA1, 0x2C, 0x95, 0xCB,
+  0xCB, 0x55, 0x95, 0x95, 0x95, 0x55, 0x55, 0x95,
+  0x6D, 0x6D, 0x6D, 0xD6, 0xA1, 0x2C, 0x2C, 0x95,
+  0x2C, 0x95, 0x2C, 0x95, 0x95, 0x95, 0x95, 0x95,
+  0x95, 0x95, 0x95, 0x55, 0x70, 0x70, 0x2C, 0x80,
+  0x88, 0x20, 0x20, 0x80, 0x94, 0xD6, 0x32, 0x6B,
+  0xE5, 0xE5, 0xE5, 0x42, 0x6B, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xA3, 0xD2, 0xD0, 0xBF, 0x2A,
+  0x2A, 0xD0, 0x6D, 0x34, 0x20, 0xE1, 0x88, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x88, 0xA1, 0x95, 0x95,
+  0x95, 0x95, 0x95, 0x95, 0x95, 0x55, 0x70, 0x70,
+  0x70, 0x90, 0xCB, 0xCB, 0xCB, 0x95, 0x95, 0x2C,
+  0xD0, 0x6D, 0xD6, 0xD6, 0xA1, 0xA1, 0xA1, 0x2C,
+  0x2C, 0x2C, 0x2C, 0x95, 0x55, 0x55, 0x55, 0x95,
+  0x95, 0x2C, 0x95, 0x55, 0xCB, 0xCB, 0x95, 0x88,
+  0x20, 0x20, 0x88, 0xD8, 0x2C, 0xD1, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0x65, 0x65, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0x42, 0x6B, 0xEC,
+  0xBF, 0x2A, 0xEC, 0x95, 0x20, 0x34, 0x2B, 0xE1,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x99, 0x95, 0x55,
+  0x55, 0x55, 0x95, 0x95, 0x95, 0x55, 0xCB, 0xCB,
+  0x55, 0x55, 0xCB, 0xCB, 0xCB, 0x55, 0x95, 0x95,
+  0x32, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0x2C, 0x2C,
+  0xA1, 0x95, 0x95, 0x95, 0x55, 0xCB, 0xCB, 0x55,
+  0x95, 0x95, 0x95, 0x95, 0x95, 0x55, 0x99, 0x20,
+  0xE1, 0xE1, 0x43, 0x47, 0x6B, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0x42, 0xEC, 0xBF, 0xA3, 0x8A, 0x20, 0x88, 0xD8,
+  0x2B, 0x20, 0x20, 0x20, 0x88, 0x88, 0x2C, 0xCB,
+  0xCB, 0x95, 0x95, 0x2C, 0x95, 0x95, 0x55, 0x95,
+  0x55, 0x55, 0x55, 0x55, 0x55, 0x95, 0x55, 0x95,
+  0x6D, 0x55, 0x55, 0x55, 0x95, 0x95, 0x2C, 0x95,
+  0x2C, 0x95, 0x95, 0x55, 0x55, 0x55, 0x55, 0x95,
+  0x95, 0x95, 0x95, 0x95, 0x95, 0xA1, 0x34, 0x20,
+  0xC9, 0x20, 0xE1, 0xA3, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xA3, 0x83, 0x6D, 0x20, 0x88, 0x88,
+  0x2B, 0x34, 0x20, 0x20, 0x20, 0x88, 0xD5, 0x55,
+  0x55, 0x55, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95,
+  0x95, 0x95, 0x95, 0x95, 0x55, 0x55, 0x95, 0x95,
+  0x2C, 0x55, 0xCB, 0x55, 0xCB, 0x55, 0x55, 0x95,
+  0x95, 0x95, 0x95, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C,
+  0x2C, 0x95, 0x95, 0x55, 0x95, 0x2C, 0x20, 0xD8,
+  0xE1, 0x20, 0x70, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0x65, 0xA3, 0x92, 0x43, 0x7D,
+  0xD8, 0xC9, 0x88, 0x20, 0x20, 0x20, 0x43, 0xD6,
+  0x2C, 0x2C, 0x95, 0x95, 0x95, 0x55, 0x95, 0x2C,
+  0x95, 0x95, 0x95, 0x95, 0x95, 0x2C, 0x95, 0x2C,
+  0xA1, 0x55, 0x55, 0x55, 0x55, 0x95, 0x95, 0x55,
+  0x55, 0x55, 0x95, 0x95, 0x2C, 0x2C, 0xA1, 0x2C,
+  0xA1, 0x2C, 0x2C, 0x95, 0x2C, 0x99, 0x88, 0xB1,
+  0x20, 0xD8, 0x42, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xCB, 0x34, 0x8A,
+  0xC9, 0x34, 0x2B, 0x20, 0x20, 0x20, 0x20, 0x90,
+  0xA1, 0xA1, 0xA1, 0x2C, 0x2C, 0x95, 0x95, 0x2C,
+  0x2C, 0x95, 0x95, 0x95, 0x95, 0x2C, 0x2C, 0x2C,
+  0xD6, 0x2C, 0x55, 0x55, 0x95, 0x2C, 0x2C, 0x2C,
+  0x55, 0xCB, 0x55, 0x2C, 0x2C, 0xA1, 0x2C, 0xA1,
+  0xA1, 0xA1, 0x2C, 0x2C, 0x6D, 0x43, 0xD8, 0x80,
+  0x88, 0xCB, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0x32, 0x80, 0xE1,
+  0x80, 0x20, 0xB1, 0x20, 0x20, 0x20, 0x20, 0xC9,
+  0xD6, 0xA1, 0xA1, 0xA1, 0x2C, 0xA1, 0x2C, 0x2C,
+  0x2C, 0x55, 0x55, 0x55, 0x95, 0x95, 0x95, 0x55,
+  0xD6, 0x95, 0x95, 0x95, 0x2C, 0xA1, 0x2C, 0x2C,
+  0x95, 0x95, 0x95, 0x95, 0x95, 0x2C, 0x95, 0x2C,
+  0x2C, 0x2C, 0x2C, 0x95, 0xCB, 0x20, 0xC9, 0x20,
+  0xE1, 0xA3, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0x42, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xD8, 0x20,
+  0x20, 0x20, 0x2B, 0x43, 0x20, 0x20, 0x20, 0x88,
+  0xD6, 0x2C, 0x2C, 0x2C, 0x95, 0x95, 0x95, 0x55,
+  0x95, 0x55, 0x55, 0xCB, 0x55, 0xCB, 0xCB, 0x55,
+  0x2C, 0x55, 0x55, 0x95, 0x2C, 0x2C, 0xA1, 0x95,
+  0x55, 0x95, 0x55, 0x95, 0x95, 0x95, 0x95, 0x95,
+  0x55, 0xCB, 0x70, 0xCB, 0xC9, 0x80, 0x2B, 0x20,
+  0xA0, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0x42, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0x92, 0x20,
+  0x20, 0x20, 0xE1, 0xD8, 0x20, 0x20, 0x20, 0x20,
+  0x95, 0x95, 0x55, 0xCB, 0x90, 0x90, 0x70, 0x90,
+  0x90, 0x90, 0xCB, 0xCB, 0xCB, 0xCB, 0x55, 0x95,
+  0x95, 0x55, 0x55, 0x95, 0x95, 0x2C, 0x2C, 0x2C,
+  0x95, 0x95, 0x55, 0x55, 0x55, 0x95, 0x95, 0x55,
+  0x90, 0x47, 0xA0, 0x55, 0x20, 0x2B, 0x43, 0x88,
+  0x6D, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0x6B, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0x28, 0x20,
+  0x20, 0x20, 0xE1, 0xE1, 0x20, 0x20, 0x20, 0x20,
+  0x28, 0x55, 0x90, 0x47, 0xA0, 0x47, 0x94, 0x70,
+  0x55, 0x95, 0x95, 0x55, 0xCB, 0x55, 0x55, 0x2C,
+  0x2C, 0x2C, 0x95, 0x95, 0x95, 0x2C, 0x2C, 0x2C,
+  0x95, 0x2C, 0x95, 0x95, 0x95, 0x95, 0x95, 0x55,
+  0x94, 0xE6, 0x70, 0x2B, 0x88, 0x2B, 0x88, 0xE1,
+  0x65, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0x6B, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0x47, 0x20,
+  0x20, 0x20, 0xE1, 0x34, 0x20, 0x20, 0x20, 0x20,
+  0xB1, 0x95, 0x94, 0xE6, 0xA0, 0x47, 0x70, 0x55,
+  0x2C, 0xA1, 0x2C, 0x55, 0x90, 0xCB, 0x2C, 0xD6,
+  0x6D, 0xA1, 0x2C, 0x95, 0x95, 0xA1, 0x2C, 0xA1,
+  0x2C, 0x2C, 0x95, 0x95, 0x95, 0x95, 0x95, 0x55,
+  0x70, 0xE6, 0x70, 0x20, 0x20, 0x7D, 0x20, 0x8A,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0x65, 0xA3, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0x94, 0x20,
+  0x20, 0x20, 0xD8, 0x88, 0x20, 0x20, 0x20, 0x20,
+  0xD8, 0x2C, 0x94, 0x47, 0x47, 0x90, 0x95, 0x95,
+  0xA1, 0x6D, 0xA1, 0x90, 0x94, 0x55, 0x2C, 0xD6,
+  0xD0, 0xA1, 0x95, 0x95, 0x2C, 0x2C, 0xA1, 0x2C,
+  0x95, 0x95, 0x55, 0x55, 0x55, 0x95, 0x2C, 0x2C,
+  0xCB, 0x95, 0xD8, 0x20, 0x20, 0xB1, 0x88, 0x28,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE2, 0xA3, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xCB, 0x20,
+  0x20, 0x20, 0x2B, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x88, 0xD6, 0x55, 0x47, 0x94, 0x55, 0x2C, 0xA1,
+  0xA1, 0xD6, 0x95, 0x94, 0x94, 0x55, 0xD6, 0x6D,
+  0xBF, 0x95, 0x90, 0xCB, 0x2C, 0x2C, 0x2C, 0x2C,
+  0x55, 0x95, 0xCB, 0x90, 0x90, 0x95, 0x2C, 0x95,
+  0x90, 0x70, 0x20, 0x20, 0x34, 0x8A, 0x20, 0x94,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0x65, 0x6B, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xCB, 0x20,
+  0x20, 0x88, 0x2B, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x88, 0xD6, 0xCB, 0x47, 0x94, 0x55, 0xA1, 0xD6,
+  0xD6, 0x2C, 0xCB, 0x47, 0x70, 0xA1, 0x6D, 0x2A,
+  0x95, 0x47, 0x47, 0x70, 0x95, 0xA1, 0x2C, 0x95,
+  0x55, 0x55, 0x90, 0x90, 0x55, 0x55, 0x55, 0x90,
+  0x47, 0xD5, 0x20, 0x20, 0x80, 0xD5, 0x43, 0xCB,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0x42, 0x6B, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xCB, 0x20,
+  0x20, 0x80, 0x34, 0x20, 0x20, 0x20, 0x88, 0x20,
+  0x20, 0x2C, 0x47, 0xE6, 0x70, 0x2C, 0xD6, 0xD6,
+  0xA1, 0x2C, 0x55, 0xCB, 0x95, 0xA1, 0x6D, 0xD6,
+  0x90, 0x47, 0x47, 0x90, 0x2C, 0xA1, 0x2C, 0x95,
+  0x55, 0x55, 0x90, 0x90, 0x55, 0x55, 0x55, 0x70,
+  0x94, 0x8A, 0x20, 0x88, 0x88, 0xE1, 0xD8, 0x95,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE2, 0x42, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0x47, 0x20,
+  0x43, 0x7D, 0x43, 0x80, 0x88, 0x20, 0x20, 0x20,
+  0x88, 0xCB, 0x94, 0x70, 0x55, 0xA1, 0xD6, 0xD6,
+  0xA1, 0x2C, 0x2C, 0x95, 0xA1, 0xA1, 0xD6, 0xA1,
+  0x94, 0xE6, 0x47, 0x55, 0x2C, 0xD6, 0xA1, 0x95,
+  0x55, 0x55, 0xCB, 0xCB, 0x55, 0x55, 0xCB, 0xCB,
+  0x55, 0xA0, 0x43, 0x86, 0x86, 0x43, 0xD8, 0xCB,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0x65, 0x6B, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0x3F, 0x80,
+  0xD8, 0x80, 0x88, 0x34, 0xD8, 0x2B, 0xD8, 0x20,
+  0x99, 0x90, 0x55, 0x95, 0x2C, 0xA1, 0xD6, 0xD6,
+  0xA1, 0x95, 0x95, 0x95, 0x2C, 0x2C, 0x2C, 0x2C,
+  0x94, 0x94, 0x70, 0x2C, 0xA1, 0xD6, 0xA1, 0x2C,
+  0x55, 0x55, 0xCB, 0x55, 0x55, 0x55, 0x55, 0x55,
+  0x95, 0x44, 0xBC, 0x3E, 0x5D, 0xD3, 0x79, 0x92,
+  0xA3, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0x65, 0x42, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0x65, 0x9A, 0x34,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x43, 0x99, 0xE1,
+  0x70, 0x55, 0x95, 0xA1, 0xD6, 0xD6, 0xD6, 0xA1,
+  0x2C, 0x95, 0x55, 0x55, 0x95, 0x95, 0x95, 0x95,
+  0x70, 0x70, 0x55, 0x2C, 0xD6, 0xD6, 0xA1, 0x95,
+  0x55, 0x90, 0xCB, 0xCB, 0x55, 0x55, 0x2C, 0x2C,
+  0x32, 0x9D, 0xEB, 0x5D, 0x69, 0x49, 0x84, 0xF0,
+  0xB1, 0xEC, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0x42, 0x6B, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xC1, 0x4E, 0x21, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x34, 0xC9, 0xD8,
+  0xBB, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0x2C, 0x2C,
+  0x95, 0x55, 0x55, 0x55, 0x95, 0x95, 0x2C, 0x2C,
+  0x55, 0xCB, 0x95, 0x2C, 0xA1, 0xA1, 0x2C, 0x55,
+  0x90, 0x70, 0x90, 0x55, 0x95, 0x95, 0x6D, 0xD0,
+  0xC2, 0x48, 0x6A, 0x49, 0x69, 0x82, 0x5D, 0x2F,
+  0x59, 0x7D, 0xBF, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0x65, 0x6B, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xEA, 0xC7, 0x7E, 0x66,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x34, 0x43, 0x5A,
+  0x46, 0x27, 0xA1, 0xA1, 0xA1, 0xA1, 0x2C, 0x95,
+  0x95, 0x55, 0x95, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C,
+  0x95, 0x90, 0x55, 0x2C, 0xA1, 0xA1, 0x95, 0x55,
+  0x94, 0x94, 0x2C, 0x2A, 0x72, 0x3B, 0x56, 0xDD,
+  0xDF, 0x29, 0x5D, 0x49, 0x89, 0x5D, 0x3E, 0x69,
+  0x93, 0x66, 0x34, 0xA1, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0x65, 0x42, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xEA, 0x3E, 0x5A, 0x66,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x5B, 0x73,
+  0x89, 0x4C, 0xBF, 0x2C, 0x95, 0x2C, 0x2C, 0x95,
+  0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95,
+  0x2C, 0x70, 0x55, 0x2C, 0xD6, 0xD6, 0x2C, 0xCB,
+  0x70, 0x55, 0xE7, 0x60, 0x4A, 0x48, 0xCD, 0x4A,
+  0x29, 0x73, 0x5D, 0x82, 0x49, 0x49, 0x49, 0x49,
+  0x3A, 0x57, 0x88, 0x88, 0x70, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0x42, 0x73, 0x50, 0xBE, 0x79,
+  0x20, 0x20, 0x20, 0x20, 0x66, 0xCC, 0x37, 0x9C,
+  0x3E, 0xCE, 0xBF, 0x95, 0x95, 0x95, 0x2C, 0x95,
+  0x95, 0x55, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0x55,
+  0xA1, 0x55, 0x95, 0xA1, 0xD6, 0xA1, 0x55, 0x94,
+  0x94, 0xE8, 0x60, 0xC4, 0x3E, 0x2D, 0x2D, 0x2D,
+  0x33, 0x5D, 0x82, 0x49, 0x49, 0x49, 0x49, 0x49,
+  0x89, 0xAA, 0x59, 0x20, 0x20, 0x28, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xEC, 0x4A, 0x2D, 0x50, 0x78, 0x2E,
+  0x57, 0x51, 0xF0, 0x57, 0x31, 0x4D, 0x50, 0x2D,
+  0x5D, 0xF2, 0xA1, 0x2C, 0x95, 0x95, 0x55, 0x55,
+  0x90, 0x90, 0x70, 0x90, 0xCB, 0x55, 0x55, 0x55,
+  0x6D, 0x2C, 0xA1, 0xD6, 0xD6, 0xA1, 0x55, 0x94,
+  0x70, 0xB9, 0x75, 0x50, 0x3E, 0x49, 0x49, 0x49,
+  0x5D, 0x82, 0x49, 0x49, 0x82, 0x49, 0x49, 0x49,
+  0x89, 0x69, 0x4F, 0x20, 0x20, 0x20, 0x8A, 0x42,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0x83, 0x4A, 0x3A, 0x50, 0x62, 0x23,
+  0x81, 0xB8, 0xB8, 0xE9, 0x5F, 0x29, 0x33, 0x5D,
+  0x5D, 0x73, 0xE8, 0xCB, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x55, 0x95, 0x95, 0x2C, 0x2C, 0x2C, 0x2C,
+  0xD6, 0xA1, 0xA1, 0xA1, 0xA1, 0x55, 0x70, 0x70,
+  0xCB, 0x68, 0x75, 0x50, 0x82, 0x49, 0x49, 0x49,
+  0x5D, 0x49, 0x49, 0x5D, 0x49, 0x49, 0x5D, 0x82,
+  0x69, 0x5D, 0x25, 0xF0, 0x20, 0x20, 0x20, 0xE1,
+  0x2A, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0x4B, 0xF4, 0xDF, 0x50, 0x73, 0x76, 0x48,
+  0x75, 0xDF, 0x75, 0x62, 0xC4, 0x33, 0x82, 0x49,
+  0x5D, 0x5D, 0xA8, 0xF5, 0x55, 0x55, 0x55, 0x55,
+  0x2C, 0x2C, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1,
+  0x2C, 0x2C, 0x2C, 0x95, 0x95, 0xCB, 0x70, 0x70,
+  0x95, 0x83, 0x5F, 0xEA, 0x2D, 0x49, 0x49, 0x49,
+  0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+  0x5D, 0x49, 0x22, 0x5A, 0x79, 0x20, 0x20, 0x20,
+  0x80, 0xD2, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0x65, 0xD0, 0x63, 0x5F, 0x29, 0x2D, 0x2D, 0xEA,
+  0x29, 0x29, 0x76, 0x50, 0x2D, 0x82, 0x49, 0x49,
+  0x3E, 0x49, 0x5C, 0xB0, 0xBA, 0x95, 0x55, 0x55,
+  0x2C, 0xA1, 0xD6, 0xD6, 0xD6, 0xA1, 0x2C, 0x2C,
+  0xA1, 0x95, 0x95, 0x55, 0xCB, 0x70, 0x70, 0x55,
+  0x2C, 0x83, 0x60, 0x76, 0x5D, 0x49, 0x49, 0x49,
+  0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+  0x49, 0x5D, 0x89, 0xDC, 0x8B, 0x20, 0x20, 0x20,
+  0x20, 0x95, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE2, 0x32, 0x85, 0xE3, 0x29, 0x2D, 0x33, 0x2D,
+  0x2D, 0x2D, 0x6A, 0x2D, 0x33, 0x5D, 0x49, 0x82,
+  0x49, 0x49, 0x82, 0x73, 0x5C, 0x9E, 0x2C, 0x55,
+  0x2C, 0xA1, 0xD6, 0xA1, 0x2C, 0x2C, 0x95, 0x95,
+  0x2C, 0x95, 0x55, 0xCB, 0x90, 0x90, 0xCB, 0x95,
+  0x2C, 0x6D, 0x41, 0x6F, 0x3E, 0x49, 0x49, 0x49,
+  0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+  0x49, 0x82, 0x3E, 0x4E, 0x38, 0xCA, 0x20, 0x20,
+  0x20, 0x55, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0x65,
+  0x42, 0xA0, 0xD4, 0xE3, 0x29, 0x2D, 0x82, 0x5D,
+  0x5D, 0x82, 0x82, 0x49, 0x49, 0x49, 0x49, 0x49,
+  0x49, 0x3E, 0x49, 0x49, 0x49, 0x5C, 0x56, 0xD6,
+  0xA1, 0xA1, 0xA1, 0x95, 0x55, 0x55, 0x55, 0x95,
+  0xA1, 0x55, 0x90, 0x70, 0x94, 0x70, 0x95, 0x2C,
+  0x2C, 0xD6, 0xDD, 0x6F, 0x33, 0x49, 0x49, 0x49,
+  0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+  0x5D, 0x5D, 0x82, 0x69, 0x22, 0x62, 0x80, 0x34,
+  0x94, 0x6B, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0x65, 0xE5, 0x65, 0x6B,
+  0xD5, 0x88, 0x5B, 0xE3, 0x29, 0x5D, 0x5D, 0x5D,
+  0x5D, 0x5D, 0x5D, 0x5D, 0x49, 0x49, 0x49, 0x82,
+  0x49, 0x49, 0x89, 0x49, 0x82, 0x49, 0x71, 0xBA,
+  0x6D, 0x6D, 0xA1, 0x95, 0x55, 0xCB, 0x55, 0x55,
+  0x2C, 0x55, 0x70, 0x70, 0x70, 0x90, 0x95, 0xA1,
+  0x2C, 0xA1, 0x41, 0x76, 0x5D, 0x5D, 0x49, 0x49,
+  0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+  0x49, 0x5D, 0x82, 0x5D, 0x89, 0x5E, 0x96, 0x65,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0xE5, 0xE5, 0xE5, 0xE5, 0x65, 0x65, 0xEC, 0xB1,
+  0x20, 0x20, 0xCA, 0x23, 0x29, 0x33, 0x49, 0x5D,
+  0x49, 0x82, 0x49, 0x49, 0x49, 0x49, 0x49, 0x82,
+  0x49, 0x82, 0x5D, 0x5D, 0x5D, 0x2D, 0x5C, 0x8F,
+  0x6D, 0xD6, 0x2C, 0x55, 0x90, 0xCB, 0x95, 0x95,
+  0x95, 0x55, 0x70, 0x94, 0x70, 0x55, 0x2C, 0xA1,
+  0x95, 0xE8, 0x5F, 0x76, 0x33, 0x5D, 0x49, 0x49,
+  0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+  0x49, 0x49, 0x49, 0x49, 0x3E, 0x9C, 0x2F, 0x68,
+  0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
+  0x65, 0xE5, 0x65, 0xE5, 0x6B, 0x90, 0x80, 0x20,
+  0x20, 0x20, 0x4F, 0x81, 0x50, 0x3E, 0x49, 0x49,
+  0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+  0x69, 0x69, 0x49, 0x5D, 0x2D, 0xC4, 0x46, 0xA3,
+  0xD6, 0x55, 0x70, 0x94, 0x94, 0x70, 0xCB, 0x55,
+  0x55, 0xCB, 0x70, 0x47, 0x70, 0x95, 0xA1, 0xA1,
+  0x95, 0xBD, 0x75, 0x2D, 0x33, 0x49, 0x49, 0x49,
+  0x49, 0x49, 0x5D, 0x49, 0x49, 0x49, 0x49, 0x49,
+  0x49, 0x49, 0x49, 0x49, 0x5D, 0x2D, 0xB5, 0xDB,
+  0xD6, 0x65, 0xE5, 0x65, 0xE5, 0xE5, 0x65, 0xE5,
+  0x65, 0x65, 0x6B, 0x95, 0x2B, 0x88, 0x20, 0x20,
+  0x20, 0x20, 0x8B, 0x81, 0x29, 0x33, 0x49, 0x49,
+  0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+  0x49, 0x3E, 0x3E, 0x5E, 0x41, 0x97, 0x27, 0xD6,
+  0x55, 0x94, 0xE6, 0xE6, 0x47, 0x70, 0x55, 0x55,
+  0x94, 0x70, 0x94, 0x94, 0x70, 0x55, 0xA1, 0x2C,
+  0x6D, 0xC5, 0x39, 0x6A, 0x5D, 0x5D, 0x49, 0x49,
+  0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
+  0x49, 0x49, 0x49, 0x49, 0x3E, 0xEA, 0x30, 0x77,
+  0xE1, 0xC9, 0x94, 0x2C, 0xD6, 0xD6, 0xA1, 0x55,
+  0x47, 0x9F, 0x43, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x80, 0x91, 0x81, 0x6A, 0x2D, 0x49, 0x49,
+  0x49, 0x5D, 0x5D, 0x49, 0x49, 0x5D, 0x5D, 0x82,
+  0xEB, 0x4A, 0x41, 0xC2, 0x8F, 0xF5, 0xA1, 0x55,
+  0x94, 0x28, 0xA0, 0x47, 0x70, 0x55, 0x95, 0x95,
+  0x47, 0x70, 0x70, 0x94, 0x90, 0x95, 0xA1, 0x2C,
+  0xE8, 0xA6, 0x39, 0x76, 0x50, 0x50, 0x2D, 0x2D,
+  0x3E, 0x3E, 0x5D, 0x3E, 0x5D, 0x5D, 0x49, 0x82,
+  0x49, 0x49, 0x49, 0x82, 0x82, 0x50, 0x75, 0xE0,
+  0x57, 0x20, 0x88, 0x88, 0x20, 0x20, 0x88, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x79, 0x91, 0x81, 0x76, 0x33, 0x49, 0x49,
+  0x5D, 0x82, 0x49, 0x49, 0x3E, 0x6A, 0xEA, 0x29,
+  0xDF, 0x97, 0xBF, 0x6D, 0x6D, 0xD6, 0x55, 0x47,
+  0x28, 0x28, 0x47, 0x70, 0x55, 0x95, 0x2C, 0x2C,
+  0x95, 0x95, 0x55, 0x90, 0x90, 0x95, 0xA1, 0xA1,
+  0xD6, 0x26, 0x45, 0x81, 0x5F, 0x30, 0x48, 0x6F,
+  0x6F, 0x29, 0x29, 0x6A, 0x2D, 0x2D, 0x5D, 0x49,
+  0x49, 0x49, 0x49, 0x49, 0x2D, 0x76, 0x6E, 0x77,
+  0x5B, 0x66, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x79, 0xA9, 0xB8, 0x39, 0x50, 0x5D, 0x5D,
+  0x5D, 0x5D, 0x3E, 0x2D, 0x29, 0x76, 0xCD, 0x37,
+  0xB9, 0xA1, 0xA1, 0x6D, 0x6D, 0x2C, 0x94, 0x28,
+  0xD5, 0xE6, 0x70, 0x55, 0x95, 0xA1, 0x2C, 0xA1,
+  0xBF, 0xA1, 0x95, 0xCB, 0x55, 0x95, 0xA1, 0x2C,
+  0x95, 0x83, 0xDE, 0x87, 0xB6, 0xBE, 0x40, 0x6E,
+  0x81, 0x81, 0x78, 0x78, 0x39, 0x6F, 0xEA, 0x2D,
+  0x2D, 0x33, 0x33, 0x33, 0x76, 0x30, 0x64, 0x54,
+  0x5B, 0x66, 0x20, 0x20, 0x66, 0x20, 0x88, 0x20,
+  0x20, 0x20, 0x88, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x88, 0x34, 0x8B, 0xF1, 0x23, 0x6F, 0x50, 0x2D,
+  0x2D, 0x6A, 0x29, 0x6F, 0x78, 0x84, 0x9B, 0xD2,
+  0x2C, 0x2C, 0xD6, 0x6D, 0x6D, 0x2C, 0x47, 0xA0,
+  0xE6, 0x70, 0x55, 0x95, 0x2C, 0xA1, 0xA1, 0xA1,
+  0xD2, 0x95, 0x55, 0xCB, 0x55, 0x2C, 0xD6, 0xA1,
+  0x95, 0x95, 0xA1, 0xD6, 0x6D, 0x6D, 0xBA, 0xF3,
+  0x8D, 0x36, 0x74, 0x36, 0xF1, 0xB8, 0x23, 0x78,
+  0x62, 0x4A, 0x29, 0x62, 0x23, 0xF1, 0x54, 0x31,
+  0x57, 0x2B, 0x90, 0x95, 0x2C, 0x2C, 0x2C, 0x2C,
+  0xA1, 0xA1, 0xA1, 0xA1, 0x2C, 0x2C, 0x2C, 0xCB,
+  0xE6, 0x7D, 0xCA, 0xB7, 0xB8, 0x75, 0x6F, 0x6F,
+  0x76, 0x6F, 0x78, 0x81, 0x53, 0xBD, 0x6D, 0x2C,
+  0x95, 0x95, 0xA1, 0x6D, 0xA1, 0x55, 0x94, 0xE6,
+  0x70, 0xCB, 0x55, 0x95, 0xA1, 0xD6, 0xD6, 0xA1,
+  0xD0, 0x94, 0x94, 0x90, 0x95, 0x2C, 0xD6, 0xA1,
+  0x95, 0x55, 0x2C, 0xA1, 0xD6, 0xA1, 0x95, 0x2C,
+  0xD6, 0x68, 0xAB, 0x6C, 0xA4, 0x77, 0x77, 0xAD,
+  0x40, 0x53, 0x6E, 0x40, 0xB7, 0x54, 0x31, 0xD7,
+  0xAC, 0xD6, 0x55, 0x55, 0x95, 0x95, 0x95, 0x55,
+  0x95, 0x2C, 0x2C, 0xA1, 0x95, 0x95, 0x2C, 0xA1,
+  0x6D, 0xD2, 0x7C, 0x54, 0xAD, 0x40, 0x6E, 0x81,
+  0x81, 0x6E, 0x36, 0xDA, 0xE8, 0xD6, 0xD6, 0x2C,
+  0x2C, 0x2C, 0xA1, 0xD6, 0x95, 0x90, 0x94, 0x47,
+  0x94, 0x94, 0x70, 0x55, 0x2C, 0xD6, 0xA1, 0x95,
+  0x95, 0x28, 0x47, 0x90, 0x95, 0x2C, 0xA1, 0x2C,
+  0x55, 0x95, 0x2C, 0xA1, 0xA1, 0x2C, 0x2C, 0x2C,
+  0x2C, 0xA1, 0x55, 0x70, 0x95, 0x2C, 0xB2, 0xB4,
+  0xC3, 0xC3, 0x54, 0x54, 0xA9, 0x31, 0xCA, 0x2A,
+  0x95, 0x90, 0x55, 0x95, 0x2C, 0xA1, 0x2C, 0x95,
+  0x95, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0xD6,
+  0x6D, 0x2A, 0xB2, 0x4F, 0x31, 0x2E, 0xE0, 0xAD,
+  0xB7, 0xC8, 0xB4, 0xF5, 0x2C, 0xA1, 0xA1, 0xA1,
+  0x95, 0x2C, 0xA1, 0x2C, 0x95, 0x70, 0x94, 0x94,
+  0x94, 0x94, 0x70, 0x95, 0xD6, 0xD6, 0x2C, 0x95,
+  0x94, 0x28, 0x47, 0xCB, 0x95, 0x2C, 0xA1, 0xA1,
+  0x95, 0x55, 0x2C, 0xA1, 0xD6, 0xA1, 0x95, 0x95,
+  0x95, 0x2C, 0x55, 0x70, 0x70, 0x70, 0x94, 0x2C,
+  0x63, 0xBB, 0xA5, 0xD7, 0xCA, 0xB3, 0x6D, 0x2C,
+  0x55, 0x55, 0x95, 0x2C, 0x2C, 0x2C, 0x95, 0x95,
+  0x95, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0xA1,
+  0xD6, 0x2C, 0x70, 0x95, 0xAC, 0xC0, 0xDB, 0xEF,
+  0xEF, 0xA2, 0xE8, 0x95, 0x95, 0xA1, 0xD6, 0xA1,
+  0x95, 0x55, 0x2C, 0x95, 0x55, 0x70, 0x70, 0x70,
+  0x94, 0x70, 0x55, 0xD6, 0x6D, 0x6D, 0x95, 0x55,
+  0x70, 0x47, 0x70, 0x95, 0x2C, 0x2C, 0x2C, 0xA1,
+  0x2C, 0x95, 0x2C, 0xA1, 0xD6, 0xA1, 0x95, 0x55,
+  0x55, 0x95, 0x55, 0x55, 0x55, 0x55, 0x55, 0x95,
+  0xA1, 0xF5, 0xBF, 0xBF, 0xA1, 0x95, 0x95, 0x95,
+  0x95, 0x55, 0x2C, 0x2C, 0x95, 0x55, 0x55, 0x95,
+  0x95, 0x95, 0xA1, 0xA1, 0xA1, 0xA1, 0x2C, 0xA1,
+  0x2C, 0x55, 0x70, 0x94, 0x90, 0x2C, 0x6D, 0x6D,
+  0x6D, 0xA1, 0x2C, 0x95, 0x2C, 0xA1, 0xD6, 0xA1,
+  0x2C, 0x55, 0x55, 0x95, 0x55, 0x55, 0x55, 0x55,
+  0x55, 0x95, 0xD6, 0x6D, 0xBF, 0xD6, 0x55, 0xCB,
+  0x55, 0x55, 0x55, 0x2C, 0x2C, 0x2C, 0x2C, 0xA1,
+  0xA1, 0x95, 0x2C, 0xA1, 0xA1, 0xA1, 0x2C, 0x95,
+  0x55, 0x95, 0x95, 0x2C, 0x2C, 0x2C, 0x2C, 0xA1,
+  0x6D, 0xBF, 0x6D, 0x2C, 0x55, 0x55, 0x95, 0x95,
+  0xCB, 0xCB, 0x55, 0x55, 0xCB, 0x55, 0x55, 0x95,
+  0x95, 0x2C, 0x2C, 0xA1, 0xA1, 0xA1, 0x2C, 0x2C,
+  0xA1, 0x95, 0xCB, 0xCB, 0x95, 0x95, 0x2C, 0x2C,
+  0x2C, 0xA1, 0x2C, 0x2C, 0x2C, 0xA1, 0xA1, 0x2C,
+  0x2C, 0x95, 0x55, 0x95, 0x95, 0x2C, 0x2C, 0x2C,
+  0x2C, 0xA1, 0x6D, 0xBF, 0x6D, 0xA1, 0x55, 0x55,
+  0x95, 0x95, 0x95, 0x95, 0x2C, 0x2C, 0x2C, 0x2C,
+  0x2C, 0x95, 0x95, 0x95, 0x2C, 0x2C, 0x2C, 0x95,
+  0x55, 0x95, 0x2C, 0x2C, 0xA1, 0xA1, 0xD6, 0xD6,
+  0x6D, 0x6D, 0xA1, 0x95, 0xCB, 0x55, 0x95, 0x55,
+  0x90, 0x70, 0xCB, 0xCB, 0x90, 0xCB, 0x95, 0x95,
+  0x2C, 0x2C, 0xA1, 0xD6, 0xA1, 0xA1, 0xA1, 0xA1,
+  0xA1, 0xA1, 0x2C, 0x95, 0x95, 0x2C, 0x2C, 0x2C,
+  0x2C, 0xA1, 0x2C, 0x95, 0x95, 0x95, 0x2C, 0x2C,
+  0x2C, 0x95, 0x55, 0x55, 0x2C, 0x2C, 0xA1, 0xA1,
+  0xD6, 0xD6, 0x6D, 0x6D, 0xA1, 0x55, 0xCB, 0x55
+};
+
+#endif
+
+#ifdef INCLUDE_LINUX_LOGOBW
+
+unsigned char linux_logo_bw[] __initdata = {
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x3F,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F,
+  0xFE, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFE, 0x3F, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xC7, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xC3,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF,
+  0xFB, 0xE3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFD, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xF1, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xF1,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0xFF,
+  0xFF, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xF9, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xF9, 0xCF, 0xC3, 0xF8, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0x87, 0x81, 0xF9,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0xA7,
+  0x99, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xF9, 0xF3, 0xBC, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xF9, 0xE3, 0xBC, 0xF9, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0xB0, 0x3C, 0xF9,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0xB0,
+  0x19, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xF9, 0xC0, 0x03, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xF9, 0x80, 0x01, 0xF8, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0x80, 0x01, 0xF8,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0x80,
+  0x01, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xF9, 0xC0, 0x21, 0xD8, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xF9, 0xB1, 0x80, 0xEC, 0xC0, 0x1F,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0x90, 0x00, 0xE4,
+  0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0x8C,
+  0xC0, 0x7C, 0x04, 0x81, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xE3, 0x80, 0x00, 0x7C, 0x40, 0x11, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xE3, 0x80, 0x00, 0x7F, 0xD2, 0x29,
+  0xFF, 0xFF, 0xFF, 0xFF, 0x87, 0x00, 0x00, 0x3F,
+  0x80, 0x19, 0xFF, 0xFF, 0xFF, 0xFF, 0x0E, 0x00,
+  0x00, 0x3F, 0x80, 0x19, 0xFF, 0xFF, 0xFF, 0xFF,
+  0x1E, 0x00, 0x00, 0x1F, 0x80, 0x19, 0xFF, 0xFF,
+  0xFF, 0xFE, 0x1C, 0x00, 0x00, 0x1E, 0x80, 0x19,
+  0xFF, 0xFF, 0xFF, 0xFE, 0x3C, 0x00, 0x00, 0x1E,
+  0x80, 0x11, 0xFF, 0xFF, 0xFF, 0xFC, 0x7C, 0x00,
+  0x00, 0x0F, 0x80, 0x11, 0xFF, 0xFF, 0xFF, 0xFC,
+  0xF8, 0x00, 0x00, 0x0E, 0x80, 0x11, 0xFF, 0xFF,
+  0xFF, 0xFC, 0xF8, 0x00, 0x00, 0x06, 0x00, 0x11,
+  0xFF, 0xFF, 0xFF, 0xF8, 0xF8, 0x00, 0x00, 0x06,
+  0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xF9, 0xF0, 0x00,
+  0x00, 0x02, 0x00, 0x09, 0xFF, 0xFF, 0xFF, 0xF1,
+  0xF0, 0x00, 0x00, 0x02, 0x80, 0x10, 0xFF, 0xFF,
+  0xFF, 0xF1, 0xE0, 0x00, 0x00, 0x00, 0x97, 0x10,
+  0xFF, 0xFF, 0xFF, 0xE3, 0xE0, 0x00, 0x00, 0x00,
+  0xDF, 0xF0, 0xFF, 0xFF, 0xFF, 0xE3, 0xC0, 0x00,
+  0x00, 0x00, 0xFF, 0xF8, 0xFF, 0xFF, 0xFF, 0xC7,
+  0xC0, 0x00, 0x00, 0x01, 0xFF, 0xF8, 0xFF, 0xFF,
+  0xFF, 0xC7, 0x80, 0x00, 0x00, 0x01, 0xFF, 0xF8,
+  0xFF, 0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x00, 0x01,
+  0xFF, 0xF8, 0xFF, 0xFF, 0xFF, 0x8F, 0x80, 0x00,
+  0x00, 0x01, 0xFF, 0xF8, 0xFF, 0xFF, 0xFF, 0x9F,
+  0x80, 0x00, 0x00, 0x01, 0xFF, 0xF8, 0xFF, 0xFF,
+  0xFF, 0x9F, 0x80, 0x00, 0x00, 0x01, 0x80, 0x18,
+  0xFF, 0xFF, 0xFF, 0x9E, 0x80, 0x00, 0x00, 0x03,
+  0xA8, 0x11, 0xFF, 0xFF, 0xFF, 0x9F, 0x80, 0x00,
+  0x00, 0x02, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0x99,
+  0x80, 0x00, 0x00, 0x00, 0x00, 0x09, 0xFF, 0xFF,
+  0xFF, 0x00, 0x80, 0x00, 0x00, 0x01, 0xC0, 0x01,
+  0xFF, 0xFF, 0xFE, 0x20, 0x60, 0x00, 0x00, 0x00,
+  0xFF, 0xC3, 0xFF, 0xFF, 0xF8, 0x00, 0x30, 0x00,
+  0x00, 0x00, 0xFF, 0x0F, 0xFF, 0xFF, 0xC0, 0x40,
+  0x38, 0x00, 0x00, 0x00, 0xFE, 0x47, 0xFF, 0xFF,
+  0x81, 0x00, 0x1C, 0x00, 0x00, 0x00, 0xFC, 0x23,
+  0xFF, 0xFF, 0x90, 0x00, 0x1E, 0x00, 0x00, 0x00,
+  0x78, 0x11, 0xFF, 0xFF, 0x80, 0x00, 0x0F, 0x80,
+  0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x00,
+  0x07, 0xC0, 0x00, 0x00, 0x00, 0x08, 0xFF, 0xFF,
+  0xC0, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x00, 0x04,
+  0x7F, 0xFF, 0x80, 0x00, 0x03, 0xC0, 0x00, 0x10,
+  0x00, 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x01, 0x80,
+  0x00, 0x30, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x00,
+  0x00, 0x00, 0x00, 0x70, 0x00, 0x01, 0x4F, 0xFF,
+  0x80, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00,
+  0x0F, 0xFF, 0xC0, 0x00, 0x00, 0x80, 0x03, 0xF0,
+  0x00, 0x00, 0x8F, 0xFF, 0x80, 0x00, 0x00, 0x40,
+  0x0F, 0xF0, 0x00, 0x04, 0x1F, 0xFF, 0x80, 0x00,
+  0x00, 0x7F, 0xFF, 0xF0, 0x00, 0x10, 0x1F, 0xFF,
+  0xC0, 0x00, 0x00, 0x7F, 0xFF, 0xF0, 0x00, 0x40,
+  0xFF, 0xFF, 0x98, 0x00, 0x00, 0xFF, 0xFF, 0xF0,
+  0x00, 0x83, 0xFF, 0xFF, 0x81, 0xE0, 0x01, 0xFF,
+  0xFF, 0xF8, 0x02, 0x07, 0xFF, 0xFF, 0x80, 0x3F,
+  0x07, 0xE0, 0x00, 0x1C, 0x0C, 0x1F, 0xFF, 0xFF,
+  0xF8, 0x03, 0xFF, 0x80, 0x00, 0x1F, 0x78, 0x1F,
+  0xFF, 0xFF, 0xFF, 0x80, 0x7F, 0x00, 0x07, 0x0F,
+  0xF0, 0x7F, 0xFF, 0xFF, 0xFF, 0xFE, 0x0C, 0x07,
+  0xFF, 0x83, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0x00, 0x1F, 0xFF, 0xC0, 0x03, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x07, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+};
+
+#endif
+
+#ifdef INCLUDE_LINUX_LOGO16
+
+unsigned char linux_logo16_red[] __initdata = {
+    0x00, 0x90, 0xb0, 0x9c, 0xf7, 0x35, 0x83, 0xa5,
+    0x65, 0x8f, 0x98, 0xc9, 0xdb, 0xe1, 0xe7, 0xf8
+};
+
+unsigned char linux_logo16_green[] __initdata = {
+    0x00, 0x90, 0xb0, 0x9c, 0xf7, 0x2e, 0x83, 0xa5,
+    0x65, 0x6e, 0x98, 0x89, 0xbf, 0xac, 0xda, 0xf8
+};
+
+unsigned char linux_logo16_blue[] __initdata = {
+    0x00, 0x90, 0xaf, 0x9c, 0xf7, 0x2b, 0x82, 0xa5,
+    0x65, 0x41, 0x97, 0x1e, 0x60, 0x29, 0xa5, 0xf8
+};
+
+unsigned char linux_logo16[] __initdata = {
+    0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+    0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xa1, 0x11, 0x11,
+    0x61, 0x16, 0x66, 0x66, 0x11, 0x11, 0x11, 0x11,
+    0x11, 0x11, 0x1a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+    0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+    0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+    0xaa, 0xaa, 0xaa, 0xaa, 0x33, 0xa8, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x87, 0x77, 0x77, 0x77, 0x77,
+    0x77, 0x77, 0x73, 0x33, 0x33, 0x3a, 0xaa, 0xaa,
+    0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+    0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+    0xaa, 0xaa, 0xa3, 0x33, 0x33, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x77, 0x77, 0x77, 0x77,
+    0x77, 0x27, 0x77, 0x77, 0x77, 0x33, 0x3a, 0xaa,
+    0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+    0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+    0xaa, 0xa3, 0x33, 0x33, 0x30, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x55, 0x50, 0x08, 0x33, 0x77, 0x77,
+    0x77, 0x72, 0x72, 0x27, 0x77, 0x77, 0x33, 0x33,
+    0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+    0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+    0xa3, 0x33, 0x33, 0x77, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x58, 0x85, 0x00, 0x11, 0x11, 0xaa,
+    0xa3, 0x37, 0x77, 0x72, 0x22, 0x22, 0x77, 0x73,
+    0x33, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+    0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xa3,
+    0x33, 0x37, 0x77, 0x33, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x56, 0x85, 0x00, 0x06, 0x66, 0x11,
+    0x11, 0x1a, 0xa3, 0x37, 0x77, 0x72, 0x22, 0x77,
+    0x73, 0x33, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+    0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x33,
+    0x33, 0x33, 0x33, 0x30, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x55, 0x00, 0x00, 0x06, 0x66, 0x66,
+    0x66, 0x66, 0x11, 0x1a, 0xa3, 0x77, 0x72, 0x22,
+    0x77, 0x73, 0x3a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+    0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x33, 0x33,
+    0x33, 0x33, 0x33, 0xa0, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11,
+    0x66, 0x66, 0x66, 0x66, 0x11, 0xa3, 0x77, 0x22,
+    0x22, 0x77, 0x33, 0x33, 0xaa, 0xaa, 0xaa, 0xaa,
+    0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x33, 0x33, 0x33,
+    0x33, 0x3a, 0xa1, 0x10, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x33,
+    0xaa, 0x11, 0x16, 0x66, 0x66, 0x61, 0x1a, 0x37,
+    0x22, 0x22, 0x77, 0x33, 0x3a, 0xaa, 0xaa, 0xaa,
+    0xaa, 0xaa, 0xaa, 0xaa, 0xa3, 0x33, 0x33, 0x33,
+    0x3a, 0xa1, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x02, 0x22,
+    0x22, 0x77, 0x3a, 0x11, 0x66, 0x66, 0x66, 0x1a,
+    0x37, 0x22, 0x22, 0x77, 0x33, 0x3a, 0xaa, 0xaa,
+    0xaa, 0xaa, 0xaa, 0xaa, 0x33, 0x33, 0x33, 0x3a,
+    0xa1, 0x11, 0x11, 0x10, 0x00, 0x00, 0x50, 0x00,
+    0x00, 0x05, 0x80, 0x50, 0x00, 0x00, 0x07, 0x72,
+    0x22, 0x22, 0x22, 0x73, 0xa1, 0x66, 0x66, 0x61,
+    0x1a, 0x77, 0x22, 0x27, 0x73, 0x33, 0xaa, 0xaa,
+    0xaa, 0xaa, 0xaa, 0xaa, 0x33, 0x33, 0x3a, 0xaa,
+    0x11, 0x11, 0x1a, 0xa0, 0x08, 0x71, 0x05, 0x00,
+    0x00, 0x12, 0x22, 0x50, 0x00, 0x00, 0x07, 0x77,
+    0x77, 0x72, 0x22, 0x22, 0x27, 0x31, 0x16, 0x66,
+    0x61, 0x13, 0x77, 0x22, 0x77, 0x33, 0x3a, 0xaa,
+    0xaa, 0xaa, 0xaa, 0xa3, 0x33, 0x33, 0xaa, 0xa1,
+    0x11, 0x1a, 0x33, 0x70, 0x07, 0x2e, 0x70, 0x00,
+    0x01, 0x44, 0x42, 0x60, 0x00, 0x00, 0x02, 0x22,
+    0x22, 0x22, 0x22, 0x22, 0x22, 0x27, 0x31, 0x66,
+    0x66, 0x61, 0xa3, 0x72, 0x22, 0x77, 0x33, 0xaa,
+    0xaa, 0xaa, 0xa3, 0x33, 0x33, 0xaa, 0xaa, 0x11,
+    0x1a, 0x33, 0x77, 0x30, 0x04, 0x82, 0x40, 0x00,
+    0x54, 0x48, 0x54, 0x40, 0x00, 0x00, 0x01, 0xaa,
+    0x32, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x31,
+    0x66, 0x66, 0x11, 0x37, 0x22, 0x27, 0x73, 0x3a,
+    0xaa, 0xaa, 0xa3, 0x33, 0x3a, 0xaa, 0xaa, 0xaa,
+    0xa3, 0x77, 0xaa, 0x10, 0x50, 0x08, 0x46, 0x05,
+    0x54, 0x80, 0x50, 0x42, 0x00, 0x00, 0x08, 0x66,
+    0x66, 0x1a, 0x32, 0x22, 0x22, 0x22, 0x22, 0x27,
+    0x31, 0x66, 0x66, 0x13, 0x72, 0x22, 0x77, 0x33,
+    0xaa, 0xaa, 0xaa, 0x33, 0xaa, 0xa1, 0xaa, 0xa3,
+    0x37, 0xa1, 0x1a, 0x30, 0x50, 0x06, 0x26, 0x00,
+    0x54, 0x00, 0x00, 0x44, 0x00, 0x00, 0x08, 0xe2,
+    0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0x22, 0x22,
+    0x27, 0xa6, 0x66, 0x61, 0xa7, 0x72, 0x27, 0x73,
+    0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x33,
+    0x31, 0x11, 0x37, 0x70, 0x02, 0x00, 0xab, 0xbb,
+    0xb6, 0x00, 0x00, 0xf4, 0x00, 0x00, 0xee, 0xee,
+    0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0x22,
+    0x22, 0x23, 0x16, 0x66, 0x1a, 0x37, 0x22, 0x77,
+    0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xa3, 0x3a,
+    0x11, 0xa7, 0x33, 0x10, 0x04, 0x09, 0xbd, 0xdd,
+    0xbd, 0xd0, 0x04, 0x45, 0x00, 0x0e, 0xee, 0xee,
+    0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0x22,
+    0x22, 0x22, 0x71, 0x66, 0x66, 0x13, 0x72, 0x27,
+    0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x33, 0x11,
+    0xa3, 0x73, 0xa1, 0x60, 0x08, 0xbd, 0xdd, 0xdd,
+    0xdd, 0xdd, 0xdb, 0x90, 0x00, 0x02, 0xec, 0xee,
+    0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xce, 0x22,
+    0x22, 0x22, 0x27, 0xa6, 0x66, 0x61, 0x37, 0x27,
+    0x1a, 0xaa, 0xaa, 0xaa, 0xaa, 0xa3, 0xa1, 0x1a,
+    0x33, 0xa1, 0x16, 0x60, 0x0b, 0xbd, 0xdd, 0xdd,
+    0xcd, 0xdd, 0xdd, 0xd9, 0x00, 0x00, 0xec, 0xcc,
+    0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xce, 0xa2,
+    0x22, 0x22, 0x22, 0x7a, 0x66, 0x66, 0x13, 0x77,
+    0x1a, 0xaa, 0xaa, 0xaa, 0xaa, 0x3a, 0x11, 0x33,
+    0xaa, 0x11, 0x66, 0x60, 0x9b, 0xdd, 0xdd, 0xdd,
+    0xcd, 0xdd, 0xdb, 0xb9, 0x00, 0x00, 0xec, 0xcc,
+    0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xee, 0x61,
+    0x72, 0x22, 0x22, 0x22, 0xa1, 0x66, 0x61, 0x37,
+    0x1a, 0xaa, 0xaa, 0xaa, 0xa3, 0xa1, 0x13, 0x3a,
+    0x11, 0x11, 0x11, 0x10, 0x5b, 0xdd, 0xdd, 0xdc,
+    0xdd, 0xdd, 0xbd, 0xd9, 0x00, 0x00, 0xec, 0xcc,
+    0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xee, 0x86,
+    0x17, 0x22, 0x22, 0x22, 0x23, 0x16, 0x66, 0xaa,
+    0xaa, 0xa3, 0x3a, 0xaa, 0xaa, 0x1a, 0x3a, 0xa1,
+    0x11, 0x11, 0x1a, 0x70, 0x05, 0xbd, 0xdd, 0xdd,
+    0xdb, 0x5b, 0xdd, 0xb0, 0x00, 0x60, 0x2e, 0xcc,
+    0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xe6, 0x88,
+    0x66, 0x32, 0x22, 0x22, 0x22, 0x36, 0x66, 0x11,
+    0x33, 0x33, 0x3a, 0xaa, 0x11, 0xaa, 0xaa, 0xa1,
+    0x11, 0x1a, 0x3a, 0x60, 0x02, 0x99, 0xbb, 0xb9,
+    0x9b, 0xbb, 0xbc, 0x22, 0x00, 0x86, 0x5e, 0xcc,
+    0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xe1, 0x68,
+    0x86, 0x63, 0x22, 0x22, 0x22, 0x2a, 0x66, 0x66,
+    0x33, 0x33, 0xaa, 0xaa, 0x1a, 0xaa, 0xaa, 0x11,
+    0x1a, 0xa7, 0x68, 0x80, 0x02, 0x2b, 0xbd, 0xbb,
+    0xbb, 0xb9, 0x22, 0x22, 0x00, 0x06, 0x6e, 0xcc,
+    0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xc7, 0xa6,
+    0x88, 0x86, 0x32, 0x22, 0x22, 0x27, 0xa6, 0x66,
+    0x33, 0x3a, 0xaa, 0xa1, 0xaa, 0xaa, 0xa1, 0x11,
+    0xa3, 0xa6, 0x88, 0x80, 0x02, 0x22, 0x9b, 0xbb,
+    0xbb, 0x22, 0x24, 0xf4, 0x60, 0x00, 0x0c, 0xcc,
+    0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xc2, 0x21,
+    0x68, 0x88, 0x63, 0x22, 0x22, 0x22, 0x71, 0x66,
+    0x33, 0x3a, 0x11, 0x11, 0xaa, 0xaa, 0x11, 0xaa,
+    0x71, 0x88, 0x88, 0x00, 0x02, 0xe2, 0x26, 0x99,
+    0x22, 0x22, 0x4f, 0xf4, 0x40, 0x00, 0x0c, 0xcc,
+    0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x22, 0x22,
+    0x16, 0x88, 0x86, 0xa2, 0x22, 0x22, 0x27, 0x11,
+    0x33, 0xa1, 0x11, 0x11, 0xaa, 0x31, 0x1a, 0xa3,
+    0x68, 0x88, 0x81, 0x00, 0x54, 0x42, 0x22, 0x22,
+    0x22, 0x44, 0xff, 0xff, 0x48, 0x00, 0x00, 0x99,
+    0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0x99, 0x22, 0x22,
+    0x21, 0x88, 0x88, 0x6a, 0x22, 0x22, 0x22, 0x31,
+    0x3a, 0xa1, 0x11, 0x1a, 0xa3, 0x11, 0x33, 0x36,
+    0x88, 0x86, 0x30, 0x00, 0x4f, 0x44, 0x22, 0x22,
+    0x24, 0xff, 0xff, 0xff, 0x44, 0x00, 0x00, 0x99,
+    0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0x95, 0x22, 0x72,
+    0x22, 0x18, 0x88, 0x86, 0x32, 0x22, 0x22, 0x27,
+    0xaa, 0x11, 0x11, 0x1a, 0x31, 0x13, 0x33, 0x68,
+    0x88, 0x6a, 0x00, 0x02, 0x4f, 0x4f, 0x42, 0x24,
+    0x4f, 0xff, 0xff, 0xff, 0xf4, 0x50, 0x00, 0x99,
+    0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0x99, 0x22, 0x73,
+    0x72, 0x26, 0x88, 0x88, 0x63, 0x22, 0x22, 0x22,
+    0x11, 0x11, 0x11, 0xa3, 0xa1, 0x73, 0xa6, 0x88,
+    0x81, 0xa5, 0x00, 0x04, 0x4f, 0x4f, 0x44, 0x4f,
+    0xff, 0xff, 0xff, 0xff, 0xf4, 0x40, 0x00, 0x99,
+    0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0x99, 0x12, 0x27,
+    0xaa, 0x22, 0x68, 0x55, 0x86, 0x72, 0x22, 0x22,
+    0x11, 0x11, 0x1a, 0x33, 0x13, 0x3a, 0x18, 0x88,
+    0x1a, 0x10, 0x00, 0x44, 0x4f, 0x4f, 0xff, 0x4f,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x99,
+    0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0x99, 0x61, 0x22,
+    0x3a, 0xa2, 0x26, 0x85, 0x58, 0x67, 0x22, 0x22,
+    0x61, 0x61, 0x1a, 0x7a, 0x37, 0x31, 0x88, 0x81,
+    0x11, 0x00, 0x05, 0xe4, 0x44, 0xff, 0xff, 0xff,
+    0x4f, 0xf4, 0x44, 0xff, 0xff, 0xf5, 0x00, 0x99,
+    0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0x99, 0x88, 0x12,
+    0x2a, 0xaa, 0x72, 0x68, 0x55, 0x81, 0x22, 0x22,
+    0x66, 0x61, 0xa3, 0x33, 0x73, 0x16, 0x88, 0x11,
+    0x10, 0x00, 0x08, 0x74, 0x44, 0x4f, 0x44, 0x44,
+    0xf4, 0xf4, 0x44, 0x44, 0xe2, 0x44, 0x00, 0x99,
+    0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0x99, 0x88, 0x81,
+    0x22, 0xaa, 0xa7, 0x26, 0x85, 0x88, 0x12, 0x22,
+    0x66, 0x61, 0x37, 0xa7, 0x3a, 0x66, 0x66, 0x11,
+    0x80, 0x00, 0x0a, 0x72, 0x44, 0x4f, 0x44, 0x4f,
+    0xff, 0x44, 0x44, 0x22, 0x22, 0x24, 0x00, 0x99,
+    0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0x99, 0x85, 0x88,
+    0x12, 0x2a, 0xaa, 0x22, 0x68, 0x58, 0x63, 0x22,
+    0x66, 0x1a, 0x73, 0x77, 0x31, 0x66, 0x61, 0x11,
+    0x00, 0x00, 0x07, 0x44, 0xff, 0x4f, 0xf4, 0x4f,
+    0xff, 0x4f, 0x44, 0xf4, 0x42, 0x22, 0x40, 0x9b,
+    0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xb9, 0x85, 0x55,
+    0x81, 0x27, 0xaa, 0xa2, 0x78, 0x88, 0x86, 0x72,
+    0x66, 0x13, 0x77, 0x73, 0x11, 0x66, 0x61, 0x76,
+    0x00, 0x50, 0x84, 0xf4, 0xff, 0x4f, 0xf4, 0xff,
+    0xff, 0x4f, 0x44, 0xff, 0x4f, 0x42, 0x40, 0x9b,
+    0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xb9, 0x68, 0x55,
+    0x58, 0x12, 0x3a, 0xaa, 0x23, 0x88, 0x88, 0xa7,
+    0x66, 0xa7, 0x77, 0x7a, 0x16, 0x66, 0x1a, 0x15,
+    0x05, 0x00, 0x4f, 0xf4, 0xff, 0x4f, 0xf4, 0xff,
+    0xff, 0x4f, 0x44, 0xff, 0x4f, 0x44, 0x24, 0x9b,
+    0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xb9, 0x26, 0x55,
+    0x55, 0x81, 0x23, 0xaa, 0x32, 0x18, 0x88, 0x6a,
+    0x61, 0x37, 0x77, 0x31, 0x66, 0x66, 0x17, 0x60,
+    0x05, 0x08, 0x4f, 0xf4, 0xff, 0x4f, 0xf4, 0xff,
+    0xff, 0x4f, 0x44, 0xff, 0x4f, 0x4f, 0x4e, 0x99,
+    0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0x99, 0xa2, 0x65,
+    0x55, 0x58, 0xa2, 0x7a, 0xa2, 0x26, 0x88, 0x61,
+    0x61, 0x32, 0x27, 0xa1, 0x66, 0x61, 0x31, 0x60,
+    0x00, 0x04, 0x4f, 0xf4, 0xff, 0x44, 0x44, 0xff,
+    0xff, 0x4f, 0x44, 0xff, 0x4f, 0x44, 0xf4, 0x99,
+    0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0x9b, 0xaa, 0x26,
+    0x55, 0x55, 0x87, 0x27, 0x33, 0x27, 0x68, 0x61,
+    0x1a, 0x72, 0x27, 0xa6, 0x66, 0x6a, 0x71, 0x00,
+    0x80, 0x84, 0xff, 0xf4, 0xff, 0x44, 0x44, 0xff,
+    0xff, 0x4f, 0x44, 0xff, 0x4f, 0x44, 0xf4, 0x99,
+    0x9b, 0x9b, 0x99, 0xb9, 0xb9, 0x99, 0xaa, 0xa2,
+    0x85, 0x55, 0x56, 0x22, 0x27, 0x22, 0x36, 0x66,
+    0x13, 0x22, 0x23, 0x16, 0x86, 0x63, 0x73, 0x00,
+    0x00, 0x44, 0xf4, 0xf4, 0xff, 0x44, 0x44, 0xff,
+    0xff, 0x4f, 0x44, 0xff, 0x4f, 0x4f, 0x4f, 0x99,
+    0x9b, 0x99, 0x99, 0x99, 0xb9, 0x99, 0xaa, 0xaa,
+    0x28, 0x55, 0x58, 0x12, 0x22, 0x22, 0x21, 0x11,
+    0xa3, 0x27, 0x7a, 0x66, 0x86, 0x17, 0x75, 0x05,
+    0x05, 0xff, 0xf4, 0xf4, 0xff, 0x44, 0x44, 0xff,
+    0xff, 0x4f, 0x44, 0x4f, 0x4f, 0x44, 0x4f, 0x99,
+    0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x3a, 0xaa,
+    0xa2, 0x85, 0x58, 0x67, 0x72, 0x22, 0x27, 0xa1,
+    0x37, 0x27, 0x7a, 0x68, 0x86, 0xa2, 0x70, 0x00,
+    0x02, 0xff, 0xf4, 0xf4, 0xff, 0x44, 0x44, 0x4f,
+    0xff, 0x4f, 0x44, 0xf4, 0xf4, 0xf4, 0xf4, 0x99,
+    0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x23, 0xaa,
+    0xa7, 0x78, 0x88, 0x81, 0x77, 0x22, 0x27, 0x3a,
+    0x72, 0x73, 0x71, 0x68, 0x66, 0x32, 0x50, 0x00,
+    0x04, 0x4f, 0xf4, 0xf4, 0xff, 0x44, 0x44, 0x4f,
+    0xff, 0x4f, 0x44, 0xf4, 0xf4, 0xf4, 0x44, 0x95,
+    0x99, 0x99, 0x99, 0x99, 0x99, 0x55, 0x12, 0x3a,
+    0xaa, 0x21, 0x88, 0x81, 0x77, 0x27, 0x73, 0x73,
+    0x72, 0x33, 0x36, 0x86, 0x61, 0x72, 0x00, 0x00,
+    0x04, 0x44, 0xf4, 0xf4, 0xf4, 0x44, 0x44, 0x4f,
+    0xff, 0x4f, 0x44, 0xff, 0x4f, 0x4f, 0x44, 0x55,
+    0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x8a, 0x27,
+    0xaa, 0x77, 0x68, 0x61, 0x23, 0x71, 0x11, 0x3a,
+    0x27, 0xa3, 0x36, 0x86, 0x61, 0x20, 0x00, 0x00,
+    0x04, 0xf4, 0xf4, 0xf4, 0xf4, 0x44, 0x44, 0x4f,
+    0xff, 0x4f, 0x44, 0xff, 0x4f, 0x4f, 0x41, 0x59,
+    0x99, 0x99, 0x99, 0x99, 0x99, 0x95, 0x58, 0x77,
+    0x27, 0x32, 0x36, 0x63, 0x23, 0x71, 0x66, 0x11,
+    0x27, 0x13, 0xa6, 0x86, 0x6a, 0x20, 0x00, 0x50,
+    0x04, 0x4f, 0x4f, 0x4f, 0x4f, 0x44, 0x44, 0x4f,
+    0xff, 0x4f, 0x44, 0xff, 0x4f, 0x4f, 0x41, 0x99,
+    0x9b, 0xbb, 0xbb, 0xbb, 0xb9, 0x99, 0x68, 0x13,
+    0x32, 0x22, 0x73, 0xa7, 0x2a, 0x31, 0x88, 0x66,
+    0x7a, 0x13, 0x18, 0x66, 0x63, 0x20, 0x00, 0x06,
+    0x0f, 0x4f, 0x4f, 0x4f, 0x4f, 0x44, 0x44, 0x4f,
+    0xff, 0x4f, 0x44, 0xff, 0x4f, 0x4f, 0x49, 0x95,
+    0xa9, 0xa9, 0x99, 0x97, 0x92, 0x99, 0x65, 0x6a,
+    0x17, 0x22, 0x23, 0x72, 0x27, 0xaa, 0x88, 0x88,
+    0xa1, 0x17, 0x68, 0x66, 0x67, 0x70, 0x00, 0x05,
+    0x0f, 0x4f, 0x4f, 0x4f, 0x4f, 0x44, 0x44, 0x4f,
+    0xff, 0x4f, 0x44, 0xff, 0xf4, 0xf4, 0x49, 0x9c,
+    0x2e, 0xee, 0xee, 0xee, 0xee, 0xa9, 0x65, 0x8a,
+    0x1a, 0xaa, 0x37, 0x72, 0x27, 0x37, 0x88, 0x88,
+    0x11, 0x17, 0x68, 0x66, 0x67, 0x10, 0x9d, 0xd0,
+    0x84, 0x44, 0xff, 0x4f, 0x4f, 0x44, 0xf4, 0x4f,
+    0xff, 0x4f, 0x44, 0xff, 0xf4, 0xf4, 0x4f, 0x69,
+    0xcc, 0xee, 0xee, 0xee, 0xec, 0x99, 0x88, 0x63,
+    0x61, 0x68, 0x61, 0x72, 0x22, 0x7a, 0x68, 0x88,
+    0x11, 0x17, 0x88, 0x66, 0x12, 0x1b, 0xdd, 0xdd,
+    0x02, 0x44, 0x4f, 0x4f, 0x4f, 0x44, 0x44, 0x4f,
+    0xff, 0x4f, 0x44, 0xff, 0xff, 0x4f, 0x4c, 0xc5,
+    0x0c, 0xc1, 0x11, 0x1c, 0xc0, 0x26, 0x66, 0x17,
+    0x66, 0x88, 0x88, 0x12, 0x22, 0x23, 0xa8, 0x88,
+    0x11, 0x13, 0x88, 0x66, 0x17, 0xbb, 0xdd, 0xdd,
+    0xd0, 0x8f, 0xff, 0xf4, 0xf4, 0x44, 0xf4, 0x4f,
+    0xff, 0x4f, 0x44, 0xf4, 0x4f, 0x44, 0xdd, 0xdd,
+    0x00, 0x00, 0x00, 0x05, 0x9d, 0x21, 0x66, 0x27,
+    0xa6, 0x65, 0x58, 0x67, 0x22, 0x27, 0x28, 0x88,
+    0x11, 0xaa, 0x86, 0x68, 0x1a, 0xbb, 0xdd, 0xdd,
+    0xdb, 0x05, 0xf4, 0xf4, 0xf4, 0xf4, 0x44, 0x4f,
+    0xff, 0x4f, 0x44, 0xf4, 0xf4, 0xf4, 0xdd, 0xdb,
+    0x00, 0x00, 0x00, 0x00, 0xdd, 0xda, 0x66, 0x22,
+    0x71, 0x15, 0x55, 0x81, 0x22, 0x22, 0x76, 0x88,
+    0x11, 0x31, 0x88, 0x88, 0xab, 0xbd, 0xdd, 0xdd,
+    0xdd, 0x00, 0x04, 0x44, 0xff, 0xff, 0x4f, 0x4f,
+    0xff, 0x4f, 0x44, 0xf4, 0xf4, 0x44, 0xdd, 0xdb,
+    0x00, 0x00, 0x00, 0x0b, 0xdd, 0xda, 0x11, 0x22,
+    0x23, 0x68, 0x55, 0x86, 0x22, 0x22, 0x7a, 0x88,
+    0x1a, 0x71, 0x88, 0x89, 0xbb, 0xdd, 0xdd, 0xdd,
+    0xdd, 0xd0, 0x00, 0x4f, 0x44, 0xff, 0x4f, 0x4f,
+    0xff, 0x4f, 0x44, 0xf4, 0xff, 0xe2, 0xdd, 0xdb,
+    0x90, 0x00, 0x05, 0xbd, 0xdd, 0xb8, 0x63, 0x22,
+    0x27, 0xa6, 0x55, 0x88, 0x77, 0x22, 0x22, 0x88,
+    0x1a, 0x28, 0xbd, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd,
+    0xdd, 0xdb, 0x00, 0x07, 0x44, 0x4f, 0x4f, 0x4f,
+    0xff, 0x4f, 0x44, 0x4f, 0x4f, 0x22, 0xdd, 0xdb,
+    0xbb, 0x9b, 0xbb, 0xbd, 0xdd, 0xd5, 0x86, 0x22,
+    0x22, 0x77, 0x85, 0x88, 0x17, 0x22, 0x22, 0x88,
+    0xaa, 0x2b, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
+    0xdd, 0xdd, 0x00, 0x00, 0x54, 0x4f, 0x4f, 0x4f,
+    0xff, 0x4f, 0x44, 0xf4, 0x44, 0x22, 0xbd, 0xdd,
+    0xbb, 0xbb, 0xbb, 0xdd, 0xdd, 0xdd, 0x88, 0x72,
+    0x27, 0x22, 0x88, 0x88, 0x67, 0x72, 0x22, 0x18,
+    0x33, 0x2d, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
+    0xdd, 0xdd, 0xd0, 0x00, 0x05, 0x4f, 0x4f, 0x4f,
+    0xff, 0x4f, 0x44, 0x44, 0x4f, 0x22, 0xbd, 0xdd,
+    0xdb, 0xbb, 0xdd, 0xdd, 0xdd, 0xdd, 0x88, 0x17,
+    0x27, 0x72, 0x68, 0x88, 0x87, 0x32, 0x22, 0x36,
+    0x37, 0x2d, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
+    0xdd, 0xdd, 0xd5, 0x00, 0x00, 0x4f, 0x4f, 0x4f,
+    0xff, 0xf4, 0xf4, 0xf4, 0xf4, 0x22, 0xbb, 0xdd,
+    0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xd8, 0x67,
+    0x72, 0x77, 0x38, 0x88, 0x83, 0x37, 0x22, 0x26,
+    0x72, 0x2b, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
+    0xdd, 0xdd, 0xdd, 0x00, 0x00, 0x4f, 0x4f, 0x4f,
+    0xff, 0xf4, 0xf4, 0xf4, 0x44, 0x25, 0xbb, 0xdd,
+    0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xd3,
+    0x32, 0x73, 0x76, 0x88, 0x81, 0x33, 0x22, 0x2a,
+    0x22, 0x2b, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
+    0xdd, 0xdd, 0xdd, 0xb0, 0x54, 0x4f, 0x4f, 0x4f,
+    0xff, 0xf4, 0xf4, 0xff, 0x44, 0x00, 0xbb, 0xdd,
+    0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
+    0xa7, 0x73, 0x26, 0x88, 0x86, 0x7a, 0x72, 0x27,
+    0x22, 0x2b, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
+    0xdd, 0xdd, 0xdd, 0xdb, 0x44, 0xff, 0x4f, 0x4f,
+    0xff, 0xf4, 0xf4, 0x44, 0x40, 0x05, 0xbb, 0xdd,
+    0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
+    0x13, 0x23, 0x21, 0x68, 0x86, 0x17, 0x72, 0x22,
+    0x22, 0x2b, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
+    0xdd, 0xdd, 0xdd, 0xdb, 0x44, 0x4f, 0x4f, 0x4f,
+    0xff, 0xff, 0x44, 0x42, 0x00, 0x05, 0xbd, 0xdd,
+    0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
+    0x87, 0x27, 0x27, 0x16, 0x66, 0x67, 0x22, 0x22,
+    0x72, 0x7b, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
+    0xdd, 0xdd, 0xdd, 0xdd, 0x94, 0x44, 0x44, 0x44,
+    0x44, 0x44, 0x44, 0x00, 0x00, 0x05, 0xbb, 0xdd,
+    0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xb8,
+    0x86, 0x22, 0x22, 0x7a, 0x68, 0x81, 0x22, 0x22,
+    0x37, 0x7b, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
+    0xdd, 0xdd, 0xdd, 0xdb, 0xb5, 0x44, 0x44, 0x44,
+    0x44, 0x47, 0x00, 0x00, 0x00, 0x05, 0xbd, 0xdd,
+    0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xd8, 0x68,
+    0x58, 0x72, 0x22, 0x27, 0x18, 0x86, 0x72, 0x22,
+    0x1a, 0xbb, 0xbd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
+    0xdd, 0xdd, 0xdd, 0xdb, 0xb5, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xbb, 0xdd,
+    0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xb9, 0x18, 0x85,
+    0x58, 0x12, 0x22, 0x36, 0x18, 0x88, 0x32, 0x22,
+    0x61, 0x3b, 0xbb, 0xbb, 0xbd, 0xdd, 0xdd, 0xdd,
+    0xdd, 0xdd, 0xdd, 0xdb, 0xb9, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xbb, 0xdd,
+    0xdd, 0xdd, 0xdd, 0xdd, 0xb9, 0x7a, 0x68, 0x85,
+    0x88, 0x62, 0x27, 0x16, 0x18, 0x88, 0x12, 0x27,
+    0x86, 0x18, 0x9b, 0xbb, 0xbb, 0xbb, 0xbb, 0xbd,
+    0xdd, 0xdd, 0xdd, 0xbb, 0xb5, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xbb, 0xbd,
+    0xdd, 0xdd, 0xdb, 0xbb, 0x87, 0x31, 0x68, 0x65,
+    0x88, 0x82, 0x23, 0x16, 0x18, 0x88, 0x12, 0x23,
+    0x88, 0x67, 0x27, 0xa8, 0x9b, 0xbb, 0xbb, 0xbb,
+    0xbd, 0xdd, 0xbb, 0xbb, 0x95, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x9b, 0xbb,
+    0xbb, 0xbb, 0xbb, 0x96, 0x87, 0x16, 0x68, 0x18,
+    0x88, 0x62, 0x31, 0x66, 0x18, 0x88, 0x62, 0x73,
+    0x88, 0x63, 0x27, 0x33, 0x65, 0x55, 0x99, 0x9b,
+    0xbb, 0xbb, 0xbb, 0x99, 0x55, 0x0a, 0xa1, 0x86,
+    0x81, 0x68, 0x88, 0x55, 0x58, 0x85, 0x9b, 0xbb,
+    0xbb, 0xbb, 0x95, 0x88, 0x83, 0x66, 0x66, 0x18,
+    0x66, 0x82, 0xa1, 0x66, 0x18, 0x88, 0x62, 0x33,
+    0x88, 0x81, 0x27, 0x7a, 0x18, 0x58, 0x86, 0x85,
+    0x99, 0x99, 0x99, 0x95, 0x53, 0x2a, 0xaa, 0x88,
+    0x67, 0x31, 0x68, 0x55, 0x58, 0x85, 0x59, 0xbb,
+    0xbb, 0xb9, 0x58, 0x68, 0x83, 0x66, 0x61, 0x16,
+    0x66, 0x62, 0x16, 0x66, 0x68, 0x88, 0x62, 0xaa,
+    0x88, 0x86, 0x27, 0x77, 0x78, 0x55, 0x88, 0x22,
+    0x25, 0x55, 0x95, 0x55, 0x6a, 0xa2, 0x2a, 0x88,
+    0x62, 0x27, 0x37, 0x38, 0x88, 0x87, 0x55, 0x59,
+    0x95, 0x58, 0x16, 0x88, 0x8a, 0x66, 0x63, 0x68,
+    0x86, 0x67, 0x66, 0x66, 0x68, 0x88, 0x12, 0x11,
+    0x88, 0x88, 0x72, 0x77, 0x78, 0x85, 0x58, 0x17,
+    0x23, 0x32, 0x55, 0x55, 0x81, 0x13, 0x73, 0x66,
+    0x62, 0x7a, 0xaa, 0x38, 0x88, 0x58, 0x27, 0x55,
+    0x58, 0x32, 0x38, 0x88, 0x81, 0x66, 0xa2, 0x88,
+    0x86, 0x61, 0x66, 0x61, 0x66, 0x68, 0x13, 0x11,
+    0x88, 0x88, 0x12, 0x22, 0x71, 0x85, 0x58, 0x62,
+    0x23, 0xa2, 0x68, 0x88, 0x81, 0x66, 0x88, 0x88,
+    0x63, 0x2a, 0xaa, 0x28, 0x88, 0x55, 0x86, 0x61,
+    0x66, 0x66, 0x68, 0x88, 0x66, 0x66, 0x77, 0x88,
+    0x68, 0x16, 0x66, 0x62, 0x66, 0x68, 0xa1, 0x61,
+    0x88, 0x88, 0x62, 0x22, 0x22, 0x85, 0x55, 0x83,
+    0x72, 0x37, 0xa8, 0x88, 0x61, 0x66, 0x85, 0x55,
+    0x86, 0x23, 0xaa, 0x71, 0x88, 0x85, 0x88, 0x66,
+    0x88, 0x86, 0x88, 0x88, 0x16, 0x61, 0x21, 0x88,
+    0x66, 0xa6, 0x86, 0x17, 0x66, 0x66, 0x31, 0x61,
+    0x88, 0x88, 0x87, 0x72, 0x22, 0x68, 0x55, 0x86,
+    0x77, 0x77, 0x36, 0x88, 0x13, 0x68, 0x85, 0x55,
+    0x58, 0x12, 0x73, 0x72, 0x76, 0x88, 0x88, 0x68,
+    0x88, 0x88, 0x88, 0x66, 0x36, 0x63, 0x26, 0x86,
+    0x86, 0x36, 0x86, 0x11, 0x66, 0x66, 0x76, 0x61,
+    0x88, 0x88, 0x81, 0x22, 0x22, 0x38, 0x85, 0x58,
+    0x37, 0x22, 0x21, 0x68, 0xa2, 0x31, 0x68, 0x55,
+    0x55, 0x81, 0x22, 0x22, 0xa8, 0x88, 0x88, 0x68,
+    0x86, 0x88, 0x68, 0x81, 0x36, 0x17, 0x21, 0x68,
+    0x86, 0x16, 0x66, 0x26, 0x66, 0x61, 0x36, 0x66,
+    0x68, 0x88, 0x86, 0x27, 0x22, 0x28, 0x88, 0x88,
+    0x17, 0x72, 0x2a, 0x66, 0xa2, 0x22, 0x36, 0x55,
+    0x55, 0x58, 0x37, 0x3a, 0x16, 0x66, 0x66, 0x66,
+    0x66, 0x18, 0x88, 0x67, 0x16, 0x12, 0x71, 0x68,
+    0x81, 0x68, 0x61, 0x76, 0x66, 0x6a, 0x16, 0x66,
+    0x88, 0x88, 0x86, 0x77, 0x22, 0x26, 0x88, 0x88,
+    0x13, 0x37, 0x71, 0x66, 0xa2, 0x33, 0x2a, 0x85,
+    0x55, 0x55, 0x17, 0x73, 0x16, 0x66, 0x66, 0x68,
+    0x63, 0x88, 0x88, 0xa2, 0x66, 0xa2, 0xa6, 0x88,
+    0x61, 0x68, 0x6a, 0x76, 0x66, 0x6a, 0x66, 0x6a
+};
+
+#endif
diff -Naur u-boot-2009.03_orig/include/lxt971a.h u-boot-2009.03/include/lxt971a.h
--- u-boot-2009.03_orig/include/lxt971a.h       2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/include/lxt971a.h    2009-03-31 14:57:41.656920000 -0700
@@ -1,146 +1,146 @@
-/***********************************************************************
- *
- * Copyright (C) 2004 by FS Forth-Systeme GmbH.
- * All rights reserved.
- *
- * $Id: ns9750_eth.h,v 1.2 2004/02/24 13:25:39 mpietrek Exp $
- * @Author: Markus Pietrek
- * @References: [1] NS9750 Hardware Reference, December 2003
- *              [2] Intel LXT971 Datasheet #249414 Rev. 02
- *              [3] NS7520 Linux Ethernet Driver
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- *
- ***********************************************************************/
-
-#ifndef __LXT971A_H__
-#define __LXT971A_H__
-
-/* PHY definitions (LXT971A) [2] */
-#define PHY_LXT971_PORT_CFG            (0x10)
-#define PHY_LXT971_STAT2               (0x11)
-#define PHY_LXT971_INT_ENABLE          (0x12)
-#define PHY_LXT971_INT_STATUS          (0x13)
-#define PHY_LXT971_LED_CFG             (0x14)
-#define PHY_LXT971_DIG_CFG             (0x1A)
-#define PHY_LXT971_TX_CTRL             (0x1E)
-
-/* PORT_CFG Port Configuration Register Bit Fields */
-#define PHY_LXT971_PORT_CFG_RES1        (0x8000)
-#define PHY_LXT971_PORT_CFG_FORCE_LNK   (0x4000)
-#define PHY_LXT971_PORT_CFG_TX_DISABLE  (0x2000)
-#define PHY_LXT971_PORT_CFG_BYPASS_SCR  (0x1000)
-#define PHY_LXT971_PORT_CFG_RES2        (0x0800)
-#define PHY_LXT971_PORT_CFG_JABBER      (0x0400)
-#define PHY_LXT971_PORT_CFG_SQE                (0x0200)
-#define PHY_LXT971_PORT_CFG_TP_LOOPBACK (0x0100)
-#define PHY_LXT971_PORT_CFG_CRS_SEL     (0x0080)
-#define PHY_LXT971_PORT_CFG_SLEEP_MODE  (0x0040)
-#define PHY_LXT971_PORT_CFG_PRE_EN      (0x0020)
-#define PHY_LXT971_PORT_CFG_SLEEP_T_MA  (0x0018)
-#define PHY_LXT971_PORT_CFG_SLEEP_T_104 (0x0010)
-#define PHY_LXT971_PORT_CFG_SLEEP_T_200 (0x0001)
-#define PHY_LXT971_PORT_CFG_SLEEP_T_304 (0x0000)
-#define PHY_LXT971_PORT_CFG_FLT_CODE_EN (0x0004)
-#define PHY_LXT971_PORT_CFG_ALT_NP      (0x0002)
-#define PHY_LXT971_PORT_CFG_FIBER_SEL   (0x0001)
-
-/* STAT2 Status Register #2 Bit Fields */
-#define PHY_LXT971_STAT2_RES1          (0x8000)
-#define PHY_LXT971_STAT2_100BTX                (0x4000)
-#define PHY_LXT971_STAT2_TX_STATUS     (0x2000)
-#define PHY_LXT971_STAT2_RX_STATUS     (0x1000)
-#define PHY_LXT971_STAT2_COL_STATUS    (0x0800)
-#define PHY_LXT971_STAT2_LINK          (0x0400)
-#define PHY_LXT971_STAT2_DUPLEX_MODE   (0x0200)
-#define PHY_LXT971_STAT2_AUTO_NEG      (0x0100)
-#define PHY_LXT971_STAT2_AUTO_NEG_COMP (0x0080)
-#define PHY_LXT971_STAT2_RES2          (0x0040)
-#define PHY_LXT971_STAT2_POLARITY      (0x0020)
-#define PHY_LXT971_STAT2_PAUSE         (0x0010)
-#define PHY_LXT971_STAT2_ERROR         (0x0008)
-#define PHY_LXT971_STAT2_RES3          (0x0007)
-
-/* INT_ENABLE Interrupt Enable Register Bit Fields */
-#define PHY_LXT971_INT_ENABLE_RES1      (0xFF00)
-#define PHY_LXT971_INT_ENABLE_ANMSK     (0x0080)
-#define PHY_LXT971_INT_ENABLE_SPEEDMSK  (0x0040)
-#define PHY_LXT971_INT_ENABLE_DUPLEXMSK (0x0020)
-#define PHY_LXT971_INT_ENABLE_LINKMSK   (0x0010)
-#define PHY_LXT971_INT_ENABLE_RES2      (0x000C)
-#define PHY_LXT971_INT_ENABLE_INTEN     (0x0002)
-#define PHY_LXT971_INT_ENABLE_TINT      (0x0001)
-
-/* INT_STATUS Interrupt Status Register Bit Fields */
-#define PHY_LXT971_INT_STATUS_RES1      (0xFF00)
-#define PHY_LXT971_INT_STATUS_ANDONE    (0x0080)
-#define PHY_LXT971_INT_STATUS_SPEEDCHG  (0x0040)
-#define PHY_LXT971_INT_STATUS_DUPLEXCHG (0x0020)
-#define PHY_LXT971_INT_STATUS_LINKCHG   (0x0010)
-#define PHY_LXT971_INT_STATUS_RES2      (0x0008)
-#define PHY_LXT971_INT_STATUS_MDINT     (0x0004)
-#define PHY_LXT971_INT_STATUS_RES3      (0x0003)
-
-/* LED_CFG Interrupt LED Configuration Register Bit Fields */
-#define PHY_LXT971_LED_CFG_SHIFT_LED1   (0x000C)
-#define PHY_LXT971_LED_CFG_SHIFT_LED2   (0x0008)
-#define PHY_LXT971_LED_CFG_SHIFT_LED3   (0x0004)
-#define PHY_LXT971_LED_CFG_LEDFREQ_MA  (0x000C)
-#define PHY_LXT971_LED_CFG_LEDFREQ_RES (0x000C)
-#define PHY_LXT971_LED_CFG_LEDFREQ_100 (0x0008)
-#define PHY_LXT971_LED_CFG_LEDFREQ_60  (0x0004)
-#define PHY_LXT971_LED_CFG_LEDFREQ_30  (0x0000)
-#define PHY_LXT971_LED_CFG_PULSE_STR    (0x0002)
-#define PHY_LXT971_LED_CFG_RES1         (0x0001)
-
-/* only one of these values must be shifted for each SHIFT_LED?  */
-#define PHY_LXT971_LED_CFG_UNUSED1      (0x000F)
-#define PHY_LXT971_LED_CFG_DUPLEX_COL   (0x000E)
-#define PHY_LXT971_LED_CFG_LINK_ACT     (0x000D)
-#define PHY_LXT971_LED_CFG_LINK_RX      (0x000C)
-#define PHY_LXT971_LED_CFG_TEST_BLK_SLW (0x000B)
-#define PHY_LXT971_LED_CFG_TEST_BLK_FST (0x000A)
-#define PHY_LXT971_LED_CFG_TEST_OFF     (0x0009)
-#define PHY_LXT971_LED_CFG_TEST_ON      (0x0008)
-#define PHY_LXT971_LED_CFG_RX_OR_TX     (0x0007)
-#define PHY_LXT971_LED_CFG_UNUSED2      (0x0006)
-#define PHY_LXT971_LED_CFG_DUPLEX       (0x0005)
-#define PHY_LXT971_LED_CFG_LINK                (0x0004)
-#define PHY_LXT971_LED_CFG_COLLISION    (0x0003)
-#define PHY_LXT971_LED_CFG_RECEIVE      (0x0002)
-#define PHY_LXT971_LED_CFG_TRANSMIT     (0x0001)
-#define PHY_LXT971_LED_CFG_SPEED        (0x0000)
-
-/* DIG_CFG Digitial Configuration Register Bit Fields */
-#define PHY_LXT971_DIG_CFG_RES1                (0xF000)
-#define PHY_LXT971_DIG_CFG_MII_DRIVE   (0x0800)
-#define PHY_LXT971_DIG_CFG_RES2                (0x0400)
-#define PHY_LXT971_DIG_CFG_SHOW_SYMBOL (0x0200)
-#define PHY_LXT971_DIG_CFG_RES3                (0x01FF)
-
-#define PHY_LXT971_MDIO_MAX_CLK                (8000000)
-#define PHY_MDIO_MAX_CLK               (2500000)
-
-/* TX_CTRL Transmit Control Register Bit Fields
-   documentation is buggy for this register, therefore setting not included */
-
-typedef enum
-{
-       PHY_NONE    = 0x0000, /* no PHY detected yet */
-       PHY_LXT971A = 0x0013
-} PhyType;
-
-#endif /* __LXT971A_H__ */
+/***********************************************************************
+ *
+ * Copyright (C) 2004 by FS Forth-Systeme GmbH.
+ * All rights reserved.
+ *
+ * $Id: lxt971a.h,v 1.1.1.1 2009/03/25 22:22:13 kenagy Exp $
+ * @Author: Markus Pietrek
+ * @References: [1] NS9750 Hardware Reference, December 2003
+ *              [2] Intel LXT971 Datasheet #249414 Rev. 02
+ *              [3] NS7520 Linux Ethernet Driver
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ ***********************************************************************/
+
+#ifndef __LXT971A_H__
+#define __LXT971A_H__
+
+/* PHY definitions (LXT971A) [2] */
+#define PHY_LXT971_PORT_CFG            (0x10)
+#define PHY_LXT971_STAT2               (0x11)
+#define PHY_LXT971_INT_ENABLE          (0x12)
+#define PHY_LXT971_INT_STATUS          (0x13)
+#define PHY_LXT971_LED_CFG             (0x14)
+#define PHY_LXT971_DIG_CFG             (0x1A)
+#define PHY_LXT971_TX_CTRL             (0x1E)
+
+/* PORT_CFG Port Configuration Register Bit Fields */
+#define PHY_LXT971_PORT_CFG_RES1        (0x8000)
+#define PHY_LXT971_PORT_CFG_FORCE_LNK   (0x4000)
+#define PHY_LXT971_PORT_CFG_TX_DISABLE  (0x2000)
+#define PHY_LXT971_PORT_CFG_BYPASS_SCR  (0x1000)
+#define PHY_LXT971_PORT_CFG_RES2        (0x0800)
+#define PHY_LXT971_PORT_CFG_JABBER      (0x0400)
+#define PHY_LXT971_PORT_CFG_SQE                (0x0200)
+#define PHY_LXT971_PORT_CFG_TP_LOOPBACK (0x0100)
+#define PHY_LXT971_PORT_CFG_CRS_SEL     (0x0080)
+#define PHY_LXT971_PORT_CFG_SLEEP_MODE  (0x0040)
+#define PHY_LXT971_PORT_CFG_PRE_EN      (0x0020)
+#define PHY_LXT971_PORT_CFG_SLEEP_T_MA  (0x0018)
+#define PHY_LXT971_PORT_CFG_SLEEP_T_104 (0x0010)
+#define PHY_LXT971_PORT_CFG_SLEEP_T_200 (0x0001)
+#define PHY_LXT971_PORT_CFG_SLEEP_T_304 (0x0000)
+#define PHY_LXT971_PORT_CFG_FLT_CODE_EN (0x0004)
+#define PHY_LXT971_PORT_CFG_ALT_NP      (0x0002)
+#define PHY_LXT971_PORT_CFG_FIBER_SEL   (0x0001)
+
+/* STAT2 Status Register #2 Bit Fields */
+#define PHY_LXT971_STAT2_RES1          (0x8000)
+#define PHY_LXT971_STAT2_100BTX                (0x4000)
+#define PHY_LXT971_STAT2_TX_STATUS     (0x2000)
+#define PHY_LXT971_STAT2_RX_STATUS     (0x1000)
+#define PHY_LXT971_STAT2_COL_STATUS    (0x0800)
+#define PHY_LXT971_STAT2_LINK          (0x0400)
+#define PHY_LXT971_STAT2_DUPLEX_MODE   (0x0200)
+#define PHY_LXT971_STAT2_AUTO_NEG      (0x0100)
+#define PHY_LXT971_STAT2_AUTO_NEG_COMP (0x0080)
+#define PHY_LXT971_STAT2_RES2          (0x0040)
+#define PHY_LXT971_STAT2_POLARITY      (0x0020)
+#define PHY_LXT971_STAT2_PAUSE         (0x0010)
+#define PHY_LXT971_STAT2_ERROR         (0x0008)
+#define PHY_LXT971_STAT2_RES3          (0x0007)
+
+/* INT_ENABLE Interrupt Enable Register Bit Fields */
+#define PHY_LXT971_INT_ENABLE_RES1      (0xFF00)
+#define PHY_LXT971_INT_ENABLE_ANMSK     (0x0080)
+#define PHY_LXT971_INT_ENABLE_SPEEDMSK  (0x0040)
+#define PHY_LXT971_INT_ENABLE_DUPLEXMSK (0x0020)
+#define PHY_LXT971_INT_ENABLE_LINKMSK   (0x0010)
+#define PHY_LXT971_INT_ENABLE_RES2      (0x000C)
+#define PHY_LXT971_INT_ENABLE_INTEN     (0x0002)
+#define PHY_LXT971_INT_ENABLE_TINT      (0x0001)
+
+/* INT_STATUS Interrupt Status Register Bit Fields */
+#define PHY_LXT971_INT_STATUS_RES1      (0xFF00)
+#define PHY_LXT971_INT_STATUS_ANDONE    (0x0080)
+#define PHY_LXT971_INT_STATUS_SPEEDCHG  (0x0040)
+#define PHY_LXT971_INT_STATUS_DUPLEXCHG (0x0020)
+#define PHY_LXT971_INT_STATUS_LINKCHG   (0x0010)
+#define PHY_LXT971_INT_STATUS_RES2      (0x0008)
+#define PHY_LXT971_INT_STATUS_MDINT     (0x0004)
+#define PHY_LXT971_INT_STATUS_RES3      (0x0003)
+
+/* LED_CFG Interrupt LED Configuration Register Bit Fields */
+#define PHY_LXT971_LED_CFG_SHIFT_LED1   (0x000C)
+#define PHY_LXT971_LED_CFG_SHIFT_LED2   (0x0008)
+#define PHY_LXT971_LED_CFG_SHIFT_LED3   (0x0004)
+#define PHY_LXT971_LED_CFG_LEDFREQ_MA  (0x000C)
+#define PHY_LXT971_LED_CFG_LEDFREQ_RES (0x000C)
+#define PHY_LXT971_LED_CFG_LEDFREQ_100 (0x0008)
+#define PHY_LXT971_LED_CFG_LEDFREQ_60  (0x0004)
+#define PHY_LXT971_LED_CFG_LEDFREQ_30  (0x0000)
+#define PHY_LXT971_LED_CFG_PULSE_STR    (0x0002)
+#define PHY_LXT971_LED_CFG_RES1         (0x0001)
+
+/* only one of these values must be shifted for each SHIFT_LED?  */
+#define PHY_LXT971_LED_CFG_UNUSED1      (0x000F)
+#define PHY_LXT971_LED_CFG_DUPLEX_COL   (0x000E)
+#define PHY_LXT971_LED_CFG_LINK_ACT     (0x000D)
+#define PHY_LXT971_LED_CFG_LINK_RX      (0x000C)
+#define PHY_LXT971_LED_CFG_TEST_BLK_SLW (0x000B)
+#define PHY_LXT971_LED_CFG_TEST_BLK_FST (0x000A)
+#define PHY_LXT971_LED_CFG_TEST_OFF     (0x0009)
+#define PHY_LXT971_LED_CFG_TEST_ON      (0x0008)
+#define PHY_LXT971_LED_CFG_RX_OR_TX     (0x0007)
+#define PHY_LXT971_LED_CFG_UNUSED2      (0x0006)
+#define PHY_LXT971_LED_CFG_DUPLEX       (0x0005)
+#define PHY_LXT971_LED_CFG_LINK                (0x0004)
+#define PHY_LXT971_LED_CFG_COLLISION    (0x0003)
+#define PHY_LXT971_LED_CFG_RECEIVE      (0x0002)
+#define PHY_LXT971_LED_CFG_TRANSMIT     (0x0001)
+#define PHY_LXT971_LED_CFG_SPEED        (0x0000)
+
+/* DIG_CFG Digitial Configuration Register Bit Fields */
+#define PHY_LXT971_DIG_CFG_RES1                (0xF000)
+#define PHY_LXT971_DIG_CFG_MII_DRIVE   (0x0800)
+#define PHY_LXT971_DIG_CFG_RES2                (0x0400)
+#define PHY_LXT971_DIG_CFG_SHOW_SYMBOL (0x0200)
+#define PHY_LXT971_DIG_CFG_RES3                (0x01FF)
+
+#define PHY_LXT971_MDIO_MAX_CLK                (8000000)
+#define PHY_MDIO_MAX_CLK               (2500000)
+
+/* TX_CTRL Transmit Control Register Bit Fields
+   documentation is buggy for this register, therefore setting not included */
+
+typedef enum
+{
+       PHY_NONE    = 0x0000, /* no PHY detected yet */
+       PHY_LXT971A = 0x0013
+} PhyType;
+
+#endif /* __LXT971A_H__ */
diff -Naur u-boot-2009.03_orig/include/lzma/CVS/Entries u-boot-2009.03/include/lzma/CVS/Entries
--- u-boot-2009.03_orig/include/lzma/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/lzma/CVS/Entries     2009-03-25 15:58:15.012300100 -0700
@@ -0,0 +1,4 @@
+/LzmaDecode.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/LzmaTools.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/LzmaTypes.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/include/lzma/CVS/Entries.Extra u-boot-2009.03/include/lzma/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/lzma/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/lzma/CVS/Entries.Extra       2009-03-25 15:58:15.012300100 -0700
@@ -0,0 +1,3 @@
+/LzmaDecode.h///1238019749/
+/LzmaTools.h///1238019749/
+/LzmaTypes.h///1238019749/
diff -Naur u-boot-2009.03_orig/include/lzma/CVS/Entries.Extra.Old u-boot-2009.03/include/lzma/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/lzma/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/lzma/CVS/Entries.Extra.Old   2009-03-25 15:25:56.000000000 -0700
@@ -0,0 +1,3 @@
+/LzmaDecode.h///1238019749/
+/LzmaTools.h///1238019749/
+/LzmaTypes.h///1238019749/
diff -Naur u-boot-2009.03_orig/include/lzma/CVS/Entries.Old u-boot-2009.03/include/lzma/CVS/Entries.Old
--- u-boot-2009.03_orig/include/lzma/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/lzma/CVS/Entries.Old 2009-03-25 15:25:56.000000000 -0700
@@ -0,0 +1,4 @@
+/LzmaDecode.h/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/LzmaTools.h/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/LzmaTypes.h/1.1.1.1/Wed Mar 25 22:22:29 2009//
+D
diff -Naur u-boot-2009.03_orig/include/lzma/CVS/Repository u-boot-2009.03/include/lzma/CVS/Repository
--- u-boot-2009.03_orig/include/lzma/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/lzma/CVS/Repository  2009-03-25 15:25:56.259083200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/lzma
diff -Naur u-boot-2009.03_orig/include/lzma/CVS/Root u-boot-2009.03/include/lzma/CVS/Root
--- u-boot-2009.03_orig/include/lzma/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/lzma/CVS/Root        2009-03-25 15:25:56.243458300 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/mtd/CVS/Entries u-boot-2009.03/include/mtd/CVS/Entries
--- u-boot-2009.03_orig/include/mtd/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/mtd/CVS/Entries      2009-03-25 15:58:15.246673600 -0700
@@ -0,0 +1,2 @@
+/ubi-user.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/include/mtd/CVS/Entries.Extra u-boot-2009.03/include/mtd/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/mtd/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/mtd/CVS/Entries.Extra        2009-03-25 15:58:15.246673600 -0700
@@ -0,0 +1 @@
+/ubi-user.h///1238019749/
diff -Naur u-boot-2009.03_orig/include/mtd/CVS/Entries.Extra.Old u-boot-2009.03/include/mtd/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/mtd/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/mtd/CVS/Entries.Extra.Old    2009-03-25 15:25:56.000000000 -0700
@@ -0,0 +1 @@
+/ubi-user.h///1238019749/
diff -Naur u-boot-2009.03_orig/include/mtd/CVS/Entries.Old u-boot-2009.03/include/mtd/CVS/Entries.Old
--- u-boot-2009.03_orig/include/mtd/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/mtd/CVS/Entries.Old  2009-03-25 15:25:56.000000000 -0700
@@ -0,0 +1,2 @@
+/ubi-user.h/1.1.1.1/Wed Mar 25 22:22:29 2009//
+D
diff -Naur u-boot-2009.03_orig/include/mtd/CVS/Repository u-boot-2009.03/include/mtd/CVS/Repository
--- u-boot-2009.03_orig/include/mtd/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/mtd/CVS/Repository   2009-03-25 15:25:56.352832600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/mtd
diff -Naur u-boot-2009.03_orig/include/mtd/CVS/Root u-boot-2009.03/include/mtd/CVS/Root
--- u-boot-2009.03_orig/include/mtd/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/mtd/CVS/Root 2009-03-25 15:25:56.352832600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/ns7520_eth.h u-boot-2009.03/include/ns7520_eth.h
--- u-boot-2009.03_orig/include/ns7520_eth.h    2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/include/ns7520_eth.h 2009-03-31 14:58:01.812912000 -0700
@@ -1,336 +1,336 @@
-/***********************************************************************
- *
- *  Copyright 2003 by FS Forth-Systeme GmbH.
- *  All rights reserved.
- *
- *  $Id$
- *  @Author: Markus Pietrek
- *  @Descr: Defines the NS7520 ethernet registers.
- *          Stick with the old ETH prefix names instead going to the
- *          new EFE names in the manual.
- *          NS7520_ETH_* refer to NS7520 Hardware
- *           Reference/January 2003 [1]
- *          PHY_LXT971_* refer to Intel LXT971 Datasheet
- *           #249414 Rev. 02 [2]
- *          Partly derived from netarm_eth_module.h
- *
- * Modified by Arthur Shipkowski <art@videon-central.com> from the
- * Linux version to be properly formatted for U-Boot (i.e. no C++ comments)
- *
- ***********************************************************************/
-
-#ifndef FS_NS7520_ETH_H
-#define FS_NS7520_ETH_H
-
-#ifdef CONFIG_DRIVER_NS7520_ETHERNET
-
-#include <miiphy.h>
-#include "lxt971a.h"
-
-/* The port addresses */
-
-#define        NS7520_ETH_MODULE_BASE          (0xFF800000)
-
-#define get_eth_reg_addr(c) \
-     ((volatile unsigned int*) ( NS7520_ETH_MODULE_BASE+(unsigned int) (c)))
-#define NS7520_ETH_EGCR                 (0x0000)       /* Ethernet Gen Control */
-#define NS7520_ETH_EGSR                 (0x0004)       /* Ethernet Gen Status */
-#define NS7520_ETH_FIFO                 (0x0008)       /* FIFO Data */
-#define NS7520_ETH_FIFOL        (0x000C)       /* FIFO Data Last */
-#define NS7520_ETH_ETSR                 (0x0010)       /* Ethernet Transmit Status */
-#define NS7520_ETH_ERSR                 (0x0014)       /* Ethernet Receive Status */
-#define NS7520_ETH_MAC1                 (0x0400)       /* MAC Config 1 */
-#define NS7520_ETH_MAC2                 (0x0404)       /* MAC Config 2 */
-#define NS7520_ETH_IPGT                 (0x0408)       /* Back2Back InterPacket Gap */
-#define NS7520_ETH_IPGR                 (0x040C)       /* non back2back InterPacket Gap */
-#define NS7520_ETH_CLRT                 (0x0410)       /* Collision Window/Retry */
-#define NS7520_ETH_MAXF                 (0x0414)       /* Maximum Frame Register */
-#define NS7520_ETH_SUPP                 (0x0418)       /* PHY Support */
-#define NS7520_ETH_TEST                 (0x041C)       /* Test Register */
-#define NS7520_ETH_MCFG                 (0x0420)       /* MII Management Configuration */
-#define NS7520_ETH_MCMD                 (0x0424)       /* MII Management Command */
-#define NS7520_ETH_MADR                 (0x0428)       /* MII Management Address */
-#define NS7520_ETH_MWTD                 (0x042C)       /* MII Management Write Data */
-#define NS7520_ETH_MRDD                 (0x0430)       /* MII Management Read Data */
-#define NS7520_ETH_MIND                 (0x0434)       /* MII Management Indicators */
-#define NS7520_ETH_SMII                 (0x0438)       /* SMII Status Register */
-#define NS7520_ETH_SA1          (0x0440)       /* Station Address 1 */
-#define NS7520_ETH_SA2          (0x0444)       /* Station Address 2 */
-#define NS7520_ETH_SA3          (0x0448)       /* Station Address 3 */
-#define NS7520_ETH_SAFR                 (0x05C0)       /* Station Address Filter */
-#define NS7520_ETH_HT1          (0x05D0)       /* Hash Table 1 */
-#define NS7520_ETH_HT2          (0x05D4)       /* Hash Table 2 */
-#define NS7520_ETH_HT3          (0x05D8)       /* Hash Table 3 */
-#define NS7520_ETH_HT4          (0x05DC)       /* Hash Table 4 */
-
-/* EGCR Ethernet General Control Register Bit Fields*/
-
-#define NS7520_ETH_EGCR_ERX     (0x80000000)   /* Enable Receive FIFO */
-#define NS7520_ETH_EGCR_ERXDMA  (0x40000000)   /* Enable Receive DMA */
-#define NS7520_ETH_EGCR_ERXLNG  (0x20000000)   /* Accept Long packets */
-#define NS7520_ETH_EGCR_ERXSHT  (0x10000000)   /* Accept Short packets */
-#define NS7520_ETH_EGCR_ERXREG  (0x08000000)   /* Enable Receive Data Interrupt */
-#define NS7520_ETH_EGCR_ERFIFOH         (0x04000000)   /* Enable Receive Half-Full Int */
-#define NS7520_ETH_EGCR_ERXBR   (0x02000000)   /* Enable Receive buffer ready */
-#define NS7520_ETH_EGCR_ERXBAD  (0x01000000)   /* Accept bad receive packets */
-#define NS7520_ETH_EGCR_ETX     (0x00800000)   /* Enable Transmit FIFO */
-#define NS7520_ETH_EGCR_ETXDMA  (0x00400000)   /* Enable Transmit DMA */
-#define NS7520_ETH_EGCR_ETXWM_R  (0x00300000)  /* Enable Transmit FIFO mark Reserv */
-#define NS7520_ETH_EGCR_ETXWM_75 (0x00200000)  /* Enable Transmit FIFO mark 75% */
-#define NS7520_ETH_EGCR_ETXWM_50 (0x00100000)  /* Enable Transmit FIFO mark 50% */
-#define NS7520_ETH_EGCR_ETXWM_25 (0x00000000)  /* Enable Transmit FIFO mark 25% */
-#define NS7520_ETH_EGCR_ETXREG  (0x00080000)   /* Enable Transmit Data Read Int */
-#define NS7520_ETH_EGCR_ETFIFOH         (0x00040000)   /* Enable Transmit Fifo Half Int */
-#define NS7520_ETH_EGCR_ETXBC   (0x00020000)   /* Enable Transmit Buffer Compl Int */
-#define NS7520_ETH_EGCR_EFULLD  (0x00010000)   /* Enable Full Duplex Operation */
-#define NS7520_ETH_EGCR_MODE_MA  (0x0000C000)  /* Mask */
-#define NS7520_ETH_EGCR_MODE_SEE (0x0000C000)  /* 10 Mbps SEEQ ENDEC PHY */
-#define NS7520_ETH_EGCR_MODE_LEV (0x00008000)  /* 10 Mbps Level1 ENDEC PHY */
-#define NS7520_ETH_EGCR_RES1     (0x00002000)  /* Reserved */
-#define NS7520_ETH_EGCR_RXCINV  (0x00001000)   /* Invert the receive clock input */
-#define NS7520_ETH_EGCR_TXCINV  (0x00000800)   /* Invert the transmit clock input */
-#define NS7520_ETH_EGCR_PNA     (0x00000400)   /* pSOS pNA buffer */
-#define NS7520_ETH_EGCR_MAC_RES         (0x00000200)   /* MAC Software reset */
-#define NS7520_ETH_EGCR_ITXA    (0x00000100)   /* Insert Transmit Source Address */
-#define NS7520_ETH_EGCR_ENDEC_MA (0x000000FC)  /* ENDEC media control bits */
-#define NS7520_ETH_EGCR_EXINT_MA (0x00000003)  /* Mask */
-#define NS7520_ETH_EGCR_EXINT_RE (0x00000003)  /* Reserved */
-#define NS7520_ETH_EGCR_EXINT_TP (0x00000002)  /* TP-PMD Mode */
-#define NS7520_ETH_EGCR_EXINT_10 (0x00000001)  /* 10-MBit Mode */
-#define NS7520_ETH_EGCR_EXINT_NO (0x00000000)  /* MII normal operation */
-
-/* EGSR Ethernet General Status Register Bit Fields*/
-
-#define NS7520_ETH_EGSR_RES1    (0xC0000000)   /* Reserved */
-#define NS7520_ETH_EGSR_RXFDB_MA (0x30000000)  /* Receive FIFO mask */
-#define NS7520_ETH_EGSR_RXFDB_3         (0x30000000)   /* Receive FIFO 3 bytes available */
-#define NS7520_ETH_EGSR_RXFDB_2         (0x20000000)   /* Receive FIFO 2 bytes available */
-#define NS7520_ETH_EGCR_RXFDB_1         (0x10000000)   /* Receive FIFO 1 Bytes available */
-#define NS7520_ETH_EGCR_RXFDB_4         (0x00000000)   /* Receive FIFO 4 Bytes available */
-#define NS7520_ETH_EGSR_RXREGR  (0x08000000)   /* Receive Register Ready */
-#define NS7520_ETH_EGSR_RXFIFOH         (0x04000000)   /* Receive FIFO Half Full */
-#define NS7520_ETH_EGSR_RXBR    (0x02000000)   /* Receive Buffer Ready */
-#define NS7520_ETH_EGSR_RXSKIP  (0x01000000)   /* Receive Buffer Skip */
-#define NS7520_ETH_EGSR_RES2    (0x00F00000)   /* Reserved */
-#define NS7520_ETH_EGSR_TXREGE  (0x00080000)   /* Transmit Register Empty */
-#define NS7520_ETH_EGSR_TXFIFOH         (0x00040000)   /* Transmit FIFO half empty */
-#define NS7520_ETH_EGSR_TXBC    (0x00020000)   /* Transmit buffer complete */
-#define NS7520_ETH_EGSR_TXFIFOE         (0x00010000)   /* Transmit FIFO empty */
-#define NS7520_ETH_EGSR_RXPINS  (0x0000FC00)   /* ENDEC Phy Status */
-#define NS7520_ETH_EGSR_RES3    (0x000003FF)   /* Reserved */
-
-/* ETSR Ethernet Transmit Status Register Bit Fields*/
-
-#define NS7520_ETH_ETSR_RES1    (0xFFFF0000)   /* Reserved */
-#define NS7520_ETH_ETSR_TXOK    (0x00008000)   /* Packet transmitted OK */
-#define NS7520_ETH_ETSR_TXBR    (0x00004000)   /* Broadcast packet transmitted */
-#define NS7520_ETH_ETSR_TXMC    (0x00002000)   /* Multicast packet transmitted */
-#define NS7520_ETH_ETSR_TXAL    (0x00001000)   /* Transmit abort - late collision */
-#define NS7520_ETH_ETSR_TXAED   (0x00000800)   /* Transmit abort - deferral */
-#define NS7520_ETH_ETSR_TXAEC   (0x00000400)   /* Transmit abort - exc collisions */
-#define NS7520_ETH_ETSR_TXAUR   (0x00000200)   /* Transmit abort - underrun */
-#define NS7520_ETH_ETSR_TXAJ    (0x00000100)   /* Transmit abort - jumbo */
-#define NS7520_ETH_ETSR_RES2    (0x00000080)   /* Reserved */
-#define NS7520_ETH_ETSR_TXDEF   (0x00000040)   /* Transmit Packet Deferred */
-#define NS7520_ETH_ETSR_TXCRC   (0x00000020)   /* Transmit CRC error */
-#define NS7520_ETH_ETSR_RES3    (0x00000010)   /* Reserved */
-#define NS7520_ETH_ETSR_TXCOLC   (0x0000000F)  /* Transmit Collision Count */
-
-/* ERSR Ethernet Receive Status Register Bit Fields*/
-
-#define NS7520_ETH_ERSR_RXSIZE  (0xFFFF0000)   /* Receive Buffer Size */
-#define NS7520_ETH_ERSR_RXCE    (0x00008000)   /* Receive Carrier Event */
-#define NS7520_ETH_ERSR_RXDV    (0x00004000)   /* Receive Data Violation Event */
-#define NS7520_ETH_ERSR_RXOK    (0x00002000)   /* Receive Packet OK */
-#define NS7520_ETH_ERSR_RXBR    (0x00001000)   /* Receive Broadcast Packet */
-#define NS7520_ETH_ERSR_RXMC    (0x00000800)   /* Receive Multicast Packet */
-#define NS7520_ETH_ERSR_RXCRC   (0x00000400)   /* Receive Packet has CRC error */
-#define NS7520_ETH_ERSR_RXDR    (0x00000200)   /* Receive Packet has dribble error */
-#define NS7520_ETH_ERSR_RXCV    (0x00000100)   /* Receive Packet code violation */
-#define NS7520_ETH_ERSR_RXLNG   (0x00000080)   /* Receive Packet too long */
-#define NS7520_ETH_ERSR_RXSHT   (0x00000040)   /* Receive Packet too short */
-#define NS7520_ETH_ERSR_ROVER   (0x00000020)   /* Recive overflow */
-#define NS7520_ETH_ERSR_RES     (0x0000001F)   /* Reserved */
-
-/* MAC1 MAC Configuration Register 1 Bit Fields*/
-
-#define NS7520_ETH_MAC1_RES1    (0xFFFF0000)   /* Reserved */
-#define NS7520_ETH_MAC1_SRST    (0x00008000)   /* Soft Reset */
-#define NS7520_ETH_MAC1_SIMMRST         (0x00004000)   /* Simulation Reset */
-#define NS7520_ETH_MAC1_RES2    (0x00003000)   /* Reserved */
-#define NS7520_ETH_MAC1_RPEMCSR         (0x00000800)   /* Reset PEMCS/RX */
-#define NS7520_ETH_MAC1_RPERFUN         (0x00000400)   /* Reset PERFUN */
-#define NS7520_ETH_MAC1_RPEMCST         (0x00000200)   /* Reset PEMCS/TX */
-#define NS7520_ETH_MAC1_RPETFUN         (0x00000100)   /* Reset PETFUN */
-#define NS7520_ETH_MAC1_RES3    (0x000000E0)   /* Reserved */
-#define NS7520_ETH_MAC1_LOOPBK  (0x00000010)   /* Internal Loopback */
-#define NS7520_ETH_MAC1_TXFLOW  (0x00000008)   /* TX flow control */
-#define NS7520_ETH_MAC1_RXFLOW  (0x00000004)   /* RX flow control */
-#define NS7520_ETH_MAC1_PALLRX  (0x00000002)   /* Pass ALL receive frames */
-#define NS7520_ETH_MAC1_RXEN    (0x00000001)   /* Receive enable */
-
-/* MAC Configuration Register 2 Bit Fields*/
-
-#define NS7520_ETH_MAC2_RES1    (0xFFFF8000)   /* Reserved */
-#define NS7520_ETH_MAC2_EDEFER  (0x00004000)   /* Excess Deferral */
-#define NS7520_ETH_MAC2_BACKP   (0x00002000)   /* Backpressure/NO back off */
-#define NS7520_ETH_MAC2_NOBO    (0x00001000)   /* No back off */
-#define NS7520_ETH_MAC2_RES2    (0x00000C00)   /* Reserved */
-#define NS7520_ETH_MAC2_LONGP   (0x00000200)   /* Long Preable enforcement */
-#define NS7520_ETH_MAC2_PUREP   (0x00000100)   /* Pure preamble enforcement */
-#define NS7520_ETH_MAC2_AUTOP   (0x00000080)   /* Auto detect PAD enable */
-#define NS7520_ETH_MAC2_VLANP   (0x00000040)   /* VLAN pad enable */
-#define NS7520_ETH_MAC2_PADEN   (0x00000020)   /* PAD/CRC enable */
-#define NS7520_ETH_MAC2_CRCEN   (0x00000010)   /* CRC enable */
-#define NS7520_ETH_MAC2_DELCRC  (0x00000008)   /* Delayed CRC */
-#define NS7520_ETH_MAC2_HUGE    (0x00000004)   /* Huge frame enable */
-#define NS7520_ETH_MAC2_FLENC   (0x00000002)   /* Frame length checking */
-#define NS7520_ETH_MAC2_FULLD   (0x00000001)   /* Full duplex */
-
-/* IPGT Back-to-Back Inter-Packet-Gap Register Bit Fields*/
-
-#define NS7520_ETH_IPGT_RES     (0xFFFFFF80)   /* Reserved */
-#define NS7520_ETH_IPGT_IPGT    (0x0000007F)   /* Back-to-Back Interpacket Gap */
-
-/* IPGR Non Back-to-Back Inter-Packet-Gap Register Bit Fields*/
-
-#define NS7520_ETH_IPGR_RES1    (0xFFFF8000)   /* Reserved */
-#define NS7520_ETH_IPGR_IPGR1   (0x00007F00)   /* Non Back-to-back Interpacket Gap */
-#define NS7520_ETH_IPGR_RES2    (0x00000080)   /* Reserved */
-#define NS7520_ETH_IPGR_IPGR2   (0x0000007F)   /* Non back-to-back Interpacket Gap */
-
-/* CLRT Collision Windows/Collision Retry Register Bit Fields*/
-
-#define NS7520_ETH_CLRT_RES1    (0xFFFFC000)   /* Reserved */
-#define NS7520_ETH_CLRT_CWIN    (0x00003F00)   /* Collision Windows */
-#define NS7520_ETH_CLRT_RES2    (0x000000F0)   /* Reserved */
-#define        NS7520_ETH_CLRT_RETX     (0x0000000F)   /* Retransmission maximum */
-
-/* MAXF Maximum Frame Register Bit Fields*/
-
-#define NS7520_ETH_MAXF_RES1    (0xFFFF0000)   /* Reserved */
-#define NS7520_ETH_MAXF_MAXF    (0x0000FFFF)   /* Maximum frame length */
-
-/* SUPP PHY Support Register Bit Fields*/
-
-#define NS7520_ETH_SUPP_RES1    (0xFFFFFF00)   /* Reserved */
-#define NS7520_ETH_SUPP_RPE100X         (0x00000080)   /* Reset PE100X module */
-#define NS7520_ETH_SUPP_FORCEQ  (0x00000040)   /* Force Quit */
-#define NS7520_ETH_SUPP_NOCIPH  (0x00000020)   /* No Cipher */
-#define NS7520_ETH_SUPP_DLINKF  (0x00000010)   /* Disable link fail */
-#define NS7520_ETH_SUPP_RPE10T  (0x00000008)   /* Reset PE10T module */
-#define NS7520_ETH_SUPP_RES2    (0x00000004)   /* Reserved */
-#define NS7520_ETH_SUPP_JABBER  (0x00000002)   /* Enable Jabber protection */
-#define NS7520_ETH_SUPP_BITMODE         (0x00000001)   /* Bit Mode */
-
-/* TEST Register Bit Fields*/
-
-#define NS7520_ETH_TEST_RES1    (0xFFFFFFF8)   /* Reserved */
-#define NS7520_ETH_TEST_TBACK   (0x00000004)   /* Test backpressure */
-#define NS7520_ETH_TEST_TPAUSE  (0x00000002)   /* Test Pause */
-#define NS7520_ETH_TEST_SPQ     (0x00000001)   /* Shortcut pause quanta */
-
-/* MCFG MII Management Configuration Register Bit Fields*/
-
-#define NS7520_ETH_MCFG_RES1    (0xFFFF0000)   /* Reserved */
-#define NS7520_ETH_MCFG_RMIIM   (0x00008000)   /* Reset MII management */
-#define NS7520_ETH_MCFG_RES2    (0x00007FE0)   /* Reserved */
-#define NS7520_ETH_MCFG_CLKS_MA         (0x0000001C)   /* Clock Select */
-#define NS7520_ETH_MCFG_CLKS_4  (0x00000004)   /* Sysclk / 4 */
-#define NS7520_ETH_MCFG_CLKS_6  (0x00000008)   /* Sysclk / 6 */
-#define NS7520_ETH_MCFG_CLKS_8  (0x0000000C)   /* Sysclk / 8 */
-#define NS7520_ETH_MCFG_CLKS_10         (0x00000010)   /* Sysclk / 10 */
-#define NS7520_ETH_MCFG_CLKS_14         (0x00000014)   /* Sysclk / 14 */
-#define NS7520_ETH_MCFG_CLKS_20         (0x00000018)   /* Sysclk / 20 */
-#define NS7520_ETH_MCFG_CLKS_28         (0x0000001C)   /* Sysclk / 28 */
-#define NS7520_ETH_MCFG_SPRE    (0x00000002)   /* Suppress preamble */
-#define NS7520_ETH_MCFG_SCANI   (0x00000001)   /* Scan increment */
-
-/* MCMD MII Management Command Register Bit Fields*/
-
-#define NS7520_ETH_MCMD_RES1    (0xFFFFFFFC)   /* Reserved */
-#define NS7520_ETH_MCMD_SCAN    (0x00000002)   /* Automatically Scan for Read Data */
-#define NS7520_ETH_MCMD_READ    (0x00000001)   /* Single scan for Read Data */
-
-/* MCMD MII Management Address Register Bit Fields*/
-
-#define NS7520_ETH_MADR_RES1    (0xFFFFE000)   /* Reserved */
-#define NS7520_ETH_MADR_DADR    (0x00001F00)   /* MII PHY device address */
-#define NS7520_ETH_MADR_RES2    (0x000000E0)   /* Reserved */
-#define NS7520_ETH_MADR_RADR    (0x0000001F)   /* MII PHY register address */
-
-/* MWTD MII Management Write Data Register Bit Fields*/
-
-#define NS7520_ETH_MWTD_RES1    (0xFFFF0000)   /* Reserved */
-#define NS7520_ETH_MWTD_MWTD    (0x0000FFFF)   /* MII Write Data */
-
-/* MRRD MII Management Read Data Register Bit Fields*/
-
-#define NS7520_ETH_MRRD_RES1    (0xFFFF0000)   /* Reserved */
-#define NS7520_ETH_MRRD_MRDD    (0x0000FFFF)   /* MII Read Data */
-
-/* MIND MII Management Indicators Register Bit Fields*/
-
-#define NS7520_ETH_MIND_RES1    (0xFFFFFFF8)   /* Reserved */
-#define NS7520_ETH_MIND_NVALID  (0x00000004)   /* Read Data not valid */
-#define NS7520_ETH_MIND_SCAN    (0x00000002)   /* Automatically scan for read data */
-#define NS7520_ETH_MIND_BUSY    (0x00000001)   /* MII interface busy */
-
-/* SMII Status Register Bit Fields*/
-
-#define NS7520_ETH_SMII_RES1    (0xFFFFFFE0)   /* Reserved */
-#define NS7520_ETH_SMII_CLASH   (0x00000010)   /* MAC-to-MAC with PHY */
-#define NS7520_ETH_SMII_JABBER  (0x00000008)   /* Jabber condition present */
-#define NS7520_ETH_SMII_LINK    (0x00000004)   /* Link OK */
-#define NS7520_ETH_SMII_DUPLEX  (0x00000002)   /* Full-duplex operation */
-#define NS7520_ETH_SMII_SPEED   (0x00000001)   /* 100 Mbps */
-
-/* SA1 Station Address 1 Register Bit Fields*/
-
-#define NS7520_ETH_SA1_RES1     (0xFFFF0000)   /* Reserved */
-#define NS7520_ETH_SA1_OCTET1   (0x0000FF00)   /* Station Address octet 1 */
-#define NS7520_ETH_SA1_OCTET2   (0x000000FF)   /* Station Address octet 2 */
-
-/* SA2 Station Address 2 Register Bit Fields*/
-
-#define NS7520_ETH_SA2_RES1     (0xFFFF0000)   /* Reserved */
-#define NS7520_ETH_SA2_OCTET3   (0x0000FF00)   /* Station Address octet 3 */
-#define NS7520_ETH_SA2_OCTET4   (0x000000FF)   /* Station Address octet 4 */
-
-/* SA3 Station Address 3 Register Bit Fields*/
-
-#define NS7520_ETH_SA3_RES1     (0xFFFF0000)   /* Reserved */
-#define NS7520_ETH_SA3_OCTET5   (0x0000FF00)   /* Station Address octet 5 */
-#define NS7520_ETH_SA3_OCTET6   (0x000000FF)   /* Station Address octet 6 */
-
-/* SAFR Station Address Filter Register Bit Fields*/
-
-#define NS7520_ETH_SAFR_RES1    (0xFFFFFFF0)   /* Reserved */
-#define NS7520_ETH_SAFR_PRO     (0x00000008)   /* Enable Promiscuous mode */
-#define NS7520_ETH_SAFR_PRM     (0x00000004)   /* Accept ALL multicast packets */
-#define NS7520_ETH_SAFR_PRA     (0x00000002)   /* Accept multicast packets table */
-#define NS7520_ETH_SAFR_BROAD   (0x00000001)   /* Accept ALL Broadcast packets */
-
-/* HT1 Hash Table 1 Register Bit Fields*/
-
-#define NS7520_ETH_HT1_RES1     (0xFFFF0000)   /* Reserved */
-#define NS7520_ETH_HT1_HT1      (0x0000FFFF)   /* CRC value 15-0 */
-
-/* HT2 Hash Table 2 Register Bit Fields*/
-
-#define NS7520_ETH_HT2_RES1     (0xFFFF0000)   /* Reserved */
-#define NS7520_ETH_HT2_HT2      (0x0000FFFF)   /* CRC value 31-16 */
-
-/* HT3 Hash Table 3 Register Bit Fields*/
-
-#define NS7520_ETH_HT3_RES1     (0xFFFF0000)   /* Reserved */
-#define NS7520_ETH_HT3_HT3      (0x0000FFFF)   /* CRC value 47-32 */
-
-/* HT4 Hash Table 4 Register Bit Fields*/
-
-#define NS7520_ETH_HT4_RES1     (0xFFFF0000)   /* Reserved */
-#define NS7520_ETH_HT4_HT4      (0x0000FFFF)   /* CRC value 63-48 */
-
-#endif                         /* CONFIG_DRIVER_NS7520_ETHERNET */
-
-#endif                         /* FS_NS7520_ETH_H */
+/***********************************************************************
+ *
+ *  Copyright 2003 by FS Forth-Systeme GmbH.
+ *  All rights reserved.
+ *
+ *  $Id: ns7520_eth.h,v 1.1.1.1 2009/03/25 22:22:13 kenagy Exp $
+ *  @Author: Markus Pietrek
+ *  @Descr: Defines the NS7520 ethernet registers.
+ *          Stick with the old ETH prefix names instead going to the
+ *          new EFE names in the manual.
+ *          NS7520_ETH_* refer to NS7520 Hardware
+ *           Reference/January 2003 [1]
+ *          PHY_LXT971_* refer to Intel LXT971 Datasheet
+ *           #249414 Rev. 02 [2]
+ *          Partly derived from netarm_eth_module.h
+ *
+ * Modified by Arthur Shipkowski <art@videon-central.com> from the
+ * Linux version to be properly formatted for U-Boot (i.e. no C++ comments)
+ *
+ ***********************************************************************/
+
+#ifndef FS_NS7520_ETH_H
+#define FS_NS7520_ETH_H
+
+#ifdef CONFIG_DRIVER_NS7520_ETHERNET
+
+#include <miiphy.h>
+#include "lxt971a.h"
+
+/* The port addresses */
+
+#define        NS7520_ETH_MODULE_BASE          (0xFF800000)
+
+#define get_eth_reg_addr(c) \
+     ((volatile unsigned int*) ( NS7520_ETH_MODULE_BASE+(unsigned int) (c)))
+#define NS7520_ETH_EGCR                 (0x0000)       /* Ethernet Gen Control */
+#define NS7520_ETH_EGSR                 (0x0004)       /* Ethernet Gen Status */
+#define NS7520_ETH_FIFO                 (0x0008)       /* FIFO Data */
+#define NS7520_ETH_FIFOL        (0x000C)       /* FIFO Data Last */
+#define NS7520_ETH_ETSR                 (0x0010)       /* Ethernet Transmit Status */
+#define NS7520_ETH_ERSR                 (0x0014)       /* Ethernet Receive Status */
+#define NS7520_ETH_MAC1                 (0x0400)       /* MAC Config 1 */
+#define NS7520_ETH_MAC2                 (0x0404)       /* MAC Config 2 */
+#define NS7520_ETH_IPGT                 (0x0408)       /* Back2Back InterPacket Gap */
+#define NS7520_ETH_IPGR                 (0x040C)       /* non back2back InterPacket Gap */
+#define NS7520_ETH_CLRT                 (0x0410)       /* Collision Window/Retry */
+#define NS7520_ETH_MAXF                 (0x0414)       /* Maximum Frame Register */
+#define NS7520_ETH_SUPP                 (0x0418)       /* PHY Support */
+#define NS7520_ETH_TEST                 (0x041C)       /* Test Register */
+#define NS7520_ETH_MCFG                 (0x0420)       /* MII Management Configuration */
+#define NS7520_ETH_MCMD                 (0x0424)       /* MII Management Command */
+#define NS7520_ETH_MADR                 (0x0428)       /* MII Management Address */
+#define NS7520_ETH_MWTD                 (0x042C)       /* MII Management Write Data */
+#define NS7520_ETH_MRDD                 (0x0430)       /* MII Management Read Data */
+#define NS7520_ETH_MIND                 (0x0434)       /* MII Management Indicators */
+#define NS7520_ETH_SMII                 (0x0438)       /* SMII Status Register */
+#define NS7520_ETH_SA1          (0x0440)       /* Station Address 1 */
+#define NS7520_ETH_SA2          (0x0444)       /* Station Address 2 */
+#define NS7520_ETH_SA3          (0x0448)       /* Station Address 3 */
+#define NS7520_ETH_SAFR                 (0x05C0)       /* Station Address Filter */
+#define NS7520_ETH_HT1          (0x05D0)       /* Hash Table 1 */
+#define NS7520_ETH_HT2          (0x05D4)       /* Hash Table 2 */
+#define NS7520_ETH_HT3          (0x05D8)       /* Hash Table 3 */
+#define NS7520_ETH_HT4          (0x05DC)       /* Hash Table 4 */
+
+/* EGCR Ethernet General Control Register Bit Fields*/
+
+#define NS7520_ETH_EGCR_ERX     (0x80000000)   /* Enable Receive FIFO */
+#define NS7520_ETH_EGCR_ERXDMA  (0x40000000)   /* Enable Receive DMA */
+#define NS7520_ETH_EGCR_ERXLNG  (0x20000000)   /* Accept Long packets */
+#define NS7520_ETH_EGCR_ERXSHT  (0x10000000)   /* Accept Short packets */
+#define NS7520_ETH_EGCR_ERXREG  (0x08000000)   /* Enable Receive Data Interrupt */
+#define NS7520_ETH_EGCR_ERFIFOH         (0x04000000)   /* Enable Receive Half-Full Int */
+#define NS7520_ETH_EGCR_ERXBR   (0x02000000)   /* Enable Receive buffer ready */
+#define NS7520_ETH_EGCR_ERXBAD  (0x01000000)   /* Accept bad receive packets */
+#define NS7520_ETH_EGCR_ETX     (0x00800000)   /* Enable Transmit FIFO */
+#define NS7520_ETH_EGCR_ETXDMA  (0x00400000)   /* Enable Transmit DMA */
+#define NS7520_ETH_EGCR_ETXWM_R  (0x00300000)  /* Enable Transmit FIFO mark Reserv */
+#define NS7520_ETH_EGCR_ETXWM_75 (0x00200000)  /* Enable Transmit FIFO mark 75% */
+#define NS7520_ETH_EGCR_ETXWM_50 (0x00100000)  /* Enable Transmit FIFO mark 50% */
+#define NS7520_ETH_EGCR_ETXWM_25 (0x00000000)  /* Enable Transmit FIFO mark 25% */
+#define NS7520_ETH_EGCR_ETXREG  (0x00080000)   /* Enable Transmit Data Read Int */
+#define NS7520_ETH_EGCR_ETFIFOH         (0x00040000)   /* Enable Transmit Fifo Half Int */
+#define NS7520_ETH_EGCR_ETXBC   (0x00020000)   /* Enable Transmit Buffer Compl Int */
+#define NS7520_ETH_EGCR_EFULLD  (0x00010000)   /* Enable Full Duplex Operation */
+#define NS7520_ETH_EGCR_MODE_MA  (0x0000C000)  /* Mask */
+#define NS7520_ETH_EGCR_MODE_SEE (0x0000C000)  /* 10 Mbps SEEQ ENDEC PHY */
+#define NS7520_ETH_EGCR_MODE_LEV (0x00008000)  /* 10 Mbps Level1 ENDEC PHY */
+#define NS7520_ETH_EGCR_RES1     (0x00002000)  /* Reserved */
+#define NS7520_ETH_EGCR_RXCINV  (0x00001000)   /* Invert the receive clock input */
+#define NS7520_ETH_EGCR_TXCINV  (0x00000800)   /* Invert the transmit clock input */
+#define NS7520_ETH_EGCR_PNA     (0x00000400)   /* pSOS pNA buffer */
+#define NS7520_ETH_EGCR_MAC_RES         (0x00000200)   /* MAC Software reset */
+#define NS7520_ETH_EGCR_ITXA    (0x00000100)   /* Insert Transmit Source Address */
+#define NS7520_ETH_EGCR_ENDEC_MA (0x000000FC)  /* ENDEC media control bits */
+#define NS7520_ETH_EGCR_EXINT_MA (0x00000003)  /* Mask */
+#define NS7520_ETH_EGCR_EXINT_RE (0x00000003)  /* Reserved */
+#define NS7520_ETH_EGCR_EXINT_TP (0x00000002)  /* TP-PMD Mode */
+#define NS7520_ETH_EGCR_EXINT_10 (0x00000001)  /* 10-MBit Mode */
+#define NS7520_ETH_EGCR_EXINT_NO (0x00000000)  /* MII normal operation */
+
+/* EGSR Ethernet General Status Register Bit Fields*/
+
+#define NS7520_ETH_EGSR_RES1    (0xC0000000)   /* Reserved */
+#define NS7520_ETH_EGSR_RXFDB_MA (0x30000000)  /* Receive FIFO mask */
+#define NS7520_ETH_EGSR_RXFDB_3         (0x30000000)   /* Receive FIFO 3 bytes available */
+#define NS7520_ETH_EGSR_RXFDB_2         (0x20000000)   /* Receive FIFO 2 bytes available */
+#define NS7520_ETH_EGCR_RXFDB_1         (0x10000000)   /* Receive FIFO 1 Bytes available */
+#define NS7520_ETH_EGCR_RXFDB_4         (0x00000000)   /* Receive FIFO 4 Bytes available */
+#define NS7520_ETH_EGSR_RXREGR  (0x08000000)   /* Receive Register Ready */
+#define NS7520_ETH_EGSR_RXFIFOH         (0x04000000)   /* Receive FIFO Half Full */
+#define NS7520_ETH_EGSR_RXBR    (0x02000000)   /* Receive Buffer Ready */
+#define NS7520_ETH_EGSR_RXSKIP  (0x01000000)   /* Receive Buffer Skip */
+#define NS7520_ETH_EGSR_RES2    (0x00F00000)   /* Reserved */
+#define NS7520_ETH_EGSR_TXREGE  (0x00080000)   /* Transmit Register Empty */
+#define NS7520_ETH_EGSR_TXFIFOH         (0x00040000)   /* Transmit FIFO half empty */
+#define NS7520_ETH_EGSR_TXBC    (0x00020000)   /* Transmit buffer complete */
+#define NS7520_ETH_EGSR_TXFIFOE         (0x00010000)   /* Transmit FIFO empty */
+#define NS7520_ETH_EGSR_RXPINS  (0x0000FC00)   /* ENDEC Phy Status */
+#define NS7520_ETH_EGSR_RES3    (0x000003FF)   /* Reserved */
+
+/* ETSR Ethernet Transmit Status Register Bit Fields*/
+
+#define NS7520_ETH_ETSR_RES1    (0xFFFF0000)   /* Reserved */
+#define NS7520_ETH_ETSR_TXOK    (0x00008000)   /* Packet transmitted OK */
+#define NS7520_ETH_ETSR_TXBR    (0x00004000)   /* Broadcast packet transmitted */
+#define NS7520_ETH_ETSR_TXMC    (0x00002000)   /* Multicast packet transmitted */
+#define NS7520_ETH_ETSR_TXAL    (0x00001000)   /* Transmit abort - late collision */
+#define NS7520_ETH_ETSR_TXAED   (0x00000800)   /* Transmit abort - deferral */
+#define NS7520_ETH_ETSR_TXAEC   (0x00000400)   /* Transmit abort - exc collisions */
+#define NS7520_ETH_ETSR_TXAUR   (0x00000200)   /* Transmit abort - underrun */
+#define NS7520_ETH_ETSR_TXAJ    (0x00000100)   /* Transmit abort - jumbo */
+#define NS7520_ETH_ETSR_RES2    (0x00000080)   /* Reserved */
+#define NS7520_ETH_ETSR_TXDEF   (0x00000040)   /* Transmit Packet Deferred */
+#define NS7520_ETH_ETSR_TXCRC   (0x00000020)   /* Transmit CRC error */
+#define NS7520_ETH_ETSR_RES3    (0x00000010)   /* Reserved */
+#define NS7520_ETH_ETSR_TXCOLC   (0x0000000F)  /* Transmit Collision Count */
+
+/* ERSR Ethernet Receive Status Register Bit Fields*/
+
+#define NS7520_ETH_ERSR_RXSIZE  (0xFFFF0000)   /* Receive Buffer Size */
+#define NS7520_ETH_ERSR_RXCE    (0x00008000)   /* Receive Carrier Event */
+#define NS7520_ETH_ERSR_RXDV    (0x00004000)   /* Receive Data Violation Event */
+#define NS7520_ETH_ERSR_RXOK    (0x00002000)   /* Receive Packet OK */
+#define NS7520_ETH_ERSR_RXBR    (0x00001000)   /* Receive Broadcast Packet */
+#define NS7520_ETH_ERSR_RXMC    (0x00000800)   /* Receive Multicast Packet */
+#define NS7520_ETH_ERSR_RXCRC   (0x00000400)   /* Receive Packet has CRC error */
+#define NS7520_ETH_ERSR_RXDR    (0x00000200)   /* Receive Packet has dribble error */
+#define NS7520_ETH_ERSR_RXCV    (0x00000100)   /* Receive Packet code violation */
+#define NS7520_ETH_ERSR_RXLNG   (0x00000080)   /* Receive Packet too long */
+#define NS7520_ETH_ERSR_RXSHT   (0x00000040)   /* Receive Packet too short */
+#define NS7520_ETH_ERSR_ROVER   (0x00000020)   /* Recive overflow */
+#define NS7520_ETH_ERSR_RES     (0x0000001F)   /* Reserved */
+
+/* MAC1 MAC Configuration Register 1 Bit Fields*/
+
+#define NS7520_ETH_MAC1_RES1    (0xFFFF0000)   /* Reserved */
+#define NS7520_ETH_MAC1_SRST    (0x00008000)   /* Soft Reset */
+#define NS7520_ETH_MAC1_SIMMRST         (0x00004000)   /* Simulation Reset */
+#define NS7520_ETH_MAC1_RES2    (0x00003000)   /* Reserved */
+#define NS7520_ETH_MAC1_RPEMCSR         (0x00000800)   /* Reset PEMCS/RX */
+#define NS7520_ETH_MAC1_RPERFUN         (0x00000400)   /* Reset PERFUN */
+#define NS7520_ETH_MAC1_RPEMCST         (0x00000200)   /* Reset PEMCS/TX */
+#define NS7520_ETH_MAC1_RPETFUN         (0x00000100)   /* Reset PETFUN */
+#define NS7520_ETH_MAC1_RES3    (0x000000E0)   /* Reserved */
+#define NS7520_ETH_MAC1_LOOPBK  (0x00000010)   /* Internal Loopback */
+#define NS7520_ETH_MAC1_TXFLOW  (0x00000008)   /* TX flow control */
+#define NS7520_ETH_MAC1_RXFLOW  (0x00000004)   /* RX flow control */
+#define NS7520_ETH_MAC1_PALLRX  (0x00000002)   /* Pass ALL receive frames */
+#define NS7520_ETH_MAC1_RXEN    (0x00000001)   /* Receive enable */
+
+/* MAC Configuration Register 2 Bit Fields*/
+
+#define NS7520_ETH_MAC2_RES1    (0xFFFF8000)   /* Reserved */
+#define NS7520_ETH_MAC2_EDEFER  (0x00004000)   /* Excess Deferral */
+#define NS7520_ETH_MAC2_BACKP   (0x00002000)   /* Backpressure/NO back off */
+#define NS7520_ETH_MAC2_NOBO    (0x00001000)   /* No back off */
+#define NS7520_ETH_MAC2_RES2    (0x00000C00)   /* Reserved */
+#define NS7520_ETH_MAC2_LONGP   (0x00000200)   /* Long Preable enforcement */
+#define NS7520_ETH_MAC2_PUREP   (0x00000100)   /* Pure preamble enforcement */
+#define NS7520_ETH_MAC2_AUTOP   (0x00000080)   /* Auto detect PAD enable */
+#define NS7520_ETH_MAC2_VLANP   (0x00000040)   /* VLAN pad enable */
+#define NS7520_ETH_MAC2_PADEN   (0x00000020)   /* PAD/CRC enable */
+#define NS7520_ETH_MAC2_CRCEN   (0x00000010)   /* CRC enable */
+#define NS7520_ETH_MAC2_DELCRC  (0x00000008)   /* Delayed CRC */
+#define NS7520_ETH_MAC2_HUGE    (0x00000004)   /* Huge frame enable */
+#define NS7520_ETH_MAC2_FLENC   (0x00000002)   /* Frame length checking */
+#define NS7520_ETH_MAC2_FULLD   (0x00000001)   /* Full duplex */
+
+/* IPGT Back-to-Back Inter-Packet-Gap Register Bit Fields*/
+
+#define NS7520_ETH_IPGT_RES     (0xFFFFFF80)   /* Reserved */
+#define NS7520_ETH_IPGT_IPGT    (0x0000007F)   /* Back-to-Back Interpacket Gap */
+
+/* IPGR Non Back-to-Back Inter-Packet-Gap Register Bit Fields*/
+
+#define NS7520_ETH_IPGR_RES1    (0xFFFF8000)   /* Reserved */
+#define NS7520_ETH_IPGR_IPGR1   (0x00007F00)   /* Non Back-to-back Interpacket Gap */
+#define NS7520_ETH_IPGR_RES2    (0x00000080)   /* Reserved */
+#define NS7520_ETH_IPGR_IPGR2   (0x0000007F)   /* Non back-to-back Interpacket Gap */
+
+/* CLRT Collision Windows/Collision Retry Register Bit Fields*/
+
+#define NS7520_ETH_CLRT_RES1    (0xFFFFC000)   /* Reserved */
+#define NS7520_ETH_CLRT_CWIN    (0x00003F00)   /* Collision Windows */
+#define NS7520_ETH_CLRT_RES2    (0x000000F0)   /* Reserved */
+#define        NS7520_ETH_CLRT_RETX     (0x0000000F)   /* Retransmission maximum */
+
+/* MAXF Maximum Frame Register Bit Fields*/
+
+#define NS7520_ETH_MAXF_RES1    (0xFFFF0000)   /* Reserved */
+#define NS7520_ETH_MAXF_MAXF    (0x0000FFFF)   /* Maximum frame length */
+
+/* SUPP PHY Support Register Bit Fields*/
+
+#define NS7520_ETH_SUPP_RES1    (0xFFFFFF00)   /* Reserved */
+#define NS7520_ETH_SUPP_RPE100X         (0x00000080)   /* Reset PE100X module */
+#define NS7520_ETH_SUPP_FORCEQ  (0x00000040)   /* Force Quit */
+#define NS7520_ETH_SUPP_NOCIPH  (0x00000020)   /* No Cipher */
+#define NS7520_ETH_SUPP_DLINKF  (0x00000010)   /* Disable link fail */
+#define NS7520_ETH_SUPP_RPE10T  (0x00000008)   /* Reset PE10T module */
+#define NS7520_ETH_SUPP_RES2    (0x00000004)   /* Reserved */
+#define NS7520_ETH_SUPP_JABBER  (0x00000002)   /* Enable Jabber protection */
+#define NS7520_ETH_SUPP_BITMODE         (0x00000001)   /* Bit Mode */
+
+/* TEST Register Bit Fields*/
+
+#define NS7520_ETH_TEST_RES1    (0xFFFFFFF8)   /* Reserved */
+#define NS7520_ETH_TEST_TBACK   (0x00000004)   /* Test backpressure */
+#define NS7520_ETH_TEST_TPAUSE  (0x00000002)   /* Test Pause */
+#define NS7520_ETH_TEST_SPQ     (0x00000001)   /* Shortcut pause quanta */
+
+/* MCFG MII Management Configuration Register Bit Fields*/
+
+#define NS7520_ETH_MCFG_RES1    (0xFFFF0000)   /* Reserved */
+#define NS7520_ETH_MCFG_RMIIM   (0x00008000)   /* Reset MII management */
+#define NS7520_ETH_MCFG_RES2    (0x00007FE0)   /* Reserved */
+#define NS7520_ETH_MCFG_CLKS_MA         (0x0000001C)   /* Clock Select */
+#define NS7520_ETH_MCFG_CLKS_4  (0x00000004)   /* Sysclk / 4 */
+#define NS7520_ETH_MCFG_CLKS_6  (0x00000008)   /* Sysclk / 6 */
+#define NS7520_ETH_MCFG_CLKS_8  (0x0000000C)   /* Sysclk / 8 */
+#define NS7520_ETH_MCFG_CLKS_10         (0x00000010)   /* Sysclk / 10 */
+#define NS7520_ETH_MCFG_CLKS_14         (0x00000014)   /* Sysclk / 14 */
+#define NS7520_ETH_MCFG_CLKS_20         (0x00000018)   /* Sysclk / 20 */
+#define NS7520_ETH_MCFG_CLKS_28         (0x0000001C)   /* Sysclk / 28 */
+#define NS7520_ETH_MCFG_SPRE    (0x00000002)   /* Suppress preamble */
+#define NS7520_ETH_MCFG_SCANI   (0x00000001)   /* Scan increment */
+
+/* MCMD MII Management Command Register Bit Fields*/
+
+#define NS7520_ETH_MCMD_RES1    (0xFFFFFFFC)   /* Reserved */
+#define NS7520_ETH_MCMD_SCAN    (0x00000002)   /* Automatically Scan for Read Data */
+#define NS7520_ETH_MCMD_READ    (0x00000001)   /* Single scan for Read Data */
+
+/* MCMD MII Management Address Register Bit Fields*/
+
+#define NS7520_ETH_MADR_RES1    (0xFFFFE000)   /* Reserved */
+#define NS7520_ETH_MADR_DADR    (0x00001F00)   /* MII PHY device address */
+#define NS7520_ETH_MADR_RES2    (0x000000E0)   /* Reserved */
+#define NS7520_ETH_MADR_RADR    (0x0000001F)   /* MII PHY register address */
+
+/* MWTD MII Management Write Data Register Bit Fields*/
+
+#define NS7520_ETH_MWTD_RES1    (0xFFFF0000)   /* Reserved */
+#define NS7520_ETH_MWTD_MWTD    (0x0000FFFF)   /* MII Write Data */
+
+/* MRRD MII Management Read Data Register Bit Fields*/
+
+#define NS7520_ETH_MRRD_RES1    (0xFFFF0000)   /* Reserved */
+#define NS7520_ETH_MRRD_MRDD    (0x0000FFFF)   /* MII Read Data */
+
+/* MIND MII Management Indicators Register Bit Fields*/
+
+#define NS7520_ETH_MIND_RES1    (0xFFFFFFF8)   /* Reserved */
+#define NS7520_ETH_MIND_NVALID  (0x00000004)   /* Read Data not valid */
+#define NS7520_ETH_MIND_SCAN    (0x00000002)   /* Automatically scan for read data */
+#define NS7520_ETH_MIND_BUSY    (0x00000001)   /* MII interface busy */
+
+/* SMII Status Register Bit Fields*/
+
+#define NS7520_ETH_SMII_RES1    (0xFFFFFFE0)   /* Reserved */
+#define NS7520_ETH_SMII_CLASH   (0x00000010)   /* MAC-to-MAC with PHY */
+#define NS7520_ETH_SMII_JABBER  (0x00000008)   /* Jabber condition present */
+#define NS7520_ETH_SMII_LINK    (0x00000004)   /* Link OK */
+#define NS7520_ETH_SMII_DUPLEX  (0x00000002)   /* Full-duplex operation */
+#define NS7520_ETH_SMII_SPEED   (0x00000001)   /* 100 Mbps */
+
+/* SA1 Station Address 1 Register Bit Fields*/
+
+#define NS7520_ETH_SA1_RES1     (0xFFFF0000)   /* Reserved */
+#define NS7520_ETH_SA1_OCTET1   (0x0000FF00)   /* Station Address octet 1 */
+#define NS7520_ETH_SA1_OCTET2   (0x000000FF)   /* Station Address octet 2 */
+
+/* SA2 Station Address 2 Register Bit Fields*/
+
+#define NS7520_ETH_SA2_RES1     (0xFFFF0000)   /* Reserved */
+#define NS7520_ETH_SA2_OCTET3   (0x0000FF00)   /* Station Address octet 3 */
+#define NS7520_ETH_SA2_OCTET4   (0x000000FF)   /* Station Address octet 4 */
+
+/* SA3 Station Address 3 Register Bit Fields*/
+
+#define NS7520_ETH_SA3_RES1     (0xFFFF0000)   /* Reserved */
+#define NS7520_ETH_SA3_OCTET5   (0x0000FF00)   /* Station Address octet 5 */
+#define NS7520_ETH_SA3_OCTET6   (0x000000FF)   /* Station Address octet 6 */
+
+/* SAFR Station Address Filter Register Bit Fields*/
+
+#define NS7520_ETH_SAFR_RES1    (0xFFFFFFF0)   /* Reserved */
+#define NS7520_ETH_SAFR_PRO     (0x00000008)   /* Enable Promiscuous mode */
+#define NS7520_ETH_SAFR_PRM     (0x00000004)   /* Accept ALL multicast packets */
+#define NS7520_ETH_SAFR_PRA     (0x00000002)   /* Accept multicast packets table */
+#define NS7520_ETH_SAFR_BROAD   (0x00000001)   /* Accept ALL Broadcast packets */
+
+/* HT1 Hash Table 1 Register Bit Fields*/
+
+#define NS7520_ETH_HT1_RES1     (0xFFFF0000)   /* Reserved */
+#define NS7520_ETH_HT1_HT1      (0x0000FFFF)   /* CRC value 15-0 */
+
+/* HT2 Hash Table 2 Register Bit Fields*/
+
+#define NS7520_ETH_HT2_RES1     (0xFFFF0000)   /* Reserved */
+#define NS7520_ETH_HT2_HT2      (0x0000FFFF)   /* CRC value 31-16 */
+
+/* HT3 Hash Table 3 Register Bit Fields*/
+
+#define NS7520_ETH_HT3_RES1     (0xFFFF0000)   /* Reserved */
+#define NS7520_ETH_HT3_HT3      (0x0000FFFF)   /* CRC value 47-32 */
+
+/* HT4 Hash Table 4 Register Bit Fields*/
+
+#define NS7520_ETH_HT4_RES1     (0xFFFF0000)   /* Reserved */
+#define NS7520_ETH_HT4_HT4      (0x0000FFFF)   /* CRC value 63-48 */
+
+#endif                         /* CONFIG_DRIVER_NS7520_ETHERNET */
+
+#endif                         /* FS_NS7520_ETH_H */
diff -Naur u-boot-2009.03_orig/include/ns9750_bbus.h u-boot-2009.03/include/ns9750_bbus.h
--- u-boot-2009.03_orig/include/ns9750_bbus.h   2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/include/ns9750_bbus.h        2009-03-31 14:58:02.062908800 -0700
@@ -1,125 +1,125 @@
-/***********************************************************************
- *
- * Copyright (C) 2004 by FS Forth-Systeme GmbH.
- * All rights reserved.
- *
- * $Id: ns9750_bbus.h,v 1.1 2004/02/16 10:37:20 mpietrek Exp $
- * @Author: Markus Pietrek
- * @Descr: Definitions for BBus usage
- * @References: [1] NS9750 Hardware Reference Manual/December 2003 Chap. 10
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- *
- *
- ***********************************************************************/
-
-#ifndef FS_NS9750_BBUS_H
-#define FS_NS9750_BBUS_H
-
-#define NS9750_BBUS_MODULE_BASE                (0x90600000)
-
-#define get_bbus_reg_addr(c) \
-       ((volatile unsigned int *)(NS9750_BBUS_MODULE_BASE+(unsigned int) (c)))
-
-/* We have support for 50 GPIO pins */
-
-#define get_gpio_cfg_reg_addr(pin) \
-       get_bbus_reg_addr( NS9750_BBUS_GPIO_CFG_BASE + (((pin) >> 3) * 4) )
-
-/* To Read/Modify/Write a pin configuration register, use it like
-   set_gpio_cfg_reg_val( 12, NS9750_GPIO_CFG_FUNC_GPIO|NS9750_GPIO_CFG_OUTPUT );
-   They should be wrapped by cli()/sti() */
-#define set_gpio_cfg_reg_val(pin,cfg) \
-       *get_gpio_cfg_reg_addr(pin)=(*get_gpio_cfg_reg_addr((pin)) & \
-                                       ~NS9750_GPIO_CFG_MASK((pin))) |\
-                               NS9750_GPIO_CFG_VAL((pin),(cfg));
-
-#define NS9750_GPIO_CFG_MASK(pin)      (NS9750_GPIO_CFG_VAL(pin, \
-                                        NS9750_GPIO_CFG_MA))
-#define NS9750_GPIO_CFG_VAL(pin,cfg)   ((cfg) << (((pin) % 8) * 4))
-
-#define NS9750_GPIO_CFG_MA             (0x0F)
-#define NS9750_GPIO_CFG_INPUT          (0x00)
-#define NS9750_GPIO_CFG_OUTPUT         (0x08)
-#define NS9750_GPIO_CFG_FUNC_GPIO      (0x03)
-#define NS9750_GPIO_CFG_FUNC_2         (0x02)
-#define NS9750_GPIO_CFG_FUNC_1         (0x01)
-#define NS9750_GPIO_CFG_FUNC_0         (0x00)
-
-/* the register addresses */
-
-#define NS9750_BBUS_MASTER_RESET       (0x00)
-#define NS9750_BBUS_GPIO_CFG_BASE      (0x10)
-#define NS9750_BBUS_GPIO_CTRL_BASE     (0x30)
-#define NS9750_BBUS_GPIO_STAT_BASE     (0x40)
-#define NS9750_BBUS_MONITOR            (0x50)
-#define NS9750_BBUS_DMA_INT_STAT       (0x60)
-#define NS9750_BBUS_DMA_INT_ENABLE     (0x64)
-#define NS9750_BBUS_USB_CFG            (0x70)
-#define NS9750_BBUS_ENDIAN_CFG         (0x80)
-#define NS9750_BBUS_ARM_WAKE_UP                (0x90)
-
-/* register bit fields */
-
-#define NS9750_BBUS_MASTER_RESET_UTIL  (0x00000100)
-#define NS9750_BBUS_MASTER_RESET_I2C   (0x00000080)
-#define NS9750_BBUS_MASTER_RESET_1284  (0x00000040)
-#define NS9750_BBUS_MASTER_RESET_SER4  (0x00000020)
-#define NS9750_BBUS_MASTER_RESET_SER3  (0x00000010)
-#define NS9750_BBUS_MASTER_RESET_SER2  (0x00000008)
-#define NS9750_BBUS_MASTER_RESET_SER1  (0x00000004)
-#define NS9750_BBUS_MASTER_RESET_USB   (0x00000002)
-#define NS9750_BBUS_MASTER_RESET_DMA   (0x00000001)
-
-/* BS9750_BBUS_DMA_INT_BINT* are valid for *DMA_INT_STAT and *DMA_INT_ENABLE */
-
-#define NS9750_BBUS_DMA_INT_BINT16     (0x00010000)
-#define NS9750_BBUS_DMA_INT_BINT15     (0x00008000)
-#define NS9750_BBUS_DMA_INT_BINT14     (0x00004000)
-#define NS9750_BBUS_DMA_INT_BINT13     (0x00002000)
-#define NS9750_BBUS_DMA_INT_BINT12     (0x00001000)
-#define NS9750_BBUS_DMA_INT_BINT11     (0x00000800)
-#define NS9750_BBUS_DMA_INT_BINT10     (0x00000400)
-#define NS9750_BBUS_DMA_INT_BINT9      (0x00000200)
-#define NS9750_BBUS_DMA_INT_BINT8      (0x00000100)
-#define NS9750_BBUS_DMA_INT_BINT7      (0x00000080)
-#define NS9750_BBUS_DMA_INT_BINT6      (0x00000040)
-#define NS9750_BBUS_DMA_INT_BINT5      (0x00000020)
-#define NS9750_BBUS_DMA_INT_BINT4      (0x00000010)
-#define NS9750_BBUS_DMA_INT_BINT3      (0x00000008)
-#define NS9750_BBUS_DMA_INT_BINT2      (0x00000004)
-#define NS9750_BBUS_DMA_INT_BINT1      (0x00000002)
-#define NS9750_BBUS_DMA_INT_BINT0      (0x00000001)
-
-#define NS9750_BBUS_USB_CFG_OUTEN      (0x00000008)
-#define NS9750_BBUS_USB_CFG_SPEED      (0x00000004)
-#define NS9750_BBUS_USB_CFG_CFG_MA     (0x00000003)
-#define NS9750_BBUS_USB_CFG_CFG_HOST_SOFT (0x00000003)
-#define NS9750_BBUS_USB_CFG_CFG_DEVICE (0x00000002)
-#define NS9750_BBUS_USB_CFG_CFG_HOST   (0x00000001)
-#define NS9750_BBUS_USB_CFG_CFG_DIS    (0x00000000)
-
-#define NS9750_BBUS_ENDIAN_CFG_AHBM    (0x00001000)
-#define NS9750_BBUS_ENDIAN_CFG_I2C     (0x00000080)
-#define NS9750_BBUS_ENDIAN_CFG_IEEE1284        (0x00000040)
-#define NS9750_BBUS_ENDIAN_CFG_SER4    (0x00000020)
-#define NS9750_BBUS_ENDIAN_CFG_SER3    (0x00000010)
-#define NS9750_BBUS_ENDIAN_CFG_SER2    (0x00000008)
-#define NS9750_BBUS_ENDIAN_CFG_SER1    (0x00000004)
-#define NS9750_BBUS_ENDIAN_CFG_USB     (0x00000002)
-#define NS9750_BBUS_ENDIAN_CFG_DMA     (0x00000001)
-
-#endif /* FS_NS9750_BBUS_H */
+/***********************************************************************
+ *
+ * Copyright (C) 2004 by FS Forth-Systeme GmbH.
+ * All rights reserved.
+ *
+ * $Id: ns9750_bbus.h,v 1.1.1.1 2009/03/25 22:22:13 kenagy Exp $
+ * @Author: Markus Pietrek
+ * @Descr: Definitions for BBus usage
+ * @References: [1] NS9750 Hardware Reference Manual/December 2003 Chap. 10
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ ***********************************************************************/
+
+#ifndef FS_NS9750_BBUS_H
+#define FS_NS9750_BBUS_H
+
+#define NS9750_BBUS_MODULE_BASE                (0x90600000)
+
+#define get_bbus_reg_addr(c) \
+       ((volatile unsigned int *)(NS9750_BBUS_MODULE_BASE+(unsigned int) (c)))
+
+/* We have support for 50 GPIO pins */
+
+#define get_gpio_cfg_reg_addr(pin) \
+       get_bbus_reg_addr( NS9750_BBUS_GPIO_CFG_BASE + (((pin) >> 3) * 4) )
+
+/* To Read/Modify/Write a pin configuration register, use it like
+   set_gpio_cfg_reg_val( 12, NS9750_GPIO_CFG_FUNC_GPIO|NS9750_GPIO_CFG_OUTPUT );
+   They should be wrapped by cli()/sti() */
+#define set_gpio_cfg_reg_val(pin,cfg) \
+       *get_gpio_cfg_reg_addr(pin)=(*get_gpio_cfg_reg_addr((pin)) & \
+                                       ~NS9750_GPIO_CFG_MASK((pin))) |\
+                               NS9750_GPIO_CFG_VAL((pin),(cfg));
+
+#define NS9750_GPIO_CFG_MASK(pin)      (NS9750_GPIO_CFG_VAL(pin, \
+                                        NS9750_GPIO_CFG_MA))
+#define NS9750_GPIO_CFG_VAL(pin,cfg)   ((cfg) << (((pin) % 8) * 4))
+
+#define NS9750_GPIO_CFG_MA             (0x0F)
+#define NS9750_GPIO_CFG_INPUT          (0x00)
+#define NS9750_GPIO_CFG_OUTPUT         (0x08)
+#define NS9750_GPIO_CFG_FUNC_GPIO      (0x03)
+#define NS9750_GPIO_CFG_FUNC_2         (0x02)
+#define NS9750_GPIO_CFG_FUNC_1         (0x01)
+#define NS9750_GPIO_CFG_FUNC_0         (0x00)
+
+/* the register addresses */
+
+#define NS9750_BBUS_MASTER_RESET       (0x00)
+#define NS9750_BBUS_GPIO_CFG_BASE      (0x10)
+#define NS9750_BBUS_GPIO_CTRL_BASE     (0x30)
+#define NS9750_BBUS_GPIO_STAT_BASE     (0x40)
+#define NS9750_BBUS_MONITOR            (0x50)
+#define NS9750_BBUS_DMA_INT_STAT       (0x60)
+#define NS9750_BBUS_DMA_INT_ENABLE     (0x64)
+#define NS9750_BBUS_USB_CFG            (0x70)
+#define NS9750_BBUS_ENDIAN_CFG         (0x80)
+#define NS9750_BBUS_ARM_WAKE_UP                (0x90)
+
+/* register bit fields */
+
+#define NS9750_BBUS_MASTER_RESET_UTIL  (0x00000100)
+#define NS9750_BBUS_MASTER_RESET_I2C   (0x00000080)
+#define NS9750_BBUS_MASTER_RESET_1284  (0x00000040)
+#define NS9750_BBUS_MASTER_RESET_SER4  (0x00000020)
+#define NS9750_BBUS_MASTER_RESET_SER3  (0x00000010)
+#define NS9750_BBUS_MASTER_RESET_SER2  (0x00000008)
+#define NS9750_BBUS_MASTER_RESET_SER1  (0x00000004)
+#define NS9750_BBUS_MASTER_RESET_USB   (0x00000002)
+#define NS9750_BBUS_MASTER_RESET_DMA   (0x00000001)
+
+/* BS9750_BBUS_DMA_INT_BINT* are valid for *DMA_INT_STAT and *DMA_INT_ENABLE */
+
+#define NS9750_BBUS_DMA_INT_BINT16     (0x00010000)
+#define NS9750_BBUS_DMA_INT_BINT15     (0x00008000)
+#define NS9750_BBUS_DMA_INT_BINT14     (0x00004000)
+#define NS9750_BBUS_DMA_INT_BINT13     (0x00002000)
+#define NS9750_BBUS_DMA_INT_BINT12     (0x00001000)
+#define NS9750_BBUS_DMA_INT_BINT11     (0x00000800)
+#define NS9750_BBUS_DMA_INT_BINT10     (0x00000400)
+#define NS9750_BBUS_DMA_INT_BINT9      (0x00000200)
+#define NS9750_BBUS_DMA_INT_BINT8      (0x00000100)
+#define NS9750_BBUS_DMA_INT_BINT7      (0x00000080)
+#define NS9750_BBUS_DMA_INT_BINT6      (0x00000040)
+#define NS9750_BBUS_DMA_INT_BINT5      (0x00000020)
+#define NS9750_BBUS_DMA_INT_BINT4      (0x00000010)
+#define NS9750_BBUS_DMA_INT_BINT3      (0x00000008)
+#define NS9750_BBUS_DMA_INT_BINT2      (0x00000004)
+#define NS9750_BBUS_DMA_INT_BINT1      (0x00000002)
+#define NS9750_BBUS_DMA_INT_BINT0      (0x00000001)
+
+#define NS9750_BBUS_USB_CFG_OUTEN      (0x00000008)
+#define NS9750_BBUS_USB_CFG_SPEED      (0x00000004)
+#define NS9750_BBUS_USB_CFG_CFG_MA     (0x00000003)
+#define NS9750_BBUS_USB_CFG_CFG_HOST_SOFT (0x00000003)
+#define NS9750_BBUS_USB_CFG_CFG_DEVICE (0x00000002)
+#define NS9750_BBUS_USB_CFG_CFG_HOST   (0x00000001)
+#define NS9750_BBUS_USB_CFG_CFG_DIS    (0x00000000)
+
+#define NS9750_BBUS_ENDIAN_CFG_AHBM    (0x00001000)
+#define NS9750_BBUS_ENDIAN_CFG_I2C     (0x00000080)
+#define NS9750_BBUS_ENDIAN_CFG_IEEE1284        (0x00000040)
+#define NS9750_BBUS_ENDIAN_CFG_SER4    (0x00000020)
+#define NS9750_BBUS_ENDIAN_CFG_SER3    (0x00000010)
+#define NS9750_BBUS_ENDIAN_CFG_SER2    (0x00000008)
+#define NS9750_BBUS_ENDIAN_CFG_SER1    (0x00000004)
+#define NS9750_BBUS_ENDIAN_CFG_USB     (0x00000002)
+#define NS9750_BBUS_ENDIAN_CFG_DMA     (0x00000001)
+
+#endif /* FS_NS9750_BBUS_H */
diff -Naur u-boot-2009.03_orig/include/ns9750_eth.h u-boot-2009.03/include/ns9750_eth.h
--- u-boot-2009.03_orig/include/ns9750_eth.h    2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/include/ns9750_eth.h 2009-03-31 14:58:02.094158400 -0700
@@ -1,298 +1,298 @@
-/***********************************************************************
- *
- * Copyright (C) 2004 by FS Forth-Systeme GmbH.
- * All rights reserved.
- *
- * $Id: ns9750_eth.h,v 1.2 2004/02/24 13:25:39 mpietrek Exp $
- * @Author: Markus Pietrek
- * @References: [1] NS9750 Hardware Reference, December 2003
- *              [2] Intel LXT971 Datasheet #249414 Rev. 02
- *              [3] NS7520 Linux Ethernet Driver
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- *
- ***********************************************************************/
-
-#ifndef FS_NS9750_ETH_H
-#define FS_NS9750_ETH_H
-
-#ifdef CONFIG_DRIVER_NS9750_ETHERNET
-
-#include <miiphy.h>
-#include "lxt971a.h"
-
-#define        NS9750_ETH_MODULE_BASE          (0xA0600000)
-
-#define get_eth_reg_addr(c) \
-     ((volatile unsigned int*) ( NS9750_ETH_MODULE_BASE+(unsigned int) (c)))
-
-#define NS9750_ETH_EGCR1               (0x0000)
-#define NS9750_ETH_EGCR2               (0x0004)
-#define NS9750_ETH_EGSR                        (0x0008)
-#define NS9750_ETH_FIFORX              (0x000C)
-#define NS9750_ETH_FIFOTX              (0x0010)
-#define NS9750_ETH_FIFOTXS             (0x0014)
-#define NS9750_ETH_ETSR                        (0x0018)
-#define NS9750_ETH_ERSR                        (0x001C)
-#define NS9750_ETH_MAC1                        (0x0400)
-#define NS9750_ETH_MAC2                        (0x0404)
-#define NS9750_ETH_IPGT                        (0x0408)
-#define NS9750_ETH_IPGR                        (0x040C)
-#define NS9750_ETH_CLRT                        (0x0410)
-#define NS9750_ETH_MAXF                        (0x0414)
-#define NS9750_ETH_SUPP                        (0x0418)
-#define NS9750_ETH_TEST                        (0x041C)
-#define NS9750_ETH_MCFG                        (0x0420)
-#define NS9750_ETH_MCMD                        (0x0424)
-#define NS9750_ETH_MADR                        (0x0428)
-#define NS9750_ETH_MWTD                        (0x042C)
-#define NS9750_ETH_MRDD                        (0x0430)
-#define NS9750_ETH_MIND                        (0x0434)
-#define NS9750_ETH_SA1                 (0x0440)
-#define NS9750_ETH_SA2                 (0x0444)
-#define NS9750_ETH_SA3                 (0x0448)
-#define NS9750_ETH_SAFR                        (0x0500)
-#define NS9750_ETH_HT1                 (0x0504)
-#define NS9750_ETH_HT2                 (0x0508)
-#define NS9750_ETH_STAT_BASE           (0x0680)
-#define NS9750_ETH_RXAPTR              (0x0A00)
-#define NS9750_ETH_RXBPTR              (0x0A04)
-#define NS9750_ETH_RXCPTR              (0x0A08)
-#define NS9750_ETH_RXDPTR              (0x0A0C)
-#define NS9750_ETH_EINTR               (0x0A10)
-#define NS9750_ETH_EINTREN             (0x0A14)
-#define NS9750_ETH_TXPTR               (0x0A18)
-#define NS9750_ETH_TXRPTR              (0x0A1C)
-#define NS9750_ETH_TXERBD              (0x0A20)
-#define NS9750_ETH_TXSPTR              (0x0A24)
-#define NS9750_ETH_RXAOFF              (0x0A28)
-#define NS9750_ETH_RXBOFF              (0x0A2C)
-#define NS9750_ETH_RXCOFF              (0x0A30)
-#define NS9750_ETH_RXDOFF              (0x0A34)
-#define NS9750_ETH_TXOFF               (0x0A38)
-#define NS9750_ETH_RXFREE              (0x0A3C)
-#define NS9750_ETH_TXBD                        (0x1000)
-
-/* register bit fields */
-
-#define NS9750_ETH_EGCR1_ERX           (0x80000000)
-#define NS9750_ETH_EGCR1_ERXDMA                (0x40000000)
-#define NS9750_ETH_EGCR1_ERXSHT                (0x10000000)
-#define NS9750_ETH_EGCR1_ERXSIZ                (0x08000000)
-#define NS9750_ETH_EGCR1_ETXSIZ                (0x04000000)
-#define NS9750_ETH_EGCR1_ETXDIAG       (0x02000000)
-#define NS9750_ETH_EGCR1_ERXBAD                (0x01000000)
-#define NS9750_ETH_EGCR1_ETX           (0x00800000)
-#define NS9750_ETH_EGCR1_ETXDMA                (0x00400000)
-#define NS9750_ETH_EGCR1_ETXWM         (0x00200000)
-#define NS9750_ETH_EGCR1_ERXADV                (0x00100000)
-#define NS9750_ETH_EGCR1_ERXINIT       (0x00080000)
-#define NS9750_ETH_EGCR1_PHY_MODE_MA   (0x0000C000)
-#define NS9750_ETH_EGCR1_PHY_MODE_MII  (0x00008000)
-#define NS9750_ETH_EGCR1_PHY_MODE_RMII (0x00004000)
-#define NS9750_ETH_EGCR1_RXCINV                (0x00001000)
-#define NS9750_ETH_EGCR1_TXCINV                (0x00000800)
-#define NS9750_ETH_EGCR1_RXALIGN       (0x00000400)
-#define NS9750_ETH_EGCR1_MAC_HRST      (0x00000200)
-#define NS9750_ETH_EGCR1_ITXA          (0x00000100)
-
-#define NS9750_ETH_EGCR2_TPTV_MA       (0xFFFF0000)
-#define NS9750_ETH_EGCR2_TPCF          (0x00000040)
-#define NS9750_ETH_EGCR2_THPDF         (0x00000020)
-#define NS9750_ETH_EGCR2_TCLER         (0x00000008)
-#define NS9750_ETH_EGCR2_AUTOZ         (0x00000004)
-#define NS9750_ETH_EGCR2_CLRCNT                (0x00000002)
-#define NS9750_ETH_EGCR2_STEN          (0x00000001)
-
-#define NS9750_ETH_EGSR_RXINIT         (0x00100000)
-#define NS9750_ETH_EGSR_TXFIFONF       (0x00080000)
-#define NS9750_ETH_EGSR_TXFIFOH                (0x00040000)
-#define NS9750_ETH_EGSR_TXFIFOE                (0x00010000)
-
-#define NS9750_ETH_FIFOTXS_ALL         (0x00000055)
-#define NS9750_ETH_FIFOTXS_3           (0x000000d5)
-#define NS9750_ETH_FIFOTXS_2           (0x00000035)
-#define NS9750_ETH_FIFOTXS_1           (0x0000000D)
-#define NS9750_ETH_FIFOTXS_0           (0x00000003)
-
-#define NS9750_ETH_ETSR_TXOK           (0x00008000)
-#define NS9750_ETH_ETSR_TXBR           (0x00004000)
-#define NS9750_ETH_ETSR_TXMC           (0x00002000)
-#define NS9750_ETH_ETSR_TXAL           (0x00001000)
-#define NS9750_ETH_ETSR_TXAED          (0x00000800)
-#define NS9750_ETH_ETSR_TXAEC          (0x00000400)
-#define NS9750_ETH_ETSR_TXAUR          (0x00000200)
-#define NS9750_ETH_ETSR_TXAJ           (0x00000100)
-#define NS9750_ETH_ETSR_TXDEF          (0x00000040)
-#define NS9750_ETH_ETSR_TXCRC          (0x00000020)
-#define NS9750_ETH_ETSR_TXCOLC         (0x0000000F)
-
-#define NS9750_ETH_ERSR_RXSIZE_MA      (0x0FFF0000)
-#define NS9750_ETH_ERSR_RXCE           (0x00008000)
-#define NS9750_ETH_ERSR_RXDV           (0x00004000)
-#define NS9750_ETH_ERSR_RXOK           (0x00002000)
-#define NS9750_ETH_ERSR_RXBR           (0x00001000)
-#define NS9750_ETH_ERSR_RXMC           (0x00000800)
-#define NS9750_ETH_ERSR_RXCRC          (0x00000400)
-#define NS9750_ETH_ERSR_RXDR           (0x00000200)
-#define NS9750_ETH_ERSR_RXCV           (0x00000100)
-#define NS9750_ETH_ERSR_RXSHT          (0x00000040)
-
-#define NS9750_ETH_MAC1_SRST           (0x00008000)
-#define NS9750_ETH_MAC1_SIMMRST                (0x00004000)
-#define NS9750_ETH_MAC1_RPEMCSR                (0x00000800)
-#define NS9750_ETH_MAC1_RPERFUN                (0x00000400)
-#define NS9750_ETH_MAC1_RPEMCST                (0x00000200)
-#define NS9750_ETH_MAC1_RPETFUN                (0x00000100)
-#define NS9750_ETH_MAC1_LOOPBK         (0x00000010)
-#define NS9750_ETH_MAC1_TXFLOW         (0x00000008)
-#define NS9750_ETH_MAC1_RXFLOW         (0x00000004)
-#define NS9750_ETH_MAC1_PALLRX         (0x00000002)
-#define NS9750_ETH_MAC1_RXEN           (0x00000001)
-
-#define NS9750_ETH_MAC2_EDEFER         (0x00004000)
-#define NS9750_ETH_MAC2_BACKP          (0x00002000)
-#define NS9750_ETH_MAC2_NOBO           (0x00001000)
-#define NS9750_ETH_MAC2_LONGP          (0x00000200)
-#define NS9750_ETH_MAC2_PUREP          (0x00000100)
-#define NS9750_ETH_MAC2_AUTOP          (0x00000080)
-#define NS9750_ETH_MAC2_VLANP          (0x00000040)
-#define NS9750_ETH_MAC2_PADEN          (0x00000020)
-#define NS9750_ETH_MAC2_CRCEN          (0x00000010)
-#define NS9750_ETH_MAC2_DELCRC         (0x00000008)
-#define NS9750_ETH_MAC2_HUGE           (0x00000004)
-#define NS9750_ETH_MAC2_FLENC          (0x00000002)
-#define NS9750_ETH_MAC2_FULLD          (0x00000001)
-
-#define NS9750_ETH_IPGT_MA             (0x0000007F)
-
-#define NS9750_ETH_IPGR_IPGR1          (0x00007F00)
-#define NS9750_ETH_IPGR_IPGR2          (0x0000007F)
-
-#define NS9750_ETH_CLRT_CWIN           (0x00003F00)
-#define        NS9750_ETH_CLRT_RETX            (0x0000000F)
-
-#define NS9750_ETH_MAXF_MAXF           (0x0000FFFF)
-
-#define NS9750_ETH_SUPP_RPERMII                (0x00008000)
-#define NS9750_ETH_SUPP_SPEED          (0x00000080)
-
-#define NS9750_ETH_TEST_TBACK          (0x00000004)
-#define NS9750_ETH_TEST_TPAUSE         (0x00000002)
-#define NS9750_ETH_TEST_SPQ            (0x00000001)
-
-#define NS9750_ETH_MCFG_RMIIM          (0x00008000)
-#define NS9750_ETH_MCFG_CLKS_MA                (0x0000001C)
-#define NS9750_ETH_MCFG_CLKS_4         (0x00000004)
-#define NS9750_ETH_MCFG_CLKS_6         (0x00000008)
-#define NS9750_ETH_MCFG_CLKS_8         (0x0000000C)
-#define NS9750_ETH_MCFG_CLKS_10                (0x00000010)
-#define NS9750_ETH_MCFG_CLKS_20                (0x00000014)
-#define NS9750_ETH_MCFG_CLKS_30                (0x00000018)
-#define NS9750_ETH_MCFG_CLKS_40                (0x0000001C)
-#define NS9750_ETH_MCFG_SPRE           (0x00000002)
-#define NS9750_ETH_MCFG_SCANI          (0x00000001)
-
-#define NS9750_ETH_MCMD_SCAN           (0x00000002)
-#define NS9750_ETH_MCMD_READ           (0x00000001)
-
-#define NS9750_ETH_MADR_DADR_MA                (0x00001F00)
-#define NS9750_ETH_MADR_RADR_MA                (0x0000001F)
-
-#define NS9750_ETH_MWTD_MA             (0x0000FFFF)
-
-#define NS9750_ETH_MRRD_MA             (0x0000FFFF)
-
-#define NS9750_ETH_MIND_MIILF          (0x00000008)
-#define NS9750_ETH_MIND_NVALID         (0x00000004)
-#define NS9750_ETH_MIND_SCAN           (0x00000002)
-#define NS9750_ETH_MIND_BUSY           (0x00000001)
-
-#define NS9750_ETH_SA1_OCTET1_MA       (0x0000FF00)
-#define NS9750_ETH_SA1_OCTET2_MA       (0x000000FF)
-
-#define NS9750_ETH_SA2_OCTET3_MA       (0x0000FF00)
-#define NS9750_ETH_SA2_OCTET4_MA       (0x000000FF)
-
-#define NS9750_ETH_SA3_OCTET5_MA       (0x0000FF00)
-#define NS9750_ETH_SA3_OCTET6_MA       (0x000000FF)
-
-#define NS9750_ETH_SAFR_PRO            (0x00000008)
-#define NS9750_ETH_SAFR_PRM            (0x00000004)
-#define NS9750_ETH_SAFR_PRA            (0x00000002)
-#define NS9750_ETH_SAFR_BROAD          (0x00000001)
-
-#define NS9750_ETH_HT1_MA              (0x0000FFFF)
-
-#define NS9750_ETH_HT2_MA              (0x0000FFFF)
-
-/* also valid for EINTREN */
-#define NS9750_ETH_EINTR_RXOVL_DATA    (0x02000000)
-#define NS9750_ETH_EINTR_RXOVL_STAT    (0x01000000)
-#define NS9750_ETH_EINTR_RXBUFC                (0x00800000)
-#define NS9750_ETH_EINTR_RXDONEA       (0x00400000)
-#define NS9750_ETH_EINTR_RXDONEB       (0x00200000)
-#define NS9750_ETH_EINTR_RXDONEC       (0x00100000)
-#define NS9750_ETH_EINTR_RXDONED       (0x00080000)
-#define NS9750_ETH_EINTR_RXNOBUF       (0x00040000)
-#define NS9750_ETH_EINTR_RXBUFFUL      (0x00020000)
-#define NS9750_ETH_EINTR_RXBR          (0x00010000)
-#define NS9750_ETH_EINTR_STOVFL                (0x00000040)
-#define NS9750_ETH_EINTR_TXPAUSE       (0x00000020)
-#define NS9750_ETH_EINTR_TXBUFC                (0x00000010)
-#define NS9750_ETH_EINTR_TXBUFNR       (0x00000008)
-#define NS9750_ETH_EINTR_TXDONE                (0x00000004)
-#define NS9750_ETH_EINTR_TXERR         (0x00000002)
-#define NS9750_ETH_EINTR_TXIDLE                (0x00000001)
-#define NS9750_ETH_EINTR_RX_MA \
-       (NS9750_ETH_EINTR_RXOVL_DATA | \
-        NS9750_ETH_EINTR_RXOVL_STAT | \
-        NS9750_ETH_EINTR_RXBUFC | \
-        NS9750_ETH_EINTR_RXDONEA | \
-        NS9750_ETH_EINTR_RXDONEB | \
-        NS9750_ETH_EINTR_RXDONEC | \
-        NS9750_ETH_EINTR_RXDONED | \
-        NS9750_ETH_EINTR_RXNOBUF | \
-        NS9750_ETH_EINTR_RXBUFFUL | \
-        NS9750_ETH_EINTR_RXBR )
-#define NS9750_ETH_EINTR_TX_MA \
-       (NS9750_ETH_EINTR_TXPAUSE | \
-        NS9750_ETH_EINTR_TXBUFC | \
-        NS9750_ETH_EINTR_TXBUFNR | \
-        NS9750_ETH_EINTR_TXDONE | \
-        NS9750_ETH_EINTR_TXERR | \
-        NS9750_ETH_EINTR_TXIDLE)
-
-/* for TXPTR, TXRPTR, TXERBD and TXSPTR */
-#define NS9750_ETH_TXPTR_MA            (0x000000FF)
-
-/* for RXAOFF, RXBOFF, RXCOFF and RXDOFF */
-#define NS9750_ETH_RXOFF_MA            (0x000007FF)
-
-#define NS9750_ETH_TXOFF_MA            (0x000003FF)
-
-#define NS9750_ETH_RXFREE_D            (0x00000008)
-#define NS9750_ETH_RXFREE_C            (0x00000004)
-#define NS9750_ETH_RXFREE_B            (0x00000002)
-#define NS9750_ETH_RXFREE_A            (0x00000001)
-
-#ifndef NS9750_ETH_PHY_ADDRESS
-# define NS9750_ETH_PHY_ADDRESS                (0x0001) /* suitable for UNC20 */
-#endif /* NETARM_ETH_PHY_ADDRESS */
-
-#endif /* CONFIG_DRIVER_NS9750_ETHERNET */
-
-#endif /* FS_NS9750_ETH_H */
+/***********************************************************************
+ *
+ * Copyright (C) 2004 by FS Forth-Systeme GmbH.
+ * All rights reserved.
+ *
+ * $Id: ns9750_eth.h,v 1.1.1.1 2009/03/25 22:22:13 kenagy Exp $
+ * @Author: Markus Pietrek
+ * @References: [1] NS9750 Hardware Reference, December 2003
+ *              [2] Intel LXT971 Datasheet #249414 Rev. 02
+ *              [3] NS7520 Linux Ethernet Driver
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ ***********************************************************************/
+
+#ifndef FS_NS9750_ETH_H
+#define FS_NS9750_ETH_H
+
+#ifdef CONFIG_DRIVER_NS9750_ETHERNET
+
+#include <miiphy.h>
+#include "lxt971a.h"
+
+#define        NS9750_ETH_MODULE_BASE          (0xA0600000)
+
+#define get_eth_reg_addr(c) \
+     ((volatile unsigned int*) ( NS9750_ETH_MODULE_BASE+(unsigned int) (c)))
+
+#define NS9750_ETH_EGCR1               (0x0000)
+#define NS9750_ETH_EGCR2               (0x0004)
+#define NS9750_ETH_EGSR                        (0x0008)
+#define NS9750_ETH_FIFORX              (0x000C)
+#define NS9750_ETH_FIFOTX              (0x0010)
+#define NS9750_ETH_FIFOTXS             (0x0014)
+#define NS9750_ETH_ETSR                        (0x0018)
+#define NS9750_ETH_ERSR                        (0x001C)
+#define NS9750_ETH_MAC1                        (0x0400)
+#define NS9750_ETH_MAC2                        (0x0404)
+#define NS9750_ETH_IPGT                        (0x0408)
+#define NS9750_ETH_IPGR                        (0x040C)
+#define NS9750_ETH_CLRT                        (0x0410)
+#define NS9750_ETH_MAXF                        (0x0414)
+#define NS9750_ETH_SUPP                        (0x0418)
+#define NS9750_ETH_TEST                        (0x041C)
+#define NS9750_ETH_MCFG                        (0x0420)
+#define NS9750_ETH_MCMD                        (0x0424)
+#define NS9750_ETH_MADR                        (0x0428)
+#define NS9750_ETH_MWTD                        (0x042C)
+#define NS9750_ETH_MRDD                        (0x0430)
+#define NS9750_ETH_MIND                        (0x0434)
+#define NS9750_ETH_SA1                 (0x0440)
+#define NS9750_ETH_SA2                 (0x0444)
+#define NS9750_ETH_SA3                 (0x0448)
+#define NS9750_ETH_SAFR                        (0x0500)
+#define NS9750_ETH_HT1                 (0x0504)
+#define NS9750_ETH_HT2                 (0x0508)
+#define NS9750_ETH_STAT_BASE           (0x0680)
+#define NS9750_ETH_RXAPTR              (0x0A00)
+#define NS9750_ETH_RXBPTR              (0x0A04)
+#define NS9750_ETH_RXCPTR              (0x0A08)
+#define NS9750_ETH_RXDPTR              (0x0A0C)
+#define NS9750_ETH_EINTR               (0x0A10)
+#define NS9750_ETH_EINTREN             (0x0A14)
+#define NS9750_ETH_TXPTR               (0x0A18)
+#define NS9750_ETH_TXRPTR              (0x0A1C)
+#define NS9750_ETH_TXERBD              (0x0A20)
+#define NS9750_ETH_TXSPTR              (0x0A24)
+#define NS9750_ETH_RXAOFF              (0x0A28)
+#define NS9750_ETH_RXBOFF              (0x0A2C)
+#define NS9750_ETH_RXCOFF              (0x0A30)
+#define NS9750_ETH_RXDOFF              (0x0A34)
+#define NS9750_ETH_TXOFF               (0x0A38)
+#define NS9750_ETH_RXFREE              (0x0A3C)
+#define NS9750_ETH_TXBD                        (0x1000)
+
+/* register bit fields */
+
+#define NS9750_ETH_EGCR1_ERX           (0x80000000)
+#define NS9750_ETH_EGCR1_ERXDMA                (0x40000000)
+#define NS9750_ETH_EGCR1_ERXSHT                (0x10000000)
+#define NS9750_ETH_EGCR1_ERXSIZ                (0x08000000)
+#define NS9750_ETH_EGCR1_ETXSIZ                (0x04000000)
+#define NS9750_ETH_EGCR1_ETXDIAG       (0x02000000)
+#define NS9750_ETH_EGCR1_ERXBAD                (0x01000000)
+#define NS9750_ETH_EGCR1_ETX           (0x00800000)
+#define NS9750_ETH_EGCR1_ETXDMA                (0x00400000)
+#define NS9750_ETH_EGCR1_ETXWM         (0x00200000)
+#define NS9750_ETH_EGCR1_ERXADV                (0x00100000)
+#define NS9750_ETH_EGCR1_ERXINIT       (0x00080000)
+#define NS9750_ETH_EGCR1_PHY_MODE_MA   (0x0000C000)
+#define NS9750_ETH_EGCR1_PHY_MODE_MII  (0x00008000)
+#define NS9750_ETH_EGCR1_PHY_MODE_RMII (0x00004000)
+#define NS9750_ETH_EGCR1_RXCINV                (0x00001000)
+#define NS9750_ETH_EGCR1_TXCINV                (0x00000800)
+#define NS9750_ETH_EGCR1_RXALIGN       (0x00000400)
+#define NS9750_ETH_EGCR1_MAC_HRST      (0x00000200)
+#define NS9750_ETH_EGCR1_ITXA          (0x00000100)
+
+#define NS9750_ETH_EGCR2_TPTV_MA       (0xFFFF0000)
+#define NS9750_ETH_EGCR2_TPCF          (0x00000040)
+#define NS9750_ETH_EGCR2_THPDF         (0x00000020)
+#define NS9750_ETH_EGCR2_TCLER         (0x00000008)
+#define NS9750_ETH_EGCR2_AUTOZ         (0x00000004)
+#define NS9750_ETH_EGCR2_CLRCNT                (0x00000002)
+#define NS9750_ETH_EGCR2_STEN          (0x00000001)
+
+#define NS9750_ETH_EGSR_RXINIT         (0x00100000)
+#define NS9750_ETH_EGSR_TXFIFONF       (0x00080000)
+#define NS9750_ETH_EGSR_TXFIFOH                (0x00040000)
+#define NS9750_ETH_EGSR_TXFIFOE                (0x00010000)
+
+#define NS9750_ETH_FIFOTXS_ALL         (0x00000055)
+#define NS9750_ETH_FIFOTXS_3           (0x000000d5)
+#define NS9750_ETH_FIFOTXS_2           (0x00000035)
+#define NS9750_ETH_FIFOTXS_1           (0x0000000D)
+#define NS9750_ETH_FIFOTXS_0           (0x00000003)
+
+#define NS9750_ETH_ETSR_TXOK           (0x00008000)
+#define NS9750_ETH_ETSR_TXBR           (0x00004000)
+#define NS9750_ETH_ETSR_TXMC           (0x00002000)
+#define NS9750_ETH_ETSR_TXAL           (0x00001000)
+#define NS9750_ETH_ETSR_TXAED          (0x00000800)
+#define NS9750_ETH_ETSR_TXAEC          (0x00000400)
+#define NS9750_ETH_ETSR_TXAUR          (0x00000200)
+#define NS9750_ETH_ETSR_TXAJ           (0x00000100)
+#define NS9750_ETH_ETSR_TXDEF          (0x00000040)
+#define NS9750_ETH_ETSR_TXCRC          (0x00000020)
+#define NS9750_ETH_ETSR_TXCOLC         (0x0000000F)
+
+#define NS9750_ETH_ERSR_RXSIZE_MA      (0x0FFF0000)
+#define NS9750_ETH_ERSR_RXCE           (0x00008000)
+#define NS9750_ETH_ERSR_RXDV           (0x00004000)
+#define NS9750_ETH_ERSR_RXOK           (0x00002000)
+#define NS9750_ETH_ERSR_RXBR           (0x00001000)
+#define NS9750_ETH_ERSR_RXMC           (0x00000800)
+#define NS9750_ETH_ERSR_RXCRC          (0x00000400)
+#define NS9750_ETH_ERSR_RXDR           (0x00000200)
+#define NS9750_ETH_ERSR_RXCV           (0x00000100)
+#define NS9750_ETH_ERSR_RXSHT          (0x00000040)
+
+#define NS9750_ETH_MAC1_SRST           (0x00008000)
+#define NS9750_ETH_MAC1_SIMMRST                (0x00004000)
+#define NS9750_ETH_MAC1_RPEMCSR                (0x00000800)
+#define NS9750_ETH_MAC1_RPERFUN                (0x00000400)
+#define NS9750_ETH_MAC1_RPEMCST                (0x00000200)
+#define NS9750_ETH_MAC1_RPETFUN                (0x00000100)
+#define NS9750_ETH_MAC1_LOOPBK         (0x00000010)
+#define NS9750_ETH_MAC1_TXFLOW         (0x00000008)
+#define NS9750_ETH_MAC1_RXFLOW         (0x00000004)
+#define NS9750_ETH_MAC1_PALLRX         (0x00000002)
+#define NS9750_ETH_MAC1_RXEN           (0x00000001)
+
+#define NS9750_ETH_MAC2_EDEFER         (0x00004000)
+#define NS9750_ETH_MAC2_BACKP          (0x00002000)
+#define NS9750_ETH_MAC2_NOBO           (0x00001000)
+#define NS9750_ETH_MAC2_LONGP          (0x00000200)
+#define NS9750_ETH_MAC2_PUREP          (0x00000100)
+#define NS9750_ETH_MAC2_AUTOP          (0x00000080)
+#define NS9750_ETH_MAC2_VLANP          (0x00000040)
+#define NS9750_ETH_MAC2_PADEN          (0x00000020)
+#define NS9750_ETH_MAC2_CRCEN          (0x00000010)
+#define NS9750_ETH_MAC2_DELCRC         (0x00000008)
+#define NS9750_ETH_MAC2_HUGE           (0x00000004)
+#define NS9750_ETH_MAC2_FLENC          (0x00000002)
+#define NS9750_ETH_MAC2_FULLD          (0x00000001)
+
+#define NS9750_ETH_IPGT_MA             (0x0000007F)
+
+#define NS9750_ETH_IPGR_IPGR1          (0x00007F00)
+#define NS9750_ETH_IPGR_IPGR2          (0x0000007F)
+
+#define NS9750_ETH_CLRT_CWIN           (0x00003F00)
+#define        NS9750_ETH_CLRT_RETX            (0x0000000F)
+
+#define NS9750_ETH_MAXF_MAXF           (0x0000FFFF)
+
+#define NS9750_ETH_SUPP_RPERMII                (0x00008000)
+#define NS9750_ETH_SUPP_SPEED          (0x00000080)
+
+#define NS9750_ETH_TEST_TBACK          (0x00000004)
+#define NS9750_ETH_TEST_TPAUSE         (0x00000002)
+#define NS9750_ETH_TEST_SPQ            (0x00000001)
+
+#define NS9750_ETH_MCFG_RMIIM          (0x00008000)
+#define NS9750_ETH_MCFG_CLKS_MA                (0x0000001C)
+#define NS9750_ETH_MCFG_CLKS_4         (0x00000004)
+#define NS9750_ETH_MCFG_CLKS_6         (0x00000008)
+#define NS9750_ETH_MCFG_CLKS_8         (0x0000000C)
+#define NS9750_ETH_MCFG_CLKS_10                (0x00000010)
+#define NS9750_ETH_MCFG_CLKS_20                (0x00000014)
+#define NS9750_ETH_MCFG_CLKS_30                (0x00000018)
+#define NS9750_ETH_MCFG_CLKS_40                (0x0000001C)
+#define NS9750_ETH_MCFG_SPRE           (0x00000002)
+#define NS9750_ETH_MCFG_SCANI          (0x00000001)
+
+#define NS9750_ETH_MCMD_SCAN           (0x00000002)
+#define NS9750_ETH_MCMD_READ           (0x00000001)
+
+#define NS9750_ETH_MADR_DADR_MA                (0x00001F00)
+#define NS9750_ETH_MADR_RADR_MA                (0x0000001F)
+
+#define NS9750_ETH_MWTD_MA             (0x0000FFFF)
+
+#define NS9750_ETH_MRRD_MA             (0x0000FFFF)
+
+#define NS9750_ETH_MIND_MIILF          (0x00000008)
+#define NS9750_ETH_MIND_NVALID         (0x00000004)
+#define NS9750_ETH_MIND_SCAN           (0x00000002)
+#define NS9750_ETH_MIND_BUSY           (0x00000001)
+
+#define NS9750_ETH_SA1_OCTET1_MA       (0x0000FF00)
+#define NS9750_ETH_SA1_OCTET2_MA       (0x000000FF)
+
+#define NS9750_ETH_SA2_OCTET3_MA       (0x0000FF00)
+#define NS9750_ETH_SA2_OCTET4_MA       (0x000000FF)
+
+#define NS9750_ETH_SA3_OCTET5_MA       (0x0000FF00)
+#define NS9750_ETH_SA3_OCTET6_MA       (0x000000FF)
+
+#define NS9750_ETH_SAFR_PRO            (0x00000008)
+#define NS9750_ETH_SAFR_PRM            (0x00000004)
+#define NS9750_ETH_SAFR_PRA            (0x00000002)
+#define NS9750_ETH_SAFR_BROAD          (0x00000001)
+
+#define NS9750_ETH_HT1_MA              (0x0000FFFF)
+
+#define NS9750_ETH_HT2_MA              (0x0000FFFF)
+
+/* also valid for EINTREN */
+#define NS9750_ETH_EINTR_RXOVL_DATA    (0x02000000)
+#define NS9750_ETH_EINTR_RXOVL_STAT    (0x01000000)
+#define NS9750_ETH_EINTR_RXBUFC                (0x00800000)
+#define NS9750_ETH_EINTR_RXDONEA       (0x00400000)
+#define NS9750_ETH_EINTR_RXDONEB       (0x00200000)
+#define NS9750_ETH_EINTR_RXDONEC       (0x00100000)
+#define NS9750_ETH_EINTR_RXDONED       (0x00080000)
+#define NS9750_ETH_EINTR_RXNOBUF       (0x00040000)
+#define NS9750_ETH_EINTR_RXBUFFUL      (0x00020000)
+#define NS9750_ETH_EINTR_RXBR          (0x00010000)
+#define NS9750_ETH_EINTR_STOVFL                (0x00000040)
+#define NS9750_ETH_EINTR_TXPAUSE       (0x00000020)
+#define NS9750_ETH_EINTR_TXBUFC                (0x00000010)
+#define NS9750_ETH_EINTR_TXBUFNR       (0x00000008)
+#define NS9750_ETH_EINTR_TXDONE                (0x00000004)
+#define NS9750_ETH_EINTR_TXERR         (0x00000002)
+#define NS9750_ETH_EINTR_TXIDLE                (0x00000001)
+#define NS9750_ETH_EINTR_RX_MA \
+       (NS9750_ETH_EINTR_RXOVL_DATA | \
+        NS9750_ETH_EINTR_RXOVL_STAT | \
+        NS9750_ETH_EINTR_RXBUFC | \
+        NS9750_ETH_EINTR_RXDONEA | \
+        NS9750_ETH_EINTR_RXDONEB | \
+        NS9750_ETH_EINTR_RXDONEC | \
+        NS9750_ETH_EINTR_RXDONED | \
+        NS9750_ETH_EINTR_RXNOBUF | \
+        NS9750_ETH_EINTR_RXBUFFUL | \
+        NS9750_ETH_EINTR_RXBR )
+#define NS9750_ETH_EINTR_TX_MA \
+       (NS9750_ETH_EINTR_TXPAUSE | \
+        NS9750_ETH_EINTR_TXBUFC | \
+        NS9750_ETH_EINTR_TXBUFNR | \
+        NS9750_ETH_EINTR_TXDONE | \
+        NS9750_ETH_EINTR_TXERR | \
+        NS9750_ETH_EINTR_TXIDLE)
+
+/* for TXPTR, TXRPTR, TXERBD and TXSPTR */
+#define NS9750_ETH_TXPTR_MA            (0x000000FF)
+
+/* for RXAOFF, RXBOFF, RXCOFF and RXDOFF */
+#define NS9750_ETH_RXOFF_MA            (0x000007FF)
+
+#define NS9750_ETH_TXOFF_MA            (0x000003FF)
+
+#define NS9750_ETH_RXFREE_D            (0x00000008)
+#define NS9750_ETH_RXFREE_C            (0x00000004)
+#define NS9750_ETH_RXFREE_B            (0x00000002)
+#define NS9750_ETH_RXFREE_A            (0x00000001)
+
+#ifndef NS9750_ETH_PHY_ADDRESS
+# define NS9750_ETH_PHY_ADDRESS                (0x0001) /* suitable for UNC20 */
+#endif /* NETARM_ETH_PHY_ADDRESS */
+
+#endif /* CONFIG_DRIVER_NS9750_ETHERNET */
+
+#endif /* FS_NS9750_ETH_H */
diff -Naur u-boot-2009.03_orig/include/ns9750_mem.h u-boot-2009.03/include/ns9750_mem.h
--- u-boot-2009.03_orig/include/ns9750_mem.h    2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/include/ns9750_mem.h 2009-03-31 14:58:02.125408000 -0700
@@ -1,172 +1,172 @@
-/***********************************************************************
- *
- * Copyright (C) 2004 by FS Forth-Systeme GmbH.
- * All rights reserved.
- *
- * $Id: ns9750_mem.h,v 1.1 2004/02/16 10:37:20 mpietrek Exp $
- * @Author: Markus Pietrek
- * @Descr: Definitions for Memory Control Module
- * @References: [1] NS9750 Hardware Reference Manual/December 2003 Chap. 5
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- *
- ***********************************************************************/
-
-#ifndef FS_NS9750_MEM_H
-#define FS_NS9750_SYS_H
-
-#define NS9750_MEM_MODULE_BASE         (0xA0700000)
-
-#define get_mem_reg_addr(c) \
-       ((volatile unsigned int *)(NS9750_MEM_MODULE_BASE+(unsigned int) (c)))
-
-/* the register addresses */
-
-#define NS9750_MEM_CTRL                        (0x0000)
-#define NS9750_MEM_STATUS              (0x0004)
-#define NS9750_MEM_CFG                 (0x0008)
-#define NS9750_MEM_DYN_CTRL            (0x0020)
-#define NS9750_MEM_DYN_REFRESH         (0x0024)
-#define NS9750_MEM_DYN_READ_CFG                (0x0028)
-#define NS9750_MEM_DYN_TRP             (0x0030)
-#define NS9750_MEM_DYN_TRAS            (0x0034)
-#define NS9750_MEM_DYN_TSREX           (0x0038)
-#define NS9750_MEM_DYN_TAPR            (0x003C)
-#define NS9750_MEM_DYN_TDAL            (0x0040)
-#define NS9750_MEM_DYN_TWR             (0x0044)
-#define NS9750_MEM_DYN_TRC             (0x0048)
-#define NS9750_MEM_DYN_TRFC            (0x004C)
-#define NS9750_MEM_DYN_TXSR            (0x0050)
-#define NS9750_MEM_DYN_TRRD            (0x0054)
-#define NS9750_MEM_DYN_TMRD            (0x0058)
-#define NS9750_MEM_STAT_EXT_WAIT       (0x0080)
-#define NS9750_MEM_DYN_CFG_BASE                (0x0100)
-#define NS9750_MEM_DYN_RAS_CAS_BASE    (0x0104)
-#define NS9750_MEM_STAT_CFG_BASE       (0x0200)
-#define NS9750_MEM_STAT_WAIT_WEN_BASE  (0x0204)
-#define NS9750_MEM_STAT_WAIT_OEN_BASE  (0x0208)
-#define NS9750_MEM_STAT_WAIT_RD_BASE   (0x020C)
-#define NS9750_MEM_STAT_WAIT_PAGE_BASE (0x0210)
-#define NS9750_MEM_STAT_WAIR_WR_BASE   (0x0214)
-#define NS9750_MEM_STAT_WAIT_TURN_BASE (0x0218)
-
-/* the vectored register addresses */
-
-#define NS9750_MEM_DYN_CFG(c)          (NS9750_MEM_DYN_CFG_BASE + (c)*0x20)
-#define NS9750_MEM_DYN_RAS_CAS(c)      (NS9750_MEM_DYN_RAS_CAS_BASE + (c)*0x20)
-#define NS9750_MEM_STAT_CFG(c)         (NS9750_MEM_STAT_CFG_BASE + (c)*0x20)
-#define NS9750_MEM_STAT_WAIT_WEN(c)    (NS9750_MEM_STAT_WAIT_WEN_BASE+(c)*0x20)
-#define NS9750_MEM_STAT_WAIT_OEN(c)    (NS9750_MEM_STAT_WAIT_OEN_BASE+(c)*0x20)
-#define NS9750_MEM_STAT_RD(c)          (NS9750_MEM_STAT_WAIT_RD_BASE+(c)*0x20)
-#define NS9750_MEM_STAT_PAGE(c)                (NS9750_MEM_STAT_WAIT_PAGE_BASE+(c)*0x20)
-#define NS9750_MEM_STAT_WR(c)          (NS9750_MEM_STAT_WAIT_WR_BASE+(c)*0x20)
-#define NS9750_MEM_STAT_TURN(c)                (NS9750_MEM_STAT_WAIT_TURN_BASE+(c)*0x20)
-
-/* register bit fields */
-
-#define NS9750_MEM_CTRL_L              (0x00000004)
-#define NS9750_MEM_CTRL_M              (0x00000002)
-#define NS9750_MEM_CTRL_E              (0x00000001)
-
-#define NS9750_MEM_STAT_SA             (0x00000004)
-#define NS9750_MEM_STAT_S              (0x00000002)
-#define NS9750_MEM_STAT_B              (0x00000001)
-
-#define NS9750_MEM_CFG_CLK             (0x00000010)
-#define NS9750_MEM_CFG_N               (0x00000001)
-
-#define NS9750_MEM_DYN_CTRL_NRP                (0x00004000)
-#define NS9750_MEM_DYN_CTRL_DP         (0x00002000)
-#define NS9750_MEM_DYN_CTRL_I_MA       (0x00000180)
-#define NS9750_MEM_DYN_CTRL_I_NORMAL   (0x00000000)
-#define NS9750_MEM_DYN_CTRL_I_MODE     (0x00000080)
-#define NS9750_MEM_DYN_CTRL_I_PALL     (0x00000100)
-#define NS9750_MEM_DYN_CTRL_I_NOP      (0x00000180)
-#define NS9750_MEM_DYN_CTRL_SR         (0x00000002)
-#define NS9750_MEM_DYN_CTRL_CE         (0x00000001)
-
-
-#define NS9750_MEM_DYN_REFRESH_MA      (0x000007FF)
-
-#define NS9750_MEM_DYN_READ_CFG_MA     (0x00000003)
-#define NS9750_MEM_DYN_READ_CFG_DELAY0 (0x00000001)
-#define NS9750_MEM_DYN_READ_CFG_DELAY1  (0x00000002)
-#define NS9750_MEM_DYN_READ_CFG_DELAY2 (0x00000003)
-
-#define NS9750_MEM_DYN_TRP_MA          (0x0000000F)
-
-#define NS9750_MEM_DYN_TRAS_MA         (0x0000000F)
-
-#define NS9750_MEM_DYN_TSREX_MA                (0x0000000F)
-
-#define NS9750_MEM_DYN_TAPR_MA         (0x0000000F)
-
-#define NS9750_MEM_DYN_TDAL_MA         (0x0000000F)
-
-#define NS9750_MEM_DYN_TWR_MA          (0x0000000F)
-
-#define NS9750_MEM_DYN_TRC_MA          (0x0000001F)
-
-#define NS9750_MEM_DYN_TRFC_MA         (0x0000001F)
-
-#define NS9750_MEM_DYN_TXSR_MA         (0x0000001F)
-
-#define NS9750_MEM_DYN_TRRD_MA         (0x0000000F)
-
-#define NS9750_MEM_DYN_TMRD_MA         (0x0000000F)
-
-#define NS9750_MEM_STAT_EXTW_WAIT_MA   (0x0000003F)
-
-#define NS9750_MEM_DYN_CFG_P           (0x00100000)
-#define NS9750_MEM_DYN_CFG_BDMC                (0x00080000)
-#define NS9750_MEM_DYN_CFG_AM          (0x00004000)
-#define NS9750_MEM_DYN_CFG_AM_MA       (0x00001F80)
-#define NS9750_MEM_DYN_CFG_MD          (0x00000018)
-
-#define NS9750_MEM_DYN_RAS_CAS_CAS_MA  (0x00000300)
-#define NS9750_MEM_DYN_RAS_CAS_CAS_1   (0x00000100)
-#define NS9750_MEM_DYN_RAS_CAS_CAS_2   (0x00000200)
-#define NS9750_MEM_DYN_RAS_CAS_CAS_3   (0x00000300)
-#define NS9750_MEM_DYN_RAS_CAS_RAS_MA  (0x00000003)
-#define NS9750_MEM_DYN_RAS_CAS_RAS_1   (0x00000001)
-#define NS9750_MEM_DYN_RAS_CAS_RAS_2   (0x00000002)
-#define NS9750_MEM_DYN_RAS_CAS_RAS_3   (0x00000003)
-
-#define NS9750_MEM_STAT_CFG_PSMC       (0x00100000)
-#define NS9750_MEM_STAT_CFG_BSMC       (0x00080000)
-#define NS9750_MEM_STAT_CFG_EW         (0x00000100)
-#define NS9750_MEM_STAT_CFG_PB         (0x00000080)
-#define NS9750_MEM_STAT_CFG_PC         (0x00000040)
-#define NS9750_MEM_STAT_CFG_PM         (0x00000008)
-#define NS9750_MEM_STAT_CFG_MW_MA      (0x00000003)
-#define NS9750_MEM_STAT_CFG_MW_8       (0x00000000)
-#define NS9750_MEM_STAT_CFG_MW_16      (0x00000001)
-#define NS9750_MEM_STAT_CFG_MW_32      (0x00000002)
-
-#define NS9750_MEM_STAT_WAIT_WEN_MA    (0x0000000F)
-
-#define NS9750_MEM_STAT_WAIT_OEN_MA    (0x0000000F)
-
-#define NS9750_MEM_STAT_WAIT_RD_MA     (0x0000001F)
-
-#define NS9750_MEM_STAT_WAIT_PAGE_MA   (0x0000001F)
-
-#define NS9750_MEM_STAT_WAIT_WR_MA     (0x0000001F)
-
-#define NS9750_MEM_STAT_WAIT_TURN_MA   (0x0000000F)
-
-
-#endif /* FS_NS9750_MEM_H */
+/***********************************************************************
+ *
+ * Copyright (C) 2004 by FS Forth-Systeme GmbH.
+ * All rights reserved.
+ *
+ * $Id: ns9750_mem.h,v 1.1.1.1 2009/03/25 22:22:13 kenagy Exp $
+ * @Author: Markus Pietrek
+ * @Descr: Definitions for Memory Control Module
+ * @References: [1] NS9750 Hardware Reference Manual/December 2003 Chap. 5
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ ***********************************************************************/
+
+#ifndef FS_NS9750_MEM_H
+#define FS_NS9750_SYS_H
+
+#define NS9750_MEM_MODULE_BASE         (0xA0700000)
+
+#define get_mem_reg_addr(c) \
+       ((volatile unsigned int *)(NS9750_MEM_MODULE_BASE+(unsigned int) (c)))
+
+/* the register addresses */
+
+#define NS9750_MEM_CTRL                        (0x0000)
+#define NS9750_MEM_STATUS              (0x0004)
+#define NS9750_MEM_CFG                 (0x0008)
+#define NS9750_MEM_DYN_CTRL            (0x0020)
+#define NS9750_MEM_DYN_REFRESH         (0x0024)
+#define NS9750_MEM_DYN_READ_CFG                (0x0028)
+#define NS9750_MEM_DYN_TRP             (0x0030)
+#define NS9750_MEM_DYN_TRAS            (0x0034)
+#define NS9750_MEM_DYN_TSREX           (0x0038)
+#define NS9750_MEM_DYN_TAPR            (0x003C)
+#define NS9750_MEM_DYN_TDAL            (0x0040)
+#define NS9750_MEM_DYN_TWR             (0x0044)
+#define NS9750_MEM_DYN_TRC             (0x0048)
+#define NS9750_MEM_DYN_TRFC            (0x004C)
+#define NS9750_MEM_DYN_TXSR            (0x0050)
+#define NS9750_MEM_DYN_TRRD            (0x0054)
+#define NS9750_MEM_DYN_TMRD            (0x0058)
+#define NS9750_MEM_STAT_EXT_WAIT       (0x0080)
+#define NS9750_MEM_DYN_CFG_BASE                (0x0100)
+#define NS9750_MEM_DYN_RAS_CAS_BASE    (0x0104)
+#define NS9750_MEM_STAT_CFG_BASE       (0x0200)
+#define NS9750_MEM_STAT_WAIT_WEN_BASE  (0x0204)
+#define NS9750_MEM_STAT_WAIT_OEN_BASE  (0x0208)
+#define NS9750_MEM_STAT_WAIT_RD_BASE   (0x020C)
+#define NS9750_MEM_STAT_WAIT_PAGE_BASE (0x0210)
+#define NS9750_MEM_STAT_WAIR_WR_BASE   (0x0214)
+#define NS9750_MEM_STAT_WAIT_TURN_BASE (0x0218)
+
+/* the vectored register addresses */
+
+#define NS9750_MEM_DYN_CFG(c)          (NS9750_MEM_DYN_CFG_BASE + (c)*0x20)
+#define NS9750_MEM_DYN_RAS_CAS(c)      (NS9750_MEM_DYN_RAS_CAS_BASE + (c)*0x20)
+#define NS9750_MEM_STAT_CFG(c)         (NS9750_MEM_STAT_CFG_BASE + (c)*0x20)
+#define NS9750_MEM_STAT_WAIT_WEN(c)    (NS9750_MEM_STAT_WAIT_WEN_BASE+(c)*0x20)
+#define NS9750_MEM_STAT_WAIT_OEN(c)    (NS9750_MEM_STAT_WAIT_OEN_BASE+(c)*0x20)
+#define NS9750_MEM_STAT_RD(c)          (NS9750_MEM_STAT_WAIT_RD_BASE+(c)*0x20)
+#define NS9750_MEM_STAT_PAGE(c)                (NS9750_MEM_STAT_WAIT_PAGE_BASE+(c)*0x20)
+#define NS9750_MEM_STAT_WR(c)          (NS9750_MEM_STAT_WAIT_WR_BASE+(c)*0x20)
+#define NS9750_MEM_STAT_TURN(c)                (NS9750_MEM_STAT_WAIT_TURN_BASE+(c)*0x20)
+
+/* register bit fields */
+
+#define NS9750_MEM_CTRL_L              (0x00000004)
+#define NS9750_MEM_CTRL_M              (0x00000002)
+#define NS9750_MEM_CTRL_E              (0x00000001)
+
+#define NS9750_MEM_STAT_SA             (0x00000004)
+#define NS9750_MEM_STAT_S              (0x00000002)
+#define NS9750_MEM_STAT_B              (0x00000001)
+
+#define NS9750_MEM_CFG_CLK             (0x00000010)
+#define NS9750_MEM_CFG_N               (0x00000001)
+
+#define NS9750_MEM_DYN_CTRL_NRP                (0x00004000)
+#define NS9750_MEM_DYN_CTRL_DP         (0x00002000)
+#define NS9750_MEM_DYN_CTRL_I_MA       (0x00000180)
+#define NS9750_MEM_DYN_CTRL_I_NORMAL   (0x00000000)
+#define NS9750_MEM_DYN_CTRL_I_MODE     (0x00000080)
+#define NS9750_MEM_DYN_CTRL_I_PALL     (0x00000100)
+#define NS9750_MEM_DYN_CTRL_I_NOP      (0x00000180)
+#define NS9750_MEM_DYN_CTRL_SR         (0x00000002)
+#define NS9750_MEM_DYN_CTRL_CE         (0x00000001)
+
+
+#define NS9750_MEM_DYN_REFRESH_MA      (0x000007FF)
+
+#define NS9750_MEM_DYN_READ_CFG_MA     (0x00000003)
+#define NS9750_MEM_DYN_READ_CFG_DELAY0 (0x00000001)
+#define NS9750_MEM_DYN_READ_CFG_DELAY1  (0x00000002)
+#define NS9750_MEM_DYN_READ_CFG_DELAY2 (0x00000003)
+
+#define NS9750_MEM_DYN_TRP_MA          (0x0000000F)
+
+#define NS9750_MEM_DYN_TRAS_MA         (0x0000000F)
+
+#define NS9750_MEM_DYN_TSREX_MA                (0x0000000F)
+
+#define NS9750_MEM_DYN_TAPR_MA         (0x0000000F)
+
+#define NS9750_MEM_DYN_TDAL_MA         (0x0000000F)
+
+#define NS9750_MEM_DYN_TWR_MA          (0x0000000F)
+
+#define NS9750_MEM_DYN_TRC_MA          (0x0000001F)
+
+#define NS9750_MEM_DYN_TRFC_MA         (0x0000001F)
+
+#define NS9750_MEM_DYN_TXSR_MA         (0x0000001F)
+
+#define NS9750_MEM_DYN_TRRD_MA         (0x0000000F)
+
+#define NS9750_MEM_DYN_TMRD_MA         (0x0000000F)
+
+#define NS9750_MEM_STAT_EXTW_WAIT_MA   (0x0000003F)
+
+#define NS9750_MEM_DYN_CFG_P           (0x00100000)
+#define NS9750_MEM_DYN_CFG_BDMC                (0x00080000)
+#define NS9750_MEM_DYN_CFG_AM          (0x00004000)
+#define NS9750_MEM_DYN_CFG_AM_MA       (0x00001F80)
+#define NS9750_MEM_DYN_CFG_MD          (0x00000018)
+
+#define NS9750_MEM_DYN_RAS_CAS_CAS_MA  (0x00000300)
+#define NS9750_MEM_DYN_RAS_CAS_CAS_1   (0x00000100)
+#define NS9750_MEM_DYN_RAS_CAS_CAS_2   (0x00000200)
+#define NS9750_MEM_DYN_RAS_CAS_CAS_3   (0x00000300)
+#define NS9750_MEM_DYN_RAS_CAS_RAS_MA  (0x00000003)
+#define NS9750_MEM_DYN_RAS_CAS_RAS_1   (0x00000001)
+#define NS9750_MEM_DYN_RAS_CAS_RAS_2   (0x00000002)
+#define NS9750_MEM_DYN_RAS_CAS_RAS_3   (0x00000003)
+
+#define NS9750_MEM_STAT_CFG_PSMC       (0x00100000)
+#define NS9750_MEM_STAT_CFG_BSMC       (0x00080000)
+#define NS9750_MEM_STAT_CFG_EW         (0x00000100)
+#define NS9750_MEM_STAT_CFG_PB         (0x00000080)
+#define NS9750_MEM_STAT_CFG_PC         (0x00000040)
+#define NS9750_MEM_STAT_CFG_PM         (0x00000008)
+#define NS9750_MEM_STAT_CFG_MW_MA      (0x00000003)
+#define NS9750_MEM_STAT_CFG_MW_8       (0x00000000)
+#define NS9750_MEM_STAT_CFG_MW_16      (0x00000001)
+#define NS9750_MEM_STAT_CFG_MW_32      (0x00000002)
+
+#define NS9750_MEM_STAT_WAIT_WEN_MA    (0x0000000F)
+
+#define NS9750_MEM_STAT_WAIT_OEN_MA    (0x0000000F)
+
+#define NS9750_MEM_STAT_WAIT_RD_MA     (0x0000001F)
+
+#define NS9750_MEM_STAT_WAIT_PAGE_MA   (0x0000001F)
+
+#define NS9750_MEM_STAT_WAIT_WR_MA     (0x0000001F)
+
+#define NS9750_MEM_STAT_WAIT_TURN_MA   (0x0000000F)
+
+
+#endif /* FS_NS9750_MEM_H */
diff -Naur u-boot-2009.03_orig/include/ns9750_ser.h u-boot-2009.03/include/ns9750_ser.h
--- u-boot-2009.03_orig/include/ns9750_ser.h    2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/include/ns9750_ser.h 2009-03-31 14:58:02.156657600 -0700
@@ -1,202 +1,202 @@
-/***********************************************************************
- *
- * Copyright (C) 2004 by FS Forth-Systeme GmbH.
- * All rights reserved.
- *
- * $Id: ns9750_ser.h,v 1.1 2004/02/16 10:37:20 mpietrek Exp $
- * @Author: Markus Pietrek
- * @References: [1] NS9750 Hardware Reference, December 2003
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- *
- ***********************************************************************/
-
-#ifndef FS_NS9750_SER_H
-#define FS_NS9750_SER_H
-
-#define NS9750_SER_MODULE_BASE         (0x90200000)
-
-#define get_ser_reg_addr(c) \
-       ((volatile unsigned int *)(NS9750_SER_MODULE_BASE+(unsigned int) (c)))
-
-#define get_ser_reg_addr_channel(reg,chan) \
-       get_ser_reg_addr((reg)+(((chan)<2)?0:0x00100000)+(((chan)&1)?0x40:0))
-
-/* the register addresses */
-
-#define NS9750_SER_CTRL_A              (0x00)
-#define NS9750_SER_CTRL_B              (0x04)
-#define NS9750_SER_STAT_A              (0x08)
-#define NS9750_SER_BITRATE             (0x0C)
-#define NS9750_SER_FIFO                        (0x10)
-#define NS9750_SER_RX_BUF_TIMER                (0x14)
-#define NS9750_SER_RX_CHAR_TIMER       (0x18)
-#define NS9750_SER_RX_MATCH            (0x1C)
-#define NS9750_SER_RX_MATCH_MASK       (0x20)
-#define NS9750_SER_FLOW_CTRL           (0x34)
-#define NS9750_SER_FLOW_CTRL_FORCE     (0x38)
-
-/* register bit fields */
-
-/* control A register */
-
-#define NS9750_SER_CTRL_A_CE           (0x80000000)
-#define NS9750_SER_CTRL_A_BRK          (0x40000000)
-#define NS9750_SER_CTRL_A_STICKP       (0x20000000)
-#define NS9750_SER_CTRL_A_EPS          (0x10000000)
-#define NS9750_SER_CTRL_A_PE           (0x08000000)
-#define NS9750_SER_CTRL_A_STOP         (0x04000000)
-#define NS9750_SER_CTRL_A_WLS_MA       (0x03000000)
-#define NS9750_SER_CTRL_A_WLS_5                (0x00000000)
-#define NS9750_SER_CTRL_A_WLS_6                (0x01000000)
-#define NS9750_SER_CTRL_A_WLS_7                (0x02000000)
-#define NS9750_SER_CTRL_A_WLS_8                (0x03000000)
-#define NS9750_SER_CTRL_A_CTSTX                (0x00800000)
-#define NS9750_SER_CTRL_A_RTSRX                (0x00400000)
-#define NS9750_SER_CTRL_A_RL           (0x00200000)
-#define NS9750_SER_CTRL_A_LL           (0x00100000)
-#define NS9750_SER_CTRL_A_RES          (0x000CF000)
-#define NS9750_SER_CTRL_A_DTR          (0x00020000)
-#define NS9750_SER_CTRL_A_RTS          (0x00010000)
-#define NS9750_SER_CTRL_A_RIE_MA       (0x00000E00)
-#define NS9750_SER_CTRL_A_ERXDMA       (0x00000100)
-#define NS9750_SER_CTRL_A_RIC_MA       (0x000000E0)
-#define NS9750_SER_CTRL_A_TIC_MA       (0x0000001E)
-#define NS9750_SER_CTRL_A_ETXDMA       (0x00000001)
-
-/* control B register */
-
-#define NS9750_SER_CTRL_B_RDM1         (0x80000000)
-#define NS9750_SER_CTRL_B_RDM2         (0x40000000)
-#define NS9750_SER_CTRL_B_RDM3         (0x20000000)
-#define NS9750_SER_CTRL_B_RDM4         (0x10000000)
-#define NS9750_SER_CTRL_B_RBGT         (0x08000000)
-#define NS9750_SER_CTRL_B_RCGT         (0x04000000)
-#define NS9750_SER_CTRL_B_MODE_MA      (0x00300000)
-#define NS9750_SER_CTRL_B_MODE_UART    (0x00000000)
-#define NS9750_SER_CTRL_B_MODE_HDLC    (0x00100000)
-#define NS9750_SER_CTRL_B_MODE_SPI_M   (0x00200000)
-#define NS9750_SER_CTRL_B_MODE_SPI_S   (0x00300000)
-#define NS9750_SER_CTRL_B_BITORDR      (0x00080000)
-#define NS9750_SER_CTRL_B_RES          (0x0007703F)
-#define NS9750_SER_CTRL_B_RTSTX                (0x00008000)
-#define NS9750_SER_CTRL_B_ENDEC_MA     (0x00000FC0)
-
-/* status A register */
-
-#define NS9750_SER_STAT_A_MATCH1       (0x80000000)
-#define NS9750_SER_STAT_A_MATCH2       (0x40000000)
-#define NS9750_SER_STAT_A_MATCH3       (0x20000000)
-#define NS9750_SER_STAT_A_MATCH4       (0x10000000)
-#define NS9750_SER_STAT_A_BGAP         (0x08000000)
-#define NS9750_SER_STAT_A_CGAP         (0x04000000)
-#define NS9750_SER_STAT_A_RXFDB_MA     (0x00300000)
-#define NS9750_SER_STAT_A_RXFDB_FULL   (0x00000000)
-#define NS9750_SER_STAT_A_RXFDB_1      (0x00100000)
-#define NS9750_SER_STAT_A_RXFDB_2      (0x00200000)
-#define NS9750_SER_STAT_A_RXFDB_3      (0x00300000)
-#define NS9750_SER_STAT_A_DCD          (0x00080000)
-#define NS9750_SER_STAT_A_RI           (0x00040000)
-#define NS9750_SER_STAT_A_DSR          (0x00020000)
-#define NS9750_SER_STAT_A_CTS          (0x00010000)
-#define NS9750_SER_STAT_A_RBRK         (0x00008000)
-#define NS9750_SER_STAT_A_RFE          (0x00004000)
-#define NS9750_SER_STAT_A_RPE          (0x00002000)
-#define NS9750_SER_STAT_A_ROVER                (0x00001000)
-#define NS9750_SER_STAT_A_RRDY         (0x00000800)
-#define NS9750_SER_STAT_A_RHALF                (0x00000400)
-#define NS9750_SER_STAT_A_RBC          (0x00000200)
-#define NS9750_SER_STAT_A_RFULL                (0x00000100)
-#define NS9750_SER_STAT_A_DCDI         (0x00000080)
-#define NS9750_SER_STAT_A_RII          (0x00000040)
-#define NS9750_SER_STAT_A_DSRI         (0x00000020)
-#define NS9750_SER_STAT_A_CTSI         (0x00000010)
-#define NS9750_SER_STAT_A_TRDY         (0x00000008)
-#define NS9750_SER_STAT_A_THALF                (0x00000004)
-#define NS9750_SER_STAT_A_TBC          (0x00000002)
-#define NS9750_SER_STAT_A_TEMPTY       (0x00000001)
-
-#define NS9750_SER_STAT_A_RX_COND_ERR ( NS9750_SER_STAT_A_RFE | \
-                                       NS9750_SER_STAT_A_ROVER | \
-                                       NS9750_SER_STAT_A_RPE )
-#define NS9750_SER_STAT_A_RX_COND_ALL ( NS9750_SER_STAT_A_RX_COND_ERR | \
-                                       NS9750_SER_STAT_A_RBRK | \
-                                       NS9750_SER_STAT_A_RRDY | \
-                                       NS9750_SER_STAT_A_RHALF | \
-                                       NS9750_SER_STAT_A_RBC | \
-                                       NS9750_SER_STAT_A_DCDI | \
-                                       NS9750_SER_STAT_A_RII | \
-                                       NS9750_SER_STAT_A_DSRI | \
-                                       NS9750_SER_STAT_A_CTSI )
-#define NS9750_SER_STAT_A_TX_COND_ALL ( NS9750_SER_STAT_A_TRDY | \
-                                       NS9750_SER_STAT_A_THALF | \
-                                       NS9750_SER_STAT_A_TBC | \
-                                       NS9750_SER_STAT_A_TEMPTY )
-/* bit rate register */
-
-#define NS9750_SER_BITRATE_EBIT                 (0x80000000)
-#define NS9750_SER_BITRATE_TMODE        (0x40000000)
-#define NS9750_SER_BITRATE_RXSRC        (0x20000000)
-#define NS9750_SER_BITRATE_TXSRC        (0x10000000)
-#define NS9750_SER_BITRATE_RXEXT        (0x08000000)
-#define NS9750_SER_BITRATE_TXEXT        (0x04000000)
-#define NS9750_SER_BITRATE_CLKMUX_MA    (0x03000000)
-#define NS9750_SER_BITRATE_CLKMUX_XTAL  (0x00000000)
-#define NS9750_SER_BITRATE_CLKMUX_BCLK  (0x01000000)
-#define NS9750_SER_BITRATE_CLKMUX_OUT1  (0x02000000)
-#define NS9750_SER_BITRATE_CLKMUX_OUT2  (0x03000000)
-#define NS9750_SER_BITRATE_TXCINV       (0x00800000)
-#define NS9750_SER_BITRATE_RXCINV       (0x00400000)
-#define NS9750_SER_BITRATE_TCDR_MA      (0x00180000)
-#define NS9750_SER_BITRATE_TCDR_1       (0x00000000)
-#define NS9750_SER_BITRATE_TCDR_8       (0x00080000)
-#define NS9750_SER_BITRATE_TCDR_16      (0x00100000)
-#define NS9750_SER_BITRATE_TCDR_32      (0x00180000)
-#define NS9750_SER_BITRATE_RCDR_MA      (0x00070000)
-#define NS9750_SER_BITRATE_RCDR_1       (0x00000000)
-#define NS9750_SER_BITRATE_RCDR_8       (0x00020000)
-#define NS9750_SER_BITRATE_RCDR_16      (0x00040000)
-#define NS9750_SER_BITRATE_RCDR_32      (0x00060000)
-#define NS9750_SER_BITRATE_TICS                 (0x00010000)
-#define NS9750_SER_BITRATE_RICS                 (0x00008000)
-#define NS9750_SER_BITRATE_N_MA                 (0x00007FFF)
-
-/* receive buffer gap timer */
-
-#define NS9750_SER_RX_BUF_TIMER_TRUN    (0x80000000) /* UART and SPI */
-#define NS9750_SER_RX_BUF_TIMER_BT_MA   (0x0000FFFF) /* UART and SPI */
-#define NS9750_SER_RX_BUF_TIMER_MAXLEN_MA (0x0000FFFF) /* HDLC only */
-
-/* receive character gap timer */
-
-#define NS9750_SER_RX_CHAR_TIMER_TRUN   (0x80000000)
-#define NS9750_SER_RX_CHAR_TIMER_CT_MA  (0x000FFFFF)
-
-/* receive match */
-
-#define NS9750_SER_RX_MATCH_RDMB1_MA    (0xFF000000)
-#define NS9750_SER_RX_MATCH_RDMB2_MA    (0x00FF0000)
-#define NS9750_SER_RX_MATCH_RDMB3_MA    (0x0000FF00)
-#define NS9750_SER_RX_MATCH_RDMB4_MA    (0x000000FF)
-
-/* receive match mask */
-
-#define NS9750_SER_RX_MATCH_MASK_RDMB1_MA (0xFF000000)
-#define NS9750_SER_RX_MATCH_MASK_RDMB2_MA (0x00FF0000)
-#define NS9750_SER_RX_MATCH_MASK_RDMB3_MA (0x0000FF00)
-#define NS9750_SER_RX_MATCH_MASK_RDMB4_MA (0x000000FF)
-
-#endif /* FS_NS9750_SER_H */
+/***********************************************************************
+ *
+ * Copyright (C) 2004 by FS Forth-Systeme GmbH.
+ * All rights reserved.
+ *
+ * $Id: ns9750_ser.h,v 1.1.1.1 2009/03/25 22:22:13 kenagy Exp $
+ * @Author: Markus Pietrek
+ * @References: [1] NS9750 Hardware Reference, December 2003
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ ***********************************************************************/
+
+#ifndef FS_NS9750_SER_H
+#define FS_NS9750_SER_H
+
+#define NS9750_SER_MODULE_BASE         (0x90200000)
+
+#define get_ser_reg_addr(c) \
+       ((volatile unsigned int *)(NS9750_SER_MODULE_BASE+(unsigned int) (c)))
+
+#define get_ser_reg_addr_channel(reg,chan) \
+       get_ser_reg_addr((reg)+(((chan)<2)?0:0x00100000)+(((chan)&1)?0x40:0))
+
+/* the register addresses */
+
+#define NS9750_SER_CTRL_A              (0x00)
+#define NS9750_SER_CTRL_B              (0x04)
+#define NS9750_SER_STAT_A              (0x08)
+#define NS9750_SER_BITRATE             (0x0C)
+#define NS9750_SER_FIFO                        (0x10)
+#define NS9750_SER_RX_BUF_TIMER                (0x14)
+#define NS9750_SER_RX_CHAR_TIMER       (0x18)
+#define NS9750_SER_RX_MATCH            (0x1C)
+#define NS9750_SER_RX_MATCH_MASK       (0x20)
+#define NS9750_SER_FLOW_CTRL           (0x34)
+#define NS9750_SER_FLOW_CTRL_FORCE     (0x38)
+
+/* register bit fields */
+
+/* control A register */
+
+#define NS9750_SER_CTRL_A_CE           (0x80000000)
+#define NS9750_SER_CTRL_A_BRK          (0x40000000)
+#define NS9750_SER_CTRL_A_STICKP       (0x20000000)
+#define NS9750_SER_CTRL_A_EPS          (0x10000000)
+#define NS9750_SER_CTRL_A_PE           (0x08000000)
+#define NS9750_SER_CTRL_A_STOP         (0x04000000)
+#define NS9750_SER_CTRL_A_WLS_MA       (0x03000000)
+#define NS9750_SER_CTRL_A_WLS_5                (0x00000000)
+#define NS9750_SER_CTRL_A_WLS_6                (0x01000000)
+#define NS9750_SER_CTRL_A_WLS_7                (0x02000000)
+#define NS9750_SER_CTRL_A_WLS_8                (0x03000000)
+#define NS9750_SER_CTRL_A_CTSTX                (0x00800000)
+#define NS9750_SER_CTRL_A_RTSRX                (0x00400000)
+#define NS9750_SER_CTRL_A_RL           (0x00200000)
+#define NS9750_SER_CTRL_A_LL           (0x00100000)
+#define NS9750_SER_CTRL_A_RES          (0x000CF000)
+#define NS9750_SER_CTRL_A_DTR          (0x00020000)
+#define NS9750_SER_CTRL_A_RTS          (0x00010000)
+#define NS9750_SER_CTRL_A_RIE_MA       (0x00000E00)
+#define NS9750_SER_CTRL_A_ERXDMA       (0x00000100)
+#define NS9750_SER_CTRL_A_RIC_MA       (0x000000E0)
+#define NS9750_SER_CTRL_A_TIC_MA       (0x0000001E)
+#define NS9750_SER_CTRL_A_ETXDMA       (0x00000001)
+
+/* control B register */
+
+#define NS9750_SER_CTRL_B_RDM1         (0x80000000)
+#define NS9750_SER_CTRL_B_RDM2         (0x40000000)
+#define NS9750_SER_CTRL_B_RDM3         (0x20000000)
+#define NS9750_SER_CTRL_B_RDM4         (0x10000000)
+#define NS9750_SER_CTRL_B_RBGT         (0x08000000)
+#define NS9750_SER_CTRL_B_RCGT         (0x04000000)
+#define NS9750_SER_CTRL_B_MODE_MA      (0x00300000)
+#define NS9750_SER_CTRL_B_MODE_UART    (0x00000000)
+#define NS9750_SER_CTRL_B_MODE_HDLC    (0x00100000)
+#define NS9750_SER_CTRL_B_MODE_SPI_M   (0x00200000)
+#define NS9750_SER_CTRL_B_MODE_SPI_S   (0x00300000)
+#define NS9750_SER_CTRL_B_BITORDR      (0x00080000)
+#define NS9750_SER_CTRL_B_RES          (0x0007703F)
+#define NS9750_SER_CTRL_B_RTSTX                (0x00008000)
+#define NS9750_SER_CTRL_B_ENDEC_MA     (0x00000FC0)
+
+/* status A register */
+
+#define NS9750_SER_STAT_A_MATCH1       (0x80000000)
+#define NS9750_SER_STAT_A_MATCH2       (0x40000000)
+#define NS9750_SER_STAT_A_MATCH3       (0x20000000)
+#define NS9750_SER_STAT_A_MATCH4       (0x10000000)
+#define NS9750_SER_STAT_A_BGAP         (0x08000000)
+#define NS9750_SER_STAT_A_CGAP         (0x04000000)
+#define NS9750_SER_STAT_A_RXFDB_MA     (0x00300000)
+#define NS9750_SER_STAT_A_RXFDB_FULL   (0x00000000)
+#define NS9750_SER_STAT_A_RXFDB_1      (0x00100000)
+#define NS9750_SER_STAT_A_RXFDB_2      (0x00200000)
+#define NS9750_SER_STAT_A_RXFDB_3      (0x00300000)
+#define NS9750_SER_STAT_A_DCD          (0x00080000)
+#define NS9750_SER_STAT_A_RI           (0x00040000)
+#define NS9750_SER_STAT_A_DSR          (0x00020000)
+#define NS9750_SER_STAT_A_CTS          (0x00010000)
+#define NS9750_SER_STAT_A_RBRK         (0x00008000)
+#define NS9750_SER_STAT_A_RFE          (0x00004000)
+#define NS9750_SER_STAT_A_RPE          (0x00002000)
+#define NS9750_SER_STAT_A_ROVER                (0x00001000)
+#define NS9750_SER_STAT_A_RRDY         (0x00000800)
+#define NS9750_SER_STAT_A_RHALF                (0x00000400)
+#define NS9750_SER_STAT_A_RBC          (0x00000200)
+#define NS9750_SER_STAT_A_RFULL                (0x00000100)
+#define NS9750_SER_STAT_A_DCDI         (0x00000080)
+#define NS9750_SER_STAT_A_RII          (0x00000040)
+#define NS9750_SER_STAT_A_DSRI         (0x00000020)
+#define NS9750_SER_STAT_A_CTSI         (0x00000010)
+#define NS9750_SER_STAT_A_TRDY         (0x00000008)
+#define NS9750_SER_STAT_A_THALF                (0x00000004)
+#define NS9750_SER_STAT_A_TBC          (0x00000002)
+#define NS9750_SER_STAT_A_TEMPTY       (0x00000001)
+
+#define NS9750_SER_STAT_A_RX_COND_ERR ( NS9750_SER_STAT_A_RFE | \
+                                       NS9750_SER_STAT_A_ROVER | \
+                                       NS9750_SER_STAT_A_RPE )
+#define NS9750_SER_STAT_A_RX_COND_ALL ( NS9750_SER_STAT_A_RX_COND_ERR | \
+                                       NS9750_SER_STAT_A_RBRK | \
+                                       NS9750_SER_STAT_A_RRDY | \
+                                       NS9750_SER_STAT_A_RHALF | \
+                                       NS9750_SER_STAT_A_RBC | \
+                                       NS9750_SER_STAT_A_DCDI | \
+                                       NS9750_SER_STAT_A_RII | \
+                                       NS9750_SER_STAT_A_DSRI | \
+                                       NS9750_SER_STAT_A_CTSI )
+#define NS9750_SER_STAT_A_TX_COND_ALL ( NS9750_SER_STAT_A_TRDY | \
+                                       NS9750_SER_STAT_A_THALF | \
+                                       NS9750_SER_STAT_A_TBC | \
+                                       NS9750_SER_STAT_A_TEMPTY )
+/* bit rate register */
+
+#define NS9750_SER_BITRATE_EBIT                 (0x80000000)
+#define NS9750_SER_BITRATE_TMODE        (0x40000000)
+#define NS9750_SER_BITRATE_RXSRC        (0x20000000)
+#define NS9750_SER_BITRATE_TXSRC        (0x10000000)
+#define NS9750_SER_BITRATE_RXEXT        (0x08000000)
+#define NS9750_SER_BITRATE_TXEXT        (0x04000000)
+#define NS9750_SER_BITRATE_CLKMUX_MA    (0x03000000)
+#define NS9750_SER_BITRATE_CLKMUX_XTAL  (0x00000000)
+#define NS9750_SER_BITRATE_CLKMUX_BCLK  (0x01000000)
+#define NS9750_SER_BITRATE_CLKMUX_OUT1  (0x02000000)
+#define NS9750_SER_BITRATE_CLKMUX_OUT2  (0x03000000)
+#define NS9750_SER_BITRATE_TXCINV       (0x00800000)
+#define NS9750_SER_BITRATE_RXCINV       (0x00400000)
+#define NS9750_SER_BITRATE_TCDR_MA      (0x00180000)
+#define NS9750_SER_BITRATE_TCDR_1       (0x00000000)
+#define NS9750_SER_BITRATE_TCDR_8       (0x00080000)
+#define NS9750_SER_BITRATE_TCDR_16      (0x00100000)
+#define NS9750_SER_BITRATE_TCDR_32      (0x00180000)
+#define NS9750_SER_BITRATE_RCDR_MA      (0x00070000)
+#define NS9750_SER_BITRATE_RCDR_1       (0x00000000)
+#define NS9750_SER_BITRATE_RCDR_8       (0x00020000)
+#define NS9750_SER_BITRATE_RCDR_16      (0x00040000)
+#define NS9750_SER_BITRATE_RCDR_32      (0x00060000)
+#define NS9750_SER_BITRATE_TICS                 (0x00010000)
+#define NS9750_SER_BITRATE_RICS                 (0x00008000)
+#define NS9750_SER_BITRATE_N_MA                 (0x00007FFF)
+
+/* receive buffer gap timer */
+
+#define NS9750_SER_RX_BUF_TIMER_TRUN    (0x80000000) /* UART and SPI */
+#define NS9750_SER_RX_BUF_TIMER_BT_MA   (0x0000FFFF) /* UART and SPI */
+#define NS9750_SER_RX_BUF_TIMER_MAXLEN_MA (0x0000FFFF) /* HDLC only */
+
+/* receive character gap timer */
+
+#define NS9750_SER_RX_CHAR_TIMER_TRUN   (0x80000000)
+#define NS9750_SER_RX_CHAR_TIMER_CT_MA  (0x000FFFFF)
+
+/* receive match */
+
+#define NS9750_SER_RX_MATCH_RDMB1_MA    (0xFF000000)
+#define NS9750_SER_RX_MATCH_RDMB2_MA    (0x00FF0000)
+#define NS9750_SER_RX_MATCH_RDMB3_MA    (0x0000FF00)
+#define NS9750_SER_RX_MATCH_RDMB4_MA    (0x000000FF)
+
+/* receive match mask */
+
+#define NS9750_SER_RX_MATCH_MASK_RDMB1_MA (0xFF000000)
+#define NS9750_SER_RX_MATCH_MASK_RDMB2_MA (0x00FF0000)
+#define NS9750_SER_RX_MATCH_MASK_RDMB3_MA (0x0000FF00)
+#define NS9750_SER_RX_MATCH_MASK_RDMB4_MA (0x000000FF)
+
+#endif /* FS_NS9750_SER_H */
diff -Naur u-boot-2009.03_orig/include/ns9750_sys.h u-boot-2009.03/include/ns9750_sys.h
--- u-boot-2009.03_orig/include/ns9750_sys.h    2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/include/ns9750_sys.h 2009-03-31 14:58:02.203532000 -0700
@@ -1,215 +1,215 @@
-/***********************************************************************
- *
- * Copyright (C) 2004 by FS Forth-Systeme GmbH.
- * All rights reserved.
- *
- * $Id: ns9750_sys.h,v 1.1 2004/02/16 10:37:20 mpietrek Exp $
- * @Author: Markus Pietrek
- * @Descr: Definitions for SYS Control Module
- * @References: [1] NS9750 Hardware Reference Manual/December 2003 Chap. 4
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- *
- ***********************************************************************/
-
-#ifndef FS_NS9750_SYS_H
-#define FS_NS9750_SYS_H
-
-#define NS9750_SYS_MODULE_BASE         (0xA0900000)
-
-#define get_sys_reg_addr(c) \
-       ((volatile unsigned int *)(NS9750_SYS_MODULE_BASE+(unsigned int) (c)))
-
-/* the register addresses */
-
-#define NS9750_SYS_AHB_GEN             (0x0000)
-#define NS9750_SYS_BRC_BASE            (0x0004)
-#define NS9750_SYS_AHB_TIMEOUT         (0x0014)
-#define NS9750_SYS_AHB_ERROR1          (0x0018)
-#define NS9750_SYS_AHB_ERROR2          (0x001C)
-#define NS9750_SYS_AHB_MON             (0x0020)
-#define NS9750_SYS_TIMER_COUNT_BASE    (0x0044)
-#define NS9750_SYS_TIMER_READ_BASE     (0x0084)
-#define NS9750_SYS_INT_VEC_ADR_BASE    (0x00C4)
-#define NS9750_SYS_INT_CFG_BASE                (0x0144)
-#define NS9750_SYS_ISRADDR             (0x0164)
-#define NS9750_SYS_INT_STAT_ACTIVE     (0x0168)
-#define NS9750_SYS_INT_STAT_RAW                (0x016C)
-#define NS9750_SYS_TIMER_INT_STAT      (0x0170)
-#define NS9750_SYS_SW_WDOG_CFG         (0x0174)
-#define NS9750_SYS_SW_WDOG_TIMER       (0x0178)
-#define NS9750_SYS_CLOCK               (0x017C)
-#define NS9750_SYS_RESET               (0x0180)
-#define NS9750_SYS_MISC                        (0x0184)
-#define NS9750_SYS_PLL                 (0x0188)
-#define NS9750_SYS_ACT_INT_STAT                (0x018C)
-#define NS9750_SYS_TIMER_CTRL_BASE     (0x0190)
-#define NS9750_SYS_CS_DYN_BASE_BASE    (0x01D0)
-#define NS9750_SYS_CS_DYN_MASK_BASE    (0x01D4)
-#define NS9750_SYS_CS_STATIC_BASE_BASE (0x01F0)
-#define NS9750_SYS_CS_STATIC_MASK_BASE (0x01F4)
-#define NS9750_SYS_GEN_ID              (0x0210)
-#define NS9750_SYS_EXT_INT_CTRL_BASE   (0x0214)
-
-/* the vectored register addresses */
-
-#define NS9750_SYS_TIMER_COUNT(c)      (NS9750_SYS_TIMER_COUNT_BASE + (c))
-#define NS9750_SYS_TIMER_READ(c)       (NS9750_SYS_TIMER_READ_BASE + (c))
-#define NS9750_SYS_INT_VEC_ADR(c)      (NS9750_SYS_INT_VEC_ADR_BASE + (c))
-#define NS9750_SYS_TIMER_CTRL(c)       (NS9750_SYS_TIMER_CTRL_BASE + (c))
-/* CS_DYN start with 4 */
-#define NS9750_SYS_CS_DYN_BASE(c)      (NS9750_SYS_CS_DYN_BASE_BASE + ((c)-4)*2)
-#define NS9750_SYS_CS_DYN_MASK(c)      (NS9750_SYS_CS_DYN_MASK_BASE + ((c)-4)*2)
-/* CS_STATIC start with 0 */
-#define NS9750_SYS_CS_STATIC_BASE(c)   (NS9750_SYS_CS_STATIC_BASE_BASE + (c)*2)
-#define NS9750_SYS_CS_STATIC_MASK(c)   (NS9750_SYS_CS_STATIC_MASK_BASE + (c)*2)
-#define NS9750_SYS_EXT_INT_CTRL(c)     (NS9750_SYS_EXT_INT_CTRL + (c))
-
-/* register bit fields */
-
-#define NS9750_SYS_AHB_GEN_EXMAM       (0x00000001)
-
-/* need to be n*8bit to BRC channel */
-#define NS9750_SYS_BRC_CEB             (0x00000080)
-#define NS9750_SYS_BRC_BRF_MA          (0x00000030)
-#define NS9750_SYS_BRC_BRF_100         (0x00000000)
-#define NS9750_SYS_BRC_BRF_75          (0x00000010)
-#define NS9750_SYS_BRC_BRF_50          (0x00000020)
-#define NS9750_SYS_BRC_BRF_25          (0x00000030)
-
-#define NS9750_SYS_AHB_TIMEOUT_BAT_MA  (0xFFFF0000)
-#define NS9750_SYS_AHB_TIMEOUT_BMT_MA  (0x0000FFFF)
-
-#define NS9750_SYS_AHB_ERROR2_ABL      (0x00040000)
-#define NS9750_SYS_AHB_ERROR2_AER      (0x00020000)
-#define NS9750_SYS_AHB_ERROR2_ABM      (0x00010000)
-#define NS9750_SYS_AHB_ERROR2_ABA      (0x00008000)
-#define NS9750_SYS_AHB_ERROR2_HWRT     (0x00004000)
-#define NS9750_SYS_AHB_ERROR2_HMID_MA  (0x00003C00)
-#define NS9750_SYS_AHB_ERROR2_HTPC_MA  (0x000003C0)
-#define NS9750_SYS_AHB_ERROR2_HSZ_MA   (0x00000038)
-#define NS9750_SYS_AHB_ERROR2_RR_MA    (0x00000007)
-
-#define NS9750_SYS_AHB_MON_EIC         (0x00800000)
-#define NS9750_SYS_AHB_MON_MBII                (0x00400000)
-#define NS9750_SYS_AHB_MON_MBL_MA      (0x003FFFC0)
-#define NS9750_SYS_AHB_MON_MBLDC       (0x00000020)
-#define NS9750_SYS_AHB_MON_SERDC       (0x00000010)
-#define NS9750_SYS_AHB_MON_BMTC_MA     (0x0000000C)
-#define NS9750_SYS_AHB_MON_BMTC_RECORD (0x00000000)
-#define NS9750_SYS_AHB_MON_BMTC_GEN_IRQ        (0x00000004)
-#define NS9750_SYS_AHB_MON_BMTC_GEN_RES        (0x00000008)
-#define NS9750_SYS_AHB_MON_BATC_MA     (0x00000003)
-#define NS9750_SYS_AHB_MON_BATC_RECORD (0x00000000)
-#define NS9750_SYS_AHB_MON_BATC_GEN_IRQ        (0x00000001)
-#define NS9750_SYS_AHB_MON_BATC_GEN_RES        (0x00000002)
-
-/* need to be n*8bit to Int Level */
-
-#define NS9750_SYS_INT_CFG_IE          (0x00000080)
-#define NS9750_SYS_INT_CFG_IT          (0x00000020)
-#define NS9750_SYS_INT_CFG_IAD_MA      (0x0000001F)
-
-#define NS9750_SYS_TIMER_INT_STAT_MA   (0x0000FFFF)
-
-#define NS9750_SYS_SW_WDOG_CFG_SWWE    (0x00000080)
-#define NS9750_SYS_SW_WDOG_CFG_SWWI    (0x00000020)
-#define NS9750_SYS_SW_WDOG_CFG_SWWIC   (0x00000010)
-#define NS9750_SYS_SW_WDOG_CFG_SWTCS_MA        (0x00000007)
-#define NS9750_SYS_SW_WDOG_CFG_SWTCS_2 (0x00000000)
-#define NS9750_SYS_SW_WDOG_CFG_SWTCS_4 (0x00000001)
-#define NS9750_SYS_SW_WDOG_CFG_SWTCS_8 (0x00000002)
-#define NS9750_SYS_SW_WDOG_CFG_SWTCS_16        (0x00000003)
-#define NS9750_SYS_SW_WDOG_CFG_SWTCS_32        (0x00000004)
-#define NS9750_SYS_SW_WDOG_CFG_SWTCS_64        (0x00000005)
-
-#define NS9750_SYS_CLOCK_LPCS_MA       (0x00000380)
-#define NS9750_SYS_CLOCK_LPCS_1                (0x00000000)
-#define NS9750_SYS_CLOCK_LPCS_2                (0x00000080)
-#define NS9750_SYS_CLOCK_LPCS_4                (0x00000100)
-#define NS9750_SYS_CLOCK_LPCS_8                (0x00000180)
-#define NS9750_SYS_CLOCK_LPCS_EXT      (0x00000200)
-#define NS9750_SYS_CLOCK_BBC           (0x00000040)
-#define NS9750_SYS_CLOCK_LCC           (0x00000020)
-#define NS9750_SYS_CLOCK_MCC           (0x00000010)
-#define NS9750_SYS_CLOCK_PARBC         (0x00000008)
-#define NS9750_SYS_CLOCK_PC            (0x00000004)
-#define NS9750_SYS_CLOCK_MACC          (0x00000001)
-
-#define NS9750_SYS_RESET_SR            (0x80000000)
-#define NS9750_SYS_RESET_I2CW          (0x00100000)
-#define NS9750_SYS_RESET_CSE           (0x00080000)
-#define NS9750_SYS_RESET_SMWE          (0x00040000)
-#define NS9750_SYS_RESET_EWE           (0x00020000)
-#define NS9750_SYS_RESET_PI3WE         (0x00010000)
-#define NS9750_SYS_RESET_BBT           (0x00000040)
-#define NS9750_SYS_RESET_LCDC          (0x00000020)
-#define NS9750_SYS_RESET_MEMC          (0x00000010)
-#define NS9750_SYS_RESET_PCIAR         (0x00000008)
-#define NS9750_SYS_RESET_PCIM          (0x00000004)
-#define NS9750_SYS_RESET_MACM          (0x00000001)
-
-#define NS9750_SYS_MISC_REV_MA         (0xFF000000)
-#define NS9750_SYS_MISC_PCIA           (0x00002000)
-#define NS9750_SYS_MISC_VDIS           (0x00001000)
-#define NS9750_SYS_MISC_BMM            (0x00000800)
-#define NS9750_SYS_MISC_CS1DB          (0x00000400)
-#define NS9750_SYS_MISC_CS1DW_MA       (0x00000300)
-#define NS9750_SYS_MISC_MCCM           (0x00000080)
-#define NS9750_SYS_MISC_PMSS           (0x00000040)
-#define NS9750_SYS_MISC_CS1P           (0x00000020)
-#define NS9750_SYS_MISC_ENDM           (0x00000008)
-#define NS9750_SYS_MISC_MBAR           (0x00000004)
-#define NS9750_SYS_MISC_IRAM0          (0x00000001)
-
-#define NS9750_SYS_PLL_PLLBS           (0x02000000)
-#define NS9750_SYS_PLL_PLLFS_MA                (0x01800000)
-#define NS9750_SYS_PLL_PLLIS_MA                (0x00600000)
-#define NS9750_SYS_PLL_PLLND_MA                (0x001F0000)
-#define NS9750_SYS_PLL_PLLSW           (0x00008000)
-#define NS9750_SYS_PLL_PLLBSSW         (0x00000200)
-#define NS9750_SYS_PLL_FSEL_MA         (0x00000180)
-#define NS9750_SYS_PLL_CPCC_MA         (0x00000060)
-#define NS9750_SYS_PLL_NDSW_MA         (0x0000001F)
-
-#define NS9750_SYS_ACT_INT_STAT_MA     (0x0000FFFF)
-
-#define NS9750_SYS_TIMER_CTRL_TEN      (0x00008000)
-#define NS9750_SYS_TIMER_CTRL_INTC     (0x00000200)
-#define NS9750_SYS_TIMER_CTRL_TLCS_MA  (0x000001C0)
-#define NS9750_SYS_TIMER_CTRL_TLCS_1   (0x00000000)
-#define NS9750_SYS_TIMER_CTRL_TLCS_2   (0x00000040)
-#define NS9750_SYS_TIMER_CTRL_TLCS_4   (0x00000080)
-#define NS9750_SYS_TIMER_CTRL_TLCS_8   (0x000000C0)
-#define NS9750_SYS_TIMER_CTRL_TLCS_16  (0x00000100)
-#define NS9750_SYS_TIMER_CTRL_TLCS_32  (0x00000140)
-#define NS9750_SYS_TIMER_CTRL_TLCS_64  (0x00000180)
-#define NS9750_SYS_TIMER_CTRL_TLCS_EXT (0x000001C0)
-#define NS9750_SYS_TIMER_CTRL_TM_MA    (0x00000030)
-#define NS9750_SYS_TIMER_CTRL_TM_INT   (0x00000000)
-#define NS9750_SYS_TIMER_CTRL_TM_LOW   (0x00000010)
-#define NS9750_SYS_TIMER_CTRL_TM_HIGH  (0x00000020)
-#define NS9750_SYS_TIMER_CTRL_INTS     (0x00000008)
-#define NS9750_SYS_TIMER_CTRL_UDS      (0x00000004)
-#define NS9750_SYS_TIMER_CTRL_TSZ      (0x00000002)
-#define NS9750_SYS_TIMER_CTRL_REN      (0x00000001)
-
-#define NS9750_SYS_EXT_INT_CTRL_STS    (0x00000008)
-#define NS9750_SYS_EXT_INT_CTRL_CLR    (0x00000004)
-#define NS9750_SYS_EXT_INT_CTRL_PLTY   (0x00000002)
-#define NS9750_SYS_EXT_INT_CTRL_LVEDG  (0x00000001)
-
-#endif /* FS_NS9750_SYS_H */
+/***********************************************************************
+ *
+ * Copyright (C) 2004 by FS Forth-Systeme GmbH.
+ * All rights reserved.
+ *
+ * $Id: ns9750_sys.h,v 1.1.1.1 2009/03/25 22:22:13 kenagy Exp $
+ * @Author: Markus Pietrek
+ * @Descr: Definitions for SYS Control Module
+ * @References: [1] NS9750 Hardware Reference Manual/December 2003 Chap. 4
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ ***********************************************************************/
+
+#ifndef FS_NS9750_SYS_H
+#define FS_NS9750_SYS_H
+
+#define NS9750_SYS_MODULE_BASE         (0xA0900000)
+
+#define get_sys_reg_addr(c) \
+       ((volatile unsigned int *)(NS9750_SYS_MODULE_BASE+(unsigned int) (c)))
+
+/* the register addresses */
+
+#define NS9750_SYS_AHB_GEN             (0x0000)
+#define NS9750_SYS_BRC_BASE            (0x0004)
+#define NS9750_SYS_AHB_TIMEOUT         (0x0014)
+#define NS9750_SYS_AHB_ERROR1          (0x0018)
+#define NS9750_SYS_AHB_ERROR2          (0x001C)
+#define NS9750_SYS_AHB_MON             (0x0020)
+#define NS9750_SYS_TIMER_COUNT_BASE    (0x0044)
+#define NS9750_SYS_TIMER_READ_BASE     (0x0084)
+#define NS9750_SYS_INT_VEC_ADR_BASE    (0x00C4)
+#define NS9750_SYS_INT_CFG_BASE                (0x0144)
+#define NS9750_SYS_ISRADDR             (0x0164)
+#define NS9750_SYS_INT_STAT_ACTIVE     (0x0168)
+#define NS9750_SYS_INT_STAT_RAW                (0x016C)
+#define NS9750_SYS_TIMER_INT_STAT      (0x0170)
+#define NS9750_SYS_SW_WDOG_CFG         (0x0174)
+#define NS9750_SYS_SW_WDOG_TIMER       (0x0178)
+#define NS9750_SYS_CLOCK               (0x017C)
+#define NS9750_SYS_RESET               (0x0180)
+#define NS9750_SYS_MISC                        (0x0184)
+#define NS9750_SYS_PLL                 (0x0188)
+#define NS9750_SYS_ACT_INT_STAT                (0x018C)
+#define NS9750_SYS_TIMER_CTRL_BASE     (0x0190)
+#define NS9750_SYS_CS_DYN_BASE_BASE    (0x01D0)
+#define NS9750_SYS_CS_DYN_MASK_BASE    (0x01D4)
+#define NS9750_SYS_CS_STATIC_BASE_BASE (0x01F0)
+#define NS9750_SYS_CS_STATIC_MASK_BASE (0x01F4)
+#define NS9750_SYS_GEN_ID              (0x0210)
+#define NS9750_SYS_EXT_INT_CTRL_BASE   (0x0214)
+
+/* the vectored register addresses */
+
+#define NS9750_SYS_TIMER_COUNT(c)      (NS9750_SYS_TIMER_COUNT_BASE + (c))
+#define NS9750_SYS_TIMER_READ(c)       (NS9750_SYS_TIMER_READ_BASE + (c))
+#define NS9750_SYS_INT_VEC_ADR(c)      (NS9750_SYS_INT_VEC_ADR_BASE + (c))
+#define NS9750_SYS_TIMER_CTRL(c)       (NS9750_SYS_TIMER_CTRL_BASE + (c))
+/* CS_DYN start with 4 */
+#define NS9750_SYS_CS_DYN_BASE(c)      (NS9750_SYS_CS_DYN_BASE_BASE + ((c)-4)*2)
+#define NS9750_SYS_CS_DYN_MASK(c)      (NS9750_SYS_CS_DYN_MASK_BASE + ((c)-4)*2)
+/* CS_STATIC start with 0 */
+#define NS9750_SYS_CS_STATIC_BASE(c)   (NS9750_SYS_CS_STATIC_BASE_BASE + (c)*2)
+#define NS9750_SYS_CS_STATIC_MASK(c)   (NS9750_SYS_CS_STATIC_MASK_BASE + (c)*2)
+#define NS9750_SYS_EXT_INT_CTRL(c)     (NS9750_SYS_EXT_INT_CTRL + (c))
+
+/* register bit fields */
+
+#define NS9750_SYS_AHB_GEN_EXMAM       (0x00000001)
+
+/* need to be n*8bit to BRC channel */
+#define NS9750_SYS_BRC_CEB             (0x00000080)
+#define NS9750_SYS_BRC_BRF_MA          (0x00000030)
+#define NS9750_SYS_BRC_BRF_100         (0x00000000)
+#define NS9750_SYS_BRC_BRF_75          (0x00000010)
+#define NS9750_SYS_BRC_BRF_50          (0x00000020)
+#define NS9750_SYS_BRC_BRF_25          (0x00000030)
+
+#define NS9750_SYS_AHB_TIMEOUT_BAT_MA  (0xFFFF0000)
+#define NS9750_SYS_AHB_TIMEOUT_BMT_MA  (0x0000FFFF)
+
+#define NS9750_SYS_AHB_ERROR2_ABL      (0x00040000)
+#define NS9750_SYS_AHB_ERROR2_AER      (0x00020000)
+#define NS9750_SYS_AHB_ERROR2_ABM      (0x00010000)
+#define NS9750_SYS_AHB_ERROR2_ABA      (0x00008000)
+#define NS9750_SYS_AHB_ERROR2_HWRT     (0x00004000)
+#define NS9750_SYS_AHB_ERROR2_HMID_MA  (0x00003C00)
+#define NS9750_SYS_AHB_ERROR2_HTPC_MA  (0x000003C0)
+#define NS9750_SYS_AHB_ERROR2_HSZ_MA   (0x00000038)
+#define NS9750_SYS_AHB_ERROR2_RR_MA    (0x00000007)
+
+#define NS9750_SYS_AHB_MON_EIC         (0x00800000)
+#define NS9750_SYS_AHB_MON_MBII                (0x00400000)
+#define NS9750_SYS_AHB_MON_MBL_MA      (0x003FFFC0)
+#define NS9750_SYS_AHB_MON_MBLDC       (0x00000020)
+#define NS9750_SYS_AHB_MON_SERDC       (0x00000010)
+#define NS9750_SYS_AHB_MON_BMTC_MA     (0x0000000C)
+#define NS9750_SYS_AHB_MON_BMTC_RECORD (0x00000000)
+#define NS9750_SYS_AHB_MON_BMTC_GEN_IRQ        (0x00000004)
+#define NS9750_SYS_AHB_MON_BMTC_GEN_RES        (0x00000008)
+#define NS9750_SYS_AHB_MON_BATC_MA     (0x00000003)
+#define NS9750_SYS_AHB_MON_BATC_RECORD (0x00000000)
+#define NS9750_SYS_AHB_MON_BATC_GEN_IRQ        (0x00000001)
+#define NS9750_SYS_AHB_MON_BATC_GEN_RES        (0x00000002)
+
+/* need to be n*8bit to Int Level */
+
+#define NS9750_SYS_INT_CFG_IE          (0x00000080)
+#define NS9750_SYS_INT_CFG_IT          (0x00000020)
+#define NS9750_SYS_INT_CFG_IAD_MA      (0x0000001F)
+
+#define NS9750_SYS_TIMER_INT_STAT_MA   (0x0000FFFF)
+
+#define NS9750_SYS_SW_WDOG_CFG_SWWE    (0x00000080)
+#define NS9750_SYS_SW_WDOG_CFG_SWWI    (0x00000020)
+#define NS9750_SYS_SW_WDOG_CFG_SWWIC   (0x00000010)
+#define NS9750_SYS_SW_WDOG_CFG_SWTCS_MA        (0x00000007)
+#define NS9750_SYS_SW_WDOG_CFG_SWTCS_2 (0x00000000)
+#define NS9750_SYS_SW_WDOG_CFG_SWTCS_4 (0x00000001)
+#define NS9750_SYS_SW_WDOG_CFG_SWTCS_8 (0x00000002)
+#define NS9750_SYS_SW_WDOG_CFG_SWTCS_16        (0x00000003)
+#define NS9750_SYS_SW_WDOG_CFG_SWTCS_32        (0x00000004)
+#define NS9750_SYS_SW_WDOG_CFG_SWTCS_64        (0x00000005)
+
+#define NS9750_SYS_CLOCK_LPCS_MA       (0x00000380)
+#define NS9750_SYS_CLOCK_LPCS_1                (0x00000000)
+#define NS9750_SYS_CLOCK_LPCS_2                (0x00000080)
+#define NS9750_SYS_CLOCK_LPCS_4                (0x00000100)
+#define NS9750_SYS_CLOCK_LPCS_8                (0x00000180)
+#define NS9750_SYS_CLOCK_LPCS_EXT      (0x00000200)
+#define NS9750_SYS_CLOCK_BBC           (0x00000040)
+#define NS9750_SYS_CLOCK_LCC           (0x00000020)
+#define NS9750_SYS_CLOCK_MCC           (0x00000010)
+#define NS9750_SYS_CLOCK_PARBC         (0x00000008)
+#define NS9750_SYS_CLOCK_PC            (0x00000004)
+#define NS9750_SYS_CLOCK_MACC          (0x00000001)
+
+#define NS9750_SYS_RESET_SR            (0x80000000)
+#define NS9750_SYS_RESET_I2CW          (0x00100000)
+#define NS9750_SYS_RESET_CSE           (0x00080000)
+#define NS9750_SYS_RESET_SMWE          (0x00040000)
+#define NS9750_SYS_RESET_EWE           (0x00020000)
+#define NS9750_SYS_RESET_PI3WE         (0x00010000)
+#define NS9750_SYS_RESET_BBT           (0x00000040)
+#define NS9750_SYS_RESET_LCDC          (0x00000020)
+#define NS9750_SYS_RESET_MEMC          (0x00000010)
+#define NS9750_SYS_RESET_PCIAR         (0x00000008)
+#define NS9750_SYS_RESET_PCIM          (0x00000004)
+#define NS9750_SYS_RESET_MACM          (0x00000001)
+
+#define NS9750_SYS_MISC_REV_MA         (0xFF000000)
+#define NS9750_SYS_MISC_PCIA           (0x00002000)
+#define NS9750_SYS_MISC_VDIS           (0x00001000)
+#define NS9750_SYS_MISC_BMM            (0x00000800)
+#define NS9750_SYS_MISC_CS1DB          (0x00000400)
+#define NS9750_SYS_MISC_CS1DW_MA       (0x00000300)
+#define NS9750_SYS_MISC_MCCM           (0x00000080)
+#define NS9750_SYS_MISC_PMSS           (0x00000040)
+#define NS9750_SYS_MISC_CS1P           (0x00000020)
+#define NS9750_SYS_MISC_ENDM           (0x00000008)
+#define NS9750_SYS_MISC_MBAR           (0x00000004)
+#define NS9750_SYS_MISC_IRAM0          (0x00000001)
+
+#define NS9750_SYS_PLL_PLLBS           (0x02000000)
+#define NS9750_SYS_PLL_PLLFS_MA                (0x01800000)
+#define NS9750_SYS_PLL_PLLIS_MA                (0x00600000)
+#define NS9750_SYS_PLL_PLLND_MA                (0x001F0000)
+#define NS9750_SYS_PLL_PLLSW           (0x00008000)
+#define NS9750_SYS_PLL_PLLBSSW         (0x00000200)
+#define NS9750_SYS_PLL_FSEL_MA         (0x00000180)
+#define NS9750_SYS_PLL_CPCC_MA         (0x00000060)
+#define NS9750_SYS_PLL_NDSW_MA         (0x0000001F)
+
+#define NS9750_SYS_ACT_INT_STAT_MA     (0x0000FFFF)
+
+#define NS9750_SYS_TIMER_CTRL_TEN      (0x00008000)
+#define NS9750_SYS_TIMER_CTRL_INTC     (0x00000200)
+#define NS9750_SYS_TIMER_CTRL_TLCS_MA  (0x000001C0)
+#define NS9750_SYS_TIMER_CTRL_TLCS_1   (0x00000000)
+#define NS9750_SYS_TIMER_CTRL_TLCS_2   (0x00000040)
+#define NS9750_SYS_TIMER_CTRL_TLCS_4   (0x00000080)
+#define NS9750_SYS_TIMER_CTRL_TLCS_8   (0x000000C0)
+#define NS9750_SYS_TIMER_CTRL_TLCS_16  (0x00000100)
+#define NS9750_SYS_TIMER_CTRL_TLCS_32  (0x00000140)
+#define NS9750_SYS_TIMER_CTRL_TLCS_64  (0x00000180)
+#define NS9750_SYS_TIMER_CTRL_TLCS_EXT (0x000001C0)
+#define NS9750_SYS_TIMER_CTRL_TM_MA    (0x00000030)
+#define NS9750_SYS_TIMER_CTRL_TM_INT   (0x00000000)
+#define NS9750_SYS_TIMER_CTRL_TM_LOW   (0x00000010)
+#define NS9750_SYS_TIMER_CTRL_TM_HIGH  (0x00000020)
+#define NS9750_SYS_TIMER_CTRL_INTS     (0x00000008)
+#define NS9750_SYS_TIMER_CTRL_UDS      (0x00000004)
+#define NS9750_SYS_TIMER_CTRL_TSZ      (0x00000002)
+#define NS9750_SYS_TIMER_CTRL_REN      (0x00000001)
+
+#define NS9750_SYS_EXT_INT_CTRL_STS    (0x00000008)
+#define NS9750_SYS_EXT_INT_CTRL_CLR    (0x00000004)
+#define NS9750_SYS_EXT_INT_CTRL_PLTY   (0x00000002)
+#define NS9750_SYS_EXT_INT_CTRL_LVEDG  (0x00000001)
+
+#endif /* FS_NS9750_SYS_H */
diff -Naur u-boot-2009.03_orig/include/pcmcia/CVS/Entries u-boot-2009.03/include/pcmcia/CVS/Entries
--- u-boot-2009.03_orig/include/pcmcia/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/pcmcia/CVS/Entries   2009-03-25 15:58:15.496672000 -0700
@@ -0,0 +1,6 @@
+/cirrus.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/i82365.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ss.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ti113x.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/yenta.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/include/pcmcia/CVS/Entries.Extra u-boot-2009.03/include/pcmcia/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/pcmcia/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/pcmcia/CVS/Entries.Extra     2009-03-25 15:58:15.496672000 -0700
@@ -0,0 +1,5 @@
+/cirrus.h///1238019749/
+/i82365.h///1238019749/
+/ss.h///1238019749/
+/ti113x.h///1238019749/
+/yenta.h///1238019749/
diff -Naur u-boot-2009.03_orig/include/pcmcia/CVS/Entries.Extra.Old u-boot-2009.03/include/pcmcia/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/pcmcia/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/pcmcia/CVS/Entries.Extra.Old 2009-03-25 15:25:56.000000000 -0700
@@ -0,0 +1,5 @@
+/cirrus.h///1238019749/
+/i82365.h///1238019749/
+/ss.h///1238019749/
+/ti113x.h///1238019749/
+/yenta.h///1238019749/
diff -Naur u-boot-2009.03_orig/include/pcmcia/CVS/Entries.Old u-boot-2009.03/include/pcmcia/CVS/Entries.Old
--- u-boot-2009.03_orig/include/pcmcia/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/pcmcia/CVS/Entries.Old       2009-03-25 15:25:56.000000000 -0700
@@ -0,0 +1,6 @@
+/cirrus.h/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/i82365.h/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/ss.h/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/ti113x.h/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/yenta.h/1.1.1.1/Wed Mar 25 22:22:29 2009//
+D
diff -Naur u-boot-2009.03_orig/include/pcmcia/CVS/Repository u-boot-2009.03/include/pcmcia/CVS/Repository
--- u-boot-2009.03_orig/include/pcmcia/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/pcmcia/CVS/Repository        2009-03-25 15:25:56.415332200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/pcmcia
diff -Naur u-boot-2009.03_orig/include/pcmcia/CVS/Root u-boot-2009.03/include/pcmcia/CVS/Root
--- u-boot-2009.03_orig/include/pcmcia/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/pcmcia/CVS/Root      2009-03-25 15:25:56.415332200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/include/systemace.h u-boot-2009.03/include/systemace.h
--- u-boot-2009.03_orig/include/systemace.h     2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/include/systemace.h  2009-03-31 14:58:25.984477600 -0700
@@ -1,31 +1,31 @@
-#ifndef __SYSTEMACE_H
-#define __SYSTEMACE_H
-/*
- * Copyright (c) 2004 Picture Elements, Inc.
- *    Stephen Williams (steve@picturel.com)
- *
- *    This source code is free software; you can redistribute it
- *    and/or modify it in source code form 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
- */
-#ident "$Id:$"
-
-#ifdef CONFIG_SYSTEMACE
-
-# include  <part.h>
-
-block_dev_desc_t *  systemace_get_dev(int dev);
-
-#endif /* CONFIG_SYSTEMACE */
-#endif /* __SYSTEMACE_H */
+#ifndef __SYSTEMACE_H
+#define __SYSTEMACE_H
+/*
+ * Copyright (c) 2004 Picture Elements, Inc.
+ *    Stephen Williams (steve@picturel.com)
+ *
+ *    This source code is free software; you can redistribute it
+ *    and/or modify it in source code form 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
+ */
+#ident "$Id: systemace.h,v 1.1.1.1 2009/03/25 22:22:14 kenagy Exp $"
+
+#ifdef CONFIG_SYSTEMACE
+
+# include  <part.h>
+
+block_dev_desc_t *  systemace_get_dev(int dev);
+
+#endif /* CONFIG_SYSTEMACE */
+#endif /* __SYSTEMACE_H */
diff -Naur u-boot-2009.03_orig/include/u-boot/CVS/Entries u-boot-2009.03/include/u-boot/CVS/Entries
--- u-boot-2009.03_orig/include/u-boot/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/u-boot/CVS/Entries   2009-03-25 15:58:15.559171600 -0700
@@ -0,0 +1,2 @@
+/md5.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/include/u-boot/CVS/Entries.Extra u-boot-2009.03/include/u-boot/CVS/Entries.Extra
--- u-boot-2009.03_orig/include/u-boot/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/u-boot/CVS/Entries.Extra     2009-03-25 15:58:15.559171600 -0700
@@ -0,0 +1 @@
+/md5.h///1238019749/
diff -Naur u-boot-2009.03_orig/include/u-boot/CVS/Entries.Extra.Old u-boot-2009.03/include/u-boot/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/include/u-boot/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/u-boot/CVS/Entries.Extra.Old 2009-03-25 15:25:56.000000000 -0700
@@ -0,0 +1 @@
+/md5.h///1238019749/
diff -Naur u-boot-2009.03_orig/include/u-boot/CVS/Entries.Old u-boot-2009.03/include/u-boot/CVS/Entries.Old
--- u-boot-2009.03_orig/include/u-boot/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/u-boot/CVS/Entries.Old       2009-03-25 15:25:56.000000000 -0700
@@ -0,0 +1,2 @@
+/md5.h/1.1.1.1/Wed Mar 25 22:22:29 2009//
+D
diff -Naur u-boot-2009.03_orig/include/u-boot/CVS/Repository u-boot-2009.03/include/u-boot/CVS/Repository
--- u-boot-2009.03_orig/include/u-boot/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/u-boot/CVS/Repository        2009-03-25 15:25:56.540331400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/include/u-boot
diff -Naur u-boot-2009.03_orig/include/u-boot/CVS/Root u-boot-2009.03/include/u-boot/CVS/Root
--- u-boot-2009.03_orig/include/u-boot/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/include/u-boot/CVS/Root      2009-03-25 15:25:56.540331400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/lib_arm/CVS/Entries u-boot-2009.03/lib_arm/CVS/Entries
--- u-boot-2009.03_orig/lib_arm/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_arm/CVS/Entries  2009-03-25 15:58:15.762295300 -0700
@@ -0,0 +1,13 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/_ashldi3.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/_ashrdi3.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/_divsi3.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/_modsi3.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/_udivsi3.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/_umodsi3.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/board.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bootm.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cache.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/div0.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupts.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/lib_arm/CVS/Entries.Extra u-boot-2009.03/lib_arm/CVS/Entries.Extra
--- u-boot-2009.03_orig/lib_arm/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_arm/CVS/Entries.Extra    2009-03-25 15:58:15.762295300 -0700
@@ -0,0 +1,12 @@
+/Makefile///1238019749/
+/_ashldi3.S///1238019749/
+/_ashrdi3.S///1238019749/
+/_divsi3.S///1238019749/
+/_modsi3.S///1238019749/
+/_udivsi3.S///1238019749/
+/_umodsi3.S///1238019749/
+/board.c///1238019749/
+/bootm.c///1238019749/
+/cache.c///1238019749/
+/div0.c///1238019749/
+/interrupts.c///1238019749/
diff -Naur u-boot-2009.03_orig/lib_arm/CVS/Entries.Extra.Old u-boot-2009.03/lib_arm/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/lib_arm/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_arm/CVS/Entries.Extra.Old        2009-03-25 15:25:57.000000000 -0700
@@ -0,0 +1,12 @@
+/Makefile///1238019749/
+/_ashldi3.S///1238019749/
+/_ashrdi3.S///1238019749/
+/_divsi3.S///1238019749/
+/_modsi3.S///1238019749/
+/_udivsi3.S///1238019749/
+/_umodsi3.S///1238019749/
+/board.c///1238019749/
+/bootm.c///1238019749/
+/cache.c///1238019749/
+/div0.c///1238019749/
+/interrupts.c///1238019749/
diff -Naur u-boot-2009.03_orig/lib_arm/CVS/Entries.Old u-boot-2009.03/lib_arm/CVS/Entries.Old
--- u-boot-2009.03_orig/lib_arm/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_arm/CVS/Entries.Old      2009-03-25 15:25:57.000000000 -0700
@@ -0,0 +1,13 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/_ashldi3.S/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/_ashrdi3.S/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/_divsi3.S/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/_modsi3.S/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/_udivsi3.S/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/_umodsi3.S/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/board.c/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/bootm.c/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/cache.c/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/div0.c/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/interrupts.c/1.1.1.1/Wed Mar 25 22:22:29 2009//
+D
diff -Naur u-boot-2009.03_orig/lib_arm/CVS/Repository u-boot-2009.03/lib_arm/CVS/Repository
--- u-boot-2009.03_orig/lib_arm/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_arm/CVS/Repository       2009-03-25 15:25:56.743455100 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/lib_arm
diff -Naur u-boot-2009.03_orig/lib_arm/CVS/Root u-boot-2009.03/lib_arm/CVS/Root
--- u-boot-2009.03_orig/lib_arm/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_arm/CVS/Root     2009-03-25 15:25:56.712205300 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/lib_avr32/CVS/Entries u-boot-2009.03/lib_avr32/CVS/Entries
--- u-boot-2009.03_orig/lib_avr32/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_avr32/CVS/Entries        2009-03-25 15:58:15.840419800 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/board.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bootm.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupts.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/memset.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/lib_avr32/CVS/Entries.Extra u-boot-2009.03/lib_avr32/CVS/Entries.Extra
--- u-boot-2009.03_orig/lib_avr32/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_avr32/CVS/Entries.Extra  2009-03-25 15:58:15.856044700 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019749/
+/board.c///1238019749/
+/bootm.c///1238019749/
+/interrupts.c///1238019749/
+/memset.S///1238019749/
diff -Naur u-boot-2009.03_orig/lib_avr32/CVS/Entries.Extra.Old u-boot-2009.03/lib_avr32/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/lib_avr32/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_avr32/CVS/Entries.Extra.Old      2009-03-25 15:25:57.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019749/
+/board.c///1238019749/
+/bootm.c///1238019749/
+/interrupts.c///1238019749/
+/memset.S///1238019749/
diff -Naur u-boot-2009.03_orig/lib_avr32/CVS/Entries.Old u-boot-2009.03/lib_avr32/CVS/Entries.Old
--- u-boot-2009.03_orig/lib_avr32/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_avr32/CVS/Entries.Old    2009-03-25 15:25:57.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/board.c/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/bootm.c/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/interrupts.c/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/memset.S/1.1.1.1/Wed Mar 25 22:22:29 2009//
+D
diff -Naur u-boot-2009.03_orig/lib_avr32/CVS/Repository u-boot-2009.03/lib_avr32/CVS/Repository
--- u-boot-2009.03_orig/lib_avr32/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_avr32/CVS/Repository     2009-03-25 15:25:57.196577200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/lib_avr32
diff -Naur u-boot-2009.03_orig/lib_avr32/CVS/Root u-boot-2009.03/lib_avr32/CVS/Root
--- u-boot-2009.03_orig/lib_avr32/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_avr32/CVS/Root   2009-03-25 15:25:57.180952300 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/lib_blackfin/CVS/Entries u-boot-2009.03/lib_blackfin/CVS/Entries
--- u-boot-2009.03_orig/lib_blackfin/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_blackfin/CVS/Entries     2009-03-25 15:58:15.981043900 -0700
@@ -0,0 +1,14 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/board.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/boot.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cache.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/clocks.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/memcmp.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/memcpy.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/memmove.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/memset.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/muldi3.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/post.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/string.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tests.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/lib_blackfin/CVS/Entries.Extra u-boot-2009.03/lib_blackfin/CVS/Entries.Extra
--- u-boot-2009.03_orig/lib_blackfin/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_blackfin/CVS/Entries.Extra       2009-03-25 15:58:15.981043900 -0700
@@ -0,0 +1,13 @@
+/Makefile///1238019749/
+/board.c///1238019749/
+/boot.c///1238019749/
+/cache.c///1238019749/
+/clocks.c///1238019749/
+/memcmp.S///1238019749/
+/memcpy.S///1238019749/
+/memmove.S///1238019749/
+/memset.S///1238019749/
+/muldi3.c///1238019749/
+/post.c///1238019749/
+/string.c///1238019749/
+/tests.c///1238019749/
diff -Naur u-boot-2009.03_orig/lib_blackfin/CVS/Entries.Extra.Old u-boot-2009.03/lib_blackfin/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/lib_blackfin/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_blackfin/CVS/Entries.Extra.Old   2009-03-25 15:25:57.000000000 -0700
@@ -0,0 +1,13 @@
+/Makefile///1238019749/
+/board.c///1238019749/
+/boot.c///1238019749/
+/cache.c///1238019749/
+/clocks.c///1238019749/
+/memcmp.S///1238019749/
+/memcpy.S///1238019749/
+/memmove.S///1238019749/
+/memset.S///1238019749/
+/muldi3.c///1238019749/
+/post.c///1238019749/
+/string.c///1238019749/
+/tests.c///1238019749/
diff -Naur u-boot-2009.03_orig/lib_blackfin/CVS/Entries.Old u-boot-2009.03/lib_blackfin/CVS/Entries.Old
--- u-boot-2009.03_orig/lib_blackfin/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_blackfin/CVS/Entries.Old 2009-03-25 15:25:57.000000000 -0700
@@ -0,0 +1,14 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/board.c/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/boot.c/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/cache.c/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/clocks.c/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/memcmp.S/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/memcpy.S/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/memmove.S/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/memset.S/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/muldi3.c/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/post.c/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/string.c/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/tests.c/1.1.1.1/Wed Mar 25 22:22:29 2009//
+D
diff -Naur u-boot-2009.03_orig/lib_blackfin/CVS/Repository u-boot-2009.03/lib_blackfin/CVS/Repository
--- u-boot-2009.03_orig/lib_blackfin/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_blackfin/CVS/Repository  2009-03-25 15:25:57.321576400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/lib_blackfin
diff -Naur u-boot-2009.03_orig/lib_blackfin/CVS/Root u-boot-2009.03/lib_blackfin/CVS/Root
--- u-boot-2009.03_orig/lib_blackfin/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_blackfin/CVS/Root        2009-03-25 15:25:57.321576400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/lib_generic/CVS/Entries u-boot-2009.03/lib_generic/CVS/Entries
--- u-boot-2009.03_orig/lib_generic/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_generic/CVS/Entries      2009-03-25 15:58:16.371666400 -0700
@@ -0,0 +1,25 @@
+D/lzma////
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/addr_map.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bzlib.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bzlib_crctable.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bzlib_decompress.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bzlib_huffman.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bzlib_private.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bzlib_randtable.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/crc16.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/crc32.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ctype.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/display_options.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/div64.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/gunzip.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ldiv.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lmb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/md5.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/rbtree.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sha1.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sha256.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/string.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/strmhz.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/vsprintf.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/zlib.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
diff -Naur u-boot-2009.03_orig/lib_generic/CVS/Entries.Extra u-boot-2009.03/lib_generic/CVS/Entries.Extra
--- u-boot-2009.03_orig/lib_generic/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_generic/CVS/Entries.Extra        2009-03-25 15:58:16.371666400 -0700
@@ -0,0 +1,25 @@
+D/lzma////
+/Makefile///1238019749/
+/addr_map.c///1238019749/
+/bzlib.c///1238019749/
+/bzlib_crctable.c///1238019749/
+/bzlib_decompress.c///1238019749/
+/bzlib_huffman.c///1238019749/
+/bzlib_private.h///1238019749/
+/bzlib_randtable.c///1238019749/
+/crc16.c///1238019749/
+/crc32.c///1238019749/
+/ctype.c///1238019749/
+/display_options.c///1238019749/
+/div64.c///1238019749/
+/gunzip.c///1238019749/
+/ldiv.c///1238019749/
+/lmb.c///1238019749/
+/md5.c///1238019749/
+/rbtree.c///1238019749/
+/sha1.c///1238019749/
+/sha256.c///1238019749/
+/string.c///1238019749/
+/strmhz.c///1238019749/
+/vsprintf.c///1238019749/
+/zlib.c///1238019749/
diff -Naur u-boot-2009.03_orig/lib_generic/CVS/Entries.Extra.Old u-boot-2009.03/lib_generic/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/lib_generic/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_generic/CVS/Entries.Extra.Old    2009-03-25 15:25:58.000000000 -0700
@@ -0,0 +1,25 @@
+/Makefile///1238019749/
+/addr_map.c///1238019749/
+/bzlib.c///1238019749/
+/bzlib_crctable.c///1238019749/
+/bzlib_decompress.c///1238019749/
+/bzlib_huffman.c///1238019749/
+/bzlib_private.h///1238019749/
+/bzlib_randtable.c///1238019749/
+/crc16.c///1238019749/
+/crc32.c///1238019749/
+/ctype.c///1238019749/
+/display_options.c///1238019749/
+/div64.c///1238019749/
+/gunzip.c///1238019749/
+/ldiv.c///1238019749/
+/lmb.c///1238019749/
+/md5.c///1238019749/
+/rbtree.c///1238019749/
+/sha1.c///1238019749/
+/sha256.c///1238019749/
+/string.c///1238019749/
+/strmhz.c///1238019749/
+/vsprintf.c///1238019749/
+/zlib.c///1238019749/
+D/lzma////
diff -Naur u-boot-2009.03_orig/lib_generic/CVS/Entries.Old u-boot-2009.03/lib_generic/CVS/Entries.Old
--- u-boot-2009.03_orig/lib_generic/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_generic/CVS/Entries.Old  2009-03-25 15:25:58.000000000 -0700
@@ -0,0 +1,25 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/addr_map.c/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/bzlib.c/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/bzlib_crctable.c/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/bzlib_decompress.c/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/bzlib_huffman.c/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/bzlib_private.h/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/bzlib_randtable.c/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/crc16.c/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/crc32.c/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/ctype.c/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/display_options.c/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/div64.c/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/gunzip.c/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/ldiv.c/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/lmb.c/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/md5.c/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/rbtree.c/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/sha1.c/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/sha256.c/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/string.c/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/strmhz.c/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/vsprintf.c/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/zlib.c/1.1.1.1/Wed Mar 25 22:22:29 2009//
+D/lzma////
diff -Naur u-boot-2009.03_orig/lib_generic/CVS/Repository u-boot-2009.03/lib_generic/CVS/Repository
--- u-boot-2009.03_orig/lib_generic/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_generic/CVS/Repository   2009-03-25 15:25:57.509075200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/lib_generic
diff -Naur u-boot-2009.03_orig/lib_generic/CVS/Root u-boot-2009.03/lib_generic/CVS/Root
--- u-boot-2009.03_orig/lib_generic/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_generic/CVS/Root 2009-03-25 15:25:57.493450300 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/lib_generic/lzma/CVS/Entries u-boot-2009.03/lib_generic/lzma/CVS/Entries
--- u-boot-2009.03_orig/lib_generic/lzma/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_generic/lzma/CVS/Entries 2009-03-25 15:58:16.324791700 -0700
@@ -0,0 +1,12 @@
+/LGPL.txt/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/LzmaDecode.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/LzmaDecode.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/LzmaTools.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/LzmaTools.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/LzmaTypes.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README.txt/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/history.txt/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/import_lzmasdk.sh/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/lzma.txt/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/lib_generic/lzma/CVS/Entries.Extra u-boot-2009.03/lib_generic/lzma/CVS/Entries.Extra
--- u-boot-2009.03_orig/lib_generic/lzma/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_generic/lzma/CVS/Entries.Extra   2009-03-25 15:58:16.324791700 -0700
@@ -0,0 +1,11 @@
+/LGPL.txt///1238019749/
+/LzmaDecode.c///1238019749/
+/LzmaDecode.h///1238019749/
+/LzmaTools.c///1238019749/
+/LzmaTools.h///1238019749/
+/LzmaTypes.h///1238019749/
+/Makefile///1238019749/
+/README.txt///1238019749/
+/history.txt///1238019749/
+/import_lzmasdk.sh///1238019749/
+/lzma.txt///1238019749/
diff -Naur u-boot-2009.03_orig/lib_generic/lzma/CVS/Entries.Extra.Old u-boot-2009.03/lib_generic/lzma/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/lib_generic/lzma/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_generic/lzma/CVS/Entries.Extra.Old       2009-03-25 15:25:57.000000000 -0700
@@ -0,0 +1,11 @@
+/LGPL.txt///1238019749/
+/LzmaDecode.c///1238019749/
+/LzmaDecode.h///1238019749/
+/LzmaTools.c///1238019749/
+/LzmaTools.h///1238019749/
+/LzmaTypes.h///1238019749/
+/Makefile///1238019749/
+/README.txt///1238019749/
+/history.txt///1238019749/
+/import_lzmasdk.sh///1238019749/
+/lzma.txt///1238019749/
diff -Naur u-boot-2009.03_orig/lib_generic/lzma/CVS/Entries.Old u-boot-2009.03/lib_generic/lzma/CVS/Entries.Old
--- u-boot-2009.03_orig/lib_generic/lzma/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_generic/lzma/CVS/Entries.Old     2009-03-25 15:25:57.000000000 -0700
@@ -0,0 +1,12 @@
+/LGPL.txt/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/LzmaDecode.c/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/LzmaDecode.h/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/LzmaTools.c/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/LzmaTools.h/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/LzmaTypes.h/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/Makefile/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/README.txt/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/history.txt/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/import_lzmasdk.sh/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/lzma.txt/1.1.1.1/Wed Mar 25 22:22:29 2009//
+D
diff -Naur u-boot-2009.03_orig/lib_generic/lzma/CVS/Repository u-boot-2009.03/lib_generic/lzma/CVS/Repository
--- u-boot-2009.03_orig/lib_generic/lzma/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_generic/lzma/CVS/Repository      2009-03-25 15:25:57.884072800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/lib_generic/lzma
diff -Naur u-boot-2009.03_orig/lib_generic/lzma/CVS/Root u-boot-2009.03/lib_generic/lzma/CVS/Root
--- u-boot-2009.03_orig/lib_generic/lzma/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_generic/lzma/CVS/Root    2009-03-25 15:25:57.884072800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/lib_i386/CVS/Entries u-boot-2009.03/lib_i386/CVS/Entries
--- u-boot-2009.03_orig/lib_i386/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_i386/CVS/Entries 2009-03-25 15:58:16.496665600 -0700
@@ -0,0 +1,15 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bios.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bios.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bios_pci.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bios_setup.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/board.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bootm.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/pci_type1.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/realmode.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/realmode_switch.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/video.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/video_bios.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/zimage.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/lib_i386/CVS/Entries.Extra u-boot-2009.03/lib_i386/CVS/Entries.Extra
--- u-boot-2009.03_orig/lib_i386/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_i386/CVS/Entries.Extra   2009-03-25 15:58:16.496665600 -0700
@@ -0,0 +1,14 @@
+/Makefile///1238019750/
+/bios.S///1238019750/
+/bios.h///1238019749/
+/bios_pci.S///1238019750/
+/bios_setup.c///1238019750/
+/board.c///1238019750/
+/bootm.c///1238019750/
+/pci.c///1238019750/
+/pci_type1.c///1238019750/
+/realmode.c///1238019750/
+/realmode_switch.S///1238019750/
+/video.c///1238019750/
+/video_bios.c///1238019750/
+/zimage.c///1238019750/
diff -Naur u-boot-2009.03_orig/lib_i386/CVS/Entries.Extra.Old u-boot-2009.03/lib_i386/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/lib_i386/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_i386/CVS/Entries.Extra.Old       2009-03-25 15:25:58.000000000 -0700
@@ -0,0 +1,14 @@
+/Makefile///1238019750/
+/bios.S///1238019750/
+/bios.h///1238019749/
+/bios_pci.S///1238019750/
+/bios_setup.c///1238019750/
+/board.c///1238019750/
+/bootm.c///1238019750/
+/pci.c///1238019750/
+/pci_type1.c///1238019750/
+/realmode.c///1238019750/
+/realmode_switch.S///1238019750/
+/video.c///1238019750/
+/video_bios.c///1238019750/
+/zimage.c///1238019750/
diff -Naur u-boot-2009.03_orig/lib_i386/CVS/Entries.Old u-boot-2009.03/lib_i386/CVS/Entries.Old
--- u-boot-2009.03_orig/lib_i386/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_i386/CVS/Entries.Old     2009-03-25 15:25:58.000000000 -0700
@@ -0,0 +1,15 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/bios.S/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/bios.h/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/bios_pci.S/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/bios_setup.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/board.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/bootm.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/pci.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/pci_type1.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/realmode.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/realmode_switch.S/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/video.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/video_bios.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/zimage.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+D
diff -Naur u-boot-2009.03_orig/lib_i386/CVS/Repository u-boot-2009.03/lib_i386/CVS/Repository
--- u-boot-2009.03_orig/lib_i386/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_i386/CVS/Repository      2009-03-25 15:25:58.087196500 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/lib_i386
diff -Naur u-boot-2009.03_orig/lib_i386/CVS/Root u-boot-2009.03/lib_i386/CVS/Root
--- u-boot-2009.03_orig/lib_i386/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_i386/CVS/Root    2009-03-25 15:25:58.087196500 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/lib_m68k/CVS/Entries u-boot-2009.03/lib_m68k/CVS/Entries
--- u-boot-2009.03_orig/lib_m68k/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_m68k/CVS/Entries 2009-03-25 15:58:16.590415000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/board.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bootm.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cache.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupts.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/time.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/traps.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/lib_m68k/CVS/Entries.Extra u-boot-2009.03/lib_m68k/CVS/Entries.Extra
--- u-boot-2009.03_orig/lib_m68k/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_m68k/CVS/Entries.Extra   2009-03-25 15:58:16.590415000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019750/
+/board.c///1238019750/
+/bootm.c///1238019750/
+/cache.c///1238019750/
+/interrupts.c///1238019750/
+/time.c///1238019750/
+/traps.c///1238019750/
diff -Naur u-boot-2009.03_orig/lib_m68k/CVS/Entries.Extra.Old u-boot-2009.03/lib_m68k/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/lib_m68k/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_m68k/CVS/Entries.Extra.Old       2009-03-25 15:25:58.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019750/
+/board.c///1238019750/
+/bootm.c///1238019750/
+/cache.c///1238019750/
+/interrupts.c///1238019750/
+/time.c///1238019750/
+/traps.c///1238019750/
diff -Naur u-boot-2009.03_orig/lib_m68k/CVS/Entries.Old u-boot-2009.03/lib_m68k/CVS/Entries.Old
--- u-boot-2009.03_orig/lib_m68k/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_m68k/CVS/Entries.Old     2009-03-25 15:25:58.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/board.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/bootm.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/cache.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/interrupts.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/time.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/traps.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+D
diff -Naur u-boot-2009.03_orig/lib_m68k/CVS/Repository u-boot-2009.03/lib_m68k/CVS/Repository
--- u-boot-2009.03_orig/lib_m68k/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_m68k/CVS/Repository      2009-03-25 15:25:58.274695300 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/lib_m68k
diff -Naur u-boot-2009.03_orig/lib_m68k/CVS/Root u-boot-2009.03/lib_m68k/CVS/Root
--- u-boot-2009.03_orig/lib_m68k/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_m68k/CVS/Root    2009-03-25 15:25:58.274695300 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/lib_microblaze/CVS/Entries u-boot-2009.03/lib_microblaze/CVS/Entries
--- u-boot-2009.03_orig/lib_microblaze/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_microblaze/CVS/Entries   2009-03-25 15:58:16.668539500 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/board.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bootm.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cache.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/time.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/lib_microblaze/CVS/Entries.Extra u-boot-2009.03/lib_microblaze/CVS/Entries.Extra
--- u-boot-2009.03_orig/lib_microblaze/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_microblaze/CVS/Entries.Extra     2009-03-25 15:58:16.684164400 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019750/
+/board.c///1238019750/
+/bootm.c///1238019750/
+/cache.c///1238019750/
+/time.c///1238019750/
diff -Naur u-boot-2009.03_orig/lib_microblaze/CVS/Entries.Extra.Old u-boot-2009.03/lib_microblaze/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/lib_microblaze/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_microblaze/CVS/Entries.Extra.Old 2009-03-25 15:25:58.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019750/
+/board.c///1238019750/
+/bootm.c///1238019750/
+/cache.c///1238019750/
+/time.c///1238019750/
diff -Naur u-boot-2009.03_orig/lib_microblaze/CVS/Entries.Old u-boot-2009.03/lib_microblaze/CVS/Entries.Old
--- u-boot-2009.03_orig/lib_microblaze/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_microblaze/CVS/Entries.Old       2009-03-25 15:25:58.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/board.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/bootm.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/cache.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/time.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+D
diff -Naur u-boot-2009.03_orig/lib_microblaze/CVS/Repository u-boot-2009.03/lib_microblaze/CVS/Repository
--- u-boot-2009.03_orig/lib_microblaze/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_microblaze/CVS/Repository        2009-03-25 15:25:58.415319400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/lib_microblaze
diff -Naur u-boot-2009.03_orig/lib_microblaze/CVS/Root u-boot-2009.03/lib_microblaze/CVS/Root
--- u-boot-2009.03_orig/lib_microblaze/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_microblaze/CVS/Root      2009-03-25 15:25:58.415319400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/lib_mips/CVS/Entries u-boot-2009.03/lib_mips/CVS/Entries
--- u-boot-2009.03_orig/lib_mips/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_mips/CVS/Entries 2009-03-25 15:58:16.762288900 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/board.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bootm.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bootm_qemu_mips.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/time.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/lib_mips/CVS/Entries.Extra u-boot-2009.03/lib_mips/CVS/Entries.Extra
--- u-boot-2009.03_orig/lib_mips/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_mips/CVS/Entries.Extra   2009-03-25 15:58:16.762288900 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019750/
+/board.c///1238019750/
+/bootm.c///1238019750/
+/bootm_qemu_mips.c///1238019750/
+/time.c///1238019750/
diff -Naur u-boot-2009.03_orig/lib_mips/CVS/Entries.Extra.Old u-boot-2009.03/lib_mips/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/lib_mips/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_mips/CVS/Entries.Extra.Old       2009-03-25 15:25:58.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019750/
+/board.c///1238019750/
+/bootm.c///1238019750/
+/bootm_qemu_mips.c///1238019750/
+/time.c///1238019750/
diff -Naur u-boot-2009.03_orig/lib_mips/CVS/Entries.Old u-boot-2009.03/lib_mips/CVS/Entries.Old
--- u-boot-2009.03_orig/lib_mips/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_mips/CVS/Entries.Old     2009-03-25 15:25:58.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/board.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/bootm.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/bootm_qemu_mips.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/time.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+D
diff -Naur u-boot-2009.03_orig/lib_mips/CVS/Repository u-boot-2009.03/lib_mips/CVS/Repository
--- u-boot-2009.03_orig/lib_mips/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_mips/CVS/Repository      2009-03-25 15:25:58.524693700 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/lib_mips
diff -Naur u-boot-2009.03_orig/lib_mips/CVS/Root u-boot-2009.03/lib_mips/CVS/Root
--- u-boot-2009.03_orig/lib_mips/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_mips/CVS/Root    2009-03-25 15:25:58.509068800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/lib_nios/CVS/Entries u-boot-2009.03/lib_nios/CVS/Entries
--- u-boot-2009.03_orig/lib_nios/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_nios/CVS/Entries 2009-03-25 15:58:16.871663200 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/board.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bootm.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cache.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/divmod.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/math.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mult.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/time.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/lib_nios/CVS/Entries.Extra u-boot-2009.03/lib_nios/CVS/Entries.Extra
--- u-boot-2009.03_orig/lib_nios/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_nios/CVS/Entries.Extra   2009-03-25 15:58:16.871663200 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019750/
+/board.c///1238019750/
+/bootm.c///1238019750/
+/cache.c///1238019750/
+/divmod.c///1238019750/
+/math.h///1238019750/
+/mult.c///1238019750/
+/time.c///1238019750/
diff -Naur u-boot-2009.03_orig/lib_nios/CVS/Entries.Extra.Old u-boot-2009.03/lib_nios/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/lib_nios/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_nios/CVS/Entries.Extra.Old       2009-03-25 15:25:58.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019750/
+/board.c///1238019750/
+/bootm.c///1238019750/
+/cache.c///1238019750/
+/divmod.c///1238019750/
+/math.h///1238019750/
+/mult.c///1238019750/
+/time.c///1238019750/
diff -Naur u-boot-2009.03_orig/lib_nios/CVS/Entries.Old u-boot-2009.03/lib_nios/CVS/Entries.Old
--- u-boot-2009.03_orig/lib_nios/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_nios/CVS/Entries.Old     2009-03-25 15:25:58.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/board.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/bootm.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/cache.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/divmod.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/math.h/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/mult.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/time.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+D
diff -Naur u-boot-2009.03_orig/lib_nios/CVS/Repository u-boot-2009.03/lib_nios/CVS/Repository
--- u-boot-2009.03_orig/lib_nios/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_nios/CVS/Repository      2009-03-25 15:25:58.634068000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/lib_nios
diff -Naur u-boot-2009.03_orig/lib_nios/CVS/Root u-boot-2009.03/lib_nios/CVS/Root
--- u-boot-2009.03_orig/lib_nios/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_nios/CVS/Root    2009-03-25 15:25:58.634068000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/lib_nios2/CVS/Entries u-boot-2009.03/lib_nios2/CVS/Entries
--- u-boot-2009.03_orig/lib_nios2/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_nios2/CVS/Entries        2009-03-25 15:58:16.981037500 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/board.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bootm.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cache.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/divmod.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/math.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mult.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/time.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/lib_nios2/CVS/Entries.Extra u-boot-2009.03/lib_nios2/CVS/Entries.Extra
--- u-boot-2009.03_orig/lib_nios2/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_nios2/CVS/Entries.Extra  2009-03-25 15:58:16.981037500 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019750/
+/board.c///1238019750/
+/bootm.c///1238019750/
+/cache.S///1238019750/
+/divmod.c///1238019750/
+/math.h///1238019750/
+/mult.c///1238019750/
+/time.c///1238019750/
diff -Naur u-boot-2009.03_orig/lib_nios2/CVS/Entries.Extra.Old u-boot-2009.03/lib_nios2/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/lib_nios2/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_nios2/CVS/Entries.Extra.Old      2009-03-25 15:25:58.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019750/
+/board.c///1238019750/
+/bootm.c///1238019750/
+/cache.S///1238019750/
+/divmod.c///1238019750/
+/math.h///1238019750/
+/mult.c///1238019750/
+/time.c///1238019750/
diff -Naur u-boot-2009.03_orig/lib_nios2/CVS/Entries.Old u-boot-2009.03/lib_nios2/CVS/Entries.Old
--- u-boot-2009.03_orig/lib_nios2/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_nios2/CVS/Entries.Old    2009-03-25 15:25:58.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/board.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/bootm.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/cache.S/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/divmod.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/math.h/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/mult.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/time.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+D
diff -Naur u-boot-2009.03_orig/lib_nios2/CVS/Repository u-boot-2009.03/lib_nios2/CVS/Repository
--- u-boot-2009.03_orig/lib_nios2/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_nios2/CVS/Repository     2009-03-25 15:25:58.884066400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/lib_nios2
diff -Naur u-boot-2009.03_orig/lib_nios2/CVS/Root u-boot-2009.03/lib_nios2/CVS/Root
--- u-boot-2009.03_orig/lib_nios2/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_nios2/CVS/Root   2009-03-25 15:25:58.868441500 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/lib_or1200/CVS/Entries u-boot-2009.03/lib_or1200/CVS/Entries
--- u-boot-2009.03_orig/lib_or1200/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_or1200/CVS/Entries       2009-03-25 17:51:53.685755200 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1/Tue Mar 24 20:36:12 2009//
+/board.c/1.1/Thu Mar 26 00:41:25 2009//
+/bootm.c/1.1/Tue Mar 24 20:36:12 2009//
+/cache.c/1.1/Tue Mar 24 20:36:12 2009//
+D
diff -Naur u-boot-2009.03_orig/lib_or1200/CVS/Entries.Extra u-boot-2009.03/lib_or1200/CVS/Entries.Extra
--- u-boot-2009.03_orig/lib_or1200/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_or1200/CVS/Entries.Extra 2009-03-25 17:51:53.685755200 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238028713/
+/board.c///1238028713/
+/bootm.c///1238028713/
+/cache.c///1238028713/
diff -Naur u-boot-2009.03_orig/lib_or1200/CVS/Entries.Extra.Old u-boot-2009.03/lib_or1200/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/lib_or1200/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_or1200/CVS/Entries.Extra.Old     2009-03-25 17:51:34.000000000 -0700
@@ -0,0 +1,4 @@
+/board.c////
+/bootm.c////
+/cache.c////
+/Makefile////
diff -Naur u-boot-2009.03_orig/lib_or1200/CVS/Entries.Old u-boot-2009.03/lib_or1200/CVS/Entries.Old
--- u-boot-2009.03_orig/lib_or1200/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_or1200/CVS/Entries.Old   2009-03-25 17:51:34.000000000 -0700
@@ -0,0 +1,5 @@
+/board.c/0/Initial board.c//
+/bootm.c/0/Initial bootm.c//
+/cache.c/0/Initial cache.c//
+/Makefile/0/Initial Makefile//
+D
diff -Naur u-boot-2009.03_orig/lib_or1200/CVS/Repository u-boot-2009.03/lib_or1200/CVS/Repository
--- u-boot-2009.03_orig/lib_or1200/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_or1200/CVS/Repository    2009-03-25 17:48:29.140189300 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/lib_or1200
diff -Naur u-boot-2009.03_orig/lib_or1200/CVS/Root u-boot-2009.03/lib_or1200/CVS/Root
--- u-boot-2009.03_orig/lib_or1200/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_or1200/CVS/Root  2009-03-25 17:48:29.124564400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/lib_or1200/Makefile u-boot-2009.03/lib_or1200/Makefile
--- u-boot-2009.03_orig/lib_or1200/Makefile     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_or1200/Makefile  2009-03-24 13:36:12.366942000 -0700
@@ -0,0 +1,45 @@
+#
+# (C) Copyright 2003-2006
+# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+#
+# See file CREDITS for list of people who contributed to this
+# project.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA
+#
+
+include $(TOPDIR)/config.mk
+
+LIB    = $(obj)lib$(ARCH).a
+
+SOBJS  =
+
+COBJS  = board.o bootm.o cache.o
+
+SRCS   := $(SOBJS:.o=.S) $(COBJS:.o=.c)
+OBJS   := $(addprefix $(obj),$(SOBJS) $(COBJS))
+
+$(LIB):        $(obj).depend $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
+
+#########################################################################
+
+# defines $(obj).depend target
+include $(SRCTREE)/rules.mk
+
+sinclude $(obj).depend
+
+#########################################################################
diff -Naur u-boot-2009.03_orig/lib_or1200/board.c u-boot-2009.03/lib_or1200/board.c
--- u-boot-2009.03_orig/lib_or1200/board.c      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_or1200/board.c   2009-03-25 17:41:25.221131200 -0700
@@ -0,0 +1,172 @@
+/*
+ * (C) Copyright 2007 Michal Simek
+ * (C) Copyright 2004 Atmark Techno, Inc.
+ *
+ * Michal  SIMEK <monstr@monstr.eu>
+ * Yasushi SHOJI <yashi@atmark-techno.com>
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <common.h>
+#include <command.h>
+#include <malloc.h>
+#include <version.h>
+#include <watchdog.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+const char version_string[] = U_BOOT_VERSION " (" __DATE__ " - " __TIME__ ")";
+
+
+int board_early_init_f (void);
+void set_de1_post( unsigned int post_code );
+void init_de1_post( void );
+int de1_post_incr( void );
+
+
+/*
+ * Begin and End of memory area for malloc(), and current "brk"
+ */
+static ulong mem_malloc_start;
+static ulong mem_malloc_end;
+static ulong mem_malloc_brk;
+
+/*
+ * The Malloc area is immediately below the monitor copy in DRAM
+ * aka CONFIG_SYS_MONITOR_BASE - Note there is no need for reloc_off
+ * as our monitory code is run from SDRAM
+ */
+static void mem_malloc_init (void)
+{
+       mem_malloc_end = (CONFIG_SYS_MALLOC_BASE + CONFIG_SYS_MALLOC_LEN);
+       mem_malloc_start = CONFIG_SYS_MALLOC_BASE;
+       mem_malloc_brk = mem_malloc_start;
+       
+//     memset ((void *)mem_malloc_start, 0, mem_malloc_end - mem_malloc_start);
+       memset ((void *)mem_malloc_start, 0, 4  );
+}
+
+void *sbrk (ptrdiff_t increment)
+{
+       ulong old = mem_malloc_brk;
+       ulong new = old + increment;
+
+       if ((new < mem_malloc_start) || (new > mem_malloc_end)) {
+               return (NULL);
+       }
+       mem_malloc_brk = new;
+       return ((void *)old);
+}
+
+
+/*
+ * All attempts to come up with a "common" initialization sequence
+ * that works for all boards and architectures failed: some of the
+ * requirements are just _too_ different. To get rid of the resulting
+ * mess of board dependend #ifdef'ed code we now make the whole
+ * initialization sequence configurable to the user.
+ *
+ * The requirements for any new initalization function is simple: it
+ * receives a pointer to the "global data" structure as it's only
+ * argument, and returns an integer return code, where 0 means
+ * "continue" and != 0 means "fatal error, hang the system".
+ */
+typedef int (init_fnc_t) (void);
+
+init_fnc_t *init_sequence[] = {
+       env_init,
+  de1_post_incr,
+       serial_init,
+  de1_post_incr,
+       NULL,
+};
+
+void board_init (void)
+{
+       bd_t *bd;
+       init_fnc_t **init_fnc_ptr;
+       gd = (gd_t *) (CONFIG_SYS_GBL_DATA_OFFSET);
+       
+// #if defined(CONFIG_CMD_FLASH)
+//     ulong flash_size = 0;
+// #endif
+
+       memset ((void *)gd, 0, CONFIG_SYS_INIT_DATA_SIZE);
+       gd->bd = (bd_t *) (gd + 1);     /* At end of global data */
+       gd->baudrate = CONFIG_BAUDRATE;
+       bd = gd->bd;
+       bd->bi_baudrate = CONFIG_BAUDRATE;
+       bd->bi_memstart = CONFIG_SYS_SDRAM_BASE;
+       bd->bi_memsize = CONFIG_SYS_SDRAM_SIZE;
+
+  init_de1_post();
+       
+       /* Initialise malloc() area */
+       mem_malloc_init ();
+       
+  set_de1_post(0x00000100);
+  
+  board_early_init_f();
+  
+  set_de1_post(0x00000200);
+
+       for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr) {
+       
+       de1_post_incr();
+               WATCHDOG_RESET ();
+               de1_post_incr();
+               
+               if ((*init_fnc_ptr) () != 0) {
+                       hang ();
+               }
+       }
+       
+  set_de1_post(0x00000300);
+
+// #if defined(CONFIG_CMD_FLASH)
+//     bd->bi_flashstart = CONFIG_SYS_FLASH_BASE;
+//     if (0 < (flash_size = flash_init ())) {
+//             bd->bi_flashsize = flash_size;
+//             bd->bi_flashoffset = CONFIG_SYS_FLASH_BASE + flash_size;
+//     } else {
+//             puts ("Flash init FAILED");
+//             bd->bi_flashstart = 0;
+//             bd->bi_flashsize = 0;
+//             bd->bi_flashoffset = 0;
+//     }
+// #endif
+
+       /* relocate environment function pointers etc. */
+       env_relocate ();
+
+  set_de1_post(0x00000400);
+  
+       /* main_loop */
+       for (;;) {
+               WATCHDOG_RESET ();
+               main_loop ();
+       }
+}
+
+void hang (void)
+{
+       puts ("### ERROR ### Please RESET the board ###\n");
+       for (;;) ;
+}
diff -Naur u-boot-2009.03_orig/lib_or1200/bootm.c u-boot-2009.03/lib_or1200/bootm.c
--- u-boot-2009.03_orig/lib_or1200/bootm.c      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_or1200/bootm.c   2009-03-24 13:36:12.351353000 -0700
@@ -0,0 +1,34 @@
+/*
+ * (C) Copyright 2003, Psyent Corporation <www.psyent.com>
+ * Scott McNutt <smcnutt@psyent.com>
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <common.h>
+#include <command.h>
+
+/* FIXME: Once we find a stable version of uC-linux for nios
+ * we can get this working. ;-)
+ *
+ */
+void do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
+               bootm_headers_t *images)
+{
+}
diff -Naur u-boot-2009.03_orig/lib_or1200/cache.c u-boot-2009.03/lib_or1200/cache.c
--- u-boot-2009.03_orig/lib_or1200/cache.c      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_or1200/cache.c   2009-03-24 13:36:12.351353000 -0700
@@ -0,0 +1,32 @@
+/*
+ * (C) Copyright 2003, Psyent Corporation <www.psyent.com>
+ * Scott McNutt <smcnutt@psyent.com>
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <common.h>
+
+
+void flush_cache (ulong addr, ulong size)
+{
+       /* Nios cache is write-thru -- nothing to do here.
+        */
+       return;
+}
diff -Naur u-boot-2009.03_orig/lib_ppc/CVS/Entries u-boot-2009.03/lib_ppc/CVS/Entries
--- u-boot-2009.03_orig/lib_ppc/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_ppc/CVS/Entries  2009-03-25 15:58:17.106036700 -0700
@@ -0,0 +1,13 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bat_rw.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/board.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bootm.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cache.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/extable.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupts.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/kgdb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ppccache.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ppcstring.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ticks.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/time.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/lib_ppc/CVS/Entries.Extra u-boot-2009.03/lib_ppc/CVS/Entries.Extra
--- u-boot-2009.03_orig/lib_ppc/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_ppc/CVS/Entries.Extra    2009-03-25 15:58:17.106036700 -0700
@@ -0,0 +1,12 @@
+/Makefile///1238019750/
+/bat_rw.c///1238019750/
+/board.c///1238019750/
+/bootm.c///1238019750/
+/cache.c///1238019750/
+/extable.c///1238019750/
+/interrupts.c///1238019750/
+/kgdb.c///1238019750/
+/ppccache.S///1238019750/
+/ppcstring.S///1238019750/
+/ticks.S///1238019750/
+/time.c///1238019750/
diff -Naur u-boot-2009.03_orig/lib_ppc/CVS/Entries.Extra.Old u-boot-2009.03/lib_ppc/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/lib_ppc/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_ppc/CVS/Entries.Extra.Old        2009-03-25 15:25:59.000000000 -0700
@@ -0,0 +1,12 @@
+/Makefile///1238019750/
+/bat_rw.c///1238019750/
+/board.c///1238019750/
+/bootm.c///1238019750/
+/cache.c///1238019750/
+/extable.c///1238019750/
+/interrupts.c///1238019750/
+/kgdb.c///1238019750/
+/ppccache.S///1238019750/
+/ppcstring.S///1238019750/
+/ticks.S///1238019750/
+/time.c///1238019750/
diff -Naur u-boot-2009.03_orig/lib_ppc/CVS/Entries.Old u-boot-2009.03/lib_ppc/CVS/Entries.Old
--- u-boot-2009.03_orig/lib_ppc/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_ppc/CVS/Entries.Old      2009-03-25 15:25:59.000000000 -0700
@@ -0,0 +1,13 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/bat_rw.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/board.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/bootm.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/cache.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/extable.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/interrupts.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/kgdb.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/ppccache.S/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/ppcstring.S/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/ticks.S/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/time.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+D
diff -Naur u-boot-2009.03_orig/lib_ppc/CVS/Repository u-boot-2009.03/lib_ppc/CVS/Repository
--- u-boot-2009.03_orig/lib_ppc/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_ppc/CVS/Repository       2009-03-25 15:25:59.040315400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/lib_ppc
diff -Naur u-boot-2009.03_orig/lib_ppc/CVS/Root u-boot-2009.03/lib_ppc/CVS/Root
--- u-boot-2009.03_orig/lib_ppc/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_ppc/CVS/Root     2009-03-25 15:25:59.040315400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/lib_sh/CVS/Entries u-boot-2009.03/lib_sh/CVS/Entries
--- u-boot-2009.03_orig/lib_sh/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_sh/CVS/Entries   2009-03-25 15:58:17.199786100 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/board.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bootm.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/time.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/time_sh2.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/lib_sh/CVS/Entries.Extra u-boot-2009.03/lib_sh/CVS/Entries.Extra
--- u-boot-2009.03_orig/lib_sh/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_sh/CVS/Entries.Extra     2009-03-25 15:58:17.199786100 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019750/
+/board.c///1238019750/
+/bootm.c///1238019750/
+/time.c///1238019750/
+/time_sh2.c///1238019750/
diff -Naur u-boot-2009.03_orig/lib_sh/CVS/Entries.Extra.Old u-boot-2009.03/lib_sh/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/lib_sh/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_sh/CVS/Entries.Extra.Old 2009-03-25 15:25:59.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019750/
+/board.c///1238019750/
+/bootm.c///1238019750/
+/time.c///1238019750/
+/time_sh2.c///1238019750/
diff -Naur u-boot-2009.03_orig/lib_sh/CVS/Entries.Old u-boot-2009.03/lib_sh/CVS/Entries.Old
--- u-boot-2009.03_orig/lib_sh/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_sh/CVS/Entries.Old       2009-03-25 15:25:59.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/board.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/bootm.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/time.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/time_sh2.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+D
diff -Naur u-boot-2009.03_orig/lib_sh/CVS/Repository u-boot-2009.03/lib_sh/CVS/Repository
--- u-boot-2009.03_orig/lib_sh/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_sh/CVS/Repository        2009-03-25 15:25:59.227814200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/lib_sh
diff -Naur u-boot-2009.03_orig/lib_sh/CVS/Root u-boot-2009.03/lib_sh/CVS/Root
--- u-boot-2009.03_orig/lib_sh/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_sh/CVS/Root      2009-03-25 15:25:59.227814200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/lib_sparc/CVS/Entries u-boot-2009.03/lib_sparc/CVS/Entries
--- u-boot-2009.03_orig/lib_sparc/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_sparc/CVS/Entries        2009-03-25 15:58:17.277910600 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/board.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bootm.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cache.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/interrupts.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/time.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/lib_sparc/CVS/Entries.Extra u-boot-2009.03/lib_sparc/CVS/Entries.Extra
--- u-boot-2009.03_orig/lib_sparc/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_sparc/CVS/Entries.Extra  2009-03-25 15:58:17.277910600 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019750/
+/board.c///1238019750/
+/bootm.c///1238019750/
+/cache.c///1238019750/
+/interrupts.c///1238019750/
+/time.c///1238019750/
diff -Naur u-boot-2009.03_orig/lib_sparc/CVS/Entries.Extra.Old u-boot-2009.03/lib_sparc/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/lib_sparc/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_sparc/CVS/Entries.Extra.Old      2009-03-25 15:25:59.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019750/
+/board.c///1238019750/
+/bootm.c///1238019750/
+/cache.c///1238019750/
+/interrupts.c///1238019750/
+/time.c///1238019750/
diff -Naur u-boot-2009.03_orig/lib_sparc/CVS/Entries.Old u-boot-2009.03/lib_sparc/CVS/Entries.Old
--- u-boot-2009.03_orig/lib_sparc/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_sparc/CVS/Entries.Old    2009-03-25 15:25:59.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/board.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/bootm.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/cache.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/interrupts.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/time.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+D
diff -Naur u-boot-2009.03_orig/lib_sparc/CVS/Repository u-boot-2009.03/lib_sparc/CVS/Repository
--- u-boot-2009.03_orig/lib_sparc/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_sparc/CVS/Repository     2009-03-25 15:25:59.337188500 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/lib_sparc
diff -Naur u-boot-2009.03_orig/lib_sparc/CVS/Root u-boot-2009.03/lib_sparc/CVS/Root
--- u-boot-2009.03_orig/lib_sparc/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/lib_sparc/CVS/Root   2009-03-25 15:25:59.337188500 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/libfdt/CVS/Entries u-boot-2009.03/libfdt/CVS/Entries
--- u-boot-2009.03_orig/libfdt/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/libfdt/CVS/Entries   2009-03-25 15:58:17.387284900 -0700
@@ -0,0 +1,10 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fdt.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fdt_ro.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fdt_rw.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fdt_strerror.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fdt_sw.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fdt_wip.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/libfdt_internal.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/libfdt/CVS/Entries.Extra u-boot-2009.03/libfdt/CVS/Entries.Extra
--- u-boot-2009.03_orig/libfdt/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/libfdt/CVS/Entries.Extra     2009-03-25 15:58:17.387284900 -0700
@@ -0,0 +1,9 @@
+/Makefile///1238019749/
+/README///1238019749/
+/fdt.c///1238019749/
+/fdt_ro.c///1238019749/
+/fdt_rw.c///1238019749/
+/fdt_strerror.c///1238019749/
+/fdt_sw.c///1238019749/
+/fdt_wip.c///1238019749/
+/libfdt_internal.h///1238019749/
diff -Naur u-boot-2009.03_orig/libfdt/CVS/Entries.Extra.Old u-boot-2009.03/libfdt/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/libfdt/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/libfdt/CVS/Entries.Extra.Old 2009-03-25 15:25:59.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile///1238019749/
+/README///1238019749/
+/fdt.c///1238019749/
+/fdt_ro.c///1238019749/
+/fdt_rw.c///1238019749/
+/fdt_strerror.c///1238019749/
+/fdt_sw.c///1238019749/
+/fdt_wip.c///1238019749/
+/libfdt_internal.h///1238019749/
diff -Naur u-boot-2009.03_orig/libfdt/CVS/Entries.Old u-boot-2009.03/libfdt/CVS/Entries.Old
--- u-boot-2009.03_orig/libfdt/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/libfdt/CVS/Entries.Old       2009-03-25 15:25:59.000000000 -0700
@@ -0,0 +1,10 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/README/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/fdt.c/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/fdt_ro.c/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/fdt_rw.c/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/fdt_strerror.c/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/fdt_sw.c/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/fdt_wip.c/1.1.1.1/Wed Mar 25 22:22:29 2009//
+/libfdt_internal.h/1.1.1.1/Wed Mar 25 22:22:29 2009//
+D
diff -Naur u-boot-2009.03_orig/libfdt/CVS/Repository u-boot-2009.03/libfdt/CVS/Repository
--- u-boot-2009.03_orig/libfdt/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/libfdt/CVS/Repository        2009-03-25 15:25:59.446562800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/libfdt
diff -Naur u-boot-2009.03_orig/libfdt/CVS/Root u-boot-2009.03/libfdt/CVS/Root
--- u-boot-2009.03_orig/libfdt/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/libfdt/CVS/Root      2009-03-25 15:25:59.446562800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/nand_spl/CVS/Entries u-boot-2009.03/nand_spl/CVS/Entries
--- u-boot-2009.03_orig/nand_spl/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/CVS/Entries 2009-03-25 15:58:18.152905000 -0700
@@ -0,0 +1,3 @@
+D/board////
+/nand_boot.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nand_boot_fsl_elbc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
diff -Naur u-boot-2009.03_orig/nand_spl/CVS/Entries.Extra u-boot-2009.03/nand_spl/CVS/Entries.Extra
--- u-boot-2009.03_orig/nand_spl/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/CVS/Entries.Extra   2009-03-25 15:58:18.152905000 -0700
@@ -0,0 +1,3 @@
+D/board////
+/nand_boot.c///1238019750/
+/nand_boot_fsl_elbc.c///1238019750/
diff -Naur u-boot-2009.03_orig/nand_spl/CVS/Entries.Extra.Old u-boot-2009.03/nand_spl/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/nand_spl/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/CVS/Entries.Extra.Old       2009-03-25 15:26:01.000000000 -0700
@@ -0,0 +1,3 @@
+/nand_boot.c///1238019750/
+/nand_boot_fsl_elbc.c///1238019750/
+D/board////
diff -Naur u-boot-2009.03_orig/nand_spl/CVS/Entries.Old u-boot-2009.03/nand_spl/CVS/Entries.Old
--- u-boot-2009.03_orig/nand_spl/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/CVS/Entries.Old     2009-03-25 15:26:01.000000000 -0700
@@ -0,0 +1,3 @@
+/nand_boot.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/nand_boot_fsl_elbc.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+D/board////
diff -Naur u-boot-2009.03_orig/nand_spl/CVS/Repository u-boot-2009.03/nand_spl/CVS/Repository
--- u-boot-2009.03_orig/nand_spl/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/CVS/Repository      2009-03-25 15:25:59.618436700 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/nand_spl
diff -Naur u-boot-2009.03_orig/nand_spl/CVS/Root u-boot-2009.03/nand_spl/CVS/Root
--- u-boot-2009.03_orig/nand_spl/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/CVS/Root    2009-03-25 15:25:59.618436700 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/nand_spl/board/CVS/Entries u-boot-2009.03/nand_spl/board/CVS/Entries
--- u-boot-2009.03_orig/nand_spl/board/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/CVS/Entries   2009-03-25 15:26:01.212176500 -0700
@@ -0,0 +1,4 @@
+D/amcc////
+D/freescale////
+D/samsung////
+D/sheldon////
diff -Naur u-boot-2009.03_orig/nand_spl/board/CVS/Entries.Extra u-boot-2009.03/nand_spl/board/CVS/Entries.Extra
--- u-boot-2009.03_orig/nand_spl/board/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/CVS/Entries.Extra     2009-03-25 15:26:01.212176500 -0700
@@ -0,0 +1,4 @@
+D/amcc////
+D/freescale////
+D/samsung////
+D/sheldon////
diff -Naur u-boot-2009.03_orig/nand_spl/board/CVS/Repository u-boot-2009.03/nand_spl/board/CVS/Repository
--- u-boot-2009.03_orig/nand_spl/board/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/CVS/Repository        2009-03-25 15:25:59.665311400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/nand_spl/board
diff -Naur u-boot-2009.03_orig/nand_spl/board/CVS/Root u-boot-2009.03/nand_spl/board/CVS/Root
--- u-boot-2009.03_orig/nand_spl/board/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/CVS/Root      2009-03-25 15:25:59.665311400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/nand_spl/board/amcc/CVS/Entries u-boot-2009.03/nand_spl/board/amcc/CVS/Entries
--- u-boot-2009.03_orig/nand_spl/board/amcc/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/amcc/CVS/Entries      2009-03-25 15:26:00.368431900 -0700
@@ -0,0 +1,5 @@
+D/acadia////
+D/bamboo////
+D/canyonlands////
+D/kilauea////
+D/sequoia////
diff -Naur u-boot-2009.03_orig/nand_spl/board/amcc/CVS/Entries.Extra u-boot-2009.03/nand_spl/board/amcc/CVS/Entries.Extra
--- u-boot-2009.03_orig/nand_spl/board/amcc/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/amcc/CVS/Entries.Extra        2009-03-25 15:26:00.368431900 -0700
@@ -0,0 +1,5 @@
+D/acadia////
+D/bamboo////
+D/canyonlands////
+D/kilauea////
+D/sequoia////
diff -Naur u-boot-2009.03_orig/nand_spl/board/amcc/CVS/Repository u-boot-2009.03/nand_spl/board/amcc/CVS/Repository
--- u-boot-2009.03_orig/nand_spl/board/amcc/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/amcc/CVS/Repository   2009-03-25 15:25:59.727811000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/nand_spl/board/amcc
diff -Naur u-boot-2009.03_orig/nand_spl/board/amcc/CVS/Root u-boot-2009.03/nand_spl/board/amcc/CVS/Root
--- u-boot-2009.03_orig/nand_spl/board/amcc/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/amcc/CVS/Root 2009-03-25 15:25:59.712186100 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/nand_spl/board/amcc/acadia/CVS/Entries u-boot-2009.03/nand_spl/board/amcc/acadia/CVS/Entries
--- u-boot-2009.03_orig/nand_spl/board/amcc/acadia/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/amcc/acadia/CVS/Entries       2009-03-25 15:58:17.512284100 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/nand_spl/board/amcc/acadia/CVS/Entries.Extra u-boot-2009.03/nand_spl/board/amcc/acadia/CVS/Entries.Extra
--- u-boot-2009.03_orig/nand_spl/board/amcc/acadia/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/amcc/acadia/CVS/Entries.Extra 2009-03-25 15:58:17.512284100 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019750/
+/config.mk///1238019750/
+/u-boot.lds///1238019750/
diff -Naur u-boot-2009.03_orig/nand_spl/board/amcc/acadia/CVS/Entries.Extra.Old u-boot-2009.03/nand_spl/board/amcc/acadia/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/nand_spl/board/amcc/acadia/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/amcc/acadia/CVS/Entries.Extra.Old     2009-03-25 15:25:59.000000000 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019750/
+/config.mk///1238019750/
+/u-boot.lds///1238019750/
diff -Naur u-boot-2009.03_orig/nand_spl/board/amcc/acadia/CVS/Entries.Old u-boot-2009.03/nand_spl/board/amcc/acadia/CVS/Entries.Old
--- u-boot-2009.03_orig/nand_spl/board/amcc/acadia/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/amcc/acadia/CVS/Entries.Old   2009-03-25 15:25:59.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:22:30 2009//
+D
diff -Naur u-boot-2009.03_orig/nand_spl/board/amcc/acadia/CVS/Repository u-boot-2009.03/nand_spl/board/amcc/acadia/CVS/Repository
--- u-boot-2009.03_orig/nand_spl/board/amcc/acadia/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/amcc/acadia/CVS/Repository    2009-03-25 15:25:59.899684900 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/nand_spl/board/amcc/acadia
diff -Naur u-boot-2009.03_orig/nand_spl/board/amcc/acadia/CVS/Root u-boot-2009.03/nand_spl/board/amcc/acadia/CVS/Root
--- u-boot-2009.03_orig/nand_spl/board/amcc/acadia/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/amcc/acadia/CVS/Root  2009-03-25 15:25:59.884060000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/nand_spl/board/amcc/bamboo/CVS/Entries u-boot-2009.03/nand_spl/board/amcc/bamboo/CVS/Entries
--- u-boot-2009.03_orig/nand_spl/board/amcc/bamboo/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/amcc/bamboo/CVS/Entries       2009-03-25 15:58:17.590408600 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sdram.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/nand_spl/board/amcc/bamboo/CVS/Entries.Extra u-boot-2009.03/nand_spl/board/amcc/bamboo/CVS/Entries.Extra
--- u-boot-2009.03_orig/nand_spl/board/amcc/bamboo/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/amcc/bamboo/CVS/Entries.Extra 2009-03-25 15:58:17.590408600 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019750/
+/config.mk///1238019750/
+/sdram.c///1238019750/
+/u-boot.lds///1238019750/
diff -Naur u-boot-2009.03_orig/nand_spl/board/amcc/bamboo/CVS/Entries.Extra.Old u-boot-2009.03/nand_spl/board/amcc/bamboo/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/nand_spl/board/amcc/bamboo/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/amcc/bamboo/CVS/Entries.Extra.Old     2009-03-25 15:26:00.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019750/
+/config.mk///1238019750/
+/sdram.c///1238019750/
+/u-boot.lds///1238019750/
diff -Naur u-boot-2009.03_orig/nand_spl/board/amcc/bamboo/CVS/Entries.Old u-boot-2009.03/nand_spl/board/amcc/bamboo/CVS/Entries.Old
--- u-boot-2009.03_orig/nand_spl/board/amcc/bamboo/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/amcc/bamboo/CVS/Entries.Old   2009-03-25 15:26:00.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/sdram.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:22:30 2009//
+D
diff -Naur u-boot-2009.03_orig/nand_spl/board/amcc/bamboo/CVS/Repository u-boot-2009.03/nand_spl/board/amcc/bamboo/CVS/Repository
--- u-boot-2009.03_orig/nand_spl/board/amcc/bamboo/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/amcc/bamboo/CVS/Repository    2009-03-25 15:26:00.009059200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/nand_spl/board/amcc/bamboo
diff -Naur u-boot-2009.03_orig/nand_spl/board/amcc/bamboo/CVS/Root u-boot-2009.03/nand_spl/board/amcc/bamboo/CVS/Root
--- u-boot-2009.03_orig/nand_spl/board/amcc/bamboo/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/amcc/bamboo/CVS/Root  2009-03-25 15:25:59.993434300 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/nand_spl/board/amcc/canyonlands/CVS/Entries u-boot-2009.03/nand_spl/board/amcc/canyonlands/CVS/Entries
--- u-boot-2009.03_orig/nand_spl/board/amcc/canyonlands/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/amcc/canyonlands/CVS/Entries  2009-03-25 15:58:17.668533100 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ddr2_fixed.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/nand_spl/board/amcc/canyonlands/CVS/Entries.Extra u-boot-2009.03/nand_spl/board/amcc/canyonlands/CVS/Entries.Extra
--- u-boot-2009.03_orig/nand_spl/board/amcc/canyonlands/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/amcc/canyonlands/CVS/Entries.Extra    2009-03-25 15:58:17.668533100 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019750/
+/config.mk///1238019750/
+/ddr2_fixed.c///1238019750/
+/u-boot.lds///1238019750/
diff -Naur u-boot-2009.03_orig/nand_spl/board/amcc/canyonlands/CVS/Entries.Extra.Old u-boot-2009.03/nand_spl/board/amcc/canyonlands/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/nand_spl/board/amcc/canyonlands/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/amcc/canyonlands/CVS/Entries.Extra.Old        2009-03-25 15:26:00.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019750/
+/config.mk///1238019750/
+/ddr2_fixed.c///1238019750/
+/u-boot.lds///1238019750/
diff -Naur u-boot-2009.03_orig/nand_spl/board/amcc/canyonlands/CVS/Entries.Old u-boot-2009.03/nand_spl/board/amcc/canyonlands/CVS/Entries.Old
--- u-boot-2009.03_orig/nand_spl/board/amcc/canyonlands/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/amcc/canyonlands/CVS/Entries.Old      2009-03-25 15:26:00.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/ddr2_fixed.c/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:22:30 2009//
+D
diff -Naur u-boot-2009.03_orig/nand_spl/board/amcc/canyonlands/CVS/Repository u-boot-2009.03/nand_spl/board/amcc/canyonlands/CVS/Repository
--- u-boot-2009.03_orig/nand_spl/board/amcc/canyonlands/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/amcc/canyonlands/CVS/Repository       2009-03-25 15:26:00.102808600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/nand_spl/board/amcc/canyonlands
diff -Naur u-boot-2009.03_orig/nand_spl/board/amcc/canyonlands/CVS/Root u-boot-2009.03/nand_spl/board/amcc/canyonlands/CVS/Root
--- u-boot-2009.03_orig/nand_spl/board/amcc/canyonlands/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/amcc/canyonlands/CVS/Root     2009-03-25 15:26:00.102808600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/nand_spl/board/amcc/kilauea/CVS/Entries u-boot-2009.03/nand_spl/board/amcc/kilauea/CVS/Entries
--- u-boot-2009.03_orig/nand_spl/board/amcc/kilauea/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/amcc/kilauea/CVS/Entries      2009-03-25 15:58:17.746657600 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/nand_spl/board/amcc/kilauea/CVS/Entries.Extra u-boot-2009.03/nand_spl/board/amcc/kilauea/CVS/Entries.Extra
--- u-boot-2009.03_orig/nand_spl/board/amcc/kilauea/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/amcc/kilauea/CVS/Entries.Extra        2009-03-25 15:58:17.762282500 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019751/
+/config.mk///1238019750/
+/u-boot.lds///1238019751/
diff -Naur u-boot-2009.03_orig/nand_spl/board/amcc/kilauea/CVS/Entries.Extra.Old u-boot-2009.03/nand_spl/board/amcc/kilauea/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/nand_spl/board/amcc/kilauea/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/amcc/kilauea/CVS/Entries.Extra.Old    2009-03-25 15:26:00.000000000 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019751/
+/config.mk///1238019750/
+/u-boot.lds///1238019751/
diff -Naur u-boot-2009.03_orig/nand_spl/board/amcc/kilauea/CVS/Entries.Old u-boot-2009.03/nand_spl/board/amcc/kilauea/CVS/Entries.Old
--- u-boot-2009.03_orig/nand_spl/board/amcc/kilauea/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/amcc/kilauea/CVS/Entries.Old  2009-03-25 15:26:00.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:22:30 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:22:31 2009//
+D
diff -Naur u-boot-2009.03_orig/nand_spl/board/amcc/kilauea/CVS/Repository u-boot-2009.03/nand_spl/board/amcc/kilauea/CVS/Repository
--- u-boot-2009.03_orig/nand_spl/board/amcc/kilauea/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/amcc/kilauea/CVS/Repository   2009-03-25 15:26:00.196558000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/nand_spl/board/amcc/kilauea
diff -Naur u-boot-2009.03_orig/nand_spl/board/amcc/kilauea/CVS/Root u-boot-2009.03/nand_spl/board/amcc/kilauea/CVS/Root
--- u-boot-2009.03_orig/nand_spl/board/amcc/kilauea/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/amcc/kilauea/CVS/Root 2009-03-25 15:26:00.196558000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/nand_spl/board/amcc/sequoia/CVS/Entries u-boot-2009.03/nand_spl/board/amcc/sequoia/CVS/Entries
--- u-boot-2009.03_orig/nand_spl/board/amcc/sequoia/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/amcc/sequoia/CVS/Entries      2009-03-25 15:58:17.824782100 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/nand_spl/board/amcc/sequoia/CVS/Entries.Extra u-boot-2009.03/nand_spl/board/amcc/sequoia/CVS/Entries.Extra
--- u-boot-2009.03_orig/nand_spl/board/amcc/sequoia/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/amcc/sequoia/CVS/Entries.Extra        2009-03-25 15:58:17.824782100 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019751/
+/config.mk///1238019751/
+/u-boot.lds///1238019751/
diff -Naur u-boot-2009.03_orig/nand_spl/board/amcc/sequoia/CVS/Entries.Extra.Old u-boot-2009.03/nand_spl/board/amcc/sequoia/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/nand_spl/board/amcc/sequoia/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/amcc/sequoia/CVS/Entries.Extra.Old    2009-03-25 15:26:00.000000000 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019751/
+/config.mk///1238019751/
+/u-boot.lds///1238019751/
diff -Naur u-boot-2009.03_orig/nand_spl/board/amcc/sequoia/CVS/Entries.Old u-boot-2009.03/nand_spl/board/amcc/sequoia/CVS/Entries.Old
--- u-boot-2009.03_orig/nand_spl/board/amcc/sequoia/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/amcc/sequoia/CVS/Entries.Old  2009-03-25 15:26:00.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:22:31 2009//
+D
diff -Naur u-boot-2009.03_orig/nand_spl/board/amcc/sequoia/CVS/Repository u-boot-2009.03/nand_spl/board/amcc/sequoia/CVS/Repository
--- u-boot-2009.03_orig/nand_spl/board/amcc/sequoia/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/amcc/sequoia/CVS/Repository   2009-03-25 15:26:00.290307400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/nand_spl/board/amcc/sequoia
diff -Naur u-boot-2009.03_orig/nand_spl/board/amcc/sequoia/CVS/Root u-boot-2009.03/nand_spl/board/amcc/sequoia/CVS/Root
--- u-boot-2009.03_orig/nand_spl/board/amcc/sequoia/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/amcc/sequoia/CVS/Root 2009-03-25 15:26:00.290307400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/nand_spl/board/freescale/CVS/Entries u-boot-2009.03/nand_spl/board/freescale/CVS/Entries
--- u-boot-2009.03_orig/nand_spl/board/freescale/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/freescale/CVS/Entries 2009-03-25 15:26:00.524680900 -0700
@@ -0,0 +1 @@
+D/mpc8313erdb////
diff -Naur u-boot-2009.03_orig/nand_spl/board/freescale/CVS/Entries.Extra u-boot-2009.03/nand_spl/board/freescale/CVS/Entries.Extra
--- u-boot-2009.03_orig/nand_spl/board/freescale/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/freescale/CVS/Entries.Extra   2009-03-25 15:26:00.524680900 -0700
@@ -0,0 +1 @@
+D/mpc8313erdb////
diff -Naur u-boot-2009.03_orig/nand_spl/board/freescale/CVS/Repository u-boot-2009.03/nand_spl/board/freescale/CVS/Repository
--- u-boot-2009.03_orig/nand_spl/board/freescale/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/freescale/CVS/Repository      2009-03-25 15:26:00.415306600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/nand_spl/board/freescale
diff -Naur u-boot-2009.03_orig/nand_spl/board/freescale/CVS/Root u-boot-2009.03/nand_spl/board/freescale/CVS/Root
--- u-boot-2009.03_orig/nand_spl/board/freescale/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/freescale/CVS/Root    2009-03-25 15:26:00.415306600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/nand_spl/board/freescale/mpc8313erdb/CVS/Entries u-boot-2009.03/nand_spl/board/freescale/mpc8313erdb/CVS/Entries
--- u-boot-2009.03_orig/nand_spl/board/freescale/mpc8313erdb/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/freescale/mpc8313erdb/CVS/Entries     2009-03-25 15:58:17.902906600 -0700
@@ -0,0 +1,3 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/nand_spl/board/freescale/mpc8313erdb/CVS/Entries.Extra u-boot-2009.03/nand_spl/board/freescale/mpc8313erdb/CVS/Entries.Extra
--- u-boot-2009.03_orig/nand_spl/board/freescale/mpc8313erdb/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/freescale/mpc8313erdb/CVS/Entries.Extra       2009-03-25 15:58:17.902906600 -0700
@@ -0,0 +1,2 @@
+/Makefile///1238019751/
+/u-boot.lds///1238019751/
diff -Naur u-boot-2009.03_orig/nand_spl/board/freescale/mpc8313erdb/CVS/Entries.Extra.Old u-boot-2009.03/nand_spl/board/freescale/mpc8313erdb/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/nand_spl/board/freescale/mpc8313erdb/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/freescale/mpc8313erdb/CVS/Entries.Extra.Old   2009-03-25 15:26:00.000000000 -0700
@@ -0,0 +1,2 @@
+/Makefile///1238019751/
+/u-boot.lds///1238019751/
diff -Naur u-boot-2009.03_orig/nand_spl/board/freescale/mpc8313erdb/CVS/Entries.Old u-boot-2009.03/nand_spl/board/freescale/mpc8313erdb/CVS/Entries.Old
--- u-boot-2009.03_orig/nand_spl/board/freescale/mpc8313erdb/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/freescale/mpc8313erdb/CVS/Entries.Old 2009-03-25 15:26:00.000000000 -0700
@@ -0,0 +1,3 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:22:31 2009//
+D
diff -Naur u-boot-2009.03_orig/nand_spl/board/freescale/mpc8313erdb/CVS/Repository u-boot-2009.03/nand_spl/board/freescale/mpc8313erdb/CVS/Repository
--- u-boot-2009.03_orig/nand_spl/board/freescale/mpc8313erdb/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/freescale/mpc8313erdb/CVS/Repository  2009-03-25 15:26:00.446556400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/nand_spl/board/freescale/mpc8313erdb
diff -Naur u-boot-2009.03_orig/nand_spl/board/freescale/mpc8313erdb/CVS/Root u-boot-2009.03/nand_spl/board/freescale/mpc8313erdb/CVS/Root
--- u-boot-2009.03_orig/nand_spl/board/freescale/mpc8313erdb/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/freescale/mpc8313erdb/CVS/Root        2009-03-25 15:26:00.446556400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/nand_spl/board/samsung/CVS/Entries u-boot-2009.03/nand_spl/board/samsung/CVS/Entries
--- u-boot-2009.03_orig/nand_spl/board/samsung/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/samsung/CVS/Entries   2009-03-25 15:26:00.743429500 -0700
@@ -0,0 +1 @@
+D/smdk6400////
diff -Naur u-boot-2009.03_orig/nand_spl/board/samsung/CVS/Entries.Extra u-boot-2009.03/nand_spl/board/samsung/CVS/Entries.Extra
--- u-boot-2009.03_orig/nand_spl/board/samsung/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/samsung/CVS/Entries.Extra     2009-03-25 15:26:00.743429500 -0700
@@ -0,0 +1 @@
+D/smdk6400////
diff -Naur u-boot-2009.03_orig/nand_spl/board/samsung/CVS/Repository u-boot-2009.03/nand_spl/board/samsung/CVS/Repository
--- u-boot-2009.03_orig/nand_spl/board/samsung/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/samsung/CVS/Repository        2009-03-25 15:26:00.571555600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/nand_spl/board/samsung
diff -Naur u-boot-2009.03_orig/nand_spl/board/samsung/CVS/Root u-boot-2009.03/nand_spl/board/samsung/CVS/Root
--- u-boot-2009.03_orig/nand_spl/board/samsung/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/samsung/CVS/Root      2009-03-25 15:26:00.555930700 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/nand_spl/board/samsung/smdk6400/CVS/Entries u-boot-2009.03/nand_spl/board/samsung/smdk6400/CVS/Entries
--- u-boot-2009.03_orig/nand_spl/board/samsung/smdk6400/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/samsung/smdk6400/CVS/Entries  2009-03-25 15:58:17.996656000 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/nand_spl/board/samsung/smdk6400/CVS/Entries.Extra u-boot-2009.03/nand_spl/board/samsung/smdk6400/CVS/Entries.Extra
--- u-boot-2009.03_orig/nand_spl/board/samsung/smdk6400/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/samsung/smdk6400/CVS/Entries.Extra    2009-03-25 15:58:17.996656000 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019751/
+/config.mk///1238019751/
+/u-boot.lds///1238019751/
diff -Naur u-boot-2009.03_orig/nand_spl/board/samsung/smdk6400/CVS/Entries.Extra.Old u-boot-2009.03/nand_spl/board/samsung/smdk6400/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/nand_spl/board/samsung/smdk6400/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/samsung/smdk6400/CVS/Entries.Extra.Old        2009-03-25 15:26:00.000000000 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019751/
+/config.mk///1238019751/
+/u-boot.lds///1238019751/
diff -Naur u-boot-2009.03_orig/nand_spl/board/samsung/smdk6400/CVS/Entries.Old u-boot-2009.03/nand_spl/board/samsung/smdk6400/CVS/Entries.Old
--- u-boot-2009.03_orig/nand_spl/board/samsung/smdk6400/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/samsung/smdk6400/CVS/Entries.Old      2009-03-25 15:26:00.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:22:31 2009//
+D
diff -Naur u-boot-2009.03_orig/nand_spl/board/samsung/smdk6400/CVS/Repository u-boot-2009.03/nand_spl/board/samsung/smdk6400/CVS/Repository
--- u-boot-2009.03_orig/nand_spl/board/samsung/smdk6400/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/samsung/smdk6400/CVS/Repository       2009-03-25 15:26:00.587180500 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/nand_spl/board/samsung/smdk6400
diff -Naur u-boot-2009.03_orig/nand_spl/board/samsung/smdk6400/CVS/Root u-boot-2009.03/nand_spl/board/samsung/smdk6400/CVS/Root
--- u-boot-2009.03_orig/nand_spl/board/samsung/smdk6400/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/samsung/smdk6400/CVS/Root     2009-03-25 15:26:00.587180500 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/nand_spl/board/sheldon/CVS/Entries u-boot-2009.03/nand_spl/board/sheldon/CVS/Entries
--- u-boot-2009.03_orig/nand_spl/board/sheldon/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/sheldon/CVS/Entries   2009-03-25 15:26:01.180926700 -0700
@@ -0,0 +1 @@
+D/simpc8313////
diff -Naur u-boot-2009.03_orig/nand_spl/board/sheldon/CVS/Entries.Extra u-boot-2009.03/nand_spl/board/sheldon/CVS/Entries.Extra
--- u-boot-2009.03_orig/nand_spl/board/sheldon/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/sheldon/CVS/Entries.Extra     2009-03-25 15:26:01.180926700 -0700
@@ -0,0 +1 @@
+D/simpc8313////
diff -Naur u-boot-2009.03_orig/nand_spl/board/sheldon/CVS/Repository u-boot-2009.03/nand_spl/board/sheldon/CVS/Repository
--- u-boot-2009.03_orig/nand_spl/board/sheldon/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/sheldon/CVS/Repository        2009-03-25 15:26:00.993427900 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/nand_spl/board/sheldon
diff -Naur u-boot-2009.03_orig/nand_spl/board/sheldon/CVS/Root u-boot-2009.03/nand_spl/board/sheldon/CVS/Root
--- u-boot-2009.03_orig/nand_spl/board/sheldon/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/sheldon/CVS/Root      2009-03-25 15:26:00.977803000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/nand_spl/board/sheldon/simpc8313/CVS/Entries u-boot-2009.03/nand_spl/board/sheldon/simpc8313/CVS/Entries
--- u-boot-2009.03_orig/nand_spl/board/sheldon/simpc8313/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/sheldon/simpc8313/CVS/Entries 2009-03-25 15:58:18.106030300 -0700
@@ -0,0 +1,3 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/nand_spl/board/sheldon/simpc8313/CVS/Entries.Extra u-boot-2009.03/nand_spl/board/sheldon/simpc8313/CVS/Entries.Extra
--- u-boot-2009.03_orig/nand_spl/board/sheldon/simpc8313/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/sheldon/simpc8313/CVS/Entries.Extra   2009-03-25 15:58:18.121655200 -0700
@@ -0,0 +1,2 @@
+/Makefile///1238019751/
+/u-boot.lds///1238019751/
diff -Naur u-boot-2009.03_orig/nand_spl/board/sheldon/simpc8313/CVS/Entries.Extra.Old u-boot-2009.03/nand_spl/board/sheldon/simpc8313/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/nand_spl/board/sheldon/simpc8313/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/sheldon/simpc8313/CVS/Entries.Extra.Old       2009-03-25 15:26:01.000000000 -0700
@@ -0,0 +1,2 @@
+/Makefile///1238019751/
+/u-boot.lds///1238019751/
diff -Naur u-boot-2009.03_orig/nand_spl/board/sheldon/simpc8313/CVS/Entries.Old u-boot-2009.03/nand_spl/board/sheldon/simpc8313/CVS/Entries.Old
--- u-boot-2009.03_orig/nand_spl/board/sheldon/simpc8313/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/sheldon/simpc8313/CVS/Entries.Old     2009-03-25 15:26:01.000000000 -0700
@@ -0,0 +1,3 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/u-boot.lds/1.1.1.1/Wed Mar 25 22:22:31 2009//
+D
diff -Naur u-boot-2009.03_orig/nand_spl/board/sheldon/simpc8313/CVS/Repository u-boot-2009.03/nand_spl/board/sheldon/simpc8313/CVS/Repository
--- u-boot-2009.03_orig/nand_spl/board/sheldon/simpc8313/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/sheldon/simpc8313/CVS/Repository      2009-03-25 15:26:01.102802200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/nand_spl/board/sheldon/simpc8313
diff -Naur u-boot-2009.03_orig/nand_spl/board/sheldon/simpc8313/CVS/Root u-boot-2009.03/nand_spl/board/sheldon/simpc8313/CVS/Root
--- u-boot-2009.03_orig/nand_spl/board/sheldon/simpc8313/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/nand_spl/board/sheldon/simpc8313/CVS/Root    2009-03-25 15:26:01.102802200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/net/CVS/Entries u-boot-2009.03/net/CVS/Entries
--- u-boot-2009.03_orig/net/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/net/CVS/Entries      2009-03-25 15:58:18.293529100 -0700
@@ -0,0 +1,14 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bootp.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bootp.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/eth.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/net.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nfs.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/nfs.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/rarp.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/rarp.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sntp.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sntp.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tftp.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tftp.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/net/CVS/Entries.Extra u-boot-2009.03/net/CVS/Entries.Extra
--- u-boot-2009.03_orig/net/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/net/CVS/Entries.Extra        2009-03-25 15:58:18.293529100 -0700
@@ -0,0 +1,13 @@
+/Makefile///1238019751/
+/bootp.c///1238019751/
+/bootp.h///1238019751/
+/eth.c///1238019751/
+/net.c///1238019751/
+/nfs.c///1238019751/
+/nfs.h///1238019751/
+/rarp.c///1238019751/
+/rarp.h///1238019751/
+/sntp.c///1238019751/
+/sntp.h///1238019751/
+/tftp.c///1238019751/
+/tftp.h///1238019751/
diff -Naur u-boot-2009.03_orig/net/CVS/Entries.Extra.Old u-boot-2009.03/net/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/net/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/net/CVS/Entries.Extra.Old    2009-03-25 15:26:01.000000000 -0700
@@ -0,0 +1,13 @@
+/Makefile///1238019751/
+/bootp.c///1238019751/
+/bootp.h///1238019751/
+/eth.c///1238019751/
+/net.c///1238019751/
+/nfs.c///1238019751/
+/nfs.h///1238019751/
+/rarp.c///1238019751/
+/rarp.h///1238019751/
+/sntp.c///1238019751/
+/sntp.h///1238019751/
+/tftp.c///1238019751/
+/tftp.h///1238019751/
diff -Naur u-boot-2009.03_orig/net/CVS/Entries.Old u-boot-2009.03/net/CVS/Entries.Old
--- u-boot-2009.03_orig/net/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/net/CVS/Entries.Old  2009-03-25 15:26:01.000000000 -0700
@@ -0,0 +1,14 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/bootp.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/bootp.h/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/eth.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/net.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/nfs.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/nfs.h/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/rarp.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/rarp.h/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/sntp.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/sntp.h/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/tftp.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/tftp.h/1.1.1.1/Wed Mar 25 22:22:31 2009//
+D
diff -Naur u-boot-2009.03_orig/net/CVS/Repository u-boot-2009.03/net/CVS/Repository
--- u-boot-2009.03_orig/net/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/net/CVS/Repository   2009-03-25 15:26:01.290301000 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/net
diff -Naur u-boot-2009.03_orig/net/CVS/Root u-boot-2009.03/net/CVS/Root
--- u-boot-2009.03_orig/net/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/net/CVS/Root 2009-03-25 15:26:01.290301000 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/onenand_ipl/CVS/Entries u-boot-2009.03/onenand_ipl/CVS/Entries
--- u-boot-2009.03_orig/onenand_ipl/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/onenand_ipl/CVS/Entries      2009-03-25 15:58:18.449778100 -0700
@@ -0,0 +1,4 @@
+D/board////
+/onenand_boot.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/onenand_ipl.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/onenand_read.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
diff -Naur u-boot-2009.03_orig/onenand_ipl/CVS/Entries.Extra u-boot-2009.03/onenand_ipl/CVS/Entries.Extra
--- u-boot-2009.03_orig/onenand_ipl/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/onenand_ipl/CVS/Entries.Extra        2009-03-25 15:58:18.449778100 -0700
@@ -0,0 +1,4 @@
+D/board////
+/onenand_boot.c///1238019751/
+/onenand_ipl.h///1238019751/
+/onenand_read.c///1238019751/
diff -Naur u-boot-2009.03_orig/onenand_ipl/CVS/Entries.Extra.Old u-boot-2009.03/onenand_ipl/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/onenand_ipl/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/onenand_ipl/CVS/Entries.Extra.Old    2009-03-25 15:26:01.000000000 -0700
@@ -0,0 +1,4 @@
+/onenand_boot.c///1238019751/
+/onenand_ipl.h///1238019751/
+/onenand_read.c///1238019751/
+D/board////
diff -Naur u-boot-2009.03_orig/onenand_ipl/CVS/Entries.Old u-boot-2009.03/onenand_ipl/CVS/Entries.Old
--- u-boot-2009.03_orig/onenand_ipl/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/onenand_ipl/CVS/Entries.Old  2009-03-25 15:26:01.000000000 -0700
@@ -0,0 +1,4 @@
+/onenand_boot.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/onenand_ipl.h/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/onenand_read.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+D/board////
diff -Naur u-boot-2009.03_orig/onenand_ipl/CVS/Repository u-boot-2009.03/onenand_ipl/CVS/Repository
--- u-boot-2009.03_orig/onenand_ipl/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/onenand_ipl/CVS/Repository   2009-03-25 15:26:01.477799800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/onenand_ipl
diff -Naur u-boot-2009.03_orig/onenand_ipl/CVS/Root u-boot-2009.03/onenand_ipl/CVS/Root
--- u-boot-2009.03_orig/onenand_ipl/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/onenand_ipl/CVS/Root 2009-03-25 15:26:01.477799800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/onenand_ipl/board/CVS/Entries u-boot-2009.03/onenand_ipl/board/CVS/Entries
--- u-boot-2009.03_orig/onenand_ipl/board/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/onenand_ipl/board/CVS/Entries        2009-03-25 15:26:01.649673700 -0700
@@ -0,0 +1 @@
+D/apollon////
diff -Naur u-boot-2009.03_orig/onenand_ipl/board/CVS/Entries.Extra u-boot-2009.03/onenand_ipl/board/CVS/Entries.Extra
--- u-boot-2009.03_orig/onenand_ipl/board/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/onenand_ipl/board/CVS/Entries.Extra  2009-03-25 15:26:01.665298600 -0700
@@ -0,0 +1 @@
+D/apollon////
diff -Naur u-boot-2009.03_orig/onenand_ipl/board/CVS/Repository u-boot-2009.03/onenand_ipl/board/CVS/Repository
--- u-boot-2009.03_orig/onenand_ipl/board/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/onenand_ipl/board/CVS/Repository     2009-03-25 15:26:01.524674500 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/onenand_ipl/board
diff -Naur u-boot-2009.03_orig/onenand_ipl/board/CVS/Root u-boot-2009.03/onenand_ipl/board/CVS/Root
--- u-boot-2009.03_orig/onenand_ipl/board/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/onenand_ipl/board/CVS/Root   2009-03-25 15:26:01.524674500 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/onenand_ipl/board/apollon/CVS/Entries u-boot-2009.03/onenand_ipl/board/apollon/CVS/Entries
--- u-boot-2009.03_orig/onenand_ipl/board/apollon/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/onenand_ipl/board/apollon/CVS/Entries        2009-03-25 15:58:18.402903400 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/apollon.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/low_levelinit.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/u-boot.onenand.lds/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/onenand_ipl/board/apollon/CVS/Entries.Extra u-boot-2009.03/onenand_ipl/board/apollon/CVS/Entries.Extra
--- u-boot-2009.03_orig/onenand_ipl/board/apollon/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/onenand_ipl/board/apollon/CVS/Entries.Extra  2009-03-25 15:58:18.402903400 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019751/
+/apollon.c///1238019751/
+/config.mk///1238019751/
+/low_levelinit.S///1238019751/
+/u-boot.onenand.lds///1238019751/
diff -Naur u-boot-2009.03_orig/onenand_ipl/board/apollon/CVS/Entries.Extra.Old u-boot-2009.03/onenand_ipl/board/apollon/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/onenand_ipl/board/apollon/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/onenand_ipl/board/apollon/CVS/Entries.Extra.Old      2009-03-25 15:26:01.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019751/
+/apollon.c///1238019751/
+/config.mk///1238019751/
+/low_levelinit.S///1238019751/
+/u-boot.onenand.lds///1238019751/
diff -Naur u-boot-2009.03_orig/onenand_ipl/board/apollon/CVS/Entries.Old u-boot-2009.03/onenand_ipl/board/apollon/CVS/Entries.Old
--- u-boot-2009.03_orig/onenand_ipl/board/apollon/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/onenand_ipl/board/apollon/CVS/Entries.Old    2009-03-25 15:26:01.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/apollon.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/config.mk/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/low_levelinit.S/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/u-boot.onenand.lds/1.1.1.1/Wed Mar 25 22:22:31 2009//
+D
diff -Naur u-boot-2009.03_orig/onenand_ipl/board/apollon/CVS/Repository u-boot-2009.03/onenand_ipl/board/apollon/CVS/Repository
--- u-boot-2009.03_orig/onenand_ipl/board/apollon/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/onenand_ipl/board/apollon/CVS/Repository     2009-03-25 15:26:01.540299400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/onenand_ipl/board/apollon
diff -Naur u-boot-2009.03_orig/onenand_ipl/board/apollon/CVS/Root u-boot-2009.03/onenand_ipl/board/apollon/CVS/Root
--- u-boot-2009.03_orig/onenand_ipl/board/apollon/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/onenand_ipl/board/apollon/CVS/Root   2009-03-25 15:26:01.540299400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/or1200_config.mk u-boot-2009.03/or1200_config.mk
--- u-boot-2009.03_orig/or1200_config.mk        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/or1200_config.mk     2008-09-18 09:46:16.250000000 -0700
@@ -0,0 +1,28 @@
+#
+# (C) Copyright 2004 Atmark Techno, Inc.
+#
+# Yasushi SHOJI <yashi@atmark-techno.com>
+#
+# See file CREDITS for list of people who contributed to this
+# project.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA
+#
+
+PLATFORM_CPPFLAGS += -D__or1200__
+
+SYM_PREFIX = _
+
diff -Naur u-boot-2009.03_orig/post/CVS/Entries u-boot-2009.03/post/CVS/Entries
--- u-boot-2009.03_orig/post/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/CVS/Entries     2009-03-25 15:58:19.434146800 -0700
@@ -0,0 +1,8 @@
+D/board////
+D/cpu////
+D/drivers////
+D/lib_ppc////
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/post.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/rules.mk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/tests.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
diff -Naur u-boot-2009.03_orig/post/CVS/Entries.Extra u-boot-2009.03/post/CVS/Entries.Extra
--- u-boot-2009.03_orig/post/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/CVS/Entries.Extra       2009-03-25 15:58:19.434146800 -0700
@@ -0,0 +1,8 @@
+D/board////
+D/cpu////
+D/drivers////
+D/lib_ppc////
+/Makefile///1238019751/
+/post.c///1238019751/
+/rules.mk///1238019751/
+/tests.c///1238019751/
diff -Naur u-boot-2009.03_orig/post/CVS/Entries.Extra.Old u-boot-2009.03/post/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/post/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/CVS/Entries.Extra.Old   2009-03-25 15:26:03.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019751/
+/post.c///1238019751/
+/rules.mk///1238019751/
+/tests.c///1238019751/
+D/board////
+D/cpu////
+D/drivers////
+D/lib_ppc////
diff -Naur u-boot-2009.03_orig/post/CVS/Entries.Old u-boot-2009.03/post/CVS/Entries.Old
--- u-boot-2009.03_orig/post/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/CVS/Entries.Old 2009-03-25 15:26:03.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/post.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/rules.mk/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/tests.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+D/board////
+D/cpu////
+D/drivers////
+D/lib_ppc////
diff -Naur u-boot-2009.03_orig/post/CVS/Repository u-boot-2009.03/post/CVS/Repository
--- u-boot-2009.03_orig/post/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/CVS/Repository  2009-03-25 15:26:02.040296200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/post
diff -Naur u-boot-2009.03_orig/post/CVS/Root u-boot-2009.03/post/CVS/Root
--- u-boot-2009.03_orig/post/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/CVS/Root        2009-03-25 15:26:02.024671300 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/post/board/CVS/Entries u-boot-2009.03/post/board/CVS/Entries
--- u-boot-2009.03_orig/post/board/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/board/CVS/Entries       2009-03-25 15:26:02.415293800 -0700
@@ -0,0 +1,3 @@
+D/lwmon////
+D/lwmon5////
+D/netta////
diff -Naur u-boot-2009.03_orig/post/board/CVS/Entries.Extra u-boot-2009.03/post/board/CVS/Entries.Extra
--- u-boot-2009.03_orig/post/board/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/board/CVS/Entries.Extra 2009-03-25 15:26:02.430918700 -0700
@@ -0,0 +1,3 @@
+D/lwmon////
+D/lwmon5////
+D/netta////
diff -Naur u-boot-2009.03_orig/post/board/CVS/Repository u-boot-2009.03/post/board/CVS/Repository
--- u-boot-2009.03_orig/post/board/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/board/CVS/Repository    2009-03-25 15:26:02.102795800 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/post/board
diff -Naur u-boot-2009.03_orig/post/board/CVS/Root u-boot-2009.03/post/board/CVS/Root
--- u-boot-2009.03_orig/post/board/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/board/CVS/Root  2009-03-25 15:26:02.087170900 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/post/board/lwmon/CVS/Entries u-boot-2009.03/post/board/lwmon/CVS/Entries
--- u-boot-2009.03_orig/post/board/lwmon/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/board/lwmon/CVS/Entries 2009-03-25 15:58:18.559152400 -0700
@@ -0,0 +1,3 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sysmon.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/post/board/lwmon/CVS/Entries.Extra u-boot-2009.03/post/board/lwmon/CVS/Entries.Extra
--- u-boot-2009.03_orig/post/board/lwmon/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/board/lwmon/CVS/Entries.Extra   2009-03-25 15:58:18.559152400 -0700
@@ -0,0 +1,2 @@
+/Makefile///1238019751/
+/sysmon.c///1238019751/
diff -Naur u-boot-2009.03_orig/post/board/lwmon/CVS/Entries.Extra.Old u-boot-2009.03/post/board/lwmon/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/post/board/lwmon/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/board/lwmon/CVS/Entries.Extra.Old       2009-03-25 15:26:02.000000000 -0700
@@ -0,0 +1,2 @@
+/Makefile///1238019751/
+/sysmon.c///1238019751/
diff -Naur u-boot-2009.03_orig/post/board/lwmon/CVS/Entries.Old u-boot-2009.03/post/board/lwmon/CVS/Entries.Old
--- u-boot-2009.03_orig/post/board/lwmon/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/board/lwmon/CVS/Entries.Old     2009-03-25 15:26:02.000000000 -0700
@@ -0,0 +1,3 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/sysmon.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+D
diff -Naur u-boot-2009.03_orig/post/board/lwmon/CVS/Repository u-boot-2009.03/post/board/lwmon/CVS/Repository
--- u-boot-2009.03_orig/post/board/lwmon/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/board/lwmon/CVS/Repository      2009-03-25 15:26:02.118420700 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/post/board/lwmon
diff -Naur u-boot-2009.03_orig/post/board/lwmon/CVS/Root u-boot-2009.03/post/board/lwmon/CVS/Root
--- u-boot-2009.03_orig/post/board/lwmon/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/board/lwmon/CVS/Root    2009-03-25 15:26:02.118420700 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/post/board/lwmon5/CVS/Entries u-boot-2009.03/post/board/lwmon5/CVS/Entries
--- u-boot-2009.03_orig/post/board/lwmon5/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/board/lwmon5/CVS/Entries        2009-03-25 15:58:18.652901800 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dsp.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dspic.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fpga.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/gdc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/sysmon.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/watchdog.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/post/board/lwmon5/CVS/Entries.Extra u-boot-2009.03/post/board/lwmon5/CVS/Entries.Extra
--- u-boot-2009.03_orig/post/board/lwmon5/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/board/lwmon5/CVS/Entries.Extra  2009-03-25 15:58:18.652901800 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019751/
+/dsp.c///1238019751/
+/dspic.c///1238019751/
+/fpga.c///1238019751/
+/gdc.c///1238019751/
+/sysmon.c///1238019751/
+/watchdog.c///1238019751/
diff -Naur u-boot-2009.03_orig/post/board/lwmon5/CVS/Entries.Extra.Old u-boot-2009.03/post/board/lwmon5/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/post/board/lwmon5/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/board/lwmon5/CVS/Entries.Extra.Old      2009-03-25 15:26:02.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile///1238019751/
+/dsp.c///1238019751/
+/dspic.c///1238019751/
+/fpga.c///1238019751/
+/gdc.c///1238019751/
+/sysmon.c///1238019751/
+/watchdog.c///1238019751/
diff -Naur u-boot-2009.03_orig/post/board/lwmon5/CVS/Entries.Old u-boot-2009.03/post/board/lwmon5/CVS/Entries.Old
--- u-boot-2009.03_orig/post/board/lwmon5/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/board/lwmon5/CVS/Entries.Old    2009-03-25 15:26:02.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/dsp.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/dspic.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/fpga.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/gdc.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/sysmon.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/watchdog.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+D
diff -Naur u-boot-2009.03_orig/post/board/lwmon5/CVS/Repository u-boot-2009.03/post/board/lwmon5/CVS/Repository
--- u-boot-2009.03_orig/post/board/lwmon5/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/board/lwmon5/CVS/Repository     2009-03-25 15:26:02.196545200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/post/board/lwmon5
diff -Naur u-boot-2009.03_orig/post/board/lwmon5/CVS/Root u-boot-2009.03/post/board/lwmon5/CVS/Root
--- u-boot-2009.03_orig/post/board/lwmon5/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/board/lwmon5/CVS/Root   2009-03-25 15:26:02.196545200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/post/board/netta/CVS/Entries u-boot-2009.03/post/board/netta/CVS/Entries
--- u-boot-2009.03_orig/post/board/netta/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/board/netta/CVS/Entries 2009-03-25 15:58:18.731026300 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/codec.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dsp.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/post/board/netta/CVS/Entries.Extra u-boot-2009.03/post/board/netta/CVS/Entries.Extra
--- u-boot-2009.03_orig/post/board/netta/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/board/netta/CVS/Entries.Extra   2009-03-25 15:58:18.731026300 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019751/
+/codec.c///1238019751/
+/dsp.c///1238019751/
diff -Naur u-boot-2009.03_orig/post/board/netta/CVS/Entries.Extra.Old u-boot-2009.03/post/board/netta/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/post/board/netta/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/board/netta/CVS/Entries.Extra.Old       2009-03-25 15:26:02.000000000 -0700
@@ -0,0 +1,3 @@
+/Makefile///1238019751/
+/codec.c///1238019751/
+/dsp.c///1238019751/
diff -Naur u-boot-2009.03_orig/post/board/netta/CVS/Entries.Old u-boot-2009.03/post/board/netta/CVS/Entries.Old
--- u-boot-2009.03_orig/post/board/netta/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/board/netta/CVS/Entries.Old     2009-03-25 15:26:02.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/codec.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/dsp.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+D
diff -Naur u-boot-2009.03_orig/post/board/netta/CVS/Repository u-boot-2009.03/post/board/netta/CVS/Repository
--- u-boot-2009.03_orig/post/board/netta/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/board/netta/CVS/Repository      2009-03-25 15:26:02.337169300 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/post/board/netta
diff -Naur u-boot-2009.03_orig/post/board/netta/CVS/Root u-boot-2009.03/post/board/netta/CVS/Root
--- u-boot-2009.03_orig/post/board/netta/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/board/netta/CVS/Root    2009-03-25 15:26:02.337169300 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/post/cpu/CVS/Entries u-boot-2009.03/post/cpu/CVS/Entries
--- u-boot-2009.03_orig/post/cpu/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/cpu/CVS/Entries 2009-03-25 15:26:02.962165300 -0700
@@ -0,0 +1,2 @@
+D/mpc8xx////
+D/ppc4xx////
diff -Naur u-boot-2009.03_orig/post/cpu/CVS/Entries.Extra u-boot-2009.03/post/cpu/CVS/Entries.Extra
--- u-boot-2009.03_orig/post/cpu/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/cpu/CVS/Entries.Extra   2009-03-25 15:26:02.962165300 -0700
@@ -0,0 +1,2 @@
+D/mpc8xx////
+D/ppc4xx////
diff -Naur u-boot-2009.03_orig/post/cpu/CVS/Repository u-boot-2009.03/post/cpu/CVS/Repository
--- u-boot-2009.03_orig/post/cpu/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/cpu/CVS/Repository      2009-03-25 15:26:02.462168500 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/post/cpu
diff -Naur u-boot-2009.03_orig/post/cpu/CVS/Root u-boot-2009.03/post/cpu/CVS/Root
--- u-boot-2009.03_orig/post/cpu/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/cpu/CVS/Root    2009-03-25 15:26:02.462168500 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/post/cpu/mpc8xx/CVS/Entries u-boot-2009.03/post/cpu/mpc8xx/CVS/Entries
--- u-boot-2009.03_orig/post/cpu/mpc8xx/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/cpu/mpc8xx/CVS/Entries  2009-03-25 15:58:18.856025500 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cache.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cache_8xx.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ether.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/spr.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/uart.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/usb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/watchdog.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/post/cpu/mpc8xx/CVS/Entries.Extra u-boot-2009.03/post/cpu/mpc8xx/CVS/Entries.Extra
--- u-boot-2009.03_orig/post/cpu/mpc8xx/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/cpu/mpc8xx/CVS/Entries.Extra    2009-03-25 15:58:18.856025500 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019751/
+/cache.c///1238019751/
+/cache_8xx.S///1238019751/
+/ether.c///1238019751/
+/spr.c///1238019751/
+/uart.c///1238019751/
+/usb.c///1238019751/
+/watchdog.c///1238019751/
diff -Naur u-boot-2009.03_orig/post/cpu/mpc8xx/CVS/Entries.Extra.Old u-boot-2009.03/post/cpu/mpc8xx/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/post/cpu/mpc8xx/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/cpu/mpc8xx/CVS/Entries.Extra.Old        2009-03-25 15:26:02.000000000 -0700
@@ -0,0 +1,8 @@
+/Makefile///1238019751/
+/cache.c///1238019751/
+/cache_8xx.S///1238019751/
+/ether.c///1238019751/
+/spr.c///1238019751/
+/uart.c///1238019751/
+/usb.c///1238019751/
+/watchdog.c///1238019751/
diff -Naur u-boot-2009.03_orig/post/cpu/mpc8xx/CVS/Entries.Old u-boot-2009.03/post/cpu/mpc8xx/CVS/Entries.Old
--- u-boot-2009.03_orig/post/cpu/mpc8xx/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/cpu/mpc8xx/CVS/Entries.Old      2009-03-25 15:26:02.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/cache.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/cache_8xx.S/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/ether.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/spr.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/uart.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/usb.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/watchdog.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+D
diff -Naur u-boot-2009.03_orig/post/cpu/mpc8xx/CVS/Repository u-boot-2009.03/post/cpu/mpc8xx/CVS/Repository
--- u-boot-2009.03_orig/post/cpu/mpc8xx/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/cpu/mpc8xx/CVS/Repository       2009-03-25 15:26:02.493418300 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/post/cpu/mpc8xx
diff -Naur u-boot-2009.03_orig/post/cpu/mpc8xx/CVS/Root u-boot-2009.03/post/cpu/mpc8xx/CVS/Root
--- u-boot-2009.03_orig/post/cpu/mpc8xx/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/cpu/mpc8xx/CVS/Root     2009-03-25 15:26:02.493418300 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/post/cpu/ppc4xx/CVS/Entries u-boot-2009.03/post/cpu/ppc4xx/CVS/Entries
--- u-boot-2009.03_orig/post/cpu/ppc4xx/CVS/Entries     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/cpu/ppc4xx/CVS/Entries  2009-03-25 15:58:18.981024700 -0700
@@ -0,0 +1,11 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cache.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cache_4xx.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/denali_ecc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ether.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fpu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ocm.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/spr.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/uart.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/watchdog.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/post/cpu/ppc4xx/CVS/Entries.Extra u-boot-2009.03/post/cpu/ppc4xx/CVS/Entries.Extra
--- u-boot-2009.03_orig/post/cpu/ppc4xx/CVS/Entries.Extra       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/cpu/ppc4xx/CVS/Entries.Extra    2009-03-25 15:58:18.996649600 -0700
@@ -0,0 +1,10 @@
+/Makefile///1238019751/
+/cache.c///1238019751/
+/cache_4xx.S///1238019751/
+/denali_ecc.c///1238019751/
+/ether.c///1238019751/
+/fpu.c///1238019751/
+/ocm.c///1238019751/
+/spr.c///1238019751/
+/uart.c///1238019751/
+/watchdog.c///1238019751/
diff -Naur u-boot-2009.03_orig/post/cpu/ppc4xx/CVS/Entries.Extra.Old u-boot-2009.03/post/cpu/ppc4xx/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/post/cpu/ppc4xx/CVS/Entries.Extra.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/cpu/ppc4xx/CVS/Entries.Extra.Old        2009-03-25 15:26:02.000000000 -0700
@@ -0,0 +1,10 @@
+/Makefile///1238019751/
+/cache.c///1238019751/
+/cache_4xx.S///1238019751/
+/denali_ecc.c///1238019751/
+/ether.c///1238019751/
+/fpu.c///1238019751/
+/ocm.c///1238019751/
+/spr.c///1238019751/
+/uart.c///1238019751/
+/watchdog.c///1238019751/
diff -Naur u-boot-2009.03_orig/post/cpu/ppc4xx/CVS/Entries.Old u-boot-2009.03/post/cpu/ppc4xx/CVS/Entries.Old
--- u-boot-2009.03_orig/post/cpu/ppc4xx/CVS/Entries.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/cpu/ppc4xx/CVS/Entries.Old      2009-03-25 15:26:02.000000000 -0700
@@ -0,0 +1,11 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/cache.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/cache_4xx.S/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/denali_ecc.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/ether.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/fpu.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/ocm.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/spr.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/uart.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/watchdog.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+D
diff -Naur u-boot-2009.03_orig/post/cpu/ppc4xx/CVS/Repository u-boot-2009.03/post/cpu/ppc4xx/CVS/Repository
--- u-boot-2009.03_orig/post/cpu/ppc4xx/CVS/Repository  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/cpu/ppc4xx/CVS/Repository       2009-03-25 15:26:02.618417500 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/post/cpu/ppc4xx
diff -Naur u-boot-2009.03_orig/post/cpu/ppc4xx/CVS/Root u-boot-2009.03/post/cpu/ppc4xx/CVS/Root
--- u-boot-2009.03_orig/post/cpu/ppc4xx/CVS/Root        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/cpu/ppc4xx/CVS/Root     2009-03-25 15:26:02.618417500 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/post/drivers/CVS/Entries u-boot-2009.03/post/drivers/CVS/Entries
--- u-boot-2009.03_orig/post/drivers/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/drivers/CVS/Entries     2009-03-25 15:58:19.074774100 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/i2c.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/memory.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/rtc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/post/drivers/CVS/Entries.Extra u-boot-2009.03/post/drivers/CVS/Entries.Extra
--- u-boot-2009.03_orig/post/drivers/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/drivers/CVS/Entries.Extra       2009-03-25 15:58:19.074774100 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019751/
+/i2c.c///1238019751/
+/memory.c///1238019751/
+/rtc.c///1238019751/
diff -Naur u-boot-2009.03_orig/post/drivers/CVS/Entries.Extra.Old u-boot-2009.03/post/drivers/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/post/drivers/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/drivers/CVS/Entries.Extra.Old   2009-03-25 15:26:03.000000000 -0700
@@ -0,0 +1,4 @@
+/Makefile///1238019751/
+/i2c.c///1238019751/
+/memory.c///1238019751/
+/rtc.c///1238019751/
diff -Naur u-boot-2009.03_orig/post/drivers/CVS/Entries.Old u-boot-2009.03/post/drivers/CVS/Entries.Old
--- u-boot-2009.03_orig/post/drivers/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/drivers/CVS/Entries.Old 2009-03-25 15:26:03.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/i2c.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/memory.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/rtc.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+D
diff -Naur u-boot-2009.03_orig/post/drivers/CVS/Repository u-boot-2009.03/post/drivers/CVS/Repository
--- u-boot-2009.03_orig/post/drivers/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/drivers/CVS/Repository  2009-03-25 15:26:03.102789400 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/post/drivers
diff -Naur u-boot-2009.03_orig/post/drivers/CVS/Root u-boot-2009.03/post/drivers/CVS/Root
--- u-boot-2009.03_orig/post/drivers/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/drivers/CVS/Root        2009-03-25 15:26:03.102789400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/post/lib_ppc/CVS/Entries u-boot-2009.03/post/lib_ppc/CVS/Entries
--- u-boot-2009.03_orig/post/lib_ppc/CVS/Entries        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/lib_ppc/CVS/Entries     2009-03-25 15:58:19.387272100 -0700
@@ -0,0 +1,24 @@
+D/fpu////
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/andi.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/asm.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/b.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmp.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmpi.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/complex.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cpu_asm.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cr.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/load.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/multi.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/rlwimi.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/rlwinm.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/rlwnm.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/srawi.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/store.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/string.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/three.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/threei.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/threex.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/two.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/twox.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
diff -Naur u-boot-2009.03_orig/post/lib_ppc/CVS/Entries.Extra u-boot-2009.03/post/lib_ppc/CVS/Entries.Extra
--- u-boot-2009.03_orig/post/lib_ppc/CVS/Entries.Extra  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/lib_ppc/CVS/Entries.Extra       2009-03-25 15:58:19.387272100 -0700
@@ -0,0 +1,24 @@
+D/fpu////
+/Makefile///1238019751/
+/andi.c///1238019751/
+/asm.S///1238019751/
+/b.c///1238019751/
+/cmp.c///1238019751/
+/cmpi.c///1238019751/
+/complex.c///1238019751/
+/cpu.c///1238019751/
+/cpu_asm.h///1238019751/
+/cr.c///1238019751/
+/load.c///1238019751/
+/multi.c///1238019751/
+/rlwimi.c///1238019751/
+/rlwinm.c///1238019751/
+/rlwnm.c///1238019751/
+/srawi.c///1238019751/
+/store.c///1238019751/
+/string.c///1238019751/
+/three.c///1238019751/
+/threei.c///1238019751/
+/threex.c///1238019751/
+/two.c///1238019751/
+/twox.c///1238019751/
diff -Naur u-boot-2009.03_orig/post/lib_ppc/CVS/Entries.Extra.Old u-boot-2009.03/post/lib_ppc/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/post/lib_ppc/CVS/Entries.Extra.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/lib_ppc/CVS/Entries.Extra.Old   2009-03-25 15:26:03.000000000 -0700
@@ -0,0 +1,24 @@
+/Makefile///1238019751/
+/andi.c///1238019751/
+/asm.S///1238019751/
+/b.c///1238019751/
+/cmp.c///1238019751/
+/cmpi.c///1238019751/
+/complex.c///1238019751/
+/cpu.c///1238019751/
+/cpu_asm.h///1238019751/
+/cr.c///1238019751/
+/load.c///1238019751/
+/multi.c///1238019751/
+/rlwimi.c///1238019751/
+/rlwinm.c///1238019751/
+/rlwnm.c///1238019751/
+/srawi.c///1238019751/
+/store.c///1238019751/
+/string.c///1238019751/
+/three.c///1238019751/
+/threei.c///1238019751/
+/threex.c///1238019751/
+/two.c///1238019751/
+/twox.c///1238019751/
+D/fpu////
diff -Naur u-boot-2009.03_orig/post/lib_ppc/CVS/Entries.Old u-boot-2009.03/post/lib_ppc/CVS/Entries.Old
--- u-boot-2009.03_orig/post/lib_ppc/CVS/Entries.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/lib_ppc/CVS/Entries.Old 2009-03-25 15:26:03.000000000 -0700
@@ -0,0 +1,24 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/andi.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/asm.S/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/b.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/cmp.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/cmpi.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/complex.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/cpu.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/cpu_asm.h/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/cr.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/load.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/multi.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/rlwimi.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/rlwinm.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/rlwnm.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/srawi.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/store.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/string.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/three.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/threei.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/threex.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/two.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/twox.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+D/fpu////
diff -Naur u-boot-2009.03_orig/post/lib_ppc/CVS/Repository u-boot-2009.03/post/lib_ppc/CVS/Repository
--- u-boot-2009.03_orig/post/lib_ppc/CVS/Repository     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/lib_ppc/CVS/Repository  2009-03-25 15:26:03.212163700 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/post/lib_ppc
diff -Naur u-boot-2009.03_orig/post/lib_ppc/CVS/Root u-boot-2009.03/post/lib_ppc/CVS/Root
--- u-boot-2009.03_orig/post/lib_ppc/CVS/Root   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/lib_ppc/CVS/Root        2009-03-25 15:26:03.196538800 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/post/lib_ppc/fpu/CVS/Entries u-boot-2009.03/post/lib_ppc/fpu/CVS/Entries
--- u-boot-2009.03_orig/post/lib_ppc/fpu/CVS/Entries    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/lib_ppc/fpu/CVS/Entries 2009-03-25 15:58:19.340397400 -0700
@@ -0,0 +1,10 @@
+/20001122-1.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/20010114-2.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/20010226-1.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/980619-1.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/acc1.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/compare-fp-1.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fpu.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mul-subnormal-single-1.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/post/lib_ppc/fpu/CVS/Entries.Extra u-boot-2009.03/post/lib_ppc/fpu/CVS/Entries.Extra
--- u-boot-2009.03_orig/post/lib_ppc/fpu/CVS/Entries.Extra      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/lib_ppc/fpu/CVS/Entries.Extra   2009-03-25 15:58:19.340397400 -0700
@@ -0,0 +1,9 @@
+/20001122-1.c///1238019751/
+/20010114-2.c///1238019752/
+/20010226-1.c///1238019752/
+/980619-1.c///1238019752/
+/Makefile///1238019752/
+/acc1.c///1238019752/
+/compare-fp-1.c///1238019752/
+/fpu.c///1238019752/
+/mul-subnormal-single-1.c///1238019752/
diff -Naur u-boot-2009.03_orig/post/lib_ppc/fpu/CVS/Entries.Extra.Old u-boot-2009.03/post/lib_ppc/fpu/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/post/lib_ppc/fpu/CVS/Entries.Extra.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/lib_ppc/fpu/CVS/Entries.Extra.Old       2009-03-25 15:26:03.000000000 -0700
@@ -0,0 +1,9 @@
+/20001122-1.c///1238019751/
+/20010114-2.c///1238019752/
+/20010226-1.c///1238019752/
+/980619-1.c///1238019752/
+/Makefile///1238019752/
+/acc1.c///1238019752/
+/compare-fp-1.c///1238019752/
+/fpu.c///1238019752/
+/mul-subnormal-single-1.c///1238019752/
diff -Naur u-boot-2009.03_orig/post/lib_ppc/fpu/CVS/Entries.Old u-boot-2009.03/post/lib_ppc/fpu/CVS/Entries.Old
--- u-boot-2009.03_orig/post/lib_ppc/fpu/CVS/Entries.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/lib_ppc/fpu/CVS/Entries.Old     2009-03-25 15:26:03.000000000 -0700
@@ -0,0 +1,10 @@
+/20001122-1.c/1.1.1.1/Wed Mar 25 22:22:31 2009//
+/20010114-2.c/1.1.1.1/Wed Mar 25 22:22:32 2009//
+/20010226-1.c/1.1.1.1/Wed Mar 25 22:22:32 2009//
+/980619-1.c/1.1.1.1/Wed Mar 25 22:22:32 2009//
+/Makefile/1.1.1.1/Wed Mar 25 22:22:32 2009//
+/acc1.c/1.1.1.1/Wed Mar 25 22:22:32 2009//
+/compare-fp-1.c/1.1.1.1/Wed Mar 25 22:22:32 2009//
+/fpu.c/1.1.1.1/Wed Mar 25 22:22:32 2009//
+/mul-subnormal-single-1.c/1.1.1.1/Wed Mar 25 22:22:32 2009//
+D
diff -Naur u-boot-2009.03_orig/post/lib_ppc/fpu/CVS/Repository u-boot-2009.03/post/lib_ppc/fpu/CVS/Repository
--- u-boot-2009.03_orig/post/lib_ppc/fpu/CVS/Repository 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/lib_ppc/fpu/CVS/Repository      2009-03-25 15:26:03.430912300 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/post/lib_ppc/fpu
diff -Naur u-boot-2009.03_orig/post/lib_ppc/fpu/CVS/Root u-boot-2009.03/post/lib_ppc/fpu/CVS/Root
--- u-boot-2009.03_orig/post/lib_ppc/fpu/CVS/Root       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/post/lib_ppc/fpu/CVS/Root    2009-03-25 15:26:03.415287400 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/tools/CVS/Entries u-boot-2009.03/tools/CVS/Entries
--- u-boot-2009.03_orig/tools/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/tools/CVS/Entries    2009-03-25 17:51:54.138877300 -0700
@@ -0,0 +1,25 @@
+D/bddb////
+D/easylogo////
+D/env////
+D/gdb////
+D/logos////
+D/scripts////
+D/updater////
+/.gitignore/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/Makefile.win32/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bin2header.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bmp_logo.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/envcrc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fdt_host.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/gen_eth_addr.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/img2brec.sh/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/img2srec.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/inca-swap-bytes.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mkimage.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mkimage.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc86x_clk.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ncb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/netconsole/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/setlocalversion/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ubsha1.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/Makefile/1.2/Wed Mar 25 22:49:57 2009//
diff -Naur u-boot-2009.03_orig/tools/CVS/Entries.Extra u-boot-2009.03/tools/CVS/Entries.Extra
--- u-boot-2009.03_orig/tools/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/tools/CVS/Entries.Extra      2009-03-25 17:51:54.138877300 -0700
@@ -0,0 +1,25 @@
+D/bddb////
+D/easylogo////
+D/env////
+D/gdb////
+D/logos////
+D/scripts////
+D/updater////
+/.gitignore///1238019752/
+/Makefile.win32///1238019752/
+/bin2header.c///1238019752/
+/bmp_logo.c///1238019752/
+/envcrc.c///1238019752/
+/fdt_host.h///1238019752/
+/gen_eth_addr.c///1238019752/
+/img2brec.sh///1238019752/
+/img2srec.c///1238019752/
+/inca-swap-bytes.c///1238019752/
+/mkimage.c///1238019752/
+/mkimage.h///1238019752/
+/mpc86x_clk.c///1238019752/
+/ncb.c///1238019752/
+/netconsole///1238019752/
+/setlocalversion///1238019752/
+/ubsha1.c///1238019752/
+/Makefile///1238028713/
diff -Naur u-boot-2009.03_orig/tools/CVS/Entries.Extra.Old u-boot-2009.03/tools/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/tools/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/tools/CVS/Entries.Extra.Old  2009-03-25 15:58:20.000000000 -0700
@@ -0,0 +1,25 @@
+/Makefile///1238019752/
+D/bddb////
+D/easylogo////
+D/env////
+D/gdb////
+D/logos////
+D/scripts////
+D/updater////
+/.gitignore///1238019752/
+/Makefile.win32///1238019752/
+/bin2header.c///1238019752/
+/bmp_logo.c///1238019752/
+/envcrc.c///1238019752/
+/fdt_host.h///1238019752/
+/gen_eth_addr.c///1238019752/
+/img2brec.sh///1238019752/
+/img2srec.c///1238019752/
+/inca-swap-bytes.c///1238019752/
+/mkimage.c///1238019752/
+/mkimage.h///1238019752/
+/mpc86x_clk.c///1238019752/
+/ncb.c///1238019752/
+/netconsole///1238019752/
+/setlocalversion///1238019752/
+/ubsha1.c///1238019752/
diff -Naur u-boot-2009.03_orig/tools/CVS/Entries.Old u-boot-2009.03/tools/CVS/Entries.Old
--- u-boot-2009.03_orig/tools/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/tools/CVS/Entries.Old        2009-03-25 15:58:20.000000000 -0700
@@ -0,0 +1,25 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:32 2009//
+D/bddb////
+D/easylogo////
+D/env////
+D/gdb////
+D/logos////
+D/scripts////
+D/updater////
+/.gitignore/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/Makefile.win32/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bin2header.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bmp_logo.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/envcrc.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fdt_host.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/gen_eth_addr.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/img2brec.sh/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/img2srec.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/inca-swap-bytes.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mkimage.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mkimage.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/mpc86x_clk.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ncb.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/netconsole/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/setlocalversion/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ubsha1.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
diff -Naur u-boot-2009.03_orig/tools/CVS/Repository u-boot-2009.03/tools/CVS/Repository
--- u-boot-2009.03_orig/tools/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/tools/CVS/Repository 2009-03-25 15:26:03.649660900 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/tools
diff -Naur u-boot-2009.03_orig/tools/CVS/Root u-boot-2009.03/tools/CVS/Root
--- u-boot-2009.03_orig/tools/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/tools/CVS/Root       2009-03-25 15:26:03.649660900 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/tools/Makefile u-boot-2009.03/tools/Makefile
--- u-boot-2009.03_orig/tools/Makefile  2009-03-21 14:04:41.000000000 -0700
+++ u-boot-2009.03/tools/Makefile       2009-03-25 15:49:57.874856800 -0700
@@ -21,7 +21,8 @@
 # MA 02111-1307 USA
 #
 
-BIN_FILES      = img2srec$(SFX) mkimage$(SFX) envcrc$(SFX) ubsha1$(SFX) gen_eth_addr$(SFX) bmp_logo$(SFX)
+# BIN_FILES    = img2srec$(SFX) mkimage$(SFX) envcrc$(SFX) ubsha1$(SFX) gen_eth_addr$(SFX) bmp_logo$(SFX)
+BIN_FILES      = img2srec$(SFX) envcrc$(SFX) ubsha1$(SFX) gen_eth_addr$(SFX) bmp_logo$(SFX)
 
 OBJ_LINKS      = env_embedded.o crc32.o md5.o sha1.o image.o
 OBJ_FILES      = img2srec.o mkimage.o envcrc.o ubsha1.o gen_eth_addr.o bmp_logo.o
diff -Naur u-boot-2009.03_orig/tools/bddb/CVS/Entries u-boot-2009.03/tools/bddb/CVS/Entries
--- u-boot-2009.03_orig/tools/bddb/CVS/Entries  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/tools/bddb/CVS/Entries       2009-03-25 15:58:19.699770100 -0700
@@ -0,0 +1,21 @@
+/README/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/badsubmit.php/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/bddb.css/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/brlog.php/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/browse.php/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/config.php/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/create_tables.sql/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/defs.php/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dodelete.php/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dodellog.php/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/doedit.php/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/doedlog.php/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/donew.php/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/donewlog.php/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/edit.php/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/edlog.php/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/execute.php/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/index.php/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/new.php/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/newlog.php/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/tools/bddb/CVS/Entries.Extra u-boot-2009.03/tools/bddb/CVS/Entries.Extra
--- u-boot-2009.03_orig/tools/bddb/CVS/Entries.Extra    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/tools/bddb/CVS/Entries.Extra 2009-03-25 15:58:19.699770100 -0700
@@ -0,0 +1,20 @@
+/README///1238019752/
+/badsubmit.php///1238019752/
+/bddb.css///1238019752/
+/brlog.php///1238019752/
+/browse.php///1238019752/
+/config.php///1238019752/
+/create_tables.sql///1238019752/
+/defs.php///1238019752/
+/dodelete.php///1238019752/
+/dodellog.php///1238019752/
+/doedit.php///1238019752/
+/doedlog.php///1238019752/
+/donew.php///1238019752/
+/donewlog.php///1238019752/
+/edit.php///1238019752/
+/edlog.php///1238019752/
+/execute.php///1238019752/
+/index.php///1238019752/
+/new.php///1238019752/
+/newlog.php///1238019752/
diff -Naur u-boot-2009.03_orig/tools/bddb/CVS/Entries.Extra.Old u-boot-2009.03/tools/bddb/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/tools/bddb/CVS/Entries.Extra.Old        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/tools/bddb/CVS/Entries.Extra.Old     2009-03-25 15:26:04.000000000 -0700
@@ -0,0 +1,20 @@
+/README///1238019752/
+/badsubmit.php///1238019752/
+/bddb.css///1238019752/
+/brlog.php///1238019752/
+/browse.php///1238019752/
+/config.php///1238019752/
+/create_tables.sql///1238019752/
+/defs.php///1238019752/
+/dodelete.php///1238019752/
+/dodellog.php///1238019752/
+/doedit.php///1238019752/
+/doedlog.php///1238019752/
+/donew.php///1238019752/
+/donewlog.php///1238019752/
+/edit.php///1238019752/
+/edlog.php///1238019752/
+/execute.php///1238019752/
+/index.php///1238019752/
+/new.php///1238019752/
+/newlog.php///1238019752/
diff -Naur u-boot-2009.03_orig/tools/bddb/CVS/Entries.Old u-boot-2009.03/tools/bddb/CVS/Entries.Old
--- u-boot-2009.03_orig/tools/bddb/CVS/Entries.Old      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/tools/bddb/CVS/Entries.Old   2009-03-25 15:26:04.000000000 -0700
@@ -0,0 +1,21 @@
+/README/1.1.1.1/Wed Mar 25 22:22:32 2009//
+/badsubmit.php/1.1.1.1/Wed Mar 25 22:22:32 2009//
+/bddb.css/1.1.1.1/Wed Mar 25 22:22:32 2009//
+/brlog.php/1.1.1.1/Wed Mar 25 22:22:32 2009//
+/browse.php/1.1.1.1/Wed Mar 25 22:22:32 2009//
+/config.php/1.1.1.1/Wed Mar 25 22:22:32 2009//
+/create_tables.sql/1.1.1.1/Wed Mar 25 22:22:32 2009//
+/defs.php/1.1.1.1/Wed Mar 25 22:22:32 2009//
+/dodelete.php/1.1.1.1/Wed Mar 25 22:22:32 2009//
+/dodellog.php/1.1.1.1/Wed Mar 25 22:22:32 2009//
+/doedit.php/1.1.1.1/Wed Mar 25 22:22:32 2009//
+/doedlog.php/1.1.1.1/Wed Mar 25 22:22:32 2009//
+/donew.php/1.1.1.1/Wed Mar 25 22:22:32 2009//
+/donewlog.php/1.1.1.1/Wed Mar 25 22:22:32 2009//
+/edit.php/1.1.1.1/Wed Mar 25 22:22:32 2009//
+/edlog.php/1.1.1.1/Wed Mar 25 22:22:32 2009//
+/execute.php/1.1.1.1/Wed Mar 25 22:22:32 2009//
+/index.php/1.1.1.1/Wed Mar 25 22:22:32 2009//
+/new.php/1.1.1.1/Wed Mar 25 22:22:32 2009//
+/newlog.php/1.1.1.1/Wed Mar 25 22:22:32 2009//
+D
diff -Naur u-boot-2009.03_orig/tools/bddb/CVS/Repository u-boot-2009.03/tools/bddb/CVS/Repository
--- u-boot-2009.03_orig/tools/bddb/CVS/Repository       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/tools/bddb/CVS/Repository    2009-03-25 15:26:03.930909100 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/tools/bddb
diff -Naur u-boot-2009.03_orig/tools/bddb/CVS/Root u-boot-2009.03/tools/bddb/CVS/Root
--- u-boot-2009.03_orig/tools/bddb/CVS/Root     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/tools/bddb/CVS/Root  2009-03-25 15:26:03.915284200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/tools/bmp_logo.exe u-boot-2009.03/tools/bmp_logo.exe
--- u-boot-2009.03_orig/tools/bmp_logo.exe      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/tools/bmp_logo.exe   2009-03-25 17:29:42.798339400 -0700
@@ -0,0 +1,29 @@
+rb%s is not a bitmap file.
+/*
+ * Automatically generated by "tools/bmp_logo"
+ *
+ * DO NOT EDIT
+ *
+ */
+
+
+#ifndef __BMP_LOGO_H__
+#define __BMP_LOGO_H__
+
+#define BMP_LOGO_WIDTH         %d
+#define BMP_LOGO_HEIGHT                %d
+#define BMP_LOGO_COLORS                %d
+#define BMP_LOGO_OFFSET                %d
+
+Error allocating memory for file %s.
+unsigned short bmp_logo_palette[] = {
+       %s0x0%X%X%X,%s};unsigned char bmp_logo_bitmap[] = {0x%02X,%c
+};
+

\ No newline at end of file
diff -Naur u-boot-2009.03_orig/tools/easylogo/CVS/Entries u-boot-2009.03/tools/easylogo/CVS/Entries
--- u-boot-2009.03_orig/tools/easylogo/CVS/Entries      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/tools/easylogo/CVS/Entries   2009-03-25 15:58:19.793519500 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/easylogo.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/linux_blackfin.tga/1.1.1.1/Sat Mar 21 21:04:41 2009/-kb/
+/linux_logo.tga/1.1.1.1/Sat Mar 21 21:04:41 2009/-kb/
+/runme.sh/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/tools/easylogo/CVS/Entries.Extra u-boot-2009.03/tools/easylogo/CVS/Entries.Extra
--- u-boot-2009.03_orig/tools/easylogo/CVS/Entries.Extra        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/tools/easylogo/CVS/Entries.Extra     2009-03-25 15:58:19.793519500 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019752/
+/easylogo.c///1238019752/
+/linux_blackfin.tga///1238019752/
+/linux_logo.tga///1238019752/
+/runme.sh///1238019752/
diff -Naur u-boot-2009.03_orig/tools/easylogo/CVS/Entries.Extra.Old u-boot-2009.03/tools/easylogo/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/tools/easylogo/CVS/Entries.Extra.Old    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/tools/easylogo/CVS/Entries.Extra.Old 2009-03-25 15:26:04.000000000 -0700
@@ -0,0 +1,5 @@
+/Makefile///1238019752/
+/easylogo.c///1238019752/
+/linux_blackfin.tga///1238019752/
+/linux_logo.tga///1238019752/
+/runme.sh///1238019752/
diff -Naur u-boot-2009.03_orig/tools/easylogo/CVS/Entries.Old u-boot-2009.03/tools/easylogo/CVS/Entries.Old
--- u-boot-2009.03_orig/tools/easylogo/CVS/Entries.Old  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/tools/easylogo/CVS/Entries.Old       2009-03-25 15:26:04.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:32 2009//
+/easylogo.c/1.1.1.1/Wed Mar 25 22:22:32 2009//
+/linux_blackfin.tga/1.1.1.1/Wed Mar 25 22:22:32 2009/-kb/
+/linux_logo.tga/1.1.1.1/Wed Mar 25 22:22:32 2009/-kb/
+/runme.sh/1.1.1.1/Wed Mar 25 22:22:32 2009//
+D
diff -Naur u-boot-2009.03_orig/tools/easylogo/CVS/Repository u-boot-2009.03/tools/easylogo/CVS/Repository
--- u-boot-2009.03_orig/tools/easylogo/CVS/Repository   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/tools/easylogo/CVS/Repository        2009-03-25 15:26:04.165282600 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/tools/easylogo
diff -Naur u-boot-2009.03_orig/tools/easylogo/CVS/Root u-boot-2009.03/tools/easylogo/CVS/Root
--- u-boot-2009.03_orig/tools/easylogo/CVS/Root 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/tools/easylogo/CVS/Root      2009-03-25 15:26:04.165282600 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/tools/env/CVS/Entries u-boot-2009.03/tools/env/CVS/Entries
--- u-boot-2009.03_orig/tools/env/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/tools/env/CVS/Entries        2009-03-25 15:58:19.887268900 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/README/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fw_env.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fw_env.config/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fw_env.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/fw_env_main.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/tools/env/CVS/Entries.Extra u-boot-2009.03/tools/env/CVS/Entries.Extra
--- u-boot-2009.03_orig/tools/env/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/tools/env/CVS/Entries.Extra  2009-03-25 15:58:19.887268900 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019752/
+/README///1238019752/
+/fw_env.c///1238019752/
+/fw_env.config///1238019752/
+/fw_env.h///1238019752/
+/fw_env_main.c///1238019752/
diff -Naur u-boot-2009.03_orig/tools/env/CVS/Entries.Extra.Old u-boot-2009.03/tools/env/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/tools/env/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/tools/env/CVS/Entries.Extra.Old      2009-03-25 15:26:04.000000000 -0700
@@ -0,0 +1,6 @@
+/Makefile///1238019752/
+/README///1238019752/
+/fw_env.c///1238019752/
+/fw_env.config///1238019752/
+/fw_env.h///1238019752/
+/fw_env_main.c///1238019752/
diff -Naur u-boot-2009.03_orig/tools/env/CVS/Entries.Old u-boot-2009.03/tools/env/CVS/Entries.Old
--- u-boot-2009.03_orig/tools/env/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/tools/env/CVS/Entries.Old    2009-03-25 15:26:04.000000000 -0700
@@ -0,0 +1,7 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:32 2009//
+/README/1.1.1.1/Wed Mar 25 22:22:32 2009//
+/fw_env.c/1.1.1.1/Wed Mar 25 22:22:32 2009//
+/fw_env.config/1.1.1.1/Wed Mar 25 22:22:32 2009//
+/fw_env.h/1.1.1.1/Wed Mar 25 22:22:32 2009//
+/fw_env_main.c/1.1.1.1/Wed Mar 25 22:22:32 2009//
+D
diff -Naur u-boot-2009.03_orig/tools/env/CVS/Repository u-boot-2009.03/tools/env/CVS/Repository
--- u-boot-2009.03_orig/tools/env/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/tools/env/CVS/Repository     2009-03-25 15:26:04.274656900 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/tools/env
diff -Naur u-boot-2009.03_orig/tools/env/CVS/Root u-boot-2009.03/tools/env/CVS/Root
--- u-boot-2009.03_orig/tools/env/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/tools/env/CVS/Root   2009-03-25 15:26:04.274656900 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/tools/envcrc.exe u-boot-2009.03/tools/envcrc.exe
--- u-boot-2009.03_orig/tools/envcrc.exe        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/tools/envcrc.exe     2009-03-25 17:39:13.332194400 -0700
@@ -0,0 +1,23 @@
PKERNEL32.dllO+
,1),32,32;;complex float:t(0,16)=R3;8;0;complex double:t(0,17)=R3;16;0;complex long double:t(0,18)=R3;24;0;void:t(0,19)=(0,19)__builtin_va_list:t(0,20)=*(0,2)_Bool:t(0,21)=@s8;-16/usr/include/stdio.h/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/stddef.hsize_t:t(2,1)=(0,4)/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/stdarg.h__gnuc_va_list:t(3,1)=(0,20)/usr/include/sys/reent.h/usr/include/sys/_types.h/usr/include/sys/lock.h_LOCK_T:t(6,1)=(6,2)=*(0,19)_off_t:t(5,1)=(0,3)_off64_t:t(5,2)=(0,6)_ssize_t:t(5,3)=(0,1)wint_t:t(7,1)=(0,4)_mbstate_t:t(5,4)=(5,5)=s8__count:(0,1),0,32;__value:(5,6)=u4__wch:(7,1),0,32;__wchb:(5,7)=ar(5,8)=r(5,8);0000000000000;0037777777777;;0;3;(0,11),0,32;;,32,32;;_flock_t:t(5,9)=(6,1)_iconv_t:t(5,10)=(6,2)__ULong:t(4,1)=(0,5)_Bigint:T(4,2)=s24_next:(4,3)=*(4,2),0,32;_k:(0,1),32,32;_maxwds:(0,1),64,32;_sign:(0,1),96,32;_wds:(0,1),128,32;_x:(4,4)=ar(5,8);0;0;(4,1),160,32;;__tm:T(4,5)=s36__tm_sec:(0,1),0,32;__tm_min:(0,1),32,32;__tm_hour:(0,1),64,32;__tm_mday:(0,1),96,32;__tm_mon:(0,1),128,32;__tm_year:(0,1),160,32;__tm_wday:(0,1),192,32;__tm_yday:(0,1),224,32;__tm_isdst:(0,1),256,32;;_on_exit_args:T(4,6)=s264_fnargs:(4,7)=ar(5,8);0;31;(6,2),0,1024;_dso_handle:(4,7),1024,1024;_fntypes:(4,1),2048,32;_is_cxa:(4,1),2080,32;;_atexit:T(4,8)=s400_next:(4,9)=*(4,8),0,32;_ind:(0,1),32,32;_fns:(4,10)=ar(5,8);0;31;(4,11)=*(4,12)=f(0,19),64,1024;_on_exit_args:(4,6),1088,2112;;__sbuf:T(4,13)=s8_base:(4,14)=*(0,11),0,32;_size:(0,1),32,32;;_fpos_t:t(4,15)=(0,3)_fpos64_t:t(4,16)=(5,2)__sFILE:T(4,17)=s92_p:(4,14),0,32;_r:(0,1),32,32;_w:(0,1),64,32;_flags:(0,8),96,16;_file:(0,8),112,16;_bf:(4,13),128,64;_lbfsize:(0,1),192,32;_cookie:(6,2),224,32;_read:(4,18)=*(4,19)=f(5,3),256,32;_write:(4,20)=*(4,21)=f(5,3),288,32;_seek:(4,22)=*(4,23)=f(4,15),320,32;_close:(4,24)=*(4,25)=f(0,1),352,32;_ub:(4,13),384,64;_up:(4,14),448,32;_ur:(0,1),480,32;_ubuf:(4,26)=ar(5,8);0;2;(0,11),512,24;_nbuf:(4,27)=ar(5,8);0;0;(0,11),536,8;_lb:(4,13),544,64;_blksize:(0,1),608,32;_offset:(0,1),640,32;_data:(4,28)=*(4,29)=xs_reent:,672,32;_lock:(5,9),704,32;;__sFILE64:T(4,30)=s104_p:(4,14),0,32;_r:(0,1),32,32;_w:(0,1),64,32;_flags:(0,8),96,16;_file:(0,8),112,16;_bf:(4,13),128,64;_lbfsize:(0,1),192,32;_data:(4,28),224,32;_cookie:(6,2),256,32;_read:(4,18),288,32;_write:(4,20),320,32;_seek:(4,22),352,32;_close:(4,24),384,32;_ub:(4,13),416,64;_up:(4,14),480,32;_ur:(0,1),512,32;_ubuf:(4,26),544,24;_nbuf:(4,27),568,8;_lb:(4,13),576,64;_blksize:(0,1),640,32;_flags2:(0,1),672,32;_offset:(5,2),704,64;_seek64:(4,31)=*(4,32)=f(4,16),768,32;_lock:(5,9),800,32;;__FILE:t(4,33)=(4,30)_glue:T(4,34)=s12_next:(4,35)=*(4,34),0,32;_niobs:(0,1),32,32;_iobs:(4,36)=*(4,33),64,32;;_rand48:T(4,37)=s14_seed:(4,38)=ar(5,8);0;2;(0,9),0,48;_mult:(4,38),48,48;_add:(0,9),96,16;;_reent:T(4,29)=s1064_errno:(0,1),0,32;_stdin:(4,36),32,32;_stdout:(4,36),64,32;_stderr:(4,36),96,32;_inc:(0,1),128,32;_emergency:(4,39)=ar(5,8);0;24;(0,2),160,200;_current_category:(0,1),384,32;_current_locale:(4,40)=*(4,41)=k(0,2),416,32;__sdidinit:(0,1),448,32;__cleanup:(4,42)=*(4,43)=f(0,19),480,32;_result:(4,3),512,32;_result_k:(0,1),544,32;_p5s:(4,3),576,32;_freelist:(4,44)=*(4,3),608,32;_cvtlen:(0,1),640,32;_cvtbuf:(4,45)=*(0,2),672,32;_new:(4,46)=u240_reent:(4,47)=s208_unused_rand:(0,4),0,32;_strtok_last:(4,45),32,32;_asctime_buf:(4,48)=ar(5,8);0;25;(0,2),64,208;_localtime_buf:(4,5),288,288;_gamma_signgam:(0,1),576,32;_rand_next:(0,7),640,64;_r48:(4,37),704,112;_mblen_state:(5,4),832,64;_mbtowc_state:(5,4),896,64;_wctomb_state:(5,4),960,64;_l64a_buf:(4,49)=ar(5,8);0;7;(0,2),1024,64;_signal_buf:(4,50)=ar(5,8);0;23;(0,2),1088,192;_getdate_err:(0,1),1280,32;_mbrlen_state:(5,4),1312,64;_mbrtowc_state:(5,4),1376,64;_mbsrtowcs_state:(5,4),1440,64;_wcrtomb_state:(5,4),1504,64;_wcsrtombs_state:(5,4),1568,64;;,0,1664;_unused:(4,51)=s240_nextf:(4,52)=ar(5,8);0;29;(4,14),0,960;_nmalloc:(4,53)=ar(5,8);0;29;(0,4),960,960;;,0,1920;;,704,1920;_atexit:(4,9),2624,32;_atexit0:(4,8),2656,3200;_sig_func:(4,54)=*(4,55)=*(4,56)=f(0,19),5856,32;__sglue:(4,34),5888,96;__sf:(4,57)=ar(5,8);0;2;(4,33),6016,2496;;/usr/include/sys/types.h/usr/include/machine/_types.h__int8_t:t(9,1)=(0,10)__uint8_t:t(9,2)=(0,11)__int16_t:t(9,3)=(0,8)__uint16_t:t(9,4)=(0,9)__int_least16_t:t(9,5)=(9,3)__uint_least16_t:t(9,6)=(9,4)__int32_t:t(9,7)=(0,1)__uint32_t:t(9,8)=(0,4)__int_least32_t:t(9,9)=(9,7)__uint_least32_t:t(9,10)=(9,8)__int64_t:t(9,11)=(0,6)__uint64_t:t(9,12)=(0,7)ptrdiff_t:t(10,1)=(0,1)wchar_t:t(10,2)=(0,9)/usr/include/machine/types.h__off_t:t(11,1)=(0,3)__pid_t:t(11,2)=(0,1)__loff_t:t(11,3)=(0,6)u_char:t(8,1)=(0,11)u_short:t(8,2)=(0,9)u_int:t(8,3)=(0,4)u_long:t(8,4)=(0,5)ushort:t(8,5)=(0,9)uint:t(8,6)=(0,4)clock_t:t(8,7)=(0,5)time_t:t(8,8)=(0,3)timespec:T(8,9)=s8tv_sec:(8,8),0,32;tv_nsec:(0,3),32,32;;itimerspec:T(8,10)=s16it_interval:(8,9),0,64;it_value:(8,9),64,64;;daddr_t:t(8,11)=(0,3)caddr_t:t(8,12)=(4,45)pid_t:t(8,13)=(0,1)ssize_t:t(8,14)=(5,3)nlink_t:t(8,15)=(0,9)fd_mask:t(8,16)=(0,3)_types_fd_set:T(8,17)=s8fds_bits:(8,18)=ar(5,8);0;1;(8,16),0,64;;_types_fd_set:t(8,19)=(8,17)clockid_t:t(8,20)=(0,5)timer_t:t(8,21)=(0,5)useconds_t:t(8,22)=(0,5)suseconds_t:t(8,23)=(0,3)/usr/include/cygwin/types.h/usr/include/stdint.hint8_t:t(13,1)=(0,10)int16_t:t(13,2)=(0,8)int32_t:t(13,3)=(0,3)int64_t:t(13,4)=(0,6)uint8_t:t(13,5)=(0,11)uint16_t:t(13,6)=(0,9)uint32_t:t(13,7)=(0,5)uint64_t:t(13,8)=(0,7)int_least8_t:t(13,9)=(0,10)int_least16_t:t(13,10)=(0,8)int_least32_t:t(13,11)=(0,3)int_least64_t:t(13,12)=(0,6)uint_least8_t:t(13,13)=(0,11)uint_least16_t:t(13,14)=(0,9)uint_least32_t:t(13,15)=(0,5)uint_least64_t:t(13,16)=(0,7)int_fast8_t:t(13,17)=(0,10)int_fast16_t:t(13,18)=(0,3)int_fast32_t:t(13,19)=(0,3)int_fast64_t:t(13,20)=(0,6)uint_fast8_t:t(13,21)=(0,11)uint_fast16_t:t(13,22)=(0,5)uint_fast32_t:t(13,23)=(0,5)uint_fast64_t:t(13,24)=(0,7)intptr_t:t(13,25)=(0,3)uintptr_t:t(13,26)=(0,5)intmax_t:t(13,27)=(0,6)uintmax_t:t(13,28)=(0,7)timespec_t:t(12,1)=(8,9)timestruc_t:t(12,2)=(8,9)off_t:t(12,3)=(5,2)loff_t:t(12,4)=(11,3)__dev16_t:t(12,5)=(0,8)__dev32_t:t(12,6)=(0,5)dev_t:t(12,7)=(12,6)blksize_t:t(12,8)=(0,3)__blkcnt32_t:t(12,9)=(0,3)__blkcnt64_t:t(12,10)=(0,6)blkcnt_t:t(12,11)=(12,10)fsblkcnt_t:t(12,12)=(0,5)fsfilcnt_t:t(12,13)=(0,5)__uid16_t:t(12,14)=(0,9)__uid32_t:t(12,15)=(0,5)uid_t:t(12,16)=(12,15)__gid16_t:t(12,17)=(0,9)__gid32_t:t(12,18)=(0,5)gid_t:t(12,19)=(12,18)__ino32_t:t(12,20)=(0,5)__ino64_t:t(12,21)=(0,7)ino_t:t(12,22)=(12,21)id_t:t(12,23)=(0,5)flock:T(12,24)=s32l_type:(0,8),0,16;l_whence:(0,8),16,16;l_start:(12,3),64,64;l_len:(12,3),128,64;l_pid:(8,13),192,32;;key_t:t(12,25)=(0,6)vm_offset_t:t(12,26)=(0,5)vm_size_t:t(12,27)=(0,5)vm_object_t:t(12,28)=(6,2)u_int8_t:t(12,29)=(0,11)u_int16_t:t(12,30)=(9,4)u_int32_t:t(12,31)=(9,8)u_int64_t:t(12,32)=(9,12)register_t:t(12,33)=(9,7)addr_t:t(12,34)=(4,45)mode_t:t(12,35)=(0,4)__pthread_t:T(12,36)=s1__dummy:(0,2),0,8;;pthread_t:t(12,37)=(12,38)=*(12,36)__pthread_mutex_t:T(12,39)=s1__dummy:(0,2),0,8;;pthread_mutex_t:t(12,40)=(12,41)=*(12,39)__pthread_key_t:T(12,42)=s1__dummy:(0,2),0,8;;pthread_key_t:t(12,43)=(12,44)=*(12,42)__pthread_attr_t:T(12,45)=s1__dummy:(0,2),0,8;;pthread_attr_t:t(12,46)=(12,47)=*(12,45)__pthread_mutexattr_t:T(12,48)=s1__dummy:(0,2),0,8;;pthread_mutexattr_t:t(12,49)=(12,50)=*(12,48)__pthread_condattr_t:T(12,51)=s1__dummy:(0,2),0,8;;pthread_condattr_t:t(12,52)=(12,53)=*(12,51)__pthread_cond_t:T(12,54)=s1__dummy:(0,2),0,8;;pthread_cond_t:t(12,55)=(12,56)=*(12,54)pthread_once_t:t(12,57)=(12,58)=s8mutex:(12,40),0,32;state:(0,1),32,32;;__pthread_rwlock_t:T(12,59)=s1__dummy:(0,2),0,8;;pthread_rwlock_t:t(12,60)=(12,61)=*(12,59)__pthread_rwlockattr_t:T(12,62)=s1__dummy:(0,2),0,8;;pthread_rwlockattr_t:t(12,63)=(12,64)=*(12,62)FILE:t(1,1)=(4,33)fpos_t:t(1,2)=(4,16)/usr/include/stdlib.hdiv_t:t(14,1)=(14,2)=s8quot:(0,1),0,32;rem:(0,1),32,32;;ldiv_t:t(14,3)=(14,4)=s8quot:(0,3),0,32;rem:(0,3),32,32;;main:F(0,1)argc:p(0,1)argv:p(0,22)=*(4,45)crc32.czlib.hByte:t(2,1)=(0,11)uInt:t(2,2)=(0,4)uLong:t(2,3)=(0,5)Bytef:t(2,4)=(2,1)charf:t(2,5)=(0,2)intf:t(2,6)=(0,1)uIntf:t(2,7)=(2,2)uLongf:t(2,8)=(2,3)voidpf:t(2,9)=(2,10)=*(0,19)voidp:t(2,11)=(2,10)alloc_func:t(2,12)=(2,13)=*(2,14)=f(2,9)free_func:t(2,15)=(2,16)=*(2,17)=f(0,19)cb_func:t(2,18)=(2,19)=*(2,20)=f(0,19)z_stream_s:T(2,21)=s52next_in:(2,22)=*(2,4),0,32;avail_in:(2,2),32,32;total_in:(2,3),64,32;next_out:(2,22),96,32;avail_out:(2,2),128,32;total_out:(2,3),160,32;msg:(2,23)=*(0,2),192,32;state:(2,24)=*(2,25)=xsinternal_state:,224,32;zalloc:(2,12),256,32;zfree:(2,15),288,32;opaque:(2,11),320,32;data_type:(2,1),352,8;outcb:(2,18),384,32;;z_stream:t(2,26)=(2,21)internal_state:T(2,25)=s4dummy:(0,1),0,32;;crc32:F(1,7)crc:p(1,7)buf:p(0,22)=*(0,23)=k(2,4)len:p(2,2)crc:r(1,7)buf:r(0,22)len:r(2,2)crc32_wd:F(1,7)buf:p(0,24)=*(0,25)=k(0,11)chunk_sz:p(2,2)buf:r(0,24)crc_table:S(0,26)=ar(0,27)=r(0,27);0000000000000;0037777777777;;0;255;(0,28)=k(1,7)env_embedded.c/cygdrive/c/qaz/_CVS_WORK/units/or1200_soc/sw/u-boot-2009.03/include/environment.henvironment_s:T(1,1)=s1024crc:(2,7),0,32;data:(1,2)=ar(1,3)=r(1,3);0000000000000;0037777777777;;0;1019;(0,11),32,8160;;env_t:t(1,4)=(1,1)sha1.c/usr/include/string.h/cygdrive/c/qaz/_CVS_WORK/units/or1200_soc/sw/u-boot-2009.03/include/sha1.hsha1_context:t(7,1)=(7,2)=s92total:(7,3)=ar(3,8);0;1;(0,5),0,64;state:(7,4)=ar(3,8);0;4;(0,5),64,160;buffer:(7,5)=ar(3,8);0;63;(0,11),224,512;;sha1_starts:F(0,19)ctx:p(0,22)=*(7,1)ctx:r(0,22)sha1_process:f(0,19)ctx:p(0,22)data:p(2,14)temp:r(0,5)W:(0,23)=ar(3,8);0;15;(0,5)A:(0,5)B:(0,5)C:(0,5)D:(0,5)E:r(0,5)data:r(2,14)sha1_update:F(0,19)input:p(2,14)ilen:p(0,1)fill:(0,1)left:(0,5)input:r(2,14)ilen:r(0,1)sha1_finish:F(0,19)output:p(2,14)last:r(0,5)padn:r(0,5)high:r(0,5)low:r(0,5)msglen:(0,24)=ar(3,8);0;7;(0,11)output:r(2,14)sha1_csum:F(0,19)ctx:(7,1)sha1_csum_wd:F(0,19)chunk_sz:p(0,4)sha1_hmac:F(0,19)key:p(2,14)keylen:p(0,1)i:r(0,1)k_ipad:(7,5)k_opad:(7,5)tmpbuf:(0,25)=ar(3,8);0;19;(0,11)key:r(2,14)keylen:r(0,1)sha1_self_test:F(0,1)sha1_padding:S(0,26)sum_wd_sha1_hmac__sha1_src_sha1_self_test_cygwin_crt0__cygwin_crt0_common@8_do_pseudo_reloc__pei386_runtime_relocator_cygwin_premain3_cygwin_premain2_cygwin_premain1_cygwin_premain0___RUNTIME_PSEUDO_RELOC_LIST_____cygwin_crt0_bp__data_start_____DTOR_LIST____nm___impure_ptr___tls_start___dll_crt0__FP11per_process__size_of_stack_commit____size_of_stack_reserve____major_subsystem_version_____crt_xl_start_____crt_xi_start_____chkstk___crt_xi_end___GetModuleHandleA@4__bss_start_____RUNTIME_PSEUDO_RELOC_LIST_END____size_of_heap_commit_____crt_xp_start_____crt_xp_end____imp__puts__minor_os_version____image_base____section_alignment____imp___impure_ptr_cygwin_internal__RUNTIME_PSEUDO_RELOC_LIST____data_end____CTOR_LIST____bss_end_____crt_xc_end_____crt_xc_start_____CTOR_LIST___cygwin1_dll_iname__imp__memcpy__head_cygwin1_dll__imp____main__file_alignment____imp__malloc__major_os_version____imp__realloc__imp__GetModuleHandleA@4__DTOR_LIST____imp__memset__size_of_heap_reserve_____crt_xt_start_____ImageBase__subsystem____imp__calloc__imp__cygwin_internal___tls_end____imp__dll_crt0__FP11per_process__imp__free__major_image_version____loader_flags____head_libkernel32_a__minor_subsystem_version____minor_image_version____RUNTIME_PSEUDO_RELOC_LIST_END____libkernel32_a_iname___crt_xt_end__
\ No newline at end of file
diff -Naur u-boot-2009.03_orig/tools/gdb/CVS/Entries u-boot-2009.03/tools/gdb/CVS/Entries
--- u-boot-2009.03_orig/tools/gdb/CVS/Entries   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/tools/gdb/CVS/Entries        2009-03-25 15:58:20.012268100 -0700
@@ -0,0 +1,10 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/error.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/error.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/gdbcont.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/gdbsend.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/remote.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/remote.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/serial.h/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/tools/gdb/CVS/Entries.Extra u-boot-2009.03/tools/gdb/CVS/Entries.Extra
--- u-boot-2009.03_orig/tools/gdb/CVS/Entries.Extra     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/tools/gdb/CVS/Entries.Extra  2009-03-25 15:58:20.012268100 -0700
@@ -0,0 +1,9 @@
+/Makefile///1238019752/
+/error.c///1238019752/
+/error.h///1238019752/
+/gdbcont.c///1238019752/
+/gdbsend.c///1238019752/
+/remote.c///1238019752/
+/remote.h///1238019753/
+/serial.c///1238019753/
+/serial.h///1238019753/
diff -Naur u-boot-2009.03_orig/tools/gdb/CVS/Entries.Extra.Old u-boot-2009.03/tools/gdb/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/tools/gdb/CVS/Entries.Extra.Old 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/tools/gdb/CVS/Entries.Extra.Old      2009-03-25 15:26:04.000000000 -0700
@@ -0,0 +1,9 @@
+/Makefile///1238019752/
+/error.c///1238019752/
+/error.h///1238019752/
+/gdbcont.c///1238019752/
+/gdbsend.c///1238019752/
+/remote.c///1238019752/
+/remote.h///1238019753/
+/serial.c///1238019753/
+/serial.h///1238019753/
diff -Naur u-boot-2009.03_orig/tools/gdb/CVS/Entries.Old u-boot-2009.03/tools/gdb/CVS/Entries.Old
--- u-boot-2009.03_orig/tools/gdb/CVS/Entries.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/tools/gdb/CVS/Entries.Old    2009-03-25 15:26:04.000000000 -0700
@@ -0,0 +1,10 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:32 2009//
+/error.c/1.1.1.1/Wed Mar 25 22:22:32 2009//
+/error.h/1.1.1.1/Wed Mar 25 22:22:32 2009//
+/gdbcont.c/1.1.1.1/Wed Mar 25 22:22:32 2009//
+/gdbsend.c/1.1.1.1/Wed Mar 25 22:22:32 2009//
+/remote.c/1.1.1.1/Wed Mar 25 22:22:32 2009//
+/remote.h/1.1.1.1/Wed Mar 25 22:22:33 2009//
+/serial.c/1.1.1.1/Wed Mar 25 22:22:33 2009//
+/serial.h/1.1.1.1/Wed Mar 25 22:22:33 2009//
+D
diff -Naur u-boot-2009.03_orig/tools/gdb/CVS/Repository u-boot-2009.03/tools/gdb/CVS/Repository
--- u-boot-2009.03_orig/tools/gdb/CVS/Repository        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/tools/gdb/CVS/Repository     2009-03-25 15:26:04.399656100 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/tools/gdb
diff -Naur u-boot-2009.03_orig/tools/gdb/CVS/Root u-boot-2009.03/tools/gdb/CVS/Root
--- u-boot-2009.03_orig/tools/gdb/CVS/Root      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/tools/gdb/CVS/Root   2009-03-25 15:26:04.399656100 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/tools/gen_eth_addr.exe u-boot-2009.03/tools/gen_eth_addr.exe
--- u-boot-2009.03_orig/tools/gen_eth_addr.exe  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/tools/gen_eth_addr.exe       2009-03-25 17:29:41.954627200 -0700
@@ -0,0 +1,4 @@
%02lx:%02lx:%02lx:%02lx:%02lx:%02lx
\ No newline at end of file
diff -Naur u-boot-2009.03_orig/tools/img2srec.exe u-boot-2009.03/tools/img2srec.exe
--- u-boot-2009.03_orig/tools/img2srec.exe      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/tools/img2srec.exe   2009-03-25 17:29:38.845391500 -0700
@@ -0,0 +1,10 @@
+*** illegal file format
+%s
+-oUsage: img2srec [-o offset] <image>
PPPcygwin1.dllP@PKERNEL32.dll
\ No newline at end of file
diff -Naur u-boot-2009.03_orig/tools/logos/CVS/Entries u-boot-2009.03/tools/logos/CVS/Entries
--- u-boot-2009.03_orig/tools/logos/CVS/Entries 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/tools/logos/CVS/Entries      2009-03-25 15:58:20.152892200 -0700
@@ -0,0 +1,5 @@
+/atmel.bmp/1.1.1.1/Sat Mar 21 21:04:41 2009/-kb/
+/denx.bmp/1.1.1.1/Sat Mar 21 21:04:41 2009/-kb/
+/linux_logo_ttcontrol.bmp/1.1.1.1/Sat Mar 21 21:04:41 2009/-kb/
+/linux_logo_ttcontrol_palfin.bmp/1.1.1.1/Sat Mar 21 21:04:41 2009/-kb/
+D
diff -Naur u-boot-2009.03_orig/tools/logos/CVS/Entries.Extra u-boot-2009.03/tools/logos/CVS/Entries.Extra
--- u-boot-2009.03_orig/tools/logos/CVS/Entries.Extra   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/tools/logos/CVS/Entries.Extra        2009-03-25 15:58:20.152892200 -0700
@@ -0,0 +1,4 @@
+/atmel.bmp///1238019753/
+/denx.bmp///1238019753/
+/linux_logo_ttcontrol.bmp///1238019753/
+/linux_logo_ttcontrol_palfin.bmp///1238019753/
diff -Naur u-boot-2009.03_orig/tools/logos/CVS/Entries.Extra.Old u-boot-2009.03/tools/logos/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/tools/logos/CVS/Entries.Extra.Old       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/tools/logos/CVS/Entries.Extra.Old    2009-03-25 15:26:04.000000000 -0700
@@ -0,0 +1,4 @@
+/atmel.bmp///1238019753/
+/denx.bmp///1238019753/
+/linux_logo_ttcontrol.bmp///1238019753/
+/linux_logo_ttcontrol_palfin.bmp///1238019753/
diff -Naur u-boot-2009.03_orig/tools/logos/CVS/Entries.Old u-boot-2009.03/tools/logos/CVS/Entries.Old
--- u-boot-2009.03_orig/tools/logos/CVS/Entries.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/tools/logos/CVS/Entries.Old  2009-03-25 15:26:04.000000000 -0700
@@ -0,0 +1,5 @@
+/atmel.bmp/1.1.1.1/Wed Mar 25 22:22:33 2009/-kb/
+/denx.bmp/1.1.1.1/Wed Mar 25 22:22:33 2009/-kb/
+/linux_logo_ttcontrol.bmp/1.1.1.1/Wed Mar 25 22:22:33 2009/-kb/
+/linux_logo_ttcontrol_palfin.bmp/1.1.1.1/Wed Mar 25 22:22:33 2009/-kb/
+D
diff -Naur u-boot-2009.03_orig/tools/logos/CVS/Repository u-boot-2009.03/tools/logos/CVS/Repository
--- u-boot-2009.03_orig/tools/logos/CVS/Repository      1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/tools/logos/CVS/Repository   2009-03-25 15:26:04.555905100 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/tools/logos
diff -Naur u-boot-2009.03_orig/tools/logos/CVS/Root u-boot-2009.03/tools/logos/CVS/Root
--- u-boot-2009.03_orig/tools/logos/CVS/Root    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/tools/logos/CVS/Root 2009-03-25 15:26:04.555905100 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/tools/scripts/CVS/Entries u-boot-2009.03/tools/scripts/CVS/Entries
--- u-boot-2009.03_orig/tools/scripts/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/tools/scripts/CVS/Entries    2009-03-25 15:58:20.246641600 -0700
@@ -0,0 +1,7 @@
+/README/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/define2mk.sed/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dot.kermrc/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash_param/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/send_cmd/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/send_image/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/tools/scripts/CVS/Entries.Extra u-boot-2009.03/tools/scripts/CVS/Entries.Extra
--- u-boot-2009.03_orig/tools/scripts/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/tools/scripts/CVS/Entries.Extra      2009-03-25 15:58:20.246641600 -0700
@@ -0,0 +1,6 @@
+/README///1238019753/
+/define2mk.sed///1238019753/
+/dot.kermrc///1238019753/
+/flash_param///1238019753/
+/send_cmd///1238019753/
+/send_image///1238019753/
diff -Naur u-boot-2009.03_orig/tools/scripts/CVS/Entries.Extra.Old u-boot-2009.03/tools/scripts/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/tools/scripts/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/tools/scripts/CVS/Entries.Extra.Old  2009-03-25 15:26:04.000000000 -0700
@@ -0,0 +1,6 @@
+/README///1238019753/
+/define2mk.sed///1238019753/
+/dot.kermrc///1238019753/
+/flash_param///1238019753/
+/send_cmd///1238019753/
+/send_image///1238019753/
diff -Naur u-boot-2009.03_orig/tools/scripts/CVS/Entries.Old u-boot-2009.03/tools/scripts/CVS/Entries.Old
--- u-boot-2009.03_orig/tools/scripts/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/tools/scripts/CVS/Entries.Old        2009-03-25 15:26:04.000000000 -0700
@@ -0,0 +1,7 @@
+/README/1.1.1.1/Wed Mar 25 22:22:33 2009//
+/define2mk.sed/1.1.1.1/Wed Mar 25 22:22:33 2009//
+/dot.kermrc/1.1.1.1/Wed Mar 25 22:22:33 2009//
+/flash_param/1.1.1.1/Wed Mar 25 22:22:33 2009//
+/send_cmd/1.1.1.1/Wed Mar 25 22:22:33 2009//
+/send_image/1.1.1.1/Wed Mar 25 22:22:33 2009//
+D
diff -Naur u-boot-2009.03_orig/tools/scripts/CVS/Repository u-boot-2009.03/tools/scripts/CVS/Repository
--- u-boot-2009.03_orig/tools/scripts/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/tools/scripts/CVS/Repository 2009-03-25 15:26:04.696529200 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/tools/scripts
diff -Naur u-boot-2009.03_orig/tools/scripts/CVS/Root u-boot-2009.03/tools/scripts/CVS/Root
--- u-boot-2009.03_orig/tools/scripts/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/tools/scripts/CVS/Root       2009-03-25 15:26:04.696529200 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT
diff -Naur u-boot-2009.03_orig/tools/ubsha1.exe u-boot-2009.03/tools/ubsha1.exe
--- u-boot-2009.03_orig/tools/ubsha1.exe        1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/tools/ubsha1.exe     2009-03-25 17:39:13.972811200 -0700
@@ -0,0 +1,22 @@
+%s: Can't stat %s: %s
+%s: Can't read %s: %s
+U-Boot sum:%02X %s: Can't write %s: %s
7;short unsigned int:t(0,9)=@s16;r(0,9);0;65535;signed char:t(0,10)=@s8;r(0,10);-128;127;unsigned char:t(0,11)=@s8;r(0,11);0;255;float:t(0,12)=r(0,1);4;0;double:t(0,13)=r(0,1);8;0;long double:t(0,14)=r(0,1);12;0;complex int:t(0,15)=s8real:(0,1),0,32;imag:(0,1),32,32;;complex float:t(0,16)=R3;8;0;complex double:t(0,17)=R3;16;0;complex long double:t(0,18)=R3;24;0;void:t(0,19)=(0,19)__builtin_va_list:t(0,20)=*(0,2)_Bool:t(0,21)=@s8;-16/usr/include/stdio.h/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/stddef.hsize_t:t(2,1)=(0,4)/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/stdarg.h__gnuc_va_list:t(3,1)=(0,20)/usr/include/sys/reent.h/usr/include/sys/_types.h/usr/include/sys/lock.h_LOCK_T:t(6,1)=(6,2)=*(0,19)_off_t:t(5,1)=(0,3)_off64_t:t(5,2)=(0,6)_ssize_t:t(5,3)=(0,1)wint_t:t(7,1)=(0,4)_mbstate_t:t(5,4)=(5,5)=s8__count:(0,1),0,32;__value:(5,6)=u4__wch:(7,1),0,32;__wchb:(5,7)=ar(5,8)=r(5,8);0000000000000;0037777777777;;0;3;(0,11),0,32;;,32,32;;_flock_t:t(5,9)=(6,1)_iconv_t:t(5,10)=(6,2)__ULong:t(4,1)=(0,5)_Bigint:T(4,2)=s24_next:(4,3)=*(4,2),0,32;_k:(0,1),32,32;_maxwds:(0,1),64,32;_sign:(0,1),96,32;_wds:(0,1),128,32;_x:(4,4)=ar(5,8);0;0;(4,1),160,32;;__tm:T(4,5)=s36__tm_sec:(0,1),0,32;__tm_min:(0,1),32,32;__tm_hour:(0,1),64,32;__tm_mday:(0,1),96,32;__tm_mon:(0,1),128,32;__tm_year:(0,1),160,32;__tm_wday:(0,1),192,32;__tm_yday:(0,1),224,32;__tm_isdst:(0,1),256,32;;_on_exit_args:T(4,6)=s264_fnargs:(4,7)=ar(5,8);0;31;(6,2),0,1024;_dso_handle:(4,7),1024,1024;_fntypes:(4,1),2048,32;_is_cxa:(4,1),2080,32;;_atexit:T(4,8)=s400_next:(4,9)=*(4,8),0,32;_ind:(0,1),32,32;_fns:(4,10)=ar(5,8);0;31;(4,11)=*(4,12)=f(0,19),64,1024;_on_exit_args:(4,6),1088,2112;;__sbuf:T(4,13)=s8_base:(4,14)=*(0,11),0,32;_size:(0,1),32,32;;_fpos_t:t(4,15)=(0,3)_fpos64_t:t(4,16)=(5,2)__sFILE:T(4,17)=s92_p:(4,14),0,32;_r:(0,1),32,32;_w:(0,1),64,32;_flags:(0,8),96,16;_file:(0,8),112,16;_bf:(4,13),128,64;_lbfsize:(0,1),192,32;_cookie:(6,2),224,32;_read:(4,18)=*(4,19)=f(5,3),256,32;_write:(4,20)=*(4,21)=f(5,3),288,32;_seek:(4,22)=*(4,23)=f(4,15),320,32;_close:(4,24)=*(4,25)=f(0,1),352,32;_ub:(4,13),384,64;_up:(4,14),448,32;_ur:(0,1),480,32;_ubuf:(4,26)=ar(5,8);0;2;(0,11),512,24;_nbuf:(4,27)=ar(5,8);0;0;(0,11),536,8;_lb:(4,13),544,64;_blksize:(0,1),608,32;_offset:(0,1),640,32;_data:(4,28)=*(4,29)=xs_reent:,672,32;_lock:(5,9),704,32;;__sFILE64:T(4,30)=s104_p:(4,14),0,32;_r:(0,1),32,32;_w:(0,1),64,32;_flags:(0,8),96,16;_file:(0,8),112,16;_bf:(4,13),128,64;_lbfsize:(0,1),192,32;_data:(4,28),224,32;_cookie:(6,2),256,32;_read:(4,18),288,32;_write:(4,20),320,32;_seek:(4,22),352,32;_close:(4,24),384,32;_ub:(4,13),416,64;_up:(4,14),480,32;_ur:(0,1),512,32;_ubuf:(4,26),544,24;_nbuf:(4,27),568,8;_lb:(4,13),576,64;_blksize:(0,1),640,32;_flags2:(0,1),672,32;_offset:(5,2),704,64;_seek64:(4,31)=*(4,32)=f(4,16),768,32;_lock:(5,9),800,32;;__FILE:t(4,33)=(4,30)_glue:T(4,34)=s12_next:(4,35)=*(4,34),0,32;_niobs:(0,1),32,32;_iobs:(4,36)=*(4,33),64,32;;_rand48:T(4,37)=s14_seed:(4,38)=ar(5,8);0;2;(0,9),0,48;_mult:(4,38),48,48;_add:(0,9),96,16;;_reent:T(4,29)=s1064_errno:(0,1),0,32;_stdin:(4,36),32,32;_stdout:(4,36),64,32;_stderr:(4,36),96,32;_inc:(0,1),128,32;_emergency:(4,39)=ar(5,8);0;24;(0,2),160,200;_current_category:(0,1),384,32;_current_locale:(4,40)=*(4,41)=k(0,2),416,32;__sdidinit:(0,1),448,32;__cleanup:(4,42)=*(4,43)=f(0,19),480,32;_result:(4,3),512,32;_result_k:(0,1),544,32;_p5s:(4,3),576,32;_freelist:(4,44)=*(4,3),608,32;_cvtlen:(0,1),640,32;_cvtbuf:(4,45)=*(0,2),672,32;_new:(4,46)=u240_reent:(4,47)=s208_unused_rand:(0,4),0,32;_strtok_last:(4,45),32,32;_asctime_buf:(4,48)=ar(5,8);0;25;(0,2),64,208;_localtime_buf:(4,5),288,288;_gamma_signgam:(0,1),576,32;_rand_next:(0,7),640,64;_r48:(4,37),704,112;_mblen_state:(5,4),832,64;_mbtowc_state:(5,4),896,64;_wctomb_state:(5,4),960,64;_l64a_buf:(4,49)=ar(5,8);0;7;(0,2),1024,64;_signal_buf:(4,50)=ar(5,8);0;23;(0,2),1088,192;_getdate_err:(0,1),1280,32;_mbrlen_state:(5,4),1312,64;_mbrtowc_state:(5,4),1376,64;_mbsrtowcs_state:(5,4),1440,64;_wcrtomb_state:(5,4),1504,64;_wcsrtombs_state:(5,4),1568,64;;,0,1664;_unused:(4,51)=s240_nextf:(4,52)=ar(5,8);0;29;(4,14),0,960;_nmalloc:(4,53)=ar(5,8);0;29;(0,4),960,960;;,0,1920;;,704,1920;_atexit:(4,9),2624,32;_atexit0:(4,8),2656,3200;_sig_func:(4,54)=*(4,55)=*(4,56)=f(0,19),5856,32;__sglue:(4,34),5888,96;__sf:(4,57)=ar(5,8);0;2;(4,33),6016,2496;;/usr/include/sys/types.h/usr/include/machine/_types.h__int8_t:t(9,1)=(0,10)__uint8_t:t(9,2)=(0,11)__int16_t:t(9,3)=(0,8)__uint16_t:t(9,4)=(0,9)__int_least16_t:t(9,5)=(9,3)__uint_least16_t:t(9,6)=(9,4)__int32_t:t(9,7)=(0,1)__uint32_t:t(9,8)=(0,4)__int_least32_t:t(9,9)=(9,7)__uint_least32_t:t(9,10)=(9,8)__int64_t:t(9,11)=(0,6)__uint64_t:t(9,12)=(0,7)ptrdiff_t:t(10,1)=(0,1)wchar_t:t(10,2)=(0,9)/usr/include/machine/types.h__off_t:t(11,1)=(0,3)__pid_t:t(11,2)=(0,1)__loff_t:t(11,3)=(0,6)u_char:t(8,1)=(0,11)u_short:t(8,2)=(0,9)u_int:t(8,3)=(0,4)u_long:t(8,4)=(0,5)ushort:t(8,5)=(0,9)uint:t(8,6)=(0,4)clock_t:t(8,7)=(0,5)time_t:t(8,8)=(0,3)timespec:T(8,9)=s8tv_sec:(8,8),0,32;tv_nsec:(0,3),32,32;;itimerspec:T(8,10)=s16it_interval:(8,9),0,64;it_value:(8,9),64,64;;daddr_t:t(8,11)=(0,3)caddr_t:t(8,12)=(4,45)pid_t:t(8,13)=(0,1)ssize_t:t(8,14)=(5,3)nlink_t:t(8,15)=(0,9)fd_mask:t(8,16)=(0,3)_types_fd_set:T(8,17)=s8fds_bits:(8,18)=ar(5,8);0;1;(8,16),0,64;;_types_fd_set:t(8,19)=(8,17)clockid_t:t(8,20)=(0,5)timer_t:t(8,21)=(0,5)useconds_t:t(8,22)=(0,5)suseconds_t:t(8,23)=(0,3)/usr/include/cygwin/types.h/usr/include/stdint.hint8_t:t(13,1)=(0,10)int16_t:t(13,2)=(0,8)int32_t:t(13,3)=(0,3)int64_t:t(13,4)=(0,6)uint8_t:t(13,5)=(0,11)uint16_t:t(13,6)=(0,9)uint32_t:t(13,7)=(0,5)uint64_t:t(13,8)=(0,7)int_least8_t:t(13,9)=(0,10)int_least16_t:t(13,10)=(0,8)int_least32_t:t(13,11)=(0,3)int_least64_t:t(13,12)=(0,6)uint_least8_t:t(13,13)=(0,11)uint_least16_t:t(13,14)=(0,9)uint_least32_t:t(13,15)=(0,5)uint_least64_t:t(13,16)=(0,7)int_fast8_t:t(13,17)=(0,10)int_fast16_t:t(13,18)=(0,3)int_fast32_t:t(13,19)=(0,3)int_fast64_t:t(13,20)=(0,6)uint_fast8_t:t(13,21)=(0,11)uint_fast16_t:t(13,22)=(0,5)uint_fast32_t:t(13,23)=(0,5)uint_fast64_t:t(13,24)=(0,7)intptr_t:t(13,25)=(0,3)uintptr_t:t(13,26)=(0,5)intmax_t:t(13,27)=(0,6)uintmax_t:t(13,28)=(0,7)timespec_t:t(12,1)=(8,9)timestruc_t:t(12,2)=(8,9)off_t:t(12,3)=(5,2)loff_t:t(12,4)=(11,3)__dev16_t:t(12,5)=(0,8)__dev32_t:t(12,6)=(0,5)dev_t:t(12,7)=(12,6)blksize_t:t(12,8)=(0,3)__blkcnt32_t:t(12,9)=(0,3)__blkcnt64_t:t(12,10)=(0,6)blkcnt_t:t(12,11)=(12,10)fsblkcnt_t:t(12,12)=(0,5)fsfilcnt_t:t(12,13)=(0,5)__uid16_t:t(12,14)=(0,9)__uid32_t:t(12,15)=(0,5)uid_t:t(12,16)=(12,15)__gid16_t:t(12,17)=(0,9)__gid32_t:t(12,18)=(0,5)gid_t:t(12,19)=(12,18)__ino32_t:t(12,20)=(0,5)__ino64_t:t(12,21)=(0,7)ino_t:t(12,22)=(12,21)id_t:t(12,23)=(0,5)flock:T(12,24)=s32l_type:(0,8),0,16;l_whence:(0,8),16,16;l_start:(12,3),64,64;l_len:(12,3),128,64;l_pid:(8,13),192,32;;key_t:t(12,25)=(0,6)vm_offset_t:t(12,26)=(0,5)vm_size_t:t(12,27)=(0,5)vm_object_t:t(12,28)=(6,2)u_int8_t:t(12,29)=(0,11)u_int16_t:t(12,30)=(9,4)u_int32_t:t(12,31)=(9,8)u_int64_t:t(12,32)=(9,12)register_t:t(12,33)=(9,7)addr_t:t(12,34)=(4,45)mode_t:t(12,35)=(0,4)__pthread_t:T(12,36)=s1__dummy:(0,2),0,8;;pthread_t:t(12,37)=(12,38)=*(12,36)__pthread_mutex_t:T(12,39)=s1__dummy:(0,2),0,8;;pthread_mutex_t:t(12,40)=(12,41)=*(12,39)__pthread_key_t:T(12,42)=s1__dummy:(0,2),0,8;;pthread_key_t:t(12,43)=(12,44)=*(12,42)__pthread_attr_t:T(12,45)=s1__dummy:(0,2),0,8;;pthread_attr_t:t(12,46)=(12,47)=*(12,45)__pthread_mutexattr_t:T(12,48)=s1__dummy:(0,2),0,8;;pthread_mutexattr_t:t(12,49)=(12,50)=*(12,48)__pthread_condattr_t:T(12,51)=s1__dummy:(0,2),0,8;;pthread_condattr_t:t(12,52)=(12,53)=*(12,51)__pthread_cond_t:T(12,54)=s1__dummy:(0,2),0,8;;pthread_cond_t:t(12,55)=(12,56)=*(12,54)pthread_once_t:t(12,57)=(12,58)=s8mutex:(12,40),0,32;state:(0,1),32,32;;__pthread_rwlock_t:T(12,59)=s1__dummy:(0,2),0,8;;pthread_rwlock_t:t(12,60)=(12,61)=*(12,59)__pthread_rwlockattr_t:T(12,62)=s1__dummy:(0,2),0,8;;pthread_rwlockattr_t:t(12,63)=(12,64)=*(12,62)FILE:t(1,1)=(4,33)fpos_t:t(1,2)=(4,16)/usr/include/stdlib.hdiv_t:t(14,1)=(14,2)=s8quot:(0,1),0,32;rem:(0,1),32,32;;ldiv_t:t(14,3)=(14,4)=s8quot:(0,3),0,32;rem:(0,3),32,32;;/usr/include/fcntl.h/usr/include/sys/fcntl.heflock:T(16,1)=s24l_type:(0,8),0,16;l_whence:(0,8),16,16;l_start:(0,3),32,32;l_len:(0,3),64,32;l_pid:(0,8),96,16;l_xxx:(0,8),112,16;l_rpid:(0,3),128,32;l_rsys:(0,3),160,32;;/usr/include/sys/stat.h/usr/include/time.htm:T(18,1)=s36tm_sec:(0,1),0,32;tm_min:(0,1),32,32;tm_hour:(0,1),64,32;tm_mday:(0,1),96,32;tm_mon:(0,1),128,32;tm_year:(0,1),160,32;tm_wday:(0,1),192,32;tm_yday:(0,1),224,32;tm_isdst:(0,1),256,32;;/usr/include/signal.h/usr/include/sys/signal.hsigset_t:t(20,1)=(0,5)/usr/include/cygwin/signal.h_fpstate:T(21,1)=s112cw:(0,5),0,32;sw:(0,5),32,32;tag:(0,5),64,32;ipoff:(0,5),96,32;cssel:(0,5),128,32;dataoff:(0,5),160,32;datasel:(0,5),192,32;_st:(21,2)=ar(5,8);0;79;(0,11),224,640;nxst:(0,5),864,32;;ucontext:T(21,3)=s212cr2:(0,5),0,32;dr0:(0,5),32,32;dr1:(0,5),64,32;dr2:(0,5),96,32;dr3:(0,5),128,32;dr6:(0,5),160,32;dr7:(0,5),192,32;fpstate:(21,1),224,896;gs:(0,5),1120,32;fs:(0,5),1152,32;es:(0,5),1184,32;ds:(0,5),1216,32;edi:(0,5),1248,32;esi:(0,5),1280,32;ebx:(0,5),1312,32;edx:(0,5),1344,32;ecx:(0,5),1376,32;eax:(0,5),1408,32;ebp:(0,5),1440,32;eip:(0,5),1472,32;cs:(0,5),1504,32;eflags:(0,5),1536,32;esp:(0,5),1568,32;ss:(0,5),1600,32;_internal:(0,11),1632,8;oldmask:(0,5),1664,32;;sigval:T(21,4)=u4sival_int:(0,1),0,32;sival_ptr:(6,2),0,32;;sigval_t:t(21,5)=(21,4)sigevent:T(21,6)=s20sigev_value:(21,5),0,32;sigev_signo:(0,1),32,32;sigev_notify:(0,1),64,32;sigev_notify_function:(21,7)=*(21,8)=f(0,19),96,32;sigev_notify_attributes:(21,9)=*(12,46),128,32;;sigevent_t:t(21,10)=(21,6)_sigcommune:T(21,11)=s20_si_code:(9,8),0,32;_si_read_handle:(6,2),32,32;_si_write_handle:(6,2),64,32;_si_process_handle:(6,2),96,32;:(21,12)=u4_si_fd:(0,1),0,32;_si_pipe_fhandler:(6,2),0,32;_si_str:(4,45),0,32;;,128,32;;siginfo_t:t(21,13)=(21,14)=s148si_signo:(0,1),0,32;si_code:(0,1),32,32;si_pid:(8,13),64,32;si_uid:(12,16),96,32;si_errno:(0,1),128,32;:(21,15)=u128__pad:(21,16)=ar(5,8);0;31;(9,8),0,1024;_si_commune:(21,11),0,160;:(21,17)=u8:(21,18)=s8:(21,19)=u8:(21,20)=s8si_tid:(8,21),0,32;si_overrun:(0,4),32,32;;,0,64;si_sigval:(21,5),0,32;si_value:(21,5),0,32;;,0,64;;,0,64;;,0,64;:(21,21)=s12si_status:(0,1),0,32;si_utime:(8,7),32,32;si_stime:(8,7),64,32;;,0,96;si_addr:(6,2),0,32;;,160,1024;; :T(21,22)=eSI_USER:0,SI_ASYNCIO:2,SI_MESGQ:3,SI_TIMER:4,SI_QUEUE:5,SI_KERNEL:6,ILL_ILLOPC:7,ILL_ILLOPN:8,ILL_ILLADR:9,ILL_ILLTRP:10,ILL_PRVOPC:11,ILL_PRVREG:12,ILL_COPROC:13,ILL_BADSTK:14,FPE_INTDIV:15,FPE_INTOVF:16,FPE_FLTDIV:17,FPE_FLTOVF:18,FPE_FLTUND:19,FPE_FLTRES:20,FPE_FLTINV:21,FPE_FLTSUB:22,SEGV_MAPERR:23,SEGV_ACCERR:24,BUS_ADRALN:25,BUS_ADRERR:26,BUS_OBJERR:27,CLD_EXITED:28,CLD_KILLED:29,CLD_DUMPED:30,CLD_TRAPPED:31,CLD_STOPPED:32,CLD_CONTINUED:33,; :T(21,23)=eSIGEV_SIGNAL:0,SIGEV_NONE:1,SIGEV_THREAD:2,;_sig_func_ptr:t(21,24)=(4,55)sigaction:T(21,25)=s12:(21,26)=u4sa_handler:(21,24),0,32;sa_sigaction:(21,27)=*(21,28)=f(0,19),0,32;;,0,32;sa_mask:(20,1),32,32;sa_flags:(0,1),64,32;;sig_atomic_t:t(19,1)=(0,1)/usr/include/cygwin/stat.hstat:T(22,1)=s96st_dev:(12,7),0,32;st_ino:(12,22),64,64;st_mode:(12,35),128,32;st_nlink:(8,15),160,16;st_uid:(12,16),192,32;st_gid:(12,19),224,32;st_rdev:(12,7),256,32;st_size:(12,3),320,64;st_atim:(12,2),384,64;st_mtim:(12,2),448,64;st_ctim:(12,2),512,64;st_blksize:(12,8),576,32;st_blocks:(12,11),640,64;st_spare4:(22,2)=ar(5,8);0;1;(0,3),704,64;;/usr/include/errno.herror_t:t(23,1)=(0,1)/cygdrive/c/qaz/_CVS_WORK/units/or1200_soc/sw/u-boot-2009.03/include/sha1.hsha1_context:t(24,1)=(24,2)=s92total:(24,3)=ar(5,8);0;1;(0,5),0,64;state:(24,4)=ar(5,8);0;4;(0,5),64,160;buffer:(24,5)=ar(5,8);0;63;(0,11),224,512;;main:F(0,1)argc:p(0,1)argv:p(0,22)=*(4,45)output:(0,23)=ar(5,8);0;19;(0,11)i:r(0,1)len:r(0,1)imagefile:(4,45)cmdname:(4,45)ptr:(4,14)data:r(4,14)sbuf:(22,1)ptroff:r(4,14)ifd:(0,1)argv:r(0,22)sha1.c/usr/include/string.hsha1_starts:F(0,19)ctx:p(0,22)=*(7,1)ctx:r(0,22)sha1_process:f(0,19)ctx:p(0,22)data:p(2,14)temp:r(0,5)W:(0,23)=ar(3,8);0;15;(0,5)A:(0,5)B:(0,5)C:(0,5)D:(0,5)E:r(0,5)data:r(2,14)sha1_update:F(0,19)input:p(2,14)ilen:p(0,1)fill:(0,1)left:(0,5)input:r(2,14)ilen:r(0,1)sha1_finish:F(0,19)output:p(2,14)last:r(0,5)padn:r(0,5)high:r(0,5)low:r(0,5)msglen:(0,24)=ar(3,8);0;7;(0,11)output:r(2,14)sha1_csum:F(0,19)ctx:(7,1)sha1_csum_wd:F(0,19)chunk_sz:p(0,4)sha1_hmac:F(0,19)key:p(2,14)keylen:p(0,1)k_ipad:(7,5)k_opad:(7,5)tmpbuf:(0,25)=ar(3,8);0;19;(0,11)key:r(2,14)keylen:r(0,1)sha1_self_test:F(0,1)sha1_padding:S(0,26)=ar(3,8);0;63;(0,27)=k(0,11)_sha1_src:S(0,28)=ar(3,8);0;9;(2,41)ator_cygwin_premain3_cygwin_premain2_cygwin_premain1_cygwin_premain0___RUNTIME_PSEUDO_RELOC_LIST_____cygwin_crt0_bp__data_start_____DTOR_LIST____nm___impure_ptr__imp__fstat___tls_start___dll_crt0__FP11per_process__size_of_stack_commit____size_of_stack_reserve____major_subsystem_version_____crt_xl_start_____crt_xi_start_____chkstk___crt_xi_end____imp__open_GetModuleHandleA@4__bss_start_____RUNTIME_PSEUDO_RELOC_LIST_END____imp__write__size_of_heap_commit____lseek64___crt_xp_start____imp__putchar___crt_xp_end____imp__puts__minor_os_version____imp__lseek__image_base____imp__exit__section_alignment____imp___impure_ptr_cygwin_internal__RUNTIME_PSEUDO_RELOC_LIST___strerror__imp__mmap__data_end____CTOR_LIST____bss_end_____crt_xc_end_____crt_xc_start_____CTOR_LIST_____getreent__imp___open64_cygwin1_dll_iname__imp__memcpy__head_cygwin1_dll__imp____main__file_alignment____imp__malloc__major_os_version____imp__realloc__imp____getreent__imp__GetModuleHandleA@4__DTOR_LIST____imp__fprintf__imp__memset__imp__close__size_of_heap_reserve_____crt_xt_start_____ImageBase__subsystem____imp__calloc__fstat64__imp___fstat64__imp____errno__imp__cygwin_internal___tls_end____imp__munmap__imp__dll_crt0__FP11per_process__imp__strerror__imp__free__major_image_version____loader_flags____imp__printf__head_libkernel32_a__minor_subsystem_version____minor_image_version____imp___mmap64__RUNTIME_PSEUDO_RELOC_LIST_END____libkernel32_a_iname__imp___lseek64___crt_xt_end__
\ No newline at end of file
diff -Naur u-boot-2009.03_orig/tools/updater/CVS/Entries u-boot-2009.03/tools/updater/CVS/Entries
--- u-boot-2009.03_orig/tools/updater/CVS/Entries       1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/tools/updater/CVS/Entries    2009-03-25 15:58:20.356015900 -0700
@@ -0,0 +1,12 @@
+/Makefile/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/cmd_flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ctype.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/dummy.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/flash_hw.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/junk/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/ppcstring.S/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/string.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/update.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+/utils.c/1.1.1.1/Sat Mar 21 21:04:41 2009//
+D
diff -Naur u-boot-2009.03_orig/tools/updater/CVS/Entries.Extra u-boot-2009.03/tools/updater/CVS/Entries.Extra
--- u-boot-2009.03_orig/tools/updater/CVS/Entries.Extra 1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/tools/updater/CVS/Entries.Extra      2009-03-25 15:58:20.356015900 -0700
@@ -0,0 +1,11 @@
+/Makefile///1238019753/
+/cmd_flash.c///1238019753/
+/ctype.c///1238019753/
+/dummy.c///1238019753/
+/flash.c///1238019753/
+/flash_hw.c///1238019753/
+/junk///1238019753/
+/ppcstring.S///1238019753/
+/string.c///1238019753/
+/update.c///1238019753/
+/utils.c///1238019753/
diff -Naur u-boot-2009.03_orig/tools/updater/CVS/Entries.Extra.Old u-boot-2009.03/tools/updater/CVS/Entries.Extra.Old
--- u-boot-2009.03_orig/tools/updater/CVS/Entries.Extra.Old     1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/tools/updater/CVS/Entries.Extra.Old  2009-03-25 15:26:05.000000000 -0700
@@ -0,0 +1,11 @@
+/Makefile///1238019753/
+/cmd_flash.c///1238019753/
+/ctype.c///1238019753/
+/dummy.c///1238019753/
+/flash.c///1238019753/
+/flash_hw.c///1238019753/
+/junk///1238019753/
+/ppcstring.S///1238019753/
+/string.c///1238019753/
+/update.c///1238019753/
+/utils.c///1238019753/
diff -Naur u-boot-2009.03_orig/tools/updater/CVS/Entries.Old u-boot-2009.03/tools/updater/CVS/Entries.Old
--- u-boot-2009.03_orig/tools/updater/CVS/Entries.Old   1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/tools/updater/CVS/Entries.Old        2009-03-25 15:26:05.000000000 -0700
@@ -0,0 +1,12 @@
+/Makefile/1.1.1.1/Wed Mar 25 22:22:33 2009//
+/cmd_flash.c/1.1.1.1/Wed Mar 25 22:22:33 2009//
+/ctype.c/1.1.1.1/Wed Mar 25 22:22:33 2009//
+/dummy.c/1.1.1.1/Wed Mar 25 22:22:33 2009//
+/flash.c/1.1.1.1/Wed Mar 25 22:22:33 2009//
+/flash_hw.c/1.1.1.1/Wed Mar 25 22:22:33 2009//
+/junk/1.1.1.1/Wed Mar 25 22:22:33 2009//
+/ppcstring.S/1.1.1.1/Wed Mar 25 22:22:33 2009//
+/string.c/1.1.1.1/Wed Mar 25 22:22:33 2009//
+/update.c/1.1.1.1/Wed Mar 25 22:22:33 2009//
+/utils.c/1.1.1.1/Wed Mar 25 22:22:33 2009//
+D
diff -Naur u-boot-2009.03_orig/tools/updater/CVS/Repository u-boot-2009.03/tools/updater/CVS/Repository
--- u-boot-2009.03_orig/tools/updater/CVS/Repository    1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/tools/updater/CVS/Repository 2009-03-25 15:26:04.962152500 -0700
@@ -0,0 +1 @@
+units/or1200_soc/sw/u-boot-2009.03/tools/updater
diff -Naur u-boot-2009.03_orig/tools/updater/CVS/Root u-boot-2009.03/tools/updater/CVS/Root
--- u-boot-2009.03_orig/tools/updater/CVS/Root  1969-12-31 16:00:00.000000000 -0800
+++ u-boot-2009.03/tools/updater/CVS/Root       2009-03-25 15:26:04.962152500 -0700
@@ -0,0 +1 @@
+:local:C:\qaz\__CVS_ROOT

Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.