1 // SPDX-License-Identifier: GPL-2.0-only 2 #include <linux/kernel.h> 3 #include <linux/init.h> 4 #include <linux/reboot.h> 5 6 #include "iomap.h" 7 #include "common.h" 8 #include "control.h" 9 #include "prm3xxx.h" 10 11 #define TI81XX_PRM_DEVICE_RSTCTRL 0x00a0 12 #define TI81XX_GLOBAL_RST_COLD BIT(1) 13 14 /** 15 * ti81xx_restart - trigger a software restart of the SoC 16 * @mode: the "reboot mode", see arch/arm/kernel/{setup,process}.c 17 * @cmd: passed from the userspace program rebooting the system (if provided) 18 * 19 * Resets the SoC. For @cmd, see the 'reboot' syscall in 20 * kernel/sys.c. No return value. 21 * 22 * NOTE: Warm reset does not seem to work, may require resetting 23 * clocks to bypass mode. 24 */ 25 void ti81xx_restart(enum reboot_mode mode, const char *cmd) 26 { 27 omap2_prm_set_mod_reg_bits(TI81XX_GLOBAL_RST_COLD, 0, 28 TI81XX_PRM_DEVICE_RSTCTRL); 29 while (1); 30 } 31