root/arch/arm/mach-omap2/omap2-restart.c

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

DEFINITIONS

This source file includes following definitions.
  1. omap2xxx_restart
  2. omap2xxx_common_look_up_clks_for_reset

   1 // SPDX-License-Identifier: GPL-2.0-only
   2 /*
   3  * omap2-restart.c - code common to all OMAP2xxx machines.
   4  *
   5  * Copyright (C) 2012 Texas Instruments
   6  * Paul Walmsley
   7  */
   8 #include <linux/kernel.h>
   9 #include <linux/init.h>
  10 #include <linux/clk.h>
  11 #include <linux/io.h>
  12 
  13 #include "soc.h"
  14 #include "common.h"
  15 #include "prm.h"
  16 
  17 /*
  18  * reset_virt_prcm_set_ck, reset_sys_ck: pointers to the virt_prcm_set
  19  * clock and the sys_ck.  Used during the reset process
  20  */
  21 static struct clk *reset_virt_prcm_set_ck, *reset_sys_ck;
  22 
  23 /* Reboot handling */
  24 
  25 /**
  26  * omap2xxx_restart - Set DPLL to bypass mode for reboot to work
  27  *
  28  * Set the DPLL to bypass so that reboot completes successfully.  No
  29  * return value.
  30  */
  31 void omap2xxx_restart(enum reboot_mode mode, const char *cmd)
  32 {
  33         u32 rate;
  34 
  35         rate = clk_get_rate(reset_sys_ck);
  36         clk_set_rate(reset_virt_prcm_set_ck, rate);
  37 
  38         /* XXX Should save the cmd argument for use after the reboot */
  39 
  40         omap_prm_reset_system();
  41 }
  42 
  43 /**
  44  * omap2xxx_common_look_up_clks_for_reset - look up clocks needed for restart
  45  *
  46  * Some clocks need to be looked up in advance for the SoC restart
  47  * operation to work - see omap2xxx_restart().  Returns -EINVAL upon
  48  * error or 0 upon success.
  49  */
  50 static int __init omap2xxx_common_look_up_clks_for_reset(void)
  51 {
  52         reset_virt_prcm_set_ck = clk_get(NULL, "virt_prcm_set");
  53         if (IS_ERR(reset_virt_prcm_set_ck))
  54                 return -EINVAL;
  55 
  56         reset_sys_ck = clk_get(NULL, "sys_ck");
  57         if (IS_ERR(reset_sys_ck))
  58                 return -EINVAL;
  59 
  60         return 0;
  61 }
  62 omap_postcore_initcall(omap2xxx_common_look_up_clks_for_reset);

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