linux/arch/arm/mach-omap2/ti81xx-restart.c
<<
>>
Prefs
   1/*
   2 * This program is free software; you can redistribute it and/or modify
   3 * it under the terms of the GNU General Public License version 2 as
   4 * published by the Free Software Foundation.
   5 */
   6#include <linux/kernel.h>
   7#include <linux/init.h>
   8#include <linux/reboot.h>
   9
  10#include "iomap.h"
  11#include "common.h"
  12#include "control.h"
  13#include "prm3xxx.h"
  14
  15#define TI81XX_PRM_DEVICE_RSTCTRL       0x00a0
  16#define TI81XX_GLOBAL_RST_COLD          BIT(1)
  17
  18/**
  19 * ti81xx_restart - trigger a software restart of the SoC
  20 * @mode: the "reboot mode", see arch/arm/kernel/{setup,process}.c
  21 * @cmd: passed from the userspace program rebooting the system (if provided)
  22 *
  23 * Resets the SoC.  For @cmd, see the 'reboot' syscall in
  24 * kernel/sys.c.  No return value.
  25 *
  26 * NOTE: Warm reset does not seem to work, may require resetting
  27 * clocks to bypass mode.
  28 */
  29void ti81xx_restart(enum reboot_mode mode, const char *cmd)
  30{
  31        omap2_prm_set_mod_reg_bits(TI81XX_GLOBAL_RST_COLD, 0,
  32                                   TI81XX_PRM_DEVICE_RSTCTRL);
  33        while (1);
  34}
  35