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