1 /* 2 * am33xx-restart.c - Code common to all AM33xx machines. 3 * 4 * This program is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU General Public License version 2 as 6 * published by the Free Software Foundation. 7 */ 8 #include <linux/kernel.h> 9 #include <linux/reboot.h> 10 11 #include "common.h" 12 #include "prm-regbits-33xx.h" 13 #include "prm33xx.h" 14 15 /** 16 * am3xx_restart - trigger a software restart of the SoC 17 * @mode: the "reboot mode", see arch/arm/kernel/{setup,process}.c 18 * @cmd: passed from the userspace program rebooting the system (if provided) 19 * 20 * Resets the SoC. For @cmd, see the 'reboot' syscall in 21 * kernel/sys.c. No return value. 22 */ 23 void am33xx_restart(enum reboot_mode mode, const char *cmd) 24 { 25 /* TODO: Handle mode and cmd if necessary */ 26 27 am33xx_prm_rmw_reg_bits(AM33XX_RST_GLOBAL_WARM_SW_MASK, 28 AM33XX_RST_GLOBAL_WARM_SW_MASK, 29 AM33XX_PRM_DEVICE_MOD, 30 AM33XX_PRM_RSTCTRL_OFFSET); 31 32 /* OCP barrier */ 33 (void)am33xx_prm_read_reg(AM33XX_PRM_DEVICE_MOD, 34 AM33XX_PRM_RSTCTRL_OFFSET); 35 } 36