am33xx-restart.c 1015 B

12345678910111213141516171819202122232425262728293031323334
  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 "common.h"
  10. #include "prm-regbits-33xx.h"
  11. #include "prm33xx.h"
  12. /**
  13. * am3xx_restart - trigger a software restart of the SoC
  14. * @mode: the "reboot mode", see arch/arm/kernel/{setup,process}.c
  15. * @cmd: passed from the userspace program rebooting the system (if provided)
  16. *
  17. * Resets the SoC. For @cmd, see the 'reboot' syscall in
  18. * kernel/sys.c. No return value.
  19. */
  20. void am33xx_restart(char mode, const char *cmd)
  21. {
  22. /* TODO: Handle mode and cmd if necessary */
  23. am33xx_prm_rmw_reg_bits(AM33XX_GLOBAL_WARM_SW_RST_MASK,
  24. AM33XX_GLOBAL_WARM_SW_RST_MASK,
  25. AM33XX_PRM_DEVICE_MOD,
  26. AM33XX_PRM_RSTCTRL_OFFSET);
  27. /* OCP barrier */
  28. (void)am33xx_prm_read_reg(AM33XX_PRM_DEVICE_MOD,
  29. AM33XX_PRM_RSTCTRL_OFFSET);
  30. }