blob: f74ddcbb2b8e272352895f5deb98aa0ef90ece3c [file] [log] [blame]
Stephen Warren3c7643c2012-06-04 09:23:55 +00001/*
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 * See file CREDITS for list of people who contributed to this
26 * project.
27 *
28 * This program is free software; you can redistribute it and/or
29 * modify it under the terms of the GNU General Public License as
30 * published by the Free Software Foundation; either version 2 of
31 * the License, or (at your option) any later version.
32 *
33 * This program is distributed in the hope that it will be useful,
34 * but WITHOUT ANY WARRANTY; without even the implied warranty of
35 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
36 * GNU General Public License for more details.
37 *
38 * You should have received a copy of the GNU General Public License
39 * along with this program. If not, see <http://www.gnu.org/licenses/>.
40 */
41
42#include <common.h>
Tom Warrenab371962012-09-19 15:50:56 -070043#include <asm/arch/tegra.h>
44#include <asm/arch-tegra/pmc.h>
Stephen Warren3c7643c2012-06-04 09:23:55 +000045
46static int do_enterrcm(cmd_tbl_t *cmdtp, int flag, int argc,
47 char * const argv[])
48{
Tom Warren22562a42012-09-04 17:00:24 -070049 struct pmc_ctlr *pmc = (struct pmc_ctlr *)NV_PA_PMC_BASE;
Stephen Warren3c7643c2012-06-04 09:23:55 +000050
51 puts("Entering RCM...\n");
52 udelay(50000);
53
54 pmc->pmc_scratch0 = 2;
55 disable_interrupts();
56 reset_cpu(0);
57
58 return 0;
59}
60
61U_BOOT_CMD(
62 enterrcm, 1, 0, do_enterrcm,
63 "reset Tegra and enter USB Recovery Mode",
64 ""
65);