xref: /rk3399_rockchip-uboot/arch/arm/mach-tegra/cmd_enterrcm.c (revision b9cb64825b5e6efeb715abd8b48d9b12f98973e9)
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