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 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