1// SPDX-License-Identifier: GPL-2.0-only 2/* 3 * 4 * Copyright (C) 2008-2009 Gabor Juhos <juhosg@openwrt.org> 5 * Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org> 6 * Copyright (C) 2013 John Crispin <john@phrozen.org> 7 */ 8 9#include <linux/pm.h> 10#include <linux/io.h> 11#include <linux/of.h> 12#include <linux/delay.h> 13 14#include <asm/reboot.h> 15 16#include <asm/mach-ralink/ralink_regs.h> 17 18/* Reset Control */ 19#define SYSC_REG_RESET_CTRL 0x034 20 21#define RSTCTL_RESET_PCI BIT(26) 22#define RSTCTL_RESET_SYSTEM BIT(0) 23 24static void ralink_restart(char *command) 25{ 26 if (IS_ENABLED(CONFIG_PCI)) { 27 rt_sysc_m32(0, RSTCTL_RESET_PCI, SYSC_REG_RESET_CTRL); 28 mdelay(50); 29 } 30 31 local_irq_disable(); 32 rt_sysc_w32(RSTCTL_RESET_SYSTEM, SYSC_REG_RESET_CTRL); 33 unreachable(); 34} 35 36static int __init mips_reboot_setup(void) 37{ 38 _machine_restart = ralink_restart; 39 40 return 0; 41} 42 43arch_initcall(mips_reboot_setup); 44