arm/km: remove calls to kw_gpio_* in board_early_init_f
authorHolger Brunck <holger.brunck@keymile.com>
Thu, 5 Jul 2012 05:05:11 +0000 (05:05 +0000)
committerAlbert ARIBAUD <albert.u.boot@aribaud.net>
Sat, 7 Jul 2012 12:07:38 +0000 (14:07 +0200)
commitc471d84808843dce6174eaab624779aa15ff71bf
tree4e0801c3d80063feda169caeb0bb493916457ed3
parentb8cf7cc8860d30b85b08377183688bf9564896bf
arm/km: remove calls to kw_gpio_* in board_early_init_f

These functions tried to access two static tables before relocation
(board_early_init_f is executed before relocation). But these static
tables lie in the bss section which is not valid before relocation.
These accesses then overwrote some parts of u-boot binary before it was
relocated. For the kmnusa build, this results in a corrupted important
env variable (bootcmd) but it may be that some other parts of the u-boot
binary are corrupted.

This patch solves this problem by moving all the kw_gpio_* calls to
board_init, which should be early enough in the boot sequence. The only
calls that could not be moved is the one for the SOFT (bitbang) I2C, and
they have been replaced by a direct access to the GPIO dataout Control
register to set the two GPIOs as output.

Signed-off-by: Valentin Longchamp <valentin.longchamp@keymile.com>
cc: Holger Brunck <holger.brunck@keymile.com>
cc: Prafulla Wadaskar <prafulla@marvell.com>
board/keymile/km_arm/km_arm.c
include/configs/km/km_arm.h