Commit 9ced975711d605d7deb27ef027e0f9816a51b479
Committed by
Ralf Baechle
1 parent
bf3a1eb859
Exists in
master
and in
7 other branches
MIPS: Alchemy: Fix reset for MTX-1 and XXS1500
Since commit 32fd6901 (MIPS: Alchemy: get rid of common/reset.c) Alchemy-based boards use their own reset function. For MTX-1 and XXS1500, the reset function pokes at the BCSR.SYSTEM_RESET register, but this does not work. According to Bruno Randolf, this was not tested when written. Previously, the generic au1000_restart() routine called the board specific reset function, which for MTX-1 and XXS1500 did not work, but finally made a jump to the reset vector, which really triggers a system restart. Fix reboot for both targets by jumping to the reset vector. Signed-off-by: Florian Fainelli <florian@openwrt.org> To: linux-mips@linux-mips.org Patchwork: https://patchwork.linux-mips.org/patch/2093/ Acked-by: Bruno Randolf <br1@einfach.org> Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Showing 2 changed files with 4 additions and 4 deletions Side-by-side Diff
arch/mips/alchemy/mtx-1/board_setup.c
... | ... | @@ -54,8 +54,8 @@ |
54 | 54 | |
55 | 55 | static void mtx1_reset(char *c) |
56 | 56 | { |
57 | - /* Hit BCSR.SYSTEM_CONTROL[SW_RST] */ | |
58 | - au_writel(0x00000000, 0xAE00001C); | |
57 | + /* Jump to the reset vector */ | |
58 | + __asm__ __volatile__("jr\t%0"::"r"(0xbfc00000)); | |
59 | 59 | } |
60 | 60 | |
61 | 61 | static void mtx1_power_off(void) |
arch/mips/alchemy/xxs1500/board_setup.c
... | ... | @@ -36,8 +36,8 @@ |
36 | 36 | |
37 | 37 | static void xxs1500_reset(char *c) |
38 | 38 | { |
39 | - /* Hit BCSR.SYSTEM_CONTROL[SW_RST] */ | |
40 | - au_writel(0x00000000, 0xAE00001C); | |
39 | + /* Jump to the reset vector */ | |
40 | + __asm__ __volatile__("jr\t%0"::"r"(0xbfc00000)); | |
41 | 41 | } |
42 | 42 | |
43 | 43 | static void xxs1500_power_off(void) |