root/arch/mips/pic32/common/reset.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. pic32_halt
  2. pic32_machine_restart
  3. pic32_machine_halt
  4. mips_reboot_setup

   1 // SPDX-License-Identifier: GPL-2.0-only
   2 /*
   3  * Joshua Henderson <joshua.henderson@microchip.com>
   4  * Copyright (C) 2015 Microchip Technology Inc.  All rights reserved.
   5  */
   6 #include <linux/init.h>
   7 #include <linux/pm.h>
   8 #include <asm/reboot.h>
   9 #include <asm/mach-pic32/pic32.h>
  10 
  11 #define PIC32_RSWRST            0x10
  12 
  13 static void pic32_halt(void)
  14 {
  15         while (1) {
  16                 __asm__(".set push;\n"
  17                         ".set arch=r4000;\n"
  18                         "wait;\n"
  19                         ".set pop;\n"
  20                 );
  21         }
  22 }
  23 
  24 static void pic32_machine_restart(char *command)
  25 {
  26         void __iomem *reg =
  27                 ioremap(PIC32_BASE_RESET + PIC32_RSWRST, sizeof(u32));
  28 
  29         pic32_syskey_unlock();
  30 
  31         /* magic write/read */
  32         __raw_writel(1, reg);
  33         (void)__raw_readl(reg);
  34 
  35         pic32_halt();
  36 }
  37 
  38 static void pic32_machine_halt(void)
  39 {
  40         local_irq_disable();
  41 
  42         pic32_halt();
  43 }
  44 
  45 static int __init mips_reboot_setup(void)
  46 {
  47         _machine_restart = pic32_machine_restart;
  48         _machine_halt = pic32_machine_halt;
  49         pm_power_off = pic32_machine_halt;
  50 
  51         return 0;
  52 }
  53 
  54 arch_initcall(mips_reboot_setup);

/* [<][>][^][v][top][bottom][index][help] */