summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2017-07-25MIPS: Stop building position independent codePaul Burton
U-Boot has up until now built with -fpic for the MIPS architecture, producing position independent code which uses indirection through a global offset table, making relocation fairly straightforward as it simply involves patching up GOT entries. Using -fpic does however have some downsides. The biggest of these is that generated code is bloated in various ways. For example, function calls are indirected through the GOT & the t9 register: 8f998064 lw t9,-32668(gp) 0320f809 jalr t9 Without -fpic the call is simply: 0f803f01 jal be00fc04 <puts> This is more compact & faster (due to the lack of the load & the dependency the jump has on its result). It is also easier to read & debug because the disassembly shows what function is being called, rather than just an offset from gp which would then have to be looked up in the ELF to discover the target function. Another disadvantage of -fpic is that each function begins with a sequence to calculate the value of the gp register, for example: 3c1c0004 lui gp,0x4 279c3384 addiu gp,gp,13188 0399e021 addu gp,gp,t9 Without using -fpic this sequence no longer appears at the start of each function, reducing code size considerably. This patch switches U-Boot from building with -fpic to building with -fno-pic, in order to gain the benefits described above. The cost of this is an extra step during the build process to extract relocation data from the ELF & write it into a new .rel section in a compact format, plus the added complexity of dealing with multiple types of relocation rather than the single type that applied to the GOT. The benefit is smaller, cleaner, more debuggable code. The relocate_code() function is reimplemented in C to handle the new relocation scheme, which also makes it easier to read & debug. Taking maltael_defconfig as an example the size of u-boot.bin built using the Codescape MIPS 2016.05-06 toolchain (gcc 4.9.2, binutils 2.24.90) shrinks from 254KiB to 224KiB. Signed-off-by: Paul Burton <paul.burton@imgtec.com> Cc: Daniel Schwierzeck <daniel.schwierzeck@gmail.com> Cc: u-boot@lists.denx.de Reviewed-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com> Tested-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
2017-07-25Makefile: Allow arch post-link hookPaul Burton
This commit allows an architecture to provide a Makefile.postlink whose u-boot target gets invoked after the u-boot ELF is linked. This will be of use for MIPS in a following commit. This mirrors Linux commit fbe6e37dab97 ("kbuild: add arch specific post-link Makefile"). Signed-off-by: Paul Burton <paul.burton@imgtec.com> Cc: Daniel Schwierzeck <daniel.schwierzeck@gmail.com> Cc: Masahiro Yamada <yamada.masahiro@socionext.com> Cc: Simon Glass <sjg@chromium.org> Cc: u-boot@lists.denx.de Reviewed-by: Tom Rini <trini@konsulko.com> Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com> Tested-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
2017-07-25configs: Migrate RBTREE, LZO, CMD_MTDPARTS, CMD_UBI and CMD_UBIFSTom Rini
The above CONFIG options are in Kconfig, and now have correct depends and inter-dependencies. Migrate these to configs/ from include/configs/. In the case of CMD_UBIFS also change it to be a default y if CMD_UBI. Signed-off-by: Tom Rini <trini@konsulko.com>
2017-07-24cmd: Kconfig: Fix CMD_UBIFS dependenciesKarl Beldan
Remove the ARCH_SUNXI and RBTREE dependencies. CMD_UBIFS already gets RBTREE from CMD_UBI (from MTD_UBI), and should the first become independant from the latter, there would likely be a dependency on MTD_UBI anyway. Cc: Boris Brezillon <boris.brezillon@free-electrons.com> Cc: Jagan Teki <jagan@openedev.com> Signed-off-by: Karl Beldan <karl.beldan-ext@sagemcom.com> Reviewed-by: Tom Rini <trini@konsulko.com>
2017-07-24cmd: Kconfig: Make CMD_UBI select CMD_MTDPARTSKarl Beldan
Many configs still define CMD_MTDPARTS in their non-Kconfig but CMD_MTDPARTS has now moved to Kconfig. Signed-off-by: Karl Beldan <karl.beldan-ext@sagemcom.com> Reviewed-by: Tom Rini <trini@konsulko.com>
2017-07-24ubi: Kconfig: Make MTD_UBI select MTD_PARTITIONSKarl Beldan
This missing dependency has probably remained under the radar because MTD_PARTITIONS is still whitelisted. Signed-off-by: Karl Beldan <karl.beldan-ext@sagemcom.com> Reviewed-by: Tom Rini <trini@konsulko.com>
2017-07-24cmd: Kconfig: Fix a dependency of CMD_MTDPARTSKarl Beldan
Remove the ARCH_SUNXI dependency. Cc: Maxime Ripard <maxime.ripard@free-electrons.com> Cc: Jagan Teki <jagan@openedev.com> Signed-off-by: Karl Beldan <karl.beldan-ext@sagemcom.com> Reviewed-by: Tom Rini <trini@konsulko.com>
2017-07-24ubi: Kconfig: Fix MTD_UBI selection dependencyKarl Beldan
Remove the ARCH_SUNXI dependency on selection of RBTREE. Cc: Boris Brezillon <boris.brezillon@free-electrons.com> Cc: Maxime Ripard <maxime.ripard@free-electrons.com> Cc: Jagan Teki <jagan@openedev.com> Signed-off-by: Karl Beldan <karl.beldan-ext@sagemcom.com> Reviewed-by: Tom Rini <trini@konsulko.com>
2017-07-23xilinx-ppc.h: DropTom Rini
With PowerPC 4xx support removed, we have removed xilinx-ppc support as well, remove this file now. Fixes 98f705c9cefd ("powerpc: remove 4xx support") Reviewed-by: Bin Meng <bmeng.cn@gmail.com> Signed-off-by: Tom Rini <trini@konsulko.com>
2017-07-23serial: ns16550: Add RX interrupt buffer supportStefan Roese
Pasting longer lines into the U-Boot console prompt sometimes leads to characters missing. One problem here is the small 16-byte FIFO of the legacy NS16550 UART, e.g. on x86 platforms. This patch now introduces a Kconfig option to enable RX interrupt buffer support for NS16550 style UARTs. With this option enabled, I was able paste really long lines into the U-Boot console, without any characters missing. Signed-off-by: Stefan Roese <sr@denx.de> Reviewed-by: Simon Glass <sjg@chromium.org> Cc: Bin Meng <bmeng.cn@gmail.com> [trini: Guard ns16550_serial_remove with CONFIG_IS_ENABLED(SERIAL_PRESENT) to match struct assignment] Signed-off-by: Tom Rini <trini@konsulko.com>
2017-07-23arm: omap3: Detect boot mode very earlyAdam Ford
Fixes 4bd754d8abef ("arm: omap: Detect boot mode very early") where the intent was to store the boot params information in a known location and pass it to SPL very early. Unfortunately it didn't account for OMAP3 boards. This patch adds adds this functionality back into OMAP3 boards. Reviewed-by: Lokesh Vutla <lokeshvutla@ti.com> Signed-off-by: Adam Ford <aford173@gmail.com>
2017-07-23powerpc: Remove 8260 remaindersChristophe Leroy
commit 2eb48ff7a210d ("powerpc, 8260: remove support for mpc8260") removed support for 8260 CPU. This patch remove some remainders. Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
2017-07-23powerpc, 8xx: fix missing function declarations.Christophe Leroy
Add missing .h and add missing declarations in .h Declare local functions as static. Make interrupt_init_cpu function signatures consistent with how decrementer_count is declared. Based on warnings reported by 'make C=2' Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr> [trini: drop cpu_init_f as 8xx/83xx are different from the rest, rework interrupt_init_cpu/decrementer_count] Signed-off-by: Tom Rini <trini@konsulko.com>
2017-07-23powerpc: move get_pvr() and get_svr() into CChristophe Leroy
Avoid unnecessary assembly functions when they can easily be written in C. Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
2017-07-23powerpc, 8xx: move cache helper into CChristophe Leroy
Avoid unnecessary assembly functions when they can easily be written in C. Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
2017-07-23powerpc, 8xx: move get_immr() into CChristophe Leroy
Avoid unnecessary assembly functions when they can easily be written in C. Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
2017-07-23powerpc, 8xx: Move cache function into C filesChristophe Leroy
Avoid unnecessary assembly functions when they can easily be written in C. Also remove dc_read() as it is nowhere referenced Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
2017-07-23powerpc, 8xx: Simplifying check_CPU()Christophe Leroy
All complex case have been removed and we now only support MPC866 and MPC885 families. So check_CPU() can be made a lot simpler. Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
2017-07-23powerpc: Remove unneccessary #ifdefs in reginfoChristophe Leroy
reginfo command is calling mpc8xx_reginfo(), mpc85xx_reginfo() or mpc86xx_reginfo() based on CONFIG_ symbol. As those 3 functions can't me defined at the same time, let's rename them print_reginfo() to avoid the #ifdefs The name is kept generic as it is not at all dependent on powerpc arch and any other arch could want to also print such information. In addition, as the Makefile compiles cmd/reginfo.c only when CONFIG_CMD_REGINFO is set, there is no need to enclose the U_BOOT_CMD definition inside a #ifdef CONFIG_CMD_REGINFO Lets all remove the #ifdefs around the U_BOOT_CMD as this file is only compiled when CONFIG_CMD_REGINFO is defined Finally, this is a PowerPC-only command, disable it on a number of non-PowerPC platforms. Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr> Signed-off-by: Tom Rini <trini@konsulko.com>
2017-07-23powerpc: move set_msr() and get_msr() into .hChristophe Leroy
set_msr() and get_msr() are defined and used twice. This patch moves them into ppc.h Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
2017-07-23power, timer: reset TBL before TBUChristophe Leroy
In order to avoid TBU increment due to TBL reaching its max and wrapping, reset TBL before resetting TBU Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
2017-07-23powerpc, timer: Does 8xx specific actions in 8xx cpu_initChristophe Leroy
The actions inside #ifdef CONFIG_8xx in arch/powerpc/lib/time.c can be performed before, in a 8xx dedicated function. Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
2017-07-23powerpc: get rid of addr_probe()Christophe Leroy
This function has never been used, at least since the beginning of the git repository Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
2017-07-23powerpc, 8xx: Simplify brgclk calculation and remove get_brgclk()Christophe Leroy
divider is calculated based on SCCR_DFBRG, with: SCCR_DFBRG 00 => divider 1 = 1 << 0 SCCR_DFBRG 01 => divider 4 = 1 << 2 SCCR_DFBRG 10 => divider 16 = 1 << 4 SCCR_DFBRG 11 => divider 64 = 1 << 6 This can be easily converted to a single shift operation: divider = 1 << (SCCR_DFBRG * 2) Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
2017-07-23km/ivm: allow to set locally administred MAC addressesHolger Brunck
It is possible to flag MAC addresses as locally administred. In this case they don't need to be unique. This is only allowed for interfaces which have no connection to the outside. For the TEGR1 board we use this feature. Cc: Heiko Schocher <hs@denx.de> Signed-off-by: Holger Brunck <holger.brunck@keymile.com>
2017-07-23km/ivm: always set ethaddr after reading IVMHolger Brunck
If we rebrand the IVM and ethaddr was set previously we need to change ethaddr. Otherwise we end up with a wrong MAC adress for the ethernet interface. Cc: Heiko Schocher <hs@denx.de> Signed-off-by: Holger Brunck <holger.brunck@keymile.com>
2017-07-23RFC: moveconfig: Use toolchains from buildmanSimon Glass
It is annoying to have to set up and maintain two sets of toolchains, one for buildman and one for moveconfig. Adjust moveconfig to make use to buildman's toolchains. This should make things easier. One missing feature is the ability to specify the toolchain on the command line with a special environment variable, e.g. CROSS_COMPILE_ARM. I'm not sure if that is useful, but if it is it could be implemented in buildman. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com> Tested-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
2017-07-23moveconfig: Tidy up imply flag parsingSimon Glass
Add an option to specify 'all' to enable all flags. Also print an error if an unrecognised flag is used. At present it just prints usage information which is not very helpful. Signed-off-by: Simon Glass <sjg@chromium.org>
2017-07-23board: ti: am43xx: Add FDT fixup for HS devicesAndrew F. Davis
Disable RNG and add TEE to FDT used on HS devices. Signed-off-by: Andrew F. Davis <afd@ti.com>
2017-07-23board: ti: am43xx: Add TEE loading and firewall setupAndrew F. Davis
Add support for loading a TEE and setting up firewalled regions to AM43xx HS boards. Signed-off-by: Andrew F. Davis <afd@ti.com>
2017-07-23arm: mach-omap2: am33xx: Add FDT fixup suport for AM33xx/AM43xx boardsAndrew F. Davis
Similar to what is done with OMAP5 class boards we need to perform fixups common to this SoC class, add support for this here and add HS fixups. Signed-off-by: Andrew F. Davis <afd@ti.com>
2017-07-23arm: mach-omap2: fdt-common: Add OP-TEE node when firmware node is definedAndrew F. Davis
If a firmware node is already present in the FDT we will fail to create one and so fail to add our OP-TEE node, make this fixup first check for a firmware node and then only try to add one if it is not found. Signed-off-by: Andrew F. Davis <afd@ti.com>
2017-07-23arm: mach-omap2: Factor out common FDT fixup suportAndrew F. Davis
Some of the fixups currently done for OMAP5 class boards are common to other OMAP family devices, move these to fdt-common.c. Signed-off-by: Andrew F. Davis <afd@ti.com>
2017-07-23arm: mach-omap2: Move omap5/sec-fxns.c into sec-common.cAndrew F. Davis
TEE loading and firewall setup are common to all omap2 devices, move these function out of omap5 and into mach-omap2. This allows us to use these functions from other omap class devices. Signed-off-by: Andrew F. Davis <afd@ti.com>
2017-07-22Makefile: add dependencies to regenerate u-boot.cfg when lostPhilipp Tomsich
When running a 'make clean' or carelessly removing u-boot.cfg, all future make invocations (until autoconf is regenerated) will print an error for a missing u-boot.cfg due to missing rules and dependencies. This commit adds (i) an explicit rule dependency from all (which will invokes the configuration checker) to cfg, and (b) adds a rule to invoke scripts/Makefile.autoconf to regenerate u-boot.cfg. Signed-off-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com> Reviewed-by: Simon Glass <sjg@chromium.org> Tested-by: Bin Meng <bmeng.cn@gmail.com>
2017-07-22dtc: mkimage: Add the possibility to specify DTCEmmanuel Vadot
FreeBSD recently switch to it's BSDL dtc. While it support most of the features of the GPL one it still lacks the incbin directive. Add the possibility to specify which dtc we want to use for compiling dts and generating fit image. Signed-off-by: Emmanuel Vadot <manu@bidouilliste.com> Acked-by: Simon Glass <sjg@chromium.org>
2017-07-22meson-gx: reserved memory regionsxypron.glpk@gmx.de
The Odroid C2 has two GiB of memory with two reserved regions. reg = <0x0 0x0 0x0 0x1000000>; reg = <0x0 0x10000000 0x0 0x200000>; Patch bfcef28ae4cf (arm: add initial support for Amlogic Meson and ODROID-C2) provided function dram_init_banksize to reserve the first 16 MiB of RAM for firmware in function dram_init_banksize in arch/arm/mach-meson/board.c and defined CONFIG_NR_DRAM_BANKS = 1. With this patch dram_init_banksize is changed to additionally reserve the 2MiB region for the ARM Trusted Firmware (BL31). CONFIG_NR_DRAM_BANKS is set to 2. Cc: Andreas Färber <afaerber@suse.de> Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
2017-07-22env: Switch env_nand, env_mmc and env_ubi to env_import_redundFiach Antaw
The env_nand, env_mmc and env_ubi implementations all implement redundancy using an identical serial-number scheme. This commit migrates them to use the implementation in env_common, which is functionally identical. Signed-off-by: Fiach Antaw <fiach.antaw@uqconnect.edu.au> Reviewed-by: Tom Rini <trini@konsulko.com>
2017-07-22env: Add generic redundant environment implementationFiach Antaw
All current environments that implement redundancy use almost identical implementations. This patch implements the env_nand implementation as a function in env_common, and updates the env_export function to export an env_nand-style 'flags' field by default. Signed-off-by: Fiach Antaw <fiach.antaw@uqconnect.edu.au> Reviewed-by: Tom Rini <trini@konsulko.com>
2017-07-22tests: test_dfu.py: Add example udev rule for host_usb_dev_nodeTom Rini
If one does not already have a rule to create a custom device node when a given device enumerates it can be useful to have udev create a bus path based node to the entry in /dev/bus/usb that was just enumerated. Given that DFU itself does not require a /dev entry it is a good idea to provide a rule that will generate one. Signed-off-by: Tom Rini <trini@konsulko.com>
2017-07-22tools/fw_env: use fsync to ensure that data is physically storedMichael Heimpold
Closing a file descriptor does not guarantee that the data has been successfully saved to disk, as the kernel might defer the write. Signed-off-by: Michael Heimpold <mhei@heimpold.de>
2017-07-19mmc: cadence: use fdt32_t for DT property value to fix sparse warningMasahiro Yamada
DTB is encoded in big endian. When we retrieve property values, we need to use fdt32_to_cpu (aka be32_to_cpu) for endian conversion. This is a bit error-prone, but sparse is useful to detect endian mismatch. We need to use (fdt32_t *) instead of (u32 *) for a pointer of a property value. Otherwise sparse warns "cast to restricted __be32". Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com>
2017-07-19mmc: add static to spl_mmc_get_device_index()Masahiro Yamada
This function is only used in common/spl/spl_mmc.c[ Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> Reviewed-by: Bin Meng <bmeng.cn@gmail.com> Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com>
2017-07-19power: regulator: lp87565: get_enable should return integerKeerthy
get_enable should be able to return error values. Hence change the return type to integer. Signed-off-by: Keerthy <j-keerthy@ti.com> Reviewed-by: Simon Glass <sjg@chromium.org>
2017-07-19power: regulator: lp873x: get_enable should return integerKeerthy
get_enable should be able to return error values. Hence change the return type to integer. Signed-off-by: Keerthy <j-keerthy@ti.com> Reviewed-by: Simon Glass <sjg@chromium.org>
2017-07-19power: regulator: s5m8767: get_enable should return integerKeerthy
get_enable should be able to return error values. Hence change the return type to integer. Signed-off-by: Keerthy <j-keerthy@ti.com> Reviewed-by: Simon Glass <sjg@chromium.org>
2017-07-19power: sandbox: fixed: get_enable should return integerKeerthy
get_enable should be able to return error values. Hence change the return type to integer. Signed-off-by: Keerthy <j-keerthy@ti.com> Reviewed-by: Simon Glass <sjg@chromium.org>
2017-07-19power: regulator: rk8xx: get_enable should return integerKeerthy
get_enable should be able to return error values. Hence change the return type to integer. Signed-off-by: Keerthy <j-keerthy@ti.com> Reviewed-by: Simon Glass <sjg@chromium.org>
2017-07-19power: regulator: tps65090: get_enable should return integerKeerthy
get_enable should be able to return error values. Hence change the return type to integer. Signed-off-by: Keerthy <j-keerthy@ti.com> Reviewed-by: Simon Glass <sjg@chromium.org>
2017-07-19power: regulator: pfuze100: get_enable should return integerKeerthy
get_enable should be able to return error values. Hence change the return type to integer. Signed-off-by: Keerthy <j-keerthy@ti.com> Reviewed-by: Simon Glass <sjg@chromium.org>