Merge with /home/tur/proj/051_uboot_linux_v38b/u-boot
authorWolfgang Denk <wd@pollux.denx.de>
Wed, 18 Oct 2006 20:27:57 +0000 (22:27 +0200)
committerWolfgang Denk <wd@pollux.denx.de>
Wed, 18 Oct 2006 20:27:57 +0000 (22:27 +0200)
373 files changed:
CHANGELOG
CREDITS
MAKEALL
Makefile
board/AtmarkTechno/suzaku/Makefile
board/BuS/EB+MCF-EV123/Makefile
board/LEOX/elpt860/Makefile
board/MAI/AmigaOneG3SE/Makefile
board/Marvell/db64360/Makefile
board/Marvell/db64460/Makefile
board/RPXClassic/Makefile
board/RPXlite/Makefile
board/RPXlite_dw/Makefile
board/RRvision/Makefile
board/a3000/Makefile
board/adder/Makefile
board/adsvix/Makefile
board/alaska/Makefile
board/altera/dk1c20/Makefile
board/altera/dk1s10/Makefile
board/altera/ep1c20/Makefile
board/altera/ep1s10/Makefile
board/altera/ep1s40/Makefile
board/amcc/bamboo/Makefile
board/amcc/bubinga/Makefile
board/amcc/ebony/Makefile
board/amcc/luan/Makefile
board/amcc/ocotea/Makefile
board/amcc/ocotea/init.S
board/amcc/sequoia/Makefile
board/amcc/sequoia/sdram.c
board/amcc/sequoia/sequoia.c
board/amcc/walnut/Makefile
board/amcc/yellowstone/Makefile
board/amcc/yosemite/Makefile
board/amcc/yucca/Makefile
board/amcc/yucca/yucca.c
board/amirix/ap1000/Makefile
board/armadillo/Makefile
board/assabet/Makefile
board/at91rm9200dk/Makefile
board/atc/Makefile
board/barco/Makefile
board/bc3450/Makefile
board/bmw/Makefile
board/c2mon/Makefile
board/canmb/Makefile
board/cds/mpc8541cds/Makefile
board/cds/mpc8548cds/Makefile
board/cds/mpc8555cds/Makefile
board/cerf250/Makefile
board/cm4008/Makefile
board/cm41xx/Makefile
board/cmc_pu2/Makefile
board/cmi/Makefile
board/cobra5272/Makefile
board/cogent/Makefile
board/cpc45/Makefile
board/cpu86/Makefile
board/cpu87/Makefile
board/cradle/Makefile
board/cray/L1/Makefile
board/csb226/Makefile
board/csb272/Makefile
board/csb472/Makefile
board/csb637/Makefile
board/cu824/Makefile
board/dave/B2/Makefile
board/dave/PPChameleonEVB/Makefile
board/dbau1x00/Makefile
board/delta/Makefile
board/dnp1110/Makefile
board/eXalion/Makefile
board/eltec/bab7xx/Makefile
board/eltec/elppc/Makefile
board/eltec/mhpc/Makefile
board/emk/top5200/Makefile
board/emk/top860/Makefile
board/ep7312/Makefile
board/ep8248/Makefile
board/ep8260/Makefile
board/ep82xxm/Makefile [new file with mode: 0644]
board/ep82xxm/config.mk [new file with mode: 0644]
board/ep82xxm/ep82xxm.c [new file with mode: 0644]
board/ep82xxm/u-boot.lds [new file with mode: 0644]
board/ep88x/Makefile
board/eric/Makefile
board/esd/adciop/Makefile
board/esd/apc405/Makefile
board/esd/ar405/Makefile
board/esd/ash405/Makefile
board/esd/canbt/Makefile
board/esd/cms700/Makefile
board/esd/cpci2dp/Makefile
board/esd/cpci405/Makefile
board/esd/cpci440/Makefile
board/esd/cpci5200/Makefile
board/esd/cpci750/Makefile
board/esd/cpciiser4/Makefile
board/esd/dasa_sim/Makefile
board/esd/dp405/Makefile
board/esd/du405/Makefile
board/esd/hh405/Makefile
board/esd/hub405/Makefile
board/esd/ocrtc/Makefile
board/esd/pci405/Makefile
board/esd/pf5200/Makefile
board/esd/plu405/Makefile
board/esd/pmc405/Makefile
board/esd/tasreg/Makefile
board/esd/voh405/Makefile
board/esd/vom405/Makefile
board/esd/wuh405/Makefile
board/esteem192e/Makefile
board/etin/debris/Makefile
board/etin/kvme080/Makefile
board/etx094/Makefile
board/evb4510/Makefile
board/evb64260/Makefile
board/exbitgen/Makefile
board/ezkit533/Makefile
board/fads/Makefile
board/flagadm/Makefile
board/funkwerk/vovpn-gw/Makefile
board/g2000/Makefile
board/gcplus/Makefile
board/gen860t/Makefile
board/genietv/Makefile
board/gth/Makefile
board/gth2/Makefile
board/gw8260/Makefile
board/hermes/Makefile
board/hidden_dragon/Makefile
board/hmi1001/Makefile
board/hymod/Makefile
board/icecube/Makefile
board/icu862/Makefile
board/ids8247/Makefile
board/impa7/Makefile
board/incaip/Makefile
board/inka4x0/Makefile
board/innokom/Makefile
board/integratorap/Makefile
board/integratorcp/Makefile
board/ip860/Makefile
board/iphase4539/Makefile
board/ispan/Makefile
board/ivm/Makefile
board/ixdp425/Makefile
board/jse/Makefile
board/kb9202/Makefile
board/kup/Makefile
board/kup/kup4k/Makefile
board/kup/kup4x/Makefile
board/lantec/Makefile
board/lart/Makefile
board/logodl/Makefile
board/lpd7a40x/Makefile
board/lubbock/Makefile
board/lwmon/Makefile
board/m5271evb/Makefile
board/m5272c3/Makefile
board/m5282evb/Makefile
board/mbx8xx/Makefile
board/mcc200/Makefile
board/ml2/Makefile
board/modnet50/Makefile
board/mousse/Makefile
board/mp2usb/Makefile
board/mpc8260ads/Makefile
board/mpc8266ads/Makefile
board/mpc8349emds/Makefile
board/mpc8540ads/Makefile
board/mpc8540eval/Makefile
board/mpc8560ads/Makefile
board/mpl/mip405/Makefile
board/mpl/pati/Makefile
board/mpl/pip405/Makefile
board/mpl/vcma9/Makefile
board/musenki/Makefile
board/mvblue/Makefile
board/mvs1/Makefile
board/mx1ads/Makefile
board/mx1fs2/Makefile
board/nc650/Makefile
board/netphone/Makefile
board/netstar/Makefile
board/netta/Makefile
board/netta2/Makefile
board/netvia/Makefile
board/ns9750dev/Makefile
board/nx823/Makefile
board/o2dnt/Makefile
board/omap1510inn/Makefile
board/omap1610inn/Makefile
board/omap2420h4/Makefile
board/omap5912osk/Makefile
board/omap730p2/Makefile
board/oxc/Makefile
board/pb1x00/Makefile
board/pcippc2/Makefile
board/pcs440ep/Makefile
board/pleb2/Makefile
board/pm520/Makefile
board/pm826/Makefile
board/pm828/Makefile
board/pm854/Makefile
board/pm856/Makefile
board/pn62/Makefile
board/ppmc7xx/Makefile
board/ppmc8260/Makefile
board/prodrive/p3p440/Makefile
board/prodrive/pdnb3/Makefile
board/psyent/pci5441/Makefile
board/psyent/pk1c20/Makefile
board/purple/Makefile
board/pxa255_idp/Makefile
board/quantum/Makefile
board/r360mpi/Makefile
board/r5200/Makefile
board/rattler/Makefile
board/rbc823/Makefile
board/rmu/Makefile
board/rpxsuper/Makefile
board/rsdproto/Makefile
board/sacsng/Makefile
board/sandburst/karef/Makefile
board/sandburst/metrobox/Makefile
board/sandpoint/Makefile
board/sbc2410x/Makefile
board/sbc405/Makefile
board/sbc8240/Makefile
board/sbc8260/Makefile
board/sbc8560/Makefile
board/sc520_cdp/Makefile
board/sc520_spunk/Makefile
board/scb9328/Makefile
board/shannon/Makefile
board/siemens/CCM/Makefile
board/siemens/IAD210/Makefile
board/siemens/SCM/Makefile
board/siemens/pcu_e/Makefile
board/sixnet/Makefile
board/sl8245/Makefile
board/smdk2400/Makefile
board/smdk2410/Makefile
board/snmc/qs850/Makefile
board/snmc/qs860t/Makefile
board/sorcery/Makefile
board/spc1920/Makefile
board/spd8xx/Makefile
board/ssv/adnpesc1/Makefile
board/stamp/Makefile
board/stxgp3/Makefile
board/stxxtc/Makefile
board/svm_sc8xx/Makefile
board/sx1/Makefile
board/tb0229/Makefile
board/total5200/Makefile
board/tqm5200/Makefile
board/tqm5200/cam5200_flash.c [new file with mode: 0644]
board/tqm5200/tqm5200.c
board/tqm8260/Makefile
board/tqm834x/Makefile
board/tqm85xx/Makefile
board/tqm8xx/Makefile
board/trab/Makefile
board/uc100/Makefile
board/utx8245/Makefile
board/v37/Makefile
board/versatile/Makefile
board/voiceblue/Makefile
board/w7o/Makefile
board/wepep250/Makefile
board/westel/amx860/Makefile
board/xaeniax/Makefile
board/xilinx/ml300/Makefile
board/xm250/Makefile
board/xpedite1k/Makefile
board/xsengine/Makefile
board/zpc1900/Makefile
board/zylonite/Makefile
common/Makefile
common/cmd_bootm.c
common/cmd_nand.c
common/ft_build.c
common/lcd.c
config.mk
cpu/74xx_7xx/Makefile
cpu/arm1136/Makefile
cpu/arm720t/Makefile
cpu/arm920t/Makefile
cpu/arm920t/at91rm9200/Makefile
cpu/arm920t/imx/Makefile
cpu/arm920t/ks8695/Makefile
cpu/arm920t/s3c24x0/Makefile
cpu/arm925t/Makefile
cpu/arm926ejs/Makefile
cpu/arm926ejs/omap/Makefile
cpu/arm926ejs/versatile/Makefile
cpu/arm946es/Makefile
cpu/arm_intcm/Makefile
cpu/bf533/Makefile
cpu/i386/Makefile
cpu/ixp/Makefile
cpu/ixp/npe/Makefile
cpu/lh7a40x/Makefile
cpu/mcf52x2/Makefile
cpu/microblaze/Makefile
cpu/mips/Makefile
cpu/mpc5xx/Makefile
cpu/mpc5xxx/Makefile
cpu/mpc5xxx/interrupts.c
cpu/mpc8220/Makefile
cpu/mpc824x/Makefile
cpu/mpc8260/Makefile
cpu/mpc83xx/Makefile
cpu/mpc85xx/Makefile
cpu/mpc8xx/Makefile
cpu/nios/Makefile
cpu/nios2/Makefile
cpu/ppc4xx/4xx_enet.c
cpu/ppc4xx/Makefile
cpu/ppc4xx/cpu_init.c
cpu/ppc4xx/ndfc.c
cpu/ppc4xx/start.S
cpu/ppc4xx/vecnum.h
cpu/pxa/Makefile
cpu/s3c44b0/Makefile
cpu/sa1100/Makefile
disk/Makefile
doc/README.nand
drivers/Makefile
drivers/nand/Makefile
drivers/nand/nand_util.c [new file with mode: 0644]
drivers/nand_legacy/Makefile
drivers/serial.c
drivers/sk98lin/Makefile
dtt/Makefile
examples/Makefile
fs/cramfs/Makefile
fs/ext2/Makefile
fs/fat/Makefile
fs/fdos/Makefile
fs/jffs2/Makefile
fs/reiserfs/Makefile
include/common.h
include/configs/TQM5200.h
include/configs/ep82xxm.h [new file with mode: 0644]
include/configs/sequoia.h
include/flash.h
include/image.h
include/nand.h
include/ppc440.h
lib_arm/Makefile
lib_blackfin/Makefile
lib_generic/Makefile
lib_generic/crc32.c
lib_i386/Makefile
lib_m68k/Makefile
lib_microblaze/Makefile
lib_mips/Makefile
lib_nios/Makefile
lib_nios2/Makefile
lib_ppc/Makefile
nand_spl/nand_boot.c
net/Makefile
net/bootp.c
post/rules.mk
rtc/Makefile
tools/Makefile
tools/gdb/Makefile
tools/mkimage.c

index a896e253a966911862dc850de3f964bd6e8a4715..2a40ab3561aa6095fa90c9f89b58d3383d40c37d 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -2,11 +2,77 @@
 Changes since U-Boot 1.1.4:
 ======================================================================
 
+* PPC405EP: Add support for board configuration of CPC0_PCI register
+  This is needed to be able to configure PerWE*/PCI_INT* pin as PerWE*
+  Patch by Tolunay Orkun, 07 Apr 2006
+
+* PPC405EP: Add CFG_GPIO0_OR, CFG_GPIO0_ODR to setup GPIO completely.
+  - Add configuration of Open Drain GPIO Output selection
+  - Add configuration of initial value of GPIO output pins
+  Patch by Tolunay Orkun, 07 Apr 2006
+
+* Fix spelling; minor code cleanup.
+
+* Fix JFFS2 compilation problem
+  Patch by Stefan Roese, 12 Oct 2006
+
+* Cleanup of NAND update patch (remove changelog from cmd_nand.c)
+  Patch by Guido Classen, 10 Oct 2006
+
+* Several improvements to the new NAND subsystem:
+  - JFFS2 related commands implemented in mtd-utils style
+  - Support for bad blocks
+  - Bad block testing commands
+  - NAND lock commands
+  Please take a look at doc/README.nand for more details
+  Patch by Guido Classen, 10 Oct 2006
+
+* Define IH_CPU_AVR32
+  Make it possible to generate AVR32 uImage files with mkimage and
+  make cmd_bootm recognize them.
+  Patch by Haavard Skinnemoen, 22 Sep 2006
+
+* Fix buffer overflow problem in ft_build.c
+  Patch by Fredrik Roubert, 09 Oct 2006
+
+* Make bootp implementation RFC3046 compliant
+  Patch by Joakim Larsson, 27 Jun 2006
+
+* TQM5200: perform POST memory test only on STK52xx carrier board.
+  (and then only if PSC6_3 is read as "1" when booting).
+  Patch by Martin Krause, 21 Jun 2006
+
+* Move "ar" flags to config.mk to allow for silent "make -s"
+  Based on patch by Mike Frysinger, 20 Jun 2006
+
+* Coding style cleanup
+
+* Add support for EP82xxM boards
+  Patch by Aaron Sells, 20 Jun 2006
+
+* Fix comments in include/ppc440.h
+  Patch by Martin Hicks, 16 Jun 2006
+
+* Update for CAM5200 board:
+  - Map in a additional chip selects CS4 and CS5.
+  - Modify the port configration, configure six UARTs and no PCI,
+    ATA and USB.
+  - Add custom flash driver to handle specific byte swapping
+
+* Fix TLB setup for Ocotea board
+  Patch by Stefan Roese, 30 Sep 2006
+
+* Fix reset problem in sequoia sdram init code
+  Patch by Stefan Roese, 23 Sep 2006
+
 * Disable autoboot abort for FO300 when silent mode is enabled
   (according to S1 switch setting).
 
 * Cleanup examples binaries
 
+* Add support for AMCC Rainier PPX440GRx eval board
+  Patch by Stefan Roese, 13 Sep 2006
+
 * Add NAND environment support for PPC440EPx Sequoia NAND boot config
   Patch by Stefan Roese, 12 Sep 2006
 
diff --git a/CREDITS b/CREDITS
index 32d3060c3fecdb23edc09794ef21f20aee066289..3f7b5105561adedb53bb067910d36ad6cdc60c5f 100644 (file)
--- a/CREDITS
+++ b/CREDITS
@@ -386,6 +386,10 @@ N: Robert Schwebel
 E: r.schwebel@pengutronix.de
 D: Support for csb226, logodl and innokom boards (PXA2xx)
 
+N: Aaron Sells
+E: sellsa@embeddedplanet.com
+D: Support for EP82xxM
+
 N: Art Shipkowski
 E: art@videon-central.com
 D: Support for NetSilicon NS7520
diff --git a/MAKEALL b/MAKEALL
index f761467ae6e656fa266248cd71756b9912f1d842..4409f2b3441c7cc89f77d0d73151bb3b83ef0338 100755 (executable)
--- a/MAKEALL
+++ b/MAKEALL
@@ -117,12 +117,12 @@ LIST_824x="       \
 
 LIST_8260="    \
        atc             cogent_mpc8260  CPU86           CPU87           \
-       ep8248          ep8260          gw8260          hymod           \
-       IPHASE4539      ISPAN           MPC8260ADS      MPC8266ADS      \
-       MPC8272ADS      PM826           PM828           ppmc8260        \
-       Rattler8248     RPXsuper        rsdproto        sacsng          \
-       sbc8260         SCM             TQM8260_AC      TQM8260_AD      \
-       TQM8260_AE      ZPC1900                                         \
+       ep8248          ep8260          ep82xxm         gw8260          \
+       hymod           IPHASE4539      ISPAN           MPC8260ADS      \
+       MPC8266ADS      MPC8272ADS      PM826           PM828           \
+       ppmc8260        Rattler8248     RPXsuper        rsdproto        \
+       sacsng          sbc8260         SCM             TQM8260_AC      \
+       TQM8260_AD      TQM8260_AE      ZPC1900                         \
 "
 
 #########################################################################
index 3924f6559a7f1758b6445f618091b5b00b306ad2..37769d40cc5e5e2e2c4b8d2627fc3bd89dfbc1a1 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1145,6 +1145,21 @@ PPChameleonEVB_HI_33_config:     unconfig
                }
        @$(MKCONFIG) -a $(call xtract_4xx,$@) ppc ppc4xx PPChameleonEVB dave
 
+rainier_config:        unconfig
+       @echo "#define CONFIG_RAINIER" > include/config.h
+       @echo "Configuring for rainier board as subset of sequoia..."
+       @$(MKCONFIG) -a sequoia ppc ppc4xx sequoia amcc
+
+rainier_nand_config:   unconfig
+       @echo "#define CONFIG_RAINIER" > include/config.h
+       @echo "Configuring for rainier board as subset of sequoia..."
+       @ln -s board/amcc/sequoia/Makefile nand_spl/Makefile
+       @echo "#define CONFIG_NAND_U_BOOT" >> include/config.h
+       @echo "Compile NAND boot image for sequoia"
+       @$(MKCONFIG) -a sequoia ppc ppc4xx sequoia amcc
+       @echo "TEXT_BASE = 0x01000000" >board/amcc/sequoia/config.tmp
+       @echo "CONFIG_NAND_U_BOOT = y" >> include/config.mk
+
 sbc405_config: unconfig
        @$(MKCONFIG) $(@:_config=) ppc ppc4xx sbc405
 
@@ -1320,6 +1335,9 @@ ep8248E_config    :       unconfig
 ep8260_config: unconfig
        @$(MKCONFIG) $(@:_config=) ppc mpc8260 ep8260
 
+ep82xxm_config:        unconfig
+       @./mkconfig $(@:_config=) ppc mpc8260 ep82xxm
+
 gw8260_config: unconfig
        @$(MKCONFIG) $(@:_config=) ppc mpc8260 gw8260
 
index b42026981f5ec0133bede8197f7c62ba8a368e54..109cec264056bdd5b0e25d4a5f4601151bfc00ac 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 57363bc249bbfa3aa39e3adf4a3292d0df81c341..ed3ac0755898a2c5b516fd21868456f659f3bc5d 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 43044943b11a863f1480b3d2645cea190d5831ce..29286919c0fb3860b3fea7b52bacfe90b0d35c1d 100644 (file)
@@ -43,7 +43,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index e9204823d968e4b81c028c3b409eacbd5d5dc4f6..cb6ea26298d3b7dc064a2efccc0da7c5eb35c45a 100644 (file)
@@ -50,7 +50,7 @@ EMUOBJ  := $(addprefix $(obj),$(EMUOBJ))
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS) $(EMUSRC)
        make $(obj)libx86emu.a -C ../bios_emulator/scitech/src/x86emu -f makefile.uboot CROSS_COMPILE=$(CROSS_COMPILE)
        -rm $(LIB)
-       $(AR) crv $@ $(OBJS) $(SOBJS) $(EMUOBJ)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS) $(EMUOBJ)
 
 
 #########################################################################
index a084c894ae3c66a8cf2be6598715d5af0edc03b3..641a0ab8603486dde51c82ae20d48a589f1ffce7 100644 (file)
@@ -1,7 +1,7 @@
 #
 # (C) Copyright 2006
 # Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-# 
+#
 # (C) Copyright 2001
 # Josh Huber <huber@mclx.com>, Mission Critical Linux, Inc.
 #
@@ -42,7 +42,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 #########################################################################
 
index a084c894ae3c66a8cf2be6598715d5af0edc03b3..641a0ab8603486dde51c82ae20d48a589f1ffce7 100644 (file)
@@ -1,7 +1,7 @@
 #
 # (C) Copyright 2006
 # Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-# 
+#
 # (C) Copyright 2001
 # Josh Huber <huber@mclx.com>, Mission Critical Linux, Inc.
 #
@@ -42,7 +42,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 #########################################################################
 
index d8832ac1b863029cd99e08731ea2485c04d465b1..19ea3ed3e3edfed1b8354c5b0161609175fb8167 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index e3d24b3689eff53801df8da321f63193a864f187..cf07cf40fdb9485240118667e0b22074acd7516d 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index e3d24b3689eff53801df8da321f63193a864f187..cf07cf40fdb9485240118667e0b22074acd7516d 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index e3d24b3689eff53801df8da321f63193a864f187..cf07cf40fdb9485240118667e0b22074acd7516d 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 43c27e9babaab545b295c3a5b2ea9c78336e4c86..d3db1a90e216dde7147e9dead32f2225ed93bc72 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index d0223b51ffc971d51ed699d2592b66bca9c9ab02..b2ffd288331284b86a8a904e37d4e04d46b59171 100644 (file)
@@ -35,7 +35,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 0daa3838d67c8f0759ad88c397017ebf15d020fc..214c7dbe450209a0cd745145aacc2024714a7b1e 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 969580e9388dbef5e607043d63bf9af7588f247a..27475ea4d70ab8354e2d208cb72ede2fd190862b 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 26c724c5a15dbeb264f48d1cef1a8c94f48d6b13..6af83890a8a2ad860463210755c62e58427557b1 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 26c724c5a15dbeb264f48d1cef1a8c94f48d6b13..6af83890a8a2ad860463210755c62e58427557b1 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 26873b6c2c7a3077ccbfcc4b192614c3d1e1c3ae..7a8caf7c11ebf48b83b07acc61356f1ce754d78f 100644 (file)
@@ -37,7 +37,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 26873b6c2c7a3077ccbfcc4b192614c3d1e1c3ae..7a8caf7c11ebf48b83b07acc61356f1ce754d78f 100644 (file)
@@ -37,7 +37,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 26873b6c2c7a3077ccbfcc4b192614c3d1e1c3ae..7a8caf7c11ebf48b83b07acc61356f1ce754d78f 100644 (file)
@@ -37,7 +37,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 5f3e34e246816ffd9af5c145cf3bfa7d17e1266a..5da96e9e1c846aaab582cd468654ae8debc73520 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index e78ed5f926d78eb3adf2f5e0f43cf196d706a0b7..50fecc6d486a404480d5b733758d8e05203fcb21 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 5f3e34e246816ffd9af5c145cf3bfa7d17e1266a..5da96e9e1c846aaab582cd468654ae8debc73520 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 5f3e34e246816ffd9af5c145cf3bfa7d17e1266a..5da96e9e1c846aaab582cd468654ae8debc73520 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 4def7fd79b0298db0f6e959661a0f318bcf8fbf7..a758650e591c91304541ac05581f99063b9b3e33 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index e33427a108c82ddd54ac2bac50e9c70b3cc5a1f1..7e0b13249293c2f1c3ef3e18b4324fb396643092 100644 (file)
@@ -1,30 +1,31 @@
 /*
-*  Copyright (C) 2002 Scott McNutt <smcnutt@artesyncp.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
-*/
+ *  Copyright (C) 2002 Scott McNutt <smcnutt@artesyncp.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 <ppc_asm.tmpl>
 #include <config.h>
 
 /* General */
 #define TLB_VALID   0x00000200
+#define _256M       0x10000000
 
 /* Supported page sizes */
 
 #define SZ_4K      0x00000010
 #define SZ_16K     0x00000020
 #define SZ_64K     0x00000030
-#define SZ_256K    0x00000040
+#define SZ_256K            0x00000040
 #define SZ_1M      0x00000050
+#define SZ_8M       0x00000060
 #define SZ_16M     0x00000070
-#define SZ_256M    0x00000090
+#define SZ_256M            0x00000090
 
 /* Storage attributes */
 #define SA_W       0x00000800      /* Write-through */
@@ -54,7 +56,7 @@
 #define EPN(e)         ((e) & 0xfffffc00)
 #define TLB0(epn,sz)   ( (EPN((epn)) | (sz) | TLB_VALID ) )
 #define TLB1(rpn,erpn) ( ((rpn)&0xfffffc00) | (erpn) )
-#define TLB2(a)        ( (a)&0x00000fbf )
+#define TLB2(a)                ( (a)&0x00000fbf )
 
 #define tlbtab_start\
        mflr    r1  ;\
 
 tlbtab:
     tlbtab_start
-    tlbentry( 0xf0000000, SZ_256M, 0xf0000000, 1, AC_R|AC_W|AC_X|SA_G|SA_I)
-    tlbentry( CFG_PERIPHERAL_BASE, SZ_256M, 0x40000000, 1, AC_R|AC_W|SA_G|SA_I)
+    tlbentry( 0xf0000000, SZ_256M, 0xf0000000, 1, AC_R|AC_W|AC_X|SA_G|SA_I )
+    tlbentry( CFG_PERIPHERAL_BASE, SZ_256M, 0x40000000, 1, AC_R|AC_W|SA_G|SA_I )
     tlbentry( CFG_ISRAM_BASE, SZ_4K, 0x80000000, 0, AC_R|AC_W|AC_X )
     tlbentry( CFG_ISRAM_BASE + 0x1000, SZ_4K, 0x80001000, 0, AC_R|AC_W|AC_X )
     tlbentry( CFG_SDRAM_BASE, SZ_256M, 0x00000000, 0, AC_R|AC_W|AC_X|SA_G|SA_I )
-    tlbentry( CFG_SDRAM_BASE+0x10000000, SZ_256M, 0x00000000, 0, AC_R|AC_W|AC_X|SA_G|SA_I )
+    tlbentry( CFG_SDRAM_BASE + 0x10000000, SZ_256M, 0x10000000, 0, AC_R|AC_W|AC_X|SA_G|SA_I )
+    tlbentry( CFG_SDRAM_BASE + 0x20000000, SZ_256M, 0x20000000, 0, AC_R|AC_W|AC_X|SA_G|SA_I )
+    tlbentry( CFG_SDRAM_BASE + 0x30000000, SZ_256M, 0x30000000, 0, AC_R|AC_W|AC_X|SA_G|SA_I )
     tlbentry( CFG_PCI_BASE, SZ_256M, 0x00000000, 2, AC_R|AC_W|SA_G|SA_I )
     tlbentry( CFG_PCI_MEMBASE, SZ_256M, 0x00000000, 3, AC_R|AC_W|SA_G|SA_I )
     tlbtab_end
index b29c04a0d9e9b87be0b6e4f353b576af4fa83366..9c1be0e43757915c59a588f54616408a6ca7455f 100644 (file)
@@ -34,7 +34,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index a62648bb5f4fef1bf414bfe1becbe382df71661a..53f728def9d576cae7a2af11f728608f7007eaa3 100644 (file)
@@ -34,12 +34,6 @@ long int initdram (int board_type)
 
        mtsdram(DDR0_02, 0x00000000);
 
-       /*
-        * Soft-reset SDRAM controller
-        */
-       mtsdr(sdr_srst, SDR0_SRST0_DMC);
-       mtsdr(sdr_srst, 0x00000000);
-
        mtsdram(DDR0_00, 0x0000190A);
        mtsdram(DDR0_01, 0x01000000);
        mtsdram(DDR0_03, 0x02030602);
index 95734b9c57c347bc3fa25579dc98f3edc4da0e59..ccf6f0c8039bdceb9de6727d60017655888ab72a 100644 (file)
@@ -4,7 +4,7 @@
  *
  * (C) Copyright 2006
  * Jacqueline Pira-Ferriol, AMCC/IBM, jpira-ferriol@fr.ibm.com
- * Alain Saurel,            AMCC/IBM, alain.saurel@fr.ibm.com
+ * Alain Saurel,           AMCC/IBM, alain.saurel@fr.ibm.com
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License as
@@ -123,12 +123,12 @@ int board_early_init_f(void)
 
        /* setup NAND FLASH */
        mfsdr(SDR0_CUST0, sdr0_cust0);
-        sdr0_cust0 = SDR0_CUST0_MUX_NDFC_SEL   |
+       sdr0_cust0 = SDR0_CUST0_MUX_NDFC_SEL    |
                SDR0_CUST0_NDFC_ENABLE          |
                SDR0_CUST0_NDFC_BW_8_BIT        |
                SDR0_CUST0_NDFC_ARE_MASK        |
                (0x80000000 >> (28 + CFG_NAND_CS));
-        mtsdr(SDR0_CUST0, sdr0_cust0);
+       mtsdr(SDR0_CUST0, sdr0_cust0);
 
        return 0;
 }
@@ -140,10 +140,12 @@ int misc_init_r(void)
 {
        uint pbcr;
        int size_val = 0;
+#ifdef CONFIG_440EPX
        unsigned long usb2d0cr = 0;
        unsigned long usb2phy0cr, usb2h0cr = 0;
        unsigned long sdr0_pfc1;
        char *act = getenv("usbact");
+#endif
 
        /*
         * FLASH stuff...
@@ -211,40 +213,41 @@ int misc_init_r(void)
        /*
         * USB suff...
         */
+#ifdef CONFIG_440EPX
        if (act == NULL || strcmp(act, "hostdev") == 0) {
                /* SDR Setting */
-               mfsdr(SDR0_PFC1, sdr0_pfc1);
-               mfsdr(SDR0_USB0, usb2d0cr);
-               mfsdr(SDR0_USB2PHY0CR, usb2phy0cr);
-               mfsdr(SDR0_USB2H0CR, usb2h0cr);
+               mfsdr(SDR0_PFC1, sdr0_pfc1);
+               mfsdr(SDR0_USB0, usb2d0cr);
+               mfsdr(SDR0_USB2PHY0CR, usb2phy0cr);
+               mfsdr(SDR0_USB2H0CR, usb2h0cr);
 
                usb2phy0cr = usb2phy0cr &~SDR0_USB2PHY0CR_XOCLK_MASK;
                usb2phy0cr = usb2phy0cr | SDR0_USB2PHY0CR_XOCLK_EXTERNAL;       /*0*/
-               usb2phy0cr = usb2phy0cr &~SDR0_USB2PHY0CR_WDINT_MASK;
-               usb2phy0cr = usb2phy0cr | SDR0_USB2PHY0CR_WDINT_16BIT_30MHZ;    /*1*/
+               usb2phy0cr = usb2phy0cr &~SDR0_USB2PHY0CR_WDINT_MASK;
+               usb2phy0cr = usb2phy0cr | SDR0_USB2PHY0CR_WDINT_16BIT_30MHZ;    /*1*/
                usb2phy0cr = usb2phy0cr &~SDR0_USB2PHY0CR_DVBUS_MASK;
-               usb2phy0cr = usb2phy0cr | SDR0_USB2PHY0CR_DVBUS_PURDIS;         /*0*/
+               usb2phy0cr = usb2phy0cr | SDR0_USB2PHY0CR_DVBUS_PURDIS;         /*0*/
                usb2phy0cr = usb2phy0cr &~SDR0_USB2PHY0CR_DWNSTR_MASK;
-               usb2phy0cr = usb2phy0cr | SDR0_USB2PHY0CR_DWNSTR_HOST;          /*1*/
+               usb2phy0cr = usb2phy0cr | SDR0_USB2PHY0CR_DWNSTR_HOST;          /*1*/
                usb2phy0cr = usb2phy0cr &~SDR0_USB2PHY0CR_UTMICN_MASK;
-               usb2phy0cr = usb2phy0cr | SDR0_USB2PHY0CR_UTMICN_HOST;          /*1*/
+               usb2phy0cr = usb2phy0cr | SDR0_USB2PHY0CR_UTMICN_HOST;          /*1*/
 
                /* An 8-bit/60MHz interface is the only possible alternative
                   when connecting the Device to the PHY */
-               usb2h0cr   = usb2h0cr &~SDR0_USB2H0CR_WDINT_MASK;
-               usb2h0cr   = usb2h0cr | SDR0_USB2H0CR_WDINT_16BIT_30MHZ;        /*1*/
+               usb2h0cr   = usb2h0cr &~SDR0_USB2H0CR_WDINT_MASK;
+               usb2h0cr   = usb2h0cr | SDR0_USB2H0CR_WDINT_16BIT_30MHZ;        /*1*/
 
-               /* To enable the USB 2.0 Device function through the UTMI interface */
-               usb2d0cr = usb2d0cr &~SDR0_USB2D0CR_USB2DEV_EBC_SEL_MASK;
-               usb2d0cr = usb2d0cr | SDR0_USB2D0CR_USB2DEV_SELECTION;          /*1*/
+               /* To enable the USB 2.0 Device function through the UTMI interface */
+               usb2d0cr = usb2d0cr &~SDR0_USB2D0CR_USB2DEV_EBC_SEL_MASK;
+               usb2d0cr = usb2d0cr | SDR0_USB2D0CR_USB2DEV_SELECTION;          /*1*/
 
-               sdr0_pfc1 = sdr0_pfc1 &~SDR0_PFC1_UES_MASK;
-               sdr0_pfc1 = sdr0_pfc1 | SDR0_PFC1_UES_USB2D_SEL;                /*0*/
+               sdr0_pfc1 = sdr0_pfc1 &~SDR0_PFC1_UES_MASK;
+               sdr0_pfc1 = sdr0_pfc1 | SDR0_PFC1_UES_USB2D_SEL;                /*0*/
 
-               mtsdr(SDR0_PFC1, sdr0_pfc1);
-               mtsdr(SDR0_USB0, usb2d0cr);
-               mtsdr(SDR0_USB2PHY0CR, usb2phy0cr);
-               mtsdr(SDR0_USB2H0CR, usb2h0cr);
+               mtsdr(SDR0_PFC1, sdr0_pfc1);
+               mtsdr(SDR0_USB0, usb2d0cr);
+               mtsdr(SDR0_USB2PHY0CR, usb2phy0cr);
+               mtsdr(SDR0_USB2H0CR, usb2h0cr);
 
                /*clear resets*/
                udelay (1000);
@@ -261,11 +264,11 @@ int misc_init_r(void)
                usb2phy0cr = usb2phy0cr &~SDR0_USB2PHY0CR_XOCLK_MASK;
                usb2phy0cr = usb2phy0cr | SDR0_USB2PHY0CR_XOCLK_EXTERNAL;       /*0*/
                usb2phy0cr = usb2phy0cr &~SDR0_USB2PHY0CR_DVBUS_MASK;
-               usb2phy0cr = usb2phy0cr | SDR0_USB2PHY0CR_DVBUS_PURDIS;         /*0*/
+               usb2phy0cr = usb2phy0cr | SDR0_USB2PHY0CR_DVBUS_PURDIS;         /*0*/
                usb2phy0cr = usb2phy0cr &~SDR0_USB2PHY0CR_DWNSTR_MASK;
-               usb2phy0cr = usb2phy0cr | SDR0_USB2PHY0CR_DWNSTR_HOST;          /*1*/
+               usb2phy0cr = usb2phy0cr | SDR0_USB2PHY0CR_DWNSTR_HOST;          /*1*/
                usb2phy0cr = usb2phy0cr &~SDR0_USB2PHY0CR_UTMICN_MASK;
-               usb2phy0cr = usb2phy0cr | SDR0_USB2PHY0CR_UTMICN_HOST;          /*1*/
+               usb2phy0cr = usb2phy0cr | SDR0_USB2PHY0CR_UTMICN_HOST;          /*1*/
                mtsdr(SDR0_USB2PHY0CR, usb2phy0cr);
 
                udelay (1000);
@@ -284,33 +287,33 @@ int misc_init_r(void)
                /*-------------------PATCH-------------------------------*/
 
                /* SDR Setting */
-               mfsdr(SDR0_USB2PHY0CR, usb2phy0cr);
+               mfsdr(SDR0_USB2PHY0CR, usb2phy0cr);
                mfsdr(SDR0_USB2H0CR, usb2h0cr);
                mfsdr(SDR0_USB0, usb2d0cr);
                mfsdr(SDR0_PFC1, sdr0_pfc1);
 
                usb2phy0cr = usb2phy0cr &~SDR0_USB2PHY0CR_XOCLK_MASK;
                usb2phy0cr = usb2phy0cr | SDR0_USB2PHY0CR_XOCLK_EXTERNAL;       /*0*/
-               usb2phy0cr = usb2phy0cr &~SDR0_USB2PHY0CR_WDINT_MASK;
+               usb2phy0cr = usb2phy0cr &~SDR0_USB2PHY0CR_WDINT_MASK;
                usb2phy0cr = usb2phy0cr | SDR0_USB2PHY0CR_WDINT_8BIT_60MHZ;     /*0*/
                usb2phy0cr = usb2phy0cr &~SDR0_USB2PHY0CR_DVBUS_MASK;
-               usb2phy0cr = usb2phy0cr | SDR0_USB2PHY0CR_DVBUS_PUREN;          /*1*/
+               usb2phy0cr = usb2phy0cr | SDR0_USB2PHY0CR_DVBUS_PUREN;          /*1*/
                usb2phy0cr = usb2phy0cr &~SDR0_USB2PHY0CR_DWNSTR_MASK;
-               usb2phy0cr = usb2phy0cr | SDR0_USB2PHY0CR_DWNSTR_DEV;           /*0*/
+               usb2phy0cr = usb2phy0cr | SDR0_USB2PHY0CR_DWNSTR_DEV;           /*0*/
                usb2phy0cr = usb2phy0cr &~SDR0_USB2PHY0CR_UTMICN_MASK;
-               usb2phy0cr = usb2phy0cr | SDR0_USB2PHY0CR_UTMICN_DEV;           /*0*/
+               usb2phy0cr = usb2phy0cr | SDR0_USB2PHY0CR_UTMICN_DEV;           /*0*/
 
                usb2h0cr   = usb2h0cr &~SDR0_USB2H0CR_WDINT_MASK;
-               usb2h0cr   = usb2h0cr | SDR0_USB2H0CR_WDINT_8BIT_60MHZ;         /*0*/
+               usb2h0cr   = usb2h0cr | SDR0_USB2H0CR_WDINT_8BIT_60MHZ;         /*0*/
 
                usb2d0cr = usb2d0cr &~SDR0_USB2D0CR_USB2DEV_EBC_SEL_MASK;
-               usb2d0cr = usb2d0cr | SDR0_USB2D0CR_EBC_SELECTION;              /*0*/
+               usb2d0cr = usb2d0cr | SDR0_USB2D0CR_EBC_SELECTION;              /*0*/
 
                sdr0_pfc1 = sdr0_pfc1 &~SDR0_PFC1_UES_MASK;
-               sdr0_pfc1 = sdr0_pfc1 | SDR0_PFC1_UES_EBCHR_SEL;                /*1*/
+               sdr0_pfc1 = sdr0_pfc1 | SDR0_PFC1_UES_EBCHR_SEL;                /*1*/
 
-               mtsdr(SDR0_USB2H0CR, usb2h0cr);
-               mtsdr(SDR0_USB2PHY0CR, usb2phy0cr);
+               mtsdr(SDR0_USB2H0CR, usb2h0cr);
+               mtsdr(SDR0_USB2PHY0CR, usb2phy0cr);
                mtsdr(SDR0_USB0, usb2d0cr);
                mtsdr(SDR0_PFC1, sdr0_pfc1);
 
@@ -322,6 +325,7 @@ int misc_init_r(void)
 
                printf("USB:   Device(int phy)\n");
        }
+#endif /* CONFIG_440EPX */
 
        return 0;
 }
@@ -330,7 +334,11 @@ int checkboard(void)
 {
        char *s = getenv("serial#");
 
+#ifdef CONFIG_440EPX
        printf("Board: Sequoia - AMCC PPC440EPx Evaluation Board");
+#else
+       printf("Board: Rainier - AMCC PPC440GRx Evaluation Board");
+#endif
        if (s != NULL) {
                puts(", serial# ");
                puts(s);
index e78ed5f926d78eb3adf2f5e0f43cf196d706a0b7..50fecc6d486a404480d5b733758d8e05203fcb21 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index a47a0674c415825bfd71dbe25af1276a10ef9924..261e5d49cca695eb3542f293f8f6ac91fb1e6dde 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index a47a0674c415825bfd71dbe25af1276a10ef9924..261e5d49cca695eb3542f293f8f6ac91fb1e6dde 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 696fd4092e7cd19466e8a0fd43389f10585e672e..9f42279b46686897373977a8b5792c2af9e7ed72 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index cd175265f0d00966de3bf46a4f9769e92021b3d2..e9b34dd249a9c9333c7cccf2138a978319fc0d81 100644 (file)
@@ -958,7 +958,6 @@ int is_pci_host(struct pci_controller *hose)
        return 1;
 }
 
-
 int yucca_pcie_card_present(int port)
 {
        u16 reg;
@@ -1084,8 +1083,6 @@ void yucca_setup_pcie_fpga_endpoint(int port)
                 (endpoint | in_be16((u16 *)FPGA_REG1C)));
 }
 
-
-
 static struct pci_controller pcie_hose[3] = {{0},{0},{0}};
 
 void pcie_setup_hoses(void)
index 08a17f90d72b029bef047928243ab25629290aaa..7b99d314f992890737bbb94c52391f0761ddf581 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(OBJS) $(SOBJS)
-       $(AR) crv $@ $^
+       $(AR) $(ARFLAGS) $@ $^
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 80e1687bf68d75d1d1c9b0a36780d8da459c6625..1380e92cf6d07de47ab6e0bbf83794b0d209c0b7 100644 (file)
@@ -37,7 +37,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index a7414e8414c191bb620d8e90e2e846723aca5c5d..872c7fbff85ac91a26e6393d667e553d1cd70937 100644 (file)
@@ -35,7 +35,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index f087a0f316ac960fdecde35fdb8e176a45ba8521..0fcafd9b0fc4b899e64be48a4cd6f767ae5c9bb1 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index a041c999fa400a48d277e8136031803702cbe907..4b9cd7b8209973070647206681ef1d26c68f5381 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 9ac6a4da375ff52ca2f3be03ddb174cc859ac643..5aa02d4a7f17a2319aea7376c4e5b9497aa352a5 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 122a22ae4f3e4d824c6fd2442baf5daee49bc65c..d0e147e4ba004a1b96abb26f6da0bea4478c9581 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index b775da2a2147fcabeafd87d7d9e291c32b7d5361..ac85cc3506a2f9f167775f03f9d054fb6493c272 100644 (file)
@@ -38,7 +38,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 #########################################################################
 
index 62db2f494b68ba35b1b35786db9ac900d306ec2e..2b10b0c518acfb4eee7879e5aa0f3ccaa7f7b4cb 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 47a3e8cf00b77d4eaa270f0af8a7e7d19a05710d..23d410d14e67f2e9245b5564b4abc49c43f05f6e 100644 (file)
@@ -36,7 +36,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 3f3a51721ad56354225fc85da116e2d14141eef3..d65eb1b3e691fd7f08f81b0efb88e65244c4d307 100644 (file)
@@ -40,7 +40,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(OBJS) $(SOBJS)
index 3f3a51721ad56354225fc85da116e2d14141eef3..d65eb1b3e691fd7f08f81b0efb88e65244c4d307 100644 (file)
@@ -40,7 +40,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(OBJS) $(SOBJS)
index 3f3a51721ad56354225fc85da116e2d14141eef3..d65eb1b3e691fd7f08f81b0efb88e65244c4d307 100644 (file)
@@ -40,7 +40,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(OBJS) $(SOBJS)
index 52712be47a70093eb05544b1a6dcbeba72e9c004..50d07b80226b56979150f7a94e1a89bbae6d3d4e 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index fb18ad804d88f7492b1e36d22e2235dcf6eda503..f53404148ae37cf4e13e19523ad57dd870f3f97c 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index d42e2a8e744686df627fc8bc0725cc7c21aa3983..5c20477d5d2ce596dcae26f477b3313499bc6e0c 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index ccbf3087f51e831edfe939e2729ba5133839a7d5..d445f287cba664a89dfb71111b9183975d3f1201 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index d935044a9929f6d74a252f38691f22755a18f1a5..6a4230486f1ec4acbe24020c4f316847caf8d79c 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index e3d24b3689eff53801df8da321f63193a864f187..cf07cf40fdb9485240118667e0b22074acd7516d 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 8498aceafe3a63bd61d592d4485f1035616757a5..ced04dd725cbbaaffc372c767729471ba909d2fa 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 346833a789db7cbc96f220238d5575bb96cce031..374fdd7650e60a021c39daa220c93177afbabd75 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 1b57d2b0236ce949c225b11814dce20ff69e69fd..dcb1907032b5df8d2f89bdcb23506a49bb1446c7 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 1b57d2b0236ce949c225b11814dce20ff69e69fd..dcb1907032b5df8d2f89bdcb23506a49bb1446c7 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index c6a5a0d82da52d2d7a66e910cf1847d4a0e94952..90a790793615a248d3f8d6dd392a21ab6796a404 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 44ef9c26aa194472c200d983250b78864e153b28..cfdd60e0562ac29b72ede73af69b4c0009236b13 100644 (file)
@@ -36,7 +36,7 @@ SOBJS := $(addprefix $(obj),$(SOBJS))
 # HACK: depend needs bootscript.c, which needs tools/mkimage, which is not
 # built in the depend stage.  So... put bootscript.o here, not in OBJS
 $(LIB):        $(OBJS) $(SOBJS) $(obj)bootscript.o
-       $(AR) crv $@ $^
+       $(AR) $(ARFLAGS) $@ $^
 
 clean:
        rm -f $(SOBJS) $(OBJS) $(obj)bootscript.c \
index 34c071e025a1d1d8e8bc1d35b233277553e2dad7..eee8f135252e32eba13931e797d305e8626a670c 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 7acb7c809b6a869eecf4ef846b987e493f9132c5..703a25c979e8c499af6ebeda9774e47aeb2dbe48 100644 (file)
@@ -36,7 +36,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(OBJS) $(SOBJS)
-       $(AR) crv $@ $^
+       $(AR) $(ARFLAGS) $@ $^
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 7acb7c809b6a869eecf4ef846b987e493f9132c5..703a25c979e8c499af6ebeda9774e47aeb2dbe48 100644 (file)
@@ -36,7 +36,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(OBJS) $(SOBJS)
-       $(AR) crv $@ $^
+       $(AR) $(ARFLAGS) $@ $^
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index d766ea2eae881a11de482c6ec963bce5969e67c2..ce263aa84e519597bea10a0b823dab75f8477faf 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 1b57d2b0236ce949c225b11814dce20ff69e69fd..dcb1907032b5df8d2f89bdcb23506a49bb1446c7 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 106025da1eb0eb792ccca2549d3869c6bc229bc0..56b286f85eea28887a7a768504c12e45f0e12ba2 100644 (file)
@@ -1,7 +1,7 @@
 #
 # (C) Copyright 2006
 # Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-# 
+#
 # (C) Copyright 2002
 # Sysgo Real-Time Solutions, GmbH <www.elinos.com>
 # Marius Groeger <mgroeger@sysgo.de>
@@ -37,7 +37,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index e62981cf3fb917c32d60d4ece06b03bc6dcf50db..cb7becb4db99892035b645b30a868d975a034773 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(OBJS) $(SOBJS)
-       $(AR) crv $@ $^
+       $(AR) $(ARFLAGS) $@ $^
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 13986b8fcfc6c077db9076a188cc2571261d86ce..afe02c27c6ff9baecff2c09aed27241fb42cbb97 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 #########################################################################
 
index 514ca9b9b2fe99396009bf89bfd8d98ae0e3593a..72133286091e9099e8910dd4f223b6797e75ed56 100644 (file)
@@ -34,7 +34,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 367d8ae5d41c58b52b911056cd4bf28aecdb301d..a024e550aa31c407d5770ea5647abcf7c6eeff26 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 0acb052307e581350857d9010509401b7a836362..98601a3f36814a4591ba0c41a6604dd99f8e3857 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 5c6b654c4ae6a3ff143b0bb13ef01fb12c061e23..f4b0b07d965990cf8da8902c1b58bf7c1a41a0f6 100644 (file)
@@ -34,7 +34,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 5d186d97aff529bef4be304bc9925123e4d8abde..5ab96233ff2fab2fce2f8f907172321f72b6f2ab 100644 (file)
@@ -34,7 +34,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index e3d24b3689eff53801df8da321f63193a864f187..cf07cf40fdb9485240118667e0b22074acd7516d 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 307ef4ae69aa70c8f9b5d22a2a6f0004d4154129..b257739b0f59d4d39e005ee2afe604bfdd710655 100644 (file)
@@ -36,7 +36,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index bd923af7c98d8b61711e9073f552534075abc104..88abd76c5c1451812516c2ef75e2745a374ec567 100644 (file)
@@ -35,7 +35,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index c8c834f62e44bb45925d83328840f9487d97bbd5..45ee6cd084597ed466975422684658f2f2ae7fd0 100644 (file)
@@ -37,7 +37,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index e880f873af4b8a512f100b64a7fb2741133ba35b..be7e213a9b5d311794d855554c720ec083c2051b 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 8744359660c86c9c8a032fa8dd8e31894a54c94a..f75249fc6a048f0971026ac458bb269fe9bf06ad 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
diff --git a/board/ep82xxm/Makefile b/board/ep82xxm/Makefile
new file mode 100644 (file)
index 0000000..349be1f
--- /dev/null
@@ -0,0 +1,49 @@
+#
+# (C) Copyright 2001-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  := $(BOARD).o
+
+SRCS   := $(COBJS:.o=.c)
+OBJS   := $(addprefix $(obj),$(COBJS))
+
+$(LIB):        $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
+
+clean:
+       rm -f $(OBJS)
+
+distclean:     clean
+       rm -f $(LIB) core *.bak .depend *~
+
+#########################################################################
+
+# defines $(obj).depend target
+include $(SRCTREE)/rules.mk
+
+sinclude $(obj).depend
+
+#########################################################################
diff --git a/board/ep82xxm/config.mk b/board/ep82xxm/config.mk
new file mode 100644 (file)
index 0000000..da039e2
--- /dev/null
@@ -0,0 +1,26 @@
+#
+# (C) Copyright 2001-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
+#
+
+# EP82xxM series boards by Embedded Planet
+
+TEXT_BASE = 0xFFF00000
diff --git a/board/ep82xxm/ep82xxm.c b/board/ep82xxm/ep82xxm.c
new file mode 100644 (file)
index 0000000..35e644d
--- /dev/null
@@ -0,0 +1,291 @@
+/*
+ * Copyright (C) 2006 Embedded Planet, LLC.
+ *
+ * Support for Embedded Planet EP82xxM boards.
+ * Tested on EP82xxM (MPC8270).
+ *
+ * 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 <mpc8260.h>
+#include <ioports.h>
+#include <asm/m8260_pci.h>
+#ifdef CONFIG_PCI
+#include <pci.h>
+#endif
+#include <miiphy.h>
+
+/*
+ * I/O Port configuration table
+ *
+ * if conf is 1, then that port pin will be configured at boot time
+ * according to the five values podr/pdir/ppar/psor/pdat for that entry
+ */
+
+#define CFG_FCC2 1
+#define CFG_FCC3 1
+
+const iop_conf_t iop_conf_tab[4][32] = {
+
+    /* Port A */
+    {  /*           conf      ppar psor pdir podr pdat */
+       /* PA31 */ { 0,          0,   0,   0,   0,   1 }, /* PA31            */
+       /* PA30 */ { 0,          0,   0,   0,   0,   1 }, /* PA30            */
+       /* PA29 */ { 0,          0,   0,   0,   0,   1 }, /* PA29            */
+       /* PA28 */ { 0,          0,   0,   0,   0,   1 }, /* PA28            */
+       /* PA27 */ { 0,          0,   0,   0,   0,   1 }, /* PA27            */
+       /* PA26 */ { 0,          0,   0,   0,   0,   1 }, /* PA26            */
+       /* PA25 */ { 0,          0,   0,   0,   0,   1 }, /* PA25            */
+       /* PA24 */ { 0,          0,   0,   0,   0,   1 }, /* PA24            */
+       /* PA23 */ { 0,          0,   0,   0,   0,   1 }, /* PA23            */
+       /* PA22 */ { 0,          0,   0,   0,   0,   0 }, /* PA22            */
+       /* PA21 */ { 0,          0,   0,   0,   0,   1 }, /* PA21            */
+       /* PA20 */ { 0,          0,   0,   0,   0,   1 }, /* PA20            */
+       /* PA19 */ { 0,          0,   0,   0,   0,   1 }, /* PA19            */
+       /* PA18 */ { 0,          0,   0,   0,   0,   1 }, /* PA18            */
+       /* PA17 */ { 0,          0,   0,   0,   0,   1 }, /* PA17            */
+       /* PA16 */ { 0,          0,   0,   0,   0,   1 }, /* PA16            */
+       /* PA15 */ { 0,          0,   0,   0,   0,   1 }, /* PA15            */
+       /* PA14 */ { 0,          0,   0,   0,   0,   1 }, /* PA14            */
+       /* PA13 */ { 0,          0,   0,   0,   0,   1 }, /* PA13            */
+       /* PA12 */ { 0,          0,   0,   0,   0,   1 }, /* PA12            */
+       /* PA11 */ { 0,          0,   0,   0,   0,   1 }, /* PA11            */
+       /* PA10 */ { 0,          0,   0,   0,   0,   1 }, /* PA10            */
+       /* PA9  */ { 1,          1,   0,   1,   0,   1 }, /* SMC2 TxD        */
+       /* PA8  */ { 1,          1,   0,   0,   0,   1 }, /* SMC2 RxD        */
+       /* PA7  */ { 0,          0,   0,   0,   0,   1 }, /* PA7             */
+       /* PA6  */ { 0,          0,   0,   0,   0,   1 }, /* PA6             */
+       /* PA5  */ { 0,          0,   0,   0,   0,   1 }, /* PA5             */
+       /* PA4  */ { 0,          0,   0,   0,   0,   1 }, /* PA4             */
+       /* PA3  */ { 0,          0,   0,   0,   0,   1 }, /* PA3             */
+       /* PA2  */ { 0,          0,   0,   0,   0,   1 }, /* PA2             */
+       /* PA1  */ { 0,          0,   0,   0,   0,   1 }, /* PA1             */
+       /* PA0  */ { 0,          0,   0,   0,   0,   1 }  /* PA0             */
+    },
+
+    /* Port B */
+    {   /*          conf       ppar psor pdir podr pdat */
+       /* PB31 */ { CFG_FCC2,   1,   0,   1,   0,   0 }, /* FCC2 MII TX_ER  */
+       /* PB30 */ { CFG_FCC2,   1,   0,   0,   0,   0 }, /* FCC2 MII RX_DV  */
+       /* PB29 */ { CFG_FCC2,   1,   1,   1,   0,   0 }, /* FCC2 MII TX_EN  */
+       /* PB28 */ { CFG_FCC2,   1,   0,   0,   0,   0 }, /* FCC2 MII RX_ER  */
+       /* PB27 */ { CFG_FCC2,   1,   0,   0,   0,   0 }, /* FCC2 MII COL    */
+       /* PB26 */ { CFG_FCC2,   1,   0,   0,   0,   0 }, /* FCC2 MII CRS    */
+       /* PB25 */ { CFG_FCC2,   1,   0,   1,   0,   0 }, /* FCC2 MII TxD[3] */
+       /* PB24 */ { CFG_FCC2,   1,   0,   1,   0,   0 }, /* FCC2 MII TxD[2] */
+       /* PB23 */ { CFG_FCC2,   1,   0,   1,   0,   0 }, /* FCC2 MII TxD[1] */
+       /* PB22 */ { CFG_FCC2,   1,   0,   1,   0,   0 }, /* FCC2 MII TxD[0] */
+       /* PB21 */ { CFG_FCC2,   1,   0,   0,   0,   0 }, /* FCC2 MII RxD[0] */
+       /* PB20 */ { CFG_FCC2,   1,   0,   0,   0,   0 }, /* FCC2 MII RxD[1] */
+       /* PB19 */ { CFG_FCC2,   1,   0,   0,   0,   0 }, /* FCC2 MII RxD[2] */
+       /* PB18 */ { CFG_FCC2,   1,   0,   0,   0,   0 }, /* FCC2 MII RxD[3] */
+       /* PB17 */ { CFG_FCC3,   1,   0,   0,   0,   0 }, /* FCC3:RX_DIV     */
+       /* PB16 */ { CFG_FCC3,   1,   0,   0,   0,   0 }, /* FCC3:RX_ERR     */
+       /* PB15 */ { CFG_FCC3,   1,   0,   1,   0,   0 }, /* FCC3:TX_ERR     */
+       /* PB14 */ { CFG_FCC3,   1,   0,   1,   0,   0 }, /* FCC3:TX_EN      */
+       /* PB13 */ { CFG_FCC3,   1,   0,   0,   0,   0 }, /* FCC3:COL        */
+       /* PB12 */ { CFG_FCC3,   1,   0,   0,   0,   0 }, /* FCC3:CRS        */
+       /* PB11 */ { CFG_FCC3,   1,   0,   0,   0,   0 }, /* FCC3:RXD        */
+       /* PB10 */ { CFG_FCC3,   1,   0,   0,   0,   0 }, /* FCC3:RXD        */
+       /* PB9  */ { CFG_FCC3,   1,   0,   0,   0,   0 }, /* FCC3:RXD        */
+       /* PB8  */ { CFG_FCC3,   1,   0,   0,   0,   0 }, /* FCC3:RXD        */
+       /* PB7  */ { 0,          0,   0,   0,   0,   0 }, /* PB7             */
+       /* PB6  */ { CFG_FCC3,   1,   0,   1,   0,   0 }, /* FCC3:TXD        */
+       /* PB5  */ { CFG_FCC3,   1,   0,   1,   0,   0 }, /* FCC3:TXD        */
+       /* PB4  */ { CFG_FCC3,   1,   0,   1,   0,   0 }, /* FCC3:TXD        */
+       /* PB3  */ { 0,          0,   0,   0,   0,   0 }, /* non-existent    */
+       /* PB2  */ { 0,          0,   0,   0,   0,   0 }, /* non-existent    */
+       /* PB1  */ { 0,          0,   0,   0,   0,   0 }, /* non-existent    */
+       /* PB0  */ { 0,          0,   0,   0,   0,   0 }  /* non-existent    */
+    },
+
+    /* Port C */
+    {   /*          conf       ppar psor pdir podr pdat */
+       /* PC31 */ { 0,          0,   0,   0,   0,   0 }, /* PC31            */
+       /* PC30 */ { 0,          0,   0,   0,   0,   0 }, /* PC30            */
+       /* PC29 */ { 1,          1,   1,   0,   0,   0 }, /* SCC1 CTS#       */
+       /* PC28 */ { 0,          0,   0,   0,   0,   0 }, /* PC28            */
+       /* PC27 */ { CFG_FCC3,   1,   0,   1,   0,   0 }, /* FCC3: TXD[0]    */
+       /* PC26 */ { 0,          0,   0,   0,   0,   0 }, /* PC26            */
+       /* PC25 */ { 0,          0,   0,   0,   0,   0 }, /* PC25            */
+       /* PC24 */ { 0,          0,   0,   0,   0,   0 }, /* PC24            */
+       /* PC23 */ { 0,          0,   0,   0,   0,   0 }, /* PC23            */
+       /* PC22 */ { 0,          0,   0,   0,   0,   0 }, /* PC22            */
+       /* PC21 */ { 0,          0,   0,   0,   0,   0 }, /* PC21            */
+       /* PC20 */ { 0,          0,   0,   0,   0,   0 }, /* PC20            */
+       /* PC19 */ { CFG_FCC2,   1,   0,   0,   0,   0 }, /* RxClk (CLK13)   */
+       /* PC18 */ { CFG_FCC2,   1,   0,   0,   0,   0 }, /* TxClk (CLK14)   */
+       /* PC17 */ { CFG_FCC3,   1,   0,   0,   0,   0 }, /* RxClk (CLK15)   */
+       /* PC16 */ { CFG_FCC3,   1,   0,   0,   0,   0 }, /* TxClk (CLK16)   */
+       /* PC15 */ { 0,          0,   0,   0,   0,   0 }, /* PC15            */
+       /* PC14 */ { 1,          1,   0,   0,   0,   0 }, /* SCC1 CD#        */
+       /* PC13 */ { 1,          1,   0,   0,   0,   0 }, /* SCC2 CTS#       */
+       /* PC12 */ { 1,          1,   0,   0,   0,   0 }, /* SCC2 CD#        */
+       /* PC11 */ { 0,          0,   0,   0,   0,   0 }, /* PC11            */
+       /* PC10 */ { 1,          1,   0,   0,   0,   0 }, /* SCC3 CD#        */
+       /* PC9  */ { 0,          0,   0,   0,   0,   0 }, /* PC9             */
+       /* PC8  */ { 1,          1,   1,   0,   0,   0 }, /* SCC3 CTS#       */
+       /* PC7  */ { 0,          0,   0,   0,   0,   0 }, /* PC7             */
+       /* PC6  */ { 0,          0,   0,   0,   0,   0 }, /* PC6             */
+       /* PC5  */ { 0,          0,   0,   0,   0,   0 }, /* PC5             */
+       /* PC4  */ { 0,          0,   0,   0,   0,   0 }, /* PC4             */
+       /* PC3  */ { 0,          0,   0,   0,   0,   0 }, /* PC3             */
+       /* PC2  */ { 0,          0,   0,   0,   0,   0 }, /* PC2             */
+       /* PC1  */ { 0,          0,   0,   0,   0,   0 }, /* PC1             */
+       /* PC0  */ { 0,          0,   0,   0,   0,   0 }, /* PC0             */
+    },
+
+    /* Port D */
+    {   /*          conf      ppar psor pdir podr pdat */
+       /* PD31 */ { 1,          1,   0,   0,   0,   0 }, /* SCC1 RXD        */
+       /* PD30 */ { 1,          1,   1,   1,   0,   1 }, /* SCC1 TXD        */
+       /* PD29 */ { 1,          1,   0,   1,   0,   0 }, /* SCC1 RTS#       */
+       /* PD28 */ { 1,          1,   0,   0,   0,   0 }, /* SCC2 RXD        */
+       /* PD27 */ { 1,          1,   0,   1,   0,   0 }, /* SCC2 TXD        */
+       /* PD26 */ { 1,          1,   0,   1,   0,   0 }, /* SCC2 RTS#       */
+       /* PD25 */ { 1,          1,   0,   0,   0,   0 }, /* SCC3 RXD        */
+       /* PD24 */ { 1,          1,   0,   1,   0,   0 }, /* SCC3 TXD        */
+       /* PD23 */ { 1,          1,   0,   1,   0,   0 }, /* SCC3 RTS#       */
+       /* PD22 */ { 0,          0,   0,   0,   0,   1 }, /* PD22            */
+       /* PD21 */ { 0,          0,   0,   0,   0,   1 }, /* PD21            */
+       /* PD20 */ { 0,          0,   0,   0,   0,   1 }, /* PD20            */
+       /* PD19 */ { 0,          0,   0,   0,   0,   1 }, /* PD19            */
+       /* PD18 */ { 0,          0,   0,   0,   0,   1 }, /* PD18            */
+       /* PD17 */ { 0,          0,   0,   0,   0,   1 }, /* PD17            */
+       /* PD16 */ { 0,          0,   0,   0,   0,   1 }, /* PD16            */
+       /* PD15 */ { 1,          1,   1,   0,   1,   1 }, /* I2C SDA         */
+       /* PD14 */ { 1,          1,   1,   0,   1,   1 }, /* I2C SCL         */
+       /* PD13 */ { 0,          0,   0,   0,   0,   1 }, /* PD13            */
+       /* PD12 */ { 0,          0,   0,   0,   0,   1 }, /* PD12            */
+       /* PD11 */ { 0,          0,   0,   0,   0,   1 }, /* PD11            */
+       /* PD10 */ { 0,          0,   0,   0,   0,   1 }, /* PD10            */
+       /* PD9  */ { 1,          1,   0,   1,   0,   1 }, /* SMC1 TxD        */
+       /* PD8  */ { 1,          1,   0,   0,   0,   1 }, /* SMC1 RxD        */
+       /* PD7  */ { 1,          1,   0,   0,   0,   1 }, /* SMC1 SMSYN      */
+       /* PD6  */ { 0,          0,   0,   0,   0,   1 }, /* PD6             */
+       /* PD5  */ { 0,          0,   0,   0,   0,   1 }, /* PD5             */
+       /* PD4  */ { 0,          0,   0,   0,   0,   1 }, /* PD4             */
+       /* PD3  */ { 0,          0,   0,   0,   0,   0 }, /* non-existent    */
+       /* PD2  */ { 0,          0,   0,   0,   0,   0 }, /* non-existent    */
+       /* PD1  */ { 0,          0,   0,   0,   0,   0 }, /* non-existent    */
+       /* PD0  */ { 0,          0,   0,   0,   0,   0 }  /* non-existent    */
+    }
+};
+
+#ifdef CONFIG_PCI
+typedef struct pci_ic_s {
+       unsigned long pci_int_stat;
+       unsigned long pci_int_mask;
+}pci_ic_t;
+#endif
+
+int board_early_init_f (void)
+{
+       vu_char *bcsr = (vu_char *)CFG_BCSR;
+
+       bcsr[4] |= 0x30; /* Turn the LEDs off */
+
+#if defined(CONFIG_CONS_ON_SMC) || defined(CONFIG_KGDB_ON_SMC)
+       bcsr[6] |= 0x10;
+#endif
+#if defined(CONFIG_CONS_ON_SCC) || defined(CONFIG_KGDB_ON_SCC)
+       bcsr[7] |= 0x10;
+#endif
+
+#if CFG_FCC3
+       bcsr[8] |= 0xC0;
+#endif /* CFG_FCC3 */
+#if CFG_FCC2
+       bcsr[8] |= 0x30;
+#endif /* CFG_FCC2 */
+
+       return 0;
+}
+
+long int initdram(int board_type)
+{
+       /* Size in MB of SDRAM populated on board*/
+       long int msize = 256;
+
+#ifndef CFG_RAMBOOT
+       volatile immap_t *immap = (immap_t *)CFG_IMMR;
+       volatile memctl8260_t *memctl = &immap->im_memctl;
+       vu_char *ramaddr = (vu_char *)CFG_SDRAM_BASE;
+       uchar c = 0xFF;
+       uint psdmr = CFG_PSDMR;
+       int i;
+
+       unsigned char           ramtmp;
+       unsigned char           *ramptr1 = (unsigned char *)0x00000110;
+
+       memctl->memc_mptpr = CFG_MPTPR;
+
+udelay(400);
+
+       /* Initialise 60x bus SDRAM */
+       memctl->memc_psrt = CFG_PSRT;
+       memctl->memc_or1  = CFG_SDRAM_OR;
+       memctl->memc_br1  = CFG_SDRAM_BR;
+       memctl->memc_psdmr = psdmr;
+
+udelay(400);
+
+       memctl->memc_psdmr = psdmr | PSDMR_OP_PREA; /* Precharge all banks */
+       ramtmp = *ramptr1;
+       memctl->memc_psdmr = psdmr | PSDMR_OP_CBRR; /* CBR refresh */
+       for (i = 0; i < 8; i++) {
+               memctl->memc_psdmr = psdmr | PSDMR_OP_CBRR; /* CBR refresh */
+       }
+       ramtmp = *ramptr1;
+       memctl->memc_psdmr = psdmr | PSDMR_OP_MRW;  /* Mode Register write */
+       *ramptr1  = 0xFF;
+       memctl->memc_psdmr = psdmr | PSDMR_RFEN;    /* Refresh enable */
+#endif /* !CFG_RAMBOOT */
+
+       /* Return total 60x bus SDRAM size */
+       return msize * 1024 * 1024;
+}
+
+int checkboard(void)
+{
+       vu_char *bcsr = (vu_char *)CFG_BCSR;
+
+       puts("Board: ");
+       switch (bcsr[0]) {
+       case 0x0A:
+               printf("EP82xxM 1.0 CPLD revision %d\n", bcsr[1]);
+               break;
+       default:
+               printf("unknown: ID=%02X\n", bcsr[0]);
+       }
+
+       return 0;
+}
+
+#ifdef CONFIG_PCI
+struct pci_controller hose;
+
+extern void pci_mpc8250_init(struct pci_controller *);
+
+void pci_init_board(void)
+{
+       pci_mpc8250_init(&hose);
+}
+#endif
diff --git a/board/ep82xxm/u-boot.lds b/board/ep82xxm/u-boot.lds
new file mode 100644 (file)
index 0000000..18c4b46
--- /dev/null
@@ -0,0 +1,125 @@
+/*
+ * (C) Copyright 2001
+ * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+ *
+ * Modified by Yuli Barcohen <yuli@arabellasw.com>
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+OUTPUT_ARCH(powerpc)
+SECTIONS
+{
+  /* Read-only sections, merged into text segment: */
+  . = + SIZEOF_HEADERS;
+  .interp : { *(.interp) }
+  .hash          : { *(.hash)          }
+  .dynsym        : { *(.dynsym)                }
+  .dynstr        : { *(.dynstr)                }
+  .rel.text      : { *(.rel.text)              }
+  .rela.text     : { *(.rela.text)     }
+  .rel.data      : { *(.rel.data)              }
+  .rela.data     : { *(.rela.data)     }
+  .rel.rodata    : { *(.rel.rodata)    }
+  .rela.rodata   : { *(.rela.rodata)   }
+  .rel.got       : { *(.rel.got)               }
+  .rela.got      : { *(.rela.got)              }
+  .rel.ctors     : { *(.rel.ctors)     }
+  .rela.ctors    : { *(.rela.ctors)    }
+  .rel.dtors     : { *(.rel.dtors)     }
+  .rela.dtors    : { *(.rela.dtors)    }
+  .rel.bss       : { *(.rel.bss)               }
+  .rela.bss      : { *(.rela.bss)              }
+  .rel.plt       : { *(.rel.plt)               }
+  .rela.plt      : { *(.rela.plt)              }
+  .init          : { *(.init)  }
+  .plt : { *(.plt) }
+  .text      :
+  {
+    cpu/mpc8260/start.o        (.text)
+    *(.text)
+    *(.fixup)
+    *(.got1)
+    . = ALIGN(16);
+    *(.rodata)
+    *(.rodata1)
+    *(.rodata.str1.4)
+    *(.eh_frame)
+  }
+  .fini      : { *(.fini)    } =0
+  .ctors     : { *(.ctors)   }
+  .dtors     : { *(.dtors)   }
+
+  /* Read-write section, merged into data segment: */
+  . = (. + 0x0FFF) & 0xFFFFF000;
+  _erotext = .;
+  PROVIDE (erotext = .);
+  .reloc   :
+  {
+    *(.got)
+    _GOT2_TABLE_ = .;
+    *(.got2)
+    _FIXUP_TABLE_ = .;
+    *(.fixup)
+  }
+  __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >> 2;
+  __fixup_entries = (. - _FIXUP_TABLE_) >> 2;
+
+  .data    :
+  {
+    *(.data)
+    *(.data1)
+    *(.sdata)
+    *(.sdata2)
+    *(.dynamic)
+    CONSTRUCTORS
+  }
+  _edata  =  .;
+  PROVIDE (edata = .);
+
+  . = .;
+  __u_boot_cmd_start = .;
+  .u_boot_cmd : { *(.u_boot_cmd) }
+  __u_boot_cmd_end = .;
+
+
+  . = .;
+  __start___ex_table = .;
+  __ex_table : { *(__ex_table) }
+  __stop___ex_table = .;
+
+  . = ALIGN(4096);
+  __init_begin = .;
+  .text.init : { *(.text.init) }
+  .data.init : { *(.data.init) }
+  . = ALIGN(4096);
+  __init_end = .;
+
+  __bss_start = .;
+  .bss       :
+  {
+   *(.sbss) *(.scommon)
+   *(.dynbss)
+   *(.bss)
+   *(COMMON)
+  }
+  _end = . ;
+  PROVIDE (end = .);
+}
+ENTRY(_start)
index d0223b51ffc971d51ed699d2592b66bca9c9ab02..b2ffd288331284b86a8a904e37d4e04d46b59171 100644 (file)
@@ -35,7 +35,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index fff25ab623c091f4ed56a23cd0cab908d9a2615f..f27fca6d7bb1faf1911657672d9a286d6afc2d74 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 699a8488ea9dd438c53054d5bc94fd18bfe58e41..4283300d8916d576c0a0f9ecd0a8f95514b14f1d 100644 (file)
@@ -36,7 +36,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index a5060d2d037f1b253d696b3d4879450922aac0f7..024997e7753d460c0fca54b69a6fe4c4dd2271c3 100644 (file)
@@ -35,7 +35,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(OBJS) $(SOBJS)
-       $(AR) crv $@ $^
+       $(AR) $(ARFLAGS) $@ $^
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index dec52af9cabfacfda8048b8546b1f214e1f3a7fb..4d75868ea84c86c2292e7311d25ebdd66318642d 100644 (file)
@@ -35,7 +35,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index dec52af9cabfacfda8048b8546b1f214e1f3a7fb..4d75868ea84c86c2292e7311d25ebdd66318642d 100644 (file)
@@ -35,7 +35,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index dec52af9cabfacfda8048b8546b1f214e1f3a7fb..4d75868ea84c86c2292e7311d25ebdd66318642d 100644 (file)
@@ -35,7 +35,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index ab9d8327c09e1767f990add9dca53626be4b2ea8..df487662fd2853404c5dabebcf93802c92324818 100644 (file)
@@ -40,7 +40,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 72c25625b31aeba917cc46932c56d4a8ae5b7fce..2d4e189977d8adf9d0b04632632b595647fa0d63 100644 (file)
@@ -35,7 +35,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 8f254dd3bfe4c455ed24e9bc373c90e87aa5dd17..ce7876c414e2f38a096c8507774689f3559f3874 100644 (file)
@@ -35,7 +35,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index b4c74fc6d1c6bd23ec1694a39d6812e16dfe6e6f..d13d31c9748952bd3a6ccefa7849f5416344b158 100644 (file)
@@ -36,7 +36,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 78ffa0f85a91a49901fa447abeb605a0bf10a696..276eabb9f597b8cd8e97dbb1ecc74152eae9a71a 100644 (file)
@@ -41,7 +41,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 0dfec601ea8643cf4b3ca795202abc939ff3b5df..4379cfc74b15997fb403999d1eb582717924aff3 100644 (file)
@@ -1,7 +1,7 @@
 #
 # (C) Copyright 2006
 # Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-# 
+#
 # (C) Copyright 2001
 # Josh Huber <huber@mclx.com>, Mission Critical Linux, Inc.
 #
@@ -42,7 +42,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 #########################################################################
 
index dec52af9cabfacfda8048b8546b1f214e1f3a7fb..4d75868ea84c86c2292e7311d25ebdd66318642d 100644 (file)
@@ -35,7 +35,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index c74d1abfa8e98814e02e040d3e32a46441bbbb30..082236593a171027f2231c2e54c394a04b462d92 100644 (file)
@@ -36,7 +36,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index ab9d8327c09e1767f990add9dca53626be4b2ea8..df487662fd2853404c5dabebcf93802c92324818 100644 (file)
@@ -40,7 +40,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index dec52af9cabfacfda8048b8546b1f214e1f3a7fb..4d75868ea84c86c2292e7311d25ebdd66318642d 100644 (file)
@@ -35,7 +35,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 8f254dd3bfe4c455ed24e9bc373c90e87aa5dd17..ce7876c414e2f38a096c8507774689f3559f3874 100644 (file)
@@ -35,7 +35,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index dec52af9cabfacfda8048b8546b1f214e1f3a7fb..4d75868ea84c86c2292e7311d25ebdd66318642d 100644 (file)
@@ -35,7 +35,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 1da3f7ef8bcbb4bd158a50009b4f4cc5d1cab517..99d87c44ff3941c70815bba23f642252eb39838c 100644 (file)
@@ -35,7 +35,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 9ae728d9d01449b10bc18314b8d104715e542bae..53f217fb2aecb7733980ed74baa8573ee2bb2923 100644 (file)
@@ -36,8 +36,8 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(OBJS) $(SOBJS)
-#      $(AR) crv $@ $(OBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+#      $(AR) $(ARFLAGS) $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 82358af2dc9ed13fb0d931ce7b4f78534efd94cb..a47cd3d73a84d0ed3b7f9b9c0649968bc6dc99c8 100644 (file)
@@ -42,7 +42,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 8f254dd3bfe4c455ed24e9bc373c90e87aa5dd17..ce7876c414e2f38a096c8507774689f3559f3874 100644 (file)
@@ -35,7 +35,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 2775b8a6350ce3b48120238d041de8845b133e08..50d0963d26fc10acf3bbed40b7fb834edb88c5a2 100644 (file)
@@ -40,7 +40,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index e3d24b3689eff53801df8da321f63193a864f187..cf07cf40fdb9485240118667e0b22074acd7516d 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index dec52af9cabfacfda8048b8546b1f214e1f3a7fb..4d75868ea84c86c2292e7311d25ebdd66318642d 100644 (file)
@@ -35,7 +35,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index ab9d8327c09e1767f990add9dca53626be4b2ea8..df487662fd2853404c5dabebcf93802c92324818 100644 (file)
@@ -40,7 +40,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index dec52af9cabfacfda8048b8546b1f214e1f3a7fb..4d75868ea84c86c2292e7311d25ebdd66318642d 100644 (file)
@@ -35,7 +35,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index e3d24b3689eff53801df8da321f63193a864f187..cf07cf40fdb9485240118667e0b22074acd7516d 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 17ef23dcd9fd644423bc7b1341c282ff4fa8fd76..fdf77369158ee75371bc58a7354886dbcc99c5b8 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 04ecf46c13115ca47ede815bc74518810f6d323c..18b735061e4346ef5019aee270db6ea04fcd0028 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index e3d24b3689eff53801df8da321f63193a864f187..cf07cf40fdb9485240118667e0b22074acd7516d 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index c634f720248528f29cf1add856e58b22628cc9e5..4f98d702d5350decdc13cf3588fd5d0af9187a13 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index b28372d818ca7c97f331f70f16cca59817c20418..aa39bafab659e8e247fef204deb2a61e44ca5521 100644 (file)
@@ -1,7 +1,7 @@
 #
 # (C) Copyright 2006
 # Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-# 
+#
 # (C) Copyright 2001
 # Josh Huber <huber@mclx.com>, Mission Critical Linux, Inc.
 #
@@ -38,7 +38,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 #########################################################################
 
index 7a39592aa13a5f1b58158e3422e2fdcbda928c98..5e297afedc68b7506605a50601f419fa22042ffa 100644 (file)
@@ -34,7 +34,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(OBJS) $(SOBJS)
-       $(AR) crv $@ $^
+       $(AR) $(ARFLAGS) $@ $^
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 70feb4acce072e0035fc36efe0e6fb441404e995..4f3c22321a844b69ceeec10477d527112fda3607 100644 (file)
@@ -36,7 +36,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index c0c172206d47110355e71f2fe2afa5fada6e8a50..667c6afbc4dfa9906bcb04e824cd883eada4f44a 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 1b57d2b0236ce949c225b11814dce20ff69e69fd..dcb1907032b5df8d2f89bdcb23506a49bb1446c7 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index b2d1e352020a1bf4e9986b5c2999e42a87386546..a9a9299a83b987e1fd94a0ca5984702a415c9512 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 9b9f033f5e1095960d523b35e8f5dca99f60b6bb..3c5aa8680a355afaa542094a98cdc7c71cace1ae 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 695cd93c990bc38a50763e8ae652ca3a721518e5..8a95d83703c726ad3aae1e7b701d850dc11c0024 100644 (file)
@@ -35,7 +35,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 9d36711826d4c415d86451c8309efe6436b27350..fd34cb0db29487c2ab1caada7600fdf4c3c6f8c5 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index e3d24b3689eff53801df8da321f63193a864f187..cf07cf40fdb9485240118667e0b22074acd7516d 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 95bf0726bfe22d21827cbd115044b393f976e2d8..4b5c528a048d451bda6c2f98f8dc4058877d9e79 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index ed6a4a0526ad7fa184ec4804942756c95d15c4af..097ffec35c2126aa823057e373d37f5645b0e619 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 #########################################################################
 
index bf5c508b64cda84dead4a08af36e150ebaba00c2..17012dd71d7a4422fa8e54511688172f8b0cf87e 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index e3d24b3689eff53801df8da321f63193a864f187..cf07cf40fdb9485240118667e0b22074acd7516d 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 9ac6a4da375ff52ca2f3be03ddb174cc859ac643..5aa02d4a7f17a2319aea7376c4e5b9497aa352a5 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 4b2bbe27d20d536a6b91e90ae0a328f623515dde..ddfd2ef8afe023bfe5c017ead825bff259cf59fb 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index ff9fa90d123b363441a23b1ad0301b9ac8ab8c65..1fb7e79aa97a1c4f347d1f9113be2119d44c39f9 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 8e61c79bd186c77403f7b9113b0028080f9f102a..7762ed301563ff78dd60ab4d8bfdb7d5ea66ea04 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 62db2f494b68ba35b1b35786db9ac900d306ec2e..2b10b0c518acfb4eee7879e5aa0f3ccaa7f7b4cb 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index d4237930cb55b7b7893cac0a4bc42a835277545d..4c9634c9750bca39b4270dc0b2dbcfcedd327d44 100644 (file)
@@ -35,7 +35,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index d77db72b05abd115c45ec96e03239ac73c4417db..b64d85f751c74b3348b03858d19ae66461c9e7ff 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 13986b8fcfc6c077db9076a188cc2571261d86ce..afe02c27c6ff9baecff2c09aed27241fb42cbb97 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 #########################################################################
 
index d00e05dce1749056ee6eb30869d9e95d02f9e78a..8aa7e7c8e4aa539bb183e114541a89ae13ef68a5 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index f4cc6cf1b866b9c6fa5656c59a3ae0df446e96a7..71c6bba364e64cc281c451bccf017422b2fcb4f4 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 5b3729b3bccc3dda60e9c1d99d6814b43b3fa04e..505121e07111fb74aaec5259387b85b90fd4bdd4 100644 (file)
@@ -37,7 +37,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index efafeb687c5eb163ea3faf13ae35eb877f5b38d7..e15ef73e2f691642d0cf80f940357fe14a5cce1e 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index e3d24b3689eff53801df8da321f63193a864f187..cf07cf40fdb9485240118667e0b22074acd7516d 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index efdb1c14082534e843a3184a22b95f9139229475..3a28f5caf0defa155258873107374123b960cee1 100644 (file)
@@ -34,7 +34,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 0c1cb0253abb647c4261de9826fe3c487ef6280f..b2ffd288331284b86a8a904e37d4e04d46b59171 100644 (file)
@@ -1,7 +1,7 @@
 #
 # (C) Copyright 2006
 # Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-# 
+#
 # Copyright (C) 2004 Arabella Software Ltd.
 # Yuli Barcohen <yuli@arabellasw.com>
 #
@@ -35,7 +35,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index e3d24b3689eff53801df8da321f63193a864f187..cf07cf40fdb9485240118667e0b22074acd7516d 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 9568cb595915ed59ee38b9175962394667f99e63..5d4feb0f708c5d9e5bd407f60e8bb32556a09694 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index be6bd315cdfe83f8b5a9b872ea54928a837e0bbe..e858c83f73243658b3139effd00a158f2ac16d7a 100644 (file)
@@ -1,7 +1,7 @@
 #
 # (C) Copyright 2006
 # Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-# 
+#
 # Copyright 2004 Picture Elements, Inc.
 # Stephen Williams <steve@icarus.com>
 #
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 2adcb587adf6b62eecbf415e5428ab21a3048094..0207d1222a963eb4b862ce72809f851f755fe1ac 100644 (file)
@@ -35,7 +35,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index eac75a36b18c24e890cf35242a55367c2666dcc7..957b3d31323abfd1baa6e805570e6b79d3cc126e 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 409e4cdd5f5b35170057b4168f0f0414575cab48..4727a5b1b28b610bce53a0eef59448ffc09eadef 100644 (file)
@@ -35,7 +35,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 409e4cdd5f5b35170057b4168f0f0414575cab48..4727a5b1b28b610bce53a0eef59448ffc09eadef 100644 (file)
@@ -35,7 +35,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 1b57d2b0236ce949c225b11814dce20ff69e69fd..dcb1907032b5df8d2f89bdcb23506a49bb1446c7 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 7024c2b6aef43863b0a7add89c4f5e793ddd2f59..cbc07bd88a58ec14e59d7ed0ffc467abbd9380d0 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index fff3a51356e83bd66a39a9e4ff2e408fcd0f89b6..0c88a6e59043a2e516401ec86f779c69a5dd2fb6 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 692f2d5d03adc39446a6ce39969784db0b909748..0e302d961fc9e76af4356b15745236b9ca345478 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index f5626429bea93a9628b76fec4eaf71737cc03d88..8e397b411c9e6496243a35b2725f799f4dce505f 100644 (file)
@@ -34,7 +34,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 62db2f494b68ba35b1b35786db9ac900d306ec2e..2b10b0c518acfb4eee7879e5aa0f3ccaa7f7b4cb 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 2951b96a210d26bf0b3a913bb0720f936a013873..424ab1cf9e3251575e95a3faf767cfc87b765cf2 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index e3d24b3689eff53801df8da321f63193a864f187..cf07cf40fdb9485240118667e0b22074acd7516d 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index e3d24b3689eff53801df8da321f63193a864f187..cf07cf40fdb9485240118667e0b22074acd7516d 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index feadf24ee6ebff18a4be52caba6d1f54ff2b6058..d30cc62ac91072e4f85e78f74a841328ee785fc9 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index eb1d059ae913d222675cf37df4c16d6e36e5050a..75808cbb5ad49645241bc3bfd3ce69c4e7d852bc 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index ce5ba19493ab7c156a68769fa816a2ac957dd432..731e8fea11e5627e233e5df110c9794a314f96a8 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index ae4de574adad7411d53085aec29a6631efd2659a..45141fd9e51a92b105494b564237f61e24d29709 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 490ac3bf158b9e204495b5ebe07f0dce23ed5aba..3e719f0cc0c53d9251e40469148ea6707685d6a6 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index c1e7ffd82799d979212692781c5db518a664f32b..423d77da3bb78f4e8f586f29356b324152b2ffb9 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index e1e0a0f3a64f5bce7c5026db3d741f664ebb5770..de7d847a5fc6d51ce0b1739297973fabd4e8a9db 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 157c969d9c795846b1859f59191aa64a9e83f18d..291a1c95666dee0629d9d7ea2f73f33a01b9833d 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index e699086800e9e4271e710efa60b32f191b3a1a0c..acc954488f54bdb8e0b99991dad67d2649b49a35 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 3f1e8f21770a6251b78b67670b25c3f1161101d2..29136508f582978c220d00246adcd4034c1fe24d 100644 (file)
@@ -34,7 +34,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(OBJS) $(SOBJS)
index 0a8397000afba0800901af4373bfb8abab007527..d649c60af1df06de23cb4aa981714b859bf5f698 100644 (file)
@@ -35,7 +35,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(OBJS) $(SOBJS)
index 3f1e8f21770a6251b78b67670b25c3f1161101d2..29136508f582978c220d00246adcd4034c1fe24d 100644 (file)
@@ -34,7 +34,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(OBJS) $(SOBJS)
index 87e507e8a2328b0a15970b1c9c4d3f97652cecae..f8f4329f7325992b3b47ae53cea4004396640723 100644 (file)
@@ -38,7 +38,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index c469e3facdff85cfff63a90a5586f98c13835de3..82c97d6d5d35d7ec0a011a6872beda29a79fad83 100644 (file)
@@ -36,7 +36,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 833900d1d752898991f5dce5cf04698870be7617..72143f0911e1f147a453004c2c592841719b4d8c 100644 (file)
@@ -41,7 +41,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index bd76e7475c5c55a08773dacd031870ffd7a7e935..209322e51c15d257c5964bccca529a6a3d7c1b92 100644 (file)
@@ -38,7 +38,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 1b57d2b0236ce949c225b11814dce20ff69e69fd..dcb1907032b5df8d2f89bdcb23506a49bb1446c7 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 1b57d2b0236ce949c225b11814dce20ff69e69fd..dcb1907032b5df8d2f89bdcb23506a49bb1446c7 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index e3d24b3689eff53801df8da321f63193a864f187..cf07cf40fdb9485240118667e0b22074acd7516d 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 96e5be505376056402636bd7f096586fa06f58f5..14a8b81c96dfbe1c1c4d8e7c67819c498889c71d 100644 (file)
@@ -37,7 +37,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 2a17f820729350faf895cc2fb917ae979cbae74a..516a8b90f3fdcd338d2e04e4454958b7a80023a2 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index f0447272fa9ad8504db673481b3a162bb7f52716..e4006e7bdd8a1f750dfa2ad7065d8c99558efbdc 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index a8b215982ad28cc37ed284e0a6f7ab35942a3310..df7d3123b96bc51b2b96d9a59e1ad05b103e6572 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index b7c092d24f086c0bdc29d940e07ea5ef2b109c44..88da2b948385fe1b454b962abb2114cc79350092 100644 (file)
@@ -1,4 +1,4 @@
-# 
+#
 # (C) Copyright 2006
 # Wolfgang Denk, DENX Software Engineering, wd@denx.de.
 #
@@ -48,7 +48,7 @@ all:  $(obj).depend $(LIB) $(obj)eeprom.srec $(obj)eeprom.bin \
                $(obj)crcek.srec $(obj)crcek.bin $(obj)crcit
 
 $(LIB):        $(OBJS) $(SOBJS)
-       $(AR) crv $@ $^
+       $(AR) $(ARFLAGS) $@ $^
 
 $(obj)eeprom.srec:     $(obj)eeprom.o $(obj)eeprom_start.o
        cd $(lnk) && $(LD) -T $(LDSCRIPT) -g -Ttext $(LOAD_ADDR) \
index 39362c68d5bc41a67f60ce9b1e0eed7dfa9c6d15..96374ba3fc55faf7b80ee5a737834e931400691e 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index e3d24b3689eff53801df8da321f63193a864f187..cf07cf40fdb9485240118667e0b22074acd7516d 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index e3d24b3689eff53801df8da321f63193a864f187..cf07cf40fdb9485240118667e0b22074acd7516d 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index defc29bb6fcd7867c7f3576b8a50776ecc6848cf..b5203775a84d2e3d198b4723b1f08aa3cb7b8081 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 1b57d2b0236ce949c225b11814dce20ff69e69fd..dcb1907032b5df8d2f89bdcb23506a49bb1446c7 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 626f61026999e73678647b0b60a17f1805acce80..f356bd39c788ed342a80a66fe19edd8ad696d345 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 7cdc8d0073f6dcb9aa316dc09ead9026b0d1ffce..fe4b8d6524e60d20b7bcf65258c77f8fa8a35eed 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index e523dc63082e77a5813ff3583ff33b17e3b7a949..c375bc135364c6a0b3a884bb7fe455d0abf41be0 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 767a9d6f0f2725bc3706de6dd507a8484326f405..2f2645a76baa8338363f055224457423b5cdeee8 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index c734b4318669b23550e3722a78d402fd63ff6842..8e14c699d30d99f4566cf5d03e3491bdde9f6f3c 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index d678fd5a894871148ee417ab5127ea40b5548aca..104ff4e912459c58c0f25f8b275f271fea1ccd8d 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index e3d24b3689eff53801df8da321f63193a864f187..cf07cf40fdb9485240118667e0b22074acd7516d 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index d1e9ad349ba4efa17720a98c052202704b657464..f7d58416c9a38e85a5f4168fe8ccabbccd54a1c9 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 #########################################################################
 
index 2af328612a3d6cbd7cf8bf49a2d363183b5bb78e..a6ae906de9db32379220f0461c10fe7c5b4321d6 100644 (file)
@@ -35,7 +35,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 #########################################################################
 
index 9da90c1650036f892873f66670cb635216780c06..2a3cfbe1b333b5ad07eedc337ec23a9c5dcc2103 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 07997725b25d86f47307d1e047c3ba49017adeb9..fef0eb3094e176e453be474f7739230c72ed5d1d 100644 (file)
@@ -34,7 +34,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 8e61c79bd186c77403f7b9113b0028080f9f102a..7762ed301563ff78dd60ab4d8bfdb7d5ea66ea04 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 1b57d2b0236ce949c225b11814dce20ff69e69fd..dcb1907032b5df8d2f89bdcb23506a49bb1446c7 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 1b57d2b0236ce949c225b11814dce20ff69e69fd..dcb1907032b5df8d2f89bdcb23506a49bb1446c7 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 3f1e8f21770a6251b78b67670b25c3f1161101d2..29136508f582978c220d00246adcd4034c1fe24d 100644 (file)
@@ -34,7 +34,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(OBJS) $(SOBJS)
index 3f1e8f21770a6251b78b67670b25c3f1161101d2..29136508f582978c220d00246adcd4034c1fe24d 100644 (file)
@@ -34,7 +34,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(OBJS) $(SOBJS)
index a837820493e4b1e45f57e68e90cc0028dc089000..eb88898e71dd3d97aefa915ca7abb80c61d60a3d 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 1655b3e9ee2fbeb196de9e6016d324e7e1cc764b..5fbefeb71c269900126c7091747091322ce11434 100644 (file)
@@ -34,7 +34,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index e17cb7a4e2b33a98582f678cee6f242ff57ea963..7fd545b9d5c89128f561068a8e24641381248a83 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index a47a0674c415825bfd71dbe25af1276a10ef9924..261e5d49cca695eb3542f293f8f6ac91fb1e6dde 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 32ffac0dcf75a1a2e20cdac23fd0cc8446014b68..096db6f7af67265c16646edb24d1ef517608c53e 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 7d74b4ee9d3542d6616cf5267fa3cc63411e0de0..3639cbaf587bc9ab813da4353afd9950e361e681 100644 (file)
@@ -37,7 +37,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index cbe99190ee09ec55d59db2e94be789486a64dc54..2568a68ede6d444de15483ca676863a727879aff 100644 (file)
@@ -37,7 +37,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 1262d80de9b5d85c87df42c58ba2a3bee23a4d34..29844ba967350840655b9ef79b259ce2be8602e9 100644 (file)
@@ -34,7 +34,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 2d0077bbee6791f9fbc9331b941fd5dedc76338e..a957dd39615ff8880b74eeb508444ca2901018c7 100644 (file)
@@ -34,7 +34,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 602865f5d8c418a02995e545d41dccb99f507025..c7a1d055187358b741a8deef6b2e1f56a8e5713c 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 0179b46cbf02534fec6a5d6d64c54cc5e1cb2a0f..9f34ad1c08466fdf3107d51b13e3e0cc70daf121 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 2951b96a210d26bf0b3a913bb0720f936a013873..424ab1cf9e3251575e95a3faf767cfc87b765cf2 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index e880f873af4b8a512f100b64a7fb2741133ba35b..be7e213a9b5d311794d855554c720ec083c2051b 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index f004881a0290cb5bf71ece03734c9b50504570a1..2182bc9769803fec9e8894abaaefe40ad463f35c 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index e3d24b3689eff53801df8da321f63193a864f187..cf07cf40fdb9485240118667e0b22074acd7516d 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 2689c6bbed70e5ab79cdef63e961ed205a8ba640..4b0dc25d57a52645f9d077feaaff1287e5bb2d9f 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 4a7bd3dce9e896ef5f0edabc8c9b729c1d2cdeb4..5c9c33c9fb26f4f1349322872408c2b0d36d0714 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 2dff242aef137e8fe98e85e3b64f600c64e45146..9bb9c1552596edcdb715fefb99aef100da025c0a 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 60d557352e322590dcbd42ae0396ddf3a8958936..3b094ce1d48657b56601a70a777d01dcebc96e43 100644 (file)
@@ -50,7 +50,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 9579512aac235a5e00cadf362f7baf2bd59a7be3..c143e5e8ca89e03ed3c01959fa2f5f40c95e2466 100644 (file)
@@ -48,7 +48,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index e3d24b3689eff53801df8da321f63193a864f187..cf07cf40fdb9485240118667e0b22074acd7516d 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 908b5ffd0721fe37725a61f7528dacbf1b9c80bb..a68c3832af30b808f9ed62f523051c168b547f0e 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 9b9f033f5e1095960d523b35e8f5dca99f60b6bb..3c5aa8680a355afaa542094a98cdc7c71cace1ae 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 1b57d2b0236ce949c225b11814dce20ff69e69fd..dcb1907032b5df8d2f89bdcb23506a49bb1446c7 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 7077a823c0c5964d685e352d5039db7539cb611d..422dbc7139efec93a5bd7eb3bb653ea36dead58c 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 4d9c2e7c8c11d8b965d4dd38b08394d5dd1a6617..15965252f383b1b1546a7958e2e9fb21e1855333 100644 (file)
@@ -37,7 +37,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(OBJS) $(SOBJS)
index 7555b4f67f4429247308c29104e0b926c455e449..e19be51c30f0b56e56d39808edf1d5f4e04c041b 100644 (file)
@@ -36,7 +36,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 9958e80268690ee4de196540dca8013ba985f6fa..bfb77e8f8bc303d4434f08de86f277cc9a2b7a7d 100644 (file)
@@ -1,7 +1,7 @@
 #
 # (C) Copyright 2006
 # Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-# 
+#
 # (C) Copyright 2002
 # Daniel Engström, Omicron Ceti AB, daniel@omicron.se.
 #
@@ -36,7 +36,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 01b908e936b779e5c324e5032e5ef8fec6d752d4..85b6b0474c41b0f7cb83cab26d3fadc3381e7996 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index a04d841ef42e4a12e8e938259572c79f3c162ca9..37774a90c44f2ba6e450a8179f956dbdbdfa7272 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 2ad4c83a9c94240988df6e8231db454051d74b5d..e053c7d66113f8587ed14e30063a40de103a1018 100644 (file)
@@ -37,7 +37,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 39643810a3fb3c6caab2ce48a12813245bfd5367..aa1510e1cc9c40667ae43261cf27786f99e528eb 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index b4bbb533feb35b6e56f4054103edfa17788f2295..edc18200070907e99c5815dff6d2ab59ca0b2577 100644 (file)
@@ -37,7 +37,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 1b57d2b0236ce949c225b11814dce20ff69e69fd..dcb1907032b5df8d2f89bdcb23506a49bb1446c7 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index e3d24b3689eff53801df8da321f63193a864f187..cf07cf40fdb9485240118667e0b22074acd7516d 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 43c27e9babaab545b295c3a5b2ea9c78336e4c86..d3db1a90e216dde7147e9dead32f2225ed93bc72 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index b3cefcf9c9823094829179b312c957cbbe48352b..57c76e5b30d7265b746c648e728d66bec6e0c739 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 65f1a4ddec2f92e2aff73661173e4edabd150bc2..8617b27f6e0b022c74859be26fedb2d5e25eb832 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index e3d24b3689eff53801df8da321f63193a864f187..cf07cf40fdb9485240118667e0b22074acd7516d 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index e3d24b3689eff53801df8da321f63193a864f187..cf07cf40fdb9485240118667e0b22074acd7516d 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index c59a3be72aaae725f37234bea253918471c177d4..e02916f708b68479250509ffb173c279cfb8f602 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 2951b96a210d26bf0b3a913bb0720f936a013873..424ab1cf9e3251575e95a3faf767cfc87b765cf2 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index e3d24b3689eff53801df8da321f63193a864f187..cf07cf40fdb9485240118667e0b22074acd7516d 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 77de4fbf8b1602adf24a9ddba065e42b34f136e5..5b87b75e764ce04b93957657601067126575a61a 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 8c20543ced3784e4016b8b031d27aebc0eea41e6..ee52007b791fe7128219a28fbaef2f154e50a2ea 100644 (file)
@@ -59,7 +59,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 5477ff90f57dfc66e4a99b290908f239f3fab0a4..7d52f8cac13a7a8d1f0eb7af73c0cae9403fc676 100644 (file)
@@ -34,7 +34,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(OBJS) $(SOBJS)
index 807da06e6cfce4f1a6ec36acf44d7aa93b67f2e8..b575e235e13777a07f6f5b67fe63db261f88e3f3 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 $(obj)%.dtb: $(src)%.dts
        dtc -f -V 0x10 -I dts -O dtb $< >$@
index e3d24b3689eff53801df8da321f63193a864f187..cf07cf40fdb9485240118667e0b22074acd7516d 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 4e6adac56cd1aea69c28a5f69c8910b39af07369..609ca75c4dd2a35bda7d1f967057ad3140d01cd1 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index aefaf0da8d81a21a2e59ae9b7d169ed878a4eed4..1f6f517260a628cd53f72ba682cd1fae0c3a1a6e 100644 (file)
@@ -35,7 +35,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 #########################################################################
 
index 4245f98223890885066e22825950b79c67693e93..10e5fc34060c7eaa9993c25b75852110bca8a317 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index d0dde2657c7e347ecc307cdd7c4635a61439e514..a5ce7bd46f77a1906118018752cd28d6ce9a6d9e 100644 (file)
@@ -25,14 +25,14 @@ include $(TOPDIR)/config.mk
 
 LIB    = $(obj)lib$(BOARD).a
 
-COBJS  := $(BOARD).o cmd_stk52xx.o cmd_tb5200.o
+COBJS  := $(BOARD).o cmd_stk52xx.o cmd_tb5200.o cam5200_flash.o
 
 SRCS   := $(SOBJS:.o=.S) $(COBJS:.o=.c)
 OBJS   := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
@@ -40,6 +40,9 @@ clean:
 distclean:     clean
        rm -f $(LIB) core *.bak .depend
 
+cam5200_flash.o:       cam5200_flash.c
+       $(CC) $(CFLAGS) -fno-strict-aliasing -c -o $@ $<
+
 #########################################################################
 
 # defines $(obj).depend target
diff --git a/board/tqm5200/cam5200_flash.c b/board/tqm5200/cam5200_flash.c
new file mode 100644 (file)
index 0000000..1a40633
--- /dev/null
@@ -0,0 +1,786 @@
+/*
+ * (C) Copyright 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 <common.h>
+#include <mpc5xxx.h>
+#include <asm/processor.h>
+
+#ifdef CONFIG_CAM5200
+
+#if 0
+#define DEBUGF(x...) printf(x)
+#else
+#define DEBUGF(x...)
+#endif
+
+#define swap16(x) __swab16(x)
+
+flash_info_t flash_info[CFG_MAX_FLASH_BANKS];  /* info for FLASH chips */
+
+/*
+ * CAM5200 is a TQM5200B based board. Additionally it also features
+ * a NIOS cpu. The NIOS CPU peripherals are accessible through MPC5xxx
+ * Local Bus on CS5. This includes 32 bit wide RAM and SRAM as well as
+ * 16 bit wide flash device. Big Endian order on a 32 bit CS5 makes
+ * access to flash chip slightly more complicated as additional byte
+ * swapping is necessary within each 16 bit wide flash 'word'.
+ *
+ * This driver's task is to handle both flash devices: 32 bit TQM5200B
+ * flash chip and 16 bit NIOS cpu flash chip. In the below
+ * flash_addr_table table we use least significant address bit to mark
+ * 16 bit flash bank and two sets of routines *_32 and *_16 to handle
+ * specifics of both flashes.
+ */
+static unsigned long flash_addr_table[][CFG_MAX_FLASH_BANKS] = {
+       {CFG_BOOTCS_START, CFG_CS5_START | 1}
+};
+
+/*-----------------------------------------------------------------------
+ * Functions
+ */
+static int write_word(flash_info_t * info, ulong dest, ulong data);
+#ifdef CFG_FLASH_2ND_16BIT_DEV
+static int write_word_32(flash_info_t * info, ulong dest, ulong data);
+static int write_word_16(flash_info_t * info, ulong dest, ulong data);
+static int flash_erase_32(flash_info_t * info, int s_first, int s_last);
+static int flash_erase_16(flash_info_t * info, int s_first, int s_last);
+static ulong flash_get_size_32(vu_long * addr, flash_info_t * info);
+static ulong flash_get_size_16(vu_long * addr, flash_info_t * info);
+#endif
+
+void flash_print_info(flash_info_t * info)
+{
+       int i, k;
+       int size, erased;
+       volatile unsigned long *flash;
+
+       if (info->flash_id == FLASH_UNKNOWN) {
+               printf("missing or unknown FLASH type\n");
+               return;
+       }
+
+       switch (info->flash_id & FLASH_VENDMASK) {
+               case FLASH_MAN_AMD:
+                       printf("AMD ");
+                       break;
+               case FLASH_MAN_FUJ:
+                       printf("FUJITSU ");
+                       break;
+               default:
+                       printf("Unknown Vendor ");
+                       break;
+       }
+
+       switch (info->flash_id & FLASH_TYPEMASK) {
+               case FLASH_S29GL128N:
+                       printf ("S29GL128N (256 Mbit, uniform sector size)\n");
+                       break;
+               case FLASH_AM320B:
+                       printf ("29LV320B (32 Mbit, bottom boot sect)\n");
+                       break;
+               case FLASH_AM320T:
+                       printf ("29LV320T (32 Mbit, top boot sect)\n");
+                       break;
+               default:
+                       printf("Unknown Chip Type\n");
+                       break;
+       }
+
+       printf("  Size: %ld KB in %d Sectors\n",
+                       info->size >> 10, info->sector_count);
+
+       printf("  Sector Start Addresses:");
+       for (i = 0; i < info->sector_count; ++i) {
+               /*
+                * Check if whole sector is erased
+                */
+               if (i != (info->sector_count - 1))
+                       size = info->start[i + 1] - info->start[i];
+               else
+                       size = info->start[0] + info->size - info->start[i];
+
+               erased = 1;
+               flash = (volatile unsigned long *)info->start[i];
+               size = size >> 2;       /* divide by 4 for longword access */
+
+               for (k = 0; k < size; k++) {
+                       if (*flash++ != 0xffffffff) {
+                               erased = 0;
+                               break;
+                       }
+               }
+
+               if ((i % 5) == 0)
+                       printf("\n   ");
+
+               printf(" %08lX%s%s", info->start[i],
+                               erased ? " E" : "  ",
+                               info->protect[i] ? "RO " : "   ");
+       }
+       printf("\n");
+       return;
+}
+
+
+/*
+ * The following code cannot be run from FLASH!
+ */
+#ifdef CFG_FLASH_2ND_16BIT_DEV
+static ulong flash_get_size(vu_long * addr, flash_info_t * info)
+{
+
+       DEBUGF("get_size: FLASH ADDR %08lx\n", addr);
+
+       /* bit 0 used for big flash marking */
+       if ((ulong)addr & 0x1)
+               return flash_get_size_16((vu_long *)((ulong)addr & 0xfffffffe), info);
+       else
+               return flash_get_size_32(addr, info);
+}
+
+static ulong flash_get_size_32(vu_long * addr, flash_info_t * info)
+#else
+static ulong flash_get_size(vu_long * addr, flash_info_t * info)
+#endif
+{
+       short i;
+       CFG_FLASH_WORD_SIZE value;
+       ulong base = (ulong) addr;
+       volatile CFG_FLASH_WORD_SIZE *addr2 = (CFG_FLASH_WORD_SIZE *) addr;
+
+       DEBUGF("get_size32: FLASH ADDR: %08x\n", (unsigned)addr);
+
+       /* Write auto select command: read Manufacturer ID */
+       addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x00AA00AA;
+       addr2[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE) 0x00550055;
+       addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x00900090;
+       udelay(1000);
+
+       value = addr2[0];
+       DEBUGF("FLASH MANUFACT: %x\n", value);
+
+       switch (value) {
+               case (CFG_FLASH_WORD_SIZE) AMD_MANUFACT:
+                       info->flash_id = FLASH_MAN_AMD;
+                       break;
+               default:
+                       info->flash_id = FLASH_UNKNOWN;
+                       info->sector_count = 0;
+                       info->size = 0;
+                       return (0);     /* no or unknown flash  */
+       }
+
+       value = addr2[1];       /* device ID            */
+       DEBUGF("\nFLASH DEVICEID: %x\n", value);
+
+       switch (value) {
+               case AMD_ID_MIRROR:
+                       DEBUGF("Mirror Bit flash: addr[14] = %08lX  addr[15] = %08lX\n",
+                                       addr[14], addr[15]);
+                       switch(addr[14]) {
+                               case AMD_ID_GL128N_2:
+                                       if (addr[15] != AMD_ID_GL128N_3) {
+                                               DEBUGF("Chip: S29GL128N -> unknown\n");
+                                               info->flash_id = FLASH_UNKNOWN;
+                                       } else {
+                                               DEBUGF("Chip: S29GL128N\n");
+                                               info->flash_id += FLASH_S29GL128N;
+                                               info->sector_count = 128;
+                                               info->size = 0x02000000;
+                                       }
+                                       break;
+                               default:
+                                       info->flash_id = FLASH_UNKNOWN;
+                                       return(0);
+                       }
+                       break;
+
+               default:
+                       info->flash_id = FLASH_UNKNOWN;
+                       return (0);     /* => no or unknown flash */
+       }
+
+       /* set up sector start address table */
+       for (i = 0; i < info->sector_count; i++)
+               info->start[i] = base + (i * 0x00040000);
+
+       /* check for protected sectors */
+       for (i = 0; i < info->sector_count; i++) {
+               /* read sector protection at sector address, (A7 .. A0) = 0x02 */
+               /* D0 = 1 if protected */
+               addr2 = (volatile CFG_FLASH_WORD_SIZE *)(info->start[i]);
+
+               info->protect[i] = addr2[2] & 1;
+       }
+
+       /* issue bank reset to return to read mode */
+       addr2[0] = (CFG_FLASH_WORD_SIZE) 0x00F000F0;
+
+       return (info->size);
+}
+
+static int wait_for_DQ7_32(flash_info_t * info, int sect)
+{
+       ulong start, now, last;
+       volatile CFG_FLASH_WORD_SIZE *addr =
+               (CFG_FLASH_WORD_SIZE *) (info->start[sect]);
+
+       start = get_timer(0);
+       last = start;
+       while ((addr[0] & (CFG_FLASH_WORD_SIZE) 0x00800080) !=
+                       (CFG_FLASH_WORD_SIZE) 0x00800080) {
+               if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
+                       printf("Timeout\n");
+                       return -1;
+               }
+               /* show that we're waiting */
+               if ((now - last) > 1000) {      /* every second */
+                       putc('.');
+                       last = now;
+               }
+       }
+       return 0;
+}
+
+#ifdef CFG_FLASH_2ND_16BIT_DEV
+int flash_erase(flash_info_t * info, int s_first, int s_last)
+{
+       if ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM320B) {
+               return flash_erase_16(info, s_first, s_last);
+       } else {
+               return flash_erase_32(info, s_first, s_last);
+       }
+}
+
+static int flash_erase_32(flash_info_t * info, int s_first, int s_last)
+#else
+int flash_erase(flash_info_t * info, int s_first, int s_last)
+#endif
+{
+       volatile CFG_FLASH_WORD_SIZE *addr = (CFG_FLASH_WORD_SIZE *) (info->start[0]);
+       volatile CFG_FLASH_WORD_SIZE *addr2;
+       int flag, prot, sect, l_sect;
+
+       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) {
+               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!", prot);
+
+       printf("\n");
+
+       l_sect = -1;
+
+       /* Disable interrupts which might cause a timeout here */
+       flag = disable_interrupts();
+
+       /* Start erase on unprotected sectors */
+       for (sect = s_first; sect <= s_last; sect++) {
+               if (info->protect[sect] == 0) { /* not protected */
+                       addr2 = (CFG_FLASH_WORD_SIZE *) (info->start[sect]);
+
+                       addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x00AA00AA;
+                       addr[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE) 0x00550055;
+                       addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x00800080;
+                       addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x00AA00AA;
+                       addr[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE) 0x00550055;
+                       addr2[0] = (CFG_FLASH_WORD_SIZE) 0x00300030;    /* sector erase */
+
+                       l_sect = sect;
+                       /*
+                        * Wait for each sector to complete, it's more
+                        * reliable.  According to AMD Spec, you must
+                        * issue all erase commands within a specified
+                        * timeout.  This has been seen to fail, especially
+                        * if printf()s are included (for debug)!!
+                        */
+                       wait_for_DQ7_32(info, sect);
+               }
+       }
+
+       /* re-enable interrupts if necessary */
+       if (flag)
+               enable_interrupts();
+
+       /* wait at least 80us - let's wait 1 ms */
+       udelay(1000);
+
+       /* reset to read mode */
+       addr = (CFG_FLASH_WORD_SIZE *) info->start[0];
+       addr[0] = (CFG_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));
+}
+
+/*-----------------------------------------------------------------------
+ * Copy memory to flash, returns:
+ * 0 - OK
+ * 1 - write timeout
+ * 2 - Flash not erased
+ */
+#ifdef CFG_FLASH_2ND_16BIT_DEV
+static int write_word(flash_info_t * info, ulong dest, ulong data)
+{
+       if ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM320B) {
+               return write_word_16(info, dest, data);
+       } else {
+               return write_word_32(info, dest, data);
+       }
+}
+
+static int write_word_32(flash_info_t * info, ulong dest, ulong data)
+#else
+static int write_word(flash_info_t * info, ulong dest, ulong data)
+#endif
+{
+       volatile CFG_FLASH_WORD_SIZE *addr2 = (CFG_FLASH_WORD_SIZE *) (info->start[0]);
+       volatile CFG_FLASH_WORD_SIZE *dest2 = (CFG_FLASH_WORD_SIZE *) dest;
+       volatile CFG_FLASH_WORD_SIZE *data2 = (CFG_FLASH_WORD_SIZE *) & data;
+       ulong start;
+       int i, flag;
+
+       /* Check if Flash is (sufficiently) erased */
+       if ((*((vu_long *)dest) & data) != data)
+               return (2);
+
+       for (i = 0; i < 4 / sizeof(CFG_FLASH_WORD_SIZE); i++) {
+               /* Disable interrupts which might cause a timeout here */
+               flag = disable_interrupts();
+
+               addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x00AA00AA;
+               addr2[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE) 0x00550055;
+               addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x00A000A0;
+
+               dest2[i] = data2[i];
+
+               /* re-enable interrupts if necessary */
+               if (flag)
+                       enable_interrupts();
+
+               /* data polling for D7 */
+               start = get_timer(0);
+               while ((dest2[i] & (CFG_FLASH_WORD_SIZE) 0x00800080) !=
+                               (data2[i] & (CFG_FLASH_WORD_SIZE) 0x00800080)) {
+
+                       if (get_timer(start) > CFG_FLASH_WRITE_TOUT)
+                               return (1);
+               }
+       }
+
+       return (0);
+}
+
+#ifdef CFG_FLASH_2ND_16BIT_DEV
+
+#undef  CFG_FLASH_WORD_SIZE
+#define CFG_FLASH_WORD_SIZE unsigned short
+
+/*
+ * The following code cannot be run from FLASH!
+ */
+static ulong flash_get_size_16(vu_long * addr, flash_info_t * info)
+{
+       short i;
+       CFG_FLASH_WORD_SIZE value;
+       ulong base = (ulong) addr;
+       volatile CFG_FLASH_WORD_SIZE *addr2 = (CFG_FLASH_WORD_SIZE *) addr;
+
+       DEBUGF("get_size16: FLASH ADDR: %08x\n", (unsigned)addr);
+
+       /* issue bank reset to return to read mode */
+       addr2[0] = (CFG_FLASH_WORD_SIZE) 0xF000F000;
+
+       /* Write auto select command: read Manufacturer ID */
+       addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0xAA00AA00;
+       addr2[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE) 0x55005500;
+       addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x90009000;
+       udelay(1000);
+
+       value = swap16(addr2[0]);
+       DEBUGF("FLASH MANUFACT: %x\n", value);
+
+       switch (value) {
+               case (CFG_FLASH_WORD_SIZE) AMD_MANUFACT:
+                       info->flash_id = FLASH_MAN_AMD;
+                       break;
+               case (CFG_FLASH_WORD_SIZE) FUJ_MANUFACT:
+                       info->flash_id = FLASH_MAN_FUJ;
+                       break;
+               default:
+                       info->flash_id = FLASH_UNKNOWN;
+                       info->sector_count = 0;
+                       info->size = 0;
+                       return (0);     /* no or unknown flash  */
+       }
+
+       value = swap16(addr2[1]);       /* device ID            */
+       DEBUGF("\nFLASH DEVICEID: %x\n", value);
+
+       switch (value) {
+               case (CFG_FLASH_WORD_SIZE)AMD_ID_LV320B:
+                       info->flash_id += FLASH_AM320B;
+                       info->sector_count = 71;
+                       info->size = 0x00400000;
+                       break;  /* => 4 MB      */
+               case (CFG_FLASH_WORD_SIZE)AMD_ID_LV320T:
+                       info->flash_id += FLASH_AM320T;
+                       info->sector_count = 71;
+                       info->size = 0x00400000;
+                       break;  /* => 4 MB      */
+               default:
+                       info->flash_id = FLASH_UNKNOWN;
+                       return (0);     /* => no or unknown flash */
+       }
+
+       if (info->flash_id & FLASH_BTYPE) {
+               /* set sector offsets for bottom boot block type        */
+               info->start[0] = base + 0x00000000;
+               info->start[1] = base + 0x00002000;
+               info->start[2] = base + 0x00004000;
+               info->start[3] = base + 0x00006000;
+               info->start[4] = base + 0x00008000;
+               info->start[5] = base + 0x0000a000;
+               info->start[6] = base + 0x0000c000;
+               info->start[7] = base + 0x0000e000;
+
+               for (i = 8; i < info->sector_count; i++)
+                       info->start[i] = base + (i * 0x00010000) - 0x00070000;
+       } else {
+               /* set sector offsets for top boot block type           */
+               i = info->sector_count - 1;
+               info->start[i--] = base + info->size - 0x00002000;
+               info->start[i--] = base + info->size - 0x00004000;
+               info->start[i--] = base + info->size - 0x00006000;
+               info->start[i--] = base + info->size - 0x00008000;
+               info->start[i--] = base + info->size - 0x0000a000;
+               info->start[i--] = base + info->size - 0x0000c000;
+               info->start[i--] = base + info->size - 0x0000e000;
+
+               for (; i >= 0; i--)
+                       info->start[i] = base + i * 0x00010000;
+       }
+
+       /* check for protected sectors */
+       for (i = 0; i < info->sector_count; i++) {
+               /* read sector protection at sector address, (A7 .. A0) = 0x02 */
+               /* D0 = 1 if protected */
+               addr2 = (volatile CFG_FLASH_WORD_SIZE *)(info->start[i]);
+
+               info->protect[i] = addr2[2] & 1;
+       }
+
+       /* issue bank reset to return to read mode */
+       addr2[0] = (CFG_FLASH_WORD_SIZE) 0xF000F000;
+
+       return (info->size);
+}
+
+static int wait_for_DQ7_16(flash_info_t * info, int sect)
+{
+       ulong start, now, last;
+       volatile CFG_FLASH_WORD_SIZE *addr =
+               (CFG_FLASH_WORD_SIZE *) (info->start[sect]);
+
+       start = get_timer(0);
+       last = start;
+       while ((addr[0] & (CFG_FLASH_WORD_SIZE) 0x80008000) !=
+                       (CFG_FLASH_WORD_SIZE) 0x80008000) {
+               if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
+                       printf("Timeout\n");
+                       return -1;
+               }
+               /* show that we're waiting */
+               if ((now - last) > 1000) {      /* every second */
+                       putc('.');
+                       last = now;
+               }
+       }
+       return 0;
+}
+
+static int flash_erase_16(flash_info_t * info, int s_first, int s_last)
+{
+       volatile CFG_FLASH_WORD_SIZE *addr = (CFG_FLASH_WORD_SIZE *) (info->start[0]);
+       volatile CFG_FLASH_WORD_SIZE *addr2;
+       int flag, prot, sect, l_sect;
+
+       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) {
+               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!",   prot);
+
+       printf("\n");
+
+       l_sect = -1;
+
+       /* Disable interrupts which might cause a timeout here */
+       flag = disable_interrupts();
+
+       /* Start erase on unprotected sectors */
+       for (sect = s_first; sect <= s_last; sect++) {
+               if (info->protect[sect] == 0) { /* not protected */
+                       addr2 = (CFG_FLASH_WORD_SIZE *) (info->start[sect]);
+
+                       addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0xAA00AA00;
+                       addr[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE) 0x55005500;
+                       addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0x80008000;
+                       addr[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0xAA00AA00;
+                       addr[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE) 0x55005500;
+                       addr2[0] = (CFG_FLASH_WORD_SIZE) 0x30003000;    /* sector erase */
+
+                       l_sect = sect;
+                       /*
+                        * Wait for each sector to complete, it's more
+                        * reliable.  According to AMD Spec, you must
+                        * issue all erase commands within a specified
+                        * timeout.  This has been seen to fail, especially
+                        * if printf()s are included (for debug)!!
+                        */
+                       wait_for_DQ7_16(info, sect);
+               }
+       }
+
+       /* re-enable interrupts if necessary */
+       if (flag)
+               enable_interrupts();
+
+       /* wait at least 80us - let's wait 1 ms */
+       udelay(1000);
+
+       /* reset to read mode */
+       addr = (CFG_FLASH_WORD_SIZE *) info->start[0];
+       addr[0] = (CFG_FLASH_WORD_SIZE) 0xF000F000;     /* reset bank */
+
+       printf(" done\n");
+       return 0;
+}
+
+static int write_word_16(flash_info_t * info, ulong dest, ulong data)
+{
+       volatile CFG_FLASH_WORD_SIZE *addr2 = (CFG_FLASH_WORD_SIZE *) (info->start[0]);
+       volatile CFG_FLASH_WORD_SIZE *dest2 = (CFG_FLASH_WORD_SIZE *) dest;
+       volatile CFG_FLASH_WORD_SIZE *data2 = (CFG_FLASH_WORD_SIZE *) & data;
+       ulong start;
+       int i;
+
+       /* Check if Flash is (sufficiently) erased */
+       for (i = 0; i < 4 / sizeof(CFG_FLASH_WORD_SIZE); i++) {
+               if ((dest2[i] & swap16(data2[i])) != swap16(data2[i]))
+                       return (2);
+       }
+
+       for (i = 0; i < 4 / sizeof(CFG_FLASH_WORD_SIZE); i++) {
+               int flag;
+
+               /* Disable interrupts which might cause a timeout here */
+               flag = disable_interrupts();
+
+               addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0xAA00AA00;
+               addr2[CFG_FLASH_ADDR1] = (CFG_FLASH_WORD_SIZE) 0x55005500;
+               addr2[CFG_FLASH_ADDR0] = (CFG_FLASH_WORD_SIZE) 0xA000A000;
+
+               dest2[i] = swap16(data2[i]);
+
+               /* re-enable interrupts if necessary */
+               if (flag)
+                       enable_interrupts();
+
+               /* data polling for D7 */
+               start = get_timer(0);
+               while ((dest2[i] & (CFG_FLASH_WORD_SIZE) 0x80008000) !=
+                               (swap16(data2[i]) & (CFG_FLASH_WORD_SIZE) 0x80008000)) {
+
+                       if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
+                               return (1);
+                       }
+               }
+       }
+
+       return (0);
+}
+#endif /* CFG_FLASH_2ND_16BIT_DEV */
+
+/*-----------------------------------------------------------------------
+ * Functions
+ */
+static ulong flash_get_size(vu_long * addr, flash_info_t * info);
+static int write_word(flash_info_t * info, ulong dest, ulong data);
+
+/*-----------------------------------------------------------------------
+ */
+
+unsigned long flash_init(void)
+{
+       unsigned long total_b = 0;
+       unsigned long size_b[CFG_MAX_FLASH_BANKS];
+       unsigned short index = 0;
+       int i;
+
+       DEBUGF("\n");
+       DEBUGF("FLASH: Index: %d\n", index);
+
+       /* Init: no FLASHes known */
+       for (i = 0; i < CFG_MAX_FLASH_BANKS; ++i) {
+               flash_info[i].flash_id = FLASH_UNKNOWN;
+               flash_info[i].sector_count = -1;
+               flash_info[i].size = 0;
+
+               /* check whether the address is 0 */
+               if (flash_addr_table[index][i] == 0)
+                       continue;
+
+               /* call flash_get_size() to initialize sector address */
+               size_b[i] = flash_get_size((vu_long *) flash_addr_table[index][i],
+                               &flash_info[i]);
+
+               flash_info[i].size = size_b[i];
+
+               if (flash_info[i].flash_id == FLASH_UNKNOWN) {
+                       printf("## Unknown FLASH on Bank %d - Size = 0x%08lx = %ld MB\n",
+                                       i, size_b[i], size_b[i] << 20);
+                       flash_info[i].sector_count = -1;
+                       flash_info[i].size = 0;
+               }
+
+               /* Monitor protection ON by default */
+               (void)flash_protect(FLAG_PROTECT_SET, CFG_MONITOR_BASE,
+                                   CFG_MONITOR_BASE + CFG_MONITOR_LEN - 1,
+                                   &flash_info[i]);
+#if defined(CFG_ENV_IS_IN_FLASH)
+               (void)flash_protect(FLAG_PROTECT_SET, CFG_ENV_ADDR,
+                                   CFG_ENV_ADDR + CFG_ENV_SECT_SIZE - 1,
+                                   &flash_info[i]);
+#if defined(CFG_ENV_ADDR_REDUND)
+               (void)flash_protect(FLAG_PROTECT_SET, CFG_ENV_ADDR_REDUND,
+                                   CFG_ENV_ADDR_REDUND + CFG_ENV_SECT_SIZE - 1,
+                                   &flash_info[i]);
+#endif
+#endif
+               total_b += flash_info[i].size;
+       }
+
+       return total_b;
+}
+#endif /* ifdef CONFIG_CAM5200 */
index b76579cb43fc55b81ff33b40cf416ff965cfa908..1d81dce609093c9db43a0cec63179561e9233736 100644 (file)
@@ -396,6 +396,7 @@ void ide_set_reset (int idereset)
  */
 int post_hotkeys_pressed(void)
 {
+#ifdef CONFIG_STK52XX
        struct mpc5xxx_gpio *gpio;
 
        gpio = (struct mpc5xxx_gpio*) MPC5XXX_GPIO;
@@ -414,6 +415,9 @@ int post_hotkeys_pressed(void)
        gpio->simple_ddr &= ~(0x20000000);
 
        return ((gpio->simple_ival & 0x20000000) ? 0 : 1);
+#else
+       return 0;
+#endif
 }
 #endif
 
index d3adccd669293626b1394885848cc7b135d3e179..61221fdca2447231851e11cbea80d8db58dcbe15 100644 (file)
@@ -35,7 +35,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 6991cfbf28a3f94ad812d2f1c11ac0de2c7e654e..4c0d20417e5a5c49ab74a1f43adff896888368e1 100644 (file)
@@ -1,7 +1,7 @@
 #
 # (C) Copyright 2006
 # Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-# 
+#
 # Copyright 2004 Freescale Semiconductor, Inc.
 #
 # See file CREDITS for list of people who contributed to this
@@ -34,7 +34,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index a6ad98a732f427d64ce2ad173bce5cfe1e962996..cad7e1e1ed7a3f08862ec6640fa20449ebb50ef6 100644 (file)
@@ -34,7 +34,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(OBJS) $(SOBJS)
index 312c0c4c881c939fa2e28c6552e2d51985992cdd..b48934b429568379e041c4dd4a500800bf77fa74 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 2b918f6397d8575bd650cc58fb997de433f01f3d..868ca4281f180a6b0c105cd9ce0529e4e5da59bc 100644 (file)
@@ -45,7 +45,7 @@ LOAD_ADDR = 0xc100000
 all:   $(LIB) $(obj)trab_fkt.srec $(obj)trab_fkt.bin
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 $(obj)trab_fkt.srec:   $(OBJS_FKT) $(LIB)
        $(LD) -g -Ttext $(LOAD_ADDR) -o $(<:.o=) -e trab_fkt $^ $(LIB) \
index a7a93abfe6d9eae9ae87457fc11f4a31cc0eab61..92ee091f6809c186e50accd7958508147735e495 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 0664d9f58b01a2f6f69b3413ee6e5e73e8ac9641..7ad768bc430823c6817676183684135d06e329cb 100644 (file)
@@ -37,7 +37,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index b42026981f5ec0133bede8197f7c62ba8a368e54..109cec264056bdd5b0e25d4a5f4601151bfc00ac 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 27bca10a11c0b85d64ae31218786bf81e95bd925..1fad0a7ee34065a9915ac267b06d57613c89fb97 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index fa614f8d446bcb83516cfc891a14b5cd30d01a55..5f340b47f0a98a06240ea1cd64a4239a4362eb3d 100644 (file)
@@ -42,7 +42,7 @@ lnk = $(if $(obj),$(obj),.)
 all:   $(obj).depend $(LIB) $(obj)eeprom.srec $(obj)eeprom.bin
 
 $(LIB):        $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 $(obj)eeprom.srec:     $(obj)eeprom.o $(obj)eeprom_start.o
        cd $(lnk) && $(LD) -T $(LDSCRIPT) -g -Ttext $(LOAD_ADDR) \
index 2ec449d7a6c3c869ff4264609c1c0f5af6ecd99e..46b8c8923a62c0cc49b726e81bf5250c6d5590ce 100644 (file)
@@ -37,7 +37,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(OBJS) $(SOBJS)
-       $(AR) crv $@ $^
+       $(AR) $(ARFLAGS) $@ $^
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index b5b5a96f06dc90d5195f53579b78493dea4359a9..58a70ccd75c4d6f754cb3d712a20eb07c631c00d 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 1b57d2b0236ce949c225b11814dce20ff69e69fd..dcb1907032b5df8d2f89bdcb23506a49bb1446c7 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 655dc9a58ab73f8b38d238195fb25424131874c8..9a79f7d98128fcd379331ea5d5dd0782975a155a 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 4ecf37a9c5f486f1ea8282d0bd3fca91aa84663f..02c22fbef1f1fe1a92e1824bf74584a73514253f 100644 (file)
@@ -52,7 +52,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(OBJS) $(SOBJS)
-       $(AR) crv $@ $^
+       $(AR) $(ARFLAGS) $@ $^
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 22f20243a6d39f810a06835c7ba5fbe624120e1c..0a6eb320acaf9c08b721914dac247f344d8c12b1 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 5f3e34e246816ffd9af5c145cf3bfa7d17e1266a..5da96e9e1c846aaab582cd468654ae8debc73520 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 78ca9d6088cfb454eff80d7eadec9a01a8bc7141..3f80a1d515f0f4db6c1bd5422a8b8e6a1837548e 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index e880f873af4b8a512f100b64a7fb2741133ba35b..be7e213a9b5d311794d855554c720ec083c2051b 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index 4b70f704c1f57e28a1e62acb953abfa7442edeea..d72dc98f01a1a02bef6d436d845311538142892c 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
-       $(AR) crv $@ $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
 clean:
        rm -f $(SOBJS) $(OBJS)
index d626fe4d4ba6ae2c8dbba9a56ef40a9d36f8cf35..56092b9cf0dcd61f1bfbaa55f80fd2434ec2a694 100644 (file)
@@ -61,7 +61,7 @@ CPPFLAGS += -I..
 all:   $(LIB) $(AOBJS)
 
 $(LIB): $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 $(obj)environment.o: $(src)environment.c $(obj)../tools/envcrc
        $(CC) $(AFLAGS) -Wa,--no-warn \
index fdf7180a19a87d4974b3b1a4cc131dba4ba432ba..2168e6737a08b9125f9564dd439c5dfb785dcb5d 100644 (file)
@@ -260,6 +260,8 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
        if (hdr->ih_arch != IH_CPU_NIOS2)
 #elif defined(__blackfin__)
        if (hdr->ih_arch != IH_CPU_BLACKFIN)
+#elif defined(__avr32__)
+       if (hdr->ih_arch != IH_CPU_AVR32)
 #else
 # error Unknown CPU type
 #endif
@@ -1236,6 +1238,7 @@ print_type (image_header_t *hdr)
        case IH_CPU_INVALID:    arch = "Invalid CPU";           break;
        case IH_CPU_ALPHA:      arch = "Alpha";                 break;
        case IH_CPU_ARM:        arch = "ARM";                   break;
+       case IH_CPU_AVR32:      arch = "AVR32";                 break;
        case IH_CPU_I386:       arch = "Intel x86";             break;
        case IH_CPU_IA64:       arch = "IA64";                  break;
        case IH_CPU_MIPS:       arch = "MIPS";                  break;
index 21adb1b47868a42d51f58bf80bf346754e9deb05..7042a9c22662cd08ac811912be690916b21ac3ad 100644 (file)
@@ -135,11 +135,16 @@ int do_nand(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
        ulong addr, off, size;
        char *cmd, *s;
        nand_info_t *nand;
+       int quiet = 0;
+       const char *quiet_str = getenv("quiet");
 
        /* at least two arguments please */
        if (argc < 2)
                goto usage;
 
+       if (quiet_str)
+               quiet = simple_strtoul(quiet_str, NULL, 0) != 0;
+
        cmd = argv[1];
 
        if (strcmp(cmd, "info") == 0) {
@@ -178,7 +183,10 @@ int do_nand(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
 
        if (strcmp(cmd, "bad") != 0 && strcmp(cmd, "erase") != 0 &&
            strncmp(cmd, "dump", 4) != 0 &&
-           strncmp(cmd, "read", 4) != 0 && strncmp(cmd, "write", 5) != 0)
+           strncmp(cmd, "read", 4) != 0 && strncmp(cmd, "write", 5) != 0 &&
+           strcmp(cmd, "scrub") != 0 && strcmp(cmd, "markbad") != 0 &&
+           strcmp(cmd, "biterr") != 0 &&
+           strcmp(cmd, "lock") != 0 && strcmp(cmd, "unlock") != 0 )
                goto usage;
 
        /* the following commands operate on the current device */
@@ -197,14 +205,64 @@ int do_nand(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
                return 0;
        }
 
-       if (strcmp(cmd, "erase") == 0) {
-               arg_off_size(argc - 2, argv + 2, &off, &size, nand->size);
-               if (off == 0 && size == 0)
-                       return 1;
+       if (strcmp(cmd, "erase") == 0 || strcmp(cmd, "scrub") == 0) {
+               nand_erase_options_t opts;
+               int clean = argc >= 3 && !strcmp("clean", argv[2]);
+               int rest_argc = argc - 2;
+               char **rest_argv = argv + 2;
+               int scrub = !strcmp(cmd, "scrub");
+
+               if (clean) {
+                       rest_argc--;
+                       rest_argv++;
+               }
+
+               if (rest_argc == 0) {
 
-               printf("\nNAND erase: device %d offset 0x%x, size 0x%x ",
-                      nand_curr_device, off, size);
-               ret = nand_erase(nand, off, size);
+                       printf("\nNAND %s: device %d whole chip\n",
+                              cmd,
+                              nand_curr_device);
+
+                       off = size = 0;
+               } else {
+                       arg_off_size(rest_argc, rest_argv, &off, &size,
+                                    nand->size);
+
+                       if (off == 0 && size == 0)
+                               return 1;
+
+                       printf("\nNAND %s: device %d offset 0x%x, size 0x%x\n",
+                              cmd, nand_curr_device, off, size);
+               }
+
+               memset(&opts, 0, sizeof(opts));
+               opts.offset = off;
+               opts.length = size;
+               opts.jffs2  = clean;
+               opts.quiet  = quiet;
+
+               if (scrub) {
+                       printf("Warning: "
+                              "scrub option will erase all factory set "
+                              "bad blocks!\n"
+                              "         "
+                              "There is no reliable way to recover them.\n"
+                              "         "
+                              "Use this command only for testing purposes "
+                              "if you\n"
+                              "         "
+                              "are sure of what you are doing!\n"
+                              "\nReally scrub this NAND flash? <y/N>\n"
+                               );
+
+                       if (getc() == 'y' && getc() == '\r') {
+                               opts.scrub = 1;
+                       } else {
+                               printf("scrub aborted\n");
+                               return -1;
+                       }
+               }
+               ret = nand_erase_opts(nand, &opts);
                printf("%s\n", ret ? "ERROR" : "OK");
 
                return ret == 0 ? 0 : 1;
@@ -228,37 +286,152 @@ int do_nand(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
 
        /* read write */
        if (strncmp(cmd, "read", 4) == 0 || strncmp(cmd, "write", 5) == 0) {
+               int read;
+
                if (argc < 4)
                        goto usage;
-/*
-               s = strchr(cmd, '.');
-               clean = CLEAN_NONE;
-               if (s != NULL) {
-                       if (strcmp(s, ".jffs2") == 0 || strcmp(s, ".e") == 0
-                           || strcmp(s, ".i"))
-                               clean = CLEAN_JFFS2;
-               }
-*/
+
                addr = (ulong)simple_strtoul(argv[2], NULL, 16);
 
                arg_off_size(argc - 3, argv + 3, &off, &size, nand->size);
                if (off == 0 && size == 0)
                        return 1;
 
-               i = strncmp(cmd, "read", 4) == 0;       /* 1 = read, 0 = write */
+               read = strncmp(cmd, "read", 4) == 0; /* 1 = read, 0 = write */
                printf("\nNAND %s: device %d offset %u, size %u ... ",
-                      i ? "read" : "write", nand_curr_device, off, size);
+                      read ? "read" : "write", nand_curr_device, off, size);
 
-               if (i)
+               s = strchr(cmd, '.');
+               if (s != NULL &&
+                   (!strcmp(s, ".jffs2") || !strcmp(s, ".e") || !strcmp(s, ".i"))) {
+                       if (read) {
+                               /* read */
+                               nand_read_options_t opts;
+                               memset(&opts, 0, sizeof(opts));
+                               opts.buffer     = (u_char*) addr;
+                               opts.length     = size;
+                               opts.offset     = off;
+                               opts.quiet      = quiet;
+                               ret = nand_read_opts(nand, &opts);
+                       } else {
+                               /* write */
+                               nand_write_options_t opts;
+                               memset(&opts, 0, sizeof(opts));
+                               opts.buffer     = (u_char*) addr;
+                               opts.length     = size;
+                               opts.offset     = off;
+                               /* opts.forcejffs2 = 1; */
+                               opts.pad        = 1;
+                               opts.blockalign = 1;
+                               opts.quiet      = quiet;
+                               ret = nand_write_opts(nand, &opts);
+                       }
+                       printf("%s\n", ret ? "ERROR" : "OK");
+                       return ret == 0 ? 0 : 1;
+               }
+
+               if (read)
                        ret = nand_read(nand, off, &size, (u_char *)addr);
                else
                        ret = nand_write(nand, off, &size, (u_char *)addr);
 
                printf(" %d bytes %s: %s\n", size,
-                      i ? "read" : "written", ret ? "ERROR" : "OK");
+                      read ? "read" : "written", ret ? "ERROR" : "OK");
 
                return ret == 0 ? 0 : 1;
        }
+
+       if (strcmp(cmd, "markbad") == 0) {
+               addr = (ulong)simple_strtoul(argv[2], NULL, 16);
+
+               int ret = nand->block_markbad(nand, addr);
+               if (ret == 0) {
+                       printf("block 0x%08lx successfully marked as bad\n",
+                              (ulong) addr);
+                       return 0;
+               } else {
+                       printf("block 0x%08lx NOT marked as bad! ERROR %d\n",
+                              (ulong) addr, ret);
+               }
+               return 1;
+       }
+       if (strcmp(cmd, "biterr") == 0) {
+               /* todo */
+               return 1;
+       }
+
+       if (strcmp(cmd, "lock") == 0) {
+               int tight  = 0;
+               int status = 0;
+               if (argc == 3) {
+                       if (!strcmp("tight", argv[2]))
+                               tight = 1;
+                       if (!strcmp("status", argv[2]))
+                               status = 1;
+               }
+
+               if (status) {
+                       ulong block_start = 0;
+                       ulong off;
+                       int last_status = -1;
+
+                       struct nand_chip *nand_chip = nand->priv;
+                       /* check the WP bit */
+                       nand_chip->cmdfunc (nand, NAND_CMD_STATUS, -1, -1);
+                       printf("device is %swrite protected\n",
+                              (nand_chip->read_byte(nand) & 0x80 ?
+                               "NOT " : "" ) );
+
+                       for (off = 0; off < nand->size; off += nand->oobblock) {
+                               int s = nand_get_lock_status(nand, off);
+
+                               /* print message only if status has changed
+                                * or at end of chip
+                                */
+                               if (off == nand->size - nand->oobblock
+                                   || (s != last_status && off != 0))  {
+
+                                       printf("%08x - %08x: %8d pages %s%s%s\n",
+                                              block_start,
+                                              off-1,
+                                              (off-block_start)/nand->oobblock,
+                                              ((last_status & NAND_LOCK_STATUS_TIGHT) ? "TIGHT " : ""),
+                                              ((last_status & NAND_LOCK_STATUS_LOCK) ? "LOCK " : ""),
+                                              ((last_status & NAND_LOCK_STATUS_UNLOCK) ? "UNLOCK " : ""));
+                               }
+
+                               last_status = s;
+                      }
+               } else {
+                       if (!nand_lock(nand, tight)) {
+                               printf ("NAND flash successfully locked\n");
+                       } else {
+                               printf ("Error locking NAND flash. \n");
+                               return 1;
+                       }
+               }
+               return 0;
+       }
+
+       if (strcmp(cmd, "unlock") == 0) {
+               if (argc == 2) {
+                       off = 0;
+                       size = nand->size;
+               } else {
+                       arg_off_size(argc - 2, argv + 2, &off, &size,
+                                    nand->size);
+               }
+
+               if (!nand_unlock(nand, off, size)) {
+                       printf("NAND flash successfully unlocked\n");
+               } else {
+                       printf("Error unlocking NAND flash. "
+                              "Write and erase will probably fail\n");
+                       return 1;
+               }
+               return 0;
+       }
+
 usage:
        printf("Usage:\n%s\n", cmdtp->usage);
        return 1;
@@ -277,7 +450,9 @@ U_BOOT_CMD(nand, 5, 1, do_nand,
        "nand dump[.oob] off - dump page\n"
        "nand scrub - really clean NAND erasing bad blocks (UNSAFE)\n"
        "nand markbad off - mark bad block at offset (UNSAFE)\n"
-       "nand biterr off - make a bit error at offset (UNSAFE)\n");
+       "nand biterr off - make a bit error at offset (UNSAFE)\n"
+       "nand lock [tight] [status] - bring nand to lock state or display locked pages\n"
+       "nand unlock [offset] [size] - unlock section\n");
 
 int do_nandboot(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
 {
@@ -596,7 +771,7 @@ int do_nand (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
                        return 1;
                }
 
-               printf ("\nNAND %s: device %d offset %ld, size %ld ... ",
+               printf ("\nNAND %s: device %d offset %ld, size %ld ...\n",
                        (cmd & NANDRW_READ) ? "read" : "write",
                        curr_device, off, size);
 
@@ -615,7 +790,7 @@ int do_nand (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
                ulong size = simple_strtoul(argv[3 + clean], NULL, 16);
                int ret;
 
-               printf ("\nNAND erase: device %d offset %ld, size %ld ... ",
+               printf ("\nNAND erase: device %d offset %ld, size %ld ...\n",
                        curr_device, off, size);
 
                ret = nand_legacy_erase (nand_dev_desc + curr_device,
@@ -635,7 +810,7 @@ int do_nand (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 
 U_BOOT_CMD(
        nand,   5,      1,      do_nand,
-       "nand    - NAND sub-system\n",
+       "nand    - legacy NAND sub-system\n",
        "info  - show available NAND devices\n"
        "nand device [dev] - show or set current device\n"
        "nand read[.jffs2[s]]  addr off size\n"
index 9e9c906fc1f9cb27c0d6078d1967fa1a6e6e1b03..b0560a22a15e2d78a6979e935d4b4b7c9dfd65a1 100644 (file)
@@ -293,7 +293,9 @@ static void print_data(const void *data, int len)
                return;
 
        if (is_printable_string(data, len)) {
-               printf(" = \"%s\"", (char *)data);
+               puts(" = \"");
+               puts(data);
+               puts("\"");
                return;
        }
 
index d79350f2347c709b0f78bbcb60e5877c737f583a..df31ca9b8c2250c1dc10ad6a8d7c222099950449 100644 (file)
@@ -661,8 +661,8 @@ int lcd_display_bitmap(ulong bmp_image, int x, int y)
         *  So, in case of Monochrome BMP we should align widths
         * on a byte boundary and convert them from Bit to Byte
         * units.
-        *  Probably, PXA250 and MPC823 process 1bpp BMP images in 
-        * their own ways, so make the converting to be MCC200 
+        *  Probably, PXA250 and MPC823 process 1bpp BMP images in
+        * their own ways, so make the converting to be MCC200
         * specific.
         */
 #if defined(CONFIG_MCC200)
index 0f5d0f43d94f7a86caa90ef85b93479ba60ed71e..d32f51e90b08f054bf43b1842991c7d85ab1d8db 100644 (file)
--- a/config.mk
+++ b/config.mk
@@ -25,7 +25,7 @@
 
 ifneq ($(OBJTREE),$(SRCTREE))
 ifeq ($(CURDIR),$(SRCTREE))
-dir := 
+dir :=
 else
 dir := $(subst $(SRCTREE)/,,$(CURDIR))
 endif
@@ -127,6 +127,7 @@ OBJCOPY = $(CROSS_COMPILE)objcopy
 OBJDUMP = $(CROSS_COMPILE)objdump
 RANLIB = $(CROSS_COMPILE)RANLIB
 
+ARFLAGS = crv
 RELFLAGS= $(PLATFORM_RELFLAGS)
 DBGFLAGS= -g # -DDEBUG
 OPTFLAGS= -Os #-fomit-frame-pointer
index e82fffcf0bf3397b15247562d7f2c9161e80f110..fe905f31fe2b9ca633712c0db3c937756f21ec8a 100644 (file)
@@ -39,7 +39,7 @@ START := $(addprefix $(obj),$(START))
 all:   $(obj).depend $(START) $(LIB)
 
 $(LIB):        $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 5d2c7eb49701c5a890b40e07944f067eaf5204ac..d5ac7d3fd980e66e909bbe55dadaf3c3906c3737 100644 (file)
@@ -35,7 +35,7 @@ START := $(addprefix $(obj),$(START))
 all:   $(obj).depend $(START) $(LIB)
 
 $(LIB):        $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 539a48c414d024bacdf3bce9089a34e11db2dda5..c97f329638e58980532ada29d60b86c154745c5c 100644 (file)
@@ -35,7 +35,7 @@ START := $(addprefix $(obj),$(START))
 all:   $(obj).depend $(START) $(LIB)
 
 $(LIB):        $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 199fe0c2cb343af2be4906b197e054652af95e24..e02bc6ac8f869b672c56f3880d3b71c316bff819 100644 (file)
@@ -35,7 +35,7 @@ START := $(addprefix $(obj),$(START))
 all:   $(obj).depend $(START) $(LIB)
 
 $(LIB):        $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 26b0b94f2b95a0148a3567301e2a172005800247..8d4e478fb5e856dc693398e1af20a7e5fcb1a7f9 100644 (file)
@@ -35,7 +35,7 @@ OBJS  := $(addprefix $(obj),$(SOBJS) $(COBJS))
 all:   $(obj).depend $(LIB)
 
 $(LIB):        $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index e238fc01fc5ede37af785656d0d3fe1ad888752e..9207ec1bcb33b06ade146a222778816d991642ed 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(SOBJS) $(COBJS))
 all:   $(obj).depend $(LIB)
 
 $(LIB):        $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 6342435d92413c66e74ac1d561c29317c7e2bd1a..7db9473524a208c04d838c2d9c561ab374656984 100644 (file)
@@ -34,7 +34,7 @@ OBJS  := $(addprefix $(obj),$(SOBJS) $(COBJS))
 all:   $(obj).depend $(LIB)
 
 $(LIB):        $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 557298eac80a6d7acf62ccb25e5a5c572cc1c6d9..3a7c4b35fd8a0fa095bd8903cf03a17912a2b417 100644 (file)
@@ -34,7 +34,7 @@ OBJS  := $(addprefix $(obj),$(SOBJS) $(COBJS))
 all:   $(obj).depend $(LIB)
 
 $(LIB):        $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 086b1a37791e3b944d08f477495ef0fd7f1d343f..0d4912cd72803fb86008e2942d21fd6ae0889a49 100644 (file)
@@ -35,7 +35,7 @@ START := $(addprefix $(obj),$(START))
 all:   $(obj).depend $(START) $(LIB)
 
 $(LIB):        $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index a410c2f99fea5bedbd751cf759a8d3af98845df4..0facce4703154856ba1784422c371286f576b410 100644 (file)
@@ -35,7 +35,7 @@ START := $(addprefix $(obj),$(START))
 all:   $(obj).depend $(START) $(LIB)
 
 $(LIB):        $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 7eca2f0d78f830da5f6776b9da1c082031304a2e..c335d5c8665363cf51b45d1b1d6a9816fa21b583 100644 (file)
@@ -35,7 +35,7 @@ START := $(addprefix $(obj),$(START))
 all:   $(obj).depend $(LIB)
 
 $(LIB):        $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 7eca2f0d78f830da5f6776b9da1c082031304a2e..c335d5c8665363cf51b45d1b1d6a9816fa21b583 100644 (file)
@@ -35,7 +35,7 @@ START := $(addprefix $(obj),$(START))
 all:   $(obj).depend $(LIB)
 
 $(LIB):        $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 5d2c7eb49701c5a890b40e07944f067eaf5204ac..d5ac7d3fd980e66e909bbe55dadaf3c3906c3737 100644 (file)
@@ -35,7 +35,7 @@ START := $(addprefix $(obj),$(START))
 all:   $(obj).depend $(START) $(LIB)
 
 $(LIB):        $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 5d2c7eb49701c5a890b40e07944f067eaf5204ac..d5ac7d3fd980e66e909bbe55dadaf3c3906c3737 100644 (file)
@@ -35,7 +35,7 @@ START := $(addprefix $(obj),$(START))
 all:   $(obj).depend $(START) $(LIB)
 
 $(LIB):        $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index a5c48dc04d26165add75f24bf16a116458c4c018..9f4a0d8014832dbb61306a024abe775cfa4511c0 100644 (file)
@@ -38,7 +38,7 @@ START := $(addprefix $(obj),$(START))
 all:   $(obj).depend $(START) $(LIB)
 
 $(LIB):        $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index cd46dea2c7401fdb0bef839117f86cc086b50631..50534b615b941326247a09455bf368fdbd0ebfc1 100644 (file)
@@ -1,7 +1,7 @@
 #
 # (C) Copyright 2006
 # Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-# 
+#
 # (C) Copyright 2002
 # Daniel Engström, Omicron Ceti AB, daniel@omicron.se.
 #
@@ -39,7 +39,7 @@ START := $(addprefix $(obj),$(START))
 all:   $(obj).depend $(START) $(LIB)
 
 $(LIB):        $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 28672705c6db863c6e197be8c5d814ece3f1b34b..e1fb327bb4b938772dd85dec82173015d70098b2 100644 (file)
@@ -35,7 +35,7 @@ START := $(addprefix $(obj),$(START))
 all:   $(obj).depend $(START) $(LIB)
 
 $(LIB):        $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 412b418b81f877b3b171212ad7085a94e47cb07e..4de34fd5b9e395d87c5120ffd9bbaece005c8043 100644 (file)
@@ -88,7 +88,7 @@ START := $(addprefix $(obj),$(START))
 all:   $(LIB)
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 2fcafb043237ecc7c6d8e18e3d35b0119a4bf921..bac2a640cb04d0fd7a7f98cc0f2fe934b6ca4c8f 100644 (file)
@@ -35,7 +35,7 @@ START := $(addprefix $(obj),$(START))
 all:   $(obj).depend $(START) $(LIB)
 
 $(LIB):        $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index a05a803cb2707897efe6cf6f4e50b783fbf98a30..70d57cf609cccaec2dcc7c121936586aedfbfb1e 100644 (file)
@@ -37,7 +37,7 @@ START := $(addprefix $(obj),$(START))
 all:   $(obj).depend $(START) $(LIB)
 
 $(LIB):        $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 07ed6cedc28d5fae40834648478127b587004e37..fd544254f041a8d3b560e0eb63e4160d03aaf627 100644 (file)
@@ -35,7 +35,7 @@ START := $(addprefix $(obj),$(START))
 all:   $(obj).depend $(START) $(LIB)
 
 $(LIB):        $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index f9a49df33d46e3d59506cb9830edae915b0bafec..92dcc167e8b6b3fc2134592da23daa588d180ba4 100644 (file)
@@ -37,7 +37,7 @@ START := $(addprefix $(obj),$(START))
 all:   $(obj).depend $(START) $(LIB)
 
 $(LIB):        $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index d696e79a2172f60adfc9d6210469ca9384639228..8aab0189d7971c4d548407da2c765681bf7a578c 100644 (file)
@@ -47,7 +47,7 @@ START := $(addprefix $(obj),$(START))
 all:   $(obj).depend $(START) $(LIB)
 
 $(LIB):        $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 683ded8c9a20e71d7b7880a11628b9259cc94362..235adb7c04e60fc61aba0dcea2285b1d4170a598 100644 (file)
@@ -37,7 +37,7 @@ START := $(addprefix $(obj),$(START))
 all:   $(obj).depend $(START) $(LIB)
 
 $(LIB):        $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 7b5cb8be4e2fb4cb0d1d540417b0692d645493e2..beeb222636ee82c454361ebdc74c0f3e584e5b57 100644 (file)
@@ -32,7 +32,7 @@
  *
  * Based on (well, mostly copied from) the code from the 2.4 kernel by
  * Dale Farnsworth <dfarnsworth@mvista.com> and Kent Borg.
- * 
+ *
  * Copyright (C) 2004 Sylvain Munaut <tnt@246tNt.com>
  * Copyright (C) 2003 Montavista Software, Inc
  */
index 1f2e93176f6a76b7a88731db2c132c0cd117fad4..b4fad286dcbc8cda1998e4962f8b3ed74be0421e 100644 (file)
@@ -38,7 +38,7 @@ START := $(addprefix $(obj),$(START))
 all:   $(obj).depend $(START) $(LIB)
 
 $(LIB):        $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index d9fd9bfdb170b242bdd8175f244eea02a097df49..f249dd7c3b371076ed8947ac34f955919d1b02d0 100644 (file)
@@ -41,7 +41,7 @@ START := $(addprefix $(obj),$(START))
 all:   $(obj).depend $(START) $(LIB)
 
 $(LIB):        $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 $(obj)bedbug_603e.c:
        ln -s $(src)../mpc8260/bedbug_603e.c $(obj)bedbug_603e.c
index b1f1c18992a20cede3ed226c68b507047e812883..80d785229c523be3a20bbf7545eef5a9223717e7 100644 (file)
@@ -37,7 +37,7 @@ START := $(addprefix $(obj),$(START))
 all:   $(obj).depend $(START) $(LIB)
 
 $(LIB):        $(OBJS)
-       $(AR) crv $@ $(OBJS) $(obj)kgdb.o
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(obj)kgdb.o
 
 #########################################################################
 
index f3fa6fd93ab96d4d44c6d30ce75684f219dbec1b..b2a6b3e9c56f9aa6be201c93bbbbad7fea0e50bf 100644 (file)
@@ -1,7 +1,7 @@
 #
 # (C) Copyright 2006
 # Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-# 
+#
 # Copyright 2004 Freescale Semiconductor, Inc.
 #
 # See file CREDITS for list of people who contributed to this
@@ -38,7 +38,7 @@ START := $(addprefix $(obj),$(START))
 all:   $(obj).depend $(START) $(LIB)
 
 $(LIB):        $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index bbc50844e0ffe2473a2b069a3352ed2d10230f9c..7b32305dc4cef81ecf3bf59d4cd21b3a6e057061 100644 (file)
@@ -39,7 +39,7 @@ START := $(addprefix $(obj),$(START))
 all:   $(obj).depend $(START) $(LIB)
 
 $(LIB):        $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 6451e0551ba85d2a0faf0bc9362be6415daae741..223b30cbcc95cf4d6215eed8a89c381b3cd18718 100644 (file)
@@ -41,7 +41,7 @@ START := $(addprefix $(obj),$(START))
 all:   $(obj).depend $(START) $(LIB)
 
 $(LIB):        $(OBJS)
-       $(AR) crv $@ $(OBJS) $(obj)kgdb.o
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(obj)kgdb.o
 
 #########################################################################
 
index cdab7b008ff4a82ef46e69713aee2a901928b7e8..ad1745608d311c6ad7a9568ad7baab6c3a1e7d63 100644 (file)
@@ -36,7 +36,7 @@ START := $(addprefix $(obj),$(START))
 all:   $(obj).depend $(START) $(LIB)
 
 $(LIB):        $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index f903129598f45c260cd75d45fc06424e86f70710..75f30b43a8b57ee1ae997d505d97de49f9ec93b8 100644 (file)
@@ -36,7 +36,7 @@ START := $(addprefix $(obj),$(START))
 all:   $(obj).depend $(START) $(LIB)
 
 $(LIB):        $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 5b1c17c351a529e0b9ec96dfba7751dcb44ee026..81d49ffdfeb92edca29d0ab4469112e586d8d6ef 100644 (file)
 #define BI_PHYMODE_GMII  3
 #define BI_PHYMODE_RTBI  4
 #define BI_PHYMODE_TBI   5
-#if defined (CONFIG_440EPX)
+#if defined(CONFIG_440EPX) || defined(CONFIG_440GRX)
 #define BI_PHYMODE_SMII  6
 #define BI_PHYMODE_MII   7
 #endif
index 16dc8d62c05c986dfe71af8cd44b27f12c76e0e7..baecf70352aca6bce11be1a2a0d1c292f4859c92 100644 (file)
@@ -41,7 +41,7 @@ START := $(addprefix $(obj),$(START))
 all:   $(obj).depend $(START) $(LIB)
 
 $(LIB):        $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index b27567fa4d14100e2ae07fe83ee3c394da06c29b..def46f15cac30e705d74ac2df51668f45fb34dba 100644 (file)
@@ -226,13 +226,19 @@ cpu_init_f (void)
        /*
         * GPIO0 setup (select GPIO or alternate function)
         */
-       out32(GPIO0_OSRH, CFG_GPIO0_OSRH);   /* output select */
+#if defined(CFG_GPIO0_OR)
+       out32(GPIO0_OR, CFG_GPIO0_OR);          /* set initial state of output pins     */
+#endif
+#if defined(CFG_GPIO0_ODR)
+       out32(GPIO0_ODR, CFG_GPIO0_ODR);        /* open-drain select                    */
+#endif
+       out32(GPIO0_OSRH, CFG_GPIO0_OSRH);      /* output select                        */
        out32(GPIO0_OSRL, CFG_GPIO0_OSRL);
-       out32(GPIO0_ISR1H, CFG_GPIO0_ISR1H); /* input select */
+       out32(GPIO0_ISR1H, CFG_GPIO0_ISR1H);    /* input select                         */
        out32(GPIO0_ISR1L, CFG_GPIO0_ISR1L);
-       out32(GPIO0_TSRH, CFG_GPIO0_TSRH);   /* three-state select */
+       out32(GPIO0_TSRH, CFG_GPIO0_TSRH);      /* three-state select                   */
        out32(GPIO0_TSRL, CFG_GPIO0_TSRL);
-       out32(GPIO0_TCR, CFG_GPIO0_TCR);     /* enable output driver for outputs */
+       out32(GPIO0_TCR, CFG_GPIO0_TCR);        /* enable output driver for outputs     */
 
        /*
         * Set EMAC noise filter bits
index c255f93e6bba1cdf6470f728856bbce189ee6592..183ab5ef168c94c7b34962e11ce0f1f2fd23fb85 100644 (file)
@@ -65,8 +65,8 @@ static void ndfc_hwcontrol(struct mtd_info *mtdinfo, int cmd)
 
 static void ndfc_write_byte(struct mtd_info *mtdinfo, u_char byte)
 {
-        struct nand_chip *this = mtdinfo->priv;
-        ulong base = (ulong) this->IO_ADDR_W;
+       struct nand_chip *this = mtdinfo->priv;
+       ulong base = (ulong) this->IO_ADDR_W;
 
        if (hwctl & 0x1)
                out8(base + NDFC_CMD, byte);
@@ -78,16 +78,16 @@ static void ndfc_write_byte(struct mtd_info *mtdinfo, u_char byte)
 
 static u_char ndfc_read_byte(struct mtd_info *mtdinfo)
 {
-        struct nand_chip *this = mtdinfo->priv;
-        ulong base = (ulong) this->IO_ADDR_W;
+       struct nand_chip *this = mtdinfo->priv;
+       ulong base = (ulong) this->IO_ADDR_W;
 
        return (in8(base + NDFC_DATA));
 }
 
 static int ndfc_dev_ready(struct mtd_info *mtdinfo)
 {
-        struct nand_chip *this = mtdinfo->priv;
-        ulong base = (ulong) this->IO_ADDR_W;
+       struct nand_chip *this = mtdinfo->priv;
+       ulong base = (ulong) this->IO_ADDR_W;
 
        while (!(in32(base + NDFC_STAT) & NDFC_STAT_IS_READY))
                ;
@@ -110,8 +110,8 @@ static int ndfc_dev_ready(struct mtd_info *mtdinfo)
  */
 static void ndfc_read_buf(struct mtd_info *mtdinfo, uint8_t *buf, int len)
 {
-        struct nand_chip *this = mtdinfo->priv;
-        ulong base = (ulong) this->IO_ADDR_W;
+       struct nand_chip *this = mtdinfo->priv;
+       ulong base = (ulong) this->IO_ADDR_W;
        uint32_t *p = (uint32_t *) buf;
 
        for(;len > 0; len -= 4)
@@ -120,8 +120,8 @@ static void ndfc_read_buf(struct mtd_info *mtdinfo, uint8_t *buf, int len)
 
 static void ndfc_write_buf(struct mtd_info *mtdinfo, const uint8_t *buf, int len)
 {
-        struct nand_chip *this = mtdinfo->priv;
-        ulong base = (ulong) this->IO_ADDR_W;
+       struct nand_chip *this = mtdinfo->priv;
+       ulong base = (ulong) this->IO_ADDR_W;
        uint32_t *p = (uint32_t *) buf;
 
        for(; len > 0; len -= 4)
@@ -130,8 +130,8 @@ static void ndfc_write_buf(struct mtd_info *mtdinfo, const uint8_t *buf, int len
 
 static int ndfc_verify_buf(struct mtd_info *mtdinfo, const uint8_t *buf, int len)
 {
-        struct nand_chip *this = mtdinfo->priv;
-        ulong base = (ulong) this->IO_ADDR_W;
+       struct nand_chip *this = mtdinfo->priv;
+       ulong base = (ulong) this->IO_ADDR_W;
        uint32_t *p = (uint32_t *) buf;
 
        for(; len > 0; len -= 4)
index 5a1ab386b1809ad98bd105a000d93c496dabddb2..3fe13daaf38d6be5b1f514273fedda65a4379d62 100644 (file)
 
 /**************************************************************************/
 _start_440:
-        /*--------------------------------------------------------------------+
-        | 440EPX BUP Change - Hardware team request
-        +--------------------------------------------------------------------*/
+       /*--------------------------------------------------------------------+
+       | 440EPX BUP Change - Hardware team request
+       +--------------------------------------------------------------------*/
 #if defined(CONFIG_440EPX) || defined(CONFIG_440GRX)
        sync
        nop
@@ -1697,7 +1697,8 @@ ppc405ep_init:
        mtdcr   ebccfgd,r3
 #endif
 
-       addi    r3,0,CPC0_PCI_HOST_CFG_EN
+#ifndef CFG_CPC0_PCI
+       li      r3,CPC0_PCI_HOST_CFG_EN
 #ifdef CONFIG_BUBINGA
        /*
        !-----------------------------------------------------------------------
@@ -1712,6 +1713,9 @@ ppc405ep_init:
        beq     ..pci_cfg_set             /* if not set, then bypass reg write*/
 #endif
        ori     r3,r3,CPC0_PCI_ARBIT_EN
+#else /* CFG_CPC0_PCI */
+       li      r3,CFG_CPC0_PCI
+#endif /* CFG_CPC0_PCI */
 ..pci_cfg_set:
        mtdcr   CPC0_PCI, r3             /* Enable internal arbiter*/
 
index 70e436aab235d538bb8e7696da4f97181b78707c..685d48bcf647f77e74f0937e577e017ca3c90c1f 100644 (file)
@@ -31,7 +31,7 @@
 #ifndef _VECNUMS_H_
 #define _VECNUMS_H_
 
-#if defined(CONFIG_440EPX) || defined(CONFIG_440_GRX)
+#if defined(CONFIG_440EPX) || defined(CONFIG_440GRX)
 
 /* UIC 0 */
 #define VECNUM_U0                   0  /* UART 0                        */
index a6f6b599aee9a903443f50bb836c6e682fb59e90..cded7ffd35d497d700af0b2a954024798860862f 100644 (file)
@@ -35,7 +35,7 @@ START := $(addprefix $(obj),$(START))
 all:   $(obj).depend $(START) $(LIB)
 
 $(LIB):        $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 62cb5141133043910a8e6e4dff493720ff9a0e5a..790faebd3977910c9ed2bf8f00ea7235ccb8e6ca 100644 (file)
@@ -35,7 +35,7 @@ START := $(addprefix $(obj),$(START))
 all:   $(obj).depend $(START) $(LIB)
 
 $(LIB):        $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 62cb5141133043910a8e6e4dff493720ff9a0e5a..790faebd3977910c9ed2bf8f00ea7235ccb8e6ca 100644 (file)
@@ -35,7 +35,7 @@ START := $(addprefix $(obj),$(START))
 all:   $(obj).depend $(START) $(LIB)
 
 $(LIB):        $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 3bdb018a06659384552aaccd3df9247de50ff837..1a929ce6deb3960f4650e81986423f671e869f23 100644 (file)
@@ -35,7 +35,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 all:   $(LIB)
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index f2d6a5b1e6599db8caaef92a0eb399a7eaba0652..2b9a52966c518cb5bb34d8d4b90e18ce4a3a9265 100644 (file)
@@ -207,3 +207,47 @@ As mentioned above, the legacy code is still used by the DoC subsystem.
 The consequence of this is that the legacy NAND can't be removed  from
 the tree until the DoC is ported to use the new NAND support (or boards
 with DoC will break).
+
+
+
+Additional improvements to the NAND subsystem by Guido Classen, 10-10-2006
+
+JFFS2 related commands:
+
+  implement "nand erase clean" and old "nand erase"
+  using both the new code which is able to skip bad blocks
+  "nand erase clean" additionally writes JFFS2-cleanmarkers in the oob.
+
+  "nand write.jffs2"
+  like "nand write" but skip found bad eraseblocks
+
+  "nand read.jffs2"
+  like "nand read" but skip found bad eraseblocks
+
+Miscellaneous and testing commands:
+  "markbad [offset]"
+  create an artificial bad block (for testing bad block handling)
+
+  "scrub [offset length]"
+  like "erase" but don't skip bad block. Instead erase them.
+  DANGEROUS!!! Factory set bad blocks will be lost. Use only
+  to remove artificial bad blocks created with the "markbad" command.
+
+
+NAND locking command (for chips with active LOCKPRE pin)
+
+  "nand lock"
+  set NAND chip to lock state (all pages locked)
+
+  "nand lock tight"
+  set NAND chip to lock tight state (software can't change locking anymore)
+
+  "nand lock status"
+  displays current locking status of all pages
+
+  "nand unlock [offset] [size]"
+  unlock consecutive area (can be called multiple times for different areas)
+
+
+I have tested the code with board containing 128MiB NAND large page chips
+and 32MiB small page chips.
index d0acf8e32f0e133f718335654f629d2b386724e5..5a7ab7105b7f3c27009a5244091fbb5617b26ead 100644 (file)
@@ -58,7 +58,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 all:   $(LIB)
 
 $(LIB): $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index d7076586121b3bec2612e5d8179f771fc8750386..fb0185b991b45c680a8fa9249905edc341ed2359 100644 (file)
@@ -25,7 +25,7 @@ include $(TOPDIR)/config.mk
 
 LIB    := $(obj)libnand.a
 
-COBJS  := nand.o nand_base.o nand_ids.o nand_ecc.o nand_bbt.o
+COBJS  := nand.o nand_base.o nand_ids.o nand_ecc.o nand_bbt.o nand_util.o
 
 SRCS   := $(COBJS:.o=.c)
 OBJS   := $(addprefix $(obj),$(COBJS))
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 all:   $(LIB)
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
diff --git a/drivers/nand/nand_util.c b/drivers/nand/nand_util.c
new file mode 100644 (file)
index 0000000..7570210
--- /dev/null
@@ -0,0 +1,869 @@
+/*
+ * drivers/nand/nand_util.c
+ *
+ * Copyright (C) 2006 by Weiss-Electronic GmbH.
+ * All rights reserved.
+ *
+ * @author:    Guido Classen <clagix@gmail.com>
+ * @descr:     NAND Flash support
+ * @references: borrowed heavily from Linux mtd-utils code:
+ *             flash_eraseall.c by Arcom Control System Ltd
+ *             nandwrite.c by Steven J. Hill (sjhill@realitydiluted.com)
+ *                            and Thomas Gleixner (tglx@linutronix.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 version
+ * 2 as published by the Free Software Foundation.
+ *
+ * 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>
+
+#if (CONFIG_COMMANDS & CFG_CMD_NAND) && !defined(CFG_NAND_LEGACY)
+
+#include <command.h>
+#include <watchdog.h>
+#include <malloc.h>
+
+#include <nand.h>
+#include <jffs2/jffs2.h>
+
+typedef struct erase_info erase_info_t;
+typedef struct mtd_info          mtd_info_t;
+
+/* support only for native endian JFFS2 */
+#define cpu_to_je16(x) (x)
+#define cpu_to_je32(x) (x)
+
+/*****************************************************************************/
+static int nand_block_bad_scrub(struct mtd_info *mtd, loff_t ofs, int getchip)
+{
+       return 0;
+}
+
+/**
+ * nand_erase_opts: - erase NAND flash with support for various options
+ *                   (jffs2 formating)
+ *
+ * @param meminfo      NAND device to erase
+ * @param opts         options,  @see struct nand_erase_options
+ * @return             0 in case of success
+ *
+ * This code is ported from flash_eraseall.c from Linux mtd utils by
+ * Arcom Control System Ltd.
+ */
+int nand_erase_opts(nand_info_t *meminfo, const nand_erase_options_t *opts)
+{
+       struct jffs2_unknown_node cleanmarker;
+       int clmpos = 0;
+       int clmlen = 8;
+       erase_info_t erase;
+       ulong erase_length;
+       int isNAND;
+       int bbtest = 1;
+       int result;
+       int percent_complete = -1;
+       int (*nand_block_bad_old)(struct mtd_info *, loff_t, int) = NULL;
+       const char *mtd_device = meminfo->name;
+
+       memset(&erase, 0, sizeof(erase));
+
+       erase.mtd = meminfo;
+       erase.len  = meminfo->erasesize;
+       if (opts->offset == 0 && opts->length == 0) {
+               /* erase complete chip */
+               erase.addr = 0;
+               erase_length = meminfo->size;
+       } else {
+               /* erase specified region */
+               erase.addr = opts->offset;
+               erase_length = opts->length;
+       }
+
+       isNAND = meminfo->type == MTD_NANDFLASH ? 1 : 0;
+
+       if (opts->jffs2) {
+               cleanmarker.magic = cpu_to_je16 (JFFS2_MAGIC_BITMASK);
+               cleanmarker.nodetype = cpu_to_je16 (JFFS2_NODETYPE_CLEANMARKER);
+               if (isNAND) {
+                       struct nand_oobinfo *oobinfo = &meminfo->oobinfo;
+
+                       /* check for autoplacement */
+                       if (oobinfo->useecc == MTD_NANDECC_AUTOPLACE) {
+                               /* get the position of the free bytes */
+                               if (!oobinfo->oobfree[0][1]) {
+                                       printf(" Eeep. Autoplacement selected "
+                                              "and no empty space in oob\n");
+                                       return -1;
+                               }
+                               clmpos = oobinfo->oobfree[0][0];
+                               clmlen = oobinfo->oobfree[0][1];
+                               if (clmlen > 8)
+                                       clmlen = 8;
+                       } else {
+                               /* legacy mode */
+                               switch (meminfo->oobsize) {
+                               case 8:
+                                       clmpos = 6;
+                                       clmlen = 2;
+                                       break;
+                               case 16:
+                                       clmpos = 8;
+                                       clmlen = 8;
+                                       break;
+                               case 64:
+                                       clmpos = 16;
+                                       clmlen = 8;
+                                       break;
+                               }
+                       }
+
+                       cleanmarker.totlen = cpu_to_je32(8);
+               } else {
+                       cleanmarker.totlen =
+                               cpu_to_je32(sizeof(struct jffs2_unknown_node));
+               }
+               cleanmarker.hdr_crc =  cpu_to_je32(
+                       crc32_no_comp(0, (unsigned char *) &cleanmarker,
+                                     sizeof(struct jffs2_unknown_node) - 4));
+       }
+
+       /* scrub option allows to erase badblock. To prevent internal
+        * check from erase() method, set block check method to dummy
+        * and disable bad block table while erasing.
+        */
+       if (opts->scrub) {
+               struct nand_chip *priv_nand = meminfo->priv;
+
+               nand_block_bad_old = priv_nand->block_bad;
+               priv_nand->block_bad = nand_block_bad_scrub;
+               /* we don't need the bad block table anymore...
+                * after scrub, there are no bad blocks left!
+                */
+               if (priv_nand->bbt) {
+                       kfree(priv_nand->bbt);
+               }
+               priv_nand->bbt = NULL;
+       }
+
+       for (;
+            erase.addr < opts->offset + erase_length;
+            erase.addr += meminfo->erasesize) {
+
+               WATCHDOG_RESET ();
+
+               if (!opts->scrub && bbtest) {
+                       int ret = meminfo->block_isbad(meminfo, erase.addr);
+                       if (ret > 0) {
+                               if (!opts->quiet)
+                                       printf("\rSkipping bad block at  "
+                                              "0x%08x                   "
+                                              "                         \n",
+                                              erase.addr);
+                               continue;
+
+                       } else if (ret < 0) {
+                               printf("\n%s: MTD get bad block failed: %d\n",
+                                      mtd_device,
+                                      ret);
+                               return -1;
+                       }
+               }
+
+               result = meminfo->erase(meminfo, &erase);
+               if (result != 0) {
+                       printf("\n%s: MTD Erase failure: %d\n",
+                              mtd_device, result);
+                       continue;
+               }
+
+               /* format for JFFS2 ? */
+               if (opts->jffs2) {
+
+                       /* write cleanmarker */
+                       if (isNAND) {
+                               size_t written;
+                               result = meminfo->write_oob(meminfo,
+                                                           erase.addr + clmpos,
+                                                           clmlen,
+                                                           &written,
+                                                           (unsigned char *)
+                                                           &cleanmarker);
+                               if (result != 0) {
+                                       printf("\n%s: MTD writeoob failure: %d\n",
+                                              mtd_device, result);
+                                       continue;
+                               }
+                       } else {
+                               printf("\n%s: this erase routine only supports"
+                                      " NAND devices!\n",
+                                      mtd_device);
+                       }
+               }
+
+               if (!opts->quiet) {
+                       int percent = (int)
+                               ((unsigned long long)
+                                (erase.addr+meminfo->erasesize-opts->offset)
+                                * 100 / erase_length);
+
+                       /* output progress message only at whole percent
+                        * steps to reduce the number of messages printed
+                        * on (slow) serial consoles
+                        */
+                       if (percent != percent_complete) {
+                               percent_complete = percent;
+
+                               printf("\rErasing at 0x%x -- %3d%% complete.",
+                                      erase.addr, percent);
+
+                               if (opts->jffs2 && result == 0)
+                                       printf(" Cleanmarker written at 0x%x.",
+                                              erase.addr);
+                       }
+               }
+       }
+       if (!opts->quiet)
+               printf("\n");
+
+       if (nand_block_bad_old) {
+               struct nand_chip *priv_nand = meminfo->priv;
+
+               priv_nand->block_bad = nand_block_bad_old;
+               priv_nand->scan_bbt(meminfo);
+       }
+
+       return 0;
+}
+
+#define MAX_PAGE_SIZE  2048
+#define MAX_OOB_SIZE   64
+
+/*
+ * buffer array used for writing data
+ */
+static unsigned char data_buf[MAX_PAGE_SIZE];
+static unsigned char oob_buf[MAX_OOB_SIZE];
+
+/* OOB layouts to pass into the kernel as default */
+static struct nand_oobinfo none_oobinfo = {
+       .useecc = MTD_NANDECC_OFF,
+};
+
+static struct nand_oobinfo jffs2_oobinfo = {
+       .useecc = MTD_NANDECC_PLACE,
+       .eccbytes = 6,
+       .eccpos = { 0, 1, 2, 3, 6, 7 }
+};
+
+static struct nand_oobinfo yaffs_oobinfo = {
+       .useecc = MTD_NANDECC_PLACE,
+       .eccbytes = 6,
+       .eccpos = { 8, 9, 10, 13, 14, 15}
+};
+
+static struct nand_oobinfo autoplace_oobinfo = {
+       .useecc = MTD_NANDECC_AUTOPLACE
+};
+
+/**
+ * nand_write_opts: - write image to NAND flash with support for various options
+ *
+ * @param meminfo      NAND device to erase
+ * @param opts         write options (@see nand_write_options)
+ * @return             0 in case of success
+ *
+ * This code is ported from nandwrite.c from Linux mtd utils by
+ * Steven J. Hill and Thomas Gleixner.
+ */
+int nand_write_opts(nand_info_t *meminfo, const nand_write_options_t *opts)
+{
+       int imglen = 0;
+       int pagelen;
+       int baderaseblock;
+       int blockstart = -1;
+       loff_t offs;
+       int readlen;
+       int oobinfochanged = 0;
+       int percent_complete = -1;
+       struct nand_oobinfo old_oobinfo;
+       ulong mtdoffset = opts->offset;
+       ulong erasesize_blockalign;
+       u_char *buffer = opts->buffer;
+       size_t written;
+       int result;
+
+       if (opts->pad && opts->writeoob) {
+               printf("Can't pad when oob data is present.\n");
+               return -1;
+       }
+
+       /* set erasesize to specified number of blocks - to match
+        * jffs2 (virtual) block size */
+       if (opts->blockalign == 0) {
+               erasesize_blockalign = meminfo->erasesize;
+       } else {
+               erasesize_blockalign = meminfo->erasesize * opts->blockalign;
+       }
+
+       /* make sure device page sizes are valid */
+       if (!(meminfo->oobsize == 16 && meminfo->oobblock == 512)
+           && !(meminfo->oobsize == 8 && meminfo->oobblock == 256)
+           && !(meminfo->oobsize == 64 && meminfo->oobblock == 2048)) {
+               printf("Unknown flash (not normal NAND)\n");
+               return -1;
+       }
+
+       /* read the current oob info */
+       memcpy(&old_oobinfo, &meminfo->oobinfo, sizeof(old_oobinfo));
+
+       /* write without ecc? */
+       if (opts->noecc) {
+               memcpy(&meminfo->oobinfo, &none_oobinfo,
+                      sizeof(meminfo->oobinfo));
+               oobinfochanged = 1;
+       }
+
+       /* autoplace ECC? */
+       if (opts->autoplace && (old_oobinfo.useecc != MTD_NANDECC_AUTOPLACE)) {
+
+               memcpy(&meminfo->oobinfo, &autoplace_oobinfo,
+                      sizeof(meminfo->oobinfo));
+               oobinfochanged = 1;
+       }
+
+       /* force OOB layout for jffs2 or yaffs? */
+       if (opts->forcejffs2 || opts->forceyaffs) {
+               struct nand_oobinfo *oobsel =
+                       opts->forcejffs2 ? &jffs2_oobinfo : &yaffs_oobinfo;
+
+               if (meminfo->oobsize == 8) {
+                       if (opts->forceyaffs) {
+                               printf("YAFSS cannot operate on "
+                                      "256 Byte page size\n");
+                               goto restoreoob;
+                       }
+                       /* Adjust number of ecc bytes */
+                       jffs2_oobinfo.eccbytes = 3;
+               }
+
+               memcpy(&meminfo->oobinfo, oobsel, sizeof(meminfo->oobinfo));
+       }
+
+       /* get image length */
+       imglen = opts->length;
+       pagelen = meminfo->oobblock
+               + ((opts->writeoob != 0) ? meminfo->oobsize : 0);
+
+       /* check, if file is pagealigned */
+       if ((!opts->pad) && ((imglen % pagelen) != 0)) {
+               printf("Input block length is not page aligned\n");
+               goto restoreoob;
+       }
+
+       /* check, if length fits into device */
+       if (((imglen / pagelen) * meminfo->oobblock)
+            > (meminfo->size - opts->offset)) {
+               printf("Image %d bytes, NAND page %d bytes, "
+                      "OOB area %u bytes, device size %u bytes\n",
+                      imglen, pagelen, meminfo->oobblock, meminfo->size);
+               printf("Input block does not fit into device\n");
+               goto restoreoob;
+       }
+
+       if (!opts->quiet)
+               printf("\n");
+
+       /* get data from input and write to the device */
+       while (imglen && (mtdoffset < meminfo->size)) {
+
+               WATCHDOG_RESET ();
+
+               /*
+                * new eraseblock, check for bad block(s). Stay in the
+                * loop to be sure if the offset changes because of
+                * a bad block, that the next block that will be
+                * written to is also checked. Thus avoiding errors if
+                * the block(s) after the skipped block(s) is also bad
+                * (number of blocks depending on the blockalign
+                */
+               while (blockstart != (mtdoffset & (~erasesize_blockalign+1))) {
+                       blockstart = mtdoffset & (~erasesize_blockalign+1);
+                       offs = blockstart;
+                       baderaseblock = 0;
+
+                       /* check all the blocks in an erase block for
+                        * bad blocks */
+                       do {
+                               int ret = meminfo->block_isbad(meminfo, offs);
+
+                               if (ret < 0) {
+                                       printf("Bad block check failed\n");
+                                       goto restoreoob;
+                               }
+                               if (ret == 1) {
+                                       baderaseblock = 1;
+                                       if (!opts->quiet)
+                                               printf("\rBad block at 0x%lx "
+                                                      "in erase block from "
+                                                      "0x%x will be skipped\n",
+                                                      (long) offs,
+                                                      blockstart);
+                               }
+
+                               if (baderaseblock) {
+                                       mtdoffset = blockstart
+                                               + erasesize_blockalign;
+                               }
+                               offs +=  erasesize_blockalign
+                                       / opts->blockalign;
+                       } while (offs < blockstart + erasesize_blockalign);
+               }
+
+               readlen = meminfo->oobblock;
+               if (opts->pad && (imglen < readlen)) {
+                       readlen = imglen;
+                       memset(data_buf + readlen, 0xff,
+                              meminfo->oobblock - readlen);
+               }
+
+               /* read page data from input memory buffer */
+               memcpy(data_buf, buffer, readlen);
+               buffer += readlen;
+
+               if (opts->writeoob) {
+                       /* read OOB data from input memory block, exit
+                        * on failure */
+                       memcpy(oob_buf, buffer, meminfo->oobsize);
+                       buffer += meminfo->oobsize;
+
+                       /* write OOB data first, as ecc will be placed
+                        * in there*/
+                       result = meminfo->write_oob(meminfo,
+                                                   mtdoffset,
+                                                   meminfo->oobsize,
+                                                   &written,
+                                                   (unsigned char *)
+                                                   &oob_buf);
+
+                       if (result != 0) {
+                               printf("\nMTD writeoob failure: %d\n",
+                                      result);
+                               goto restoreoob;
+                       }
+                       imglen -= meminfo->oobsize;
+               }
+
+               /* write out the page data */
+               result = meminfo->write(meminfo,
+                                       mtdoffset,
+                                       meminfo->oobblock,
+                                       &written,
+                                       (unsigned char *) &data_buf);
+
+               if (result != 0) {
+                       printf("writing NAND page at offset 0x%lx failed\n",
+                              mtdoffset);
+                       goto restoreoob;
+               }
+               imglen -= readlen;
+
+               if (!opts->quiet) {
+                       int percent = (int)
+                               ((unsigned long long)
+                                (opts->length-imglen) * 100
+                                / opts->length);
+                       /* output progress message only at whole percent
+                        * steps to reduce the number of messages printed
+                        * on (slow) serial consoles
+                        */
+                       if (percent != percent_complete) {
+                               printf("\rWriting data at 0x%x "
+                                      "-- %3d%% complete.",
+                                      mtdoffset, percent);
+                               percent_complete = percent;
+                       }
+               }
+
+               mtdoffset += meminfo->oobblock;
+       }
+
+       if (!opts->quiet)
+               printf("\n");
+
+restoreoob:
+       if (oobinfochanged) {
+               memcpy(&meminfo->oobinfo, &old_oobinfo,
+                      sizeof(meminfo->oobinfo));
+       }
+
+       if (imglen > 0) {
+               printf("Data did not fit into device, due to bad blocks\n");
+               return -1;
+       }
+
+       /* return happy */
+       return 0;
+}
+
+/**
+ * nand_read_opts: - read image from NAND flash with support for various options
+ *
+ * @param meminfo      NAND device to erase
+ * @param opts         read options (@see struct nand_read_options)
+ * @return             0 in case of success
+ *
+ */
+int nand_read_opts(nand_info_t *meminfo, const nand_read_options_t *opts)
+{
+       int imglen = opts->length;
+       int pagelen;
+       int baderaseblock;
+       int blockstart = -1;
+       int percent_complete = -1;
+       loff_t offs;
+       size_t readlen;
+       ulong mtdoffset = opts->offset;
+       u_char *buffer = opts->buffer;
+       int result;
+
+       /* make sure device page sizes are valid */
+       if (!(meminfo->oobsize == 16 && meminfo->oobblock == 512)
+           && !(meminfo->oobsize == 8 && meminfo->oobblock == 256)
+           && !(meminfo->oobsize == 64 && meminfo->oobblock == 2048)) {
+               printf("Unknown flash (not normal NAND)\n");
+               return -1;
+       }
+
+       pagelen = meminfo->oobblock
+               + ((opts->readoob != 0) ? meminfo->oobsize : 0);
+
+       /* check, if length is not larger than device */
+       if (((imglen / pagelen) * meminfo->oobblock)
+            > (meminfo->size - opts->offset)) {
+               printf("Image %d bytes, NAND page %d bytes, "
+                      "OOB area %u bytes, device size %u bytes\n",
+                      imglen, pagelen, meminfo->oobblock, meminfo->size);
+               printf("Input block is larger than device\n");
+               return -1;
+       }
+
+       if (!opts->quiet)
+               printf("\n");
+
+       /* get data from input and write to the device */
+       while (imglen && (mtdoffset < meminfo->size)) {
+
+               WATCHDOG_RESET ();
+
+               /*
+                * new eraseblock, check for bad block(s). Stay in the
+                * loop to be sure if the offset changes because of
+                * a bad block, that the next block that will be
+                * written to is also checked. Thus avoiding errors if
+                * the block(s) after the skipped block(s) is also bad
+                * (number of blocks depending on the blockalign
+                */
+               while (blockstart != (mtdoffset & (~meminfo->erasesize+1))) {
+                       blockstart = mtdoffset & (~meminfo->erasesize+1);
+                       offs = blockstart;
+                       baderaseblock = 0;
+
+                       /* check all the blocks in an erase block for
+                        * bad blocks */
+                       do {
+                               int ret = meminfo->block_isbad(meminfo, offs);
+
+                               if (ret < 0) {
+                                       printf("Bad block check failed\n");
+                                       return -1;
+                               }
+                               if (ret == 1) {
+                                       baderaseblock = 1;
+                                       if (!opts->quiet)
+                                               printf("\rBad block at 0x%lx "
+                                                      "in erase block from "
+                                                      "0x%x will be skipped\n",
+                                                      (long) offs,
+                                                      blockstart);
+                               }
+
+                               if (baderaseblock) {
+                                       mtdoffset = blockstart
+                                               + meminfo->erasesize;
+                               }
+                               offs +=  meminfo->erasesize;
+
+                       } while (offs < blockstart + meminfo->erasesize);
+               }
+
+
+               /* read page data to memory buffer */
+               result = meminfo->read(meminfo,
+                                      mtdoffset,
+                                      meminfo->oobblock,
+                                      &readlen,
+                                      (unsigned char *) &data_buf);
+
+               if (result != 0) {
+                       printf("reading NAND page at offset 0x%lx failed\n",
+                              mtdoffset);
+                       return -1;
+               }
+
+               if (imglen < readlen) {
+                       readlen = imglen;
+               }
+
+               memcpy(buffer, data_buf, readlen);
+               buffer += readlen;
+               imglen -= readlen;
+
+               if (opts->readoob) {
+                       result = meminfo->read_oob(meminfo,
+                                                  mtdoffset,
+                                                  meminfo->oobsize,
+                                                  &readlen,
+                                                  (unsigned char *)
+                                                  &oob_buf);
+
+                       if (result != 0) {
+                               printf("\nMTD readoob failure: %d\n",
+                                      result);
+                               return -1;
+                       }
+
+
+                       if (imglen < readlen) {
+                               readlen = imglen;
+                       }
+
+                       memcpy(buffer, oob_buf, readlen);
+
+                       buffer += readlen;
+                       imglen -= readlen;
+               }
+
+               if (!opts->quiet) {
+                       int percent = (int)
+                               ((unsigned long long)
+                                (opts->length-imglen) * 100
+                                / opts->length);
+                       /* output progress message only at whole percent
+                        * steps to reduce the number of messages printed
+                        * on (slow) serial consoles
+                        */
+                       if (percent != percent_complete) {
+                       if (!opts->quiet)
+                               printf("\rReading data from 0x%x "
+                                      "-- %3d%% complete.",
+                                      mtdoffset, percent);
+                               percent_complete = percent;
+                       }
+               }
+
+               mtdoffset += meminfo->oobblock;
+       }
+
+       if (!opts->quiet)
+               printf("\n");
+
+       if (imglen > 0) {
+               printf("Could not read entire image due to bad blocks\n");
+               return -1;
+       }
+
+       /* return happy */
+       return 0;
+}
+
+/******************************************************************************
+ * Support for locking / unlocking operations of some NAND devices
+ *****************************************************************************/
+
+#define NAND_CMD_LOCK          0x2a
+#define NAND_CMD_LOCK_TIGHT    0x2c
+#define NAND_CMD_UNLOCK1       0x23
+#define NAND_CMD_UNLOCK2       0x24
+#define NAND_CMD_LOCK_STATUS   0x7a
+
+/**
+ * nand_lock: Set all pages of NAND flash chip to the LOCK or LOCK-TIGHT
+ *           state
+ *
+ * @param meminfo      nand mtd instance
+ * @param tight                bring device in lock tight mode
+ *
+ * @return             0 on success, -1 in case of error
+ *
+ * The lock / lock-tight command only applies to the whole chip. To get some
+ * parts of the chip lock and others unlocked use the following sequence:
+ *
+ * - Lock all pages of the chip using nand_lock(mtd, 0) (or the lockpre pin)
+ * - Call nand_unlock() once for each consecutive area to be unlocked
+ * - If desired: Bring the chip to the lock-tight state using nand_lock(mtd, 1)
+ *
+ *   If the device is in lock-tight state software can't change the
+ *   current active lock/unlock state of all pages. nand_lock() / nand_unlock()
+ *   calls will fail. It is only posible to leave lock-tight state by
+ *   an hardware signal (low pulse on _WP pin) or by power down.
+ */
+int nand_lock(nand_info_t *meminfo, int tight)
+{
+       int ret = 0;
+       int status;
+       struct nand_chip *this = meminfo->priv;
+
+       /* select the NAND device */
+       this->select_chip(meminfo, 0);
+
+       this->cmdfunc(meminfo,
+                     (tight ? NAND_CMD_LOCK_TIGHT : NAND_CMD_LOCK),
+                     -1, -1);
+
+       /* call wait ready function */
+       status = this->waitfunc(meminfo, this, FL_WRITING);
+
+       /* see if device thinks it succeeded */
+       if (status & 0x01) {
+               ret = -1;
+       }
+
+       /* de-select the NAND device */
+       this->select_chip(meminfo, -1);
+       return ret;
+}
+
+/**
+ * nand_get_lock_status: - query current lock state from one page of NAND
+ *                        flash
+ *
+ * @param meminfo      nand mtd instance
+ * @param offset       page address to query (muss be page aligned!)
+ *
+ * @return             -1 in case of error
+ *                     >0 lock status:
+ *                       bitfield with the following combinations:
+ *                       NAND_LOCK_STATUS_TIGHT: page in tight state
+ *                       NAND_LOCK_STATUS_LOCK:  page locked
+ *                       NAND_LOCK_STATUS_UNLOCK: page unlocked
+ *
+ */
+int nand_get_lock_status(nand_info_t *meminfo, ulong offset)
+{
+       int ret = 0;
+       int chipnr;
+       int page;
+       struct nand_chip *this = meminfo->priv;
+
+       /* select the NAND device */
+       chipnr = (int)(offset >> this->chip_shift);
+       this->select_chip(meminfo, chipnr);
+
+
+       if ((offset & (meminfo->oobblock - 1)) != 0) {
+               printf ("nand_get_lock_status: "
+                       "Start address must be beginning of "
+                       "nand page!\n");
+               ret = -1;
+               goto out;
+       }
+
+       /* check the Lock Status */
+       page = (int)(offset >> this->page_shift);
+       this->cmdfunc(meminfo, NAND_CMD_LOCK_STATUS, -1, page & this->pagemask);
+
+       ret = this->read_byte(meminfo) & (NAND_LOCK_STATUS_TIGHT
+                                         | NAND_LOCK_STATUS_LOCK
+                                         | NAND_LOCK_STATUS_UNLOCK);
+
+ out:
+       /* de-select the NAND device */
+       this->select_chip(meminfo, -1);
+       return ret;
+}
+
+/**
+ * nand_unlock: - Unlock area of NAND pages
+ *               only one consecutive area can be unlocked at one time!
+ *
+ * @param meminfo      nand mtd instance
+ * @param start                start byte address
+ * @param length       number of bytes to unlock (must be a multiple of
+ *                     page size nand->oobblock)
+ *
+ * @return             0 on success, -1 in case of error
+ */
+int nand_unlock(nand_info_t *meminfo, ulong start, ulong length)
+{
+       int ret = 0;
+       int chipnr;
+       int status;
+       int page;
+       struct nand_chip *this = meminfo->priv;
+       printf ("nand_unlock: start: %08x, length: %d!\n",
+               (int)start, (int)length);
+
+       /* select the NAND device */
+       chipnr = (int)(start >> this->chip_shift);
+       this->select_chip(meminfo, chipnr);
+
+       /* check the WP bit */
+       this->cmdfunc(meminfo, NAND_CMD_STATUS, -1, -1);
+       if ((this->read_byte(meminfo) & 0x80) == 0) {
+               printf ("nand_unlock: Device is write protected!\n");
+               ret = -1;
+               goto out;
+       }
+
+       if ((start & (meminfo->oobblock - 1)) != 0) {
+               printf ("nand_unlock: Start address must be beginning of "
+                       "nand page!\n");
+               ret = -1;
+               goto out;
+       }
+
+       if (length == 0 || (length & (meminfo->oobblock - 1)) != 0) {
+               printf ("nand_unlock: Length must be a multiple of nand page "
+                       "size!\n");
+               ret = -1;
+               goto out;
+       }
+
+       /* submit address of first page to unlock */
+       page = (int)(start >> this->page_shift);
+       this->cmdfunc(meminfo, NAND_CMD_UNLOCK1, -1, page & this->pagemask);
+
+       /* submit ADDRESS of LAST page to unlock */
+       page += (int)(length >> this->page_shift) - 1;
+       this->cmdfunc(meminfo, NAND_CMD_UNLOCK2, -1, page & this->pagemask);
+
+       /* call wait ready function */
+       status = this->waitfunc(meminfo, this, FL_WRITING);
+       /* see if device thinks it succeeded */
+       if (status & 0x01) {
+               /* there was an error */
+               ret = -1;
+               goto out;
+       }
+
+ out:
+       /* de-select the NAND device */
+       this->select_chip(meminfo, -1);
+       return ret;
+}
+
+#endif /* (CONFIG_COMMANDS & CFG_CMD_NAND) && !defined(CFG_NAND_LEGACY) */
index 23df5b752bf3a79480fcc15dda418f4b0a84fb42..95314d80bab99057aa85752dcaa86164d7fa26db 100644 (file)
@@ -33,7 +33,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 all:   $(LIB)
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 8d1ae96bf8555d07a2b302e14a0677a97a1973e3..76425d87901ff13930b02183e9347349e0aa8c0e 100644 (file)
@@ -39,7 +39,7 @@ DECLARE_GLOBAL_DATA_PTR;
 #if !defined(CONFIG_CONS_INDEX)
 #if defined (CONFIG_SERIAL_MULTI)
 /*   with CONFIG_SERIAL_MULTI we might have no console
- *  on these devices 
+ *  on these devices
  */
 #else
 #error "No console index specified."
@@ -238,7 +238,7 @@ serial_putc(const char c)
 #endif
 
 #if defined(CONFIG_SERIAL_MULTI)
-static inline void 
+static inline void
 serial_putc_raw_dev(unsigned int dev_index,const char c)
 {
        _serial_putc_raw(c,dev_index);
@@ -310,7 +310,7 @@ serial_setbrg(void)
 #if defined(CONFIG_SERIAL_MULTI)
 
 DECLARE_ESERIAL_FUNCTIONS(1);
-struct serial_device eserial1_device = 
+struct serial_device eserial1_device =
        INIT_ESERIAL_STRUCTURE(1,"eserial0","EUART1");
 DECLARE_ESERIAL_FUNCTIONS(2);
 struct serial_device eserial2_device =
index ac21e02133f3056b128b17c900a48d0927f42e26..7e50b1df9886dca8c414ffef2e859365f302e03a 100644 (file)
@@ -94,7 +94,7 @@ HOST_CFLAGS += $(EXTRA_CFLAGS)
 all:   $(LIB)
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
@@ -104,4 +104,3 @@ include $(SRCTREE)/rules.mk
 sinclude $(obj).depend
 
 #########################################################################
-
index 486008a1c317d4e0ac14af4480962584ac3ef818..79d4e9f96f8f822fe3e1a595dbbd8834ac46a68b 100644 (file)
@@ -38,7 +38,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 all:   $(LIB)
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index d7cd843a470a9c5ef13944d123937ebabfef9f52..8706ed45faca3e4f52db557f66d15368a8cef54d 100644 (file)
@@ -138,7 +138,7 @@ all:        $(obj).depend $(OBJS) $(LIB) $(SREC) $(BIN)
 
 #########################################################################
 $(LIB):        $(obj).depend $(LIBOBJS)
-               $(AR) crv $@ $(LIBOBJS)
+               $(AR) $(ARFLAGS) $@ $(LIBOBJS)
 
 $(obj)%:       $(obj)%.o $(LIB)
                $(LD) -g $(EX_LDFLAGS) -Ttext $(LOAD_ADDR) \
index 1a6f4b7d00df6e3f07b9f23cfff8dafc716c2566..13c043fcde90d5fc27c9cad722ed1a0bd892fbf9 100644 (file)
@@ -36,7 +36,7 @@ OBJS  := $(addprefix $(obj),$(AOBJS) $(COBJS))
 all:   $(LIB) $(AOBJS)
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 
 #########################################################################
index 2e420d536b2b3336d4558a48dbd9d2c052fda0b4..8313cdc17c2d7d9b8418038d375b2c0e5e678b73 100644 (file)
@@ -40,7 +40,7 @@ OBJS  := $(addprefix $(obj),$(AOBJS) $(COBJS))
 all:   $(LIB) $(AOBJS)
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 2fa428c4dc18dd4ef3f017c29271f0f2085e9477..87af73b7ebbb36d0b3434ae6dd764c68cdf3bd86 100644 (file)
@@ -32,7 +32,7 @@ OBJS  := $(addprefix $(obj),$(AOBJS) $(COBJS))
 all:   $(LIB) $(AOBJS)
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 
 #########################################################################
index e55ac8abbdd9d3d73072d6619259137ff947705a..2dba0fb690d39c914ad89eef781706d753f1cf01 100644 (file)
@@ -41,7 +41,7 @@ OBJS  := $(addprefix $(obj),$(AOBJS) $(COBJS))
 all:   $(LIB) $(AOBJS)
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 
 #########################################################################
index 82436bbfec910ebbe002484f9f45d0853d362aaa..c1357d0aa5caa40347dbd1d9a653c4c9646412ca 100644 (file)
@@ -37,7 +37,7 @@ OBJS  := $(addprefix $(obj),$(AOBJS) $(COBJS))
 all:   $(LIB) $(AOBJS)
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 
 #########################################################################
index 45028cb15e58cba372a96f1ae3dd4d39cb4a3be1..e8711a411a294cac8a64c3ab6a1ae5303dcf6d23 100644 (file)
@@ -40,7 +40,7 @@ OBJS  := $(addprefix $(obj),$(AOBJS) $(COBJS))
 all:   $(LIB) $(AOBJS)
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index e296e684a0dc1f66f02b2bc9bb3449c59220930d..af1251c6ee218bcffdce5ece9441eee8b6d5b803 100644 (file)
@@ -110,7 +110,7 @@ typedef volatile unsigned char      vu_char;
 #endif /* DEBUG */
 
 #define BUG() do { \
-        printf("BUG: failure at %s:%d/%s()!\n", __FILE__, __LINE__, __FUNCTION__); \
+       printf("BUG: failure at %s:%d/%s()!\n", __FILE__, __LINE__, __FUNCTION__); \
        panic("BUG!"); \
 } while (0)
 #define BUG_ON(condition) do { if (unlikely((condition)!=0)) BUG(); } while(0)
index e0de5c1b3675ec9cd333e0a2a76aa3565260ade1..897d1b262b238d96e6ce553141545647ee24b977 100644 (file)
  */
 #define CFG_IPBSPEED_133               /* define for 133MHz speed */
 
-#if defined(CFG_IPBSPEED_133)
+#if defined(CFG_IPBSPEED_133) && !defined(CONFIG_CAM5200)
 /*
  * PCI Bus clocking configuration
  *
  */
 #define CFG_FLASH_BASE         0xFC000000
 
+#ifndef CONFIG_CAM5200
 /* use CFI flash driver */
 #define CFG_FLASH_CFI          1       /* Flash is CFI conformant */
 #define CFG_FLASH_CFI_DRIVER   1       /* Use the common driver */
 #define CFG_FLASH_BANKS_LIST   { CFG_BOOTCS_START }
+#define CFG_MAX_FLASH_BANKS    1       /* max num of flash banks
+                                          (= chip selects) */
+#define CFG_MAX_FLASH_SECT     512     /* max num of sects on one chip */
+#else /* CONFIG_CAM5200 */
+#define CFG_MAX_FLASH_BANKS    2       /* max num of flash banks
+                                          (= chip selects) */
+#define CFG_FLASH_WORD_SIZE    unsigned int /* main flash device with */
+#define CFG_FLASH_ERASE_TOUT   120000  /* Timeout for Flash Erase (in ms) */
+#define CFG_FLASH_WRITE_TOUT   500     /* Timeout for Flash Write (in ms) */
+
+#define CFG_FLASH_ADDR0                0x555
+#define CFG_FLASH_ADDR1                0x2AA
+#define CFG_FLASH_2ND_16BIT_DEV        1       /* NIOS flash is a 16bit device */
+#define CFG_MAX_FLASH_SECT     128
+#endif /* ifndef CONFIG_CAM5200 */
+
 #define CFG_FLASH_EMPTY_INFO
 #define CFG_FLASH_SIZE         0x04000000 /* 64 MByte */
-#define CFG_MAX_FLASH_SECT     512     /* max num of sects on one chip */
 #define CFG_FLASH_USE_BUFFER_WRITE     1
 
 #if defined (CONFIG_CAM5200)
 # define CFG_ENV_ADDR          (CFG_FLASH_BASE + 0x00060000)
 #endif
 
-#define CFG_MAX_FLASH_BANKS    1       /* max num of flash banks
-                                          (= chip selects) */
-
 /* Dynamic MTD partition support */
 #define CONFIG_JFFS2_CMDLINE
 #define MTDIDS_DEFAULT         "nor0=TQM5200-0"
 #elif defined (CONFIG_CAM5200)
 #   define MTDPARTS_DEFAULT    "mtdparts=TQM5200-0:768k(firmware),"    \
                                                "1792k(kernel),"        \
-                                               "3584k(small-fs),"      \
-                                               "2m(initrd),"           \
-                                               "8m(misc),"             \
-                                               "16m(big-fs)"
+                                               "5632k(rootfs),"        \
+                                               "24m(home)"
 #elif defined (CONFIG_FO300)
 #   define MTDPARTS_DEFAULT    "mtdparts=TQM5200-0:640k(firmware),"    \
                                                "1408k(kernel),"        \
 /*
  * GPIO configuration
  *
- * use pin gpio_wkup_6 as second SDRAM chip select (mem_cs1):
- *     Bit 0 (mask: 0x80000000): 1
+ * use CS1: Bit 0 (mask: 0x80000000):
+ *        1 -> Pin gpio_wkup_6 as second SDRAM chip select (mem_cs1).
  * use ALT CAN position: Bits 2-3 (mask: 0x30000000):
- *     00 -> No Alternatives, CAN1/2 on PSC2 according to PSC2 setting.
- *     01 -> CAN1 on I2C1, CAN2 on Tmr0/1.
- *           Use for REV200 STK52XX boards and FO300 boards. Do not use
- *           with REV100 modules (because, there I2C1 is used as I2C bus)
- * use PSC1 as UART: Bits 28-31 (mask: 0x00000007): 0100
- * use PSC2 as CAN: Bits 25:27 (mask: 0x00000030)
- *     000 -> All PSC2 pins are GIOPs
- *     001 -> CAN1/2 on PSC2 pins
- *            Use for REV100 STK52xx boards
- *     01x -> Use AC97
- * use PSC3: Bits 20-23 (mask: 0x00000f00)
- *     1100 -> UART/SPI (on FO300 board)
- * use PSC6:
- *   on STK52xx and FO300:
- *     use as UART. Pins PSC6_0 to PSC6_3 are used.
- *     Bits 9:11 (mask: 0x00700000):
- *        101 -> PSC6 : Extended POST test is not available
- *   on MINI-FAP and TQM5200_IB:
- *     use PSC6_0 to PSC6_3 as GPIO: Bits 9:11 (mask: 0x00700000):
- *        000 -> PSC6 could not be used as UART, CODEC or IrDA
- *   GPIO on PSC6_3 is used in post_hotkeys_pressed() to enable extended POST
- *   tests.
+ *       00 -> No Alternatives, CAN1/2 on PSC2 according to PSC2 setting.
+ *             SPI on PSC3 according to PSC3 setting. Use for CAM5200.
+ *       01 -> CAN1 on I2C1, CAN2 on Tmr0/1.
+ *             Use for REV200 STK52XX boards and FO300 boards. Do not use
+ *             with REV100 modules (because, there I2C1 is used as I2C bus).
+ * use ATA: Bits 6-7 (mask 0x03000000):
+ *       00 -> No ATA chip selects, csb_4/5 used as normal chip selects.
+ *             Use for CAM5200 board.
+ *       01 -> ATA cs0/1 on csb_4/5. Use for the remaining boards.
+ * use PSC6: Bits 9-11 (mask 0x00700000):
+ *      000 -> use PSC6_0 to PSC6_3 as GPIO, PSC6 could not be used as
+ *             UART, CODEC or IrDA.
+ *             GPIO on PSC6_3 is used in post_hotkeys_pressed() to
+ *             enable extended POST tests.
+ *             Use for MINI-FAP and TQM5200_IB boards.
+ *      101 -> use PSC6 as UART. Pins PSC6_0 to PSC6_3 are used.
+ *             Extended POST test is not available.
+ *             Use for STK52xx, FO300 and CAM5200 boards.
+ * use PCI_DIS: Bit 16 (mask 0x00008000):
+ *        1 -> disable PCI controller (on CAM5200 board).
+ * use USB: Bits 18-19 (mask 0x00003000):
+ *       10 -> two UARTs (on FO300 and CAM5200).
+ * use PSC3: Bits 20-23 (mask: 0x00000f00):
+ *     0000 -> All PSC3 pins are GPIOs.
+ *     1100 -> UART/SPI (on FO300 board).
+ *     0100 -> UART (on CAM5200 board).
+ * use PSC2: Bits 25:27 (mask: 0x00000030):
+ *      000 -> All PSC2 pins are GPIOs.
+ *      100 -> UART (on CAM5200 board).
+ *      001 -> CAN1/2 on PSC2 pins.
+ *             Use for REV100 STK52xx boards
+ *      01x -> Use AC97 (on FO300 board).
+ * use PSC1: Bits 29-31 (mask: 0x00000007):
+ *      100 -> UART (on all boards).
  */
 #if defined (CONFIG_MINIFAP)
 # define CFG_GPS_PORT_CONFIG   0x91000004
 # endif
 #elif defined (CONFIG_FO300)
 # define CFG_GPS_PORT_CONFIG   0x91502c24
+#elif defined (CONFIG_CAM5200)
+# define CFG_GPS_PORT_CONFIG   0x8050A444
 #else  /* TMQ5200 Inbetriebnahme-Board */
 # define CFG_GPS_PORT_CONFIG   0x81000004
 #endif
 #define CFG_CS_BURST           0x00000000
 #define CFG_CS_DEADCYCLE       0x33333311      /* 1 dead cycle for flash and SM501 */
 
+#if defined(CONFIG_CAM5200)
+#define CFG_CS4_START          0xB0000000
+#define CFG_CS4_SIZE           0x00010000
+#define CFG_CS4_CFG            0x01019C10
+
+#define CFG_CS5_START          0xD0000000
+#define CFG_CS5_SIZE           0x01208000
+#define CFG_CS5_CFG            0x1414BF10
+#endif
+
 #define CFG_RESET_ADDRESS      0xff000000
 
 /*-----------------------------------------------------------------------
diff --git a/include/configs/ep82xxm.h b/include/configs/ep82xxm.h
new file mode 100644 (file)
index 0000000..5d7bed6
--- /dev/null
@@ -0,0 +1,395 @@
+/*
+ * Copyright (C) 2006 Embedded Planet, LLC.
+ *
+ * U-Boot configuration for Embedded Planet EP82xxM boards.
+ *
+ * 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
+
+#define CONFIG_MPC8260
+#define CPU_ID_STR             "MPC8270"
+
+#define CONFIG_EP82XXM /* Embedded Planet EP82xxM H 1.0 board /*
+                       /* 256MB SDRAM / 64MB FLASH */
+
+#undef DEBUG
+
+#define CONFIG_BOARD_EARLY_INIT_F 1    /* Call board_early_init_f */
+
+/* Allow serial number (serial#) and MAC address (ethaddr) to be overwritten */
+#define CONFIG_ENV_OVERWRITE
+
+/*
+ * Select serial console configuration
+ *
+ * If either CONFIG_CONS_ON_SMC or CONFIG_CONS_ON_SCC is selected, then
+ * CONFIG_CONS_INDEX must be set to the channel number (1-2 for SMC, 1-4
+ * for SCC).
+ */
+#define        CONFIG_CONS_ON_SMC              /* Console is on SMC         */
+#undef  CONFIG_CONS_ON_SCC             /* It's not on SCC           */
+#undef CONFIG_CONS_NONE                /* It's not on external UART */
+#define CONFIG_CONS_INDEX      1       /* SMC1 is used for console  */
+
+#define CFG_BCSR               0xFA000000
+
+/*
+ * Select ethernet configuration
+ *
+ * If either CONFIG_ETHER_ON_SCC or CONFIG_ETHER_ON_FCC is selected,
+ * then CONFIG_ETHER_INDEX must be set to the channel number (1-4 for
+ * SCC, 1-3 for FCC)
+ *
+ * If CONFIG_ETHER_NONE is defined, then either the ethernet routines
+ * must be defined elsewhere (as for the console), or CFG_CMD_NET must
+ * be removed from CONFIG_COMMANDS to remove support for networking.
+ */
+#undef CONFIG_ETHER_ON_SCC             /* Ethernet is not on SCC */
+#define CONFIG_ETHER_ON_FCC            /* Ethernet is on FCC     */
+#undef CONFIG_ETHER_NONE               /* No external Ethernet   */
+
+#define CONFIG_NET_MULTI
+
+#define CONFIG_ETHER_ON_FCC2
+#define CONFIG_ETHER_ON_FCC3
+
+#define CFG_CMXFCR_MASK3       (CMXFCR_FC3 | CMXFCR_RF3CS_MSK | CMXFCR_TF3CS_MSK)
+#define CFG_CMXFCR_VALUE3      (CMXFCR_RF3CS_CLK15 | CMXFCR_TF3CS_CLK16)
+#define CFG_CMXFCR_MASK2       (CMXFCR_FC2 | CMXFCR_RF2CS_MSK | CMXFCR_TF2CS_MSK)
+#define CFG_CMXFCR_VALUE2      (CMXFCR_RF2CS_CLK13 | CMXFCR_TF2CS_CLK14)
+
+#define CFG_CPMFCR_RAMTYPE     0
+#define CFG_FCC_PSMR           (FCC_PSMR_FDE | FCC_PSMR_LPB)
+
+#define CONFIG_MII                     /* MII PHY management        */
+#define CONFIG_BITBANGMII              /* Bit-banged MDIO interface */
+
+/*
+ * GPIO pins used for bit-banged MII communications
+ */
+#define MDIO_PORT              0       /* Not used - implemented in BCSR */
+#define MDIO_ACTIVE            (*(vu_char *)(CFG_BCSR + 8) &= 0xFB)
+#define MDIO_TRISTATE          (*(vu_char *)(CFG_BCSR + 8) |= 0x04)
+#define MDIO_READ              (*(vu_char *)(CFG_BCSR + 8) & 1)
+
+#define MDIO(bit)              if(bit) *(vu_char *)(CFG_BCSR + 8) |= 0x01; \
+                               else    *(vu_char *)(CFG_BCSR + 8) &= 0xFE
+
+#define MDC(bit)               if(bit) *(vu_char *)(CFG_BCSR + 8) |= 0x02; \
+                               else    *(vu_char *)(CFG_BCSR + 8) &= 0xFD
+
+#define MIIDELAY               udelay(1)
+
+
+#ifndef CONFIG_8260_CLKIN
+#define CONFIG_8260_CLKIN      66000000 /* in Hz */
+#endif
+
+#define CONFIG_BAUDRATE                115200
+
+#define CFG_VXWORKS_MAC_PTR 0x4300 /* Pass Ethernet MAC to VxWorks */
+
+#define CONFIG_COMMANDS                (CONFIG_CMD_DFL   \
+                               | CFG_CMD_DHCP    \
+                               | CFG_CMD_ECHO    \
+                               | CFG_CMD_I2C     \
+                               | CFG_CMD_IMMAP   \
+                               | CFG_CMD_MII     \
+                               | CFG_CMD_PING    \
+                               | CFG_CMD_DATE    \
+                               | CFG_CMD_DTT     \
+                               | CFG_CMD_EEPROM  \
+                               | CFG_CMD_PCI     \
+                               | CFG_CMD_DIAG    \
+                               )
+
+/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
+#include <cmd_confdefs.h>
+
+#define CONFIG_ETHADDR         00:10:EC:00:88:65
+#define CONFIG_HAS_ETH1
+#define CONFIG_ETH1ADDR                00:10:EC:80:88:65
+#define CONFIG_IPADDR          10.0.0.245
+#define CONFIG_HOSTNAME                EP82xxM
+#define CONFIG_SERVERIP                10.0.0.26
+#define CONFIG_GATEWAYIP       10.0.0.1
+#define CONFIG_NETMASK         255.255.255.0
+#define CONFIG_BOOTDELAY       5       /* autoboot after 5 seconds */
+#define CFG_ENV_IN_OWN_SECT    1
+#define CFG_AUTO_COMPLETE
+#define        CONFIG_EXTRA_ENV_SETTINGS       "ethprime=FCC3 ETHERNET"
+
+#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
+#undef CONFIG_KGDB_ON_SMC              /* define if kgdb on SMC */
+#define CONFIG_KGDB_ON_SCC             /* define if kgdb on SCC */
+#undef CONFIG_KGDB_NONE                /* define if kgdb on something else */
+#define CONFIG_KGDB_INDEX      1       /* which serial channel for kgdb */
+#define CONFIG_KGDB_BAUDRATE   115200  /* speed to run kgdb serial port at */
+#endif
+
+#define CONFIG_BZIP2   /* include support for bzip2 compressed images */
+#undef CONFIG_WATCHDOG                 /* disable platform specific watchdog */
+
+/*
+ * Miscellaneous configurable options
+ */
+#define CFG_HUSH_PARSER
+#define CFG_PROMPT_HUSH_PS2    "> "
+#define CFG_LONGHELP                   /* undef to save memory     */
+#define CFG_PROMPT             "ep82xxm=> "    /* Monitor Command Prompt   */
+#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
+#define CFG_CBSIZE             1024    /* Console I/O Buffer Size  */
+#else
+#define CFG_CBSIZE             256     /* Console I/O Buffer Size  */
+#endif
+#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16)  /* Print Buffer Size  */
+#define CFG_MAXARGS            16              /* max number of command args */
+#define CFG_BARGSIZE           CFG_CBSIZE      /* Boot Argument Buffer Size  */
+
+#define CFG_MEMTEST_START      0x00100000      /* memtest works on */
+#define CFG_MEMTEST_END                0x00f00000      /* 1 ... 15 MB in DRAM  */
+
+#define CFG_LOAD_ADDR          0x100000        /* default load address */
+
+#define CFG_HZ                 1000    /* decrementer freq: 1 ms ticks */
+
+#define CFG_BAUDRATE_TABLE     { 9600, 19200, 38400, 57600, 115200, 230400 }
+
+/*-----------------------------------------------------------------------
+ * Environment
+ *----------------------------------------------------------------------*/
+/*
+ * Define here the location of the environment variables (FLASH or EEPROM).
+ * Note: DENX encourages to use redundant environment in FLASH.
+ */
+#if 1
+#define CFG_ENV_IS_IN_FLASH     1      /* use FLASH for environment vars       */
+#else
+#define CFG_ENV_IS_IN_EEPROM   1       /* use EEPROM for environment vars      */
+#endif
+
+/*-----------------------------------------------------------------------
+ * FLASH related
+ *----------------------------------------------------------------------*/
+#define CFG_FLASH_BASE         0xFC000000
+#define CFG_FLASH_CFI
+#define CFG_FLASH_CFI_DRIVER
+#define CFG_MAX_FLASH_BANKS    1       /* max num of flash banks       */
+#define CFG_MAX_FLASH_SECT     512     /* max num of sects on one chip */
+#define CFG_FLASH_EMPTY_INFO           /* print 'E' for empty sector in flinfo */
+
+#ifdef CFG_ENV_IS_IN_FLASH
+#define CFG_ENV_SECT_SIZE      0x20000
+#define CFG_ENV_ADDR           (CFG_MONITOR_BASE + CFG_MONITOR_LEN)
+#endif /* CFG_ENV_IS_IN_FLASH */
+
+/*-----------------------------------------------------------------------
+ * I2C
+ *----------------------------------------------------------------------*/
+/* EEPROM Configuration */
+#define CFG_EEPROM_SIZE        0x1000
+#define CFG_I2C_EEPROM_ADDR    0x54
+#define CFG_I2C_EEPROM_ADDR_LEN        1
+#define CFG_EEPROM_PAGE_WRITE_BITS     3
+#define CFG_EEPROM_PAGE_WRITE_ENABLE
+#define CFG_EEPROM_PAGE_WRITE_DELAY_MS 10
+
+#ifdef CFG_ENV_IS_IN_EEPROM
+#define CFG_ENV_SIZE           0x200       /* Size of Environment vars */
+#define CFG_ENV_OFFSET         0x0
+#endif /* CFG_ENV_IS_IN_EEPROM */
+
+/* RTC Configuration */
+#define CONFIG_RTC_M41T11      1       /* uses a M41T81 */
+#define CFG_I2C_RTC_ADDR       0x68
+#define CONFIG_M41T11_BASE_YEAR        1900
+
+/* I2C SYSMON (LM75) */
+#define CONFIG_DTT_LM75                1
+#define CONFIG_DTT_SENSORS     {0}
+#define CFG_DTT_MAX_TEMP       70
+#define CFG_DTT_LOW_TEMP       -30
+#define        CFG_DTT_HYSTERESIS      3
+
+/*-----------------------------------------------------------------------
+ * NVRAM Configuration
+ *-----------------------------------------------------------------------
+ */
+#define CFG_NVRAM_BASE_ADDR    0xFA080000
+#define CFG_NVRAM_SIZE         (128*1024)-16
+
+
+/*-----------------------------------------------------------------------
+ * PCI stuff
+ *-----------------------------------------------------------------------
+ */
+/* 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 on startup  */
+#define CONFIG_PCI_BOOTDELAY   0
+
+/* PCI Memory map (if different from default map */
+#define CFG_PCI_SLV_MEM_LOCAL  CFG_SDRAM_BASE          /* Local base */
+#define CFG_PCI_SLV_MEM_BUS            0x00000000      /* PCI base */
+#define CFG_PICMR0_MASK_ATTRIB (PICMR_MASK_512MB | PICMR_ENABLE | \
+                                PICMR_PREFETCH_EN)
+
+/*
+ * These are the windows that allow the CPU to access PCI address space.
+ * All three PCI master windows, which allow the CPU to access PCI
+ * prefetch, non prefetch, and IO space (see below), must all fit within
+ * these windows.
+ */
+
+/*
+ * Master window that allows the CPU to access PCI Memory (prefetch).
+ * This window will be setup with the second set of Outbound ATU registers
+ * in the bridge.
+ */
+
+#define CFG_PCI_MSTR_MEM_LOCAL 0x80000000          /* Local base */
+#define CFG_PCI_MSTR_MEM_BUS   0x80000000          /* PCI base   */
+#define        CFG_CPU_PCI_MEM_START   PCI_MSTR_MEM_LOCAL
+#define CFG_PCI_MSTR_MEM_SIZE  0x20000000          /* 512MB */
+#define CFG_POCMR0_MASK_ATTRIB (POCMR_MASK_512MB | POCMR_ENABLE | POCMR_PREFETCH_EN)
+
+/*
+ * Master window that allows the CPU to access PCI Memory (non-prefetch).
+ * This window will be setup with the second set of Outbound ATU registers
+ * in the bridge.
+ */
+
+#define CFG_PCI_MSTR_MEMIO_LOCAL    0xA0000000          /* Local base */
+#define CFG_PCI_MSTR_MEMIO_BUS      0xA0000000          /* PCI base   */
+#define CFG_CPU_PCI_MEMIO_START     PCI_MSTR_MEMIO_LOCAL
+#define CFG_PCI_MSTR_MEMIO_SIZE     0x20000000          /* 512MB */
+#define CFG_POCMR1_MASK_ATTRIB      (POCMR_MASK_512MB | POCMR_ENABLE)
+
+/*
+ * Master window that allows the CPU to access PCI IO space.
+ * This window will be setup with the first set of Outbound ATU registers
+ * in the bridge.
+ */
+
+#define CFG_PCI_MSTR_IO_LOCAL       0xF6000000          /* Local base */
+#define CFG_PCI_MSTR_IO_BUS         0x00000000          /* PCI base   */
+#define CFG_CPU_PCI_IO_START        PCI_MSTR_IO_LOCAL
+#define CFG_PCI_MSTR_IO_SIZE        0x02000000          /* 64MB */
+#define CFG_POCMR2_MASK_ATTRIB      (POCMR_MASK_32MB | POCMR_ENABLE | POCMR_PCI_IO)
+
+
+/* PCIBR0 - for PCI IO*/
+#define CFG_PCI_MSTR0_LOCAL            CFG_PCI_MSTR_IO_LOCAL           /* Local base */
+#define CFG_PCIMSK0_MASK               ~(CFG_PCI_MSTR_IO_SIZE - 1U)    /* Size of window */
+/* PCIBR1 - prefetch and non-prefetch regions joined together */
+#define CFG_PCI_MSTR1_LOCAL            CFG_PCI_MSTR_MEM_LOCAL
+#define CFG_PCIMSK1_MASK               ~(CFG_PCI_MSTR_MEM_SIZE + CFG_PCI_MSTR_MEMIO_SIZE - 1U)
+
+
+#define        CFG_DIRECT_FLASH_TFTP
+
+#if (CONFIG_COMMANDS & CFG_CMD_JFFS2)
+#define CFG_JFFS2_FIRST_BANK   0
+#define CFG_JFFS2_NUM_BANKS    CFG_MAX_FLASH_BANKS
+#define CFG_JFFS2_FIRST_SECTOR  0
+#define CFG_JFFS2_LAST_SECTOR   62
+#define CFG_JFFS2_SORT_FRAGMENTS
+#define CFG_JFFS_CUSTOM_PART
+#endif /* CFG_CMD_JFFS2 */
+
+#if (CONFIG_COMMANDS & CFG_CMD_I2C)
+#define CONFIG_HARD_I2C                1       /* To enable I2C support        */
+#define CFG_I2C_SPEED          100000  /* I2C speed                    */
+#define CFG_I2C_SLAVE          0x7F    /* I2C slave address            */
+#endif /* CFG_CMD_I2C */
+
+#define CFG_MONITOR_BASE       TEXT_BASE
+#if (CFG_MONITOR_BASE < CFG_FLASH_BASE)
+#define CFG_RAMBOOT
+#endif
+
+#define CFG_MONITOR_LEN                (512 << 10)     /* Reserve 256KB for Monitor */
+
+#define CFG_DEFAULT_IMMR       0x00010000
+#define CFG_IMMR               0xF0000000
+
+#define CFG_INIT_RAM_ADDR      CFG_IMMR
+#define CFG_INIT_RAM_END       0x2000  /* End of used area in DPRAM    */
+#define CFG_GBL_DATA_SIZE      128     /* size in bytes reserved for initial data */
+#define CFG_GBL_DATA_OFFSET    (CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE)
+#define CFG_INIT_SP_OFFSET     CFG_GBL_DATA_OFFSET
+
+
+/* Hard reset configuration word */
+#define CFG_HRCW_MASTER                0 /*0x1C800641*/  /* Not used - provided by CPLD */
+/* No slaves */
+#define CFG_HRCW_SLAVE1        0
+#define CFG_HRCW_SLAVE2        0
+#define CFG_HRCW_SLAVE3        0
+#define CFG_HRCW_SLAVE4        0
+#define CFG_HRCW_SLAVE5        0
+#define CFG_HRCW_SLAVE6        0
+#define CFG_HRCW_SLAVE7        0
+
+#define BOOTFLAG_COLD          0x01    /* Normal Power-On: Boot from FLASH */
+#define BOOTFLAG_WARM          0x02    /* Software reboot                  */
+
+#define CFG_MALLOC_LEN         (4096 << 10)    /* Reserve 4 MB for malloc()    */
+#define CFG_BOOTMAPSZ          (8 << 20)       /* Initial Memory map for Linux */
+
+#define CFG_CACHELINE_SIZE     32      /* For MPC8260 CPUs */
+#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
+#define CFG_CACHELINE_SHIFT    5       /* log base 2 of the above value */
+#endif
+
+#define CFG_HID0_INIT          0
+#define CFG_HID0_FINAL         0
+
+#define CFG_HID2               0
+
+#define CFG_SIUMCR             0x02610000
+#define CFG_SYPCR              0xFFFF0689
+#define CFG_BCR                        0x8080E000
+#define CFG_SCCR               0x00000001
+
+#define CFG_RMR                        0
+#define CFG_TMCNTSC            0x000000C3
+#define CFG_PISCR              0x00000083
+#define CFG_RCCR               0
+
+#define CFG_MPTPR              0x0A00
+#define CFG_PSDMR              0xC432246E
+#define CFG_PSRT               0x32
+
+#define CFG_SDRAM_BASE         0x00000000
+#define CFG_SDRAM_BR           (CFG_SDRAM_BASE | 0x00000041)
+#define CFG_SDRAM_OR           0xF0002900
+
+#define CFG_BR0_PRELIM         (CFG_FLASH_BASE | 0x00001801)
+#define CFG_OR0_PRELIM         0xFC000882
+#define CFG_BR4_PRELIM         (CFG_BCSR | 0x00001001)
+#define CFG_OR4_PRELIM         0xFFF00050
+
+#define CFG_RESET_ADDRESS      0xFFF00100
+
+#endif /* __CONFIG_H */
index 639765d5990a5a98a913715326fae3eccc9f9af6..f67fd9163d0dbe300d8fcede15d758a6b540d76e 100644 (file)
 /*-----------------------------------------------------------------------
  * High Level Configuration Options
  *----------------------------------------------------------------------*/
+/* This config file is used for Sequoia (440EPx) and Rainier (440GRx) */
+#ifndef CONFIG_RAINIER
 #define CONFIG_SEQUOIA         1               /* Board is Sequoia     */
 #define CONFIG_440EPX          1               /* Specific PPC440EPx   */
+#else
+#define CONFIG_440GRX          1               /* Specific PPC440GRx   */
+#endif
 #define CONFIG_4xx             1               /* ... PPC4xx family    */
 #define CONFIG_SYS_CLK_FREQ    33333333        /* external freq to pll */
 
 #define CONFIG_PHY1_ADDR       1
 
 /* USB */
+#ifdef CONFIG_440EPX
 #define CONFIG_USB_OHCI
 #define CONFIG_USB_STORAGE
 
 /* Comment this out to enable USB 1.1 device */
 #define USB_2_0_DEVICE
 
+#define CMD_USB                        CFG_CMD_USB
+#else
+#define CMD_USB                        0       /* no USB on 440GRx             */
+#endif /* CONFIG_440EPX */
+
 /* Partitions */
 #define CONFIG_MAC_PARTITION
 #define CONFIG_DOS_PARTITION
                               CFG_CMD_PING     |       \
                               CFG_CMD_REGINFO  |       \
                               CFG_CMD_SDRAM    |       \
-                              CFG_CMD_USB    )
+                              CMD_USB)
 
 #define CONFIG_SUPPORT_VFAT
 
index 84b48a9f2e7e85defe62174398dac07cecab5aa3..d91589a6c02c283c5f4714fbccbee85f12a478d3 100644 (file)
@@ -209,6 +209,9 @@ extern void flash_read_factory_serial(flash_info_t * info, void * buffer, int of
 #define AMD_ID_GL064M_3 0x22012201     /* 3rd ID word for S29GL064M-R6 */
 #define AMD_ID_GL064MT_2 0x22102210    /* 2nd ID word for S29GL064M-R3 (top boot sector) */
 #define AMD_ID_GL064MT_3 0x22012201    /* 3rd ID word for S29GL064M-R3 (top boot sector) */
+#define AMD_ID_GL128N_2        0x22212221      /* 2nd ID word for S29GL128N */
+#define AMD_ID_GL128N_3        0x22012201      /* 3rd ID word for S29GL128N */
+
 
 #define AMD_ID_LV320B_2 0x221A221A     /* 2d ID word for AM29LV320MB at 0x38 */
 #define AMD_ID_LV320B_3 0x22002200     /* 3d ID word for AM29LV320MB at 0x3c */
@@ -417,6 +420,7 @@ extern void flash_read_factory_serial(flash_info_t * info, void * buffer, int of
 #define FLASH_FUJLV650 0x00D0          /* Fujitsu MBM 29LV650UE/651UE          */
 #define FLASH_MT28S4M16LC 0x00E1       /* Micron MT28S4M16LC                   */
 #define FLASH_S29GL064M 0x00F0         /* Spansion S29GL064M-R6                */
+#define FLASH_S29GL128N 0x00F1         /* Spansion S29GL128N                   */
 
 #define FLASH_UNKNOWN  0xFFFF          /* unknown flash type                   */
 
index 139df0b2d1e783b836a81689a053071bd290f1a8..d9f2d461a5f809c6562dec78b84b2f96d24a8e79 100644 (file)
@@ -76,6 +76,7 @@
 #define IH_CPU_MICROBLAZE      14      /* MicroBlaze   */
 #define IH_CPU_NIOS2           15      /* Nios-II      */
 #define IH_CPU_BLACKFIN                16      /* Blackfin     */
+#define IH_CPU_AVR32           17      /* AVR32        */
 
 /*
  * Image Types
index 905115b3dac4114a45cfcb257cc33652435c4cc7..5c7311fd5050c8c9a2101bc54bdd4e77efd295b6 100644 (file)
@@ -60,4 +60,61 @@ static inline int nand_erase(nand_info_t *info, ulong off, ulong size)
        return info->erase(info, &instr);
 }
 
+
+/*****************************************************************************
+ * declarations from nand_util.c
+ ****************************************************************************/
+
+struct nand_write_options {
+       u_char *buffer;         /* memory block containing image to write */
+       ulong length;           /* number of bytes to write */
+       ulong offset;           /* start address in NAND */
+       int quiet;              /* don't display progress messages */
+       int autoplace;          /* if true use auto oob layout */
+       int forcejffs2;         /* force jffs2 oob layout */
+       int forceyaffs;         /* force yaffs oob layout */
+       int noecc;              /* write without ecc */
+       int writeoob;           /* image contains oob data */
+       int pad;                /* pad to page size */
+       int blockalign;         /* 1|2|4 set multiple of eraseblocks
+                                * to align to */
+};
+
+typedef struct nand_write_options nand_write_options_t;
+
+struct nand_read_options {
+       u_char *buffer;         /* memory block in which read image is written*/
+       ulong length;           /* number of bytes to read */
+       ulong offset;           /* start address in NAND */
+       int quiet;              /* don't display progress messages */
+       int readoob;            /* put oob data in image */
+};
+
+typedef struct nand_read_options nand_read_options_t;
+
+struct nand_erase_options {
+       ulong length;           /* number of bytes to erase */
+       ulong offset;           /* first address in NAND to erase */
+       int quiet;              /* don't display progress messages */
+       int jffs2;              /* if true: format for jffs2 usage
+                                * (write appropriate cleanmarker blocks) */
+       int scrub;              /* if true, really clean NAND by erasing
+                                * bad blocks (UNSAFE) */
+};
+
+typedef struct nand_erase_options nand_erase_options_t;
+
+int nand_write_opts(nand_info_t *meminfo, const nand_write_options_t *opts);
+
+int nand_read_opts(nand_info_t *meminfo, const nand_read_options_t *opts);
+int nand_erase_opts(nand_info_t *meminfo, const nand_erase_options_t *opts);
+
+#define NAND_LOCK_STATUS_TIGHT 0x01
+#define NAND_LOCK_STATUS_LOCK  0x02
+#define NAND_LOCK_STATUS_UNLOCK 0x04
+
+int nand_lock( nand_info_t *meminfo, int tight );
+int nand_unlock( nand_info_t *meminfo, ulong start, ulong length );
+int nand_get_lock_status(nand_info_t *meminfo, ulong offset);
+
 #endif
index c4a3ed5483561532dc9c74b0aa4727569d0f3147..e407320a9ef38c2c2e487fe7eff597b941f94de9 100644 (file)
 #define malrxctp0r  (MAL_DCR_BASE+0x40) /* RX 0 Channel table pointer reg   */
 #define malrxctp1r  (MAL_DCR_BASE+0x41) /* RX 1 Channel table pointer reg   */
 #if defined(CONFIG_440GX)
-#define malrxctp2r  (MAL_DCR_BASE+0x42) /* RX 0 Channel table pointer reg   */
-#define malrxctp3r  (MAL_DCR_BASE+0x43) /* RX 1 Channel table pointer reg   */
+#define malrxctp2r  (MAL_DCR_BASE+0x42) /* RX 2 Channel table pointer reg   */
+#define malrxctp3r  (MAL_DCR_BASE+0x43) /* RX 3 Channel table pointer reg   */
 #endif /* CONFIG_440GX */
 #define malrcbs0    (MAL_DCR_BASE+0x60) /* RX 0 Channel buffer size reg            */
 #define malrcbs1    (MAL_DCR_BASE+0x61) /* RX 1 Channel buffer size reg            */
index 3e0a5c7fe5445d7cec7567c40eba820548b02230..037c475f8bbf26f5adf8ecf936b28708350fcddf 100644 (file)
@@ -34,7 +34,7 @@ SRCS  := $(SOBJS:.o=.S) $(COBJS:.o=.c)
 OBJS   := $(addprefix $(obj),$(SOBJS) $(COBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 549c8c1033577421eed2f3965198cabe1bd218d4..de7114b80ae68bfa9edbfe6d110f9a1d8bb7dd25 100644 (file)
@@ -37,7 +37,7 @@ SRCS  := $(SOBJS:.o=.S) $(COBJS:.o=.c)
 OBJS   := $(addprefix $(obj),$(SOBJS) $(COBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index fcd43c676f7b3c80aeea29efc51e7082e44000fa..f012cab7d8adba1443b09d598832d9c73ae327cc 100644 (file)
@@ -29,12 +29,12 @@ COBJS       = bzlib.o bzlib_crctable.o bzlib_decompress.o \
          bzlib_randtable.o bzlib_huffman.o \
          crc32.o ctype.o display_options.o ldiv.o \
          string.o vsprintf.o zlib.o
-         
+
 SRCS   := $(COBJS:.o=.c)
 OBJS   := $(addprefix $(obj),$(COBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 50ca4ffd380da094ff64810c4406945f9f1581e6..3d99b69296c7e4504126b175a58176581ff57f08 100644 (file)
@@ -171,7 +171,8 @@ uLong ZEXPORT crc32(crc, buf, len)
     return crc ^ 0xffffffffL;
 }
 
-#if (CONFIG_COMMANDS & CFG_CMD_JFFS2)
+#if (CONFIG_COMMANDS & CFG_CMD_JFFS2) || \
+       ((CONFIG_COMMANDS & CFG_CMD_NAND) && !defined(CFG_NAND_LEGACY))
 
 /* No ones complement version. JFFS2 (and other things ?)
  * don't use ones compliment in their CRC calculations.
index 8dc809e1e24fdae7082c81813348b884352870e8..e344da51576cab4acfb044f5c247eb869b5768e5 100644 (file)
@@ -34,7 +34,7 @@ SRCS  := $(SOBJS:.o=.S) $(COBJS:.o=.c)
 OBJS   := $(addprefix $(obj),$(SOBJS) $(COBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index f9e83988c194790dd3a4b548cc4d5eeb681d979a..82165f098ae53a7df7e0dc1bac1f02507d340298 100644 (file)
@@ -33,7 +33,7 @@ SRCS  := $(SOBJS:.o=.S) $(COBJS:.o=.c)
 OBJS   := $(addprefix $(obj),$(SOBJS) $(COBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 35de97fe16245bc3e30edf229ede0b994dd10f77..82b7beadb0cad627d98f6c4d12e47579ffc9e50e 100644 (file)
@@ -33,7 +33,7 @@ SRCS  := $(SOBJS:.o=.S) $(COBJS:.o=.c)
 OBJS   := $(addprefix $(obj),$(SOBJS) $(COBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index e2ac99914119214e0fb7d6b23dacc946505d9917..3163f00e011cbb5561ea323bb63bd56a97bfa34c 100644 (file)
@@ -33,7 +33,7 @@ SRCS  := $(SOBJS:.o=.S) $(COBJS:.o=.c)
 OBJS   := $(addprefix $(obj),$(SOBJS) $(COBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index ad4c6c4650123e9796bd7cbd873cf9b089da2ae9..7c9d62cf7c9ca5be9408259e985456cb36591253 100644 (file)
@@ -33,7 +33,7 @@ SRCS  := $(SOBJS:.o=.S) $(COBJS:.o=.c)
 OBJS   := $(addprefix $(obj),$(SOBJS) $(COBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 1c2ac72d6acbb868f9af34a64a8075ea6922bafb..1ff2f29bcb4a1c72072995c968d56805d64b7c63 100644 (file)
@@ -33,7 +33,7 @@ SRCS  := $(SOBJS:.o=.S) $(COBJS:.o=.c)
 OBJS   := $(addprefix $(obj),$(SOBJS) $(COBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index bae8cbc20b7086dbd3af15b6c4f1c3c62c0346a2..2ba034f1ee07cdb33b1dd6989548a983a1885e71 100644 (file)
@@ -34,7 +34,7 @@ SRCS  := $(SOBJS:.o=.S) $(COBJS:.o=.c)
 OBJS   := $(addprefix $(obj),$(SOBJS) $(COBJS))
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 21abb09e39b52acf67eeea81fa3d6eb65382f7a3..a136fb707455e0cbd1883fdeeb669827bfe90b3a 100644 (file)
@@ -34,7 +34,7 @@ extern int jump_to_uboot(ulong addr);
 
 static int nand_is_bad_block(struct mtd_info *mtd, int block)
 {
-        struct nand_chip *this = mtd->priv;
+       struct nand_chip *this = mtd->priv;
        int page_addr = block * CFG_NAND_PAGE_COUNT;
 
        /* Begin command latch cycle */
@@ -73,7 +73,7 @@ static int nand_is_bad_block(struct mtd_info *mtd, int block)
 
 static int nand_read_page(struct mtd_info *mtd, int block, int page, uchar *dst)
 {
-        struct nand_chip *this = mtd->priv;
+       struct nand_chip *this = mtd->priv;
        int page_addr = page + block * CFG_NAND_PAGE_COUNT;
        int i;
 
index 6fe4002b61acd9c2821d187cd999e992f693e67e..d18460cab35195a525e2d56b876a778b8e8a0046 100644 (file)
@@ -35,7 +35,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 all:   $(LIB)
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 669d74a6a50ae0f9f1a8ecba05101bb8ada04624..1de9a8f2c6aab435182e3e9df23de893978ec9cb 100644 (file)
@@ -851,7 +851,12 @@ static void DhcpSendRequestPkt(Bootp_t *bp_offer)
        NetCopyIP(&bp->bp_ciaddr, &bp_offer->bp_ciaddr); /* both in network byte order */
        NetCopyIP(&bp->bp_yiaddr, &bp_offer->bp_yiaddr);
        NetCopyIP(&bp->bp_siaddr, &bp_offer->bp_siaddr);
-       NetCopyIP(&bp->bp_giaddr, &bp_offer->bp_giaddr);
+       /*
+        * RFC3046 requires Relay Agents to discard packets with
+        * nonzero and offered giaddr
+        */
+       NetWriteIP(&bp->bp_giaddr, 0);
+
        memcpy (bp->bp_chaddr, NetOurEther, 6);
 
        /*
index a2f33ad6ae3593f107acef0f94985a0f7969c87b..e2c73c6004a879823b93b1d68e8091dc6f9bf4a3 100644 (file)
@@ -32,7 +32,7 @@ CPPFLAGS += -I$(TOPDIR)
 all:   $(LIB)
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index ca5b66b7b06ff39d46c685a2204b1eb900bfe3ad..cf2b24ef0ddcc7b978c53e4b1fe81076b738cce9 100644 (file)
@@ -39,7 +39,7 @@ OBJS  := $(addprefix $(obj),$(COBJS))
 all:   $(LIB)
 
 $(LIB):        $(obj).depend $(OBJS)
-       $(AR) crv $@ $(OBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS)
 
 #########################################################################
 
index 606f02403763c7bc5598d9b52809b922803db21d..6177f902716bbceef8e3040c770f331b318e87bc 100644 (file)
@@ -108,7 +108,7 @@ endif
 include $(TOPDIR)/config.mk
 
 # now $(obj) is defined
-SRCS   := $(addprefix $(obj),$(OBJ_LINKS:.o=.c)) $(OBJ_FILES:.o=.c) 
+SRCS   := $(addprefix $(obj),$(OBJ_LINKS:.o=.c)) $(OBJ_FILES:.o=.c)
 BINS   := $(addprefix $(obj),$(BIN_FILES))
 
 #
index dbcb91f5ed72221a0645860ace3559380275b638..632103d4538bebc12b9ccda029df7c31d7b23bd0 100644 (file)
@@ -31,7 +31,7 @@ BINS  = gdbsend gdbcont
 COBJS  = gdbsend.o gdbcont.o error.o remote.o serial.o
 
 OBJS   := $(addprefix $(obj),$(COBJS))
-SRCS   := $(COBJS:.o=.c) 
+SRCS   := $(COBJS:.o=.c)
 BINS   := $(addprefix $(obj),$(BINS))
 
 #
index 60aac79f234ba750c8169b245bd68a8fd6e87a64..5f3634de4269e1e1b76d988010d769fe7bd63db0 100644 (file)
@@ -94,6 +94,7 @@ table_entry_t arch_name[] = {
     {  IH_CPU_SPARC,           "sparc",        "SPARC",        },
     {  IH_CPU_SPARC64,         "sparc64",      "SPARC 64 Bit", },
     {  IH_CPU_BLACKFIN,        "blackfin",     "Blackfin",     },
+    {  IH_CPU_AVR32,           "avr32",        "AVR32",        },
     {  -1,                     "",             "",             },
 };