ti81xx-restart.c (848B)
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 */ 25void 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}