cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

omap2-restart.c (1545B)


      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 */
     21static 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 */
     31void 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 */
     50static 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}
     62omap_postcore_initcall(omap2xxx_common_look_up_clks_for_reset);