blob: a94ec93e7be12781c3a1391e1ca11b1a9c4f92cf [file] [log] [blame]
Stephen Warren9cd3f3a2012-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 *
Wolfgang Denk1a459662013-07-08 09:37:19 +020025 * SPDX-License-Identifier: GPL-2.0+
Stephen Warren9cd3f3a2012-06-04 09:23:55 +000026 */
27
28#include <common.h>
Tom Warren150c2492012-09-19 15:50:56 -070029#include <asm/arch/tegra.h>
30#include <asm/arch-tegra/pmc.h>
Stephen Warren9cd3f3a2012-06-04 09:23:55 +000031
32static int do_enterrcm(cmd_tbl_t *cmdtp, int flag, int argc,
33 char * const argv[])
34{
Tom Warren29f3e3f2012-09-04 17:00:24 -070035 struct pmc_ctlr *pmc = (struct pmc_ctlr *)NV_PA_PMC_BASE;
Stephen Warren9cd3f3a2012-06-04 09:23:55 +000036
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
47U_BOOT_CMD(
48 enterrcm, 1, 0, do_enterrcm,
49 "reset Tegra and enter USB Recovery Mode",
50 ""
51);