summaryrefslogtreecommitdiff
path: root/common
Commit message (Collapse)AuthorAgeLines
* setexpr: add regex substring matching and substitutionWolfgang Denk2013-05-01-3/+277
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add "setexpr name gsub r s [t]" and "setexpr name sub r s [t]" commands which implement substring matching for the regular expression <r> in the string <t>, and substitution of the string <s>. The result is assigned to the environment variable <name>. If <t> is not supplied, the previous value of <name> is used instead. "gsub" performs global substitution, while "sub" will replace only the first substring. Both commands are closely modeled after the gawk functions with the same names. Examples: - Generate broadcast address by substituting the last two numbers of the IP address by "255.255": => print ipaddr ipaddr=192.168.1.104 => setexpr broadcast sub "(.*\\.).*\\..*" "\\1255.255" $ipaddr broadcast=192.168.255.255 - Depending on keyboard configuration (German vs. US keyboard) a barcode scanner may initialize the MAC address as C0:E5:4E:02:06:DC or as C0>E5>4E>02>06>DC. Make sure we always have a correct value: => print ethaddr ethaddr=C0>E5>4E>02>06>DC => setexpr ethaddr gsub > : ethaddr=C0:E5:4E:02:06:DC - Do the same, but substitute one step at a time in a loop until no futher matches: => setenv ethaddr C0>E5>4E>02>06>DC => while setexpr ethaddr sub > : > do > echo ----- > done ethaddr=C0:E5>4E>02>06>DC ----- ethaddr=C0:E5:4E>02>06>DC ----- ethaddr=C0:E5:4E:02>06>DC ----- ethaddr=C0:E5:4E:02:06>DC ----- ethaddr=C0:E5:4E:02:06:DC ----- C0:E5:4E:02:06:DC: No match => print ethaddr ethaddr=C0:E5:4E:02:06:DC etc. To enable this feature, the CONFIG_REGEX option has to be defined in the board config file. Signed-off-by: Wolfgang Denk <wd@denx.de>
* setexpr: simplify code, improve help messageWolfgang Denk2013-05-01-7/+11
| | | | | | | | | | | Simplify the argument checking for the "setexpr" command. This is done mainly to make future extensions easier. Also improve the help message for the one argument version of the command - this does not "load an address", but a value, which in this context may be a plain number or a pointer dereference. Signed-off-by: Wolfgang Denk <wd@denx.de>
* "env grep" - add support for regular expression matchesWolfgang Denk2013-05-01-6/+23
| | | | | | | | | | | | | | | | | | | | | | | | | When CONFIG_REGEX is enabled, the new option "-e" becomes available which causes regular expression matches to be used. This allows for example things like these: - print all MAC addresses: => env grep -e eth.*addr eth1addr=00:10:ec:80:c5:15 ethaddr=00:10:ec:00:c5:15 - print all variables that have at least 2 colons in their value: => env grep -v -e :.*: addip=setenv bootargs ${bootargs} ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}:${netdev}:off panic=1 eth1addr=00:10:ec:80:c5:15 ethaddr=00:10:ec:00:c5:15 ver=U-Boot 2013.04-rc1-00289-g497746b-dirty (Mar 22 2013 - 12:50:25) etc. Signed-off-by: Wolfgang Denk <wd@denx.de>
* "env grep" - add options to grep in name, value, or both.Wolfgang Denk2013-05-01-5/+33
| | | | | | | | | | | | | | | | | | | | Add options to "env grep" command: -n : search only the envrironment variable names -v : search only their values -b : search both names and values (= default) An option "--" will stop parsing options, so to print variables that contain the striing "- " please use: env grep -- "- " Or to print all environment varioables which have a '-' in their name, use: env grep -n -- - Signed-off-by: Wolfgang Denk <wd@denx.de>
* "env grep" - reimplement command using hexport_r()Wolfgang Denk2013-05-01-18/+12
| | | | | | | Also drop hstrstr_r() which is not needed any more. The new code is way more flexible. Signed-off-by: Wolfgang Denk <wd@denx.de>
* hashtable: preparations to use hexport_r() for "env grep"Wolfgang Denk2013-05-01-3/+7
| | | | | | | | | | The output of "env grep" is unsorted, and printing is done by a private implementation to parse the hash table. We have all the needed code in place in hexport_r() alsready, so let's use this instead. Here we prepare the code for this, without any functional changes yet. Signed-off-by: Wolfgang Denk <wd@denx.de>
* sandbox: fs: Add support for saving files to host filesystemSimon Glass2013-05-01-4/+14
| | | | | | | | | | | | This allows write of files from the host filesystem in sandbox. There is currently no concept of overwriting the file and removing its existing contents - all writing is done on top of what is there. This means that writing 10 bytes to the start of a 1KB file will only update those 10 bytes, not truncate the file to 10 byte slong. If the file does not exist it is created. Signed-off-by: Simon Glass <sjg@chromium.org>
* sandbox: Support 'source' commandSimon Glass2013-05-01-4/+7
| | | | | | | Enhance the source command to work with sandbox, by using map_sysmem() to convert a ulong address into a pointer. Signed-off-by: Simon Glass <sjg@chromium.org>
* Revert "fdt- Tell the FDT library where the device tree is"Simon Glass2013-05-01-8/+0
| | | | | | | | | | This reverts commit 3b73459ea3421e9f8c6c8c62e1d3fe458ca5bc56. In practice it doesn't seem like a good idea to make the the working FDT point to the control FDT. Now that we can access the control FDT using the 'fdt' command, there is no need for this feature. Remove it. Signed-off-by: Simon Glass <sjg@chromium.org>
* sandbox: fdt: Support fdt command for sandboxSimon Glass2013-05-01-3/+7
| | | | | | | By using map_sysmem() we can get the fdt command to work correctly with sandbox. Signed-off-by: Simon Glass <sjg@chromium.org>
* fdt: Allow fdt command to check and update control FDTSimon Glass2013-05-01-13/+34
| | | | | | | There is an existing fdt command to deal with the working FDT. Enhance this to support the control FDT also (CONFIG_OF_CONTROL). Signed-off-by: Simon Glass <sjg@chromium.org>
* Add getenv_hex() to return an environment variable as hexSimon Glass2013-05-01-0/+15
| | | | | | | | This conversion is required in a number of places in U-Boot. Add a standard function to provide this feature, so we avoid all the different variations in the way it is coded. Signed-off-by: Simon Glass <sjg@chromium.org>
* fdt: Add a parameter to fdt_valid()Simon Glass2013-05-01-18/+20
| | | | | | | At present this only checks working_fdt, but we want to check other FDTs also. So add the FDT to check as a parameter to fdt_valid(). Signed-off-by: Simon Glass <sjg@chromium.org>
* sandbox: Add CONFIG_OF_HOSTFILE to read FDT from host fileSimon Glass2013-05-01-0/+55
| | | | | | | | | | | | With sandbox it is tricky to add an FDT to the image at build time (or later) since we build an ELF file, not a plain binary, and the address space of the whole U-Boot is not accessible in the emulated memory map of sandbox. Sandbox can read files directly from the host, though, so add an option to read an FDT from a host file on start-up. Signed-off-by: Simon Glass <sjg@chromium.org>
* sandbox: Switch over to generic boardSimon Glass2013-05-01-11/+48
| | | | | | | | | Add generic board support for sandbox. and remove the old board init code. Select CONFIG_SYS_GENERIC_BOARD for sandbox now that this is supported. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Tom Rini <trini@ti.com>
* flash: Add optional verify-after-write featureStefan Roese2013-04-22-0/+11
| | | | | | | | | | | | | Sometimes it might make sense to verify the written data to NOR flash. This patch adds this feature. To enable this verify-after-write, you need to define CONFIG_FLASH_VERIFY in your board config header. Please note that this option is useless in nearly all cases, since such flash programming errors usually are detected earlier while unprotecting/erasing/programming. Please only enable this option if you really know what you are doing. Signed-off-by: Stefan Roese <sr@denx.de>
* mmc: support the correct card version for eMMCJaehoon Chung2013-04-17-1/+1
| | | | | | | | | | | eMMC vesrion is supported up to v4.5. But bootloader isn't saw the exact eMMC version. After applied this patch, if use the mmcinfo command, then can see the exactly mmc version. Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> Acked-by: Rommel Custodio <sessyargc@gmail.com>
* printenv: Correct out-of-memory condition check.Maxime Larocque2013-04-17-1/+2
| | | | | | | | | | | In common/cmd_nvedit.c, en env_print(), the wrong type is used for len. hexport_r() returns -1 on error (like OOM), which is converted to 0xffffffff when put in an unsigned. Said value is obviously bigger then 0, and as a result an uninitialized string is then displayed. Other usages of hexport_r() in the code correctly uses ssize_t to keep its return value. Signed-off-by: Maxime Larocque <maxmtl2002@yahoo.ca>
* x86: Allow setup code to manage its own global dataSimon Glass2013-04-15-4/+1
| | | | | | | | | | | | Currently x86 has its own means of managing the global data and board data (bd_t), and this code resides in start.S. With generic board, we need to ensure that we leave this alone - i.e. don't clear it as we do on other archs. This fixes a problem where the memory init data is cleared which causes the video driver to operate very slowly. Signed-off-by: Simon Glass <sjg@chromium.org>
* x86: Fix DRAM bank size init with generic boardSimon Glass2013-04-15-2/+1
| | | | | | | | | | | | | The intention of the memory init code is that it should work the same with CONFIG_SYS_GENERIC_BOARD and without. This is tricky because dram_init() is called prior to relocation with generic board (matching other archs) and after relocation without generic board. Adjust the init sequence so that dram_init() is not called in the generic board case, which seems like the easiest fix for now. Also ensure that relocation addresses are still calculated. Signed-off-by: Simon Glass <sjg@chromium.org>
* Merge branch 'master' of git://git.denx.de/u-boot-armTom Rini2013-04-15-0/+18
|\
| * Merge branch 'u-boot/master' into 'u-boot-arm/master'Albert ARIBAUD2013-04-12-281/+1135
| |\ | | | | | | | | | | | | Conflicts: drivers/video/exynos_fb.c
| * \ Merge branch 'u-boot-samsung/master' into 'u-boot-arm/master'Albert ARIBAUD2013-04-04-0/+18
| |\ \
| | * | gen: Add sha h/w acceleration to hashAkshay Saraswat2013-03-29-0/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Adding H/W acceleration support to hash which can be used to test SHA 256 hash algorithm. Signed-off-by: ARUN MANKUZHI <arun.m@samsung.com> Signed-off-by: Akshay Saraswat <akshay.s@samsung.com> Acked-by: Simon Glass <sjg@chromium.org>
* | | | tpm: Add TPM command libraryChe-liang Chiou2013-04-12-110/+599
| |_|/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | TPM command library implements a subset of TPM commands defined in TCG Main Specification 1.2 that are useful for implementing secure boot. More TPM commands could be added out of necessity. You may exercise these commands through the 'tpm' command. However, the raw TPM commands are too primitive for writing secure boot in command interpreter scripts; so the 'tpm' command also provides helper functions to make scripting easier. For example, to define a counter in TPM non-volatile storage and initialize it to zero: $ tpm init $ tpm startup TPM_ST_CLEAR $ tpm nv_define d 0x1001 0x1 $ tpm nv_write d 0x1001 0 And then increment the counter by one: $ tpm nv_read d 0x1001 i $ setexpr.l i $i + 1 $ tpm nv_write d 0x1001 $i Signed-off-by: Che-Liang Chiou <clchiou@chromium.org>
* | | env: Add redundant env support to UBI envJoe Hershberger2013-04-11-0/+117
| | | | | | | | | | | | | | | | | | Allow the user to specify two UBI volumes to use for the environment Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
* | | env: Add support for UBI environmentJoe Hershberger2013-04-11-1/+106
| | | | | | | | | | | | | | | | | | | | | | | | | | | UBI is a better place for the environment on NAND devices because it handles wear-leveling and bad blocks. Gluebi is needed in Linux to access the env as an MTD partition. Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
* | | mtd: Make mtdparts work with pre-reloc envJoe Hershberger2013-04-11-2/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The env in UBI needs to look up the mtd partition as part of relocation, which happens before relocation. Make the mtdparts code capable of working on the default env to start with. The code tries to set values in the env as well, but again, the env isn't there yet, so add a check to setenv to not allow sets before the env is relocated. Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
* | | ubi: ubifs: Turn off verbose printsJoe Hershberger2013-04-11-0/+3
| | | | | | | | | | | | | | | | | | The prints are out of control. SILENCE! Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
* | | ubi: Expose a few simple functions from the cmd_ubiJoe Hershberger2013-04-11-67/+83
| | | | | | | | | | | | | | | | | | Part, Read, and Write functionality that will be used by env_ubi. Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
* | | Do not call board_early_init_f() twiceVadim Bendebury2013-04-11-3/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Apparently due to a missed rebase conflict resolution board_early_init_f() is included twice in the list of initialization functions. Leave only the first occurrence. . built and boot an Exynos 5250 target Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
* | | cmd_nand.c: Fix CONFIG_CMD_NAND_YAFFSTom Rini2013-04-10-1/+1
| | | | | | | | | | | | | | | | | | | | | The flag changed from WITH_INLINE_OOB to WITH_YAFFS_OOB by accident in 418396e. Signed-off-by: Tom Rini <trini@ti.com>
* | | nand: Extend nand_(read|write)_skip_bad with *actual and limit parametersTom Rini2013-04-10-23/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We make these two functions take a size_t pointer to how much space was used on NAND to read or write the buffer (when reads/writes happen) so that bad blocks can be accounted for. We also make them take an loff_t limit on how much data can be read or written. This means that we can now catch the case of when writing to a partition would exceed the partition size due to bad blocks. To do this we also need to make check_skip_len count not just complete blocks used but partial ones as well. All callers of nand_(read|write)_skip_bad are adjusted to call these with the most sensible limits available. The changes were started by Pantelis and finished by Tom. Signed-off-by: Pantelis Antoniou <panto@antoniou-consulting.com> Signed-off-by: Tom Rini <trini@ti.com>
* | | cmd_sf: include header file common.h before div64.hMingkai Hu2013-04-08-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The header file div64.h includes <asm/types.h> which defines the phys_addr_t according to the macro CONFIG_PHYS_64BIT, while the macro CONFIG_PHYS_64BIT is included in common.h which comes after div64.h, so in order to get consistent type definition for phys_addr_t, common.h should be included before div64.h, Or else, the parameters of phys_addr_t type will be passed wrongly when CONFIG_PHYS_64BIT is defined. Signed-off-by: Mingkai Hu <Mingkai.Hu@freescale.com>
* | | common/cmd_test: Avoid macro expansionYork Sun2013-04-08-0/+9
| | | | | | | | | | | | | | | | | | | | | cmd_test.c adds "true" and "false" as new commands. We need to avoid macro expansion for U_BOOT_CMD. Signed-off-by: York Sun <yorksun@freescale.com>
* | | Revert "env: fix potential stack overflow in environment functions"Tom Rini2013-04-05-74/+63
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Wolfgang requested this be reverted and Rob agreed after further discussion. This was a symptom of a larger problem we need to deal with. This reverts commit 60d7d5a63189c9f77a190c9965861dc15482c2d0. Signed-off-by: Tom Rini <trini@ti.com>
* | | mmc: don't allow extra cmdline argumentsStephen Warren2013-04-02-2/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The "mmc rescan" command takes no arguments. However, executing "mmc rescan 1" succeeds, leading the user to believe that MMC device 1 has been rescanned. In fact, the "current" MMC device has been rescanned, and the current device may well not be 1. Add error-checking to the "mmc" command to explicitly reject any extra command-line arguments so that it's more obvious when U-Boot isn't doing what the user thought they asked it to. Signed-off-by: Stephen Warren <swarren@nvidia.com>
* | | env: fix potential stack overflow in environment functionsRob Herring2013-04-02-63/+74
| | | | | | | | | | | | | | | | | | | | | | | | | | | Most of the various environment functions create CONFIG_ENV_SIZE buffers on the stack. At least on ARM and PPC which have 4KB stacks, this can overflow the stack if we have large environment sizes. So move all the buffers off the stack to static buffers. Signed-off-by: Rob Herring <rob.herring@calxeda.com>
* | | Consolidate bool typeYork Sun2013-04-01-111/+107
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 'bool' is defined in random places. This patch consolidates them into a single header file include/linux/types.h, using stdbool.h introduced in C99. All other #define, typedef and enum are removed. They are all consistent with true = 1, false = 0. Replace FALSE, False with false. Replace TRUE, True with true. Skip *.py, *.php, lib/* files. Signed-off-by: York Sun <yorksun@freescale.com>
* | | Merge branch 'agust@denx.de' of git://git.denx.de/u-boot-stagingTom Rini2013-03-31-13/+552
|\ \ \
| * | | New command bootmenu: ANSI terminal boot menu supportPali Rohár2013-03-29-0/+518
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The "bootmenu" command uses U-Boot menu interfaces and provides a simple mechanism for creating menus with several boot items. When running this command the menu will be assembled as defined by a set of environment variables which contain a title and command key-value pairs. The "Up" and "Down" keys are used for navigation through the items. Current active menu item is highlighted and can be selected using the "Enter" key. The command interprets and generates various ANSI escape sequencies, so for proper menu rendering and item selection the used terminal should support them. Signed-off-by: Pali Rohár <pali.rohar@gmail.com> [agust: various fixes and documentation updates] Signed-off-by: Anatolij Gustschin <agust@denx.de>
| * | | menu: export menu_default_choice() functionAnatolij Gustschin2013-03-29-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Checking the default menu item and obtaining its data can be useful in custom menu code. Export menu_default_choice() function which serves this purpose. Signed-off-by: Anatolij Gustschin <agust@denx.de>
| * | | menu: Add support for user defined item choice functionPali Rohár2013-03-29-12/+33
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Selecting menu items is currently done in menu_interactive_choice() by reading the user input strings from standard input. Extend menu_interactive_choice() to support user defined function for selecting menu items. This function and its argument can be specified when creating the menu. Signed-off-by: Pali Rohár <pali.rohar@gmail.com> Signed-off-by: Anatolij Gustschin <agust@denx.de>
* | | video: bcm2835: fix build issuesAnatolij Gustschin2013-03-29-0/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | After merging LCD patches for v2013.04 the bcm2835 video driver building is broken due to removal of many global variables. Fix the driver. Signed-off-by: Anatolij Gustschin <agust@denx.de> Cc: Stephen Warren <swarren@wwwdotorg.org>
* | | Merge branch 'for-v2013.04'Anatolij Gustschin2013-03-29-57/+74
|\ \ \ | |/ / |/| | | | | | | | | | | | | | Conflicts: drivers/video/Makefile Signed-off-by: Anatolij Gustschin <agust@denx.de>
| * | Fix bitmap offsets for non 8-bit LCDsAndre Renaud2013-03-21-3/+4
| | | | | | | | | | | | | | | | | | | | | Currently bitmap logos don't interpret the X coordinate correctly if the bpp is anything other than 8. Signed-off-by: Andre Renaud <andre@bluewatersys.com>
| * | common/lcd.c: move the macro's to the c fileJeroen Hofstee2013-03-21-0/+28
| | | | | | | | | | | | | | | | | | | | | | | | Hide the console macros since some reference global data which is no longer present. cc: Anatolij Gustschin <agust@denx.de> Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
| * | common/lcd: cosmetic: clean up a bitJeroen Hofstee2013-03-21-52/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Make the brackets of the function calls more consistent - Remove really unnecessary brackets - Removes the extern from the function definitions - Remove curly brackets from single line statements - Remove lcd_setmem proto since it is already in common.h - Cleanup comments, remove useless comments - Remove NOT_USED_SO_FAR ifdef - Cleanup coding style cc: Anatolij Gustschin <agust@denx.de> Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl> [agust: rebased the original patch] Signed-off-by: Anatolij Gustschin <agust@denx.de>
| * | common/lcd.c: remove global lcd_baseJeroen Hofstee2013-03-21-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | lcd_base is available as gd->fb_base as well, there is no need to keep a seperate copy. For completeness the ack of Bo Shen is for the atmel part. Cc: Alessandro Rubini <rubini@unipv.it> Cc: Anatolij Gustschin <agust@denx.de> Cc: Bo Shen <voice.shen@atmel.com> Cc: Haavard Skinnemoen <haavard.skinnemoen@atmel.com> Cc: Kyungmin Park <kyungmin.park@samsung.com> Cc: Marek Vasut <marek.vasut@gmail.com> Cc: Minkyu Kang <mk7.kang@samsung.com> Cc: Nikita Kiryanov <nikita@compulab.co.il> Cc: Simon Glass <sjg@chromium.org> Cc: Stelian Pop <stelian@popies.net> Cc: Tom Warren <twarren@nvidia.com> Acked-by: Bo Shen <voice.shen@atmel.com> Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl> [agust: also fix cm_t35 board while rebasing] Signed-off-by: Anatolij Gustschin <agust@denx.de>
| * | common/lcd.c: cleanup use of global variablesJeroen Hofstee2013-03-21-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | console_col, console_row, lcd_line_length, lcd_console_address had to be declared in board / driver specific code, but were not actually used there on many boards. Get rid of the global variables. for completeness, the ack of Bo Shen is for the atmel part Cc: Alessandro Rubini <rubini@unipv.it> Cc: Anatolij Gustschin <agust@denx.de> Cc: Bo Shen <voice.shen@atmel.com> Cc: Kyungmin Park <kyungmin.park@samsung.com> Cc: Marek Vasut <marek.vasut@gmail.com> Cc: Minkyu Kang <mk7.kang@samsung.com> Cc: Nikita Kiryanov <nikita@compulab.co.il> Cc: Simon Glass <sjg@chromium.org> Cc: Stelian Pop <stelian@popies.net> Cc: Tom Warren <twarren@nvidia.com> Acked-by: Bo Shen <voice.shen@atmel.com> Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl> [agust: rebased and fixed cm_t35 board] Signed-off-by: Anatolij Gustschin <agust@denx.de>