Gabe Black [Sat, 12 Nov 2011 16:34:48 +0000 (16:34 +0000)]
x86: Don't relocate symbols which point to things that aren't relocated
This change adds an upper bound for symbols which are fixed up after u-boot
is relocated into RAM. This way portions that are left at their original
location can be referred to without having to manually fix up any pointers.
Signed-off-by: Gabe Black <gabeblack@chromium.org>
Gabe Black [Sat, 12 Nov 2011 16:31:18 +0000 (16:31 +0000)]
x86: Fix how the location of the realmode and bios blobs are calculated
There are two blobs embedded into the u-boot image which are linked to run
at an address which is different from where they actually end up in the
ROM, one called "realmode" and one called "bios". There are realmode_setup
and bios_setup functions which prepare those blobs by copying them into the
location they're supposed to run from, among other things.
During u-boot relocation from ROM to RAM, the text and a few data segments
are copied over. The realmode and bios sections are not copied, and so the
only place they can be read from is their original location in the ROM.
Looking specifically at the bios blob, there are symbols defined in the
linker script called __bios_start and __bios_size which are defined to be
the start and size of the blob in the ROM.
In the bios_setup function, there seem to be two mistakes happening. First,
the offset from ROM to RAM is being added to __bios_start which implies that
this code expects to use the copy moved to RAM. No such copy is made, so
that's wrong. More subtly, when u-boot relocates itself, it goes through
all of the relocations stored in .rel.dyn and fixes them up. This has the
effect of transforming the __bios_start reference in bios_setup so that it
refers to the version in RAM (if one existed) instead of the one in ROM. To
correct for that, the offset actually needs to be subtracted out again to
translate the address back into the ROM.
The net effect is that for both blobs, a + needs to be changed to a -.
Signed-off-by: Gabe Black <gabeblack@chromium.org>
Graeme Russ [Tue, 8 Nov 2011 02:33:19 +0000 (02:33 +0000)]
x86: Add multiboot header
By adding a multiboot header, U-Boot can be loaded by GRUB2. Using GRUB2 to
bootstrap U-Boot is useful for using an existing BIOS to get an initial
U-Boot port up and running before implementing the low-level reset vector
code, SDRAM init, etc. and overwriting the BIOS
Wolfgang Denk [Mon, 28 Nov 2011 19:19:41 +0000 (20:19 +0100)]
menu.c: use puts() instead of printf() where possible
common/menu.c used printf() in a number of places to print user
provided, constant strings (like the "title" string). printf() is
dangerous here for example in case the user unwittingly embeds some
'%' caracters that printf() would interpret as formatting and then
pick up random arguments. Use puts() instead.
We also omit the trailing ':' in the title line - if a user wants
this, he can provide it as part of the title string.
Igor Grinberg [Sat, 26 Nov 2011 23:06:46 +0000 (23:06 +0000)]
dataflash: fix parameters order in write_dataflash()
Fix parameters order in write_dataflash() function extern declaration in
the header file.
Parameters order, as in function definition, should be:
addr_dest, addr_src, size.
Signed-off-by: Igor Grinberg <grinberg@compulab.co.il>
This patch replaces the HAWKBOARD_KICK{0,1}_UNLOCK defines by
DV_SYSCFG_KICK{0,1}_UNLOCK.
The kick register values are not hawkboard specific but may be used
for all davinci boards. In commit f3c149d6c6e5ba8dd72baa86fe527837e4fb0e9a
new defines for these values wer introduced.
Signed-off-by: Christian Riesch <christian.riesch@omicron.at> Cc: Syed Mohammed Khasim <sm.khasim@gmail.com> Cc: Sughosh Ganu <urwithsughosh@gmail.com> Cc: Sandeep Paulraj <s-paulraj@ti.com>
Wolfgang Denk [Sun, 27 Nov 2011 15:03:21 +0000 (16:03 +0100)]
Merge branch 'master' of git://git.denx.de/u-boot-mmc
* 'master' of git://git.denx.de/u-boot-mmc:
Revert "mmc: retry the cmd8 to meet 74 clocks requirement in the spec"
mmc: mv_sdhci: Fix host version read for Armada100
Stephan Linz [Thu, 24 Nov 2011 12:32:52 +0000 (12:32 +0000)]
microblaze: usable uart16550 for big endian systems
As a result of the commit 6833260 the uart16550 driver
is broken for Microblaze big endian systems, because of
the missing 3 byte offset. Other than as described, not
all U-Boot BSP will treat properly the 3 byte offset.
This why prefer to mask out the 3 byte offset in general
and setup correct _REG_SIZE value depending on edianess.
Signed-off-by: Stephan Linz <linz@li-pro.net> Tested-by: Michal Simek <monstr@monstr.eu>
This patch add 3 times retry to CMD8 because the Marvell mmc controller
doesn't obey the power ramp up process in the SD specification 6.4.1.
(Please refer to figure 6.1 and 6.2 in the specification.)
The CMD0 should be send after power ramp up has been finished.
However, the Marvell mmc contorller must do power ramp up after the
first CMD0 command has been send.
This patch also affect existing platforms like Nokia N900 and other
platforms.
Signed-off-by: Macpaul Lin <macpaul@andestech.com> Acked-by: Lei Wen <leiwen@marvell.com> Acked-by: Stephen Warren <swarren@nvidia.com> Tested-by: Stephen Warren <swarren@nvidia.com>
Fix:
dnet.c: In function 'dnet_send':
dnet.c:136:9: warning: variable 'len' set but not used
[-Wunused-but-set-variable]
dnet.c: In function 'dnet_set_hwaddr':
dnet.c:209:2: warning: dereferencing type-punned pointer will
break strict-aliasing rules [-Wstrict-aliasing]
dnet.c:209:2: warning: dereferencing type-punned pointer will
break strict-aliasing rules [-Wstrict-aliasing]
dnet.c:209:2: warning: dereferencing type-punned pointer will
break strict-aliasing rules [-Wstrict-aliasing]
dnet.c:209:2: warning: dereferencing type-punned pointer will
break strict-aliasing rules [-Wstrict-aliasing]
Fix:
flash.c: In function 'flash_erase':
flash.c:223:6: warning: variable 'flag' set but not used
[-Wunused-but-set-variable]
flash.c: In function 'write_data':
flash.c:392:6: warning: variable 'flag' set but not used
[-Wunused-but-set-variable]
Fix:
syncflash.c: In function 'SF_SR':
syncflash.c:60:10: warning: variable 'tmp1' set but not used
[-Wunused-but-set-variable]
syncflash.c: In function 'SF_PrechargeAll':
syncflash.c:96:6: warning: variable 'tmp' set but not used
[-Wunused-but-set-variable]
mx1ads.c: In function 'board_early_init_f':
mx1ads.c:83:24: warning: variable 'tmp' set but not used
[-Wunused-but-set-variable]
syncflash.c: In function 'SF_Erase':
syncflash.c:112:6: warning: variable 'tmp' set but not used
[-Wunused-but-set-variable]
syncflash.c: In function 'flash_init':
syncflash.c:155:6: warning: variable 'tmp' set but not used
[-Wunused-but-set-variable]
Fix:
flash.c: In function 'flash_erase':
flash.c:223:6: warning: variable 'flag' set but not used [-Wunused-but-set-variable]
flash.c: In function 'write_data':
flash.c:392:6: warning: variable 'flag' set but not used [-Wunused-but-set-variable]
Fix:
cpuinfo.c: In function 'print_cpuinfo':
cpuinfo.c:155:6: warning: variable 'system_serial_low' set but not used
[-Wunused-but-set-variable]
cpuinfo.c:154:6: warning: variable 'system_serial_high' set but not used
[-Wunused-but-set-variable]
Fix:
lan91c96.c: In function 'dump_memory_info':
lan91c96.c:157:7: warning: variable 'mem_info' set but not used
[-Wunused-but-set-variable]
lan91c96.c: In function 'smc_send_packet':
lan91c96.c:320:16: warning: variable 'ioaddr' set but not used
[-Wunused-but-set-variable]
Fix clash between IH_ARCH_NDS32 and IH_ARCH_SANDBOX
NDS32 and SANDBOX architecture were sharing the same IH_ARCH number
Signed-off-by: Stefan Kristiansson <stefan.kristiansson@saunalahti.fi> Acked-by: Macpaul Lin <macpaul@andestech.com> Acked-by: Marek Vasut <marek.vasut@gmail.com>
Igor Grinberg [Mon, 7 Nov 2011 01:14:06 +0000 (01:14 +0000)]
env: clean env_embedded.c checkpatch and code style
Cleanup the env_embedded.c checkpatch warnings, errors and coding style.
There is one error left though:
ERROR: Macros with multiple statements should be enclosed in a do - while loop
#79: FILE: u-boot/common/env_embedded.c:79:
+#define GEN_ABS(name, value) \
+ asm(".globl " GEN_SYMNAME(name)); \
+ GEN_SET_VALUE(name, value)
total: 1 errors, 0 warnings, 213 lines checked
We cannot enclose that statement in a do - while loop,
because these are a global assembly declarations.
Signed-off-by: Igor Grinberg <grinberg@compulab.co.il>
Igor Grinberg [Mon, 7 Nov 2011 01:14:05 +0000 (01:14 +0000)]
env: clean env_mmc.c checkpatch and code style
Cleanup the env_mmc.c checkpatch warnings, errors and coding style.
Simplify env_relocate_spec() function implementation.
Also mark internal functions as static.
Signed-off-by: Igor Grinberg <grinberg@compulab.co.il>
Igor Grinberg [Mon, 7 Nov 2011 01:14:04 +0000 (01:14 +0000)]
env: clean env_nvram.c checkpatch and code style
Cleanup the env_nvram.c checkpatch warnings, errors and coding style.
There are 2 wanring left about the extern used in c file:
WARNING: externs should be avoided in .c files
#53: FILE: env_nvram.c:53:
+extern void *nvram_read(void *dest, const long src, size_t count);
WARNING: externs should be avoided in .c files
#54: FILE: env_nvram.c:54:
+extern void nvram_write(long dest, const void *src, size_t count);
total: 0 errors, 2 warnings, 138 lines checked
There is no common nvram header file to use instead of the externs.
Signed-off-by: Igor Grinberg <grinberg@compulab.co.il>
Igor Grinberg [Mon, 7 Nov 2011 01:13:59 +0000 (01:13 +0000)]
env: clean cmd_nvedit.c checkpatch and code style
Cleanup the cmd_nvedit.c checkpatch warnings, errors and coding style.
There are 10 wanrings left about the simple_strtoul() function:
WARNING: simple_strtoul is obsolete, use kstrtoul instead
#359: FILE: cmd_nvedit.c:359:
+ load_addr = simple_strtoul(argv[2], NULL, 16);
...
total: 0 errors, 10 warnings, 1043 lines checked
Signed-off-by: Igor Grinberg <grinberg@compulab.co.il>
Simon Glass [Fri, 4 Nov 2011 06:42:35 +0000 (06:42 +0000)]
Define uintptr_t as long int to simplify printf() format strings
If uintptr_t can be either an unsigned int or an unsigned long int, it is
tricky to use it in a printf() format string. This changes it to
unsigned long int consistently. This should do the right thing on both
32-bit and 64-bit architectures.
Signed-off-by: Simon Glass <sjg@chromium.org> Acked-by: Mike Frysinger <vapier@gentoo.org>
David Wagner [Mon, 26 Sep 2011 03:26:34 +0000 (03:26 +0000)]
new tool mkenvimage: generates an env image from an arbitrary config file
This tool takes a key=value configuration file (same as would a `printenv' show)
and generates the corresponding environment image, ready to be flashed.
use case: flash the environment with an external tool
Signed-off-by: David Wagner <david.wagner@free-electrons.com>
Acked-by; Mike Frysinger <vapier@gentoo.org> Tested-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: Simon Glass <sjg@chromium.org> Cc: Mike Frysinger <vapier@gentoo.org> Signed-off-by: Wolfgang Grandegger <wg@denx.de> Acked-by: Mike Frysinger <vapier@gentoo.org> Acked-by: Simon Glass <sjg@chromium.org>
Cc: Marek Vasut <marek.vasut@gmail.com> Cc: Wolfgang Denk <wd@denx.de> Cc: Simon Glass <sjg@chromium.org> Cc: Mike Frysinger <vapier@gentoo.org> Signed-off-by: Wolfgang Grandegger <wg@denx.de> Acked-by: Mike Frysinger <vapier@gentoo.org> Acked-by: Simon Glass <sjg@chromium.org>
Wolfgang Denk [Mon, 21 Nov 2011 21:04:17 +0000 (22:04 +0100)]
Merge branch 'master' of git://git.denx.de/u-boot-blackfin
* 'master' of git://git.denx.de/u-boot-blackfin:
Blackfin: cache result of cpp check
Blackfin: traps: fix up printf warnings from debug
Blackfin: drop now unused local variable
Wolfgang Denk [Mon, 21 Nov 2011 21:02:35 +0000 (22:02 +0100)]
Merge branch 'master' of git://git.denx.de/u-boot-nds32
* 'master' of git://git.denx.de/u-boot-nds32:
nds32/lib: add ide generic support
nds32: enhance io.h for compatibility with periphals
ftide020: fix incorrect information display format
Wolfgang Denk [Mon, 21 Nov 2011 21:00:37 +0000 (22:00 +0100)]
Merge branch 'master' of git://git.denx.de/u-boot-nios
* 'master' of git://git.denx.de/u-boot-nios:
nios2: Offer ft_board_setup() capability and call fdt_fixup_ethernet().
board/nios2-generic: Use altera_pio driver and remove board specific driver
gpio: Add driver for Altera's PIO core
nios2: Pseudo implement dcache_status/enable/disable()
Aneesh V [Sat, 5 Nov 2011 07:43:33 +0000 (13:13 +0530)]
Makefile: Add the missing dependency for spl target
Wolfgang's patch for build time improvement is bringing
out issues due to missing dependencies in the top-level
Makefile. I get errors such as the below while building
with many threads.
make[1]: /home/a0393566local/u-boot-denx/tools/mkimage: Command not found
This also allows one to do:
$ make spl/u-boot-spl.bin
if you want to build only spl
Cc: Wolfgang Denk <wd@denx.de> Signed-off-by: Aneesh V <aneesh@ti.com>
Zang Roy-R61911 [Sun, 6 Nov 2011 22:22:36 +0000 (22:22 +0000)]
e1000: fix unused variable waring for e1000 driver
Fix the following build warning in drivers/net/e1000.c
e1000.c: In function 'e1000_reset_hw':
e1000.c:1373:11: warning: variable 'icr' set but not used [-Wunused-but-set-variable]
e1000.c: In function 'e1000_phy_init_script':
e1000.c:4395:11: warning: variable 'ret_val' set but not used [-Wunused-but-set-variable]
Signed-off-by: Roy Zang <tie-fei.zang@freescale.com> Cc: Wolfgang Denk <wd@denx.de> Cc: Kyle Moffett <Kyle.D.Moffett@boeing.com>
The original commit broke long standing assumption that md commands work
on effective addresses. This normally isn't an issue for most systems
that map 1:1, however on systems with a 36-bit address map it breaks.
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
Kim Phillips [Tue, 15 Nov 2011 23:02:23 +0000 (23:02 +0000)]
common: tsi148 - fix gcc 4.6 compiler warning
Configuring for vme8349 board...
cmd_tsi148.c: In function 'tsi148_init':
cmd_tsi148.c:56:17: warning: variable 'lastError' set but not used [-Wunused-but-set-variable]
Signed-off-by: Kim Phillips <kim.phillips@freescale.com>
Configuring for kmeter1 board...
km83xx_i2c.c: In function 'i2c_make_abort':
km83xx_i2c.c:44:8: warning: variable 'dummy' set but not used [-Wunused-but-set-variable]
Signed-off-by: Kim Phillips <kim.phillips@freescale.com> Acked-by: Heiko Schocher <hs@denx.de>