reset.c 979 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. /*
  2. * This program is free software; you can redistribute it and/or modify it
  3. * under the terms of the GNU General Public License version 2 as published
  4. * by the Free Software Foundation.
  5. *
  6. * Copyright (C) 2008-2009 Gabor Juhos <juhosg@openwrt.org>
  7. * Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org>
  8. * Copyright (C) 2013 John Crispin <blogic@openwrt.org>
  9. */
  10. #include <linux/pm.h>
  11. #include <linux/io.h>
  12. #include <asm/reboot.h>
  13. #include <asm/mach-ralink/ralink_regs.h>
  14. /* Reset Control */
  15. #define SYSC_REG_RESET_CTRL 0x034
  16. #define RSTCTL_RESET_SYSTEM BIT(0)
  17. static void ralink_restart(char *command)
  18. {
  19. local_irq_disable();
  20. rt_sysc_w32(RSTCTL_RESET_SYSTEM, SYSC_REG_RESET_CTRL);
  21. unreachable();
  22. }
  23. static void ralink_halt(void)
  24. {
  25. local_irq_disable();
  26. unreachable();
  27. }
  28. static int __init mips_reboot_setup(void)
  29. {
  30. _machine_restart = ralink_restart;
  31. _machine_halt = ralink_halt;
  32. pm_power_off = ralink_halt;
  33. return 0;
  34. }
  35. arch_initcall(mips_reboot_setup);