diff options
author | Antony Pavlov <antonynpavlov@gmail.com> | 2016-02-25 12:14:51 +0300 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2016-02-26 07:50:57 +0100 |
commit | 41e4334fcc968f0cbf2e334276f5539d1b55e49e (patch) | |
tree | 4d8a12006541f9f574d9418f50dc6c50d1a13be2 /arch/mips | |
parent | 8dc07d47928783b6517bbb62f16baf3d42006c9e (diff) | |
download | barebox-41e4334fcc968f0cbf2e334276f5539d1b55e49e.tar.gz barebox-41e4334fcc968f0cbf2e334276f5539d1b55e49e.tar.xz |
MIPS: ath79: pbl: import hornet_1_1_war routine from U-Boot_mod
U-Boot_mod is a popular bootloader for Atheros AR93xx chips,
please see https://github.com/pepe2k/u-boot_mod for details.
It's reasonable to import some lowlevel AR9331 initialization
code from U-Boot_mod.
AR9331 (Hornet) 1.1 currently needs an additional
reset at 1st boot. This patch imports necessary code
from u-boot_mod/u-boot/cpu/mips/start_bootstrap.S.
Signed-off-by: Antony Pavlov <antonynpavlov@gmail.com>
Reviewed-by: Yegor Yefremov <yegorslists@googlemail.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch/mips')
-rw-r--r-- | arch/mips/mach-ath79/include/mach/pbl_macros.h | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/arch/mips/mach-ath79/include/mach/pbl_macros.h b/arch/mips/mach-ath79/include/mach/pbl_macros.h index 810f49d860..24cfd605f8 100644 --- a/arch/mips/mach-ath79/include/mach/pbl_macros.h +++ b/arch/mips/mach-ath79/include/mach/pbl_macros.h @@ -223,4 +223,47 @@ .set pop .endm +.macro hornet_1_1_war + .set push + .set noreorder + +/* + * WAR: Hornet 1.1 currently need a reset once we boot to let the resetb has + * enough time to stable, so that trigger reset at 1st boot, system team + * is investigaing the issue, will remove in short + */ + + li t7, 0xbd000000 + lw t8, 0(t7) + li t9, 0x12345678 + + /* if value of 0xbd000000 != 0x12345678, go to do_reset */ + bne t8, t9, do_reset + nop + + li t9, 0xffffffff + sw t9, 0(t7) + b normal_path + nop + +do_reset: + /* put 0x12345678 into 0xbd000000 */ + sw t9, 0(t7) + + /* reset register 0x1806001c */ + li t7, 0xb806001c + lw t8, 0(t7) + /* bit24, fullchip reset */ + li t9, 0x1000000 + or t8, t8, t9 + sw t8, 0(t7) + +do_reset_loop: + b do_reset_loop + nop + +normal_path: + .set pop +.endm + #endif /* __ASM_MACH_ATH79_PBL_MACROS_H */ |