summaryrefslogtreecommitdiffstats
path: root/arch/mips
diff options
context:
space:
mode:
authorAntony Pavlov <antonynpavlov@gmail.com>2016-02-25 12:14:51 +0300
committerSascha Hauer <s.hauer@pengutronix.de>2016-02-26 07:50:57 +0100
commit41e4334fcc968f0cbf2e334276f5539d1b55e49e (patch)
tree4d8a12006541f9f574d9418f50dc6c50d1a13be2 /arch/mips
parent8dc07d47928783b6517bbb62f16baf3d42006c9e (diff)
downloadbarebox-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.h43
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 */