1*09f455dcSMasahiro Yamada /*
2*09f455dcSMasahiro Yamada * Copyright (c) 2012, NVIDIA CORPORATION. All rights reserved.
3*09f455dcSMasahiro Yamada *
4*09f455dcSMasahiro Yamada * Derived from code (arch/arm/lib/reset.c) that is:
5*09f455dcSMasahiro Yamada *
6*09f455dcSMasahiro Yamada * (C) Copyright 2002
7*09f455dcSMasahiro Yamada * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
8*09f455dcSMasahiro Yamada * Marius Groeger <mgroeger@sysgo.de>
9*09f455dcSMasahiro Yamada *
10*09f455dcSMasahiro Yamada * (C) Copyright 2002
11*09f455dcSMasahiro Yamada * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
12*09f455dcSMasahiro Yamada * Alex Zuepke <azu@sysgo.de>
13*09f455dcSMasahiro Yamada *
14*09f455dcSMasahiro Yamada * (C) Copyright 2002
15*09f455dcSMasahiro Yamada * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de>
16*09f455dcSMasahiro Yamada *
17*09f455dcSMasahiro Yamada * (C) Copyright 2004
18*09f455dcSMasahiro Yamada * DAVE Srl
19*09f455dcSMasahiro Yamada * http://www.dave-tech.it
20*09f455dcSMasahiro Yamada * http://www.wawnet.biz
21*09f455dcSMasahiro Yamada * mailto:info@wawnet.biz
22*09f455dcSMasahiro Yamada *
23*09f455dcSMasahiro Yamada * (C) Copyright 2004 Texas Insturments
24*09f455dcSMasahiro Yamada *
25*09f455dcSMasahiro Yamada * SPDX-License-Identifier: GPL-2.0+
26*09f455dcSMasahiro Yamada */
27*09f455dcSMasahiro Yamada
28*09f455dcSMasahiro Yamada #include <common.h>
29*09f455dcSMasahiro Yamada #include <asm/arch/tegra.h>
30*09f455dcSMasahiro Yamada #include <asm/arch-tegra/pmc.h>
31*09f455dcSMasahiro Yamada
do_enterrcm(cmd_tbl_t * cmdtp,int flag,int argc,char * const argv[])32*09f455dcSMasahiro Yamada static int do_enterrcm(cmd_tbl_t *cmdtp, int flag, int argc,
33*09f455dcSMasahiro Yamada char * const argv[])
34*09f455dcSMasahiro Yamada {
35*09f455dcSMasahiro Yamada struct pmc_ctlr *pmc = (struct pmc_ctlr *)NV_PA_PMC_BASE;
36*09f455dcSMasahiro Yamada
37*09f455dcSMasahiro Yamada puts("Entering RCM...\n");
38*09f455dcSMasahiro Yamada udelay(50000);
39*09f455dcSMasahiro Yamada
40*09f455dcSMasahiro Yamada pmc->pmc_scratch0 = 2;
41*09f455dcSMasahiro Yamada disable_interrupts();
42*09f455dcSMasahiro Yamada reset_cpu(0);
43*09f455dcSMasahiro Yamada
44*09f455dcSMasahiro Yamada return 0;
45*09f455dcSMasahiro Yamada }
46*09f455dcSMasahiro Yamada
47*09f455dcSMasahiro Yamada U_BOOT_CMD(
48*09f455dcSMasahiro Yamada enterrcm, 1, 0, do_enterrcm,
49*09f455dcSMasahiro Yamada "reset Tegra and enter USB Recovery Mode",
50*09f455dcSMasahiro Yamada ""
51*09f455dcSMasahiro Yamada );
52