summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* am335x_evm: Fix DFU for eMMCSam Protsenko2017-12-181-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | Use dfu_alt_info_emmc variable from include/environment/ti/dfu.h file. It was probably overlooked when extracting DFU variables to mentioned file. This patch fixes DFU on BeagleBone Black, so that we can use commands like ones below to upgrade various images on eMMC: => setenv dfu_alt_info $dfu_alt_info_emmc => dfu 0 mmc 1 $ dfu-util -D MLO -a MLO.raw $ dfu-util -D u-boot.img -a u-boot.img.raw Without this patch, the user is forced to assign the value to dfu_alt_info_emmc manually, which contradicts with instructions [1]. [1] http://processors.wiki.ti.com/index.php/Linux_Core_U-Boot_User%27s_Guide Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org> Reviewed-by: Lokesh Vutla <lokeshvutla@ti.com> Reviewed-by: Lukasz Majewski <lukma@denx.de>
* net: phy: meson-gxl: detect LPA corruptionJerome Brunet2017-12-181-1/+87
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch is ported from the Linux patch posted at [1] and applied to net tree as commit f1e2400a80ff. The purpose of this change is to fix the incorrect detection of the link partner (LP) advertised capabilities which sometimes happens with this PHY (roughly 1 time in a dozen) This issue may cause the link to be negotiated at 10Mbps/Full or 10Mbps/Half when 100MBps/Full is actually possible. In some case, the link is even completely broken and no communication is possible. To detect the corruption, we must look for a magic undocumented bit in the WOL bank (hint given by the SoC vendor kernel) but this is not enough to cover all cases. We also have to look at the LPA ack. If the LP supports Aneg but did not ack our base code when aneg is completed, we assume something went wrong. The detection of a corrupted LPA triggers a restart of the aneg process. This solves the problem but may take up to 6 retries to complete. [1] https://lkml.kernel.org/r/20171208110811.30789-1-jbrunet@baylibre.com Fixes: 8995a96d1d67 ("net: phy: Add Amlogic Meson GXL Internal PHY support") Signed-off-by: Jerome Brunet <jbrunet@baylibre.com> Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
* ARM: arch-meson: fix writel arguments orderHans Verkuil2017-12-181-2/+2
| | | | | | | Using writel causes a "Synchronous Abort". Invert the arguments. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
* Merge tag 'xilinx-for-v2018.01-rc2-v2' of ↵Tom Rini2017-12-1844-81/+212
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | git://www.denx.de/git/u-boot-microblaze Xilinx changes for v2018.01-rc2-v2 fpga: - Enable loading bitstream via fit image for !xilinx platforms zynq: - Fix SPL SD boot mode zynqmp: - Not not reset in panic - Do not use simple allocator because of fat changes - Various dt chagnes - modeboot variable setup - Fix fpga loading on automotive devices - Fix coverity issues test: - Fix env test for !hush case - Stephen's patch
| * test/py: Setup variables based on HUSH selectionStephen Warren2017-12-181-1/+10
| | | | | | | | | | | | | | | | After adding our small zynq uboot which has hush parser off same variable tests start to failed. Use quotes only when hush is enabled. Reported-by: Michal Simek <michal.simek@xilinx.com> Signed-off-by: Stephen Warren <swarren@nvidia.com>
| * arm64: zynqmp: Access timestamp_ref_ctrl register only if running in el3Siva Durga Prasad Paladugu2017-12-181-1/+4
| | | | | | | | | | | | | | | | | | | | Access the timestamp ref ctrl register only if runinng at el3 level otherwise just return. This change fixes the issue when CRL APB is marked as secure and accessing when not in el3 causes exception. Signed-off-by: Siva Durga Prasad Paladugu <sivadur@xilinx.com> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
| * tools: zynqmpimage: Check return values from file functionsMichal Simek2017-12-181-5/+27
| | | | | | | | | | | | | | | | | | Check all return values from file functions. In case of negative return exit immediately. Also change fsize return value which can't be negative. Reported-by: Coverity (CID: 23276, 23304, 169357) Signed-off-by: Michal Simek <michal.simek@xilinx.com>
| * arm64: zynqmp: Dont use 4K sector erase by default for spi-flashesSiva Durga Prasad Paladugu2017-12-186-0/+6
| | | | | | | | | | | | | | | | | | | | Dont use 4K sector erase by default, Disabling this would use 64K sector erase and decreases erase time. Also disabled by the fact that UBIFS and JFFS2 won't work with 4K sector erase. Signed-off-by: Siva Durga Prasad Paladugu <sivadur@xilinx.com> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
| * arm64: zynqmp: Enable spi flashesMichal Simek2017-12-186-0/+13
| | | | | | | | | | | | | | Enabling all spi flashes because some of these boards can have different flashes compared to public version. Signed-off-by: Michal Simek <michal.simek@xilinx.com>
| * arm64: zynqmp: Enable fpga bitstream loadingMichal Simek2017-12-147-0/+14
| | | | | | | | | | | | Enable fpga loadb and loadbp for zynqmp platforms. Signed-off-by: Michal Simek <michal.simek@xilinx.com>
| * arm64: zynqmp: Enable SPL ram supportMichal Simek2017-12-147-0/+14
| | | | | | | | Signed-off-by: Michal Simek <michal.simek@xilinx.com>
| * arm64: zynqmp: Enable misc devicesMichal Simek2017-12-148-0/+8
| | | | | | | | | | | | Enable misc devices for zynqmp targets. Signed-off-by: Michal Simek <michal.simek@xilinx.com>
| * arm64: zynqmp: Add support for zynqmp automotive siliconsMichal Simek2017-12-141-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove silicon prefix. Automotive grade devices are using xazu instead of xczu prefix. The patch "fpga: xilinx: Check for substring in device ID validation" (sha1: f72132673a01216e760864e442f168977cce2bd2) enables this functionality for zynq devices that only substrings are checked. Unfortunately there is no way how to detect device grade that's why this change is reasonable. Signed-off-by: Michal Simek <michal.simek@xilinx.com>
| * arm64: zynqmp: Add missing zynq_board_read_rom_ethaddr() prototypeMichal Simek2017-12-141-0/+1
| | | | | | | | | | | | | | Add missing zynq_board_read_rom_ethaddr() prototype reported by sparse. Signed-off-by: Michal Simek <michal.simek@xilinx.com> Reviewed-by: Joe Hershberger <joe.hershberger@ni.com>
| * arm64: zynqmp: Use only earlycon bootargs instead of full oneMichal Simek2017-12-141-1/+1
| | | | | | | | | | | | | | | | | | This is the same patch as was done earlier. Please look at Linux patch: "arm64: zynqmp: Use only earlycon bootargs instead of full one" (sha1: f3609c8d4af28b9cc22ca49bf8e529b582ec188c) Signed-off-by: Michal Simek <michal.simek@xilinx.com>
| * arm64: zynqmp: Remove undocumented dma propertiesMichal Simek2017-12-145-45/+0
| | | | | | | | | | | | | | | | | | Remove overfetch, ratectrl, include-sg and src-issue dma properties. Driver is not using them and they are also not documented in the binding doc. Signed-off-by: Michal Simek <michal.simek@xilinx.com> Acked-by: Kedareswara rao Appana <appanad@xilinx.com>
| * arm64: zynqmp: Add generic compatible string for I2C EEPROMJavier Martinez Canillas2017-12-141-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The at24 driver allows to register I2C EEPROM chips using different vendor and devices, but the I2C subsystem does not take the vendor into account when matching using the I2C table since it only has device entries. But when matching using an OF table, both the vendor and device has to be taken into account so the driver defines only a set of compatible strings using the "atmel" vendor as a generic fallback for compatible I2C devices. So add this generic fallback to the device node compatible string to make the device to match the driver using the OF device ID table. Signed-off-by: Javier Martinez Canillas <javier@dowhile0.org> Acked-by: Michal Simek <michal.simek@xilinx.com> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
| * arm64: zynqmp: Enable clock command for all boardsMichal Simek2017-12-148-0/+8
| | | | | | | | | | | | clk command provides an option to see actual clock setting. Signed-off-by: Michal Simek <michal.simek@xilinx.com>
| * arm64: zynqmp: Enable phys for zcu102Michal Simek2017-12-141-0/+11
| | | | | | | | | | | | Enable USB3.0 and SATA phy for zcu102 boards. Signed-off-by: Michal Simek <michal.simek@xilinx.com>
| * arm64: zynqmp: Setup modeboot variable based on bootmodeMichal Simek2017-12-141-0/+8
| | | | | | | | | | | | | | | | Setup bootmode variable based on bootmode selection. This is helping with setting up boot method. Also setup sdbootdevice. Signed-off-by: Michal Simek <michal.simek@xilinx.com>
| * arm64: zynqmp: Read boot mode register using zynqmp_mmio_readSiva Durga Prasad Paladugu2017-12-141-1/+5
| | | | | | | | | | | | | | | | Dont read boot mode register directly read it using zynqmp_mmio_read(). Signed-off-by: Siva Durga Prasad Paladugu <sivadur@xilinx.com> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
| * arm64: zynqmp: Enable SPL_CLK when SPL is enabledMichal Simek2017-12-141-1/+1
| | | | | | | | | | | | Setup proper dependency in Kconfig for SPL_CLK. Signed-off-by: Michal Simek <michal.simek@xilinx.com>
| * arm64: zynqmp: Add support for generic QSPI bootMichal Simek2017-12-142-0/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch is enabling support for SPL QSPI boot. First of all it is necessary to generate atf-spi.ub which is different format than atf-uboot.ub (this can be made as legacy image too) ADDR=`arm-xilinx-linux-gnueabi-readelf -a bl31.elf | grep "Entry point address" | cut -d ':' -f 2 | sed -e 's/^[ \t]*//'` aarch64-linux-gnu-objcopy -O binary bl31.elf bl31.bin ./tools/mkimage -f auto -A arm64 -T firmware -C none -O u-boot -a $ADDR -e $ADDR -n "atf1" -E -b arch/arm/dts/zynqmp-zcu102.dtb -d bl31.bin atf-uboot.ub ./tools/mkimage -A arm64 -T firmware -C none -O u-boot -a $ADDR -e $ADDR -n "atf-for-qspi" -E -d bl31.bin atf-spi.ub This patch is using this QSPI layout with offsets: 0 boot.bin 512k atf-ub 640k u-boot.bin 1280k u-boot.img Which corresponding by writing these images(read from MMC) mmcinfo sf probe load mmc 0 10000000 boot.bin sf erase 0 +$filesize sf write 10000000 0 $filesize load mmc 0 10000000 atf-spi.ub sf erase 0x80000 +$filesize sf write 10000000 0x80000 $filesize load mmc 0 10000000 u-boot.bin sf erase 0xa0000 +$filesize sf write 10000000 0xa0000 $filesize load mmc 0 10000000 u-boot.img sf erase 0x140000 +$filesize sf write 10000000 0x140000 $filesize For testing u-boot running in EL3 you can break atf-spi.ub like this: sf probe sf erase 0x80000 +4 Then u-boot.img is executed. Signed-off-by: Michal Simek <michal.simek@xilinx.com>
| * arm64: zynqmp: Add reference to pmu firmware nodeMichal Simek2017-12-141-1/+1
| | | | | | | | | | | | | | This reference is needed for pinctrl driver where some signals can be routed directly to platform management unit (PMU). Signed-off-by: Michal Simek <michal.simek@xilinx.com>
| * arm64: zynqmp: Do not use SPL_SYS_MALLOC_SIMPLE allocatorMichal Simek2017-12-149-11/+3
| | | | | | | | | | | | | | | | | | | | This was caused by: "fs/fat: Reduce stack usage" (sha1:2460098cffacd18729262e3ed36656e6943783ed) which converted fat code to use malloc. But simple malloc is not freeing space that's why full malloc implementation is needed. Malloc space is added to RAM. Signed-off-by: Michal Simek <michal.simek@xilinx.com>
| * arm64: zynqmp: Do not perform reset in case of panicMichal Simek2017-12-141-0/+1
| | | | | | | | | | | | | | | | Do not perform reset when panic happens because in the next reset panic happens again and logs are overflood by the same errors. This can be enabled by default and reset can be performed via watchdog. Signed-off-by: Michal Simek <michal.simek@xilinx.com>
| * arm: zynq: Fix SPL SD boot modeMichal Simek2017-12-1418-5/+36
| | | | | | | | | | | | | | | | | | | | This patch is fixing two issues: 1. Insufficient stack size for fat fs buffers 2. Insufficient space in malloc area Tested on zc702 and zc706. Signed-off-by: Michal Simek <michal.simek@xilinx.com>
| * fpga: allow programming fpga from FIT image for all FPGA driversGoldschmidt Simon2017-12-145-5/+26
| | | | | | | | | | | | | | | | | | | | | | This drops the limit that fpga is only loaded from FIT images for Xilinx. This is done by moving the 'partial' check from 'common/image.c' to 'drivers/fpga/xilinx.c' (the only driver supporting partial images yet) and supplies a weak default implementation in 'drivers/fpga/fpga.c'. Signed-off-by: Simon Goldschmidt <sgoldschmidt@de.pepperl-fuchs.com> Tested-by: Michal Simek <michal.simek@xilinx.com> (On zcu102) Signed-off-by: Michal Simek <michal.simek@xilinx.com>
* | Merge tag 'signed-efi-v2018.01' of git://github.com/agraf/u-bootTom Rini2017-12-176-137/+214
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Patch queue for efi - 2017-12-17 A few fixes for 2018.01: - Compile fix with helloworld example - DP match fix (fixes FreeBSD loader and grub on block storage) - More DP fixes for SD, block - Fix use-after-free
| * | efi_loader: comments for dp_part_fill()Heinrich Schuchardt2017-12-161-1/+8
| | | | | | | | | | | | | | | | | | | | | | | | Add a description for dp_part_fill(). Reword a comment in the function. Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Signed-off-by: Alexander Graf <agraf@suse.de>
| * | efi_loader: correct DeviceNodeToText for media typesHeinrich Schuchardt2017-12-161-12/+31
| | | | | | | | | | | | | | | | | | | | | | | | When converting device nodes and paths to text we should stick to the UEFI spec. Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Signed-off-by: Alexander Graf <agraf@suse.de>
| * | efi_loader: correctly setup device paths for block devicesHeinrich Schuchardt2017-12-161-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | According to the UEFI spec the numbering of partitions has to start with 1. Partion number 0 is reserved for the optional device path for the complete block device. Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Signed-off-by: Alexander Graf <agraf@suse.de>
| * | efi_loader: correctly determine if an MMC device is an SD-cardHeinrich Schuchardt2017-12-161-3/+21
| | | | | | | | | | | | | | | | | | | | | | | | The SD cards and eMMC devices have different device nodes. The current coding interpretes all MMC devices as eMMC. Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Signed-off-by: Alexander Graf <agraf@suse.de>
| * | efi_loader: error handling in efi_load_image()Heinrich Schuchardt2017-12-161-16/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If a failure occurs when trying to load an image, it is insufficient to free() the EFI object. We must remove it from the object list, too. Otherwise a use after free will occur the next time we iterate over the object list. Furthermore errors in setting up the image should be handled. Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Signed-off-by: Alexander Graf <agraf@suse.de>
| * | efi_loader: new function efi_delete_handle()Heinrich Schuchardt2017-12-162-86/+102
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Provide a function to remove a handle from the object list after removing all protocols. To avoid forward declarations other functions have to move up in the coding. Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Signed-off-by: Alexander Graf <agraf@suse.de>
| * | efi_loader: return status from efi_setup_loaded_image()Heinrich Schuchardt2017-12-162-7/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | efi_setup_loaded_image() should return an error code indicating if an error has occurred. An error occurs if a protocol cannot be installed. Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Signed-off-by: Alexander Graf <agraf@suse.de>
| * | efi_loader: Ensure efi_dp_find_obj() finds exact matchesAlexander Graf2017-12-161-2/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When calling efi_dp_find_obj(), we usually want to find the *exact* match of an object for a given device path. However, I ran into a nasty corner case where I had the following objects with paths available: Handle 0x9feffa70 /HardwareVendor(e61d73b9-a384-4acc-aeab-82e828f3628b)[0: ]/USB(6,0)/EndEntire Handle 0x9feffb58 /HardwareVendor(e61d73b9-a384-4acc-aeab-82e828f3628b)[0: ]/USB(6,0)/HD(1,800,32000,2de808cb00000000,1,1)/EndEntire and was searching for /HardwareVendor(e61d73b9-a384-4acc-aeab-82e828f3628b)[0: ]/USB(6,0)/HD(1,800,32000,2de808cb00000000,1,1)/EndEntire But because our device path search looked for any substring match, it would return /HardwareVendor(e61d73b9-a384-4acc-aeab-82e828f3628b)[0: ]/USB(6,0)/EndEntire because that path is a full substring of the path we were searching for. So this patch adapts the device path search logic to always look for exact matches first. The way we distinguish between those cases is by looking at whether our caller actually deals with remainders. As a side effect, the code as is from all I can tell now never does a substring match anymore, because it always gets called with rem=NULL, so we always only do exact matches now. Reported-by: Jonathan Gray <jsg@jsg.id.au> Signed-off-by: Alexander Graf <agraf@suse.de>
| * | efi_loader: helloworld.c: Reduce file sizeAlexander Graf2017-12-161-7/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The efi linker script includes sections needed for the dynamic linker. However, in our EFI application environment we don't have a dynamic linker. So let's remove them. That way we save on 4k padding and reduce the file size of the hello world efi binary from ~4k to ~1k. Signed-off-by: Alexander Graf <agraf@suse.de>
| * | efi_loader: helloworld.c: Explicitly use .rodata for loaded_image_guidAlexander Graf2017-12-161-1/+2
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit bbf75dd9345d0b ("efi_loader: output load options in helloworld") introduced a const variable in efi_main() called loaded_image_guid which got populated from a constant struct. While you would usually expect a compiler to realize that this variable should really just be a global pointer to .rodata, gcc disagrees and instead puts it on the stack. Unfortunately in some implementations of gcc it does so my calling memcpy() which we do not implement in our hello world environment. So let's explicitly move it to a global variable which in turn puts it in .rodata reliably and gets rid of the memcpy(). Fixes: bbf75dd9345d0b ("efi_loader: output load options in helloworld") Reported-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: Alexander Graf <agraf@suse.de> Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Tested-by: Florian Fainelli <f.fainelli@gmail.com>
* | Merge git://git.denx.de/u-boot-dmTom Rini2017-12-1461-62/+1638
|\ \
| * | power: pmic/regulator: Add basic support for TPS65910Felix Brack2017-12-127-0/+705
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Texas Instrument's TPS65910 PMIC contains 3 buck DC-DC converts, one boost DC-DC converter and 8 LDOs. This patch implements driver model support for the TPS65910 PMIC and its regulators making the get/set API for regulator value/enable available. This patch depends on the patch "am33xx: Add a function to query MPU voltage in uV" to build correctly. For boards relying on the DT include file tps65910.dtsi the v3 patch "power: extend prefix match to regulator-name property" and an appropriate regulator naming is also required. Signed-off-by: Felix Brack <fb@ltec.ch> Reviewed-by: Simon Glass <sjg@chromium.org>
| * | dm: blk: Use uclass_find_first/next_device() in blk_first/next_device()Stefan Roese2017-12-121-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch changes the calls to uclass_first/next_device() in blk_first/ next_device() to use uclass_find_first/next_device() instead. These functions don't prepare the devices, which is correct in this case. With this patch applied, the "usb storage" command now works again as expected: => usb storage Device 0: Vendor: SanDisk Rev: 1.00 Prod: Ultra Type: Removable Hard Disk Capacity: 58656.0 MB = 57.2 GB (120127488 x 512) Without this patch, it used to generate this buggy output: => usb storage Card did not respond to voltage select! mmc_init: -95, time 26 No storage devices, perhaps not 'usb start'ed..? Signed-off-by: Stefan Roese <sr@denx.de> Suggested-by: Simon Glass <sjg@chromium.org> Cc: Simon Glass <sjg@chromium.org> Cc: Bin Meng <bmeng.cn@gmail.com> Reviewed-by: Bin Meng <bmeng.cn@gmail.com> Reviewed-by: Simon Glass <sjg@chromium.org>
| * | power: extend prefix match to regulator-name propertyFelix Brack2017-12-125-5/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch extends pmic_bind_children prefix matching. In addition to the node name the property regulator-name is used while trying to match prefixes. This allows assigning different drivers to regulator nodes named regulator@1 and regulator@10 for example. I have discarded the idea of using other properties then regulator-name as I do not see any benefit in using property compatible or even regulator-compatible. Of course I am open to change this if there are good reasons to do so. Signed-off-by: Felix Brack <fb@ltec.ch> Reviewed-by: Simon Glass <sjg@chromium.org>
| * | dm: reset: have the reset-command perform a COLD resetPhilipp Tomsich2017-12-121-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The DM version of do_reset has been issuing a warm-reset, which (on some platforms keeps GPIOs and other parts of the platform active). This may cause unintended behaviour, as calling do_reset usually indicates a desire to reset the board/platform and not just the CPU. This changes do_reset to always request a COLD reset. Note that programmatic uses can still invoke a WARM reset through reset_cpu() or using sysreset_walk(). Signed-off-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com> Reviewed-by: Simon Glass <sjg@chromium.org>
| * | binman: tegra: Convert to use binmanSimon Glass2017-12-129-8/+64
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Update tegra to use binman for image creation. This still includes the current Makefile logic, but a later patch will remove this. Three output files are created, all of which combine SPL and U-Boot: u-boot-tegra.bin - standard image u-boot-dtb-tegra.bin - same as u-boot-tegra.bin u-boot-nodtb-target.bin - includes U-Boot without the appended device tree The latter is useful for build systems where the device is appended later, perhaps after being modified. Signed-off-by: Simon Glass <sjg@chromium.org>
| * | binman: Add documentation for the symbol featureSimon Glass2017-12-121-1/+31
| | | | | | | | | | | | | | | | | | | | | Add this feature to the README. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Lukasz Majewski <lukma@denx.de>
| * | binman: Add binman support to spl_ram.cSimon Glass2017-12-121-4/+15
| | | | | | | | | | | | | | | | | | | | | | | | SPL supports reading U-Boot from a RAM location. At present this is hard-coded to the U-Boot text base address. Use binman to allow this to come from the image file, if binman is used. Signed-off-by: Simon Glass <sjg@chromium.org>
| * | binman: Add binman symbol support to SPLSimon Glass2017-12-123-2/+38
| | | | | | | | | | | | | | | | | | | | | | | | Allow SPL to access binman symbols and use this to get the address of U-Boot. This falls back to CONFIG_SYS_TEXT_BASE if the binman symbol is not available. Signed-off-by: Simon Glass <sjg@chromium.org>
| * | binman: arm: Include the binman symbol tableSimon Glass2017-12-122-2/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | This area of the image contains symbols whose values are filled in by binman. If this feature is not used, the table is empty. Add this to the ARM SPL link script. Signed-off-by: Simon Glass <sjg@chromium.org>
| * | binman: Support accessing binman tables at run timeSimon Glass2017-12-1211-10/+403
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Binman construct images consisting of multiple binary files. These files sometimes need to know (at run timme) where their peers are located. For example, SPL may want to know where U-Boot is located in the image, so that it can jump to U-Boot correctly on boot. In general the positions where the binaries end up after binman has finished packing them cannot be known at compile time. One reason for this is that binman does not know the size of the binaries until everything is compiled, linked and converted to binaries with objcopy. To make this work, we add a feature to binman which checks each binary for symbol names starting with '_binman'. These are then decoded to figure out which entry and property they refer to. Then binman writes the value of this symbol into the appropriate binary. With this, the symbol will have the correct value at run time. Macros are used to make this easier to use. As an example, this declares a symbol that will access the 'u-boot-spl' entry to find the 'pos' value (i.e. the position of SPL in the image): binman_sym_declare(unsigned long, u_boot_spl, pos); This converts to a symbol called '_binman_u_boot_spl_prop_pos' in any binary that includes it. Binman then updates the value in that binary, ensuring that it can be accessed at runtime with: ulong u_boot_pos = binman_sym(ulong, u_boot_spl, pos); This assigns the variable u_boot_pos to the position of SPL in the image. Signed-off-by: Simon Glass <sjg@chromium.org>