summaryrefslogtreecommitdiff
path: root/common
Commit message (Collapse)AuthorAgeLines
* pxe: Allow use of environment variables in append stringHans de Goede2014-08-21-16/+13
| | | | | | | Use cli_simple_process_macros, so that environment variables (e.g. ${console}) can be used in append strings. Signed-off-by: Hans de Goede <hdegoede@redhat.com>
* cli: Export cli_simple_process_macros for use outside of cli_simpleHans de Goede2014-08-21-2/+2
| | | | Signed-off-by: Hans de Goede <hdegoede@redhat.com>
* Merge branch 'master' of git://git.denx.de/u-boot-blackfinTom Rini2014-08-12-11/+34
|\
| * support blackfin board initialization in generic board_fSonic Zhang2014-08-07-11/+34
| | | | | | | | | | | | | | | | | | - init hardware watchdog if applicable - use CONFIG_SYS_MONITOR_LEN as the gd monitor len for Blackfin - reserve u-boot memory at the top field of the RAM for Blackfin - avoid refer to CONFIG_SYS_MONITOR_LEN, which is not defined by Blackfin Signed-off-by: Sonic Zhang <sonic.zhang@analog.com>
* | lcd: support displaying 24bpp BMPs on >= 24bpp LCDsHannes Petermaier2014-08-11-3/+20
| | | | | | | | | | | | | | | | | | | | most todays LCDs support 32bpp e.g. the framebuffer memory is 32bpp organized. To support 24bpp BMPs we need to take only 3 byte from the bpp and set one byte from the FB to 0. Signed-off-by: Hannes Petermaier <oe5hpm@oevsv.at>
* | lcd: remove unused lcd_puts_xyJeroen Hofstee2014-08-11-10/+0
| | | | | | | | | | | | | | | | prevents a clang warning that the function is never used. cc: agust@denx.de Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
* | lcd: cleanup unused functionsHannes Petermaier2014-08-10-16/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | This patch removes following two functions: - lcd_getbgcolor(...) not used somewhere outside lcd.c, internally we use now the global variable lcd_color_bg (was return value of function before) - lcd_getfgcolor(...) not used in any place of u-boot Signed-off-by: Hannes Petermaier <oe5hpm@oevsv.at> [agust: rebased] Signed-off-by: Anatolij Gustschin <agust@denx.de>
* | Add support for 32-bit organized framebuffersHannes Petermaier2014-08-10-3/+32
| | | | | | | | | | | | | | - Adds support for 32-bit organized framebuffers to the LCD-framework. Signed-off-by: Hannes Petermaier <oe5hpm@oevsv.at> Cc: agust@denx.de
* | env_fat.c: Make sure our buffer is cache alignedTom Rini2014-08-09-2/+2
| | | | | | | | | | | | | | We must ensure the buffer we read the env into is aligned or we may get warnings later on. Signed-off-by: Tom Rini <trini@ti.com>
* | bootm: use genimg_get_kernel_addr()Bryan Wu2014-08-09-20/+5
| | | | | | | | | | | | | | | | | | | | | | Use the new API which is originally taken out from boot_get_kernel of bootm.c Signed-off-by: Bryan Wu <pengw@nvidia.com> Tested-by: Stephen Warren <swarren@nvidia.com> Reviewed-by: Stephen Warren <swarren@nvidia.com> [trini: Fix warnings with CONFIG_FIT] Signed-off-by: Tom Rini <trini@ti.com>
* | pxe: detect image format before calling bootm/bootzBryan Wu2014-08-09-4/+11
| | | | | | | | | | | | | | | | | | | | Trying bootm for zImage will print out several error message which is not necessary for this case. So detect image format firstly, only try bootm for legacy and FIT format image then try bootz for others. This patch needs new function genimg_get_kernel_addr(). Signed-off-by: Bryan Wu <pengw@nvidia.com>
* | image: introduce genimg_get_kernel_addr()Bryan Wu2014-08-09-0/+43
| | | | | | | | | | | | | | | | | | | | Kernel address is normally stored as a string argument of bootm or bootz. This function is taken out from boot_get_kernel() of bootm.c, which can be reused by others. Signed-off-by: Bryan Wu <pengw@nvidia.com> [trini: Fix warnings with CONFIG_FIT] Signed-off-by: Tom Rini <trini@ti.com>
* | fdt: Rename fdt_resize() to fdt_shrink_to_minimum()Simon Glass2014-08-09-3/+3
| | | | | | | | | | | | | | Since libfdt now has an fdt_resize() function, we need to rename the U-Boot one. Signed-off-by: Simon Glass <sjg@chromium.org>
* | ext4load: fix help textPavel Machek2014-08-09-1/+1
| | | | | | | | | | | | Fix ext4load help text. Signed-off-by: Pavel Machek <pavel@denx.de>
* | board_r: Add missing return to initr_docIan Campbell2014-08-09-0/+1
| | | | | | | | | | | | | | | | I happened to spot this while working in the area. Signed-off-by: Ian Campbell <ijc@hellion.org.uk> Acked-by: Simon Glass <sjg@chromium.org> Cc: Simon Glass <sjg@chromium.org>
* | pxe: clear Bootfile before returningStephen Warren2014-08-09-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When "pxe boot" downloads the initrd/kernel/DTB, netboot_common() saves the downloaded filename to global variable BootFile. If the boot operation is aborted, this global state is not cleared. If "dhcp" is executed later without any arguments, BootFile is not cleared, and when the DHCP response is received, BootpCopyNetParams() writes the value into environment variable bootfile. This causes the following scenario: * Boot script executes dhcp; pxe get; pxe boot * User CTRL-C's the PXE menu, which causes the first menu item to be booted, which causes some file to be downloaded. (This boot-on-CTRL-C behaviour is arguably a bug too, but it's a separate bug and the bug this patch fixes would still exist if the user simply waited to press CTRL-C until "pxe boot" started downloading files) * User CTRL-C's the file downloads, but the filename is still written to the bootfile environment variable. * User re-runs the boot command, which in my case executes "dhcp; pxe get; pxe boot" again, and "dhcp" picks up the saved bootfile environment variable and proceeds to download a file that it shouldn't. To solve this, modify the implementation of "pxe get" to clear BootFile if the whole boot operation fails, which avoids this whole mess. An alternative would be to modify netboot_common() such that the no- arguments case explicitly clears the global variable BootFile. However, that would prevent the following command sequences from working: $ dhcp filename # downloads "filename" $ dhcp # downloads $bootfile, i.e. "filename" or: $ setenv bootfile filename $ dhcp # downloads $bootfile, i.e. "filename" ... and I assume someone relies on U-Boot working that way. Signed-off-by: Stephen Warren <swarren@nvidia.com> Acked-by: Joe Hershberger <joe.hershberger@ni.com>
* | thor: defer parsing of device string to IO backendLukasz Majewski2014-08-09-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | Commit d4f5ef59cc7 "dfu: defer parsing of device string to IO backend" changed the function signature of dfu_init_env_entities(). Adjust cmd_thordown.c to match that change. Also, apply the same change as commit d6d37d737b58e "dfu: free entities when parsing fails" to cmd_thordown.c. Fixes: d4f5ef59cc7 ("dfu: defer parsing of device string to IO backend") Signed-off-by: Lukasz Majewski <l.majewski@samsung.com> Reviewed-by: Stephen Warren <swarren@nvidia.com>
* | dfu: defer parsing of device string to IO backendStephen Warren2014-08-09-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Devices are not all identified by a single integer. To support this, defer the parsing of the device string to the IO backed, so that it can apply the appropriate rules. SPI devices are specified as controller:chip_select. SPI/SF support will be added soon. MMC devices can also be specified as controller[.hwpart][:partition] in many commands, although we don't support that syntax in DFU. Signed-off-by: Stephen Warren <swarren@nvidia.com>
* | fs: implement size/fatsize/ext4sizeStephen Warren2014-08-09-0/+40
|/ | | | | | | | | | These commands may be used to determine the size of a file without actually reading the whole file content into memory. This may be used to determine if the file will fit into the memory buffer that will contain it. In particular, the DFU code will use it for this purpose in the next commit. Signed-off-by: Stephen Warren <swarren@nvidia.com>
* env_mmc: support env partition setup in runtimeDmitry Lifshitz2014-08-01-12/+23
| | | | | | | | | | | | Add callback with __weak annotation to allow setup of environment partition number in runtime from a board file. Propagate mmc_switch_part() return value into init_mmc_for_env() instead of -1 in case of failure. Signed-off-by: Dmitry Lifshitz <lifshitz@compulab.co.il> Signed-off-by: Igor Grinberg <grinberg@compulab.co.il> Acked-by: Pantelis Antoniou <panto@antoniou-consulting.com>
* ARM: convert arch_fixup_memory_node to a generic FDT fixup functionMa Haijun2014-07-28-2/+5
| | | | | | | | | | | | Some architecture needs extra device tree setup. Instead of adding yet another hook, convert arch_fixup_memory_node to be a generic FDT fixup function. [maz: collapsed 3 patches into one, rewrote commit message] Signed-off-by: Ma Haijun <mahaijuns@gmail.com> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com> Acked-by: Ian Campbell <ijc@hellion.org.uk>
* Merge branch 'u-boot-ti/master' into 'u-boot-arm/master'Albert ARIBAUD2014-07-28-1/+1
|\
| * keystone2: use CONFIG_SOC_KEYSTONE in common placesKhoronzhuk, Ivan2014-07-25-1/+1
| | | | | | | | | | | | | | | | Use CONFIG_SOC_KEYSTONE in common places instead of defining a lot of "if def .. || if def " for different Keystone2 SoC types. Acked-by: Murali Karicheri <m-karicheri2@ti.com> Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>
* | Add a flag indicating when the serial console is readySimon Glass2014-07-23-2/+2
| | | | | | | | | | | | | | | | | | | | For sandbox we have a fallback console which is used very early in U-Boot, before serial drivers are available. Rather than try to guess when to switch to the real console, add a flag so we can be sure. This makes sure that sandbox can always output a panic() message, for example, and avoids silent failure (which is very annoying in sandbox). Signed-off-by: Simon Glass <sjg@chromium.org>
* | console: Remove vprintf() optimisation for sandboxSimon Glass2014-07-23-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | If the console is not present, we try to reduce overhead by stopping any output in vprintf(), before it gets to putc(). This is of dubious merit in general, but in the case of sandbox it is incorrect since we have a fallback console which reports errors very early in U-Boot. If this is defeated U-Boot can hang or exit with no indication of what is wrong. Remove the optimisation for sandbox. Signed-off-by: Simon Glass <sjg@chromium.org>
* | stdio: Provide functions to add/remove devices using stdio_devSimon Glass2014-07-23-8/+24
| | | | | | | | | | | | | | | | | | The current functions for adding and removing devices require a device name. This is not convenient for driver model, which wants to store a pointer to the relevant device. Add new functions which provide this feature and adjust the old ones to call these. Signed-off-by: Simon Glass <sjg@chromium.org>
* | dm: Support driver model prior to relocationSimon Glass2014-07-23-21/+20
| | | | | | | | | | | | | | Initialise devices marked 'pre-reloc' and make them available prior to relocation. Note that this requires pre-reloc malloc() to be available. Signed-off-by: Simon Glass <sjg@chromium.org>
* | dm: Allow drivers to be marked 'before relocation'Simon Glass2014-07-23-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Driver model currently only operates after relocation is complete. In this state U-Boot typically has a small amount of memory available. In adding support for driver model prior to relocation we must try to use as little memory as possible. In addition, on some machines the memory has not be inited and/or the CPU is not running at full speed or the data cache is off. These can reduce execution performance, so the less initialisation that is done before relocation the better. An immediately-obvious improvement is to only initialise drivers which are actually going to be used before relocation. On many boards the only such driver is a serial UART, so this provides a very large potential benefit. Allow drivers to mark themselves as 'pre-reloc' which means that they will be initialised prior to relocation. This can be done either with a driver flag or with a 'dm,pre-reloc' device tree property. To support this, the various dm scanning function now take a 'pre_reloc_only' parameter which indicates that only drivers marked pre-reloc should be bound. Signed-off-by: Simon Glass <sjg@chromium.org>
* | stdio: Pass device pointer to stdio methodsSimon Glass2014-07-23-25/+56
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | At present stdio device functions do not get any clue as to which stdio device is being acted on. Some implementations go to great lengths to work around this, such as defining a whole separate set of functions for each possible device. For driver model we need to associate a stdio_dev with a device. It doesn't seem possible to continue with this work-around approach. Instead, add a stdio_dev pointer to each of the stdio member functions. Note: The serial drivers have the same problem, but it is not strictly necessary to fix that to get driver model running. Also, if we convert serial over to driver model the problem will go away. Code size increases by 244 bytes for Thumb2 and 428 for PowerPC. 22: stdio: Pass device pointer to stdio methods arm: (for 2/2 boards) all +244.0 bss -4.0 text +248.0 powerpc: (for 1/1 boards) all +428.0 text +428.0 Signed-off-by: Simon Glass <sjg@chromium.org> Acked-by: Marek Vasut <marex@denx.de> Reviewed-by: Marek Vasut <marex@denx.de>
* | stdio: Remove redundant code around stdio_register() callsSimon Glass2014-07-23-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | There is no point in setting a structure's memory to NULL when it has already been zeroed with memset(). Also, there is no need to create a stub function for stdio to call - if the function is NULL it will not be called. This is a clean-up, with no change in functionality. Signed-off-by: Simon Glass <sjg@chromium.org> Acked-by: Marek Vasut <marex@denx.de>
* | sandbox: Always enable malloc debugSimon Glass2014-07-23-0/+4
| | | | | | | | | | | | | | | | Tun on DEBUG in malloc(). This adds code space and slows things down but for sandbox this is acceptable. We gain the ability to check for memory leaks in tests. Signed-off-by: Simon Glass <sjg@chromium.org>
* | Add a simple malloc() implementation for pre-relocationSimon Glass2014-07-23-0/+51
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If we are to have driver model before relocation we need to support some way of calling memory allocation routines. The standard malloc() is pretty complicated: 1. It uses some BSS memory for its state, and BSS is not available before relocation 2. It supports algorithms for reducing memory fragmentation and improving performace of free(). Before relocation we could happily just not support free(). 3. It includes about 4KB of code (Thumb 2) and 1KB of data. However since this has been loaded anyway this is not really a problem. The simplest way to support pre-relocation malloc() is to reserve an area of memory and allocate it in increasing blocks as needed. This implementation does this. To enable it, you need to define the size of the malloc() pool as described in the README. It will be located above the pre-relocation stack on supported architectures. Note that this implementation is only useful on machines which have some memory available before dram_init() is called - this includes those that do no DRAM init (like tegra) and those that do it in SPL (quite a few boards). Enabling driver model preior to relocation for the rest of the boards is left for a later exercise. Signed-off-by: Simon Glass <sjg@chromium.org>
* | Remove form-feeds from dlmalloc.cSimon Glass2014-07-23-23/+23
| | | | | | | | | | | | | | | | | | | | These don't really serve any purpose in the modern age. On the other hand they show up as annoying control characters in my editor, which then happily removes them. I believe we can drop these characters from the file. Signed-off-by: Simon Glass <sjg@chromium.org>
* | board_r: run scsi init() on ARM tooIan Campbell2014-07-22-4/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This has been disabled for ARM in initr_scsi since that function was introduced. However it works fine for me on Cubieboard and Cubietruck (with the upcoming AHCI glue patch). I also tested on two random ARM platforms which seem to define CONFIG_CMD_SCSI: - highbank worked fine (on midway hardware) - omap5_uevm built OK and I confirmed using objdump that things were as expected (i.e. the default weak scsi_init nop was used). While there remove the mismatched comment from the #endif (omitting the comment seems to be the prevailing style in this file). Signed-off-by: Ian Campbell <ijc@hellion.org.uk> Acked-by: Simon Glass <sjg@chromium.org>
* | Add option -r to env import to allow import of text files with CRLF as line ↵Alexander Holler2014-07-22-7/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | endings When this option is enabled, CRLF is treated like LF when importing environments from text files, which means CRs ('\r') in front of LFs ('\n') are just ignored. Drawback of enabling this option is that (maybe exported) variables which have a trailing CR in their content will get imported without that CR. But this drawback is very unlikely and the big advantage of letting Windows user create a *working* uEnv.txt too is likely more welcome. Signed-off-by: Alexander Holler <holler@ahsoftware.de>
* | common: cmd_ide: use __weak and add prototypesJeroen Hofstee2014-07-22-38/+13
| | | | | | | | | | | | | | | | | | | | | | clang chokes about the concept of having an alias to an always_inlined function. gcc likely just ignores the always inlined since binary sizes are equal before and after this patch. Convert the aliases to weak functions and provide missing prototypes. cc: Pavel Herrmann <morpheus.ibis@gmail.com> Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
* | common: cmd_ide: remove PIO modeJeroen Hofstee2014-07-22-84/+0
| | | | | | | | | | | | | | | | Since no board defines CONFIG_TUNE_PIO this is just dead code, so remove it. cc: Pavel Herrmann <morpheus.ibis@gmail.com> Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
* | spl: nand: read only in the size of image_header on the first accessMasahiro Yamada2014-07-22-3/+3
| | | | | | | | | | | | | | | | | | | | | | For the same reason as in commit 50c8d66d, all the remaining CONFIG_SYS_NAND_PAGE_SIZE in common/spl/spl_nand.c can be replaced with sizeof(*header). Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com> Cc: Tim Harvey <tharvey@gateworks.com> Cc: Scott Wood <scottwood@freescale.com> Cc: Stefano Babic <sbabic@denx.de>
* | Fix help text of ext2load and fatload.Pavel Machek2014-07-22-2/+2
| | | | | | | | | | | | | | Fix help text of ext2load and fatload to match code in fs/fs.c Signed-off-by: Pavel Machek <pavel@denx.de> Reviewed-by: Marek Vasut <marex@denx.de>
* | common: cmd_mii: fix printf format warningJeroen Hofstee2014-07-18-4/+4
| | | | | | | | | | | | | | | | The and operator implicitly upcasts the value to int, hence the format should expect an int type as well. (and make checkpatch happy) Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
* | autoboot: add its own headerJeroen Hofstee2014-07-18-0/+1
| | | | | | | | Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
* | common: env_common: make env_get_char_spec __weakJeroen Hofstee2014-07-18-3/+1
| | | | | | | | Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
* | common: bootm_os: make arch_preboot_os __weakJeroen Hofstee2014-07-18-2/+1
| | | | | | | | Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
* | common: main.c: make show_boot_progress __weakJeroen Hofstee2014-07-18-2/+1
| | | | | | | | | | | | | | | | This not only looks a bit better it also prevents a warning with W=1 (no previous prototype). Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl> Acked-by: Simon Glass <sjg@chromium.org>
* | common:splash: use __weakJeroen Hofstee2014-07-18-5/+1
| | | | | | | | | | | | | | | | This not only looks a bit better it also prevents a warning with W=1 (no previous prototype). cc: agust@denx.de Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
* | common: board_f: cosmetic use __weak for ledsJeroen Hofstee2014-07-18-19/+10
| | | | | | | | | | | | | | | | | | | | First of all this looks a lot better, but it also prevents a gcc warning (W=1), that the weak function has no previous prototype. cc: Simon Glass <sjg@chromium.org> Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl> Acked-by: Simon Glass <sjg@chromium.org>
* | common: commands: make commands staticJeroen Hofstee2014-07-18-28/+36
| | | | | | | | | | | | | | Since most commands are not public, make them static. This prevents warnings that no common prototype is available. Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
* | env_fat: use get_device_and_partition() during env save and loadWu, Josh2014-07-07-58/+28
|/ | | | | | | | | | | | | | | | | | | | | | Use get_device_and_partition() is better since: 1. It will call the device initialize function internally. So we can remove the mmc intialization code to save many lines. 2. It is used by fatls/fatload/fatwrite. So saveenv & load env should use it too. 3. It can parse the "D:P", "D", "D:", "D:auto" string to get correct device and partition information by run-time. Also we remove the FAT_ENV_DEVICE and FAT_ENV_PART. We use a string: FAT_ENV_DEVICE_AND_PART. For at91sam9m10g45ek, it is "0". That means use device 0 and if: a)device 0 has no partition table, use the whole device as a FAT file system. b)device 0 has partittion table, use the partition #1. Refer to the commit: 10a37fd7a4 for details of device & partition string. Signed-off-by: Josh Wu <josh.wu@atmel.com> Reviewed-by: Stephen Warren <swarren@nvidia.com>
* dfu: free entities when parsing failsStephen Warren2014-06-25-2/+3
| | | | | | | | | | | | | When dfu_init_env_entities() fails part-way through, some entities may have been added to dfu_list. These are only removed by dfu_free_entities(). If that function isn't called, those stale entities will still exist the next time dfu_init_env_entities() is called, leading to confusion. Fix do_dfu() to ensure that dfu_free_entities() is always called, to avoid this confusion. Signed-off-by: Stephen Warren <swarren@nvidia.com> Acked-by: Lukasz Majewski <l.majewski@samsung.com> Tested-by: Lukasz Majewski <l.majewski@samsung.com>
* sandbox: restore ability to access host fs through standard commandsStephen Warren2014-06-23-4/+6
| | | | | | | | | | | | | | | | | | | | | | | | Commit 95fac6ab4589 "sandbox: Use os functions to read host device tree" removed the ability for get_device_and_partition() to handle the "host" device type, and redirect accesses to it to the host filesystem. This broke some unit tests that use this feature. So, revert that change. The code added back by this patch is slightly different to pacify checkpatch. However, we're then left with "host" being both: - A pseudo device that accesses the hosts real filesystem. - An emulated block device, which accesses "sectors" inside a file stored on the host. In order to resolve this discrepancy, rename the pseudo device from host to hostfs, and adjust the unit-tests for this change. The "help sb" output is modified to reflect this rename, and state where the host and hostfs devices should be used. Signed-off-by: Stephen Warren <swarren@nvidia.com> Tested-by: Josh Wu <josh.wu@atmel.com> Acked-by: Simon Glass <sjg@chromium.org> Tested-by: Simon Glass <sjg@chromium.org>