9
0
Fork 0

friendlyarm-tiny210: use LEDs for boot errors

Signed-off-by: Alexey Galakhov <agalakhov@gmail.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This commit is contained in:
Alexey Galakhov 2013-07-09 21:23:16 +06:00 committed by Sascha Hauer
parent a1c79b1bd1
commit 6624fd5356
1 changed files with 27 additions and 1 deletions

View File

@ -33,6 +33,22 @@
#define IRAM_CODE_BASE 0xD0020010
/* Tiny210 has 4 leds numbered from 0 to 3 at GPJ2 */
static inline void __bare_init debug_led(int led, bool state)
{
uint32_t r;
/* GPJ2CON: mode 0001=output */
r = readl(0xE0200280);
r &= ~(0xF << (4 * led));
r |= (0x1 << (4 * led));
writel(r, 0xE0200280);
/* GPJ2DAT: active low */
r = readl(0xE0200284);
r &= ~(1 << led);
r |= (state ? 0 : 1) << led;
writel(r, 0xE0200284);
}
/*
* iROM boot from MMC
* TODO: replace this by native boot
@ -76,18 +92,28 @@ void __bare_init barebox_arm_reset_vector(void)
s5p_init_pll();
#endif
debug_led(0, 1);
if (get_pc() < IRAM_CODE_BASE) /* Are we running from iRAM? */
/* No, we don't. */
goto boot;
s5p_init_dram_bank_ddr2(S5P_DMC0_BASE, 0x20E00323, 0, 0);
debug_led(1, 1);
if (! load_stage2((void*)(ld_var(_text) - 16),
ld_var(_barebox_image_size) + 16))
ld_var(_barebox_image_size) + 16)) {
debug_led(3, 1);
while (1) { } /* hang */
}
debug_led(2, 1);
jump_sdram(IRAM_CODE_BASE - ld_var(_text));
debug_led(1, 0);
boot:
barebox_arm_entry(S3C_SDRAM_BASE, SZ_256M, 0);
}