xref: /rk3399_rockchip-uboot/lib/hang.c (revision d2eae43ba803cff75b44a07d08d718ecdecdee94)
1*d2eae43bSAndreas Bießmann /*
2*d2eae43bSAndreas Bießmann  * (C) Copyright 2013
3*d2eae43bSAndreas Bießmann  * Andreas Bießmann <andreas.devel@googlemail.com>
4*d2eae43bSAndreas Bießmann  *
5*d2eae43bSAndreas Bießmann  * This file consolidates all the different hang() functions implemented in
6*d2eae43bSAndreas Bießmann  * u-boot.
7*d2eae43bSAndreas Bießmann  *
8*d2eae43bSAndreas Bießmann  * See file CREDITS for list of people who contributed to this
9*d2eae43bSAndreas Bießmann  * project.
10*d2eae43bSAndreas Bießmann  *
11*d2eae43bSAndreas Bießmann  * This program is free software; you can redistribute it and/or
12*d2eae43bSAndreas Bießmann  * modify it under the terms of the GNU General Public License as
13*d2eae43bSAndreas Bießmann  * published by the Free Software Foundation; either version 2 of
14*d2eae43bSAndreas Bießmann  * the License, or (at your option) any later version.
15*d2eae43bSAndreas Bießmann  *
16*d2eae43bSAndreas Bießmann  * This program is distributed in the hope that it will be useful,
17*d2eae43bSAndreas Bießmann  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18*d2eae43bSAndreas Bießmann  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19*d2eae43bSAndreas Bießmann  * GNU General Public License for more details.
20*d2eae43bSAndreas Bießmann  *
21*d2eae43bSAndreas Bießmann  * You should have received a copy of the GNU General Public License
22*d2eae43bSAndreas Bießmann  * along with this program; if not, write to the Free Software
23*d2eae43bSAndreas Bießmann  * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
24*d2eae43bSAndreas Bießmann  * MA 02111-1307 USA
25*d2eae43bSAndreas Bießmann  */
26*d2eae43bSAndreas Bießmann 
27*d2eae43bSAndreas Bießmann #include <common.h>
28*d2eae43bSAndreas Bießmann #include <bootstage.h>
29*d2eae43bSAndreas Bießmann 
30*d2eae43bSAndreas Bießmann /**
31*d2eae43bSAndreas Bießmann  * hang - stop processing by staying in an endless loop
32*d2eae43bSAndreas Bießmann  *
33*d2eae43bSAndreas Bießmann  * The purpose of this function is to stop further execution of code cause
34*d2eae43bSAndreas Bießmann  * something went completely wrong.  To catch this and give some feedback to
35*d2eae43bSAndreas Bießmann  * the user one needs to catch the bootstage_error (see show_boot_progress())
36*d2eae43bSAndreas Bießmann  * in the board code.
37*d2eae43bSAndreas Bießmann  */
38*d2eae43bSAndreas Bießmann void hang(void)
39*d2eae43bSAndreas Bießmann {
40*d2eae43bSAndreas Bießmann #if !defined(CONFIG_SPL_BUILD) || (defined(CONFIG_SPL_LIBCOMMON_SUPPORT) && \
41*d2eae43bSAndreas Bießmann 		defined(CONFIG_SPL_SERIAL_SUPPORT))
42*d2eae43bSAndreas Bießmann 	puts("### ERROR ### Please RESET the board ###\n");
43*d2eae43bSAndreas Bießmann #endif
44*d2eae43bSAndreas Bießmann 	bootstage_error(BOOTSTAGE_ID_NEED_RESET);
45*d2eae43bSAndreas Bießmann 	for (;;)
46*d2eae43bSAndreas Bießmann 		;
47*d2eae43bSAndreas Bießmann }
48