summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2012-01-04x86: Convert board_init_f_r to a processing loopGraeme Russ
Create an init function array for board_init_f_r - This finalises the migration to a purely array based initialisation mechanism Also tweak a few comments while we are at it so everything is 'correct' -- Changes for v2: - Renamed to a more apt name - Fix bug in set_reloc_flag_r - Re-instate gd->flags = boot_flags; in board_init_f - Added commit message
2012-01-04x86: Split init functions out of board.cGraeme Russ
This patch moves towards reducing board.c to simply a set of init cores for the three initialisation phases (Flash, Flash/RAM, and RAM), a set of three init function arrays and a init function array processing function
2012-01-04x86: Move relocation code out of board.cGraeme Russ
2012-01-04x86: Move setup_pcat_compatibility() out of board.cGraeme Russ
This function simply does not belong in board.c -- Changes for v2: - Added commit message
2012-01-04x86: Move do_go_exec() out of board.cGraeme Russ
-- Changes for v2: - None
2012-01-04CHECKPATCH: arch/x86/lib/*Graeme Russ
2012-01-04x86: Tweak IDT and GDT for alignment and readabilityGraeme Russ
-- Changes for v2: - Renamed to better reflect nature of changes
2012-01-04x86: Allow cache before copy to RAMGraeme Russ
-- Changes for v2: - None
2012-01-04x86: Create weak init_cache() and default enable_caches() functionsGraeme Russ
-- Changes for v2: - Tweaked commit title
2012-01-04x86: Set GD_FLG_RELOC after entering in-RAM copy of U-BootGraeme Russ
-- Changes for v2: - None
2012-01-04x86: Use fs for global dataGraeme Russ
Use the base address of the 'F' segment as a pointer to the global data structure. By adding the linear address (i.e. the 'D' segment address) as the first word of the global data structure, the address of the global data relative to the 'D' segment can be found simply, for example, by: fs movl 0, %eax This makes the gd 'pointer' writable prior to relocation (by reloading the Global Desctriptor Table) which brings x86 into line with all other arches NOTE: Writing to the gd 'pointer' is expensive (but we only do it twice) but using it to access global data members (read and write) is still fairly cheap -- Changes for v2: - Rebased against changes made to patch #3 - Removed extra indent - Tweaked commit message
2012-01-04x86: Rework relocation calculationsGraeme Russ
This commit introduces no functional changes - It simply re-arranges the calculations so that adding to them in future commits will be cleaner -- Changes for v2: - Fixed typo in title - Added commit message
2012-01-04x86: Simplify Flash-to-RAM code execution transitionGraeme Russ
Move the relocation offset calculation out of assembler and into C. This also paves the way for the upcoming init sequence simplification by adding the board_init_f_r flash to RAM transitional function -- Changes for v2: - Added commit message - Minor adjustment to new stack address comment
2012-01-04x86: Rework Global Descriptor Table loadingGraeme Russ
The inline assembler is ugly and uses hard coded magic numbers. Make it more elegant to allow cleaner implementation of future GDT related patches. The compiler seems smart enough to generate the same code anyway -- Changes for v2: - Rebased against revised patch #3 - Use GDT size define instead of magic number - Added commit message
2012-01-04x86: Remove GDR related magic numbersGraeme Russ
-- Changes for v2: - Use an enum - Add defined for GDT size (previously added in patch 7) - Use X86_ namespace (as per Linux headers)
2012-01-04x86: Speed up copy-to-RAM and clear BSS operationsGraeme Russ
The implementations of memcpy and memset are now the optimised versions from glibc, so use them instead of simple copy loops -- Changes for v2: - Removed unneeded brackets
2012-01-02x86: Import glibc memcpy implementationGraeme Russ
Taken from glibc version 2.14.90 -- Changes for v2: - None
2011-12-23Merge branch 'next' of ../nextWolfgang Denk
* 'next' of ../next: mkenvimage: Add version info switch (-V) mkenvimage: Fix getopt() error handling mkenvimage: Fix some typos phy: add Micrel KS8721BL phy definition net: introduce per device index mvgbe: remove setting of ethaddr within the driver x86: Add support for specifying an initrd with the zboot command x86: Refactor the zboot innards so they can be reused with a vboot image x86: Add infrastructure to extract an e820 table from the coreboot tables x86: Add support for booting Linux using the 32 bit boot protocol x86: Clean up the x86 zimage code in preparation to extend it x86: Import code from coreboot's libpayload to parse the coreboot table x86: Initial commit for running as a coreboot payload CHECKPATCH: ./board/esd/hh405/logo_320_240_8bpp.c CHECKPATCH: ./board/esd/hh405/logo_1024_768_8bpp.c CHECKPATCH: ./board/esd/hh405/logo_320_240_4bpp.c CHECKPATCH: ./board/esd/hh405/logo_640_480_24bpp.c CHECKPATCH: ./board/esd/apc405/logo_640_480_24bpp.c CHECKPATCH: ./board/esd/voh405/logo_320_240_4bpp.c CHECKPATCH: ./board/esd/voh405/logo_640_480_24bpp.c CHECKPATCH: ./board/esd/hh405/fpgadata.c CHECKPATCH: ./board/esd/pci405/fpgadata.c CHECKPATCH: ./board/esd/tasreg/fpgadata.c CHECKPATCH: ./board/esd/apc405/fpgadata.c CHECKPATCH: ./board/esd/voh405/fpgadata.c CHECKPATCH: ./board/esd/ash405/fpgadata.c CHECKPATCH: ./board/esd/dasa_sim/fpgadata.c CHECKPATCH: ./board/esd/ar405/fpgadata_xl30.c CHECKPATCH: ./board/esd/ar405/fpgadata.c CHECKPATCH: ./board/esd/plu405/fpgadata.c CHECKPATCH: ./board/esd/wuh405/fpgadata.c CHECKPATCH: ./board/esd/cpci405/fpgadata_cpci405.c CHECKPATCH: ./board/esd/cpci405/fpgadata_cpci405ab.c CHECKPATCH: ./board/esd/cpci405/fpgadata_cpci4052.c CHECKPATCH: ./board/esd/canbt/fpgadata.c CHECKPATCH: ./board/esd/du405/fpgadata.c CHECKPATCH: ./board/esd/cpciiser4/fpgadata.c CHECKPATCH: ./board/dave/PPChameleonEVB/fpgadata.c avr32:mmu.c: fix printf() length modifier fat.c: fix printf() length modifier cmd_sf.c: fix printf() length modifier Make printf and vprintf safe from buffer overruns vsprintf: Move function documentation into header file Add safe vsnprintf and snprintf library functions Move vsprintf functions into their own header Conflicts: tools/mkenvimage.c Signed-off-by: Wolfgang Denk <wd@denx.de>
2011-12-23Prepare v2011.12Wolfgang Denk
Signed-off-by: Wolfgang Denk <wd@denx.de>
2011-12-23doc/mkimage.1: Fix -D/-f options formattingHorst Kronstorfer
Signed-off-by: Horst Kronstorfer <hkronsto@frequentis.com>
2011-12-23post/lib_powerpc/multi.c: fix stack overflow errorWolfgang Denk
The code and comment disagreed: the comment claimed that r6...r31 were copied, and consequently the arrays for "src" and "dst" were declared with 26 entries, but the actual code ("lmw r5,0(r3)" and "stmw r5,0(r4)") copied _27_ words (r5 through r31), which resulted in false "POST cpu Error at multi test" messages. Fix the comment and the array sizes. Signed-off-by: Wolfgang Denk <wd@denx.de> Cc: Anatolij Gustschin <agust@denx.de> Cc: Stefan Roese <sr@denx.de> Cc: Kumar Gala <galak@kernel.crashing.org> Cc: Kim Phillips <kim.phillips@freescale.com> Cc: Andy Fleming <afleming@gmail.com> Acked-by: Anatolij Gustschin <agust@denx.de> Tested-by: Anatolij Gustschin <agust@denx.de>
2011-12-23post/lib_powerpc/multi.c: code cleanupWolfgang Denk
Clean up and document the code: - get rid of unneeded code block - add comment which code is generated Signed-off-by: Wolfgang Denk <wd@denx.de> Cc: Anatolij Gustschin <agust@denx.de> Cc: Stefan Roese <sr@denx.de> Cc: Kumar Gala <galak@kernel.crashing.org> Cc: Kim Phillips <kim.phillips@freescale.com> Cc: Andy Fleming <afleming@gmail.com> Acked-by: Anatolij Gustschin <agust@denx.de>
2011-12-23post/lib_powerpc/multi.c: make checkpatch cleanWolfgang Denk
Signed-off-by: Wolfgang Denk <wd@denx.de> Cc: Anatolij Gustschin <agust@denx.de> Cc: Stefan Roese <sr@denx.de> Cc: Kumar Gala <galak@kernel.crashing.org> Cc: Kim Phillips <kim.phillips@freescale.com> Cc: Andy Fleming <afleming@gmail.com> Acked-by: Anatolij Gustschin <agust@denx.de>
2011-12-23PPC: fix "Warning: FOO uses hard float, BAR uses soft float".Wolfgang Denk
It appears that with recent versions of GCC the explicit "-mhard-float" command line option takes precedence over the ``asm(".gnu_attribute 4, 2");'' in the source file, so this no longer helps to avoid the warnings we get when linking code that uses FP instructions with other code that was built using soft-float. We can remove the ".gnu_attribute" (which appears to carry no other information, at least so far) from the object files, but we also have to make sure we don't pull in the __gcc_qsub() and __gcc_qmul() functions from the standard libgcc, as these would again "infect" our linking. We copy this code from: gcc-4.2.2/gcc/config/rs6000/darwin-ldouble.c This old version was chosen because it was still available under a compatible license (GCC v2+). The file was stripped down to the needed parts, and reformatted so it passes checkpatch with only one warning (do not add new typedefs). Signed-off-by: Wolfgang Denk <wd@denx.de> Cc: Kumar Gala <galak@kernel.crashing.org> Cc: Stefan Roese <sr@denx.de> Cc: Andy Fleming <afleming@gmail.com> Cc: Kim Phillips <kim.phillips@freescale.com> Tested-by: Stefan Roese <sr@denx.de> Tested-by: Anatolij Gustschin <agust@denx.de>
2011-12-22Print program basename instead of whole path in usage()Horst Kronstorfer
Signed-off-by: Horst Kronstorfer <hkronsto@frequentis.com>
2011-12-22tegra2: Fix out-of-tree build for Ventana.Thierry Reding
Since Ventana is derived from Seaboard and requires seaboard.c to build, make sure board/nvidia/seaboard is created in the build tree. Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de> Acked-by: Stephen Warren <swarren@nvidia.com> Tested-by: Stephen Warren <swarren@nvidia.com> Tested-by: Wolfgang Denk <wd@denx.de>
2011-12-21Prepare v2011.12-rc3Wolfgang Denk
Signed-off-by: Wolfgang Denk <wd@denx.de>
2011-12-21arm: Tegra: fix undefined instruction hang immediately after resetTom Warren
commit 0d479b53 (Aneesh V) added code for OMAP4 that doesn't execute on Tegra, due to the AVP (ARM7TDI) not having a CP15. Result was an undefined instruction hang just after reset. Signed-off-by: Tom Warren <twarren@nvidia.com> Cc: Albert Aribaud <albert.u.boot@aribaud.net> Cc: Tom Rini <trini@ti.com> Acked-by: Aneesh V <aneesh@ti.com>
2011-12-21doc/mkimage.1: Fix some typosHorst Kronstorfer
Signed-off-by: Horst Kronstorfer <hkronsto@frequentis.com> Acked-by: Mike Frysinger <vapier@gentoo.org>
2011-12-20mkenvimage: Add version info switch (-V)Horst Kronstorfer
Signed-off-by: Horst Kronstorfer <hkronsto@frequentis.com>
2011-12-20mkenvimage: Fix getopt() error handlingHorst Kronstorfer
Since the original implementation indicates explicit error handling we turn off getopt()'s internal error messaging to avoid duplicate error messages. Additionally we add ':' (missing option argument) error handling. Signed-off-by: Horst Kronstorfer <hkronsto@frequentis.com>
2011-12-20mkenvimage: Fix some typosHorst Kronstorfer
Signed-off-by: Horst Kronstorfer <hkronsto@frequentis.com>
2011-12-20phy: add Micrel KS8721BL phy definitionVladimir Zapolskiy
This adds support for the Micrel KS8721BL/SL PHY. The definition is taken from the correspondent datasheet. Signed-off-by: Vladimir Zapolskiy <vz@mleia.com>
2011-12-20km/common: add toolchain variableHolger Brunck
Add a variable "toolchain" and configure the rootpath for the nfsargs with this variable. Signed-off-by: Holger Brunck <holger.brunck@keymile.com> cc: Wolfgang Denk <wd@denx.de>
2011-12-20Makefile: fix distclean and *_config rules to be less noiseLauri Hintsala
Signed-off-by: Lauri Hintsala <lauri.hintsala@bluegiga.com>
2011-12-20board/eltec/elppc/misc.c: Fix GCC 4.6 build warningAnatolij Gustschin
Fix: misc.c: In function 'misc_init_r': misc.c:119:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] Signed-off-by: Anatolij Gustschin <agust@denx.de>
2011-12-20drivers/net/e1000.c: Fix GCC 4.6 build warningsAnatolij Gustschin
Fix: e1000.c: In function 'e1000_read_mac_addr': e1000.c:1149:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] e1000.c:1149:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] Signed-off-by: Anatolij Gustschin <agust@denx.de> Cc: Kyle Moffett <Kyle.D.Moffett@boeing.com> Acked-by: Kyle Moffett <Kyle.D.Moffett@boeing.com>
2011-12-20board/esd/cpci750/mv_eth.c: Fix GCC 4.6 build warningsAnatolij Gustschin
Fix: mv_eth.c: In function 'mv64360_eth_real_open': mv_eth.c:425:6: warning: variable 'port_status' set but not used [-Wunused-but-set-variable] mv_eth.c: In function 'mv64360_eth_stop': mv_eth.c:643:15: warning: variable 'port_num' set but not used [-Wunused-but-set-variable] mv_eth.c: In function 'mv64360_eth_xmit': mv_eth.c:719:15: warning: variable 'port_num' set but not used [-Wunused-but-set-variable] mv_eth.c: In function 'mv64360_eth_receive': mv_eth.c:804:15: warning: variable 'port_num' set but not used [-Wunused-but-set-variable] mv_eth.c: In function 'mv64360_eth_get_stats': mv_eth.c:903:15: warning: variable 'port_num' set but not used [-Wunused-but-set-variable] mv_eth.c: In function 'mv64360_eth_update_stat': mv_eth.c:931:24: warning: variable 'dummy' set but not used [-Wunused-but-set-variable] mv_eth.c:930:15: warning: variable 'port_num' set but not used [-Wunused-but-set-variable] mv_eth.c: In function 'mv64360_eth_print_stat': mv_eth.c:1012:15: warning: variable 'port_num' set but not used [-Wunused-but-set-variable] mv_eth.c: In function 'eth_clear_mib_counters': mv_eth.c:2069:15: warning: variable 'dummy' set but not used [-Wunused-but-set-variable Signed-off-by: Anatolij Gustschin <agust@denx.de> Cc: Reinhard Arlt <reinhard.arlt@esd.eu>
2011-12-20usb: s3c_udc_otg: fix GCC 4.6 build warningsAnatolij Gustschin
Fix: In file included from s3c_udc_otg.c:216:0: s3c_udc_otg_xfer_dma.c: In function 'complete_tx': s3c_udc_otg_xfer_dma.c:280:33: warning: variable 'is_short' set but not used s3c_udc_otg_xfer_dma.c:280:6: warning: variable 'ep_tsr' set but not used s3c_udc_otg_xfer_dma.c: In function 's3c_udc_irq': s3c_udc_otg_xfer_dma.c:469:16: warning: variable 'flags' set but not used s3c_udc_otg_xfer_dma.c:468:18: warning: variable 'gintmsk' set but not used s3c_udc_otg_xfer_dma.c: In function 's3c_queue': s3c_udc_otg_xfer_dma.c:582:14: warning: variable 'gintsts' set but not used s3c_udc_otg_xfer_dma.c:581:16: warning: variable 'flags' set but not used s3c_udc_otg_xfer_dma.c: In function 's3c_ep0_read': s3c_udc_otg_xfer_dma.c:778:6: warning: variable 'ret' set but not used s3c_udc_otg_xfer_dma.c: In function 's3c_udc_set_halt': s3c_udc_otg_xfer_dma.c:1020:16: warning: variable 'flags' set but not used s3c_udc_otg_xfer_dma.c: In function 's3c_ep0_setup': s3c_udc_otg_xfer_dma.c:1258:13: warning: initialization from incompatible pointer type [enabled by default] s3c_udc_otg_xfer_dma.c:1239:16: warning: variable 'is_in' set but not used s3c_udc_otg_xfer_dma.c:1239:9: warning: variable 'bytes' set but not used s3c_udc_otg.c: In function 'usb_gadget_register_driver': s3c_udc_otg.c:292:16: warning: variable 'flags' set but not used s3c_udc_otg.c: In function 'usb_gadget_unregister_driver': s3c_udc_otg.c:338:16: warning: variable 'flags' set but not used s3c_udc_otg.c: In function 's3c_ep_enable': s3c_udc_otg.c:582:16: warning: variable 'flags' set but not used s3c_udc_otg.c: In function 's3c_ep_disable': s3c_udc_otg.c:646:16: warning: variable 'flags' set but not used s3c_udc_otg.c: In function 's3c_dequeue': s3c_udc_otg.c:704:16: warning: variable 'flags' set but not used Signed-off-by: Anatolij Gustschin <agust@denx.de> Cc: Lukasz Majewski <l.majewski@samsung.com> Cc: Remy Bohmer <linux@bohmer.net>
2011-12-20board/samsung/universal_c210/universal.c: Fix build warningAnatolij Gustschin
Fix: universal.c: In function 's5pc210_phy_control': universal.c:273:7: warning: 'ret' may be used uninitialized in this function [-Wuninitialized] Signed-off-by: Anatolij Gustschin <agust@denx.de> Cc: Lukasz Majewski <l.majewski@samsung.com> Cc: Minkyu Kang <mk7.kang@samsung.com> Acked-by: Minkyu Kang <mk7.kang@samsung.com>
2011-12-20FAT: fix some issues in FAT write support codeAnatolij Gustschin
Writing a file to the FAT partition didn't work while a test using a CF card. The test was done on mpc5200 based board (powerpc). There is a number of problems in FAT write code: Compiler warning: fat_write.c: In function 'file_fat_write': fat_write.c:326: warning: 'counter' may be used uninitialized in this function fat_write.c:326: note: 'counter' was declared here 'l_filename' string is not terminated, so a file name with garbage at the end is used as a file name as shown by debug code. Return value of set_contents() is not checked properly so actually a file won't be written at all (as checked using 'fatls' after a write attempt with 'fatwrite' command). do_fat_write() doesn't return the number of written bytes if no error happened. However the return value of this function is used to show the number of written bytes in do_fat_fswrite(). The patch adds some debug code and fixes above mentioned problems and also fixes a typo in error output. NOTE: after a successful write to the FAT partition (under U-Boot) the partition was checked under Linux using fsck. The partition needed fixing FATs: -bash-3.2# fsck -a /dev/sda1 fsck 1.39 (29-May-2006) dosfsck 2.11, 12 Mar 2005, FAT32, LFN FATs differ but appear to be intact. Using first FAT. Performing changes. Signed-off-by: Anatolij Gustschin <agust@denx.de> Cc: Donggeun Kim <dg77.kim@samsung.com> Cc: Aaron Williams <Aaron.Williams@cavium.com> Acked-by: Donggeun Kim <dg77.kim@samsung.com>
2011-12-20Merge branch 'master' of /home/wd/git/u-boot/custodiansWolfgang Denk
* 'master' of /home/wd/git/u-boot/custodians: common/cmd_pxe.c: Fix GCC 4.6 build warnings AVR32: fix timer_init() function
2011-12-20Merge branch 'agust@denx.de' of git://git.denx.de/u-boot-stagingWolfgang Denk
* 'agust@denx.de' of git://git.denx.de/u-boot-staging: common/cmd_pxe.c: Fix GCC 4.6 build warnings AVR32: fix timer_init() function
2011-12-20drivers/net/e1000_spi.c: Fix build warningsAnatolij Gustschin
Fix: e1000_spi.c: In function 'spi_free_slave': e1000_spi.c:115: warning: unused variable 'hw' e1000_spi.c: In function 'do_e1000_spi': e1000_spi.c:472: warning: 'checksum' may be used uninitialized in this function e1000_spi.c:472: note: 'checksum' was declared here Signed-off-by: Anatolij Gustschin <agust@denx.de> Cc: Kyle Moffett <Kyle.D.Moffett@boeing.com> Acked-by: Kyle Moffett <Kyle.D.Moffett@boeing.com>
2011-12-20net: Fix arguments in tftpput commandSimon Glass
The switch to strict_strtoul() was not done correctly - this fixes the compile error when CONFIG_CMD_TFTPPUT is active. There appears to very little use of strict_strtoul() in commands, so it might be easier to switch to simple_strtoul(). If not, we should decide the best way to use strict_strtoul(). For now I have added a friendly message which will of course increase code size. Signed-off-by: Simon Glass <sjg@chromium.org>
2011-12-20AVR32: fix timer_init() functionSven Schnelle
timer_init() now returns an int (the error code) instead of void. This makes compilation fail with: interrupts.c:111: error: conflicting types for 'timer_init' /home/svens/u-boot/u-boot/include/common.h:246: error: previous declaration of 'timer_init' was here make[1]: *** [interrupts.o] Error 1 Signed-off-by: Sven Schnelle <svens@stackframe.org> Acked-by: Andreas Bießmann <andreas.devel@googlemail.com> Signed-off-by: Anatolij Gustschin <agust@denx.de>
2011-12-20net: introduce per device indexMichael Walle
Instead of counting the device index everytime a functions needs it, store it in the eth_device struct. eth_register() keeps track of the indices and updates the device's index number. This simplifies some functions in net/eth.c. Additionally, a network driver can now query its index, eg. to get the correct environment ethaddr name. Signed-off-by: Michael Walle <michael@walle.cc> Cc: Prafulla Wadaskar <prafulla@marvell.com> Cc: Mike Frysinger <vapier@gentoo.com> Cc: Wolfgang Denk <wd@denx.de> Acked-by: Mike Frysinger <vapier@gentoo.org>
2011-12-20mvgbe: remove setting of ethaddr within the driverMichael Walle
A network driver should not touch the environment at all. This patch fixes this behaviour by removing the code for setting a default/randomized MAC address. Signed-off-by: Michael Walle <michael@walle.cc> Acked-by: Mike Frysinger <vapier@gentoo.org> Acked-by: Prafulla Wadaskar <prafulla@marvell.com> Cc: Mike Frysinger <vapier@gentoo.org> Cc: Prafulla Wadaskar <prafulla@marvell.com> Cc: Valentin Longchamp <valentin.longchamp@keymile.com> Cc: Eric Cooper <ecc@cmu.edu> Cc: Jason Cooper <u-boot@lakedaemon.net> Cc: Siddarth Gore <gores@marvell.com> Cc: Albert ARIBAUD <albert.u.boot@aribaud.net> Cc: Simon Guinot <simon.guinot@sequanux.org> Acked-by: Prafulla Wadaskar <prafulla@marvell.com>
2011-12-20common/cmd_pxe.c: Fix GCC 4.6 build warningsHeiko Schocher
Fix: cmd_pxe.c: In function 'parse_pxefile_top': cmd_pxe.c:941:5: warning: 'err' may be used uninitialized in this function [-Wuninitialized] cmd_pxe.c:921:6: note: 'err' was declared here Signed-off-by: Heiko Schocher <hs@denx.de> Cc: Jason Hobbs <jason.hobbs@calxeda.com> Acked-by: Jason Hobbs <jason.hobbs@calxeda.com>
2011-12-20AVR32: fix timer_init() functionSven Schnelle
timer_init() now returns an int (the error code) instead of void. This makes compilation fail with: interrupts.c:111: error: conflicting types for 'timer_init' /home/svens/u-boot/u-boot/include/common.h:246: error: previous declaration of 'timer_init' was here make[1]: *** [interrupts.o] Error 1 Signed-off-by: Sven Schnelle <svens@stackframe.org> Acked-by: Andreas Bießmann <andreas.devel@googlemail.com> Signed-off-by: Anatolij Gustschin <agust@denx.de>